emacs-diffs
[Top][All Lists]
Advanced

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

feature/pkg 2848b97d0e 1/2: Merge remote-tracking branch 'origin/master'


From: Gerd Moellmann
Subject: feature/pkg 2848b97d0e 1/2: Merge remote-tracking branch 'origin/master' into feature/pkg
Date: Mon, 28 Nov 2022 03:32:23 -0500 (EST)

branch: feature/pkg
commit 2848b97d0ea51e39c5fc3b7083f6d0e6f0756e67
Merge: e148d8c49e a85ff22300
Author: Gerd Möllmann <gerd@gnu.org>
Commit: Gerd Möllmann <gerd@gnu.org>

    Merge remote-tracking branch 'origin/master' into feature/pkg
---
 .gitignore                                         |    1 +
 build-aux/config.guess                             |    8 +-
 build-aux/config.sub                               |   27 +-
 configure.ac                                       |    2 +-
 doc/emacs/msdos.texi                               |   22 +-
 doc/emacs/programs.texi                            |   17 +-
 doc/lispintro/emacs-lisp-intro.texi                |    2 +-
 doc/lispref/commands.texi                          |   12 +-
 doc/lispref/compile.texi                           |    2 +-
 doc/lispref/files.texi                             |    4 +-
 doc/lispref/internals.texi                         |    3 +
 doc/lispref/parsing.texi                           |   18 +-
 doc/lispref/strings.texi                           |   32 +-
 doc/lispref/text.texi                              |    4 +
 doc/misc/auth.texi                                 |   11 +-
 doc/misc/erc.texi                                  |  190 +-
 doc/misc/gnus.texi                                 |    7 +-
 doc/misc/texinfo.tex                               |  428 +-
 etc/ERC-NEWS                                       |   16 +-
 etc/NEWS                                           |  112 +-
 etc/NEWS.24                                        |    4 +-
 lib-src/ChangeLog.1                                |    2 +-
 lib-src/emacsclient.c                              |    6 +-
 lib-src/etags.c                                    |  152 +-
 lib-src/ntlib.c                                    |    9 -
 lib-src/ntlib.h                                    |    1 -
 lib/canonicalize-lgpl.c                            |  122 +-
 lib/gnulib.mk.in                                   |  136 +-
 lib/malloc/scratch_buffer.h                        |   16 -
 lib/scratch_buffer.h                               |   10 -
 lib/stat-time.h                                    |    5 +-
 lisp/auth-source-pass.el                           |    9 +-
 lisp/buff-menu.el                                  |   18 +-
 lisp/calc/calc-units.el                            |    9 +-
 lisp/calendar/icalendar.el                         |    8 +-
 lisp/descr-text.el                                 |    5 +-
 lisp/emacs-lisp/byte-run.el                        |    2 +-
 lisp/emacs-lisp/easymenu.el                        |   11 +-
 lisp/emacs-lisp/ert.el                             |    9 +-
 lisp/emacs-lisp/loaddefs-gen.el                    |   35 +-
 lisp/emacs-lisp/package-vc.el                      |   25 +-
 lisp/emacs-lisp/package.el                         |    8 +-
 lisp/emacs-lisp/pcase.el                           |    2 +-
 lisp/erc/erc-backend.el                            |   43 +-
 lisp/erc/erc-common.el                             |   82 +-
 lisp/erc/erc-compat.el                             |   99 +-
 lisp/erc/erc-goodies.el                            |    1 +
 lisp/erc/erc-networks.el                           |   53 +-
 lisp/erc/erc-sasl.el                               |  417 ++
 lisp/erc/erc-services.el                           |    5 +-
 lisp/erc/erc.el                                    |  166 +-
 lisp/files.el                                      |   29 +-
 lisp/gnus/ChangeLog.3                              |    2 +-
 lisp/gnus/gnus-art.el                              |   10 +-
 lisp/gnus/gnus-registry.el                         |    2 +-
 lisp/gnus/gnus-search.el                           |    2 +-
 lisp/gnus/gnus-topic.el                            |    2 +-
 lisp/gnus/gnus-uu.el                               |    2 +-
 lisp/gnus/message.el                               |    2 +-
 lisp/gnus/nnmaildir.el                             |   21 +-
 lisp/help.el                                       |    9 +-
 lisp/ibuf-ext.el                                   |   10 +-
 lisp/info.el                                       |   16 +-
 lisp/international/ucs-normalize.el                |    1 +
 lisp/jsonrpc.el                                    |    2 +-
 lisp/leim/quail/latin-ltx.el                       |    1 +
 lisp/mouse.el                                      |    1 +
 lisp/net/goto-addr.el                              |   31 +-
 lisp/net/sasl-scram-rfc.el                         |   21 +-
 lisp/net/tramp-adb.el                              |    1 +
 lisp/net/tramp-archive.el                          |   22 +-
 lisp/net/tramp-crypt.el                            |    1 +
 lisp/net/tramp-gvfs.el                             |    1 +
 lisp/net/tramp-rclone.el                           |    1 +
 lisp/net/tramp-sh.el                               |    1 +
 lisp/net/tramp-smb.el                              |    1 +
 lisp/net/tramp-sshfs.el                            |    4 +-
 lisp/net/tramp-sudoedit.el                         |    1 +
 lisp/net/tramp.el                                  |   80 +-
 lisp/outline.el                                    |   16 +-
 lisp/paren.el                                      |    4 +
 lisp/progmodes/antlr-mode.el                       |    2 +-
 lisp/progmodes/c-ts-mode.el                        |   81 +-
 lisp/progmodes/cc-engine.el                        |   26 +-
 lisp/progmodes/cc-langs.el                         |   10 +-
 lisp/progmodes/cc-mode.el                          |    9 +-
 lisp/progmodes/csharp-mode.el                      |  925 ++++
 lisp/progmodes/eglot.el                            |   38 +-
 lisp/progmodes/gdb-mi.el                           |    6 +-
 lisp/progmodes/idlwave.el                          |    2 +-
 lisp/progmodes/java-ts-mode.el                     |  109 +-
 lisp/progmodes/js.el                               |   79 +-
 lisp/progmodes/json-ts-mode.el                     |   32 +-
 lisp/progmodes/project.el                          |   75 +-
 lisp/progmodes/python.el                           |  101 +-
 lisp/progmodes/sh-script.el                        |  221 +-
 .../{ts-mode.el => typescript-ts-mode.el}          |  173 +-
 lisp/progmodes/which-func.el                       |   18 +-
 lisp/progmodes/xref.el                             |  165 +-
 lisp/server.el                                     |  137 +-
 lisp/simple.el                                     |  135 +-
 lisp/subr.el                                       |   32 +-
 lisp/textmodes/css-mode.el                         |    2 +-
 lisp/treesit.el                                    |  276 +-
 lisp/vc/vc.el                                      |    2 +-
 lisp/wid-edit.el                                   |    2 +-
 m4/assert_h.m4                                     |    6 +
 m4/gnulib-comp.m4                                  |   78 +-
 m4/pthread_sigmask.m4                              |    7 +-
 src/alloc.c                                        |   12 +-
 src/buffer.c                                       |   37 +-
 src/casefiddle.c                                   |    5 +-
 src/dispextern.h                                   |   10 +
 src/editfns.c                                      |  373 +-
 src/emacs.c                                        |    1 +
 src/fns.c                                          |    8 +-
 src/image.c                                        |    8 +-
 src/keyboard.c                                     |   22 +-
 src/lisp.h                                         |    3 +-
 src/pdumper.c                                      |    4 +-
 src/sqlite.c                                       |   15 +
 src/timefns.c                                      |    2 +-
 src/treesit.c                                      |  165 +-
 src/treesit.h                                      |   13 +-
 src/xdisp.c                                        |   68 +-
 src/xfns.c                                         |   26 +-
 src/xselect.c                                      |    8 +-
 src/xterm.c                                        |  102 +-
 src/xterm.h                                        |    6 +
 test/lib-src/emacsclient-tests.el                  |    4 +-
 test/lisp/auth-source-pass-tests.el                |   24 +-
 test/lisp/calendar/icalendar-tests.el              |   58 +-
 test/lisp/erc/erc-sasl-tests.el                    |  344 ++
 .../erc/erc-scenarios-base-association-nick.el     |   84 +-
 test/lisp/erc/erc-scenarios-base-local-modules.el  |  243 ++
 test/lisp/erc/erc-scenarios-sasl.el                |  144 +
 test/lisp/erc/erc-services-tests.el                |   16 +-
 test/lisp/erc/erc-tests.el                         |  178 +
 .../erc/resources/base/local-modules/first.eld     |   53 +
 .../erc/resources/base/local-modules/fourth.eld    |   53 +
 .../erc/resources/base/local-modules/second.eld    |   47 +
 .../erc/resources/base/local-modules/third.eld     |   43 +
 .../resources/base/netid/bouncer/barnet-drop.eld   |    2 +-
 .../erc/resources/base/netid/bouncer/barnet.eld    |    2 +-
 .../resources/erc-d/resources/dynamic-barnet.eld   |    2 +-
 .../resources/erc-d/resources/dynamic-foonet.eld   |    2 +-
 test/lisp/erc/resources/sasl/external.eld          |   33 +
 test/lisp/erc/resources/sasl/plain-failed.eld      |   16 +
 test/lisp/erc/resources/sasl/plain.eld             |   39 +
 test/lisp/erc/resources/sasl/scram-sha-1.eld       |   47 +
 test/lisp/erc/resources/sasl/scram-sha-256.eld     |   47 +
 test/lisp/eshell/esh-var-tests.el                  |    4 +-
 test/lisp/net/eudc-resources/bbdb                  |    1 +
 test/lisp/net/eudc-tests.el                        |    7 +-
 test/lisp/net/tramp-tests.el                       |   18 +
 test/lisp/server-tests.el                          |  196 +-
 test/lisp/vc/vc-tests.el                           |    2 +-
 test/manual/etags/CTAGS.good_crlf                  | 4484 ++++++++++++++++++++
 test/manual/etags/CTAGS.good_update                | 4483 +++++++++++++++++++
 test/manual/etags/Makefile                         |   15 +
 test/manual/etags/crlf                             |    2 +
 test/src/sqlite-tests.el                           |    1 +
 test/src/treesit-tests.el                          |   64 +-
 163 files changed, 15362 insertions(+), 1718 deletions(-)

diff --git a/.gitignore b/.gitignore
index e6310b644a..f4d2c15f51 100644
--- a/.gitignore
+++ b/.gitignore
@@ -158,6 +158,7 @@ test/manual/etags/srclist
 test/manual/etags/regexfile
 test/manual/etags/ETAGS
 test/manual/etags/CTAGS
+test/manual/etags/CTAGS*.sorted
 test/manual/indent/*.new
 test/lisp/gnus/mml-sec-resources/random_seed
 test/lisp/play/fortune-resources/fortunes.dat
diff --git a/build-aux/config.guess b/build-aux/config.guess
index a419d8643b..980b020838 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -4,7 +4,7 @@
 
 # shellcheck disable=SC2006,SC2268 # see below for rationale
 
-timestamp='2022-08-01'
+timestamp='2022-09-17'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -966,6 +966,12 @@ EOF
        GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
        GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
        ;;
+    x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
+       GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
+       ;;
+    *:[Mm]anagarm:*:*)
+       GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
+       ;;
     *:Minix:*:*)
        GUESS=$UNAME_MACHINE-unknown-minix
        ;;
diff --git a/build-aux/config.sub b/build-aux/config.sub
index fbaa37f235..baf1512b3c 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -4,7 +4,7 @@
 
 # shellcheck disable=SC2006,SC2268 # see below for rationale
 
-timestamp='2022-08-01'
+timestamp='2022-09-17'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -145,7 +145,7 @@ case $1 in
                        nto-qnx* | linux-* | uclinux-uclibc* \
                        | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | 
netbsd*-gnu* \
                        | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
+                       | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
                                basic_machine=$field1
                                basic_os=$maybe_os
                                ;;
@@ -1341,6 +1341,10 @@ EOF
                kernel=linux
                os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
                ;;
+       managarm*)
+               kernel=managarm
+               os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
+               ;;
        *)
                kernel=
                os=$basic_os
@@ -1754,7 +1758,7 @@ case $os in
             | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
             | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
             | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
-            | fiwix* )
+            | fiwix* | mlibc* )
                ;;
        # This one is extra strict with allowed versions
        sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
@@ -1762,6 +1766,9 @@ case $os in
                ;;
        none)
                ;;
+       kernel* )
+               # Restricted further below
+               ;;
        *)
                echo Invalid configuration \`"$1"\': OS \`"$os"\' not 
recognized 1>&2
                exit 1
@@ -1772,16 +1779,26 @@ esac
 # (given a valid OS), if there is a kernel.
 case $kernel-$os in
        linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
-                  | linux-musl* | linux-relibc* | linux-uclibc* )
+                  | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* 
)
                ;;
        uclinux-uclibc* )
                ;;
-       -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+       managarm-mlibc* | managarm-kernel* )
+               ;;
+       -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
                # These are just libc implementations, not actual OSes, and thus
                # require a kernel.
                echo "Invalid configuration \`$1': libc \`$os' needs explicit 
kernel." 1>&2
                exit 1
                ;;
+       -kernel* )
+               echo "Invalid configuration \`$1': \`$os' needs explicit 
kernel." 1>&2
+               exit 1
+               ;;
+       *-kernel* )
+               echo "Invalid configuration \`$1': \`$kernel' does not support 
\`$os'." 1>&2
+               exit 1
+               ;;
        kfreebsd*-gnu* | kopensolaris*-gnu*)
                ;;
        vxworks-simlinux | vxworks-simwindows | vxworks-spe)
diff --git a/configure.ac b/configure.ac
index 187a43dc3e..cc4e59ee5a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3243,7 +3243,7 @@ if test "${with_tree_sitter}" != "no"; then
       AC_CHECK_FUNCS([ts_set_allocator])
       CFLAGS=$OLD_CFLAGS
       LIBS=$OLD_LIBS
-      if test "$ac_cv_func_ts_set_allocator" == yes; then
+      if test "$ac_cv_func_ts_set_allocator" = yes; then
         AC_DEFINE(HAVE_TREE_SITTER, 1, [Define if using tree-sitter.])
       else
         AC_MSG_ERROR([Tree-sitter library exists but its version is too old]);
diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi
index dd0787cd38..d55c751210 100644
--- a/doc/emacs/msdos.texi
+++ b/doc/emacs/msdos.texi
@@ -206,40 +206,40 @@ format, that effectively converts the file to Unix EOL 
style, like the
 @code{dos2unix} program.
 
 @cindex untranslated file system
-@findex add-untranslated-filesystem
+@findex w32-add-untranslated-filesystem
   When you use NFS, Samba, or some other similar method to access file
 systems that reside on computers using GNU or Unix systems, Emacs
 should not perform end-of-line translation on any files in these file
 systems---not even when you create a new file.  To request this,
 designate these file systems as @dfn{untranslated} file systems by
-calling the function @code{add-untranslated-filesystem}.  It takes one
-argument: the file system name, including a drive letter and
+calling the function @code{w32-add-untranslated-filesystem}.  It takes
+one argument: the file system name, including a drive letter and
 optionally a directory.  For example,
 
 @example
-(add-untranslated-filesystem "Z:")
+(w32-add-untranslated-filesystem "Z:")
 @end example
 
 @noindent
 designates drive Z as an untranslated file system, and
 
 @example
-(add-untranslated-filesystem "Z:\\foo")
+(w32-add-untranslated-filesystem "Z:\\foo")
 @end example
 
 @noindent
 designates directory @file{\foo} on drive Z as an untranslated file
 system.
 
-  Most often you would use @code{add-untranslated-filesystem} in your
+  Most often you would use @code{w32-add-untranslated-filesystem} in your
 @file{.emacs} or @file{init.el} init file, or in @file{site-start.el}
 so that all the users at your site get the benefit of it.
 
-@findex remove-untranslated-filesystem
-  To countermand the effect of @code{add-untranslated-filesystem}, use
-the function @code{remove-untranslated-filesystem}.  This function takes
-one argument, which should be a string just like the one that was used
-previously with @code{add-untranslated-filesystem}.
+@findex w32-remove-untranslated-filesystem
+  To countermand the effect of @code{w32-add-untranslated-filesystem},
+use the function @code{w32-remove-untranslated-filesystem}.  This
+function takes one argument, which should be a string just like the
+one that was used previously with @code{w32-add-untranslated-filesystem}.
 
   Designating a file system as untranslated does not affect character
 set conversion, only end-of-line conversion.  Essentially, it directs
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index 6abf29c009..ba8475e86a 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -83,15 +83,20 @@ mode for the C programming language is @code{c-mode}.
 @cindex DNS mode
 @cindex Javascript mode
 @cindex Awk mode
+@cindex C# mode
+@cindex IDLWAVE mode
+@cindex JSON mode
+@cindex SQL mode
+@cindex TypeScript mode
   Emacs has programming language modes for Lisp, Scheme, the
-Scheme-based DSSSL expression language, Ada, ASM, AWK, C, C++,
+Scheme-based DSSSL expression language, Ada, ASM, AWK, C, C++, C#,
 Fortran, Icon, IDL (CORBA), IDLWAVE, Java, Javascript, M4, Makefiles,
 Metafont (@TeX{}'s companion for font creation), Modula2, Object
 Pascal, Objective-C, Octave, Pascal, Perl, Pike, PostScript, Prolog,
-Python, Ruby, Simula, SQL, Tcl, Verilog, and VHDL@.  An alternative
-mode for Perl is called CPerl mode.  Modes are also available for the
-scripting languages of the common GNU and Unix shells, and
-MS-DOS/MS-Windows @samp{BAT} files, and for makefiles, DNS master
+Python, Ruby, Simula, SQL, Tcl, TypeScript, Verilog, and VHDL@.  An
+alternative mode for Perl is called CPerl mode.  Modes are also
+available for the scripting languages of the common GNU and Unix
+shells, and MS-DOS/MS-Windows @samp{BAT} files, JSON, DNS master
 files, and various sorts of configuration files.
 
   Ideally, Emacs should have a major mode for each programming
@@ -1419,7 +1424,7 @@ displaying all of the documentation texts concatenated 
together.
 This abnormal hook's value is a list of functions that can produce
 documentation for the symbol at point as appropriate for the current
 buffer's major-mode.  These functions act as a collection of backends
-for ElDoc.  Major mode register their documentation lookup functions
+for ElDoc.  Major modes register their documentation lookup functions
 with ElDoc by adding their functions to the buffer-local value of this
 variable.
 @end vtable
diff --git a/doc/lispintro/emacs-lisp-intro.texi 
b/doc/lispintro/emacs-lisp-intro.texi
index df8fa2f8e7..860ef2fc78 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -7981,7 +7981,7 @@ The command \\[yank] can retrieve it from there. @dots{} "
          (progn (message "Read only text copied to kill ring") nil)
        (barf-if-buffer-read-only)
        ;; If the buffer isn't read-only, the text is.
-       (signal 'text-read-only (list (current-buffer)))))
+       (signal 'text-read-only (list (current-buffer)))))))
 @end group
 @end smallexample
 
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 377b433cae..662de29d45 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1676,10 +1676,14 @@ as returned by @code{find-image} (@pxref{Defining 
Images}); otherwise
 this is @code{nil}.
 
 @item @var{dx}, @var{dy}
-These are the pixel coordinates of the click, relative to the top left
-corner of @var{object}, which is @code{(0 . 0)}.  If @var{object} is
-@code{nil}, which stands for a buffer, the coordinates are relative to
-the top left corner of the character glyph clicked on.
+These are the pixel offsets of the click relative to the top left
+corner of the @var{object}'s glyph that is the nearest one to the
+click. The relevant @var{object}s can be either a buffer, or a string,
+or an image, see above.  If @var{object} is @code{nil} or a string,
+the coordinates are relative to the top left corner of the character
+glyph clicked on.  Note that the offsets are always zero on text-mode
+frames, when @var{object} is @code{nil}, since each glyph there is
+considered to have exactly 1x1 pixel dimensions.
 
 @item @var{width}, @var{height}
 If the click is on a character, either from buffer text or from
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index d1d281d709..3e39734999 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -516,7 +516,7 @@ using the @code{with-suppressed-warnings} macro:
 @defspec with-suppressed-warnings warnings body@dots{}
 In execution, this is equivalent to @code{(progn @var{body}...)}, but
 the compiler does not issue warnings for the specified conditions in
-@var{body}.  @var{warnings} is an associative list of warning symbols
+@var{body}.  @var{warnings} is an association list of warning symbols
 and function/variable symbols they apply to.  For instance, if you
 wish to call an obsolete function called @code{foo}, but want to
 suppress the compilation warning, say:
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 183b2786ea..4b45d89f9d 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -3383,7 +3383,7 @@ first, before handlers for jobs such as remote file 
access.
 @code{make-nearby-temp-file},
 @code{make-process},
 @code{make-symbolic-link},@*
-@code{process-attributes}, @code{process-file},
+@code{memory-info}, @code{process-attributes}, @code{process-file},
 @code{rename-file}, @code{set-file-acl}, @code{set-file-modes},
 @code{set-file-selinux-context}, @code{set-file-times},
 @code{set-visited-file-modtime}, @code{shell-command},
@@ -3445,7 +3445,7 @@ first, before handlers for jobs such as remote file 
access.
 @code{make-nearby-temp-file},
 @code{make-process},
 @code{make-symbolic-link},
-@code{process-attributes}, @code{process-file},
+@code{memory-info}, @code{process-attributes}, @code{process-file},
 @code{rename-file}, @code{set-file-acl}, @code{set-file-modes},
 @code{set-file-selinux-context}, @code{set-file-times},
 @code{set-visited-file-modtime}, @code{shell-command},
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 4640b6d759..c4e724d761 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -622,6 +622,9 @@ a certain kind of object.  See the documentation string for 
details.
 @defun memory-info
 This functions returns an amount of total system memory and how much
 of it is free.  On an unsupported system, the value may be @code{nil}.
+
+If @code{default-directory} points to a remote host, memory
+information of that host is returned.
 @end defun
 
 @defvar gcs-done
diff --git a/doc/lispref/parsing.texi b/doc/lispref/parsing.texi
index 0f6a99b299..3223875320 100644
--- a/doc/lispref/parsing.texi
+++ b/doc/lispref/parsing.texi
@@ -725,10 +725,11 @@ the first node that matches, or @code{nil} if none does.
 
 By default, this function only traverses named nodes, but if @var{all}
 is non-@code{nil}, it traverses all the nodes.  If @var{backward} is
-non-@code{nil}, it traverses backwards (i.e., it visits the last child first
-when traversing down the tree).  If @var{limit} is non-@code{nil}, it
-must be a number that limits the tree traversal to that many levels
-down the tree.
+non-@code{nil}, it traverses backwards (i.e., it visits the last child
+first when traversing down the tree).  If @var{limit} is
+non-@code{nil}, it must be a number that limits the tree traversal to
+that many levels down the tree.  If @var{limit} is @code{nil}, it
+defaults to 1000.
 @end defun
 
 @defun treesit-search-forward start predicate &optional backward all
@@ -814,10 +815,11 @@ b   1   2         b   |   |      b   c   d
 @end group
 @end example
 
-If @var{process-fn} is non-@code{nil}, instead of returning the matched
-nodes, this function passes each node to @var{process-fn} and uses the
-returned value instead.  If non-@code{nil}, @var{limit} is the number of
-levels to go down from @var{root}.
+If @var{process-fn} is non-@code{nil}, instead of returning the
+matched nodes, this function passes each node to @var{process-fn} and
+uses the returned value instead.  If non-@code{nil}, @var{limit} is
+the number of levels to go down from @var{root}.  If @var{limit} is
+@code{nil}, it defaults to 1000.
 
 Each node in the returned tree looks like
 @w{@code{(@var{tree-sitter-node} . (@var{child} @dots{}))}}.  The
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index 4454188cc4..2f277ea73a 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -558,11 +558,13 @@ differences, like @code{char-equal} when 
@code{case-fold-search} is
 @cindex locale-dependent string equivalence
 @defun string-collate-equalp string1 string2 &optional locale ignore-case
 This function returns @code{t} if @var{string1} and @var{string2} are
-equal with respect to collation rules.  A collation rule is not only
+equal with respect to the collation rules of the specified
+@var{locale}, which defaults to your current system locale.  A
+collation rule is not only
 determined by the lexicographic order of the characters contained in
-@var{string1} and @var{string2}, but also further rules about
+@var{string1} and @var{string2}, but also by further rules about
 relations between these characters.  Usually, it is defined by the
-@var{locale} environment Emacs is running with and by the Standard C
+locale environment with which Emacs is running and by the Standard C
 library against which Emacs was linked@footnote{
 For more information about collation rules and their locale
 dependencies, see @uref{https://unicode.org/reports/tr10/, The Unicode
@@ -589,8 +591,12 @@ dependent; a @var{locale} @code{"en_US.UTF-8"} is 
applicable on POSIX
 systems, while it would be, e.g., @code{"enu_USA.1252"} on MS-Windows
 systems.
 
-If @var{ignore-case} is non-@code{nil}, characters are converted to lower-case
-before comparing them.
+If @var{ignore-case} is non-@code{nil}, characters are compared
+case-insensitively, by converting them to lower-case.  However, if the
+underlying system library doesn't provide locale-specific collation
+rules, this function falls back to @code{string-equal}, in which case
+the @var{ignore-case} argument is ignored, and the comparison will
+always be case-sensitive.
 
 @vindex w32-collate-ignore-punctuation
 To emulate Unicode-compliant collation on MS-Windows systems,
@@ -672,11 +678,13 @@ This function returns the result of comparing 
@var{string1} and
 @cindex locale-dependent string comparison
 @defun string-collate-lessp string1 string2 &optional locale ignore-case
 This function returns @code{t} if @var{string1} is less than
-@var{string2} in collation order.  A collation order is not only
+@var{string2} in collation order of the specified @var{locale}, which
+defaults to your current system locale.  A collation order is not only
 determined by the lexicographic order of the characters contained in
-@var{string1} and @var{string2}, but also further rules about
+@var{string1} and @var{string2}, but also by further rules about
 relations between these characters.  Usually, it is defined by the
-@var{locale} environment Emacs is running with.
+locale environment with which Emacs is running, and by the Standard C
+library against which Emacs was linked.
 
 For example, punctuation and whitespace characters might be ignored
 for sorting (@pxref{Sequence Functions}):
@@ -706,8 +714,12 @@ systems.  The @var{locale} value of @code{"POSIX"} or 
@code{"C"} lets
 @end group
 @end example
 
-If @var{ignore-case} is non-@code{nil}, characters are converted to lower-case
-before comparing them.
+If @var{ignore-case} is non-@code{nil}, characters are compared
+case-insensitively, by converting them to lower-case.  However, if the
+underlying system library doesn't provide locale-specific collation
+rules, this function falls back to @code{string-lessp}, in which case
+the @var{ignore-case} argument is ignored, and the comparison will
+always be case-sensitive.
 
 To emulate Unicode-compliant collation on MS-Windows systems,
 bind @code{w32-collate-ignore-punctuation} to a non-@code{nil} value, since
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 793c22949c..ef938e88ec 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -5460,6 +5460,10 @@ Extensions are usually shared-library files; on GNU and 
Unix systems,
 they have the @file{.so} file-name extension.
 @end defun
 
+@defun sqlite-version
+Return a string denoting the version of the SQLite library in use.
+@end defun
+
 @findex sqlite-mode-open-file
 If you wish to list the contents of an SQLite file, you can use the
 @code{sqlite-mode-open-file} command.  This will pop to a buffer using
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index 872e5f88f5..83728be0a5 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -560,11 +560,12 @@ favors the @samp{rms@@gnu.org.gpg} form for usernames 
over the
 param was provided.
 
 In general, if you prefer idiosyncrasies traditionally exhibited by
-this backend, such as prioritizing field count in a filename, try
-setting this option to @code{nil}.  But, if you experience problems
-predicting the outcome of searches relative to other auth-source
-backends or encounter code expecting to query multiple backends
-uniformly, try flipping it back to @code{t} (the default).
+this backend, such as prioritizing field count in a filename or
+matching against subdomain labels, keep this option set to @code{nil}
+(the default).  But, if you experience problems predicting the outcome
+of searches relative to other auth-source backends or encounter code
+expecting to query multiple backends uniformly, try flipping it to
+@code{t}.
 @end defvar
 
 @node Help for developers
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index 0d807e323e..e165adbb49 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -78,6 +78,7 @@ Getting Started
 Advanced Usage
 
 * Connecting::                  Ways of connecting to an IRC server.
+* SASL::                        Authenticating via SASL.
 * Sample Configuration::        An example configuration file.
 * Integrations::                Integrations available for ERC.
 * Options::                     Options that are available for ERC.
@@ -390,8 +391,11 @@ modules are loaded.
 
 There is a spiffy customize interface, which may be reached by typing
 @kbd{M-x customize-option @key{RET} erc-modules @key{RET}}.
-Alternatively, set @code{erc-modules} manually and then call
-@code{erc-update-modules}.
+When removing a module outside of the Custom ecosystem, you may wish
+to ensure it's disabled by invoking its associated minor-mode toggle,
+such as @kbd{M-x erc-spelling-mode @key{RET}}.  Note that, these days,
+calling @code{erc-update-modules} in an init file is typically
+unnecessary.
 
 The following is a list of available modules.
 
@@ -479,6 +483,10 @@ Replace text in messages
 @item ring
 Enable an input history
 
+@cindex modules, sasl
+@item sasl
+Enable SASL authentication
+
 @cindex modules, scrolltobottom
 @item scrolltobottom
 Scroll to the bottom of the buffer
@@ -517,6 +525,38 @@ Translate morse code in messages
 
 @end table
 
+@subheading Local Modules
+@cindex local modules
+
+All modules operate as minor modes under the hood, and some newer ones
+may be defined as buffer-local.  These so-called ``local modules'' are
+a work in progress and their behavior and interface are subject to
+change.  As of ERC 5.5, the only practical differences are
+
+@enumerate
+@item
+``Control variables,'' like @code{erc-sasl-mode}, are stateful across
+IRC sessions and override @code{erc-module} membership when influencing
+module activation in new sessions.
+@item
+Removing a local module from @code{erc-modules} via Customize not only
+disables its mode but also kills its control variable in all ERC
+buffers.
+@item
+``Mode toggles,'' like @code{erc-sasl-mode} and
+@code{erc-sasl-enable}, behave differently relative to each other and
+to their global counterparts.  (More on this just below.)
+@end enumerate
+
+By default, all local-mode toggles, like @code{erc-sasl-mode}, only
+affect the current buffer, but their ``non-mode'' variants, such as
+@code{erc-sasl-enable}, operate on all buffers belonging to a
+connection when called interactively.  Keep in mind that whether
+enabled or not, a module may effectively be ``inert'' in certain types
+of buffers, such as queries and channels.  Whatever the case, a local
+toggle never mutates @code{erc-modules}.
+
+
 @c PRE5_4: Document every option of every module in its own subnode
 
 
@@ -526,6 +566,7 @@ Translate morse code in messages
 
 @menu
 * Connecting::                  Ways of connecting to an IRC server.
+* SASL::                        Authenticating via SASL
 * Sample Configuration::        An example configuration file.
 * Integrations::                Integrations available for ERC.
 * Options::                     Options that are available for ERC.
@@ -598,6 +639,7 @@ while helpers, like @code{erc-compute-nick}, will determine 
other
 parameters, and some, like @code{client-certificate}, will just be
 @code{nil}.
 
+@anchor{ERC client-certificate}
 To use a certificate with @code{erc-tls}, specify the optional
 @var{client-certificate} keyword argument, whose value should be as
 described in the documentation of @code{open-network-stream}: if
@@ -732,7 +774,10 @@ ERC should automatically attempt to connect with another 
nickname.
 You can manually set another nickname with the /NICK command.
 @end defopt
 
+@anchor{ERC username}
 @subheading User
+@cindex user
+
 @defun erc-compute-user &optional user
 Determine a suitable value to send as the first argument of the
 opening @samp{USER} IRC command by consulting the following sources:
@@ -844,6 +889,7 @@ netrc's case).  The actual key goes in the @samp{password} 
(or
 @noindent
 For details, @pxref{Top,,auth-source, auth, Emacs auth-source Library}.
 
+@anchor{ERC auth-source functions}
 @defopt erc-auth-source-server-function
 @end defopt
 @defopt erc-auth-source-services-function
@@ -856,7 +902,8 @@ current context, if any.  For example, with NickServ 
queries,
 @code{:user} is the ``desired'' nickname rather than the current one.
 Generalized names, like @code{:user} and @code{:host}, are always used
 over back-end specific ones, like @code{:login} or @code{:machine}.
-ERC expects a string to use as the secret or nil, if the search fails.
+ERC expects a string to use as the secret or @code{nil}, if the search
+fails.
 
 @findex erc-auth-source-search
 The default value for all three options is the function
@@ -918,6 +965,143 @@ When providing an ID as an entry-point argument, strings 
and symbols
 make the most sense, but any reasonably printable object is
 acceptable.
 
+@node SASL
+@section Authenticating via SASL
+@cindex SASL
+
+Regardless of the mechanism or the network, you'll likely have to be
+registered before first use.  Please refer to the network's own
+instructions for details.  If you're new to IRC and using a bouncer,
+know that you probably won't be needing SASL for the client-to-bouncer
+connection.  To get started, just add @code{sasl} to
+@code{erc-modules} like any other module.  But before that, please
+explore all custom options pertaining to your chosen mechanism.
+
+@defopt erc-sasl-mechanism
+The name of an SASL subprotocol type as a @emph{lowercase} symbol.
+
+@var{plain} and @var{scram} (``password-based''):
+
+@indentedblock
+Here, ``password'' refers to your account password, which is usually
+your @samp{NickServ} password.  To make this work, customize
+@code{erc-sasl-user} and @code{erc-sasl-password} or specify the
+@code{:user} and @code{:password} keyword arguments when invoking
+@code{erc-tls}.  Note that @code{:user} cannot be given interactively.
+@end indentedblock
+
+@var{external} (via Client TLS Certificate):
+
+@indentedblock
+This works in conjunction with the @code{:client-certificate} keyword
+offered by @code{erc-tls}.  Just ensure you've registered your
+fingerprint with the network beforehand.  The fingerprint is usually a
+SHA1 or SHA256 digest in either "normalized" or "openssl" forms.  The
+first is lowercase without delims (@samp{deadbeef}) and the second
+uppercase with colon seps (@samp{DE:AD:BE:EF}).  These days, there's
+usually a @samp{CERT ADD} command offered by NickServ that can
+register you automatically if you issue it while connected with a
+client cert.  (@pxref{ERC client-certificate}).
+
+Additional considerations:
+@enumerate
+@item
+Most IRCds will allow you to authenticate with a client cert but
+without the hassle of SASL (meaning you may not need this module).
+@item
+Technically, @var{EXTERNAL} merely indicates that an out-of-band mode
+of authentication is in effect (being deferred to), so depending on
+the specific application or service, there's a remote chance your
+server has something else in mind.
+@end enumerate
+@end indentedblock
+
+@var{ecdsa-nist256p-challenge}:
+
+@indentedblock
+This mechanism is quite complicated and currently requires the
+external @samp{openssl} executable, so please use something else if at
+all possible.  Ignoring that, specify your key file (e.g.,
+@samp{~/pki/mykey.pem}) as the value of @code{erc-sasl-password}, and
+then configure your network settings.  On servers running Atheme
+services, you can add your public key with @samp{NickServ} like so:
+
+@example
+ERC> /msg NickServ set property \
+     pubkey AgGZmlYTUjJlea/BVz7yrjJ6gysiAPaQxzeUzTH4hd5j
+
+@end example
+(You may be able to omit the @samp{property} subcommand.)
+@end indentedblock
+
+@end defopt
+
+@defopt erc-sasl-user
+This should be your network account username, typically the same one
+registered with nickname services.  Specify this when your NickServ
+login differs from the @code{:user} you're connecting with.
+(@pxref{ERC username})
+@end defopt
+
+@defopt erc-sasl-password
+As noted elsewhere, the @code{:password} parameter for @code{erc-tls}
+was originally intended for traditional ``server passwords,'' but these
+aren't really used any more.  As such, this option defaults to
+borrowing that parameter for its own uses, thus allowing you to call
+@code{erc-tls} with @code{:password} set to your NickServ password.
+
+You can also set this to a nonemtpy string, and ERC will send that
+when needed, no questions asked.  If you instead give a non-@code{nil}
+symbol (other than @code{:password}), like @samp{Libera.Chat}, ERC
+will use it for the @code{:host} field in an auth-source query.
+Actually, the same goes for when this option is @code{nil} but an
+explicit session ID is already on file (@pxref{Network Identifier}).
+For all such queries, ERC specifies the resolved value of
+@code{erc-sasl-user} for the @code{:user} (@code{:login}) param.  Keep
+in mind that none of this matters unless
+@code{erc-sasl-auth-source-function} holds a function, and it's
+@code{nil} by default.  As a last resort, ERC will prompt you for
+input.
+
+Lastly, if your mechanism is @code{ecdsa-nist256p-challenge}, this
+option should instead hold the file name of your key.
+@end defopt
+
+@defopt erc-sasl-auth-source-function
+This is nearly identical to the other ERC @samp{auth-source} function
+options (@pxref{ERC auth-source functions}) except that the default
+value here is @code{nil}, meaning you have to set it to something like
+@code{erc-auth-source-search} for queries to be performed.
+@end defopt
+
+@defopt erc-sasl-authzid
+In the rarest of circumstances, a network may want you to specify a
+specific role or assume an alternate identity.  In most cases, this
+happens because the server is buggy or misconfigured.  If you suspect
+such a thing, please contact your network operator.  Otherwise, just
+leave this set to @code{nil}.
+@end defopt
+
+@subheading Troubleshooting
+
+@strong{Warning:} ERC's SASL offering is currently limited by a lack
+of support for proper IRCv3 capability negotiation.  In most cases,
+this shouldn't affect your ability to authenticate.
+
+If you're struggling, remember that your SASL password is almost
+always your NickServ password.  When in doubt, try restoring all SASL
+options to their defaults and calling @code{erc-tls} with @code{:user}
+set to your NickServ account name and @code{:password} to your
+NickServ password.  If you're still having trouble, please contact us
+(@pxref{Getting Help and Reporting Bugs}).
+
+As you try out different settings, keep in mind that it's best to
+create a fresh session for every change, for example, by calling
+@code{erc-tls} from scratch.  More experienced users may be able to
+get away with cycling @code{erc-sasl-mode} and issuing a
+@samp{/reconnect}, but that's generally not recommended.  Whatever the
+case, you'll probably want to temporarily disable
+@code{erc-server-auto-reconnect} while experimenting.
 
 @node Sample Configuration
 @section Sample Configuration
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index cb0d9c50da..94c75ed30c 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -16808,8 +16808,7 @@ value is @code{nil}.
 Do @emph{not} use the same maildir both in @code{mail-sources} and as
 an @code{nnmaildir} group.  The results might happen to be useful, but
 that would be by chance, not by design, and the results might be
-different in the future.  If your split rules create new groups,
-remember to supply a @code{create-directory} server parameter.
+different in the future.
 @end table
 
 @node nnmaildir Group Parameters
@@ -20565,7 +20564,7 @@ returned value is required to be an integer.
 (score-fn (custom-scoring))
 @end example
 
-The user-defined function is called with an associative list with the
+The user-defined function is called with an association list with the
 keys @code{number subject from date id refs chars lines xref extra}
 followed by the article's score before the function is run.
 
@@ -26539,7 +26538,7 @@ keyboard shortcuts like @kbd{M M i} for Important, 
using the first
 letter.
 @end defvar
 
-@defun gnus-registry-mark-article
+@defun gnus-registry-set-article-mark
 Call this function to mark an article with a custom registry mark.  It
 will offer the available marks for completion.
 @end defun
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 09f2d28c2f..cfc77a84ea 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2022-09-21.15}
+\def\texinfoversion{2022-11-12.22}
 %
 % Copyright 1985, 1986, 1988, 1990-2022 Free Software Foundation, Inc.
 %
@@ -2544,34 +2544,30 @@ end
   \scriptfont\sffam=\sevensf
 }
 
-%
 
-% The font-changing commands (all called \...fonts) redefine the meanings
-% of \STYLEfont, instead of just \STYLE.  We do this because \STYLE needs
-% to also set the current \fam for math mode.  Our \STYLE (e.g., \rm)
-% commands hardwire \STYLEfont to set the current font.
-%
-% The fonts used for \ifont are for "math italics"  (\itfont is for italics
-% in regular text).  \syfont is also used in math mode only.
-%
-% Each font-changing command also sets the names \lsize (one size lower)
-% and \lllsize (three sizes lower).  These relative commands are used
-% in, e.g., the LaTeX logo and acronyms.
-%
-% This all needs generalizing, badly.
+
+% \defineassignfonts{SIZE} -
+%   Define sequence \assignfontsSIZE, which switches between font sizes
+% by redefining the meanings of \STYLEfont.  (Just \STYLE additionally sets
+% the current \fam for math mode.)
 %
+\def\defineassignfonts#1{%
+  \expandafter\edef\csname assignfonts#1\endcsname{%
+    \let\noexpand\rmfont\csname #1rm\endcsname
+    \let\noexpand\itfont\csname #1it\endcsname
+    \let\noexpand\slfont\csname #1sl\endcsname
+    \let\noexpand\bffont\csname #1bf\endcsname
+    \let\noexpand\ttfont\csname #1tt\endcsname
+    \let\noexpand\smallcaps\csname #1sc\endcsname
+    \let\noexpand\sffont  \csname #1sf\endcsname
+    \let\noexpand\ifont   \csname #1i\endcsname
+    \let\noexpand\syfont  \csname #1sy\endcsname
+    \let\noexpand\ttslfont\csname #1ttsl\endcsname
+  }
+}
 
 \def\assignfonts#1{%
-  \expandafter\let\expandafter\rmfont\csname #1rm\endcsname
-  \expandafter\let\expandafter\itfont\csname #1it\endcsname
-  \expandafter\let\expandafter\slfont\csname #1sl\endcsname
-  \expandafter\let\expandafter\bffont\csname #1bf\endcsname
-  \expandafter\let\expandafter\ttfont\csname #1tt\endcsname
-  \expandafter\let\expandafter\smallcaps\csname #1sc\endcsname
-  \expandafter\let\expandafter\sffont  \csname #1sf\endcsname
-  \expandafter\let\expandafter\ifont   \csname #1i\endcsname
-  \expandafter\let\expandafter\syfont  \csname #1sy\endcsname
-  \expandafter\let\expandafter\ttslfont\csname #1ttsl\endcsname
+  \csname assignfonts#1\endcsname
 }
 
 \newif\ifrmisbold
@@ -2595,12 +2591,21 @@ end
    \csname\curfontstyle\endcsname
 }%
 
+% Define the font-changing commands (all called \...fonts).
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used
+% in, e.g., the LaTeX logo and acronyms.
+%
+% Note: The fonts used for \ifont are for "math italics"  (\itfont is for
+% italics in regular text).  \syfont is also used in math mode only.
+%
 \def\definefontsetatsize#1#2#3#4#5{%
+  \defineassignfonts{#1}%
 \expandafter\def\csname #1fonts\endcsname{%
   \def\curfontsize{#1}%
   \def\lsize{#2}\def\lllsize{#3}%
   \csname rmisbold#5\endcsname
-  \assignfonts{#1}%
+  \csname assignfonts#1\endcsname
   \resetmathfonts
   \setleading{#4}%
 }}
@@ -2645,9 +2650,16 @@ end
 % Check if we are currently using a typewriter font.  Since all the
 % Computer Modern typewriter fonts have zero interword stretch (and
 % shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+% this property, we can check that font parameter. #1 is what to
+% print if we are indeed using \tt; #2 is what to print otherwise.
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
 
 % Check if internal flag is clear, i.e. has not been @set.
 \def\ifflagclear#1#2#3{%
@@ -2655,8 +2667,6 @@ end
   #2\else#3\fi
 }
 
-
-
 {
 \catcode`\'=\active
 \catcode`\`=\active
@@ -2672,33 +2682,28 @@ end
 % lilypond developers report.  xpdf does work with the regular 0x27.
 %
 \def\codequoteright{%
-  \ifmonospace
-    \ifflagclear{txicodequoteundirected}{%
-      \ifflagclear{codequoteundirected}{%
-        '%
-      }{\char'15 }%
-    }{\char'15 }%
-  \else
-    '%
-  \fi
+  \ifusingtt
+      {\ifflagclear{txicodequoteundirected}%
+          {\ifflagclear{codequoteundirected}%
+              {'}%
+              {\char'15 }}%
+          {\char'15 }}%
+      {'}%
 }
-%
+
 % and a similar option for the left quote char vs. a grave accent.
 % Modern fonts display ASCII 0x60 as a grave accent, so some people like
 % the code environments to do likewise.
+% \relax disables Spanish ligatures ?` and !` of \tt font.
 %
 \def\codequoteleft{%
-  \ifmonospace
-    \ifflagclear{txicodequotebacktick}{%
-      \ifflagclear{codequotebacktick}{%
-        % [Knuth] pp. 380,381,391
-        % \relax disables Spanish ligatures ?` and !` of \tt font.
-        \relax`%
-      }{\char'22 }%
-    }{\char'22 }%
-  \else
-    \relax`%
-  \fi
+  \ifusingtt
+      {\ifflagclear{txicodequotebacktick}%
+          {\ifflagclear{codequotebacktick}%
+              {\relax`}%
+              {\char'22 }}%
+          {\char'22 }}%
+      {\relax`}%
 }
 
 % Commands to set the quote options.
@@ -2817,20 +2822,29 @@ end
 \def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
 \def\restorehyphenation{\hyphenchar\font = `- }
 
+\newif\iffrenchspacing
+\frenchspacingfalse
+
 % Set sfcode to normal for the chars that usually have another value.
 % Can't use plain's \frenchspacing because it uses the `\x notation, and
 % sometimes \x has an active definition that messes things up.
 %
 \catcode`@=11
   \def\plainfrenchspacing{%
-    \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m
-    \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m
-    \def\endofsentencespacefactor{1000}% for @. and friends
+    \iffrenchspacing\else
+      \frenchspacingtrue
+      \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m
+      \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m
+      \def\endofsentencespacefactor{1000}% for @. and friends
+    \fi
   }
   \def\plainnonfrenchspacing{%
-    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
-    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
-    \def\endofsentencespacefactor{3000}% for @. and friends
+    \iffrenchspacing
+      \frenchspacingfalse
+       \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+       \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+       \def\endofsentencespacefactor{3000}% for @. and friends
+    \fi
   }
 \catcode`@=\other
 \def\endofsentencespacefactor{3000}% default
@@ -3389,8 +3403,8 @@ $$%
 \let\atchar=\@
 
 % @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
-\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}}
-\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}}
+\def\lbracechar{{\ifusingtt{\char123}{\ensuremath\lbrace}}}
+\def\rbracechar{{\ifusingtt{\char125}{\ensuremath\rbrace}}}
 \let\{=\lbracechar
 \let\}=\rbracechar
 
@@ -3537,7 +3551,7 @@ $$%
 
 % @pounds{} is a sterling sign, which Knuth put in the CM italic font.
 %
-\def\pounds{\ifmonospace{\ecfont\char"BF}\else{\it\$}\fi}
+\def\pounds{{\ifusingtt{\ecfont\char"BF}{\it\$}}}
 
 % @euro{} comes from a separate font, depending on the current style.
 % We use the free feym* fonts from the eurosym package by Henrik
@@ -3651,18 +3665,17 @@ $$%
   % hopefully nobody will notice/care.
   \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
   \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
-  \ifmonospace
-    % typewriter:
-    \font\thisecfont = #1ctt\ecsize \space at \nominalsize
-  \else
-    \ifx\curfontstyle\bfstylename
-      % bold:
-      \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize
-    \else
-      % regular:
-      \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize
-    \fi
-  \fi
+  \ifusingtt
+      % typewriter:
+     {\font\thisecfont = #1ctt\ecsize \space at \nominalsize}%
+  % else
+     {\ifx\curfontstyle\bfstylename
+        % bold:
+        \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize
+      \else
+        % regular:
+        \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+      \fi}%
   \thisecfont
 }
 
@@ -3678,7 +3691,10 @@ $$%
 
 % @textdegree - the normal degrees sign.
 %
-\def\textdegree{$^\circ$}
+\def\textdegree{%
+   \ifmmode ^\circ
+   \else {\tcfont \char 176}%
+   \fi}
 
 % Laurent Siebenmann reports \Orb undefined with:
 %  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
@@ -3695,11 +3711,11 @@ $$%
 % only change font for tt for correct kerning and to avoid using
 % \ecfont unless necessary.
 \def\quotedblleft{%
-  \ifmonospace{\ecfont\char"10}\else{\char"5C}\fi
+  \ifusingtt{{\ecfont\char"10}}{{\char"5C}}%
 }
 
 \def\quotedblright{%
-  \ifmonospace{\ecfont\char"11}\else{\char`\"}\fi
+  \ifusingtt{{\ecfont\char"11}}{{\char`\"}}%
 }
 
 
@@ -5257,7 +5273,10 @@ $$%
         \xdef\trimmed{\segment}%
         \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
         \xdef\indexsortkey{\trimmed}%
-        \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi
+        \ifx\indexsortkey\empty
+          \message{Empty index sort key near line \the\inputlineno}%
+          \xdef\indexsortkey{ }%
+        \fi
       }\fi
       %
       % Append to \fullindexsortkey.
@@ -6386,6 +6405,16 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 \def\Yappendixkeyword{Yappendix}
 \def\Yomitfromtockeyword{Yomitfromtoc}
 %
+%
+% Definitions for @thischapter. These can be overridden in translation
+% files.
+\def\thischapterAppendix{%
+  \putwordAppendix{} \thischapternum: \thischaptername}
+
+\def\thischapterChapter{%
+  \putwordChapter{} \thischapternum: \thischaptername}
+%
+%
 \def\chapmacro#1#2#3{%
   \expandafter\ifx\thisenv\titlepage\else
     \checkenv{}% chapters, etc., should not start inside an environment.
@@ -6408,22 +6437,14 @@ might help (with 'rm \jobname.?? \jobname.??s')%
     \xdef\currentchapterdefs{%
       \gdef\noexpand\thischaptername{\the\toks0}%
       \gdef\noexpand\thischapternum{\appendixletter}%
-      % \noexpand\putwordAppendix avoids expanding indigestible
-      % commands in some of the translations.
-      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
-                                 \noexpand\thischapternum:
-                                 \noexpand\thischaptername}%
+      \let\noexpand\thischapter\noexpand\thischapterAppendix
     }%
   \else
     \toks0={#1}%
     \xdef\currentchapterdefs{%
       \gdef\noexpand\thischaptername{\the\toks0}%
       \gdef\noexpand\thischapternum{\the\chapno}%
-      % \noexpand\putwordChapter avoids expanding indigestible
-      % commands in some of the translations.
-      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
-                                 \noexpand\thischapternum:
-                                 \noexpand\thischaptername}%
+      \let\noexpand\thischapter\noexpand\thischapterChapter
     }%
   \fi\fi\fi
   %
@@ -6509,6 +6530,12 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 \def\subsubsecheadingskip{\subsecheadingskip}
 \def\subsubsecheadingbreak{\subsecheadingbreak}
 
+% Definition for @thissection. This can be overridden in translation
+% files.
+\def\thissectionDef{%
+  \putwordSection{} \thissectionnum: \thissectionname}
+%
+
 
 % Print any size, any type, section title.
 %
@@ -6550,11 +6577,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
         \xdef\currentsectiondefs{%
           \gdef\noexpand\thissectionname{\the\toks0}%
           \gdef\noexpand\thissectionnum{#4}%
-          % \noexpand\putwordSection avoids expanding indigestible
-          % commands in some of the translations.
-          \gdef\noexpand\thissection{\noexpand\putwordSection{}
-                                     \noexpand\thissectionnum:
-                                     \noexpand\thissectionname}%
+          \let\noexpand\thissection\noexpand\thissectionDef
         }%
       \fi
     \else
@@ -6563,11 +6586,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
         \xdef\currentsectiondefs{%
           \gdef\noexpand\thissectionname{\the\toks0}%
           \gdef\noexpand\thissectionnum{#4}%
-          % \noexpand\putwordSection avoids expanding indigestible
-          % commands in some of the translations.
-          \gdef\noexpand\thissection{\noexpand\putwordSection{}
-                                     \noexpand\thissectionnum:
-                                     \noexpand\thissectionname}%
+          \let\noexpand\thissection\noexpand\thissectionDef
         }%
       \fi
     \fi\fi\fi
@@ -7107,12 +7126,19 @@ might help (with 'rm \jobname.?? \jobname.??s')%
   \startsavinginserts
   \lskip=\leftskip \rskip=\rightskip
   \leftskip=0pt\rightskip=0pt % we want these *outside*.
+  %
+  % Set paragraph width for text inside cartouche.  There are
+  % left and right margins of 3pt each plus two vrules 0.4pt each.
   \cartinner=\hsize \advance\cartinner by-\lskip
   \advance\cartinner by-\rskip
+  \advance\cartinner by -6.8pt
+  %
+  % For drawing top and bottom of cartouche.  Each corner char
+  % adds 6pt and we take off the width of a rule to line up with the
+  % right boundary perfectly.
   \cartouter=\hsize
-  \advance\cartouter by 18.4pt % allow for 3pt kerns on either
-                               % side, and for 6pt waste from
-                               % each corner char, and rule thickness
+  \advance\cartouter by 11.6pt
+  %
   \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
   %
   % If this cartouche directly follows a sectioning command, we need the
@@ -8405,21 +8431,21 @@ might help (with 'rm \jobname.?? \jobname.??s')%
   \ifcase\paramno
   % 0
     \expandafter\xdef\csname\the\macname\endcsname{%
-      \bgroup
+      \begingroup
         \noexpand\spaceisspace
         \noexpand\endlineisspace
         \noexpand\expandafter % skip any whitespace after the macro name.
         \expandafter\noexpand\csname\the\macname @@@\endcsname}%
     \expandafter\xdef\csname\the\macname @@@\endcsname{%
-      \egroup
+      \endgroup
       \noexpand\scanmacro{\macrobody}}%
   \or % 1
     \expandafter\xdef\csname\the\macname\endcsname{%
-       \bgroup
+       \begingroup
        \noexpand\braceorline
        \expandafter\noexpand\csname\the\macname @@@\endcsname}%
     \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
-      \egroup
+      \endgroup
       \noexpand\scanmacro{\macrobody}%
       }%
   \else % at most 9
@@ -8430,7 +8456,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
       % @MACNAME@@@ removes braces surrounding the argument list.
       % @MACNAME@@@@ scans the macro body with arguments substituted.
       \expandafter\xdef\csname\the\macname\endcsname{%
-        \bgroup
+        \begingroup
         \noexpand\expandafter  % This \expandafter skip any spaces after the
         \noexpand\macroargctxt % macro before we change the catcode of space.
         \noexpand\expandafter
@@ -8444,7 +8470,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
       \expandafter\xdef
       \expandafter\expandafter
         \csname\the\macname @@@@\endcsname\paramlist{%
-          \egroup\noexpand\scanmacro{\macrobody}}%
+          \endgroup\noexpand\scanmacro{\macrobody}}%
     \else % 10 or more:
       \expandafter\xdef\csname\the\macname\endcsname{%
         \noexpand\getargvals@{\the\macname}{\argl}%
@@ -8887,11 +8913,10 @@ might help (with 'rm \jobname.?? \jobname.??s')%
       \xrefprintnodename\printedrefname
       %
       \ifflagclear{txiomitxrefpg}{%
-        % But we always want a comma and a space:
-        ,\space
-        %
+        % We always want a comma
+        ,%
         % output the `page 3'.
-        \turnoffactive \putwordpage\tie\refx{#1-pg}%
+        \turnoffactive \putpageref{#1}%
         % Add a , if xref followed by a space
         \if\space\noexpand\tokenafterxref ,%
         \else\ifx\     \tokenafterxref ,% @TAB
@@ -8907,6 +8932,10 @@ might help (with 'rm \jobname.?? \jobname.??s')%
   \endlink
 \endgroup}
 
+% can be overridden in translation files
+\def\putpageref#1{%
+  \space\putwordpage\tie\refx{#1-pg}}
+
 % Output a cross-manual xref to #1.  Used just above (twice).
 %
 % Only include the text "Section ``foo'' in" if the foo is neither
@@ -9338,13 +9367,6 @@ might help (with 'rm \jobname.?? \jobname.??s')%
   \makevalueexpandable
   \ifvmode
     \imagevmodetrue
-  \else \ifx\centersub\centerV
-    % for @center @image, we need a vbox so we can have our vertical space
-    \imagevmodetrue
-    \vbox\bgroup % vbox has better behavior than vtop here
-  \fi\fi
-  %
-  \ifimagevmode
     \medskip
     % Usually we'll have text after the image which will insert
     % \parskip glue, so insert it here too to equalize the space
@@ -9356,14 +9378,17 @@ might help (with 'rm \jobname.?? \jobname.??s')%
     \vtop\bgroup \kern -\capheight \vskip-\parskip
   \fi
   %
-  % Enter horizontal mode so that indentation from an enclosing
-  %  environment such as @quotation is respected.
-  % However, if we're at the top level, we don't want the
-  %  normal paragraph indentation.
-  % On the other hand, if we are in the case of @center @image, we don't
-  %  want to start a paragraph, which will create a hsize-width box and
-  %  eradicate the centering.
-  \ifx\centersub\centerV \else \imageindent \fi
+  \ifx\centersub\centerV
+    % For @center @image, enter vertical mode and add vertical space
+    % Enter an extra \parskip because @center doesn't add space itself.
+    \vbox\bgroup\vskip\parskip\medskip\vskip\parskip
+  \else
+    % Enter horizontal mode so that indentation from an enclosing
+    %  environment such as @quotation is respected.
+    % However, if we're at the top level, we don't want the
+    %  normal paragraph indentation.
+    \imageindent
+  \fi
   %
   % Output the image.
   \ifpdf
@@ -9388,7 +9413,10 @@ might help (with 'rm \jobname.?? \jobname.??s')%
     \egroup
     \medskip  % space after a standalone image
   \fi
-  \ifx\centersub\centerV \egroup \fi
+  \ifx\centersub\centerV % @center @image
+    \medskip
+    \egroup % close \vbox
+  \fi
 \endgroup}
 
 
@@ -10038,7 +10066,7 @@ directory should work if nowhere else does.}
   \gdefchar^^ae{\v Z}
   \gdefchar^^af{\dotaccent Z}
   %
-  \gdefchar^^b0{\textdegree{}}
+  \gdefchar^^b0{\textdegree}
   \gdefchar^^b1{\ogonek{a}}
   \gdefchar^^b2{\ogonek{ }}
   \gdefchar^^b3{\l}
@@ -10461,7 +10489,7 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}%
   \DeclareUnicodeCharacter{00AF}{\={ }}%
   %
-  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}%
+  \DeclareUnicodeCharacter{00B0}{\textdegree}
   \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}%
   \DeclareUnicodeCharacter{00B2}{$^2$}%
   \DeclareUnicodeCharacter{00B3}{$^3$}%
@@ -10965,7 +10993,7 @@ directory should work if nowhere else does.}
   %
   \DeclareUnicodeCharacter{20AC}{\euro{}}%
   %
-  \DeclareUnicodeCharacter{2192}{\expansion{}}%
+  \DeclareUnicodeCharacter{2192}{\arrow}%
   \DeclareUnicodeCharacter{21D2}{\result{}}%
   %
   % Mathematical symbols
@@ -11401,6 +11429,131 @@ directory should work if nowhere else does.}
 \hfuzz = 1pt
 
 
+\message{microtype,}
+
+% protrusion, from Thanh's protcode.tex.
+\def\mtsetprotcode#1{%
+  \rpcode#1`\!=200  \rpcode#1`\,=700  \rpcode#1`\-=700  \rpcode#1`\.=700
+  \rpcode#1`\;=500  \rpcode#1`\:=500  \rpcode#1`\?=200
+  \rpcode#1`\'=700
+  \rpcode#1 34=500  % ''
+  \rpcode#1 123=300 % --
+  \rpcode#1 124=200 % ---
+  \rpcode#1`\)=50   \rpcode#1`\A=50   \rpcode#1`\F=50   \rpcode#1`\K=50
+  \rpcode#1`\L=50   \rpcode#1`\T=50   \rpcode#1`\V=50   \rpcode#1`\W=50
+  \rpcode#1`\X=50   \rpcode#1`\Y=50   \rpcode#1`\k=50   \rpcode#1`\r=50
+  \rpcode#1`\t=50   \rpcode#1`\v=50   \rpcode#1`\w=50   \rpcode#1`\x=50
+  \rpcode#1`\y=50
+  %
+  \lpcode#1`\`=700
+  \lpcode#1 92=500  % ``
+  \lpcode#1`\(=50   \lpcode#1`\A=50   \lpcode#1`\J=50   \lpcode#1`\T=50
+  \lpcode#1`\V=50   \lpcode#1`\W=50   \lpcode#1`\X=50   \lpcode#1`\Y=50
+  \lpcode#1`\v=50   \lpcode#1`\w=50   \lpcode#1`\x=50   \lpcode#1`\y=0
+  %
+  \mtadjustprotcode#1\relax
+}
+
+\newcount\countC
+\def\mtadjustprotcode#1{%
+  \countC=0
+  \loop
+    \ifcase\lpcode#1\countC\else
+      \mtadjustcp\lpcode#1\countC
+    \fi
+    \ifcase\rpcode#1\countC\else
+      \mtadjustcp\rpcode#1\countC
+    \fi
+    \advance\countC 1
+  \ifnum\countC < 256 \repeat
+}
+
+\newcount\countB
+\def\mtadjustcp#1#2#3{%
+  \setbox\boxA=\hbox{%
+    \ifx#2\font\else#2\fi
+    \char#3}%
+  \countB=\wd\boxA
+  \multiply\countB #1#2#3\relax
+  \divide\countB \fontdimen6 #2\relax
+  #1#2#3=\countB\relax
+}
+
+\ifx\XeTeXrevision\thisisundefined
+  \ifx\luatexversion\thisisundefined
+    \ifpdf % pdfTeX
+      \mtsetprotcode\textrm
+      \def\mtfontexpand#1{\pdffontexpand#1 20 20 1 autoexpand\relax}
+    \else % TeX
+      \def\mtfontexpand#1{}
+    \fi
+  \else % LuaTeX
+    \mtsetprotcode\textrm
+    \def\mtfontexpand#1{\expandglyphsinfont#1 20 20 1\relax}
+  \fi
+\else % XeTeX
+  \mtsetprotcode\textrm
+  \def\mtfontexpand#1{}
+\fi
+
+
+\newif\ifmicrotype
+
+\def\microtypeON{%
+  \microtypetrue
+  %
+  \ifx\XeTeXrevision\thisisundefined
+    \ifx\luatexversion\thisisundefined
+      \ifpdf % pdfTeX
+        \pdfadjustspacing=2
+        \pdfprotrudechars=2
+      \fi
+    \else % LuaTeX
+      \adjustspacing=2
+      \protrudechars=2
+    \fi
+  \else % XeTeX
+    \XeTeXprotrudechars=2
+  \fi
+  %
+  \mtfontexpand\textrm
+  \mtfontexpand\textsl
+  \mtfontexpand\textbf
+}
+
+\def\microtypeOFF{%
+  \microtypefalse
+  %
+  \ifx\XeTeXrevision\thisisundefined
+    \ifx\luatexversion\thisisundefined
+      \ifpdf % pdfTeX
+        \pdfadjustspacing=0
+        \pdfprotrudechars=0
+      \fi
+    \else % LuaTeX
+      \adjustspacing=0
+      \protrudechars=0
+    \fi
+  \else % XeTeX
+    \XeTeXprotrudechars=0
+  \fi
+}
+
+\microtypeON
+
+\parseargdef\microtype{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\onword
+    \microtypeON
+  \else\ifx\txiarg\offword
+    \microtypeOFF
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @microtype option `\txiarg', must be on|off}%
+  \fi\fi
+}
+
+
 \message{and turning on texinfo input format.}
 
 \def^^L{\par} % remove \outer, so ^L can appear in an @comment
@@ -11420,23 +11573,6 @@ directory should work if nowhere else does.}
 \catcode`\|=\other \def\normalverticalbar{|}
 \catcode`\~=\other \def\normaltilde{~}
 
-% This macro is used to make a character print one way in \tt
-% (where it can probably be output as-is), and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise.  Since all the Computer Modern typewriter fonts have zero
-% interword stretch (and shrink), and it is reasonable to expect all
-% typewriter fonts to have this, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font.  Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts.  But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
 % Set catcodes for Texinfo file
 
 % Active characters for printing the wanted glyph.
diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index f638d4717a..d0d84d0a98 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -48,10 +48,9 @@ hell.  For some, auth-source may provide a workaround in the 
form of
 nonstandard server passwords.  See the "Connection" node in the manual
 under the subheading "Password".
 
-If you require SASL immediately, please participate in ERC development
-by volunteering to try (and give feedback on) edge features, one of
-which is SASL.  All known external offerings, past and present, are
-valiant efforts whose use is nevertheless discouraged.
+** Rudimentary SASL support has arrived.
+A new module, 'erc-sasl', now ships with ERC 5.5.  See the SASL
+section in the manual for details.
 
 ** Username argument for entry-point commands.
 Commands 'erc' and 'erc-tls' now accept a ':user' keyword argument,
@@ -125,6 +124,15 @@ The function 'erc-auto-query' was deemed too difficult to 
reason
 through and has thus been deprecated with no public replacement; it
 has also been removed from the client code path.
 
+The function 'erc-open' now delays running 'erc-mode-hook' members
+until most local session variables have been initialized (minus those
+connection-related ones in erc-backend).  'erc-open' also no longer
+calls 'erc-update-modules', although modules are still activated
+in an identical fashion.
+
+Some groundwork has been laid for what may become a new breed of ERC
+module, namely, "connection-local" (or simply "local") modules.
+
 A few internal variables have been introduced that could just as well
 have been made public, possibly as user options.  Likewise for some
 internal functions.  As always, users needing such functionality
diff --git a/etc/NEWS b/etc/NEWS
index 5a65896d69..85fdf005e3 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -371,11 +371,6 @@ node in the Eshell manual for more details.
 *** Eshell pipelines now only pipe stdout by default.
 To pipe both stdout and stderr, use the '|&' operator instead of '|'.
 
-*** New eshell built-in command 'doas'.
-The privilege-escalation program 'doas' has been added to the existing
-'su' and 'sudo' commands from the 'eshell-tramp' module.  The external
-command may still be accessed by using '*doas'.
-
 ---
 ** The 'delete-forward-char' command now deletes by grapheme clusters.
 This command is by default bound to the <Delete> function key
@@ -440,7 +435,7 @@ The user options 'url-gateway-rlogin-host',
 are also obsolete.
 
 ---
-** The user function 'url-irc-function' now takes a 'scheme' argument.
+** The user function 'url-irc-function' now takes a SCHEME argument.
 The user option 'url-irc-function' is now called with a sixth argument
 corresponding to the scheme portion of the target URL.  For example,
 this would be "ircs" for a URL like "ircs://irc.libera.chat".
@@ -1393,7 +1388,7 @@ the QWERTY Slovak keyboards.
 
 * Changes in Specialized Modes and Packages in Emacs 29.1
 
-** ecomplete
+** Ecomplete
 
 ---
 *** New commands 'ecomplete-edit' and 'ecomplete-remove'.
@@ -1415,7 +1410,8 @@ database stored on disk.
 *** New user option 'auth-source-pass-extra-query-keywords'.
 Whether to recognize additional keyword params, like ':max' and
 ':require', as well as accept lists of query terms paired with
-applicable keywords.
+applicable keywords.  This disables most known behavioral quirks
+unique to auth-source-pass, such as wildcard subdomain matching.
 
 ** Dired
 
@@ -1514,6 +1510,7 @@ It is enabled by default, but requires that the external 
"shellcheck"
 command is installed.
 
 ** CC Mode
+
 ---
 *** C++ Mode now supports most of the new features in the C++20 standard.
 
@@ -1597,32 +1594,32 @@ If no packages are marked, 'x' will install the package 
under point if
 it isn't already, and remove it if it is installed.
 
 +++
-*** New command 'package-vc-install'
+*** New command 'package-vc-install'.
 Packages can now be installed directly from source by cloning from a
 repository.
 
 +++
-*** New command 'package-vc-install-from-checkout'
+*** New command 'package-vc-install-from-checkout'.
 An existing checkout can now be loaded via package.el, by creating a
 symbolic link from the usual package directory to the checkout.
 
 +++
-*** New command 'package-vc-checkout'
+*** New command 'package-vc-checkout'.
 Used to fetch the source of a package by cloning a repository without
 activating the package.
 
 +++
-*** New command 'package-vc-prepare-patch'
+*** New command 'package-vc-prepare-patch'.
 This command allows you to send patches to package maintainers, for
 packages checked out using 'package-vc-install'.
 
 +++
-*** New command 'package-report-bug'
+*** New command 'package-report-bug'.
 This command helps you compose an email for sending bug reports to
 package maintainers.
 
 +++
-*** New user option 'package-vc-selected-packages'
+*** New user option 'package-vc-selected-packages'.
 By customizing this user option you can specify specific packages to
 install.
 
@@ -1757,9 +1754,10 @@ the second one will switch to the "*Completions*" buffer.
 
 ---
 *** New user option 'completion-auto-wrap'.
-When non-nil, the commands 'next-completion' and 'previous-completion'
-automatically wrap around on reaching the beginning or the end of
-the "*Completions*" buffer.
+When non-nil, the commands 'next-completion', 'previous-completion',
+'next-line-completion' and 'previous-line-completion' automatically
+wrap around on reaching the beginning or the end of the "*Completions*"
+buffer.
 
 +++
 *** New values for the 'completion-auto-help' user option.
@@ -1767,7 +1765,7 @@ There are two new values to control the way the 
"*Completions*" buffer
 behaves after pressing a 'TAB' if completion is not unique.  The value
 'always' updates or shows the "*Completions*" buffer after any attempt
 to complete.  The value 'visual' is like 'always', but only updates
-the completions if they are already visible.  The default value 't'
+the completions if they are already visible.  The default value t
 always hides the completion buffer after some completion is made.
 
 *** New commands to complete the minibuffer history.
@@ -2001,11 +1999,11 @@ It narrows to the current node.
 ** EUDC
 
 +++
-*** New user option 'eudc-ignore-options-file' that defaults to 'nil'
+*** New user option 'eudc-ignore-options-file' that defaults to nil.
 The 'eudc-ignore-options-file' user option can be configured to ignore
 the 'eudc-options-file' (typically "~/.emacs.d/eudc-options").  Most
-users should configure this to 't' and put EUDC configuration in the
-main Emacs initialization file (".emacs" or "~/.emacs.d/init.el").
+users should configure this to t and put EUDC configuration in the
+main Emacs initialization file ("~/.emacs" or "~/.emacs.d/init.el").
 
 +++
 *** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'.
@@ -2054,15 +2052,15 @@ of attributes to use for queries, and delivers more 
attributes in
 query results.
 
 +++
-*** New back-end for ecomplete
+*** New back-end for ecomplete.
 A new back-end for ecomplete allows information from that database to
 be queried by EUDC, too.  The attributes present in the EUDC query are
 used to select the entry type in the ecomplete database.
 
 +++
-*** New back-end for mailabbrev
+*** New back-end for mailabbrev.
 A new back-end for mailabbrev allows information from that database to
-be queried by EUDC, too.  The attributes email, name, and firstname
+be queried by EUDC, too.  The attributes 'email', 'name', and 'firstname'
 are supported only.
 
 ** EWW/SHR
@@ -2658,13 +2656,13 @@ customize this to "https" to always prefer HTTPS URLs.
 
 ---
 *** New user option 'browse-url-irc-function'.
-This option specifies a function for opening irc:// links.  It
+This option specifies a function for opening "irc://" links.  It
 defaults to the new function 'browse-url-irc'.
 
 ---
 *** New function 'browse-url-irc'.
-This multipurpose autoloaded function can be used for opening irc://
-and ircs:// URLS by any caller that passes a URL string as an initial
+This multipurpose autoloaded function can be used for opening "irc://"
+and "ircs://" URLS by any caller that passes a URL string as an initial
 arg.
 
 ---
@@ -2728,6 +2726,12 @@ example, you can now redirect both stdout and stderr via 
'&>' or
 duplicate one output handle to another via 'NEW-FD>&OLD-FD'.  For more
 information, see the "(eshell) Redirection" node in the Eshell manual.
 
++++
+*** New eshell built-in command 'doas'.
+The privilege-escalation program 'doas' has been added to the existing
+'su' and 'sudo' commands from the 'eshell-tramp' module.  The external
+command may still be accessed by using '*doas'.
+
 +++
 *** Double-quoting an Eshell expansion now treats the result as a single 
string.
 If an Eshell expansion like '$FOO' is surrounded by double quotes, the
@@ -2763,11 +2767,12 @@ error, and now expand to all directories recursively 
(following
 symlinks in the latter case).
 
 +++
-*** Lisp forms in Eshell now treat a 'nil' result as a failed exit status.
-When executing a command that looks like '(lisp form)', Eshell will
-set the exit status (available in the '$?' variable) to 2.  This
-allows commands like that to be used as conditionals.  To change this
-behavior, customize the new 'eshell-lisp-form-nil-is-failure' option.
+*** Lisp forms in Eshell now treat a nil result as a failed exit status.
+When executing a command that looks like '(lisp form)' and returns
+nil, Eshell will set the exit status (available in the '$?'
+variable) to 2.  This allows commands like that to be used in
+conditionals.  To change this behavior, customize the new
+'eshell-lisp-form-nil-is-failure' user option.
 
 ** Shell
 
@@ -2894,7 +2899,7 @@ remote host are shown.  Alternatively, the user option
 The old name is still available as an obsolete function alias.
 
 ---
-*** The url-irc library now understands ircs:// links.
+*** The url-irc library now understands "ircs://" links.
 
 ---
 *** New command 'world-clock-copy-time-as-kill' for 'M-x world-clock'.
@@ -2905,6 +2910,11 @@ It copies the current line into the kill ring.
 The new face 'abbrev-table-name' is used to display the abbrev table
 name.
 
+---
+*** New key binding 'O' in 'M-x list-buffer'.
+This key is now bound to 'Buffer-menu-view-other-window', which will
+view this line's buffer in View mode in another window.
+
 
 * New Modes and Packages in Emacs 29.1
 
@@ -2959,8 +2969,7 @@ Emacs buffers, like indentation and the like.  The new 
ert function
 This is a lightweight variant of 'js-mode' that is used by default
 when visiting JSON files.
 
-
-** New mode 'ts-mode'.
+** New mode 'typescript-ts-mode'.
 A major mode based on the tree-sitter library for editing programs
 in the TypeScript language.  It includes support for font-locking,
 indentation, and navigation.
@@ -2990,6 +2999,14 @@ A major mode based on the tree-sitter library for 
editing programs
 in the JSON language.  It includes support for font-locking,
 indentation, Imenu, which-func, and navigation.
 
+** New mode 'csharp-ts-mode'.
+A major mode based on the tree-sitter library for editing programs
+in the C# language.  It includes support for font-locking,
+indentation, Imenu, which-func, and navigation.
+
+** New mode 'csharp-mode'.
+A major mode based on CC Mode for editing programs in the C# language.
+
 
 * Incompatible Lisp Changes in Emacs 29.1
 
@@ -4301,22 +4318,17 @@ asynchronous processes.  The hitherto existing 
implementation has been
 moved to 'internal-default-signal-process'.
 
 +++
-** 'list-system-processes' now returns remote process IDs.
+** Some system information functions honor remote systems now.
+'list-system-processes' returns remote process IDs.
+'memory-info' returns memory information of remote systems.
+'process-attributes' expects a remote process ID.
 This happens only when the current buffer's 'default-directory' is
-remote.  In order to preserve the old behavior, apply
+remote.  In order to preserve the old behavior, bind
+'default-directory' to a local directory, like
 
     (let ((default-directory temporary-file-directory))
       (list-system-processes))
 
-+++
-** 'process-attributes' expects a remote process ID now.
-When current buffer's 'default-directory' is remote, the PID argument
-of 'process-attributes' is regarded as a remote process ID.  In order
-to preserve the old behavior, apply
-
-    (let ((default-directory temporary-file-directory))
-      (process-attributes pid))
-
 +++
 ** New functions 'take' and 'ntake'.
 '(take N LIST)' returns the first N elements of LIST; 'ntake' does
@@ -4403,11 +4415,3 @@ 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/>.
-
-
-Local variables:
-coding: utf-8
-mode: outline
-mode: emacs-news
-paragraph-separate: "[         ]"
-end:
diff --git a/etc/NEWS.24 b/etc/NEWS.24
index fab8a39b0e..31e48f9aca 100644
--- a/etc/NEWS.24
+++ b/etc/NEWS.24
@@ -704,7 +704,7 @@ related to that keyword.
 
 *** The format of 'archive-contents' files, generated by package
 repositories, has changed to allow a new (fifth) element in the data
-vectors, containing an associative list with extra properties.
+vectors, containing an association list with extra properties.
 (For example, 'describe-package' uses the ':url' extra property to
 display a "Homepage" header.)
 
@@ -951,7 +951,7 @@ Also the following files used by the now obsolete 
otodo-mode.el:
 
 *** the old version of todo-mode.el (renamed to otodo-mode.el).
 
-*** xesam.el (owing to the cancelation of the XESAM project).
+*** xesam.el (owing to the cancellation of the XESAM project).
 
 *** yow.el; use fortune.el or cookie1.el instead.
 
diff --git a/lib-src/ChangeLog.1 b/lib-src/ChangeLog.1
index 1a9767661a..0829f50a56 100644
--- a/lib-src/ChangeLog.1
+++ b/lib-src/ChangeLog.1
@@ -5643,7 +5643,7 @@
 1998-04-06  Andreas Schwab  <schwab@gnu.org>
 
        Silence -Wimplicit:
-       * movemail.c: Move cancelations up.  Include <stdlib.h> if
+       * movemail.c: Move cancellations up.  Include <stdlib.h> if
        available.
        * fakemail.c (_XOPEN_SOURCE): Define for declaration of cuserid.
        (parse_header): Explicitly declare return type.
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index ee124ea135..af488128ba 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -568,6 +568,7 @@ decode_options (int argc, char **argv)
         case 't':
          tty = true;
          create_frame = true;
+         reuse_frame = false;
           break;
 
         case 'c':
@@ -576,7 +577,8 @@ decode_options (int argc, char **argv)
 
        case 'r':
          create_frame = true;
-         reuse_frame = true;
+         if (!tty)
+           reuse_frame = true;
          break;
 
        case 'p':
@@ -689,7 +691,7 @@ The following OPTIONS are accepted:\n\
                        Set the parameters of a new frame\n\
 -e, --eval             Evaluate the FILE arguments as ELisp expressions\n\
 -n, --no-wait          Don't wait for the server to return\n\
--w, --timeout          Seconds to wait before timing out\n\
+-w, --timeout=SECONDS  Seconds to wait before timing out\n\
 -q, --quiet            Don't display messages on success\n\
 -u, --suppress-output   Don't display return values from the server\n\
 -d DISPLAY, --display=DISPLAY\n\
diff --git a/lib-src/etags.c b/lib-src/etags.c
index ed8a218464..d1d20858cd 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -375,7 +375,7 @@ static void just_read_file (FILE *);
 
 static language *get_language_from_langname (const char *);
 static void readline (linebuffer *, FILE *);
-static ptrdiff_t readline_internal (linebuffer *, FILE *, char const *);
+static ptrdiff_t readline_internal (linebuffer *, FILE *, char const *, const 
bool);
 static bool nocase_tail (const char *);
 static void get_tag (char *, char **);
 static void get_lispy_tag (char *);
@@ -399,7 +399,9 @@ static void free_fdesc (fdesc *);
 static void pfnote (char *, bool, char *, ptrdiff_t, intmax_t, intmax_t);
 static void invalidate_nodes (fdesc *, node **);
 static void put_entries (node *);
+static void cleanup_tags_file (char const * const, char const * const);
 
+static void do_move_file (const char *, const char *);
 static char *concat (const char *, const char *, const char *);
 static char *skip_spaces (char *);
 static char *skip_non_spaces (char *);
@@ -774,7 +776,7 @@ static const char Rust_help [] =
 
 /* 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 };
+  { "oak", "rkt", "sch", "scheme", "SCM", "scm", "SM", "sm", "ss", "t", NULL };
 static const char Scheme_help [] =
 "In Scheme code, tags include anything defined with 'def' or with a\n\
 construct whose name starts with 'def'.  They also include\n\
@@ -1332,7 +1334,7 @@ main (int argc, char **argv)
                  if (parsing_stdin)
                    fatal ("cannot parse standard input "
                           "AND read file names from it");
-                 while (readline_internal (&filename_lb, stdin, "-") > 0)
+                 while (readline_internal (&filename_lb, stdin, "-", false) > 
0)
                    process_file_name (filename_lb.buffer, lang);
                }
              else
@@ -1380,9 +1382,6 @@ main (int argc, char **argv)
   /* From here on, we are in (CTAGS && !cxref_style) */
   if (update)
     {
-      char *cmd =
-       xmalloc (strlen (tagfile) + whatlen_max +
-                sizeof "mv..OTAGS;grep -Fv '\t\t' OTAGS >;rm OTAGS");
       for (i = 0; i < current_arg; ++i)
        {
          switch (argbuffer[i].arg_type)
@@ -1393,17 +1392,8 @@ main (int argc, char **argv)
            default:
              continue;         /* the for loop */
            }
-         char *z = stpcpy (cmd, "mv ");
-         z = stpcpy (z, tagfile);
-         z = stpcpy (z, " OTAGS;grep -Fv '\t");
-         z = stpcpy (z, argbuffer[i].what);
-         z = stpcpy (z, "\t' OTAGS >");
-         z = stpcpy (z, tagfile);
-         strcpy (z, ";rm OTAGS");
-         if (system (cmd) != EXIT_SUCCESS)
-           fatal ("failed to execute shell command");
+          cleanup_tags_file (tagfile, argbuffer[i].what);
        }
-      free (cmd);
       append_to_tagfile = true;
     }
 
@@ -1448,6 +1438,51 @@ main (int argc, char **argv)
   return EXIT_SUCCESS;
 }
 
+/*
+ * Equivalent to: mv tags OTAGS;grep -Fv ' filename ' OTAGS >tags;rm OTAGS
+ */
+static void
+cleanup_tags_file (const char* tagfile, const char* match_file_name)
+{
+  FILE *otags_f = fopen ("OTAGS", "wb");
+  FILE *tag_f = fopen (tagfile, "rb");
+
+  if (otags_f == NULL)
+    pfatal ("OTAGS");
+
+  if (tag_f == NULL)
+    pfatal (tagfile);
+
+  int buf_len = strlen (match_file_name) + sizeof ("\t\t ") + 1;
+  char *buf = xmalloc (buf_len);
+  snprintf (buf, buf_len, "\t%s\t", match_file_name);
+
+  linebuffer line;
+  linebuffer_init (&line);
+  while (readline_internal (&line, tag_f, tagfile, true) > 0)
+    {
+      if (ferror (tag_f))
+        pfatal (tagfile);
+
+      if (strstr (line.buffer, buf) == NULL)
+        {
+          fprintf (otags_f, "%s\n", line.buffer);
+          if (ferror (tag_f))
+            pfatal (tagfile);
+        }
+    }
+  free (buf);
+  free (line.buffer);
+
+  if (fclose (otags_f) == EOF)
+    pfatal ("OTAGS");
+
+  if (fclose (tag_f) == EOF)
+    pfatal (tagfile);
+
+  do_move_file ("OTAGS", tagfile);
+  return;
+}
 
 /*
  * Return a compressor given the file name.  If EXTPTR is non-zero,
@@ -1831,7 +1866,7 @@ find_entries (FILE *inf)
 
   /* Else look for sharp-bang as the first two characters. */
   if (parser == NULL
-      && readline_internal (&lb, inf, infilename) > 0
+      && readline_internal (&lb, inf, infilename, false) > 0
       && lb.len >= 2
       && lb.buffer[0] == '#'
       && lb.buffer[1] == '!')
@@ -6878,7 +6913,7 @@ analyze_regex (char *regex_arg)
        if (regexfp == NULL)
          pfatal (regexfile);
        linebuffer_init (&regexbuf);
-       while (readline_internal (&regexbuf, regexfp, regexfile) > 0)
+       while (readline_internal (&regexbuf, regexfp, regexfile, false) > 0)
          analyze_regex (regexbuf.buffer);
        free (regexbuf.buffer);
        if (fclose (regexfp) != 0)
@@ -7226,11 +7261,13 @@ get_lispy_tag (register char *bp)
 
 /*
  * Read a line of text from `stream' into `lbp', excluding the
- * newline or CR-NL, if any.  Return the number of characters read from
- * `stream', which is the length of the line including the newline.
+ * newline or CR-NL (if `leave_cr` is false), if any.  Return the
+ * number of characters read from `stream', which is the length
+ * of the line including the newline.
  *
- * On DOS or Windows we do not count the CR character, if any before the
- * NL, in the returned length; this mirrors the behavior of Emacs on those
+ * On DOS or Windows, if `leave_cr` is false, we do not count the
+ * CR character, if any before the NL, in the returned length;
+ * this mirrors the behavior of Emacs on those
  * platforms (for text files, it translates CR-NL to NL as it reads in the
  * file).
  *
@@ -7238,7 +7275,8 @@ get_lispy_tag (register char *bp)
  * appended to `filebuf'.
  */
 static ptrdiff_t
-readline_internal (linebuffer *lbp, FILE *stream, char const *filename)
+readline_internal (linebuffer *lbp, FILE *stream, char const *filename,
+                  const bool leave_cr)
 {
   char *buffer = lbp->buffer;
   char *p = lbp->buffer;
@@ -7268,19 +7306,19 @@ readline_internal (linebuffer *lbp, FILE *stream, char 
const *filename)
          break;
        }
       if (c == '\n')
-       {
-         if (p > buffer && p[-1] == '\r')
-           {
-             p -= 1;
-             chars_deleted = 2;
-           }
-         else
-           {
-             chars_deleted = 1;
-           }
-         *p = '\0';
-         break;
-       }
+        {
+          if (!leave_cr && p > buffer && p[-1] == '\r')
+            {
+              p -= 1;
+              chars_deleted = 2;
+            }
+          else
+            {
+              chars_deleted = 1;
+            }
+          *p = '\0';
+          break;
+        }
       *p++ = c;
     }
   lbp->len = p - buffer;
@@ -7311,7 +7349,7 @@ static void
 readline (linebuffer *lbp, FILE *stream)
 {
   linecharno = charno;         /* update global char number of line start */
-  ptrdiff_t result = readline_internal (lbp, stream, infilename);
+  ptrdiff_t result = readline_internal (lbp, stream, infilename, false);
   lineno += 1;                 /* increment global line number */
   charno += result;            /* increment global char number */
 
@@ -7669,6 +7707,46 @@ etags_mktmp (void)
   return templt;
 }
 
+static void
+do_move_file(const char *src_file, const char *dst_file)
+{
+  if (rename (src_file, dst_file) == 0)
+    return;
+
+  FILE *src_f = fopen (src_file, "rb");
+  FILE *dst_f = fopen (dst_file, "wb");
+
+  if (src_f == NULL)
+    pfatal (src_file);
+
+  if (dst_f == NULL)
+    pfatal (dst_file);
+
+  int c;
+  while ((c = fgetc (src_f)) != EOF)
+    {
+      if (ferror (src_f))
+        pfatal (src_file);
+
+      if (ferror (dst_f))
+        pfatal (dst_file);
+
+      if (fputc (c, dst_f) == EOF)
+        pfatal ("cannot write");
+    }
+
+  if (fclose (src_f) == EOF)
+    pfatal (src_file);
+
+  if (fclose (dst_f) == EOF)
+    pfatal (dst_file);
+
+  if (unlink (src_file) == -1)
+    pfatal ("unlink error");
+
+  return;
+}
+
 /* Return a newly allocated string containing the file name of FILE
    relative to the absolute directory DIR (which should end with a slash). */
 static char *
diff --git a/lib-src/ntlib.c b/lib-src/ntlib.c
index ee21abc723..e0d5f0c6b8 100644
--- a/lib-src/ntlib.c
+++ b/lib-src/ntlib.c
@@ -138,15 +138,6 @@ getlogin (void)
   return NULL;
 }
 
-char *
-cuserid (char * s)
-{
-  char * name = getlogin ();
-  if (s)
-    return strcpy (s, name ? name : "");
-  return name;
-}
-
 unsigned
 getuid (void)
 {
diff --git a/lib-src/ntlib.h b/lib-src/ntlib.h
index 2cd2b1d107..ff85beeaa6 100644
--- a/lib-src/ntlib.h
+++ b/lib-src/ntlib.h
@@ -33,7 +33,6 @@ unsigned sleep (unsigned seconds);
 char *getwd (char *dir);
 int getppid (void);
 char * getlogin (void);
-char * cuserid (char * s);
 unsigned getegid (void);
 unsigned getgid (void);
 int setuid (unsigned uid);
diff --git a/lib/canonicalize-lgpl.c b/lib/canonicalize-lgpl.c
index 8c3d7f7cf8..870a663505 100644
--- a/lib/canonicalize-lgpl.c
+++ b/lib/canonicalize-lgpl.c
@@ -47,6 +47,7 @@
 #else
 # define __canonicalize_file_name canonicalize_file_name
 # define __realpath realpath
+# define __strdup strdup
 # include "pathmax.h"
 # define __faccessat faccessat
 # if defined _WIN32 && !defined __CYGWIN__
@@ -179,27 +180,16 @@ get_path_max (void)
   return path_max < 0 ? 1024 : path_max <= IDX_MAX ? path_max : IDX_MAX;
 }
 
-/* Act like __realpath (see below), with an additional argument
-   rname_buf that can be used as temporary storage.
-
-   If GCC_LINT is defined, do not inline this function with GCC 10.1
-   and later, to avoid creating a pointer to the stack that GCC
-   -Wreturn-local-addr incorrectly complains about.  See:
-   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93644
-   Although the noinline attribute can hurt performance a bit, no better way
-   to pacify GCC is known; even an explicit #pragma does not pacify GCC.
-   When the GCC bug is fixed this workaround should be limited to the
-   broken GCC versions.  */
-# if __GNUC_PREREQ (10, 1)
-#  if defined GCC_LINT || defined lint
-__attribute__ ((__noinline__))
-#  elif __OPTIMIZE__ && !__NO_INLINE__
-#   define GCC_BOGUS_WRETURN_LOCAL_ADDR
-#  endif
-# endif
+/* Scratch buffers used by realpath_stk and managed by __realpath.  */
+struct realpath_bufs
+{
+  struct scratch_buffer rname;
+  struct scratch_buffer extra;
+  struct scratch_buffer link;
+};
+
 static char *
-realpath_stk (const char *name, char *resolved,
-              struct scratch_buffer *rname_buf)
+realpath_stk (const char *name, char *resolved, struct realpath_bufs *bufs)
 {
   char *dest;
   char const *start;
@@ -224,12 +214,7 @@ realpath_stk (const char *name, char *resolved,
       return NULL;
     }
 
-  struct scratch_buffer extra_buffer, link_buffer;
-  scratch_buffer_init (&extra_buffer);
-  scratch_buffer_init (&link_buffer);
-  scratch_buffer_init (rname_buf);
-  char *rname_on_stack = rname_buf->data;
-  char *rname = rname_on_stack;
+  char *rname = bufs->rname.data;
   bool end_in_extra_buffer = false;
   bool failed = true;
 
@@ -239,16 +224,16 @@ realpath_stk (const char *name, char *resolved,
 
   if (!IS_ABSOLUTE_FILE_NAME (name))
     {
-      while (!__getcwd (rname, rname_buf->length))
+      while (!__getcwd (bufs->rname.data, bufs->rname.length))
         {
           if (errno != ERANGE)
             {
               dest = rname;
               goto error;
             }
-          if (!scratch_buffer_grow (rname_buf))
-            goto error_nomem;
-          rname = rname_buf->data;
+          if (!scratch_buffer_grow (&bufs->rname))
+            return NULL;
+          rname = bufs->rname.data;
         }
       dest = __rawmemchr (rname, '\0');
       start = name;
@@ -302,13 +287,13 @@ realpath_stk (const char *name, char *resolved,
           if (!ISSLASH (dest[-1]))
             *dest++ = '/';
 
-          while (rname + rname_buf->length - dest
+          while (rname + bufs->rname.length - dest
                  < startlen + sizeof dir_suffix)
             {
               idx_t dest_offset = dest - rname;
-              if (!scratch_buffer_grow_preserve (rname_buf))
-                goto error_nomem;
-              rname = rname_buf->data;
+              if (!scratch_buffer_grow_preserve (&bufs->rname))
+                return NULL;
+              rname = bufs->rname.data;
               dest = rname + dest_offset;
             }
 
@@ -319,13 +304,13 @@ realpath_stk (const char *name, char *resolved,
           ssize_t n;
           while (true)
             {
-              buf = link_buffer.data;
-              idx_t bufsize = link_buffer.length;
+              buf = bufs->link.data;
+              idx_t bufsize = bufs->link.length;
               n = __readlink (rname, buf, bufsize - 1);
               if (n < bufsize - 1)
                 break;
-              if (!scratch_buffer_grow (&link_buffer))
-                goto error_nomem;
+              if (!scratch_buffer_grow (&bufs->link))
+                return NULL;
             }
           if (0 <= n)
             {
@@ -337,7 +322,7 @@ realpath_stk (const char *name, char *resolved,
 
               buf[n] = '\0';
 
-              char *extra_buf = extra_buffer.data;
+              char *extra_buf = bufs->extra.data;
               idx_t end_idx IF_LINT (= 0);
               if (end_in_extra_buffer)
                 end_idx = end - extra_buf;
@@ -345,13 +330,13 @@ realpath_stk (const char *name, char *resolved,
               if (INT_ADD_OVERFLOW (len, n))
                 {
                   __set_errno (ENOMEM);
-                  goto error_nomem;
+                  return NULL;
                 }
-              while (extra_buffer.length <= len + n)
+              while (bufs->extra.length <= len + n)
                 {
-                  if (!scratch_buffer_grow_preserve (&extra_buffer))
-                    goto error_nomem;
-                  extra_buf = extra_buffer.data;
+                  if (!scratch_buffer_grow_preserve (&bufs->extra))
+                    return NULL;
+                  extra_buf = bufs->extra.data;
                 }
               if (end_in_extra_buffer)
                 end = extra_buf + end_idx;
@@ -403,20 +388,30 @@ realpath_stk (const char *name, char *resolved,
 
 error:
   *dest++ = '\0';
-  if (resolved != NULL && dest - rname <= get_path_max ())
-    rname = strcpy (resolved, rname);
-
-error_nomem:
-  scratch_buffer_free (&extra_buffer);
-  scratch_buffer_free (&link_buffer);
-
-  if (failed || rname == resolved)
+  if (resolved != NULL)
+    {
+      /* Copy the full result on success or partial result if failure was due
+         to the path not existing or not being accessible.  */
+      if ((!failed || errno == ENOENT || errno == EACCES)
+          && dest - rname <= get_path_max ())
+        {
+          strcpy (resolved, rname);
+          if (failed)
+            return NULL;
+          else
+            return resolved;
+        }
+      if (!failed)
+        __set_errno (ENAMETOOLONG);
+      return NULL;
+    }
+  else
     {
-      scratch_buffer_free (rname_buf);
-      return failed ? NULL : resolved;
+      if (failed)
+        return NULL;
+      else
+        return __strdup (bufs->rname.data);
     }
-
-  return scratch_buffer_dupfree (rname_buf, dest - rname);
 }
 
 /* Return the canonical absolute name of file NAME.  A canonical name
@@ -433,12 +428,15 @@ error_nomem:
 char *
 __realpath (const char *name, char *resolved)
 {
-  #ifdef GCC_BOGUS_WRETURN_LOCAL_ADDR
-   #warning "GCC might issue a bogus -Wreturn-local-addr warning here."
-   #warning "See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93644>."
-  #endif
-  struct scratch_buffer rname_buffer;
-  return realpath_stk (name, resolved, &rname_buffer);
+  struct realpath_bufs bufs;
+  scratch_buffer_init (&bufs.rname);
+  scratch_buffer_init (&bufs.extra);
+  scratch_buffer_init (&bufs.link);
+  char *result = realpath_stk (name, resolved, &bufs);
+  scratch_buffer_free (&bufs.link);
+  scratch_buffer_free (&bufs.extra);
+  scratch_buffer_free (&bufs.rname);
+  return result;
 }
 libc_hidden_def (__realpath)
 versioned_symbol (libc, __realpath, realpath, GLIBC_2_3);
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index 04644bdabe..9af8fd0c57 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -222,6 +222,8 @@ DEFS = @DEFS@
 DESLIB = @DESLIB@
 DOCMISC_W32 = @DOCMISC_W32@
 DUMPING = @DUMPING@
+DYNAMIC_LIB_SECONDARY_SUFFIX = @DYNAMIC_LIB_SECONDARY_SUFFIX@
+DYNAMIC_LIB_SUFFIX = @DYNAMIC_LIB_SUFFIX@
 DYNLIB_OBJ = @DYNLIB_OBJ@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -953,6 +955,7 @@ MKDIR_P = @MKDIR_P@
 MODULES_OBJ = @MODULES_OBJ@
 MODULES_SECONDARY_SUFFIX = @MODULES_SECONDARY_SUFFIX@
 MODULES_SUFFIX = @MODULES_SUFFIX@
+NATIVE_COMPILATION_AOT = @NATIVE_COMPILATION_AOT@
 NEXT_ASSERT_H = @NEXT_ASSERT_H@
 NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@
 NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@
@@ -1218,6 +1221,8 @@ TERMCAP_OBJ = @TERMCAP_OBJ@
 TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
 TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@
 TOOLKIT_LIBW = @TOOLKIT_LIBW@
+TREE_SITTER_CFLAGS = @TREE_SITTER_CFLAGS@
+TREE_SITTER_LIBS = @TREE_SITTER_LIBS@
 UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
 UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
 UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
@@ -1309,23 +1314,22 @@ 
gl_GNULIB_ENABLED_5264294aa0a5557541b53c8c741f7f31_CONDITION = @gl_GNULIB_ENABLE
 gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_CONDITION = 
@gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c_CONDITION@
 gl_GNULIB_ENABLED_61bcaca76b3e6f9ae55d57a1c3193bc4_CONDITION = 
@gl_GNULIB_ENABLED_61bcaca76b3e6f9ae55d57a1c3193bc4_CONDITION@
 gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_CONDITION = 
@gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec_CONDITION@
+gl_GNULIB_ENABLED_8444034ea779b88768865bb60b4fb8c9_CONDITION = 
@gl_GNULIB_ENABLED_8444034ea779b88768865bb60b4fb8c9_CONDITION@
 gl_GNULIB_ENABLED_925677f0343de64b89a9f0c790b4104c_CONDITION = 
@gl_GNULIB_ENABLED_925677f0343de64b89a9f0c790b4104c_CONDITION@
 gl_GNULIB_ENABLED_a9786850e999ae65a836a6041e8e5ed1_CONDITION = 
@gl_GNULIB_ENABLED_a9786850e999ae65a836a6041e8e5ed1_CONDITION@
 gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36_CONDITION = 
@gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36_CONDITION@
 gl_GNULIB_ENABLED_cloexec_CONDITION = @gl_GNULIB_ENABLED_cloexec_CONDITION@
 gl_GNULIB_ENABLED_d3b2383720ee0e541357aa2aac598e2b_CONDITION = 
@gl_GNULIB_ENABLED_d3b2383720ee0e541357aa2aac598e2b_CONDITION@
 gl_GNULIB_ENABLED_dirfd_CONDITION = @gl_GNULIB_ENABLED_dirfd_CONDITION@
-gl_GNULIB_ENABLED_dynarray_CONDITION = @gl_GNULIB_ENABLED_dynarray_CONDITION@
 gl_GNULIB_ENABLED_e80bf6f757095d2e5fc94dafb8f8fc8b_CONDITION = 
@gl_GNULIB_ENABLED_e80bf6f757095d2e5fc94dafb8f8fc8b_CONDITION@
 gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866_CONDITION = 
@gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866_CONDITION@
 gl_GNULIB_ENABLED_euidaccess_CONDITION = 
@gl_GNULIB_ENABLED_euidaccess_CONDITION@
+gl_GNULIB_ENABLED_fd38c7e463b54744b77b98aeafb4fa7c_CONDITION = 
@gl_GNULIB_ENABLED_fd38c7e463b54744b77b98aeafb4fa7c_CONDITION@
 gl_GNULIB_ENABLED_getdtablesize_CONDITION = 
@gl_GNULIB_ENABLED_getdtablesize_CONDITION@
 gl_GNULIB_ENABLED_getgroups_CONDITION = @gl_GNULIB_ENABLED_getgroups_CONDITION@
 gl_GNULIB_ENABLED_lchmod_CONDITION = @gl_GNULIB_ENABLED_lchmod_CONDITION@
 gl_GNULIB_ENABLED_open_CONDITION = @gl_GNULIB_ENABLED_open_CONDITION@
 gl_GNULIB_ENABLED_rawmemchr_CONDITION = @gl_GNULIB_ENABLED_rawmemchr_CONDITION@
-gl_GNULIB_ENABLED_scratch_buffer_CONDITION = 
@gl_GNULIB_ENABLED_scratch_buffer_CONDITION@
-gl_GNULIB_ENABLED_stdckdint_CONDITION = @gl_GNULIB_ENABLED_stdckdint_CONDITION@
 gl_GNULIB_ENABLED_strtoll_CONDITION = @gl_GNULIB_ENABLED_strtoll_CONDITION@
 gl_GNULIB_ENABLED_utimens_CONDITION = @gl_GNULIB_ENABLED_utimens_CONDITION@
 gl_LIBOBJDEPS = @gl_LIBOBJDEPS@
@@ -1770,43 +1774,6 @@ endif
 endif
 ## end   gnulib module dup2
 
-## begin gnulib module dynarray
-ifeq (,$(OMIT_GNULIB_MODULE_dynarray))
-
-ifneq (,$(gl_GNULIB_ENABLED_dynarray_CONDITION))
-BUILT_SOURCES += malloc/dynarray.gl.h malloc/dynarray-skeleton.gl.h
-
-malloc/dynarray.gl.h: malloc/dynarray.h
-       $(AM_V_GEN)$(MKDIR_P) 'malloc'
-       $(AM_V_at)$(SED_HEADER_STDOUT) \
-         -e '/libc_hidden_proto/d' \
-         $(srcdir)/malloc/dynarray.h > $@-t
-       $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += malloc/dynarray.gl.h malloc/dynarray.gl.h-t
-
-malloc/dynarray-skeleton.gl.h: malloc/dynarray-skeleton.c
-       $(AM_V_GEN)$(MKDIR_P) 'malloc'
-       $(AM_V_at)$(SED_HEADER_STDOUT) \
-             -e 's|<malloc/dynarray\.h>|<malloc/dynarray.gl.h>|g' \
-             -e 's|__attribute_maybe_unused__|_GL_ATTRIBUTE_MAYBE_UNUSED|g' \
-             -e 's|__attribute_nonnull__|_GL_ATTRIBUTE_NONNULL|g' \
-             -e 's|__attribute_warn_unused_result__|_GL_ATTRIBUTE_NODISCARD|g' 
\
-             -e 's|__glibc_likely|_GL_LIKELY|g' \
-             -e 's|__glibc_unlikely|_GL_UNLIKELY|g' \
-             $(srcdir)/malloc/dynarray-skeleton.c > $@-t
-       $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += malloc/dynarray-skeleton.gl.h 
malloc/dynarray-skeleton.gl.h-t
-
-libgnu_a_SOURCES += malloc/dynarray_at_failure.c                 
malloc/dynarray_emplace_enlarge.c                 malloc/dynarray_finalize.c    
             malloc/dynarray_resize.c                 
malloc/dynarray_resize_clear.c
-
-endif
-EXTRA_DIST += dynarray.h malloc/dynarray-skeleton.c malloc/dynarray.h
-
-EXTRA_libgnu_a_SOURCES += malloc/dynarray-skeleton.c
-
-endif
-## end   gnulib module dynarray
-
 ## begin gnulib module eloop-threshold
 ifeq (,$(OMIT_GNULIB_MODULE_eloop-threshold))
 
@@ -2251,6 +2218,68 @@ EXTRA_DIST += $(top_srcdir)/build-aux/gitlog-to-changelog
 endif
 ## end   gnulib module gitlog-to-changelog
 
+## begin gnulib module glibc-internal/dynarray
+ifeq (,$(OMIT_GNULIB_MODULE_glibc-internal/dynarray))
+
+ifneq (,$(gl_GNULIB_ENABLED_fd38c7e463b54744b77b98aeafb4fa7c_CONDITION))
+BUILT_SOURCES += malloc/dynarray.gl.h malloc/dynarray-skeleton.gl.h
+
+malloc/dynarray.gl.h: malloc/dynarray.h
+       $(AM_V_GEN)$(MKDIR_P) 'malloc'
+       $(AM_V_at)$(SED_HEADER_STDOUT) \
+         -e '/libc_hidden_proto/d' \
+         $(srcdir)/malloc/dynarray.h > $@-t
+       $(AM_V_at)mv $@-t $@
+MOSTLYCLEANFILES += malloc/dynarray.gl.h malloc/dynarray.gl.h-t
+
+malloc/dynarray-skeleton.gl.h: malloc/dynarray-skeleton.c
+       $(AM_V_GEN)$(MKDIR_P) 'malloc'
+       $(AM_V_at)$(SED_HEADER_STDOUT) \
+             -e 's|<malloc/dynarray\.h>|<malloc/dynarray.gl.h>|g' \
+             -e 's|__attribute_maybe_unused__|_GL_ATTRIBUTE_MAYBE_UNUSED|g' \
+             -e 's|__attribute_nonnull__|_GL_ATTRIBUTE_NONNULL|g' \
+             -e 's|__attribute_warn_unused_result__|_GL_ATTRIBUTE_NODISCARD|g' 
\
+             -e 's|__glibc_likely|_GL_LIKELY|g' \
+             -e 's|__glibc_unlikely|_GL_UNLIKELY|g' \
+             $(srcdir)/malloc/dynarray-skeleton.c > $@-t
+       $(AM_V_at)mv $@-t $@
+MOSTLYCLEANFILES += malloc/dynarray-skeleton.gl.h 
malloc/dynarray-skeleton.gl.h-t
+
+libgnu_a_SOURCES += malloc/dynarray_at_failure.c                 
malloc/dynarray_emplace_enlarge.c                 malloc/dynarray_finalize.c    
             malloc/dynarray_resize.c                 
malloc/dynarray_resize_clear.c
+
+endif
+EXTRA_DIST += dynarray.h malloc/dynarray-skeleton.c malloc/dynarray.h
+
+EXTRA_libgnu_a_SOURCES += malloc/dynarray-skeleton.c
+
+endif
+## end   gnulib module glibc-internal/dynarray
+
+## begin gnulib module glibc-internal/scratch_buffer
+ifeq (,$(OMIT_GNULIB_MODULE_glibc-internal/scratch_buffer))
+
+ifneq (,$(gl_GNULIB_ENABLED_8444034ea779b88768865bb60b4fb8c9_CONDITION))
+BUILT_SOURCES += malloc/scratch_buffer.gl.h
+
+malloc/scratch_buffer.gl.h: malloc/scratch_buffer.h
+       $(AM_V_GEN)$(MKDIR_P) 'malloc'
+       $(AM_V_at)$(SED_HEADER_STDOUT) \
+             -e 's|__always_inline|inline _GL_ATTRIBUTE_ALWAYS_INLINE|g' \
+             -e 's|__glibc_likely|_GL_LIKELY|g' \
+             -e 's|__glibc_unlikely|_GL_UNLIKELY|g' \
+             -e '/libc_hidden_proto/d' \
+             $(srcdir)/malloc/scratch_buffer.h > $@-t
+       $(AM_V_at)mv $@-t $@
+MOSTLYCLEANFILES += malloc/scratch_buffer.gl.h malloc/scratch_buffer.gl.h-t
+
+libgnu_a_SOURCES += malloc/scratch_buffer_grow.c                 
malloc/scratch_buffer_grow_preserve.c                 
malloc/scratch_buffer_set_array_size.c
+
+endif
+EXTRA_DIST += malloc/scratch_buffer.h scratch_buffer.h
+
+endif
+## end   gnulib module glibc-internal/scratch_buffer
+
 ## begin gnulib module group-member
 ifeq (,$(OMIT_GNULIB_MODULE_group-member))
 
@@ -2736,31 +2765,6 @@ EXTRA_DIST += root-uid.h
 endif
 ## end   gnulib module root-uid
 
-## begin gnulib module scratch_buffer
-ifeq (,$(OMIT_GNULIB_MODULE_scratch_buffer))
-
-ifneq (,$(gl_GNULIB_ENABLED_scratch_buffer_CONDITION))
-BUILT_SOURCES += malloc/scratch_buffer.gl.h
-
-malloc/scratch_buffer.gl.h: malloc/scratch_buffer.h
-       $(AM_V_GEN)$(MKDIR_P) 'malloc'
-       $(AM_V_at)$(SED_HEADER_STDOUT) \
-             -e 's|__always_inline|inline _GL_ATTRIBUTE_ALWAYS_INLINE|g' \
-             -e 's|__glibc_likely|_GL_LIKELY|g' \
-             -e 's|__glibc_unlikely|_GL_UNLIKELY|g' \
-             -e '/libc_hidden_proto/d' \
-             $(srcdir)/malloc/scratch_buffer.h > $@-t
-       $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += malloc/scratch_buffer.gl.h malloc/scratch_buffer.gl.h-t
-
-libgnu_a_SOURCES += malloc/scratch_buffer_dupfree.c                 
malloc/scratch_buffer_grow.c                 
malloc/scratch_buffer_grow_preserve.c                 
malloc/scratch_buffer_set_array_size.c
-
-endif
-EXTRA_DIST += malloc/scratch_buffer.h scratch_buffer.h
-
-endif
-## end   gnulib module scratch_buffer
-
 ## begin gnulib module sig2str
 ifeq (,$(OMIT_GNULIB_MODULE_sig2str))
 
@@ -2916,7 +2920,6 @@ endif
 ## begin gnulib module stdckdint
 ifeq (,$(OMIT_GNULIB_MODULE_stdckdint))
 
-ifneq (,$(gl_GNULIB_ENABLED_stdckdint_CONDITION))
 BUILT_SOURCES += $(STDCKDINT_H)
 
 # We need the following in order to create <stdckdint.h> when the system
@@ -2932,7 +2935,6 @@ stdckdint.h: $(top_builddir)/config.status
 endif
 MOSTLYCLEANFILES += stdckdint.h stdckdint.h-t
 
-endif
 EXTRA_DIST += intprops-internal.h stdckdint.in.h
 
 endif
diff --git a/lib/malloc/scratch_buffer.h b/lib/malloc/scratch_buffer.h
index e4c5c8a85d..a9bdcadec2 100644
--- a/lib/malloc/scratch_buffer.h
+++ b/lib/malloc/scratch_buffer.h
@@ -132,20 +132,4 @@ scratch_buffer_set_array_size (struct scratch_buffer 
*buffer,
                         (buffer, nelem, size));
 }
 
-/* Return a copy of *BUFFER's first SIZE bytes as a heap-allocated block,
-   deallocating *BUFFER if it was heap-allocated.  SIZE must be at
-   most *BUFFER's size.  Return NULL (setting errno) on memory
-   exhaustion.  */
-void *__libc_scratch_buffer_dupfree (struct scratch_buffer *buffer,
-                                     size_t size);
-libc_hidden_proto (__libc_scratch_buffer_dupfree)
-
-/* Alias for __libc_scratch_dupfree.  */
-static __always_inline void *
-scratch_buffer_dupfree (struct scratch_buffer *buffer, size_t size)
-{
-  void *r = __libc_scratch_buffer_dupfree (buffer, size);
-  return __glibc_likely (r != NULL) ? r : NULL;
-}
-
 #endif /* _SCRATCH_BUFFER_H */
diff --git a/lib/scratch_buffer.h b/lib/scratch_buffer.h
index f4fe5e8d34..c0aa21630f 100644
--- a/lib/scratch_buffer.h
+++ b/lib/scratch_buffer.h
@@ -98,20 +98,10 @@ extern bool scratch_buffer_set_array_size (struct 
scratch_buffer *buffer,
                                            size_t nelem, size_t size);
 #endif
 
-/* Return a copy of *BUFFER's first SIZE bytes as a heap-allocated block,
-   deallocating *BUFFER if it was heap-allocated.  SIZE must be at
-   most *BUFFER's size.  Return NULL (setting errno) on memory
-   exhaustion.  */
-#if 0
-extern void *scratch_buffer_dupfree (struct scratch_buffer *buffer,
-                                     size_t size);
-#endif
-
 
 /* The implementation is imported from glibc.  */
 
 /* Avoid possible conflicts with symbols exported by the GNU libc.  */
-#define __libc_scratch_buffer_dupfree gl_scratch_buffer_dupfree
 #define __libc_scratch_buffer_grow gl_scratch_buffer_grow
 #define __libc_scratch_buffer_grow_preserve gl_scratch_buffer_grow_preserve
 #define __libc_scratch_buffer_set_array_size gl_scratch_buffer_set_array_size
diff --git a/lib/stat-time.h b/lib/stat-time.h
index 6b0088e328..b661196ea5 100644
--- a/lib/stat-time.h
+++ b/lib/stat-time.h
@@ -20,9 +20,8 @@
 #ifndef STAT_TIME_H
 #define STAT_TIME_H 1
 
-#include "intprops.h"
-
 #include <errno.h>
+#include <stdckdint.h>
 #include <stddef.h>
 #include <sys/stat.h>
 #include <time.h>
@@ -232,7 +231,7 @@ stat_time_normalize (int result, _GL_UNUSED struct stat *st)
           /* Overflow is possible, as Solaris 11 stat can yield
              tv_sec == TYPE_MINIMUM (time_t) && tv_nsec == -1000000000.
              INT_ADD_WRAPV is OK, since time_t is signed on Solaris.  */
-          if (INT_ADD_WRAPV (q, ts->tv_sec, &ts->tv_sec))
+          if (ckd_add (&ts->tv_sec, q, ts->tv_sec))
             {
               errno = EOVERFLOW;
               return -1;
diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el
index dc274843e1..74d3808448 100644
--- a/lisp/auth-source-pass.el
+++ b/lisp/auth-source-pass.el
@@ -55,12 +55,13 @@
   :type 'string
   :version "27.1")
 
-(defcustom auth-source-pass-extra-query-keywords t
+(defcustom auth-source-pass-extra-query-keywords nil
   "Whether to consider additional keywords when performing a query.
 Specifically, when the value is t, recognize the `:max' and
 `:require' keywords and accept lists of query parameters for
-certain keywords, such as `:host' and `:user'.  Also, wrap all
-returned secrets in a function and forgo any further results
+certain keywords, such as `:host' and `:user'.  Beyond that, wrap
+all returned secrets in a function and don't bother considering
+subdomains when matching hosts.  Also, forgo any further results
 filtering unless given an applicable `:require' argument.  When
 this option is nil, do none of that, and enact the narrowing
 behavior described toward the bottom of the Info node `(auth) The
@@ -110,7 +111,7 @@ HOSTS can be a string or a list of strings."
 (defun auth-source-pass--match-regexp (s)
   (rx-to-string ; autoloaded
    `(: (or bot "/")
-       (or (: (? (group-n 20 (+ (not (in ?\  ?/ ?@ ,s)))) "@")
+       (or (: (? (group-n 20 (+ (not (in ?\  ?/ ,s)))) "@")
               (group-n 10 (+ (not (in ?\  ?/ ?@ ,s))))
               (? ,s (group-n 30 (+ (not (in ?\  ?/ ,s))))))
            (: (group-n 11 (+ (not (in ?\  ?/ ?@ ,s))))
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index aa5f70edf2..588fe599a4 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -24,8 +24,8 @@
 ;;; Commentary:
 
 ;; The Buffer Menu is used to view, edit, delete, or change attributes
-;; of buffers.  The entry points are C-x C-b (`list-buffers') and
-;; M-x buffer-menu.
+;; of buffers.  The entry points are `C-x C-b' (`list-buffers') and
+;; `M-x buffer-menu'.
 
 ;;; Code:
 
@@ -135,6 +135,7 @@ then the buffer will be displayed in the buffer list.")
   "%"           #'Buffer-menu-toggle-read-only
   "b"           #'Buffer-menu-bury
   "V"           #'Buffer-menu-view
+  "O"           #'Buffer-menu-view-other-window
   "T"           #'Buffer-menu-toggle-files-only
   "M-s a C-s"   #'Buffer-menu-isearch-buffers
   "M-s a C-M-s" #'Buffer-menu-isearch-buffers-regexp
@@ -208,26 +209,25 @@ See `buffer-menu' for a description of its contents.
 In Buffer Menu mode, the following commands are defined:
 \\<Buffer-menu-mode-map>
 \\[quit-window]    Remove the Buffer Menu from the display.
-\\[Buffer-menu-this-window]  Select current line's buffer in place of the 
buffer menu.
+\\[Buffer-menu-this-window]    Select current line's buffer in place of the 
buffer menu.
 \\[Buffer-menu-other-window]    Select that buffer in another window,
      so the Buffer Menu remains visible in its window.
-\\[Buffer-menu-view]    Select current line's buffer, in View mode.
-\\[Buffer-menu-view-other-window]  Select that buffer in
-     another window, in `view-mode'.
+\\[Buffer-menu-view]    Select current line's buffer, in `view-mode'.
+\\[Buffer-menu-view-other-window]    Select that buffer in another window, in 
`view-mode'.
 \\[Buffer-menu-switch-other-window]  Make another window display that buffer.
 \\[Buffer-menu-mark]    Mark current line's buffer to be displayed.
 \\[Buffer-menu-select]    Select current line's buffer.
-     Also show buffers marked with m, in other windows.
+     Also show buffers marked with \"m\", in other windows.
 \\[Buffer-menu-1-window]    Select that buffer in full-frame window.
 \\[Buffer-menu-2-window]    Select that buffer in one window, together with the
      buffer selected before this one in another window.
 \\[Buffer-menu-isearch-buffers]    Incremental search in the marked buffers.
 \\[Buffer-menu-isearch-buffers-regexp]  Isearch for regexp in the marked 
buffers.
-\\[Buffer-menu-multi-occur] Show lines matching regexp in the marked buffers.
+\\[Buffer-menu-multi-occur]    Show lines matching regexp in the marked 
buffers.
 \\[Buffer-menu-visit-tags-table]    `visit-tags-table' this buffer.
 \\[Buffer-menu-not-modified]    Clear modified-flag on that buffer.
 \\[Buffer-menu-save]    Mark that buffer to be saved, and move down.
-\\[Buffer-menu-delete]  Mark that buffer to be deleted, and move down.
+\\[Buffer-menu-delete]    Mark that buffer to be deleted, and move down.
 \\[Buffer-menu-delete-backwards]  Mark that buffer to be deleted, and move up.
 \\[Buffer-menu-execute]    Delete or save marked buffers.
 \\[Buffer-menu-unmark]    Remove all marks from current line.
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index c8405c7d1a..42156b9460 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -317,7 +317,9 @@ If you change this, be sure to set `math-units-table' to 
nil to ensure
 that the combined units table will be rebuilt.")
 
 (defvar math-unit-prefixes
-  '( ( ?Y  (^ 10 24)  "Yotta"  )
+  '( ( ?Q  (^ 10 30)  "quetta"  )
+     ( ?R  (^ 10 27)  "ronna"  )
+     ( ?Y  (^ 10 24)  "Yotta"  )
      ( ?Z  (^ 10 21)  "Zetta"  )
      ( ?E  (^ 10 18)  "Exa"    )
      ( ?P  (^ 10 15)  "Peta"   )
@@ -340,7 +342,10 @@ that the combined units table will be rebuilt.")
      ( ?f  (^ 10 -15) "Femto"  )
      ( ?a  (^ 10 -18) "Atto"   )
      ( ?z  (^ 10 -21) "zepto"  )
-     ( ?y  (^ 10 -24) "yocto"  )))
+     ( ?y  (^ 10 -24) "yocto"  )
+     ( ?r  (^ 10 -27) "ronto"  )
+     ( ?q  (^ 10 -30) "quecto"  )
+     ))
 
 (defvar math-standard-units-systems
   '( ( base  nil )
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index cf54293989..5575740040 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -1641,9 +1641,11 @@ enumeration, given as a Lisp time value -- used for test 
purposes."
                        entry-main)
          ;; regular sexp entry
          (icalendar--dmsg "diary-sexp %s" entry-main)
-         (let ((p1 (substring entry-main (match-beginning 1) (match-end 1)))
-               (p2 (substring entry-main (match-beginning 2) (match-end 2)))
-               (now (or start (current-time))))
+         (let* ((entry-main (substring entry-main 2))
+                (res (read-from-string entry-main))
+                (p1 (prin1-to-string (car res)))
+                (p2 (substring entry-main (cdr res)))
+                (now (or start (current-time))))
            (delete nil
                    (mapcar
                     (lambda (offset)
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 7fad031add..f2ffddcf70 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -77,8 +77,9 @@ into help buttons that call `describe-text-category' or
                                            (prin1-to-string (nth 0 b) t)))))
     (let ((key (nth 0 elt))
          (value (nth 1 elt)))
-      (insert (propertize (format "  %-20s " key)
-                         'face 'help-argument-name))
+      (insert (format "  %-20s "
+                      (propertize (symbol-name key)
+                                  'face 'help-argument-name)))
       (cond ((eq key 'category)
             (insert-text-button
              (symbol-name value)
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index a33808ab92..1babf3ec2c 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -632,7 +632,7 @@ enabled."
 (defmacro with-suppressed-warnings (warnings &rest body)
   "Like `progn', but prevents compiler WARNINGS in BODY.
 
-WARNINGS is an associative list where the first element of each
+WARNINGS is an association list where the first element of each
 item is a warning type, and the rest of the elements in each item
 are symbols they apply to.  For instance, if you want to suppress
 byte compilation warnings about the two obsolete functions `foo'
diff --git a/lisp/emacs-lisp/easymenu.el b/lisp/emacs-lisp/easymenu.el
index 41e3a197af..2a45c1ab1c 100644
--- a/lisp/emacs-lisp/easymenu.el
+++ b/lisp/emacs-lisp/easymenu.el
@@ -390,10 +390,13 @@ ITEM defines an item as in `easy-menu-define'."
     (let ((key (easy-menu-intern name)))
       (cons key
             (and (not remove)
-                 (cons 'menu-item
-                       (cons label
-                             (and name
-                                  (cons command prop)))))))))
+                 (if (and (stringp label)
+                          (seq-every-p (lambda (c) (char-equal c ?-)) label))
+                     menu-bar-separator
+                   (cons 'menu-item
+                         (cons label
+                               (and name
+                                    (cons command prop))))))))))
 
 (defun easy-menu-define-key (menu key item &optional before)
   "Add binding in MENU for KEY => ITEM.  Similar to `define-key-after'.
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index c25ade22d6..67cbe62538 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -673,8 +673,11 @@ Bound dynamically.  This is a list of (PREFIX . MESSAGE) 
pairs.")
 
 To be used within ERT tests.  MESSAGE-FORM should evaluate to a
 string that will be displayed together with the test result if
-the test fails.  PREFIX-FORM should evaluate to a string as well
-and is displayed in front of the value of MESSAGE-FORM."
+the test fails.  MESSAGE-FORM can also evaluate to a function; in
+this case, it will be called when displaying the info.
+
+PREFIX-FORM should evaluate to a string as well and is displayed
+in front of the value of MESSAGE-FORM."
   (declare (debug ((form &rest [sexp form]) body))
           (indent 1))
   `(let ((ert--infos (cons (cons ,prefix-form ,message-form) ert--infos)))
@@ -1352,6 +1355,8 @@ RESULT must be an `ert-test-result-with-condition'."
             (end nil))
         (unwind-protect
             (progn
+              (when (functionp message)
+                (setq message (funcall message)))
               (insert message "\n")
               (setq end (point-marker))
               (goto-char begin)
diff --git a/lisp/emacs-lisp/loaddefs-gen.el b/lisp/emacs-lisp/loaddefs-gen.el
index ecc5f7e47b..2dd04174f5 100644
--- a/lisp/emacs-lisp/loaddefs-gen.el
+++ b/lisp/emacs-lisp/loaddefs-gen.el
@@ -108,21 +108,26 @@ scanning for autoloads and will be in the `load-path'."
   (let* ((name (file-relative-name file (file-name-directory outfile)))
          (names '())
          (dir (file-name-directory outfile)))
-    ;; If `name' has directory components, only keep the
-    ;; last few that are really needed.
-    (while name
-      (setq name (directory-file-name name))
-      (push (file-name-nondirectory name) names)
-      (setq name (file-name-directory name)))
-    (while (not name)
-      (cond
-       ((null (cdr names)) (setq name (car names)))
-       ((file-exists-p (expand-file-name "subdirs.el" dir))
-        ;; FIXME: here we only check the existence of subdirs.el,
-        ;; without checking its content.  This makes it generate wrong load
-        ;; names for cases like lisp/term which is not added to load-path.
-        (setq dir (expand-file-name (pop names) dir)))
-       (t (setq name (mapconcat #'identity names "/")))))
+    ;; If `name' lives inside an ancestor directory of OUTFILE, only
+    ;; keep the last few leading directories that are really needed.
+    ;; (It will always live in an ancestor directory of OUTFILE on
+    ;; Posix systems, but on DOS/Windows it could not be, if FILE and
+    ;; OUTFILE are on different drives.)
+    (when (not (file-name-absolute-p name))
+      (while name
+        (setq name (directory-file-name name))
+        (push (file-name-nondirectory name) names)
+        (setq name (file-name-directory name)))
+      (while (not name)
+        (cond
+         ((null (cdr names)) (setq name (car names)))
+         ((file-exists-p (expand-file-name "subdirs.el" dir))
+          ;; FIXME: here we only check the existence of subdirs.el,
+          ;; without checking its content.  This makes it generate
+          ;; wrong load names for cases like lisp/term which is not
+          ;; added to load-path.
+          (setq dir (expand-file-name (pop names) dir)))
+         (t (setq name (mapconcat #'identity names "/"))))))
     (if (string-match "\\.elc?\\(\\.\\|\\'\\)" name)
         (substring name 0 (match-beginning 0))
       name)))
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index a999596785..a4520ab800 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -284,7 +284,7 @@ asynchronously."
            finally return "unknown"))
 
 (defun package-vc--version (pkg)
-  "Return the version number for the source package PKG."
+  "Return the version number for the VC package PKG."
   (cl-assert (package-vc-p pkg))
   (if-let ((main-file (package-vc--main-file pkg)))
       (with-temp-buffer
@@ -334,7 +334,7 @@ asynchronously."
          (nconc
           (list 'define-package
                 (symbol-name name)
-                (cons 'vc (package-vc--version pkg-desc))
+                (package-vc--version pkg-desc)
                 (package-desc-summary pkg-desc)
                 (let ((requires (package-desc-reqs pkg-desc)))
                   (list 'quote
@@ -344,6 +344,7 @@ asynchronously."
                            (list (car elt)
                                  (package-version-join (cadr elt))))
                          requires))))
+          (list :kind 'vc)
           (package--alist-to-plist-args
            (package-desc-extras pkg-desc))))
         "\n")
@@ -386,7 +387,7 @@ otherwise it's assumed to be an Info file."
   "Prepare PKG-DESC that is already checked-out in PKG-DIR.
 This includes downloading missing dependencies, generating
 autoloads, generating a package description file (used to
-identify a package as a source package later on), building
+identify a package as a VC package later on), building
 documentation and marking the package as installed."
   ;; Remove any previous instance of PKG-DESC from `package-alist'
   (let ((pkgs (assq (package-desc-name pkg-desc) package-alist)))
@@ -466,7 +467,7 @@ documentation and marking the package as installed."
 
   ;; Confirm that the installation was successful
   (let ((main-file (package-vc--main-file pkg-desc)))
-    (message "Source package `%s' installed (Version %s, Revision %S)."
+    (message "VC package `%s' installed (Version %s, Revision %S)."
              (package-desc-name pkg-desc)
              (lm-with-file main-file
                (package-strip-rcs-id
@@ -522,7 +523,7 @@ checkout.  This overrides the `:branch' attribute in 
PKG-SPEC."
                (pkg-dir (expand-file-name dirname package-user-dir)))
     (setf (package-desc-dir pkg-desc) pkg-dir)
     (when (file-exists-p pkg-dir)
-      (if (yes-or-no-p "Overwrite previous checkout?")
+      (if (yes-or-no-p (format "Overwrite previous checkout for package `%s'?" 
name))
           (package--delete-directory pkg-dir)
         (error "There already exists a checkout for %s" name)))
     (package-vc--clone pkg-desc pkg-spec pkg-dir rev)
@@ -533,11 +534,11 @@ checkout.  This overrides the `:branch' attribute in 
PKG-SPEC."
     (package-vc--unpack-1 pkg-desc pkg-dir)))
 
 (defun package-vc--read-package-name (prompt &optional allow-url installed)
-  "Query the user for a source package and return a name with PROMPT.
+  "Query the user for a VC package and return a name with PROMPT.
 If the optional argument ALLOW-URL is non-nil, the user is also
 allowed to specify a non-package name.  If the optional argument
 INSTALLED is non-nil, the selection will be filtered down to
-source packages that have already been installed."
+VC packages that have already been installed."
   (package-vc--archives-initialize)
   (completing-read prompt (if installed package-alist package-archive-contents)
                    (if installed
@@ -553,9 +554,9 @@ source packages that have already been installed."
                    (not allow-url)))
 
 (defun package-vc--read-package-desc (prompt &optional installed)
-  "Query the user for a source package and return a description with PROMPT.
+  "Query the user for a VC package and return a description with PROMPT.
 If the optional argument INSTALLED is non-nil, the selection will
-be filtered down to source packages that have already been
+be filtered down to VC packages that have already been
 installed, and the package description will be that of an
 installed package."
   (cadr (assoc (package-vc--read-package-name prompt nil installed)
@@ -575,7 +576,7 @@ installed package."
 ;;;###autoload
 (defun package-vc-update (pkg-desc)
   "Attempt to update the package PKG-DESC."
-  (interactive (list (package-vc--read-package-desc "Update source package: " 
t)))
+  (interactive (list (package-vc--read-package-desc "Update VC package: " t)))
   ;; HACK: To run `package-vc--unpack-1' after checking out the new
   ;; revision, we insert a hook into `vc-post-command-functions', and
   ;; remove it right after it ran.  To avoid running the hook multiple
@@ -659,8 +660,8 @@ Optional argument BACKEND specifies the VC backend to use 
for cloning
 the package's repository; this is only possible if NAME-OR-URL is a URL,
 a string.  If BACKEND is omitted or nil, the function
 uses `package-vc-heuristic-alist' to guess the backend.
-Note that by default, a source package will be prioritized over a
-regular package, but it will not remove a source package."
+Note that by default, a VC package will be prioritized over a
+regular package, but it will not remove a VC package."
   (interactive
    (progn
      ;; Initialize the package system to get the list of package
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index c1545a2870..8d44fae30a 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -458,7 +458,7 @@ synchronously."
 (defvar package--default-summary "No description available.")
 
 (define-inline package-vc-p (pkg-desc)
-  "Return non-nil if PKG-DESC is a source package."
+  "Return non-nil if PKG-DESC is a VC package."
   (inline-letevals (pkg-desc)
     (inline-quote (eq (package-desc-kind ,pkg-desc) 'vc))))
 
@@ -483,9 +483,7 @@ synchronously."
                                (if (eq 'quote (car requirements))
                                    (nth 1 requirements)
                                  requirements)))
-                 (kind (if (eq (car-safe version-string) 'vc)
-                           'vc
-                         (plist-get rest-plist :kind)))
+                 (kind (plist-get rest-plist :kind))
                  (archive (plist-get rest-plist :archive))
                  (extras (let (alist)
                            (while rest-plist
@@ -911,7 +909,7 @@ correspond to previously loaded files."
                            (let ((v1 (package-desc-version p1))
                                  (v2 (package-desc-version p2)))
                              (or
-                              ;; Prefer source packages.
+                              ;; Prefer VC packages.
                               (package-vc-p p1)
                               (package-vc-p p2)
                               ;; Prefer builtin packages.
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 10bd4bc688..762cc8eb4f 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -395,7 +395,7 @@ how many time this CODEGEN is called."
                          (push (setq prev (list case)) seen))
                        ;; Put a counter in the cdr just so that not
                        ;; all branches look identical (to avoid things
-                       ;; like `macroexp--if' optimizing them too
+                       ;; like `macroexp-if' optimizing them too
                        ;; optimistically).
                        (let ((ph (cons 'pcase--placeholder
                                        (setq phcounter (1+ phcounter)))))
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 15fd6ac50f..43c5faad63 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -205,7 +205,8 @@
 ;;;; Variables and options
 
 (defvar-local erc-session-password nil
-  "The password used for the current session.")
+  "The password used for the current session.
+This should be a string or a function returning a string.")
 
 (defvar erc-server-responses (make-hash-table :test #'equal)
   "Hash table mapping server responses to their handler hooks.")
@@ -311,8 +312,13 @@ current IRC process is still alive.")
 (make-obsolete-variable 'erc-server-reconnecting
                         "see `erc--server-reconnecting'" "29.1")
 
-(defvar-local erc--server-reconnecting nil
-  "Non-nil when reconnecting.")
+(defvar erc--server-reconnecting nil
+  "An alist of buffer-local vars and their values when reconnecting.
+This is for the benefit of local modules and `erc-mode-hook'
+members so they can access buffer-local data from the previous
+session when reconnecting.  Once `erc-reuse-buffers' is retired
+and fully removed, modules can switch to leveraging the
+`permanent-local' property instead.")
 
 (defvar-local erc-server-timed-out nil
   "Non-nil if the IRC server failed to respond to a ping.")
@@ -638,6 +644,10 @@ The current buffer is given by BUFFER."
   (let ((p (plist-put parameters :nowait t)))
     (apply #'open-network-stream name buffer host service p)))
 
+(cl-defmethod erc--register-connection ()
+  "Perform opening IRC protocol exchange with server."
+  (erc-login))
+
 (defvar erc--server-connect-dumb-ipv6-regexp
   ;; Not for validation (gives false positives).
   (rx bot "[" (group (+ (any xdigit digit ":.")) (? "%" (+ alnum))) "]" eot))
@@ -664,7 +674,6 @@ TLS (see `erc-session-client-certificate' for more 
details)."
       (setq erc-server-process process)
       (setq erc-server-quitting nil)
       (setq erc-server-reconnecting nil
-            erc--server-reconnecting nil
             erc--server-reconnect-timer nil)
       (setq erc-server-timed-out nil)
       (setq erc-server-banned nil)
@@ -693,7 +702,7 @@ TLS (see `erc-session-client-certificate' for more 
details)."
         ;; waiting for a non-blocking connect - keep the user informed
         (erc-display-message nil nil buffer "Opening connection..\n")
       (message "%s...done" msg)
-      (erc-login)) ))
+      (erc--register-connection))))
 
 (defun erc-server-reconnect ()
   "Reestablish the current IRC connection.
@@ -706,11 +715,11 @@ Make sure you are in an ERC buffer when running this."
     (with-current-buffer buffer
       (erc-update-mode-line)
       (erc-set-active-buffer (current-buffer))
-      (setq erc--server-reconnecting t)
       (setq erc-server-last-sent-time 0)
       (setq erc-server-lines-sent 0)
       (let ((erc-server-connect-function (or erc-session-connector
-                                             #'erc-open-network-stream)))
+                                             #'erc-open-network-stream))
+            (erc--server-reconnecting (buffer-local-variables)))
         (erc-open erc-session-server erc-session-port erc-server-current-nick
                   erc-session-user-full-name t erc-session-password
                   nil nil nil erc-session-client-certificate
@@ -824,8 +833,7 @@ When `erc-server-reconnect-attempts' is a number, increment
         (if (not reconnect-p)
             ;; terminate, do not reconnect
             (progn
-              (setq erc--server-reconnecting nil
-                    erc--server-reconnect-timer nil)
+              (setq erc--server-reconnect-timer nil)
               (erc-display-message nil 'error (current-buffer)
                                    'terminated ?e event)
               (set-buffer-modified-p nil))
@@ -894,7 +902,7 @@ Conditionally try to reconnect and take appropriate action."
                   cproc (process-status cproc) event erc-server-quitting))
         (if (string-match "^open" event)
             ;; newly opened connection (no wait)
-            (erc-login)
+            (erc--register-connection)
           ;; assume event is 'failed
           (erc-with-all-buffers-of-server cproc nil
                                           (setq erc-server-connected nil))
@@ -1619,7 +1627,7 @@ add things to `%s' instead."
         (cl-pushnew (erc-server-buffer) bufs)
         (erc-set-current-nick nn)
         ;; Rename session, possibly rename server buf and all targets
-        (when (erc-network)
+        (when erc-server-connected
           (erc-networks--id-reload erc-networks--id proc parsed))
         (erc-update-mode-line)
         (setq erc-nick-change-attempt-count 0)
@@ -1629,6 +1637,8 @@ add things to `%s' instead."
          'NICK-you ?n nick ?N nn)
         (run-hook-with-args 'erc-nick-changed-functions nn nick))
        (t
+        (when erc-server-connected
+          (erc-networks--id-reload erc-networks--id proc parsed))
         (erc-handle-user-status-change 'nick (list nick login host) (list nn))
         (erc-display-message parsed 'notice bufs 'NICK ?n nick
                              ?u login ?h host ?N nn))))))
@@ -2255,6 +2265,8 @@ See `erc-display-server-message'." nil
 
 (define-erc-response-handler (433)
   "Login-time \"nick in use\"." nil
+  (when erc-server-connected
+    (erc-networks--id-reload erc-networks--id proc parsed))
   (erc-nickname-in-use (cadr (erc-response.command-args parsed))
                        "already in use"))
 
@@ -2323,6 +2335,15 @@ See `erc-display-server-message'." nil
     (erc-display-message parsed 'notice 'active 's671
                          ?n nick ?a securemsg)))
 
+(define-erc-response-handler (900)
+  "Handle a \"RPL_LOGGEDIN\" server command.
+Some servers don't consider this SASL-specific but rather just an
+indication of a server-side state change from logged-out to
+logged-in." nil
+  ;; Whenever ERC starts caring about user accounts, it should record
+  ;; the session as being logged here.
+  (erc-display-message parsed 'notice proc (erc-response.contents parsed)))
+
 (define-erc-response-handler (431 445 446 451 462 463 464 481 483 484 485
                                   491 501 502)
   ;; 431 - No nickname given
diff --git a/lisp/erc/erc-common.el b/lisp/erc/erc-common.el
index 23a1933798..a4046ba9b3 100644
--- a/lisp/erc/erc-common.el
+++ b/lisp/erc/erc-common.el
@@ -88,6 +88,65 @@
   (contents "" :type string)
   (tags '() :type list))
 
+;; TODO move goodies modules here after 29 is released.
+(defconst erc--features-to-modules
+  '((erc-pcomplete completion pcomplete)
+    (erc-capab capab-identify)
+    (erc-join autojoin)
+    (erc-page page ctcp-page)
+    (erc-sound sound ctcp-sound)
+    (erc-stamp stamp timestamp)
+    (erc-services services nickserv))
+  "Migration alist mapping a library feature to module names.
+Keys need not be unique: a library may define more than one
+module.  Sometimes a module's downcased alias will be its
+canonical name.")
+
+(defconst erc--modules-to-features
+  (let (pairs)
+    (pcase-dolist (`(,feature . ,names) erc--features-to-modules)
+      (dolist (name names)
+        (push (cons name feature) pairs)))
+    (nreverse pairs))
+  "Migration alist mapping a module's name to its home library feature.")
+
+(defconst erc--module-name-migrations
+  (let (pairs)
+    (pcase-dolist (`(,_ ,canonical . ,rest) erc--features-to-modules)
+      (dolist (obsolete rest)
+        (push (cons obsolete canonical) pairs)))
+    pairs)
+  "Association list of obsolete module names to canonical names.")
+
+(defun erc--normalize-module-symbol (symbol)
+  "Return preferred SYMBOL for `erc-modules'."
+  (setq symbol (intern (downcase (symbol-name symbol))))
+  (or (cdr (assq symbol erc--module-name-migrations)) symbol))
+
+(defun erc--assemble-toggle (localp name ablsym mode val body)
+  (let ((arg (make-symbol "arg")))
+    `(defun ,ablsym ,(if localp `(&optional ,arg) '())
+       ,(concat
+         (if val "Enable" "Disable")
+         " ERC " (symbol-name name) " mode."
+         (when localp
+           "\nWith ARG, do so in all buffers for the current connection."))
+       (interactive ,@(when localp '("p")))
+       ,@(if localp
+             `((when (derived-mode-p 'erc-mode)
+                 (if ,arg
+                     (erc-with-all-buffers-of-server erc-server-process nil
+                       (,ablsym))
+                   (setq ,mode ,val)
+                   ,@body)))
+           `(,(if val
+                  `(cl-pushnew ',(erc--normalize-module-symbol name)
+                               erc-modules)
+                `(setq erc-modules (delq ',(erc--normalize-module-symbol name)
+                                         erc-modules)))
+             (setq ,mode ,val)
+             ,@body)))))
+
 (defmacro define-erc-module (name alias doc enable-body disable-body
                                   &optional local-p)
   "Define a new minor mode using ERC conventions.
@@ -103,6 +162,13 @@ This will define a minor mode called erc-NAME-mode, 
possibly
 an alias erc-ALIAS-mode, as well as the helper functions
 erc-NAME-enable, and erc-NAME-disable.
 
+With LOCAL-P, these helpers take on an optional argument that,
+when non-nil, causes them to act on all buffers of a connection.
+This feature is mainly intended for interactive use and does not
+carry over to their respective minor-mode toggles.  Beware that
+for global modules, these helpers and toggles all mutate
+`erc-modules'.
+
 Example:
 
   ;;;###autoload(autoload \\='erc-replace-mode \"erc-replace\")
@@ -133,20 +199,8 @@ if ARG is omitted or nil.
          (if ,mode
              (,enable)
            (,disable)))
-       (defun ,enable ()
-         ,(format "Enable ERC %S mode."
-                  name)
-         (interactive)
-         (add-to-list 'erc-modules (quote ,name))
-         (setq ,mode t)
-         ,@enable-body)
-       (defun ,disable ()
-         ,(format "Disable ERC %S mode."
-                  name)
-         (interactive)
-         (setq erc-modules (delq (quote ,name) erc-modules))
-         (setq ,mode nil)
-         ,@disable-body)
+       ,(erc--assemble-toggle local-p name enable mode t enable-body)
+       ,(erc--assemble-toggle local-p name disable mode nil disable-body)
        ,(when (and alias (not (eq name alias)))
           `(defalias
              ',(intern
diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
index d23703394b..abbaafcd93 100644
--- a/lisp/erc/erc-compat.el
+++ b/lisp/erc/erc-compat.el
@@ -176,7 +176,7 @@ If START or END is negative, it counts from the end."
 ;; This hard codes `auth-source-pass-port-separator' to ":"
 (defun erc-compat--29-auth-source-pass--retrieve-parsed (seen e port-number-p)
   (when (string-match (rx (or bot "/")
-                          (or (: (? (group-n 20 (+ (not (in " /@")))) "@")
+                          (or (: (? (group-n 20 (+ (not (in " /:")))) "@")
                                  (group-n 10 (+ (not (in " /:@"))))
                                  (? ":" (group-n 30 (+ (not (in " /:"))))))
                               (: (group-n 11 (+ (not (in " /:@"))))
@@ -252,8 +252,18 @@ If START or END is negative, it counts from the end."
   ;; From `auth-source-pass-search'
   (cl-assert (and host (not (eq host t)))
              t "Invalid password-store search: %s %s")
-  (erc-compat--29-auth-source-pass--build-result-many
-   host user port require max))
+  (let ((rv (erc-compat--29-auth-source-pass--build-result-many
+             host user port require max)))
+    (if (and (fboundp 'auth-source--obfuscate)
+             (fboundp 'auth-source--deobfuscate))
+        (let (out)
+          (dolist (e rv out)
+            (when-let* ((s (plist-get e :secret))
+                        (v (auth-source--obfuscate s)))
+              (setf (plist-get e :secret)
+                    (byte-compile (lambda () (auth-source--deobfuscate v)))))
+            (push e out)))
+      rv)))
 
 (defun erc-compat--29-auth-source-pass-backend-parse (entry)
   (when (eq entry 'password-store)
@@ -273,6 +283,89 @@ If START or END is negative, it counts from the end."
     auth-source-backend-parser-functions))
 
 
+;;;; SASL
+
+(declare-function sasl-step-data "sasl" (step))
+(declare-function sasl-error "sasl" (datum))
+(declare-function sasl-client-property "sasl" (client property))
+(declare-function sasl-client-set-property "sasl" (client property value))
+(declare-function sasl-mechanism-name "sasl" (mechanism))
+(declare-function sasl-client-name "sasl" (client))
+(declare-function sasl-client-mechanism "sasl" (client))
+(declare-function sasl-read-passphrase "sasl" (prompt))
+(declare-function sasl-unique-id "sasl" nil)
+(declare-function decode-hex-string "hex-util" (string))
+(declare-function rfc2104-hash "rfc2104" (hash block-length hash-length
+                                               key text))
+(declare-function sasl-scram--client-first-message-bare "sasl-scram-rfc"
+                  (client))
+(declare-function cl-mapcar "cl-lib" (cl-func cl-x &rest cl-rest))
+
+(defun erc-compat--29-sasl-scram-construct-gs2-header (client)
+  (let ((authzid (sasl-client-property client 'authenticator-name)))
+    (concat "n," (and authzid "a=") authzid ",")))
+
+(defun erc-compat--29-sasl-scram-client-first-message (client _step)
+  (let ((c-nonce (sasl-unique-id)))
+    (sasl-client-set-property client 'c-nonce c-nonce))
+  (concat (erc-compat--29-sasl-scram-construct-gs2-header client)
+          (sasl-scram--client-first-message-bare client)))
+
+(defun erc-compat--29-sasl-scram--client-final-message
+    (hash-fun block-length hash-length client step)
+  (unless (string-match
+           "^r=\\([^,]+\\),s=\\([^,]+\\),i=\\([0-9]+\\)\\(?:$\\|,\\)"
+           (sasl-step-data step))
+    (sasl-error "Unexpected server response"))
+  (let* ((hmac-fun
+          (lambda (text key)
+            (decode-hex-string
+             (rfc2104-hash hash-fun block-length hash-length key text))))
+         (step-data (sasl-step-data step))
+         (nonce (match-string 1 step-data))
+         (salt-base64 (match-string 2 step-data))
+         (iteration-count (string-to-number (match-string 3 step-data)))
+         (c-nonce (sasl-client-property client 'c-nonce))
+         (cbind-input
+          (if (string-prefix-p c-nonce nonce)
+              (erc-compat--29-sasl-scram-construct-gs2-header client) ; *1
+            (sasl-error "Invalid nonce from server")))
+         (client-final-message-without-proof
+          (concat "c=" (base64-encode-string cbind-input t) "," ; *2
+                  "r=" nonce))
+         (password
+          (sasl-read-passphrase
+           (format "%s passphrase for %s: "
+                   (sasl-mechanism-name (sasl-client-mechanism client))
+                   (sasl-client-name client))))
+         (salt (base64-decode-string salt-base64))
+         (string-xor (lambda (a b)
+                       (apply #'unibyte-string (cl-mapcar #'logxor a b))))
+         (salted-password (let ((digest (concat salt (string 0 0 0 1)))
+                                (xored nil))
+                            (dotimes (_i iteration-count xored)
+                              (setq digest (funcall hmac-fun digest password))
+                              (setq xored (if (null xored)
+                                              digest
+                                            (funcall string-xor xored
+                                                     digest))))))
+         (client-key (funcall hmac-fun "Client Key" salted-password))
+         (stored-key (decode-hex-string (funcall hash-fun client-key)))
+         (auth-message (concat "n=" (sasl-client-name client)
+                               ",r=" c-nonce "," step-data
+                               "," client-final-message-without-proof))
+         (client-signature (funcall hmac-fun
+                                    (encode-coding-string auth-message 'utf-8)
+                                    stored-key))
+         (client-proof (funcall string-xor client-key client-signature))
+         (client-final-message
+          (concat client-final-message-without-proof ","
+                  "p=" (base64-encode-string client-proof t)))) ; *3
+    (sasl-client-set-property client 'auth-message auth-message)
+    (sasl-client-set-property client 'salted-password salted-password)
+    client-final-message))
+
+
 ;;;; Misc 29.1
 
 (defmacro erc-compat--with-memoization (table &rest forms)
diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el
index 59b5f01f23..1af83b58ba 100644
--- a/lisp/erc/erc-goodies.el
+++ b/lisp/erc/erc-goodies.el
@@ -31,6 +31,7 @@
 
 ;;; Imenu support
 
+(eval-when-compile (require 'cl-lib))
 (require 'erc-common)
 
 (defvar erc-controls-highlight-regexp)
diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el
index b3e5fcf1a3..19a7ab8643 100644
--- a/lisp/erc/erc-networks.el
+++ b/lisp/erc/erc-networks.el
@@ -826,12 +826,11 @@ respectively.  The separator is given by 
`erc-networks--id-sep'."
 
 ;; For now, please use this instead of `erc-networks--id-fixed-p'.
 (cl-defgeneric erc-networks--id-given (net-id)
-  "Return the preassigned identifier for a network presence, if any.
-This may have originated from an `:id' arg to entry-point commands
-`erc-tls' or `erc'.")
+  "Return the preassigned identifier for a network context, if any.
+When non-nil, assume NET-ID originated from an `:id' argument to
+entry-point commands `erc-tls' or `erc'.")
 
-(cl-defmethod erc-networks--id-given ((_ erc-networks--id))
-  nil)
+(cl-defmethod erc-networks--id-given (_) nil) ; _ may be nil
 
 (cl-defmethod erc-networks--id-given ((nid erc-networks--id-fixed))
   (erc-networks--id-symbol nid))
@@ -866,22 +865,15 @@ This may have originated from an `:id' arg to entry-point 
commands
   ((_ symbol) &context (erc-obsolete-var erc-reuse-buffers null))
   (erc-networks--id-fixed-create (intern (buffer-name))))
 
-(cl-defgeneric erc-networks--id-on-connect (net-id)
-  "Update NET-ID `erc-networks--id' after connection params known.
-This is typically during or just after MOTD.")
-
-(cl-defmethod erc-networks--id-on-connect ((_ erc-networks--id))
-  nil)
-
-(cl-defmethod erc-networks--id-on-connect ((id erc-networks--id-qualifying))
-  (erc-networks--id-qualifying-update id (erc-networks--id-qualifying-create)))
-
 (cl-defgeneric erc-networks--id-equal-p (self other)
-  "Return non-nil when two network identities exhibit underlying equality.
-SELF and OTHER are `erc-networks--id' struct instances.  This
-should normally be used only for ID recovery or merging, after
-which no two identities should be `equal' (timestamps aside) that
-aren't also `eq'.")
+  "Return non-nil when two network IDs exhibit underlying equality.
+Expect SELF and OTHER to be `erc-networks--id' struct instances
+and that this will only be called for ID recovery or merging,
+after which no two identities should be `equal' (timestamps
+aside) that aren't also `eq'.")
+
+(cl-defmethod erc-networks--id-equal-p ((_ null) (_ erc-networks--id)) nil)
+(cl-defmethod erc-networks--id-equal-p ((_ erc-networks--id) (_ null)) nil)
 
 (cl-defmethod erc-networks--id-equal-p ((self erc-networks--id)
                                         (other erc-networks--id))
@@ -1382,7 +1374,8 @@ considered as well because server buffers are often 
killed."
   (let* ((identity erc-networks--id)
          (buffer (current-buffer))
          (f (lambda ()
-              (unless (or (eq (current-buffer) buffer)
+              (unless (or (not erc-networks--id)
+                          (eq (current-buffer) buffer)
                           (eq erc-networks--id identity))
                 (if (erc-networks--id-equal-p identity erc-networks--id)
                     (throw 'buffer erc-networks--id)
@@ -1397,16 +1390,17 @@ considered as well because server buffers are often 
killed."
 ;; server buffer, whereas `erc-networks--rename-server-buffer' can run
 ;; mid-session, after an identity's core components have changed.
 
-(defun erc-networks--init-identity (_proc _parsed)
+(defun erc-networks--init-identity (proc parsed)
   "Update identity with real network name."
   ;; Initialize identity for real now that we know the network
   (cl-assert erc-network)
-  (unless (erc-networks--id-symbol erc-networks--id) ; unless just reconnected
-    (erc-networks--id-on-connect erc-networks--id))
-  ;; Find duplicate identities or other conflicting ones and act
-  ;; accordingly.
-  (erc-networks--update-server-identity)
-  ;;
+  (if erc-networks--id
+      (erc-networks--id-reload erc-networks--id proc parsed)
+    (setq erc-networks--id (erc-networks--id-create nil))
+    ;; Find duplicate identities or other conflicting ones and act
+    ;; accordingly.
+    (erc-networks--update-server-identity)
+    (erc-networks--rename-server-buffer proc parsed))
   nil)
 
 (defun erc-networks--rename-server-buffer (new-proc &optional _parsed)
@@ -1474,8 +1468,7 @@ This must run before `erc-server-connected' is set."
   ;; For now, retain compatibility with erc-server-NNN-functions.
   (or (erc-networks--ensure-announced proc parsed)
       (erc-networks--set-name proc parsed)
-      (erc-networks--init-identity proc parsed)
-      (erc-networks--rename-server-buffer proc parsed)))
+      (erc-networks--init-identity proc parsed)))
 
 (define-erc-module networks nil
   "Provide data about IRC networks."
diff --git a/lisp/erc/erc-sasl.el b/lisp/erc/erc-sasl.el
new file mode 100644
index 0000000000..9084d873ce
--- /dev/null
+++ b/lisp/erc/erc-sasl.el
@@ -0,0 +1,417 @@
+;;; erc-sasl.el --- SASL for ERC -*- lexical-binding: t -*-
+
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation, either version 3 of the License,
+;; or (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This "non-IRCv3" implementation resembles others that have surfaced
+;; over the years, the first possibly being from Joseph Gay:
+;;
+;; https://lists.gnu.org/archive/html/erc-discuss/2012-02/msg00001.html
+;;
+;; See options and Info manual for usage.
+;;
+;; TODO:
+;;
+;; - Find a way to obfuscate the password in memory (via something
+;;   like `auth-source--obfuscate'); it's currently visible in
+;;   backtraces.
+;;
+;; - Implement a proxy mechanism that chooses the strongest available
+;;   mechanism for you.  Requires CAP 3.2 (see bug#49860).
+;;
+;; - Integrate with whatever solution ERC eventually settles on to
+;;   handle user options for different network contexts.  At the
+;;   moment, this does its own thing for stashing and restoring
+;;   session options, but ERC should make abstractions available for
+;;   all local modules to use, possibly based on connection-local
+;;   variables.
+
+;;; Code:
+(require 'erc)
+(require 'rx)
+(require 'sasl)
+(require 'sasl-scram-rfc)
+(require 'sasl-scram-sha256 nil t) ; not present in Emacs 27
+
+(defgroup erc-sasl nil
+  "SASL for ERC."
+  :group 'erc
+  :package-version '(ERC . "5.4.1")) ; FIXME increment on next release
+
+(defcustom erc-sasl-mechanism 'plain
+  "SASL mechanism to connect with.
+Note that any value other than nil or `external' likely requires
+`erc-sasl-user' and `erc-sasl-password'."
+  :type '(choice (const plain)
+                 (const external)
+                 (const scram-sha-1)
+                 (const scram-sha-256)
+                 (const scram-sha-512)
+                 (const ecdsa-nist256p-challenge)))
+
+(defcustom erc-sasl-user :user
+  "Account username to send when authenticating.
+This is also referred to as the authentication identity or
+\"authcid\".  A value of `:user' or `:nick' indicates that the
+corresponding connection parameter on file should be used.  These
+are most often derived from arguments provided to the `erc' and
+`erc-tls' entry points.  In the case of `:nick', a downcased
+version is used."
+  :type '(choice string (const :user) (const :nick)))
+
+(defcustom erc-sasl-password :password
+  "Optional account password to send when authenticating.
+When the value is a string, ERC will use it unconditionally for
+most mechanisms.  Likewise with `:password', except ERC will
+instead use the \"session password\" on file, which often
+originates from the entry-point commands `erc' or `erc-tls'.
+Otherwise, when `erc-sasl-auth-source-function' is a function,
+ERC will attempt an auth-source query, possibly using a non-nil
+symbol for the suggested `:host' parameter if set as this
+option's value or passed as an `:id' to `erc-tls'.  Failing that,
+ERC will prompt for input.
+
+Note that, with `:password', ERC will forgo sending a traditional
+server password via the IRC \"PASS\" command.  Also, when
+`erc-sasl-mechanism' is set to `ecdsa-nist256p-challenge', this
+option should hold the file name of the key."
+  :type '(choice (const nil) (const :password) string symbol))
+
+(defcustom erc-sasl-auth-source-function nil
+  "Function to query auth-source for an SASL password.
+Called with keyword params known to `auth-source-search', which
+includes `erc-sasl-user' for the `:user' field and
+`erc-sasl-password' for the `:host' field, when the latter option
+is a non-nil, non-keyword symbol.  In return, ERC expects a
+string to send as the SASL password, or nil, to move on to the
+next approach, as described in the doc string for the option
+`erc-sasl-password'.  See info node `(erc) Connecting' for
+details on ERC's auth-source integration."
+  :type '(choice (function-item erc-auth-source-search)
+                 (const nil)
+                 function))
+
+(defcustom erc-sasl-authzid nil
+  "SASL authorization identity, likely unneeded for everyday use."
+  :type '(choice (const nil) string))
+
+
+;; Analogous to what erc-backend does to persist opening params.
+(defvar-local erc-sasl--options nil)
+
+;; Session-local (server buffer) SASL subproto state
+(defvar-local erc-sasl--state nil)
+
+(cl-defstruct erc-sasl--state
+  "Holder for client object and subproto state."
+  (client nil :type vector)
+  (step nil :type vector)
+  (pending nil :type string))
+
+(defun erc-sasl--get-user ()
+  (pcase (alist-get 'user erc-sasl--options)
+    (:user erc-session-username)
+    (:nick (erc-downcase (erc-current-nick)))
+    (v v)))
+
+(defun erc-sasl--read-password (prompt)
+  "Return configured option or server password.
+PROMPT is passed to `read-passwd' if necessary."
+  (if-let
+      ((found (pcase (alist-get 'password erc-sasl--options)
+                (:password erc-session-password)
+                ((and (pred stringp) v) (unless (string-empty-p v) v))
+                ((and (guard erc-sasl-auth-source-function)
+                      v (let host
+                          (or v (erc-networks--id-given erc-networks--id))))
+                 (apply erc-sasl-auth-source-function
+                        :user (erc-sasl--get-user)
+                        (and host (list :host (symbol-name host))))))))
+      (copy-sequence (erc--unfun found))
+    (read-passwd prompt)))
+
+(defun erc-sasl--plain-response (client steps)
+  (let ((sasl-read-passphrase #'erc-sasl--read-password))
+    (sasl-plain-response client steps)))
+
+(declare-function erc-compat--29-sasl-scram--client-final-message "erc-compat"
+                  (hash-fun block-length hash-length client step))
+
+(defun erc-sasl--scram-sha-hack-client-final-message (&rest args)
+  ;; In the future (29+), we'll hopefully be able to call
+  ;; `sasl-scram--client-final-message' directly
+  (require 'erc-compat)
+  (let ((sasl-read-passphrase #'erc-sasl--read-password))
+    (apply #'erc-compat--29-sasl-scram--client-final-message args)))
+
+(defun erc-sasl--scram-sha-1-client-final-message (client step)
+  (erc-sasl--scram-sha-hack-client-final-message 'sha1 64 20 client step))
+
+(defun erc-sasl--scram-sha-256-client-final-message (client step)
+  (erc-sasl--scram-sha-hack-client-final-message 'sasl-scram-sha256 64 32
+                                                 client step))
+
+(defun erc-sasl--scram-sha512 (object &optional start end binary)
+  (secure-hash 'sha512 object start end binary))
+
+(defun erc-sasl--scram-sha-512-client-final-message (client step)
+  (erc-sasl--scram-sha-hack-client-final-message #'erc-sasl--scram-sha512
+                                                 128 64 client step))
+
+(defun erc-sasl--scram-sha-512-authenticate-server (client step)
+  (sasl-scram--authenticate-server #'erc-sasl--scram-sha512
+                                   128 64 client step))
+
+(defun erc-sasl--ecdsa-first (client _step)
+  "Return CLIENT name."
+  (sasl-client-name client))
+
+;; FIXME do this with gnutls somehow
+(defun erc-sasl--ecdsa-sign (client step)
+  "Return signed challenge for CLIENT and current STEP."
+  (let ((challenge (sasl-step-data step)))
+    (with-temp-buffer
+      (set-buffer-multibyte nil)
+      (insert challenge)
+      (call-process-region (point-min) (point-max)
+                           "openssl" 'delete t nil "pkeyutl" "-inkey"
+                           (sasl-client-property client 'ecdsa-keyfile)
+                           "-sign")
+      (buffer-string))))
+
+(pcase-dolist
+    (`(,name . ,steps)
+     '(("PLAIN"
+        erc-sasl--plain-response)
+       ("EXTERNAL"
+        ignore)
+       ("SCRAM-SHA-1"
+        erc-compat--29-sasl-scram-client-first-message
+        erc-sasl--scram-sha-1-client-final-message
+        sasl-scram-sha-1-authenticate-server)
+       ("SCRAM-SHA-256"
+        erc-compat--29-sasl-scram-client-first-message
+        erc-sasl--scram-sha-256-client-final-message
+        sasl-scram-sha-256-authenticate-server)
+       ("SCRAM-SHA-512"
+        erc-compat--29-sasl-scram-client-first-message
+        erc-sasl--scram-sha-512-client-final-message
+        erc-sasl--scram-sha-512-authenticate-server)
+       ("ECDSA-NIST256P-CHALLENGE"
+        erc-sasl--ecdsa-first
+        erc-sasl--ecdsa-sign)))
+  (let ((feature (intern (concat "erc-sasl-" (downcase name)))))
+    (put feature 'sasl-mechanism (sasl-make-mechanism name steps))
+    (provide feature)))
+
+(cl-defgeneric erc-sasl--create-client (mechanism)
+  "Create and return a new SASL client object for MECHANISM."
+  (let ((sasl-mechanism-alist (copy-sequence sasl-mechanism-alist))
+        (sasl-mechanisms sasl-mechanisms)
+        (name (upcase (symbol-name mechanism)))
+        (feature (intern-soft (concat "erc-sasl-" (symbol-name mechanism))))
+        client)
+    (when feature
+      (setf (alist-get name sasl-mechanism-alist nil nil #'equal) `(,feature))
+      (cl-pushnew name sasl-mechanisms :test #'equal)
+      (setq client (sasl-make-client (sasl-find-mechanism (list name))
+                                     (erc-sasl--get-user)
+                                     "N/A" "N/A"))
+      (sasl-client-set-property client 'authenticator-name
+                                (alist-get 'authzid erc-sasl--options))
+      client)))
+
+(cl-defmethod erc-sasl--create-client ((_ (eql plain)))
+  "Create and return a new PLAIN client object."
+  ;; https://tools.ietf.org/html/rfc4616#section-2.
+  (let* ((sans (remq (assoc "PLAIN" sasl-mechanism-alist)
+                     sasl-mechanism-alist))
+         (sasl-mechanism-alist (cons '("PLAIN" erc-sasl-plain) sans))
+         (authc (erc-sasl--get-user))
+         (port (if (numberp erc-session-port)
+                   (number-to-string erc-session-port)
+                 "0"))
+         ;; In most cases, `erc-server-announced-name' won't be known.
+         (host (or erc-server-announced-name erc-session-server))
+         (mech (sasl-find-mechanism '("PLAIN")))
+         (client (sasl-make-client mech authc port host)))
+    (sasl-client-set-property client 'authenticator-name
+                              (alist-get 'authzid erc-sasl--options))
+    client))
+
+(cl-defmethod erc-sasl--create-client ((_ (eql scram-sha-256)))
+  "Create and return a new SCRAM-SHA-256 client."
+  (when (featurep 'sasl-scram-sha256)
+    (cl-call-next-method)))
+
+(cl-defmethod erc-sasl--create-client ((_ (eql scram-sha-512)))
+  "Create and return a new SCRAM-SHA-512 client."
+  (when (featurep 'sasl-scram-sha256)
+    (cl-call-next-method)))
+
+(cl-defmethod erc-sasl--create-client ((_ (eql ecdsa-nist256p-challenge)))
+  "Create and return a new ECDSA-NIST256P-CHALLENGE client."
+  (let ((keyfile (cdr (assq 'password erc-sasl--options))))
+    ;; Better to signal usage errors now than inside a process filter.
+    (cond ((or (not (stringp keyfile)) (not (file-readable-p keyfile)))
+           (erc-display-error-notice
+            nil "`erc-sasl-password' not accessible as a file")
+           nil)
+          ((not (executable-find "openssl"))
+           (erc-display-error-notice nil "Could not find openssl program")
+           nil)
+          (t
+           (let ((client (cl-call-next-method)))
+             (sasl-client-set-property client 'ecdsa-keyfile keyfile)
+             client)))))
+
+;; This stands alone because it's also used by bug#49860.
+(defun erc-sasl--init ()
+  (setq erc-sasl--state (make-erc-sasl--state))
+  ;; If the previous attempt failed during registration, this may be
+  ;; non-nil and contain erroneous values, but how can we detect that?
+  ;; What if the server dropped the connection for some other reason?
+  (setq erc-sasl--options
+        (or (and erc--server-reconnecting
+                 (alist-get 'erc-sasl--options erc--server-reconnecting))
+            `((user . ,erc-sasl-user)
+              (password . ,erc-sasl-password)
+              (mechanism . ,erc-sasl-mechanism)
+              (authzid . ,erc-sasl-authzid)))))
+
+(defun erc-sasl--mechanism-offered-p (offered)
+  "Return non-nil when OFFERED appears among a list of mechanisms."
+  (string-match-p (rx-to-string
+                   `(: (| bot ",")
+                       ,(symbol-name (alist-get 'mechanism erc-sasl--options))
+                       (| eot ",")))
+                  (downcase offered)))
+
+(erc-define-catalog
+ 'english
+ '((s902 . "ERR_NICKLOCKED nick %n unavailable: %s")
+   (s904 . "ERR_SASLFAIL (authentication failed) %s")
+   (s905 . "ERR SASLTOOLONG (credentials too long) %s")
+   (s906 . "ERR_SASLABORTED (authentication aborted) %s")
+   (s907 . "ERR_SASLALREADY (already authenticated) %s")
+   (s908 . "RPL_SASLMECHS (unsupported mechanism: %m) %s")))
+
+(define-erc-module sasl nil
+  "Non-IRCv3 SASL support for ERC.
+This doesn't solicit or validate a suite of supported mechanisms."
+  ;; See bug#49860 for a CAP 3.2-aware WIP implementation.
+  ((unless erc--target
+     (erc-sasl--init)
+     (let* ((mech (alist-get 'mechanism erc-sasl--options))
+            (client (erc-sasl--create-client mech)))
+       (unless client
+         (erc-display-error-notice
+          nil (format "Unknown or unsupported SASL mechanism: %s" mech))
+         (erc-error "Unknown or unsupported SASL mechanism: %s" mech))
+       (setf (erc-sasl--state-client erc-sasl--state) client))))
+  ((kill-local-variable 'erc-sasl--state)
+   (kill-local-variable 'erc-sasl--options))
+  'local)
+
+(define-erc-response-handler (AUTHENTICATE)
+  "Begin or resume an SASL session." nil
+  (if-let* ((response (car (erc-response.command-args parsed)))
+            ((= 400 (length response))))
+      (cl-callf (lambda (s) (concat s response))
+          (erc-sasl--state-pending erc-sasl--state))
+    (cl-assert response t)
+    (when (string= "+" response)
+      (setq response ""))
+    (setf response (base64-decode-string
+                    (concat (erc-sasl--state-pending erc-sasl--state)
+                            response))
+          (erc-sasl--state-pending erc-sasl--state) nil)
+    (let ((client (erc-sasl--state-client erc-sasl--state))
+          (step (erc-sasl--state-step erc-sasl--state))
+          data)
+      (when step
+        (sasl-step-set-data step response))
+      (setq step (setf (erc-sasl--state-step erc-sasl--state)
+                       (sasl-next-step client step))
+            data (sasl-step-data step))
+      (when (string= data "")
+        (setq data nil))
+      (when data
+        (setq data (erc--unfun (base64-encode-string data t))))
+      (erc-server-send (concat "AUTHENTICATE " (or data "+"))))))
+
+(defun erc-sasl--destroy (proc)
+  (run-hook-with-args 'erc-quit-hook proc)
+  (delete-process proc)
+  (erc-error "Disconnected from %s; please review SASL settings" proc))
+
+(define-erc-response-handler (902)
+  "Handle an ERR_NICKLOCKED response." nil
+  (erc-display-message parsed '(notice error) 'active 's902
+                       ?n (car (erc-response.command-args parsed))
+                       ?s (erc-response.contents parsed))
+  (erc-sasl--destroy proc))
+
+(define-erc-response-handler (903)
+  "Handle a RPL_SASLSUCCESS response." nil
+  (when erc-sasl-mode
+    (unless erc-server-connected
+      (erc-server-send "CAP END")))
+  (erc-display-message parsed 'notice proc (erc-response.contents parsed)))
+
+(define-erc-response-handler (907)
+  "Handle a RPL_SASLALREADY response." nil
+  (erc-display-message parsed '(notice error) 'active 's907
+                       ?s (erc-response.contents parsed)))
+
+(define-erc-response-handler (904 905 906)
+  "Handle various SASL-related error responses." nil
+  (erc-display-message parsed '(notice error) 'active
+                       (intern (format "s%s" (erc-response.command parsed)))
+                       ?s (erc-response.contents parsed))
+  (erc-sasl--destroy proc))
+
+(define-erc-response-handler (908)
+  "Handle a RPL_SASLALREADY response." nil
+  (erc-display-message parsed '(notice error) 'active 's908
+                       ?m (alist-get 'mechanism erc-sasl--options)
+                       ?s (string-join (cdr (erc-response.command-args parsed))
+                                       " "))
+  (erc-sasl--destroy proc))
+
+(cl-defmethod erc--register-connection (&context (erc-sasl-mode (eql t)))
+  "Send speculative/pipelined CAP and AUTHENTICATE and hope for the best."
+  (if-let* ((c (erc-sasl--state-client erc-sasl--state))
+            (m (sasl-mechanism-name (sasl-client-mechanism c))))
+      (progn
+        (erc-server-send "CAP REQ :sasl")
+        (if (and erc-session-password
+                 (eq :password (alist-get 'password erc-sasl--options)))
+            (let (erc-session-password)
+              (erc-login))
+          (erc-login))
+        (erc-server-send (format "AUTHENTICATE %s" m)))
+    (erc-sasl--destroy erc-server-process)))
+
+(provide 'erc-sasl)
+;;; erc-sasl.el ends here
+;;
+;; Local Variables:
+;; generated-autoload-file: "erc-loaddefs.el"
+;; End:
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index fe9cb5b5f1..48953288d1 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -455,7 +455,7 @@ it returns nil."
                   (read-passwd
                    (format "NickServ password for %s on %s (RET to cancel): "
                            nick nid)))))
-       ((not (string-empty-p ret))))
+       ((not (string-empty-p (erc--unfun ret)))))
     ret))
 
 (defvar erc-auto-discard-away)
@@ -477,7 +477,8 @@ Returns t if the message could be sent, nil otherwise."
          (msgtype (or (erc-nickserv-alist-ident-command nil nickserv-info)
                       "PRIVMSG")))
     (erc-message msgtype
-                 (concat nickserv " " identify-word " " nick password))))
+                 (concat nickserv " " identify-word " " nick
+                         (erc--unfun password)))))
 
 (defun erc-nickserv-call-identify-function (nickname)
   "Call `erc-nickserv-identify' with NICKNAME."
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 2312246e3e..268d83dc44 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1791,10 +1791,7 @@ buffer rather than a server buffer.")
   "Migrate old names of ERC modules to new ones."
   ;; modify `transforms' to specify what needs to be changed
   ;; each item is in the format '(old . new)
-  (let ((transforms '((pcomplete . completion))))
-    (delete-dups
-     (mapcar (lambda (m) (or (cdr (assoc m transforms)) m))
-             mods))))
+  (delete-dups (mapcar #'erc--normalize-module-symbol mods)))
 
 (defcustom erc-modules '(netsplit fill button match track completion readonly
                                   networks ring autojoin noncommands 
irccontrols
@@ -1813,9 +1810,16 @@ removed from the list will be disabled."
            (dolist (module erc-modules)
              (unless (member module val)
                (let ((f (intern-soft (format "erc-%s-mode" module))))
-                 (when (and (fboundp f) (boundp f) (symbol-value f))
-                   (message "Disabling `erc-%s'" module)
-                   (funcall f 0))))))
+                 (when (and (fboundp f) (boundp f))
+                   (when (symbol-value f)
+                     (message "Disabling `erc-%s'" module)
+                     (funcall f 0))
+                   (unless (or (custom-variable-p f)
+                               (not (fboundp 'erc-buffer-filter)))
+                     (erc-buffer-filter (lambda ()
+                                          (when (symbol-value f)
+                                            (funcall f 0))
+                                          (kill-local-variable f)))))))))
          (set sym val)
          ;; this test is for the case where erc hasn't been loaded yet
          (when (fboundp 'erc-update-modules)
@@ -1856,6 +1860,7 @@ removed from the list will be disabled."
     (const :tag "readonly: Make displayed lines read-only" readonly)
     (const :tag "replace: Replace text in messages" replace)
     (const :tag "ring: Enable an input history" ring)
+    (const :tag "sasl: Enable SASL authentication" sasl)
     (const :tag "scrolltobottom: Scroll to the bottom of the buffer"
            scrolltobottom)
     (const :tag "services: Identify to Nickserv (IRC Services) automatically"
@@ -1873,27 +1878,23 @@ removed from the list will be disabled."
   :group 'erc)
 
 (defun erc-update-modules ()
-  "Run this to enable erc-foo-mode for all modules in `erc-modules'."
-  (let (req)
-    (dolist (mod erc-modules)
-      (setq req (concat "erc-" (symbol-name mod)))
-      (cond
-       ;; yuck. perhaps we should bring the filenames into sync?
-       ((string= req "erc-capab-identify")
-        (setq req "erc-capab"))
-       ((string= req "erc-completion")
-        (setq req "erc-pcomplete"))
-       ((string= req "erc-pcomplete")
-        (setq mod 'completion))
-       ((string= req "erc-autojoin")
-        (setq req "erc-join")))
-      (condition-case nil
-          (require (intern req))
-        (error nil))
-      (let ((sym (intern-soft (concat "erc-" (symbol-name mod) "-mode"))))
-        (if (fboundp sym)
-            (funcall sym 1)
-          (error "`%s' is not a known ERC module" mod))))))
+  "Enable minor mode for every module in `erc-modules'.
+Except ignore all local modules, which were introduced in ERC 5.5."
+  (erc--update-modules)
+  nil)
+
+(defun erc--update-modules ()
+  (let (local-modes)
+    (dolist (module erc-modules local-modes)
+      (require (or (alist-get module erc--modules-to-features)
+                   (intern (concat "erc-" (symbol-name module))))
+               nil 'noerror) ; some modules don't have a corresponding feature
+      (let ((mode (intern-soft (concat "erc-" (symbol-name module) "-mode"))))
+        (unless (and mode (fboundp mode))
+          (error "`%s' is not a known ERC module" module))
+        (if (custom-variable-p mode)
+            (funcall mode 1)
+          (push mode local-modes))))))
 
 (defun erc-setup-buffer (buffer)
   "Consults `erc-join-buffer' to find out how to display `BUFFER'."
@@ -1924,6 +1925,24 @@ removed from the list will be disabled."
          (display-buffer buffer)
        (switch-to-buffer buffer)))))
 
+(defun erc--merge-local-modes (new-modes old-vars)
+  "Return a cons of two lists, each containing local-module modes.
+In the first, put modes to be enabled in a new ERC buffer by
+calling their associated functions.  In the second, put modes to
+be marked as disabled by setting their associated variables to
+nil."
+  (if old-vars
+      (let ((out (list (reverse new-modes))))
+        (pcase-dolist (`(,k . ,v) old-vars)
+          (when (and (string-prefix-p "erc-" (symbol-name k))
+                     (string-suffix-p "-mode" (symbol-name k)))
+            (if v
+                (cl-pushnew k (car out))
+              (setf (car out) (delq k (car out)))
+              (cl-pushnew k (cdr out)))))
+        (cons (nreverse (car out)) (nreverse (cdr out))))
+    (list new-modes)))
+
 (defun erc-open (&optional server port nick full-name
                            connect passwd tgt-list channel process
                            client-certificate user id)
@@ -1951,18 +1970,25 @@ Returns the buffer for the given server or channel."
   (let* ((target (and channel (erc--target-from-string channel)))
          (buffer (erc-get-buffer-create server port nil target id))
          (old-buffer (current-buffer))
-         old-point
+         (old-vars (and (not connect) (buffer-local-variables)))
+         (old-recon-count erc-server-reconnect-count)
+         (old-point nil)
+         (delayed-modules nil)
          (continued-session (and erc--server-reconnecting
                                  (with-suppressed-warnings
                                      ((obsolete erc-reuse-buffers))
                                    erc-reuse-buffers))))
     (when connect (run-hook-with-args 'erc-before-connect server port nick))
-    (erc-update-modules)
     (set-buffer buffer)
     (setq old-point (point))
-    (let ((old-recon-count erc-server-reconnect-count))
-      (erc-mode)
-      (setq erc-server-reconnect-count old-recon-count))
+    (setq delayed-modules
+          (erc--merge-local-modes (erc--update-modules)
+                                  (or erc--server-reconnecting old-vars)))
+
+    (delay-mode-hooks (erc-mode))
+
+    (setq erc-server-reconnect-count old-recon-count)
+
     (when (setq erc-server-connected (not connect))
       (setq erc-server-announced-name
             (buffer-local-value 'erc-server-announced-name old-buffer)))
@@ -2017,14 +2043,23 @@ Returns the buffer for the given server or channel."
     (setq erc-default-nicks (if (consp erc-nick) erc-nick (list erc-nick)))
     ;; client certificate (only useful if connecting over TLS)
     (setq erc-session-client-certificate client-certificate)
-    (setq erc-networks--id (if connect
-                               (erc-networks--id-create id)
-                             (buffer-local-value 'erc-networks--id
-                                                 old-buffer)))
+    (setq erc-networks--id
+          (if connect
+              (or (and erc--server-reconnecting
+                       (alist-get 'erc-networks--id erc--server-reconnecting))
+                  (and id (erc-networks--id-create id)))
+            (buffer-local-value 'erc-networks--id old-buffer)))
     ;; debug output buffer
     (setq erc-dbuf
           (when erc-log-p
             (get-buffer-create (concat "*ERC-DEBUG: " server "*"))))
+
+    (erc-determine-parameters server port nick full-name user passwd)
+
+    (save-excursion (run-mode-hooks))
+    (dolist (mod (car delayed-modules)) (funcall mod +1))
+    (dolist (var (cdr delayed-modules)) (set var nil))
+
     ;; set up prompt
     (unless continued-session
       (goto-char (point-max))
@@ -2036,8 +2071,6 @@ Returns the buffer for the given server or channel."
       (erc-display-prompt)
       (goto-char (point-max)))
 
-    (erc-determine-parameters server port nick full-name user passwd)
-
     ;; Saving log file on exit
     (run-hook-with-args 'erc-connect-pre-hook buffer)
 
@@ -2302,6 +2335,23 @@ but you won't see it.
 WARNING: Do not set this variable directly!  Instead, use the
 function `erc-toggle-debug-irc-protocol' to toggle its value.")
 
+(defvar erc--debug-irc-protocol-mask-secrets t
+  "Whether to hide secrets in a debug log.
+They are still visible on screen but are replaced by question
+marks when yanked.")
+
+(defun erc--mask-secrets (string)
+  (when-let* ((eot (length string))
+              (beg (text-property-any 0 eot 'erc-secret t string))
+              (end (text-property-not-all beg eot 'erc-secret t string))
+              (sec (substring string beg end)))
+    (setq string (concat (substring string 0 beg)
+                         (make-string 10 ??)
+                         (substring string end eot)))
+    (put-text-property beg (+ 10 beg) 'face 'erc-inverse-face string)
+    (put-text-property beg (+ 10 beg) 'display sec string))
+  string)
+
 (defun erc-log-irc-protocol (string &optional outbound)
   "Append STRING to the buffer *erc-protocol*.
 
@@ -2327,6 +2377,8 @@ workaround."
                       (format "%s:%s" erc-session-server erc-session-port))))
           (ts (when erc-debug-irc-protocol-time-format
                 (format-time-string erc-debug-irc-protocol-time-format))))
+      (when erc--debug-irc-protocol-mask-secrets
+        (setq string (erc--mask-secrets string)))
       (with-current-buffer (get-buffer-create "*erc-protocol*")
         (save-excursion
           (goto-char (point-max))
@@ -3179,7 +3231,8 @@ node `(erc) Connecting'."
                  function))
 
 (defun erc--auth-source-determine-params-defaults ()
-  (let* ((net (and-let* ((esid (erc-networks--id-symbol erc-networks--id))
+  (let* ((net (and-let* ((erc-networks--id)
+                         (esid (erc-networks--id-symbol erc-networks--id))
                          ((symbol-name esid)))))
          (localp (and erc--target (erc--target-channel-local-p erc--target)))
          (hosts (if localp
@@ -3251,9 +3304,8 @@ the one with host foo would win."
       (setq plist (plist-put plist :max 5000))) ; `auth-source-netrc-parse'
     (unless (plist-get defaults :require)
       (setq plist (plist-put plist :require '(:secret))))
-    (when-let* ((sorted (sort (apply #'auth-source-search plist) test))
-                (secret (plist-get (car sorted) :secret)))
-      (if (functionp secret) (funcall secret) secret))))
+    (when-let* ((sorted (sort (apply #'auth-source-search plist) test)))
+      (plist-get (car sorted) :secret))))
 
 (defun erc-auth-source-search (&rest plist)
   "Call `auth-source-search', possibly with keyword params in PLIST."
@@ -3274,7 +3326,8 @@ Without SECRET, consult auth-source, possibly passing 
SERVER as the
     (setq secret (apply erc-auth-source-join-function
                         `(,@(and server (list :host server)) :user ,channel))))
   (erc-log (format "cmd: JOIN: %s" channel))
-  (erc-server-send (concat "JOIN " channel (and secret (concat " " secret)))))
+  (erc-server-send (concat "JOIN " channel
+                           (and secret (concat " " (erc--unfun secret))))))
 
 (defun erc--valid-local-channel-p (channel)
   "Non-nil when channel is server-local on a network that allows them."
@@ -3831,10 +3884,8 @@ the message given by REASON."
       (with-suppressed-warnings ((obsolete erc-server-reconnecting)
                                  (obsolete erc-reuse-buffers))
         (if erc-reuse-buffers
-            (progn (cl-assert (not erc--server-reconnecting))
-                   (cl-assert (not erc-server-reconnecting)))
-          (setq erc--server-reconnecting nil
-                erc-server-reconnecting nil)))))
+            (cl-assert (not erc-server-reconnecting))
+          (setq erc-server-reconnecting nil)))))
   t)
 
 (defun erc-cmd-RECONNECT (&rest args)
@@ -5904,7 +5955,13 @@ strings over to the next call."
   (with-current-buffer (if (buffer-live-p (erc-server-buffer))
                            (erc-server-buffer)
                          (current-buffer))
-    (setq erc-server-current-nick nick)))
+    (unless (equal erc-server-current-nick nick)
+      (setq erc-server-current-nick nick)
+      ;; This seems sensible but may well be superfluous.  Should
+      ;; really prove that it's actually needed via test scenario.
+      (when erc-server-connected
+        (erc-networks--id-reload erc-networks--id)))
+    nick))
 
 (defun erc-current-nick ()
   "Return the current nickname."
@@ -6306,6 +6363,15 @@ user input."
 
 ;; authentication
 
+(defun erc--unfun (maybe-fn)
+  "Return MAYBE-FN or whatever it returns."
+  (let ((s (if (functionp maybe-fn) (funcall maybe-fn) maybe-fn)))
+    (when (and erc-debug-irc-protocol
+               erc--debug-irc-protocol-mask-secrets
+               (stringp s))
+      (put-text-property 0 (length s) 'erc-secret t s))
+    s))
+
 (defun erc-login ()
   "Perform user authentication at the IRC server."
   (erc-log (format "login: nick: %s, user: %s %s %s :%s"
@@ -6315,7 +6381,7 @@ user input."
                    erc-session-server
                    erc-session-user-full-name))
   (if erc-session-password
-      (erc-server-send (concat "PASS :" erc-session-password))
+      (erc-server-send (concat "PASS :" (erc--unfun erc-session-password)))
     (message "Logging in without password"))
   (erc-server-send (format "NICK %s" (erc-current-nick)))
   (erc-server-send
diff --git a/lisp/files.el b/lisp/files.el
index b947451369..cd35fe3835 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1533,7 +1533,7 @@ in all cases, since that is the standard symbol for byte."
   (let ((power (if (or (null flavor) (eq flavor 'iec))
                   1024.0
                 1000.0))
-       (prefixes '("" "k" "M" "G" "T" "P" "E" "Z" "Y")))
+       (prefixes '("" "k" "M" "G" "T" "P" "E" "Z" "Y" "R" "Q")))
     (while (and (>= file-size power) (cdr prefixes))
       (setq file-size (/ file-size power)
            prefixes (cdr prefixes)))
@@ -2308,7 +2308,8 @@ it returns nil or exits non-locally."
   "Warn if an attempt to open file of SIZE bytes may run out of memory."
   (when (and (numberp size) (not (zerop size))
             (integerp out-of-memory-warning-percentage))
-    (let ((meminfo (memory-info)))
+    (let* ((default-directory temporary-file-directory)
+           (meminfo (memory-info)))
       (when (consp meminfo)
        (let ((total-free-memory (float (+ (nth 1 meminfo) (nth 3 meminfo)))))
          (when (> (/ size 1024)
@@ -8566,7 +8567,8 @@ Otherwise, trash FILENAME using the freedesktop.org 
conventions,
 
               ;; Make a .trashinfo file.  Use O_EXCL, as per trash-spec 1.0.
               (let* ((files-base (file-name-nondirectory fn))
-                      (is-directory (file-directory-p fn))
+                      (is-directory (and (file-directory-p fn)
+                                        (not (file-symlink-p fn))))
                       (overwrite nil)
                       info-fn)
                  ;; We're checking further down whether the info file
@@ -8596,10 +8598,27 @@ Otherwise, trash FILENAME using the freedesktop.org 
conventions,
                    (setq files-base (substring (file-name-nondirectory info-fn)
                                                 0 (- (length ".trashinfo"))))
                    (write-region nil nil info-fn nil 'quiet info-fn)))
-                ;; Finally, try to move the file to the trashcan.
+                ;; Finally, try to move the item to the trashcan.  If
+                 ;; it's a file, just move it.  Things are more
+                 ;; complicated for directories.  If the target
+                 ;; directory already exists (due to uniquification)
+                 ;; and the trash directory is in a different
+                 ;; filesystem, rename-file will error out, even when
+                 ;; 'overwrite' is non-nil.  Rather than worry about
+                 ;; whether we're crossing filesystems, just check if
+                 ;; we've moving a directory and the target directory
+                 ;; already exists.  That handles both the
+                 ;; same-filesystem and cross-filesystem cases.
                 (let ((delete-by-moving-to-trash nil)
                       (new-fn (file-name-concat trash-files-dir files-base)))
-                  (rename-file fn new-fn overwrite)))))))))
+                   (if (or (not is-directory)
+                           (not (file-exists-p new-fn)))
+                       (rename-file fn new-fn overwrite)
+                     (copy-directory fn
+                                     (file-name-as-directory new-fn)
+                                     t nil t)
+                     (delete-directory fn t))))))))))
+
 
 
 (defsubst file-attribute-type (attributes)
diff --git a/lisp/gnus/ChangeLog.3 b/lisp/gnus/ChangeLog.3
index a1ad22fd62..c55d6225e3 100644
--- a/lisp/gnus/ChangeLog.3
+++ b/lisp/gnus/ChangeLog.3
@@ -1109,7 +1109,7 @@
 
        * gnus-icalendar.el (gnus-icalendar-event:sync-to-org)
        (gnus-icalendar-event:inline-org-buttons): Allow for appointment
-       cancelations to be synced to org if the original appt has an org
+       cancellations to be synced to org if the original appt has an org
        outline.
 
 2013-11-13  Jan Tatarik  <jan.tatarik@gmail.com>
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 814d21823d..75ea34e135 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -89,8 +89,8 @@
   :group 'gnus-article)
 
 (defgroup gnus-article-emphasis nil
-  "Fontisizing articles."
-  :link '(custom-manual "(gnus)Article Fontisizing")
+  "Fontifying articles."
+  :link '(custom-manual "(gnus)Article Fontifying")
   :group 'gnus-article)
 
 (defgroup gnus-article-saving nil
@@ -2008,9 +2008,9 @@ always hide."
                    (gnus-article-hide-header "reply-to")))))
             ((eq elem 'date)
              (let ((date (with-current-buffer gnus-original-article-buffer
-                           ;; If date in `gnus-article-buffer' is localized
-                           ;; (`gnus-treat-date-user-defined'),
-                           ;; `days-between' might fail.
+                            ;; If date in `gnus-article-buffer' is localized
+                            ;; (`gnus-article-date-headers'),
+                            ;; `days-between' might fail.
                            (message-fetch-field "date"))))
                (when (and date
                           (< (days-between (current-time-string) date)
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index ceeb184854..cf5ca628cf 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -119,7 +119,7 @@
 
   "List of registry marks and their options.
 
-`gnus-registry-mark-article' will offer symbols from this list
+`gnus-registry-set-article-mark' will offer symbols from this list
 for completion.
 
 Each entry must have a character to be useful for summary mode
diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el
index 7941496be6..142070e466 100644
--- a/lisp/gnus/gnus-search.el
+++ b/lisp/gnus/gnus-search.el
@@ -48,7 +48,7 @@
 ;; The general flow is:
 
 ;; 1. The user calls one of `gnus-group-make-search-group' or
-;; `gnus-group-make-permanent-search-group' (or a few other entry
+;; `gnus-group-read-ephemeral-search-group' (or a few other entry
 ;; points).  These functions prompt for a search query, and collect
 ;; the groups to search, then create an nnselect group, setting an
 ;; 'nnselect-specs group parameter where 'nnselect-function is
diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el
index 13263dddc9..1acbe0bc93 100644
--- a/lisp/gnus/gnus-topic.el
+++ b/lisp/gnus/gnus-topic.el
@@ -427,7 +427,7 @@ inheritance."
 (defun gnus-group-prepare-topics (level &optional predicate lowest
                                        regexp list-topic topic-level)
   "List all newsgroups with unread articles of level LEVEL or lower.
-Use the `gnus-group-topics' to sort the groups.
+Use the `gnus-group-prepare-topics' to sort the groups.
 If PREDICATE is a function, list groups that the function returns non-nil;
 if it is t, list groups that have no unread articles.
 If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el
index 9cafc78ab8..654cc1cc51 100644
--- a/lisp/gnus/gnus-uu.el
+++ b/lisp/gnus/gnus-uu.el
@@ -1622,7 +1622,7 @@ Gnus might fail to display all of it.")
     state))
 
 ;; `gnus-uu-choose-action' chooses what action to perform given the name
-;; and `gnus-uu-file-action-list'.  Returns either nil if no action is
+;; and FILE-ACTION-LIST.  Return either nil if no action is
 ;; found, or the name of the command to run if such a rule is found.
 (defun gnus-uu-choose-action (file-name file-action-list &optional no-ignore)
   (let ((action-list (copy-sequence file-action-list))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index e0677ff6be..5589908764 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -7520,7 +7520,7 @@ to match all of yours addresses."
 ;;;###autoload
 (defun message-cancel-news (&optional arg)
   "Cancel an article you posted.
-If ARG, allow editing of the cancelation message."
+If ARG, allow editing of the cancellation message."
   (interactive "P")
   (unless (message-news-p)
     (error "This is not a news article; canceling is impossible"))
diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el
index 4d1ecbf864..faa288934d 100644
--- a/lisp/gnus/nnmaildir.el
+++ b/lisp/gnus/nnmaildir.el
@@ -670,7 +670,7 @@ This variable is set by `nnmaildir-request-article'.")
 (defun nnmaildir-open-server (server-string &optional defs)
   (let ((server (alist-get server-string nnmaildir--servers
                           nil nil #'equal))
-       dir size x)
+       dir size x prefix)
     (catch 'return
       (if server
          (and (nnmaildir--srv-groups server)
@@ -710,20 +710,11 @@ This variable is set by `nnmaildir-request-article'.")
           (car x)
           (setf (nnmaildir--srv-gnm server) t)
           (require 'nnmail))
-      (setq x (assq 'target-prefix defs))
-      (if x
-         (progn
-           (setq x (cadr x)
-                 x (eval x t)) ;FIXME: Why `eval'?
-           (setf (nnmaildir--srv-target-prefix server) x))
-       (setq x (assq 'create-directory defs))
-       (if x
-           (progn
-             (setq x (cadr x)
-                   x (eval x t) ;FIXME: Why `eval'?
-                   x (file-name-as-directory x))
-             (setf (nnmaildir--srv-target-prefix server) x))
-         (setf (nnmaildir--srv-target-prefix server) "")))
+      (setf prefix (cl-second (assq 'target-prefix defs))
+            (nnmaildir--srv-target-prefix server)
+            (if prefix
+                (eval prefix t)
+              ""))
       (setf (nnmaildir--srv-groups server)
            (gnus-make-hashtable size))
       (setq nnmaildir--cur-server server)
diff --git a/lisp/help.el b/lisp/help.el
index f956111a52..8e1b325141 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -747,14 +747,15 @@ or a buffer name."
           (setq-local outline-level (lambda () 1))
           (setq-local outline-minor-mode-cycle t
                       outline-minor-mode-highlight t
-                      outline-minor-mode-use-buttons 'insert)
+                      outline-minor-mode-use-buttons 'insert
+                      ;; Hide the longest body.
+                      outline-default-state 1
+                      outline-default-rules
+                      '((match-regexp . "Key translations")))
           (outline-minor-mode 1)
           (save-excursion
             (goto-char (point-min))
             (let ((inhibit-read-only t))
-              ;; Hide the longest body.
-              (when (re-search-forward "Key translations" nil t)
-               (outline-hide-subtree))
               ;; Hide ^Ls.
               (while (search-forward "\n\f\n" nil t)
                (put-text-property (1+ (match-beginning 0)) (1- (match-end 0))
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index 6b5cccec51..adffef4325 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -1336,10 +1336,12 @@ against '/a/b'.  For a buffer not associated with a 
file, this
 matches against the value of `default-directory' in that buffer."
   ( :description "directory name"
     :reader (read-from-minibuffer "Filter by directory name (regex): "))
-  (if-let ((it (with-current-buffer buf (ibuffer-buffer-file-name))))
-      (when-let ((dirname (file-name-directory it)))
-        (string-match qualifier dirname))
-    (when default-directory (string-match qualifier default-directory))))
+  (with-current-buffer buf
+    (if-let* ((filename (ibuffer-buffer-file-name))
+              (dirname (file-name-directory filename)))
+        (string-match qualifier dirname)
+      (when default-directory
+        (string-match qualifier default-directory)))))
 
 ;;;###autoload (autoload 'ibuffer-filter-by-size-gt  "ibuf-ext")
 (define-ibuffer-filter size-gt
diff --git a/lisp/info.el b/lisp/info.el
index 8860a664bd..05ad27e180 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -3329,6 +3329,13 @@ If FILE is nil, check the current Info file."
     (or node (error "No index"))
     (Info-goto-node node)))
 
+(defun info--ensure-not-in-directory-node ()
+  (if (equal (downcase (file-name-nondirectory Info-current-file))
+             "dir")
+      (error (substitute-command-keys
+              (concat "The Info directory node has no index; "
+                      "type \\[Info-menu] to select a manual")))))
+
 ;;;###autoload
 (defun Info-index (topic)
   "Look up a string TOPIC in the index for this manual and go to that entry.
@@ -3342,15 +3349,13 @@ Give an empty topic name to go to the Index node 
itself."
          (Info-complete-menu-buffer (clone-buffer))
          (Info-complete-nodes (Info-index-nodes))
          (Info-history-list nil))
-      (if (equal Info-current-file "dir")
-         (error "The Info directory node has no index; use m to select a 
manual"))
+      (info--ensure-not-in-directory-node)
       (unwind-protect
          (with-current-buffer Info-complete-menu-buffer
            (Info-goto-index)
            (completing-read "Index topic: " #'Info-complete-menu-item))
        (kill-buffer Info-complete-menu-buffer)))))
-  (if (equal Info-current-file "dir")
-      (error "The Info directory node has no index; use m to select a manual"))
+  (info--ensure-not-in-directory-node)
   ;; Strip leading colon in topic; index format does not allow them.
   (if (and (stringp topic)
           (> (length topic) 0)
@@ -3533,8 +3538,7 @@ search results."
          (Info-complete-menu-buffer (clone-buffer))
          (Info-complete-nodes (Info-index-nodes))
          (Info-history-list nil))
-      (if (equal Info-current-file "dir")
-         (error "The Info directory node has no index; use m to select a 
manual"))
+      (info--ensure-not-in-directory-node)
       (unwind-protect
          (with-current-buffer Info-complete-menu-buffer
            (Info-goto-index)
diff --git a/lisp/international/ucs-normalize.el 
b/lisp/international/ucs-normalize.el
index bc32b4f073..b6545faf80 100644
--- a/lisp/international/ucs-normalize.el
+++ b/lisp/international/ucs-normalize.el
@@ -531,6 +531,7 @@ COMPOSITION-PREDICATE will be used to compose region."
 ;; 
--------------------------------------------------------------------------------
 
 (defmacro ucs-normalize-string (ucs-normalize-region)
+  "Normalize string STR using the function UCS-NORMALIZE-REGION."
   `(with-temp-buffer
      (insert str)
      (,ucs-normalize-region (point-min) (point-max))
diff --git a/lisp/jsonrpc.el b/lisp/jsonrpc.el
index 1387fa3692..90833e1c1d 100644
--- a/lisp/jsonrpc.el
+++ b/lisp/jsonrpc.el
@@ -308,7 +308,7 @@ ignored."
                          (setq canceled t))
                        `(canceled ,cancel-on-input-retval))
                       (t (while t (accept-process-output nil 30)))))
-            ;; In normal operation, cancelation is handled by the
+            ;; In normal operation, cancellation is handled by the
             ;; timeout function and response filter, but we still have
             ;; to protect against user-quit (C-g) or the
             ;; `cancel-on-input' case.
diff --git a/lisp/leim/quail/latin-ltx.el b/lisp/leim/quail/latin-ltx.el
index 1dfeb79c17..f7655d2efc 100644
--- a/lisp/leim/quail/latin-ltx.el
+++ b/lisp/leim/quail/latin-ltx.el
@@ -483,6 +483,7 @@ system, including many technical ones.  Examples:
  ("\\rhd" ?â–·)
  ("\\ll" ?≪)
  ("\\llcorner" ?⌞)
+ ("\\lll" ?⋘)
  ("\\lnapprox" ?⋦)
  ("\\lneq" ?≨)
  ("\\lneqq" ?≨)
diff --git a/lisp/mouse.el b/lisp/mouse.el
index e38a4f8a71..f72ab4fc64 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -1579,6 +1579,7 @@ its value is returned."
         ;; `category' property at PT while doing the (get-char-property
         ;; pt property w)!
        (or (and str
+                 (< (cdr str) (length (car str)))
                 (get-text-property (cdr str) property (car str)))
             ;; Mouse clicks in the fringe come with a position in
             ;; (nth 5).  This is useful but is not exactly where we clicked, so
diff --git a/lisp/net/goto-addr.el b/lisp/net/goto-addr.el
index 86cf98004b..5b850b258c 100644
--- a/lisp/net/goto-addr.el
+++ b/lisp/net/goto-addr.el
@@ -222,25 +222,28 @@ and `goto-address-fontify-p'."
 
 ;;;###autoload
 (defun goto-address-at-point (&optional event)
-  "Send to the e-mail address or load the URL at point.
-Send mail to address at point.  See documentation for
-`goto-address-find-address-at-point'.  If no address is found
-there, then load the URL at or before point."
+  "Compose a new message to the e-mail address or open URL at point.
+
+Compose message to address at point.  See documentation for
+`goto-address-find-address-at-point'.
+
+If no e-mail address is found at point, open the URL at or before
+point using `browse-url'.  With a prefix argument, open the URL
+using `browse-url-secondary-browser-function' instead."
   (interactive (list last-input-event))
   (save-excursion
     (if event (posn-set-point (event-end event)))
     (let ((address (save-excursion (goto-address-find-address-at-point))))
       (if (and address
-              (save-excursion
-                (goto-char (previous-single-char-property-change
-                            (point) 'goto-address nil
-                            (line-beginning-position)))
-                (not (looking-at goto-address-url-regexp))))
-         (compose-mail address)
-       (let ((url (browse-url-url-at-point)))
-         (if url
-             (browse-url url)
-           (error "No e-mail address or URL found")))))))
+               (save-excursion
+                 (goto-char (previous-single-char-property-change
+                             (point) 'goto-address nil
+                             (line-beginning-position)))
+                 (not (looking-at goto-address-url-regexp))))
+          (compose-mail address)
+        (if-let ((url (browse-url-url-at-point)))
+            (browse-url-button-open-url url)
+          (error "No e-mail address or URL found"))))))
 
 (defun goto-address-find-address-at-point ()
   "Find e-mail address around or before point.
diff --git a/lisp/net/sasl-scram-rfc.el b/lisp/net/sasl-scram-rfc.el
index ee52ed6e07..f7a2e42541 100644
--- a/lisp/net/sasl-scram-rfc.el
+++ b/lisp/net/sasl-scram-rfc.el
@@ -45,14 +45,21 @@
 
 ;;; Generic for SCRAM-*
 
+(defvar sasl-scram-gs2-header-function 'sasl-scram-construct-gs2-header
+  "Function to create GS2 header.
+See https://www.rfc-editor.org/rfc/rfc5801#section-4.";)
+
+(defun sasl-scram-construct-gs2-header (client)
+  ;; The "n," means the client doesn't support channel binding, and
+  ;; the trailing comma is included as per RFC 5801.
+  (let ((authzid (sasl-client-property client 'authenticator-name)))
+    (concat "n," (and authzid "a=") authzid ",")))
+
 (defun sasl-scram-client-first-message (client _step)
   (let ((c-nonce (sasl-unique-id)))
     (sasl-client-set-property client 'c-nonce c-nonce))
   (concat
-   ;; n = client doesn't support channel binding
-   "n,"
-   ;; TODO: where would we get authorization id from?
-   ","
+   (funcall sasl-scram-gs2-header-function client)
    (sasl-scram--client-first-message-bare client)))
 
 (defun sasl-scram--client-first-message-bare (client)
@@ -77,11 +84,11 @@
 
         (c-nonce (sasl-client-property client 'c-nonce))
         ;; no channel binding, no authorization id
-        (cbind-input "n,,"))
+         (cbind-input (funcall sasl-scram-gs2-header-function client)))
     (unless (string-prefix-p c-nonce nonce)
       (sasl-error "Invalid nonce from server"))
     (let* ((client-final-message-without-proof
-           (concat "c=" (base64-encode-string cbind-input) ","
+            (concat "c=" (base64-encode-string cbind-input t) ","
                    "r=" nonce))
           (password
            ;; TODO: either apply saslprep or disallow non-ASCII characters
@@ -113,7 +120,7 @@
           (client-proof (funcall string-xor client-key client-signature))
           (client-final-message
            (concat client-final-message-without-proof ","
-                   "p=" (base64-encode-string client-proof))))
+                    "p=" (base64-encode-string client-proof t))))
       (sasl-client-set-property client 'auth-message auth-message)
       (sasl-client-set-property client 'salted-password salted-password)
       client-final-message)))
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index 49cbf526ec..90020fbb1b 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -168,6 +168,7 @@ It is used for TCP/IP devices."
     (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
     (make-process . tramp-adb-handle-make-process)
     (make-symbolic-link . tramp-handle-make-symbolic-link)
+    (memory-info . tramp-handle-memory-info)
     (process-attributes . tramp-handle-process-attributes)
     (process-file . tramp-adb-handle-process-file)
     (rename-file . tramp-adb-handle-rename-file)
diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el
index 5b2af7c6b2..1a64689c53 100644
--- a/lisp/net/tramp-archive.el
+++ b/lisp/net/tramp-archive.el
@@ -183,23 +183,32 @@ It must be supported by libarchive(3).")
 ;; The definition of `tramp-archive-file-name-regexp' contains calls
 ;; to `regexp-opt', which cannot be autoloaded while loading
 ;; loaddefs.el.  So we use a macro, which is evaluated only when needed.
-;; When tramp-archive.el is unloaded and reloaded, it gripes about
-;; missing `tramp-archive{-compression]-suffixes'.  We protect this.
+;; Emacs 26 and earlier cannot use the autoload form
+;; `tramp-compat-rx'.  So we refrain from using `rx'.
 ;;;###autoload
 (progn (defmacro tramp-archive-autoload-file-name-regexp ()
   "Regular expression matching archive file names."
-  `(tramp-compat-rx
+  (if (<= emacs-major-version 26)
+  '(concat
+    "\\`" "\\(" ".+" "\\."
+      ;; Default suffixes ...
+      (regexp-opt tramp-archive-suffixes)
+      ;; ... with compression.
+      "\\(?:" "\\." (regexp-opt tramp-archive-compression-suffixes) "\\)*"
+    "\\)" ;; \1
+    "\\(" "/" ".*" "\\)" "\\'") ;; \2
+  `(rx
     bos
     ;; This group is used in `tramp-archive-file-name-archive'.
     (group
      (+ nonl)
      ;; Default suffixes ...
-     "." ,(cons '| (bound-and-true-p tramp-archive-suffixes))
+     "." (| ,@tramp-archive-suffixes)
      ;; ... with compression.
-     (? "." ,(cons '| (bound-and-true-p tramp-archive-compression-suffixes))))
+     (? "." (| ,@tramp-archive-compression-suffixes)))
     ;; This group is used in `tramp-archive-file-name-localname'.
     (group "/" (* nonl))
-    eos)))
+    eos))))
 
 (put #'tramp-archive-autoload-file-name-regexp 'tramp-autoload t)
 
@@ -288,6 +297,7 @@ It must be supported by libarchive(3).")
     (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
     (make-process . ignore)
     (make-symbolic-link . tramp-archive-handle-not-implemented)
+    ;; `memory-info' performed by default handler.
     (process-attributes . ignore)
     (process-file . ignore)
     (rename-file . tramp-archive-handle-not-implemented)
diff --git a/lisp/net/tramp-crypt.el b/lisp/net/tramp-crypt.el
index 0973258157..fa40f96818 100644
--- a/lisp/net/tramp-crypt.el
+++ b/lisp/net/tramp-crypt.el
@@ -219,6 +219,7 @@ If NAME doesn't belong to an encrypted remote directory, 
return nil."
     (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
     (make-process . ignore)
     (make-symbolic-link . tramp-handle-make-symbolic-link)
+    (memory-info . ignore)
     (process-attributes . ignore)
     (process-file . ignore)
     (rename-file . tramp-crypt-handle-rename-file)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 477f8fb3fd..73f773e8f4 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -813,6 +813,7 @@ It has been changed in GVFS 1.14.")
     (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
     (make-process . ignore)
     (make-symbolic-link . tramp-handle-make-symbolic-link)
+    (memory-info . ignore)
     (process-attributes . ignore)
     (process-file . ignore)
     (rename-file . tramp-gvfs-handle-rename-file)
diff --git a/lisp/net/tramp-rclone.el b/lisp/net/tramp-rclone.el
index 9e379da8c1..8e583cc402 100644
--- a/lisp/net/tramp-rclone.el
+++ b/lisp/net/tramp-rclone.el
@@ -133,6 +133,7 @@
     (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
     (make-process . ignore)
     (make-symbolic-link . tramp-handle-make-symbolic-link)
+    (memory-info . ignore)
     (process-attributes . ignore)
     (process-file . ignore)
     (rename-file . tramp-rclone-handle-rename-file)
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index cfecd32aba..df5800f4e9 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -1103,6 +1103,7 @@ Format specifiers \"%s\" are replaced before the script 
is used.")
     (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
     (make-process . tramp-sh-handle-make-process)
     (make-symbolic-link . tramp-sh-handle-make-symbolic-link)
+    (memory-info . tramp-handle-memory-info)
     (process-attributes . tramp-handle-process-attributes)
     (process-file . tramp-sh-handle-process-file)
     (rename-file . tramp-sh-handle-rename-file)
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index e55f6bb6ee..c720b33b5f 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -284,6 +284,7 @@ See `tramp-actions-before-shell' for more info.")
     (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
     (make-process . ignore)
     (make-symbolic-link . tramp-smb-handle-make-symbolic-link)
+    (memory-info . ignore)
     (process-attributes . ignore)
     (process-file . tramp-smb-handle-process-file)
     (rename-file . tramp-smb-handle-rename-file)
diff --git a/lisp/net/tramp-sshfs.el b/lisp/net/tramp-sshfs.el
index 3c67fa6ea2..44c55041ff 100644
--- a/lisp/net/tramp-sshfs.el
+++ b/lisp/net/tramp-sshfs.el
@@ -139,6 +139,7 @@
     (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
     (make-process . tramp-handle-make-process)
     (make-symbolic-link . tramp-handle-make-symbolic-link)
+    (memory-info . tramp-handle-memory-info)
     (process-attributes . tramp-handle-process-attributes)
     (process-file . tramp-sshfs-handle-process-file)
     (rename-file . tramp-sshfs-handle-rename-file)
@@ -214,7 +215,8 @@ arguments to pass to the OPERATION."
    (with-parsed-tramp-file-name default-directory nil
      (with-tramp-connection-property (tramp-get-process v) "remote-path"
        (with-temp-buffer
-        (process-file "getconf" nil t nil "PATH")
+         (let (process-file-side-effects)
+          (process-file "getconf" nil t nil "PATH"))
         (split-string
          (progn
            ;; Read the expression.
diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el
index bc8739c4d6..fcc27dd834 100644
--- a/lisp/net/tramp-sudoedit.el
+++ b/lisp/net/tramp-sudoedit.el
@@ -129,6 +129,7 @@ See `tramp-actions-before-shell' for more info.")
     (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
     (make-process . ignore)
     (make-symbolic-link . tramp-sudoedit-handle-make-symbolic-link)
+    (memory-info . ignore)
     (process-attributes . ignore)
     (process-file . ignore)
     (rename-file . tramp-sudoedit-handle-rename-file)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index e9f30bea7b..33e5e80d05 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2656,7 +2656,7 @@ Must be handled by the callers."
              ;; Emacs 27+ only.
              exec-path make-process
              ;; Emacs 29+ only.
-              list-system-processes process-attributes))
+              list-system-processes memory-info process-attributes))
     default-directory)
    ;; PROC.
    ((member operation '(file-notify-rm-watch file-notify-valid-p))
@@ -4884,6 +4884,84 @@ support symbolic links."
    (tramp-dissect-file-name (expand-file-name linkname)) 'file-error
    "make-symbolic-link not supported"))
 
+(defun tramp-handle-memory-info ()
+  "Like `memory-info' for Tramp files."
+  (let ((result '(0 0 0 0))
+        process-file-side-effects)
+    (with-temp-buffer
+      (cond
+       ;; GNU/Linux.
+       ((zerop (process-file "cat" nil '(t) nil "/proc/meminfo"))
+        (goto-char (point-min))
+        (when
+            (re-search-forward
+             (rx bol "MemTotal:" (* space) (group (+ digit)) (* space) "kB" 
eol)
+             nil 'noerror)
+          (setcar (nthcdr 0 result) (string-to-number (match-string 1))))
+        (goto-char (point-min))
+        (when
+            (re-search-forward
+             (rx bol "MemFree:" (* space) (group (+ digit)) (* space) "kB" eol)
+             nil 'noerror)
+          (setcar (nthcdr 1 result) (string-to-number (match-string 1))))
+        (goto-char (point-min))
+        (when
+            (re-search-forward
+             (rx bol "SwapTotal:" (* space) (group (+ digit)) (* space) "kB" 
eol)
+             nil 'noerror)
+          (setcar (nthcdr 2 result) (string-to-number (match-string 1))))
+        (goto-char (point-min))
+        (when
+            (re-search-forward
+             (rx bol "SwapFree:" (* space) (group (+ digit)) (* space) "kB" 
eol)
+             nil 'noerror)
+          (setcar (nthcdr 3 result) (string-to-number (match-string 1)))))
+
+       ;; BSD.
+       ;; 
https://raw.githubusercontent.com/ocochard/myscripts/master/FreeBSD/freebsd-memory.sh
+       ((zerop (process-file "sysctl" nil '(t) nil "-a"))
+        (goto-char (point-min))
+        (when
+            (re-search-forward
+             (rx bol "hw.pagesize:" (* space) (group (+ digit)) eol)
+             nil 'noerror)
+          (let ((pagesize (string-to-number (match-string 1))))
+            (goto-char (point-min))
+            (when
+                (re-search-forward
+                 (rx bol "vm.stats.vm.v_page_count:" (* space)
+                     (group (+ digit)) eol)
+                 nil 'noerror)
+              (setcar
+               (nthcdr 0 result)
+               (/ (* (string-to-number (match-string 1)) pagesize) 1024)))
+            (goto-char (point-min))
+            (when
+                (re-search-forward
+                 (rx bol "vm.stats.vm.v_free_count:" (* space)
+                     (group (+ digit)) eol)
+                 nil 'noerror)
+              (setcar
+               (nthcdr 1 result)
+               (/ (* (string-to-number (match-string 1)) pagesize) 1024)))))
+        (erase-buffer)
+        (when (zerop (process-file "swapctl" nil '(t) nil "-sk"))
+          (goto-char (point-min))
+          (when
+              (re-search-forward
+               (rx bol "Total:" (* space)
+                   (group (+ digit)) (* space) (group (+ digit)) eol)
+               nil 'noerror)
+            (setcar (nthcdr 2 result) (string-to-number (match-string 1)))
+            (setcar
+             (nthcdr 3 result)
+             (- (string-to-number (match-string 1))
+                (string-to-number (match-string 2)))))))))
+
+    ;; Return result.
+    (unless (equal result '(0 0 0 0))
+      result)))
+
 (defun tramp-handle-process-attributes (pid)
   "Like `process-attributes' for Tramp files."
   (catch 'result
diff --git a/lisp/outline.el b/lisp/outline.el
index 2465a4963a..86ac19aa41 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -1777,7 +1777,12 @@ With a prefix argument, show headings up to that LEVEL."
         (propertize (icon-string icon-name)
                     'mouse-face 'default
                     'follow-link 'mouse-face
-                    'keymap (define-keymap "<mouse-2>" #'outline-cycle)))
+                    'keymap (define-keymap
+                              "<mouse-2>" #'outline-cycle
+                              ;; Need to override the global binding
+                              ;; `mouse-appearance-menu' with <down->:
+                              "S-<down-mouse-1>" #'ignore
+                              "S-<mouse-1>" #'outline-cycle-buffer)))
       (list 'outline-open
             (if outline--use-rtl 'outline-close-rtl 'outline-close))))))
 
@@ -1805,10 +1810,11 @@ With a prefix argument, show headings up to that LEVEL."
            (overlay-put o 'mouse-face 'highlight)
            (overlay-put o 'keymap (define-keymap
                                     "RET" #'outline-cycle
-                                    "<mouse-2>" #'outline-cycle))
-           (overlay-put o 'help-echo (if (eq type 'close)
-                                         "Click to show"
-                                       "Click to hide")))
+                                    "<mouse-2>" #'outline-cycle
+                                    ;; Need to override the global binding
+                                    ;; `mouse-appearance-menu' with <down->:
+                                    "S-<down-mouse-1>" #'ignore
+                                    "S-<mouse-1>" #'outline-cycle-buffer)))
           ('in-margins
            (overlay-put o 'before-string icon)
            (overlay-put o 'keymap (define-keymap "RET" #'outline-cycle)))
diff --git a/lisp/paren.el b/lisp/paren.el
index e2c060ceb9..1d7fb1c462 100644
--- a/lisp/paren.el
+++ b/lisp/paren.el
@@ -410,6 +410,10 @@ It is the default value of `show-paren-data-function'."
                 (line-end-position))))
     (setq show-paren--context-overlay (make-overlay beg end)))
   (overlay-put show-paren--context-overlay 'display text)
+  ;; Use the (default very high) `show-paren-priority' ensuring that
+  ;; not other overlays shine through (bug#59527).
+  (overlay-put show-paren--context-overlay 'priority
+               show-paren-priority)
   (overlay-put show-paren--context-overlay
                'face `(:box
                        ( :line-width (1 . -1)
diff --git a/lisp/progmodes/antlr-mode.el b/lisp/progmodes/antlr-mode.el
index 1aee1107e6..b722790334 100644
--- a/lisp/progmodes/antlr-mode.el
+++ b/lisp/progmodes/antlr-mode.el
@@ -169,7 +169,7 @@ greater than this number."
 (defcustom antlr-indent-comment 'tab
   "Non-nil, if the indentation should touch lines in block comments.
 If nil, no continuation line of a block comment is changed.  If t, they
-are changed according to `c-indentation-line'.  When not nil and not t,
+are changed according to `c-indent-line'.  When not nil and not t,
 they are only changed by \\[antlr-indent-command]."
   :type '(radio (const :tag "No" nil)
                (const :tag "Always" t)
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index 6eaf200182..a79dabcd31 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -29,7 +29,7 @@
 ;;; Code:
 
 (require 'treesit)
-(require 'rx)
+(eval-when-compile (require 'rx))
 
 (declare-function treesit-parser-create "treesit.c")
 (declare-function treesit-induce-sparse-tree "treesit.c")
@@ -269,7 +269,7 @@ MODE is either `c' or `cpp'."
    :feature 'definition
    ;; Highlights identifiers in declarations.
    `((declaration
-      declarator: (_) @font-lock-variable-name-face)
+      declarator: (_) @c-ts-mode--fontify-declarator)
 
      (field_declaration
       declarator: (_) @c-ts-mode--fontify-declarator)
@@ -295,26 +295,26 @@ MODE is either `c' or `cpp'."
              (identifier) @font-lock-variable-name-face))
      (assignment_expression
       left: (subscript_expression
-             (identifier) @font-lock-variable-name-face)))
+             (identifier) @font-lock-variable-name-face))
+     (init_declarator declarator: (_) @c-ts-mode--fontify-declarator))
 
    :language mode
-   :feature 'expression
+   :feature 'function
    '((call_expression
-      function: (identifier) @font-lock-function-name-face)
-     (field_expression
-      argument: (identifier) @font-lock-variable-name-face)
-     (pointer_expression
-      (identifier) @font-lock-variable-name-face))
+      function: (identifier) @font-lock-function-name-face))
+
+   :language mode
+   :feature 'variable
+   '((identifier) @c-ts-mode--fontify-variable)
 
    :language mode
    :feature 'label
-   '((expression_statement (identifier) @font-lock-variable-name-face)
-     (labeled_statement
+   '((labeled_statement
       label: (statement_identifier) @font-lock-constant-face))
 
    :language mode
    :feature 'error
-   '((ERROR) @font-lock-warning-face)
+   '((ERROR) @c-ts-fontify-error)
 
    :feature 'escape-sequence
    :language mode
@@ -367,6 +367,19 @@ For NODE, OVERRIDE, START, END, and ARGS, see
         (_ 'font-lock-variable-name-face))
       override))))
 
+(defun c-ts-mode--fontify-variable (node override start end &rest _)
+  "Fontify an identifier node.
+Fontify it if NODE is not a function identifier.  For NODE,
+OVERRIDE, START, END, and ARGS, see `treesit-font-lock-rules'."
+  (when (not (equal (treesit-node-type
+                     (treesit-node-parent node))
+                    "call_expression"))
+    (treesit-fontify-with-override
+     (max (treesit-node-start node) start)
+     (min (treesit-node-end node) end)
+     'font-lock-variable-name-face
+     override)))
+
 (defun c-ts-mode--fontify-defun (node override start end &rest _)
   "Correctly fontify the DEFUN macro.
 For NODE, OVERRIDE, START, and END, see
@@ -408,6 +421,26 @@ This function corrects the fontification on the colon in
            (min end (treesit-node-end arg))
            'default override))))))
 
+(defun c-ts-fontify-error (node override start end &rest _)
+  "Fontify the error nodes.
+For NODE, OVERRIDE, START, and END, see
+`treesit-font-lock-rules'."
+  (let ((parent (treesit-node-parent node))
+        (child (treesit-node-child node 0)))
+    (treesit-fontify-with-override
+     (max start (treesit-node-start node))
+     (min end (treesit-node-end node))
+     (cond
+      ;; This matches the case MACRO(struct a, b, c)
+      ;; where struct is seen as error.
+      ((and (equal (treesit-node-type child) "identifier")
+            (equal (treesit-node-type parent) "argument_list")
+            (member (treesit-node-text child)
+                    '("struct" "long" "short" "enum" "union")))
+       'font-lock-keyword-face)
+      (t 'font-lock-warning-face))
+     override)))
+
 (defun c-ts-mode--imenu-1 (node)
   "Helper for `c-ts-mode--imenu'.
 Find string representation for NODE and set marker, then recurse
@@ -495,10 +528,10 @@ the subtrees."
   (setq-local which-func-functions nil)
 
   (setq-local treesit-font-lock-feature-list
-              '(( comment constant keyword literal preprocessor string)
-                ( assignment definition label property type)
-                ( bracket delimiter error escape-sequence expression
-                  operator))))
+              '(( comment definition)
+                ( keyword preprocessor string type)
+                ( assignment constant escape-sequence label literal property )
+                ( bracket delimiter error function operator variable))))
 
 ;;;###autoload
 (define-derived-mode c-ts-mode c-ts-mode--base-mode "C"
@@ -512,10 +545,13 @@ the subtrees."
 
   ;; Comments.
   (setq-local comment-start "/* ")
-  (setq-local comment-start-skip "\\(?://+\\|/\\*+\\)\\s *")
   (setq-local comment-end " */")
-  (setq-local treesit-comment-start (rx "/" (or (+ "/") (+ "*"))))
-  (setq-local treesit-comment-end (rx (+ (or "*")) "/"))
+  (setq-local comment-start-skip (rx (group "/" (or (+ "/") (+ "*")))
+                                     (* (syntax whitespace))))
+  (setq-local comment-end-skip
+              (rx (* (syntax whitespace))
+                  (group (or (syntax comment-end)
+                             (seq (+ "*") "/")))))
 
   (setq-local treesit-simple-indent-rules
               (c-ts-mode--set-indent-style 'c))
@@ -535,8 +571,13 @@ the subtrees."
 
   ;; Comments.
   (setq-local comment-start "// ")
-  (setq-local comment-start-skip "\\(?://+\\|/\\*+\\)\\s *")
   (setq-local comment-end "")
+  (setq-local comment-start-skip (rx (group "/" (or (+ "/") (+ "*")))
+                                     (* (syntax whitespace))))
+  (setq-local comment-end-skip
+              (rx (* (syntax whitespace))
+                  (group (or (syntax comment-end)
+                             (seq (+ "*") "/")))))
 
   (treesit-parser-create 'cpp)
 
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 7e6dd43175..11ddb39ed9 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -4017,7 +4017,7 @@ initializing CC Mode.  Currently (2020-06) these are 
`js-mode' and
         (t from))))))
 
 (defun c-remove-stale-state-cache (start-point here pps-point)
-  ;; Remove stale entries from the `c-cache-state', i.e. those which will
+  ;; Remove stale entries from the `c-state-cache', i.e. those which will
   ;; not be in it when it is amended for position HERE.  This may involve
   ;; replacing a CONS element for a brace pair containing HERE with its car.
   ;; Additionally, the "outermost" open-brace entry before HERE will be
@@ -4951,30 +4951,31 @@ comment at the start of cc-engine.el for more info."
       "\\w\\|\\s_\\|\\s\"\\|\\s|"
     "\\w\\|\\s_\\|\\s\""))
 
-(defun c-forward-over-token (&optional balanced)
+(defun c-forward-over-token (&optional balanced limit)
   "Move forward over a token.
 Return t if we moved, nil otherwise (i.e. we were at EOB, or a
 non-token or BALANCED is non-nil and we can't move).  If we
 are at syntactic whitespace, move over this in place of a token.
 
 If BALANCED is non-nil move over any balanced parens we are at, and never move
-out of an enclosing paren."
+out of an enclosing paren.  LIMIT is the limit to where we might move to."
   (let ((jump-syntax (if balanced
                         c-jump-syntax-balanced
                       c-jump-syntax-unbalanced))
-       (here (point)))
+       (here (point))
+       (limit (or limit (point-max))))
     (condition-case nil
        (cond
         ((/= (point)
-             (progn (c-forward-syntactic-ws) (point)))
+             (progn (c-forward-syntactic-ws limit) (point)))
          ;; If we're at whitespace, count this as the token.
          t)
         ((eobp) nil)
         ((looking-at jump-syntax)
-         (goto-char (scan-sexps (point) 1))
+         (goto-char (min limit (scan-sexps (point) 1)))
          t)
         ((looking-at c-nonsymbol-token-regexp)
-         (goto-char (match-end 0))
+         (goto-char (min (match-end 0) limit))
          t)
         ((save-restriction
            (widen)
@@ -10103,7 +10104,7 @@ This function might do hidden buffer changes."
   ;;   Specifically it is nil, or a three element list (A B C) where C is t
   ;;   when context is '<> and the "identifier" is a found type, B is t when a
   ;;   `c-typedef-kwds' ("typedef") is present, and A is t when some other
-  ;;   `c-typedef-declkwds' (e.g. class, struct, enum) specifier is present.
+  ;;   `c-typedef-decl-kwds' (e.g. class, struct, enum) specifier is present.
   ;;   I.e., (some of) the declared identifier(s) are types.
   ;;
   ;;   The third element of the return value is non-nil when the declaration
@@ -11076,8 +11077,9 @@ This function might do hidden buffer changes."
                              at-decl-start))
                 (let ((space-before-id
                        (save-excursion
-                         (goto-char name-start)
-                         (or (bolp) (memq (char-before) '(?\  ?\t)))))
+                         (goto-char id-start) ; Position of "*".
+                         (and (> (skip-chars-forward "* \t\n\r") 0)
+                              (memq (char-before) '(?\  ?\t ?\n ?\r)))))
                       (space-after-type
                        (save-excursion
                          (goto-char type-start)
@@ -11087,6 +11089,8 @@ This function might do hidden buffer changes."
                                   (memq (char-after) '(?\  ?\t)))))))
                   (when (not (eq (not space-before-id)
                                  (not space-after-type)))
+                    (when (eq at-type 'maybe)
+                      (setq unsafe-maybe t))
                     (setq maybe-expression t)
                     (throw 'at-decl-or-cast t)))))
 
@@ -15518,7 +15522,7 @@ Cannot combine absolute offsets %S and %S in `add' 
method"
 
 (defun c-get-syntactic-indentation (langelems)
   ;; Calculate the syntactic indentation from a syntactic description
-  ;; as returned by `c-guess-syntax'.
+  ;; as returned by `c-guess-basic-syntax'.
   ;;
   ;; Note that topmost-intro always has an anchor position at bol, for
   ;; historical reasons.  It's often used together with other symbols
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 561aa0f7e5..581685cad7 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1188,7 +1188,7 @@ definition, or nil if the language doesn't have any."
   t (if (c-lang-const c-opt-cpp-macro-define)
        (concat (c-lang-const c-anchored-cpp-prefix)
                (c-lang-const c-opt-cpp-macro-define)
-               "[ \t]+\\(\\sw\\|_\\)+\\([^(a-zA-Z0-9_]\\|$\\)")))
+               "[ \t]+[a-zA-Z0-9_]+\\([^(a-zA-Z0-9_]\\|$\\)")))
 
 (c-lang-defconst c-cpp-expr-directives
   "List of cpp directives (without the prefix) that are followed by an
@@ -1440,7 +1440,7 @@ since CC Mode treats every identifier as an expression."
 
 (c-lang-defconst c-overloadable-operators
   "List of the operators that are overloadable, in their \"identifier
-form\".  See also `c-op-identifier-prefix'."
+form\".  See also `c-opt-op-identifier-prefix'."
   t    nil
   c++  '("new" "delete" ;; Can be followed by "[]" but we ignore that.
         "+" "-" "*" "/" "%"
@@ -2526,7 +2526,7 @@ their matching \"in\" syntactic symbols.")
            (c-lang-const c-brace-list-decl-kwds)))
 
 (c-lang-defconst c-defun-type-name-decl-key
-  ;; Regexp matching a keyword in `c-defun-name-decl-kwds'.
+  ;; Regexp matching a keyword in `c-defun-type-name-decl-kwds'.
   t (c-make-keywords-re t (c-lang-const c-defun-type-name-decl-kwds)))
 (c-lang-defvar c-defun-type-name-decl-key
   (c-lang-const c-defun-type-name-decl-key))
@@ -2620,7 +2620,7 @@ type."
 
 (c-lang-defconst c-equals-nontype-decl-key
   ;; An unadorned regular expression which matches any member of
-  ;; `c-equals-decl-kwds', or nil if such don't exist in the current language.
+  ;; `c-equals-nontype-decl-kwds', or nil if such don't exist in the current 
language.
   t (when (c-lang-const c-equals-nontype-decl-kwds)
       (c-make-keywords-re nil (c-lang-const c-equals-nontype-decl-kwds))))
 (c-lang-defvar c-equals-nontype-decl-key
@@ -4486,7 +4486,7 @@ accomplish that conveniently."
           (error
            (if current-var
                (message
-                "Eval error in the `c-lang-defvar' or `c-lang-setver' for `%s' 
(source eval): %S"
+                "Eval error in the `c-lang-defvar' or `c-lang-setvar' for `%s' 
(source eval): %S"
                 current-var err)
              (signal (car err) (cdr err)))))))
     ))
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 5a610253e0..6a2c2f2911 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -1391,7 +1391,7 @@ Note that the style variables are always made local to 
the buffer."
 (defvar c-bc-changed-stringiness nil)
 ;; Non-nil when, in a before-change function, the deletion of a range of text
 ;; will change the "stringiness" of the subsequent text.  Only used when
-;; `c-multiline-sting-start-char' is a non-nil value which isn't a character.
+;; `c-multiline-string-start-char' is a non-nil value which isn't a character.
 
 (defun c-remove-string-fences (&optional here)
   ;; The character after HERE (default point) is either a string delimiter or
@@ -1713,7 +1713,7 @@ position of `after-change-functions'.")
   ;;
   ;; This function is called exclusively as an after-change function via
   ;; `c-before-font-lock-functions'.  In C++ Mode, it should come before
-  ;; `c-after-change-unmark-raw-strings' in that lang variable.
+  ;; `c-after-change-unmark-ml-strings' in that lang variable.
   (let (lit-start                     ; Don't calculate this till we have to.
        lim)
     (when
@@ -2482,7 +2482,8 @@ with // and /*, not more generic line and block comments."
       (let* ((lim1 (save-excursion
                     (and (c-beginning-of-macro)
                          (progn (c-end-of-macro) (point)))))
-            (decl-res (c-forward-declarator)))
+            (lim+ (c-determine-+ve-limit 200))
+            (decl-res (c-forward-declarator lim+)))
        (if (or (cadr (cddr (cddr decl-res))) ; We scanned an arglist.
                (and (eq (char-after) ?\()    ; Move over a non arglist (...).
                     (prog1 (c-go-list-forward)
@@ -2499,7 +2500,7 @@ with // and /*, not more generic line and block comments."
                   (c-backward-syntactic-ws lim1)
                   (eq (char-before) ?\())
                 (c-fl-decl-end (1- (point))))
-             (c-forward-over-token)
+             (c-forward-over-token nil lim+) ; The , or ) after the declarator.
              (point))
          (if (progn (c-forward-syntactic-ws)
                     (not (eobp)))
diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el
new file mode 100644
index 0000000000..6712fcc57e
--- /dev/null
+++ b/lisp/progmodes/csharp-mode.el
@@ -0,0 +1,925 @@
+;;; csharp-mode.el --- Support for editing C#  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2022  Free Software Foundation, Inc.
+
+;; Author     : Theodor Thornhill <theo@thornhill.no>
+;;              Jostein Kjønigsen <jostein@kjonigsen.net>
+;; Maintainer : Theodor Thornhill <theo@thornhill.no>
+;;              Jostein Kjønigsen <jostein@kjonigsen.net>
+;; Created    : September 2022
+;; Keywords   : c# languages oop
+
+;; This file is part of GNU Emacs.
+
+;; This program 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.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Support for editing C#.
+
+;;; Code:
+
+(require 'compile)
+(require 'cc-mode)
+(require 'cc-langs)
+(require 'treesit)
+
+(eval-when-compile
+  (require 'cc-fonts)
+  (require 'rx))
+
+(declare-function treesit-parser-create "treesit.c")
+(declare-function treesit-induce-sparse-tree "treesit.c")
+(declare-function treesit-node-start "treesit.c")
+(declare-function treesit-node-child-by-field-name "treesit.c")
+
+(defgroup csharp nil
+  "Major mode for editing C# code."
+  :group 'prog-mode)
+
+(eval-and-compile
+  (defconst csharp--regex-identifier
+    "[A-Za-z][A-Za-z0-9_]*"
+    "Regex describing an identifier in C#.")
+
+  (defconst csharp--regex-identifier-matcher
+    (concat "\\(" csharp--regex-identifier "\\)")
+    "Regex matching an identifier in C#.")
+
+  (defconst csharp--regex-type-name
+    "[A-Z][A-Za-z0-9_]*"
+    "Regex describing a type identifier in C#.")
+
+  (defconst csharp--regex-type-name-matcher
+    (concat "\\(" csharp--regex-type-name "\\)")
+    "Regex matching a type identifier in C#.")
+
+  (defconst csharp--regex-using-or-namespace
+    (concat "^using" "\\|" "namespace"
+            "\\s *"
+            csharp--regex-type-name-matcher)
+    "Regex matching identifiers after a using or namespace
+    declaration."))
+
+(eval-and-compile
+  (c-add-language 'csharp-mode 'java-mode)
+
+  (defun csharp--make-mode-syntax-table ()
+    (let ((table (make-syntax-table)))
+      (c-populate-syntax-table table)
+      (modify-syntax-entry ?@ "_" table)
+      table))
+  (defvar csharp--make-mode-syntax-table #'csharp--make-mode-syntax-table
+    "Workaround for Emacs bug#57065."))
+
+(c-lang-defconst c-make-mode-syntax-table
+  csharp #'csharp--make-mode-syntax-table)
+
+(c-lang-defconst c-identifier-syntax-modifications
+  csharp (append '((?@ . "w"))
+                 (c-lang-const c-identifier-syntax-modifications)))
+
+(c-lang-defconst c-symbol-start
+  csharp (concat "[" c-alpha "_@]"))
+
+(c-lang-defconst c-opt-type-suffix-key
+  csharp (concat "\\(\\[" (c-lang-const c-simple-ws) "*\\]\\|\\?\\)"))
+
+(c-lang-defconst c-identifier-ops
+  csharp '((left-assoc ".")))
+
+(c-lang-defconst c-overloadable-operators
+  csharp '("+" "-" "*" "/" "%" "&" "|" "^" "<<" ">>" "=="
+           "!=" ">" "<" ">=" "<="))
+
+(c-lang-defconst c-multiline-string-start-char
+  csharp ?@)
+
+(c-lang-defconst c-ml-string-opener-re
+  ;; "\\(\\(?:@\\$?\\)\\(\"\\)\\)"
+  csharp
+  (rx
+   (group
+    (or "@" "@$")
+    (group "\""))))
+
+(c-lang-defconst c-ml-string-max-opener-len
+  csharp 3)
+
+(c-lang-defconst c-ml-string-max-closer-len
+  csharp 2)
+
+(c-lang-defconst c-ml-string-any-closer-re
+  ;; "\\(?:\"\"\\)*\\(\\(\"\\)\\)\\(?:[^\"]\\|\\'\\)"
+  csharp
+  (rx
+   (seq
+    (zero-or-more "\"\"")
+    (group
+     (group "\""))
+    (or (not (any "\"")) eos))))
+
+(c-lang-defconst c-ml-string-back-closer-re
+  ;; "\\(?:\\`\\|[^\"]\\)\"*"
+  csharp
+  (rx
+   (seq
+    (or bos
+        (not (any "\"")))
+    (zero-or-more "\""))))
+
+(c-lang-defconst c-type-prefix-kwds
+  csharp '("class" "interface" "struct"))
+
+(c-lang-defconst c-class-decl-kwds
+  csharp '("class" "interface" "struct"))
+
+;;; Keyword lists
+
+(c-lang-defconst c-primitive-type-kwds
+  csharp '("bool" "byte" "sbyte" "char" "decimal" "double" "float" "int" "uint"
+           "long" "ulong" "short" "ushort" "void" "object" "string" "var"))
+
+(c-lang-defconst c-other-decl-kwds
+  csharp nil)
+
+(c-lang-defconst c-type-list-kwds
+  csharp nil)
+
+(c-lang-defconst c-other-block-decl-kwds
+  csharp nil)
+
+(c-lang-defconst c-return-kwds
+  csharp '("return"))
+
+(c-lang-defconst c-typedef-kwds
+  csharp nil)
+
+(c-lang-defconst c-typeof-kwds
+  csharp '("typeof" "is" "as"))
+
+(c-lang-defconst c-type-modifier-prefix-kwds
+  csharp '("volatile"))
+
+(c-lang-defconst c-type-modifier-kwds
+  csharp '("readonly" "new"))
+
+(c-lang-defconst c-brace-list-decl-kwds
+  csharp '("enum" "new"))
+
+(c-lang-defconst c-recognize-post-brace-list-type-p
+  csharp t)
+
+(c-lang-defconst c-ref-list-kwds
+  csharp nil)
+
+(c-lang-defconst c-using-kwds
+  csharp '("using"))
+
+(c-lang-defconst c-equals-type-clause-kwds
+  csharp '("using"))
+
+(defun csharp-at-vsemi-p (&optional pos)
+  (if pos (goto-char pos))
+  (save-excursion
+    (beginning-of-line)
+    (c-forward-syntactic-ws)
+    (looking-at "using\\s *(")))
+
+(c-lang-defconst c-at-vsemi-p-fn
+  csharp 'csharp-at-vsemi-p)
+
+(defun csharp-vsemi-status-unknown () t)
+
+(c-lang-defconst c-vsemi-status-unknown-p-fn
+  csharp 'csharp-vsemi-status-unknown-p)
+
+
+(c-lang-defconst c-modifier-kwds
+  csharp '("abstract" "default" "final" "native" "private" "protected"
+           "public" "partial" "internal" "readonly" "static" "event" 
"transient"
+           "volatile" "sealed" "ref" "out" "virtual" "implicit" "explicit"
+           "fixed" "override" "params" "async" "await" "extern" "unsafe"
+           "get" "set" "this" "const" "delegate"))
+
+(c-lang-defconst c-other-kwds
+  csharp '("select" "from" "where" "join" "in" "on" "equals" "into"
+           "orderby" "ascending" "descending" "group" "when"
+           "let" "by" "namespace"))
+
+(c-lang-defconst c-colon-type-list-kwds
+  csharp '("class" "struct" "interface"))
+
+(c-lang-defconst c-block-stmt-1-kwds
+  csharp '("do" "else" "finally" "try"))
+
+(c-lang-defconst c-block-stmt-1-2-kwds
+  csharp '("try"))
+
+(c-lang-defconst c-block-stmt-2-kwds
+  csharp '("for" "if" "switch" "while" "catch" "foreach" "fixed" "checked"
+           "unchecked" "using" "lock"))
+
+(c-lang-defconst c-simple-stmt-kwds
+  csharp '("break" "continue" "goto" "throw" "return" "yield"))
+
+(c-lang-defconst c-constant-kwds
+  csharp  '("true" "false" "null" "value"))
+
+(c-lang-defconst c-primary-expr-kwds
+  csharp '("this" "base" "operator"))
+
+(c-lang-defconst c-inexpr-class-kwds
+  csharp nil)
+
+(c-lang-defconst c-class-decl-kwds
+  csharp '("class" "struct" "interface"))
+
+(c-lang-defconst c-std-abbrev-keywords
+  csharp (append (c-lang-const c-std-abbrev-keywords) '("catch" "finally")))
+
+(c-lang-defconst c-decl-prefix-re
+  csharp "\\([{}(;,<]+\\)")
+
+(c-lang-defconst c-recognize-typeless-decls
+  csharp t)
+
+(c-lang-defconst c-recognize-<>-arglists
+  csharp t)
+
+(c-lang-defconst c-opt-cpp-prefix
+  csharp "\\s *#\\s *")
+
+(c-lang-defconst c-opt-cpp-macro-define
+  csharp (if (c-lang-const c-opt-cpp-prefix)
+             "define"))
+
+(c-lang-defconst c-cpp-message-directives
+  csharp '("error" "warning" "region"))
+
+(c-lang-defconst c-cpp-expr-directives
+  csharp '("if" "elif"))
+
+(c-lang-defconst c-other-op-syntax-tokens
+  csharp  (append '("#")
+                  (c-lang-const c-other-op-syntax-tokens)))
+
+(c-lang-defconst c-line-comment-starter
+  csharp "//")
+
+(c-lang-defconst c-doc-comment-start-regexp
+  csharp "///")
+
+(c-add-style "csharp"
+             '("java"
+               (c-basic-offset . 4)
+               (c-comment-only-line-offset . (0 . 0))
+               (c-offsets-alist . ((inline-open           . 0)
+                                   (arglist-intro         . +)
+                                   (arglist-close         . 0)
+                                   (inexpr-class          . 0)
+                                   (case-label            . +)
+                                   (cpp-macro             . 
c-lineup-dont-change)
+                                   (substatement-open     . 0)))))
+
+(eval-and-compile
+  (unless (or (stringp c-default-style)
+              (assoc 'csharp-mode c-default-style))
+    (setq c-default-style
+          (cons '(csharp-mode . "csharp")
+                c-default-style))))
+
+(defun csharp--color-forwards (font-lock-face)
+  (let (id-beginning)
+    (goto-char (match-beginning 0))
+    (forward-word)
+    (while (and (not (or (eq (char-after) ?\;)
+                         (eq (char-after) ?\{)))
+                (progn
+                  (forward-char)
+                  (c-forward-syntactic-ws)
+                  (setq id-beginning (point))
+                  (> (skip-chars-forward
+                      (c-lang-const c-symbol-chars))
+                     0))
+                (not (get-text-property (point) 'face)))
+      (c-put-font-lock-face id-beginning (point) font-lock-face)
+      (c-forward-syntactic-ws))))
+
+(c-lang-defconst c-basic-matchers-before
+  csharp `(
+           ;; Warning face on unclosed strings
+           ("\\s|" 0 font-lock-warning-face t nil)
+
+           ;; Invalid single quotes
+           c-font-lock-invalid-single-quotes
+
+           ;; Keyword constants
+           ,@(when (c-lang-const c-constant-kwds)
+               (let ((re (c-make-keywords-re nil (c-lang-const 
c-constant-kwds))))
+                 `((eval . (list ,(concat "\\<\\(" re "\\)\\>")
+                                 1 c-constant-face-name)))))
+
+           ;; Keywords except the primitive types.
+           ,`(,(concat "\\<" (c-lang-const c-regular-keywords-regexp))
+              1 font-lock-keyword-face)
+
+           ;; Chained identifiers in using/namespace statements
+           ,`(,(c-make-font-lock-search-function
+                csharp--regex-using-or-namespace
+                `((csharp--color-forwards font-lock-variable-name-face)
+                  nil
+                  (goto-char (match-end 0)))))
+
+           ;; Negation character
+           (eval . (list "\\(!\\)[^=]" 1 c-negation-char-face-name))
+
+           ;; Types after 'new'
+           (eval . (list (concat "\\<new\\> *" csharp--regex-type-name-matcher)
+                         1 font-lock-type-face))
+
+           ;; Single identifier in attribute
+           (eval . (list (concat "\\[" csharp--regex-type-name-matcher 
"\\][^;]")
+                         1 font-lock-variable-name-face t))
+
+           ;; Function names
+           (eval . (list "\\([A-Za-z0-9_]+\\)\\(<[a-zA-Z0-9, ]+>\\)?("
+                         1 font-lock-function-name-face))
+
+           ;; Nameof
+           (eval . (list (concat "\\(\\<nameof\\>\\) *(")
+                         1 font-lock-function-name-face))
+
+           (eval . (list (concat "\\<nameof\\> *( *"
+                                 csharp--regex-identifier-matcher
+                                 " *) *")
+                         1 font-lock-variable-name-face))
+
+           ;; Catch statements with type only
+           (eval . (list (concat "\\<catch\\> *( *"
+                                 csharp--regex-type-name-matcher
+                                 " *) *")
+                         1 font-lock-type-face))))
+
+(c-lang-defconst c-basic-matchers-after
+  csharp (append
+          ;; Merge with cc-mode defaults - enables us to add more later
+          (c-lang-const c-basic-matchers-after)))
+
+(defcustom csharp-codedoc-tag-face 'c-doc-markup-face-name
+  "Face to be used on the codedoc docstring tags.
+
+Should be one of the font lock faces, such as
+`font-lock-variable-name-face' and friends.
+
+Needs to be set before `csharp-mode' is loaded, because of
+compilation and evaluation time conflicts."
+  :type 'symbol)
+
+(defcustom csharp-font-lock-extra-types
+  (list csharp--regex-type-name)
+  (c-make-font-lock-extra-types-blurb "C#" "csharp-mode" (concat))
+  :type 'c-extra-types-widget
+  :group 'c)
+
+(defconst csharp-font-lock-keywords-1 (c-lang-const c-matchers-1 csharp)
+  "Minimal font locking for C# mode.")
+
+(defconst csharp-font-lock-keywords-2 (c-lang-const c-matchers-2 csharp)
+  "Fast normal font locking for C# mode.")
+
+(defconst csharp-font-lock-keywords-3 (c-lang-const c-matchers-3 csharp)
+  "Accurate normal font locking for C# mode.")
+
+(defvar csharp-font-lock-keywords csharp-font-lock-keywords-3
+  "Default expressions to highlight in C# mode.")
+
+(defun csharp-font-lock-keywords-2 ()
+  (c-compose-keywords-list csharp-font-lock-keywords-2))
+(defun csharp-font-lock-keywords-3 ()
+  (c-compose-keywords-list csharp-font-lock-keywords-3))
+(defun csharp-font-lock-keywords ()
+  (c-compose-keywords-list csharp-font-lock-keywords))
+
+;;; Doc comments
+
+(defconst codedoc-font-lock-doc-comments
+  ;; Most of this is taken from the javadoc example, however, we don't use the
+  ;; '@foo' syntax, so I removed that. Supports the XML tags only
+  `((,(concat "</?\\sw"         ; XML tags.
+              "\\("
+              (concat "\\sw\\|\\s \\|[=\n\r*.:]\\|"
+                      "\"[^\"]*\"\\|'[^']*'")
+              "\\)*/?>")
+     0 ,csharp-codedoc-tag-face prepend nil)
+    ;; ("\\([a-zA-Z0-9_]+\\)=" 0 font-lock-variable-name-face prepend nil)
+    ;; ("\".*\"" 0 font-lock-string-face prepend nil)
+    ("&\\(\\sw\\|[.:]\\)+;"     ; XML entities.
+     0 ,csharp-codedoc-tag-face prepend nil)))
+
+(defconst codedoc-font-lock-keywords
+  `((,(lambda (limit)
+        (c-font-lock-doc-comments "///" limit
+          codedoc-font-lock-doc-comments)))))
+
+;;; End of doc comments
+
+;;; Adding syntax constructs
+
+(advice-add 'c-looking-at-inexpr-block
+            :around #'csharp-looking-at-inexpr-block)
+
+(defun csharp-looking-at-inexpr-block (orig-fun &rest args)
+  (let ((res (csharp-at-lambda-header)))
+    (if res
+        res
+      (apply orig-fun args))))
+
+(defun csharp-at-lambda-header ()
+  (save-excursion
+    (c-backward-syntactic-ws)
+    (unless (bobp)
+      (backward-char)
+      (c-safe (goto-char (scan-sexps (point) -1)))
+      (when (or (looking-at "([[:alnum:][:space:]_,]*)[ \t\n]*=>[ \t\n]*{")
+                (looking-at "[[:alnum:]_]+[ \t\n]*=>[ \t\n]*{"))
+        ;; If we are at a C# lambda header
+        (cons 'inexpr (point))))))
+
+(advice-add 'c-guess-basic-syntax
+            :around #'csharp-guess-basic-syntax)
+
+(defun csharp-guess-basic-syntax (orig-fun &rest args)
+  (cond
+   (;; Attributes
+    (save-excursion
+      (goto-char (c-point 'iopl))
+      (and
+       (eq (char-after) ?\[)
+       (save-excursion
+         (c-go-list-forward)
+         (and (eq (char-before) ?\])
+              (not (eq (char-after) ?\;))))))
+    `((annotation-top-cont ,(c-point 'iopl))))
+
+   ((and
+     ;; Heuristics to find object initializers
+     (save-excursion
+       ;; Next non-whitespace character should be '{'
+       (goto-char (c-point 'boi))
+       (eq (char-after) ?{))
+     (save-excursion
+       ;; 'new' should be part of the line
+       (goto-char (c-point 'iopl))
+       (looking-at ".*new.*"))
+     ;; Line should not already be terminated
+     (save-excursion
+       (goto-char (c-point 'eopl))
+       (or (not (eq (char-before) ?\;))
+           (not (eq (char-before) ?\{)))))
+    (if (save-excursion
+          ;; if we have a hanging brace on line before
+          (goto-char (c-point 'eopl))
+          (eq (char-before) ?\{))
+        `((brace-list-intro ,(c-point 'iopl)))
+      `((block-open) (statement ,(c-point 'iopl)))))
+   (t
+    (apply orig-fun args))))
+
+;;; End of new syntax constructs
+
+;; When invoked by MSBuild, csc’s errors look like this:
+;; subfolder\file.cs(6,18): error CS1006: Name of constructor must
+;; match name of class [c:\Users\user\project.csproj]
+
+(defun csharp--compilation-error-file-resolve ()
+  "Resolve an msbuild error to a (filename . dirname) cons cell."
+  ;; http://stackoverflow.com/a/18049590/429091
+  (cons (match-string 1) (file-name-directory (match-string 4))))
+
+(defconst csharp-compilation-re-msbuild-error
+  (concat
+   "^[[:blank:]]*\\(?:[[:digit:]]+>\\)?"
+   "\\([^(\r\n)]+\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?): "
+   "error [[:alnum:]]+: [^\r\n]+\\[\\([^]\r\n]+\\)\\]$")
+  "Regexp to match compilation error from msbuild.")
+
+(defconst csharp-compilation-re-msbuild-warning
+  (concat
+   "^[[:blank:]]*\\(?:[[:digit:]]+>\\)?"
+   "\\([^(\r\n)]+\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?): "
+   "warning [[:alnum:]]+: [^\r\n]+\\[\\([^]\r\n]+\\)\\]$")
+  "Regexp to match compilation warning from msbuild.")
+
+;; Notes on xbuild and devenv commonalities
+;;
+;; These regexes were tailored for xbuild, but apart from the concurrent
+;; build-marker ("1>") they share exactly the same match-markers.
+;;
+;; If we don't exclude the match-markers explicitly, these regexes
+;; will also be used to match for devenv as well, including the build-marker
+;; in the file-name, causing the lookup to fail.
+;;
+;; So if we don't want devenv to fail, we actually need to handle it in our
+;; xbuild-regexes, but then we automatically get devenv-support for free.
+
+(defconst csharp-compilation-re-xbuild-error
+  (concat
+   "^[[:blank:]]*\\(?:[[:digit:]]+>\\)?"
+   "\\([^(\r\n)]+\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?"
+   ;; handle weird devenv output format with 4 numbers, not 2 by having 
optional
+   ;; extra capture-groups.
+   "\\(?:,\\([0-9]+\\)\\)*): "
+   "error [[:alnum:]]+: .+$")
+  "Regexp to match compilation error from xbuild.")
+
+(defconst csharp-compilation-re-xbuild-warning
+  (concat
+   "^[[:blank:]]*\\(?:[[:digit:]]+>\\)?"
+   "\\([^(\r\n)]+\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?"
+   ;; handle weird devenv output format with 4 numbers, not 2 by having 
optional
+   ;; extra capture-groups.
+   "\\(?:,\\([0-9]+\\)\\)*): "
+   "warning [[:alnum:]]+: .+$")
+  "Regexp to match compilation warning from xbuild.")
+
+(defconst csharp-compilation-re-dotnet-error
+  "\\([^\r\n]+\\) : error [A-Z]+[0-9]+:")
+
+(defconst csharp-compilation-re-dotnet-warning
+  "\\([^\r\n]+\\) : warning [A-Z]+[0-9]+:")
+
+(defconst csharp-compilation-re-dotnet-testfail
+  (concat
+   "[[:blank:]]+Stack Trace:\n"
+   "[[:blank:]]+at [^\n]+ in \\([^\n]+\\):line \\([0-9]+\\)"))
+
+
+(eval-after-load 'compile
+  (lambda ()
+    (dolist
+        (regexp
+         `((dotnet-testfail
+            ,csharp-compilation-re-dotnet-testfail
+            1 2)
+           (xbuild-error
+            ,csharp-compilation-re-xbuild-error
+            1 2 3 2)
+           (xbuild-warning
+            ,csharp-compilation-re-xbuild-warning
+            1 2 3 1)
+           (msbuild-error
+            ,csharp-compilation-re-msbuild-error
+            csharp--compilation-error-file-resolve
+            2
+            3
+            2
+            nil
+            (1 compilation-error-face)
+            (4 compilation-error-face))
+           (msbuild-warning
+            ,csharp-compilation-re-msbuild-warning
+            csharp--compilation-error-file-resolve
+            2
+            3
+            1
+            nil
+            (1 compilation-warning-face)
+            (4 compilation-warning-face))
+           (dotnet-error
+            ,csharp-compilation-re-dotnet-error
+            1)
+           (dotnet-warning
+            ,csharp-compilation-re-dotnet-warning
+            1 nil nil 1)))
+      (add-to-list 'compilation-error-regexp-alist-alist regexp)
+      (add-to-list 'compilation-error-regexp-alist (car regexp)))))
+
+(defvar csharp-mode-syntax-table
+  (funcall (c-lang-const c-make-mode-syntax-table csharp))
+  "Syntax table used in `csharp-mode' buffers.")
+
+(defvar csharp-mode-map
+  (let ((map (c-make-inherited-keymap)))
+    map)
+  "Keymap used in `csharp-mode' buffers.")
+
+(easy-menu-define csharp-mode-menu csharp-mode-map "C# Mode Commands."
+  (cons "C#" (c-lang-const c-mode-menu csharp)))
+
+;;; Tree-sitter support
+
+(defcustom csharp-ts-mode-indent-offset 4
+  "Number of spaces for each indentation step in `csharp-ts-mode'."
+  :type 'integer
+  :safe 'integerp
+  :group 'csharp)
+
+(defvar csharp-ts-mode--indent-rules
+  `((c-sharp
+     ((parent-is "compilation_unit") parent-bol 0)
+     ((node-is "}") parent-bol 0)
+     ((node-is ")") parent-bol 0)
+     ((node-is "]") parent-bol 0)
+     ((parent-is "namespace_declaration") parent-bol 0)
+     ((parent-is "class_declaration") parent-bol 0)
+     ((parent-is "constructor_declaration") parent-bol 0)
+     ((parent-is "method_declaration") parent-bol 0)
+     ((parent-is "enum_declaration") parent-bol 0)
+     ((parent-is "operator_declaration") parent-bol 0)
+     ((parent-is "field_declaration") parent-bol 0)
+     ((parent-is "struct_declaration") parent-bol 0)
+     ((parent-is "declaration_list") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "argument_list") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "interpolation") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "binary_expression") parent 0)
+     ((parent-is "block") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "local_function_statement") parent-bol 0)
+     ((parent-is "if_statement") parent-bol 0)
+     ((parent-is "for_statement") parent-bol 0)
+     ((parent-is "for_each_statement") parent-bol 0)
+     ((parent-is "while_statement") parent-bol 0)
+     ((match "{" "switch_expression") parent-bol 0)
+     ((parent-is "switch_statement") parent-bol 0)
+     ((parent-is "switch_body") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "switch_section") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "switch_expression") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "case_statement") parent-bol 0)
+     ((parent-is "do_statement") parent-bol 0)
+     ((parent-is "equals_value_clause") parent-bol 
csharp-ts-mode-indent-offset)
+     ((parent-is "ternary_expression") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "conditional_expression") parent-bol 
csharp-ts-mode-indent-offset)
+     ((parent-is "statement_block") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "type_arguments") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "variable_declarator") parent-bol 
csharp-ts-mode-indent-offset)
+     ((parent-is "arguments") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "array") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "formal_parameters") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "template_substitution") parent-bol 
csharp-ts-mode-indent-offset)
+     ((parent-is "object_pattern") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "object") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "object_type") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "enum_body") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "arrow_function") parent-bol csharp-ts-mode-indent-offset)
+     ((parent-is "parenthesized_expression") parent-bol 
csharp-ts-mode-indent-offset))))
+
+(defvar csharp-ts-mode--keywords
+  '("using" "namespace" "class" "if" "else" "throw" "new" "for"
+    "return" "await" "struct" "enum" "switch" "case"
+    "default" "typeof" "try" "catch" "finally" "break"
+    "foreach" "in" "yield" "get" "set" "when" "as" "out"
+    "is" "while" "continue" "this" "ref" "goto" "interface"
+    "from" "where" "select" "lock" "base" "record" "init"
+    "with" "let" "static" "var" "do" "public" "private"
+    "readonly" "unmanaged")
+  "C# keywords for tree-sitter font-locking.")
+
+(defvar csharp-ts-mode--font-lock-settings
+  (treesit-font-lock-rules
+   :language 'c-sharp
+   :override t
+   :feature 'comment
+   '((comment)  @font-lock-comment-face)
+   :language 'c-sharp
+   :override t
+   :feature 'keyword
+   `([,@csharp-ts-mode--keywords] @font-lock-keyword-face
+     (modifier) @font-lock-keyword-face
+     (this_expression) @font-lock-keyword-face)
+   :language 'c-sharp
+   :override t
+   :feature 'attribute
+   `((attribute (identifier) @font-lock-property-face 
(attribute_argument_list))
+     (attribute (identifier) @font-lock-property-face))
+   :language 'c-sharp
+   :override t
+   :feature 'escape-sequence
+   '((escape_sequence) @font-lock-escape-face)
+   :language 'c-sharp
+   :override t
+   :feature 'literal
+   `((integer_literal) @font-lock-constant-face
+     (real_literal) @font-lock-constant-face
+     (null_literal) @font-lock-constant-face
+     (boolean_literal) @font-lock-constant-face)
+   :language 'c-sharp
+   :override t
+   :feature 'string
+   `([(string_literal)
+      (verbatim_string_literal)
+      (interpolated_string_text)
+      (interpolated_verbatim_string_text)
+      (character_literal)
+      "\""
+      "$\""
+      "@$\""
+      "$@\""] @font-lock-string-face)
+   :language 'c-sharp
+   :override t
+   :feature 'type
+   '((predefined_type) @font-lock-type-face
+     (implicit_type) @font-lock-type-face
+     (nullable_type) @font-lock-type-face
+     (type_parameter
+      (identifier) @font-lock-type-face)
+     (type_argument_list
+      (identifier) @font-lock-type-face)
+     (generic_name
+      (identifier) @font-lock-type-face)
+     (array_type
+      (identifier) @font-lock-type-face)
+     (cast_expression (identifier) @font-lock-type-face)
+     ["operator"] @font-lock-type-face
+     (type_parameter_constraints_clause
+      target: (identifier) @font-lock-type-face)
+     (type_of_expression (identifier) @font-lock-type-face))
+   :language 'c-sharp
+   :feature 'definition
+   :override t
+   '((qualified_name (identifier) @font-lock-variable-name-face)
+     (using_directive (identifier) @font-lock-type-face)
+
+     (enum_declaration (identifier) @font-lock-type-face)
+     (enum_member_declaration (identifier) @font-lock-variable-name-face)
+
+     (interface_declaration (identifier) @font-lock-type-face)
+
+     (struct_declaration (identifier) @font-lock-type-face)
+
+     (record_declaration (identifier) @font-lock-type-face)
+     (namespace_declaration (identifier) @font-lock-type-face)
+     (base_list (identifier) @font-lock-type-face)
+     (property_declaration (generic_name))
+     (property_declaration
+      type: (nullable_type) @font-lock-type-face
+      name: (identifier) @font-lock-variable-name-face)
+     (property_declaration
+      type: (predefined_type) @font-lock-type-face
+      name: (identifier) @font-lock-variable-name-face)
+     (property_declaration
+      type: (identifier) @font-lock-type-face
+      name: (identifier) @font-lock-variable-name-face)
+     (class_declaration (identifier) @font-lock-type-face)
+
+     (constructor_declaration name: (_) @font-lock-type-face)
+
+     (method_declaration type: (_) @font-lock-type-face)
+     (method_declaration name: (_) @font-lock-function-name-face)
+
+     (invocation_expression
+      (member_access_expression
+       (generic_name (identifier) @font-lock-function-name-face)))
+     (invocation_expression
+      (member_access_expression
+       ((identifier) @font-lock-variable-name-face
+        (identifier) @font-lock-function-name-face)))
+     (invocation_expression
+      (identifier) @font-lock-function-name-face)
+     (invocation_expression
+      (member_access_expression (identifier) @font-lock-function-name-face))
+
+     (variable_declaration (identifier) @font-lock-type-face)
+     (variable_declarator (identifier) @font-lock-variable-name-face)
+
+     (parameter type: (identifier) @font-lock-type-face)
+     (parameter name: (identifier) @font-lock-variable-name-face))
+   :language 'c-sharp
+   :feature 'expression
+   '((conditional_expression (identifier) @font-lock-variable-name-face)
+     (postfix_unary_expression (identifier)* @font-lock-variable-name-face)
+     (assignment_expression (identifier) @font-lock-variable-name-face))
+   :language 'c-sharp
+   :feature 'bracket
+   '((["(" ")" "[" "]" "{" "}"]) @font-lock-bracket-face)
+
+   :language 'c-sharp
+   :feature 'delimiter
+   '((["," ":" ";"]) @font-lock-delimiter-face)))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.cs\\'" . csharp-mode))
+
+(defun csharp-ts-mode--imenu-1 (node)
+  "Helper for `csharp-ts-mode--imenu'.
+Find string representation for NODE and set marker, then recurse
+the subtrees."
+  (let* ((ts-node (car node))
+         (subtrees (mapcan #'csharp-ts-mode--imenu-1 (cdr node)))
+         (name (when ts-node
+                 (or (treesit-node-text
+                      (or (treesit-node-child-by-field-name
+                           ts-node "name"))
+                      t)
+                     "Unnamed node")))
+         (marker (when ts-node
+                   (set-marker (make-marker)
+                               (treesit-node-start ts-node)))))
+    (cond
+     ((null ts-node) subtrees)
+     (subtrees
+      `((,name ,(cons name marker) ,@subtrees)))
+     (t
+      `((,name . ,marker))))))
+
+(defun csharp-ts-mode--imenu ()
+  "Return Imenu alist for the current buffer."
+  (let* ((node (treesit-buffer-root-node))
+         (class-tree (treesit-induce-sparse-tree
+                      node "^class_declaration$" nil 1000))
+         (interface-tree (treesit-induce-sparse-tree
+                          node "^interface_declaration$" nil 1000))
+         (enum-tree (treesit-induce-sparse-tree
+                     node "^enum_declaration$" nil 1000))
+         (struct-tree (treesit-induce-sparse-tree
+                       node "^struct_declaration$"  nil 1000))
+         (record-tree (treesit-induce-sparse-tree
+                       node "^record_declaration$"  nil 1000))
+         (method-tree (treesit-induce-sparse-tree
+                       node "^method_declaration$" nil 1000))
+         (class-index (csharp-ts-mode--imenu-1 class-tree))
+         (interface-index (csharp-ts-mode--imenu-1 interface-tree))
+         (enum-index (csharp-ts-mode--imenu-1 enum-tree))
+         (record-index (csharp-ts-mode--imenu-1 record-tree))
+         (struct-index (csharp-ts-mode--imenu-1 struct-tree))
+         (method-index (csharp-ts-mode--imenu-1 method-tree)))
+    (append
+     (when class-index `(("Class" . ,class-index)))
+     (when interface-index `(("Interface" . ,interface-index)))
+     (when enum-index `(("Enum" . ,enum-index)))
+     (when record-index `(("Record" . ,record-index)))
+     (when struct-index `(("Struct" . ,struct-index)))
+     (when method-index `(("Method" . ,method-index))))))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.cs\\'" . csharp-mode))
+
+;;;###autoload
+(define-derived-mode csharp-mode prog-mode "C#"
+  "Major mode for editing Csharp code.
+
+Key bindings:
+\\{csharp-mode-map}"
+  :after-hook (c-update-modeline)
+  (c-initialize-cc-mode t)
+  (c-init-language-vars csharp-mode)
+  (c-common-init 'csharp-mode)
+  (setq-local c-doc-comment-style '((csharp-mode . codedoc)))
+  (run-mode-hooks 'c-mode-common-hook))
+
+;;;###autoload
+(define-derived-mode csharp-ts-mode prog-mode "C#"
+  "Major mode for editing C# code."
+
+  (unless (treesit-ready-p 'c-sharp)
+    (error "Tree-sitter for C# isn't available"))
+
+  ;; Tree-sitter.
+  (treesit-parser-create 'c-sharp)
+
+  ;; Comments.
+  (setq-local comment-start "// ")
+  (setq-local comment-end "")
+  (setq-local comment-start-skip (rx (group "/" (or (+ "/") (+ "*")))
+                                     (* (syntax whitespace))))
+  (setq-local comment-end-skip
+              (rx (* (syntax whitespace))
+                  (group (or (syntax comment-end)
+                             (seq (+ "*") "/")))))
+
+  ;; Indent.
+  (setq-local treesit-simple-indent-rules csharp-ts-mode--indent-rules)
+
+  ;; Electric
+  (setq-local electric-indent-chars
+              (append "{}():;," electric-indent-chars))
+
+  ;; Navigation.
+  (setq-local treesit-defun-type-regexp "declaration")
+
+  ;; Font-lock.
+  (setq-local treesit-font-lock-settings csharp-ts-mode--font-lock-settings)
+  (setq-local treesit-font-lock-feature-list
+              '(( comment definition)
+                ( keyword string type)
+                ( attribute constant expression literal)
+                ( bracket delimiter)))
+
+  ;; Imenu.
+  (setq-local imenu-create-index-function #'csharp-ts-mode--imenu)
+  (setq-local which-func-functions nil) ;; Piggyback on imenu
+  (treesit-major-mode-setup))
+
+(provide 'csharp-mode)
+
+;;; csharp-mode.el ends here
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index bbd902c1c7..7755353396 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -184,19 +184,22 @@ chosen (interactively or automatically)."
 (defvar eglot-server-programs `((rust-mode . ,(eglot-alternatives 
'("rust-analyzer" "rls")))
                                 (cmake-mode . ("cmake-language-server"))
                                 (vimrc-mode . ("vim-language-server" 
"--stdio"))
-                                (python-mode
+                                ((python-mode python-ts-mode)
                                  . ,(eglot-alternatives
                                      '("pylsp" "pyls" ("pyright-langserver" 
"--stdio") "jedi-language-server")))
-                                ((js-json-mode json-mode) . 
,(eglot-alternatives '(("vscode-json-language-server" "--stdio") 
("json-languageserver" "--stdio"))))
-                                ((js-mode ts-mode typescript-mode)
+                                ((js-json-mode json-mode json-ts-mode)
+                                 . ,(eglot-alternatives 
'(("vscode-json-language-server" "--stdio")
+                                                          
("json-languageserver" "--stdio"))))
+                                ((js-mode js-ts-mode typescript-ts-mode 
typescript-mode)
                                  . ("typescript-language-server" "--stdio"))
-                                (sh-mode . ("bash-language-server" "start"))
+                                ((bash-ts-mode sh-mode) . 
("bash-language-server" "start"))
                                 ((php-mode phps-mode)
                                  . ,(eglot-alternatives
                                      '(("phpactor" "language-server")
                                        ("php" 
"vendor/felixfbecker/language-server/bin/php-language-server.php"))))
-                                ((c++-mode c-mode) . ,(eglot-alternatives
-                                                       '("clangd" "ccls")))
+                                ((c-mode c-ts-mode c++-mode c++-ts-mode)
+                                 . ,(eglot-alternatives
+                                     '("clangd" "ccls")))
                                 (((caml-mode :language-id "ocaml")
                                   (tuareg-mode :language-id "ocaml") 
reason-mode)
                                  . ("ocamllsp"))
@@ -210,7 +213,7 @@ chosen (interactively or automatically)."
                                 ((go-mode go-dot-mod-mode go-dot-work-mode) . 
("gopls"))
                                 ((R-mode ess-r-mode) . ("R" "--slave" "-e"
                                                         
"languageserver::run()"))
-                                (java-mode . ("jdtls"))
+                                ((java-mode java-ts-mode) . ("jdtls"))
                                 (dart-mode . ("dart" "language-server"
                                               "--client-id" 
"emacs.eglot-dart"))
                                 (elixir-mode . ("language_server.sh"))
@@ -228,12 +231,15 @@ chosen (interactively or automatically)."
                                 (lua-mode . ,(eglot-alternatives
                                               '("lua-language-server" 
"lua-lsp")))
                                 (zig-mode . ("zls"))
-                                (css-mode . ,(eglot-alternatives 
'(("vscode-css-language-server" "--stdio") ("css-languageserver" "--stdio"))))
+                                ((css-mode css-ts-mode)
+                                 . ,(eglot-alternatives 
'(("vscode-css-language-server" "--stdio")
+                                                          
("css-languageserver" "--stdio"))))
                                 (html-mode . ,(eglot-alternatives 
'(("vscode-html-language-server" "--stdio") ("html-languageserver" "--stdio"))))
                                 (dockerfile-mode . ("docker-langserver" 
"--stdio"))
                                 ((clojure-mode clojurescript-mode 
clojurec-mode)
                                  . ("clojure-lsp"))
-                                (csharp-mode . ("omnisharp" "-lsp"))
+                                ((csharp-mode csharp-ts-mode)
+                                 . ("omnisharp" "-lsp"))
                                 (purescript-mode . 
("purescript-language-server" "--stdio"))
                                 ((perl-mode cperl-mode) . ("perl" 
"-MPerl::LanguageServer" "-e" "Perl::LanguageServer::run"))
                                 (markdown-mode . ("marksman" "server")))
@@ -737,6 +743,10 @@ treated as in `eglot--dbind'."
                                            t
                                          :json-false)
                                       :deprecatedSupport t
+                                      :resolveSupport (:properties
+                                                       ["documentation"
+                                                        "details"
+                                                        "additionalTextEdits"])
                                       :tagSupport (:valueSet [1]))
                                     :contextSupport t)
              :hover              (list :dynamicRegistration :json-false
@@ -1181,7 +1191,7 @@ Each function is passed the server as an argument")
   "Connect to MANAGED-MODES, LANGUAGE-ID, PROJECT, CLASS and CONTACT.
 This docstring appeases checkdoc, that's all."
   (let* ((default-directory (project-root project))
-         (nickname (file-name-base (directory-file-name default-directory)))
+         (nickname (project-name project))
          (readable-name (format "EGLOT (%s/%s)" nickname managed-modes))
          autostart-inferior-process
          server-info
@@ -1499,11 +1509,15 @@ If optional MARKER, return a marker instead"
 (defun eglot--path-to-uri (path)
   "URIfy PATH."
   (let ((truepath (file-truename path)))
-    (if (url-type (url-generic-parse-url truepath))
+    (if (and (url-type (url-generic-parse-url path))
+             ;; It might be MS Windows path which includes a drive
+             ;; letter that looks like a URL scheme (bug#59338)
+             (not (and (eq system-type 'windows-nt)
+                       (file-name-absolute-p truepath))))
         ;; Path is already a URI, so forward it to the LSP server
         ;; untouched.  The server should be able to handle it, since
         ;; it provided this URI to clients in the first place.
-        truepath
+        path
       (concat "file://"
               ;; Add a leading "/" for local MS Windows-style paths.
               (if (and (eq system-type 'windows-nt)
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index dff677e785..e8d8f9104e 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -177,7 +177,7 @@ May be manually changed by user with `gdb-select-frame'.")
   "Number of selected line for main current thread.")
 
 (defvar gdb-threads-list nil
-  "Associative list of threads provided by \"-thread-info\" MI command.
+  "Association list of threads provided by \"-thread-info\" MI command.
 
 Keys are thread numbers (in strings) and values are structures as
 returned from -thread-info by `gdb-mi--partial-output'.  Updated in
@@ -196,7 +196,7 @@ Updated in `gdb-thread-list-handler-custom'.")
 See also `gdb-running-threads-count'.")
 
 (defvar gdb-breakpoints-list nil
-  "Associative list of breakpoints provided by \"-break-list\" MI command.
+  "Association list of breakpoints provided by \"-break-list\" MI command.
 
 Keys are breakpoint numbers (in string) and values are structures
 as returned from \"-break-list\" by `gdb-mi--partial-output'
@@ -3159,7 +3159,7 @@ See `def-gdb-auto-update-handler'."
           (gdb-remove-breakpoint-icons (point-min) (point-max)))))
   (dolist (breakpoint gdb-breakpoints-list)
     (let* ((breakpoint (cdr breakpoint)) ; gdb-breakpoints-list is
-                                        ; an associative list
+                                        ; an association list
            (line (gdb-mi--field breakpoint 'line)))
       (when line
         (let ((file (gdb-mi--field breakpoint 'fullname))
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 81f74dc1fa..cd2fc7c707 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -266,7 +266,7 @@ extends to the end of the match for the regular expression."
   :type 'regexp)
 
 (defcustom idlwave-use-last-hang-indent nil
-  "If non-nil then use last match on line for `idlwave-indent-regexp'."
+  "If non-nil then use last match on line for `idlwave-hang-indent-regexp'."
   :group 'idlwave-code-formatting
   :type 'boolean)
 
diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el
index ee8ac31f67..cf2482bb6e 100644
--- a/lisp/progmodes/java-ts-mode.el
+++ b/lisp/progmodes/java-ts-mode.el
@@ -29,6 +29,7 @@
 ;;; Code:
 
 (require 'treesit)
+(eval-when-compile (require 'rx))
 
 (declare-function treesit-parser-create "treesit.c")
 (declare-function treesit-induce-sparse-tree "treesit.c")
@@ -116,18 +117,14 @@
   "C keywords for tree-sitter font-locking.")
 
 (defvar java-ts-mode--operators
-  '("@" "+" ":" "++" "-" "--" "&" "&&" "|" "||"
-    "!=" "==" "*" "/" "%" "<" "<=" ">" ">=" "="
-    "-=" "+=" "*=" "/=" "%=" "->" "^" "^=" "&="
-    "|=" "~" ">>" ">>>" "<<" "::" "?")
+  '("+" ":" "++" "-" "--" "&" "&&" "|" "||" "="
+    "!=" "==" "*" "/" "%" "<" "<=" ">" ">="
+    "-=" "+=" "*=" "/=" "%=" "->" "^" "^="
+    "|=" "~" ">>" ">>>" "<<" "::" "?" "&=")
   "C operators for tree-sitter font-locking.")
 
 (defvar java-ts-mode--font-lock-settings
   (treesit-font-lock-rules
-   :language 'java
-   :override t
-   :feature 'basic
-   '((identifier) @font-lock-variable-name-face)
    :language 'java
    :override t
    :feature 'comment
@@ -138,8 +135,7 @@
    :feature 'constant
    `(((identifier) @font-lock-constant-face
       (:match "^[A-Z_][A-Z_\\d]*$" @font-lock-constant-face))
-     (true) @font-lock-constant-face
-     (false) @font-lock-constant-face)
+     [(true) (false)] @font-lock-constant-face)
    :language 'java
    :override t
    :feature 'keyword
@@ -149,7 +145,8 @@
    :language 'java
    :override t
    :feature 'operator
-   `([,@java-ts-mode--operators] @font-lock-builtin-face)
+   `([,@java-ts-mode--operators] @font-lock-operator-face
+     "@" @font-lock-constant-face)
    :language 'java
    :override t
    :feature 'annotation
@@ -166,8 +163,12 @@
    :override t
    :feature 'literal
    `((null_literal) @font-lock-constant-face
-     (decimal_floating_point_literal)  @font-lock-constant-face
-     (hex_floating_point_literal) @font-lock-constant-face)
+     (binary_integer_literal)  @font-lock-number-face
+     (decimal_integer_literal) @font-lock-number-face
+     (hex_integer_literal) @font-lock-number-face
+     (octal_integer_literal) @font-lock-number-face
+     (decimal_floating_point_literal) @font-lock-number-face
+     (hex_floating_point_literal) @font-lock-number-face)
    :language 'java
    :override t
    :feature 'type
@@ -191,6 +192,8 @@
 
      (method_reference (identifier) @font-lock-type-face)
 
+     (scoped_identifier (identifier) @font-lock-variable-name-face)
+
      ((scoped_identifier name: (identifier) @font-lock-type-face)
       (:match "^[A-Z]" @font-lock-type-face))
 
@@ -206,6 +209,12 @@
    `((method_declaration
       name: (identifier) @font-lock-function-name-face)
 
+     (variable_declarator
+      name: (identifier) @font-lock-variable-name-face)
+
+     (element_value_pair
+      key: (identifier) @font-lock-property-face)
+
      (formal_parameter
       name: (identifier) @font-lock-variable-name-face)
 
@@ -220,7 +229,15 @@
      (method_invocation
       name: (identifier) @font-lock-function-name-face)
 
-     (argument_list (identifier) @font-lock-variable-name-face)))
+     (argument_list (identifier) @font-lock-variable-name-face))
+
+   :language 'java
+   :feature 'bracket
+   '((["(" ")" "[" "]" "{" "}"]) @font-lock-bracket-face)
+
+   :language 'java
+   :feature 'delimiter
+   '((["," ":" ";"]) @font-lock-delimiter-face))
   "Tree-sitter font-lock settings.")
 
 (defun java-ts-mode--imenu-1 (node)
@@ -248,33 +265,27 @@ the subtrees."
 (defun java-ts-mode--imenu ()
   "Return Imenu alist for the current buffer."
   (let* ((node (treesit-buffer-root-node))
-         (class-tree
-          `("Class" . ,(java-ts-mode--imenu-1
-                        (treesit-induce-sparse-tree
-                         node "^class_declaration$" nil 1000))))
-         (interface-tree
-          `("Interface" . ,(java-ts-mode--imenu-1
-                            (treesit-induce-sparse-tree
-                             node "^interface_declaration$"  nil 1000))))
-         (enum-tree
-          `("Enum" . ,(java-ts-mode--imenu-1
-                       (treesit-induce-sparse-tree
-                        node "^enum_declaration$"  nil 1000))))
-         (record-tree
-          `("Record" . ,(java-ts-mode--imenu-1
-                         (treesit-induce-sparse-tree
-                          node "^record_declaration$"  nil 1000))))
-         (method-tree
-          `("Method" . ,(java-ts-mode--imenu-1
-                         (treesit-induce-sparse-tree
-                          node "^method_declaration$"  nil 1000)))))
-    (cl-remove-if
-     #'null
-     `(,(when (cdr class-tree) class-tree)
-       ,(when (cdr interface-tree) interface-tree)
-       ,(when (cdr enum-tree) enum-tree)
-       ,(when (cdr record-tree) record-tree)
-       ,(when (cdr method-tree) method-tree)))))
+         (class-tree (treesit-induce-sparse-tree
+                      node "^class_declaration$" nil 1000))
+         (interface-tree (treesit-induce-sparse-tree
+                          node "^interface_declaration$" nil 1000))
+         (enum-tree (treesit-induce-sparse-tree
+                     node "^enum_declaration$" nil 1000))
+         (record-tree (treesit-induce-sparse-tree
+                       node "^record_declaration$"  nil 1000))
+         (method-tree (treesit-induce-sparse-tree
+                       node "^method_declaration$" nil 1000))
+         (class-index (java-ts-mode--imenu-1 class-tree))
+         (interface-index (java-ts-mode--imenu-1 interface-tree))
+         (enum-index (java-ts-mode--imenu-1 enum-tree))
+         (record-index (java-ts-mode--imenu-1 record-tree))
+         (method-index (java-ts-mode--imenu-1 method-tree)))
+    (append
+     (when class-index `(("Class" . ,class-index)))
+     (when interface-index `(("Interface" . ,interface-index)))
+     (when enum-index `(("Enum" . ,enum-index)))
+     (when record-index `(("Record" . ,record-index)))
+     (when method-index `(("Method" . ,method-index))))))
 
 ;;;###autoload
 (define-derived-mode java-ts-mode prog-mode "Java"
@@ -289,10 +300,13 @@ the subtrees."
 
   ;; Comments.
   (setq-local comment-start "// ")
-  (setq-local comment-start-skip "\\(?://+\\|/\\*+\\)\\s *")
   (setq-local comment-end "")
-  (setq-local treesit-comment-start (rx "/" (or (+ "/") (+ "*"))))
-  (setq-local treesit-comment-end (rx (+ (or "*")) "/"))
+  (setq-local comment-start-skip (rx (group "/" (or (+ "/") (+ "*")))
+                                     (* (syntax whitespace))))
+  (setq-local comment-end-skip
+              (rx (* (syntax whitespace))
+                  (group (or (syntax comment-end)
+                             (seq (+ "*") "/")))))
 
   ;; Indent.
   (setq-local treesit-simple-indent-rules java-ts-mode--indent-rules)
@@ -307,9 +321,10 @@ the subtrees."
   ;; Font-lock.
   (setq-local treesit-font-lock-settings java-ts-mode--font-lock-settings)
   (setq-local treesit-font-lock-feature-list
-              '((basic comment keyword constant string operator)
-                (type definition expression literal annotation)
-                ()))
+              '(( comment definition )
+                ( constant keyword string type)
+                ( annotation expression literal)
+                ( bracket delimiter operator)))
 
   ;; Imenu.
   (setq-local imenu-create-index-function #'java-ts-mode--imenu)
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 51d105b9d7..ad1fe62d42 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3465,6 +3465,13 @@ This function is intended for use in 
`after-change-functions'."
     "typeof" "var" "void" "while" "with" "yield")
   "JavaScript keywords for tree-sitter font-locking.")
 
+(defvar js--treesit-operators
+  '("=" "+=" "-=" "*=" "/=" "%=" "**=" "<<=" ">>=" ">>>=" "&=" "^="
+    "|=" "&&=" "||=" "??=" "==" "!=" "===" "!==" ">" ">=" "<" "<=" "+"
+    "-" "*" "/" "%" "++" "--" "**" "&" "|" "^" "~" "<<" ">>" ">>>"
+    "&&" "||" "!")
+  "JavaScript operators for tree-sitter font-locking.")
+
 (defvar js--treesit-font-lock-settings
   (treesit-font-lock-rules
 
@@ -3479,8 +3486,7 @@ This function is intended for use in 
`after-change-functions'."
    `(((identifier) @font-lock-constant-face
       (:match "^[A-Z_][A-Z_\\d]*$" @font-lock-constant-face))
 
-     [(true) (false) (null)] @font-lock-constant-face
-     (number) @font-lock-constant-face)
+     [(true) (false) (null)] @font-lock-constant-face)
 
    :language 'javascript
    :override t
@@ -3557,21 +3563,6 @@ This function is intended for use in 
`after-change-functions'."
              (member_expression
               property: (property_identifier) @font-lock-variable-name-face)]))
 
-   :language 'javascript
-   :override t
-   :feature 'property
-   `((pair key: (property_identifier) @font-lock-variable-name-face)
-
-     (pair value: (identifier) @font-lock-variable-name-face)
-
-     (pair
-      key: (property_identifier) @font-lock-function-name-face
-      value: [(function) (arrow_function)])
-
-     ((shorthand_property_identifier) @font-lock-variable-name-face)
-
-     ((shorthand_property_identifier_pattern) @font-lock-variable-name-face))
-
    :language 'javascript
    :override t
    :feature 'pattern
@@ -3596,7 +3587,42 @@ This function is intended for use in 
`after-change-functions'."
 
      (jsx_attribute
       (property_identifier)
-      @font-lock-constant-face)))
+      @font-lock-constant-face))
+
+   :language 'javascript
+   :feature 'number
+   `((number) @font-lock-number-face
+     ((identifier) @font-lock-number-face
+      (:match "^\\(:?NaN\\|Infinity\\)$" @font-lock-number-face)))
+
+   :language 'javascript
+   :feature 'operator
+   `([,@js--treesit-operators] @font-lock-operator-face
+     (ternary_expression ["?" ":"] @font-lock-operator-face))
+
+   :language 'javascript
+   :feature 'bracket
+   '((["(" ")" "[" "]" "{" "}"]) @font-lock-bracket-face)
+
+   :language 'javascript
+   :feature 'delimiter
+   '((["," "." ";" ":"]) @font-lock-delimiter-face)
+
+   :language 'javascript
+   :feature 'escape-sequence
+   :override t
+   '((escape_sequence) @font-lock-escape-face)
+
+   :language 'javascript
+   :override t
+   :feature 'property
+   `((property_identifier) @font-lock-property-face
+
+     (pair value: (identifier) @font-lock-variable-name-face)
+
+     ((shorthand_property_identifier) @font-lock-property-face)
+
+     ((shorthand_property_identifier_pattern) @font-lock-property-face)))
   "Tree-sitter font-lock settings.")
 
 (defun js--fontify-template-string (node override start end &rest _)
@@ -3822,11 +3848,14 @@ Currently there are `js-mode' and `js-ts-mode'."
     (setq-local which-func-imenu-joiner-function #'js--which-func-joiner)
     ;; Comment.
     (setq-local comment-start "// ")
-    (setq-local comment-start-skip "\\(?://+\\|/\\*+\\)\\s *")
     (setq-local comment-end "")
+    (setq-local comment-start-skip (rx (group "/" (or (+ "/") (+ "*")))
+                                       (* (syntax whitespace))))
+    (setq-local comment-end-skip
+                (rx (* (syntax whitespace))
+                    (group (or (syntax comment-end)
+                               (seq (+ "*") "/")))))
     (setq-local comment-multi-line t)
-    (setq-local treesit-comment-start (rx "/" (or (+ "/") (+ "*"))))
-    (setq-local treesit-comment-end (rx (+ (or "*")) "/"))
     ;; Electric-indent.
     (setq-local electric-indent-chars
                (append "{}():;," electric-indent-chars)) ;FIXME: js2-mode adds 
"[]*".
@@ -3846,9 +3875,11 @@ Currently there are `js-mode' and `js-ts-mode'."
     ;; Fontification.
     (setq-local treesit-font-lock-settings js--treesit-font-lock-settings)
     (setq-local treesit-font-lock-feature-list
-                '((comment declaration)
-                  (string keyword identifier expression constant)
-                  (property pattern jsx )))
+                '(( comment declaration)
+                  ( keyword string)
+                  ( constant escape-sequence expression
+                    identifier jsx number pattern property)
+                  ( bracket delimiter operator)))
     ;; Imenu
     (setq-local imenu-create-index-function
                 #'js--treesit-imenu)
diff --git a/lisp/progmodes/json-ts-mode.el b/lisp/progmodes/json-ts-mode.el
index 4ea285bd43..101e873cf6 100644
--- a/lisp/progmodes/json-ts-mode.el
+++ b/lisp/progmodes/json-ts-mode.el
@@ -74,26 +74,28 @@
 (defvar json-ts-mode--font-lock-settings
   (treesit-font-lock-rules
    :language 'json
-   :feature 'comment
-   :override t
-   '((comment) @font-lock-comment-face)
+   :feature 'bracket
+   '((["[" "]" "{" "}"]) @font-lock-bracket-face)
    :language 'json
-   :feature 'string
-   :override t
-   '((escape_sequence) @font-lock-constant-face
-     (string) @font-lock-string-face)
+   :feature 'constant
+   '([(null) (true) (false)] @font-lock-constant-face)
+   :language 'json
+   :feature 'delimiter
+   '((["," ":"]) @font-lock-delimiter-face)
    :language 'json
    :feature 'number
-   :override t
-   '((number) @font-lock-constant-face)
+   '((number) @font-lock-number-face)
    :language 'json
-   :feature 'constant
+   :feature 'string
+   '((string) @font-lock-string-face)
+   :language 'json
+   :feature 'escape-sequence
    :override t
-   '([(null) (true) (false)] @font-lock-constant-face)
+   '((escape_sequence) @font-lock-escape-face)
    :language 'json
-   :feature 'pair
+   :feature 'error
    :override t
-   `((pair key: (_) @font-lock-variable-name-face)))
+   '((ERROR) @font-lock-warning-face))
   "Font-lock settings for JSON.")
 
 (defun json-ts-mode--imenu-1 (node)
@@ -154,7 +156,9 @@ the subtrees."
   ;; Font-lock.
   (setq-local treesit-font-lock-settings json-ts-mode--font-lock-settings)
   (setq-local treesit-font-lock-feature-list
-              '((comment string number) (constant pair) ()))
+              '((constant number string)
+                (escape-sequence)
+                (bracket delimiter error)))
 
   ;; Imenu.
   (setq-local imenu-create-index-function #'json-ts-mode--imenu)
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 63510e9050..5b8648031f 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -175,8 +175,14 @@ function; the only practical limitation is to use values 
that
 `cl-defmethod' can dispatch on, like a cons cell, or a list, or a
 CL struct.")
 
-(defvar project-current-inhibit-prompt nil
-  "Non-nil to skip prompting the user in `project-current'.")
+(define-obsolete-variable-alias
+  'project-current-inhibit-prompt
+  'project-current-directory-override
+  "29.1")
+
+(defvar project-current-directory-override nil
+  "Value to use instead of `default-directory' when detecting the project.
+When it is non-nil, `project-current' will always skip prompting too.")
 
 ;;;###autoload
 (defun project-current (&optional maybe-prompt directory)
@@ -195,11 +201,12 @@ ignored (per `project-ignores').
 
 See the doc string of `project-find-functions' for the general form
 of the project instance object."
-  (unless directory (setq directory default-directory))
+  (unless directory (setq directory (or project-current-directory-override
+                                        default-directory)))
   (let ((pr (project--find-in-directory directory)))
     (cond
      (pr)
-     ((unless project-current-inhibit-prompt
+     ((unless project-current-directory-override
         maybe-prompt)
       (setq directory (project-prompt-project-dir)
             pr (project--find-in-directory directory))))
@@ -251,6 +258,11 @@ depending on the languages used, this list should include 
the
 headers search path, load path, class path, and so on."
   nil)
 
+(cl-defgeneric project-name (project)
+  "A human-readable name for the project.
+Nominally unique, but not enforced."
+  (file-name-base (directory-file-name (project-root project))))
+
 (cl-defgeneric project-ignores (_project _dir)
   "Return the list of glob patterns to ignore inside DIR.
 Patterns can match both regular files and directories.
@@ -390,6 +402,15 @@ you might have to restart Emacs to see the effect."
   :version "29.1"
   :safe #'booleanp)
 
+(defcustom project-vc-name nil
+  "When non-nil, the name of the current VC project.
+
+The best way to change the value a VC project reports as its
+name, is by setting this in .dir-locals.el."
+  :type 'string
+  :version "29.1"
+  :safe #'stringp)
+
 ;; FIXME: Using the current approach, major modes are supposed to set
 ;; this variable to a buffer-local value.  So we don't have access to
 ;; the "external roots" of language A from buffers of language B, which
@@ -439,7 +460,7 @@ backend implementation of `project-external-roots'.")
                         (if (and
                              ;; FIXME: Invalidate the cache when the value
                              ;; of this variable changes.
-                             (project--vc-merge-submodules-p root)
+                             project-vc-merge-submodules
                              (project--submodule-p root))
                             (let* ((parent (file-name-directory
                                             (directory-file-name root))))
@@ -491,7 +512,7 @@ backend implementation of `project-external-roots'.")
 (cl-defmethod project-files ((project (head vc)) &optional dirs)
   (mapcan
    (lambda (dir)
-     (let ((ignores (project--value-in-dir 'project-vc-ignores dir))
+     (let ((ignores project-vc-ignores)
            backend)
        (if (and (file-equal-p dir (nth 2 project))
                 (setq backend (cadr project))
@@ -555,7 +576,7 @@ backend implementation of `project-external-roots'.")
               (split-string
                (apply #'vc-git--run-command-string nil "ls-files" args)
                "\0" t)))
-       (when (project--vc-merge-submodules-p default-directory)
+       (when project-vc-merge-submodules
          ;; Unfortunately, 'ls-files --recurse-submodules' conflicts with '-o'.
          (let* ((submodules (project--git-submodules))
                 (sub-files
@@ -589,11 +610,6 @@ backend implementation of `project-external-roots'.")
           (lambda (s) (concat default-directory s))
           (split-string (buffer-string) "\0" t)))))))
 
-(defun project--vc-merge-submodules-p (dir)
-  (project--value-in-dir
-   'project-vc-merge-submodules
-   dir))
-
 (defun project--git-submodules ()
   ;; 'git submodule foreach' is much slower.
   (condition-case nil
@@ -634,7 +650,7 @@ backend implementation of `project-external-roots'.")
          (condition-case nil
              (vc-call-backend backend 'ignore-completion-table root)
            (vc-not-supported () nil)))))
-     (project--value-in-dir 'project-vc-ignores root)
+     project-vc-ignores
      (mapcar
       (lambda (dir)
         (concat dir "/"))
@@ -665,16 +681,9 @@ DIRS must contain directory names."
   ;; Sidestep the issue of expanded/abbreviated file names here.
   (cl-set-difference files dirs :test #'file-in-directory-p))
 
-(defun project--value-in-dir (var dir)
-  (with-temp-buffer
-    (setq default-directory dir)
-    (let ((enable-local-variables :all))
-      (hack-dir-local-variables-non-file-buffer))
-    (symbol-value var)))
-
 (cl-defmethod project-buffers ((project (head vc)))
   (let* ((root (expand-file-name (file-name-as-directory (project-root 
project))))
-         (modules (unless (or (project--vc-merge-submodules-p root)
+         (modules (unless (or project-vc-merge-submodules
                               (project--submodule-p root))
                     (mapcar
                      (lambda (m) (format "%s%s/" root m))
@@ -689,6 +698,10 @@ DIRS must contain directory names."
         (push buf bufs)))
     (nreverse bufs)))
 
+(cl-defmethod project-name ((_project (head vc)))
+  (or project-vc-name
+      (cl-call-next-method)))
+
 
 ;;; Project commands
 
@@ -934,11 +947,15 @@ by the user at will."
          (_ (when included-cpd
               (setq substrings (cons "./" substrings))))
          (new-collection (project--file-completion-table substrings))
-         (res (project--completing-read-strict prompt
-                                               new-collection
-                                               predicate
-                                               hist mb-default)))
-    (concat common-parent-directory res)))
+         (relname (let ((history-add-new-input nil))
+                    (project--completing-read-strict prompt
+                                                     new-collection
+                                                     predicate
+                                                     hist mb-default)))
+         (absname (expand-file-name relname common-parent-directory)))
+    (when (and hist history-add-new-input)
+      (add-to-history hist absname))
+    absname))
 
 (defun project--read-file-absolute (prompt
                                     all-files &optional predicate
@@ -1680,10 +1697,8 @@ to directory DIR."
   (let ((command (if (symbolp project-switch-commands)
                      project-switch-commands
                    (project--switch-project-command))))
-    (with-temp-buffer
-      (let ((default-directory dir)
-            (project-current-inhibit-prompt t))
-        (call-interactively command)))))
+    (let ((project-current-directory-override dir))
+      (call-interactively command))))
 
 (provide 'project)
 ;;; project.el ends here
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index af59b8e146..acfee21135 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -279,7 +279,7 @@
 (declare-function treesit-node-start "treesit.c")
 (declare-function treesit-node-end "treesit.c")
 (declare-function treesit-node-parent "treesit.c")
-
+(declare-function treesit-node-prev-sibling "treesit.c")
 
 (autoload 'comint-mode "comint")
 (autoload 'help-function-arglist "help-fns")
@@ -578,7 +578,7 @@ the {...} holes that appear within f-strings."
   ;; FIXME: This will fail to properly highlight strings appearing
   ;; within the {...} of an f-string.
   ;; We could presumably fix it by running
-  ;; `font-lock-fontify-syntactically-region' (as is done in
+  ;; `font-lock-default-fontify-syntactically-region' (as is done in
   ;; `sm-c--cpp-fontify-syntactically', for example) after removing
   ;; the `face' property, but I'm not sure it's worth the effort and
   ;; the risks.
@@ -988,7 +988,7 @@ It makes underscores and dots word constituent chars.")
 
 (defvar python--treesit-operators
   '("-" "-=" "!=" "*" "**" "**=" "*=" "/" "//" "//=" "/=" "&" "%" "%="
-    "^" "+" "+=" "<" "<<" "<=" "<>" "=" "==" ">" ">=" ">>" "|" "~"))
+    "^" "+" "+=" "<" "<<" "<=" "<>" "=" "==" ">" ">=" ">>" "|" "~" "@" "@="))
 
 (defvar python--treesit-special-attributes
   '("__annotations__" "__closure__" "__code__"
@@ -1033,12 +1033,27 @@ fontified."
   (let* ((string-beg (treesit-node-start node))
          (string-end (treesit-node-end node))
          (maybe-expression (treesit-node-parent node))
-         (maybe-defun (treesit-node-parent
+         (grandparent (treesit-node-parent
                        (treesit-node-parent
                         maybe-expression)))
-         (face (if (and (member (treesit-node-type maybe-defun)
-                                '("function_definition"
-                                  "class_definition"))
+         (maybe-defun grandparent)
+         (face (if (and (or (member (treesit-node-type maybe-defun)
+                                    '("function_definition"
+                                      "class_definition"))
+                            ;; If the grandparent is null, meaning the
+                            ;; string is top-level, and the string has
+                            ;; no node or only comment preceding it,
+                            ;; it's a BOF docstring.
+                            (and (null grandparent)
+                                 (cl-loop
+                                  for prev = (treesit-node-prev-sibling
+                                              maybe-expression)
+                                  then (treesit-node-prev-sibling prev)
+                                  while prev
+                                  if (not (equal (treesit-node-type prev)
+                                                 "comment"))
+                                  return nil
+                                  finally return t)))
                         ;; This check filters out this case:
                         ;; def function():
                         ;;     return "some string"
@@ -1113,7 +1128,9 @@ fontified."
 
    :feature 'decorator
    :language 'python
-   '((decorator) @font-lock-type-face)
+   '((decorator "@" @font-lock-type-face)
+     (decorator (call function: (identifier) @font-lock-type-face))
+     (decorator (identifier) @font-lock-type-face))
 
    :feature 'type
    :language 'python
@@ -2394,55 +2411,6 @@ position, else returns nil."
       (ignore (goto-char point)))))
 
 
-;;; Tree-sitter navigation
-
-(defun python-treesit-beginning-of-defun (&optional arg)
-  "Tree-sitter `beginning-of-defun' function.
-ARG is the same as in `beginning-of-defun'."
-  (let ((arg (or arg 1))
-        (node (treesit-node-at (point)))
-        (function-or-class (rx (or "function" "class") "_definition")))
-    (if (> arg 0)
-        ;; Go backward.
-        (while (and (> arg 0)
-                    (setq node (treesit-search-forward-goto
-                                node function-or-class t t)))
-          ;; Here we deviate from `treesit-beginning-of-defun': if
-          ;; NODE is function_definition, find the top-level
-          ;; function_definition, if NODE is class_definition, find
-          ;; the top-level class_definition, don't mix the two like
-          ;; `treesit-beginning-of-defun' would.
-          (setq node (or (treesit-node-top-level node)
-                         node))
-          (setq arg (1- arg)))
-      ;; Go forward.
-      (while (and (< arg 0)
-                  (setq node (treesit-search-forward-goto
-                              node function-or-class)))
-        (setq node (or (treesit-node-top-level node)
-                       node))
-        (setq arg (1+ arg))))
-    (when node
-      (goto-char (treesit-node-start node))
-      t)))
-
-(defun python-treesit-end-of-defun ()
-  "Tree-sitter `end-of-defun' function."
-  ;; Why not simply get the largest node at point: when point is at
-  ;; (point-min), that gives us the root node.
-  (let* ((node (treesit-node-at (point)))
-         (top-func (treesit-node-top-level
-                    node
-                    "function_definition"))
-         (top-class (treesit-node-top-level
-                     node
-                     "class_definition")))
-    ;; Prefer function_definition over class_definition: when we are
-    ;; in a function_definition inside a class_definition, jump to the
-    ;; end of function_definition.
-    (goto-char (or (treesit-node-end (or top-func top-class)) (point)))))
-
-
 ;;; Shell integration
 
 (defcustom python-shell-buffer-name "Python"
@@ -6630,7 +6598,9 @@ implementations: `python-mode' and `python-ts-mode'."
               `(,python-font-lock-keywords
                 nil nil nil nil
                 (font-lock-syntactic-face-function
-                 . python-font-lock-syntactic-face-function)))
+                 . python-font-lock-syntactic-face-function)
+                (font-lock-extend-after-change-region-function
+                 . python-font-lock-extend-region)))
   (setq-local syntax-propertize-function
               python-syntax-propertize-function)
   (setq-local imenu-create-index-function
@@ -6645,17 +6615,16 @@ implementations: `python-mode' and `python-ts-mode'."
   (when (treesit-ready-p 'python)
     (treesit-parser-create 'python)
     (setq-local treesit-font-lock-feature-list
-                '(( comment string definition)
-                  ( keyword builtin constant type)
-                  ( assignment decorator escape-sequence
-                    string-interpolation number property
-                    operator bracket delimiter)))
+                '(( comment definition)
+                  ( keyword string type)
+                  ( assignment builtin constant decorator
+                    escape-sequence number property string-interpolation )
+                  ( bracket delimiter operator)))
     (setq-local treesit-font-lock-settings python--treesit-settings)
     (setq-local imenu-create-index-function
                 #'python-imenu-treesit-create-index)
-    (setq-local beginning-of-defun-function
-                #'python-treesit-beginning-of-defun)
-    (setq-local end-of-defun-function #'python-treesit-end-of-defun)
+    (setq-local treesit-defun-type-regexp (rx (or "function" "class")
+                                              "_definition"))
     (treesit-major-mode-setup)))
 
 ;;; Completion predicates for M-x
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 54f005508c..408ebfc045 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1468,8 +1468,83 @@ When the region is active, send the region instead."
 
 (defvar sh-mode--treesit-settings)
 
+(defun sh--guess-shell ()
+  "Guess the shell used in the current buffer.
+Return the name of the shell suitable for `sh-set-shell'."
+  (cond ((save-excursion
+           (goto-char (point-min))
+           (looking-at auto-mode-interpreter-regexp))
+         (match-string 2))
+        ((not buffer-file-name) sh-shell-file)
+        ;; Checks that use `buffer-file-name' follow.
+        ((string-match "\\.m?spec\\'" buffer-file-name) "rpm")
+        ((string-match "[.]sh\\>"     buffer-file-name) "sh")
+        ((string-match "[.]bash\\(rc\\)?\\>"   buffer-file-name) "bash")
+        ((string-match "[.]ksh\\>"    buffer-file-name) "ksh")
+        ((string-match "[.]mkshrc\\>" buffer-file-name) "mksh")
+        ((string-match "[.]t?csh\\(rc\\)?\\>" buffer-file-name) "csh")
+        ((string-match "[.]zsh\\(rc\\|env\\)?\\>" buffer-file-name) "zsh")
+       ((equal (file-name-nondirectory buffer-file-name) ".profile") "sh")
+        (t sh-shell-file)))
+
+;;;###autoload
+(define-derived-mode sh-base-mode prog-mode "Shell-script"
+  "Generic major mode for editing shell scripts.
+
+This is a generic major mode intended to be inherited by concrete
+implementations.  Currently there are two: `sh-mode' and
+`bash-ts-mode'."
+  (make-local-variable 'sh-shell-file)
+  (make-local-variable 'sh-shell)
+
+  (setq-local skeleton-pair-default-alist
+             sh-skeleton-pair-default-alist)
+
+  (setq-local paragraph-start (concat page-delimiter "\\|$"))
+  (setq-local paragraph-separate (concat paragraph-start "\\|#!/"))
+  (setq-local comment-start "# ")
+  (setq-local comment-start-skip "#+[\t ]*")
+  (setq-local local-abbrev-table sh-mode-abbrev-table)
+  (setq-local comint-dynamic-complete-functions
+             sh-dynamic-complete-functions)
+  (add-hook 'completion-at-point-functions #'comint-completion-at-point nil t)
+  ;; we can't look if previous line ended with `\'
+  (setq-local comint-prompt-regexp "^[ \t]*")
+  (setq-local imenu-case-fold-search nil)
+  (setq-local syntax-propertize-function #'sh-syntax-propertize-function)
+  (add-hook 'syntax-propertize-extend-region-functions
+            #'syntax-propertize-multiline 'append 'local)
+  (setq-local skeleton-pair-alist '((?` _ ?`)))
+  (setq-local skeleton-pair-filter-function #'sh-quoted-p)
+  (setq-local skeleton-further-elements
+             '((< '(- (min sh-basic-offset (current-column))))))
+  (setq-local skeleton-filter-function #'sh-feature)
+  (setq-local skeleton-newline-indent-rigidly t)
+  (setq-local defun-prompt-regexp
+              (concat
+               "^\\("
+               "\\(function[ \t]\\)?[ \t]*[[:alnum:]_]+[ \t]*([ \t]*)"
+               "\\|"
+               "function[ \t]+[[:alnum:]_]+[ \t]*\\(([ \t]*)\\)?"
+               "\\)[ \t]*"))
+  (setq-local add-log-current-defun-function #'sh-current-defun-name)
+  (add-hook 'completion-at-point-functions
+            #'sh-completion-at-point-function nil t)
+  (setq-local outline-regexp "###")
+  (setq-local escaped-string-quote
+              (lambda (terminator)
+                (if (eq terminator ?')
+                    "'\\'"
+                  "\\")))
+  ;; Parse or insert magic number for exec, and set all variables depending
+  ;; on the shell thus determined.
+  (sh-set-shell (sh--guess-shell) nil nil)
+  (add-hook 'flymake-diagnostic-functions #'sh-shellcheck-flymake nil t)
+  (add-hook 'hack-local-variables-hook
+            #'sh-after-hack-local-variables nil t))
+
 ;;;###autoload
-(define-derived-mode sh-mode prog-mode "Shell-script"
+(define-derived-mode sh-mode sh-base-mode "Shell-script"
   "Major mode for editing shell scripts.
 This mode works for many shells, since they all have roughly the same syntax,
 as far as commands, arguments, variables, pipes, comments etc. are concerned.
@@ -1520,94 +1595,48 @@ indicate what shell it is use `sh-alias-alist' to 
translate.
 
 If your shell gives error messages with line numbers, you can use 
\\[executable-interpret]
 with your script for an edit-interpret-debug cycle."
-  (make-local-variable 'sh-shell-file)
-  (make-local-variable 'sh-shell)
+  (setq font-lock-defaults
+        `((sh-font-lock-keywords
+           sh-font-lock-keywords-1 sh-font-lock-keywords-2)
+          nil nil
+          ((?/ . "w") (?~ . "w") (?. . "w") (?- . "w") (?_ . "w")) nil
+          (font-lock-syntactic-face-function
+           . ,#'sh-font-lock-syntactic-face-function))))
 
-  (setq-local skeleton-pair-default-alist
-             sh-skeleton-pair-default-alist)
-
-  (setq-local paragraph-start (concat page-delimiter "\\|$"))
-  (setq-local paragraph-separate (concat paragraph-start "\\|#!/"))
-  (setq-local comment-start "# ")
-  (setq-local comment-start-skip "#+[\t ]*")
-  (setq-local local-abbrev-table sh-mode-abbrev-table)
-  (setq-local comint-dynamic-complete-functions
-             sh-dynamic-complete-functions)
-  (add-hook 'completion-at-point-functions #'comint-completion-at-point nil t)
-  ;; we can't look if previous line ended with `\'
-  (setq-local comint-prompt-regexp "^[ \t]*")
-  (setq-local imenu-case-fold-search nil)
-  (setq-local syntax-propertize-function #'sh-syntax-propertize-function)
-  (add-hook 'syntax-propertize-extend-region-functions
-            #'syntax-propertize-multiline 'append 'local)
-  (setq-local skeleton-pair-alist '((?` _ ?`)))
-  (setq-local skeleton-pair-filter-function #'sh-quoted-p)
-  (setq-local skeleton-further-elements
-             '((< '(- (min sh-basic-offset (current-column))))))
-  (setq-local skeleton-filter-function #'sh-feature)
-  (setq-local skeleton-newline-indent-rigidly t)
-  (setq-local defun-prompt-regexp
-              (concat
-               "^\\("
-               "\\(function[ \t]\\)?[ \t]*[[:alnum:]_]+[ \t]*([ \t]*)"
-               "\\|"
-               "function[ \t]+[[:alnum:]_]+[ \t]*\\(([ \t]*)\\)?"
-               "\\)[ \t]*"))
-  (setq-local add-log-current-defun-function #'sh-current-defun-name)
-  (add-hook 'completion-at-point-functions
-            #'sh-completion-at-point-function nil t)
-  (setq-local outline-regexp "###")
-  (setq-local escaped-string-quote
-              (lambda (terminator)
-                (if (eq terminator ?')
-                    "'\\'"
-                  "\\")))
-  ;; Parse or insert magic number for exec, and set all variables depending
-  ;; on the shell thus determined.
-  (sh-set-shell
-   (cond ((save-excursion
-            (goto-char (point-min))
-            (looking-at auto-mode-interpreter-regexp))
-          (match-string 2))
-         ((not buffer-file-name) sh-shell-file)
-         ;; Checks that use `buffer-file-name' follow.
-         ((string-match "\\.m?spec\\'" buffer-file-name) "rpm")
-         ((string-match "[.]sh\\>"     buffer-file-name) "sh")
-         ((string-match "[.]bash\\(rc\\)?\\>"   buffer-file-name) "bash")
-         ((string-match "[.]ksh\\>"    buffer-file-name) "ksh")
-         ((string-match "[.]mkshrc\\>" buffer-file-name) "mksh")
-         ((string-match "[.]t?csh\\(rc\\)?\\>" buffer-file-name) "csh")
-         ((string-match "[.]zsh\\(rc\\|env\\)?\\>" buffer-file-name) "zsh")
-        ((equal (file-name-nondirectory buffer-file-name) ".profile") "sh")
-         (t sh-shell-file))
-   nil nil)
-  (add-hook 'flymake-diagnostic-functions #'sh-shellcheck-flymake nil t)
-  (add-hook 'hack-local-variables-hook
-    #'sh-after-hack-local-variables nil t)
+;;;###autoload
+(defalias 'shell-script-mode 'sh-mode)
 
-  (cond
-   ;; Tree-sitter.  If the shell is bash, we can enable tree-sitter.
-   ((treesit-ready-p sh-shell)
+;;;###autoload
+(define-derived-mode bash-ts-mode sh-base-mode "Bash"
+  "Major mode for editing Bash shell scripts.
+This mode automatically falls back to `sh-mode' if the buffer is
+not written in Bash or sh."
+  (when (treesit-ready-p 'bash)
     (setq-local treesit-font-lock-feature-list
-                '((comment function string heredoc)
-                  (variable keyword command declaration-command)
-                  (constant operator builtin-variable)))
+                '(( comment function)
+                  ( command declaration-command keyword string)
+                  ( builtin-variable constant heredoc number variable)
+                  ( bracket delimiter misc-punctuation operator)))
     (setq-local treesit-font-lock-settings
                 sh-mode--treesit-settings)
-    (treesit-major-mode-setup))
-   ;; Elisp.
-   (t
-    (setq font-lock-defaults
-          `((sh-font-lock-keywords
-             sh-font-lock-keywords-1 sh-font-lock-keywords-2)
-            nil nil
-            ((?/ . "w") (?~ . "w") (?. . "w") (?- . "w") (?_ . "w")) nil
-            (font-lock-syntactic-face-function
-             . ,#'sh-font-lock-syntactic-face-function))))))
-
-;;;###autoload
-(defalias 'shell-script-mode 'sh-mode)
-
+    (treesit-major-mode-setup)))
+
+(advice-add 'bash-ts-mode :around #'sh--redirect-bash-ts-mode
+            ;; Give it lower precedence than normal advice, so other
+            ;; advices take precedence over it.
+            '((depth . 50)))
+
+(defvar sh--redirect-recursing nil)
+(defun sh--redirect-bash-ts-mode (oldfn)
+  "Redirect to `sh-mode' if the current file is not written in Bash or sh.
+OLDFN should be `bash-ts-mode'."
+  (let ((sh--redirect-recursing sh--redirect-recursing))
+    (funcall (if (or delay-mode-hooks sh--redirect-recursing)
+                 oldfn
+               (setq sh--redirect-recursing t)
+               (if (member (file-name-base (sh--guess-shell)) '("bash" "sh"))
+                   oldfn
+                 #'sh-mode)))))
 
 (defun sh-font-lock-keywords (&optional keywords)
   "Function to get simple fontification based on `sh-font-lock-keywords'.
@@ -3210,8 +3239,7 @@ member of `flymake-diagnostic-functions'."
 ;;; Tree-sitter font-lock
 
 (defvar sh-mode--treesit-operators
-  '("|" "|&" "||" "&&" ">" ">>" "<" "<<" "<<-" "<<<" "==" "!=" ";"
-    ";;" ";&" ";;&")
+  '("|" "|&" "||" "&&" ">" ">>" "<" "<<" "<<-" "<<<" "==" "!=" ";&" ";;&")
   "A list of `sh-mode' operators to fontify.")
 
 (defvar sh-mode--treesit-keywords
@@ -3306,7 +3334,7 @@ See `sh-mode--treesit-other-keywords' and
 
    :feature 'operator
    :language 'bash
-   `([ ,@sh-mode--treesit-operators ] @font-lock-builtin-face)
+   `([,@sh-mode--treesit-operators] @font-lock-operator-face)
 
    :feature 'builtin-variable
    :language 'bash
@@ -3316,7 +3344,24 @@ See `sh-mode--treesit-other-keywords' and
                   `(seq bol
                         (or ,@builtin-vars)
                         eol)))
-              @font-lock-builtin-face))))
+              @font-lock-builtin-face)))
+
+   :feature 'number
+   :language 'bash
+   `(((word) @font-lock-number-face
+      (:match "^[0-9]+$" @font-lock-number-face)))
+
+   :feature 'bracket
+   :language 'bash
+   '((["(" ")" "((" "))" "[" "]" "[[" "]]" "{" "}"]) @font-lock-bracket-face)
+
+   :feature 'delimiter
+   :language 'bash
+   '(([";" ";;"]) @font-lock-delimiter-face)
+
+   :feature 'misc-punctuation
+   :language 'bash
+   '((["$"]) @font-lock-misc-punctuation-face))
   "Tree-sitter font-lock settings for `sh-mode'.")
 
 (provide 'sh-script)
diff --git a/lisp/progmodes/ts-mode.el b/lisp/progmodes/typescript-ts-mode.el
similarity index 62%
rename from lisp/progmodes/ts-mode.el
rename to lisp/progmodes/typescript-ts-mode.el
index 01719a89ee..bf483a31d3 100644
--- a/lisp/progmodes/ts-mode.el
+++ b/lisp/progmodes/typescript-ts-mode.el
@@ -1,4 +1,4 @@
-;;; ts-mode.el --- tree sitter support for TypeScript  -*- lexical-binding: t; 
-*-
+;;; typescript-ts-mode.el --- tree sitter support for TypeScript  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2022 Free Software Foundation, Inc.
 
@@ -25,17 +25,19 @@
 ;;; Code:
 
 (require 'treesit)
-(require 'rx)
 (require 'js)
+(eval-when-compile (require 'rx))
 
-(defcustom ts-mode-indent-offset 2
-  "Number of spaces for each indentation step in `ts-mode'."
+(declare-function treesit-parser-create "treesit.c")
+
+(defcustom typescript-ts-mode-indent-offset 2
+  "Number of spaces for each indentation step in `typescript-ts-mode'."
   :version "29.1"
   :type 'integer
   :safe 'integerp
   :group 'typescript)
 
-(defvar ts-mode--syntax-table
+(defvar typescript-ts-mode--syntax-table
   (let ((table (make-syntax-table)))
     ;; Taken from the cc-langs version
     (modify-syntax-entry ?_  "_"     table)
@@ -52,9 +54,9 @@
     (modify-syntax-entry ?` "\""     table)
     (modify-syntax-entry ?\240 "."   table)
     table)
-  "Syntax table for `ts-mode'.")
+  "Syntax table for `typescript-ts-mode'.")
 
-(defvar ts-mode--indent-rules
+(defvar typescript-ts-mode--indent-rules
   `((tsx
      ((parent-is "program") parent-bol 0)
      ((node-is "}") parent-bol 0)
@@ -63,33 +65,33 @@
      ((node-is ">") parent-bol 0)
      ((and (parent-is "comment") comment-end) comment-start -1)
      ((parent-is "comment") comment-start-skip 0)
-     ((parent-is "ternary_expression") parent-bol ts-mode-indent-offset)
-     ((parent-is "member_expression") parent-bol ts-mode-indent-offset)
-     ((parent-is "named_imports") parent-bol ts-mode-indent-offset)
-     ((parent-is "statement_block") parent-bol ts-mode-indent-offset)
-     ((parent-is "type_arguments") parent-bol ts-mode-indent-offset)
-     ((parent-is "variable_declarator") parent-bol ts-mode-indent-offset)
-     ((parent-is "arguments") parent-bol ts-mode-indent-offset)
-     ((parent-is "array") parent-bol ts-mode-indent-offset)
-     ((parent-is "formal_parameters") parent-bol ts-mode-indent-offset)
-     ((parent-is "template_substitution") parent-bol ts-mode-indent-offset)
-     ((parent-is "object_pattern") parent-bol ts-mode-indent-offset)
-     ((parent-is "object") parent-bol ts-mode-indent-offset)
-     ((parent-is "object_type") parent-bol ts-mode-indent-offset)
-     ((parent-is "enum_body") parent-bol ts-mode-indent-offset)
-     ((parent-is "arrow_function") parent-bol ts-mode-indent-offset)
-     ((parent-is "parenthesized_expression") parent-bol ts-mode-indent-offset)
+     ((parent-is "ternary_expression") parent-bol 
typescript-ts-mode-indent-offset)
+     ((parent-is "member_expression") parent-bol 
typescript-ts-mode-indent-offset)
+     ((parent-is "named_imports") parent-bol typescript-ts-mode-indent-offset)
+     ((parent-is "statement_block") parent-bol 
typescript-ts-mode-indent-offset)
+     ((parent-is "type_arguments") parent-bol typescript-ts-mode-indent-offset)
+     ((parent-is "variable_declarator") parent-bol 
typescript-ts-mode-indent-offset)
+     ((parent-is "arguments") parent-bol typescript-ts-mode-indent-offset)
+     ((parent-is "array") parent-bol typescript-ts-mode-indent-offset)
+     ((parent-is "formal_parameters") parent-bol 
typescript-ts-mode-indent-offset)
+     ((parent-is "template_substitution") parent-bol 
typescript-ts-mode-indent-offset)
+     ((parent-is "object_pattern") parent-bol typescript-ts-mode-indent-offset)
+     ((parent-is "object") parent-bol typescript-ts-mode-indent-offset)
+     ((parent-is "object_type") parent-bol typescript-ts-mode-indent-offset)
+     ((parent-is "enum_body") parent-bol typescript-ts-mode-indent-offset)
+     ((parent-is "arrow_function") parent-bol typescript-ts-mode-indent-offset)
+     ((parent-is "parenthesized_expression") parent-bol 
typescript-ts-mode-indent-offset)
 
      ;; TSX
-     ((parent-is "jsx_opening_element") parent ts-mode-indent-offset)
+     ((parent-is "jsx_opening_element") parent 
typescript-ts-mode-indent-offset)
      ((node-is "jsx_closing_element") parent 0)
-     ((parent-is "jsx_element") parent ts-mode-indent-offset)
+     ((parent-is "jsx_element") parent typescript-ts-mode-indent-offset)
      ((node-is "/") parent 0)
-     ((parent-is "jsx_self_closing_element") parent ts-mode-indent-offset)
+     ((parent-is "jsx_self_closing_element") parent 
typescript-ts-mode-indent-offset)
      (no-node parent-bol 0)))
   "Tree-sitter indent rules.")
 
-(defvar ts-mode--keywords
+(defvar typescript-ts-mode--keywords
   '("!" "abstract" "as" "async" "await" "break"
     "case" "catch" "class" "const" "continue" "debugger"
     "declare" "default" "delete" "do" "else" "enum"
@@ -101,7 +103,14 @@
     "while" "with" "yield")
   "TypeScript keywords for tree-sitter font-locking.")
 
-(defvar ts-mode--font-lock-settings
+(defvar typescript-ts-mode--operators
+  '("=" "+=" "-=" "*=" "/=" "%=" "**=" "<<=" ">>=" ">>>=" "&=" "^="
+    "|=" "&&=" "||=" "??=" "==" "!=" "===" "!==" ">" ">=" "<" "<=" "+"
+    "-" "*" "/" "%" "++" "--" "**" "&" "|" "^" "~" "<<" ">>" ">>>"
+    "&&" "||" "!" "?.")
+  "TypeScript operators for tree-sitter font-locking.")
+
+(defvar typescript-ts-mode--font-lock-settings
   (treesit-font-lock-rules
    :language 'tsx
    :override t
@@ -114,13 +123,12 @@
    `(((identifier) @font-lock-constant-face
       (:match "^[A-Z_][A-Z_\\d]*$" @font-lock-constant-face))
 
-     [(true) (false) (null)] @font-lock-constant-face
-     (number) @font-lock-constant-face)
+     [(true) (false) (null)] @font-lock-constant-face)
 
    :language 'tsx
    :override t
    :feature 'keyword
-   `([,@ts-mode--keywords] @font-lock-keyword-face
+   `([,@typescript-ts-mode--keywords] @font-lock-keyword-face
      [(this) (super)] @font-lock-keyword-face)
 
    :language 'tsx
@@ -207,30 +215,11 @@
        (member_expression
         property: (property_identifier) @font-lock-function-name-face)]))
 
-   :language 'tsx
-   :override t
-   :feature 'property
-   `((pair key: (property_identifier) @font-lock-variable-name-face)
-
-     (pair value: (identifier) @font-lock-variable-name-face)
-
-     (pair
-      key: (property_identifier) @font-lock-function-name-face
-      value: [(function) (arrow_function)])
-
-     (property_signature
-      name: (property_identifier) @font-lock-variable-name-face)
-
-     ((shorthand_property_identifier) @font-lock-variable-name-face)
-
-     ((shorthand_property_identifier_pattern)
-      @font-lock-variable-name-face))
-
    :language 'tsx
    :override t
    :feature 'pattern
    `((pair_pattern
-      key: (property_identifier) @font-lock-variable-name-face)
+      key: (property_identifier) @font-lock-property-face)
 
      (array_pattern (identifier) @font-lock-variable-name-face))
 
@@ -249,41 +238,76 @@
       [(nested_identifier (identifier)) (identifier)]
       @font-lock-function-name-face)
 
-     (jsx_attribute (property_identifier) @font-lock-constant-face)))
+     (jsx_attribute (property_identifier) @font-lock-constant-face))
+
+   :language 'tsx
+   :feature 'number
+   `((number) @font-lock-number-face
+     ((identifier) @font-lock-number-face
+      (:match "^\\(:?NaN\\|Infinity\\)$" @font-lock-number-face)))
+
+   :language 'tsx
+   :feature 'operator
+   `([,@typescript-ts-mode--operators] @font-lock-operator-face
+     (ternary_expression ["?" ":"] @font-lock-operator-face))
+
+   :language 'tsx
+   :feature 'bracket
+   '((["(" ")" "[" "]" "{" "}"]) @font-lock-bracket-face)
+
+   :language 'tsx
+   :feature 'delimiter
+   '((["," "." ";" ":"]) @font-lock-delimiter-face)
+
+   :language 'tsx
+   :feature 'escape-sequence
+   :override t
+   '((escape_sequence) @font-lock-escape-face)
+
+   :language 'tsx
+   :override t
+   :feature 'property
+   `(((property_identifier) @font-lock-property-face)
+
+     (pair value: (identifier) @font-lock-variable-name-face)
+
+     ((shorthand_property_identifier) @font-lock-property-face)
+
+     ((shorthand_property_identifier_pattern)
+      @font-lock-property-face)))
   "Tree-sitter font-lock settings.")
 
 ;;;###autoload
-(add-to-list 'auto-mode-alist '("\\.ts\\'" . ts-mode))
+(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode))
 
 ;;;###autoload
-(add-to-list 'auto-mode-alist '("\\.tsx\\'" . ts-mode))
+(add-to-list 'auto-mode-alist '("\\.tsx\\'" . typescript-ts-mode))
 
 ;;;###autoload
-(define-derived-mode ts-mode prog-mode "TypeScript"
+(define-derived-mode typescript-ts-mode prog-mode "TypeScript"
   "Major mode for editing TypeScript."
   :group 'typescript
-  :syntax-table ts-mode--syntax-table
+  :syntax-table typescript-ts-mode--syntax-table
 
-  (cond
-   ;; `ts-mode' requires tree-sitter to work, so we don't check if
-   ;; user enables tree-sitter for it.
-   ((treesit-ready-p 'tsx)
-    ;; Tree-sitter.
+  (when (treesit-ready-p 'tsx)
     (treesit-parser-create 'tsx)
 
     ;; Comments.
     (setq-local comment-start "// ")
-    (setq-local comment-start-skip "\\(?://+\\|/\\*+\\)\\s *")
     (setq-local comment-end "")
-    (setq-local treesit-comment-start (rx "/" (or (+ "/") (+ "*"))))
-    (setq-local treesit-comment-end (rx (+ (or "*")) "/"))
+    (setq-local comment-start-skip (rx (group "/" (or (+ "/") (+ "*")))
+                                       (* (syntax whitespace))))
+    (setq-local comment-end-skip
+                (rx (* (syntax whitespace))
+                    (group (or (syntax comment-end)
+                               (seq (+ "*") "/")))))
 
     ;; Electric
     (setq-local electric-indent-chars
                 (append "{}():;," electric-indent-chars))
 
     ;; Indent.
-    (setq-local treesit-simple-indent-rules ts-mode--indent-rules)
+    (setq-local treesit-simple-indent-rules typescript-ts-mode--indent-rules)
 
     ;; Navigation.
     (setq-local treesit-defun-type-regexp
@@ -293,24 +317,21 @@
                         "lexical_declaration")))
 
     ;; Font-lock.
-    (setq-local treesit-font-lock-settings ts-mode--font-lock-settings)
+    (setq-local treesit-font-lock-settings 
typescript-ts-mode--font-lock-settings)
     (setq-local treesit-font-lock-feature-list
-                '((comment declaration)
-                  (string keyword identifier expression constant)
-                  (property pattern jsx)))
+                '(( comment declaration)
+                  ( keyword string)
+                  ( constant expression identifier jsx number pattern property)
+                  ( bracket delimiter)))
     ;; Imenu.
     (setq-local imenu-create-index-function #'js--treesit-imenu)
 
     ;; Which-func (use imenu).
     (setq-local which-func-functions nil)
 
-    (treesit-major-mode-setup))
+    (treesit-major-mode-setup)))
 
-   ;; Elisp.
-   (t
-    (js-mode)
-    (message "Tree-sitter for TypeScript isn't available, falling back to 
`js-mode'"))))
 
-(provide 'ts-mode)
+(provide 'typescript-ts-mode)
 
-;;; ts-mode.el ends here
+;;; typescript-ts-mode.el ends here
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el
index 4fe4edc164..14b749296c 100644
--- a/lisp/progmodes/which-func.el
+++ b/lisp/progmodes/which-func.el
@@ -2,8 +2,8 @@
 
 ;; Copyright (C) 1994-2022 Free Software Foundation, Inc.
 
-;; Author:   Alex Rezinsky <alexr@msil.sps.mot.com>
-;;           (doesn't seem to be responsive any more)
+;; Author: Alex Rezinsky <alexr@msil.sps.mot.com>
+;; Maintainer: emacs-devel@gnu.org
 ;; Keywords: mode-line, imenu, tools
 
 ;; This file is part of GNU Emacs.
@@ -27,16 +27,6 @@
 ;; located in mode line.  It assumes that you work with the imenu
 ;; package and `imenu--index-alist' is up to date.
 
-;; KNOWN BUGS
-;; ----------
-;; Really this package shows not "function where the current point is
-;; located now", but "nearest function which defined above the current
-;; point".  So if your current point is located after the end of
-;; function FOO but before the beginning of function BAR, FOO will be
-;; displayed in the mode line.
-;; - If two windows display the same buffer, both windows
-;;   show the same `which-func' information.
-
 ;; TODO LIST
 ;; ---------
 ;;     1. Dependence on imenu package should be removed.  Separate
@@ -50,8 +40,8 @@
 ;; THANKS TO
 ;; ---------
 ;; Per Abrahamsen   <abraham@iesd.auc.dk>
-;;     Some ideas (inserting  in mode-line,  using of post-command  hook
-;;     and toggling this  mode) have  been   borrowed from  his  package
+;;     Some ideas (inserting in mode-line, using of post-command hook
+;;     and toggling this mode) have been borrowed from his package
 ;;     column.el
 ;; Peter Eisenhauer <pipe@fzi.de>
 ;;     Bug fixing in case nested indexes.
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 89a090ae93..1e4aa4eba5 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -1,7 +1,7 @@
 ;;; xref.el --- Cross-referencing commands              -*-lexical-binding:t-*-
 
 ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
-;; Version: 1.5.1
+;; Version: 1.6.0
 ;; Package-Requires: ((emacs "26.1"))
 
 ;; This is a GNU ELPA :core package.  Avoid functionality that is not
@@ -346,7 +346,9 @@ backward."
         (value nil))
     (while (progn
              (goto-char (funcall next (point) property))
-             (not (or (setq value (get-text-property (point) property))
+             (not (or (and
+                       (memq (get-char-property (point) 'invisible) '(ellipsis 
nil))
+                       (setq value (get-text-property (point) property)))
                       (eobp)
                       (bobp)))))
     (cond (value)
@@ -427,32 +429,82 @@ or earlier: it can break 
`dired-do-find-regexp-and-replace'."
   :version "28.1"
   :package-version '(xref . "1.2.0"))
 
+(defcustom xref-history-storage #'xref-global-history
+  "Function that returns xref history.
+
+The following functions that can be used as this variable's value
+are predefined:
+
+- `xref-global-history'
+    Return a single, global history used across the entire Emacs
+    session.  This is the default.
+- `xref-window-local-history'
+    Return separate xref histories, one per window.  Allows
+    independent navigation of code in each window.  A new
+    xref history is created for every new window."
+  :type '(radio
+          (function-item :tag "Per-window history" xref-window-local-history)
+          (function-item :tag "Global history for Emacs session"
+                         xref-global-history)
+          (function :tag "Other"))
+  :version "29.1"
+  :package-version '(xref . "1.6.0"))
+
 (make-obsolete-variable 'xref--marker-ring 'xref--history "29.1")
 
 (defun xref-set-marker-ring-length (_var _val)
   (declare (obsolete nil "29.1"))
   nil)
 
-(defvar xref--history (cons nil nil)
+(defun xref--make-xref-history ()
+  "Return a new xref history."
+  (cons nil nil))
+
+(defvar xref--history (xref--make-xref-history)
   "(BACKWARD-STACK . FORWARD-STACK) of markers to visited Xref locations.")
 
+(defun xref-global-history (&optional new-value)
+  "Return the xref history that is global for the current Emacs session.
+
+Override existing value with NEW-VALUE if NEW-VALUE is set."
+  (if new-value
+      (setq xref--history new-value)
+    xref--history))
+
+(defun xref-window-local-history (&optional new-value)
+  "Return window-local xref history for the selected window.
+
+Override existing value with NEW-VALUE if NEW-VALUE is set."
+  (let ((w (selected-window)))
+    (if new-value
+        (set-window-parameter w 'xref--history new-value)
+      (or (window-parameter w 'xref--history)
+          (set-window-parameter w 'xref--history (xref--make-xref-history))))))
+
+(defun xref--get-history ()
+  "Return xref history using xref-history-storage."
+  (funcall xref-history-storage))
+
 (defun xref--push-backward (m)
   "Push marker M onto the backward history stack."
-  (unless (equal m (caar xref--history))
-    (push m (car xref--history))))
+  (let ((history (xref--get-history)))
+    (unless (equal m (caar history))
+      (push m (car history)))))
 
 (defun xref--push-forward (m)
   "Push marker M onto the forward history stack."
-  (unless (equal m (cadr xref--history))
-    (push m (cdr xref--history))))
+  (let ((history (xref--get-history)))
+    (unless (equal m (cadr history))
+      (push m (cdr history)))))
 
 (defun xref-push-marker-stack (&optional m)
   "Add point M (defaults to `point-marker') to the marker stack.
 The future stack is erased."
   (xref--push-backward (or m (point-marker)))
-  (dolist (mk (cdr xref--history))
-    (set-marker mk nil nil))
-  (setcdr xref--history nil))
+  (let ((history (xref--get-history)))
+    (dolist (mk (cdr history))
+      (set-marker mk nil nil))
+    (setcdr history nil)))
 
 ;;;###autoload
 (define-obsolete-function-alias 'xref-pop-marker-stack #'xref-go-back "29.1")
@@ -462,29 +514,31 @@ The future stack is erased."
   "Go back to the previous position in xref history.
 To undo, use \\[xref-go-forward]."
   (interactive)
-  (if (null (car xref--history))
-      (user-error "At start of xref history")
-    (let ((marker (pop (car xref--history))))
-      (xref--push-forward (point-marker))
-      (switch-to-buffer (or (marker-buffer marker)
-                            (user-error "The marked buffer has been deleted")))
-      (goto-char (marker-position marker))
-      (set-marker marker nil nil)
-      (run-hooks 'xref-after-return-hook))))
+  (let ((history (xref--get-history)))
+    (if (null (car history))
+        (user-error "At start of xref history")
+      (let ((marker (pop (car history))))
+        (xref--push-forward (point-marker))
+        (switch-to-buffer (or (marker-buffer marker)
+                              (user-error "The marked buffer has been 
deleted")))
+        (goto-char (marker-position marker))
+        (set-marker marker nil nil)
+        (run-hooks 'xref-after-return-hook)))))
 
 ;;;###autoload
 (defun xref-go-forward ()
   "Got to the point where a previous \\[xref-go-back] was invoked."
   (interactive)
-  (if (null (cdr xref--history))
-      (user-error "At end of xref history")
-    (let ((marker (pop (cdr xref--history))))
-      (xref--push-backward (point-marker))
-      (switch-to-buffer (or (marker-buffer marker)
-                            (user-error "The marked buffer has been deleted")))
-      (goto-char (marker-position marker))
-      (set-marker marker nil nil)
-      (run-hooks 'xref-after-return-hook))))
+  (let ((history (xref--get-history)))
+    (if (null (cdr history))
+        (user-error "At end of xref history")
+      (let ((marker (pop (cdr history))))
+        (xref--push-backward (point-marker))
+        (switch-to-buffer (or (marker-buffer marker)
+                              (user-error "The marked buffer has been 
deleted")))
+        (goto-char (marker-position marker))
+        (set-marker marker nil nil)
+        (run-hooks 'xref-after-return-hook)))))
 
 (define-obsolete-variable-alias
   'xref--current-item
@@ -510,22 +564,23 @@ This can be used from `xref-after-jump-hook', for 
instance.")
 ;; etags.el needs this
 (defun xref-clear-marker-stack ()
   "Discard all markers from the xref history."
-  (dolist (l (list (car xref--history) (cdr xref--history)))
-    (dolist (m l)
-      (set-marker m nil nil)))
-  (setq xref--history (cons nil nil))
+  (let ((history (xref--get-history)))
+    (dolist (l (list (car history) (cdr history)))
+      (dolist (m l)
+        (set-marker m nil nil)))
+    (setq history (cons nil nil)))
   nil)
 
 ;;;###autoload
 (defun xref-marker-stack-empty-p ()
   "Whether the xref back-history is empty."
-  (null (car xref--history)))
+  (null (car (xref--get-history))))
 ;; FIXME: rename this to `xref-back-history-empty-p'.
 
 ;;;###autoload
 (defun xref-forward-history-empty-p ()
   "Whether the xref forward-history is empty."
-  (null (cdr xref--history)))
+  (null (cdr (xref--get-history))))
 
 
 (defun xref--goto-char (pos)
@@ -637,8 +692,8 @@ and finally return the window."
 
 (defun xref--show-location (location &optional select)
   "Help `xref-show-xref' and `xref-goto-xref' do their job.
-Go to LOCATION and if SELECT is non-nil select its window.  If
-SELECT is `quit', also quit the *xref* window."
+Go to LOCATION and if SELECT is non-nil select its window.
+If SELECT is `quit', also quit the *xref* window."
   (condition-case err
       (let* ((marker (xref-location-marker location))
              (buf (marker-buffer marker))
@@ -830,7 +885,12 @@ some of the references to the identifiers."
 
 (defun xref--outdated-p (item)
   "Check that the match location at current position is up-to-date.
-ITEMS is an xref item which " ; FIXME: Expand documentation.
+
+ITEM is an xref item which is expected to be produced by a search
+command and have summary that matches buffer contents near point.
+Depending on whether it's the first of the matches on the line,
+the summary should either start from bol, or only match after
+point."
   ;; FIXME: The check should most likely be a generic function instead
   ;; of the assumption that all matches' summaries relate to the
   ;; buffer text in a particular way.
@@ -919,6 +979,9 @@ ITEMS is an xref item which " ; FIXME: Expand documentation.
     (define-key map (kbd "M-,") #'xref-quit-and-pop-marker-stack)
     map))
 
+(declare-function outline-search-text-property "outline"
+                 (property &optional value bound move backward looking-at))
+
 (define-derived-mode xref--xref-buffer-mode special-mode "XREF"
   "Mode for displaying cross-references."
   (setq buffer-read-only t)
@@ -927,7 +990,16 @@ ITEMS is an xref item which " ; FIXME: Expand 
documentation.
   (setq imenu-prev-index-position-function
         #'xref--imenu-prev-index-position)
   (setq imenu-extract-index-name-function
-        #'xref--imenu-extract-index-name))
+        #'xref--imenu-extract-index-name)
+  (setq-local add-log-current-defun-function
+             #'xref--add-log-current-defun)
+  (setq-local outline-minor-mode-cycle t
+              outline-minor-mode-use-buttons t
+              outline-search-function
+              (lambda (&optional bound move backward looking-at)
+                (outline-search-text-property
+                 'xref-group nil bound move backward looking-at))
+              outline-level (lambda () 1)))
 
 (defvar xref--transient-buffer-mode-map
   (let ((map (make-sparse-keymap)))
@@ -937,7 +1009,7 @@ ITEMS is an xref item which " ; FIXME: Expand 
documentation.
 
 (define-derived-mode xref--transient-buffer-mode
   xref--xref-buffer-mode
-  "XREF Transient")
+  "XREF Transient.")
 
 (defun xref--imenu-prev-index-position ()
   "Move point to previous line in `xref' buffer.
@@ -955,6 +1027,15 @@ beginning of the line."
   (buffer-substring-no-properties (line-beginning-position)
                                   (line-end-position)))
 
+(defun xref--add-log-current-defun ()
+  "Return the string used to group a set of locations.
+This function is used as a value for `add-log-current-defun-function'."
+  (xref--group-name-for-display
+   (if-let (item (xref--item-at-point))
+       (xref-location-group (xref-match-item-location item))
+     (xref--imenu-extract-index-name))
+   (xref--project-root (project-current))))
+
 (defun xref--next-error-function (n reset?)
   (when reset?
     (goto-char (point-min)))
@@ -1101,7 +1182,7 @@ to that style.  Otherwise it is returned unchanged."
   (cl-ecase xref-file-name-display
     (abs group)
     (nondirectory
-     (if (string-match-p "\\`~?/" group)
+     (if (file-name-absolute-p group)
          (file-name-nondirectory group)
        group))
     (project-relative
@@ -1342,7 +1423,7 @@ FETCHER is a function of no arguments that returns a list 
of xref
 values.  It must not depend on the current buffer or selected
 window.
 
-ALIST can include, but limited to, the following keys:
+ALIST can include, but is not limited to, the following keys:
 
 WINDOW for the window that was selected before the current
 command was called.
@@ -1743,7 +1824,7 @@ IGNORES is a list of glob patterns for files to ignore."
      "xargs -0 rg <C> --null -nH --no-heading --no-messages -g '!*/' -e <R>"
      )
     (ugrep . "xargs -0 ugrep <C> --null -ns -e <R>"))
-  "Associative list mapping program identifiers to command templates.
+  "Association list mapping program identifiers to command templates.
 
 Program identifier should be a symbol, named after the search program.
 
diff --git a/lisp/server.el b/lisp/server.el
index 2973b783e6..1b027f88ce 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -287,6 +287,8 @@ If nil, no instructions are displayed."
   "The directory in which to place the server socket.
 If local sockets are not supported, this is nil.")
 
+(define-error 'server-running-external "External server running")
+
 (defun server-clients-with (property value)
   "Return a list of clients with PROPERTY set to VALUE."
   (let (result)
@@ -610,6 +612,57 @@ If the key is not valid, signal an error."
       (error "The key `%s' is invalid" server-auth-key))
     (server-generate-key)))
 
+(defsubst server--file-name ()
+  "Return the file name to use for the server socket."
+  (let ((server-dir (if server-use-tcp server-auth-dir server-socket-dir)))
+    (expand-file-name server-name server-dir)))
+
+(defun server-stop (&optional noframe)
+  "If this Emacs process has a server communication subprocess, stop it.
+If this actually stopped the server, return non-nil.  If the
+server is running in some other Emacs process (see
+`server-running-p'), signal a `server-running-external' error.
+
+If NOFRAME is non-nil, don't delete any existing frames
+associated with a client process.  This is useful, for example,
+when killing Emacs, in which case the frames will get deleted
+anyway."
+  (let ((server-file (server--file-name))
+        stopped-p)
+    (when server-process
+      ;; Kill it dead!
+      (ignore-errors (delete-process server-process))
+      (server-log "Stopped server")
+      (setq stopped-p t
+            server-process nil
+            server-mode nil
+            global-minor-modes (delq 'server-mode global-minor-modes)))
+    (unwind-protect
+        ;; Delete the socket files made by previous server
+        ;; invocations.
+        (if (not (eq t (server-running-p server-name)))
+            ;; Remove any leftover socket or authentication file.
+            (ignore-errors
+              (let (delete-by-moving-to-trash)
+                (delete-file server-file)
+                ;; Also delete the directory that the server file was
+                ;; created in -- but only in /tmp (see bug#44644).
+                ;; There may be other servers running, too, so this may
+                ;; fail.
+                (when (equal (file-name-directory
+                              (directory-file-name
+                               (file-name-directory server-file)))
+                             "/tmp/")
+                  (ignore-errors
+                    (delete-directory (file-name-directory server-file))))))
+            (signal 'server-running-external
+                    (list (format "There is an existing Emacs server, named %S"
+                                  server-name))))
+      ;; If this Emacs already had a server, clear out associated status.
+      (while server-clients
+        (server-delete-client (car server-clients) noframe)))
+    stopped-p))
+
 ;;;###autoload
 (defun server-start (&optional leave-dead inhibit-prompt)
   "Allow this Emacs process to be a server for client processes.
@@ -643,57 +696,31 @@ the `server-process' variable."
             (inhibit-prompt t)
             (t (yes-or-no-p
                 "The current server still has clients; delete them? "))))
-    (let* ((server-dir (if server-use-tcp server-auth-dir server-socket-dir))
-          (server-file (expand-file-name server-name server-dir)))
-      (when server-process
-       ;; kill it dead!
-       (ignore-errors (delete-process server-process)))
-      ;; Check to see if an uninitialized external socket has been
-      ;; passed in, if that is the case, skip checking
-      ;; `server-running-p' as this will return the wrong result.
-      (if (and internal--daemon-sockname
-               (not server--external-socket-initialized))
-          (setq server--external-socket-initialized t)
-        ;; Delete the socket files made by previous server invocations.
-        (if (not (eq t (server-running-p server-name)))
-           ;; Remove any leftover socket or authentication file.
-           (ignore-errors
-             (let (delete-by-moving-to-trash)
-               (delete-file server-file)
-               ;; Also delete the directory that the server file was
-               ;; created in -- but only in /tmp (see bug#44644).
-               ;; There may be other servers running, too, so this may
-               ;; fail.
-               (when (equal (file-name-directory
-                             (directory-file-name
-                              (file-name-directory server-file)))
-                            "/tmp/")
-                 (ignore-errors
-                   (delete-directory (file-name-directory server-file))))))
-         (display-warning
-          'server
-          (concat "Unable to start the Emacs server.\n"
-                  (format "There is an existing Emacs server, named %S.\n"
-                          server-name)
-                  (substitute-command-keys
-                    "To start the server in this Emacs process, stop the 
existing
-server or call `\\[server-force-delete]' to forcibly disconnect it."))
-          :warning)
-         (setq leave-dead t)))
-      ;; If this Emacs already had a server, clear out associated status.
-      (while server-clients
-       (server-delete-client (car server-clients)))
+    ;; If a server is already running, try to stop it.
+    (condition-case err
+        ;; Check to see if an uninitialized external socket has been
+        ;; passed in.  If that is the case, don't try to stop the
+        ;; server.  (`server-stop' checks `server-running-p', which
+        ;; would return the wrong result).
+        (if (and internal--daemon-sockname
+                 (not server--external-socket-initialized))
+            (setq server--external-socket-initialized t)
+          (when (server-stop)
+            (message (if leave-dead "Stopped server" "Restarting server"))))
+      (server-running-external
+       (display-warning
+        'server
+        (concat "Unable to start the Emacs server.\n"
+                (cadr err)
+                (substitute-command-keys
+                 "\nTo start the server in this Emacs process, stop the 
existing server or call `\\[server-force-delete]' to forcibly disconnect it."))
+        :warning)
+       (setq leave-dead t)))
       ;; Now any previous server is properly stopped.
-      (if leave-dead
-         (progn
-           (unless (eq t leave-dead) (server-log (message "Server stopped")))
-            (setq server-mode nil
-                  global-minor-modes (delq 'server-mode global-minor-modes)
-                  server-process nil))
+    (unless leave-dead
+      (let ((server-file (server--file-name)))
        ;; Make sure there is a safe directory in which to place the socket.
-       (server-ensure-safe-dir server-dir)
-       (when server-process
-         (server-log (message "Restarting server")))
+       (server-ensure-safe-dir (file-name-directory server-file))
         (with-file-modes ?\700
          (add-hook 'suspend-tty-functions #'server-handle-suspend-tty)
          (add-hook 'delete-frame-functions #'server-handle-delete-frame)
@@ -731,6 +758,7 @@ server or call `\\[server-force-delete]' to forcibly 
disconnect it."))
                               :service server-file
                               :plist '(:authenticated t)))))
          (unless server-process (error "Could not start server process"))
+          (server-log "Started server")
          (process-put server-process :server-file server-file)
           (setq server-mode t)
           (push 'server-mode global-minor-modes)
@@ -748,7 +776,7 @@ server or call `\\[server-force-delete]' to forcibly 
disconnect it."))
 (defun server-force-stop ()
   "Kill all connections to the current server.
 This function is meant to be called from `kill-emacs-hook'."
-  (server-start t t))
+  (ignore-errors (server-stop 'noframe)))
 
 ;;;###autoload
 (defun server-force-delete (&optional name)
@@ -1869,11 +1897,10 @@ Returns the result of the evaluation, or signals an 
error if it
 cannot contact the specified server.  For example:
   (server-eval-at \"server\" \\='(emacs-pid))
 returns the process ID of the Emacs instance running \"server\"."
-  (let* ((server-dir (if server-use-tcp server-auth-dir server-socket-dir))
-        (server-file (expand-file-name server server-dir))
-        (coding-system-for-read 'binary)
-        (coding-system-for-write 'binary)
-        address port secret process)
+  (let ((server-file (server--file-name))
+        (coding-system-for-read 'binary)
+        (coding-system-for-write 'binary)
+        address port secret process)
     (unless (file-exists-p server-file)
       (error "No such server: %s" server))
     (with-temp-buffer
diff --git a/lisp/simple.el b/lisp/simple.el
index 0f44b14948..893a43b03f 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -9184,33 +9184,39 @@ The function should return non-nil if the two tokens do 
not match.")
   "Return the line string that contains the openparen at POS."
   (save-excursion
     (goto-char pos)
-    ;; Show what precedes the open in its line, if anything.
-    (cond
-     ((save-excursion (skip-chars-backward " \t") (not (bolp)))
-      (buffer-substring (line-beginning-position)
-                        (1+ pos)))
-     ;; Show what follows the open in its line, if anything.
-     ((save-excursion
-        (forward-char 1)
-        (skip-chars-forward " \t")
-        (not (eolp)))
-      (buffer-substring pos
-                        (line-end-position)))
-     ;; Otherwise show the previous nonblank line,
-     ;; if there is one.
-     ((save-excursion (skip-chars-backward "\n \t") (not (bobp)))
-      (concat
-       (buffer-substring (progn
-                           (skip-chars-backward "\n \t")
-                           (line-beginning-position))
-                         (progn (end-of-line)
-                                (skip-chars-backward " \t")
-                                (point)))
-       ;; Replace the newline and other whitespace with `...'.
-       "..."
-       (buffer-substring pos (1+ pos))))
-     ;; There is nothing to show except the char itself.
-     (t (buffer-substring pos (1+ pos))))))
+    ;; Capture the regions in terms of (beg . end) conses whose
+    ;; buffer-substrings we want to show as a context string.  Ensure
+    ;; they are font-locked (bug#59527).
+    (let (regions)
+      ;; Show what precedes the open in its line, if anything.
+      (cond
+       ((save-excursion (skip-chars-backward " \t") (not (bolp)))
+        (setq regions (list (cons (line-beginning-position)
+                                  (1+ pos)))))
+       ;; Show what follows the open in its line, if anything.
+       ((save-excursion
+          (forward-char 1)
+          (skip-chars-forward " \t")
+          (not (eolp)))
+        (setq regions (list (cons pos (line-end-position)))))
+       ;; Otherwise show the previous nonblank line,
+       ;; if there is one.
+       ((save-excursion (skip-chars-backward "\n \t") (not (bobp)))
+        (setq regions (list (cons (progn
+                                    (skip-chars-backward "\n \t")
+                                    (line-beginning-position))
+                                  (progn (end-of-line)
+                                         (skip-chars-backward " \t")
+                                         (point)))
+                            (cons pos (1+ pos)))))
+       ;; There is nothing to show except the char itself.
+       (t (setq regions (list (cons pos (1+ pos))))))
+      ;; Ensure we've font-locked the context region.
+      (font-lock-ensure (caar regions) (cdar (last regions)))
+      (mapconcat (lambda (region)
+                   (buffer-substring (car region) (cdr region)))
+                 regions
+                 "..."))))
 
 (defvar blink-paren-function 'blink-matching-open
   "Function called, if non-nil, whenever a close parenthesis is inserted.
@@ -9572,6 +9578,8 @@ makes it easier to edit it."
     (define-key map "\C-m" 'choose-completion)
     (define-key map "\e\e\e" 'delete-completion-window)
     (define-key map [remap keyboard-quit] #'delete-completion-window)
+    (define-key map [up] 'previous-line-completion)
+    (define-key map [down] 'next-line-completion)
     (define-key map [left] 'previous-completion)
     (define-key map [right] 'next-completion)
     (define-key map [?\t] 'next-completion)
@@ -9631,8 +9639,10 @@ Go to the window from which completion was requested."
 
 (defcustom completion-auto-wrap t
   "Non-nil means to wrap around when selecting completion options.
-This affects the commands `next-completion' and `previous-completion'.
-When `completion-auto-select' is t, it wraps through the minibuffer."
+This affects the commands `next-completion', `previous-completion',
+`next-line-completion' and `previous-line-completion'.
+When `completion-auto-select' is t, it wraps through the minibuffer
+for the commands bound to the TAB key."
   :type 'boolean
   :version "29.1"
   :group 'completion)
@@ -9736,6 +9746,73 @@ Also see the `completion-auto-wrap' variable."
     (when (/= 0 n)
       (switch-to-minibuffer))))
 
+(defun previous-line-completion (&optional n)
+  "Move to the item on the previous line in the completion list.
+With prefix argument N, move back N items line-wise (negative N
+means move forward).
+
+Also see the `completion-auto-wrap' variable."
+  (interactive "p")
+  (next-line-completion (- n)))
+
+(defun next-line-completion (&optional n)
+  "Move to the item on the next line in the completion list.
+With prefix argument N, move N items line-wise (negative N
+means move backward).
+
+Also see the `completion-auto-wrap' variable."
+  (interactive "p")
+  (let ((column (current-column))
+        pos)
+    (catch 'bound
+      (while (> n 0)
+        (setq pos nil)
+        (save-excursion
+          (while (and (not pos) (not (eobp)))
+            (forward-line 1)
+            (when (and (not (eobp))
+                       (eq (move-to-column column) column)
+                       (get-text-property (point) 'mouse-face))
+              (setq pos (point)))))
+        (if pos (goto-char pos)
+          (when completion-auto-wrap
+            (save-excursion
+              (goto-char (point-min))
+              (when (and (eq (move-to-column column) column)
+                         (get-text-property (point) 'mouse-face))
+                (setq pos (point)))
+              (while (and (not pos) (not (eobp)))
+                (forward-line 1)
+                (when (and (eq (move-to-column column) column)
+                           (get-text-property (point) 'mouse-face))
+                  (setq pos (point)))))
+            (if pos (goto-char pos))))
+        (setq n (1- n)))
+
+      (while (< n 0)
+        (setq pos nil)
+        (save-excursion
+          (while (and (not pos) (not (bobp)))
+            (forward-line -1)
+            (when (and (not (bobp))
+                       (eq (move-to-column column) column)
+                       (get-text-property (point) 'mouse-face))
+              (setq pos (point)))))
+        (if pos (goto-char pos)
+          (when completion-auto-wrap
+            (save-excursion
+              (goto-char (point-max))
+              (when (and (eq (move-to-column column) column)
+                         (get-text-property (point) 'mouse-face))
+                (setq pos (point)))
+              (while (and (not pos) (not (bobp)))
+                (forward-line -1)
+                (when (and (eq (move-to-column column) column)
+                           (get-text-property (point) 'mouse-face))
+                  (setq pos (point)))))
+            (if pos (goto-char pos))))
+        (setq n (1+ n))))))
+
 (defun choose-completion (&optional event no-exit no-quit)
   "Choose the completion at point.
 If EVENT, use EVENT's position to determine the starting position.
diff --git a/lisp/subr.el b/lisp/subr.el
index 261ec512d8..cfce5b18c5 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1792,10 +1792,11 @@ and `event-end' functions."
   (or (posn-image position) (posn-string position)))
 
 (defsubst posn-object-x-y (position)
-  "Return the x and y coordinates relative to the object of POSITION.
+  "Return the x and y coordinates relative to the glyph of object of POSITION.
 The return value has the form (DX . DY), where DX and DY are
-given in pixels.  POSITION should be a list of the form returned
-by `event-start' and `event-end'."
+given in pixels, and they are relative to the top-left corner of
+the clicked glyph of object at POSITION.  POSITION should be a
+list of the form returned by `event-start' and `event-end'."
   (nth 8 position))
 
 (defsubst posn-object-width-height (position)
@@ -3935,6 +3936,31 @@ See also `locate-user-emacs-file'.")
   "Return non-nil if the current buffer is narrowed."
   (/= (- (point-max) (point-min)) (buffer-size)))
 
+(defmacro with-narrowing (start end &rest rest)
+  "Execute BODY with restrictions set to START and END.
+
+The current restrictions, if any, are restored upon return.
+
+With the optional :locked TAG argument, inside BODY,
+`narrow-to-region' and `widen' can be used only within the START
+and END limits, unless the restrictions are unlocked by calling
+`narrowing-unlock' with TAG.  See `narrowing-lock' for a more
+detailed description.
+
+\(fn START END [:locked TAG] BODY)"
+  (if (eq (car rest) :locked)
+      `(internal--with-narrowing ,start ,end (lambda () ,@(cddr rest))
+                                 ,(cadr rest))
+    `(internal--with-narrowing ,start ,end (lambda () ,@rest))))
+
+(defun internal--with-narrowing (start end body &optional tag)
+  "Helper function for `with-narrowing', which see."
+  (save-restriction
+    (progn
+      (narrow-to-region start end)
+      (if tag (narrowing-lock tag))
+      (funcall body))))
+
 (defun find-tag-default-bounds ()
   "Determine the boundaries of the default tag, based on text at point.
 Return a cons cell with the beginning and end of the found tag.
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 4b46e5a1fb..734252ee66 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -1795,7 +1795,7 @@ can also be used to fill comments.
 
 \\{css-mode-map}"
   (when (treesit-ready-p 'css)
-    ;; Borrowed from `css-native-mode'.
+    ;; Borrowed from `css-mode'.
     (add-hook 'completion-at-point-functions
               #'css-completion-at-point nil 'local)
     (setq-local fill-paragraph-function #'css-fill-paragraph)
diff --git a/lisp/treesit.el b/lisp/treesit.el
index 0dcd16d89a..8f092f475d 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -95,8 +95,19 @@ indent, imenu, etc."
   :group 'tools
   :version "29.1")
 
-(defcustom treesit-max-buffer-size (* 4 1024 1024)
-  "Maximum buffer size for enabling tree-sitter parsing (in bytes)."
+(defcustom treesit-max-buffer-size
+  (let ((mb (* 1024 1024)))
+    ;; 40MB for 64-bit systems, 15 for 32-bit.
+    (if (or (< most-positive-fixnum (* 2.0 1024 mb))
+            ;; 32-bit system with wide ints.
+            (string-match-p "--with-wide-int" system-configuration-options))
+        (* 15 mb)
+      (* 40 mb)))
+  "Maximum buffer size (in bytes) for enabling tree-sitter parsing.
+
+A typical tree-sitter parser needs 10 times as much memory as the
+buffer it parses.  Also, the tree-sitter library has a hard limit
+of max unsigned 32-bit value for byte offsets into buffer text."
   :type 'integer
   :version "29.1")
 
@@ -449,6 +460,15 @@ Return the merged list of ranges."
         (push range result)))
     (nreverse result)))
 
+(defun treesit--clip-ranges (ranges start end)
+  "Clip RANGES in between START and END.
+RANGES is a list of ranges of the form (BEG . END).  Ranges
+outside of the region between START and END are thrown away, and
+those inside are kept."
+  (cl-loop for range in ranges
+           if (<= start (car range) (cdr range) end)
+           collect range))
+
 (defun treesit-update-ranges (&optional beg end)
   "Update the ranges for each language in the current buffer.
 If BEG and END are non-nil, only update parser ranges in that
@@ -469,8 +489,10 @@ region."
                (old-ranges (treesit-parser-included-ranges parser))
                (new-ranges (treesit-query-range
                             host-lang query beg end))
-               (set-ranges (treesit--merge-ranges
-                            old-ranges new-ranges beg end)))
+               (set-ranges (treesit--clip-ranges
+                            (treesit--merge-ranges
+                             old-ranges new-ranges beg end)
+                            (point-min) (point-max))))
           (dolist (parser (treesit-parser-list))
             (when (eq (treesit-parser-language parser)
                       language)
@@ -498,6 +520,25 @@ omitted, default END to BEG."
               "Generic tree-sitter font-lock error"
               'treesit-error)
 
+(defvar-local treesit-font-lock-level 3
+  "Decoration level to be used by tree-sitter fontifications.
+
+Major modes categorize their fontification features into levels,
+from 1 which is the absolute minimum, to 4 that yields the maximum
+fontifications.
+
+Level 1 usually contains only comments and definitions.
+Level 2 usually adds keywords, strings, constants, types, etc.
+Level 3 usually represents a full-blown fontification, including
+assignment, constants, numbers, properties, etc.
+Level 4 adds everything else that can be fontified: delimiters,
+operators, brackets, all functions and variables, etc.
+
+In addition to the decoration level, individual features can be
+turned on/off by calling `treesit-font-lock-recompute-features'.
+Changing the decoration level requires calling
+`treesit-font-lock-recompute-features' to have an effect.")
+
 (defvar-local treesit--font-lock-query-expand-range (cons 0 0)
   "The amount to expand the start and end of the region when fontifying.
 This should be a cons cell (START . END).  When fontifying a
@@ -515,11 +556,10 @@ temporarily fix.")
   "A list of lists of feature symbols.
 
 Use `treesit-font-lock-recompute-features' and
-`font-lock-maximum-decoration' to configure enabled features.
+`treesit-font-lock-level' to configure enabled features.
 
 Each sublist represents a decoration level.
-`font-lock-maximum-decoration' controls which levels are
-activated.
+`treesit-font-lock-level' controls which levels are activated.
 
 Inside each sublist are feature symbols, which correspond to the
 :feature value of a query defined in `treesit-font-lock-rules'.
@@ -553,8 +593,8 @@ For SETTING to be activated for font-lock, ENABLE must be 
t.  To
 disable this SETTING, set ENABLE to nil.
 
 FEATURE is the \"feature name\" of the query.  Users can control
-which features are enabled with `font-lock-maximum-decoration'
-and `treesit-font-lock-feature-list'.
+which features are enabled with `treesit-font-lock-level' and
+`treesit-font-lock-feature-list'.
 
 OVERRIDE is the override flag for this query.  Its value can be
 t, nil, append, prepend, keep.  See more in
@@ -588,7 +628,7 @@ to QUERY.  For example,
 For each QUERY, a :language keyword and a :feature keyword are
 required.  Each query's :feature is a symbol summarizing what the
 query fontifies.  It is used to allow users to enable/disable
-certain features.  See `treesit-font-lock-kind-list' for more.
+certain features.  See `treesit-font-lock-feature-list' for more.
 Other keywords include:
 
   KEYWORD    VALUE      DESCRIPTION
@@ -689,22 +729,26 @@ name, it is ignored."
   "If non-nil, print debug messages when fontifying.")
 
 (defun treesit-font-lock-recompute-features (&optional add-list remove-list)
-  "Enable/disable font-lock settings according to decoration level.
+  "Enable/disable font-lock features.
 
-First compute the enabled features according to
-`treesit-font-lock-feature-list' and `font-lock-maximum-decoration',
-then, if ADD-LIST or REMOVE-LIST are not omitted, further add and
-remove features accordingly.
+Enable each feature in ADD-LIST, disable each feature in
+REMOVE-LIST.
 
-ADD-LIST and REMOVE-LIST are each a list of feature symbols.  The
+If both ADD-LIST and REMOVE-LIST are omitted, recompute each
+feature according to `treesit-font-lock-feature-list' and
+`treesit-font-lock-level'.  If the value of `treesit-font-lock-level',
+is N, then the features in the first N sublists of
+`treesit-font-lock-feature-list' are enabled, and the rest of
+the features are disabled.
+
+ADD-LIST and REMOVE-LIST are lists of feature symbols.  The
 same feature symbol cannot appear in both lists; the function
-signals the `treesit-font-lock-error' error if so."
+signals the `treesit-font-lock-error' error if that happens."
   (when-let ((intersection (cl-intersection add-list remove-list)))
     (signal 'treesit-font-lock-error
             (list "ADD-LIST and REMOVE-LIST contain the same feature"
                   intersection)))
-  (let* ((level (font-lock-value-in-major-mode
-                 font-lock-maximum-decoration))
+  (let* ((level treesit-font-lock-level)
          (base-features (cl-loop
                          for idx = 0 then (1+ idx)
                          for features in treesit-font-lock-feature-list
@@ -712,13 +756,23 @@ signals the `treesit-font-lock-error' error if so."
                                 (>= level (1+ idx)))
                          append features))
          (features (cl-set-difference (cl-union base-features add-list)
-                                      remove-list)))
+                                      remove-list))
+         ;; If additive non-nil, we are configuring on top of the
+         ;; existing configuration, if nil, we are resetting
+         ;; everything according to `treesit-font-lock-feature-list'.
+         (additive (or add-list remove-list)))
     (cl-loop for idx = 0 then (1+ idx)
              for setting in treesit-font-lock-settings
              for feature = (nth 2 setting)
+             for current-value = (nth 1 setting)
              ;; Set the ENABLE flag for the setting.
              do (setf (nth 1 (nth idx treesit-font-lock-settings))
-                      (if (memq feature features) t nil)))))
+                      (cond
+                       ((not additive)
+                        (if (memq feature features) t nil))
+                       ((memq feature add-list) t)
+                       ((memq feature remove-list) nil)
+                       (t current-value))))))
 
 (defun treesit-fontify-with-override (start end face override)
   "Apply FACE to the region between START and END.
@@ -765,12 +819,14 @@ instead."
 (defun treesit--children-covering-range (node start end)
   "Return a list of children of NODE covering a range.
 The range is between START and END."
-  (let* ((child (treesit-node-first-child-for-pos node start))
-         (result (list child)))
-    (while (and (< (treesit-node-end child) end)
-                (setq child (treesit-node-next-sibling child)))
-      (push child result))
-    (nreverse result)))
+  (if-let* ((child (treesit-node-first-child-for-pos node start))
+            (result (list child)))
+      (progn
+        (while (and child (< (treesit-node-end child) end)
+                    (setq child (treesit-node-next-sibling child)))
+          (push child result))
+        (nreverse result))
+    (list node)))
 
 (defun treesit--children-covering-range-recurse (node start end threshold)
   "Return a list of children of NODE covering a range.
@@ -810,6 +866,32 @@ detail.")
 ;; applied by regexp-based font-lock.  The clipped part will be
 ;; fontified fine when Emacs fontifies the region containing it.
 ;;
+;; 2. If you insert an ending quote into a buffer, jit-lock only wants
+;; to fontify that single quote, and (treesit-node-on start end) will
+;; give you that quote node.  We want to capture the string and apply
+;; string face to it, but querying on the quote node will not give us
+;; the string node.  So we don't use treesit-node-on: using the root
+;; node with a restricted range is very fast anyway (even in large
+;; files of size ~10MB).  Plus, querying the result of
+;; `treesit-node-on' could still miss patterns even if we use some
+;; heuristic to enlarge the node (how much to enlarge? to which
+;; extent?), it's much safer to just use the root node.
+;;
+;; Sometimes the source file has some errors that cause tree-sitter to
+;; parse it into a enormously tall tree (10k levels tall).  In that
+;; case querying the root node is very slow.  So we try to get
+;; top-level nodes and query them.  This ensures that querying is fast
+;; everywhere else, except for the problematic region.
+;;
+;; 3. It is possible to capture a node that's completely outside the
+;; region between START and END: as long as the whole pattern
+;; intersects the region, all the captured nodes in that pattern are
+;; returned.  If the node is outside of that region, (max node-start
+;; start) and friends return bad values, so we filter them out.
+;; However, we don't filter these nodes out if a function will process
+;; the node, because could (and often do) fontify the relatives of the
+;; captured node, not just the node itself.  If we took out those
+;; nodes author of those functions would be very confused.
 (defun treesit-font-lock-fontify-region (start end &optional loudly)
   "Fontify the region between START and END.
 If LOUDLY is non-nil, display some debugging information."
@@ -822,35 +904,18 @@ If LOUDLY is non-nil, display some debugging information."
            (enable (nth 1 setting))
            (override (nth 3 setting))
            (language (treesit-query-language query)))
-      ;; If you insert an ending quote into a buffer, jit-lock only
-      ;; wants to fontify that single quote, and (treesit-node-on
-      ;; start end) will give you that quote node.  We want to capture
-      ;; the string and apply string face to it, but querying on the
-      ;; quote node will not give us the string node.  So we don't use
-      ;; treesit-node-on: using the root node with a restricted range
-      ;; is very fast anyway (even in large files of size ~10MB).
-      ;; Plus, querying the result of `treesit-node-on' could still
-      ;; miss patterns even if we use some heuristic to enlarge the
-      ;; node (how much to enlarge? to which extent?), it's much safer
-      ;; to just use the root node.
-      ;;
-      ;; Sometimes the source file has some errors that cause
-      ;; tree-sitter to parse it into a enormously tall tree (10k
-      ;; levels tall).  In that case querying the root node is very
-      ;; slow.  So we try to get top-level nodes and query them.  This
-      ;; ensures that querying is fast everywhere else, except for the
-      ;; problematic region.
       (when-let ((nodes (list (treesit-buffer-root-node language)))
                  ;; Only activate if ENABLE flag is t.
                  (activate (eq t enable)))
         (ignore activate)
 
         ;; If we run into problematic files, use the "fast mode" to
-        ;; try to recover.
+        ;; try to recover.  See comment #2 above for more explanation.
         (when treesit--font-lock-fast-mode
           (setq nodes (treesit--children-covering-range
                        (car nodes) start end)))
 
+        ;; Query each node.
         (dolist (sub-node nodes)
           (let* ((delta-start (car treesit--font-lock-query-expand-range))
                  (delta-end (cdr treesit--font-lock-query-expand-range))
@@ -859,25 +924,26 @@ If LOUDLY is non-nil, display some debugging information."
                             sub-node query
                             (max (- start delta-start) (point-min))
                             (min (+ end delta-end) (point-max))))
-                 (end-time (current-time))
-                 (inhibit-point-motion-hooks t))
+                 (end-time (current-time)))
             ;; If for any query the query time is strangely long,
             ;; switch to fast mode (see comments above).
             (when (> (time-to-seconds (time-subtract end-time start-time))
                      0.01)
               (setq-local treesit--font-lock-fast-mode t))
+
+            ;; For each captured node, fontify that node.
             (with-silent-modifications
               (dolist (capture captures)
                 (let* ((face (car capture))
                        (node (cdr capture))
                        (node-start (treesit-node-start node))
                        (node-end (treesit-node-end node)))
-                  ;; Turns out it is possible to capture a node that's
-                  ;; completely outside the region between START and
-                  ;; END.  If the node is outside of that region, (max
-                  ;; node-start start) and friends return bad values.
-                  (when (and (< start node-end)
-                             (< node-start end))
+                  ;; If node is not in the region, take them out.  See
+                  ;; comment #3 above for more detail.
+                  (if (and (facep face)
+                           (or (>= start node-end) (>= node-start end)))
+                      (when (or loudly treesit--font-lock-verbose)
+                        (message "Captured node %s(%s-%s) but it is outside of 
fontifing region" node node-start node-end))
                     (cond
                      ((facep face)
                       (treesit-fontify-with-override
@@ -907,16 +973,6 @@ parser notifying of the change."
 
 ;;; Indent
 
-;; `comment-start' and `comment-end' assume there is only one type of
-;; comment, and that the comment spans only one line.  So they are not
-;; sufficient for our purpose.
-
-(defvar-local treesit-comment-start nil
-  "Regular expression matching an opening comment token.")
-
-(defvar-local treesit-comment-end nil
-  "Regular expression matching a closing comment token.")
-
 (define-error 'treesit-indent-error
               "Generic tree-sitter indentation error"
               'treesit-error)
@@ -1002,8 +1058,10 @@ See `treesit-simple-indent-presets'.")
                           (lambda (node &rest _)
                             (string-match-p
                              name (or (treesit-node-field-name node) "")))))
-        (cons 'comment-end (lambda (&rest _)
-                             (looking-at-p treesit-comment-end)))
+        (cons 'comment-end (lambda (_node _parent bol &rest _)
+                             (save-excursion
+                               (goto-char bol)
+                               (looking-at-p comment-end-skip))))
         ;; TODO: Document.
         (cons 'catch-all (lambda (&rest _) t))
 
@@ -1029,14 +1087,14 @@ See `treesit-simple-indent-presets'.")
               (lambda (_n parent &rest _)
                 (save-excursion
                   (goto-char (treesit-node-start parent))
-                  (re-search-forward treesit-comment-start)
+                  (re-search-forward comment-start-skip)
+                  (skip-syntax-backward "-")
                   (point))))
         (cons 'comment-start-skip
               (lambda (_n parent &rest _)
                 (save-excursion
                   (goto-char (treesit-node-start parent))
-                  (re-search-forward treesit-comment-start)
-                  (skip-syntax-forward "-")
+                  (re-search-forward comment-start-skip)
                   (point))))
         ;; TODO: Document.
         (cons 'grand-parent
@@ -1452,7 +1510,8 @@ beginning rather than the end of a node.
 
 This function guarantees that the matched node it returns makes
 progress in terms of buffer position: the start/end position of
-the returned node is always greater than that of NODE.
+the returned node is always STRICTLY greater/less than that of
+NODE.
 
 BACKWARD and ALL are the same as in `treesit-search-forward'."
   (when-let* ((start-pos (if start
@@ -1494,6 +1553,38 @@ For example, \"(function|class)_definition\".
 
 This is used by `treesit-beginning-of-defun' and friends.")
 
+(defvar-local treesit-defun-prefer-top-level nil
+  "When non-nil, `treesit-beginning-of-defun' prefers top-level defun.
+
+In some languages, a defun (function, class, struct) could be
+nested in another one.  Normally `treesit-beginning-of-defun'
+just finds the first defun it encounter.  If this variable's
+value is t, `treesit-beginning-of-defun' tries to find the
+top-level defun, and ignores nested ones.
+
+This variable can also be a list of tree-sitter node type
+regexps.  Then, when `treesit-beginning-of-defun' finds a defun
+node and that node's type matches one in the list,
+`treesit-beginning-of-defun' finds the top-level node matching
+that particular regexp (as opposed to any node matched by
+`treesit-defun-type-regexp').")
+
+(defun treesit--defun-maybe-top-level (node)
+  "Maybe return the top-level equivalent of NODE.
+For the detailed semantic see `treesit-defun-prefer-top-level'."
+  (pcase treesit-defun-prefer-top-level
+    ('nil node)
+    ('t (or (treesit-node-top-level
+             node treesit-defun-type-regexp)
+            node))
+    ((pred consp)
+     (cl-loop
+      for re in treesit-defun-prefer-top-level
+      if (string-match-p re (treesit-node-type node))
+      return (or (treesit-node-top-level node re)
+                 node)
+      finally return node))))
+
 (defun treesit-beginning-of-defun (&optional arg)
   "Tree-sitter `beginning-of-defun' function.
 ARG is the same as in `beginning-of-defun'."
@@ -1504,17 +1595,13 @@ ARG is the same as in `beginning-of-defun'."
         (while (and (> arg 0)
                     (setq node (treesit-search-forward-goto
                                 node treesit-defun-type-regexp t t)))
-          (setq node (or (treesit-node-top-level
-                          node treesit-defun-type-regexp)
-                         node))
+          (setq node (treesit--defun-maybe-top-level node))
           (setq arg (1- arg)))
       ;; Go forward.
       (while (and (< arg 0)
                   (setq node (treesit-search-forward-goto
                               node treesit-defun-type-regexp)))
-        (setq node (or (treesit-node-top-level
-                        node treesit-defun-type-regexp)
-                       node))
+        (setq node (treesit--defun-maybe-top-level node))
         (setq arg (1+ arg))))
     (when node
       (goto-char (treesit-node-start node))
@@ -1524,21 +1611,11 @@ ARG is the same as in `beginning-of-defun'."
   "Tree-sitter `end-of-defun' function."
   ;; Why not simply get the largest node at point: when point is at
   ;; (point-min), that gives us the root node.
-  (let* ((node (treesit-node-at (point)))
-         (top (or (treesit-node-top-level
-                   node
-                   treesit-defun-type-regexp)
-                  node)))
+  (let* ((node (treesit-search-forward
+                (treesit-node-at (point)) treesit-defun-type-regexp t t))
+         (top (treesit--defun-maybe-top-level node)))
     (goto-char (treesit-node-end top))))
 
-;;; Imenu
-
-(defvar-local treesit-imenu-function nil
-  "Tree-sitter version of `imenu-create-index-function'.
-
-Set this variable to a function and `treesit-mode' will bind it
-to `imenu-create-index-function'.")
-
 ;;; Activating tree-sitter
 
 (defun treesit-ready-p (language &optional quiet)
@@ -1561,7 +1638,8 @@ instead of emitting a warning."
       (when (not (treesit-available-p))
         (setq msg "tree-sitter library is not compiled with Emacs")
         (throw 'term nil))
-      (when (> (buffer-size) treesit-max-buffer-size)
+      (when (> (position-bytes (max (point-min) (1- (point-max))))
+               treesit-max-buffer-size)
         (setq msg "buffer larger than `treesit-max-buffer-size'")
         (throw 'term nil))
       (dolist (lang language-list)
@@ -1760,10 +1838,11 @@ to the offending pattern and highlight the pattern."
 
 (defun treesit--explorer--nodes-to-highlight (language)
   "Return nodes for LANGUAGE covered in region.
-This function tries to return the largest node possible.  So it
-will return a single large node rather than a bunch of small
-nodes.  If it end up returning multiple small nodes, it only
-returns the first and last node, and omits the ones in between."
+This function tries to return the largest node possible.  If the
+region covers exactly one node, that node is returned (in a
+list).  If the region covers more than one node, two nodes are
+returned: the very first one in the region and the very last one
+in the region."
   (let* ((beg (region-beginning))
          (end (region-end))
          (node (treesit-node-on beg end language))
@@ -1882,13 +1961,10 @@ Return the start of the syntax tree text corresponding 
to NODE."
 
 (defun treesit--explorer-draw-node (node)
   "Draw the syntax tree of NODE.
-If NODE and NODE-HIGHLIGHT are the same node, highlight it.
-
-When this function is called, point should be at an empty line,
-when appropriate indent in front of point.  When this function
-returns, it leaves point at the end of the last line of NODE.
 
-Return the start position of NODE-HIGHLIGHT in the buffer, if any."
+When this function is called, point should be at the position
+where the node should start.  When this function returns, it
+leaves point at the end of the last line of NODE."
   (let* ((type (treesit-node-type node))
          (field-name (treesit-node-field-name node))
          (children (treesit-node-children node))
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index fa3d58f770..328d33040d 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1561,7 +1561,7 @@ Argument BACKEND is the backend to use."
     (insert-file-contents file)
     (split-string (buffer-string) "\n" t)))
 
-;; Subroutine for `vc-git-ignore' and `vc-hg-ignore'.
+;; Subroutine for `vc-default-ignore'.
 (defun vc--add-line (string file)
   "Add STRING as a line to FILE."
   (with-current-buffer (find-file-noselect file)
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 4d9663cea9..cc7926c3c5 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -3816,7 +3816,7 @@ thus allowing recursive data structures to be described.
 The :type parameter takes the same arguments as the defcustom
 parameter with the same name.
 
-Most composite widgets, i.e. widgets containing other widgets, does
+Most composite widgets, i.e. widgets containing other widgets, do
 not allow recursion.  That is, when you define a new widget type, none
 of the inferior widgets may be of the same type you are currently
 defining.
diff --git a/m4/assert_h.m4 b/m4/assert_h.m4
index c1306daef4..e892ea2f01 100644
--- a/m4/assert_h.m4
+++ b/m4/assert_h.m4
@@ -57,5 +57,11 @@ AC_DEFUN([gl_ASSERT_H],
              && __GNUG__ < 6 && __clang_major__ < 6)))
  #include <assert.h>
  #undef/**/assert
+ /* Solaris 11.4 <assert.h> defines static_assert as a macro with 2 arguments.
+    We need it also to be invocable with a single argument.  */
+ #if defined __sun && (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus
+  #undef static_assert
+  #define static_assert _Static_assert
+ #endif
 #endif])
 ])
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index f1ac499132..1a8bf8b7cd 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -77,7 +77,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module dtoastr:
   # Code from module dtotimespec:
   # Code from module dup2:
-  # Code from module dynarray:
   # Code from module eloop-threshold:
   # Code from module environ:
   # Code from module errno:
@@ -115,6 +114,8 @@ AC_DEFUN([gl_EARLY],
   # Code from module gettime:
   # Code from module gettimeofday:
   # Code from module gitlog-to-changelog:
+  # Code from module glibc-internal/dynarray:
+  # Code from module glibc-internal/scratch_buffer:
   # Code from module group-member:
   # Code from module idx:
   # Code from module ieee754-h:
@@ -159,7 +160,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module realloc-posix:
   # Code from module regex:
   # Code from module root-uid:
-  # Code from module scratch_buffer:
   # Code from module sig2str:
   # Code from module sigdescr_np:
   # Code from module signal-h:
@@ -492,6 +492,14 @@ AC_DEFUN([gl_INIT],
   gl_CONDITIONAL_HEADER([stdalign.h])
   AC_PROG_MKDIR_P
   gl_C_BOOL
+  AC_CHECK_HEADERS_ONCE([stdckdint.h])
+  if test $ac_cv_header_stdckdint_h = yes; then
+    GL_GENERATE_STDCKDINT_H=false
+  else
+    GL_GENERATE_STDCKDINT_H=true
+  fi
+  gl_CONDITIONAL_HEADER([stdckdint.h])
+  AC_PROG_MKDIR_P
   gl_STDDEF_H
   gl_STDDEF_H_REQUIRE_DEFAULTS
   gl_CONDITIONAL_HEADER([stddef.h])
@@ -620,12 +628,13 @@ AC_DEFUN([gl_INIT],
   gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b=false
   gl_gnulib_enabled_cloexec=false
   gl_gnulib_enabled_dirfd=false
-  gl_gnulib_enabled_dynarray=false
   gl_gnulib_enabled_925677f0343de64b89a9f0c790b4104c=false
   gl_gnulib_enabled_euidaccess=false
   gl_gnulib_enabled_getdtablesize=false
   gl_gnulib_enabled_getgroups=false
   gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36=false
+  gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c=false
+  gl_gnulib_enabled_8444034ea779b88768865bb60b4fb8c9=false
   gl_gnulib_enabled_a9786850e999ae65a836a6041e8e5ed1=false
   gl_gnulib_enabled_lchmod=false
   gl_gnulib_enabled_e80bf6f757095d2e5fc94dafb8f8fc8b=false
@@ -637,8 +646,6 @@ AC_DEFUN([gl_INIT],
   gl_gnulib_enabled_d3b2383720ee0e541357aa2aac598e2b=false
   gl_gnulib_enabled_61bcaca76b3e6f9ae55d57a1c3193bc4=false
   gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false
-  gl_gnulib_enabled_scratch_buffer=false
-  gl_gnulib_enabled_stdckdint=false
   gl_gnulib_enabled_strtoll=false
   gl_gnulib_enabled_utimens=false
   gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false
@@ -672,13 +679,6 @@ AC_DEFUN([gl_INIT],
       gl_gnulib_enabled_dirfd=true
     fi
   }
-  func_gl_gnulib_m4code_dynarray ()
-  {
-    if ! $gl_gnulib_enabled_dynarray; then
-      AC_PROG_MKDIR_P
-      gl_gnulib_enabled_dynarray=true
-    fi
-  }
   func_gl_gnulib_m4code_925677f0343de64b89a9f0c790b4104c ()
   {
     if ! $gl_gnulib_enabled_925677f0343de64b89a9f0c790b4104c; then
@@ -735,6 +735,22 @@ AC_DEFUN([gl_INIT],
       gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36=true
     fi
   }
+  func_gl_gnulib_m4code_fd38c7e463b54744b77b98aeafb4fa7c ()
+  {
+    if ! $gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c; then
+      AC_PROG_MKDIR_P
+      gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c=true
+    fi
+  }
+  func_gl_gnulib_m4code_8444034ea779b88768865bb60b4fb8c9 ()
+  {
+    if ! $gl_gnulib_enabled_8444034ea779b88768865bb60b4fb8c9; then
+      AC_PROG_MKDIR_P
+      gl_gnulib_enabled_8444034ea779b88768865bb60b4fb8c9=true
+      func_gl_gnulib_m4code_ef455225c00f5049c808c2eda3e76866
+      func_gl_gnulib_m4code_61bcaca76b3e6f9ae55d57a1c3193bc4
+    fi
+  }
   func_gl_gnulib_m4code_a9786850e999ae65a836a6041e8e5ed1 ()
   {
     if ! $gl_gnulib_enabled_a9786850e999ae65a836a6041e8e5ed1; then
@@ -751,9 +767,6 @@ AC_DEFUN([gl_INIT],
       if test $HAVE_GROUP_MEMBER = 0; then
         func_gl_gnulib_m4code_d3b2383720ee0e541357aa2aac598e2b
       fi
-      if test $HAVE_GROUP_MEMBER = 0; then
-        func_gl_gnulib_m4code_stdckdint
-      fi
     fi
   }
   func_gl_gnulib_m4code_lchmod ()
@@ -882,29 +895,6 @@ AC_DEFUN([gl_INIT],
       gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=true
     fi
   }
-  func_gl_gnulib_m4code_scratch_buffer ()
-  {
-    if ! $gl_gnulib_enabled_scratch_buffer; then
-      AC_PROG_MKDIR_P
-      gl_gnulib_enabled_scratch_buffer=true
-      func_gl_gnulib_m4code_ef455225c00f5049c808c2eda3e76866
-      func_gl_gnulib_m4code_61bcaca76b3e6f9ae55d57a1c3193bc4
-    fi
-  }
-  func_gl_gnulib_m4code_stdckdint ()
-  {
-    if ! $gl_gnulib_enabled_stdckdint; then
-      AC_CHECK_HEADERS_ONCE([stdckdint.h])
-      if test $ac_cv_header_stdckdint_h = yes; then
-        GL_GENERATE_STDCKDINT_H=false
-      else
-        GL_GENERATE_STDCKDINT_H=true
-      fi
-      gl_CONDITIONAL_HEADER([stdckdint.h])
-      AC_PROG_MKDIR_P
-      gl_gnulib_enabled_stdckdint=true
-    fi
-  }
   func_gl_gnulib_m4code_strtoll ()
   {
     if ! $gl_gnulib_enabled_strtoll; then
@@ -935,10 +925,10 @@ AC_DEFUN([gl_INIT],
     func_gl_gnulib_m4code_925677f0343de64b89a9f0c790b4104c
   fi
   if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test 
$REPLACE_CANONICALIZE_FILE_NAME = 1; then
-    func_gl_gnulib_m4code_rawmemchr
+    func_gl_gnulib_m4code_8444034ea779b88768865bb60b4fb8c9
   fi
   if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test 
$REPLACE_CANONICALIZE_FILE_NAME = 1; then
-    func_gl_gnulib_m4code_scratch_buffer
+    func_gl_gnulib_m4code_rawmemchr
   fi
   if test $HAVE_FACCESSAT = 0 || test $REPLACE_FACCESSAT = 1; then
     func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b
@@ -992,7 +982,7 @@ AC_DEFUN([gl_INIT],
     func_gl_gnulib_m4code_03e0aaad4cb89ca757653bd367a6ccb7
   fi
   if test $ac_use_included_regex = yes; then
-    func_gl_gnulib_m4code_dynarray
+    func_gl_gnulib_m4code_fd38c7e463b54744b77b98aeafb4fa7c
   fi
   if { test $HAVE_DECL_STRTOIMAX = 0 || test $REPLACE_STRTOIMAX = 1; } && test 
$ac_cv_type_long_long_int = yes; then
     func_gl_gnulib_m4code_strtoll
@@ -1013,12 +1003,13 @@ AC_DEFUN([gl_INIT],
   AM_CONDITIONAL([gl_GNULIB_ENABLED_260941c0e5dc67ec9e87d1fb321c300b], 
[$gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_cloexec], [$gl_gnulib_enabled_cloexec])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_dirfd], [$gl_gnulib_enabled_dirfd])
-  AM_CONDITIONAL([gl_GNULIB_ENABLED_dynarray], [$gl_gnulib_enabled_dynarray])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_925677f0343de64b89a9f0c790b4104c], 
[$gl_gnulib_enabled_925677f0343de64b89a9f0c790b4104c])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_euidaccess], 
[$gl_gnulib_enabled_euidaccess])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_getdtablesize], 
[$gl_gnulib_enabled_getdtablesize])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_getgroups], [$gl_gnulib_enabled_getgroups])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36], 
[$gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36])
+  AM_CONDITIONAL([gl_GNULIB_ENABLED_fd38c7e463b54744b77b98aeafb4fa7c], 
[$gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c])
+  AM_CONDITIONAL([gl_GNULIB_ENABLED_8444034ea779b88768865bb60b4fb8c9], 
[$gl_gnulib_enabled_8444034ea779b88768865bb60b4fb8c9])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_a9786850e999ae65a836a6041e8e5ed1], 
[$gl_gnulib_enabled_a9786850e999ae65a836a6041e8e5ed1])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_lchmod], [$gl_gnulib_enabled_lchmod])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_e80bf6f757095d2e5fc94dafb8f8fc8b], 
[$gl_gnulib_enabled_e80bf6f757095d2e5fc94dafb8f8fc8b])
@@ -1030,8 +1021,6 @@ AC_DEFUN([gl_INIT],
   AM_CONDITIONAL([gl_GNULIB_ENABLED_d3b2383720ee0e541357aa2aac598e2b], 
[$gl_gnulib_enabled_d3b2383720ee0e541357aa2aac598e2b])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_61bcaca76b3e6f9ae55d57a1c3193bc4], 
[$gl_gnulib_enabled_61bcaca76b3e6f9ae55d57a1c3193bc4])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c], 
[$gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c])
-  AM_CONDITIONAL([gl_GNULIB_ENABLED_scratch_buffer], 
[$gl_gnulib_enabled_scratch_buffer])
-  AM_CONDITIONAL([gl_GNULIB_ENABLED_stdckdint], [$gl_gnulib_enabled_stdckdint])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_utimens], [$gl_gnulib_enabled_utimens])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec], 
[$gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec])
@@ -1320,7 +1309,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/malloc/dynarray_resize.c
   lib/malloc/dynarray_resize_clear.c
   lib/malloc/scratch_buffer.h
-  lib/malloc/scratch_buffer_dupfree.c
   lib/malloc/scratch_buffer_grow.c
   lib/malloc/scratch_buffer_grow_preserve.c
   lib/malloc/scratch_buffer_set_array_size.c
diff --git a/m4/pthread_sigmask.m4 b/m4/pthread_sigmask.m4
index 0aa8c53f9e..8282a371e4 100644
--- a/m4/pthread_sigmask.m4
+++ b/m4/pthread_sigmask.m4
@@ -215,6 +215,7 @@ int main ()
            LIBS="$LIBS $LIBMULTITHREAD"])
         AC_RUN_IFELSE(
           [AC_LANG_SOURCE([[
+#include <limits.h>
 #include <pthread.h>
 #include <signal.h>
 #include <stdio.h>
@@ -230,14 +231,16 @@ sigint_handler (int sig)
 int main ()
 {
   sigset_t set;
-  int pid = getpid ();
+  pid_t pid = getpid ();
   char command[80];
+  if (LONG_MAX < pid)
+    return 6;
   signal (SIGINT, sigint_handler);
   sigemptyset (&set);
   sigaddset (&set, SIGINT);
   if (!(pthread_sigmask (SIG_BLOCK, &set, NULL) == 0))
     return 1;
-  sprintf (command, "sh -c 'sleep 1; kill -%d %d' &", SIGINT, pid);
+  sprintf (command, "sh -c 'sleep 1; kill -INT %ld' &", (long) pid);
   if (!(system (command) == 0))
     return 2;
   sleep (2);
diff --git a/src/alloc.c b/src/alloc.c
index 8dce3996c7..0f70e8fc5f 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -7229,9 +7229,17 @@ DEFUN ("memory-info", Fmemory_info, Smemory_info, 0, 0, 
0,
        doc: /* Return a list of (TOTAL-RAM FREE-RAM TOTAL-SWAP FREE-SWAP).
 All values are in Kbytes.  If there is no swap space,
 last two values are zero.  If the system is not supported
-or memory information can't be obtained, return nil.  */)
+or memory information can't be obtained, return nil.
+If `default-directory’ is remote, return memory information of the
+respective remote host.  */)
   (void)
 {
+  Lisp_Object handler
+    = Ffind_file_name_handler (BVAR (current_buffer, directory),
+                              Qmemory_info);
+  if (!NILP (handler))
+    return call1 (handler, Qmemory_info);
+
 #if defined HAVE_LINUX_SYSINFO
   struct sysinfo si;
   uintmax_t units;
@@ -7653,6 +7661,8 @@ do hash-consing of the objects allocated to pure space.  
*/);
               doc: /* Non-nil means Emacs cannot get much more Lisp memory.  
*/);
   Vmemory_full = Qnil;
 
+  DEFSYM (Qmemory_info, "memory-info");
+
   DEFSYM (Qconses, "conses");
   DEFSYM (Qsymbols, "symbols");
   DEFSYM (Qstrings, "strings");
diff --git a/src/buffer.c b/src/buffer.c
index ac7f4f8e9d..71be7ed9e1 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5898,7 +5898,42 @@ this threshold.
 If nil, these display shortcuts will always remain disabled.
 
 There is no reason to change that value except for debugging purposes.  */);
-  XSETFASTINT (Vlong_line_threshold, 10000);
+  XSETFASTINT (Vlong_line_threshold, 50000);
+
+  DEFVAR_INT ("long-line-locked-narrowing-region-size",
+             long_line_locked_narrowing_region_size,
+             doc: /* Region size for locked narrowing in buffers with long 
lines.
+
+This variable has effect only in buffers which contain one or more
+lines whose length is above `long-line-threshold', which see.  For
+performance reasons, in such buffers, low-level hooks such as
+`fontification-functions' or `post-command-hook' are executed on a
+narrowed buffer, with a narrowing locked with `narrowing-lock'.  This
+variable specifies the size of the narrowed region around point.
+
+To disable that narrowing, set this variable to 0.
+
+See also `long-line-locked-narrowing-bol-search-limit'.
+
+There is no reason to change that value except for debugging purposes.  */);
+  long_line_locked_narrowing_region_size = 500000;
+
+  DEFVAR_INT ("long-line-locked-narrowing-bol-search-limit",
+             long_line_locked_narrowing_bol_search_limit,
+             doc: /* Limit for beginning of line search in buffers with long 
lines.
+
+This variable has effect only in buffers which contain one or more
+lines whose length is above `long-line-threshold', which see.  For
+performance reasons, in such buffers, low-level hooks such as
+`fontification-functions' or `post-command-hook' are executed on a
+narrowed buffer, with a narrowing locked with `narrowing-lock'.  The
+variable `long-line-locked-narrowing-region-size' specifies the size
+of the narrowed region around point.  This variable, which should be a
+small integer, specifies the number of characters by which that region
+can be extended backwards to make it start at the beginning of a line.
+
+There is no reason to change that value except for debugging purposes.  */);
+  long_line_locked_narrowing_bol_search_limit = 128;
 
   DEFVAR_INT ("large-hscroll-threshold", large_hscroll_threshold,
     doc: /* Horizontal scroll of truncated lines above which to use redisplay 
shortcuts.
diff --git a/src/casefiddle.c b/src/casefiddle.c
index de2325ebf3..e8ae2e276f 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -557,10 +557,11 @@ casify_region (enum case_action flag, Lisp_Object b, 
Lisp_Object e)
     {
       signal_after_change (start, end - start - added, end - start);
       update_compositions (start, end, CHECK_ALL);
+    }
 #ifdef HAVE_TREE_SITTER
-      treesit_record_change (start_byte, old_end_byte, CHAR_TO_BYTE (end));
+      treesit_record_change (start_byte, old_end_byte,
+                            CHAR_TO_BYTE (orig_end + added));
 #endif
-    }
 
   return orig_end + added;
 }
diff --git a/src/dispextern.h b/src/dispextern.h
index 2afbdeabaa..df6134e68f 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -2342,6 +2342,14 @@ struct it
      optimize display.  */
   ptrdiff_t narrowed_zv;
 
+  /* Begin position of the buffer for the locked narrowing around
+     low-level hooks.  */
+  ptrdiff_t locked_narrowing_begv;
+
+  /* End position of the buffer for the locked narrowing around
+     low-level hooks.  */
+  ptrdiff_t locked_narrowing_zv;
+
   /* C string to iterate over.  Non-null means get characters from
      this string, otherwise characters are read from current_buffer
      or it->string.  */
@@ -3405,6 +3413,8 @@ void init_iterator (struct it *, struct window *, 
ptrdiff_t,
 ptrdiff_t get_narrowed_begv (struct window *, ptrdiff_t);
 ptrdiff_t get_narrowed_zv (struct window *, ptrdiff_t);
 ptrdiff_t get_closer_narrowed_begv (struct window *, ptrdiff_t);
+ptrdiff_t get_locked_narrowing_begv (ptrdiff_t);
+ptrdiff_t get_locked_narrowing_zv (ptrdiff_t);
 void init_iterator_to_row_start (struct it *, struct window *,
                                  struct glyph_row *);
 void start_display (struct it *, struct window *, struct text_pos);
diff --git a/src/editfns.c b/src/editfns.c
index f0747a782c..90056886fe 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -2653,88 +2653,216 @@ DEFUN ("delete-and-extract-region", 
Fdelete_and_extract_region,
   return del_range_1 (XFIXNUM (start), XFIXNUM (end), 1, 1);
 }
 
-DEFUN ("widen", Fwiden, Swiden, 0, 0, "",
-       doc: /* Remove restrictions (narrowing) from current buffer.
-This allows the buffer's full text to be seen and edited.
+/* Alist of buffers in which locked narrowing is used.  The car of
+   each list element is a buffer, the cdr is a list of triplets (tag
+   begv-marker zv-marker).  The last element of that list always uses
+   the (uninterned) Qoutermost_narrowing tag and records the narrowing
+   bounds that were set by the user and that are visible on display.
+   This alist is used internally by narrow-to-region, widen,
+   narrowing-lock, narrowing-unlock and save-restriction.  */
+static Lisp_Object narrowing_locks;
+
+/* Add BUF with its LOCKS in the narrowing_locks alist.  */
+static void
+narrowing_locks_add (Lisp_Object buf, Lisp_Object locks)
+{
+  narrowing_locks = nconc2 (list1 (list2 (buf, locks)), narrowing_locks);
+}
 
-Note that, when the current buffer contains one or more lines whose
-length is above `long-line-threshold', Emacs may decide to leave, for
-performance reasons, the accessible portion of the buffer unchanged
-after this function is called from low-level hooks, such as
-`jit-lock-functions' or `post-command-hook'.  */)
-  (void)
+/* Remove BUF and its locks from the narrowing_locks alist.  Do
+   nothing if BUF is not present in narrowing_locks.  */
+static void
+narrowing_locks_remove (Lisp_Object buf)
+{
+  narrowing_locks = Fdelq (Fassoc (buf, narrowing_locks, Qnil),
+                          narrowing_locks);
+}
+
+/* Retrieve one of the BEGV/ZV bounds of a narrowing in BUF from the
+   narrowing_locks alist, as a pointer to a struct Lisp_Marker, or
+   NULL if BUF is not in narrowing_locks or is a killed buffer.  When
+   OUTERMOST is true, the bounds that were set by the user and that
+   are visible on display are returned.  Otherwise the innermost
+   locked narrowing bounds are returned.  */
+static struct Lisp_Marker *
+narrowing_lock_get_bound (Lisp_Object buf, bool begv, bool outermost)
+{
+  if (NILP (Fbuffer_live_p (buf)))
+    return NULL;
+  Lisp_Object buffer_locks = assq_no_quit (buf, narrowing_locks);
+  if (NILP (buffer_locks))
+    return NULL;
+  buffer_locks = XCAR (XCDR (buffer_locks));
+  Lisp_Object bounds
+    = outermost
+      ? XCDR (assq_no_quit (Qoutermost_narrowing, buffer_locks))
+      : XCDR (XCAR (buffer_locks));
+  eassert (! NILP (bounds));
+  Lisp_Object marker = begv ? XCAR (bounds) : XCAR (XCDR (bounds));
+  eassert (EQ (Fmarker_buffer (marker), buf));
+  return XMARKER (marker);
+}
+
+/* Retrieve the tag of the innermost narrowing in BUF.  Return nil if
+   BUF is not in narrowing_locks or is a killed buffer.  */
+static Lisp_Object
+narrowing_lock_peek_tag (Lisp_Object buf)
 {
-  if (! NILP (Vrestrictions_locked))
+  if (NILP (Fbuffer_live_p (buf)))
     return Qnil;
-  if (BEG != BEGV || Z != ZV)
-    current_buffer->clip_changed = 1;
-  BEGV = BEG;
-  BEGV_BYTE = BEG_BYTE;
-  SET_BUF_ZV_BOTH (current_buffer, Z, Z_BYTE);
-  /* Changing the buffer bounds invalidates any recorded current column.  */
-  invalidate_current_column ();
-  return Qnil;
+  Lisp_Object buffer_locks = assq_no_quit (buf, narrowing_locks);
+  if (NILP (buffer_locks))
+    return Qnil;
+  Lisp_Object tag = XCAR (XCAR (XCAR (XCDR (buffer_locks))));
+  eassert (! NILP (tag));
+  return tag;
 }
 
+/* Add a LOCK for BUF in the narrowing_locks alist.  */
 static void
-unwind_locked_begv (Lisp_Object point_min)
+narrowing_lock_push (Lisp_Object buf, Lisp_Object lock)
 {
-  SET_BUF_BEGV (current_buffer, XFIXNUM (point_min));
+  Lisp_Object buffer_locks = assq_no_quit (buf, narrowing_locks);
+  if (NILP (buffer_locks))
+    narrowing_locks_add (buf, list1 (lock));
+  else
+    XSETCDR (buffer_locks, list1 (nconc2 (list1 (lock),
+                                         XCAR (XCDR (buffer_locks)))));
 }
 
+/* Remove the innermost lock in BUF from the narrowing_locks alist.
+   Do nothing if BUF is not present in narrowing_locks.  */
 static void
-unwind_locked_zv (Lisp_Object point_max)
+narrowing_lock_pop (Lisp_Object buf)
 {
-  SET_BUF_ZV (current_buffer, XFIXNUM (point_max));
+  Lisp_Object buffer_locks = assq_no_quit (buf, narrowing_locks);
+  if (NILP (buffer_locks))
+    return;
+  if (EQ (narrowing_lock_peek_tag (buf), Qoutermost_narrowing))
+    narrowing_locks_remove (buf);
+  else
+    XSETCDR (buffer_locks, list1 (XCDR (XCAR (XCDR (buffer_locks)))));
 }
 
-/* Internal function for Fnarrow_to_region, meant to be used with a
-   third argument 'true', in which case it should be followed by "specbind
-   (Qrestrictions_locked, Qt)".  */
-Lisp_Object
-narrow_to_region_internal (Lisp_Object start, Lisp_Object end, bool lock)
+static void
+unwind_reset_outermost_narrowing (Lisp_Object buf)
 {
-  EMACS_INT s = fix_position (start), e = fix_position (end);
-
-  if (e < s)
+  struct Lisp_Marker *begv = narrowing_lock_get_bound (buf, true, false);
+  struct Lisp_Marker *zv = narrowing_lock_get_bound (buf, false, false);
+  if (begv != NULL && zv != NULL)
     {
-      EMACS_INT tem = s; s = e; e = tem;
+      SET_BUF_BEGV_BOTH (XBUFFER (buf), begv->charpos, begv->bytepos);
+      SET_BUF_ZV_BOTH (XBUFFER (buf), zv->charpos, zv->bytepos);
     }
+  else
+    narrowing_locks_remove (buf);
+}
 
-  if (lock)
+/* Restore the narrowing bounds that were set by the user, and restore
+   the bounds of the locked narrowing upon return.
+   In particular, this function is called when redisplay starts, so
+   that if a Lisp function executed during redisplay calls (redisplay)
+   while a locked narrowing is in effect, the locked narrowing will
+   not be visible on display.  */
+void
+reset_outermost_narrowings (void)
+{
+  Lisp_Object val, buf;
+  for (val = narrowing_locks; CONSP (val); val = XCDR (val))
     {
-      if (!(BEGV <= s && s <= e && e <= ZV))
-       args_out_of_range (start, end);
+      buf = XCAR (XCAR (val));
+      eassert (BUFFERP (buf));
+      struct Lisp_Marker *begv = narrowing_lock_get_bound (buf, true, true);
+      struct Lisp_Marker *zv = narrowing_lock_get_bound (buf, false, true);
+      if (begv != NULL && zv != NULL)
+       {
+         SET_BUF_BEGV_BOTH (XBUFFER (buf), begv->charpos, begv->bytepos);
+         SET_BUF_ZV_BOTH (XBUFFER (buf), zv->charpos, zv->bytepos);
+         record_unwind_protect (unwind_reset_outermost_narrowing, buf);
+       }
+      else
+       narrowing_locks_remove (buf);
+    }
+}
 
-      if (BEGV != s || ZV != e)
-       current_buffer->clip_changed = 1;
+/* Helper functions to save and restore the narrowing locks of the
+   current buffer in Fsave_restriction.  */
+static Lisp_Object
+narrowing_locks_save (void)
+{
+  Lisp_Object buf = Fcurrent_buffer ();
+  Lisp_Object locks = assq_no_quit (buf, narrowing_locks);
+  if (NILP (locks))
+    return Qnil;
+  locks = XCAR (XCDR (locks));
+  return Fcons (buf, Fcopy_sequence (locks));
+}
 
-      record_unwind_protect (restore_point_unwind, Fpoint_marker ());
-      record_unwind_protect (unwind_locked_begv, Fpoint_min ());
-      record_unwind_protect (unwind_locked_zv, Fpoint_max ());
+static void
+narrowing_locks_restore (Lisp_Object buf_and_saved_locks)
+{
+  if (NILP (buf_and_saved_locks))
+    return;
+  Lisp_Object buf = XCAR (buf_and_saved_locks);
+  Lisp_Object saved_locks = XCDR (buf_and_saved_locks);
+  narrowing_locks_remove (buf);
+  narrowing_locks_add (buf, saved_locks);
+}
 
-      SET_BUF_BEGV (current_buffer, s);
-      SET_BUF_ZV (current_buffer, e);
+static void
+unwind_narrow_to_region_locked (Lisp_Object tag)
+{
+  Fnarrowing_unlock (tag);
+  Fwiden ();
+}
+
+/* Narrow current_buffer to BEGV-ZV with a narrowing locked with TAG.  */
+void
+narrow_to_region_locked (Lisp_Object begv, Lisp_Object zv, Lisp_Object tag)
+{
+  Fnarrow_to_region (begv, zv);
+  Fnarrowing_lock (tag);
+  record_unwind_protect (restore_point_unwind, Fpoint_marker ());
+  record_unwind_protect (unwind_narrow_to_region_locked, tag);
+}
+
+DEFUN ("widen", Fwiden, Swiden, 0, 0, "",
+       doc: /* Remove restrictions (narrowing) from current buffer.
+
+This allows the buffer's full text to be seen and edited, unless
+restrictions have been locked with `narrowing-lock', which see, in
+which case the narrowing that was current when `narrowing-lock' was
+called is restored.  */)
+  (void)
+{
+  Fset (Qoutermost_narrowing, Qnil);
+  Lisp_Object buf = Fcurrent_buffer ();
+  Lisp_Object tag = narrowing_lock_peek_tag (buf);
+
+  if (NILP (tag))
+    {
+      if (BEG != BEGV || Z != ZV)
+       current_buffer->clip_changed = 1;
+      BEGV = BEG;
+      BEGV_BYTE = BEG_BYTE;
+      SET_BUF_ZV_BOTH (current_buffer, Z, Z_BYTE);
     }
   else
     {
-      if (! NILP (Vrestrictions_locked))
-       return Qnil;
-
-      if (!(BEG <= s && s <= e && e <= Z))
-       args_out_of_range (start, end);
-
-      if (BEGV != s || ZV != e)
+      struct Lisp_Marker *begv = narrowing_lock_get_bound (buf, true, false);
+      struct Lisp_Marker *zv = narrowing_lock_get_bound (buf, false, false);
+      eassert (begv != NULL && zv != NULL);
+      if (begv->charpos != BEGV || zv->charpos != ZV)
        current_buffer->clip_changed = 1;
-
-      SET_BUF_BEGV (current_buffer, s);
-      SET_BUF_ZV (current_buffer, e);
+      SET_BUF_BEGV_BOTH (current_buffer, begv->charpos, begv->bytepos);
+      SET_BUF_ZV_BOTH (current_buffer, zv->charpos, zv->bytepos);
+      /* If the only remaining bounds in narrowing_locks for
+        current_buffer are the bounds that were set by the user, no
+        locked narrowing is in effect in current_buffer anymore:
+        remove it from the narrowing_locks alist.  */
+      if (EQ (tag, Qoutermost_narrowing))
+       narrowing_lock_pop (buf);
     }
-
-  if (PT < s)
-    SET_PT (s);
-  if (e < PT)
-    SET_PT (e);
   /* Changing the buffer bounds invalidates any recorded current column.  */
   invalidate_current_column ();
   return Qnil;
@@ -2751,14 +2879,110 @@ When calling from Lisp, pass two arguments START and 
END:
 positions (integers or markers) bounding the text that should
 remain visible.
 
-Note that, when the current buffer contains one or more lines whose
-length is above `long-line-threshold', Emacs may decide to leave, for
-performance reasons, the accessible portion of the buffer unchanged
-after this function is called from low-level hooks, such as
-`jit-lock-functions' or `post-command-hook'.  */)
+When restrictions have been locked with `narrowing-lock', which see,
+`narrow-to-region' can be used only within the limits of the
+restrictions that were current when `narrowing-lock' was called.  If
+the START or END arguments are outside these limits, the corresponding
+limit of the locked restriction is used instead of the argument.  */)
   (Lisp_Object start, Lisp_Object end)
 {
-  return narrow_to_region_internal (start, end, false);
+  EMACS_INT s = fix_position (start), e = fix_position (end);
+
+  if (e < s)
+    {
+      EMACS_INT tem = s; s = e; e = tem;
+    }
+
+  if (!(BEG <= s && s <= e && e <= Z))
+    args_out_of_range (start, end);
+
+  Lisp_Object buf = Fcurrent_buffer ();
+  if (! NILP (narrowing_lock_peek_tag (buf)))
+    {
+      struct Lisp_Marker *begv = narrowing_lock_get_bound (buf, true, false);
+      struct Lisp_Marker *zv = narrowing_lock_get_bound (buf, false, false);
+      eassert (begv != NULL && zv != NULL);
+      /* Limit the start and end positions to those of the locked
+        narrowing.  */
+      if (s < begv->charpos) s = begv->charpos;
+      if (s > zv->charpos) s = zv->charpos;
+      if (e < begv->charpos) e = begv->charpos;
+      if (e > zv->charpos) e = zv->charpos;
+    }
+
+  /* Record the accessible range of the buffer when narrow-to-region
+     is called, that is, before applying the narrowing.  It is used
+     only by narrowing-lock.  */
+  Fset (Qoutermost_narrowing, list3 (Qoutermost_narrowing,
+                                    Fpoint_min_marker (),
+                                    Fpoint_max_marker ()));
+
+  if (BEGV != s || ZV != e)
+    current_buffer->clip_changed = 1;
+
+  SET_BUF_BEGV (current_buffer, s);
+  SET_BUF_ZV (current_buffer, e);
+
+  if (PT < s)
+    SET_PT (s);
+  if (e < PT)
+    SET_PT (e);
+  /* Changing the buffer bounds invalidates any recorded current column.  */
+  invalidate_current_column ();
+  return Qnil;
+}
+
+DEFUN ("narrowing-lock", Fnarrowing_lock, Snarrowing_lock, 1, 1, 0,
+       doc: /* Lock the current narrowing with TAG.
+
+When restrictions are locked, `narrow-to-region' and `widen' can be
+used only within the limits of the restrictions that were current when
+`narrowing-lock' was called, unless the lock is removed by calling
+`narrowing-unlock' with TAG.
+
+Locking restrictions should be used sparingly, after carefully
+considering the potential adverse effects on the code that will be
+executed within locked restrictions.  It is typically meant to be used
+around portions of code that would become too slow, and make Emacs
+unresponsive, if they were executed in a large buffer.  For example,
+restrictions are locked by Emacs around low-level hooks such as
+`fontification-functions' or `post-command-hook'.
+
+Locked restrictions are never visible on display, and can therefore
+not be used as a stronger variant of normal restrictions.  */)
+  (Lisp_Object tag)
+{
+  Lisp_Object buf = Fcurrent_buffer ();
+  Lisp_Object outermost_narrowing
+    = buffer_local_value (Qoutermost_narrowing, buf);
+  /* If narrowing-lock is called without being preceded by
+     narrow-to-region, do nothing.  */
+  if (NILP (outermost_narrowing))
+    return Qnil;
+  if (NILP (narrowing_lock_peek_tag (buf)))
+    narrowing_lock_push (buf, outermost_narrowing);
+  narrowing_lock_push (buf, list3 (tag,
+                                  Fpoint_min_marker (),
+                                  Fpoint_max_marker ()));
+  return Qnil;
+}
+
+DEFUN ("narrowing-unlock", Fnarrowing_unlock, Snarrowing_unlock, 1, 1, 0,
+       doc: /* Unlock a narrowing locked with (narrowing-lock TAG).
+
+Unlocking restrictions locked with `narrowing-lock' should be used
+sparingly, after carefully considering the reasons why restrictions
+were locked.  Restrictions are typically locked around portions of
+code that would become too slow, and make Emacs unresponsive, if they
+were executed in a large buffer.  For example, restrictions are locked
+by Emacs around low-level hooks such as `fontification-functions' or
+`post-command-hook'.  */)
+  (Lisp_Object tag)
+{
+  Lisp_Object buf = Fcurrent_buffer ();
+  if (EQ (narrowing_lock_peek_tag (buf), tag))
+    narrowing_lock_pop (buf);
+  return Qnil;
 }
 
 Lisp_Object
@@ -2858,11 +3082,12 @@ DEFUN ("save-restriction", Fsave_restriction, 
Ssave_restriction, 0, UNEVALLED, 0
        doc: /* Execute BODY, saving and restoring current buffer's 
restrictions.
 The buffer's restrictions make parts of the beginning and end invisible.
 \(They are set up with `narrow-to-region' and eliminated with `widen'.)
-This special form, `save-restriction', saves the current buffer's restrictions
-when it is entered, and restores them when it is exited.
+This special form, `save-restriction', saves the current buffer's
+restrictions, as well as their locks if they have been locked with
+`narrowing-lock', when it is entered, and restores them when it is exited.
 So any `narrow-to-region' within BODY lasts only until the end of the form.
-The old restrictions settings are restored
-even in case of abnormal exit (throw or error).
+The old restrictions settings are restored even in case of abnormal exit
+\(throw or error).
 
 The value returned is the value of the last form in BODY.
 
@@ -2877,6 +3102,7 @@ usage: (save-restriction &rest BODY)  */)
   specpdl_ref count = SPECPDL_INDEX ();
 
   record_unwind_protect (save_restriction_restore, save_restriction_save ());
+  record_unwind_protect (narrowing_locks_restore, narrowing_locks_save ());
   val = Fprogn (body);
   return unbind_to (count, val);
 }
@@ -4518,6 +4744,8 @@ syms_of_editfns (void)
   DEFSYM (Qwall, "wall");
   DEFSYM (Qpropertize, "propertize");
 
+  staticpro (&narrowing_locks);
+
   DEFVAR_LISP ("inhibit-field-text-motion", Vinhibit_field_text_motion,
               doc: /* Non-nil means text motion commands don't notice fields.  
*/);
   Vinhibit_field_text_motion = Qnil;
@@ -4577,11 +4805,12 @@ This variable is experimental; email 
32252@debbugs.gnu.org if you need
 it to be non-nil.  */);
   binary_as_unsigned = false;
 
-  DEFSYM (Qrestrictions_locked, "restrictions-locked");
-  DEFVAR_LISP ("restrictions-locked", Vrestrictions_locked,
-              doc: /* If non-nil, restrictions are currently locked.  */);
-  Vrestrictions_locked = Qnil;
-  Funintern (Qrestrictions_locked, Qnil);
+  DEFVAR_LISP ("outermost-narrowing", Voutermost_narrowing,
+              doc: /* Outermost narrowing bounds, if any.  Internal use only.  
*/);
+  Voutermost_narrowing = Qnil;
+  Fmake_variable_buffer_local (Qoutermost_narrowing);
+  DEFSYM (Qoutermost_narrowing, "outermost-narrowing");
+  Funintern (Qoutermost_narrowing, Qnil);
 
   defsubr (&Spropertize);
   defsubr (&Schar_equal);
@@ -4674,6 +4903,8 @@ it to be non-nil.  */);
   defsubr (&Sdelete_and_extract_region);
   defsubr (&Swiden);
   defsubr (&Snarrow_to_region);
+  defsubr (&Snarrowing_lock);
+  defsubr (&Snarrowing_unlock);
   defsubr (&Ssave_restriction);
   defsubr (&Stranspose_regions);
 }
diff --git a/src/emacs.c b/src/emacs.c
index fe898f988d..9742dcd8a0 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -295,6 +295,7 @@ Initialization options:\n\
 --no-site-lisp, -nsl        do not add site-lisp directories to load-path\n\
 --no-splash                 do not display a splash screen on startup\n\
 --no-window-system, -nw     do not communicate with X, ignoring $DISPLAY\n\
+--init-directory=DIR        use DIR when looking for the Emacs init files.\n\
 ",
     "\
 --quick, -Q                 equivalent to:\n\
diff --git a/src/fns.c b/src/fns.c
index 2f861de6ba..8ff30d0f8a 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -596,8 +596,9 @@ To emulate Unicode-compliant collation on MS-Windows 
systems,
 bind `w32-collate-ignore-punctuation' to a non-nil value, since
 the codeset part of the locale cannot be \"UTF-8\" on MS-Windows.
 
-If your system does not support a locale environment, this function
-behaves like `string-lessp'.  */)
+Some operating systems do not implement correct collation (in specific
+locale environments or at all).  Then, this functions falls back to
+case-sensitive `string-lessp' and IGNORE-CASE argument is ignored.  */)
   (Lisp_Object s1, Lisp_Object s2, Lisp_Object locale, Lisp_Object ignore_case)
 {
 #if defined __STDC_ISO_10646__ || defined WINDOWSNT
@@ -643,7 +644,8 @@ bind `w32-collate-ignore-punctuation' to a non-nil value, 
since
 the codeset part of the locale cannot be \"UTF-8\" on MS-Windows.
 
 If your system does not support a locale environment, this function
-behaves like `string-equal'.
+behaves like `string-equal', and in that case the IGNORE-CASE argument
+is ignored.
 
 Do NOT use this function to compare file names for equality.  */)
   (Lisp_Object s1, Lisp_Object s2, Lisp_Object locale, Lisp_Object ignore_case)
diff --git a/src/image.c b/src/image.c
index 30f565f88d..8403c4b7eb 100644
--- a/src/image.c
+++ b/src/image.c
@@ -193,8 +193,8 @@ static void anim_prune_animation_cache (Lisp_Object);
 #ifdef USE_CAIRO
 
 static Emacs_Pix_Container
-image_create_pix_container (struct frame *f, unsigned int width,
-                           unsigned int height, unsigned int depth)
+image_create_pix_container (unsigned int width, unsigned int height,
+                           unsigned int depth)
 {
   Emacs_Pix_Container pimg;
 
@@ -237,7 +237,7 @@ image_pix_container_create_from_bitmap_data (struct frame 
*f,
                                             unsigned long fg,
                                             unsigned long bg)
 {
-  Emacs_Pix_Container pimg = image_create_pix_container (f, width, height, 0);
+  Emacs_Pix_Container pimg = image_create_pix_container (width, height, 0);
   int bytes_per_line = (width + (CHAR_BIT - 1)) / CHAR_BIT;
 
   for (int y = 0; y < height; y++)
@@ -3344,7 +3344,7 @@ image_create_x_image_and_pixmap_1 (struct frame *f, int 
width, int height, int d
   eassert (input_blocked_p ());
 
   /* Allocate a pixmap of the same size.  */
-  *pixmap = image_create_pix_container (f, width, height, depth);
+  *pixmap = image_create_pix_container (width, height, depth);
   if (*pixmap == NO_PIXMAP)
     {
       *pimg = NULL;
diff --git a/src/keyboard.c b/src/keyboard.c
index 811998823c..d68b50428a 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1910,10 +1910,14 @@ safe_run_hooks_maybe_narrowed (Lisp_Object hook, struct 
window *w)
 
   specbind (Qinhibit_quit, Qt);
 
-  if (current_buffer->long_line_optimizations_p)
-    narrow_to_region_internal (make_fixnum (get_narrowed_begv (w, PT)),
-                              make_fixnum (get_narrowed_zv (w, PT)),
-                              true);
+  if (current_buffer->long_line_optimizations_p
+      && long_line_locked_narrowing_region_size > 0)
+    {
+      ptrdiff_t begv = get_locked_narrowing_begv (PT);
+      ptrdiff_t zv = get_locked_narrowing_zv (PT);
+      if (begv != BEG || zv != Z)
+       narrow_to_region_locked (make_fixnum (begv), make_fixnum (zv), hook);
+    }
 
   run_hook_with_args (2, ((Lisp_Object []) {hook, hook}),
                       safe_run_hook_funcall);
@@ -12727,8 +12731,9 @@ the error might happen repeatedly and make Emacs 
nonfunctional.
 
 Note that, when the current buffer contains one or more lines whose
 length is above `long-line-threshold', these hook functions are called
-with the buffer narrowed to a small portion around point, and the
-narrowing is locked (see `narrow-to-region'), so that these hook
+with the buffer narrowed to a small portion around point (whose size
+is specified by `long-line-locked-narrowing-region-size'), and the
+narrowing is locked (see `narrowing-lock'), so that these hook
 functions cannot use `widen' to gain access to other portions of
 buffer text.
 
@@ -12748,8 +12753,9 @@ avoid making Emacs unresponsive while the user types.
 
 Note that, when the current buffer contains one or more lines whose
 length is above `long-line-threshold', these hook functions are called
-with the buffer narrowed to a small portion around point, and the
-narrowing is locked (see `narrow-to-region'), so that these hook
+with the buffer narrowed to a small portion around point (whose size
+is specified by `long-line-locked-narrowing-region-size'), and the
+narrowing is locked (see `narrowing-lock'), so that these hook
 functions cannot use `widen' to gain access to other portions of
 buffer text.
 
diff --git a/src/lisp.h b/src/lisp.h
index 0a0abc3348..63cc07d43f 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -4789,7 +4789,8 @@ extern void save_restriction_restore (Lisp_Object);
 extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool);
 extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
                                            ptrdiff_t, bool);
-extern Lisp_Object narrow_to_region_internal (Lisp_Object, Lisp_Object, bool);
+extern void narrow_to_region_locked (Lisp_Object, Lisp_Object, Lisp_Object);
+extern void reset_outermost_narrowings (void);
 extern void init_editfns (void);
 extern void syms_of_editfns (void);
 
diff --git a/src/pdumper.c b/src/pdumper.c
index 24b026d0aa..0782a9d845 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -2746,7 +2746,7 @@ dump_hash_table (struct dump_context *ctx,
 static dump_off
 dump_buffer (struct dump_context *ctx, const struct buffer *in_buffer)
 {
-#if CHECK_STRUCTS && !defined HASH_buffer_193CAA5E45
+#if CHECK_STRUCTS && !defined HASH_buffer_DB34E5D09F
 # error "buffer changed. See CHECK_STRUCTS comment in config.h."
 #endif
   struct buffer munged_buffer = *in_buffer;
@@ -2998,7 +2998,7 @@ dump_vectorlike (struct dump_context *ctx,
                  Lisp_Object lv,
                  dump_off offset)
 {
-#if CHECK_STRUCTS && !defined HASH_pvec_type_AFF6FED5BD
+#if CHECK_STRUCTS && !defined HASH_pvec_type_5F2059C47E
 # error "pvec_type changed. See CHECK_STRUCTS comment in config.h."
 #endif
   const struct Lisp_Vector *v = XVECTOR (lv);
diff --git a/src/sqlite.c b/src/sqlite.c
index ac860f55bc..d9b9333fb3 100644
--- a/src/sqlite.c
+++ b/src/sqlite.c
@@ -55,6 +55,7 @@ DEF_DLL_FN (SQLITE_API const char*, sqlite3_errmsg, 
(sqlite3*));
 #if SQLITE_VERSION_NUMBER >= 3007015
 DEF_DLL_FN (SQLITE_API const char*, sqlite3_errstr, (int));
 #endif
+DEF_DLL_FN (SQLITE_API const char*, sqlite3_libversion, (void));
 DEF_DLL_FN (SQLITE_API int, sqlite3_step, (sqlite3_stmt*));
 DEF_DLL_FN (SQLITE_API int, sqlite3_changes, (sqlite3*));
 DEF_DLL_FN (SQLITE_API int, sqlite3_column_count, (sqlite3_stmt*));
@@ -96,6 +97,7 @@ DEF_DLL_FN (SQLITE_API int, sqlite3_load_extension,
 # if SQLITE_VERSION_NUMBER >= 3007015
 #  undef sqlite3_errstr
 # endif
+# undef sqlite3_libversion
 # undef sqlite3_step
 # undef sqlite3_changes
 # undef sqlite3_column_count
@@ -124,6 +126,7 @@ DEF_DLL_FN (SQLITE_API int, sqlite3_load_extension,
 # if SQLITE_VERSION_NUMBER >= 3007015
 #  define sqlite3_errstr fn_sqlite3_errstr
 # endif
+# define sqlite3_libversion fn_sqlite3_libversion
 # define sqlite3_step fn_sqlite3_step
 # define sqlite3_changes fn_sqlite3_changes
 # define sqlite3_column_count fn_sqlite3_column_count
@@ -155,6 +158,7 @@ load_dll_functions (HMODULE library)
 #if SQLITE_VERSION_NUMBER >= 3007015
   LOAD_DLL_FN (library, sqlite3_errstr);
 #endif
+  LOAD_DLL_FN (library, sqlite3_libversion);
   LOAD_DLL_FN (library, sqlite3_step);
   LOAD_DLL_FN (library, sqlite3_changes);
   LOAD_DLL_FN (library, sqlite3_column_count);
@@ -763,6 +767,16 @@ This will free the resources held by SET.  */)
   return Qt;
 }
 
+DEFUN ("sqlite-version", Fsqlite_version, Ssqlite_version, 0, 0, 0,
+       doc: /* Return the version string of the SQLite library.
+Signal an error if SQLite support is not available.  */)
+  (void)
+{
+  if (!init_sqlite_functions ())
+    error ("sqlite support is not available");
+  return build_string (sqlite3_libversion ());
+}
+
 #endif /* HAVE_SQLITE3 */
 
 DEFUN ("sqlitep", Fsqlitep, Ssqlitep, 1, 1, 0,
@@ -814,6 +828,7 @@ syms_of_sqlite (void)
   defsubr (&Ssqlite_columns);
   defsubr (&Ssqlite_more_p);
   defsubr (&Ssqlite_finalize);
+  defsubr (&Ssqlite_version);
   DEFSYM (Qset, "set");
   DEFSYM (Qfull, "full");
 #endif
diff --git a/src/timefns.c b/src/timefns.c
index eed2edf1cc..9beec1ce38 100644
--- a/src/timefns.c
+++ b/src/timefns.c
@@ -1194,7 +1194,7 @@ For example, nil stands for the current time.  */)
      quicker while we're at it.  This means (time-subtract X X) does
      not signal an error if X is not a valid time value, but that's OK.  */
   if (BASE_EQ (a, b))
-    return timespec_to_lisp ((struct timespec) {0});
+    return make_lisp_time ((struct timespec) {0});
 
   return time_arith (a, b, true);
 }
diff --git a/src/treesit.c b/src/treesit.c
index 463e2458a6..69272b8ad8 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -295,7 +295,7 @@ init_treesit_functions (void)
      a node.  But since we can just retrieve a new node, it shouldn't
      be a limitation.
 
-   - I didn't expose setting timeout and cancelation flag for a
+   - I didn't expose setting timeout and cancellation flag for a
      parser, mainly because I don't think they are really necessary
      in Emacs's use cases.
 
@@ -314,7 +314,7 @@ init_treesit_functions (void)
      See: https://github.com/tree-sitter/tree-sitter/issues/445
 
    treesit.h has some commentary on the two main data structure for
-   the parser and node.  treesit_ensure_position_synced has some
+   the parser and node.  treesit_sync_visible_region has some
    commentary on how we make tree-sitter play well with narrowing (the
    tree-sitter parser only sees the visible region, so we need to
    translate positions back and forth).  Most action happens in
@@ -707,6 +707,8 @@ treesit_record_change (ptrdiff_t start_byte, ptrdiff_t 
old_end_byte,
       Lisp_Object lisp_parser = XCAR (parser_list);
       treesit_check_parser (lisp_parser);
       TSTree *tree = XTS_PARSER (lisp_parser)->tree;
+      /* See comment (ref:visible-beg-null) if you wonder why we don't
+      update visible_beg/end when tree is NULL.  */
       if (tree != NULL)
        {
          eassert (start_byte <= old_end_byte);
@@ -742,7 +744,7 @@ treesit_record_change (ptrdiff_t start_byte, ptrdiff_t 
old_end_byte,
          XTS_PARSER (lisp_parser)->timestamp++;
 
          /* VISIBLE_BEG/END records tree-sitter's range of view in
-            the buffer.  Ee need to adjust them when tree-sitter's
+            the buffer.  We need to adjust them when tree-sitter's
             view changes.  */
          ptrdiff_t visi_beg_delta;
          if (old_end_byte > new_end_byte)
@@ -765,20 +767,65 @@ treesit_record_change (ptrdiff_t start_byte, ptrdiff_t 
old_end_byte,
     }
 }
 
-/* Make sure PARSER's visible_beg and visible_end are in sync with
-   BUF_BEGV_BYTE and BUG_ZV_BYTE.  When calling this function you must
-   make sure the current buffer's size is not larger than UINT32_MAX.
-   Basically always call treesit_check_buffer_size before this
-   function.  */
+/* Comment (ref:visible-beg-null) The purpose of visible_beg/end is to
+   keep track of "which part of the buffer does the tree-sitter tree
+   see", in order to update the tree correctly.  Visible_beg/end have
+   two purposes: they "clip" buffer changes within them, and they
+   translate positions in the buffer to positions in the tree
+   (buffer position - visible_beg = tree position).
+
+   Conceptually, visible_beg/end hold the visible region of the buffer
+   when we last reparsed.  In-between two reparses, we don't really
+   care if the visible region of the buffer changes.
+
+   Right before we reparse, we make tree-sitter's visible region
+   match that of the buffer, and update visible_beg/end.
+
+   That is, the whole purpose of visible_beg/end (and also of
+   treesit_record_change and treesit_sync_visible_region) is to update
+   the tree (by ts_tree_edit).  So if the tree is NULL,
+   visible_beg/end are considered uninitialized.  Only when we already
+   have a tree, do we need to keep track of position changes and
+   update it correctly, so it can be fed into ts_parser_parse as the
+   old tree, so that tree-sitter will only parse the changed part,
+   incrementally.
+
+   In a nutshell, tree-sitter incremental parsing in Emacs looks like:
+
+   treesit_record_change (tree)  \
+   treesit_record_change (tree)  | user edits buffer
+   ...                           /
+
+   treesit_sync_visible_region (tree) \ treesit_ensure_parsed
+   ts_parser_parse(tree) -> tree      /
+
+   treesit_record_change (tree)  \
+   treesit_record_change (tree)  | user edits buffer
+   ...                           /
+
+   and so on.  */
+
+/* Make sure the tree's visible range is in sync with the buffer's
+   visible range, and PARSER's visible_beg and visible_end are in sync
+   with BUF_BEGV_BYTE and BUG_ZV_BYTE.  When calling this function you
+   must make sure the current buffer's size in bytes is not larger than
+   UINT32_MAX.  Basically, always call treesit_check_buffer_size before
+   this function.  */
 static void
-treesit_ensure_position_synced (Lisp_Object parser)
+treesit_sync_visible_region (Lisp_Object parser)
 {
   TSTree *tree = XTS_PARSER (parser)->tree;
+  struct buffer *buffer = XBUFFER (XTS_PARSER (parser)->buffer);
 
+  /* If we are setting visible_beg/end for the first time, we can skip
+  the offset acrobatics and updating the tree below.  */
   if (tree == NULL)
-    return;
+    {
+      XTS_PARSER (parser)->visible_beg = BUF_BEGV_BYTE (buffer);
+      XTS_PARSER (parser)->visible_end = BUF_ZV_BYTE (buffer);
+      return;
+    }
 
-  struct buffer *buffer = XBUFFER (XTS_PARSER (parser)->buffer);
   ptrdiff_t visible_beg = XTS_PARSER (parser)->visible_beg;
   ptrdiff_t visible_end = XTS_PARSER (parser)->visible_end;
   eassert (0 <= visible_beg);
@@ -840,11 +887,11 @@ treesit_ensure_position_synced (Lisp_Object parser)
 static void
 treesit_check_buffer_size (struct buffer *buffer)
 {
-  ptrdiff_t buffer_size = (BUF_Z (buffer) - BUF_BEG (buffer));
-  if (buffer_size > UINT32_MAX)
+  ptrdiff_t buffer_size_bytes = (BUF_Z_BYTE (buffer) - BUF_BEG_BYTE (buffer));
+  if (buffer_size_bytes > UINT32_MAX)
     xsignal2 (Qtreesit_buffer_too_large,
              build_pure_c_string ("Buffer size cannot be larger than 4GB"),
-             make_fixnum (buffer_size));
+             make_fixnum (buffer_size_bytes));
 }
 
 static Lisp_Object treesit_make_ranges (const TSRange *, uint32_t, struct 
buffer *);
@@ -884,14 +931,14 @@ treesit_ensure_parsed (Lisp_Object parser)
 
   /* Before we parse, catch up with the narrowing situation.  */
   treesit_check_buffer_size (buffer);
-  treesit_ensure_position_synced (parser);
+  treesit_sync_visible_region (parser);
 
   TSTree *new_tree = ts_parser_parse (treesit_parser, tree, input);
   /* This should be very rare (impossible, really): it only happens
      when 1) language is not set (impossible in Emacs because the user
      has to supply a language to create a parser), 2) parse canceled
      due to timeout (impossible because we don't set a timeout), 3)
-     parse canceled due to cancelation flag (impossible because we
+     parse canceled due to cancellation flag (impossible because we
      don't set the flag).  (See comments for ts_parser_parse in
      tree_sitter/api.h.)  */
   if (new_tree == NULL)
@@ -983,8 +1030,8 @@ make_treesit_parser (Lisp_Object buffer, TSParser *parser,
   TSInput input = {lisp_parser, treesit_read_buffer, TSInputEncodingUTF8};
   lisp_parser->input = input;
   lisp_parser->need_reparse = true;
-  lisp_parser->visible_beg = BUF_BEGV (XBUFFER (buffer));
-  lisp_parser->visible_end = BUF_ZV (XBUFFER (buffer));
+  lisp_parser->visible_beg = BUF_BEGV_BYTE (XBUFFER (buffer));
+  lisp_parser->visible_end = BUF_ZV_BYTE (XBUFFER (buffer));
   lisp_parser->timestamp = 0;
   lisp_parser->deleted = false;
   lisp_parser->has_range = false;
@@ -1365,9 +1412,10 @@ treesit_check_range_argument (Lisp_Object ranges)
   CHECK_LIST_END (tail, ranges);
 }
 
-/* Generate a list of ranges in Lisp from RANGES.  This function
-   doesn't take ownership of RANGES.  BUFFER is used to convert
-   between tree-sitter buffer offset and buffer position.  */
+/* Generate a list of ranges in Lisp from RANGES.  Assumes tree-sitter
+   tree and the buffer has the same visible region (wrt narrowing).
+   This function doesn't take ownership of RANGES.  BUFFER is used to
+   convert between tree-sitter buffer offset and buffer position.  */
 static Lisp_Object
 treesit_make_ranges (const TSRange *ranges, uint32_t len,
                     struct buffer *buffer)
@@ -1412,7 +1460,7 @@ buffer.  */)
   treesit_initialize ();
   /* Before we parse, catch up with narrowing/widening.  */
   treesit_check_buffer_size (XBUFFER (XTS_PARSER (parser)->buffer));
-  treesit_ensure_position_synced (parser);
+  treesit_sync_visible_region (parser);
 
   bool success;
   if (NILP (ranges))
@@ -1476,8 +1524,8 @@ DEFUN ("treesit-parser-included-ranges",
        Streesit_parser_included_ranges,
        1, 1, 0,
        doc: /* Return the ranges set for PARSER.
-See `treesit-parser-set-ranges'.  If no ranges are set for PARSER,
-return nil.  */)
+If no ranges are set for PARSER, return nil.
+See also `treesit-parser-set-included-ranges'.  */)
   (Lisp_Object parser)
 {
   treesit_check_parser (parser);
@@ -1498,7 +1546,7 @@ return nil.  */)
   /* Our return value depends on the buffer state (BUF_BEGV_BYTE,
      etc), so we need to sync up.  */
   treesit_check_buffer_size (XBUFFER (XTS_PARSER (parser)->buffer));
-  treesit_ensure_position_synced (parser);
+  treesit_sync_visible_region (parser);
 
   struct buffer *buffer = XBUFFER (XTS_PARSER (parser)->buffer);
   return treesit_make_ranges (ranges, len, buffer);
@@ -1535,7 +1583,7 @@ positions.  PARSER is the parser issuing the 
notification.  */)
   CHECK_SYMBOL (function);
 
   Lisp_Object functions = XTS_PARSER (parser)->after_change_functions;
-  if (!Fmemq (function, functions))
+  if (NILP (Fmemq (function, functions)))
     XTS_PARSER (parser)->after_change_functions = Fcons (function, functions);
   return Qnil;
 }
@@ -1555,7 +1603,7 @@ positions.  PARSER is the parser issuing the 
notification.   */)
   CHECK_SYMBOL (function);
 
   Lisp_Object functions = XTS_PARSER (parser)->after_change_functions;
-  if (Fmemq (function, functions))
+  if (!NILP (Fmemq (function, functions)))
     XTS_PARSER (parser)->after_change_functions = Fdelq (function, functions);
   return Qnil;
 }
@@ -2229,8 +2277,6 @@ treesit_predicate_match (Lisp_Object args, struct 
capture_range captures)
 
   Lisp_Object regexp = XCAR (args);
   Lisp_Object capture_name = XCAR (XCDR (args));
-  Lisp_Object text = treesit_predicate_capture_name_to_text (capture_name,
-                                                            captures);
 
   /* It's probably common to get the argument order backwards.  Catch
      this mistake early and show helpful explanation, because Emacs
@@ -2245,6 +2291,9 @@ treesit_predicate_match (Lisp_Object args, struct 
capture_range captures)
              build_pure_c_string ("The second argument to `match' should "
                                   "be a capture name, not a string"));
 
+  Lisp_Object text = treesit_predicate_capture_name_to_text (capture_name,
+                                                            captures);
+
   if (fast_string_match (regexp, text) >= 0)
     return true;
   else
@@ -2568,7 +2617,8 @@ treesit_traverse_child_helper (TSNode node, bool forward, 
bool named)
 }
 
 /* Return true if NODE matches PRED.  PRED can be a string or a
-   function.  This function doesn't check for PRED's type.  */
+   function.  This function assumes PRED is either a string or a
+   function.  */
 static bool
 treesit_traverse_match_predicate (TSNode node, Lisp_Object pred,
                                  Lisp_Object parser)
@@ -2594,19 +2644,18 @@ treesit_traverse_match_predicate (TSNode node, 
Lisp_Object pred,
    return true.  If no node satisfies PRED, return FALSE.  PARSER is
    the parser of ROOT.
 
-   LIMIT is the number of levels we descend in the tree.  If NO_LIMIT
-   is true, LIMIT is ignored.  FORWARD controls the direction in which
-   we traverse the tree, true means forward, false backward.  If NAMED
-   is true, only traverse named nodes, if false, all nodes.  If
-   SKIP_ROOT is true, don't match ROOT.  */
+   LIMIT is the number of levels we descend in the tree.  FORWARD
+   controls the direction in which we traverse the tree, true means
+   forward, false backward.  If NAMED is true, only traverse named
+   nodes, if false, all nodes.  If SKIP_ROOT is true, don't match
+   ROOT.  */
 static bool
 treesit_search_dfs (TSNode *root, Lisp_Object pred, Lisp_Object parser,
-                   bool named, bool forward, ptrdiff_t limit, bool no_limit,
+                   bool named, bool forward, ptrdiff_t limit,
                    bool skip_root)
 {
   /* TSTreeCursor doesn't allow us to move backward, so we can't use
-     it.  We could use limit == -1 to indicate no_limit == true, but
-     separating them is safer.  */
+     it.  */
   TSNode node = *root;
 
   if (!skip_root && treesit_traverse_match_predicate (node, pred, parser))
@@ -2615,7 +2664,7 @@ treesit_search_dfs (TSNode *root, Lisp_Object pred, 
Lisp_Object parser,
       return true;
     }
 
-  if (!no_limit && limit <= 0)
+  if (limit <= 0)
     return false;
   else
     {
@@ -2631,7 +2680,7 @@ treesit_search_dfs (TSNode *root, Lisp_Object pred, 
Lisp_Object parser,
 
          if (!ts_node_is_null (child)
              && treesit_search_dfs (&child, pred, parser, named,
-                                    forward, limit - 1, no_limit, false))
+                                    forward, limit - 1, false))
            {
              *root = child;
              return true;
@@ -2707,7 +2756,8 @@ node's type, or a function that takes a node and returns 
nil/non-nil.
 
 By default, only traverse named nodes, but if ALL is non-nil, traverse
 all nodes.  If BACKWARD is non-nil, traverse backwards.  If LIMIT is
-non-nil, only traverse nodes up to that number of levels down in the tree.
+non-nil, only traverse nodes up to that number of levels down in the
+tree.  If LIMIT is nil, default to 1000.
 
 Return the first matched node, or nil if none matches.  */)
   (Lisp_Object node, Lisp_Object predicate, Lisp_Object backward,
@@ -2719,11 +2769,10 @@ Return the first matched node, or nil if none matches.  
*/)
   CHECK_SYMBOL (all);
   CHECK_SYMBOL (backward);
 
-  ptrdiff_t the_limit = 0;
-  bool no_limit = false;
-  if (NILP (limit))
-    no_limit = true;
-  else
+  /* We use a default limit to 1000.  See bug#59426 for the
+     discussion.  */
+  ptrdiff_t the_limit = 1000;
+  if (!NILP (limit))
     {
       CHECK_FIXNUM (limit);
       the_limit = XFIXNUM (limit);
@@ -2734,7 +2783,7 @@ Return the first matched node, or nil if none matches.  
*/)
   TSNode treesit_node = XTS_NODE (node)->node;
   Lisp_Object parser = XTS_NODE (node)->parser;
   if (treesit_search_dfs (&treesit_node, predicate, parser, NILP (all),
-                         NILP (backward), the_limit, no_limit, false))
+                         NILP (backward), the_limit, false))
     return make_treesit_node (parser, treesit_node);
   else
     return Qnil;
@@ -2797,7 +2846,7 @@ always traverse leaf nodes first, then upwards.  */)
 static void
 treesit_build_sparse_tree (TSTreeCursor *cursor, Lisp_Object parent,
                           Lisp_Object pred, Lisp_Object process_fn,
-                          ptrdiff_t limit, bool no_limit, Lisp_Object parser)
+                          ptrdiff_t limit, Lisp_Object parser)
 {
 
   TSNode node = ts_tree_cursor_current_node (cursor);
@@ -2816,8 +2865,7 @@ treesit_build_sparse_tree (TSTreeCursor *cursor, 
Lisp_Object parent,
       parent = this;
     }
   /* Go through each child.  */
-  if ((no_limit || limit > 0)
-      && ts_tree_cursor_goto_first_child (cursor))
+  if (limit > 0 && ts_tree_cursor_goto_first_child (cursor))
     {
       do
        {
@@ -2825,7 +2873,7 @@ treesit_build_sparse_tree (TSTreeCursor *cursor, 
Lisp_Object parent,
             Then C compilers should be smart enough not to copy NODE
             to stack.  */
          treesit_build_sparse_tree (cursor, parent, pred, process_fn,
-                                    limit - 1, no_limit, parser);
+                                    limit - 1, parser);
        }
       while (ts_tree_cursor_goto_next_sibling (cursor));
       /* Don't forget to come back to this node.  */
@@ -2866,7 +2914,8 @@ If PROCESS-FN is non-nil, it should be a function of one 
argument.  In
 that case, instead of returning the matched nodes, pass each node to
 PROCESS-FN, and use its return value instead.
 
-If non-nil, LIMIT is the number of levels to go down the tree from ROOT.
+If non-nil, LIMIT is the number of levels to go down the tree from
+ROOT.  If LIMIT is nil or omitted, it defaults to 1000.
 
 Each node in the returned tree looks like (NODE . (CHILD ...)).  The
 root of this tree might be nil, if ROOT doesn't match PREDICATE.
@@ -2885,11 +2934,11 @@ a regexp.  */)
 
   if (!NILP (process_fn))
     CHECK_TYPE (FUNCTIONP (process_fn), Qfunctionp, process_fn);
-  ptrdiff_t the_limit = 0;
-  bool no_limit = false;
-  if (NILP (limit))
-    no_limit = true;
-  else
+
+  /* We use a default limit to 1000.  See bug#59426 for the
+     discussion.  */
+  ptrdiff_t the_limit = 1000;
+  if (!NILP (limit))
     {
       CHECK_FIXNUM (limit);
       the_limit = XFIXNUM (limit);
@@ -2901,7 +2950,7 @@ a regexp.  */)
   Lisp_Object parser = XTS_NODE (root)->parser;
   Lisp_Object parent = Fcons (Qnil, Qnil);
   treesit_build_sparse_tree (&cursor, parent, predicate, process_fn,
-                            the_limit, no_limit, parser);
+                            the_limit, parser);
   Fsetcdr (parent, Fnreverse (Fcdr (parent)));
   if (NILP (Fcdr (parent)))
     return Qnil;
diff --git a/src/treesit.h b/src/treesit.h
index 1473126c5b..6f6423ff47 100644
--- a/src/treesit.h
+++ b/src/treesit.h
@@ -56,13 +56,12 @@ struct Lisp_TS_Parser
      this field to true to force tree-sitter to re-parse.  */
   bool need_reparse;
   /* These two positions record the buffer byte position (1-based) of
-     the "visible region" that tree-sitter sees.  Unlike markers,
-     These two positions do not change as the user inserts and deletes
-     text around them.  Before re-parse, we move these positions to
-     match BUF_BEGV_BYTE and BUF_ZV_BYTE.  Note that we don't need to
-     synchronize these positions when retrieving them in a function
-     that involves a node: if the node is not outdated, these
-     positions are synchronized.  */
+     the "visible region" that tree-sitter sees.  Before re-parse, we
+     move these positions to match BUF_BEGV_BYTE and BUF_ZV_BYTE.
+     Note that we don't need to synchronize these positions when
+     retrieving them in a function that involves a node: if the node
+     is not outdated, these positions are synchronized.  See comment
+     (ref:visible-beg-null) in treesit.c for more explanation.  */
   ptrdiff_t visible_beg;
   ptrdiff_t visible_end;
   /* This counter is incremented every time a change is made to the
diff --git a/src/xdisp.c b/src/xdisp.c
index b5f013ea6a..b09aa6ec96 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -3533,6 +3533,33 @@ get_closer_narrowed_begv (struct window *w, ptrdiff_t 
pos)
   return max ((pos / len - 1) * len, BEGV);
 }
 
+ptrdiff_t
+get_locked_narrowing_begv (ptrdiff_t pos)
+{
+  if (long_line_locked_narrowing_region_size <= 0)
+    return BEGV;
+  int len = long_line_locked_narrowing_region_size / 2;
+  int begv = max (pos - len, BEGV);
+  int limit = long_line_locked_narrowing_bol_search_limit;
+  while (limit > 0)
+    {
+      if (begv == BEGV || FETCH_BYTE (CHAR_TO_BYTE (begv) - 1) == '\n')
+       return begv;
+      begv--;
+      limit--;
+    }
+  return begv;
+}
+
+ptrdiff_t
+get_locked_narrowing_zv (ptrdiff_t pos)
+{
+  if (long_line_locked_narrowing_region_size <= 0)
+    return ZV;
+  int len = long_line_locked_narrowing_region_size / 2;
+  return min (pos + len, ZV);
+}
+
 static void
 unwind_narrowed_begv (Lisp_Object point_min)
 {
@@ -4366,18 +4393,20 @@ handle_fontified_prop (struct it *it)
 
       eassert (it->end_charpos == ZV);
 
-      if (current_buffer->long_line_optimizations_p)
+      if (current_buffer->long_line_optimizations_p
+         && long_line_locked_narrowing_region_size > 0)
        {
-         ptrdiff_t begv = it->narrowed_begv;
-         ptrdiff_t zv = it->narrowed_zv;
+         ptrdiff_t begv = it->locked_narrowing_begv;
+         ptrdiff_t zv = it->locked_narrowing_zv;
          ptrdiff_t charpos = IT_CHARPOS (*it);
          if (charpos < begv || charpos > zv)
            {
-             begv = get_narrowed_begv (it->w, charpos);
-             zv = get_narrowed_zv (it->w, charpos);
+             begv = get_locked_narrowing_begv (charpos);
+             zv = get_locked_narrowing_zv (charpos);
            }
-         narrow_to_region_internal (make_fixnum (begv), make_fixnum (zv), 
true);
-         specbind (Qrestrictions_locked, Qt);
+         if (begv != BEG || zv != Z)
+           narrow_to_region_locked (make_fixnum (begv), make_fixnum (zv),
+                                    Qfontification_functions);
        }
 
       /* Don't allow Lisp that runs from 'fontification-functions'
@@ -7435,12 +7464,20 @@ reseat (struct it *it, struct text_pos pos, bool 
force_p)
        {
          it->narrowed_begv = get_narrowed_begv (it->w, window_point (it->w));
          it->narrowed_zv = get_narrowed_zv (it->w, window_point (it->w));
+         it->locked_narrowing_begv
+           = get_locked_narrowing_begv (window_point (it->w));
+         it->locked_narrowing_zv
+           = get_locked_narrowing_zv (window_point (it->w));
        }
       else if ((pos.charpos < it->narrowed_begv || pos.charpos > 
it->narrowed_zv)
                && (!redisplaying_p || it->line_wrap == TRUNCATE))
        {
          it->narrowed_begv = get_narrowed_begv (it->w, pos.charpos);
          it->narrowed_zv = get_narrowed_zv (it->w, pos.charpos);
+         it->locked_narrowing_begv
+           = get_locked_narrowing_begv (window_point (it->w));
+         it->locked_narrowing_zv
+           = get_locked_narrowing_zv (window_point (it->w));
        }
     }
 
@@ -16266,7 +16303,6 @@ do { if (! polling_stopped_here) stop_polling ();       
\
 do { if (polling_stopped_here) start_polling ();       \
        polling_stopped_here = false; } while (false)
 
-
 /* Perhaps in the future avoid recentering windows if it
    is not necessary; currently that causes some problems.  */
 
@@ -16352,6 +16388,8 @@ redisplay_internal (void)
   FOR_EACH_FRAME (tail, frame)
     XFRAME (frame)->already_hscrolled_p = false;
 
+  reset_outermost_narrowings ();
+
  retry:
   /* Remember the currently selected window.  */
   sw = w;
@@ -34576,8 +34614,11 @@ note_mode_line_or_margin_highlight (Lisp_Object 
window, int x, int y,
     }
 #endif /* HAVE_WINDOW_SYSTEM */
 
+  /* CHARPOS can be beyond the last position of STRING due, e.g., to
+     min-width 'display' property.  Fix that, to let all the calls to
+     get-text-property below do their thing.  */
   if (STRINGP (string))
-    pos = make_fixnum (charpos);
+    pos = make_fixnum (min (charpos, SCHARS (string) - 1));
 
   /* Set the help text and mouse pointer.  If the mouse is on a part
      of the mode line without any text (e.g. past the right edge of
@@ -36708,10 +36749,11 @@ fontify a region starting at POS in the current 
buffer, and give
 fontified regions the property `fontified' with a non-nil value.
 
 Note that, when the buffer contains one or more lines whose length is
-above `long-line-threshold', these functions are called with the buffer
-narrowed to a small portion around POS, and the narrowing is locked (see
-`narrow-to-region'), so that these functions cannot use `widen' to gain
-access to other portions of buffer text.  */);
+above `long-line-threshold', these functions are called with the
+buffer narrowed to a small portion around POS (whose size is specified
+by `long-line-locked-narrowing-region-size'), and the narrowing is
+locked (see `narrowing-lock'), so that these functions cannot use
+`widen' to gain access to other portions of buffer text.  */);
   Vfontification_functions = Qnil;
   Fmake_variable_buffer_local (Qfontification_functions);
 
diff --git a/src/xfns.c b/src/xfns.c
index 95092ce05f..36b51a3011 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -8455,10 +8455,10 @@ compute_tip_xy (struct frame *f, Lisp_Object parms, 
Lisp_Object dx,
   int min_x, min_y, max_x, max_y = -1;
 
   /* User-specified position?  */
-  left = Fcdr (Fassq (Qleft, parms));
-  top  = Fcdr (Fassq (Qtop, parms));
-  right = Fcdr (Fassq (Qright, parms));
-  bottom = Fcdr (Fassq (Qbottom, parms));
+  left = CDR (Fassq (Qleft, parms));
+  top  = CDR (Fassq (Qtop, parms));
+  right = CDR (Fassq (Qright, parms));
+  bottom = CDR (Fassq (Qbottom, parms));
 
   /* Move the tooltip window where the mouse pointer is.  Resize and
      show it.  */
@@ -8824,14 +8824,14 @@ Text larger than the specified size is clipped.  */)
          for (tail = parms; CONSP (tail); tail = XCDR (tail))
            {
              elt = XCAR (tail);
-             parm = Fcar (elt);
+             parm = CAR (elt);
              /* The left, top, right and bottom parameters are handled
                 by compute_tip_xy so they can be ignored here.  */
              if (!EQ (parm, Qleft) && !EQ (parm, Qtop)
                  && !EQ (parm, Qright) && !EQ (parm, Qbottom))
                {
                  last = Fassq (parm, tip_last_parms);
-                 if (NILP (Fequal (Fcdr (elt), Fcdr (last))))
+                 if (NILP (Fequal (CDR (elt), CDR (last))))
                    {
                      /* We lost, delete the old tooltip.  */
                      delete = true;
@@ -8852,9 +8852,9 @@ Text larger than the specified size is clipped.  */)
          for (tail = tip_last_parms; CONSP (tail); tail = XCDR (tail))
            {
              elt = XCAR (tail);
-             parm = Fcar (elt);
+             parm = CAR (elt);
              if (!EQ (parm, Qleft) && !EQ (parm, Qtop) && !EQ (parm, Qright)
-                 && !EQ (parm, Qbottom) && !NILP (Fcdr (elt)))
+                 && !EQ (parm, Qbottom) && !NILP (CDR (elt)))
                {
                  /* We lost, delete the old tooltip.  */
                  delete = true;
@@ -8975,8 +8975,8 @@ Text larger than the specified size is clipped.  */)
                                  make_fixnum (w->pixel_height), Qnil,
                                  Qnil);
   /* Add the frame's internal border to calculated size.  */
-  width = XFIXNUM (Fcar (size)) + 2 * FRAME_INTERNAL_BORDER_WIDTH (tip_f);
-  height = XFIXNUM (Fcdr (size)) + 2 * FRAME_INTERNAL_BORDER_WIDTH (tip_f);
+  width = XFIXNUM (CAR (size)) + 2 * FRAME_INTERNAL_BORDER_WIDTH (tip_f);
+  height = XFIXNUM (CDR (size)) + 2 * FRAME_INTERNAL_BORDER_WIDTH (tip_f);
 
   /* Calculate position of tooltip frame.  */
   compute_tip_xy (tip_f, parms, dx, dy, width, height, &root_x, &root_y);
@@ -9728,10 +9728,12 @@ selected frame's display.  */)
   (Lisp_Object time_object, Lisp_Object terminal)
 {
   struct x_display_info *dpyinfo;
-  Time time;
+  uint32_t time;
 
+  /* time should be a 32-bit integer, regardless of what the size of
+     the X type `Time' is on this system.  */
   dpyinfo = check_x_display_info (terminal);
-  CONS_TO_INTEGER (time_object, Time, time);
+  CONS_TO_INTEGER (time_object, uint32_t, time);
 
   x_set_last_user_time_from_lisp (dpyinfo, time);
   return Qnil;
diff --git a/src/xselect.c b/src/xselect.c
index a381fa2352..844ef7220a 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -308,7 +308,7 @@ x_own_selection (Lisp_Object selection_name, Lisp_Object 
selection_value,
        /* We know it's not the CAR, so it's easy.  */
        Lisp_Object rest = dpyinfo->terminal->Vselection_alist;
        for (; CONSP (rest); rest = XCDR (rest))
-         if (EQ (prev_value, Fcar (XCDR (rest))))
+         if (EQ (prev_value, CAR (XCDR (rest))))
            {
              XSETCDR (rest, XCDR (XCDR (rest)));
              break;
@@ -369,7 +369,7 @@ x_get_local_selection (Lisp_Object selection_symbol, 
Lisp_Object target_type,
        specbind (Qinhibit_quit, Qt);
 
       CHECK_SYMBOL (target_type);
-      handler_fn = Fcdr (Fassq (target_type, Vselection_converter_alist));
+      handler_fn = CDR (Fassq (target_type, Vselection_converter_alist));
 
       if (CONSP (handler_fn))
        handler_fn = XCDR (handler_fn);
@@ -1129,14 +1129,14 @@ x_clear_frame_selections (struct frame *f)
   while (CONSP (t->Vselection_alist)
         && EQ (frame, XCAR (XCDR (XCDR (XCDR (XCAR (t->Vselection_alist)))))))
     {
-      selection = Fcar (Fcar (t->Vselection_alist));
+      selection = CAR (CAR (t->Vselection_alist));
 
       if (!x_should_preserve_selection (selection))
        /* Run the `x-lost-selection-functions' abnormal hook.  */
        CALLN (Frun_hook_with_args, Qx_lost_selection_functions,
               selection);
       else
-       lost = Fcons (Fcar (t->Vselection_alist), lost);
+       lost = Fcons (CAR (t->Vselection_alist), lost);
 
       tset_selection_alist (t, XCDR (t->Vselection_alist));
     }
diff --git a/src/xterm.c b/src/xterm.c
index af652a0d85..7eaf59d54b 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -6919,13 +6919,27 @@ x_sync_wait_for_frame_drawn_event (struct frame *f)
                  x_sync_is_frame_drawn_event, (XPointer) f,
                  make_timespec (1, 0)))
     {
-      /* TODO: display this warning in the echo area.  */
-      fprintf (stderr, "Warning: compositing manager spent more than 1 second "
-              "drawing a frame.  Frame synchronization has been disabled\n");
-      FRAME_X_OUTPUT (f)->use_vsync_p = false;
+      /* The first time a draw hangs, treat it as a random fluctuation
+        on the part of the compositor.  If the next draw continues to
+        hang, disable frame synchronization.  */
+      if (FRAME_X_DRAW_JUST_HUNG (f))
+       {
+         fprintf (stderr, "Warning: compositing manager spent more than 1 "
+                  "second drawing a frame.  Frame synchronization has "
+                  "been disabled\n");
+         FRAME_X_OUTPUT (f)->use_vsync_p = false;
 
-      /* Also change the frame parameter to reflect the new state.  */
-      store_frame_param (f, Quse_frame_synchronization, Qnil);
+         /* Also change the frame parameter to reflect the new
+            state.  */
+         store_frame_param (f, Quse_frame_synchronization, Qnil);
+       }
+      else
+       {
+         fprintf (stderr, "Warning: compositing manager spent more than 1 "
+                  "second drawing a frame.  Frame synchronization will be "
+                  "disabled if this happens again\n");
+         FRAME_X_DRAW_JUST_HUNG (f) = true;
+       }
     }
   else
     x_sync_note_frame_times (FRAME_DISPLAY_INFO (f), f, &event);
@@ -7128,8 +7142,26 @@ static void
 x_sync_handle_frame_drawn (struct x_display_info *dpyinfo,
                           XEvent *message, struct frame *f)
 {
+  XSyncValue value, counter;
+
   if (FRAME_OUTER_WINDOW (f) == message->xclient.window)
-    FRAME_X_WAITING_FOR_DRAW (f) = false;
+    {
+      counter = FRAME_X_COUNTER_VALUE (f);
+
+      /* Check that the counter in the message is the same as the
+        counter in the frame.  */
+      XSyncIntsToValue (&value,
+                       message->xclient.data.l[0] & 0xffffffff,
+                       message->xclient.data.l[1] & 0xffffffff);
+
+      if (XSyncValueEqual (value, counter))
+       FRAME_X_WAITING_FOR_DRAW (f) = false;
+
+      /* As long as a _NET_WM_FRAME_DRAWN message arrives, we know
+        that the compositor is still sending events, so avoid timing
+        out.  */
+      FRAME_X_DRAW_JUST_HUNG (f) = false;
+    }
 
   x_sync_note_frame_times (dpyinfo, f, message);
 }
@@ -18621,7 +18653,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                /* Set the provided time as the user time, which is
                   required for SetInputFocus to work correctly after
                   taking the input focus.  */
-               x_display_set_last_user_time (dpyinfo, event->xclient.data.l[1],
+
+               /* Time can be sign extended if retrieved from a client message.
+                  Make sure it is always 32 bits, or systems with 64-bit longs
+                  will crash after 24 days of X server uptime.  (bug#59480) */
+               x_display_set_last_user_time (dpyinfo, (event->xclient.data.l[1]
+                                                       & 0xffffffff),
                                              true, true);
                goto done;
               }
@@ -21425,7 +21462,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                  if (!NILP (tab_bar_arg))
                    inev.ie.arg = tab_bar_arg;
                 }
-            if (FRAME_X_EMBEDDED_P (f))
+
+            if (FRAME_X_EMBEDDED_P (f)
+               && !FRAME_NO_ACCEPT_FOCUS (f))
               xembed_send_message (f, event->xbutton.time,
                                    XEMBED_REQUEST_FOCUS, 0, 0, 0);
           }
@@ -23193,7 +23232,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                        if (!NILP (tab_bar_arg))
                          inev.ie.arg = tab_bar_arg;
                      }
-                 if (FRAME_X_EMBEDDED_P (f))
+
+                 if (FRAME_X_EMBEDDED_P (f)
+                     && !FRAME_NO_ACCEPT_FOCUS (f))
                    xembed_send_message (f, xev->time,
                                         XEMBED_REQUEST_FOCUS, 0, 0, 0);
                }
@@ -25456,6 +25497,17 @@ x_clean_failable_requests (struct x_display_info 
*dpyinfo)
                                    + (last - first));
 }
 
+/* Protect a section of X requests: ignore errors generated by X
+   requests made from now until `x_stop_ignoring_errors'.  Each call
+   must be paired with a call to `x_stop_ignoring_errors', and
+   recursive calls inside the protected section are not allowed.
+
+   The advantage over x_catch_errors followed by
+   x_uncatch_errors_after_check is that this function does not sync to
+   catch errors if requests were made.  It should be used instead of
+   those two functions for catching errors around requests that do not
+   require a reply.  */
+
 void
 x_ignore_errors_for_next_request (struct x_display_info *dpyinfo)
 {
@@ -25463,7 +25515,13 @@ x_ignore_errors_for_next_request (struct 
x_display_info *dpyinfo)
   unsigned long next_request;
 #ifdef HAVE_GTK3
   GdkDisplay *gdpy;
+#endif
+
+  /* This code is not reentrant, so be sure nothing calls it
+     recursively in response to input.  */
+  block_input ();
 
+#ifdef HAVE_GTK3
   /* GTK 3 tends to override our own error handler inside certain
      callbacks, which this can be called from.  Instead of trying to
      restore our own, add a trap for the following requests with
@@ -25532,6 +25590,8 @@ x_stop_ignoring_errors (struct x_display_info *dpyinfo)
   if (gdpy)
     gdk_x11_display_error_trap_pop_ignored (gdpy);
 #endif
+
+  unblock_input ();
 }
 
 /* Undo the last x_catch_errors call.
@@ -27517,9 +27577,14 @@ static void
 x_raise_frame (struct frame *f)
 {
   block_input ();
+
   if (FRAME_VISIBLE_P (f))
-    XRaiseWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f));
-  XFlush (FRAME_X_DISPLAY (f));
+    {
+      XRaiseWindow (FRAME_X_DISPLAY (f),
+                   FRAME_OUTER_WINDOW (f));
+      XFlush (FRAME_X_DISPLAY (f));
+    }
+
   unblock_input ();
 }
 
@@ -27567,8 +27632,6 @@ x_lower_frame (struct frame *f)
     XLowerWindow (FRAME_X_DISPLAY (f),
                  FRAME_OUTER_WINDOW (f));
 
-  XFlush (FRAME_X_DISPLAY (f));
-
 #ifdef HAVE_XWIDGETS
   /* Make sure any X windows owned by xwidget views of the parent
      still display below the lowered frame.  */
@@ -27576,6 +27639,8 @@ x_lower_frame (struct frame *f)
   if (FRAME_PARENT_FRAME (f))
     lower_frame_xwidget_views (FRAME_PARENT_FRAME (f));
 #endif
+
+  XFlush (FRAME_X_DISPLAY (f));
 }
 
 static void
@@ -27826,6 +27891,10 @@ x_focus_frame (struct frame *f, bool noactivate)
   struct x_display_info *dpyinfo;
   Time time;
 
+  /* The code below is not reentrant wrt to dpyinfo->x_focus_frame and
+     friends being set.  */
+  block_input ();
+
   dpyinfo = FRAME_DISPLAY_INFO (f);
 
   if (FRAME_X_EMBEDDED_P (f))
@@ -27856,7 +27925,7 @@ x_focus_frame (struct frame *f, bool noactivate)
             the current workspace, and mapping it, etc, before moving
             input focus to the frame.  */
          x_ewmh_activate_frame (f);
-         return;
+         goto out;
        }
 
       if (NILP (Vx_no_window_manager))
@@ -27890,6 +27959,9 @@ x_focus_frame (struct frame *f, bool noactivate)
                              matter.  */
                           CurrentTime);
     }
+
+ out:
+  unblock_input ();
 }
 
 
diff --git a/src/xterm.h b/src/xterm.h
index c36920081d..ee429e9c68 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -1179,6 +1179,10 @@ struct x_output
      frame.  */
   bool_bf waiting_for_frame_p : 1;
 
+  /* Whether or not Emacs just skipped waiting for a frame due to a
+     timeout.  */
+  bool_bf draw_just_hung_p : 1;
+
 #if !defined USE_GTK && defined HAVE_CLOCK_GETTIME
   /* Whether or not Emacs should wait for the compositing manager to
      draw frames before starting a new frame.  */
@@ -1392,6 +1396,8 @@ extern void x_mark_frame_dirty (struct frame *f);
   FRAME_X_OUTPUT (f)->extended_frame_counter
 #define FRAME_X_WAITING_FOR_DRAW(f)            \
   FRAME_X_OUTPUT (f)->waiting_for_frame_p
+#define FRAME_X_DRAW_JUST_HUNG(f)              \
+  FRAME_X_OUTPUT (f)->draw_just_hung_p
 #define FRAME_X_COUNTER_VALUE(f)               \
   FRAME_X_OUTPUT (f)->current_extended_counter_value
 #endif
diff --git a/test/lib-src/emacsclient-tests.el 
b/test/lib-src/emacsclient-tests.el
index 1302fbe30c..0fa3c6facf 100644
--- a/test/lib-src/emacsclient-tests.el
+++ b/test/lib-src/emacsclient-tests.el
@@ -19,7 +19,9 @@
 
 ;;; Commentary:
 
-;;
+;; Tests for the emacsclient executable.  For tests involving the
+;; interaction between emacsclient and an Emacs server, see
+;; test/lisp/server-tests.el.
 
 ;;; Code:
 
diff --git a/test/lisp/auth-source-pass-tests.el 
b/test/lisp/auth-source-pass-tests.el
index 6e6671efca..1107e09b51 100644
--- a/test/lisp/auth-source-pass-tests.el
+++ b/test/lisp/auth-source-pass-tests.el
@@ -697,29 +697,29 @@ machine Libera.Chat password b
 ;; with slightly more realistic and less legible values.
 
 (ert-deftest auth-source-pass-extra-query-keywords--suffixed-user ()
-  (let ((store (sort (copy-sequence '(("x.com:42/bar" (secret . "a"))
-                                      ("bar@x.com" (secret . "b"))
+  (let ((store (sort (copy-sequence '(("x.com:42/b@r" (secret . "a"))
+                                      ("b@r@x.com" (secret . "b"))
                                       ("x.com" (secret . "?"))
-                                      ("bar@y.org" (secret . "c"))
+                                      ("b@r@y.org" (secret . "c"))
                                       ("fake.com" (secret . "?"))
-                                      ("fake.com/bar" (secret . "d"))
-                                      ("y.org/bar" (secret . "?"))
-                                      ("bar@fake.com" (secret . "e"))))
+                                      ("fake.com/b@r" (secret . "d"))
+                                      ("y.org/b@r" (secret . "?"))
+                                      ("b@r@fake.com" (secret . "e"))))
                      (lambda (&rest _) (zerop (random 2))))))
     (auth-source-pass--with-store store
       (auth-source-pass-enable)
       (let* ((auth-source-pass-extra-query-keywords t)
              (results (auth-source-search :host '("x.com" "fake.com" "y.org")
-                                          :user "bar"
+                                          :user "b@r"
                                           :require '(:user) :max 5)))
         (dolist (result results)
           (setf (plist-get result :secret) (auth-info-password result)))
         (should (equal results
-                       '((:host "x.com" :user "bar" :secret "b")
-                         (:host "x.com" :user "bar" :port "42" :secret "a")
-                         (:host "fake.com" :user "bar" :secret "e")
-                         (:host "fake.com" :user "bar" :secret "d")
-                         (:host "y.org" :user "bar" :secret "c"))))))))
+                       '((:host "x.com" :user "b@r" :secret "b")
+                         (:host "x.com" :user "b@r" :port "42" :secret "a")
+                         (:host "fake.com" :user "b@r" :secret "e")
+                         (:host "fake.com" :user "b@r" :secret "d")
+                         (:host "y.org" :user "b@r" :secret "c"))))))))
 
 ;; This is a more distilled version of `suffixed-user', above.  It
 ;; better illustrates that search order takes precedence over "/user"
diff --git a/test/lisp/calendar/icalendar-tests.el 
b/test/lisp/calendar/icalendar-tests.el
index 2e9353a09b..fa55eea95e 100644
--- a/test/lisp/calendar/icalendar-tests.el
+++ b/test/lisp/calendar/icalendar-tests.el
@@ -61,6 +61,15 @@
        (ert-resource-file filename))
       (buffer-string))))
 
+(defun icalendar-tests--get-error-string-for-export (diary-string)
+  "Call icalendar-export for DIARY-STRING and return resulting error-string."
+  (let ((file (make-temp-file "export.ics")))
+    (with-temp-buffer
+      (insert diary-string)
+      (icalendar-export-region (point-min) (point-max) file))
+    (with-current-buffer (get-buffer "*icalendar-errors*")
+      (buffer-string))))
+
 ;; ======================================================================
 ;; Tests of functions
 ;; ======================================================================
@@ -981,6 +990,40 @@ END:VALARM
 "
    '(2 ((email ("att.one@email.com" "att.two@email.com")) (audio) (display)))))
 
+;; ======================================================================
+;; #bug56241
+;; ======================================================================
+(defun icalendar-tests--diary-float (&rest args)
+  (apply #'diary-float args))
+
+(ert-deftest icalendar-export-bug-56241-dotted-pair ()
+  "See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=56241#5";
+  (let ((icalendar-export-sexp-enumeration-days 366))
+    (mapc (lambda (diary-string)
+            (should (string= "" (icalendar-tests--get-error-string-for-export
+                                 diary-string))))
+          '("%%(diary-float 7 0 1) First Sunday in July 1"
+            "%%(icalendar-tests--diary-float 7 0 1) First Sunday in July 2"))))
+
+
+;; (ert-deftest icalendar-export-bug-56241-sexp-does-not-match ()
+;;   "Reported in #bug56241 -- needs to be fixed!"
+;;   (let ((icalendar-export-sexp-enumeration-days 0))
+;;     (mapc (lambda (diary-string)
+;;             (should (string= "" 
(icalendar-tests--get-error-string-for-export
+;;                                  diary-string))))
+;;           '("%%(diary-float 7 0 1) First Sunday in July 1"
+;;             "%%(icalendar-tests--diary-float 7 0 1) First Sunday in July 
2"))))
+
+(ert-deftest icalendar-export-bug-56241-nested-sexps ()
+  "Reported in #bug56241 -- needs to be fixed!"
+  (let ((icalendar-export-sexp-enumeration-days 366))
+    (mapc (lambda (diary-string)
+            (should (string= "" (icalendar-tests--get-error-string-for-export
+                                 diary-string))))
+          '("%%(= (calendar-day-of-week date) 0) Sunday 1"
+            "%%(= 0 (calendar-day-of-week date)) Sunday 2"))))
+
 ;; ======================================================================
 ;; Import tests
 ;; ======================================================================
@@ -1439,12 +1482,15 @@ DTEND;VALUE=DATE:19570922
 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=09;BYMONTHDAY=21
 SUMMARY:ff birthday (%d years old)")
 
-
-  (icalendar-tests--test-export
-   nil
-   nil
-   "%%(diary-offset '(diary-float t 3 4) 1) asdf"
-   nil)
+  ;; FIXME: this testcase verifies that icalendar-export fails to
+  ;; export the nested sexp. After repairing bug56241 icalendar-export
+  ;; works correctly for this sexp but now the testcase fails.
+  ;; Therefore this testcase is disabled for the time being.
+  ;;  (icalendar-tests--test-export
+  ;;   nil
+  ;;   nil
+  ;;   "%%(diary-offset '(diary-float t 3 4) 1) asdf"
+  ;;   nil)
 
 
   ;; FIXME!
diff --git a/test/lisp/erc/erc-sasl-tests.el b/test/lisp/erc/erc-sasl-tests.el
new file mode 100644
index 0000000000..64593ca270
--- /dev/null
+++ b/test/lisp/erc/erc-sasl-tests.el
@@ -0,0 +1,344 @@
+;;; erc-sasl-tests.el --- Tests for erc-sasl.  -*- lexical-binding:t -*-
+
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ert-x)
+(require 'erc-sasl)
+
+(ert-deftest erc-sasl--mechanism-offered-p ()
+  (let ((erc-sasl--options '((mechanism . external))))
+    (should (erc-sasl--mechanism-offered-p "foo,external"))
+    (should (erc-sasl--mechanism-offered-p "external,bar"))
+    (should (erc-sasl--mechanism-offered-p "foo,external,bar"))
+    (should-not (erc-sasl--mechanism-offered-p "fooexternal"))
+    (should-not (erc-sasl--mechanism-offered-p "externalbar"))))
+
+(ert-deftest erc-sasl--read-password--basic ()
+  (ert-info ("Explicit erc-sasl-password")
+    (let ((erc-sasl--options '((password . "foo"))))
+      (should (string= (erc-sasl--read-password nil) "foo"))))
+
+  (ert-info ("Explicit session password")
+    (let ((erc-session-password "foo")
+          (erc-sasl--options '((password . :password))))
+      (should (string= (erc-sasl--read-password nil) "foo"))))
+
+  (ert-info ("Fallback to prompt skip auth-source")
+    (should-not erc-sasl-auth-source-function)
+    (let ((erc-session-password "bar")
+          (erc-networks--id (erc-networks--id-create nil)))
+      (should (string= (ert-simulate-keys "bar\r"
+                         (erc-sasl--read-password "?"))
+                       "bar"))))
+
+  (ert-info ("Prompt when auth-source fails and `erc-sasl-password' null")
+    (let ((erc-sasl--options '((password)))
+          (erc-sasl-auth-source-function #'ignore))
+      (should (string= (ert-simulate-keys "baz\r"
+                         (erc-sasl--read-password "pwd:"))
+                       "baz")))))
+
+(ert-deftest erc-sasl--read-password--auth-source ()
+  (ert-with-temp-file netrc-file
+    :text (string-join
+           (list
+            ;; If you swap these first 2 lines, *1 below fails
+            "machine FSF.chat port 6697 user bob password sesame"
+            "machine GNU/chat port 6697 user bob password spam"
+            "machine MyHost port irc password 123")
+           "\n")
+    (let* ((auth-sources (list netrc-file))
+           (erc-session-server "irc.gnu.org")
+           (erc-session-port 6697)
+           (erc-networks--id (erc-networks--id-create nil))
+           calls
+           (erc-sasl-auth-source-function
+            (lambda (&rest r)
+              (push r calls)
+              (apply #'erc--auth-source-search r)))
+           erc-server-announced-name ; too early
+           auth-source-do-cache)
+
+      (ert-info ("Symbol as password specifies machine")
+        (let ((erc-sasl--options '((user . "bob") (password . FSF.chat)))
+              (erc-networks--id (make-erc-networks--id)))
+          (should (string= (erc-sasl--read-password nil) "sesame"))
+          (should (equal (pop calls) '(:user "bob" :host "FSF.chat")))))
+
+      (ert-info ("ID for :host and `erc-session-username' for :user") ; *1
+        (let ((erc-session-username "bob")
+              (erc-sasl--options '((user . :user) (password)))
+              (erc-networks--id (erc-networks--id-create 'GNU/chat)))
+          (should (string= (erc-sasl--read-password nil) "spam"))
+          (should (equal (pop calls) '(:user "bob" :host "GNU/chat")))))
+
+      (ert-info ("ID for :host and current nick for :user") ; *1
+        (let ((erc-server-current-nick "bob")
+              (erc-sasl--options '((user . :nick) (password)))
+              (erc-networks--id (erc-networks--id-create 'GNU/chat)))
+          (should (string= (erc-sasl--read-password nil) "spam"))
+          (should (equal (pop calls) '(:user "bob" :host "GNU/chat")))))
+
+      (ert-info ("Symbol as password, entry lacks user field")
+        (let ((erc-server-current-nick "fake")
+              (erc-sasl--options '((user . :nick) (password . MyHost)))
+              (erc-networks--id (erc-networks--id-create 'GNU/chat)))
+          (should (string= (erc-sasl--read-password nil) "123"))
+          (should (equal (pop calls) '(:user "fake" :host "MyHost"))))))))
+
+(ert-deftest erc-sasl-create-client--plain ()
+  (let* ((erc-session-password "password123")
+         (erc-session-username "tester")
+         (erc-sasl--options '((user . :user) (password . :password)))
+         (erc-session-port 1667)
+         (erc-session-server "localhost")
+         (client (erc-sasl--create-client 'plain))
+         (result (sasl-next-step client nil)))
+    (should (equal (format "%S" [erc-sasl--plain-response
+                                 "\0tester\0password123"])
+                   (format "%S" result)))
+    (should (string= (sasl-step-data result) "\0tester\0password123"))
+    (should-not (sasl-next-step client result)))
+  (should (equal (assoc-default "PLAIN" sasl-mechanism-alist) '(sasl-plain))))
+
+(ert-deftest erc-sasl-create-client--external ()
+  (let* ((erc-server-current-nick "tester")
+         (erc-sasl--options '((user . :nick) (password . :password)))
+         (client (erc-sasl--create-client 'external)) ; unused ^
+         (result (sasl-next-step client nil)))
+    (should (equal (format "%S" [ignore nil]) (format "%S" result)))
+    (should-not (sasl-step-data result))
+    (should-not (sasl-next-step client result)))
+  (should-not (member "EXTERNAL" sasl-mechanisms))
+  (should-not (assoc-default "EXTERNAL" sasl-mechanism-alist)))
+
+(ert-deftest erc-sasl-create-client--scram-sha-1 ()
+  (let* ((erc-sasl--options '((user . "jilles") (password . "sesame")
+                              (authzid . "jilles")))
+         (mock-rvs (list "c5RqLCZy0L4fGkKAZ0hujFBs" ""))
+         (sasl-unique-id-function (lambda () (pop mock-rvs)))
+         (client (erc-sasl--create-client 'scram-sha-1))
+         (step (sasl-next-step client nil)))
+    (ert-info ("Client's initial request")
+      (let ((req "n,a=jilles,n=jilles,r=c5RqLCZy0L4fGkKAZ0hujFBs"))
+        (should (equal (format "%S"
+                               `[erc-compat--29-sasl-scram-client-first-message
+                                 ,req])
+                       (format "%S" step)))
+        (should (string= (sasl-step-data step) req))))
+    (ert-info ("Server's initial response")
+      (let ((resp (concat "r=c5RqLCZy0L4fGkKAZ0hujFBsXQoKcivqCw9iDZPSpb,"
+                          "s=5mJO6d4rjCnsBU1X,"
+                          "i=4096"))
+            (req (concat "c=bixhPWppbGxlcyw=,"
+                         "r=c5RqLCZy0L4fGkKAZ0hujFBsXQoKcivqCw9iDZPSpb,"
+                         "p=OVUhgPu8wEm2cDoVLfaHzVUYPWU=")))
+        (sasl-step-set-data step resp)
+        (setq step (sasl-next-step client step))
+        (should (equal (format "%S"
+                               `[erc-sasl--scram-sha-1-client-final-message
+                                 ,req])
+                       (format "%S" step)))
+        (should (string= (sasl-step-data step) req))))
+    (ert-info ("Server's final message")
+      (let ((resp "v=ZWR23c9MJir0ZgfGf5jEtLOn6Ng="))
+        (sasl-step-set-data step resp)
+        (setq step (sasl-next-step client step))
+        (should-not (sasl-step-data step)))))
+  (should (eq sasl-unique-id-function #'sasl-unique-id-function)))
+
+(ert-deftest erc-sasl-create-client--scram-sha-256 ()
+  (unless (featurep 'sasl-scram-sha256)
+    (ert-skip "Emacs lacks sasl-scram-sha256"))
+  (let* ((erc-server-current-nick "jilles")
+         (erc-session-password "sesame")
+         (erc-sasl--options '((user . :nick) (password . :password)
+                              (authzid . "jilles")))
+         (mock-rvs (list "c5RqLCZy0L4fGkKAZ0hujFBs" ""))
+         (sasl-unique-id-function (lambda () (pop mock-rvs)))
+         (client (erc-sasl--create-client 'scram-sha-256))
+         (step (sasl-next-step client nil)))
+    (ert-info ("Client's initial request")
+      (let ((req "n,a=jilles,n=jilles,r=c5RqLCZy0L4fGkKAZ0hujFBs"))
+        (should (equal (format "%S"
+                               `[erc-compat--29-sasl-scram-client-first-message
+                                 ,req])
+                       (format "%S" step)))
+        (should (string= (sasl-step-data step) req))))
+    (ert-info ("Server's initial response")
+      (let ((resp (concat
+                   
"r=c5RqLCZy0L4fGkKAZ0hujFBse697140729d8445fb95ec94ceacb14b3,"
+                   "s=MTk2M2VkMzM5ZmU0NDRiYmI0MzIyOGVhN2YwNzYwNmI=,"
+                   "i=4096"))
+            (req (concat
+                  "c=bixhPWppbGxlcyw=,"
+                  "r=c5RqLCZy0L4fGkKAZ0hujFBse697140729d8445fb95ec94ceacb14b3,"
+                  "p=1vDesVBzJmv0lX0Ae1kHFtdVHkC6j4gISKVqaR45HFg=")))
+        (sasl-step-set-data step resp)
+        (setq step (sasl-next-step client step))
+        (should (equal (format "%S"
+                               `[erc-sasl--scram-sha-256-client-final-message
+                                 ,req])
+                       (format "%S" step)))
+        (should (string= (sasl-step-data step) req))))
+    (ert-info ("Server's final message")
+      (let ((resp "v=gUePTYSZN9xgcE06KSyKO9fUmSwH26qifoapXyEs75s="))
+        (sasl-step-set-data step resp)
+        (setq step (sasl-next-step client step))
+        (should-not (sasl-step-data step)))))
+  (should (eq sasl-unique-id-function #'sasl-unique-id-function)))
+
+(ert-deftest erc-sasl-create-client--scram-sha-256--no-authzid ()
+  (unless (featurep 'sasl-scram-sha256)
+    (ert-skip "Emacs lacks sasl-scram-sha256"))
+  (let* ((erc-server-current-nick "jilles")
+         (erc-session-password "sesame")
+         (erc-sasl--options '((user . :nick) (password . :password) (authzid)))
+         (mock-rvs (list "c5RqLCZy0L4fGkKAZ0hujFBs" ""))
+         (sasl-unique-id-function (lambda () (pop mock-rvs)))
+         (client (erc-sasl--create-client 'scram-sha-256))
+         (step (sasl-next-step client nil)))
+    (ert-info ("Client's initial request")
+      (let ((req "n,,n=jilles,r=c5RqLCZy0L4fGkKAZ0hujFBs"))
+        (should (equal (format "%S"
+                               `[erc-compat--29-sasl-scram-client-first-message
+                                 ,req])
+                       (format "%S" step)))
+        (should (string= (sasl-step-data step) req))))
+    (ert-info ("Server's initial response")
+      (let ((resp (concat
+                   
"r=c5RqLCZy0L4fGkKAZ0hujFBsd4067f0afdb54c3dbd4fe645b84cae37,"
+                   "s=ZTg1MmE1YmFhZGI1NDcyMjk3NzYwZmRjZDM3Y2I1OTM=,"
+                   "i=4096"))
+            (req (concat
+                  "c=biws,"
+                  "r=c5RqLCZy0L4fGkKAZ0hujFBsd4067f0afdb54c3dbd4fe645b84cae37,"
+                  "p=LP4sjJrjJKp5qTsARyZCppXpKLu4FMM284hNESPvGhI=")))
+        (sasl-step-set-data step resp)
+        (setq step (sasl-next-step client step))
+        (should (equal (format "%S"
+                               `[erc-sasl--scram-sha-256-client-final-message
+                                 ,req])
+                       (format "%S" step)))
+        (should (string= (sasl-step-data step) req))))
+    (ert-info ("Server's final message")
+      (let ((resp "v=847WXfnmReGyE1qlq1And6R4bPBNROTZ7EMS/QrJtUM="))
+        (sasl-step-set-data step resp)
+        (setq step (sasl-next-step client step))
+        (should-not (sasl-step-data step)))))
+  (should (eq sasl-unique-id-function #'sasl-unique-id-function)))
+
+(ert-deftest erc-sasl-create-client--scram-sha-512--no-authzid ()
+  (unless (featurep 'sasl-scram-sha256)
+    (ert-skip "Emacs lacks sasl-scram-sha512"))
+  (let* ((erc-server-current-nick "jilles")
+         (erc-session-password "sesame")
+         (erc-sasl--options '((user . :nick) (password . :password) (authzid)))
+         (mock-rvs (list "c5RqLCZy0L4fGkKAZ0hujFBs" ""))
+         (sasl-unique-id-function (lambda () (pop mock-rvs)))
+         (client (erc-sasl--create-client 'scram-sha-512))
+         (step (sasl-next-step client nil)))
+    (ert-info ("Client's initial request")
+      (let ((req "n,,n=jilles,r=c5RqLCZy0L4fGkKAZ0hujFBs"))
+        (should (equal (format "%S"
+                               `[erc-compat--29-sasl-scram-client-first-message
+                                 ,req])
+                       (format "%S" step)))
+        (should (string= (sasl-step-data step) req))))
+    (ert-info ("Server's initial response")
+      (let ((resp (concat
+                   
"r=c5RqLCZy0L4fGkKAZ0hujFBs54c592745ce14e559fcc3f27b15464f6,"
+                   "s=YzMzOWZiY2U0YzcwNDA0M2I4ZGE2M2ZjOTBjODExZTM=,"
+                   "i=4096"))
+            (req (concat
+                  "c=biws,"
+                  "r=c5RqLCZy0L4fGkKAZ0hujFBs54c592745ce14e559fcc3f27b15464f6,"
+                  "p=vMBb9tKxFAfBtel087/GLbo4objAIYr1wM+mFv/jYLKXE"
+                  "NUF0vynm81qQbywQE5ScqFFdAfwYMZq/lj4s0V1OA==")))
+        (sasl-step-set-data step resp)
+        (setq step (sasl-next-step client step))
+        (should (equal (format
+                        "%S" `[erc-sasl--scram-sha-512-client-final-message
+                               ,req])
+                       (format "%S" step)))
+        (should (string= (sasl-step-data step) req))))
+    (ert-info ("Server's final message")
+      (let ((resp (concat "v=Va7NIvt8wCdhvxnv+bZriSxGoto6On5EVnRHO/ece8zs0"
+                          "qpQassdqir1Zlwh3e3EmBq+kcSy+ClNCsbzBpXe/w==")))
+        (sasl-step-set-data step resp)
+        (setq step (sasl-next-step client step))
+        (should-not (sasl-step-data step)))))
+  (should (eq sasl-unique-id-function #'sasl-unique-id-function)))
+
+(defconst erc-sasl-tests-ecdsa-key-file "
+-----BEGIN EC PARAMETERS-----
+BggqhkjOPQMBBw==
+-----END EC PARAMETERS-----
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIIJueQ3W2IrGbe9wKdOI75yGS7PYZSj6W4tg854hlsvmoAoGCCqGSM49
+AwEHoUQDQgAEAZmaVhNSMmV5r8FXPvKuMnqDKyIA9pDHN5TNMfiF3mMeikGgK10W
+IRX9cyi2wdYg9mUUYyh9GKdBCYHGUJAiCA==
+-----END EC PRIVATE KEY-----
+")
+
+(ert-deftest erc-sasl-create-client-ecdsa ()
+  :tags '(:unstable)
+  ;; This is currently useless because it just roundtrips shelling out
+  ;; to pkeyutl.
+  (ert-skip "Placeholder")
+  (unless (executable-find "openssl")
+    (ert-skip "System lacks openssl"))
+  (ert-with-temp-file keyfile
+    :prefix "ecdsa_key"
+    :suffix ".pem"
+    :text erc-sasl-tests-ecdsa-key-file
+    (let* ((erc-server-current-nick "jilles")
+           (erc-sasl--options `((password . ,keyfile)))
+           (client (erc-sasl--create-client 'ecdsa-nist256p-challenge))
+           (step (sasl-next-step client nil)))
+      (ert-info ("Client's initial request")
+        (should (equal (format "%S" [erc-sasl--ecdsa-first "jilles"])
+                       (format "%S" step)))
+        (should (string= (sasl-step-data step) "jilles")))
+      (ert-info ("Server's initial response")
+        (let ((resp (concat "\0\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20"
+                            "\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37")))
+          (sasl-step-set-data step resp)
+          (setq step (sasl-next-step client step))
+          (ert-with-temp-file sigfile
+            :prefix "ecdsa_sig"
+            :suffix ".sig"
+            :text (sasl-step-data step)
+            (with-temp-buffer
+              (set-buffer-multibyte nil)
+              (insert resp)
+              (let ((ec (call-process-region
+                         (point-min) (point-max)
+                         "openssl" 'delete t nil "pkeyutl"
+                         "-inkey" keyfile "-sigfile" sigfile
+                         "-verify")))
+                (unless (zerop ec)
+                  (message "%s" (buffer-string)))
+                (should (zerop ec)))))))
+      (should-not (sasl-next-step client step)))))
+
+;;; erc-sasl-tests.el ends here
diff --git a/test/lisp/erc/erc-scenarios-base-association-nick.el 
b/test/lisp/erc/erc-scenarios-base-association-nick.el
index 3e848be4df..b46c996bc0 100644
--- a/test/lisp/erc/erc-scenarios-base-association-nick.el
+++ b/test/lisp/erc/erc-scenarios-base-association-nick.el
@@ -25,13 +25,24 @@
 
 (eval-when-compile (require 'erc-join))
 
-;; You register a new nick, disconnect, and log back in, but your nick
-;; is not granted, so ERC obtains a backtick'd version.  You open a
-;; query buffer for NickServ, and ERC names it using the net-ID (which
-;; includes the backtick'd nick) as a suffix.  The original
-;; (disconnected) NickServ buffer gets renamed with *its* net-ID as
-;; well.  You then identify to NickServ, and the dead session is no
-;; longer considered distinct.
+;; You register a new nick in a dedicated query buffer, disconnect,
+;; and log back in, but your nick is not granted (maybe you just
+;; turned off SASL).  In any case, ERC obtains a backtick'd version.
+;; You open a query buffer for NickServ, and ERC gives you the
+;; existing one.  And after you identify, all buffers retain their
+;; names, although your net ID has changed internally.
+;;
+;; If ERC would've instead failed (or intentionally refused) to make
+;; the association, you would've ended up with a new NickServ buffer
+;; named after the new net ID as a suffix (based on the backtick'd
+;; nick), for example, NickServ@foonet/tester`.  And the original
+;; (disconnected) NickServ buffer would've gotten suffixed with *its*
+;; net-ID as well, e.g., NickServ@foonet/tester.  And after
+;; identifying, you would've seen ERC merge the two as well as their
+;; server buffers.  While this alternate behavior may arguably be a
+;; more honest reflection of reality, it's also quite inconvenient.
+;; For a clearer example, see the original version of this file
+;; introduced by "Add user-oriented test scenarios for ERC".
 
 (ert-deftest erc-scenarios-base-association-nick-bumped ()
   :tags '(:expensive-test)
@@ -67,30 +78,29 @@
           (funcall expect 5 "ERC finished"))))
 
     (with-current-buffer "foonet"
-      (erc-cmd-RECONNECT))
+      (erc-cmd-RECONNECT)
+      (funcall expect 10 "User modes for tester`"))
 
-    (erc-d-t-wait-for 10 "Nick request rejection prevents reassociation (good)"
-      (get-buffer "foonet/tester`"))
+    (ert-info ("Server buffer reassociated with new nick")
+      (should-not (get-buffer "foonet/tester`")))
 
     (ert-info ("Ask NickServ to change nick")
-      (with-current-buffer "foonet/tester`"
-        (funcall expect 3 "already in use")
+      (with-current-buffer "foonet"
         (funcall expect 3 "debug mode")
         (erc-cmd-QUERY "NickServ"))
 
-      (erc-d-t-wait-for 1 "Dead NickServ query buffer renamed, now qualified"
-        (get-buffer "NickServ@foonet/tester"))
+      (ert-info ( "NickServ buffer reassociated")
+        (should-not (get-buffer "NickServ@foonet/tester`"))
+        (should-not (get-buffer "NickServ@foonet/tester")))
 
-      (with-current-buffer "NickServ@foonet/tester`" ; new one
+      (with-current-buffer "NickServ" ; new one
         (erc-scenarios-common-say "IDENTIFY tester changeme")
-        (funcall expect 5 "You're now logged in as tester")
-        (ert-info ("Original buffer found, reused")
-          (erc-d-t-wait-for 2 (equal (buffer-name) "NickServ")))))
+        (funcall expect 5 "You're now logged in as tester")))
 
-    (ert-info ("Ours is the only NickServ buffer that remains")
+    (ert-info ("Still just one NickServ buffer")
       (should-not (cdr (erc-scenarios-common-buflist "NickServ"))))
 
-    (ert-info ("Visible network ID truncated to one component")
+    (ert-info ("As well as one server buffer")
       (should (not (get-buffer "foonet/tester`")))
       (should (not (get-buffer "foonet/tester")))
       (should (get-buffer "foonet")))))
@@ -135,29 +145,29 @@
     ;; Since we use reconnect, a new buffer won't be created
     ;; TODO add variant with clean `erc' invocation
     (with-current-buffer "foonet"
-      (erc-cmd-RECONNECT))
+      (erc-cmd-RECONNECT)
+      (funcall expect 10 "User modes for dummy"))
 
-    (ert-info ("Server-initiated renick")
-      (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "foonet/dummy"))
-        (should-not (get-buffer "foonet/tester"))
-        (funcall expect 15 "debug mode"))
+    (ert-info ("Server-initiated renick associated correctly")
+      (with-current-buffer "foonet"
+        (funcall expect 15 "debug mode")
+        (should-not (get-buffer "foonet/dummy"))
+        (should-not (get-buffer "foonet/tester")))
 
-      (erc-d-t-wait-for 1 "Old query renamed, now qualified"
-        (get-buffer "bob@foonet/tester"))
+      (ert-info ("Old query reassociated")
+        (should (get-buffer "bob"))
+        (should-not (get-buffer "bob@foonet/tester"))
+        (should-not (get-buffer "bob@foonet/dummy")))
 
-      (with-current-buffer (erc-d-t-wait-for 5 (get-buffer "bob@foonet/dummy"))
+      (with-current-buffer "foonet"
         (erc-cmd-NICK "tester")
-        (ert-info ("Buffers combined")
-          (erc-d-t-wait-for 2 (equal (buffer-name) "bob")))))
+        (funcall expect 5 "You're now logged in as tester")))
 
-    (with-current-buffer "foonet"
-      (funcall expect 5 "You're now logged in as tester"))
-
-    (ert-info ("Ours is the only bob buffer that remains")
+    (ert-info ("Ours is still the only bob buffer that remains")
       (should-not (cdr (erc-scenarios-common-buflist "bob"))))
 
-    (ert-info ("Visible network ID truncated to one component")
-      (should (not (get-buffer "foonet/dummy")))
-      (should (get-buffer "foonet")))))
+    (ert-info ("Visible network ID still truncated to one component")
+      (should (not (get-buffer "foonet/tester")))
+      (should (not (get-buffer "foonet/dummy"))))))
 
 ;;; erc-scenarios-base-association-nick.el ends here
diff --git a/test/lisp/erc/erc-scenarios-base-local-modules.el 
b/test/lisp/erc/erc-scenarios-base-local-modules.el
new file mode 100644
index 0000000000..417705de09
--- /dev/null
+++ b/test/lisp/erc/erc-scenarios-base-local-modules.el
@@ -0,0 +1,243 @@
+;;; erc-scenarios-local-modules.el --- Local modules tests for ERC -*- 
lexical-binding: t -*-
+
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+;;
+;; This file is part of GNU Emacs.
+;;
+;; This program 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.
+;;
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see
+;; <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+;;; Commentary:
+
+;; These tests all use `sasl' because, as of ERC 5.5, it's the one
+;; and only local module.
+
+(require 'ert-x)
+(eval-and-compile
+  (let ((load-path (cons (ert-resource-directory) load-path)))
+    (require 'erc-scenarios-common)))
+
+(require 'erc-sasl)
+
+;; This asserts that a local module's options and its inclusion in
+;; (and absence from) `erc-update-modules' can be let-bound.
+
+(ert-deftest erc-scenarios-base-local-modules--reconnect-let ()
+  :tags '(:expensive-test)
+  (erc-scenarios-common-with-cleanup
+      ((erc-scenarios-common-dialog "sasl")
+       (erc-server-flood-penalty 0.1)
+       (dumb-server (erc-d-run "localhost" t 'plain 'plain))
+       (port (process-contact dumb-server :service))
+       (expect (erc-d-t-make-expecter)))
+
+    (ert-info ("Connect with options let-bound")
+      (with-current-buffer
+          ;; This won't work unless the library is already loaded
+          (let ((erc-modules (cons 'sasl erc-modules))
+                (erc-sasl-mechanism 'plain)
+                (erc-sasl-password "password123"))
+            (erc :server "127.0.0.1"
+                 :port port
+                 :nick "tester"
+                 :user "tester"
+                 :full-name "tester"))
+        (should (string= (buffer-name) (format "127.0.0.1:%d" port)))))
+
+    (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "ExampleOrg"))
+
+      (ert-info ("First connection succeeds")
+        (funcall expect 10 "This server is in debug mode")
+        (erc-cmd-QUIT "")
+        (funcall expect 10 "finished"))
+
+      (should-not (memq 'sasl erc-modules))
+      (erc-d-t-wait-for 10 (not (erc-server-process-alive)))
+      (erc-cmd-RECONNECT)
+
+      (ert-info ("Second connection succeeds")
+        (funcall expect 10 "This server is in debug mode")
+        (erc-cmd-QUIT "")
+        (funcall expect 10 "finished")))))
+
+;; After quitting a session for which `sasl' is enabled, you
+;; disconnect and toggle `erc-sasl-mode' off.  You then reconnect
+;; using an alternate nickname.  You again disconnect and reconnect,
+;; this time immediately, and the mode stays disabled.  Finally, you
+;; once again disconnect, toggle the mode back on, and reconnect.  You
+;; are authenticated successfully, just like in the initial session.
+;;
+;; This is meant to show that a user's local mode settings persist
+;; between sessions.  It also happens to show (in round four, below)
+;; that a server renicking a user on 001 after a 903 is handled just
+;; like a user-initiated renick, although this is not the main thrust.
+
+(ert-deftest erc-scenarios-base-local-modules--mode-persistence ()
+  :tags '(:expensive-test)
+  (erc-scenarios-common-with-cleanup
+      ((erc-scenarios-common-dialog "base/local-modules")
+       (erc-server-flood-penalty 0.1)
+       (dumb-server (erc-d-run "localhost" t 'first 'second 'third 'fourth))
+       (port (process-contact dumb-server :service))
+       (erc-modules (cons 'sasl erc-modules))
+       (expect (erc-d-t-make-expecter))
+       (server-buffer-name (format "127.0.0.1:%d" port)))
+
+    (ert-info ("Round one, initial authentication succeeds as expected")
+      (with-current-buffer (erc :server "127.0.0.1"
+                                :port port
+                                :nick "tester"
+                                :user "tester"
+                                :password "changeme"
+                                :full-name "tester")
+        (should (string= (buffer-name) server-buffer-name))
+        (funcall expect 10 "You are now logged in as tester"))
+
+      (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "foonet"))
+        (funcall expect 10 "This server is in debug mode")
+        (erc-cmd-JOIN "#chan")
+
+        (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan"))
+          (funcall expect 20 "She is Lavinia, therefore must"))
+
+        (erc-cmd-QUIT "")
+        (funcall expect 10 "finished")))
+
+    (ert-info ("Round two, nick rejected, alternate granted")
+      (with-current-buffer "foonet"
+
+        (ert-info ("Toggle mode off, reconnect")
+          (erc-sasl-mode -1)
+          (erc-cmd-RECONNECT))
+
+        (funcall expect 10 "User modes for tester`")
+        (should-not (cdr (erc-scenarios-common-buflist "foonet")))
+        (should (equal (buffer-name) "foonet"))
+        (should-not (cdr (erc-scenarios-common-buflist "#chan")))
+
+        (with-current-buffer "#chan"
+          (funcall expect 10 "Some enigma, some riddle"))
+
+        (erc-cmd-QUIT "")
+        (funcall expect 10 "finished")))
+
+    (ert-info ("Round three, send alternate nick initially")
+      (with-current-buffer "foonet"
+
+        (ert-info ("Keep mode off, reconnect")
+          (should-not erc-sasl-mode)
+          (should (local-variable-p 'erc-sasl-mode))
+          (erc-cmd-RECONNECT))
+
+        (funcall expect 10 "User modes for tester`")
+        (should-not (cdr (erc-scenarios-common-buflist "foonet")))
+        (should (equal (buffer-name) "foonet"))
+        (should-not (cdr (erc-scenarios-common-buflist "#chan")))
+
+        (with-current-buffer "#chan"
+          (funcall expect 10 "Let our reciprocal vows be remembered."))
+
+        (erc-cmd-QUIT "")
+        (funcall expect 10 "finished")))
+
+    (ert-info ("Round four, authenticated successfully again")
+      (with-current-buffer "foonet"
+
+        (ert-info ("Toggle mode on, reconnect")
+          (should-not erc-sasl-mode)
+          (should (local-variable-p 'erc-sasl-mode))
+          (erc-sasl-mode +1)
+          (erc-cmd-RECONNECT))
+
+        (funcall expect 10 "User modes for tester")
+        (should-not (cdr (erc-scenarios-common-buflist "foonet")))
+        (should (equal (buffer-name) "foonet"))
+        (should-not (cdr (erc-scenarios-common-buflist "#chan")))
+
+        (with-current-buffer "#chan"
+          (funcall expect 10 "Well met; good morrow, Titus and Hortensius."))
+
+        (erc-cmd-QUIT "")))))
+
+;; For local modules, the twin toggle commands `erc-FOO-enable' and
+;; `erc-FOO-disable' affect all buffers of a connection, whereas
+;; `erc-FOO-mode' continues to operate only on the current buffer.
+
+(ert-deftest erc-scenarios-base-local-modules--toggle-helpers ()
+  :tags '(:expensive-test)
+  (erc-scenarios-common-with-cleanup
+      ((erc-scenarios-common-dialog "base/local-modules")
+       (erc-server-flood-penalty 0.1)
+       (dumb-server (erc-d-run "localhost" t 'first 'second 'fourth))
+       (port (process-contact dumb-server :service))
+       (erc-modules (cons 'sasl erc-modules))
+       (expect (erc-d-t-make-expecter))
+       (server-buffer-name (format "127.0.0.1:%d" port)))
+
+    (ert-info ("Initial authentication succeeds as expected")
+      (with-current-buffer (erc :server "127.0.0.1"
+                                :port port
+                                :nick "tester"
+                                :user "tester"
+                                :password "changeme"
+                                :full-name "tester")
+        (should (string= (buffer-name) server-buffer-name))
+        (funcall expect 10 "You are now logged in as tester"))
+
+      (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "foonet"))
+        (funcall expect 10 "This server is in debug mode")
+        (erc-cmd-JOIN "#chan")
+
+        (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan"))
+          (funcall expect 20 "She is Lavinia, therefore must"))
+
+        (erc-cmd-QUIT "")
+        (funcall expect 10 "finished")))
+
+    (ert-info ("Disabling works from a target buffer.")
+      (with-current-buffer "#chan"
+        (should erc-sasl-mode)
+        (call-interactively #'erc-sasl-disable)
+        (should-not erc-sasl-mode)
+        (should (local-variable-p 'erc-sasl-mode))
+        (should-not (buffer-local-value 'erc-sasl-mode (get-buffer "foonet")))
+        (erc-cmd-RECONNECT)
+        (with-current-buffer "#chan"
+          (funcall expect 10 "Some enigma, some riddle")
+          (should-not erc-sasl-mode) ; regression
+          (should (local-variable-p 'erc-sasl-mode))))
+
+      (with-current-buffer "foonet"
+        (should (local-variable-p 'erc-sasl-mode))
+        (funcall expect 10 "User modes for tester`")
+        (erc-cmd-QUIT "")
+        (funcall expect 10 "finished")))
+
+    (ert-info ("Enabling works from a target buffer")
+      (with-current-buffer "#chan"
+        (call-interactively #'erc-sasl-enable)
+        (should (local-variable-p 'erc-sasl-mode))
+        (should erc-sasl-mode)
+        (erc-cmd-RECONNECT)
+        (funcall expect 10 "Well met; good morrow, Titus and Hortensius.")
+        (erc-cmd-QUIT ""))
+
+      (with-current-buffer "foonet"
+        (should (local-variable-p 'erc-sasl-mode))
+        (should erc-sasl-mode)
+        (funcall expect 10 "User modes for tester")))))
+
+;;; erc-scenarios-local-modules.el ends here
diff --git a/test/lisp/erc/erc-scenarios-sasl.el 
b/test/lisp/erc/erc-scenarios-sasl.el
new file mode 100644
index 0000000000..6c5e78d0c8
--- /dev/null
+++ b/test/lisp/erc/erc-scenarios-sasl.el
@@ -0,0 +1,144 @@
+;;; erc-scenarios-sasl.el --- SASL tests for ERC -*- lexical-binding: t -*-
+
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+;;
+;; This file is part of GNU Emacs.
+;;
+;; This program 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.
+;;
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see
+;; <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert-x)
+(eval-and-compile
+  (let ((load-path (cons (ert-resource-directory) load-path)))
+    (require 'erc-scenarios-common)))
+
+(require 'erc-sasl)
+
+(ert-deftest erc-scenarios-sasl--plain ()
+  :tags '(:expensive-test)
+  (erc-scenarios-common-with-cleanup
+      ((erc-scenarios-common-dialog "sasl")
+       (erc-server-flood-penalty 0.1)
+       (dumb-server (erc-d-run "localhost" t 'plain))
+       (port (process-contact dumb-server :service))
+       (erc-modules (cons 'sasl erc-modules))
+       (erc-sasl-password "password123")
+       (expect (erc-d-t-make-expecter)))
+
+    (ert-info ("Connect")
+      (with-current-buffer (erc :server "127.0.0.1"
+                                :port port
+                                :nick "tester"
+                                :user "tester"
+                                :full-name "tester")
+        (should (string= (buffer-name) (format "127.0.0.1:%d" port)))))
+
+    (ert-info ("Notices received")
+      (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "ExampleOrg"))
+        (funcall expect 10 "This server is in debug mode")
+        ;; Regression "\0\0\0\0 ..." caused by (fillarray passphrase 0)
+        (should (string= erc-sasl-password "password123"))))))
+
+(ert-deftest erc-scenarios-sasl--external ()
+  :tags '(:expensive-test)
+  (erc-scenarios-common-with-cleanup
+      ((erc-scenarios-common-dialog "sasl")
+       (erc-server-flood-penalty 0.1)
+       (dumb-server (erc-d-run "localhost" t 'external))
+       (port (process-contact dumb-server :service))
+       (erc-modules (cons 'sasl erc-modules))
+       (erc-sasl-mechanism 'external)
+       (expect (erc-d-t-make-expecter)))
+
+    (ert-info ("Connect")
+      (with-current-buffer (erc :server "127.0.0.1"
+                                :port port
+                                :nick "tester"
+                                :user "tester"
+                                :full-name "tester")
+        (should (string= (buffer-name) (format "127.0.0.1:%d" port)))))
+
+    (ert-info ("Notices received")
+      (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "ExampleOrg"))
+        (funcall expect 10 "Authentication successful")
+        (funcall expect 10 "This server is in debug mode")))))
+
+(ert-deftest erc-scenarios-sasl--plain-fail ()
+  :tags '(:expensive-test)
+  (erc-scenarios-common-with-cleanup
+      ((erc-scenarios-common-dialog "sasl")
+       (erc-server-flood-penalty 0.1)
+       (dumb-server (erc-d-run "localhost" t 'plain-failed))
+       (port (process-contact dumb-server :service))
+       (erc-modules (cons 'sasl erc-modules))
+       (erc-sasl-password "wrong")
+       (erc-sasl-mechanism 'plain)
+       (expect (erc-d-t-make-expecter))
+       (buf nil))
+
+    (ert-info ("Connect")
+      (setq buf (erc :server "127.0.0.1"
+                     :port port
+                     :nick "tester"
+                     :user "tester"
+                     :full-name "tester"))
+      (let ((err (should-error
+                  (with-current-buffer buf
+                    (funcall expect 20 "Connection failed!")))))
+        (should (string-search "please review" (cadr err)))
+        (with-current-buffer buf
+          (funcall expect 10 "Opening connection")
+          (funcall expect 20 "SASL authentication failed")
+          (should-not (erc-server-process-alive)))))))
+
+(defun erc-scenarios--common--sasl (mech)
+  (erc-scenarios-common-with-cleanup
+      ((erc-scenarios-common-dialog "sasl")
+       (erc-server-flood-penalty 0.1)
+       (dumb-server (erc-d-run "localhost" t mech))
+       (port (process-contact dumb-server :service))
+       (erc-modules (cons 'sasl erc-modules))
+       (erc-sasl-user :nick)
+       (erc-sasl-mechanism mech)
+       (mock-rvs (list "c5RqLCZy0L4fGkKAZ0hujFBs" ""))
+       (sasl-unique-id-function (lambda () (pop mock-rvs)))
+       (expect (erc-d-t-make-expecter)))
+
+    (ert-info ("Connect")
+      (with-current-buffer (erc :server "127.0.0.1"
+                                :port port
+                                :nick "jilles"
+                                :password "sesame"
+                                :full-name "jilles")
+        (should (string= (buffer-name) (format "127.0.0.1:%d" port)))))
+
+    (ert-info ("Notices received")
+      (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "jaguar"))
+        (funcall expect 10 "Found your hostname")
+        (funcall expect 20 "marked as being away")))))
+
+(ert-deftest erc-scenarios-sasl--scram-sha-1 ()
+  :tags '(:expensive-test)
+  (let ((erc-sasl-authzid "jilles"))
+    (erc-scenarios--common--sasl 'scram-sha-1)))
+
+(ert-deftest erc-scenarios-sasl--scram-sha-256 ()
+  :tags '(:expensive-test)
+  (unless (featurep 'sasl-scram-sha256)
+    (ert-skip "Emacs lacks sasl-scram-sha256"))
+  (erc-scenarios--common--sasl 'scram-sha-256))
+
+;;; erc-scenarios-sasl.el ends here
diff --git a/test/lisp/erc/erc-services-tests.el 
b/test/lisp/erc/erc-services-tests.el
index 7ff2e36e77..2547c5e01a 100644
--- a/test/lisp/erc/erc-services-tests.el
+++ b/test/lisp/erc/erc-services-tests.el
@@ -62,9 +62,13 @@
                            :x ("x")
                            :require (:secret))))))
 
+(defun erc-services-tests--wrap-search (s)
+  (lambda (&rest r) (erc--unfun (apply s r))))
+
 ;; Some of the following may be related to bug#23438.
 
 (defun erc-services-tests--auth-source-standard (search)
+  (setq search (erc-services-tests--wrap-search search))
 
   (ert-info ("Session wins")
     (let ((erc-session-server "irc.gnu.org")
@@ -93,6 +97,7 @@
       (should (string= (funcall search :user "#chan") "baz")))))
 
 (defun erc-services-tests--auth-source-announced (search)
+  (setq search (erc-services-tests--wrap-search search))
   (let* ((erc--isupport-params (make-hash-table))
          (erc-server-parameters '(("CHANTYPES" . "&#")))
          (erc--target (erc--target-from-string "&chan")))
@@ -124,6 +129,7 @@
           (should (string= (funcall search :user "#chan") "foo")))))))
 
 (defun erc-services-tests--auth-source-overrides (search)
+  (setq search (erc-services-tests--wrap-search search))
   (let* ((erc-session-server "irc.gnu.org")
          (erc-server-announced-name "my.gnu.org")
          (erc-network 'GNU.chat)
@@ -537,18 +543,20 @@
            (erc-network 'FSF.chat)
            (erc-server-current-nick "tester")
            (erc-networks--id (erc-networks--id-create nil))
-           (erc-session-port 6697))
+           (erc-session-port 6697)
+           (search (erc-services-tests--wrap-search
+                    #'erc-nickserv-get-password)))
 
       (ert-info ("Lookup custom option")
-        (should (string= (erc-nickserv-get-password "alice") "foo")))
+        (should (string= (funcall search "alice") "foo")))
 
       (ert-info ("Auth source")
         (ert-info ("Network")
-          (should (string= (erc-nickserv-get-password "bob") "sesame")))
+          (should (string= (funcall search "bob") "sesame")))
 
         (ert-info ("Network ID")
           (let ((erc-networks--id (erc-networks--id-create 'GNU/chat)))
-            (should (string= (erc-nickserv-get-password "bob") "spam")))))
+            (should (string= (funcall search "bob") "spam")))))
 
       (ert-info ("Read input")
         (should (string=
diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el
index ff5d802697..4d0d69cd7b 100644
--- a/test/lisp/erc/erc-tests.el
+++ b/test/lisp/erc/erc-tests.el
@@ -530,6 +530,28 @@
   (when noninteractive
     (kill-buffer "*#fake*")))
 
+(ert-deftest erc--debug-irc-protocol-mask-secrets ()
+  (should-not erc-debug-irc-protocol)
+  (should erc--debug-irc-protocol-mask-secrets)
+  (with-temp-buffer
+    (setq erc-server-process (start-process "fake" (current-buffer) "true")
+          erc-server-current-nick "tester"
+          erc-session-server "myproxy.localhost"
+          erc-session-port 6667)
+    (let ((inhibit-message noninteractive))
+      (erc-toggle-debug-irc-protocol)
+      (erc-log-irc-protocol
+       (concat "PASS :" (erc--unfun (lambda () "changeme")) "\r\n")
+       'outgoing)
+      (set-process-query-on-exit-flag erc-server-process nil))
+    (with-current-buffer "*erc-protocol*"
+      (goto-char (point-min))
+      (search-forward "\r\n\r\n")
+      (search-forward "myproxy.localhost:6667 >> PASS :????????" (pos-eol)))
+    (when noninteractive
+      (kill-buffer "*erc-protocol*")
+      (should-not erc-debug-irc-protocol))))
+
 (ert-deftest erc-log-irc-protocol ()
   (should-not erc-debug-irc-protocol)
   (with-temp-buffer
@@ -1178,4 +1200,160 @@
     (kill-buffer "baznet")
     (kill-buffer "#chan")))
 
+(ert-deftest erc-migrate-modules ()
+  (should (equal (erc-migrate-modules '(autojoin timestamp button))
+                 '(autojoin stamp button)))
+  ;; Default unchanged
+  (should (equal (erc-migrate-modules erc-modules) erc-modules)))
+
+(ert-deftest erc--update-modules ()
+  (let (calls
+        erc-modules
+        erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+    (cl-letf (((symbol-function 'require)
+               (lambda (s &rest _) (push s calls)))
+
+              ;; Local modules
+              ((symbol-function 'erc-fake-bar-mode)
+               (lambda (n) (push (cons 'fake-bar n) calls)))
+
+              ;; Global modules
+              ((symbol-function 'erc-fake-foo-mode)
+               (lambda (n) (push (cons 'fake-foo n) calls)))
+              ((get 'erc-fake-foo-mode 'standard-value) 'ignore)
+              ((symbol-function 'erc-autojoin-mode)
+               (lambda (n) (push (cons 'autojoin n) calls)))
+              ((get 'erc-autojoin-mode 'standard-value) 'ignore)
+              ((symbol-function 'erc-networks-mode)
+               (lambda (n) (push (cons 'networks n) calls)))
+              ((get 'erc-networks-mode 'standard-value) 'ignore)
+              ((symbol-function 'erc-completion-mode)
+               (lambda (n) (push (cons 'completion n) calls)))
+              ((get 'erc-completion-mode 'standard-value) 'ignore))
+
+      (ert-info ("Local modules")
+        (setq erc-modules '(fake-foo fake-bar))
+        (should (equal (erc--update-modules) '(erc-fake-bar-mode)))
+        ;; Bar the feature is still required but the mode is not activated
+        (should (equal (nreverse calls)
+                       '(erc-fake-foo (fake-foo . 1) erc-fake-bar)))
+        (setq calls nil))
+
+      (ert-info ("Module name overrides")
+        (setq erc-modules '(completion autojoin networks))
+        (should-not (erc--update-modules)) ; no locals
+        (should (equal (nreverse calls) '( erc-pcomplete (completion . 1)
+                                           erc-join (autojoin . 1)
+                                           erc-networks (networks . 1))))
+        (setq calls nil)))))
+
+(ert-deftest erc--merge-local-modes ()
+
+  (ert-info ("No existing modes")
+    (let ((old '((a) (b . t)))
+          (new '(erc-c-mode erc-d-mode)))
+      (should (equal (erc--merge-local-modes new old)
+                     '((erc-c-mode erc-d-mode))))))
+
+  (ert-info ("Active existing added, inactive existing removed, deduped")
+    (let ((old '((a) (erc-b-mode) (c . t) (erc-d-mode . t) (erc-e-mode . t)))
+          (new '(erc-b-mode erc-d-mode)))
+      (should (equal (erc--merge-local-modes new old)
+                     '((erc-d-mode erc-e-mode) . (erc-b-mode)))))))
+
+(ert-deftest define-erc-module--global ()
+  (let ((global-module '(define-erc-module mname malias
+                          "Some docstring"
+                          ((ignore a) (ignore b))
+                          ((ignore c) (ignore d)))))
+
+    (should (equal (macroexpand global-module)
+                   `(progn
+
+                      (define-minor-mode erc-mname-mode
+                        "Toggle ERC mname mode.
+With a prefix argument ARG, enable mname if ARG is positive,
+and disable it otherwise.  If called from Lisp, enable the mode
+if ARG is omitted or nil.
+Some docstring"
+                        :global t
+                        :group 'erc-mname
+                        (if erc-mname-mode
+                            (erc-mname-enable)
+                          (erc-mname-disable)))
+
+                      (defun erc-mname-enable ()
+                        "Enable ERC mname mode."
+                        (interactive)
+                        (cl-pushnew 'mname erc-modules)
+                        (setq erc-mname-mode t)
+                        (ignore a) (ignore b))
+
+                      (defun erc-mname-disable ()
+                        "Disable ERC mname mode."
+                        (interactive)
+                        (setq erc-modules (delq 'mname erc-modules))
+                        (setq erc-mname-mode nil)
+                        (ignore c) (ignore d))
+
+                      (defalias 'erc-malias-mode #'erc-mname-mode)
+
+                      (put 'erc-mname-mode 'definition-name 'mname)
+                      (put 'erc-mname-enable 'definition-name 'mname)
+                      (put 'erc-mname-disable 'definition-name 'mname))))))
+
+(ert-deftest define-erc-module--local ()
+  (let* ((global-module '(define-erc-module mname malias
+                           "Some docstring"
+                           ((ignore a) (ignore b))
+                           ((ignore c) (ignore d))
+                           'local))
+         (got (macroexpand global-module))
+         (arg-en (cadr (nth 2 (nth 2 got))))
+         (arg-dis (cadr (nth 2 (nth 3 got)))))
+
+    (should (equal got
+                   `(progn
+                      (define-minor-mode erc-mname-mode
+                        "Toggle ERC mname mode.
+With a prefix argument ARG, enable mname if ARG is positive,
+and disable it otherwise.  If called from Lisp, enable the mode
+if ARG is omitted or nil.
+Some docstring"
+                        :global nil
+                        :group 'erc-mname
+                        (if erc-mname-mode
+                            (erc-mname-enable)
+                          (erc-mname-disable)))
+
+                      (defun erc-mname-enable (&optional ,arg-en)
+                        "Enable ERC mname mode.
+With ARG, do so in all buffers for the current connection."
+                        (interactive "p")
+                        (when (derived-mode-p 'erc-mode)
+                          (if ,arg-en
+                              (erc-with-all-buffers-of-server
+                                  erc-server-process nil
+                                (erc-mname-enable))
+                            (setq erc-mname-mode t)
+                            (ignore a) (ignore b))))
+
+                      (defun erc-mname-disable (&optional ,arg-dis)
+                        "Disable ERC mname mode.
+With ARG, do so in all buffers for the current connection."
+                        (interactive "p")
+                        (when (derived-mode-p 'erc-mode)
+                          (if ,arg-dis
+                              (erc-with-all-buffers-of-server
+                                  erc-server-process nil
+                                (erc-mname-disable))
+                            (setq erc-mname-mode nil)
+                            (ignore c) (ignore d))))
+
+                      (defalias 'erc-malias-mode #'erc-mname-mode)
+
+                      (put 'erc-mname-mode 'definition-name 'mname)
+                      (put 'erc-mname-enable 'definition-name 'mname)
+                      (put 'erc-mname-disable 'definition-name 'mname))))))
+
 ;;; erc-tests.el ends here
diff --git a/test/lisp/erc/resources/base/local-modules/first.eld 
b/test/lisp/erc/resources/base/local-modules/first.eld
new file mode 100644
index 0000000000..f9181a80fb
--- /dev/null
+++ b/test/lisp/erc/resources/base/local-modules/first.eld
@@ -0,0 +1,53 @@
+;; -*- mode: lisp-data; -*-
+((cap 10 "CAP REQ :sasl"))
+((nick 1 "NICK tester"))
+((user 1 "USER tester 0 * :tester"))
+
+((authenticate 5 "AUTHENTICATE PLAIN")
+ (0.0 ":irc.foonet.org CAP * ACK sasl")
+ (0.0 "AUTHENTICATE +"))
+
+((authenticate 5 "AUTHENTICATE AHRlc3RlcgBjaGFuZ2VtZQ==")
+ (0.0 ":irc.foonet.org 900 * * tester :You are now logged in as tester")
+ (0.01 ":irc.foonet.org 903 * :Authentication successful"))
+
+((cap 3.2 "CAP END")
+ (0.0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester")
+ (0.0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running 
version ergo-v2.8.0")
+ (0.2 ":irc.foonet.org 003 tester :This server was created Sun, 20 Nov 2022 
23:10:36 UTC")
+ (0.0 ":irc.foonet.org 004 tester irc.foonet.org ergo-v2.8.0 BERTZios 
CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0.0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii 
CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# 
ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this 
server")
+ (0.0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES 
MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ 
TARGMAX=NAMES:1,LIST:1,KICK:,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100
 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server")
+ (0.0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this 
server")
+ (0.0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 
server(s)")
+ (0.0 ":irc.foonet.org 252 tester 0 :IRC Operators online")
+ (0.0 ":irc.foonet.org 253 tester 0 :unregistered connections")
+ (0.0 ":irc.foonet.org 254 tester 1 :channels formed")
+ (0.0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers")
+ (0.0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3")
+ (0.0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3")
+ (0.0 ":irc.foonet.org 422 tester :MOTD File is missing")
+ (0.0 ":irc.foonet.org 221 tester +i")
+ (0.0 ":irc.foonet.org NOTICE tester :This server is in debug mode and is 
logging all user I/O. If you do not wish for everything you send to be readable 
by the server owner(s), please disconnect."))
+
+((mode 10 "MODE tester +i")
+ (0.02 ":irc.foonet.org 221 tester +i"))
+
+((join 10 "JOIN #chan")
+ (0.00 ":tester!~u@u9iqi96sfwk9s.irc JOIN #chan")
+ (0.06 ":irc.foonet.org 353 tester = #chan :@bob alice tester")
+ (0.01 ":irc.foonet.org 366 tester #chan :End of NAMES list")
+ (0.02 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :tester, welcome!")
+ (0.01 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :tester, welcome!")
+ (0.04 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :bob: Either your 
unparagoned mistress is dead, or she's outprized by a trifle."))
+
+((mode 12 "MODE #chan")
+ (0.00 ":irc.foonet.org 324 tester #chan +nt")
+ (0.02 ":irc.foonet.org 329 tester #chan 1668985854")
+ (0.98 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :alice: Come, you are a 
tedious fool: to the purpose. What was done to Elbow's wife, that he hath cause 
to complain of ? Come me to what was done to her.")
+ (0.01 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :bob: She is Lavinia, 
therefore must be lov'd."))
+
+((quit 10 "QUIT :\2ERC\2")
+ (0.02 ":tester!~u@u9iqi96sfwk9s.irc QUIT :Quit"))
+
+((drop 0 DROP))
diff --git a/test/lisp/erc/resources/base/local-modules/fourth.eld 
b/test/lisp/erc/resources/base/local-modules/fourth.eld
new file mode 100644
index 0000000000..fd6d62b6cc
--- /dev/null
+++ b/test/lisp/erc/resources/base/local-modules/fourth.eld
@@ -0,0 +1,53 @@
+;; -*- mode: lisp-data; -*-
+((cap 10 "CAP REQ :sasl"))
+((nick 10 "NICK tester`"))
+((user 10 "USER tester 0 * :tester"))
+
+((authenticate 10 "AUTHENTICATE PLAIN")
+ (0.0 ":irc.foonet.org CAP * ACK sasl")
+ (0.0 "AUTHENTICATE +"))
+
+((authenticate 10 "AUTHENTICATE AHRlc3RlcgBjaGFuZ2VtZQ==")
+ (0.00 ":irc.foonet.org 900 * * tester :You are now logged in as tester")
+ (0.01 ":irc.foonet.org 903 * :Authentication successful"))
+
+((cap 10 "CAP END")
+ (0.00 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester")
+ (0.01 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running 
version ergo-v2.8.0")
+ (0.01 ":irc.foonet.org 003 tester :This server was created Sun, 20 Nov 2022 
23:10:36 UTC")
+ (0.01 ":irc.foonet.org 004 tester irc.foonet.org ergo-v2.8.0 BERTZios 
CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0.13 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii 
CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# 
ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this 
server")
+ (0.01 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES 
MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ 
TARGMAX=NAMES:1,LIST:1,KICK:,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100
 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server")
+ (0.03 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by 
this server")
+ (0.00 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 
server(s)")
+ (0.00 ":irc.foonet.org 252 tester 0 :IRC Operators online")
+ (0.00 ":irc.foonet.org 253 tester 0 :unregistered connections")
+ (0.00 ":irc.foonet.org 254 tester 1 :channels formed")
+ (0.00 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers")
+ (0.00 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3")
+ (0.00 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3")
+ (0.03 ":irc.foonet.org 422 tester :MOTD File is missing")
+ (0.02 ":irc.foonet.org 221 tester +i")
+ (0.00 ":irc.foonet.org NOTICE tester :This server is in debug mode and is 
logging all user I/O. If you do not wish for everything you send to be readable 
by the server owner(s), please disconnect."))
+
+((mode 10 "MODE tester +i")
+ (0.0 ":irc.foonet.org 221 tester +i"))
+
+((join 10 "JOIN #chan")
+ (0.00 ":tester!~u@u9iqi96sfwk9s.irc JOIN #chan")
+ (0.09 ":irc.foonet.org 353 tester = #chan :alice tester @bob")
+ (0.01 ":irc.foonet.org 366 tester #chan :End of NAMES list")
+ (0.00 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :tester, welcome!")
+ (0.00 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :tester, welcome!")
+ (0.03 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :bob: And both shall cease, 
without your remedy.")
+ (0.02 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :alice: Nay, tarry; I'll go 
along with thee: I can tell thee pretty tales of the duke."))
+
+((mode 10 "MODE #chan")
+ (0.00 ":irc.foonet.org 324 tester #chan +nt")
+ (0.01 ":irc.foonet.org 329 tester #chan 1668985854")
+ (0.03 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :bob: Do: I'll take the 
sacrament on't, how and which way you will.")
+ (0.00 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :alice: Worthy Macbeth, we 
stay upon your leisure.")
+ (0.00 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :bob: Well met; good morrow, 
Titus and Hortensius."))
+
+((quit 10 "QUIT :\2ERC\2")
+ (0.03 ":tester!~u@u9iqi96sfwk9s.irc QUIT :Quit"))
diff --git a/test/lisp/erc/resources/base/local-modules/second.eld 
b/test/lisp/erc/resources/base/local-modules/second.eld
new file mode 100644
index 0000000000..a96103b2aa
--- /dev/null
+++ b/test/lisp/erc/resources/base/local-modules/second.eld
@@ -0,0 +1,47 @@
+;; -*- mode: lisp-data; -*-
+((pass 10 "PASS :changeme"))
+((nick 1 "NICK tester"))
+((user 1 "USER tester 0 * :tester")
+ (0.0 ":irc.foonet.org 433 * tester :Nickname is reserved by a different 
account"))
+
+((nick 10 "NICK tester`")
+ (0.01 ":irc.foonet.org FAIL NICK NICKNAME_RESERVED tester :Nickname is 
reserved by a different account")
+ (0.06 ":irc.foonet.org 001 tester` :Welcome to the foonet IRC Network 
tester`")
+ (0.01 ":irc.foonet.org 002 tester` :Your host is irc.foonet.org, running 
version ergo-v2.8.0")
+ (0.01 ":irc.foonet.org 003 tester` :This server was created Sun, 20 Nov 2022 
23:10:36 UTC")
+ (0.01 ":irc.foonet.org 004 tester` irc.foonet.org ergo-v2.8.0 BERTZios 
CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0.01 ":irc.foonet.org 005 tester` AWAYLEN=390 BOT=B CASEMAPPING=ascii 
CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# 
ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this 
server")
+ (0.01 ":irc.foonet.org 005 tester` MAXLIST=beI:60 MAXTARGETS=4 MODES 
MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ 
TARGMAX=NAMES:1,LIST:1,KICK:,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100
 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server")
+ (0.01 ":irc.foonet.org 005 tester` draft/CHATHISTORY=100 :are supported by 
this server")
+ (0.00 ":irc.foonet.org 251 tester` :There are 0 users and 3 invisible on 1 
server(s)")
+ (0.00 ":irc.foonet.org 252 tester` 0 :IRC Operators online")
+ (0.02 ":irc.foonet.org 253 tester` 0 :unregistered connections")
+ (0.00 ":irc.foonet.org 254 tester` 1 :channels formed")
+ (0.00 ":irc.foonet.org 255 tester` :I have 3 clients and 0 servers")
+ (0.00 ":irc.foonet.org 265 tester` 3 3 :Current local users 3, max 3")
+ (0.00 ":irc.foonet.org 266 tester` 3 3 :Current global users 3, max 3")
+ (0.00 ":irc.foonet.org 422 tester` :MOTD File is missing")
+ (0.02 ":irc.foonet.org 221 tester` +i")
+ (0.00 ":irc.foonet.org NOTICE tester` :This server is in debug mode and is 
logging all user I/O. If you do not wish for everything you send to be readable 
by the server owner(s), please disconnect."))
+
+((mode 12 "MODE tester` +i")
+ (0.0 ":irc.foonet.org 221 tester` +i"))
+
+((join 10 "JOIN #chan")
+ (0.00 ":tester`!~u@u9iqi96sfwk9s.irc JOIN #chan")
+ (0.08 ":irc.foonet.org 353 tester` = #chan :@bob alice tester`")
+ (0.01 ":irc.foonet.org 366 tester` #chan :End of NAMES list")
+ (0.00 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :tester`, welcome!")
+ (0.01 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :tester`, welcome!")
+ (0.05 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :alice: And Jove, for your 
love, would infringe an oath."))
+
+((mode 10 "MODE #chan")
+ (0.00 ":irc.foonet.org 324 tester` #chan +nt")
+ (0.02 ":irc.foonet.org 329 tester` #chan 1668985854")
+ (0.07 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :bob: To you that know them 
not. This to my mother.")
+ (0.00 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :alice: Some enigma, some 
riddle: come, thy l'envoy; begin."))
+
+((quit 1 "QUIT :\2ERC\2")
+ (0.03 ":tester`!~u@u9iqi96sfwk9s.irc QUIT"))
+
+((drop 0 DROP))
diff --git a/test/lisp/erc/resources/base/local-modules/third.eld 
b/test/lisp/erc/resources/base/local-modules/third.eld
new file mode 100644
index 0000000000..19bdd6efcc
--- /dev/null
+++ b/test/lisp/erc/resources/base/local-modules/third.eld
@@ -0,0 +1,43 @@
+;; -*- mode: lisp-data; -*-
+((pass 10 "PASS :changeme"))
+((nick 1 "NICK tester`"))
+((user 1 "USER tester 0 * :tester")
+ (0.06 ":irc.foonet.org 001 tester` :Welcome to the foonet IRC Network 
tester`")
+ (0.01 ":irc.foonet.org 002 tester` :Your host is irc.foonet.org, running 
version ergo-v2.8.0")
+ (0.01 ":irc.foonet.org 003 tester` :This server was created Sun, 20 Nov 2022 
23:10:36 UTC")
+ (0.01 ":irc.foonet.org 004 tester` irc.foonet.org ergo-v2.8.0 BERTZios 
CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0.01 ":irc.foonet.org 005 tester` AWAYLEN=390 BOT=B CASEMAPPING=ascii 
CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# 
ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this 
server")
+ (0.01 ":irc.foonet.org 005 tester` MAXLIST=beI:60 MAXTARGETS=4 MODES 
MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ 
TARGMAX=NAMES:1,LIST:1,KICK:,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100
 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server")
+ (0.01 ":irc.foonet.org 005 tester` draft/CHATHISTORY=100 :are supported by 
this server")
+ (0.00 ":irc.foonet.org 251 tester` :There are 0 users and 3 invisible on 1 
server(s)")
+ (0.00 ":irc.foonet.org 252 tester` 0 :IRC Operators online")
+ (0.02 ":irc.foonet.org 253 tester` 0 :unregistered connections")
+ (0.00 ":irc.foonet.org 254 tester` 1 :channels formed")
+ (0.00 ":irc.foonet.org 255 tester` :I have 3 clients and 0 servers")
+ (0.00 ":irc.foonet.org 265 tester` 3 3 :Current local users 3, max 3")
+ (0.00 ":irc.foonet.org 266 tester` 3 3 :Current global users 3, max 3")
+ (0.00 ":irc.foonet.org 422 tester` :MOTD File is missing")
+ (0.02 ":irc.foonet.org 221 tester` +i")
+ (0.00 ":irc.foonet.org NOTICE tester` :This server is in debug mode and is 
logging all user I/O. If you do not wish for everything you send to be readable 
by the server owner(s), please disconnect."))
+
+((mode 12 "MODE tester` +i")
+ (0.0 ":irc.foonet.org 221 tester` +i"))
+
+((join 10 "JOIN #chan")
+ (0.00 ":tester`!~u@u9iqi96sfwk9s.irc JOIN #chan")
+ (0.08 ":irc.foonet.org 353 tester` = #chan :@bob alice tester`")
+ (0.01 ":irc.foonet.org 366 tester` #chan :End of NAMES list")
+ (0.00 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :tester`, welcome!")
+ (0.01 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :tester`, welcome!")
+ (0.05 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :alice: With pomp, with 
triumph, and with revelling."))
+
+((mode 10 "MODE #chan")
+ (0.00 ":irc.foonet.org 324 tester` #chan +nt")
+ (0.02 ":irc.foonet.org 329 tester` #chan 1668985854")
+ (0.00 ":alice!~u@2fzfcku68ehqa.irc PRIVMSG #chan :bob: No remedy, my lord, 
when walls are so wilful to hear without warning.")
+ (0.01 ":bob!~u@2fzfcku68ehqa.irc PRIVMSG #chan :alice: Let our reciprocal 
vows be remembered. You have many opportunities to cut him off; if your will 
want not, time and place will be fruitfully offered. There is nothing done if 
he return the conqueror; then am I the prisoner, and his bed my gaol; from the 
loathed warmth whereof deliver me, and supply the place for your labor."))
+
+((quit 1 "QUIT :\2ERC\2")
+ (0.03 ":tester`!~u@u9iqi96sfwk9s.irc QUIT :Quit"))
+
+((drop 0 DROP))
diff --git a/test/lisp/erc/resources/base/netid/bouncer/barnet-drop.eld 
b/test/lisp/erc/resources/base/netid/bouncer/barnet-drop.eld
index 2c3d297b9c..686a47f68a 100644
--- a/test/lisp/erc/resources/base/netid/bouncer/barnet-drop.eld
+++ b/test/lisp/erc/resources/base/netid/bouncer/barnet-drop.eld
@@ -36,6 +36,6 @@
  (0.1 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :mike: Why, will shall break 
it; will, and nothing else.")
  (0.1 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: Yes, a dozen; and as 
many to the vantage, as would store the world they played for.")
  (0.05 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :mike: As he regards his aged 
father's life.")
- (0.05 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: It is a rupture that 
you may easily heal; and the cure of it not only saves your brother, but keeps 
you from dishonour in doing it."))
+ (0.05 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: It is a rupture that 
you may easily heal; and the cure of it not only saves your brother, but keeps 
you from dishonor in doing it."))
 
 ((drop 0 DROP))
diff --git a/test/lisp/erc/resources/base/netid/bouncer/barnet.eld 
b/test/lisp/erc/resources/base/netid/bouncer/barnet.eld
index abfcc6ed48..d0fe3af8ea 100644
--- a/test/lisp/erc/resources/base/netid/bouncer/barnet.eld
+++ b/test/lisp/erc/resources/base/netid/bouncer/barnet.eld
@@ -36,6 +36,6 @@
  (0.1 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :mike: Why, will shall break 
it; will, and nothing else.")
  (0.1 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: Yes, a dozen; and as 
many to the vantage, as would store the world they played for.")
  (0.05 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :mike: As he regards his aged 
father's life.")
- (0.05 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: It is a rupture that 
you may easily heal; and the cure of it not only saves your brother, but keeps 
you from dishonour in doing it."))
+ (0.05 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: It is a rupture that 
you may easily heal; and the cure of it not only saves your brother, but keeps 
you from dishonor in doing it."))
 
 ((linger 1 LINGER))
diff --git a/test/lisp/erc/resources/erc-d/resources/dynamic-barnet.eld 
b/test/lisp/erc/resources/erc-d/resources/dynamic-barnet.eld
index 36b1cc2308..4994e9c550 100644
--- a/test/lisp/erc/resources/erc-d/resources/dynamic-barnet.eld
+++ b/test/lisp/erc/resources/erc-d/resources/dynamic-barnet.eld
@@ -30,4 +30,4 @@
  (0 ":irc.barnet.org 329 tester #chan 1620805269")
  (0.1 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :mike: Yes, a dozen; and as 
many to the vantage, as would store the world they played for.")
  (0.05 ":mike!~u@awyxgybtkx7uq.irc PRIVMSG #chan :joe: As he regards his aged 
father's life.")
- (0.05 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :mike: It is a rupture that 
you may easily heal; and the cure of it not only saves your brother, but keeps 
you from dishonour in doing it."))
+ (0.05 ":joe!~u@awyxgybtkx7uq.irc PRIVMSG #chan :mike: It is a rupture that 
you may easily heal; and the cure of it not only saves your brother, but keeps 
you from dishonor in doing it."))
diff --git a/test/lisp/erc/resources/erc-d/resources/dynamic-foonet.eld 
b/test/lisp/erc/resources/erc-d/resources/dynamic-foonet.eld
index 5dbea50f86..a47998e7d3 100644
--- a/test/lisp/erc/resources/erc-d/resources/dynamic-foonet.eld
+++ b/test/lisp/erc/resources/erc-d/resources/dynamic-foonet.eld
@@ -29,4 +29,4 @@
  (0 ":irc.foonet.org 329 tester #chan 1620805269")
  (0.1 ":alice!~u@awyxgybtkx7uq.irc PRIVMSG #chan :bob: Yes, a dozen; and as 
many to the vantage, as would store the world they played for.")
  (0.05 ":bob!~u@awyxgybtkx7uq.irc PRIVMSG #chan :alice: As he regards his aged 
father's life.")
- (0.05 ":alice!~u@awyxgybtkx7uq.irc PRIVMSG #chan :bob: It is a rupture that 
you may easily heal; and the cure of it not only saves your brother, but keeps 
you from dishonour in doing it."))
+ (0.05 ":alice!~u@awyxgybtkx7uq.irc PRIVMSG #chan :bob: It is a rupture that 
you may easily heal; and the cure of it not only saves your brother, but keeps 
you from dishonor in doing it."))
diff --git a/test/lisp/erc/resources/sasl/external.eld 
b/test/lisp/erc/resources/sasl/external.eld
new file mode 100644
index 0000000000..2cd237ec4d
--- /dev/null
+++ b/test/lisp/erc/resources/sasl/external.eld
@@ -0,0 +1,33 @@
+;; -*- mode: lisp-data; -*-
+((cap-req 10 "CAP REQ :sasl"))
+((nick 1 "NICK tester"))
+((user 1 "USER tester 0 * :tester"))
+
+((auth-req 3.2 "AUTHENTICATE EXTERNAL")
+ (0.0 ":irc.example.org CAP * ACK :sasl")
+ (0.0 "AUTHENTICATE +"))
+
+((auth-noop 3.2 "AUTHENTICATE +")
+ (0.0 ":irc.example.org 900 * * tester :You are now logged in as tester")
+ (0.0 ":irc.example.org 903 * :Authentication successful"))
+
+((cap-end 3.2 "CAP END")
+ (0.0 ":irc.example.org 001 tester :Welcome to the ExampleOrg IRC Network 
tester")
+ (0.01 ":irc.example.org 002 tester :Your host is irc.example.org, running 
version oragono-2.6.1")
+ (0.01 ":irc.example.org 003 tester :This server was created Sat, 17 Jul 2021 
09:06:42 UTC")
+ (0.01 ":irc.example.org 004 tester irc.example.org oragono-2.6.1 BERTZios 
CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0.0 ":irc.example.org 005 tester AWAYLEN=200 BOT=B CASEMAPPING=ascii 
CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# 
ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this 
server")
+ (0.01 ":irc.example.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES 
MONITOR=100 NETWORK=ExampleOrg NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ 
TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100
 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY :are supported by this server")
+ (0.01 ":irc.example.org 005 tester draft/CHATHISTORY=100 :are supported by 
this server")
+ (0.0 ":irc.example.org 251 tester :There are 1 users and 0 invisible on 1 
server(s)")
+ (0.0 ":irc.example.org 252 tester 0 :IRC Operators online")
+ (0.0 ":irc.example.org 253 tester 0 :unregistered connections")
+ (0.0 ":irc.example.org 254 tester 0 :channels formed")
+ (0.0 ":irc.example.org 255 tester :I have 1 clients and 0 servers")
+ (0.0 ":irc.example.org 265 tester 1 1 :Current local users 1, max 1")
+ (0.21 ":irc.example.org 266 tester 1 1 :Current global users 1, max 1")
+ (0.0 ":irc.example.org 422 tester :MOTD File is missing"))
+
+((mode-user 1.2 "MODE tester +i")
+ (0.0 ":irc.example.org 221 tester +Zi")
+ (0.0 ":irc.example.org NOTICE tester :This server is in debug mode and is 
logging all user I/O. If you do not wish for everything you send to be readable 
by the server owner(s), please disconnect."))
diff --git a/test/lisp/erc/resources/sasl/plain-failed.eld 
b/test/lisp/erc/resources/sasl/plain-failed.eld
new file mode 100644
index 0000000000..336700290c
--- /dev/null
+++ b/test/lisp/erc/resources/sasl/plain-failed.eld
@@ -0,0 +1,16 @@
+;; -*- mode: lisp-data; -*-
+((cap-req 10 "CAP REQ :sasl"))
+((nick 1 "NICK tester"))
+((user 1 "USER tester 0 * :tester")
+ (0.0 ":irc.foonet.org NOTICE * :*** Looking up your hostname...")
+ (0.0 ":irc.foonet.org NOTICE * :*** Found your hostname")
+ (0.0 ":irc.foonet.org CAP * ACK :cap-notify sasl"))
+
+((authenticate-plain 3.2 "AUTHENTICATE PLAIN")
+ (0.0 ":irc.foonet.org AUTHENTICATE +"))
+
+((authenticate-gimme 3.2 "AUTHENTICATE AHRlc3RlcgB3cm9uZw==")
+ (0.0 ":irc.foonet.org 900 * * tester :You are now logged in as tester")
+ (0.0 ":irc.foonet.org 904 * :SASL authentication failed: Invalid account 
credentials"))
+
+((cap-end 3.2 "CAP END"))
diff --git a/test/lisp/erc/resources/sasl/plain.eld 
b/test/lisp/erc/resources/sasl/plain.eld
new file mode 100644
index 0000000000..1341cd78e5
--- /dev/null
+++ b/test/lisp/erc/resources/sasl/plain.eld
@@ -0,0 +1,39 @@
+;; -*- mode: lisp-data; -*-
+((cap-req 10 "CAP REQ :sasl"))
+((nick 1 "NICK tester"))
+((user 1 "USER tester 0 * :tester")
+ (0.0 ":irc.example.org NOTICE * :*** Looking up your hostname...")
+ (0.0 ":irc.example.org NOTICE * :*** Found your hostname")
+ (0.0 ":irc.example.org CAP * ACK :sasl"))
+
+((authenticate-plain 3.2 "AUTHENTICATE PLAIN")
+ (0.0 ":irc.example.org AUTHENTICATE +"))
+
+((authenticate-gimme 3.2 "AUTHENTICATE AHRlc3RlcgBwYXNzd29yZDEyMw==")
+ (0.0 ":irc.example.org 900 * * tester :You are now logged in as tester")
+ (0.0 ":irc.example.org 903 * :Authentication successful"))
+
+((cap-end 3.2 "CAP END")
+ (0.0 ":irc.example.org 001 tester :Welcome to the ExampleOrg IRC Network 
tester")
+ (0.01 ":irc.example.org 002 tester :Your host is irc.example.org, running 
version oragono-2.6.1")
+ (0.01 ":irc.example.org 003 tester :This server was created Sat, 17 Jul 2021 
09:06:42 UTC")
+ (0.01 ":irc.example.org 004 tester irc.example.org oragono-2.6.1 BERTZios 
CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0.0 ":irc.example.org 005 tester AWAYLEN=200 BOT=B CASEMAPPING=ascii 
CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# 
ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this 
server")
+ (0.01 ":irc.example.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES 
MONITOR=100 NETWORK=ExampleOrg NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ 
TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100
 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY :are supported by this server")
+ (0.01 ":irc.example.org 005 tester draft/CHATHISTORY=100 :are supported by 
this server")
+ (0.0 ":irc.example.org 251 tester :There are 1 users and 0 invisible on 1 
server(s)")
+ (0.0 ":irc.example.org 252 tester 0 :IRC Operators online")
+ (0.0 ":irc.example.org 253 tester 0 :unregistered connections")
+ (0.0 ":irc.example.org 254 tester 0 :channels formed")
+ (0.0 ":irc.example.org 255 tester :I have 1 clients and 0 servers")
+ (0.0 ":irc.example.org 265 tester 1 1 :Current local users 1, max 1")
+ (0.21 ":irc.example.org 266 tester 1 1 :Current global users 1, max 1")
+ (0.0 ":irc.example.org 422 tester :MOTD File is missing"))
+
+((mode-user 1.2 "MODE tester +i")
+ (0.0 ":irc.example.org 221 tester +Zi")
+ (0.0 ":irc.example.org NOTICE tester :This server is in debug mode and is 
logging all user I/O. If you do not wish for everything you send to be readable 
by the server owner(s), please disconnect."))
+
+((quit 5 "QUIT :\2ERC\2")
+ (0 ":tester!~u@yuvqisyu7m7qs.irc QUIT :Quit"))
+((drop 1 DROP))
diff --git a/test/lisp/erc/resources/sasl/scram-sha-1.eld 
b/test/lisp/erc/resources/sasl/scram-sha-1.eld
new file mode 100644
index 0000000000..49980e9e12
--- /dev/null
+++ b/test/lisp/erc/resources/sasl/scram-sha-1.eld
@@ -0,0 +1,47 @@
+;;; -*- mode: lisp-data -*-
+((cap-req 5.2 "CAP REQ :sasl"))
+((nick 10 "NICK jilles"))
+((user 10 "USER user 0 * :jilles")
+ (0 "NOTICE AUTH :*** Processing connection to jaguar.test")
+ (0 "NOTICE AUTH :*** Looking up your hostname...")
+ (0 "NOTICE AUTH :*** Checking Ident")
+ (0 "NOTICE AUTH :*** No Ident response")
+ (0 "NOTICE AUTH :*** Found your hostname")
+ (0 ":jaguar.test CAP jilles ACK :sasl"))
+
+((auth-init 10 "AUTHENTICATE SCRAM-SHA-1")
+ (0 "AUTHENTICATE +"))
+
+((auth-challenge 10 "AUTHENTICATE 
bixhPWppbGxlcyxuPWppbGxlcyxyPWM1UnFMQ1p5MEw0ZkdrS0FaMGh1akZCcw==")
+ (0 "AUTHENTICATE 
cj1jNVJxTENaeTBMNGZHa0tBWjBodWpGQnNYUW9LY2l2cUN3OWlEWlBTcGIscz01bUpPNmQ0cmpDbnNCVTFYLGk9NDA5Ng=="))
+
+((auth-final 10 "AUTHENTICATE 
Yz1iaXhoUFdwcGJHeGxjeXc9LHI9YzVScUxDWnkwTDRmR2tLQVowaHVqRkJzWFFvS2NpdnFDdzlpRFpQU3BiLHA9T1ZVaGdQdTh3RW0yY0RvVkxmYUh6VlVZUFdVPQ==")
+ (0 "AUTHENTICATE dj1aV1IyM2M5TUppcjBaZ2ZHZjVqRXRMT242Tmc9"))
+
+((auth-done 10 "AUTHENTICATE +")
+ (0 ":jaguar.test 900 jilles jilles!jilles@localhost.stack.nl jilles :You are 
now logged in as jilles")
+ (0 ":jaguar.test 903 jilles :SASL authentication successful"))
+
+((cap-end 10.2 "CAP END")
+ (0 ":jaguar.test 001 jilles :Welcome to the jaguar IRC Network 
jilles!~jilles@127.0.0.1")
+ (0 ":jaguar.test 002 jilles :Your host is jaguar.test, running version 
InspIRCd-3")
+ (0 ":jaguar.test 003 jilles :This server was created 09:44:05 Dec 24 2020")
+ (0 ":jaguar.test 004 jilles jaguar.test InspIRCd-3 BILRSWcghiorswz 
ABEFHIJLMNOQRSTXYabcefghijklmnopqrstuvz :BEFHIJLXYabefghjkloqv")
+ (0 ":jaguar.test 005 jilles ACCEPT=30 AWAYLEN=200 BOT=B CALLERID=g 
CASEMAPPING=rfc1459 CHANLIMIT=#:120 
CHANMODES=IXbeg,k,BEFHJLfjl,AMNOQRSTcimnprstuz CHANNELLEN=64 CHANTYPES=# 
ELIST=CMNTU ESILENCE=CcdiNnPpTtx EXCEPTS=e :are supported by this server")
+ (0 ":jaguar.test 005 jilles EXTBAN=,ANOQRSTUacmnprz HOSTLEN=64 INVEX=I 
KEYLEN=32 KICKLEN=255 LINELEN=512 MAXLIST=I:100,X:100,b:100,e:100,g:100 
MAXTARGETS=20 MODES=20 MONITOR=30 NAMELEN=128 NAMESX NETWORK=jaguar :are 
supported by this server")
+ (0 ":jaguar.test 005 jilles NICKLEN=31 PREFIX=(Yqaohv)!~&@%+ REMOVE SAFELIST 
SECURELIST=60 SILENCE=32 STATUSMSG=!~&@%+ TOPICLEN=307 UHNAMES USERIP 
USERLEN=11 USERMODES=,,s,BILRSWcghiorwz WATCH=30 :are supported by this server")
+ (0 ":jaguar.test 005 jilles :are supported by this server")
+ (0 ":jaguar.test 251 jilles :There are 740 users and 108 invisible on 11 
servers")
+ (0 ":jaguar.test 252 jilles 10 :operator(s) online")
+ (0 ":jaguar.test 254 jilles 373 :channels formed")
+ (0 ":jaguar.test 255 jilles :I have 28 clients and 1 servers")
+ (0 ":jaguar.test 265 jilles :Current local users: 28  Max: 29")
+ (0 ":jaguar.test 266 jilles :Current global users: 848  Max: 879")
+ (0 ":jaguar.test 375 jilles :jaguar.test message of the day")
+ (0 ":jaguar.test 372 jilles :   ~~ some message of the day ~~")
+ (0 ":jaguar.test 372 jilles :   ~~ or rkpryyrag gb rnpu bgure ~~")
+ (0 ":jaguar.test 376 jilles :End of message of the day."))
+
+((mode-user 1.2 "MODE jilles +i")
+ (0 ":jilles!~jilles@127.0.0.1 MODE jilles :+ri")
+ (0 ":jaguar.test 306 jilles :You have been marked as being away"))
diff --git a/test/lisp/erc/resources/sasl/scram-sha-256.eld 
b/test/lisp/erc/resources/sasl/scram-sha-256.eld
new file mode 100644
index 0000000000..74de9a23ec
--- /dev/null
+++ b/test/lisp/erc/resources/sasl/scram-sha-256.eld
@@ -0,0 +1,47 @@
+;;; -*- mode: lisp-data -*-
+((cap-req 5.2 "CAP REQ :sasl"))
+((nick 10 "NICK jilles"))
+((user 10 "USER user 0 * :jilles")
+ (0 "NOTICE AUTH :*** Processing connection to jaguar.test")
+ (0 "NOTICE AUTH :*** Looking up your hostname...")
+ (0 "NOTICE AUTH :*** Checking Ident")
+ (0 "NOTICE AUTH :*** No Ident response")
+ (0 "NOTICE AUTH :*** Found your hostname")
+ (0 ":jaguar.test CAP jilles ACK :sasl"))
+
+((auth-init 10 "AUTHENTICATE SCRAM-SHA-256")
+ (0 "AUTHENTICATE +"))
+
+((auth-challenge 10 "AUTHENTICATE 
biwsbj1qaWxsZXMscj1jNVJxTENaeTBMNGZHa0tBWjBodWpGQnM=")
+ (0 "AUTHENTICATE 
cj1jNVJxTENaeTBMNGZHa0tBWjBodWpGQnNkNDA2N2YwYWZkYjU0YzNkYmQ0ZmU2NDViODRjYWUzNyxzPVpUZzFNbUUxWW1GaFpHSTFORGN5TWprM056WXdabVJqWkRNM1kySTFPVE09LGk9NDA5Ng=="))
+
+((auth-final 10 "AUTHENTICATE 
Yz1iaXdzLHI9YzVScUxDWnkwTDRmR2tLQVowaHVqRkJzZDQwNjdmMGFmZGI1NGMzZGJkNGZlNjQ1Yjg0Y2FlMzcscD1MUDRzakpyakpLcDVxVHNBUnlaQ3BwWHBLTHU0Rk1NMjg0aE5FU1B2R2hJPQ==")
+ (0 "AUTHENTICATE 
dj04NDdXWGZubVJlR3lFMXFscTFBbmQ2UjRiUEJOUk9UWjdFTVMvUXJKdFVNPQ=="))
+
+((auth-done 10 "AUTHENTICATE +")
+ (0 ":jaguar.test 900 jilles jilles!jilles@localhost.stack.nl jilles :You are 
now logged in as jilles")
+ (0 ":jaguar.test 903 jilles :SASL authentication successful"))
+
+((cap-end 10.2 "CAP END")
+ (0 ":jaguar.test 001 jilles :Welcome to the jaguar IRC Network 
jilles!~jilles@127.0.0.1")
+ (0 ":jaguar.test 002 jilles :Your host is jaguar.test, running version 
InspIRCd-3")
+ (0 ":jaguar.test 003 jilles :This server was created 09:44:05 Dec 24 2020")
+ (0 ":jaguar.test 004 jilles jaguar.test InspIRCd-3 BILRSWcghiorswz 
ABEFHIJLMNOQRSTXYabcefghijklmnopqrstuvz :BEFHIJLXYabefghjkloqv")
+ (0 ":jaguar.test 005 jilles ACCEPT=30 AWAYLEN=200 BOT=B CALLERID=g 
CASEMAPPING=rfc1459 CHANLIMIT=#:120 
CHANMODES=IXbeg,k,BEFHJLfjl,AMNOQRSTcimnprstuz CHANNELLEN=64 CHANTYPES=# 
ELIST=CMNTU ESILENCE=CcdiNnPpTtx EXCEPTS=e :are supported by this server")
+ (0 ":jaguar.test 005 jilles EXTBAN=,ANOQRSTUacmnprz HOSTLEN=64 INVEX=I 
KEYLEN=32 KICKLEN=255 LINELEN=512 MAXLIST=I:100,X:100,b:100,e:100,g:100 
MAXTARGETS=20 MODES=20 MONITOR=30 NAMELEN=128 NAMESX NETWORK=jaguar :are 
supported by this server")
+ (0 ":jaguar.test 005 jilles NICKLEN=31 PREFIX=(Yqaohv)!~&@%+ REMOVE SAFELIST 
SECURELIST=60 SILENCE=32 STATUSMSG=!~&@%+ TOPICLEN=307 UHNAMES USERIP 
USERLEN=11 USERMODES=,,s,BILRSWcghiorwz WATCH=30 :are supported by this server")
+ (0 ":jaguar.test 005 jilles :are supported by this server")
+ (0 ":jaguar.test 251 jilles :There are 740 users and 108 invisible on 11 
servers")
+ (0 ":jaguar.test 252 jilles 10 :operator(s) online")
+ (0 ":jaguar.test 254 jilles 373 :channels formed")
+ (0 ":jaguar.test 255 jilles :I have 28 clients and 1 servers")
+ (0 ":jaguar.test 265 jilles :Current local users: 28  Max: 29")
+ (0 ":jaguar.test 266 jilles :Current global users: 848  Max: 879")
+ (0 ":jaguar.test 375 jilles :jaguar.test message of the day")
+ (0 ":jaguar.test 372 jilles :   ~~ some message of the day ~~")
+ (0 ":jaguar.test 372 jilles :   ~~ or rkpryyrag gb rnpu bgure ~~")
+ (0 ":jaguar.test 376 jilles :End of message of the day."))
+
+((mode-user 1.2 "MODE jilles +i")
+ (0 ":jilles!~jilles@127.0.0.1 MODE jilles :+ri")
+ (0 ":jaguar.test 306 jilles :You have been marked as being away"))
diff --git a/test/lisp/eshell/esh-var-tests.el 
b/test/lisp/eshell/esh-var-tests.el
index 245a8e6a26..96fde026a5 100644
--- a/test/lisp/eshell/esh-var-tests.el
+++ b/test/lisp/eshell/esh-var-tests.el
@@ -289,7 +289,7 @@ inside double-quotes"
     (eshell-command-result-equal "echo \"$#eshell-test-value\""
                                  "1")
     (eshell-command-result-equal "echo \"$#eshell-test-value[foo]\""
-                                 "3"))
+                                 "3")))
 
 (ert-deftest esh-var-test/quoted-interp-lisp ()
   "Interpolate Lisp form evaluation inside double-quotes"
@@ -316,7 +316,7 @@ inside double-quotes"
   (let ((temporary-file-directory
          (file-name-as-directory (make-temp-file "esh-vars-tests" t))))
     (unwind-protect
-        (eshell-command-result-equal "cat \"$<echo hi>\"" "hi"))
+        (eshell-command-result-equal "cat \"$<echo hi>\"" "hi")
       (delete-directory temporary-file-directory t))))
 
 (ert-deftest esh-var-test/quoted-interp-concat-cmd ()
diff --git a/test/lisp/net/eudc-resources/bbdb 
b/test/lisp/net/eudc-resources/bbdb
index b730bb51cc..782da56e9f 100644
--- a/test/lisp/net/eudc-resources/bbdb
+++ b/test/lisp/net/eudc-resources/bbdb
@@ -1,3 +1,4 @@
 ;; -*- mode: Emacs-Lisp; coding: utf-8; -*-
 ;;; file-format: 9
 ["Emacs" "ERT3" nil nil nil nil nil ("emacs-ert-test-3@bbdb.gnu.org") ((notes 
. " ")) "c8bd3a63-3a83-48a7-a95b-be118a923e00" "2022-11-19 16:36:04 +0000" 
"2022-11-19 16:36:04 +0000" nil]
+["Emacs" "ERT4" nil nil nil nil nil ("emacs-ert-test-4@bbdb.gnu.org") ((notes 
. " ")) "5a93c3c5-9270-4e10-8b28-d28cfa2562cf" "2022-11-19 16:47:49 +0000" 
"2022-11-19 16:47:49 +0000" nil]
diff --git a/test/lisp/net/eudc-tests.el b/test/lisp/net/eudc-tests.el
index 212db65cb2..0da51b7c36 100644
--- a/test/lisp/net/eudc-tests.el
+++ b/test/lisp/net/eudc-tests.el
@@ -281,7 +281,12 @@ Karl Fogel <kfogel@mail-abbrev.com")))))))))
                                        base "dc=gnu,dc=org" auth simple)))
         (eudc-server-hotlist '(("ldap://localhost:3899"; . ldap)))
         (eudc-ignore-options-file t))
-    (sleep-for 1) ; Wait for slapd to start.
+    (catch 'sldapd-up
+      (dotimes (_tries 20)
+        (when (eudc-query-with-words '("emacs-ert-test-1"))
+          (throw 'sldapd-up nil)))
+      (kill-process ldap-process)
+      (error "Failed to confirm slapd is running"))
     (should (equal (with-temp-buffer
                      (insert "emacs-ert-test-1")
                      (eudc-expand-try-all)
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index a5bae46a58..6ffb8a6529 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -5388,6 +5388,21 @@ If UNSTABLE is non-nil, the test is tagged as 
`:unstable'."
       ;; Cleanup.
       (ignore-errors (delete-process proc)))))
 
+(ert-deftest tramp-test31-memory-info ()
+  "Check `memory-info'."
+  :tags '(:expensive-test)
+  (skip-unless (tramp--test-enabled))
+  (skip-unless (tramp--test-supports-processes-p))
+  ;; `memory-info' is supported since Emacs 29.1.
+  (skip-unless (tramp--test-emacs29-p))
+
+  (when-let ((default-directory ert-remote-temporary-file-directory)
+             (mi (memory-info)))
+    (should (consp mi))
+    (should (= (length mi) 4))
+    (dotimes (i (length mi))
+      (should (natnump (nth i mi))))))
+
 (defun tramp--test-async-shell-command
     (command output-buffer &optional error-buffer input)
   "Like `async-shell-command', reading the output.
@@ -7630,6 +7645,9 @@ Since it unloads Tramp, it shall be the last test to run."
          (string-prefix-p "tramp" (symbol-name x))
          ;; `tramp-completion-mode' is autoloaded in Emacs < 28.1.
          (not (eq 'tramp-completion-mode x))
+         ;; `tramp-register-archive-file-name-handler' is autoloaded
+         ;; in Emacs < 29.1.
+         (not (eq 'tramp-register-archive-file-name-handler x))
          (not (string-match-p
                (rx bol "tramp" (? "-archive") (** 1 2 "-") "test")
                (symbol-name x)))
diff --git a/test/lisp/server-tests.el b/test/lisp/server-tests.el
index 351b8ef8d1..f8ecd046f2 100644
--- a/test/lisp/server-tests.el
+++ b/test/lisp/server-tests.el
@@ -22,20 +22,198 @@
 (require 'ert)
 (require 'server)
 
+(defconst server-tests/can-create-frames-p
+  (not (memq system-type '(windows-nt ms-dos)))
+  "Non-nil if we can create a new frame in the tests.
+Some tests below need to create new frames for the emacsclient.
+However, this doesn't work on all platforms.  In particular,
+MS-Windows fails to create frames from a batch Emacs session.  In
+cases like that, we just skip the test.")
+
+(defconst server-tests/max-wait-time 5
+  "The maximum time to wait in `server-tests/wait-until', in seconds.")
+
+(defconst server-tests/emacsclient
+  (if installation-directory
+      (expand-file-name "lib-src/emacsclient" installation-directory)
+    "emacsclient")
+  "The emacsclient binary to test.")
+
+(defmacro server-tests/wait-until (form)
+  "Wait until FORM is non-nil, timing out and failing if it takes too long."
+  `(let ((start (current-time)))
+    (while (not ,form)
+      (when (> (float-time (time-since start))
+               server-tests/max-wait-time)
+        (ert-fail (format "timed out waiting for %S to be non-nil" ',form)))
+      (sit-for 0.1))))
+
+(defun server-tests/start-client (args)
+  "Run emacsclient, passing ARGS as arguments to it."
+  (let ((server-file (process-get server-process :server-file))
+        (buffer (generate-new-buffer "emacsclient")))
+    (make-process
+     :name server-tests/emacsclient
+     :buffer buffer
+     :command (append (list server-tests/emacsclient
+                            (if server-use-tcp
+                                "--server-file"
+                              "--socket-name")
+                            server-file)
+                      args))))
+
+(defmacro server-tests/with-server (&rest body)
+  "Start the Emacs server, evaluate BODY, and then stop the server."
+  (declare (indent 0))
+  ;; Override the `server-name' so that these tests don't interfere
+  ;; with any existing Emacs servers on the system.
+  `(let* ((temporary-file-directory (file-name-as-directory
+                                     (make-temp-file "server-tests" t)))
+          (server-name (expand-file-name
+                        "test-server" temporary-file-directory))
+          (server-log t))
+     (server-start)
+     (ert-info ((lambda ()
+                  (with-current-buffer (get-buffer-create server-buffer)
+                    (buffer-string)))
+                :prefix "Server logs: ")
+       (unwind-protect
+           (progn (should (processp server-process))
+                  ,@body)
+         (let ((inhibit-message t))
+           (server-start t t))
+         (delete-directory temporary-file-directory t)
+         (should (null server-process))
+         (should (null server-clients))))))
+
+(defmacro server-tests/with-client (client-symbol args exit-status &rest body)
+  "Start an Emacs client with ARGS and evaluate BODY.
+This binds the client process to CLIENT-SYMBOL.  If EXIT-STATUS is
+non-nil, then after BODY is evaluated, make sure the client
+process's status matches it."
+  (declare (indent 3))
+  (let ((exit-status-symbol (make-symbol "exit-status"))
+        (starting-client-count-symbol (make-symbol "starting-client-count")))
+    `(let ((,starting-client-count-symbol (length server-clients))
+           (,exit-status-symbol ,exit-status)
+           (,client-symbol (server-tests/start-client ,args)))
+       (ert-info ((lambda ()
+                    (with-current-buffer (process-buffer ,client-symbol)
+                      (buffer-string)))
+                  :prefix "Client output: ")
+         (server-tests/wait-until
+          (or (= (length server-clients)
+                 (1+ ,starting-client-count-symbol))
+              (eq (process-status ,client-symbol) ,exit-status-symbol)))
+         ,@body
+         (when ,exit-status-symbol
+           (server-tests/wait-until (eq (process-status ,client-symbol)
+                                        ,exit-status-symbol)))))))
+
+(defvar server-tests/variable nil)
+
 ;;; Tests:
 
-(ert-deftest server-test/server-start-sets-minor-mode ()
+(ert-deftest server-tests/server-start/sets-minor-mode ()
   "Ensure that calling `server-start' also sets `server-mode' properly."
-  (server-start)
-  (unwind-protect
-      (progn
-        ;; Make sure starting the server activates the minor mode.
-        (should (eq server-mode t))
-        (should (memq 'server-mode global-minor-modes)))
-    ;; Always stop the server, even if the above checks fail.
-    (server-start t))
+  (server-tests/with-server
+    ;; Make sure starting the server activates the minor mode.
+    (should (eq server-mode t))
+    (should (memq 'server-mode global-minor-modes)))
   ;; Make sure stopping the server deactivates the minor mode.
   (should (eq server-mode nil))
   (should-not (memq 'server-mode global-minor-modes)))
 
+(ert-deftest server-tests/server-start/stop-prompt-with-client ()
+  "Ensure that stopping the server prompts when there are clients."
+  (skip-unless server-tests/can-create-frames-p)
+  (server-tests/with-server
+    (server-tests/with-client emacsclient '("-c") 'exit
+      (should (length= (frame-list) 2))
+      (cl-letf* ((yes-or-no-p-called nil)
+                 ((symbol-function 'yes-or-no-p)
+                  (lambda (_prompt)
+                    (setq yes-or-no-p-called t))))
+        (server-start t)
+        (should yes-or-no-p-called)))))
+
+(ert-deftest server-tests/server-start/no-stop-prompt-without-client ()
+  "Ensure that stopping the server doesn't prompt when there are no clients."
+  (server-tests/with-server
+    (cl-letf* ((inhibit-message t)
+               (yes-or-no-p-called nil)
+               ((symbol-function 'yes-or-no-p)
+                (lambda (_prompt)
+                  (setq yes-or-no-p-called t))))
+      (server-start t)
+      (should-not yes-or-no-p-called))))
+
+(ert-deftest server-tests/emacsclient/server-edit ()
+  "Test that calling `server-edit' from a client buffer exits the client."
+  (server-tests/with-server
+    (server-tests/with-client emacsclient '("file.txt") 'exit
+      (server-tests/wait-until (get-buffer "file.txt"))
+      (should (eq (process-status emacsclient) 'run))
+      (with-current-buffer "file.txt"
+        (server-edit)))))
+
+(ert-deftest server-tests/emacsclient/create-frame ()
+  "Test that \"emacsclient -c\" creates a frame."
+  (skip-unless server-tests/can-create-frames-p)
+  (let ((starting-frame-count (length (frame-list))))
+    (server-tests/with-server
+      (server-tests/with-client emacsclient '("-c") nil
+      (should (length= (frame-list) (1+ starting-frame-count)))
+      (should (eq (process-status emacsclient) 'run))
+      (should (eq (frame-parameter (car (frame-list)) 'client)
+                  (car server-clients)))))
+    ;; The client frame should go away after the server stops.
+    (should (length= (frame-list) starting-frame-count))))
+
+(ert-deftest server-tests/emacsclient/eval ()
+  "Test that \"emacsclient --eval\" works correctly."
+  (server-tests/with-server
+    (let ((value (random)))
+      (server-tests/with-client emacsclient
+          (list "--eval" (format "(setq server-tests/variable %d)" value))
+          'exit
+        (should (= server-tests/variable value))))))
+
+(ert-deftest server-tests/server-force-stop/keeps-frames ()
+  "Ensure that `server-force-stop' doesn't delete frames.  See bug#58877.
+Note: since that bug is about a behavior when killing Emacs, this
+test is somewhat indirect. (Killing the current Emacs instance
+would make it hard to check test results!)  Instead, it only
+tests that `server-force-stop' doesn't delete frames (and even
+then, requires a few tricks to run as a regression test).  So
+long as this works, the problem in bug#58877 shouldn't occur."
+  (skip-unless server-tests/can-create-frames-p)
+  (let ((starting-frame-count (length (frame-list)))
+        terminal)
+    (unwind-protect
+        (server-tests/with-server
+          (server-tests/with-client emacsclient '("-c") 'exit
+            (should (eq (process-status emacsclient) 'run))
+            (should (length= (frame-list) (1+ starting-frame-count)))
+
+            ;; Don't delete the terminal for the client; that would
+            ;; kill its frame immediately too.  (This is only an issue
+            ;; when running these tests via the command line;
+            ;; normally, in an interactive session, we don't need to
+            ;; worry about this.  But since we want to check that
+            ;; `server-force-stop' doesn't delete frames under normal
+            ;; circumstances, we need to bypass terminal deletion
+            ;; here.)
+            (setq terminal (process-get (car server-clients) 'terminal))
+            (process-put (car server-clients) 'no-delete-terminal t)
+
+            (server-force-stop))
+          ;; Ensure we didn't delete the frame.
+          (should (length= (frame-list) (1+ starting-frame-count))))
+      ;; Clean up after ourselves and delete the terminal.
+      (when (and terminal
+                 (eq (terminal-live-p terminal) t)
+                 (not (eq system-type 'windows-nt)))
+        (delete-terminal terminal)))))
+
 ;;; server-tests.el ends here
diff --git a/test/lisp/vc/vc-tests.el b/test/lisp/vc/vc-tests.el
index 13248a3650..c54fe144b7 100644
--- a/test/lisp/vc/vc-tests.el
+++ b/test/lisp/vc/vc-tests.el
@@ -122,7 +122,7 @@
 Don't set it globally, the functions should be let-bound.")
 
 (defun vc-test--revision-granularity-function (backend)
-  "Run the `vc-revision-granularity' backend function."
+  "Run the `revision-granularity' backend function."
   (vc-call-backend backend 'revision-granularity))
 
 (defun vc-test--create-repo-function (backend)
diff --git a/test/manual/etags/CTAGS.good_crlf 
b/test/manual/etags/CTAGS.good_crlf
new file mode 100644
index 0000000000..3d64fa63c7
--- /dev/null
+++ b/test/manual/etags/CTAGS.good_crlf
@@ -0,0 +1,4484 @@
+#a-defer-word  forth-src/test-forth.fth        /^defer #a-defer-word$/
+#some-storage  forth-src/test-forth.fth        /^2000 buffer: #some-storage$/
+$0x80  c-src/sysdep.h  32
+$SYS_##syscall_na      c-src/sysdep.h  31
+$domain        php-src/lce_functions.php       175
+$filename      php-src/lce_functions.php       174
+$ignore_ws     php-src/lce_functions.php       171
+$memassign     php-src/ptest.php       9
+$memassign_space       php-src/ptest.php       10
+$member        php-src/ptest.php       8
+$msgid php-src/lce_functions.php       107
+$msgid php-src/lce_functions.php       165
+$msgid_lc      php-src/lce_functions.php       113
+$msgstr        php-src/lce_functions.php       108
+$msgstr        php-src/lce_functions.php       166
+$msgstr_lc     php-src/lce_functions.php       114
+$po_entries    php-src/lce_functions.php       172
+$poe_num       php-src/lce_functions.php       173
+$por_a php-src/lce_functions.php       500
+$prefix        php-src/lce_functions.php       72
+$state php-src/lce_functions.php       170
+$sys_comment   php-src/lce_functions.php       110
+$sys_comment   php-src/lce_functions.php       168
+$sys_comment_lc        php-src/lce_functions.php       116
+$test  php-src/ptest.php       12
+$unk_comment   php-src/lce_functions.php       111
+$unk_comment   php-src/lce_functions.php       169
+$unk_comment_lc        php-src/lce_functions.php       117
+$user_comment  php-src/lce_functions.php       109
+$user_comment  php-src/lce_functions.php       167
+$user_comment_lc       php-src/lce_functions.php       115
+${CHECKOBJS}   make-src/Makefile       /^${CHECKOBJS}: CFLAGS=-g3 
-DNULLFREECHECK=0$/
+%cdiff make-src/Makefile       /^%cdiff: CTAGS% CTAGS ${infiles}$/
+%ediff make-src/Makefile       /^%ediff: ETAGS% ETAGS ${infiles}$/
+($_,$flag,$opt,$f,$r,@temp     perl-src/yagrip.pl      8
+($prog,$_,@list        perl-src/yagrip.pl      39
+($string,$flag,@string,@temp,@last     perl-src/yagrip.pl      40
+(a-forth-constant      forth-src/test-forth.fth        /^constant 
(a-forth-constant$/
+(another-forth-word)   forth-src/test-forth.fth        /^: 
(another-forth-word) ( -- )$/
+(foo)  forth-src/test-forth.fth        /^: (foo) 1 ;$/
++      ruby-src/test.rb        /^        def +(y)$/
++      tex-src/texinfo.tex     /^\\def+{{\\tt \\char 43}}$/
+.PRECIOUS      make-src/Makefile       /^.PRECIOUS: ETAGS CTAGS ETAGS16 
CTAGS16 ETAGS17 CTA/
+/.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
+/.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/space \/exclam/
+/A     ps-src/rfc1245.ps       /^\/A { $/
+/Acircumflex   ps-src/rfc1245.ps       /^\/Acircumflex \/Ecircumflex \/Aacute 
\/Edieresis \/Egra/
+/B     ps-src/rfc1245.ps       /^\/B { $/
+/BEGINBITMAP2BIT       ps-src/rfc1245.ps       /^\/BEGINBITMAP2BIT { $/
+/BEGINBITMAP2BITc      ps-src/rfc1245.ps       /^\/BEGINBITMAP2BITc { $/
+/BEGINBITMAPBW ps-src/rfc1245.ps       /^\/BEGINBITMAPBW { $/
+/BEGINBITMAPBWc        ps-src/rfc1245.ps       /^\/BEGINBITMAPBWc { $/
+/BEGINBITMAPGRAY       ps-src/rfc1245.ps       /^\/BEGINBITMAPGRAY { $/
+/BEGINBITMAPGRAYc      ps-src/rfc1245.ps       /^\/BEGINBITMAPGRAYc { $/
+/BEGINPRINTCODE        ps-src/rfc1245.ps       /^\/BEGINPRINTCODE { $/
+/BF    ps-src/rfc1245.ps       /^\/BF { $/
+/BITMAPCOLOR   ps-src/rfc1245.ps       /^\/BITMAPCOLOR { $/
+/BITMAPCOLORc  ps-src/rfc1245.ps       /^\/BITMAPCOLORc { $/
+/BITMAPGRAY    ps-src/rfc1245.ps       /^\/BITMAPGRAY { $/
+/BITMAPGRAYc   ps-src/rfc1245.ps       /^\/BITMAPGRAYc { $/
+/C     ps-src/rfc1245.ps       /^\/C { $/
+/COMMONBITMAP  ps-src/rfc1245.ps       /^\/COMMONBITMAP { $/
+/COMMONBITMAPc ps-src/rfc1245.ps       /^\/COMMONBITMAPc { $/
+/D     ps-src/rfc1245.ps       /^\/D {curveto} bind def$/
+/DiacriticEncoding     ps-src/rfc1245.ps       /^\/DiacriticEncoding [$/
+/E     ps-src/rfc1245.ps       /^\/E {lineto} bind def$/
+/ENDBITMAP     ps-src/rfc1245.ps       /^\/ENDBITMAP {$/
+/ENDPRINTCODE  ps-src/rfc1245.ps       /^\/ENDPRINTCODE {$/
+/F     ps-src/rfc1245.ps       /^\/F { $/
+/FMBEGINEPSF   ps-src/rfc1245.ps       /^\/FMBEGINEPSF { $/
+/FMBEGINPAGE   ps-src/rfc1245.ps       /^\/FMBEGINPAGE { $/
+/FMDEFINEFONT  ps-src/rfc1245.ps       /^\/FMDEFINEFONT { $/
+/FMDOCUMENT    ps-src/rfc1245.ps       /^\/FMDOCUMENT { $/
+/FMENDEPSF     ps-src/rfc1245.ps       /^\/FMENDEPSF {$/
+/FMENDPAGE     ps-src/rfc1245.ps       /^\/FMENDPAGE {$/
+/FMLOCAL       ps-src/rfc1245.ps       /^\/FMLOCAL {$/
+/FMNORMALIZEGRAPHICS   ps-src/rfc1245.ps       /^\/FMNORMALIZEGRAPHICS { $/
+/FMVERSION     ps-src/rfc1245.ps       /^\/FMVERSION {$/
+/FMversion     ps-src/rfc1245.ps       /^\/FMversion (2.0) def $/
+/Fmcc  ps-src/rfc1245.ps       /^\/Fmcc {$/
+/FrameDict     ps-src/rfc1245.ps       /^\/FrameDict 190 dict def $/
+/G     ps-src/rfc1245.ps       /^\/G { $/
+/H     ps-src/rfc1245.ps       /^\/H { $/
+/Icircumflex   ps-src/rfc1245.ps       /^\/Icircumflex \/Idieresis \/Igrave 
\/Oacute \/Ocircumfl/
+/L     ps-src/rfc1245.ps       /^\/L \/M \/N \/O \/P \/Q \/R \/S \/T \/U \/V 
\/W \/X \/Y \/Z \/brac/
+/L     ps-src/rfc1245.ps       /^\/L { $/
+/M     ps-src/rfc1245.ps       /^\/M {newpath moveto} bind def$/
+/N     ps-src/rfc1245.ps       /^\/N { $/
+/Ntilde        ps-src/rfc1245.ps       /^\/Ntilde \/Odieresis \/Udieresis 
\/aacute \/agrave \/aci/
+/O     ps-src/rfc1245.ps       /^\/O {closepath} bind def$/
+/Otilde        ps-src/rfc1245.ps       /^\/Otilde \/OE \/oe \/endash \/emdash 
\/quotedblleft \/quo/
+/P     ps-src/rfc1245.ps       /^\/P { $/
+/PF    ps-src/rfc1245.ps       /^\/PF { $/
+/R     ps-src/rfc1245.ps       /^\/R { $/
+/RF    ps-src/rfc1245.ps       /^\/RF { $/
+/RR    ps-src/rfc1245.ps       /^\/RR { $/
+/ReEncode      ps-src/rfc1245.ps       /^\/ReEncode { $/
+/S     ps-src/rfc1245.ps       /^\/S { $/
+/SF    ps-src/rfc1245.ps       /^\/SF { $/
+/T     ps-src/rfc1245.ps       /^\/T { $/
+/TF    ps-src/rfc1245.ps       /^\/TF { $/
+/U     ps-src/rfc1245.ps       /^\/U { $/
+/Uacute        ps-src/rfc1245.ps       /^\/Uacute \/Ucircumflex \/Ugrave 
\/dotlessi \/circumflex/
+/V     ps-src/rfc1245.ps       /^\/V { $/
+/W     ps-src/rfc1245.ps       /^\/W { $/
+/X     ps-src/rfc1245.ps       /^\/X { $/
+/Y     ps-src/rfc1245.ps       /^\/Y { $/
+/Z     ps-src/rfc1245.ps       /^\/Z {$/
+/atilde        ps-src/rfc1245.ps       /^\/atilde \/aring \/ccedilla \/eacute 
\/egrave \/ecircumf/
+/bl    ps-src/rfc1245.ps       /^\/bl { $/
+/braceright    ps-src/rfc1245.ps       /^\/braceright \/asciitilde \/.notdef 
\/Adieresis \/Aring/
+/bracketright  ps-src/rfc1245.ps       /^\/bracketright \/asciicircum 
\/underscore \/grave \/a \//
+/breve ps-src/rfc1245.ps       /^\/breve \/dotaccent \/ring \/cedilla 
\/hungarumlaut \/og/
+/cfs   ps-src/rfc1245.ps       /^\/cfs { $/
+/colorsetup    ps-src/rfc1245.ps       /^\/colorsetup {$/
+/desperatepapersize    ps-src/rfc1245.ps       /^\/desperatepapersize {$/
+/dieresis      ps-src/rfc1245.ps       /^\/dieresis \/.notdef \/AE \/Oslash 
\/.notdef \/.notdef \//
+/dmatrix       ps-src/rfc1245.ps       /^\/dmatrix matrix def$/
+/dnormalize    ps-src/rfc1245.ps       /^\/dnormalize {$/
+/dpi   ps-src/rfc1245.ps       /^\/dpi    72 0 dmatrix defaultmatrix 
dtransform$/
+/exclamdown    ps-src/rfc1245.ps       /^\/exclamdown \/logicalnot \/.notdef 
\/florin \/.notdef /
+/fakecolorsetup        ps-src/rfc1245.ps       /^\/fakecolorsetup {$/
+/fillprocs     ps-src/rfc1245.ps       /^\/fillprocs 32 array def$/
+/fl    ps-src/rfc1245.ps       /^\/fl { $/
+/fraction      ps-src/rfc1245.ps       /^\/fraction \/currency \/guilsinglleft 
\/guilsinglright/
+/freq  ps-src/rfc1245.ps       /^\/freq dpi 18.75 div 8 div round dup 0 eq 
{pop 1} i/
+/gn    ps-src/rfc1245.ps       /^\/gn { $/
+/graymode      ps-src/rfc1245.ps       /^\/graymode true def$/
+/grayness      ps-src/rfc1245.ps       /^\/grayness {$/
+/guillemotleft ps-src/rfc1245.ps       /^\/guillemotleft \/guillemotright 
\/ellipsis \/.notdef /
+/home/www/pub/etags.c.gz       make-src/Makefile       
/^\/home\/www\/pub\/etags.c.gz: etags.c$/
+/home/www/pub/software/unix/etags.tar.gz       make-src/Makefile       
/^\/home\/www\/pub\/software\/unix\/etags.tar.gz: Makefile/
+/hx    ps-src/rfc1245.ps       /^\/hx { $/
+/i     ps-src/rfc1245.ps       /^\/i \/j \/k \/l \/m \/n \/o \/p \/q \/r \/s 
\/t \/u \/v \/w \/x \/y/
+/iacute        ps-src/rfc1245.ps       /^\/iacute \/igrave \/icircumflex 
\/idieresis \/ntilde \/o/
+/ic    ps-src/rfc1245.ps       /^\/ic [ $/
+/inch  ps-src/rfc1245.ps       /^\/inch {72 mul} def$/
+/ip    ps-src/rfc1245.ps       /^\/ip { $/
+/less  ps-src/rfc1245.ps       /^\/less \/equal \/greater \/question \/at \/A 
\/B \/C \/D \/E/
+/lnormalize    ps-src/rfc1245.ps       /^\/lnormalize { $/
+/manualpapersize       ps-src/rfc1245.ps       /^\/manualpapersize {$/
+/max   ps-src/rfc1245.ps       /^\/max {2 copy lt {exch} if pop} bind def$/
+/min   ps-src/rfc1245.ps       /^\/min {2 copy gt {exch} if pop} bind def$/
+/ms    ps-src/rfc1245.ps       /^\/ms { $/
+/nbluet        ps-src/rfc1245.ps       /^\/nbluet 256 array def$/
+/ngrayt        ps-src/rfc1245.ps       /^\/ngrayt 256 array def$/
+/ngreent       ps-src/rfc1245.ps       /^\/ngreent 256 array def$/
+/normalize     ps-src/rfc1245.ps       /^\/normalize {$/
+/nredt ps-src/rfc1245.ps       /^\/nredt 256 array def$/
+/numbersign    ps-src/rfc1245.ps       /^\/numbersign \/dollar \/percent 
\/ampersand \/quotesing/
+/ocircumflex   ps-src/rfc1245.ps       /^\/ocircumflex \/odieresis \/otilde 
\/uacute \/ugrave \/u/
+/ordfeminine   ps-src/rfc1245.ps       /^\/ordfeminine \/ordmasculine 
\/.notdef \/ae \/oslash \/q/
+/pagedimen     ps-src/rfc1245.ps       /^\/pagedimen { $/
+/papersize     ps-src/rfc1245.ps       /^\/papersize {$/
+/paragraph     ps-src/rfc1245.ps       /^\/paragraph \/germandbls \/registered 
\/copyright \/tra/
+/parenright    ps-src/rfc1245.ps       /^\/parenright \/asterisk \/plus 
\/comma \/hyphen \/period/
+/periodcentered        ps-src/rfc1245.ps       /^\/periodcentered 
\/quotesinglbase \/quotedblbase \/per/
+/quoteleft     ps-src/rfc1245.ps       /^\/quoteleft \/quoteright \/.notdef 
\/.notdef \/ydieresi/
+/restorematrix ps-src/rfc1245.ps       /^\/restorematrix {$/
+/s1    ps-src/rfc1245.ps       /^\/s1 1 string def$/
+/sangle        ps-src/rfc1245.ps       /^\/sangle 1 0 dmatrix defaultmatrix 
dtransform exch /
+/savematrix    ps-src/rfc1245.ps       /^\/savematrix {$/
+/setmanualfeed ps-src/rfc1245.ps       /^\/setmanualfeed {$/
+/setpapername  ps-src/rfc1245.ps       /^\/setpapername { $/
+/setpattern    ps-src/rfc1245.ps       /^\/setpattern {$/
+/two   ps-src/rfc1245.ps       /^\/two \/three \/four \/five \/six \/seven 
\/eight \/nine \//
+/udieresis     ps-src/rfc1245.ps       /^\/udieresis \/dagger \/.notdef \/cent 
\/sterling \/secti/
+/wbytes        ps-src/rfc1245.ps       /^\/wbytes { $/
+/wh    ps-src/rfc1245.ps       /^\/wh { $/
+/yen   ps-src/rfc1245.ps       /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef 
\/.notdef /
+2const forth-src/test-forth.fth        /^3 4 2constant 2const$/
+2val   forth-src/test-forth.fth        /^2const 2value 2val$/
+2var   forth-src/test-forth.fth        /^2variable 2var$/
+:a-forth-dictionary-entry      forth-src/test-forth.fth        /^create 
:a-forth-dictionary-entry$/
+<      tex-src/texinfo.tex     /^\\def<{{\\tt \\less}}$/
+<<     ruby-src/test.rb        /^        def <<(y)$/
+<=     ruby-src/test.rb        /^        def <=(y)$/
+<=>    ruby-src/test.rb        /^        def <=>(y)$/
+=      tex-src/texinfo.tex     /^\\global\\def={{\\tt \\char 61}}}$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\appendixsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\numberedsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\unnumberedsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = \\appendixsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = \\numberedsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = 
\\unnumberedsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\appendixsubsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\numberedsubsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\unnumberedsubsubsec$/
+=/f    ada-src/etags-test-for.ada      /^   function "=" (L, R : 
System.Address) return Boo/
+==     ruby-src/test.rb        /^        def ==(y)$/
+===    ruby-src/test.rb        /^        def ===(y)$/
+=\indexdummyfont       tex-src/texinfo.tex     /^\\let\\cite=\\indexdummyfont$/
+=\relax        tex-src/texinfo.tex     /^\\let\\appendix=\\relax$/
+=\relax        tex-src/texinfo.tex     /^\\let\\chapter=\\relax$/
+=\relax        tex-src/texinfo.tex     /^\\let\\section=\\relax$/
+=\relax        tex-src/texinfo.tex     /^\\let\\subsection=\\relax$/
+=\relax        tex-src/texinfo.tex     /^\\let\\subsubsection=\\relax$/
+=\smartitalic  tex-src/texinfo.tex     /^\\let\\cite=\\smartitalic$/
+=starts-with-equals!   scm-src/test.scm        /^(define =starts-with-equals! 
#t)$/
+>      tex-src/texinfo.tex     /^\\def>{{\\tt \\gtr}}$/
+>field1        forth-src/test-forth.fth        /^   9   field   >field1$/
+>field2        forth-src/test-forth.fth        /^   5   field   >field2$/
+A      c.c     162
+A      cp-src/c.C      /^void A::A() {}$/
+A      cp-src/c.C      117
+A      cp-src/c.C      39
+A      cp-src/c.C      56
+A      cp-src/c.C      57
+A      cp-src/c.C      73
+A      cp-src/fail.C   23
+A      cp-src/fail.C   7
+A      ruby-src/test1.ru       /^class A$/
+A      ruby-src/test1.ru       /^module A$/
+ABC    ruby-src/test1.ru       11
+ADASRC make-src/Makefile       /^ADASRC=etags-test-for.ada 2ataspri.adb 
2ataspri.ad/
+ADDRESS        c-src/emacs/src/gmalloc.c       /^#define ADDRESS(B)    ((void 
*) (((B) - 1) * BLOCKSIZ/
+ALIGNOF_STRUCT_LISP_VECTOR     c-src/emacs/src/lisp.h  1378
+ALLOCATED_BEFORE_DUMPING       c-src/emacs/src/gmalloc.c       /^#define 
ALLOCATED_BEFORE_DUMPING(P) \\$/
+ALLOCATE_PSEUDOVECTOR  c-src/emacs/src/lisp.h  /^#define 
ALLOCATE_PSEUDOVECTOR(type, field, tag)                       /
+ALLOCATE_ZEROED_PSEUDOVECTOR   c-src/emacs/src/lisp.h  /^#define 
ALLOCATE_ZEROED_PSEUDOVECTOR(type, field, /
+AND    y-src/cccp.c    11
+ANSIC  c-src/h.h       84
+ANSIC  c-src/h.h       85
+AREF   c-src/emacs/src/lisp.h  /^AREF (Lisp_Object array, ptrdiff_t idx)$/
+ARGS   make-src/Makefile       /^ARGS=- < srclist$/
+ARITH_EQUAL    c-src/emacs/src/lisp.h  3498
+ARITH_GRTR     c-src/emacs/src/lisp.h  3501
+ARITH_GRTR_OR_EQUAL    c-src/emacs/src/lisp.h  3503
+ARITH_LESS     c-src/emacs/src/lisp.h  3500
+ARITH_LESS_OR_EQUAL    c-src/emacs/src/lisp.h  3502
+ARITH_NOTEQUAL c-src/emacs/src/lisp.h  3499
+ARRAYELTS      c-src/emacs/src/lisp.h  /^#define ARRAYELTS(arr) (sizeof (arr) 
\/ sizeof (arr/
+ARRAYP c-src/emacs/src/lisp.h  /^ARRAYP (Lisp_Object x)$/
+ARRAY_MARK_FLAG        c-src/emacs/src/lisp.h  768
+ASCII_CHAR_P   c-src/emacs/src/lisp.h  /^#define ASCII_CHAR_P(c) UNSIGNED_CMP 
(c, <, 0x80)$/
+ASET   c-src/emacs/src/lisp.h  /^ASET (Lisp_Object array, ptrdiff_t idx, 
Lisp_Objec/
+ASIZE  c-src/emacs/src/lisp.h  /^ASIZE (Lisp_Object array)$/
+ASRC   make-src/Makefile       /^ASRC=empty.zz empty.zz.gz$/
+AST_Array::AST_Array   cp-src/c.C      /^AST_Array::AST_Array(UTL_ScopedName 
*n, unsigned l/
+AST_ConcreteType::AST_ConcreteType     cp-src/c.C      
/^AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeT/
+AST_Root       cp-src/c.C      92
+AT     cp-src/c.C      52
+AU     cp-src/c.C      53
+AUTOLOADP      c-src/emacs/src/lisp.h  /^AUTOLOADP (Lisp_Object x)$/
+AUTO_CONS      c-src/emacs/src/lisp.h  /^#define AUTO_CONS(name, a, b) 
Lisp_Object name = A/
+AUTO_CONS_EXPR c-src/emacs/src/lisp.h  /^#define AUTO_CONS_EXPR(a, b) \\$/
+AUTO_LIST1     c-src/emacs/src/lisp.h  /^#define AUTO_LIST1(name, a)           
                                \\$/
+AUTO_LIST2     c-src/emacs/src/lisp.h  /^#define AUTO_LIST2(name, a, b)        
                                        \\$/
+AUTO_LIST3     c-src/emacs/src/lisp.h  /^#define AUTO_LIST3(name, a, b, c)     
                                \\$/
+AUTO_LIST4     c-src/emacs/src/lisp.h  /^#define AUTO_LIST4(name, a, b, c, d)  
                                \\$/
+AUTO_STRING    c-src/emacs/src/lisp.h  /^#define AUTO_STRING(name, str)        
                                        \\$/
+AVAIL_ALLOCA   c-src/emacs/src/lisp.h  /^#define AVAIL_ALLOCA(size) (sa_avail 
-= (size), al/
+Abort_Handler_Pointer/t        ada-src/2ataspri.ads    /^   type 
Abort_Handler_Pointer is access procedure /
+Abort_Task/p   ada-src/2ataspri.adb    /^   procedure Abort_Task (T : TCB_Ptr) 
is$/
+Abort_Task/p   ada-src/2ataspri.ads    /^   procedure Abort_Task (T : 
TCB_Ptr);$/
+Abort_Wrapper/p        ada-src/2ataspri.adb    /^   procedure Abort_Wrapper$/
+Ada_funcs      c-src/etags.c   /^Ada_funcs (FILE *inf)$/
+Ada_getit      c-src/etags.c   /^Ada_getit (FILE *inf, const char 
*name_qualifier)$/
+Ada_help       c-src/etags.c   475
+Ada_suffixes   c-src/etags.c   473
+AddNullToNmStr pas-src/common.pas      /^function AddNullToNmStr; (*($/
+Address_To_Call_State/f        ada-src/2ataspri.adb    /^      function 
Address_To_Call_State is new$/
+Address_To_TCB_Ptr/f   ada-src/2ataspri.ads    /^   function 
Address_To_TCB_Ptr is new$/
+Advanced usage tex-src/gzip.texi       /^@node Advanced usage, Environment, 
Invoking gzip, /
+Aligned_Cons   c-src/emacs/src/lisp.h  4670
+Aligned_String c-src/emacs/src/lisp.h  4676
+AppendTextString       pas-src/common.pas      /^function 
AppendTextString;(*($/
+Arith_Comparison       c-src/emacs/src/lisp.h  3497
+Asm_help       c-src/etags.c   504
+Asm_labels     c-src/etags.c   /^Asm_labels (FILE *inf)$/
+Asm_suffixes   c-src/etags.c   493
+B      cp-src/c.C      /^void B::B() {}$/
+B      cp-src/c.C      122
+B      cp-src/c.C      54
+B      cp-src/c.C      56
+B      cp-src/c.C      74
+B      cp-src/fail.C   24
+B      cp-src/fail.C   8
+B      ruby-src/test1.ru       /^  class B$/
+BE_Node        cp-src/c.C      /^void BE_Node::BE_Node() {}$/
+BE_Node        cp-src/c.C      77
+BITS_PER_BITS_WORD     c-src/emacs/src/lisp.h  125
+BITS_PER_BITS_WORD     c-src/emacs/src/lisp.h  129
+BITS_PER_CHAR  c-src/emacs/src/lisp.h  136
+BITS_PER_EMACS_INT     c-src/emacs/src/lisp.h  139
+BITS_PER_LONG  c-src/emacs/src/lisp.h  138
+BITS_PER_SHORT c-src/emacs/src/lisp.h  137
+BITS_WORD_MAX  c-src/emacs/src/lisp.h  124
+BITS_WORD_MAX  c-src/emacs/src/lisp.h  128
+BLACK  cp-src/screen.hpp       12
+BLOCK  c-src/emacs/src/gmalloc.c       /^#define BLOCK(A)      (((char *) (A) 
- _heapbase) \/ BLO/
+BLOCKIFY       c-src/emacs/src/gmalloc.c       /^#define BLOCKIFY(SIZE)        
(((SIZE) + BLOCKSIZE - 1) \//
+BLOCKLOG       c-src/emacs/src/gmalloc.c       125
+BLOCKSIZE      c-src/emacs/src/gmalloc.c       126
+BLUE   cp-src/screen.hpp       13
+BOOL_VECTOR_BITS_PER_CHAR      c-src/emacs/src/lisp.h  114
+BOOL_VECTOR_BITS_PER_CHAR      c-src/emacs/src/lisp.h  115
+BOOL_VECTOR_P  c-src/emacs/src/lisp.h  /^BOOL_VECTOR_P (Lisp_Object a)$/
+BROWN  cp-src/screen.hpp       18
+BUFFERP        c-src/emacs/src/lisp.h  /^BUFFERP (Lisp_Object a)$/
+BUFFERSIZE     objc-src/Subprocess.h   43
+BUFFER_OBJFWDP c-src/emacs/src/lisp.h  /^BUFFER_OBJFWDP (union Lisp_Fwd *a)$/
+BYTE_MARK_STACK        c-src/emacs/src/lisp.h  3181
+Bar    lua-src/test.lua        /^function Square.something:Bar ()$/
+Bar    perl-src/kai-test.pl    /^package Bar;$/
+Barrier_Function_Pointer/t     ada-src/etags-test-for.ada      /^   type 
Barrier_Function_Pointer is access$/
+Bidule/b       ada-src/etags-test-for.ada      /^  protected body Bidule is$/
+Bidule/b       ada-src/waroquiers.ada  /^  protected body Bidule is$/
+Bidule/t       ada-src/etags-test-for.ada      /^  protected Bidule is$/
+Bidule/t       ada-src/waroquiers.ada  /^  protected Bidule is$/
+Body_Required/f        ada-src/etags-test-for.ada      /^   function 
Body_Required$/
+Boo    cp-src/c.C      /^    Boo(int _i, int _a, int _b) : i(_i), a(_a), b(/
+Boo    cp-src/c.C      129
+Boo::Boo       cp-src/c.C      /^Boo::Boo(Boo) :$/
+ButtonBar      pyt-src/server.py       /^def ButtonBar(frame, legend, ref, 
alternatives, co/
+C      cp-src/fail.C   /^                         C(int i) {x = i;}$/
+C      cp-src/fail.C   25
+C      cp-src/fail.C   9
+CALLMANY       c-src/emacs/src/lisp.h  /^#define CALLMANY(f, array) (f) 
(ARRAYELTS (array),/
+CALLN  c-src/emacs/src/lisp.h  /^#define CALLN(f, ...) CALLMANY (f, 
((Lisp_Object [/
+CAR    c-src/emacs/src/lisp.h  /^CAR (Lisp_Object c)$/
+CAR_SAFE       c-src/emacs/src/lisp.h  /^CAR_SAFE (Lisp_Object c)$/
+CATCHER        c-src/emacs/src/lisp.h  3021
+CDR    c-src/emacs/src/lisp.h  /^CDR (Lisp_Object c)$/
+CDR_SAFE       c-src/emacs/src/lisp.h  /^CDR_SAFE (Lisp_Object c)$/
+CFLAGS make-src/Makefile       /^CFLAGS=${WARNINGS} -ansi -g3 # -pg -O$/
+CHAR   c-src/etags.c   /^#define CHAR(x)               ((unsigned int)(x) & 
(CHARS - 1))/
+CHAR   y-src/cccp.c    7
+CHARACTERBITS  c-src/emacs/src/lisp.h  2457
+CHARS  c-src/etags.c   157
+CHARTAB_SIZE_BITS      c-src/emacs/src/lisp.h  1565
+CHARTAB_SIZE_BITS_0    c-src/emacs/src/lisp.h  1567
+CHARTAB_SIZE_BITS_1    c-src/emacs/src/lisp.h  1568
+CHARTAB_SIZE_BITS_2    c-src/emacs/src/lisp.h  1569
+CHARTAB_SIZE_BITS_3    c-src/emacs/src/lisp.h  1570
+CHAR_ALT       c-src/emacs/src/lisp.h  2445
+CHAR_BIT       c-src/emacs/src/lisp.h  2957
+CHAR_BIT       c-src/emacs/src/lisp.h  2959
+CHAR_BIT       c-src/emacs/src/lisp.h  2964
+CHAR_BIT       c-src/emacs/src/lisp.h  2969
+CHAR_BIT       c-src/emacs/src/lisp.h  2974
+CHAR_BIT       c-src/emacs/src/lisp.h  2978
+CHAR_BIT       c-src/emacs/src/lisp.h  2983
+CHAR_CLASS_MAX_LENGTH  c-src/emacs/src/regex.h 593
+CHAR_CLASS_MAX_LENGTH  c-src/emacs/src/regex.h 597
+CHAR_CLASS_MAX_LENGTH  c-src/emacs/src/regex.h 605
+CHAR_CTL       c-src/emacs/src/lisp.h  2449
+CHAR_HYPER     c-src/emacs/src/lisp.h  2447
+CHAR_META      c-src/emacs/src/lisp.h  2450
+CHAR_MODIFIER_MASK     c-src/emacs/src/lisp.h  2452
+CHAR_SHIFT     c-src/emacs/src/lisp.h  2448
+CHAR_SUPER     c-src/emacs/src/lisp.h  2446
+CHAR_TABLE_EXTRA_SLOTS c-src/emacs/src/lisp.h  /^CHAR_TABLE_EXTRA_SLOTS 
(struct Lisp_Char_Table *ct/
+CHAR_TABLE_P   c-src/emacs/src/lisp.h  /^CHAR_TABLE_P (Lisp_Object a)$/
+CHAR_TABLE_REF c-src/emacs/src/lisp.h  /^CHAR_TABLE_REF (Lisp_Object ct, int 
idx)$/
+CHAR_TABLE_REF_ASCII   c-src/emacs/src/lisp.h  /^CHAR_TABLE_REF_ASCII 
(Lisp_Object ct, ptrdiff_t id/
+CHAR_TABLE_SET c-src/emacs/src/lisp.h  /^CHAR_TABLE_SET (Lisp_Object ct, int 
idx, Lisp_Obje/
+CHAR_TABLE_STANDARD_SLOTS      c-src/emacs/src/lisp.h  1697
+CHAR_TYPE_SIZE y-src/cccp.y    87
+CHECKFLAGS     make-src/Makefile       /^CHECKFLAGS=-DDEBUG 
-Wno-unused-function$/
+CHECKOBJS      make-src/Makefile       /^CHECKOBJS=chkmalloc.o chkxm.o$/
+CHECK_ARRAY    c-src/emacs/src/lisp.h  /^CHECK_ARRAY (Lisp_Object x, 
Lisp_Object predicate)/
+CHECK_BOOL_VECTOR      c-src/emacs/src/lisp.h  /^CHECK_BOOL_VECTOR 
(Lisp_Object x)$/
+CHECK_BUFFER   c-src/emacs/src/lisp.h  /^CHECK_BUFFER (Lisp_Object x)$/
+CHECK_CONS     c-src/emacs/src/lisp.h  /^CHECK_CONS (Lisp_Object x)$/
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h  571
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h  572
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h  579
+CHECK_LIST     c-src/emacs/src/lisp.h  /^CHECK_LIST (Lisp_Object x)$/
+CHECK_LIST_CONS        c-src/emacs/src/lisp.h  /^# define CHECK_LIST_CONS(x, 
y) lisp_h_CHECK_LIST_C/
+CHECK_NATNUM   c-src/emacs/src/lisp.h  /^CHECK_NATNUM (Lisp_Object x)$/
+CHECK_NUMBER   c-src/emacs/src/lisp.h  /^# define CHECK_NUMBER(x) 
lisp_h_CHECK_NUMBER (x)$/
+CHECK_NUMBER_CAR       c-src/emacs/src/lisp.h  /^CHECK_NUMBER_CAR (Lisp_Object 
x)$/
+CHECK_NUMBER_CDR       c-src/emacs/src/lisp.h  /^CHECK_NUMBER_CDR (Lisp_Object 
x)$/
+CHECK_NUMBER_COERCE_MARKER     c-src/emacs/src/lisp.h  /^#define 
CHECK_NUMBER_COERCE_MARKER(x)                                 \\$/
+CHECK_NUMBER_OR_FLOAT  c-src/emacs/src/lisp.h  /^CHECK_NUMBER_OR_FLOAT 
(Lisp_Object x)$/
+CHECK_NUMBER_OR_FLOAT_COERCE_MARKER    c-src/emacs/src/lisp.h  /^#define 
CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x)                                /
+CHECK_PROCESS  c-src/emacs/src/lisp.h  /^CHECK_PROCESS (Lisp_Object x)$/
+CHECK_RANGED_INTEGER   c-src/emacs/src/lisp.h  /^#define 
CHECK_RANGED_INTEGER(x, lo, hi)                                       \\$/
+CHECK_STRING_CAR       c-src/emacs/src/lisp.h  /^CHECK_STRING_CAR (Lisp_Object 
x)$/
+CHECK_SYMBOL   c-src/emacs/src/lisp.h  /^# define CHECK_SYMBOL(x) 
lisp_h_CHECK_SYMBOL (x)$/
+CHECK_TYPE     c-src/emacs/src/lisp.h  /^# define CHECK_TYPE(ok, predicate, x) 
lisp_h_CHECK/
+CHECK_TYPE_RANGED_INTEGER      c-src/emacs/src/lisp.h  /^#define 
CHECK_TYPE_RANGED_INTEGER(type, x) \\$/
+CHECK_VECTOR   c-src/emacs/src/lisp.h  /^CHECK_VECTOR (Lisp_Object x)$/
+CHECK_VECTOR_OR_STRING c-src/emacs/src/lisp.h  /^CHECK_VECTOR_OR_STRING 
(Lisp_Object x)$/
+CHECK_WINDOW   c-src/emacs/src/lisp.h  /^CHECK_WINDOW (Lisp_Object x)$/
+CK_ABS_C       y-src/parse.y   /^#define CK_ABS_C(x)   if((x)<MIN_COL || 
(x)>MAX_COL)/
+CK_ABS_R       y-src/parse.y   /^#define CK_ABS_R(x)   if((x)<MIN_ROW || 
(x)>MAX_ROW)/
+CK_REL_C       y-src/parse.y   /^#define CK_REL_C(x)   if(   ((x)>0 && 
MAX_COL-(x)<cu/
+CK_REL_R       y-src/parse.y   /^#define CK_REL_R(x)   if(   ((x)>0 && 
MAX_ROW-(x)<cu/
+CMultiChannelCSC19_3D  cp-src/c.C      2
+CNL    c-src/etags.c   /^#define CNL()                                         
                \\$/
+CNL_SAVE_DEFINEDEF     c-src/etags.c   /^#define CNL_SAVE_DEFINEDEF()          
                                \\$/
+COBOLFLAGS     make-src/Makefile       /^COBOLFLAGS=--language=none 
--regex='\/.......[a-zA-/
+COLORS cp-src/screen.hpp       11
+COMPILEDP      c-src/emacs/src/lisp.h  /^COMPILEDP (Lisp_Object a)$/
+COMPILED_ARGLIST       c-src/emacs/src/lisp.h  2431
+COMPILED_BYTECODE      c-src/emacs/src/lisp.h  2432
+COMPILED_CONSTANTS     c-src/emacs/src/lisp.h  2433
+COMPILED_DOC_STRING    c-src/emacs/src/lisp.h  2435
+COMPILED_INTERACTIVE   c-src/emacs/src/lisp.h  2436
+COMPILED_STACK_DEPTH   c-src/emacs/src/lisp.h  2434
+CONDITION_CASE c-src/emacs/src/lisp.h  3021
+CONSP  c-src/emacs/src/lisp.h  /^# define CONSP(x) lisp_h_CONSP (x)$/
+CONSTYPE_HEAP  c-src/emacs/src/lisp.h  3739
+CONSTYPE_PURE  c-src/emacs/src/lisp.h  3739
+CONS_TO_INTEGER        c-src/emacs/src/lisp.h  /^#define CONS_TO_INTEGER(cons, 
type, var)                              \\$/
+CONVERT_CHARSTRING_TO_VALUE    pas-src/common.pas      /^procedure 
CONVERT_CHARSTRING_TO_VALUE;(*($/
+CPPFLAGS       make-src/Makefile       /^CPPFLAGS=${CHECKFLAGS} -DSTDC_HEADERS 
-DHAVE_GETCW/
+CPSRC  make-src/Makefile       /^CPSRC=c.C abstract.C abstract.H cfront.H 
burton.cp/
+CSRC   make-src/Makefile       /^CSRC=abbrev.c ..\/etags\/h.h .\/\/c.c 
torture.c getopt/
+CTAGS  c-src/etags.c   146
+CTAGS  c-src/etags.c   147
+CTAGS  c-src/etags.c   149
+CTAGS  make-src/Makefile       /^CTAGS: ctags ${infiles}$/
+CTAGS% make-src/Makefile       /^CTAGS%: ctags% ${infiles}$/
+CTAGS13 CTAGS14 CTAGS15        make-src/Makefile       /^CTAGS13 CTAGS14 
CTAGS15: ctags% ${infiles}$/
+CYAN   cp-src/screen.hpp       15
+C_AUTO c-src/etags.c   2198
+C_EXT  c-src/etags.c   2193
+C_JAVA c-src/etags.c   2197
+C_PLAIN        c-src/etags.c   2194
+C_PLPL c-src/etags.c   2195
+C_STAR c-src/etags.c   2196
+C_entries      c-src/etags.c   /^C_entries (int c_ext, FILE *inf)$/
+C_stab_entry   c-src/etags.c   2271
+C_symtype      c-src/etags.c   /^C_symtype (char *str, int len, int c_ext)$/
+ChangeFileType pas-src/common.pas      /^function ChangeFileType; (*(FileName 
: NameString;/
+Circle.getPos  lua-src/test.lua        /^function Circle.getPos ()$/
+Cjava_entries  c-src/etags.c   /^Cjava_entries (FILE *inf)$/
+Cjava_help     c-src/etags.c   551
+Cjava_suffixes c-src/etags.c   549
+ClassExample   ruby-src/test.rb        /^    class ClassExample$/
+Clear/p        ada-src/2ataspri.adb    /^   procedure Clear (Cell : in out 
TAS_Cell) is$/
+Clear/p        ada-src/2ataspri.ads    /^   procedure Clear        (Cell : in 
out TAS_Cell)/
+Cobol_help     c-src/etags.c   558
+Cobol_paragraphs       c-src/etags.c   /^Cobol_paragraphs (FILE *inf)$/
+Cobol_suffixes c-src/etags.c   556
+CommentAD      php-src/lce_functions.php       /^      function CommentAD($/
+CommentAD      php-src/lce_functions.php       70
+ConcatT        pas-src/common.pas      /^function ConcatT;(*($/
+Concept Index  tex-src/gzip.texi       /^@node Concept Index, , Problems, Top$/
+Cond_Signal/p  ada-src/2ataspri.adb    /^   procedure Cond_Signal (Cond : in 
out Condition_/
+Cond_Signal/p  ada-src/2ataspri.ads    /^   procedure Cond_Signal (Cond : in 
out Condition_/
+Cond_Timed_Wait/p      ada-src/2ataspri.adb    /^   procedure Cond_Timed_Wait$/
+Cond_Timed_Wait/p      ada-src/2ataspri.ads    /^   procedure Cond_Timed_Wait$/
+Cond_Wait/p    ada-src/2ataspri.adb    /^   procedure Cond_Wait (Cond : in out 
Condition_Va/
+Cond_Wait/p    ada-src/2ataspri.ads    /^   procedure Cond_Wait (Cond : in out 
Condition_Va/
+Condition_Variable/t   ada-src/2ataspri.ads    /^   type Condition_Variable is 
private;$/
+Condition_Variable/t   ada-src/2ataspri.ads    /^   type Condition_Variable 
is$/
+Configure      pyt-src/server.py       /^class Configure(Frame, ControlEdit):$/
+ConfirmQuit    pyt-src/server.py       /^def ConfirmQuit(frame, context):$/
+Constant       ruby-src/test1.ru       42
+ControlEdit    pyt-src/server.py       /^class ControlEdit(Frame):$/
+Controls       pyt-src/server.py       /^class Controls:$/
+CopyTextString pas-src/common.pas      /^function CopyTextString;(*($/
+Copying        tex-src/gzip.texi       /^@node Copying, Overview, , Top$/
+Cplusplus_entries      c-src/etags.c   /^Cplusplus_entries (FILE *inf)$/
+Cplusplus_help c-src/etags.c   540
+Cplusplus_suffixes     c-src/etags.c   535
+Create_LL_Task/p       ada-src/2ataspri.adb    /^   procedure Create_LL_Task$/
+Create_LL_Task/p       ada-src/2ataspri.ads    /^   procedure Create_LL_Task$/
+Cstar_entries  c-src/etags.c   /^Cstar_entries (FILE *inf)$/
+Cstar_suffixes c-src/etags.c   562
+Cube.data.getFoo       lua-src/test.lua        /^function Cube.data.getFoo ()$/
+D      cp-src/fail.C   /^              D() : ::A::T2::T(97), x(1066) {}$/
+D      cp-src/fail.C   41
+DAEMON_RUNNING c-src/emacs/src/lisp.h  4258
+DAEMON_RUNNING c-src/emacs/src/lisp.h  4262
+DARKGRAY       cp-src/screen.hpp       20
+DEAFUN c.c     /^DEAFUN ("expand-file-name", Fexpand_file_name, Sex/
+DEBUG  c-src/etags.c   84
+DEBUG  c-src/etags.c   85
+DEBUG  c-src/etags.c   87
+DEBUG  objc-src/PackInsp.m     37
+DECLARE_GDB_SYM        c-src/emacs/src/lisp.h  /^#define DECLARE_GDB_SYM(type, 
id) type const id EX/
+DEFAULT_HASH_SIZE      c-src/emacs/src/lisp.h  1940
+DEFAULT_REHASH_SIZE    c-src/emacs/src/lisp.h  1950
+DEFAULT_REHASH_THRESHOLD       c-src/emacs/src/lisp.h  1946
+DEFINE_GDB_SYMBOL_BEGIN        c-src/emacs/src/lisp.h  /^# define 
DEFINE_GDB_SYMBOL_BEGIN(type, id) DECLARE/
+DEFINE_GDB_SYMBOL_BEGIN        c-src/emacs/src/lisp.h  /^# define 
DEFINE_GDB_SYMBOL_BEGIN(type, id) extern /
+DEFINE_GDB_SYMBOL_END  c-src/emacs/src/lisp.h  /^# define 
DEFINE_GDB_SYMBOL_END(id) = id;$/
+DEFINE_GDB_SYMBOL_END  c-src/emacs/src/lisp.h  /^# define 
DEFINE_GDB_SYMBOL_END(val) ;$/
+DEFINE_LISP_SYMBOL     c-src/emacs/src/lisp.h  /^#define 
DEFINE_LISP_SYMBOL(name) \\$/
+DEFINE_NON_NIL_Q_SYMBOL_MACROS c-src/emacs/src/lisp.h  755
+DEFSYM c-src/emacs/src/lisp.h  /^#define DEFSYM(sym, name) \/* empty *\/$/
+DEFSYM c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (SYMBOL_CONSTANT_P, int, 
(Lisp_Ob/
+DEFUN  c-src/emacs/src/lisp.h  /^#define DEFUN(lname, fnname, sname, minargs, 
maxar/
+DEFUN_ARGS_0   c-src/emacs/src/lisp.h  714
+DEFUN_ARGS_1   c-src/emacs/src/lisp.h  715
+DEFUN_ARGS_2   c-src/emacs/src/lisp.h  716
+DEFUN_ARGS_3   c-src/emacs/src/lisp.h  717
+DEFUN_ARGS_4   c-src/emacs/src/lisp.h  718
+DEFUN_ARGS_5   c-src/emacs/src/lisp.h  719
+DEFUN_ARGS_6   c-src/emacs/src/lisp.h  721
+DEFUN_ARGS_7   c-src/emacs/src/lisp.h  723
+DEFUN_ARGS_8   c-src/emacs/src/lisp.h  725
+DEFUN_ARGS_MANY        c-src/emacs/src/lisp.h  712
+DEFUN_ARGS_UNEVALLED   c-src/emacs/src/lisp.h  713
+DEFUN_func2    c.c     /^DEFUN_func2()$/
+DEFVAR_BOOL    c-src/emacs/src/lisp.h  /^#define DEFVAR_BOOL(lname, vname, 
doc)                \\$/
+DEFVAR_BUFFER_DEFAULTS c-src/emacs/src/lisp.h  /^#define 
DEFVAR_BUFFER_DEFAULTS(lname, vname, doc)     /
+DEFVAR_INT     c-src/emacs/src/lisp.h  /^#define DEFVAR_INT(lname, vname, doc) 
        \\$/
+DEFVAR_KBOARD  c-src/emacs/src/lisp.h  /^#define DEFVAR_KBOARD(lname, vname, 
doc)                      \\$/
+DEFVAR_LISP    c-src/emacs/src/lisp.h  /^#define DEFVAR_LISP(lname, vname, 
doc)                \\$/
+DEFVAR_LISP_NOPRO      c-src/emacs/src/lisp.h  /^#define 
DEFVAR_LISP_NOPRO(lname, vname, doc)  \\$/
+DEVICE_LAST    c-src/h.h       24
+DEVICE_SWP     c-src/h.h       23
+DOS_NT c-src/etags.c   117
+DOS_NT c-src/etags.c   118
+DUMPED c-src/emacs/src/gmalloc.c       80
+Debug  cp-src/functions.cpp    /^void Debug ( int lineno, int level, char* 
func , c/
+Def_   ruby-src/test1.ru       12
+DisposeANameList       pas-src/common.pas      /^procedure DisposeANameList( $/
+DisposeNameList        pas-src/common.pas      /^procedure DisposeNameList;$/
+ELEM_I c-src/h.h       3
+ELSRC  make-src/Makefile       /^ELSRC=TAGTEST.EL 
emacs\/lisp\/progmodes\/etags.el$/
+EMACS_INT      c-src/emacs/src/lisp.h  103
+EMACS_INT      c-src/emacs/src/lisp.h  91
+EMACS_INT      c-src/emacs/src/lisp.h  96
+EMACS_INT_MAX  c-src/emacs/src/lisp.h  105
+EMACS_INT_MAX  c-src/emacs/src/lisp.h  93
+EMACS_INT_MAX  c-src/emacs/src/lisp.h  98
+EMACS_LISP_H   c-src/emacs/src/lisp.h  22
+EMACS_NAME     c-src/etags.c   786
+EMACS_UINT     c-src/emacs/src/lisp.h  104
+EMACS_UINT     c-src/emacs/src/lisp.h  92
+EMACS_UINT     c-src/emacs/src/lisp.h  97
+ENTRY  c-src/sysdep.h  /^#define       ENTRY(name)                             
                              \\$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^#define ENUM_BF(TYPE) enum TYPE$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^#define ENUM_BF(TYPE) unsigned int$/
+EQ     c-src/emacs/src/lisp.h  /^# define EQ(x, y) lisp_h_EQ (x, y)$/
+EQUAL  y-src/cccp.c    12
+ERLSRC make-src/Makefile       /^ERLSRC=gs_dialog.erl lines.erl lists.erl$/
+ERROR  y-src/cccp.c    9
+ERROR  y-src/parse.y   304
+ETAGS  make-src/Makefile       /^ETAGS: FRC etags ${infiles}$/
+ETAGS% make-src/Makefile       /^ETAGS%: FRC etags% ${infiles}$/
+ETAGS12        make-src/Makefile       /^ETAGS12: etags12 ${infiles}$/
+ETAGS13 ETAGS14 ETAGS15        make-src/Makefile       /^ETAGS13 ETAGS14 
ETAGS15: etags% ${infiles}$/
+EXFUN  c-src/emacs/src/lisp.h  /^#define EXFUN(fnname, maxargs) \\$/
+EXTAGS make-src/Makefile       /^EXTAGS: extags ${infiles} Makefile$/
+EXTERNALLY_VISIBLE     c-src/emacs/src/keyboard.c      3497
+EXTERNALLY_VISIBLE     c-src/emacs/src/keyboard.c      4372
+EmptyNmStr     pas-src/common.pas      /^function EmptyNmStr(* : 
NameString*);$/
+Environment    tex-src/gzip.texi       /^@node Environment, Tapes, Advanced 
usage, Top$/
+Erlang_functions       c-src/etags.c   /^Erlang_functions (FILE *inf)$/
+Erlang_help    c-src/etags.c   567
+Erlang_suffixes        c-src/etags.c   565
+ErrStrToNmStr  pas-src/common.pas      /^function ErrStrToNmStr;(*($/
+Error_Information/t    ada-src/2ataspri.ads    /^   type Error_Information is 
new Interfaces.C.POSI/
+Exit_LL_Task/p ada-src/2ataspri.adb    /^   procedure Exit_LL_Task is$/
+Exit_LL_Task/p ada-src/2ataspri.ads    /^   procedure Exit_LL_Task;$/
+ExtractCommentInfo     pas-src/common.pas      /^procedure ExtractCommentInfo; 
(*($/
+FASTCFLAGS     make-src/Makefile       /^FASTCFLAGS=-O3 -finline-functions 
-ffast-math -fun/
+FASTCFLAGSWARN make-src/Makefile       /^FASTCFLAGSWARN=${WARNINGS} -Werror 
${FASTCFLAGS}$/
+FILTER make-src/Makefile       /^FILTER=grep -v 
'\\.[Cchefy][lor]*,[1-9][0-9]*' || t/
+FINALIZERP     c-src/emacs/src/lisp.h  /^FINALIZERP (Lisp_Object x)$/
+FINAL_FREE_BLOCKS      c-src/emacs/src/gmalloc.c       135
+FIXNUM_BITS    c-src/emacs/src/lisp.h  252
+FIXNUM_OVERFLOW_P      c-src/emacs/src/lisp.h  /^#define FIXNUM_OVERFLOW_P(i) 
\\$/
+FIXNUM_OVERFLOW_P      c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (EQ, bool, 
(Lisp_Object x, Lisp_O/
+FLOATP c-src/emacs/src/lisp.h  /^# define FLOATP(x) lisp_h_FLOATP (x)$/
+FLOAT_TO_STRING_BUFSIZE        c-src/emacs/src/lisp.h  3927
+FORTHSRC       make-src/Makefile       /^FORTHSRC=test-forth.fth$/
+FOR_EACH_ALIST_VALUE   c-src/emacs/src/lisp.h  /^#define 
FOR_EACH_ALIST_VALUE(head_var, list_var, v/
+FOR_EACH_TAIL  c-src/emacs/src/lisp.h  /^#define FOR_EACH_TAIL(hare, list, 
tortoise, n)        \\$/
+FRAMEP c-src/emacs/src/lisp.h  /^FRAMEP (Lisp_Object a)$/
+FRC    make-src/Makefile       /^FRC:;$/
+FREEFLOOD      c-src/emacs/src/gmalloc.c       1858
+FSRC   make-src/Makefile       /^FSRC=entry.for entry.strange_suffix 
entry.strange$/
+FUN0   y-src/parse.y   /^yylex FUN0()$/
+FUN1   y-src/parse.y   /^str_to_col FUN1(char **,str)$/
+FUN1   y-src/parse.y   /^yyerror FUN1(char *, s)$/
+FUN2   y-src/parse.y   /^make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)$/
+FUN2   y-src/parse.y   /^parse_cell_or_range FUN2(char **,ptr, struct rng */
+FUNCTIONP      c-src/emacs/src/lisp.h  /^FUNCTIONP (Lisp_Object obj)$/
+FUNCTION_KEY_OFFSET    c-src/emacs/src/keyboard.c      4766
+FUNCTION_KEY_OFFSET    c-src/emacs/src/keyboard.c      5061
+F_getit        c-src/etags.c   /^F_getit (FILE *inf)$/
+F_takeprec     c-src/etags.c   /^F_takeprec (void)$/
+Fabbrev_expansion      c-src/abbrev.c  /^DEFUN ("abbrev-expansion", 
Fabbrev_expansion, Sabb/
+Fabbrev_symbol c-src/abbrev.c  /^DEFUN ("abbrev-symbol", Fabbrev_symbol, 
Sabbrev_sy/
+Fabort_recursive_edit  c-src/emacs/src/keyboard.c      /^DEFUN 
("abort-recursive-edit", Fabort_recursive_ed/
+Fails_t        c-src/h.h       5
+Fclear_abbrev_table    c-src/abbrev.c  /^DEFUN ("clear-abbrev-table", 
Fclear_abbrev_table, /
+Fclear_this_command_keys       c-src/emacs/src/keyboard.c      /^DEFUN 
("clear-this-command-keys", Fclear_this_comm/
+Fcommand_error_default_function        c-src/emacs/src/keyboard.c      /^DEFUN 
("command-error-default-function", Fcommand_/
+Fcurrent_idle_time     c-src/emacs/src/keyboard.c      /^DEFUN 
("current-idle-time", Fcurrent_idle_time, Sc/
+Fcurrent_input_mode    c-src/emacs/src/keyboard.c      /^DEFUN 
("current-input-mode", Fcurrent_input_mode, /
+Fdefine_abbrev c-src/abbrev.c  /^DEFUN ("define-abbrev", Fdefine_abbrev, 
Sdefine_ab/
+Fdefine_abbrev_table   c-src/abbrev.c  /^DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table/
+Fdefine_global_abbrev  c-src/abbrev.c  /^DEFUN ("define-global-abbrev", 
Fdefine_global_abbr/
+Fdefine_mode_abbrev    c-src/abbrev.c  /^DEFUN ("define-mode-abbrev", 
Fdefine_mode_abbrev, /
+Fdiscard_input c-src/emacs/src/keyboard.c      /^DEFUN ("discard-input", 
Fdiscard_input, Sdiscard_i/
+Fevent_convert_list    c-src/emacs/src/keyboard.c      /^DEFUN 
("event-convert-list", Fevent_convert_list, /
+Fevent_symbol_parse_modifiers  c-src/emacs/src/keyboard.c      /^DEFUN 
("internal-event-symbol-parse-modifiers", Fe/
+Fexit_recursive_edit   c-src/emacs/src/keyboard.c      /^DEFUN 
("exit-recursive-edit", Fexit_recursive_edit/
+Fexpand_abbrev c-src/abbrev.c  /^DEFUN ("expand-abbrev", Fexpand_abbrev, 
Sexpand_ab/
+Finalize_Cond/p        ada-src/2ataspri.adb    /^   procedure Finalize_Cond 
(Cond : in out Conditio/
+Finalize_Cond/p        ada-src/2ataspri.ads    /^   procedure Finalize_Cond 
(Cond : in out Conditio/
+Finalize_Lock/p        ada-src/2ataspri.adb    /^   procedure Finalize_Lock (L 
: in out Lock) is$/
+Finalize_Lock/p        ada-src/2ataspri.ads    /^   procedure Finalize_Lock (L 
: in out Lock);$/
+Finalize_TAS_Cell/p    ada-src/2ataspri.adb    /^   procedure 
Finalize_TAS_Cell (Cell : in out TAS_/
+Finalize_TAS_Cell/p    ada-src/2ataspri.ads    /^   procedure 
Finalize_TAS_Cell   (Cell : in out TA/
+Finput_pending_p       c-src/emacs/src/keyboard.c      /^DEFUN 
("input-pending-p", Finput_pending_p, Sinput/
+Finsert_abbrev_table_description       c-src/abbrev.c  /^DEFUN 
("insert-abbrev-table-description", Finsert_/
+First100Chars  pas-src/common.pas      /^procedure First100Chars; (*($/
+Fmake_abbrev_table     c-src/abbrev.c  /^DEFUN ("make-abbrev-table", 
Fmake_abbrev_table, Sm/
+Foo    perl-src/kai-test.pl    /^package Foo;$/
+Foo::Bar       perl-src/kai-test.pl    /^package Foo::Bar;$/
+Fopen_dribble_file     c-src/emacs/src/keyboard.c      /^DEFUN 
("open-dribble-file", Fopen_dribble_file, So/
+Forth_help     c-src/etags.c   573
+Forth_suffixes c-src/etags.c   571
+Forth_words    c-src/etags.c   /^Forth_words (FILE *inf)$/
+Fortran_functions      c-src/etags.c   /^Fortran_functions (FILE *inf)$/
+Fortran_help   c-src/etags.c   579
+Fortran_suffixes       c-src/etags.c   577
+Fposn_at_point c-src/emacs/src/keyboard.c      /^DEFUN ("posn-at-point", 
Fposn_at_point, Sposn_at_p/
+Fposn_at_x_y   c-src/emacs/src/keyboard.c      /^DEFUN ("posn-at-x-y", 
Fposn_at_x_y, Sposn_at_x_y, /
+Fread_key_sequence     c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence", Fread_key_sequence, Sr/
+Fread_key_sequence_vector      c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence-vector", Fread_key_seque/
+Frecent_keys   c-src/emacs/src/keyboard.c      /^DEFUN ("recent-keys", 
Frecent_keys, Srecent_keys, /
+Frecursion_depth       c-src/emacs/src/keyboard.c      /^DEFUN 
("recursion-depth", Frecursion_depth, Srecur/
+Frecursive_edit        c-src/emacs/src/keyboard.c      /^DEFUN 
("recursive-edit", Frecursive_edit, Srecursi/
+Freset_this_command_lengths    c-src/emacs/src/keyboard.c      /^DEFUN 
("reset-this-command-lengths", Freset_this_c/
+Fset_input_interrupt_mode      c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-interrupt-mode", Fset_input_inte/
+Fset_input_meta_mode   c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-meta-mode", Fset_input_meta_mode/
+Fset_input_mode        c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-mode", Fset_input_mode, Sset_inp/
+Fset_output_flow_control       c-src/emacs/src/keyboard.c      /^DEFUN 
("set-output-flow-control", Fset_output_flow/
+Fset_quit_char c-src/emacs/src/keyboard.c      /^DEFUN ("set-quit-char", 
Fset_quit_char, Sset_quit_/
+Fsuspend_emacs c-src/emacs/src/keyboard.c      /^DEFUN ("suspend-emacs", 
Fsuspend_emacs, Ssuspend_e/
+Fthis_command_keys     c-src/emacs/src/keyboard.c      /^DEFUN 
("this-command-keys", Fthis_command_keys, St/
+Fthis_command_keys_vector      c-src/emacs/src/keyboard.c      /^DEFUN 
("this-command-keys-vector", Fthis_command_k/
+Fthis_single_command_keys      c-src/emacs/src/keyboard.c      /^DEFUN 
("this-single-command-keys", Fthis_single_co/
+Fthis_single_command_raw_keys  c-src/emacs/src/keyboard.c      /^DEFUN 
("this-single-command-raw-keys", Fthis_singl/
+Ftop_level     c-src/emacs/src/keyboard.c      /^DEFUN ("top-level", 
Ftop_level, Stop_level, 0, 0, /
+Ftrack_mouse   c-src/emacs/src/keyboard.c      /^DEFUN 
("internal--track-mouse", Ftrack_mouse, Stra/
+Funexpand_abbrev       c-src/abbrev.c  /^DEFUN ("unexpand-abbrev", 
Funexpand_abbrev, Sunexp/
+Fx_get_selection_internal      c.c     /^       Fx_get_selection_internal, 
Sx_get_selection/
+Fx_get_selection_internal      c.c     /^DEFUN ("x-get-selection-internal", 
Fx_get_selectio/
+Fy_get_selection_internal      c.c     /^      Fy_get_selection_internal, 
Sy_get_selection_/
+GCALIGNED      c-src/emacs/src/lisp.h  288
+GCALIGNED      c-src/emacs/src/lisp.h  290
+GCALIGNMENT    c-src/emacs/src/lisp.h  243
+GCPRO1 c-src/emacs/src/lisp.h  /^#define GCPRO1(a)                             
                        \\$/
+GCPRO1 c-src/emacs/src/lisp.h  /^#define GCPRO1(varname) ((void) gcpro1)$/
+GCPRO2 c-src/emacs/src/lisp.h  /^#define GCPRO2(a, b)                          
                        \\$/
+GCPRO2 c-src/emacs/src/lisp.h  /^#define GCPRO2(varname1, varname2) ((void) 
gcpro2,/
+GCPRO3 c-src/emacs/src/lisp.h  /^#define GCPRO3(a, b, c)                       
                                \\$/
+GCPRO3 c-src/emacs/src/lisp.h  /^#define GCPRO3(varname1, varname2, varname3) 
\\$/
+GCPRO4 c-src/emacs/src/lisp.h  /^#define GCPRO4(a, b, c, d)                    
                        \\$/
+GCPRO4 c-src/emacs/src/lisp.h  /^#define GCPRO4(varname1, varname2, varname3, 
varna/
+GCPRO5 c-src/emacs/src/lisp.h  /^#define GCPRO5(a, b, c, d, e)                 
                        \\$/
+GCPRO5 c-src/emacs/src/lisp.h  /^#define GCPRO5(varname1, varname2, varname3, 
varna/
+GCPRO6 c-src/emacs/src/lisp.h  /^#define GCPRO6(a, b, c, d, e, f)              
                        \\$/
+GCPRO6 c-src/emacs/src/lisp.h  /^#define GCPRO6(varname1, varname2, varname3, 
varna/
+GCPRO7 c-src/emacs/src/lisp.h  /^#define GCPRO7(a, b, c, d, e, f, g)           
                        \\$/
+GCPRO7 c-src/emacs/src/lisp.h  /^#define GCPRO7(a, b, c, d, e, f, g) (GCPRO6 
(a, b,/
+GCTYPEBITS     c-src/emacs/src/lisp.h  /^DEFINE_GDB_SYMBOL_BEGIN (int, 
GCTYPEBITS)$/
+GCTYPEBITS     c-src/emacs/src/lisp.h  67
+GC_MAKE_GCPROS_NOOPS   c-src/emacs/src/lisp.h  3172
+GC_MARK_STACK  c-src/emacs/src/lisp.h  3177
+GC_MARK_STACK_CHECK_GCPROS     c-src/emacs/src/lisp.h  3173
+GC_USE_GCPROS_AS_BEFORE        c-src/emacs/src/lisp.h  3171
+GC_USE_GCPROS_CHECK_ZOMBIES    c-src/emacs/src/lisp.h  3174
+GE     y-src/parse.c   8
+GENERIC_PTR    y-src/cccp.y    56
+GENERIC_PTR    y-src/cccp.y    58
+GEQ    y-src/cccp.c    15
+GETOPTOBJS     make-src/Makefile       /^GETOPTOBJS= #getopt.o getopt1.o$/
+GREEN  cp-src/screen.hpp       14
+GROW_RAW_KEYBUF        c-src/emacs/src/keyboard.c      119
+GatherControls pyt-src/server.py       /^    def GatherControls(self):$/
+GetLayerByName lua-src/allegro.lua     /^function GetLayerByName (name)$/
+GetNameList    pas-src/common.pas      /^function GetNameList; (* : 
BinNodePointer;*)$/
+GetNewNameListNode     pas-src/common.pas      /^function 
GetNewNameListNode;(*($/
+GetTextRef     pas-src/common.pas      /^function GetTextRef;(*($/
+GetUniqueLayerName     lua-src/allegro.lua     /^function GetUniqueLayerName 
()$/
+Get_Own_Priority/f     ada-src/2ataspri.adb    /^   function Get_Own_Priority 
return System.Any_Pri/
+Get_Own_Priority/f     ada-src/2ataspri.ads    /^   function Get_Own_Priority 
return System.Any_Pri/
+Get_Priority/f ada-src/2ataspri.adb    /^   function Get_Priority (T : 
TCB_Ptr) return Syst/
+Get_Priority/f ada-src/2ataspri.ads    /^   function Get_Priority (T : 
TCB_Ptr) return Syst/
+HASH_HASH      c-src/emacs/src/lisp.h  /^HASH_HASH (struct Lisp_Hash_Table *h, 
ptrdiff_t id/
+HASH_INDEX     c-src/emacs/src/lisp.h  /^HASH_INDEX (struct Lisp_Hash_Table 
*h, ptrdiff_t i/
+HASH_KEY       c-src/emacs/src/lisp.h  /^HASH_KEY (struct Lisp_Hash_Table *h, 
ptrdiff_t idx/
+HASH_NEXT      c-src/emacs/src/lisp.h  /^HASH_NEXT (struct Lisp_Hash_Table *h, 
ptrdiff_t id/
+HASH_TABLE_P   c-src/emacs/src/lisp.h  /^HASH_TABLE_P (Lisp_Object a)$/
+HASH_TABLE_SIZE        c-src/emacs/src/lisp.h  /^HASH_TABLE_SIZE (struct 
Lisp_Hash_Table *h)$/
+HASH_VALUE     c-src/emacs/src/lisp.h  /^HASH_VALUE (struct Lisp_Hash_Table 
*h, ptrdiff_t i/
+HAVE_NTGUI     c-src/etags.c   116
+HEAP   c-src/emacs/src/gmalloc.c       131
+HTMLSRC        make-src/Makefile       /^HTMLSRC=softwarelibero.html 
index.shtml algrthms.h/
+HTML_help      c-src/etags.c   584
+HTML_labels    c-src/etags.c   /^HTML_labels (FILE *inf)$/
+HTML_suffixes  c-src/etags.c   582
+IEEE_FLOATING_POINT    c-src/emacs/src/lisp.h  2415
+IMAGEP c-src/emacs/src/lisp.h  /^IMAGEP (Lisp_Object x)$/
+INPUT_EVENT_POS_MAX    c-src/emacs/src/keyboard.c      3698
+INPUT_EVENT_POS_MIN    c-src/emacs/src/keyboard.c      3701
+INSERT_TREE_NODE       pas-src/common.pas      /^procedure 
INSERT_TREE_NODE;(*( $/
+INSTANTIATE_MDIAGARRAY_FRIENDS cp-src/MDiagArray2.h    /^#define 
INSTANTIATE_MDIAGARRAY_FRIENDS(T) \\$/
+INT    c-src/h.h       32
+INT    y-src/cccp.c    6
+INTEGERP       c-src/emacs/src/lisp.h  /^# define INTEGERP(x) lisp_h_INTEGERP 
(x)$/
+INTEGER_TO_CONS        c-src/emacs/src/lisp.h  /^#define INTEGER_TO_CONS(i)    
                                    \\$/
+INTERVAL       c-src/emacs/src/lisp.h  1149
+INTMASK        c-src/emacs/src/lisp.h  437
+INTTYPEBITS    c-src/emacs/src/lisp.h  249
+INT_BIT        c-src/emacs/src/gmalloc.c       124
+INT_TYPE_SIZE  y-src/cccp.y    91
+ISALNUM        c-src/etags.c   /^#define ISALNUM(c)    isalnum (CHAR (c))$/
+ISALPHA        c-src/etags.c   /^#define ISALPHA(c)    isalpha (CHAR (c))$/
+ISDIGIT        c-src/etags.c   /^#define ISDIGIT(c)    isdigit (CHAR (c))$/
+ISLOWER        c-src/etags.c   /^#define ISLOWER(c)    islower (CHAR (c))$/
+ISO_FUNCTION_KEY_OFFSET        c-src/emacs/src/keyboard.c      5149
+ISUPPER        c-src/etags.c   /^# define ISUPPER(c)   isupper (CHAR (c))$/
+IS_DAEMON      c-src/emacs/src/lisp.h  4257
+IS_DAEMON      c-src/emacs/src/lisp.h  4261
+InitNameList   pas-src/common.pas      /^procedure InitNameList;$/
+InitNameStringPool     pas-src/common.pas      /^procedure 
InitNameStringPool;$/
+InitializeStringPackage        pas-src/common.pas      /^procedure 
InitializeStringPackage;$/
+Initialize_Cond/p      ada-src/2ataspri.adb    /^   procedure Initialize_Cond 
(Cond : in out Condit/
+Initialize_Cond/p      ada-src/2ataspri.ads    /^   procedure Initialize_Cond 
(Cond : in out Condit/
+Initialize_LL_Tasks/p  ada-src/2ataspri.adb    /^   procedure 
Initialize_LL_Tasks (T : TCB_Ptr) is$/
+Initialize_LL_Tasks/p  ada-src/2ataspri.ads    /^   procedure 
Initialize_LL_Tasks (T : TCB_Ptr);$/
+Initialize_Lock/p      ada-src/2ataspri.adb    /^   procedure Initialize_Lock$/
+Initialize_Lock/p      ada-src/2ataspri.ads    /^   procedure Initialize_Lock 
(Prio : System.Any_Pr/
+Initialize_TAS_Cell/p  ada-src/2ataspri.adb    /^   procedure 
Initialize_TAS_Cell (Cell : out TAS_C/
+Initialize_TAS_Cell/p  ada-src/2ataspri.ads    /^   procedure 
Initialize_TAS_Cell (Cell :    out TA/
+Inner1/b       ada-src/etags-test-for.ada      /^  package body Inner1 is$/
+Inner1/b       ada-src/waroquiers.ada  /^  package body Inner1 is$/
+Inner1/s       ada-src/etags-test-for.ada      /^  package Inner1 is$/
+Inner1/s       ada-src/waroquiers.ada  /^  package Inner1 is$/
+Inner2/b       ada-src/etags-test-for.ada      /^  package body Inner2 is$/
+Inner2/b       ada-src/waroquiers.ada  /^  package body Inner2 is$/
+Inner2/s       ada-src/etags-test-for.ada      /^  package Inner2 is$/
+Inner2/s       ada-src/waroquiers.ada  /^  package Inner2 is$/
+Install_Abort_Handler/p        ada-src/2ataspri.adb    /^   procedure 
Install_Abort_Handler (Handler : Abor/
+Install_Abort_Handler/p        ada-src/2ataspri.ads    /^   procedure 
Install_Abort_Handler (Handler : Abor/
+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/
+Is_Set/f       ada-src/2ataspri.ads    /^   function  Is_Set       (Cell : in  
   TAS_Cell)/
+JAVASRC        make-src/Makefile       /^JAVASRC=AWTEMul.java KeyEve.java 
SMan.java SysCol./
+KBD_BUFFER_SIZE        c-src/emacs/src/keyboard.c      82
+KBYTES objc-src/PackInsp.m     58
+KEY_TO_CHAR    c-src/emacs/src/keyboard.c      /^#define KEY_TO_CHAR(k) (XINT 
(k) & ((1 << CHARACTE/
+LATEST make-src/Makefile       /^LATEST=17$/
+LCE_COMMENT    php-src/lce_functions.php       13
+LCE_COMMENT_TOOL       php-src/lce_functions.php       17
+LCE_COMMENT_USER       php-src/lce_functions.php       15
+LCE_FUNCTIONS  php-src/lce_functions.php       4
+LCE_MSGID      php-src/lce_functions.php       19
+LCE_MSGSTR     php-src/lce_functions.php       21
+LCE_TEXT       php-src/lce_functions.php       23
+LCE_UNKNOWN    php-src/lce_functions.php       9
+LCE_WS php-src/lce_functions.php       11
+LDFLAGS        make-src/Makefile       /^LDFLAGS=#-static -lc_p$/
+LE     y-src/parse.c   7
+LEQ    y-src/cccp.c    14
+LIGHTBLUE      cp-src/screen.hpp       21
+LIGHTCYAN      cp-src/screen.hpp       23
+LIGHTGRAY      cp-src/screen.hpp       19
+LIGHTGREEN     cp-src/screen.hpp       22
+LIGHTMAGENTA   cp-src/screen.hpp       25
+LIGHTRED       cp-src/screen.hpp       24
+LISP_INITIALLY c-src/emacs/src/lisp.h  /^#define LISP_INITIALLY(i) (i)$/
+LISP_INITIALLY c-src/emacs/src/lisp.h  /^#define LISP_INITIALLY(i) {i}$/
+LISP_INITIALLY_ZERO    c-src/emacs/src/lisp.h  582
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^#define 
LISP_MACRO_DEFUN(name, type, argdecls, arg/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (CONSP, 
bool, (Lisp_Object x), (x/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (NILP, bool, 
(Lisp_Object x), (x)/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (SYMBOL_VAL, 
Lisp_Object, (struct/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XCAR, 
Lisp_Object, (Lisp_Object /
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XCONS, 
struct Lisp_Cons *, (Lisp/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XHASH, 
EMACS_INT, (Lisp_Object a/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XLI, 
EMACS_INT, (Lisp_Object o),/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XPNTR, void 
*, (Lisp_Object a), /
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^#define 
LISP_MACRO_DEFUN_VOID(name, argdecls, args/
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN_VOID 
(CHECK_LIST_CONS, (Lisp_Obje/
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN_VOID 
(CHECK_TYPE,$/
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN_VOID 
(SET_SYMBOL_VAL,$/
+LISTCONTENTS   objc-src/PackInsp.m     39
+LISTCONTENTSBUTTON     objc-src/PackInsp.m     48
+LISTDESCRIPTIONBUTTON  objc-src/PackInsp.m     49
+LL_Assert/p    ada-src/2ataspri.adb    /^   procedure LL_Assert (B : Boolean; 
M : String) i/
+LL_Assert/p    ada-src/2ataspri.ads    /^   procedure LL_Assert (B : Boolean; 
M : String);$/
+LL_Task_Procedure_Access/t     ada-src/2ataspri.ads    /^   type 
LL_Task_Procedure_Access is access procedu/
+LL_Task_Procedure_Access/t     ada-src/etags-test-for.ada      /^   type 
LL_Task_Procedure_Access is access procedu/
+LL_Wrapper/p   ada-src/2ataspri.adb    /^   procedure LL_Wrapper (T : TCB_Ptr) 
is$/
+LL_Wrapper/p   ada-src/2ataspri.adb    /^   procedure LL_Wrapper (T : 
TCB_Ptr);$/
+LL_Wrapper/p   ada-src/etags-test-for.ada      /^   procedure LL_Wrapper (T : 
TCB_Ptr);$/
+LOCALIZE       objc-src/PackInsp.m     /^#define LOCALIZE(s)           
NXLoadLocalizedStringFromTabl/
+LOCALIZE_ARCH  objc-src/PackInsp.m     /^#define LOCALIZE_ARCH(s)      
NXLoadLocalizedStringFrom/
+LOCK   c-src/emacs/src/gmalloc.c       /^#define LOCK()                        
                \\$/
+LOCK   c-src/emacs/src/gmalloc.c       /^#define LOCK()$/
+LOCK_ALIGNED_BLOCKS    c-src/emacs/src/gmalloc.c       /^#define 
LOCK_ALIGNED_BLOCKS()                         \\$/
+LOCK_ALIGNED_BLOCKS    c-src/emacs/src/gmalloc.c       /^#define 
LOCK_ALIGNED_BLOCKS()$/
+LONG_TYPE_SIZE y-src/cccp.y    95
+LOOKING_AT     c-src/etags.c   /^#define LOOKING_AT(cp, kw)  \/* kw is the 
keyword, /
+LOOKING_AT_NOCASE      c-src/etags.c   /^#define LOOKING_AT_NOCASE(cp, kw) \/* 
the keyword i/
+LOOKUP objc-src/PackInsp.m     /^#define LOOKUP(key, notfound) ([table 
isKey:key] ?/
+LOOKUP objc-src/PackInsp.m     176
+LOOP_ON_INPUT_LINES    c-src/etags.c   /^#define 
LOOP_ON_INPUT_LINES(file_pointer, line_buf/
+LSH    y-src/cccp.c    16
+LTGT   cp-src/MDiagArray2.h    144
+LTGT   cp-src/MDiagArray2.h    35
+LTGT   cp-src/MDiagArray2.h    39
+LTGT   cp-src/MDiagArray2.h    42
+LUASRC make-src/Makefile       /^LUASRC=allegro.lua$/
+L_CELL y-src/parse.c   10
+L_CONST        y-src/parse.c   13
+L_FN0  y-src/parse.c   14
+L_FN1  y-src/parse.c   15
+L_FN1R y-src/parse.c   20
+L_FN2  y-src/parse.c   16
+L_FN2R y-src/parse.c   21
+L_FN3  y-src/parse.c   17
+L_FN3R y-src/parse.c   22
+L_FN4  y-src/parse.c   18
+L_FN4R y-src/parse.c   23
+L_FNN  y-src/parse.c   19
+L_FNNR y-src/parse.c   24
+L_GE   y-src/parse.c   27
+L_LE   y-src/parse.c   25
+L_NE   y-src/parse.c   26
+L_RANGE        y-src/parse.c   11
+L_VAR  y-src/parse.c   12
+L_getit        c-src/etags.c   /^L_getit (void)$/
+LabeledEntry   pyt-src/server.py       /^class LabeledEntry(Frame):$/
+Lang_function  c-src/etags.c   182
+Lang_function  c-src/h.h       6
+Lisp_Bits      c-src/emacs/src/lisp.h  239
+Lisp_Bool_Vector       c-src/emacs/src/lisp.h  1384
+Lisp_Boolfwd   c-src/emacs/src/lisp.h  2284
+Lisp_Buffer_Local_Value        c-src/emacs/src/lisp.h  2334
+Lisp_Buffer_Objfwd     c-src/emacs/src/lisp.h  2302
+Lisp_Char_Table        c-src/emacs/src/lisp.h  1575
+Lisp_Compiled  c-src/emacs/src/lisp.h  2429
+Lisp_Cons      c-src/emacs/src/lisp.h  475
+Lisp_Finalizer c-src/emacs/src/lisp.h  2186
+Lisp_Float     c-src/emacs/src/lisp.h  2391
+Lisp_Float     c-src/emacs/src/lisp.h  477
+Lisp_Free      c-src/emacs/src/lisp.h  2201
+Lisp_Fwd       c-src/emacs/src/lisp.h  2368
+Lisp_Fwd_Bool  c-src/emacs/src/lisp.h  505
+Lisp_Fwd_Buffer_Obj    c-src/emacs/src/lisp.h  507
+Lisp_Fwd_Int   c-src/emacs/src/lisp.h  504
+Lisp_Fwd_Kboard_Obj    c-src/emacs/src/lisp.h  508
+Lisp_Fwd_Obj   c-src/emacs/src/lisp.h  506
+Lisp_Fwd_Type  c-src/emacs/src/lisp.h  502
+Lisp_Hash_Table        c-src/emacs/src/lisp.h  1823
+Lisp_Int0      c-src/emacs/src/lisp.h  461
+Lisp_Int1      c-src/emacs/src/lisp.h  462
+Lisp_Intfwd    c-src/emacs/src/lisp.h  2274
+Lisp_Kboard_Objfwd     c-src/emacs/src/lisp.h  2362
+Lisp_Marker    c-src/emacs/src/lisp.h  1978
+Lisp_Misc      c-src/emacs/src/lisp.h  2212
+Lisp_Misc      c-src/emacs/src/lisp.h  458
+Lisp_Misc_Any  c-src/emacs/src/lisp.h  1971
+Lisp_Misc_Finalizer    c-src/emacs/src/lisp.h  491
+Lisp_Misc_Float        c-src/emacs/src/lisp.h  494
+Lisp_Misc_Free c-src/emacs/src/lisp.h  487
+Lisp_Misc_Limit        c-src/emacs/src/lisp.h  496
+Lisp_Misc_Marker       c-src/emacs/src/lisp.h  488
+Lisp_Misc_Overlay      c-src/emacs/src/lisp.h  489
+Lisp_Misc_Save_Value   c-src/emacs/src/lisp.h  490
+Lisp_Misc_Type c-src/emacs/src/lisp.h  485
+Lisp_Object    c-src/emacs/src/lisp.h  567
+Lisp_Object    c-src/emacs/src/lisp.h  577
+Lisp_Objfwd    c-src/emacs/src/lisp.h  2294
+Lisp_Overlay   c-src/emacs/src/lisp.h  2021
+Lisp_Save_Type c-src/emacs/src/lisp.h  2064
+Lisp_Save_Value        c-src/emacs/src/lisp.h  2110
+Lisp_String    c-src/emacs/src/lisp.h  466
+Lisp_Sub_Char_Table    c-src/emacs/src/lisp.h  1606
+Lisp_Subr      c-src/emacs/src/lisp.h  1670
+Lisp_Symbol    c-src/emacs/src/lisp.h  454
+Lisp_Symbol    c-src/emacs/src/lisp.h  654
+Lisp_Type      c-src/emacs/src/lisp.h  451
+Lisp_Vector    c-src/emacs/src/lisp.h  1369
+Lisp_Vectorlike        c-src/emacs/src/lisp.h  472
+Lisp_functions c-src/etags.c   /^Lisp_functions (FILE *inf)$/
+Lisp_help      c-src/etags.c   591
+Lisp_suffixes  c-src/etags.c   589
+ListEdit       pyt-src/server.py       /^class ListEdit(Frame):$/
+Locate pas-src/common.pas      /^function Locate; (*($/
+Lock/t ada-src/2ataspri.ads    /^   type Lock is private;$/
+Lock/t ada-src/2ataspri.ads    /^   type Lock is$/
+LowerCaseNmStr pas-src/common.pas      /^function LowerCaseNmStr; (*($/
+Lua_functions  c-src/etags.c   /^Lua_functions (FILE *inf)$/
+Lua_help       c-src/etags.c   600
+Lua_suffixes   c-src/etags.c   598
+MAGENTA        cp-src/screen.hpp       17
+MAGICBYTE      c-src/emacs/src/gmalloc.c       1856
+MAGICFREE      c-src/emacs/src/gmalloc.c       1855
+MAGICWORD      c-src/emacs/src/gmalloc.c       1854
+MAKE   make-src/Makefile       /^MAKE:=$(MAKE) --no-print-directory$/
+MAKESRC        make-src/Makefile       /^MAKESRC=Makefile$/
+MALLOCFLOOD    c-src/emacs/src/gmalloc.c       1857
+MANY   c-src/emacs/src/lisp.h  2833
+MARKERP        c-src/emacs/src/lisp.h  /^# define MARKERP(x) lisp_h_MARKERP 
(x)$/
+MAXPATHLEN     c-src/etags.c   115
+MAX_ALLOCA     c-src/emacs/src/lisp.h  4556
+MAX_ENCODED_BYTES      c-src/emacs/src/keyboard.c      2254
+MAX_HASH_VALUE c-src/etags.c   2329
+MAX_WORD_LENGTH        c-src/etags.c   2327
+MAYBEREL       y-src/parse.y   /^#define MAYBEREL(p) (*(p)=='[' && 
(isdigit((p)[1])/
+MBYTES objc-src/PackInsp.m     59
+MCHECK_DISABLED        c-src/emacs/src/gmalloc.c       285
+MCHECK_FREE    c-src/emacs/src/gmalloc.c       287
+MCHECK_HEAD    c-src/emacs/src/gmalloc.c       288
+MCHECK_OK      c-src/emacs/src/gmalloc.c       286
+MCHECK_TAIL    c-src/emacs/src/gmalloc.c       289
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (T *d, int r, int c) : 
DiagArray2<T>/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (const Array<T>& a) : 
DiagArray2<T> /
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (const DiagArray2<T>& 
a) : DiagArray/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (const MDiagArray2<T>& 
a) : DiagArra/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (int r, int c) : 
DiagArray2<T> (r, c/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (int r, int c, const T& 
val) : DiagA/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (void) : DiagArray2<T> 
() { }$/
+MDiagArray2    cp-src/MDiagArray2.h    78
+MIN_HASH_VALUE c-src/etags.c   2328
+MIN_WORD_LENGTH        c-src/etags.c   2326
+MISCP  c-src/emacs/src/lisp.h  /^# define MISCP(x) lisp_h_MISCP (x)$/
+MOST_NEGATIVE_FIXNUM   c-src/emacs/src/lisp.h  835
+MOST_POSITIVE_FIXNUM   c-src/emacs/src/lisp.h  834
+MOVE   c-src/sysdep.h  /^#define MOVE(x,y)     movl x, y$/
+MSDOS  c-src/etags.c   100
+MSDOS  c-src/etags.c   106
+MSDOS  c-src/etags.c   107
+MSDOS  c-src/etags.c   110
+MSGSEL f-src/entry.for /^       ENTRY  MSGSEL ( TYPE )$/
+MSGSEL f-src/entry.strange     /^       ENTRY  MSGSEL ( TYPE )$/
+MSGSEL f-src/entry.strange_suffix      /^       ENTRY  MSGSEL ( TYPE )$/
+MULTI_LETTER_MOD       c-src/emacs/src/keyboard.c      /^#define 
MULTI_LETTER_MOD(BIT, NAME, LEN)                      \\$/
+MULTI_LETTER_MOD       c-src/emacs/src/keyboard.c      /^#define 
MULTI_LETTER_MOD(BIT, NAME, LEN)              \\$/
+MULTI_LETTER_MOD       c-src/emacs/src/keyboard.c      6231
+MULTI_LETTER_MOD       c-src/emacs/src/keyboard.c      6764
+Machin_T/b     ada-src/waroquiers.ada  /^  protected body Machin_T is$/
+Machin_T/t     ada-src/etags-test-for.ada      /^  protected Machin_T is$/
+Machin_T/t     ada-src/etags-test-for.ada      /^  protected type Machin_T is$/
+Machin_T/t     ada-src/waroquiers.ada  /^  protected type Machin_T is$/
+Machine_Exceptions/t   ada-src/2ataspri.ads    /^   type Machine_Exceptions is 
new Interfaces.C.POS/
+MakeDispose    pyt-src/server.py       /^    def MakeDispose(self):$/
+MakeSitelist   pyt-src/server.py       /^    def MakeSitelist(self, master):$/
+Makefile_filenames     c-src/etags.c   603
+Makefile_help  c-src/etags.c   605
+Makefile_targets       c-src/etags.c   /^Makefile_targets (FILE *inf)$/
+Mc     cp-src/c.C      /^int main (void) { my_function0(0); my_function1(1)/
+Mcccp  y-src/cccp.y    /^main ()$/
+Mconway.cpp    cp-src/conway.cpp       /^void main(void)$/
+Metags c-src/etags.c   /^main (int argc, char **argv)$/
+Mfail  cp-src/fail.C   /^main()$/
+Mkai-test.pl   perl-src/kai-test.pl    /^package main;$/
+ModuleExample  ruby-src/test.rb        /^module ModuleExample$/
+More_Lisp_Bits c-src/emacs/src/lisp.h  801
+MoveLayerAfter lua-src/allegro.lua     /^function MoveLayerAfter (this_one)$/
+MoveLayerBefore        lua-src/allegro.lua     /^function MoveLayerBefore 
(this_one)$/
+MoveLayerBottom        lua-src/allegro.lua     /^function MoveLayerBottom ()$/
+MoveLayerTop   lua-src/allegro.lua     /^function MoveLayerTop ()$/
+Mtest.go       go-src/test.go  /^func main() {$/
+Mtest.go       go-src/test.go  1
+Mtest.rs       rs-src/test.rs  /^fn main() {$/
+Mtest1.go      go-src/test1.go /^func main() {$/
+Mtest1.go      go-src/test1.go 1
+Mx.cc  cp-src/x.cc     /^main(int argc, char *argv[])$/
+NAME   y-src/cccp.c    8
+NATNUMP        c-src/emacs/src/lisp.h  /^NATNUMP (Lisp_Object x)$/
+NDEBUG c-src/etags.c   88
+NE     y-src/parse.c   6
+NEG    y-src/parse.c   9
+NEXT_ALMOST_PRIME_LIMIT        c-src/emacs/src/lisp.h  3573
+NILP   c-src/emacs/src/lisp.h  /^# define NILP(x) lisp_h_NILP (x)$/
+NIL_IS_ZERO    c-src/emacs/src/lisp.h  1515
+NONPOINTER_BITS        c-src/emacs/src/lisp.h  78
+NONPOINTER_BITS        c-src/emacs/src/lisp.h  80
+NONSRCS        make-src/Makefile       /^NONSRCS=entry.strange lists.erl 
clheir.hpp.gz$/
+NOTEQUAL       y-src/cccp.c    13
+NULL   y-src/cccp.y    51
+NULL_PTR       y-src/cccp.y    63
+NUMSTATS       objc-src/PackInsp.h     36
+NUM_MOD_NAMES  c-src/emacs/src/keyboard.c      6325
+NUM_RECENT_KEYS        c-src/emacs/src/keyboard.c      91
+NameHasChar    pas-src/common.pas      /^function NameHasChar; (* (TheName : 
NameString; Th/
+NameStringLess pas-src/common.pas      /^function NameStringLess;(*(var 
Name1,Name2 : NameS/
+NewLayer       lua-src/allegro.lua     /^function NewLayer (name, x, y, w, h)$/
+NewLayerSet    lua-src/allegro.lua     /^function NewLayerSet (name)$/
+NewNameString  pas-src/common.pas      /^procedure NewNameString; (* (var NSP: 
NameStringPo/
+NmStrToErrStr  pas-src/common.pas      /^function NmStrToErrStr;(*($/
+NmStrToInteger pas-src/common.pas      /^function NmStrToInteger; (* (Str : 
NameString) : i/
+OBJCPPSRC      make-src/Makefile       /^OBJCPPSRC=SimpleCalc.H SimpleCalc.M$/
+OBJCSRC        make-src/Makefile       /^OBJCSRC=Subprocess.h Subprocess.m 
PackInsp.h PackI/
+OBJS   make-src/Makefile       /^OBJS=${GETOPTOBJS} ${REGEXOBJS} ${CHECKOBJS}$/
+OPENBUTTON     objc-src/PackInsp.m     47
+OPTIONS        make-src/Makefile       /^OPTIONS=--members --declarations 
--regex=@regexfil/
+OR     y-src/cccp.c    10
+OTAGS  make-src/Makefile       /^OTAGS: oetags ${SRCS} srclist$/
+OVERLAYP       c-src/emacs/src/lisp.h  /^OVERLAYP (Lisp_Object x)$/
+Objc_help      c-src/etags.c   613
+Objc_suffixes  c-src/etags.c   609
+OperatorFun    c-src/h.h       88
+Overview       tex-src/gzip.texi       /^@node Overview, Sample, Copying, Top$/
+PASSRC make-src/Makefile       /^PASSRC=common.pas$/
+PDT    c-src/h.h       /^  Date 04 May 87 235311 PDT (Mon)$/
+PERLSRC        make-src/Makefile       /^PERLSRC=htlmify-cystic yagrip.pl 
kai-test.pl mirro/
+PHPSRC make-src/Makefile       /^PHPSRC=lce_functions.php ptest.php 
sendmail.php$/
+PHP_functions  c-src/etags.c   /^PHP_functions (FILE *inf)$/
+PHP_help       c-src/etags.c   639
+PHP_suffixes   c-src/etags.c   637
+POEntry        php-src/lce_functions.php       /^      function POEntry()$/
+POEntry        php-src/lce_functions.php       105
+POEntryAD      php-src/lce_functions.php       29
+PORManager     php-src/lce_functions.php       /^      function PORManager()$/
+PORManager     php-src/lce_functions.php       498
+POReader       php-src/lce_functions.php       /^      function 
POReader($domain, $filename)$/
+POReader       php-src/lce_functions.php       163
+POSTSCRIPTFLAGS        make-src/Makefile       
/^POSTSCRIPTFLAGS=--language=none --regex='#\/[^ \\t{]/
+PRINT_UNDOCUMENTED_OPTIONS_HELP        c-src/etags.c   804
+PROCESSP       c-src/emacs/src/lisp.h  /^PROCESSP (Lisp_Object a)$/
+PROLSRC        make-src/Makefile       /^PROLSRC=ordsets.prolog natded.prolog$/
+PROP   c-src/emacs/src/keyboard.c      /^#define PROP(IDX) AREF 
(tool_bar_item_properties, /
+PROP   c-src/emacs/src/keyboard.c      8379
+PROTECT_MALLOC_STATE   c-src/emacs/src/gmalloc.c       /^#define 
PROTECT_MALLOC_STATE(PROT)    \/* empty *\/$/
+PROTECT_MALLOC_STATE   c-src/emacs/src/gmalloc.c       /^#define 
PROTECT_MALLOC_STATE(PROT) protect_malloc_/
+PRTPKG f-src/entry.for /^      LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/
+PRTPKG f-src/entry.strange     /^      LOGICAL FUNCTION PRTPKG ( SHORT, LONG, 
EXPL,/
+PRTPKG f-src/entry.strange_suffix      /^      LOGICAL FUNCTION PRTPKG ( 
SHORT, LONG, EXPL,/
+PSEUDO c-src/sysdep.h  /^#define       PSEUDO(name, syscall_name, args)        
                              /
+PSEUDOVECSIZE  c-src/emacs/src/lisp.h  /^#define PSEUDOVECSIZE(type, 
nonlispfield)                     \\$/
+PSEUDOVECTORP  c-src/emacs/src/lisp.h  /^PSEUDOVECTORP (Lisp_Object a, int 
code)$/
+PSEUDOVECTOR_AREA_BITS c-src/emacs/src/lisp.h  818
+PSEUDOVECTOR_FLAG      c-src/emacs/src/lisp.h  774
+PSEUDOVECTOR_REST_BITS c-src/emacs/src/lisp.h  813
+PSEUDOVECTOR_REST_MASK c-src/emacs/src/lisp.h  814
+PSEUDOVECTOR_SIZE_BITS c-src/emacs/src/lisp.h  808
+PSEUDOVECTOR_SIZE_MASK c-src/emacs/src/lisp.h  809
+PSEUDOVECTOR_TYPEP     c-src/emacs/src/lisp.h  /^PSEUDOVECTOR_TYPEP (struct 
vectorlike_header *a, i/
+PSSRC  make-src/Makefile       /^PSSRC=rfc1245.ps$/
+PS_functions   c-src/etags.c   /^PS_functions (FILE *inf)$/
+PS_help        c-src/etags.c   649
+PS_suffixes    c-src/etags.c   647
+PTY_LENGTH     objc-src/Subprocess.m   21
+PTY_TEMPLATE   objc-src/Subprocess.m   20
+PUSH_C_STR     c-src/emacs/src/keyboard.c      /^#define PUSH_C_STR(str, 
listvar) \\$/
+PUSH_HANDLER   c-src/emacs/src/lisp.h  /^#define PUSH_HANDLER(c, tag_ch_val, 
handlertype)      \\/
+PVEC_BOOL_VECTOR       c-src/emacs/src/lisp.h  787
+PVEC_BUFFER    c-src/emacs/src/lisp.h  788
+PVEC_CHAR_TABLE        c-src/emacs/src/lisp.h  796
+PVEC_COMPILED  c-src/emacs/src/lisp.h  795
+PVEC_FONT      c-src/emacs/src/lisp.h  798
+PVEC_FRAME     c-src/emacs/src/lisp.h  785
+PVEC_FREE      c-src/emacs/src/lisp.h  783
+PVEC_HASH_TABLE        c-src/emacs/src/lisp.h  789
+PVEC_NORMAL_VECTOR     c-src/emacs/src/lisp.h  782
+PVEC_OTHER     c-src/emacs/src/lisp.h  793
+PVEC_PROCESS   c-src/emacs/src/lisp.h  784
+PVEC_SUBR      c-src/emacs/src/lisp.h  792
+PVEC_SUB_CHAR_TABLE    c-src/emacs/src/lisp.h  797
+PVEC_TERMINAL  c-src/emacs/src/lisp.h  790
+PVEC_TYPE_MASK c-src/emacs/src/lisp.h  819
+PVEC_WINDOW    c-src/emacs/src/lisp.h  786
+PVEC_WINDOW_CONFIGURATION      c-src/emacs/src/lisp.h  791
+PYTSRC make-src/Makefile       /^PYTSRC=server.py$/
+PackageInspector       objc-src/PackInsp.h     /^@interface 
PackageInspector:WMInspector$/
+Pascal_functions       c-src/etags.c   /^Pascal_functions (FILE *inf)$/
+Pascal_help    c-src/etags.c   621
+Pascal_suffixes        c-src/etags.c   619
+Perl_functions c-src/etags.c   /^Perl_functions (FILE *inf)$/
+Perl_help      c-src/etags.c   630
+Perl_interpreters      c-src/etags.c   628
+Perl_suffixes  c-src/etags.c   626
+Pkg1/b ada-src/etags-test-for.ada      /^package body Pkg1 is$/
+Pkg1/b ada-src/waroquiers.ada  /^package body Pkg1 is$/
+Pkg1/s ada-src/etags-test-for.ada      /^package Pkg1 is$/
+Pkg1/s ada-src/waroquiers.ada  /^package Pkg1 is$/
+Pkg1_Func1/f   ada-src/etags-test-for.ada      /^  function Pkg1_Func1 return 
Boolean is separate;$/
+Pkg1_Func1/f   ada-src/etags-test-for.ada      /^  function Pkg1_Func1 return 
Boolean;$/
+Pkg1_Func1/f   ada-src/etags-test-for.ada      /^function  Pkg1_Func1 return 
Boolean is$/
+Pkg1_Func1/f   ada-src/waroquiers.ada  /^  function Pkg1_Func1 return Boolean 
is separate;$/
+Pkg1_Func1/f   ada-src/waroquiers.ada  /^  function Pkg1_Func1 return 
Boolean;$/
+Pkg1_Func1/f   ada-src/waroquiers.ada  /^function  Pkg1_Func1 return Boolean 
is$/
+Pkg1_Func2/f   ada-src/etags-test-for.ada      /^  function Pkg1_Func2 (Ijk : 
Integer; Z : Integer)/
+Pkg1_Func2/f   ada-src/waroquiers.ada  /^  function Pkg1_Func2 (Ijk : Integer; 
Z : Integer)/
+Pkg1_Pkg1/b    ada-src/etags-test-for.ada      /^  package body Pkg1_Pkg1 is 
separate;$/
+Pkg1_Pkg1/b    ada-src/etags-test-for.ada      /^package body Pkg1_Pkg1 is$/
+Pkg1_Pkg1/b    ada-src/waroquiers.ada  /^  package body Pkg1_Pkg1 is 
separate;$/
+Pkg1_Pkg1/b    ada-src/waroquiers.ada  /^package body Pkg1_Pkg1 is$/
+Pkg1_Pkg1/s    ada-src/etags-test-for.ada      /^  package Pkg1_Pkg1 is$/
+Pkg1_Pkg1/s    ada-src/waroquiers.ada  /^  package Pkg1_Pkg1 is$/
+Pkg1_Pkg1_Proc1/p      ada-src/etags-test-for.ada      /^    procedure 
Pkg1_Pkg1_Proc1;$/
+Pkg1_Pkg1_Proc1/p      ada-src/etags-test-for.ada      /^  procedure 
Pkg1_Pkg1_Proc1 is$/
+Pkg1_Pkg1_Proc1/p      ada-src/waroquiers.ada  /^    procedure 
Pkg1_Pkg1_Proc1;$/
+Pkg1_Pkg1_Proc1/p      ada-src/waroquiers.ada  /^  procedure Pkg1_Pkg1_Proc1 
is$/
+Pkg1_Proc1/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc1 is$/
+Pkg1_Proc1/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc1;$/
+Pkg1_Proc1/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc1 is$/
+Pkg1_Proc1/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc1;$/
+Pkg1_Proc2/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc2 (I : 
Integer) is$/
+Pkg1_Proc2/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc2 (I : 
Integer);$/
+Pkg1_Proc2/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc2 (I : Integer) 
is$/
+Pkg1_Proc2/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc2 (I : 
Integer);$/
+PostControls   pyt-src/server.py       /^    def PostControls(self):$/
+Pre_Call_State/t       ada-src/2ataspri.ads    /^   type Pre_Call_State is new 
System.Address;$/
+PrintAdd       go-src/test1.go /^func (n intNumber) PrintAdd() {$/
+PrintAdd       go-src/test1.go /^func (s str) PrintAdd() {$/
+Private        objc-src/Subprocess.m   /^@interface Subprocess(Private)$/
+Private_T/b    ada-src/etags-test-for.ada      /^    task body Private_T is$/
+Private_T/b    ada-src/waroquiers.ada  /^    task body Private_T is$/
+Private_T/k    ada-src/etags-test-for.ada      /^    task Private_T;$/
+Private_T/k    ada-src/waroquiers.ada  /^    task Private_T;$/
+Private_T/p    ada-src/etags-test-for.ada      /^    procedure Private_T is$/
+Private_T/p    ada-src/etags-test-for.ada      /^    procedure Private_T;$/
+Private_T/p    ada-src/waroquiers.ada  /^    procedure Private_T is$/
+Private_T/p    ada-src/waroquiers.ada  /^    procedure Private_T;$/
+Private_T/t    ada-src/etags-test-for.ada      /^  type Private_T is private;$/
+Private_T/t    ada-src/etags-test-for.ada      /^  type Private_T is$/
+Private_T/t    ada-src/waroquiers.ada  /^  type Private_T is private;$/
+Private_T/t    ada-src/waroquiers.ada  /^  type Private_T is$/
+Problems       tex-src/gzip.texi       /^@node Problems, Concept Index, Tapes, 
Top$/
+Proc/t ada-src/2ataspri.ads    /^   type Proc is access procedure (Addr : 
System.Ad/
+Prolog_functions       c-src/etags.c   /^Prolog_functions (FILE *inf)$/
+Prolog_help    c-src/etags.c   654
+Prolog_suffixes        c-src/etags.c   652
+Public_T/t     ada-src/etags-test-for.ada      /^  type Public_T is$/
+Public_T/t     ada-src/waroquiers.ada  /^  type Public_T is$/
+Python_functions       c-src/etags.c   /^Python_functions (FILE *inf)$/
+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
+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
+READABLE_EVENTS_FILTER_EVENTS  c-src/emacs/src/keyboard.c      347
+READABLE_EVENTS_IGNORE_SQUEEZABLES     c-src/emacs/src/keyboard.c      348
+RECC_ALNUM     c-src/emacs/src/regex.h 610
+RECC_ALPHA     c-src/emacs/src/regex.h 610
+RECC_ASCII     c-src/emacs/src/regex.h 617
+RECC_BLANK     c-src/emacs/src/regex.h 615
+RECC_CNTRL     c-src/emacs/src/regex.h 613
+RECC_DIGIT     c-src/emacs/src/regex.h 614
+RECC_ERROR     c-src/emacs/src/regex.h 609
+RECC_GRAPH     c-src/emacs/src/regex.h 611
+RECC_LOWER     c-src/emacs/src/regex.h 612
+RECC_MULTIBYTE c-src/emacs/src/regex.h 616
+RECC_NONASCII  c-src/emacs/src/regex.h 616
+RECC_PRINT     c-src/emacs/src/regex.h 611
+RECC_PUNCT     c-src/emacs/src/regex.h 613
+RECC_SPACE     c-src/emacs/src/regex.h 615
+RECC_UNIBYTE   c-src/emacs/src/regex.h 617
+RECC_UPPER     c-src/emacs/src/regex.h 612
+RECC_WORD      c-src/emacs/src/regex.h 610
+RECC_XDIGIT    c-src/emacs/src/regex.h 614
+RED    cp-src/screen.hpp       16
+REGEX  make-src/Makefile       /^REGEX=\/[ \\t]*DEFVAR_[A-Z_ 
\\t\\n(]+"\\([^"]+\\)"\/$/
+REGEXOBJS      make-src/Makefile       /^REGEXOBJS=regex.o$/
+REGS_FIXED     c-src/emacs/src/regex.h 378
+REGS_REALLOCATE        c-src/emacs/src/regex.h 377
+REGS_UNALLOCATED       c-src/emacs/src/regex.h 376
+REG_BADBR      c-src/emacs/src/regex.h 313
+REG_BADPAT     c-src/emacs/src/regex.h 305
+REG_BADRPT     c-src/emacs/src/regex.h 316
+REG_EBRACE     c-src/emacs/src/regex.h 312
+REG_EBRACK     c-src/emacs/src/regex.h 310
+REG_ECOLLATE   c-src/emacs/src/regex.h 306
+REG_ECTYPE     c-src/emacs/src/regex.h 307
+REG_EEND       c-src/emacs/src/regex.h 319
+REG_EESCAPE    c-src/emacs/src/regex.h 308
+REG_ENOSYS     c-src/emacs/src/regex.h 297
+REG_ENOSYS     c.c     279
+REG_EPAREN     c-src/emacs/src/regex.h 311
+REG_ERANGE     c-src/emacs/src/regex.h 314
+REG_ERANGEX    c-src/emacs/src/regex.h 322
+REG_ERPAREN    c-src/emacs/src/regex.h 321
+REG_ESIZE      c-src/emacs/src/regex.h 320
+REG_ESPACE     c-src/emacs/src/regex.h 315
+REG_ESUBREG    c-src/emacs/src/regex.h 309
+REG_EXTENDED   c-src/emacs/src/regex.h 263
+REG_ICASE      c-src/emacs/src/regex.h 267
+REG_NEWLINE    c-src/emacs/src/regex.h 272
+REG_NOERROR    c-src/emacs/src/regex.h 300
+REG_NOMATCH    c-src/emacs/src/regex.h 301
+REG_NOSUB      c-src/emacs/src/regex.h 276
+REG_NOTBOL     c-src/emacs/src/regex.h 286
+REG_NOTEOL     c-src/emacs/src/regex.h 289
+RELEASELIST    make-src/Makefile       /^RELEASELIST=pot@gnu.org 
xemacs-review@xemacs.org j/
+RESUME_POLLING c-src/emacs/src/keyboard.c      2170
+RETURN_UNGCPRO c-src/emacs/src/lisp.h  /^#define RETURN_UNGCPRO(expr)          
        \\$/
+RE_BACKSLASH_ESCAPE_IN_LISTS   c-src/emacs/src/regex.h 47
+RE_BK_PLUS_QM  c-src/emacs/src/regex.h 52
+RE_CHAR_CLASSES        c-src/emacs/src/regex.h 58
+RE_CONTEXT_INDEP_ANCHORS       c-src/emacs/src/regex.h 72
+RE_CONTEXT_INDEP_OPS   c-src/emacs/src/regex.h 80
+RE_CONTEXT_INVALID_OPS c-src/emacs/src/regex.h 84
+RE_DEBUG       c-src/emacs/src/regex.h 161
+RE_DOT_NEWLINE c-src/emacs/src/regex.h 88
+RE_DOT_NOT_NULL        c-src/emacs/src/regex.h 92
+RE_DUP_MAX     c-src/emacs/src/regex.h 253
+RE_DUP_MAX     c-src/emacs/src/regex.h 256
+RE_FRUGAL      c-src/emacs/src/regex.h 147
+RE_HAT_LISTS_NOT_NEWLINE       c-src/emacs/src/regex.h 96
+RE_INTERVALS   c-src/emacs/src/regex.h 101
+RE_LIMITED_OPS c-src/emacs/src/regex.h 105
+RE_NEWLINE_ALT c-src/emacs/src/regex.h 109
+RE_NO_BK_BRACES        c-src/emacs/src/regex.h 114
+RE_NO_BK_PARENS        c-src/emacs/src/regex.h 118
+RE_NO_BK_REFS  c-src/emacs/src/regex.h 122
+RE_NO_BK_VBAR  c-src/emacs/src/regex.h 126
+RE_NO_EMPTY_RANGES     c-src/emacs/src/regex.h 132
+RE_NO_GNU_OPS  c-src/emacs/src/regex.h 144
+RE_NO_NEWLINE_ANCHOR   c-src/emacs/src/regex.h 153
+RE_NO_POSIX_BACKTRACKING       c-src/emacs/src/regex.h 140
+RE_NREGS       c-src/emacs/src/regex.h 440
+RE_SHY_GROUPS  c-src/emacs/src/regex.h 150
+RE_SYNTAX_AWK  c-src/emacs/src/regex.h 186
+RE_SYNTAX_ED   c-src/emacs/src/regex.h 216
+RE_SYNTAX_EGREP        c-src/emacs/src/regex.h 206
+RE_SYNTAX_EMACS        c-src/emacs/src/regex.h 183
+RE_SYNTAX_GNU_AWK      c-src/emacs/src/regex.h 193
+RE_SYNTAX_GREP c-src/emacs/src/regex.h 201
+RE_SYNTAX_POSIX_AWK    c-src/emacs/src/regex.h 197
+RE_SYNTAX_POSIX_BASIC  c-src/emacs/src/regex.h 225
+RE_SYNTAX_POSIX_EGREP  c-src/emacs/src/regex.h 212
+RE_SYNTAX_POSIX_EXTENDED       c-src/emacs/src/regex.h 234
+RE_SYNTAX_POSIX_MINIMAL_BASIC  c-src/emacs/src/regex.h 231
+RE_SYNTAX_POSIX_MINIMAL_EXTENDED       c-src/emacs/src/regex.h 242
+RE_SYNTAX_SED  c-src/emacs/src/regex.h 218
+RE_TRANSLATE_TYPE      c-src/emacs/src/regex.h 332
+RE_UNMATCHED_RIGHT_PAREN_ORD   c-src/emacs/src/regex.h 136
+RSH    y-src/cccp.c    17
+RTE/s  ada-src/2ataspri.adb    /^   package RTE renames 
Interfaces.C.POSIX_RTE;$/
+RUN    make-src/Makefile       /^RUN=$/
+RUN    make-src/Makefile       /^RUN=time --quiet --format '%U + %S: %E'$/
+RXINCLUDE      make-src/Makefile       /^RXINCLUDE=-Iemacs\/src$/
+Range  cp-src/Range.h  /^  Range (const Range& r)$/
+Range  cp-src/Range.h  /^  Range (double b, double l)$/
+Range  cp-src/Range.h  /^  Range (double b, double l, double i)$/
+Range  cp-src/Range.h  /^  Range (void)$/
+Range  cp-src/Range.h  35
+ReadVacation   cp-src/functions.cpp    /^void ReadVacation ( char *filename ) 
{$/
+Read_Lock/p    ada-src/2ataspri.adb    /^   procedure Read_Lock (L : in out 
Lock; Ceiling_V/
+Read_Lock/p    ada-src/2ataspri.ads    /^   procedure Read_Lock (L : in out 
Lock; Ceiling_V/
+Rectangle.getPos       lua-src/test.lua        /^function Rectangle.getPos ()$/
+ReleaseNameString      pas-src/common.pas      /^procedure ReleaseNameString; 
(* (var NSP: NameStri/
+RemoveLayer    lua-src/allegro.lua     /^function RemoveLayer ()$/
+RemoveUnderlineControl pas-src/common.pas      /^function 
RemoveUnderlineControl; (*($/
+ReprOfChar     pas-src/common.pas      /^function ReprOfChar; (*( ch : char) : 
NameString;*/
+S      c.c     156
+SAFE_ALLOCA    c-src/emacs/src/lisp.h  /^#define SAFE_ALLOCA(size) ((size) <= 
sa_avail                         \\/
+SAFE_ALLOCA_LISP       c-src/emacs/src/lisp.h  /^#define SAFE_ALLOCA_LISP(buf, 
nelt)                          \\$/
+SAFE_ALLOCA_STRING     c-src/emacs/src/lisp.h  /^#define 
SAFE_ALLOCA_STRING(ptr, string)                       \\$/
+SAFE_FREE      c-src/emacs/src/lisp.h  /^#define SAFE_FREE()                   
\\$/
+SAFE_NALLOCA   c-src/emacs/src/lisp.h  /^#define SAFE_NALLOCA(buf, multiplier, 
nitems)                  \\/
+SAVE_FUNCPOINTER       c-src/emacs/src/lisp.h  2049
+SAVE_INTEGER   c-src/emacs/src/lisp.h  2048
+SAVE_OBJECT    c-src/emacs/src/lisp.h  2051
+SAVE_POINTER   c-src/emacs/src/lisp.h  2050
+SAVE_SLOT_BITS c-src/emacs/src/lisp.h  2055
+SAVE_TYPE_BITS c-src/emacs/src/lisp.h  2062
+SAVE_TYPE_BITS c-src/emacs/src/lisp.h  2114
+SAVE_TYPE_BITS c-src/emacs/src/lisp.h  2123
+SAVE_TYPE_FUNCPTR_PTR_OBJ      c-src/emacs/src/lisp.h  2076
+SAVE_TYPE_INT_INT      c-src/emacs/src/lisp.h  2066
+SAVE_TYPE_INT_INT_INT  c-src/emacs/src/lisp.h  2067
+SAVE_TYPE_MEMORY       c-src/emacs/src/lisp.h  2080
+SAVE_TYPE_OBJ_OBJ      c-src/emacs/src/lisp.h  2069
+SAVE_TYPE_OBJ_OBJ_OBJ  c-src/emacs/src/lisp.h  2070
+SAVE_TYPE_OBJ_OBJ_OBJ_OBJ      c-src/emacs/src/lisp.h  2071
+SAVE_TYPE_PTR_INT      c-src/emacs/src/lisp.h  2073
+SAVE_TYPE_PTR_OBJ      c-src/emacs/src/lisp.h  2074
+SAVE_TYPE_PTR_PTR      c-src/emacs/src/lisp.h  2075
+SAVE_UNUSED    c-src/emacs/src/lisp.h  2047
+SAVE_VALUEP    c-src/emacs/src/lisp.h  /^SAVE_VALUEP (Lisp_Object x)$/
+SAVE_VALUE_SLOTS       c-src/emacs/src/lisp.h  2058
+SBYTES c-src/emacs/src/lisp.h  /^SBYTES (Lisp_Object string)$/
+SCHARS c-src/emacs/src/lisp.h  /^SCHARS (Lisp_Object string)$/
+SCREEN_FP      cp-src/screen.hpp       /^#define SCREEN_FP(x,y) \\$/
+SCREEN_START   cp-src/screen.hpp       33
+SDATA  c-src/emacs/src/lisp.h  /^SDATA (Lisp_Object string)$/
+SDTrefGetInteger       pas-src/common.pas      /^function SDTrefGetInteger : 
integer;$/
+SDTrefIsEnd    pas-src/common.pas      /^function SDTrefIsEnd : Boolean;$/
+SDTrefRecToString      pas-src/common.pas      /^procedure SDTrefRecToString  
(* ($/
+SDTrefSkipSpaces       pas-src/common.pas      /^procedure SDTrefSkipSpaces;$/
+SDTrefStringToRec      pas-src/common.pas      /^procedure SDTrefStringToRec 
(* ($/
+SETPRT f-src/entry.for /^       ENTRY  SETPRT ( SHORT, EXPL, LONG, TRACE, D/
+SETPRT f-src/entry.strange     /^       ENTRY  SETPRT ( SHORT, EXPL, LONG, 
TRACE, D/
+SETPRT f-src/entry.strange_suffix      /^       ENTRY  SETPRT ( SHORT, EXPL, 
LONG, TRACE, D/
+SET_SYMBOL_BLV c-src/emacs/src/lisp.h  /^SET_SYMBOL_BLV (struct Lisp_Symbol 
*sym, struct Li/
+SET_SYMBOL_FWD c-src/emacs/src/lisp.h  /^SET_SYMBOL_FWD (struct Lisp_Symbol 
*sym, union Lis/
+SET_SYMBOL_VAL c-src/emacs/src/lisp.h  /^# define SET_SYMBOL_VAL(sym, v) 
lisp_h_SET_SYMBOL_/
+SINGLE_LETTER_MOD      c-src/emacs/src/keyboard.c      /^#define 
SINGLE_LETTER_MOD(BIT)                                \\$/
+SINGLE_LETTER_MOD      c-src/emacs/src/keyboard.c      6212
+SINGLE_LETTER_MOD      c-src/emacs/src/keyboard.c      6763
+SIZEFORMAT     objc-src/PackInsp.m     57
+SPECPDL_BACKTRACE      c-src/emacs/src/lisp.h  2948
+SPECPDL_INDEX  c-src/emacs/src/lisp.h  /^SPECPDL_INDEX (void)$/
+SPECPDL_LET    c-src/emacs/src/lisp.h  2949
+SPECPDL_LET_DEFAULT    c-src/emacs/src/lisp.h  2952
+SPECPDL_LET_LOCAL      c-src/emacs/src/lisp.h  2951
+SPECPDL_UNWIND c-src/emacs/src/lisp.h  2944
+SPECPDL_UNWIND_INT     c-src/emacs/src/lisp.h  2946
+SPECPDL_UNWIND_PTR     c-src/emacs/src/lisp.h  2945
+SPECPDL_UNWIND_VOID    c-src/emacs/src/lisp.h  2947
+SRCS   make-src/Makefile       /^SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} 
${CPSRC} $/
+SREF   c-src/emacs/src/lisp.h  /^SREF (Lisp_Object string, ptrdiff_t index)$/
+SSDATA c-src/emacs/src/lisp.h  /^SSDATA (Lisp_Object string)$/
+SSET   c-src/emacs/src/lisp.h  /^SSET (Lisp_Object string, ptrdiff_t index, 
unsigne/
+STACK_CONS     c-src/emacs/src/lisp.h  /^#define STACK_CONS(a, b) \\$/
+STATE_ABORT    php-src/lce_functions.php       25
+STATE_COMPRESSD        objc-src/PackInsp.m     54
+STATE_INSTALLED        objc-src/PackInsp.m     53
+STATE_LOOP     php-src/lce_functions.php       27
+STATE_OK       php-src/lce_functions.php       26
+STATE_UNINSTALLED      objc-src/PackInsp.m     52
+STAT_EQ        objc-src/PackInsp.m     /^#define STAT_EQ(s1, s2)       
((s1)->st_ino == (s2)->st_/
+STDIN  c-src/etags.c   408
+STDIN  c-src/etags.c   411
+STOP_POLLING   c-src/emacs/src/keyboard.c      2166
+STRING_BYTES   c-src/emacs/src/lisp.h  /^STRING_BYTES (struct Lisp_String *s)$/
+STRING_BYTES_BOUND     c-src/emacs/src/lisp.h  1261
+STRING_MULTIBYTE       c-src/emacs/src/lisp.h  /^STRING_MULTIBYTE (Lisp_Object 
str)$/
+STRING_SET_CHARS       c-src/emacs/src/lisp.h  /^STRING_SET_CHARS (Lisp_Object 
string, ptrdiff_t ne/
+STRING_SET_MULTIBYTE   c-src/emacs/src/lisp.h  /^#define 
STRING_SET_MULTIBYTE(STR)                     \\$/
+STRING_SET_UNIBYTE     c-src/emacs/src/lisp.h  /^#define 
STRING_SET_UNIBYTE(STR)                               \\$/
+SUBRP  c-src/emacs/src/lisp.h  /^SUBRP (Lisp_Object a)$/
+SUB_CHAR_TABLE_OFFSET  c-src/emacs/src/lisp.h  1701
+SUB_CHAR_TABLE_P       c-src/emacs/src/lisp.h  /^SUB_CHAR_TABLE_P (Lisp_Object 
a)$/
+SXHASH_REDUCE  c-src/emacs/src/lisp.h  /^SXHASH_REDUCE (EMACS_UINT x)$/
+SYMBOLP        c-src/emacs/src/lisp.h  /^# define SYMBOLP(x) lisp_h_SYMBOLP 
(x)$/
+SYMBOL_BLV     c-src/emacs/src/lisp.h  /^SYMBOL_BLV (struct Lisp_Symbol *sym)$/
+SYMBOL_CONSTANT_P      c-src/emacs/src/lisp.h  /^# define 
SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONS/
+SYMBOL_FORWARDED       c-src/emacs/src/lisp.h  651
+SYMBOL_FWD     c-src/emacs/src/lisp.h  /^SYMBOL_FWD (struct Lisp_Symbol *sym)$/
+SYMBOL_INDEX   c-src/emacs/src/lisp.h  /^#define SYMBOL_INDEX(sym) i##sym$/
+SYMBOL_INTERNED        c-src/emacs/src/lisp.h  642
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY     c-src/emacs/src/lisp.h  643
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P   c-src/emacs/src/lisp.h  
/^SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object /
+SYMBOL_INTERNED_P      c-src/emacs/src/lisp.h  /^SYMBOL_INTERNED_P 
(Lisp_Object sym)$/
+SYMBOL_LOCALIZED       c-src/emacs/src/lisp.h  650
+SYMBOL_NAME    c-src/emacs/src/lisp.h  /^SYMBOL_NAME (Lisp_Object sym)$/
+SYMBOL_PLAINVAL        c-src/emacs/src/lisp.h  648
+SYMBOL_UNINTERNED      c-src/emacs/src/lisp.h  641
+SYMBOL_VAL     c-src/emacs/src/lisp.h  /^# define SYMBOL_VAL(sym) 
lisp_h_SYMBOL_VAL (sym)$/
+SYMBOL_VARALIAS        c-src/emacs/src/lisp.h  649
+SYSCALL        c-src/machsyscalls.c    /^#define       SYSCALL(name, number, 
type, args, typed_ar/
+Sample tex-src/gzip.texi       /^@node Sample, Invoking gzip, Overview, Top$/
+Scheme_functions       c-src/etags.c   /^Scheme_functions (FILE *inf)$/
+Scheme_help    c-src/etags.c   667
+Scheme_suffixes        c-src/etags.c   665
+SelectLayer    lua-src/allegro.lua     /^function SelectLayer (layer)$/
+Self/f ada-src/2ataspri.adb    /^   function Self return TCB_Ptr is$/
+Self/f ada-src/2ataspri.ads    /^   function Self return TCB_Ptr;$/
+Server pyt-src/server.py       /^class Server:$/
+ServerEdit     pyt-src/server.py       /^class ServerEdit(Frame):$/
+Set_Own_Priority/p     ada-src/2ataspri.adb    /^   procedure Set_Own_Priority 
(Prio : System.Any_P/
+Set_Own_Priority/p     ada-src/2ataspri.ads    /^   procedure Set_Own_Priority 
(Prio : System.Any_P/
+Set_Priority/p ada-src/2ataspri.adb    /^   procedure Set_Priority$/
+Set_Priority/p ada-src/2ataspri.ads    /^   procedure Set_Priority (T : 
TCB_Ptr; Prio : Sys/
+SimpleCalc     objcpp-src/SimpleCalc.H /^@interface SimpleCalc:Object$/
+SkipBlanks     pas-src/common.pas      /^function SkipBlanks; (*($/
+SkipChars      pas-src/common.pas      /^function SkipChars; (*($/
+SkipSpaces     pas-src/common.pas      /^procedure SkipSpaces; (* (Str : 
NameString; var I /
+Square.something:Bar   lua-src/test.lua        /^function Square.something:Bar 
()$/
+StartDay       cp-src/functions.cpp    /^Date StartDay(Date a,int 
days){\/\/Function to calcu/
+StripPath      pas-src/common.pas      /^function StripPath; (*($/
+SubString      pas-src/common.pas      /^function SubString; (*($/
+Subprocess     objc-src/Subprocess.h   /^@interface Subprocess:Object$/
+Subprocess     objc-src/Subprocess.h   41
+System.Task_Primitives/b       ada-src/2ataspri.adb    /^package body 
System.Task_Primitives is$/
+System.Task_Primitives/s       ada-src/2ataspri.ads    /^package 
System.Task_Primitives is$/
+T      cp-src/fail.C   14
+T2     cp-src/fail.C   16
+T3     c.c     163
+TAGS   make-src/Makefile       /^TAGS: etags.c$/
+TAG_PTR        c-src/emacs/src/lisp.h  /^#define TAG_PTR(tag, ptr) \\$/
+TAG_SYMOFFSET  c-src/emacs/src/lisp.h  /^#define TAG_SYMOFFSET(offset)         
                    \\$/
+TAS_Cell/t     ada-src/2ataspri.ads    /^   type TAS_Cell is private;$/
+TAS_Cell/t     ada-src/2ataspri.ads    /^   type TAS_Cell is$/
+TCB_Ptr/t      ada-src/2ataspri.ads    /^   type TCB_Ptr is access all 
Task_Control_Block;$/
+TCLFLAGS       make-src/Makefile       /^TCLFLAGS=--lang=none --regex='\/proc[ 
\\t]+\\([^ \\t]+/
+TERMINALP      c-src/emacs/src/lisp.h  /^TERMINALP (Lisp_Object a)$/
+TEST   php-src/ptest.php       1
+TEXSRC make-src/Makefile       /^TEXSRC=testenv.tex gzip.texi texinfo.tex 
nonewline/
+TEX_LESC       c-src/etags.c   4986
+TEX_SESC       c-src/etags.c   4987
+TEX_clgrp      c-src/etags.c   4922
+TEX_decode_env c-src/etags.c   /^TEX_decode_env (const char *evarname, const 
char */
+TEX_defenv     c-src/etags.c   4912
+TEX_esc        c-src/etags.c   4920
+TEX_mode       c-src/etags.c   /^TEX_mode (FILE *inf)$/
+TEX_opgrp      c-src/etags.c   4921
+TEX_toktab     c-src/etags.c   4908
+TOTAL_KEYWORDS c-src/etags.c   2325
+TSL/s  ada-src/2ataspri.adb    /^   package TSL renames 
System.Tasking_Soft_Links;$/
+TYPESTOSTAT    objc-src/PackInsp.h     37
+TYPE_RANGED_INTEGERP   c-src/emacs/src/lisp.h  /^#define 
TYPE_RANGED_INTEGERP(type, x) \\$/
+Tapes  tex-src/gzip.texi       /^@node Tapes, Problems, Environment, Top$/
+Task_Control_Block/t   ada-src/2ataspri.ads    /^   type Task_Control_Block is 
record$/
+Task_Storage_Size/t    ada-src/2ataspri.ads    /^   type Task_Storage_Size is 
new Interfaces.C.size/
+Task_Type/b    ada-src/etags-test-for.ada      /^  task body Task_Type is$/
+Task_Type/b    ada-src/waroquiers.ada  /^  task body Task_Type is$/
+Task_Type/k    ada-src/etags-test-for.ada      /^  task type Task_Type is$/
+Task_Type/k    ada-src/waroquiers.ada  /^  task type Task_Type is$/
+TeX_commands   c-src/etags.c   /^TeX_commands (FILE *inf)$/
+TeX_help       c-src/etags.c   674
+TeX_suffixes   c-src/etags.c   672
+Test_Abort/p   ada-src/2ataspri.adb    /^   procedure Test_Abort is$/
+Test_Abort/p   ada-src/2ataspri.ads    /^   procedure Test_Abort;$/
+Test_And_Set/p ada-src/2ataspri.adb    /^   procedure Test_And_Set (Cell : in 
out TAS_Cell;/
+Test_And_Set/p ada-src/2ataspri.ads    /^   procedure Test_And_Set (Cell : in 
out TAS_Cell;/
+Texinfo_help   c-src/etags.c   688
+Texinfo_nodes  c-src/etags.c   /^Texinfo_nodes (FILE *inf)$/
+Texinfo_suffixes       c-src/etags.c   686
+Time_to_position       c-src/emacs/src/keyboard.c      /^Time_to_position 
(Time encoded_pos)$/
+To_Lower       pas-src/common.pas      /^function To_Lower;(*(ch:char) : 
char;*)$/
+To_Start_Addr/f        ada-src/2ataspri.adb    /^      function To_Start_Addr 
is new$/
+To_TCB_Ptr/f   ada-src/2ataspri.adb    /^   function To_TCB_Ptr is new$/
+To_Upper       pas-src/common.pas      /^function To_Upper;(*(ch:char) : 
char;*)$/
+To_void_ptr/f  ada-src/2ataspri.adb    /^   function To_void_ptr is new$/
+Top    tex-src/gzip.texi       /^@node Top, , , (dir)$/
+Truc.Bidule/b  ada-src/etags-test-for.ada      /^package body Truc.Bidule is$/
+Truc.Bidule/b  ada-src/waroquiers.ada  /^package body Truc.Bidule is$/
+Truc.Bidule/s  ada-src/etags-test-for.ada      /^package Truc.Bidule is$/
+Truc.Bidule/s  ada-src/waroquiers.ada  /^package Truc.Bidule is$/
+Truc/s ada-src/etags-test-for.ada      /^package Truc is$/
+Truc/s ada-src/waroquiers.ada  /^package Truc is$/
+Type_Specific_Data/t   ada-src/etags-test-for.ada      /^   type 
Type_Specific_Data is record$/
+UCHAR  c-src/emacs/src/lisp.h  2424
+UNARY  y-src/cccp.c    18
+UNDEFINED      c-src/h.h       118
+UNEVALLED      c-src/emacs/src/lisp.h  2834
+UNGCPRO        c-src/emacs/src/lisp.h  3202
+UNGCPRO        c-src/emacs/src/lisp.h  3257
+UNGCPRO        c-src/emacs/src/lisp.h  3353
+UNLOCK c-src/emacs/src/gmalloc.c       /^#define UNLOCK()                      
        \\$/
+UNLOCK c-src/emacs/src/gmalloc.c       /^#define UNLOCK()$/
+UNLOCK_ALIGNED_BLOCKS  c-src/emacs/src/gmalloc.c       /^#define 
UNLOCK_ALIGNED_BLOCKS()                               \\$/
+UNLOCK_ALIGNED_BLOCKS  c-src/emacs/src/gmalloc.c       /^#define 
UNLOCK_ALIGNED_BLOCKS()$/
+UNSIGNED_CMP   c-src/emacs/src/lisp.h  /^#define UNSIGNED_CMP(a, op, b)        
                                        \\$/
+USE_LSB_TAG    c-src/emacs/src/lisp.h  /^DEFINE_GDB_SYMBOL_BEGIN (bool, 
USE_LSB_TAG)$/
+USE_LSB_TAG    c-src/emacs/src/lisp.h  271
+USE_PTHREAD    c-src/emacs/src/gmalloc.c       25
+USE_SAFE_ALLOCA        c-src/emacs/src/lisp.h  4560
+USE_STACK_CONS c-src/emacs/src/lisp.h  4689
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h  4652
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h  4658
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h  4659
+USE_STACK_STRING       c-src/emacs/src/lisp.h  4691
+U_CHAR y-src/cccp.y    38
+Unlock/p       ada-src/2ataspri.adb    /^   procedure Unlock (L : in out Lock) 
is$/
+Unlock/p       ada-src/2ataspri.ads    /^   procedure Unlock (L : in out 
Lock);$/
+User   pyt-src/server.py       /^class User:$/
+UserEdit       pyt-src/server.py       /^class UserEdit(Frame):$/
+VALBITS        c-src/emacs/src/lisp.h  246
+VALMASK        c-src/emacs/src/lisp.h  /^DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT, 
VALMASK)$/
+VALMASK        c-src/emacs/src/lisp.h  829
+VAL_MAX        c-src/emacs/src/lisp.h  263
+VECSIZE        c-src/emacs/src/lisp.h  /^#define VECSIZE(type)                 
                        \\$/
+VECTORLIKEP    c-src/emacs/src/lisp.h  /^# define VECTORLIKEP(x) 
lisp_h_VECTORLIKEP (x)$/
+VECTORP        c-src/emacs/src/lisp.h  /^VECTORP (Lisp_Object x)$/
+VERSION        c-src/etags.c   789
+VERSION        erl-src/gs_dialog.erl   /^-define(VERSION, '2001.1101').$/
+VERSION        objc-src/PackInsp.m     34
+VHDLFLAGS      make-src/Makefile       /^VHDLFLAGS=--language=none 
--regex='\/[ \\t]*\\(ARCHIT/
+Vabbrev_start_location c-src/abbrev.c  63
+Vabbrev_start_location_buffer  c-src/abbrev.c  66
+Vabbrev_table_name_list        c-src/abbrev.c  43
+ValToNmStr     pas-src/common.pas      /^function ValToNmStr; (*($/
+Vfundamental_mode_abbrev_table c-src/abbrev.c  52
+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
+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 /
+WCHAR_TYPE_SIZE        y-src/cccp.y    99
+WHITE  cp-src/screen.hpp       27
+WINDOWP        c-src/emacs/src/lisp.h  /^WINDOWP (Lisp_Object a)$/
+WINDOWSNT      c-src/etags.c   101
+WINDOWSNT      c-src/etags.c   102
+WINDOW_CONFIGURATIONP  c-src/emacs/src/lisp.h  /^WINDOW_CONFIGURATIONP 
(Lisp_Object a)$/
+WORKING        objc-src/PackInsp.m     368
+WorkingDays    cp-src/functions.cpp    /^int WorkingDays(Date a, Date b){$/
+Write_Lock/p   ada-src/2ataspri.adb    /^   procedure Write_Lock (L : in out 
Lock; Ceiling_/
+Write_Lock/p   ada-src/2ataspri.ads    /^   procedure Write_Lock (L : in out 
Lock; Ceiling_/
+X      c-src/h.h       100
+XBOOL_VECTOR   c-src/emacs/src/lisp.h  /^XBOOL_VECTOR (Lisp_Object a)$/
+XBUFFER        c-src/emacs/src/lisp.h  /^XBUFFER (Lisp_Object a)$/
+XBUFFER_OBJFWD c-src/emacs/src/lisp.h  /^XBUFFER_OBJFWD (union Lisp_Fwd *a)$/
+XCAR   c-src/emacs/src/lisp.h  /^# define XCAR(c) lisp_h_XCAR (c)$/
+XCDR   c-src/emacs/src/lisp.h  /^# define XCDR(c) lisp_h_XCDR (c)$/
+XCHAR_TABLE    c-src/emacs/src/lisp.h  /^XCHAR_TABLE (Lisp_Object a)$/
+XCHG_0 c-src/sysdep.h  47
+XCHG_1 c-src/sysdep.h  48
+XCHG_2 c-src/sysdep.h  49
+XCHG_3 c-src/sysdep.h  50
+XCHG_4 c-src/sysdep.h  51
+XCHG_5 c-src/sysdep.h  52
+XCONS  c-src/emacs/src/lisp.h  /^# define XCONS(a) lisp_h_XCONS (a)$/
+XDEFUN c.c     /^XDEFUN ("x-get-selection-internal", Fx_get_selecti/
+XFASTINT       c-src/emacs/src/lisp.h  /^#  define XFASTINT(a) lisp_h_XFASTINT 
(a)$/
+XFASTINT       c-src/emacs/src/lisp.h  /^XFASTINT (Lisp_Object a)$/
+XFINALIZER     c-src/emacs/src/lisp.h  /^XFINALIZER (Lisp_Object a)$/
+XFLOAT c-src/emacs/src/lisp.h  /^XFLOAT (Lisp_Object a)$/
+XFLOATINT      c-src/emacs/src/lisp.h  /^XFLOATINT (Lisp_Object n)$/
+XFLOAT_DATA    c-src/emacs/src/lisp.h  /^XFLOAT_DATA (Lisp_Object f)$/
+XFWDTYPE       c-src/emacs/src/lisp.h  /^XFWDTYPE (union Lisp_Fwd *a)$/
+XHASH  c-src/emacs/src/lisp.h  /^# define XHASH(a) lisp_h_XHASH (a)$/
+XHASH_TABLE    c-src/emacs/src/lisp.h  /^XHASH_TABLE (Lisp_Object a)$/
+XIL    c-src/emacs/src/lisp.h  /^# define XIL(i) lisp_h_XIL (i)$/
+XINT   c-src/emacs/src/lisp.h  /^#  define XINT(a) lisp_h_XINT (a)$/
+XINT   c-src/emacs/src/lisp.h  /^XINT (Lisp_Object a)$/
+XINTPTR        c-src/emacs/src/lisp.h  /^XINTPTR (Lisp_Object a)$/
+XLI    c-src/emacs/src/lisp.h  /^# define XLI(o) lisp_h_XLI (o)$/
+XLI_BUILTIN_LISPSYM    c-src/emacs/src/lisp.h  /^#define 
XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET (/
+XMARKER        c-src/emacs/src/lisp.h  /^XMARKER (Lisp_Object a)$/
+XMISC  c-src/emacs/src/lisp.h  /^XMISC (Lisp_Object a)$/
+XMISCANY       c-src/emacs/src/lisp.h  /^XMISCANY (Lisp_Object a)$/
+XMISCTYPE      c-src/emacs/src/lisp.h  /^XMISCTYPE (Lisp_Object a)$/
+XOVERLAY       c-src/emacs/src/lisp.h  /^XOVERLAY (Lisp_Object a)$/
+XPNTR  c-src/emacs/src/lisp.h  /^# define XPNTR(a) lisp_h_XPNTR (a)$/
+XPROCESS       c-src/emacs/src/lisp.h  /^XPROCESS (Lisp_Object a)$/
+XSAVE_FUNCPOINTER      c-src/emacs/src/lisp.h  /^XSAVE_FUNCPOINTER 
(Lisp_Object obj, int n)$/
+XSAVE_INTEGER  c-src/emacs/src/lisp.h  /^XSAVE_INTEGER (Lisp_Object obj, int 
n)$/
+XSAVE_OBJECT   c-src/emacs/src/lisp.h  /^XSAVE_OBJECT (Lisp_Object obj, int 
n)$/
+XSAVE_POINTER  c-src/emacs/src/lisp.h  /^XSAVE_POINTER (Lisp_Object obj, int 
n)$/
+XSAVE_VALUE    c-src/emacs/src/lisp.h  /^XSAVE_VALUE (Lisp_Object a)$/
+XSETBOOL_VECTOR        c-src/emacs/src/lisp.h  /^#define XSETBOOL_VECTOR(a, b) 
(XSETPSEUDOVECTOR (a/
+XSETBUFFER     c-src/emacs/src/lisp.h  /^#define XSETBUFFER(a, b) 
(XSETPSEUDOVECTOR (a, b, /
+XSETCDR        c-src/emacs/src/lisp.h  /^XSETCDR (Lisp_Object c, Lisp_Object 
n)$/
+XSETCHAR_TABLE c-src/emacs/src/lisp.h  /^#define XSETCHAR_TABLE(a, b) 
(XSETPSEUDOVECTOR (a,/
+XSETCOMPILED   c-src/emacs/src/lisp.h  /^#define XSETCOMPILED(a, b) 
(XSETPSEUDOVECTOR (a, b/
+XSETCONS       c-src/emacs/src/lisp.h  /^#define XSETCONS(a, b) ((a) = 
make_lisp_ptr (b, Li/
+XSETFASTINT    c-src/emacs/src/lisp.h  /^#define XSETFASTINT(a, b) ((a) = 
make_natnum (b))$/
+XSETFLOAT      c-src/emacs/src/lisp.h  /^#define XSETFLOAT(a, b) ((a) = 
make_lisp_ptr (b, L/
+XSETINT        c-src/emacs/src/lisp.h  /^#define XSETINT(a, b) ((a) = 
make_number (b))$/
+XSETMISC       c-src/emacs/src/lisp.h  /^#define XSETMISC(a, b) ((a) = 
make_lisp_ptr (b, Li/
+XSETPROCESS    c-src/emacs/src/lisp.h  /^#define XSETPROCESS(a, b) 
(XSETPSEUDOVECTOR (a, b,/
+XSETPSEUDOVECTOR       c-src/emacs/src/lisp.h  /^#define XSETPSEUDOVECTOR(a, 
b, code) \\$/
+XSETPVECTYPE   c-src/emacs/src/lisp.h  /^#define XSETPVECTYPE(v, code)         
                                \\$/
+XSETPVECTYPESIZE       c-src/emacs/src/lisp.h  /^#define XSETPVECTYPESIZE(v, 
code, lispsize, restsi/
+XSETSTRING     c-src/emacs/src/lisp.h  /^#define XSETSTRING(a, b) ((a) = 
make_lisp_ptr (b, /
+XSETSUBR       c-src/emacs/src/lisp.h  /^#define XSETSUBR(a, b) 
(XSETPSEUDOVECTOR (a, b, PV/
+XSETSUB_CHAR_TABLE     c-src/emacs/src/lisp.h  /^#define XSETSUB_CHAR_TABLE(a, 
b) (XSETPSEUDOVECTOR/
+XSETSYMBOL     c-src/emacs/src/lisp.h  /^#define XSETSYMBOL(a, b) ((a) = 
make_lisp_symbol (/
+XSETTERMINAL   c-src/emacs/src/lisp.h  /^#define XSETTERMINAL(a, b) 
(XSETPSEUDOVECTOR (a, b/
+XSETTYPED_PSEUDOVECTOR c-src/emacs/src/lisp.h  /^#define 
XSETTYPED_PSEUDOVECTOR(a, b, size, code)              /
+XSETVECTOR     c-src/emacs/src/lisp.h  /^#define XSETVECTOR(a, b) ((a) = 
make_lisp_ptr (b, /
+XSETWINDOW     c-src/emacs/src/lisp.h  /^#define XSETWINDOW(a, b) 
(XSETPSEUDOVECTOR (a, b, /
+XSETWINDOW_CONFIGURATION       c-src/emacs/src/lisp.h  /^#define 
XSETWINDOW_CONFIGURATION(a, b) \\$/
+XSET_HASH_TABLE        c-src/emacs/src/lisp.h  /^#define XSET_HASH_TABLE(VAR, 
PTR) \\$/
+XSTRING        c-src/emacs/src/lisp.h  /^XSTRING (Lisp_Object a)$/
+XSUBR  c-src/emacs/src/lisp.h  /^XSUBR (Lisp_Object a)$/
+XSUB_CHAR_TABLE        c-src/emacs/src/lisp.h  /^XSUB_CHAR_TABLE (Lisp_Object 
a)$/
+XSYMBOL        c-src/emacs/src/lisp.h  /^#  define XSYMBOL(a) lisp_h_XSYMBOL 
(a)$/
+XSYMBOL        c-src/emacs/src/lisp.h  /^XSYMBOL (Lisp_Object a)$/
+XTERMINAL      c-src/emacs/src/lisp.h  /^XTERMINAL (Lisp_Object a)$/
+XTYPE  c-src/emacs/src/lisp.h  /^#  define XTYPE(a) lisp_h_XTYPE (a)$/
+XTYPE  c-src/emacs/src/lisp.h  /^XTYPE (Lisp_Object a)$/
+XUNTAG c-src/emacs/src/lisp.h  /^#  define XUNTAG(a, type) lisp_h_XUNTAG (a, 
type)$/
+XUNTAG c-src/emacs/src/lisp.h  /^XUNTAG (Lisp_Object a, int type)$/
+XWINDOW        c-src/emacs/src/lisp.h  /^XWINDOW (Lisp_Object a)$/
+XX     cp-src/x.cc     1
+Xyzzy  ruby-src/test1.ru       13
+Y      c-src/h.h       100
+YACC   c-src/etags.c   2199
+YELLOW cp-src/screen.hpp       26
+YSRC   make-src/Makefile       /^YSRC=parse.y parse.c atest.y cccp.c cccp.y$/
+YYABORT        /usr/share/bison/bison.simple   153
+YYABORT        /usr/share/bison/bison.simple   154
+YYACCEPT       /usr/share/bison/bison.simple   152
+YYACCEPT       /usr/share/bison/bison.simple   153
+YYBACKUP       /usr/share/bison/bison.simple   /^#define YYBACKUP(Token, 
Value)                                        \\$/
+YYBISON        y-src/cccp.c    4
+YYBISON        y-src/parse.c   4
+YYDPRINTF      /usr/share/bison/bison.simple   /^# define YYDPRINTF(Args)      
                \\$/
+YYDPRINTF      /usr/share/bison/bison.simple   /^# define YYDPRINTF(Args)$/
+YYEMPTY        /usr/share/bison/bison.simple   150
+YYEMPTY        /usr/share/bison/bison.simple   151
+YYEOF  /usr/share/bison/bison.simple   151
+YYEOF  /usr/share/bison/bison.simple   152
+YYERRCODE      /usr/share/bison/bison.simple   178
+YYERRCODE      /usr/share/bison/bison.simple   179
+YYERROR        /usr/share/bison/bison.simple   154
+YYERROR        /usr/share/bison/bison.simple   155
+YYFAIL /usr/share/bison/bison.simple   158
+YYFAIL /usr/share/bison/bison.simple   159
+YYFPRINTF      /usr/share/bison/bison.simple   225
+YYFPRINTF      /usr/share/bison/bison.simple   226
+YYINITDEPTH    /usr/share/bison/bison.simple   244
+YYINITDEPTH    /usr/share/bison/bison.simple   245
+YYLEX  /usr/share/bison/bison.simple   200
+YYLEX  /usr/share/bison/bison.simple   201
+YYLEX  /usr/share/bison/bison.simple   202
+YYLEX  /usr/share/bison/bison.simple   203
+YYLEX  /usr/share/bison/bison.simple   206
+YYLEX  /usr/share/bison/bison.simple   207
+YYLEX  /usr/share/bison/bison.simple   208
+YYLEX  /usr/share/bison/bison.simple   209
+YYLEX  /usr/share/bison/bison.simple   212
+YYLEX  /usr/share/bison/bison.simple   213
+YYLLOC_DEFAULT /usr/share/bison/bison.simple   /^# define 
YYLLOC_DEFAULT(Current, Rhs, N)              \\$/
+YYMAXDEPTH     /usr/share/bison/bison.simple   255
+YYMAXDEPTH     /usr/share/bison/bison.simple   256
+YYMAXDEPTH     /usr/share/bison/bison.simple   259
+YYMAXDEPTH     /usr/share/bison/bison.simple   260
+YYPARSE_PARAM_ARG      /usr/share/bison/bison.simple   351
+YYPARSE_PARAM_ARG      /usr/share/bison/bison.simple   354
+YYPARSE_PARAM_ARG      /usr/share/bison/bison.simple   358
+YYPARSE_PARAM_DECL     /usr/share/bison/bison.simple   352
+YYPARSE_PARAM_DECL     /usr/share/bison/bison.simple   355
+YYPARSE_PARAM_DECL     /usr/share/bison/bison.simple   359
+YYPOPSTACK     /usr/share/bison/bison.simple   445
+YYPOPSTACK     /usr/share/bison/bison.simple   447
+YYRECOVERING   /usr/share/bison/bison.simple   /^#define YYRECOVERING()  
(!!yyerrstatus)$/
+YYSIZE_T       /usr/share/bison/bison.simple   128
+YYSIZE_T       /usr/share/bison/bison.simple   129
+YYSIZE_T       /usr/share/bison/bison.simple   131
+YYSIZE_T       /usr/share/bison/bison.simple   132
+YYSIZE_T       /usr/share/bison/bison.simple   136
+YYSIZE_T       /usr/share/bison/bison.simple   137
+YYSIZE_T       /usr/share/bison/bison.simple   140
+YYSIZE_T       /usr/share/bison/bison.simple   141
+YYSIZE_T       /usr/share/bison/bison.simple   145
+YYSIZE_T       /usr/share/bison/bison.simple   146
+YYSIZE_T       /usr/share/bison/bison.simple   51
+YYSIZE_T       /usr/share/bison/bison.simple   52
+YYSIZE_T       /usr/share/bison/bison.simple   56
+YYSIZE_T       /usr/share/bison/bison.simple   57
+YYSIZE_T       /usr/share/bison/bison.simple   71
+YYSIZE_T       /usr/share/bison/bison.simple   72
+YYSIZE_T       /usr/share/bison/bison.simple   75
+YYSIZE_T       /usr/share/bison/bison.simple   76
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   50
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   51
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   55
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   56
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   59
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   60
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   78
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   79
+YYSTACK_BYTES  /usr/share/bison/bison.simple   /^#  define YYSTACK_BYTES(N) 
\\$/
+YYSTACK_FREE   /usr/share/bison/bison.simple   /^#  define YYSTACK_FREE(Ptr) 
do { \/* empty *\/; } wh/
+YYSTACK_FREE   /usr/share/bison/bison.simple   79
+YYSTACK_FREE   /usr/share/bison/bison.simple   80
+YYSTACK_GAP_MAX        /usr/share/bison/bison.simple   93
+YYSTACK_GAP_MAX        /usr/share/bison/bison.simple   94
+YYSTACK_RELOCATE       /usr/share/bison/bison.simple   /^# define 
YYSTACK_RELOCATE(Type, Stack)                                        \\$/
+YYSTACK_RELOCATE       /usr/share/bison/bison.simple   548
+YYSTD  /usr/share/bison/bison.simple   /^# define YYSTD(x) std::x$/
+YYSTD  /usr/share/bison/bison.simple   /^# define YYSTD(x) x$/
+YYSTYPE        y-src/parse.y   72
+YYSTYPE        y-src/parse.y   73
+YYTERROR       /usr/share/bison/bison.simple   177
+YYTERROR       /usr/share/bison/bison.simple   178
+YY_DECL_NON_LSP_VARIABLES      /usr/share/bison/bison.simple   374
+YY_DECL_VARIABLES      /usr/share/bison/bison.simple   385
+YY_DECL_VARIABLES      /usr/share/bison/bison.simple   391
+Yacc_entries   c-src/etags.c   /^Yacc_entries (FILE *inf)$/
+Yacc_help      c-src/etags.c   693
+Yacc_suffixes  c-src/etags.c   691
+Z      c-src/h.h       100
+[]     ruby-src/test.rb        /^        def [](y)$/
+[]=    ruby-src/test.rb        /^        def []=(y, val)$/
+\      tex-src/texinfo.tex     /^\\def\\ {{\\fontdimen2\\font=\\tclosesave{} 
}}%$/
+\      tex-src/texinfo.tex     /^\\gdef\\sepspaces{\\def {\\ }}}$/
+\'     tex-src/texinfo.tex     /^\\def\\'{{'}}$/
+\*     tex-src/texinfo.tex     
/^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
+\.     tex-src/texinfo.tex     /^\\def\\.{.\\spacefactor=3000 }$/
+\:     tex-src/texinfo.tex     /^\\def\\:{\\spacefactor=1000 }$/
+\@     tex-src/texinfo.tex     /^\\def\\@{@}%$/
+\@     tex-src/texinfo.tex     /^\\def\\@{{\\tt \\char '100}}$/
+\CHAPFopen     tex-src/texinfo.tex     /^\\def\\CHAPFopen{$/
+\CHAPFplain    tex-src/texinfo.tex     /^\\def\\CHAPFplain{$/
+\CHAPPAGodd    tex-src/texinfo.tex     /^\\def\\CHAPPAGodd{$/
+\CHAPPAGoff    tex-src/texinfo.tex     /^\\def\\CHAPPAGoff{$/
+\CHAPPAGon     tex-src/texinfo.tex     /^\\def\\CHAPPAGon{$/
+\ENVcheck      tex-src/texinfo.tex     /^\\def\\ENVcheck{%$/
+\Ealphaenumerate       tex-src/texinfo.tex     
/^\\def\\Ealphaenumerate{\\Eenumerate}$/
+\Ecapsenumerate        tex-src/texinfo.tex     
/^\\def\\Ecapsenumerate{\\Eenumerate}$/
+\Ecartouche    tex-src/texinfo.tex     /^\\def\\Ecartouche{%$/
+\Edescription  tex-src/texinfo.tex     /^\\def\\Edescription{\\Etable}% 
Necessary kludge.$/
+\Edisplay      tex-src/texinfo.tex     
/^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
+\Eexample      tex-src/texinfo.tex     /^\\def\\Eexample{\\Elisp}$/
+\Eflushleft    tex-src/texinfo.tex     
/^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
+\Eflushright   tex-src/texinfo.tex     
/^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
+\Eformat       tex-src/texinfo.tex     
/^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
+\Eftable       tex-src/texinfo.tex     
/^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\Egroup        tex-src/texinfo.tex     /^  \\def\\Egroup{\\egroup\\endgroup}%$/
+\Eifclear      tex-src/texinfo.tex     /^\\def\\Eifclear{}$/
+\Eifset        tex-src/texinfo.tex     /^\\def\\Eifset{}$/
+\Eiftex        tex-src/texinfo.tex     /^\\def\\Eiftex{}$/
+\Elisp tex-src/texinfo.tex     /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
+\Equotation    tex-src/texinfo.tex     
/^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
+\Esmallexample tex-src/texinfo.tex     /^\\def\\Esmallexample{\\Elisp}$/
+\Esmallexample tex-src/texinfo.tex     
/^\\global\\def\\Esmallexample{\\Esmalllisp}$/
+\Esmalllisp    tex-src/texinfo.tex     
/^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
+\Etable        tex-src/texinfo.tex     
/^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\Etitlepage    tex-src/texinfo.tex     /^\\def\\Etitlepage{%$/
+\Evtable       tex-src/texinfo.tex     
/^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\HEADINGSafter tex-src/texinfo.tex     
/^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+\HEADINGSdouble        tex-src/texinfo.tex     /^\\def\\HEADINGSdouble{$/
+\HEADINGSdoublex       tex-src/texinfo.tex     /^\\def\\HEADINGSdoublex{%$/
+\HEADINGSoff   tex-src/texinfo.tex     /^\\def\\HEADINGSoff{$/
+\HEADINGSon    tex-src/texinfo.tex     /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
+\HEADINGSon    tex-src/texinfo.tex     
/^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
+\HEADINGSon    tex-src/texinfo.tex     
/^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
+\HEADINGSsingle        tex-src/texinfo.tex     /^\\def\\HEADINGSsingle{$/
+\HEADINGSsingleafter   tex-src/texinfo.tex     
/^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+\HEADINGSsinglex       tex-src/texinfo.tex     /^\\def\\HEADINGSsinglex{%$/
+\TeX   tex-src/texinfo.tex     /^\\def\\TeX{\\realbackslash TeX}$/
+\TeX   tex-src/texinfo.tex     /^\\def\\TeX{\\realbackslash TeX}%$/
+\Yappendixletterandtype        tex-src/texinfo.tex     
/^\\def\\Yappendixletterandtype{%$/
+\Ynothing      tex-src/texinfo.tex     /^\\def\\Ynothing{}$/
+\Ypagenumber   tex-src/texinfo.tex     /^\\def\\Ypagenumber{\\folio}$/
+\Ysectionnumberandtype tex-src/texinfo.tex     
/^\\def\\Ysectionnumberandtype{%$/
+\Ytitle        tex-src/texinfo.tex     /^\\def\\Ytitle{\\thischapter}$/
+\_     tex-src/texinfo.tex     /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule 
width.3em /
+\_     tex-src/texinfo.tex     /^\\def\\_{{\\realbackslash _}}%$/
+\`     tex-src/texinfo.tex     /^\\def\\`{{`}}$/
+\aboveenvbreak tex-src/texinfo.tex     
/^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
+\activedoublequote     tex-src/texinfo.tex     
/^\\def\\activedoublequote{{\\tt \\char '042}}$/
+\activeparens  tex-src/texinfo.tex     /^\\def\\activeparens{%$/
+\afourpaper    tex-src/texinfo.tex     /^\\def\\afourpaper{$/
+\afterenvbreak tex-src/texinfo.tex     /^\\def\\afterenvbreak{\\endgraf 
\\ifdim\\lastskip<\\above/
+\alphaenumerate        tex-src/texinfo.tex     
/^\\def\\alphaenumerate{\\enumerate{a}}$/
+\appendix      tex-src/texinfo.tex     
/^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
+\appendixletter        tex-src/texinfo.tex     
/^\\def\\appendixletter{\\char\\the\\appendixno}$/
+\appendixnoderef       tex-src/texinfo.tex     
/^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
+\appendixsec   tex-src/texinfo.tex     
/^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+\appendixsection       tex-src/texinfo.tex     
/^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+\appendixsectionzzz    tex-src/texinfo.tex     /^\\def\\appendixsectionzzz 
#1{\\seccheck{appendixsecti/
+\appendixsetref        tex-src/texinfo.tex     /^\\def\\appendixsetref#1{%$/
+\appendixsubsec        tex-src/texinfo.tex     
/^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
+\appendixsubseczzz     tex-src/texinfo.tex     /^\\def\\appendixsubseczzz 
#1{\\seccheck{appendixsubsec/
+\appendixsubsubsec     tex-src/texinfo.tex     
/^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+\appendixsubsubseczzz  tex-src/texinfo.tex     /^\\def\\appendixsubsubseczzz 
#1{\\seccheck{appendixsub/
+\appendixzzz   tex-src/texinfo.tex     /^\\def\\appendixzzz 
#1{\\seccheck{appendix}%$/
+\asis  tex-src/texinfo.tex     /^\\def\\asis#1{#1}$/
+\author        tex-src/texinfo.tex     /^   
\\def\\author{\\parsearg\\authorzzz}%$/
+\authorfont    tex-src/texinfo.tex     /^   \\def\\authorfont{\\authorrm 
\\normalbaselineskip =/
+\authorzzz     tex-src/texinfo.tex     /^   
\\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
+\b     tex-src/texinfo.tex     /^\\def\\b##1{\\realbackslash b {##1}}$/
+\b     tex-src/texinfo.tex     /^\\def\\b##1{\\realbackslash b {##1}}%$/
+\b     tex-src/texinfo.tex     /^\\def\\b#1{{\\bf #1}}$/
+\balancecolumns        tex-src/texinfo.tex     /^\\def\\balancecolumns{%$/
+\begin tex-src/texinfo.tex     /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
+\begindoublecolumns    tex-src/texinfo.tex     
/^\\def\\begindoublecolumns{\\begingroup$/
+\beginxxx      tex-src/texinfo.tex     /^\\def\\beginxxx #1{%$/
+\bf    tex-src/texinfo.tex     /^\\def\\bf{\\realbackslash bf }$/
+\bf    tex-src/texinfo.tex     /^\\def\\bf{\\realbackslash bf }%$/
+\bullet        tex-src/texinfo.tex     /^\\def\\bullet{$\\ptexbullet$}$/
+\bye   tex-src/texinfo.tex     
/^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
+\capsenumerate tex-src/texinfo.tex     /^\\def\\capsenumerate{\\enumerate{A}}$/
+\cartbot       tex-src/texinfo.tex     /^\\def\\cartbot{\\hbox to 
\\cartouter{\\hskip\\lskip$/
+\cartouche     tex-src/texinfo.tex     /^\\long\\def\\cartouche{%$/
+\carttop       tex-src/texinfo.tex     /^\\def\\carttop{\\hbox to 
\\cartouter{\\hskip\\lskip$/
+\cbl   tex-src/texinfo.tex     /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
+\cbr   tex-src/texinfo.tex     /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
+\center        tex-src/texinfo.tex     /^\\def\\center{\\parsearg\\centerzzz}$/
+\centerzzz     tex-src/texinfo.tex     /^\\def\\centerzzz #1{{\\advance\\hsize 
by -\\leftskip$/
+\chapbreak     tex-src/texinfo.tex     /^\\def\\chapbreak{\\dobreak 
\\chapheadingskip {-4000}}$/
+\chapentry     tex-src/texinfo.tex     
/^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
+\chapentryfonts        tex-src/texinfo.tex     
/^\\def\\chapentryfonts{\\secfonts \\rm}$/
+\chapfonts     tex-src/texinfo.tex     /^\\def\\chapfonts{%$/
+\chapheading   tex-src/texinfo.tex     
/^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
+\chapheadingzzz        tex-src/texinfo.tex     /^\\def\\chapheadingzzz 
#1{\\chapbreak %$/
+\chapoddpage   tex-src/texinfo.tex     /^\\def\\chapoddpage{\\chappager 
\\ifodd\\pageno \\else \\h/
+\chappager     tex-src/texinfo.tex     
/^\\def\\chappager{\\par\\vfill\\supereject}$/
+\chapter       tex-src/texinfo.tex     
/^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+\chapternofonts        tex-src/texinfo.tex     /^\\def\\chapternofonts{%$/
+\chapterzzz    tex-src/texinfo.tex     /^\\def\\chapterzzz 
#1{\\seccheck{chapter}%$/
+\char  tex-src/texinfo.tex     /^\\def\\char{\\realbackslash char}$/
+\char  tex-src/texinfo.tex     /^\\def\\char{\\realbackslash char}%$/
+\chfopen       tex-src/texinfo.tex     /^\\def\\chfopen #1#2{\\chapoddpage 
{\\chapfonts$/
+\chfplain      tex-src/texinfo.tex     /^\\def\\chfplain #1#2{%$/
+\cindex        tex-src/texinfo.tex     /^\\def\\cindex {\\cpindex}$/
+\cindexsub     tex-src/texinfo.tex     /^\\def\\cindexsub 
{\\begingroup\\obeylines\\cindexsub}$/
+\cite  tex-src/texinfo.tex     /^\\def\\cite##1{\\realbackslash cite {##1}}$/
+\cite  tex-src/texinfo.tex     /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
+\clear tex-src/texinfo.tex     /^\\def\\clear{\\parsearg\\clearxxx}$/
+\clearxxx      tex-src/texinfo.tex     /^\\def\\clearxxx #1{$/
+\code  tex-src/texinfo.tex     /^\\def\\code##1{\\realbackslash code {##1}}$/
+\code  tex-src/texinfo.tex     /^\\def\\code##1{\\realbackslash code {##1}}%$/
+\comment       tex-src/texinfo.tex     /^\\def\\comment{\\catcode 64=\\other 
\\catcode 123=\\othe/
+\commentxxx    tex-src/texinfo.tex     /^\\def\\commentxxx #1{\\catcode 64=0 
\\catcode 123=1 \\c/
+\contents      tex-src/texinfo.tex     /^\\outer\\def\\contents{%$/
+\copyright     tex-src/texinfo.tex     /^\\def\\copyright{\\realbackslash 
copyright }%$/
+\copyright     tex-src/texinfo.tex     /^\\def\\copyright{\\realbackslash 
copyright}$/
+\cropmarks     tex-src/texinfo.tex     
/^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
+\croppageout   tex-src/texinfo.tex     /^\\def\\croppageout#1{\\hoffset=0pt % 
make sure this d/
+\ctl   tex-src/texinfo.tex     /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 
6pt from /
+\ctr   tex-src/texinfo.tex     /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
+\ctrl  tex-src/texinfo.tex     /^\\def\\ctrl #1{{\\tt \\rawbackslash 
\\hat}#1}$/
+\defcodeindex  tex-src/texinfo.tex     
/^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
+\defcv tex-src/texinfo.tex     /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+\defcvarheader tex-src/texinfo.tex     /^\\def\\defcvarheader #1#2#3{%$/
+\defcvx        tex-src/texinfo.tex     /^\\def\\defcvx #1 
{\\errmessage{@defcvx in invalid con/
+\deffn tex-src/texinfo.tex     
/^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+\deffnheader   tex-src/texinfo.tex     /^\\def\\deffnheader #1#2#3{\\doind 
{fn}{\\code{#2}}%$/
+\deffnx        tex-src/texinfo.tex     /^\\def\\deffnx #1 
{\\errmessage{@deffnx in invalid con/
+\defindex      tex-src/texinfo.tex     
/^\\def\\defindex{\\parsearg\\newindex}$/
+\defivar       tex-src/texinfo.tex     
/^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+\defivarheader tex-src/texinfo.tex     /^\\def\\defivarheader #1#2#3{%$/
+\defivarx      tex-src/texinfo.tex     /^\\def\\defivarx #1 
{\\errmessage{@defivarx in invalid/
+\defmac        tex-src/texinfo.tex     
/^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+\defmacheader  tex-src/texinfo.tex     /^\\def\\defmacheader #1#2{\\doind 
{fn}{\\code{#1}}% Mak/
+\defmacx       tex-src/texinfo.tex     /^\\def\\defmacx #1 
{\\errmessage{@defmacx in invalid c/
+\defmethod     tex-src/texinfo.tex     
/^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+\defmethodheader       tex-src/texinfo.tex     /^\\def\\defmethodheader 
#1#2#3{%$/
+\defmethodx    tex-src/texinfo.tex     /^\\def\\defmethodx #1 
{\\errmessage{@defmethodx in inv/
+\defmethparsebody      tex-src/texinfo.tex     /^\\def\\defmethparsebody 
#1#2#3#4 {\\begingroup\\inENV /
+\defname       tex-src/texinfo.tex     /^\\def\\defname #1#2{%$/
+\defop tex-src/texinfo.tex     /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+\defopheader   tex-src/texinfo.tex     /^\\def\\defopheader #1#2#3{%$/
+\defopparsebody        tex-src/texinfo.tex     /^\\def\\defopparsebody 
#1#2#3#4#5 {\\begingroup\\inENV /
+\defopt        tex-src/texinfo.tex     
/^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+\defoptheader  tex-src/texinfo.tex     /^\\def\\defoptheader #1#2{\\doind 
{vr}{\\code{#1}}% Mak/
+\defoptx       tex-src/texinfo.tex     /^\\def\\defoptx #1 
{\\errmessage{@defoptx in invalid c/
+\defopvarparsebody     tex-src/texinfo.tex     /^\\def\\defopvarparsebody 
#1#2#3#4#5 {\\begingroup\\inE/
+\defopx        tex-src/texinfo.tex     /^\\def\\defopx #1 
{\\errmessage{@defopx in invalid con/
+\defparsebody  tex-src/texinfo.tex     /^\\def\\defparsebody 
#1#2#3{\\begingroup\\inENV% Enviro/
+\defspec       tex-src/texinfo.tex     
/^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+\defspecheader tex-src/texinfo.tex     /^\\def\\defspecheader #1#2{\\doind 
{fn}{\\code{#1}}% Ma/
+\defspecx      tex-src/texinfo.tex     /^\\def\\defspecx #1 
{\\errmessage{@defspecx in invalid/
+\deftp tex-src/texinfo.tex     
/^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+\deftpargs     tex-src/texinfo.tex     /^\\def\\deftpargs #1{\\bf 
\\defvarargs{#1}}$/
+\deftpheader   tex-src/texinfo.tex     /^\\def\\deftpheader #1#2#3{\\doind 
{tp}{\\code{#2}}%$/
+\deftpx        tex-src/texinfo.tex     /^\\def\\deftpx #1 
{\\errmessage{@deftpx in invalid con/
+\deftypefn     tex-src/texinfo.tex     
/^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+\deftypefnheader       tex-src/texinfo.tex     /^\\def\\deftypefnheader 
#1#2#3{\\deftypefnheaderx{#1}{/
+\deftypefnheaderx      tex-src/texinfo.tex     /^\\def\\deftypefnheaderx 
#1#2#3 #4\\relax{%$/
+\deftypefnx    tex-src/texinfo.tex     /^\\def\\deftypefnx #1 
{\\errmessage{@deftypefnx in inv/
+\deftypefun    tex-src/texinfo.tex     
/^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+\deftypefunargs        tex-src/texinfo.tex     /^\\def\\deftypefunargs #1{%$/
+\deftypefunheader      tex-src/texinfo.tex     /^\\def\\deftypefunheader 
#1#2{\\deftypefunheaderx{#1}#/
+\deftypefunheaderx     tex-src/texinfo.tex     /^\\def\\deftypefunheaderx #1#2 
#3\\relax{%$/
+\deftypeunx    tex-src/texinfo.tex     /^\\def\\deftypeunx #1 
{\\errmessage{@deftypeunx in inv/
+\deftypevar    tex-src/texinfo.tex     
/^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+\deftypevarheader      tex-src/texinfo.tex     /^\\def\\deftypevarheader 
#1#2{%$/
+\deftypevarx   tex-src/texinfo.tex     /^\\def\\deftypevarx #1 
{\\errmessage{@deftypevarx in i/
+\deftypevr     tex-src/texinfo.tex     
/^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+\deftypevrheader       tex-src/texinfo.tex     /^\\def\\deftypevrheader 
#1#2#3{\\doind {vr}{\\code{#3}}/
+\deftypevrx    tex-src/texinfo.tex     /^\\def\\deftypevrx #1 
{\\errmessage{@deftypevrx in inv/
+\defun tex-src/texinfo.tex     
/^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
+\defunargs     tex-src/texinfo.tex     /^\\def\\defunargs #1{\\functionparens 
\\sl$/
+\defunheader   tex-src/texinfo.tex     /^\\def\\defunheader #1#2{\\doind 
{fn}{\\code{#1}}% Make/
+\defunx        tex-src/texinfo.tex     /^\\def\\defunx #1 
{\\errmessage{@defunx in invalid con/
+\defvar        tex-src/texinfo.tex     
/^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+\defvarargs    tex-src/texinfo.tex     /^\\def\\defvarargs #1{\\normalparens 
#1%$/
+\defvarheader  tex-src/texinfo.tex     /^\\def\\defvarheader #1#2{\\doind 
{vr}{\\code{#1}}% Mak/
+\defvarparsebody       tex-src/texinfo.tex     /^\\def\\defvarparsebody 
#1#2#3{\\begingroup\\inENV% Env/
+\defvarx       tex-src/texinfo.tex     /^\\def\\defvarx #1 
{\\errmessage{@defvarx in invalid c/
+\defvr tex-src/texinfo.tex     
/^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+\defvrheader   tex-src/texinfo.tex     /^\\def\\defvrheader #1#2#3{\\doind 
{vr}{\\code{#2}}%$/
+\defvrparsebody        tex-src/texinfo.tex     /^\\def\\defvrparsebody 
#1#2#3#4 {\\begingroup\\inENV %$/
+\defvrx        tex-src/texinfo.tex     /^\\def\\defvrx #1 
{\\errmessage{@defvrx in invalid con/
+\description   tex-src/texinfo.tex     
/^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
+\df    tex-src/texinfo.tex     /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = 
\\defbf \\bf}/
+\dfn   tex-src/texinfo.tex     /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
+\direntry      tex-src/texinfo.tex     
/^\\def\\direntry{\\begingroup\\direntryxxx}$/
+\direntryxxx   tex-src/texinfo.tex     /^\\long\\def\\direntryxxx #1\\end 
direntry{\\endgroup\\ig/
+\display       tex-src/texinfo.tex     /^\\def\\display{\\begingroup\\inENV 
%This group ends at/
+\dmn   tex-src/texinfo.tex     /^\\def\\dmn#1{\\thinspace #1}$/
+\dobreak       tex-src/texinfo.tex     
/^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
+\dochapentry   tex-src/texinfo.tex     /^\\def\\dochapentry#1#2{%$/
+\docodeindex   tex-src/texinfo.tex     
/^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
+\doind tex-src/texinfo.tex     /^\\def\\doind #1#2{%$/
+\doindex       tex-src/texinfo.tex     
/^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+\donoderef     tex-src/texinfo.tex     
/^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
+\dontindex     tex-src/texinfo.tex     /^\\def\\dontindex #1{}$/
+\dopageno      tex-src/texinfo.tex     /^\\def\\dopageno#1{{\\rm #1}}$/
+\doprintindex  tex-src/texinfo.tex     /^\\def\\doprintindex#1{%$/
+\dosecentry    tex-src/texinfo.tex     /^\\def\\dosecentry#1#2{%$/
+\dosetq        tex-src/texinfo.tex     /^\\def\\dosetq #1#2{{\\let\\folio=0 
\\turnoffactive%$/
+\doshortpageno tex-src/texinfo.tex     /^\\def\\doshortpageno#1{{\\rm #1}}$/
+\dosubind      tex-src/texinfo.tex     /^\\def\\dosubind #1#2#3{%$/
+\dosubsecentry tex-src/texinfo.tex     /^\\def\\dosubsecentry#1#2{%$/
+\dosubsubsecentry      tex-src/texinfo.tex     
/^\\def\\dosubsubsecentry#1#2{%$/
+\dots  tex-src/texinfo.tex     /^\\def\\dots{$\\ldots$}$/
+\dots  tex-src/texinfo.tex     /^\\def\\dots{\\realbackslash dots }%$/
+\dots  tex-src/texinfo.tex     /^\\def\\dots{\\realbackslash dots}$/
+\doublecolumnout       tex-src/texinfo.tex     
/^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
+\emph  tex-src/texinfo.tex     /^\\def\\emph##1{\\realbackslash emph {##1}}$/
+\end   tex-src/texinfo.tex     /^\\def\\end{\\parsearg\\endxxx}$/
+\enddoublecolumns      tex-src/texinfo.tex     
/^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
+\endxxx        tex-src/texinfo.tex     /^\\def\\endxxx #1{%$/
+\entry tex-src/texinfo.tex     /^\\def\\entry #1#2{\\begingroup$/
+\enumerate     tex-src/texinfo.tex     
/^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
+\enumeratey    tex-src/texinfo.tex     /^\\def\\enumeratey #1 
#2\\endenumeratey{%$/
+\enumeratezzz  tex-src/texinfo.tex     /^\\def\\enumeratezzz #1{\\enumeratey 
#1  \\endenumerate/
+\equiv tex-src/texinfo.tex     /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 
1em{\\hfil/
+\equiv tex-src/texinfo.tex     /^\\def\\equiv{\\realbackslash equiv}$/
+\error tex-src/texinfo.tex     
/^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
+\errorE        tex-src/texinfo.tex     /^\\def\\errorE#1{$/
+\evenfooting   tex-src/texinfo.tex     
/^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
+\evenheading   tex-src/texinfo.tex     
/^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
+\everyfooting  tex-src/texinfo.tex     
/^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
+\everyheading  tex-src/texinfo.tex     
/^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
+\ewbot tex-src/texinfo.tex     /^\\def\\ewbot{\\vrule height0pt 
depth\\cornerthick widt/
+\ewtop tex-src/texinfo.tex     /^\\def\\ewtop{\\vrule height\\cornerthick 
depth0pt widt/
+\exdent        tex-src/texinfo.tex     /^\\def\\exdent{\\parsearg\\exdentyyy}$/
+\exdentyyy     tex-src/texinfo.tex     /^\\def\\exdentyyy 
#1{{\\hfil\\break\\hbox{\\kern -\\exdent/
+\expansion     tex-src/texinfo.tex     
/^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
+\expansion     tex-src/texinfo.tex     /^\\def\\expansion{\\realbackslash 
expansion}$/
+\file  tex-src/texinfo.tex     /^\\def\\file##1{\\realbackslash file {##1}}$/
+\file  tex-src/texinfo.tex     /^\\def\\file##1{\\realbackslash file {##1}}%$/
+\finalout      tex-src/texinfo.tex     /^\\def\\finalout{\\overfullrule=0pt}$/
+\findex        tex-src/texinfo.tex     /^\\def\\findex {\\fnindex}$/
+\finishtitlepage       tex-src/texinfo.tex     /^\\def\\finishtitlepage{%$/
+\flushcr       tex-src/texinfo.tex     /^\\def\\flushcr{\\ifx\\par\\lisppar 
\\def\\next##1{}\\else /
+\flushleft     tex-src/texinfo.tex     /^\\def\\flushleft{%$/
+\flushright    tex-src/texinfo.tex     /^\\def\\flushright{%$/
+\fnitemindex   tex-src/texinfo.tex     /^\\def\\fnitemindex #1{\\doind 
{fn}{\\code{#1}}}%$/
+\format        tex-src/texinfo.tex     /^\\def\\format{\\begingroup\\inENV 
%This group ends at /
+\frenchspacing tex-src/texinfo.tex     /^\\def\\frenchspacing{\\sfcode46=1000 
\\sfcode63=1000 \\/
+\ftable        tex-src/texinfo.tex     
/^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+\gloggingall   tex-src/texinfo.tex     /^\\def\\gloggingall{\\begingroup 
\\globaldefs = 1 \\logg/
+\group tex-src/texinfo.tex     /^\\def\\group{\\begingroup$/
+\gtr   tex-src/texinfo.tex     /^\\def\\gtr{\\realbackslash gtr}$/
+\gtr   tex-src/texinfo.tex     /^\\def\\gtr{\\realbackslash gtr}%$/
+\hat   tex-src/texinfo.tex     /^\\def\\hat{\\realbackslash hat}$/
+\hat   tex-src/texinfo.tex     /^\\def\\hat{\\realbackslash hat}%$/
+\heading       tex-src/texinfo.tex     
/^\\def\\heading{\\parsearg\\secheadingi}$/
+\headings      tex-src/texinfo.tex     /^\\def\\headings #1 {\\csname 
HEADINGS#1\\endcsname}$/
+\i     tex-src/texinfo.tex     /^\\def\\i##1{\\realbackslash i {##1}}$/
+\i     tex-src/texinfo.tex     /^\\def\\i##1{\\realbackslash i {##1}}%$/
+\ifclear       tex-src/texinfo.tex     
/^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
+\ifclearfail   tex-src/texinfo.tex     
/^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
+\ifclearfailxxx        tex-src/texinfo.tex     /^\\long\\def\\ifclearfailxxx 
#1\\end ifclear{\\endgroup\\/
+\ifclearxxx    tex-src/texinfo.tex     /^\\def\\ifclearxxx #1{\\endgroup$/
+\ifinfo        tex-src/texinfo.tex     
/^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
+\ifinfoxxx     tex-src/texinfo.tex     /^\\long\\def\\ifinfoxxx #1\\end 
ifinfo{\\endgroup\\ignore/
+\ifset tex-src/texinfo.tex     
/^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
+\ifsetfail     tex-src/texinfo.tex     
/^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
+\ifsetfailxxx  tex-src/texinfo.tex     /^\\long\\def\\ifsetfailxxx #1\\end 
ifset{\\endgroup\\igno/
+\ifsetxxx      tex-src/texinfo.tex     /^\\def\\ifsetxxx #1{\\endgroup$/
+\iftex tex-src/texinfo.tex     /^\\def\\iftex{}$/
+\ifusingtt     tex-src/texinfo.tex     /^\\def\\ifusingtt#1#2{\\ifdim 
\\fontdimen3\\the\\font=0pt/
+\ignore        tex-src/texinfo.tex     
/^\\def\\ignore{\\begingroup\\ignoresections$/
+\ignoresections        tex-src/texinfo.tex     /^\\def\\ignoresections{%$/
+\ignorexxx     tex-src/texinfo.tex     /^\\long\\def\\ignorexxx #1\\end 
ignore{\\endgroup\\ignore/
+\ii    tex-src/texinfo.tex     /^\\def\\ii#1{{\\it #1}}                % 
italic font$/
+\inENV tex-src/texinfo.tex     /^\\newif\\ifENV \\ENVfalse 
\\def\\inENV{\\ifENV\\relax\\els/
+\include       tex-src/texinfo.tex     
/^\\def\\include{\\parsearg\\includezzz}$/
+\includezzz    tex-src/texinfo.tex     /^\\def\\includezzz 
#1{{\\def\\thisfile{#1}\\input #1$/
+\indexbackslash        tex-src/texinfo.tex     /^  
\\def\\indexbackslash{\\rawbackslashxx}$/
+\indexdotfill  tex-src/texinfo.tex     /^\\def\\indexdotfill{\\cleaders$/
+\indexdummies  tex-src/texinfo.tex     /^\\def\\indexdummies{%$/
+\indexdummydots        tex-src/texinfo.tex     /^\\def\\indexdummydots{...}$/
+\indexdummyfont        tex-src/texinfo.tex     /^\\def\\indexdummyfont#1{#1}$/
+\indexdummytex tex-src/texinfo.tex     /^\\def\\indexdummytex{TeX}$/
+\indexfonts    tex-src/texinfo.tex     /^\\def\\indexfonts{%$/
+\indexnofonts  tex-src/texinfo.tex     /^\\def\\indexnofonts{%$/
+\infoappendix  tex-src/texinfo.tex     
/^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+\infoappendixsec       tex-src/texinfo.tex     
/^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
+\infoappendixsubsec    tex-src/texinfo.tex     
/^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
+\infoappendixsubsubsec tex-src/texinfo.tex     
/^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+\infochapter   tex-src/texinfo.tex     
/^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+\inforef       tex-src/texinfo.tex     /^\\def\\inforef #1{\\inforefzzz 
#1,,,,**}$/
+\inforefzzz    tex-src/texinfo.tex     /^\\def\\inforefzzz #1,#2,#3,#4**{See 
Info file \\file{/
+\infosection   tex-src/texinfo.tex     
/^\\def\\infosection{\\parsearg\\sectionzzz}$/
+\infosubsection        tex-src/texinfo.tex     
/^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+\infosubsubsection     tex-src/texinfo.tex     
/^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+\infotop       tex-src/texinfo.tex     
/^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
+\infounnumbered        tex-src/texinfo.tex     
/^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
+\infounnumberedsec     tex-src/texinfo.tex     
/^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
+\infounnumberedsubsec  tex-src/texinfo.tex     
/^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
+\infounnumberedsubsubsec       tex-src/texinfo.tex     
/^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
+\initial       tex-src/texinfo.tex     /^\\def\\initial #1{%$/
+\internalBitem tex-src/texinfo.tex     /^\\def\\internalBitem{\\smallbreak 
\\parsearg\\itemzzz}$/
+\internalBitemx        tex-src/texinfo.tex     /^\\def\\internalBitemx{\\par 
\\parsearg\\itemzzz}$/
+\internalBkitem        tex-src/texinfo.tex     
/^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
+\internalBkitemx       tex-src/texinfo.tex     /^\\def\\internalBkitemx{\\par 
\\parsearg\\kitemzzz}$/
+\internalBxitem        tex-src/texinfo.tex     /^\\def\\internalBxitem 
"#1"{\\def\\xitemsubtopix{#1} \\s/
+\internalBxitemx       tex-src/texinfo.tex     /^\\def\\internalBxitemx 
"#1"{\\def\\xitemsubtopix{#1} \\/
+\internalsetq  tex-src/texinfo.tex     /^\\def\\internalsetq #1#2{'xrdef 
{#1}{\\csname #2\\endc/
+\item  tex-src/texinfo.tex     /^\\def\\item{\\errmessage{@item while not in a 
table}}/
+\itemcontents  tex-src/texinfo.tex     /^\\def\\itemcontents{#1}%$/
+\itemfont      tex-src/texinfo.tex     /^\\def\\itemfont{#2}%$/
+\itemize       tex-src/texinfo.tex     
/^\\def\\itemize{\\parsearg\\itemizezzz}$/
+\itemizeitem   tex-src/texinfo.tex     /^\\def\\itemizeitem{%$/
+\itemizey      tex-src/texinfo.tex     /^\\def\\itemizey #1#2{%$/
+\itemizezzz    tex-src/texinfo.tex     /^\\def\\itemizezzz #1{%$/
+\itemx tex-src/texinfo.tex     /^\\def\\itemx{\\errmessage{@itemx while not in 
a table/
+\itemzzz       tex-src/texinfo.tex     /^\\def\\itemzzz #1{\\begingroup %$/
+\kbd   tex-src/texinfo.tex     /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
+\kbd   tex-src/texinfo.tex     /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
+\kbd   tex-src/texinfo.tex     
/^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
+\kbdfoo        tex-src/texinfo.tex     
/^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+\key   tex-src/texinfo.tex     /^\\def\\key #1{{\\tt 
\\exhyphenpenalty=10000\\uppercase{/
+\key   tex-src/texinfo.tex     /^\\def\\key##1{\\realbackslash key {##1}}$/
+\key   tex-src/texinfo.tex     /^\\def\\key##1{\\realbackslash key {##1}}%$/
+\kindex        tex-src/texinfo.tex     /^\\def\\kindex {\\kyindex}$/
+\kitem tex-src/texinfo.tex     /^\\def\\kitem{\\errmessage{@kitem while not in 
a table/
+\kitemx        tex-src/texinfo.tex     /^\\def\\kitemx{\\errmessage{@kitemx 
while not in a tab/
+\kitemzzz      tex-src/texinfo.tex     /^\\def\\kitemzzz #1{\\dosubind 
{kw}{\\code{#1}}{for {\\b/
+\l     tex-src/texinfo.tex     /^\\def\\l#1{{\\li #1}\\null}           % $/
+\labelspace    tex-src/texinfo.tex     /^\\def\\labelspace{\\hskip1em 
\\relax}$/
+\lbrb  tex-src/texinfo.tex     /^\\def\\lbrb{{\\bf\\char`\\[}} 
\\def\\rbrb{{\\bf\\char`\\]}}$/
+\less  tex-src/texinfo.tex     /^\\def\\less{\\realbackslash less}$/
+\less  tex-src/texinfo.tex     /^\\def\\less{\\realbackslash less}%$/
+\linenumber    tex-src/texinfo.tex     /^  
\\def\\linenumber{\\the\\inputlineno:\\space}$/
+\lisp  tex-src/texinfo.tex     /^\\def\\lisp{\\aboveenvbreak$/
+\loggingall    tex-src/texinfo.tex     /^\\def\\loggingall{\\tracingcommands2 
\\tracingstats2 $/
+\losespace     tex-src/texinfo.tex     /^\\def\\losespace #1{#1}$/
+\lowercaseenumerate    tex-src/texinfo.tex     /^\\def\\lowercaseenumerate{%$/
+\lvvmode       tex-src/texinfo.tex     /^\\def\\lvvmode{\\vbox to 0pt{}}$/
+\majorheading  tex-src/texinfo.tex     
/^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
+\majorheadingzzz       tex-src/texinfo.tex     /^\\def\\majorheadingzzz #1{%$/
+\math  tex-src/texinfo.tex     /^\\def\\math#1{\\implicitmath 
#1\\implicitmath}$/
+\menu  tex-src/texinfo.tex     /^\\long\\def\\menu #1\\end menu{}$/
+\minus tex-src/texinfo.tex     /^\\def\\minus{$-$}$/
+\mylbrace      tex-src/texinfo.tex     /^\\def\\mylbrace {{\\tt \\char '173}}$/
+\myrbrace      tex-src/texinfo.tex     /^\\def\\myrbrace {{\\tt \\char '175}}$/
+\need  tex-src/texinfo.tex     /^\\def\\need{\\parsearg\\needx}$/
+\needx tex-src/texinfo.tex     /^\\def\\needx#1{%$/
+\newcodeindex  tex-src/texinfo.tex     /^\\def\\newcodeindex #1{$/
+\newindex      tex-src/texinfo.tex     /^\\def\\newindex #1{$/
+\next  tex-src/texinfo.tex     /^\\def\\next##1{}\\next}$/
+\nm    tex-src/testenv.tex     
/^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
+\node  tex-src/texinfo.tex     /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
+\nodexxx[      tex-src/texinfo.tex     
/^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+\nodezzz       tex-src/texinfo.tex     /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
+\nofillexdent  tex-src/texinfo.tex     
/^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
+\nofillexdentyyy       tex-src/texinfo.tex     /^\\def\\nofillexdentyyy 
#1{{\\advance \\leftskip by -\\e/
+\normalbackslash       tex-src/texinfo.tex     
/^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
+\normalcaret   tex-src/texinfo.tex     /^\\def\\normalcaret{^}$/
+\normaldoublequote     tex-src/texinfo.tex     /^\\def\\normaldoublequote{"}$/
+\normalgreater tex-src/texinfo.tex     /^\\def\\normalgreater{>}$/
+\normalless    tex-src/texinfo.tex     /^\\def\\normalless{<}$/
+\normalplus    tex-src/texinfo.tex     /^\\def\\normalplus{+}$/
+\normaltilde   tex-src/texinfo.tex     /^\\def\\normaltilde{~}$/
+\normalunderscore      tex-src/texinfo.tex     /^\\def\\normalunderscore{_}$/
+\normalverticalbar     tex-src/texinfo.tex     /^\\def\\normalverticalbar{|}$/
+\nsbot tex-src/texinfo.tex     /^\\def\\nsbot{\\vbox$/
+\nstop tex-src/texinfo.tex     /^\\def\\nstop{\\vbox$/
+\numberedsec   tex-src/texinfo.tex     
/^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
+\numberedsubsec        tex-src/texinfo.tex     
/^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
+\numberedsubseczzz     tex-src/texinfo.tex     /^\\def\\numberedsubseczzz 
#1{\\seccheck{subsection}%$/
+\numberedsubsubsec     tex-src/texinfo.tex     
/^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
+\numberedsubsubseczzz  tex-src/texinfo.tex     /^\\def\\numberedsubsubseczzz 
#1{\\seccheck{subsubsecti/
+\numericenumerate      tex-src/texinfo.tex     /^\\def\\numericenumerate{%$/
+\oddfooting    tex-src/texinfo.tex     
/^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
+\oddheading    tex-src/texinfo.tex     
/^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
+\onepageout    tex-src/texinfo.tex     
/^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
+\opencontents  tex-src/texinfo.tex     /^\\def\\opencontents{\\openout 
\\contentsfile = \\jobnam/
+\openindices   tex-src/texinfo.tex     /^\\def\\openindices{%$/
+\opnr  tex-src/texinfo.tex     /^\\def\\opnr{{\\sf\\char`\\(}} 
\\def\\clnr{{\\sf\\char`\\)}} /
+\page  tex-src/texinfo.tex     /^   \\def\\page{%$/
+\page  tex-src/texinfo.tex     /^\\def\\page{\\par\\vfill\\supereject}$/
+\pagebody      tex-src/texinfo.tex     /^\\def\\pagebody#1{\\vbox 
to\\pageheight{\\boxmaxdepth=\\/
+\pagesofar     tex-src/texinfo.tex     
/^\\def\\pagesofar{\\unvbox\\partialpage %$/
+\parsearg      tex-src/texinfo.tex     /^\\def\\parsearg 
#1{\\let\\next=#1\\begingroup\\obeylines/
+\parseargline  tex-src/texinfo.tex     /^\\def\\parseargline{\\begingroup 
\\obeylines \\parsearg/
+\parseargx     tex-src/texinfo.tex     /^\\def\\parseargx{%$/
+\pindex        tex-src/texinfo.tex     /^\\def\\pindex {\\pgindex}$/
+\plainsecheading       tex-src/texinfo.tex     /^\\def\\plainsecheading 
#1{\\secheadingi {#1}}$/
+\point tex-src/texinfo.tex     /^\\def\\point{$\\star$}$/
+\primary       tex-src/texinfo.tex     /^\\def\\primary #1{\\line{#1\\hfil}}$/
+\print tex-src/texinfo.tex     /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 
1em{\\hfil/
+\print tex-src/texinfo.tex     /^\\def\\print{\\realbackslash print}$/
+\printedmanual tex-src/texinfo.tex     /^\\def\\printedmanual{\\ignorespaces 
#5}%$/
+\printedmanual tex-src/texinfo.tex     /^section ``\\printednodename'' in 
\\cite{\\printedmanu/
+\printednodename       tex-src/texinfo.tex     
/^\\def\\printednodename{\\ignorespaces #1}%$/
+\printednodename       tex-src/texinfo.tex     
/^\\def\\printednodename{\\ignorespaces #3}%$/
+\printindex    tex-src/texinfo.tex     
/^\\def\\printindex{\\parsearg\\doprintindex}$/
+\pxref tex-src/texinfo.tex     /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
+\quotation     tex-src/texinfo.tex     /^\\def\\quotation{%$/
+\r     tex-src/texinfo.tex     /^\\def\\r##1{\\realbackslash r {##1}}$/
+\r     tex-src/texinfo.tex     /^\\def\\r##1{\\realbackslash r {##1}}%$/
+\r     tex-src/texinfo.tex     /^\\def\\r#1{{\\rm #1}}         % roman font$/
+\rawbackslashxx        tex-src/texinfo.tex     
/^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+\rawbackslashxx        tex-src/texinfo.tex     
/^\\def\\rawbackslashxx{\\indexbackslash}%$/
+\readauxfile   tex-src/texinfo.tex     /^\\def\\readauxfile{%$/
+\ref   tex-src/texinfo.tex     /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
+\refx  tex-src/texinfo.tex     /^\\def\\refx#1#2{%$/
+\resetmathfonts        tex-src/texinfo.tex     /^\\def\\resetmathfonts{%$/
+\result        tex-src/texinfo.tex     
/^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
+\result        tex-src/texinfo.tex     /^\\def\\result{\\realbackslash 
result}$/
+\rm    tex-src/texinfo.tex     /^\\def\\rm{\\realbackslash rm }%$/
+\samp  tex-src/texinfo.tex     /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
+\samp  tex-src/texinfo.tex     /^\\def\\samp##1{\\realbackslash samp {##1}}$/
+\samp  tex-src/texinfo.tex     /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
+\sc    tex-src/texinfo.tex     /^\\def\\sc#1{{\\smallcaps#1}}  % smallcaps 
font$/
+\seccheck      tex-src/texinfo.tex     /^\\def\\seccheck#1{\\if \\pageno<0 %$/
+\secentry      tex-src/texinfo.tex     /^      \\def\\secentry ##1##2##3##4{}$/
+\secentry      tex-src/texinfo.tex     
/^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+\secentryfonts tex-src/texinfo.tex     /^\\def\\secentryfonts{\\textfonts}$/
+\secfonts      tex-src/texinfo.tex     /^\\def\\secfonts{%$/
+\secheading    tex-src/texinfo.tex     /^\\def\\secheading 
#1#2#3{\\secheadingi {#2.#3\\enspace/
+\secheadingbreak       tex-src/texinfo.tex     
/^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
+\secheadingi   tex-src/texinfo.tex     /^\\def\\secheadingi #1{{\\advance 
\\secheadingskip by \\/
+\secondary     tex-src/texinfo.tex     /^\\def\\secondary #1#2{$/
+\seczzz        tex-src/texinfo.tex     /^\\def\\seczzz 
#1{\\seccheck{section}%$/
+\set   tex-src/texinfo.tex     /^\\def\\set{\\parsearg\\setxxx}$/
+\setchapternewpage     tex-src/texinfo.tex     /^\\def\\setchapternewpage #1 
{\\csname CHAPPAG#1\\endcs/
+\setchapterstyle       tex-src/texinfo.tex     /^\\def\\setchapterstyle #1 
{\\csname CHAPF#1\\endcsname/
+\setdeffont    tex-src/texinfo.tex     /^\\def\\setdeffont #1 {\\csname 
DEF#1\\endcsname}$/
+\setfilename   tex-src/texinfo.tex     /^\\def\\setfilename{%$/
+\setref        tex-src/texinfo.tex     /^\\def\\setref#1{%$/
+\settitle      tex-src/texinfo.tex     
/^\\def\\settitle{\\parsearg\\settitlezzz}$/
+\settitlezzz   tex-src/texinfo.tex     /^\\def\\settitlezzz 
#1{\\gdef\\thistitle{#1}}$/
+\setxxx        tex-src/texinfo.tex     /^\\def\\setxxx #1{$/
+\sf    tex-src/texinfo.tex     /^\\def\\sf{\\fam=\\sffam \\tensf}$/
+\sf    tex-src/texinfo.tex     /^\\def\\sf{\\realbackslash sf}%$/
+\shortchapentry        tex-src/texinfo.tex     
/^\\def\\shortchapentry#1#2#3{%$/
+\shortunnumberedentry  tex-src/texinfo.tex     
/^\\def\\shortunnumberedentry#1#2{%$/
+\singlecodeindexer     tex-src/texinfo.tex     /^\\def\\singlecodeindexer 
#1{\\doind{\\indexname}{\\code/
+\singleindexer tex-src/texinfo.tex     /^\\def\\singleindexer 
#1{\\doind{\\indexname}{#1}}$/
+\singlespace   tex-src/texinfo.tex     /^\\def\\singlespace{%$/
+\sl    tex-src/texinfo.tex     /^\\def\\sl{\\realbackslash sl }%$/
+\smallbook     tex-src/texinfo.tex     /^\\def\\smallbook{$/
+\smalllispx    tex-src/texinfo.tex     
/^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
+\smartitalic   tex-src/texinfo.tex     /^\\def\\smartitalic#1{{\\sl 
#1}\\futurelet\\next\\smartit/
+\smartitalicx  tex-src/texinfo.tex     
/^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
+\sp    tex-src/texinfo.tex     /^\\def\\sp{\\parsearg\\spxxx}$/
+\splitoff      tex-src/texinfo.tex     
/^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
+\spxxx tex-src/texinfo.tex     /^\\def\\spxxx #1{\\par \\vskip 
#1\\baselineskip}$/
+\startcontents tex-src/texinfo.tex     /^\\def\\startcontents#1{%$/
+\startenumeration      tex-src/texinfo.tex     /^\\def\\startenumeration#1{%$/
+\subheading    tex-src/texinfo.tex     
/^\\def\\subheading{\\parsearg\\subsecheadingi}$/
+\subsecentry   tex-src/texinfo.tex     /^      \\def\\subsecentry 
##1##2##3##4##5{}$/
+\subsecentry   tex-src/texinfo.tex     
/^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
+\subsecfonts   tex-src/texinfo.tex     /^\\def\\subsecfonts{%$/
+\subsecheading tex-src/texinfo.tex     /^\\def\\subsecheading 
#1#2#3#4{\\subsecheadingi {#2.#3/
+\subsecheadingbreak    tex-src/texinfo.tex     
/^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
+\subsecheadingi        tex-src/texinfo.tex     /^\\def\\subsecheadingi 
#1{{\\advance \\subsecheadingski/
+\subsubheading tex-src/texinfo.tex     
/^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
+\subsubsecentry        tex-src/texinfo.tex     /^      \\def\\subsubsecentry 
##1##2##3##4##5##6{}$/
+\subsubsecentry        tex-src/texinfo.tex     
/^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
+\subsubsecfonts        tex-src/texinfo.tex     
/^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
+\subsubsecheading      tex-src/texinfo.tex     /^\\def\\subsubsecheading 
#1#2#3#4#5{\\subsubsecheading/
+\subsubsecheadingi     tex-src/texinfo.tex     /^\\def\\subsubsecheadingi 
#1{{\\advance \\subsecheading/
+\subtitle      tex-src/texinfo.tex     /^   
\\def\\subtitle{\\parsearg\\subtitlezzz}%$/
+\subtitlefont  tex-src/texinfo.tex     /^   \\def\\subtitlefont{\\subtitlerm 
\\normalbaselinesk/
+\subtitlezzz   tex-src/texinfo.tex     /^   
\\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
+\summarycontents       tex-src/texinfo.tex     
/^\\outer\\def\\summarycontents{%$/
+\supereject    tex-src/texinfo.tex     /^\\def\\supereject{\\par\\penalty 
-20000\\footnoteno =0 /
+\syncodeindex  tex-src/texinfo.tex     /^\\def\\syncodeindex #1 #2 {%$/
+\synindex      tex-src/texinfo.tex     /^\\def\\synindex #1 #2 {%$/
+\t     tex-src/texinfo.tex     /^\\def\\t##1{\\realbackslash r {##1}}%$/
+\t     tex-src/texinfo.tex     /^\\def\\t#1{{\\tt 
\\exhyphenpenalty=10000\\rawbackslash /
+\table tex-src/texinfo.tex     
/^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
+\tablez        tex-src/texinfo.tex     /^\\def\\tablez #1#2#3#4#5#6{%$/
+\tclose        tex-src/texinfo.tex     /^\\def\\tclose##1{\\realbackslash 
tclose {##1}}$/
+\tclose        tex-src/texinfo.tex     /^\\def\\tclose##1{\\realbackslash 
tclose {##1}}%$/
+\tclose        tex-src/texinfo.tex     /^\\def\\tclose#1{{\\rm 
\\tcloserm=\\fontdimen2\\font \\tt /
+\tex   tex-src/texinfo.tex     /^\\def\\tex{\\begingroup$/
+\texinfoversion        tex-src/texinfo.tex     /^\\def\\texinfoversion{2.73}$/
+\textfonts     tex-src/texinfo.tex     /^\\def\\textfonts{%$/
+\thearg        tex-src/texinfo.tex     /^  \\def\\thearg{#1}%$/
+\thearg        tex-src/texinfo.tex     /^  \\ifx\\thearg\\empty 
\\def\\thearg{1}\\fi$/
+\thischapter   tex-src/texinfo.tex     /^   
\\unnumbchapmacro{#1}\\def\\thischapter{}%$/
+\thischapter   tex-src/texinfo.tex     /^\\def\\thischapter{} 
\\def\\thissection{}$/
+\thischaptername       tex-src/texinfo.tex     /^\\def\\thischaptername{No 
Chapter Title}$/
+\thisfile      tex-src/texinfo.tex     /^\\def\\thisfile{}$/
+\thistitle     tex-src/texinfo.tex     /^\\def\\thistitle{No Title}$/
+\tie   tex-src/texinfo.tex     /^\\def\\tie{\\penalty 10000\\ }     % Save 
plain tex de/
+\tindex        tex-src/texinfo.tex     /^\\def\\tindex {\\tpindex}$/
+\title tex-src/texinfo.tex     /^   \\def\\title{\\parsearg\\titlezzz}%$/
+\titlefont     tex-src/texinfo.tex     /^\\def\\titlefont#1{{\\titlerm #1}}$/
+\titlepage     tex-src/texinfo.tex     /^\\def\\titlepage{\\begingroup 
\\parindent=0pt \\textfon/
+\titlezzz      tex-src/texinfo.tex     /^   
\\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
+\today tex-src/texinfo.tex     /^\\def\\today{\\number\\day\\space$/
+\top   tex-src/texinfo.tex     /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
+\tt    tex-src/texinfo.tex     /^\\def\\tt{\\realbackslash tt}$/
+\tt    tex-src/texinfo.tex     /^\\def\\tt{\\realbackslash tt}%$/
+\turnoffactive tex-src/texinfo.tex     
/^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
+\unnchfopen    tex-src/texinfo.tex     /^\\def\\unnchfopen #1{%$/
+\unnchfplain   tex-src/texinfo.tex     /^\\def\\unnchfplain #1{%$/
+\unnumbchapentry       tex-src/texinfo.tex     
/^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
+\unnumbered    tex-src/texinfo.tex     
/^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
+\unnumberedsec tex-src/texinfo.tex     
/^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
+\unnumberedseczzz      tex-src/texinfo.tex     /^\\def\\unnumberedseczzz 
#1{\\seccheck{unnumberedsec}%/
+\unnumberedsubsec      tex-src/texinfo.tex     
/^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
+\unnumberedsubseczzz   tex-src/texinfo.tex     /^\\def\\unnumberedsubseczzz 
#1{\\seccheck{unnumberedsu/
+\unnumberedsubsubsec   tex-src/texinfo.tex     
/^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
+\unnumberedsubsubseczzz        tex-src/texinfo.tex     
/^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
+\unnumberedzzz tex-src/texinfo.tex     /^\\def\\unnumberedzzz 
#1{\\seccheck{unnumbered}%$/
+\unnumbnoderef tex-src/texinfo.tex     
/^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
+\unnumbsecentry        tex-src/texinfo.tex     /^      \\def\\unnumbsecentry 
##1##2{}$/
+\unnumbsecentry        tex-src/texinfo.tex     
/^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
+\unnumbsetref  tex-src/texinfo.tex     /^\\def\\unnumbsetref#1{%$/
+\unnumbsubsecentry     tex-src/texinfo.tex     /^      
\\def\\unnumbsubsecentry ##1##2{}$/
+\unnumbsubsecentry     tex-src/texinfo.tex     
/^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
+\unnumbsubsubsecentry  tex-src/texinfo.tex     /^      
\\def\\unnumbsubsubsecentry ##1##2{}$/
+\unnumbsubsubsecentry  tex-src/texinfo.tex     
/^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
+\uppercaseenumerate    tex-src/texinfo.tex     /^\\def\\uppercaseenumerate{%$/
+\var   tex-src/texinfo.tex     /^\\def\\var##1{\\realbackslash var {##1}}$/
+\var   tex-src/texinfo.tex     /^\\def\\var##1{\\realbackslash var {##1}}%$/
+\vindex        tex-src/texinfo.tex     /^\\def\\vindex {\\vrindex}$/
+\vritemindex   tex-src/texinfo.tex     /^\\def\\vritemindex #1{\\doind 
{vr}{\\code{#1}}}%$/
+\vtable        tex-src/texinfo.tex     
/^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+\w     tex-src/texinfo.tex     /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
+\w     tex-src/texinfo.tex     /^\\def\\w{\\realbackslash w }%$/
+\w     tex-src/texinfo.tex     /^\\def\\w{\\realbackslash w}$/
+\xitem tex-src/texinfo.tex     /^\\def\\xitem{\\errmessage{@xitem while not in 
a table/
+\xitemx        tex-src/texinfo.tex     /^\\def\\xitemx{\\errmessage{@xitemx 
while not in a tab/
+\xitemzzz      tex-src/texinfo.tex     /^\\def\\xitemzzz #1{\\dosubind 
{kw}{\\code{#1}}{for {\\b/
+\xkey  tex-src/texinfo.tex     /^\\def\\xkey{\\key}$/
+\xrdef tex-src/texinfo.tex     /^\\def\\xrdef #1#2{$/
+\xref  tex-src/texinfo.tex     /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
+\xrefX[        tex-src/texinfo.tex     
/^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+^      tex-src/texinfo.tex     /^\\def^{{\\tt \\hat}}$/
+_      tex-src/texinfo.tex     /^\\def_{\\ifusingtt\\normalunderscore\\_}$/
+_GETOPT_H      c-src/getopt.h  19
+_GNU_SOURCE    c-src/etags.c   94
+_REGEX_H       c-src/emacs/src/regex.h 21
+_RE_SYNTAX_POSIX_COMMON        c-src/emacs/src/regex.h 221
+_Restrict_     c-src/emacs/src/regex.h 540
+_Restrict_     c-src/emacs/src/regex.h 542
+_Restrict_     c-src/emacs/src/regex.h 544
+_Restrict_arr_ c-src/emacs/src/regex.h 555
+_Restrict_arr_ c-src/emacs/src/regex.h 557
+_UCHAR_T       c-src/emacs/src/lisp.h  2423
+__COLORS       cp-src/screen.hpp       9
+__default_morecore     c-src/emacs/src/gmalloc.c       /^__default_morecore 
(ptrdiff_t increment)$/
+__init__       pyt-src/server.py       /^    def __init__(self):$/
+__init__       pyt-src/server.py       /^    def __init__(self, Master, text, 
textvar, widt/
+__init__       pyt-src/server.py       /^    def __init__(self, host, 
sitelist, master=None/
+__init__       pyt-src/server.py       /^    def __init__(self, master=None):$/
+__init__       pyt-src/server.py       /^    def __init__(self, newlegend, 
list, editor, ma/
+__init__       pyt-src/server.py       /^    def __init__(self, user, 
userlist, master=None/
+__ip   c.c     159
+__libc_atexit  c-src/exit.c    30
+__libc_atexit  c-src/exit.strange_suffix       30
+__malloc_extra_blocks  c-src/emacs/src/gmalloc.c       381
+__malloc_initialize    c-src/emacs/src/gmalloc.c       /^__malloc_initialize 
(void)$/
+__malloc_initialized   c-src/emacs/src/gmalloc.c       379
+__repr__       pyt-src/server.py       /^    def __repr__(self):$/
+__sbrk c-src/emacs/src/gmalloc.c       1513
+__str__        pyt-src/server.py       /^    def __str__(self):$/
+__up   c.c     160
+_aligned_blocks        c-src/emacs/src/gmalloc.c       1004
+_aligned_blocks_mutex  c-src/emacs/src/gmalloc.c       518
+_bar?  ruby-src/test1.ru       /^    def self._bar?(abc)$/
+_bytes_free    c-src/emacs/src/gmalloc.c       376
+_bytes_used    c-src/emacs/src/gmalloc.c       374
+_chunks_free   c-src/emacs/src/gmalloc.c       375
+_chunks_used   c-src/emacs/src/gmalloc.c       373
+_fraghead      c-src/emacs/src/gmalloc.c       370
+_free  c-src/emacs/src/gmalloc.c       /^_free (void *ptr)$/
+_free_internal c-src/emacs/src/gmalloc.c       /^_free_internal (void *ptr)$/
+_free_internal_nolock  c-src/emacs/src/gmalloc.c       /^_free_internal_nolock 
(void *ptr)$/
+_heapbase      c-src/emacs/src/gmalloc.c       355
+_heapindex     c-src/emacs/src/gmalloc.c       364
+_heapinfo      c-src/emacs/src/gmalloc.c       358
+_heaplimit     c-src/emacs/src/gmalloc.c       367
+_malloc        c-src/emacs/src/gmalloc.c       /^_malloc (size_t size)$/
+_malloc_internal       c-src/emacs/src/gmalloc.c       /^_malloc_internal 
(size_t size)$/
+_malloc_internal_nolock        c-src/emacs/src/gmalloc.c       
/^_malloc_internal_nolock (size_t size)$/
+_malloc_mutex  c-src/emacs/src/gmalloc.c       517
+_malloc_thread_enabled_p       c-src/emacs/src/gmalloc.c       519
+_realloc       c-src/emacs/src/gmalloc.c       /^_realloc (void *ptr, size_t 
size)$/
+_realloc_internal      c-src/emacs/src/gmalloc.c       /^_realloc_internal 
(void *ptr, size_t size)$/
+_realloc_internal_nolock       c-src/emacs/src/gmalloc.c       
/^_realloc_internal_nolock (void *ptr, size_t size)$/
+`      ruby-src/test.rb        /^        def `(command)$/
+a      c-src/h.h       103
+a      c-src/h.h       40
+a      c.c     /^a ()$/
+a      c.c     /^a()$/
+a      c.c     152
+a      c.c     180
+a      cp-src/c.C      132
+a      ruby-src/test1.ru       /^ def a()$/
+a-forth-constant!      forth-src/test-forth.fth        /^99 constant 
a-forth-constant!$/
+a-forth-value? forth-src/test-forth.fth        /^55 value a-forth-value?$/
+a-forth-word   forth-src/test-forth.fth        /^: a-forth-word ( a b c -- )$/
+a-forth-word   forth-src/test-forth.fth        /^: a-forth-word ( a b c -- 
a*b+c )  + * ;$/
+a0     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a0) (void);$/
+a1     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a1) (Lisp_Object);$/
+a2     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a2) (Lisp_Object, 
Lisp_Object)/
+a3     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a3) (Lisp_Object, 
Lisp_Object,/
+a4     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a4) (Lisp_Object, 
Lisp_Object,/
+a5     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a5) (Lisp_Object, 
Lisp_Object,/
+a6     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a6) (Lisp_Object, 
Lisp_Object,/
+a7     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a7) (Lisp_Object, 
Lisp_Object,/
+a8     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a8) (Lisp_Object, 
Lisp_Object,/
+aMANY  c-src/emacs/src/lisp.h  /^      Lisp_Object (*aMANY) (ptrdiff_t, 
Lisp_Object/
+aUNEVALLED     c-src/emacs/src/lisp.h  /^      Lisp_Object (*aUNEVALLED) 
(Lisp_Object args)/
+aa     c.c     269
+aa     c.c     279
+aaa    c.c     249
+aaa    c.c     269
+aaaaaa c-src/h.h       111
+abbrev-expansion       c-src/abbrev.c  /^DEFUN ("abbrev-expansion", 
Fabbrev_expansion, Sabb/
+abbrev-symbol  c-src/abbrev.c  /^DEFUN ("abbrev-symbol", Fabbrev_symbol, 
Sabbrev_sy/
+abbrev_all_caps        c-src/abbrev.c  58
+abbrevs_changed        c-src/abbrev.c  56
+abc    c-src/h.h       33
+abc    c-src/h.h       37
+abort-recursive-edit   c-src/emacs/src/keyboard.c      /^DEFUN 
("abort-recursive-edit", Fabort_recursive_ed/
+abs/f  ada-src/etags-test-for.ada      /^   function "abs"   (Right : Complex) 
return Real'/
+absolute_dirname       c-src/etags.c   /^absolute_dirname (char *file, char 
*dir)$/
+absolute_filename      c-src/etags.c   /^absolute_filename (char *file, char 
*dir)$/
+abt    cp-src/c.C      55
+acc_pred_info  merc-src/accumulator.m  /^:- pred 
acc_pred_info(list(mer_type)::in, list(pro/
+acc_proc_info  merc-src/accumulator.m  /^:- pred 
acc_proc_info(list(prog_var)::in, prog_var/
+acc_unification        merc-src/accumulator.m  /^:- pred 
acc_unification(pair(prog_var)::in, hlds_g/
+acc_var_subst_init     merc-src/accumulator.m  /^:- pred 
acc_var_subst_init(list(prog_var)::in,$/
+accent_key_syms        c-src/emacs/src/keyboard.c      4625
+access_keymap_keyremap c-src/emacs/src/keyboard.c      
/^access_keymap_keyremap (Lisp_Object map, Lisp_Obje/
+accu_assoc     merc-src/accumulator.m  /^:- pred accu_assoc(module_info::in, 
vartypes::in, /
+accu_assoc     merc-src/accumulator.m  /^:- type accu_assoc$/
+accu_base      merc-src/accumulator.m  /^:- type accu_base$/
+accu_before    merc-src/accumulator.m  /^:- pred accu_before(module_info::in, 
vartypes::in,/
+accu_case      merc-src/accumulator.m  /^:- type accu_case$/
+accu_construct merc-src/accumulator.m  /^:- pred 
accu_construct(module_info::in, vartypes::/
+accu_construct_assoc   merc-src/accumulator.m  /^:- pred 
accu_construct_assoc(module_info::in, vart/
+accu_create_goal       merc-src/accumulator.m  /^:- pred 
accu_create_goal(accu_goal_id::in, list(pr/
+accu_divide_base_case  merc-src/accumulator.m  /^:- pred 
accu_divide_base_case(module_info::in, var/
+accu_goal_id   merc-src/accumulator.m  /^:- type accu_goal_id$/
+accu_goal_list merc-src/accumulator.m  /^:- func 
accu_goal_list(list(accu_goal_id), accu_go/
+accu_goal_store        merc-src/accumulator.m  /^:- type accu_goal_store == 
goal_store(accu_goal_id/
+accu_has_heuristic     merc-src/accumulator.m  /^:- pred 
accu_has_heuristic(module_name::in, string/
+accu_heuristic merc-src/accumulator.m  /^:- pred 
accu_heuristic(module_name::in, string::in/
+accu_is_associative    merc-src/accumulator.m  /^:- pred 
accu_is_associative(module_info::in, pred_/
+accu_is_update merc-src/accumulator.m  /^:- pred 
accu_is_update(module_info::in, pred_id::i/
+accu_process_assoc_set merc-src/accumulator.m  /^:- pred 
accu_process_assoc_set(module_info::in, ac/
+accu_process_update_set        merc-src/accumulator.m  /^:- pred 
accu_process_update_set(module_info::in, a/
+accu_related   merc-src/accumulator.m  /^:- pred accu_related(module_info::in, 
vartypes::in/
+accu_rename    merc-src/accumulator.m  /^:- func 
accu_rename(list(accu_goal_id), accu_subst/
+accu_sets      merc-src/accumulator.m  /^:- type accu_sets$/
+accu_sets_init merc-src/accumulator.m  /^:- pred 
accu_sets_init(accu_sets::out) is det.$/
+accu_stage1    merc-src/accumulator.m  /^:- pred accu_stage1(module_info::in, 
vartypes::in,/
+accu_stage1_2  merc-src/accumulator.m  /^:- pred 
accu_stage1_2(module_info::in, vartypes::i/
+accu_stage2    merc-src/accumulator.m  /^:- pred accu_stage2(module_info::in, 
proc_info::in/
+accu_stage3    merc-src/accumulator.m  /^:- pred accu_stage3(accu_goal_id::in, 
list(prog_va/
+accu_standardize       merc-src/accumulator.m  /^:- pred 
accu_standardize(hlds_goal::in, hlds_goal:/
+accu_store     merc-src/accumulator.m  /^:- pred accu_store(accu_case::in, 
hlds_goal::in,$/
+accu_subst     merc-src/accumulator.m  /^:- type accu_subst == map(prog_var, 
prog_var).$/
+accu_substs    merc-src/accumulator.m  /^:- type accu_substs$/
+accu_substs_init       merc-src/accumulator.m  /^:- pred 
accu_substs_init(list(prog_var)::in, prog_/
+accu_top_level merc-src/accumulator.m  /^:- pred accu_top_level(top_level::in, 
hlds_goal::i/
+accu_transform_proc    merc-src/accumulator.m  /^:- pred 
accu_transform_proc(pred_proc_id::in, pred/
+accu_update    merc-src/accumulator.m  /^:- pred accu_update(module_info::in, 
vartypes::in,/
+accu_warning   merc-src/accumulator.m  /^:- type accu_warning$/
+act    prol-src/natded.prolog  /^act(OutForm,OutSyn,Ws):-$/
+action prol-src/natded.prolog  /^action(KeyVals):-$/
+active_maps    c-src/emacs/src/keyboard.c      /^active_maps (Lisp_Object 
first_event)$/
+actout prol-src/natded.prolog  /^actout('Text',Trees):-$/
+addArchs       objc-src/PackInsp.m     /^-(void)addArchs:(const char *)string$/
+addPOReader    php-src/lce_functions.php       /^      function 
addPOReader($d_name, &$por)$/
+add_active     prol-src/natded.prolog  /^add_active([],Cat,Goal):-$/
+add_command_key        c-src/emacs/src/keyboard.c      /^add_command_key 
(Lisp_Object key)$/
+add_edge       prol-src/natded.prolog  /^add_edge(Left,Right,Cat):-$/
+add_node       c-src/etags.c   /^add_node (node *np, node **cur_node_p)$/
+add_regex      c-src/etags.c   /^add_regex (char *regexp_pattern, language 
*lang)$/
+add_user_signal        c-src/emacs/src/keyboard.c      /^add_user_signal (int 
sig, const char *name)$/
+addnoise       html-src/algrthms.html  /^Adding Noise to the$/
+address        y-src/cccp.y    113
+adjust_point_for_property      c-src/emacs/src/keyboard.c      
/^adjust_point_for_property (ptrdiff_t last_pt, bool/
+agent  cp-src/clheir.hpp       75
+algorithms     html-src/algrthms.html  /^Description$/
+alias  c-src/emacs/src/lisp.h  688
+align  c-src/emacs/src/gmalloc.c       /^align (size_t size)$/
+alignas        c-src/emacs/src/lisp.h  /^# define alignas(alignment) \/* empty 
*\/$/
+aligned        c-src/emacs/src/gmalloc.c       199
+aligned_alloc  c-src/emacs/src/gmalloc.c       /^aligned_alloc (size_t 
alignment, size_t size)$/
+aligned_alloc  c-src/emacs/src/gmalloc.c       1718
+aligned_alloc  c-src/emacs/src/gmalloc.c       71
+alignlist      c-src/emacs/src/gmalloc.c       196
+alive  cp-src/conway.hpp       7
+all_kboards    c-src/emacs/src/keyboard.c      86
+allocate_kboard        c-src/emacs/src/keyboard.c      /^allocate_kboard 
(Lisp_Object type)$/
+allocated      c-src/emacs/src/regex.h 344
+an_extern_linkage      c-src/h.h       44
+an_extern_linkage      c-src/h.h       56
+an_extern_linkage_ptr  c-src/h.h       43
+analyze_regex  c-src/etags.c   /^analyze_regex (char *regex_arg)$/
+andkeyvalseq   prol-src/natded.prolog  /^andkeyvalseq(KeyVals) --> ['&'], 
keyvalseq(KeyVals/
+animals        c-src/h.h       81
+animals        cp-src/c.C      126
+animals        cp-src/c.C      130
+any_kboard_state       c-src/emacs/src/keyboard.c      /^any_kboard_state ()$/
+appDidInit     objcpp-src/SimpleCalc.M /^- appDidInit:sender$/
+append prol-src/natded.prolog  /^append([],Xs,Xs).$/
+appendToDisplay        objcpp-src/SimpleCalc.M /^- appendToDisplay:(const char 
*)theDigit$/
+append_list    prol-src/natded.prolog  /^append_list([],[]).$/
+append_string  pas-src/common.pas      /^procedure append_string;(*($/
+append_tool_bar_item   c-src/emacs/src/keyboard.c      /^append_tool_bar_item 
(void)$/
+appendix       perl-src/htlmify-cystic 24
+appendix_name  perl-src/htlmify-cystic 13
+appendix_toc   perl-src/htlmify-cystic 16
+apply_modifiers        c-src/emacs/src/keyboard.c      /^apply_modifiers (int 
modifiers, Lisp_Object base)$/
+apply_modifiers_uncached       c-src/emacs/src/keyboard.c      
/^apply_modifiers_uncached (int modifiers, char *bas/
+aref_addr      c-src/emacs/src/lisp.h  /^aref_addr (Lisp_Object array, 
ptrdiff_t idx)$/
+arg    c-src/emacs/src/lisp.h  2961
+arg    c-src/emacs/src/lisp.h  2966
+arg    c-src/emacs/src/lisp.h  2971
+arg    c-src/h.h       13
+arg_type       c-src/etags.c   250
+arglist        y-src/cccp.y    41
+argno  y-src/cccp.y    45
+args   c-src/emacs/src/lisp.h  2986
+args   c-src/h.h       30
+argsindent     tex-src/texinfo.tex     /^\\dimen1=\\hsize \\advance \\dimen1 
by -\\defargsindent/
+argsindent     tex-src/texinfo.tex     /^\\newskip\\defargsindent 
\\defargsindent=50pt$/
+argsindent     tex-src/texinfo.tex     /^\\parshape 2 0in \\dimen0 
\\defargsindent \\dimen1    /
+argument       c-src/etags.c   253
+argvals        prol-src/natded.prolog  /^argvals([]) --> [].$/
+array  c.c     190
+ascii  c-src/emacs/src/lisp.h  1598
+asort  cp-src/functions.cpp    /^void asort(int *a, int num){$/
+assemby-code-word      forth-src/test-forth.fth        /^code 
assemby-code-word ( dunno what it does )$/
+assert c-src/etags.c   /^# define assert(x) ((void) 0)$/
+assert c-src/etags.c   135
+assign_neighbor        cp-src/clheir.hpp       /^    void assign_neighbor(int 
direction, location */
+assoc_list     merc-src/accumulator.m  /^:- import_module assoc_list.$/
+associativity_assertion        merc-src/accumulator.m  /^:- pred 
associativity_assertion(module_info::in, l/
+at_end c-src/etags.c   249
+at_filename    c-src/etags.c   247
+at_language    c-src/etags.c   245
+at_least_one_member    prol-src/natded.prolog  
/^at_least_one_member(X,[X|_]):-!.$/
+at_regexp      c-src/etags.c   246
+at_stdin       c-src/etags.c   248
+atom   prol-src/natded.prolog  /^atom(X) --> [X], {atomic(X)}.$/
+atomval        prol-src/natded.prolog  /^atomval(X) --> atom(X).$/
+aultparindent  tex-src/texinfo.tex     /^\\newdimen\\defaultparindent 
\\defaultparindent = 15p/
+aultparindent  tex-src/texinfo.tex     /^\\parindent = \\defaultparindent$/
+aultparindent\hang\textindent  tex-src/texinfo.tex     
/^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+auto_help      c-src/etags.c   699
+b      c-src/h.h       103
+b      c-src/h.h       104
+b      c-src/h.h       41
+b      c.c     /^b ()$/
+b      c.c     180
+b      c.c     259
+b      c.c     260
+b      c.c     262
+b      cp-src/c.C      132
+b      ruby-src/test1.ru       /^ def b()$/
+backslash=0    tex-src/texinfo.tex     /^\\let\\indexbackslash=0  %overridden 
during \\printin/
+bar    c-src/c.c       /^void bar() {while(0) {}}$/
+bar    c-src/h.h       19
+bar    c.c     143
+bar    cp-src/x.cc     /^XX::bar()$/
+bar1   ruby-src/test1.ru       /^    attr_reader(:foo1, :bar1, # comment$/
+bar=   ruby-src/test1.ru       /^    attr_writer :bar,$/
+bas_syn        prol-src/natded.prolog  /^bas_syn(n(_)).$/
+base   c-src/emacs/src/lisp.h  2188
+base   cp-src/Range.h  /^  double base (void) const { return rng_base;  }$/
+base   cp-src/c.C      /^double base (void) const { return rng_base;  }$/
+base_case_ids  merc-src/accumulator.m  /^:- func 
base_case_ids(accu_goal_store) = list(accu/
+base_case_ids_set      merc-src/accumulator.m  /^:- func 
base_case_ids_set(accu_goal_store) = set(a/
+baz=   ruby-src/test1.ru       /^                :baz,$/
+bb     c.c     275
+bbb    c.c     251
+bbbbbb c-src/h.h       113
+been_warned    c-src/etags.c   222
+before_command_echo_length     c-src/emacs/src/keyboard.c      130
+before_command_key_count       c-src/emacs/src/keyboard.c      129
+begtoken       c-src/etags.c   /^#define       begtoken(c)     (_btk[CHAR 
(c)]) \/* c can star/
+behaviour_info erl-src/gs_dialog.erl   /^behaviour_info(callbacks) ->$/
+bf=cmbx10      tex-src/texinfo.tex     /^\\font\\defbf=cmbx10 scaled 
\\magstep1 %was 1314$/
+bind   pyt-src/server.py       /^    def bind(self, key, action):$/
+bind_polling_period    c-src/emacs/src/keyboard.c      /^bind_polling_period 
(int n)$/
+bits_word      c-src/emacs/src/lisp.h  123
+bits_word      c-src/emacs/src/lisp.h  127
+bla    c.c     /^int bla ()$/
+blah   tex-src/testenv.tex     /^\\section{blah}$/
+bletch el-src/TAGTEST.EL       /^(foo::defmumble bletch beuarghh)$/
+blv    c-src/emacs/src/lisp.h  689
+blv_found      c-src/emacs/src/lisp.h  /^blv_found (struct 
Lisp_Buffer_Local_Value *blv)$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\dimen2 by 
-\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\dimen3 by 
-\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
-\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
\\defbodyindent \\advance \\righ/
+bodyindent     tex-src/texinfo.tex     /^\\exdentamount=\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\newskip\\defbodyindent 
\\defbodyindent=.4in$/
+bool   c.c     222
+bool   merc-src/accumulator.m  /^:- import_module bool.$/
+bool_header_size       c-src/emacs/src/lisp.h  1472
+bool_vector_bitref     c-src/emacs/src/lisp.h  /^bool_vector_bitref 
(Lisp_Object a, EMACS_INT i)$/
+bool_vector_bytes      c-src/emacs/src/lisp.h  /^bool_vector_bytes (EMACS_INT 
size)$/
+bool_vector_data       c-src/emacs/src/lisp.h  /^bool_vector_data (Lisp_Object 
a)$/
+bool_vector_ref        c-src/emacs/src/lisp.h  /^bool_vector_ref (Lisp_Object 
a, EMACS_INT i)$/
+bool_vector_set        c-src/emacs/src/lisp.h  /^bool_vector_set (Lisp_Object 
a, EMACS_INT i, bool /
+bool_vector_size       c-src/emacs/src/lisp.h  /^bool_vector_size (Lisp_Object 
a)$/
+bool_vector_uchar_data c-src/emacs/src/lisp.h  /^bool_vector_uchar_data 
(Lisp_Object a)$/
+bool_vector_words      c-src/emacs/src/lisp.h  /^bool_vector_words (EMACS_INT 
size)$/
+boolvar        c-src/emacs/src/lisp.h  2287
+bracelev       c-src/etags.c   2520
+bsp_DevId      c-src/h.h       25
+bt     c-src/emacs/src/lisp.h  2988
+btowc  c-src/emacs/src/regex.h /^# define btowc(c) c$/
+buffer c-src/emacs/src/lisp.h  2000
+buffer c-src/emacs/src/regex.h 341
+buffer c-src/etags.c   238
+buffer c-src/h.h       119
+build  prol-src/natded.prolog  /^build([],Left,Left).$/
+build_pure_c_string    c-src/emacs/src/lisp.h  /^build_pure_c_string (const 
char *str)$/
+build_string   c-src/emacs/src/lisp.h  /^build_string (const char *str)$/
+buildact       prol-src/natded.prolog  /^buildact([SynIn],Right,RightPlus1):-$/
+builtin_lisp_symbol    c-src/emacs/src/lisp.h  /^builtin_lisp_symbol (int 
index)$/
+burst  c-src/h.h       28
+busy   c-src/emacs/src/gmalloc.c       158
+button_down_location   c-src/emacs/src/keyboard.c      5210
+button_down_time       c-src/emacs/src/keyboard.c      5218
+byte_stack     c-src/emacs/src/lisp.h  3049
+bytecode_dest  c-src/emacs/src/lisp.h  3037
+bytecode_top   c-src/emacs/src/lisp.h  3036
+bytepos        c-src/emacs/src/lisp.h  2016
+bytes_free     c-src/emacs/src/gmalloc.c       314
+bytes_total    c-src/emacs/src/gmalloc.c       310
+bytes_used     c-src/emacs/src/gmalloc.c       312
+c      c-src/h.h       /^#define c() d$/
+c      c-src/h.h       106
+c      c.c     180
+c_ext  c-src/etags.c   2271
+caccacacca     c.c     /^caccacacca (a,b,c,d,e,f,g)$/
+cacheLRUEntry_s        c.c     172
+cacheLRUEntry_t        c.c     177
+calculate_goal_info    merc-src/accumulator.m  /^:- pred 
calculate_goal_info(hlds_goal_expr::in, hl/
+calloc c-src/emacs/src/gmalloc.c       /^calloc (size_t nmemb, size_t size)$/
+calloc c-src/emacs/src/gmalloc.c       1717
+calloc c-src/emacs/src/gmalloc.c       66
+calloc c-src/emacs/src/gmalloc.c       70
+can_be_null    c-src/emacs/src/regex.h 370
+cancel_echoing c-src/emacs/src/keyboard.c      /^cancel_echoing (void)$/
+canonicalize_filename  c-src/etags.c   /^canonicalize_filename (register char 
*fn)$/
+case_Lisp_Int  c-src/emacs/src/lisp.h  438
+cat    c-src/h.h       81
+cat    cp-src/c.C      126
+cat    cp-src/c.C      130
+cat    prol-src/natded.prolog  /^cat(A, Alpha@Beta, Ass3, Qs3, 
tree(fe,A:Alpha@Beta/
+cat_atoms      prol-src/natded.prolog  /^cat_atoms(A1,A2,A3):-$/
+cccccccccc     c-src/h.h       115
+cdr    c-src/emacs/src/lisp.h  1159
+cell   y-src/parse.y   279
+cgrep  html-src/software.html  /^cgrep$/
+chain  c-src/emacs/src/lisp.h  1162
+chain  c-src/emacs/src/lisp.h  2206
+chain  c-src/emacs/src/lisp.h  2396
+chain_subst    merc-src/accumulator.m  /^:- func chain_subst(accu_subst, 
accu_subst) = accu/
+chain_subst_2  merc-src/accumulator.m  /^:- pred chain_subst_2(list(A)::in, 
map(A, B)::in, /
+char_bits      c-src/emacs/src/lisp.h  2443
+char_table_specials    c-src/emacs/src/lisp.h  1692
+charpos        c-src/emacs/src/lisp.h  2011
+charset_unibyte        c-src/emacs/src/regex.h 410
+chartonmstr    pas-src/common.pas      /^function chartonmstr; (*($/
+checkQuotation php-src/lce_functions.php       /^      function 
checkQuotation($str)$/
+check_cons_list        c-src/emacs/src/lisp.h  /^#  define check_cons_list() 
lisp_h_check_cons_list/
+checker        make-src/Makefile       /^checker:$/
+checkhdr       c-src/emacs/src/gmalloc.c       /^checkhdr (const struct hdr 
*hdr)$/
+checkiso       html-src/software.html  /^checkiso$/
+childDidExit   objc-src/Subprocess.m   /^- childDidExit$/
+chunks_free    c-src/emacs/src/gmalloc.c       313
+chunks_used    c-src/emacs/src/gmalloc.c       311
+cjava  c-src/etags.c   2936
+class_method   ruby-src/test.rb        /^        def 
ClassExample.class_method$/
+classifyLine   php-src/lce_functions.php       /^      function 
classifyLine($line)$/
+clean  make-src/Makefile       /^clean:$/
+clear  cp-src/conway.hpp       /^    void clear(void) { alive = 0; }$/
+clear-abbrev-table     c-src/abbrev.c  /^DEFUN ("clear-abbrev-table", 
Fclear_abbrev_table, /
+clear-this-command-keys        c-src/emacs/src/keyboard.c      /^DEFUN 
("clear-this-command-keys", Fclear_this_comm/
+clearAllKey    objcpp-src/SimpleCalc.M /^- clearAllKey:sender$/
+clearKey       objcpp-src/SimpleCalc.M /^- clearKey:sender$/
+clear_event    c-src/emacs/src/keyboard.c      /^clear_event (struct 
input_event *event)$/
+clear_input_pending    c-src/emacs/src/keyboard.c      /^clear_input_pending 
(void)$/
+clear_neighbors        cp-src/clheir.cpp       /^void 
discrete_location::clear_neighbors(void)$/
+clear_screen   cp-src/screen.cpp       /^void clear_screen(void)$/
+clear_waiting_for_input        c-src/emacs/src/keyboard.c      
/^clear_waiting_for_input (void)$/
+cmd_error      c-src/emacs/src/keyboard.c      /^cmd_error (Lisp_Object data)$/
+cmd_error_internal     c-src/emacs/src/keyboard.c      /^cmd_error_internal 
(Lisp_Object data, const char */
+cmpfn  c-src/emacs/src/lisp.h  /^  bool (*cmpfn) (struct hash_table_test *t, 
Lisp_O/
+cmt    prol-src/natded.prolog  /^cmt:-$/
+cname  c-src/etags.c   2519
+cno    c-src/etags.c   224
+colori cp-src/c.C      40
+commaargvals   prol-src/natded.prolog  /^commaargvals(Args) -->$/
+command        c-src/etags.c   187
+command-error-default-function c-src/emacs/src/keyboard.c      /^DEFUN 
("command-error-default-function", Fcommand_/
+command_loop   c-src/emacs/src/keyboard.c      /^command_loop (void)$/
+command_loop_1 c-src/emacs/src/keyboard.c      /^command_loop_1 (void)$/
+command_loop_2 c-src/emacs/src/keyboard.c      /^command_loop_2 (Lisp_Object 
ignore)$/
+command_loop_level     c-src/emacs/src/keyboard.c      195
+comment        php-src/lce_functions.php       /^      function comment($line, 
$class)$/
+commutativity_assertion        merc-src/accumulator.m  /^:- pred 
commutativity_assertion(module_info::in,li/
+compile_empty  prol-src/natded.prolog  /^compile_empty:-$/
+compile_lex    prol-src/natded.prolog  /^compile_lex(File):-$/
+complete       prol-src/natded.prolog  /^complete(Cat):-$/
+complete-tag   el-src/emacs/lisp/progmodes/etags.el    /^(defun complete-tag 
()$/
+compressor     c-src/etags.c   188
+compressors    c-src/etags.c   457
+compute_next_state     cp-src/clheir.hpp       /^    virtual void 
compute_next_state(void) { }$/
+compute_next_state     cp-src/conway.hpp       /^    void 
compute_next_state(void)$/
+conalgorithm   html-src/algrthms.html  /^Convolutionally$/
+concat c-src/etags.c   /^concat (const char *s1, const char *s2, const char/
+concatenatenamestrings pas-src/common.pas      /^function 
concatenatenamestrings; (*($/
+consider_token c-src/etags.c   /^consider_token (char *str, int len, int c, 
int *c_/
+constant       c-src/emacs/src/lisp.h  668
+constant       c-src/h.h       29
+constant       y-src/cccp.y    112
+constant_args  c-src/h.h       27
+constype       c-src/emacs/src/lisp.h  3739
+consult_lex    prol-src/natded.prolog  /^consult_lex:-$/
+contents       c-src/emacs/src/lisp.h  1372
+contents       c-src/emacs/src/lisp.h  1600
+contents       c-src/emacs/src/lisp.h  1624
+count  c-src/emacs/src/lisp.h  1863
+count_layers   lua-src/allegro.lua     /^local function count_layers (layer)$/
+count_words    c-src/tab.c     /^static int            count_words(char *str, 
char delim)$/
+counter        cp-src/c.C      33
+counter        cp-src/c.C      36
+cow    cp-src/c.C      127
+cow    cp-src/c.C      131
+cplpl  c-src/etags.c   2935
+create-bar     forth-src/test-forth.fth        /^: create-bar foo ;$/
+createPOEntries        php-src/lce_functions.php       /^      function 
createPOEntries()$/
+createWidgets  pyt-src/server.py       /^    def createWidgets(self):$/
+createWidgets  pyt-src/server.py       /^    def createWidgets(self, host):$/
+create_acc_call        merc-src/accumulator.m  /^:- func 
create_acc_call(hlds_goal::in(goal_plain_c/
+create_acc_goal        merc-src/accumulator.m  /^:- pred 
create_acc_goal(hlds_goal::in, accu_substs/
+create_new_base_goals  merc-src/accumulator.m  /^:- func 
create_new_base_goals(set(accu_goal_id), a/
+create_new_orig_recursive_goals        merc-src/accumulator.m  /^:- func 
create_new_orig_recursive_goals(set(accu_g/
+create_new_recursive_goals     merc-src/accumulator.m  /^:- func 
create_new_recursive_goals(set(accu_goal_i/
+create_new_var merc-src/accumulator.m  /^:- pred create_new_var(prog_var::in, 
string::in, p/
+create_orig_goal       merc-src/accumulator.m  /^:- pred 
create_orig_goal(hlds_goal::in, accu_subst/
+cscInitTime    cp-src/c.C      7
+cscSegmentationTime    cp-src/c.C      8
+cstack c-src/etags.c   2523
+ctags  make-src/Makefile       /^ctags: etags.c ${OBJS}$/
+curlb  c-src/etags.c   2929
+curlinepos     c-src/etags.c   2931
+current-idle-time      c-src/emacs/src/keyboard.c      /^DEFUN 
("current-idle-time", Fcurrent_idle_time, Sc/
+current-input-mode     c-src/emacs/src/keyboard.c      /^DEFUN 
("current-input-mode", Fcurrent_input_mode, /
+current_kboard c-src/emacs/src/keyboard.c      85
+current_lb_is_new      c-src/etags.c   2926
+curry-test     scm-src/test.scm        /^(define (((((curry-test a) b) c) d) 
e)$/
+cursor_position        cp-src/screen.cpp       /^void cursor_position(void)$/
+cursor_x       cp-src/screen.cpp       15
+cursor_y       cp-src/screen.cpp       15
+d      c-src/emacs/src/lisp.h  4673
+d      c-src/emacs/src/lisp.h  4679
+d      c.c     180
+data   c-src/emacs/src/lisp.h  1395
+data   c-src/emacs/src/lisp.h  2129
+data   c-src/emacs/src/lisp.h  2395
+ddefineseen    c-src/etags.c   2462
+debian-bug     html-src/software.html  /^debian-bug.el$/
+debug_on_exit  c-src/emacs/src/lisp.h  2984
+decimalKey     objcpp-src/SimpleCalc.M /^- decimalKey:sender$/
+declared_special       c-src/emacs/src/lisp.h  676
+decode_timer   c-src/emacs/src/keyboard.c      /^decode_timer (Lisp_Object 
timer, struct timespec */
+def    c-src/h.h       35
+def    c-src/h.h       38
+defalt c-src/emacs/src/lisp.h  1585
+default-tags-table-function    el-src/emacs/lisp/progmodes/etags.el    
/^(defvar default-tags-table-function nil$/
+default_C_entries      c-src/etags.c   /^default_C_entries (FILE *inf)$/
+default_C_help c-src/etags.c   515
+default_C_help c-src/etags.c   523
+default_C_suffixes     c-src/etags.c   512
+defcell        c-src/emacs/src/lisp.h  2351
+define-abbrev  c-src/abbrev.c  /^DEFUN ("define-abbrev", Fdefine_abbrev, 
Sdefine_ab/
+define-abbrev-table    c-src/abbrev.c  /^DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table/
+define-global-abbrev   c-src/abbrev.c  /^DEFUN ("define-global-abbrev", 
Fdefine_global_abbr/
+define-mode-abbrev     c-src/abbrev.c  /^DEFUN ("define-mode-abbrev", 
Fdefine_mode_abbrev, /
+defined_GC_CHECK_STRING_BYTES  c-src/emacs/src/lisp.h  4663
+defined_GC_CHECK_STRING_BYTES  c-src/emacs/src/lisp.h  4665
+definedef      c-src/etags.c   2464
+defun_func1    c.c     /^defun_func1()$/
+delegate       objc-src/Subprocess.m   /^- delegate$/
+deleteItem     pyt-src/server.py       /^    def deleteItem(self):$/
+delete_kboard  c-src/emacs/src/keyboard.c      /^delete_kboard (KBOARD *kb)$/
+deliver_input_available_signal c-src/emacs/src/keyboard.c      
/^deliver_input_available_signal (int sig)$/
+deliver_interrupt_signal       c-src/emacs/src/keyboard.c      
/^deliver_interrupt_signal (int sig)$/
+deliver_user_signal    c-src/emacs/src/keyboard.c      /^deliver_user_signal 
(int sig)$/
+depth  c-src/emacs/src/lisp.h  1618
+derived_analyses       prol-src/natded.prolog  /^derived_analyses([],[]).$/
+describe_abbrev        c-src/abbrev.c  /^describe_abbrev (sym, stream)$/
+detect_input_pending   c-src/emacs/src/keyboard.c      /^detect_input_pending 
(void)$/
+detect_input_pending_ignore_squeezables        c-src/emacs/src/keyboard.c      
/^detect_input_pending_ignore_squeezables (void)$/
+detect_input_pending_run_timers        c-src/emacs/src/keyboard.c      
/^detect_input_pending_run_timers (bool do_display)$/
+dialog_loop    erl-src/gs_dialog.erl   /^dialog_loop(Module, Window, Frame, 
Extra, Args) ->/
+dignorerest    c-src/etags.c   2463
+discard-input  c-src/emacs/src/keyboard.c      /^DEFUN ("discard-input", 
Fdiscard_input, Sdiscard_i/
+discard_mouse_events   c-src/emacs/src/keyboard.c      /^discard_mouse_events 
(void)$/
+discrete_location      cp-src/clheir.hpp       /^    discrete_location(int xi, 
int yi, int zi):$/
+discrete_location      cp-src/clheir.hpp       56
+display        cp-src/conway.cpp       /^void display(void)$/
+disposetextstring      pas-src/common.pas      /^procedure 
disposetextstring;(*($/
+dnone  c-src/etags.c   2460
+doc    c-src/emacs/src/lisp.h  1689
+dog    c-src/h.h       81
+dog    cp-src/c.C      126
+dog    cp-src/c.C      130
+dotfill        tex-src/texinfo.tex     /^  \\null\\nobreak\\indexdotfill % 
Have leaders before/
+dotfill        tex-src/texinfo.tex     
/^\\noindent\\hskip\\secondaryindent\\hbox{#1}\\indexdotf/
+double_click_count     c-src/emacs/src/keyboard.c      5222
+drag_n_drop_syms       c-src/emacs/src/keyboard.c      4629
+dribble        c-src/emacs/src/keyboard.c      236
+dsharpseen     c-src/etags.c   2461
+dummies        tex-src/texinfo.tex     /^{\\indexdummies % Must do this here, 
since \\bf, etc/
+dummy1 cp-src/burton.cpp       /^::dummy::dummy test::dummy1(void)$/
+dummy2 cp-src/burton.cpp       /^::dummy::dummy test::dummy2(::CORBA::Long 
dummy)$/
+dummy3 cp-src/burton.cpp       /^::dummy::dummy test::dummy3(char* name, 
::CORBA::L/
+dummydots      tex-src/texinfo.tex     /^\\let\\dots=\\indexdummydots$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\b=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\code=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\emph=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\file=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\i=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\kbd=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\key=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\r=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\samp=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\sc=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\strong=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\t=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\tclose=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\var=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\w=\\indexdummyfont$/
+dummytex       tex-src/texinfo.tex     /^\\let\\TeX=\\indexdummytex$/
+dump   pyt-src/server.py       /^    def dump(self, folded):$/
+eabs   c-src/emacs/src/lisp.h  /^#define eabs(x)         ((x) < 0 ? -(x) : 
(x))$/
+eassert        c-src/emacs/src/lisp.h  /^# define eassert(cond)                
                                \\$/
+eassert        c-src/emacs/src/lisp.h  /^# define eassert(cond) ((void) (false 
&& (cond))) /
+eassume        c-src/emacs/src/lisp.h  /^# define eassume(cond)                
                                \\$/
+eassume        c-src/emacs/src/lisp.h  /^# define eassume(cond) assume (cond)$/
+eax    c-src/sysdep.h  31
+eax    c-src/sysdep.h  33
+echo_add_key   c-src/emacs/src/keyboard.c      /^echo_add_key (Lisp_Object c)$/
+echo_char      c-src/emacs/src/keyboard.c      /^echo_char (Lisp_Object c)$/
+echo_dash      c-src/emacs/src/keyboard.c      /^echo_dash (void)$/
+echo_kboard    c-src/emacs/src/keyboard.c      166
+echo_keystrokes_p      c-src/emacs/src/keyboard.c      /^echo_keystrokes_p 
(void)$/
+echo_length    c-src/emacs/src/keyboard.c      /^echo_length (void)$/
+echo_message_buffer    c-src/emacs/src/keyboard.c      171
+echo_now       c-src/emacs/src/keyboard.c      /^echo_now (void)$/
+echo_truncate  c-src/emacs/src/keyboard.c      /^echo_truncate (ptrdiff_t 
nchars)$/
+echoing        c-src/emacs/src/keyboard.c      154
+editItem       pyt-src/server.py       /^    def editItem(self):$/
+editsite       pyt-src/server.py       /^    def editsite(self, site):$/
+edituser       pyt-src/server.py       /^    def edituser(self, user):$/
+egetenv        c-src/emacs/src/lisp.h  /^egetenv (const char *var)$/
+emacs_abort    c-src/emacs/src/lisp.h  /^extern _Noreturn void emacs_abort 
(void) NO_INLINE/
+end    c-src/emacs/src/keyboard.c      8753
+end    c-src/emacs/src/lisp.h  2039
+end    c-src/emacs/src/regex.h 432
+endtoken       c-src/etags.c   /^#define       endtoken(c)     (_etk[CHAR 
(c)]) \/* c ends tok/
+enter_critical_section c-src/h.h       116
+entry  perl-src/htlmify-cystic 218
+entry  perl-src/htlmify-cystic 234
+entry  perl-src/htlmify-cystic 245
+entry  perl-src/htlmify-cystic 252
+entry  perl-src/htlmify-cystic 268
+entry  perl-src/htlmify-cystic 276
+entry  perl-src/htlmify-cystic 281
+entry  perl-src/htlmify-cystic 296
+equalsKey      objcpp-src/SimpleCalc.M /^- equalsKey:sender$/
+erlang_atom    c-src/etags.c   /^erlang_atom (char *s)$/
+erlang_attribute       c-src/etags.c   /^erlang_attribute (char *s)$/
+erlang_func    c-src/etags.c   /^erlang_func (char *s, char *last)$/
+error  c-src/emacs/src/lisp.h  /^extern _Noreturn void error (const char *, 
...) AT/
+error  c-src/etags.c   /^error (const char *format, ...)$/
+error  c-src/etags.c   /^static void error (const char *, ...) ATTRIBUTE_FO/
+error  y-src/cccp.y    /^error (msg)$/
+error_signaled c-src/etags.c   264
+etags  el-src/emacs/lisp/progmodes/etags.el    /^(defgroup etags nil "Tags 
tables."$/
+etags  html-src/software.html  /^Etags$/
+etags  make-src/Makefile       /^etags: etags.c ${OBJS}$/
+etags--xref-find-definitions   el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags--xref-find-definitions (pattern &opti/
+etags--xref-limit      el-src/emacs/lisp/progmodes/etags.el    /^(defconst 
etags--xref-limit 1000)$/
+etags-file-of-tag      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-file-of-tag (&optional relative) ; Do/
+etags-goto-tag-location        el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-goto-tag-location (tag-info)$/
+etags-list-tags        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-list-tags (file) ; Doc string?$/
+etags-recognize-tags-table     el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-recognize-tags-table ()$/
+etags-snarf-tag        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-snarf-tag (&optional use-explicit) ; /
+etags-tags-apropos     el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-tags-apropos (string) ; Doc string?$/
+etags-tags-apropos-additional  el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-tags-apropos-additional (regexp)$/
+etags-tags-completion-table    el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-tags-completion-table () ; Doc string/
+etags-tags-included-tables     el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-tags-included-tables () ; Doc string?/
+etags-tags-table-files el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-tags-table-files () ; Doc string?$/
+etags-verify-tags-table        el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-verify-tags-table ()$/
+etags-xref-find        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-xref-find (action id)$/
+etags-xref-find-definitions-tag-order  el-src/emacs/lisp/progmodes/etags.el    
/^(defvar etags-xref-find-definitions-tag-order '(ta/
+etags.1.man    make-src/Makefile       /^etags.1.man: etags.1$/
+etags_getcwd   c-src/etags.c   /^etags_getcwd (void)$/
+eval_dyn       c-src/emacs/src/keyboard.c      /^eval_dyn (Lisp_Object form)$/
+event-convert-list     c-src/emacs/src/keyboard.c      /^DEFUN 
("event-convert-list", Fevent_convert_list, /
+event-symbol-parse-modifiers   c-src/emacs/src/keyboard.c      /^DEFUN 
("internal-event-symbol-parse-modifiers", Fe/
+event_head     c-src/emacs/src/keyboard.c      11021
+event_to_kboard        c-src/emacs/src/keyboard.c      /^event_to_kboard 
(struct input_event *event)$/
+exact  c-src/emacs/src/gmalloc.c       200
+execute        cp-src/c.C      /^        void execute(CPluginCSCState& p, int 
w, in/
+exit   c-src/exit.c    /^DEFUN(exit, (status), int status)$/
+exit   c-src/exit.strange_suffix       /^DEFUN(exit, (status), int status)$/
+exit-recursive-edit    c-src/emacs/src/keyboard.c      /^DEFUN 
("exit-recursive-edit", Fexit_recursive_edit/
+exit_critical_to_previous      c-src/h.h       117
+exp    y-src/atest.y   2
+exp    y-src/cccp.y    156
+exp    y-src/cccp.y    185
+exp    y-src/parse.y   95
+exp1   y-src/cccp.y    148
+exp_list       y-src/parse.y   263
+expand-abbrev  c-src/abbrev.c  /^DEFUN ("expand-abbrev", Fexpand_abbrev, 
Sexpand_ab/
+expandmng      prol-src/natded.prolog  /^expandmng(var(V),var(V)).$/
+expandmng_tree prol-src/natded.prolog  
/^expandmng_tree(tree(Rule,Syn:Sem,Trees),$/
+expandmng_trees        prol-src/natded.prolog  /^expandmng_trees([],[]).$/
+expandsyn      prol-src/natded.prolog  /^expandsyn(Syn,Syn):-$/
+explicitly-quoted-pending-delete-mode  el-src/TAGTEST.EL       /^(defalias 
(quote explicitly-quoted-pending-delete-/
+expression_value       y-src/cccp.y    68
+extras c-src/emacs/src/lisp.h  1603
+extvar c-src/h.h       109
+f      c-src/c.c       /^T f(){if(x){}$/
+f      c-src/h.h       89
+f      c.c     /^int f$/
+f      c.c     145
+f      c.c     156
+f      c.c     168
+f      cp-src/c.C      /^     void f() {}$/
+f      cp-src/c.C      /^  int f(){return 0;};         \/\/ first comment$/
+f      cp-src/c.C      /^A<float,B<int> > A<B<float>,int>::f(A<int>* x) {}$/
+f      cp-src/c.C      /^A<int>* f() {}$/
+f      cp-src/c.C      /^class B<int> { void f() {} };$/
+f      cp-src/c.C      /^int A<int>::f(A<int>* x) {}$/
+f      cp-src/c.C      /^int f(A<int> x) {}$/
+f      cp-src/fail.C   /^              int f() { return 5; }$/
+f      cp-src/fail.C   /^int A::B::f() { return 2; }$/
+f1     c.c     /^     f1 () { \/* Do something. *\/; }$/
+f1     perl-src/kai-test.pl    /^sub f1 {$/
+f2     c.c     /^void f2 () { \/* Do something. *\/; }$/
+f2     perl-src/kai-test.pl    /^sub main::f2 {$/
+f3     perl-src/kai-test.pl    /^sub f3 {$/
+f4     perl-src/kai-test.pl    /^sub Bar::f4 {$/
+f5     perl-src/kai-test.pl    /^sub f5 {$/
+f6     perl-src/kai-test.pl    /^sub f6 {$/
+f7     perl-src/kai-test.pl    /^sub f7 {$/
+fast_string_match_ignore_case  c-src/emacs/src/lisp.h  
/^fast_string_match_ignore_case (Lisp_Object regexp,/
+fastctags      make-src/Makefile       /^fastctags:$/
+fastetags      make-src/Makefile       /^fastetags:$/
+fastmap        c-src/emacs/src/regex.h 355
+fastmap_accurate       c-src/emacs/src/regex.h 383
+fatal  c-src/etags.c   /^fatal (const char *s1, const char *s2)$/
+fatala c.c     /^void fatala () __attribute__ ((noreturn));$/
+fconst forth-src/test-forth.fth        /^3.1415e fconstant fconst$/
+fdHandler      objc-src/Subprocess.m   /^- fdHandler:(int)theFd$/
+fdHandler      objc-src/Subprocess.m   /^fdHandler (int theFd, id self)$/
+fdefunkey      c-src/etags.c   2409
+fdefunname     c-src/etags.c   2410
+fdesc  c-src/etags.c   201
+fdesc  c-src/etags.c   212
+fdp    c-src/etags.c   217
+ff     cp-src/c.C      /^  int ff(){return 1;};$/
+field_of_play  cp-src/conway.cpp       18
+fignore        c-src/etags.c   2416
+file-of-tag    el-src/emacs/lisp/progmodes/etags.el    /^(defun file-of-tag 
(&optional relative)$/
+file-of-tag-function   el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
file-of-tag-function nil$/
+fileJoin       php-src/lce_functions.php       /^  function fileJoin()$/
+file_end       perl-src/htlmify-cystic /^sub file_end ()$/
+file_index     perl-src/htlmify-cystic 33
+file_tocs      perl-src/htlmify-cystic 30
+filename_is_absolute   c-src/etags.c   /^filename_is_absolute (char *fn)$/
+filenames      c-src/etags.c   196
+find-tag       el-src/emacs/lisp/progmodes/etags.el    /^(defun find-tag 
(tagname &optional next-p regexp-p/
+find-tag-default-function      el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom find-tag-default-function nil$/
+find-tag-history       el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
find-tag-history nil) ; Doc string?$/
+find-tag-hook  el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
find-tag-hook nil$/
+find-tag-in-order      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-in-order (pattern$/
+find-tag-interactive   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-interactive (prompt &optional no-d/
+find-tag-marker-ring   el-src/emacs/lisp/progmodes/etags.el    /^(defvaralias 
'find-tag-marker-ring 'xref--marker-r/
+find-tag-marker-ring-length    el-src/emacs/lisp/progmodes/etags.el    
/^(define-obsolete-variable-alias 'find-tag-marker-r/
+find-tag-next-line-after-failure-p     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar find-tag-next-line-after-failure-p nil$/
+find-tag-noselect      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-noselect (tagname &optional next-p/
+find-tag-other-frame   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-other-frame (tagname &optional nex/
+find-tag-other-window  el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-other-window (tagname &optional ne/
+find-tag-regexp        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-regexp (regexp &optional next-p ot/
+find-tag-regexp-next-line-after-failure-p      
el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
find-tag-regexp-next-line-after-failure-p /
+find-tag-regexp-search-function        el-src/emacs/lisp/progmodes/etags.el    
/^(defvar find-tag-regexp-search-function nil$/
+find-tag-regexp-tag-order      el-src/emacs/lisp/progmodes/etags.el    
/^(defvar find-tag-regexp-tag-order nil$/
+find-tag-search-function       el-src/emacs/lisp/progmodes/etags.el    
/^(defvar find-tag-search-function nil$/
+find-tag-tag   el-src/emacs/lisp/progmodes/etags.el    /^(defun find-tag-tag 
(string)$/
+find-tag-tag-order     el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
find-tag-tag-order nil$/
+find_entries   c-src/etags.c   /^find_entries (FILE *inf)$/
+find_user_signal_name  c-src/emacs/src/keyboard.c      /^find_user_signal_name 
(int sig)$/
+findcats       prol-src/natded.prolog  /^findcats([],Left,Left).$/
+finish_appendices      perl-src/htlmify-cystic /^sub finish_appendices ()$/
+finish_sections        perl-src/htlmify-cystic /^sub finish_sections ()$/
+finish_subsections     perl-src/htlmify-cystic /^sub finish_subsections ()$/
+finish_subsubsections  perl-src/htlmify-cystic /^sub finish_subsubsections ()$/
+finlist        c-src/etags.c   2414
+first  c-src/emacs/src/gmalloc.c       151
+fitchtreelist  prol-src/natded.prolog  /^fitchtreelist([]).$/
+fixup_locale   c-src/emacs/src/lisp.h  /^INLINE void fixup_locale (void) {}$/
+flag   c-src/getopt.h  83
+flag2str       pyt-src/server.py       /^def flag2str(value, string):$/
+flistseen      c-src/etags.c   2415
+fn     c-src/exit.c    /^    void EXFUN((*fn[1]), (NOARGS));$/
+fn     c-src/exit.strange_suffix       /^    void EXFUN((*fn[1]), (NOARGS));$/
+fnin   y-src/parse.y   68
+focus_set      pyt-src/server.py       /^    def focus_set(self):$/
+follow_key     c-src/emacs/src/keyboard.c      /^follow_key (Lisp_Object 
keymap, Lisp_Object key)$/
+fonts  tex-src/texinfo.tex     /^\\obeyspaces \\obeylines \\ninett 
\\indexfonts \\rawbac/
+fonts\rm       tex-src/texinfo.tex     /^  \\indexfonts\\rm \\tolerance=9500 
\\advance\\baseline/
+foo    c-src/h.h       18
+foo    c.c     150
+foo    c.c     166
+foo    c.c     167
+foo    c.c     178
+foo    c.c     189
+foo    cp-src/c.C      /^    foo() {$/
+foo    cp-src/c.C      68
+foo    cp-src/c.C      79
+foo    cp-src/x.cc     /^XX::foo()$/
+foo    f-src/entry.for /^       character*(*) function foo()$/
+foo    f-src/entry.strange     /^       character*(*) function foo()$/
+foo    f-src/entry.strange_suffix      /^       character*(*) function foo()$/
+foo    forth-src/test-forth.fth        /^: foo (foo) ;$/
+foo    php-src/ptest.php       /^foo()$/
+foo    ruby-src/test1.ru       /^    attr_reader :foo$/
+foo!   ruby-src/test1.ru       /^    def foo!$/
+foo1   ruby-src/test1.ru       /^    attr_reader(:foo1, :bar1, # comment$/
+foo2   ruby-src/test1.ru       /^    alias_method ( :foo2, #cmmt$/
+foo==bar       el-src/TAGTEST.EL       /^(defun foo==bar () (message "hi"))  ; 
Bug#5624$/
+foobar c-src/c.c       /^int foobar() {;}$/
+foobar c.c     /^extern void foobar (void) __attribute__ ((section /
+foobar2        c-src/h.h       20
+foobar2_       c-src/h.h       16
+foperator      c-src/etags.c   2411
+force_auto_save_soon   c-src/emacs/src/keyboard.c      /^force_auto_save_soon 
(void)$/
+force_explicit_name    c-src/etags.c   265
+force_quit_count       c-src/emacs/src/keyboard.c      10387
+foreign_export merc-src/accumulator.m  /^:- pragma foreign_export("C", 
unravel_univ(in, out/
+formatSize     objc-src/PackInsp.m     /^-(const char *)formatSize:(const char 
*)size inBuf/
+found  c-src/emacs/src/lisp.h  2344
+fracas html-src/software.html  /^Fracas$/
+frag   c-src/emacs/src/gmalloc.c       152
+frame_local    c-src/emacs/src/lisp.h  2341
+free   c-src/emacs/src/gmalloc.c       /^free (void *ptr)$/
+free   c-src/emacs/src/gmalloc.c       166
+free   c-src/emacs/src/gmalloc.c       1719
+free   c-src/emacs/src/gmalloc.c       67
+free   c-src/emacs/src/gmalloc.c       72
+free_fdesc     c-src/etags.c   /^free_fdesc (register fdesc *fdp)$/
+free_for       prol-src/natded.prolog  /^free_for(var(_),_,_).$/
+free_regexps   c-src/etags.c   /^free_regexps (void)$/
+free_tree      c-src/etags.c   /^free_tree (register node *np)$/
+free_var       prol-src/natded.prolog  /^free_var(var(V),var(V)).$/
+freehook       c-src/emacs/src/gmalloc.c       /^freehook (void *ptr)$/
+fresh_vars     prol-src/natded.prolog  /^fresh_vars(var(V),var(V)).$/
+fstartlist     c-src/etags.c   2413
+func   c-src/emacs/src/lisp.h  /^      void (*func) (Lisp_Object);$/
+func   c-src/emacs/src/lisp.h  /^      void (*func) (int);$/
+func   c-src/emacs/src/lisp.h  /^      void (*func) (void *);$/
+func   c-src/emacs/src/lisp.h  /^      void (*func) (void);$/
+func1  c.c     /^int func1$/
+func2  c.c     /^int func2 (a,b$/
+func_key_syms  c-src/emacs/src/keyboard.c      4626
+funcboo        c.c     /^bool funcboo ()$/
+funcpointer    c-src/emacs/src/lisp.h  2126
+funcptr        c-src/h.h       /^    fu   int (*funcptr) (void *ptr);$/
+function       c-src/emacs/src/lisp.h  1685
+function       c-src/emacs/src/lisp.h  2197
+function       c-src/emacs/src/lisp.h  2985
+function       c-src/emacs/src/lisp.h  694
+function       c-src/etags.c   194
+functionp      c-src/emacs/src/lisp.h  /^functionp (Lisp_Object object)$/
+fval   forth-src/test-forth.fth        /^fconst fvalue fval$/
+fvar   forth-src/test-forth.fth        /^fvariable fvar$/
+fvdef  c-src/etags.c   2418
+fvextern       c-src/etags.c   2420
+fvnameseen     c-src/etags.c   2412
+fvnone c-src/etags.c   2408
+fwd    c-src/emacs/src/lisp.h  2346
+fwd    c-src/emacs/src/lisp.h  690
+g      cp-src/c.C      /^  int g(){return 2;};$/
+galileo        html-src/software.html  /^GaliLEO$/
+gather pyt-src/server.py       /^    def gather(self):$/
+gc_aset        c-src/emacs/src/lisp.h  /^gc_aset (Lisp_Object array, ptrdiff_t 
idx, Lisp_Ob/
+gcmarkbit      c-src/emacs/src/lisp.h  1974
+gcmarkbit      c-src/emacs/src/lisp.h  1981
+gcmarkbit      c-src/emacs/src/lisp.h  2035
+gcmarkbit      c-src/emacs/src/lisp.h  2113
+gcmarkbit      c-src/emacs/src/lisp.h  2204
+gcmarkbit      c-src/emacs/src/lisp.h  656
+gcpro  c-src/emacs/src/lisp.h  3042
+gcpro  c-src/emacs/src/lisp.h  3132
+gen_help_event c-src/emacs/src/keyboard.c      /^gen_help_event (Lisp_Object 
help, Lisp_Object fram/
+genalgorithm   html-src/algrthms.html  /^Generating the 
Data<\/font><\/i><\/b>$/
+generate_warning       merc-src/accumulator.m  /^:- pred 
generate_warning(module_info::in, prog_var/
+generate_warnings      merc-src/accumulator.m  /^:- pred 
generate_warnings(module_info::in, prog_va/
+generic_object cp-src/clheir.cpp       /^generic_object::generic_object(void)$/
+generic_object cp-src/clheir.hpp       13
+getArchs       objc-src/PackInsp.m     /^-(void)getArchs$/
+getDomainNames php-src/lce_functions.php       /^      function 
getDomainNames()$/
+getFoo lua-src/test.lua        /^function Cube.data.getFoo ()$/
+getPOReader    php-src/lce_functions.php       /^      function 
&getPOReader($domain)$/
+getPath        objc-src/PackInsp.m     /^-(const char *)getPath:(char *)buf 
forType:(const /
+getPos lua-src/test.lua        /^function Circle.getPos ()$/
+getPos lua-src/test.lua        /^function Rectangle.getPos ()$/
+getTextDomains php-src/lce_functions.php       /^  function 
getTextDomains($lines)$/
+get_compressor_from_suffix     c-src/etags.c   /^get_compressor_from_suffix 
(char *file, char **ext/
+get_contiguous_space   c-src/emacs/src/gmalloc.c       /^get_contiguous_space 
(ptrdiff_t size, void *positi/
+get_current_dir_name   c-src/emacs/src/gmalloc.c       33
+get_input_pending      c-src/emacs/src/keyboard.c      /^get_input_pending 
(int flags)$/
+get_language_from_filename     c-src/etags.c   /^get_language_from_filename 
(char *file, int case_s/
+get_language_from_interpreter  c-src/etags.c   /^get_language_from_interpreter 
(char *interpreter)$/
+get_language_from_langname     c-src/etags.c   /^get_language_from_langname 
(const char *name)$/
+get_layer_by_name      lua-src/allegro.lua     /^local function 
get_layer_by_name (sprite, layer, n/
+get_tag        c-src/etags.c   /^get_tag (register char *bp, char **namepp)$/
+get_word       c-src/tab.c     /^static char           *get_word(char **str, 
char delim)$/
+getcjmp        c-src/emacs/src/keyboard.c      147
+getopt perl-src/yagrip.pl      /^sub getopt {$/
+getopt.o       make-src/Makefile       /^getopt.o: emacs\/lib-src\/getopt.c$/
+getopt1.o      make-src/Makefile       /^getopt1.o: emacs\/lib-src\/getopt1.c$/
+getptys        objc-src/Subprocess.m   /^getptys (int *master, int *slave)$/
+gettext        php-src/lce_functions.php       /^      function 
gettext($msgid)$/
+ggg    c-src/h.h       10
+ghi1   c-src/h.h       36
+ghi2   c-src/h.h       39
+giallo cp-src/c.C      40
+glider cp-src/conway.cpp       /^void glider(int x, int y)$/
+gnu    html-src/software.html  /^Free software that I wrote for the GNU 
project or /
+gobble_input   c-src/emacs/src/keyboard.c      /^gobble_input (void)$/
+goto-tag-location-function     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar goto-tag-location-function nil$/
+goto_xy        cp-src/screen.cpp       /^void goto_xy(unsigned char x, 
unsigned char y)$/
+handleList     pyt-src/server.py       /^    def handleList(self, event):$/
+handleNew      pyt-src/server.py       /^    def handleNew(self, event):$/
+handle_async_input     c-src/emacs/src/keyboard.c      /^handle_async_input 
(void)$/
+handle_input_available_signal  c-src/emacs/src/keyboard.c      
/^handle_input_available_signal (int sig)$/
+handle_interrupt       c-src/emacs/src/keyboard.c      /^handle_interrupt 
(bool in_signal_handler)$/
+handle_interrupt_signal        c-src/emacs/src/keyboard.c      
/^handle_interrupt_signal (int sig)$/
+handle_user_signal     c-src/emacs/src/keyboard.c      /^handle_user_signal 
(int sig)$/
+handler        c-src/emacs/src/lisp.h  3023
+handlertype    c-src/emacs/src/lisp.h  3021
+has_arg        c-src/getopt.h  82
+hash   c-src/emacs/src/lisp.h  1843
+hash   c-src/etags.c   /^hash (const char *str, int len)$/
+hash_table_test        c-src/emacs/src/lisp.h  1805
+hashfn c-src/emacs/src/lisp.h  /^  EMACS_UINT (*hashfn) (struct 
hash_table_test *t,/
+hdr    c-src/emacs/src/gmalloc.c       1860
+head_table     c-src/emacs/src/keyboard.c      11027
+header c-src/emacs/src/lisp.h  1371
+header c-src/emacs/src/lisp.h  1388
+header c-src/emacs/src/lisp.h  1581
+header c-src/emacs/src/lisp.h  1610
+header c-src/emacs/src/lisp.h  1672
+header c-src/emacs/src/lisp.h  1826
+header_size    c-src/emacs/src/lisp.h  1471
+heapsize       c-src/emacs/src/gmalloc.c       361
+hello  scm-src/test.scm        /^(define hello "Hello, Emacs!")$/
+hello  scm-src/test.scm        /^(set! hello "Hello, world!")$/
+hello-world    scm-src/test.scm        /^(define (hello-world)$/
+help   c-src/etags.c   193
+helpPanel      objcpp-src/SimpleCalc.M /^- helpPanel:sender$/
+help_char_p    c-src/emacs/src/keyboard.c      /^help_char_p (Lisp_Object c)$/
+help_form_saved_window_configs c-src/emacs/src/keyboard.c      2156
+helpwin        pyt-src/server.py       /^def helpwin(helpdict):$/
+hide_cursor    cp-src/screen.cpp       /^void hide_cursor(void)$/
+hlds   merc-src/accumulator.m  /^:- import_module hlds.$/
+htmltreelist   prol-src/natded.prolog  /^htmltreelist([]).$/
+hybrid_aligned_alloc   c-src/emacs/src/gmalloc.c       /^hybrid_aligned_alloc 
(size_t alignment, size_t siz/
+hybrid_calloc  c-src/emacs/src/gmalloc.c       /^hybrid_calloc (size_t nmemb, 
size_t size)$/
+hybrid_free    c-src/emacs/src/gmalloc.c       /^hybrid_free (void *ptr)$/
+hybrid_get_current_dir_name    c-src/emacs/src/gmalloc.c       
/^hybrid_get_current_dir_name (void)$/
+hybrid_malloc  c-src/emacs/src/gmalloc.c       /^hybrid_malloc (size_t size)$/
+hybrid_realloc c-src/emacs/src/gmalloc.c       /^hybrid_realloc (void *ptr, 
size_t size)$/
+hypothetical_mem       prol-src/natded.prolog  
/^hypothetical_mem(fi(N),Ass,_):-$/
+i      c-src/c.c       2
+i      c-src/emacs/src/lisp.h  4673
+i      c-src/emacs/src/lisp.h  4679
+i      c-src/emacs/src/lisp.h  567
+i      c.c     169
+i      cp-src/c.C      132
+ialpage        tex-src/texinfo.tex     /^     \\dimen@=\\pageheight 
\\advance\\dimen@ by-\\ht\\pa/
+ialpage        tex-src/texinfo.tex     /^  \\availdimen@=\\pageheight 
\\advance\\availdimen@ by/
+ialpage        tex-src/texinfo.tex     /^  \\dimen@=\\pageheight 
\\advance\\dimen@ by-\\ht\\parti/
+ialpage        tex-src/texinfo.tex     /^\\newbox\\partialpage$/
+ialpage=       tex-src/texinfo.tex     /^  
\\output={\\global\\setbox\\partialpage=$/
+identify_goal_type     merc-src/accumulator.m  /^:- pred 
identify_goal_type(pred_id::in, proc_id::i/
+identify_out_and_out_prime     merc-src/accumulator.m  /^:- pred 
identify_out_and_out_prime(module_info::in/
+identify_recursive_calls       merc-src/accumulator.m  /^:- pred 
identify_recursive_calls(pred_id::in, proc/
+idx    c-src/emacs/src/lisp.h  3150
+ignore_case    c-src/etags.c   266
+ignore_mouse_drag_p    c-src/emacs/src/keyboard.c      1256
+ill=\relax     tex-src/texinfo.tex     /^\\let\\refill=\\relax$/
+immediate_quit c-src/emacs/src/keyboard.c      174
+impatto        html-src/softwarelibero.html    /^Impatto pratico del software 
libero$/
+implementation merc-src/accumulator.m  /^:- implementation.$/
+in_word_set    c-src/etags.c   /^in_word_set (register const char *str, 
register un/
+inattribute    c-src/etags.c   2400
+inc    cp-src/Range.h  /^  double inc (void) const { return rng_inc;   }$/
+index  c-src/emacs/src/lisp.h  1856
+infabsdir      c-src/etags.c   206
+infabsname     c-src/etags.c   205
+infiles        make-src/Makefile       /^infiles = $(filter-out 
${NONSRCS},${SRCS}) srclist/
+infname        c-src/etags.c   204
+info   c-src/emacs/src/gmalloc.c       157
+infoPanel      objcpp-src/SimpleCalc.M /^- infoPanel:sender$/
+init   c-src/etags.c   /^init (void)$/
+init   objc-src/Subprocess.m   /^    andStdErr:(BOOL)wantsStdErr$/
+init   objc-src/Subprocess.m   /^- init:(const char *)subprocessString$/
+init   objcpp-src/SimpleCalc.M /^- init$/
+init_control   c.c     239
+init_kboard    c-src/emacs/src/keyboard.c      /^init_kboard (KBOARD *kb, 
Lisp_Object type)$/
+init_keyboard  c-src/emacs/src/keyboard.c      /^init_keyboard (void)$/
+init_registry  cp-src/clheir.cpp       /^void init_registry(void)$/
+init_tool_bar_items    c-src/emacs/src/keyboard.c      /^init_tool_bar_items 
(Lisp_Object reuse)$/
+inita  c.c     /^static void inita () {}$/
+initb  c.c     /^static void initb () {}$/
+initial_kboard c-src/emacs/src/keyboard.c      84
+initialize-new-tags-table      el-src/emacs/lisp/progmodes/etags.el    
/^(defun initialize-new-tags-table ()$/
+initialize_goal_store  merc-src/accumulator.m  /^:- func 
initialize_goal_store(list(hlds_goal), ins/
+initialize_random_junk y-src/cccp.y    /^initialize_random_junk ()$/
+input-pending-p        c-src/emacs/src/keyboard.c      /^DEFUN 
("input-pending-p", Finput_pending_p, Sinput/
+input_available_clear_time     c-src/emacs/src/keyboard.c      324
+input_pending  c-src/emacs/src/keyboard.c      239
+input_polling_used     c-src/emacs/src/keyboard.c      /^input_polling_used 
(void)$/
+input_was_pending      c-src/emacs/src/keyboard.c      287
+insert-abbrev-table-description        c-src/abbrev.c  /^DEFUN 
("insert-abbrev-table-description", Finsert_/
+insertion_type c-src/emacs/src/lisp.h  1989
+insertname     pas-src/common.pas      /^function insertname;(*($/
+instance_method        ruby-src/test.rb        /^        def instance_method$/
+instance_method_equals=        ruby-src/test.rb        /^        def 
instance_method_equals=$/
+instance_method_exclamation!   ruby-src/test.rb        /^        def 
instance_method_exclamation!$/
+instance_method_question?      ruby-src/test.rb        /^        def 
instance_method_question?$/
+instr  y-src/parse.y   81
+instruct       c-src/etags.c   2527
+int    merc-src/accumulator.m  /^:- import_module int.$/
+intNumber      go-src/test1.go 13
+integer        c-src/emacs/src/lisp.h  2127
+integer        y-src/cccp.y    112
+integer_overflow       y-src/cccp.y    /^integer_overflow ()$/
+integertonmstr pas-src/common.pas      /^function integertonmstr; (* 
(TheInteger : integer)/
+intensity1     f-src/entry.for /^     & 
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+intensity1     f-src/entry.strange     /^     & 
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+intensity1     f-src/entry.strange_suffix      /^     & 
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+interface      merc-src/accumulator.m  /^:- interface.$/
+interface_locate       c-src/c.c       /^interface_locate(void)$/
+intern c-src/emacs/src/lisp.h  /^intern (const char *str)$/
+intern_c_string        c-src/emacs/src/lisp.h  /^intern_c_string (const char 
*str)$/
+internal_last_event_frame      c-src/emacs/src/keyboard.c      228
+interned       c-src/emacs/src/lisp.h  672
+interpreters   c-src/etags.c   197
+interrupt_input        c-src/emacs/src/keyboard.c      328
+interrupt_input_blocked        c-src/emacs/src/keyboard.c      76
+interrupt_input_blocked        c-src/emacs/src/lisp.h  3048
+interrupts_deferred    c-src/emacs/src/keyboard.c      331
+intoken        c-src/etags.c   /^#define       intoken(c)      (_itk[CHAR 
(c)]) \/* c can be in/
+intspec        c-src/emacs/src/lisp.h  1688
+intvar c-src/emacs/src/lisp.h  2277
+invalidate_nodes       c-src/etags.c   /^invalidate_nodes (fdesc *badfdp, node 
**npp)$/
+io     merc-src/accumulator.m  /^:- import_module io.$/
+ipc3dCSC19     cp-src/c.C      6
+ipc3dChannelType       cp-src/c.C      1
+ipc3dIslandHierarchy   cp-src/c.C      1
+ipc3dLinkControl       cp-src/c.C      1
+irregular_location     cp-src/clheir.hpp       /^    irregular_location(double 
xi, double yi, doubl/
+irregular_location     cp-src/clheir.hpp       47
+isComment      php-src/lce_functions.php       /^      function 
isComment($class)$/
+isHoliday      cp-src/functions.cpp    /^bool isHoliday ( Date d ){$/
+isLeap cp-src/functions.cpp    /^bool isLeap ( int year ){$/
+is_associative_construction    merc-src/accumulator.m  /^:- pred 
is_associative_construction(module_info::i/
+is_curly_brace_form    c-src/h.h       54
+is_explicit    c-src/h.h       49
+is_func        c-src/etags.c   221
+is_hor_space   y-src/cccp.y    953
+is_idchar      y-src/cccp.y    948
+is_idstart     y-src/cccp.y    950
+is_muldiv_operation    cp-src/c.C      /^is_muldiv_operation(pc)$/
+is_ordset      prol-src/ordsets.prolog /^is_ordset(X) :- var(X), !, fail.$/
+is_recursive_case      merc-src/accumulator.m  /^:- pred 
is_recursive_case(list(hlds_goal)::in, pre/
+iso_lispy_function_keys        c-src/emacs/src/keyboard.c      5151
+isoperator     prol-src/natded.prolog  /^isoperator(Char):-$/
+isoptab        prol-src/natded.prolog  /^isoptab('%').$/
+iswhite        c-src/etags.c   /^#define       iswhite(c)      (_wht[CHAR 
(c)]) \/* c is white /
+item_properties        c-src/emacs/src/keyboard.c      7568
+jmp    c-src/emacs/src/lisp.h  3044
+just_read_file c-src/etags.c   /^just_read_file (FILE *inf)$/
+kbd_buffer     c-src/emacs/src/keyboard.c      291
+kbd_buffer_events_waiting      c-src/emacs/src/keyboard.c      
/^kbd_buffer_events_waiting (void)$/
+kbd_buffer_get_event   c-src/emacs/src/keyboard.c      /^kbd_buffer_get_event 
(KBOARD **kbp,$/
+kbd_buffer_nr_stored   c-src/emacs/src/keyboard.c      /^kbd_buffer_nr_stored 
(void)$/
+kbd_buffer_store_event c-src/emacs/src/keyboard.c      
/^kbd_buffer_store_event (register struct input_even/
+kbd_buffer_store_event_hold    c-src/emacs/src/keyboard.c      
/^kbd_buffer_store_event_hold (register struct input/
+kbd_buffer_store_help_event    c-src/emacs/src/keyboard.c      
/^kbd_buffer_store_help_event (Lisp_Object frame, Li/
+kbd_buffer_unget_event c-src/emacs/src/keyboard.c      
/^kbd_buffer_unget_event (register struct input_even/
+kbd_fetch_ptr  c-src/emacs/src/keyboard.c      297
+kbd_store_ptr  c-src/emacs/src/keyboard.c      302
+kboard c-src/emacs/src/keyboard.c      860
+kboard_stack   c-src/emacs/src/keyboard.c      858
+kboard_stack   c-src/emacs/src/keyboard.c      864
+key_and_value  c-src/emacs/src/lisp.h  1868
+keyremap       c-src/emacs/src/keyboard.c      8742
+keyremap       c-src/emacs/src/keyboard.c      8754
+keyremap_step  c-src/emacs/src/keyboard.c      /^keyremap_step (Lisp_Object 
*keybuf, int bufsize, v/
+keys_of_keyboard       c-src/emacs/src/keyboard.c      /^keys_of_keyboard 
(void)$/
+keyval prol-src/natded.prolog  /^keyval(key(Key,Val)) --> [Key,'='], 
valseq(Val).$/
+keyvalcgi      prol-src/natded.prolog  /^keyvalcgi(Key,Val):-$/
+keyvalscgi     prol-src/natded.prolog  /^keyvalscgi(KeyVals),$/
+keyvalseq      prol-src/natded.prolog  /^keyvalseq([KeyVal|KeyVals]) --> $/
+keyword_parsing        y-src/cccp.y    73
+keywords       y-src/cccp.y    114
+keywords       y-src/cccp.y    306
+kind   c-src/emacs/src/keyboard.c      11024
+kind   c-src/h.h       46
+kset_echo_string       c-src/emacs/src/keyboard.c      /^kset_echo_string 
(struct kboard *kb, Lisp_Object v/
+kset_kbd_queue c-src/emacs/src/keyboard.c      /^kset_kbd_queue (struct kboard 
*kb, Lisp_Object val/
+kset_keyboard_translate_table  c-src/emacs/src/keyboard.c      
/^kset_keyboard_translate_table (struct kboard *kb, /
+kset_last_prefix_arg   c-src/emacs/src/keyboard.c      /^kset_last_prefix_arg 
(struct kboard *kb, Lisp_Obje/
+kset_last_repeatable_command   c-src/emacs/src/keyboard.c      
/^kset_last_repeatable_command (struct kboard *kb, L/
+kset_local_function_key_map    c-src/emacs/src/keyboard.c      
/^kset_local_function_key_map (struct kboard *kb, Li/
+kset_overriding_terminal_local_map     c-src/emacs/src/keyboard.c      
/^kset_overriding_terminal_local_map (struct kboard /
+kset_real_last_command c-src/emacs/src/keyboard.c      
/^kset_real_last_command (struct kboard *kb, Lisp_Ob/
+kset_system_key_syms   c-src/emacs/src/keyboard.c      /^kset_system_key_syms 
(struct kboard *kb, Lisp_Obje/
+lang   c-src/etags.c   208
+lang   c-src/etags.c   251
+lang   c-src/etags.c   259
+lang_names     c-src/etags.c   718
+language       c-src/etags.c   199
+last-tag       el-src/emacs/lisp/progmodes/etags.el    /^(defvar last-tag nil$/
+last_abbrev_point      c-src/abbrev.c  79
+last_auto_save c-src/emacs/src/keyboard.c      214
+last_heapinfo  c-src/emacs/src/gmalloc.c       402
+last_mouse_button      c-src/emacs/src/keyboard.c      5215
+last_mouse_x   c-src/emacs/src/keyboard.c      5216
+last_mouse_y   c-src/emacs/src/keyboard.c      5217
+last_non_minibuf_size  c-src/emacs/src/keyboard.c      207
+last_point_position    c-src/emacs/src/keyboard.c      217
+last_state_size        c-src/emacs/src/gmalloc.c       401
+last_undo_boundary     c-src/emacs/src/keyboard.c      1287
+lasta  c.c     272
+lastargmargin  tex-src/texinfo.tex     /^\\newskip\\deflastargmargin 
\\deflastargmargin=18pt$/
+lastargmargin  tex-src/texinfo.tex     /^\\setbox0=\\hbox{\\hskip 
\\deflastargmargin{\\rm #2}\\hs/
+lastb  c.c     278
+lb     c-src/etags.c   2923
+lbs    c-src/etags.c   2924
+lce    php-src/lce_functions.php       /^      function lce()$/
+lce_bindtextdomain     php-src/lce_functions.php       /^      function 
lce_bindtextdomain($d_name, $d_path/
+lce_bindtextdomain     php-src/lce_functions.php       /^      function 
lce_bindtextdomain($domain, $path)$/
+lce_dgettext   php-src/lce_functions.php       /^      function 
lce_dgettext($domain, $msgid)$/
+lce_geteditcode        php-src/lce_functions.php       /^  function 
lce_geteditcode($type, $name, $text, $r/
+lce_gettext    php-src/lce_functions.php       /^      function 
lce_gettext($msgid)$/
+lce_textdomain php-src/lce_functions.php       /^      function 
lce_textdomain($domain)$/
+leasqr html-src/software.html  /^Leasqr$/
+left   c-src/etags.c   216
+left_shift     y-src/cccp.y    /^left_shift (a, b)$/
+len    c-src/etags.c   237
+length c-src/etags.c   2495
+length y-src/cccp.y    113
+length y-src/cccp.y    44
+let    c-src/emacs/src/lisp.h  2981
+letter tex-src/texinfo.tex     /^  {#1}{Appendix 
\\appendixletter}{\\noexpand\\folio}}/
+letter tex-src/texinfo.tex     /^  {\\appendixletter}$/
+letter tex-src/texinfo.tex     /^  
{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\th/
+letter tex-src/texinfo.tex     /^\\chapmacro {#1}{Appendix \\appendixletter}%$/
+letter tex-src/texinfo.tex     /^\\gdef\\thissection{#1}\\secheading 
{#1}{\\appendixlet/
+letter tex-src/texinfo.tex     /^\\subsecheading 
{#1}{\\appendixletter}{\\the\\secno}{\\/
+letter tex-src/texinfo.tex     
/^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/
+letter tex-src/texinfo.tex     
/^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/
+letter:        tex-src/texinfo.tex     /^\\xdef\\thischapter{Appendix 
\\appendixletter: \\noexp/
+level  c-src/emacs/src/lisp.h  3153
+lex    prol-src/natded.prolog  /^lex(W,SynOut,Sem):-$/
+lexptr y-src/cccp.y    332
+libs   merc-src/accumulator.m  /^:- import_module libs.$/
+licenze        html-src/softwarelibero.html    /^Licenze d'uso di un 
programma$/
+limit  cp-src/Range.h  /^  double limit (void) const { return rng_limit; }$/
+line   c-src/etags.c   2493
+line   perl-src/htlmify-cystic 37
+line   y-src/parse.y   87
+lineCount      php-src/lce_functions.php       /^      function 
lineCount($entry)$/
+linebuffer     c-src/etags.c   239
+linebuffer_init        c-src/etags.c   /^linebuffer_init (linebuffer *lbp)$/
+linebuffer_setlen      c-src/etags.c   /^linebuffer_setlen (linebuffer *lbp, 
int toksize)$/
+lineno c-src/emacs/src/lisp.h  3147
+lineno c-src/etags.c   2506
+linepos        c-src/etags.c   2507
+linepos        c-src/etags.c   2922
+links  html-src/software.html  /^Links to interesting software$/
+lisp_eval_depth        c-src/emacs/src/lisp.h  3045
+lisp_h_CHECK_LIST_CONS c-src/emacs/src/lisp.h  /^#define 
lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (C/
+lisp_h_CHECK_NUMBER    c-src/emacs/src/lisp.h  /^#define 
lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGER/
+lisp_h_CHECK_SYMBOL    c-src/emacs/src/lisp.h  /^#define 
lisp_h_CHECK_SYMBOL(x) CHECK_TYPE (SYMBOLP/
+lisp_h_CHECK_TYPE      c-src/emacs/src/lisp.h  /^#define lisp_h_CHECK_TYPE(ok, 
predicate, x) \\$/
+lisp_h_CONSP   c-src/emacs/src/lisp.h  /^#define lisp_h_CONSP(x) (XTYPE (x) == 
Lisp_Cons)$/
+lisp_h_EQ      c-src/emacs/src/lisp.h  /^#define lisp_h_EQ(x, y) (XLI (x) == 
XLI (y))$/
+lisp_h_FLOATP  c-src/emacs/src/lisp.h  /^#define lisp_h_FLOATP(x) (XTYPE (x) 
== Lisp_Float)/
+lisp_h_INTEGERP        c-src/emacs/src/lisp.h  /^#define lisp_h_INTEGERP(x) 
((XTYPE (x) & (Lisp_Int/
+lisp_h_MARKERP c-src/emacs/src/lisp.h  /^#define lisp_h_MARKERP(x) (MISCP (x) 
&& XMISCTYPE /
+lisp_h_MISCP   c-src/emacs/src/lisp.h  /^#define lisp_h_MISCP(x) (XTYPE (x) == 
Lisp_Misc)$/
+lisp_h_NILP    c-src/emacs/src/lisp.h  /^#define lisp_h_NILP(x) EQ (x, Qnil)$/
+lisp_h_SET_SYMBOL_VAL  c-src/emacs/src/lisp.h  /^#define 
lisp_h_SET_SYMBOL_VAL(sym, v) \\$/
+lisp_h_SYMBOLP c-src/emacs/src/lisp.h  /^#define lisp_h_SYMBOLP(x) (XTYPE (x) 
== Lisp_Symbo/
+lisp_h_SYMBOL_CONSTANT_P       c-src/emacs/src/lisp.h  /^#define 
lisp_h_SYMBOL_CONSTANT_P(sym) (XSYMBOL (sy/
+lisp_h_SYMBOL_VAL      c-src/emacs/src/lisp.h  /^#define 
lisp_h_SYMBOL_VAL(sym) \\$/
+lisp_h_VECTORLIKEP     c-src/emacs/src/lisp.h  /^#define lisp_h_VECTORLIKEP(x) 
(XTYPE (x) == Lisp_V/
+lisp_h_XCAR    c-src/emacs/src/lisp.h  /^#define lisp_h_XCAR(c) XCONS 
(c)->car$/
+lisp_h_XCDR    c-src/emacs/src/lisp.h  /^#define lisp_h_XCDR(c) XCONS 
(c)->u.cdr$/
+lisp_h_XCONS   c-src/emacs/src/lisp.h  /^#define lisp_h_XCONS(a) \\$/
+lisp_h_XFASTINT        c-src/emacs/src/lisp.h  /^# define lisp_h_XFASTINT(a) 
XINT (a)$/
+lisp_h_XHASH   c-src/emacs/src/lisp.h  /^#define lisp_h_XHASH(a) XUINT (a)$/
+lisp_h_XIL     c-src/emacs/src/lisp.h  /^# define lisp_h_XIL(i) ((Lisp_Object) 
{ i })$/
+lisp_h_XIL     c-src/emacs/src/lisp.h  /^# define lisp_h_XIL(i) (i)$/
+lisp_h_XINT    c-src/emacs/src/lisp.h  /^# define lisp_h_XINT(a) (XLI (a) >> 
INTTYPEBITS)$/
+lisp_h_XLI     c-src/emacs/src/lisp.h  /^# define lisp_h_XLI(o) ((o).i)$/
+lisp_h_XLI     c-src/emacs/src/lisp.h  /^# define lisp_h_XLI(o) (o)$/
+lisp_h_XPNTR   c-src/emacs/src/lisp.h  /^#define lisp_h_XPNTR(a) \\$/
+lisp_h_XSYMBOL c-src/emacs/src/lisp.h  /^# define lisp_h_XSYMBOL(a) \\$/
+lisp_h_XTYPE   c-src/emacs/src/lisp.h  /^# define lisp_h_XTYPE(a) ((enum 
Lisp_Type) (XLI (a/
+lisp_h_XUNTAG  c-src/emacs/src/lisp.h  /^# define lisp_h_XUNTAG(a, type) 
((void *) (intptr_/
+lisp_h_check_cons_list c-src/emacs/src/lisp.h  /^# define 
lisp_h_check_cons_list() ((void) 0)$/
+lisp_h_make_number     c-src/emacs/src/lisp.h  /^# define 
lisp_h_make_number(n) \\$/
+lispy_accent_codes     c-src/emacs/src/keyboard.c      4634
+lispy_accent_keys      c-src/emacs/src/keyboard.c      4741
+lispy_drag_n_drop_names        c-src/emacs/src/keyboard.c      5181
+lispy_function_keys    c-src/emacs/src/keyboard.c      4768
+lispy_function_keys    c-src/emacs/src/keyboard.c      5065
+lispy_kana_keys        c-src/emacs/src/keyboard.c      5026
+lispy_modifier_list    c-src/emacs/src/keyboard.c      /^lispy_modifier_list 
(int modifiers)$/
+lispy_multimedia_keys  c-src/emacs/src/keyboard.c      4962
+lispy_wheel_names      c-src/emacs/src/keyboard.c      5174
+list   c-src/emacs/src/gmalloc.c       186
+list   merc-src/accumulator.m  /^:- import_module list.$/
+list-tags      el-src/emacs/lisp/progmodes/etags.el    /^(defun list-tags 
(file &optional _next-match)$/
+list-tags-function     el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
list-tags-function nil$/
+list2i c-src/emacs/src/lisp.h  /^list2i (EMACS_INT x, EMACS_INT y)$/
+list3i c-src/emacs/src/lisp.h  /^list3i (EMACS_INT x, EMACS_INT y, EMACS_INT 
w)$/
+list4i c-src/emacs/src/lisp.h  /^list4i (EMACS_INT x, EMACS_INT y, EMACS_INT 
w, EMA/
+list_to_ord_set        prol-src/ordsets.prolog /^list_to_ord_set(List, Set) 
:-$/
+lno    c-src/etags.c   223
+load   objc-src/PackInsp.m     /^-load$/
+loadContentsOf objc-src/PackInsp.m     /^-loadContentsOf:(const char *)type 
inTable:(HashTa/
+loadImage      objc-src/PackInsp.m     /^-loadImage$/
+loadKeyValuesFrom      objc-src/PackInsp.m     /^-loadKeyValuesFrom:(const 
char *)type inTable:(Has/
+loadPORManager php-src/lce_functions.php       /^  function &loadPORManager()$/
+local_if_set   c-src/emacs/src/lisp.h  2338
+location       cp-src/clheir.hpp       /^    location() { }$/
+location       cp-src/clheir.hpp       33
+lookup y-src/cccp.y    /^lookup (name, len, hash)$/
+lookup_call    merc-src/accumulator.m  /^:- pred 
lookup_call(accu_goal_store::in, accu_goal/
+lowcase        c-src/etags.c   /^#define lowcase(c)    tolower (CHAR (c))$/
+lucid_event_type_list_p        c-src/emacs/src/keyboard.c      
/^lucid_event_type_list_p (Lisp_Object object)$/
+mabort c-src/emacs/src/gmalloc.c       /^mabort (enum mcheck_status status)$/
+mach_host_self c-src/machsyscalls.h    /^SYSCALL (mach_host_self, -29,$/
+mach_msg_trap  c-src/machsyscalls.h    /^SYSCALL (mach_msg_trap, -25,$/
+mach_reply_port        c-src/machsyscalls.h    /^SYSCALL (mach_reply_port, 
-26,$/
+mach_task_self c-src/machsyscalls.h    /^SYSCALL (mach_task_self, -28,$/
+mach_thread_self       c-src/machsyscalls.h    /^SYSCALL (mach_thread_self, 
-27,$/
+magic  c-src/emacs/src/gmalloc.c       1863
+maintaining.info       make-src/Makefile       /^maintaining.info: 
maintaining.texi$/
+make-abbrev-table      c-src/abbrev.c  /^DEFUN ("make-abbrev-table", 
Fmake_abbrev_table, Sm/
+make_C_tag     c-src/etags.c   /^make_C_tag (bool isfun)$/
+make_coor      prol-src/natded.prolog  
/^make_coor(s(_),Alpha,Sem1,Sem2,Alpha@Sem1@Sem2).$/
+make_ctrl_char c-src/emacs/src/keyboard.c      /^make_ctrl_char (int c)$/
+make_fixnum_or_float   c-src/emacs/src/lisp.h  /^#define 
make_fixnum_or_float(val) \\$/
+make_formatted_string  c-src/emacs/src/lisp.h  /^extern Lisp_Object 
make_formatted_string (char *, /
+make_lisp_ptr  c-src/emacs/src/lisp.h  /^make_lisp_ptr (void *ptr, enum 
Lisp_Type type)$/
+make_lisp_symbol       c-src/emacs/src/lisp.h  /^make_lisp_symbol (struct 
Lisp_Symbol *sym)$/
+make_lispy_event       c-src/emacs/src/keyboard.c      /^make_lispy_event 
(struct input_event *event)$/
+make_lispy_focus_in    c-src/emacs/src/keyboard.c      /^make_lispy_focus_in 
(Lisp_Object frame)$/
+make_lispy_focus_out   c-src/emacs/src/keyboard.c      /^make_lispy_focus_out 
(Lisp_Object frame)$/
+make_lispy_movement    c-src/emacs/src/keyboard.c      /^make_lispy_movement 
(struct frame *frame, Lisp_Obj/
+make_lispy_position    c-src/emacs/src/keyboard.c      /^make_lispy_position 
(struct frame *f, Lisp_Object /
+make_lispy_switch_frame        c-src/emacs/src/keyboard.c      
/^make_lispy_switch_frame (Lisp_Object frame)$/
+make_number    c-src/emacs/src/lisp.h  /^#  define make_number(n) 
lisp_h_make_number (n)$/
+make_pointer_integer   c-src/emacs/src/lisp.h  /^make_pointer_integer (void 
*p)$/
+make_scroll_bar_position       c-src/emacs/src/keyboard.c      
/^make_scroll_bar_position (struct input_event *ev, /
+make_tag       c-src/etags.c   /^make_tag (const char *name,   \/* tag name, 
or NULL /
+make_uninit_sub_char_table     c-src/emacs/src/lisp.h  
/^make_uninit_sub_char_table (int depth, int min_cha/
+make_uninit_vector     c-src/emacs/src/lisp.h  /^make_uninit_vector (ptrdiff_t 
size)$/
+malloc c-src/emacs/src/gmalloc.c       /^extern void *malloc (size_t size) 
ATTRIBUTE_MALLOC/
+malloc c-src/emacs/src/gmalloc.c       /^malloc (size_t size)$/
+malloc c-src/emacs/src/gmalloc.c       1715
+malloc c-src/emacs/src/gmalloc.c       64
+malloc c-src/emacs/src/gmalloc.c       68
+malloc_atfork_handler_child    c-src/emacs/src/gmalloc.c       
/^malloc_atfork_handler_child (void)$/
+malloc_atfork_handler_parent   c-src/emacs/src/gmalloc.c       
/^malloc_atfork_handler_parent (void)$/
+malloc_atfork_handler_prepare  c-src/emacs/src/gmalloc.c       
/^malloc_atfork_handler_prepare (void)$/
+malloc_enable_thread   c-src/emacs/src/gmalloc.c       /^malloc_enable_thread 
(void)$/
+malloc_info    c-src/emacs/src/gmalloc.c       167
+malloc_initialize_1    c-src/emacs/src/gmalloc.c       /^malloc_initialize_1 
(void)$/
+mallochook     c-src/emacs/src/gmalloc.c       /^mallochook (size_t size)$/
+man manpage    make-src/Makefile       /^man manpage: etags.1.man$/
+mao    c-src/h.h       101
+map    c-src/emacs/src/keyboard.c      8748
+map    merc-src/accumulator.m  /^:- import_module map.$/
+map_word       prol-src/natded.prolog  /^map_word([[_]|Ws],Exp):-$/
+mapping        html-src/algrthms.html  /^Mapping the Channel Symbols$/
+mapsyn prol-src/natded.prolog  /^mapsyn(A\/B,AM\/BM):-$/
+mark_kboards   c-src/emacs/src/keyboard.c      /^mark_kboards (void)$/
+max    c-src/emacs/src/lisp.h  /^#define max(a, b) ((a) > (b) ? (a) : (b))$/
+max    c-src/emacs/src/lisp.h  58
+max    c.c     /^__attribute__ ((always_inline)) max (int a, int b)/
+max    c.c     /^max (int a, int b)$/
+max    cp-src/conway.cpp       /^#define max(x,y)  ((x > y) ? x : y)$/
+max_args       c-src/emacs/src/lisp.h  1686
+max_num_directions     cp-src/clheir.hpp       31
+max_num_generic_objects        cp-src/clheir.cpp       9
+maxargs        c-src/emacs/src/lisp.h  2831
+maybe  merc-src/accumulator.m  /^:- import_module maybe.$/
+maybe_gc       c-src/emacs/src/lisp.h  /^maybe_gc (void)$/
+mcCSC  cp-src/c.C      6
+mcheck c-src/emacs/src/gmalloc.c       /^mcheck (void (*func) (enum 
mcheck_status))$/
+mcheck_status  c-src/emacs/src/gmalloc.c       283
+mcheck_used    c-src/emacs/src/gmalloc.c       2012
+mdbcomp        merc-src/accumulator.m  /^:- import_module mdbcomp.$/
+me22b  lua-src/test.lua        /^   local function test.me22b (one)$/
+me_22a lua-src/test.lua        /^   function test.me_22a(one, two)$/
+memalign       c-src/emacs/src/gmalloc.c       /^memalign (size_t alignment, 
size_t size)$/
+member prol-src/natded.prolog  /^member(X,[X|_]).$/
+member_lessthan_goalid merc-src/accumulator.m  /^:- pred 
member_lessthan_goalid(accu_goal_store::in/
+memclear       c-src/emacs/src/lisp.h  /^memclear (void *p, ptrdiff_t nbytes)$/
+menu_bar_item  c-src/emacs/src/keyboard.c      /^menu_bar_item (Lisp_Object 
key, Lisp_Object item, /
+menu_bar_items c-src/emacs/src/keyboard.c      /^menu_bar_items (Lisp_Object 
old)$/
+menu_bar_items_index   c-src/emacs/src/keyboard.c      7369
+menu_bar_items_vector  c-src/emacs/src/keyboard.c      7368
+menu_bar_one_keymap_changed_items      c-src/emacs/src/keyboard.c      7363
+menu_item_eval_property        c-src/emacs/src/keyboard.c      
/^menu_item_eval_property (Lisp_Object sexpr)$/
+menu_item_eval_property_1      c-src/emacs/src/keyboard.c      
/^menu_item_eval_property_1 (Lisp_Object arg)$/
+menu_separator_name_p  c-src/emacs/src/keyboard.c      /^menu_separator_name_p 
(const char *label)$/
+metasource     c-src/etags.c   198
+min    c-src/emacs/src/gmalloc.c       /^#define min(a, b) ((a) < (b) ? (a) : 
(b))$/
+min    c-src/emacs/src/lisp.h  /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
+min    c-src/emacs/src/lisp.h  57
+min    cp-src/conway.cpp       /^#define min(x,y)  ((x > y) ? y : x)$/
+min_args       c-src/emacs/src/lisp.h  1686
+min_char       c-src/emacs/src/lisp.h  1621
+minus  cp-src/functions.cpp    /^void Date::minus ( int days , int month , int 
year/
+miti   html-src/softwarelibero.html    /^Sfatiamo alcuni miti$/
+modifier_names c-src/emacs/src/keyboard.c      6319
+modifier_symbols       c-src/emacs/src/keyboard.c      6327
+modify_event_symbol    c-src/emacs/src/keyboard.c      /^modify_event_symbol 
(ptrdiff_t symbol_num, int mod/
+module_class_method    ruby-src/test.rb        /^    def 
ModuleExample.module_class_method$/
+module_instance_method ruby-src/test.rb        /^    def 
module_instance_method$/
+more=  ruby-src/test1.ru       /^                :more$/
+more_aligned_int       c.c     165
+morecore_nolock        c-src/emacs/src/gmalloc.c       /^morecore_nolock 
(size_t size)$/
+morecore_recursing     c-src/emacs/src/gmalloc.c       604
+mouse_syms     c-src/emacs/src/keyboard.c      4627
+move   cp-src/clheir.cpp       /^void agent::move(int direction)$/
+mprobe c-src/emacs/src/gmalloc.c       /^mprobe (void *ptr)$/
+msgid  php-src/lce_functions.php       /^      function msgid($line, $class)$/
+msgstr php-src/lce_functions.php       /^      function msgstr($line, $class)$/
+mstats c-src/emacs/src/gmalloc.c       308
+mt     prol-src/natded.prolog  /^mt:-$/
+mtg    html-src/software.html  /^MTG$/
+multi_line     c-src/etags.c   267
+multibyte      c-src/emacs/src/regex.h 403
+my_printf      c.c     /^my_printf (void *my_object, const char *my_format,/
+my_struct      c-src/h.h       91
+my_struct      c.c     226
+my_typedef     c-src/h.h       93
+my_typedef     c.c     228
+mypi   forth-src/test-forth.fth        /^synonym mypi fconst$/
+n      c-src/exit.c    28
+n      c-src/exit.strange_suffix       28
+name   c-src/emacs/src/keyboard.c      7241
+name   c-src/emacs/src/lisp.h  1808
+name   c-src/emacs/src/lisp.h  3144
+name   c-src/emacs/src/lisp.h  682
+name   c-src/etags.c   192
+name   c-src/etags.c   218
+name   c-src/etags.c   2271
+name   c-src/etags.c   261
+name   c-src/getopt.h  76
+name   c-src/getopt.h  78
+name   perl-src/htlmify-cystic 357
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Function}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Macro}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Special Form}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{User Option}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Variable}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname 
{#2}{#1}\\deftpargs{#3}\\endgrou/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname 
{#2}{#1}\\defunargs{#3}\\endgrou/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname 
{#2}{#1}\\defvarargs{#3}\\endgro/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#2}{Instance Variable 
of #1}%/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#2}{Method on #1}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#2}{\\defcvtype{} of 
#1}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#2}{\\defoptype{} on 
#1}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#1} 
#2}{Function}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#1} 
#2}{Variable}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#2} #3}{#1}$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#2} #3}{#1}%$/
+name   y-src/cccp.y    113
+name   y-src/cccp.y    43
+named  c-src/etags.c   2505
+namestringequal        pas-src/common.pas      /^function 
namestringequal;(*(var Name1,Name2 : Name/
+nargs  c-src/emacs/src/lisp.h  2987
+need_adjustment        c-src/emacs/src/lisp.h  1986
+neighbors      cp-src/clheir.hpp       59
+nelem  cp-src/Range.h  /^  int nelem (void) const { return rng_nelem; }$/
+nestlev        c-src/etags.c   2525
+new    objc-src/PackInsp.m     /^+new$/
+new    perl-src/htlmify-cystic 163
+new_tag        perl-src/htlmify-cystic 18
+newlb  c-src/etags.c   2930
+newlinepos     c-src/etags.c   2932
+newtextstring  pas-src/common.pas      /^function newtextstring; (*: 
TextString;*)$/
+next   c-src/emacs/src/gmalloc.c       164
+next   c-src/emacs/src/gmalloc.c       188
+next   c-src/emacs/src/gmalloc.c       198
+next   c-src/emacs/src/keyboard.c      7246
+next   c-src/emacs/src/keyboard.c      861
+next   c-src/emacs/src/lisp.h  1848
+next   c-src/emacs/src/lisp.h  2009
+next   c-src/emacs/src/lisp.h  2037
+next   c-src/emacs/src/lisp.h  2192
+next   c-src/emacs/src/lisp.h  3028
+next   c-src/emacs/src/lisp.h  3134
+next   c-src/emacs/src/lisp.h  700
+next   c-src/etags.c   203
+next   c.c     174
+next   y-src/cccp.y    42
+next-file      el-src/emacs/lisp/progmodes/etags.el    /^(defun next-file 
(&optional initialize novisit)$/
+next-file-list el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
next-file-list nil$/
+next_alive     cp-src/conway.hpp       7
+next_almost_prime      c-src/emacs/src/lisp.h  /^extern EMACS_INT 
next_almost_prime (EMACS_INT) ATT/
+next_free      c-src/emacs/src/lisp.h  1851
+next_weak      c-src/emacs/src/lisp.h  1875
+nextfree       c-src/emacs/src/lisp.h  3029
+nfree  c-src/emacs/src/gmalloc.c       150
+nl     c-src/etags.c   2521
+no     tex-src/texinfo.tex     /^\\global\\advance \\appendixno by 1 
\\message{Appendix/
+no     tex-src/texinfo.tex     /^\\ifnum\\secno=0 
Appendix\\xreftie'char\\the\\appendixn/
+no     tex-src/texinfo.tex     /^\\newcount \\appendixno  \\appendixno = `\\@$/
+no.\the\secno  tex-src/texinfo.tex     /^\\else \\ifnum \\subsecno=0 
Section\\xreftie'char\\the\\/
+no.\the\secno.\the\subsecno    tex-src/texinfo.tex     
/^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the\secno.\the\subsecno.\the\subsubsecno   tex-src/texinfo.tex     
/^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no_argument    c-src/getopt.h  89
+no_lang_help   c-src/etags.c   707
+no_sub c-src/emacs/src/regex.h 387
+nocase_tail    c-src/etags.c   /^nocase_tail (const char *cp)$/
+node   c-src/etags.c   225
+node_st        c-src/etags.c   214
+noderef        tex-src/texinfo.tex     /^\\appendixnoderef %$/
+nofonts        tex-src/texinfo.tex     /^{\\indexnofonts$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+none_help      c-src/etags.c   703
+normalize      prol-src/natded.prolog  /^normalize(M,MNorm):-$/
+normalize_fresh        prol-src/natded.prolog  /^normalize_fresh(M,N):-$/
+normalize_tree prol-src/natded.prolog  
/^normalize_tree(tree(Rule,Syn:Sem,Trees),$/
+normalize_trees        prol-src/natded.prolog  /^normalize_trees([],[]).$/
+nosave pyt-src/server.py       /^    def nosave(self):$/
+not_bol        c-src/emacs/src/regex.h 391
+not_eol        c-src/emacs/src/regex.h 394
+not_single_kboard_state        c-src/emacs/src/keyboard.c      
/^not_single_kboard_state (KBOARD *kboard)$/
+notag2 c-src/dostorture.c      26
+notag2 c-src/torture.c 26
+notag4 c-src/dostorture.c      45
+notag4 c-src/torture.c 45
+notinname      c-src/etags.c   /^#define notinname(c)  (_nin[CHAR (c)]) \/* c 
is not /
+npending       c-src/emacs/src/keyboard.c      7244
+ntool_bar_items        c-src/emacs/src/keyboard.c      7974
+numOfChannels  cp-src/c.C      1
+num_columns    cp-src/conway.cpp       16
+num_input_events       c-src/emacs/src/keyboard.c      210
+num_regs       c-src/emacs/src/regex.h 430
+num_rows       cp-src/conway.cpp       15
+numberKeys     objcpp-src/SimpleCalc.M /^- numberKeys:sender$/
+number_len     c-src/etags.c   /^static int number_len (long) 
ATTRIBUTE_CONST;$/
+numbervars     prol-src/natded.prolog  /^numbervars(X):-$/
+nvars  c-src/emacs/src/lisp.h  3140
+objdef c-src/etags.c   2484
+object c-src/emacs/src/lisp.h  2128
+object_registry        cp-src/clheir.cpp       10
+objtag c-src/etags.c   2453
+objvar c-src/emacs/src/lisp.h  2297
+obstack_chunk_alloc    y-src/parse.y   47
+obstack_chunk_free     y-src/parse.y   48
+ocatseen       c-src/etags.c   2477
+octave_MDiagArray2_h   cp-src/MDiagArray2.h    29
+octave_Range_h cp-src/Range.h  24
+oediff make-src/Makefile       /^oediff: OTAGS ETAGS ${infiles}$/
+offset c-src/emacs/src/lisp.h  2305
+offset c-src/emacs/src/lisp.h  2365
+offset c-src/etags.c   2494
+oignore        c-src/etags.c   2483
+oimplementation        c-src/etags.c   2474
+oinbody        c-src/etags.c   2478
+ok     objc-src/PackInsp.m     /^-ok:sender$/
+ok_to_echo_at_next_pause       c-src/emacs/src/keyboard.c      159
+old_value      c-src/emacs/src/lisp.h  2980
+omethodcolon   c-src/etags.c   2481
+omethodparm    c-src/etags.c   2482
+omethodsign    c-src/etags.c   2479
+omethodtag     c-src/etags.c   2480
+onone  c-src/etags.c   2472
+oparenseen     c-src/etags.c   2476
+open   objc-src/PackInsp.m     /^-open:sender$/
+open-dribble-file      c-src/emacs/src/keyboard.c      /^DEFUN 
("open-dribble-file", Fopen_dribble_file, So/
+openInWorkspace        objc-src/PackInsp.m     /^static void 
openInWorkspace(const char *filename)$/
+operationKeys  objcpp-src/SimpleCalc.M /^- operationKeys:sender$/
+operator       y-src/cccp.y    438
+operator ++    cp-src/functions.cpp    /^Date & Date::operator ++ ( void ){$/
+operator +=    cp-src/functions.cpp    /^Date & Date::operator += ( int days 
){$/
+operator -     cp-src/c.C      /^void operator -(int, int) {}$/
+operator -     cp-src/functions.cpp    /^int Date::operator - ( Date d ){$/
+operator --    cp-src/functions.cpp    /^Date & Date::operator -- ( void ){$/
+operator -=    cp-src/functions.cpp    /^Date & Date::operator -= ( int days 
){$/
+operator <     cp-src/functions.cpp    /^int Date::operator < ( Date d ) {$/
+operator <<    cp-src/functions.cpp    /^ostream& operator <<  ( ostream &c, 
Date d ) {$/
+operator =     cp-src/MDiagArray2.h    /^  MDiagArray2<T>& operator = (const 
MDiagArray2<T>/
+operator =     cp-src/functions.cpp    /^Date & Date::operator = ( Date d ){$/
+operator ==    cp-src/functions.cpp    /^int Date::operator == ( Date d ) {$/
+operator >     cp-src/functions.cpp    /^int Date::operator > ( Date d ) {$/
+operator >>    cp-src/functions.cpp    /^istream& operator >> ( istream &i, 
Date & dd ){$/
+operator MArray2<T>    cp-src/MDiagArray2.h    /^  operator MArray2<T> () 
const$/
+operator int   cp-src/c.C      /^void operator int(int, int) {}$/
+operator int   cp-src/fail.C   /^                         operator int() const 
{return x;}$/
+operator+      cp-src/c.C      /^  A operator+(A& a) {};$/
+operator+      cp-src/c.C      /^const A& A::operator+(const A&) { }$/
+operator+      cp-src/c.C      /^void operator+(int, int) {}$/
+opparsebody\Edefop\defopx\defopheader\defoptype        tex-src/texinfo.tex     
/^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+oprotocol      c-src/etags.c   2473
+option c-src/getopt.h  73
+optional_argument      c-src/getopt.h  91
+opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype   tex-src/texinfo.tex     
/^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+ord_add_element        prol-src/ordsets.prolog /^ord_add_element([], Element, 
[Element]).$/
+ord_del_element        prol-src/ordsets.prolog /^ord_del_element([], _, []).$/
+ord_disjoint   prol-src/ordsets.prolog /^ord_disjoint(Set1, Set2) :-$/
+ord_intersect  prol-src/ordsets.prolog /^ord_intersect([Head1|Tail1], 
[Head2|Tail2]) :-$/
+ord_intersection       prol-src/ordsets.prolog /^ord_intersection(Sets, 
Intersection) :- $/
+ord_intersection       prol-src/ordsets.prolog /^ord_intersection([], Set2, 
[], Set2).$/
+ord_intersection       prol-src/ordsets.prolog /^ord_intersection([], _, []).$/
+ord_intersection2      prol-src/ordsets.prolog /^ord_intersection2(1, 
[Set|Sets], Set0, Sets0) :- !/
+ord_intersection3      prol-src/ordsets.prolog /^ord_intersection3(<, _, Set1, 
Head2, Tail2, Inters/
+ord_intersection4      prol-src/ordsets.prolog /^ord_intersection4(<, _, Set1, 
Head2, Tail2, Inters/
+ord_member     prol-src/ordsets.prolog /^ord_member(X, [E|Es]) :-$/
+ord_seteq      prol-src/ordsets.prolog /^ord_seteq(Set1, Set2) :-$/
+ord_setproduct prol-src/ordsets.prolog /^ord_setproduct([], _, []).$/
+ord_subset     prol-src/ordsets.prolog /^ord_subset([], _).$/
+ord_subtract   prol-src/ordsets.prolog /^ord_subtract(Set1, Set2, Union) :-$/
+ord_symdiff    prol-src/ordsets.prolog /^ord_symdiff([], Set2, Set2).$/
+ord_union      prol-src/ordsets.prolog /^ord_union(Set1, Set2, Union) :-$/
+ord_union      prol-src/ordsets.prolog /^ord_union([], Union) :- !, Union = 
[].$/
+ord_union4     prol-src/ordsets.prolog /^ord_union4(<, Head, Set1, Head2, 
Tail2, [Head|Unio/
+ord_union_all  prol-src/ordsets.prolog /^ord_union_all(1, [Set|Sets], Set, 
Sets) :- !.$/
+oss    html-src/softwarelibero.html    /^Il movimento open source$/
+otagseen       c-src/etags.c   2475
+outputTime     cp-src/c.C      9
+output_file    perl-src/htlmify-cystic 35
+output_files   perl-src/htlmify-cystic 32
+outputtable    html-src/algrthms.html  /^Output$/
+outsyn prol-src/natded.prolog  /^outsyn(['Any'],_).$/
+p      c-src/emacs/src/lisp.h  4673
+p      c-src/emacs/src/lisp.h  4679
+p.x    forth-src/test-forth.fth        /^  1 CELLS +FIELD p.x    \\ A single 
cell filed name/
+p.y    forth-src/test-forth.fth        /^  1 CELLS +FIELD p.y    \\ A single 
cell field name/
+p/f    ada-src/etags-test-for.ada      /^   function p pragma Import (C,$/
+p/f    ada-src/etags-test-for.ada      /^function p ("p");$/
+pD     c-src/emacs/src/lisp.h  165
+pD     c-src/emacs/src/lisp.h  167
+pD     c-src/emacs/src/lisp.h  169
+pD     c-src/emacs/src/lisp.h  171
+pI     c-src/emacs/src/lisp.h  106
+pI     c-src/emacs/src/lisp.h  94
+pI     c-src/emacs/src/lisp.h  99
+pMd    c-src/emacs/src/lisp.h  150
+pMd    c-src/emacs/src/lisp.h  155
+pMu    c-src/emacs/src/lisp.h  151
+pMu    c-src/emacs/src/lisp.h  156
+p_next c-src/etags.c   258
+pagesize       c-src/emacs/src/gmalloc.c       1703
+pair   merc-src/accumulator.m  /^:- import_module pair.$/
+parent c-src/emacs/src/keyboard.c      8745
+parent c-src/emacs/src/lisp.h  1590
+parse  prol-src/natded.prolog  /^parse(Ws,Cat):-$/
+parseFromVars  php-src/lce_functions.php       /^      function 
parseFromVars($prefix)$/
+parse_c_expression     y-src/cccp.y    /^parse_c_expression (string)$/
+parse_cgi      prol-src/natded.prolog  /^parse_cgi(TokenList,KeyVals):-$/
+parse_error    y-src/parse.y   82
+parse_escape   y-src/cccp.y    /^parse_escape (string_ptr)$/
+parse_hash     y-src/parse.y   64
+parse_menu_item        c-src/emacs/src/keyboard.c      /^parse_menu_item 
(Lisp_Object item, int inmenubar)$/
+parse_modifiers        c-src/emacs/src/keyboard.c      /^parse_modifiers 
(Lisp_Object symbol)$/
+parse_modifiers_uncached       c-src/emacs/src/keyboard.c      
/^parse_modifiers_uncached (Lisp_Object symbol, ptrd/
+parse_number   y-src/cccp.y    /^parse_number (olen)$/
+parse_return   y-src/parse.y   74
+parse_return_error     y-src/cccp.y    70
+parse_solitary_modifier        c-src/emacs/src/keyboard.c      
/^parse_solitary_modifier (Lisp_Object symbol)$/
+parse_tool_bar_item    c-src/emacs/src/keyboard.c      /^parse_tool_bar_item 
(Lisp_Object key, Lisp_Object /
+parse_tree     merc-src/accumulator.m  /^:- import_module parse_tree.$/
+pat    c-src/etags.c   262
+pattern        c-src/etags.c   260
+pdlcount       c-src/emacs/src/lisp.h  3046
+pending-delete-mode    el-src/TAGTEST.EL       /^(defalias 
'pending-delete-mode 'delete-selection-m/
+pending_funcalls       c-src/emacs/src/keyboard.c      4377
+pending_signals        c-src/emacs/src/keyboard.c      80
+pfatal c-src/etags.c   /^pfatal (const char *s1)$/
+pfdset c-src/h.h       57
+pfnote c-src/etags.c   /^pfnote (char *name, bool is_func, char *linestart,/
+pinned c-src/emacs/src/lisp.h  679
+plain_C_entries        c-src/etags.c   /^plain_C_entries (FILE *inf)$/
+plain_C_suffixes       c-src/etags.c   643
+plainc c-src/etags.c   2934
+plist  c-src/emacs/src/lisp.h  2040
+plist  c-src/emacs/src/lisp.h  697
+plus   cp-src/functions.cpp    /^void Date::plus ( int days , int month , int 
year /
+plus   go-src/test1.go 5
+plusvalseq     prol-src/natded.prolog  /^plusvalseq([]) --> [].$/
+point  forth-src/test-forth.fth        /^BEGIN-STRUCTURE point \\ create the 
named structure/
+pointer        c-src/emacs/src/lisp.h  2125
+poll_for_input c-src/emacs/src/keyboard.c      /^poll_for_input (struct atimer 
*timer)$/
+poll_for_input_1       c-src/emacs/src/keyboard.c      /^poll_for_input_1 
(void)$/
+poll_suppress_count    c-src/emacs/src/keyboard.c      1908
+poll_suppress_count    c-src/emacs/src/lisp.h  3047
+poll_timer     c-src/emacs/src/keyboard.c      1915
+pop-tag-mark   el-src/emacs/lisp/progmodes/etags.el    /^(defalias 
'pop-tag-mark 'xref-pop-marker-stack)$/
+pop_kboard     c-src/emacs/src/keyboard.c      /^pop_kboard (void)$/
+popclass_above c-src/etags.c   /^popclass_above (int bracelev)$/
+position_to_Time       c-src/emacs/src/keyboard.c      /^position_to_Time 
(ptrdiff_t pos)$/
+posix_memalign c-src/emacs/src/gmalloc.c       /^posix_memalign (void 
**memptr, size_t alignment, s/
+posn-at-point  c-src/emacs/src/keyboard.c      /^DEFUN ("posn-at-point", 
Fposn_at_point, Sposn_at_p/
+posn-at-x-y    c-src/emacs/src/keyboard.c      /^DEFUN ("posn-at-x-y", 
Fposn_at_x_y, Sposn_at_x_y, /
+possible_sum_sign      y-src/cccp.y    /^#define possible_sum_sign(a, b, sum) 
((((a) ^ (b))/
+post   pyt-src/server.py       /^    def post(self):$/
+pot_etags_version      c-src/etags.c   81
+pp1    c-src/dostorture.c      /^int pp1($/
+pp1    c-src/torture.c /^int pp1($/
+pp2    c-src/dostorture.c      /^pp2$/
+pp2    c-src/torture.c /^pp2$/
+pp3    c-src/dostorture.c      /^pp3(int bar)$/
+pp3    c-src/torture.c /^pp3(int bar)$/
+pp_bas_cat     prol-src/natded.prolog  /^pp_bas_cat(Cat):-$/
+pp_cat prol-src/natded.prolog  /^pp_cat(Syn:Sem):-$/
+pp_exp prol-src/natded.prolog  /^pp_exp('NIL'):-$/
+pp_exps        prol-src/natded.prolog  /^pp_exps([]).$/
+pp_html_fitch_tree     prol-src/natded.prolog  
/^pp_html_fitch_tree(tree(der,Root,[ders(Words)]),M,/
+pp_html_table_fitch_tree       prol-src/natded.prolog  
/^pp_html_table_fitch_tree(T):-$/
+pp_html_table_tree     prol-src/natded.prolog  /^pp_html_table_tree(T):-$/
+pp_html_tree   prol-src/natded.prolog  /^pp_html_tree(ass(Syn,V,'$VAR'(N))):-$/
+pp_html_trees  prol-src/natded.prolog  /^pp_html_trees([T|Ts],N,M):-$/
+pp_lam prol-src/natded.prolog  /^pp_lam(Var^Alpha):-$/
+pp_lam_bracket prol-src/natded.prolog  /^pp_lam_bracket(A^B):-$/
+pp_lam_paren   prol-src/natded.prolog  /^pp_lam_paren(Var^Alpha):-$/
+pp_paren       prol-src/natded.prolog  /^pp_paren(C):-$/
+pp_rule        prol-src/natded.prolog  /^pp_rule(fe):-write('\/E').$/
+pp_syn prol-src/natded.prolog  /^pp_syn(A\/B):-$/
+pp_syn_back    prol-src/natded.prolog  /^pp_syn_back(A\/B):-$/
+pp_syn_paren   prol-src/natded.prolog  /^pp_syn_paren(A\/B):-$/
+pp_tree        prol-src/natded.prolog  /^pp_tree(T):-$/
+pp_trees       prol-src/natded.prolog  /^pp_trees([T|Ts],Column):-$/
+pp_word        prol-src/natded.prolog  /^pp_word(W):-$/
+pp_word_list   prol-src/natded.prolog  /^pp_word_list([]).$/
+pp_word_list_rest      prol-src/natded.prolog  /^pp_word_list_rest([]).$/
+predicate      c-src/emacs/src/lisp.h  2307
+prev   c-src/emacs/src/gmalloc.c       165
+prev   c-src/emacs/src/gmalloc.c       189
+prev   c-src/emacs/src/lisp.h  2191
+prev   c.c     175
+printClassification    php-src/lce_functions.php       /^      function 
printClassification()$/
+print_help     c-src/etags.c   /^print_help (argument *argbuffer)$/
+print_language_names   c-src/etags.c   /^print_language_names (void)$/
+print_version  c-src/etags.c   /^print_version (void)$/
+printmax_t     c-src/emacs/src/lisp.h  148
+printmax_t     c-src/emacs/src/lisp.h  153
+proc   c-src/h.h       87
+process_file   c-src/etags.c   /^process_file (FILE *fh, char *fn, language 
*lang)$/
+process_file_name      c-src/etags.c   /^process_file_name (char *file, 
language *lang)$/
+process_pending_signals        c-src/emacs/src/keyboard.c      
/^process_pending_signals (void)$/
+process_special_events c-src/emacs/src/keyboard.c      
/^process_special_events (void)$/
+process_tool_bar_item  c-src/emacs/src/keyboard.c      /^process_tool_bar_item 
(Lisp_Object key, Lisp_Objec/
+prof   make-src/Makefile       /^prof: ETAGS$/
+prolog_atom    c-src/etags.c   /^prolog_atom (char *s, size_t pos)$/
+prolog_pr      c-src/etags.c   /^prolog_pr (char *s, char *last)$/
+prolog_skip_comment    c-src/etags.c   /^prolog_skip_comment (linebuffer *plb, 
FILE *inf)$/
+prop   c-src/etags.c   209
+protect_malloc_state   c-src/emacs/src/gmalloc.c       /^protect_malloc_state 
(int protect_p)$/
+pthread_mutexattr_setprio_ceiling/f    ada-src/2ataspri.adb    /^   function 
pthread_mutexattr_setprio_ceiling$/
+pthread_mutexattr_setprotocol/f        ada-src/2ataspri.adb    /^   function 
pthread_mutexattr_setprotocol$/
+purpose        c-src/emacs/src/lisp.h  1594
+push_kboard    c-src/emacs/src/keyboard.c      /^push_kboard (struct kboard 
*k)$/
+pushclass_above        c-src/etags.c   /^pushclass_above (int bracelev, char 
*str, int len)/
+put_entries    c-src/etags.c   /^put_entries (register node *np)$/
+pvec_type      c-src/emacs/src/lisp.h  780
+quantizing     html-src/algrthms.html  /^Quantizing the Received$/
+questo ../c/c.web      34
+quiettest      make-src/Makefile       /^quiettest:$/
+quit_char      c-src/emacs/src/keyboard.c      192
+quit_throw_to_read_char        c-src/emacs/src/keyboard.c      
/^quit_throw_to_read_char (bool from_signal)$/
+qux    ruby-src/test1.ru       /^    alias_method :qux, :tee, 
attr_accessor(:bogus)/
+qux1   ruby-src/test1.ru       /^                :qux1)$/
+qux=   ruby-src/test1.ru       /^      def qux=(tee)$/
+r0     c-src/sysdep.h  54
+r1     c-src/sysdep.h  55
+r_alloc        c-src/emacs/src/lisp.h  /^extern void *r_alloc (void **, 
size_t) ATTRIBUTE_A/
+range_exp      y-src/parse.y   269
+range_exp_list y-src/parse.y   273
+raw_keybuf     c-src/emacs/src/keyboard.c      116
+raw_keybuf_count       c-src/emacs/src/keyboard.c      117
+rbtp   c.c     240
+re_iswctype    c-src/emacs/src/regex.h 602
+re_nsub        c-src/emacs/src/regex.h 364
+re_pattern_buffer      c-src/emacs/src/regex.h 335
+re_pattern_buffer      c-src/h.h       119
+re_registers   c-src/emacs/src/regex.h 428
+re_wchar_t     c-src/emacs/src/regex.h 600
+re_wchar_t     c-src/emacs/src/regex.h 623
+re_wctype      c-src/emacs/src/regex.h 601
+re_wctype_t    c-src/emacs/src/regex.h 599
+re_wctype_t    c-src/emacs/src/regex.h 618
+re_wctype_to_bit       c-src/emacs/src/regex.h /^# define re_wctype_to_bit(cc) 
0$/
+read   cp-src/conway.hpp       /^    char read() { return alive; }$/
+read   php-src/lce_functions.php       /^      function read()$/
+read-key-sequence      c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence", Fread_key_sequence, Sr/
+read-key-sequence-vector       c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence-vector", Fread_key_seque/
+read1  ruby-src/test1.ru       /^    attr_reader :read1 , :read2; attr_writer 
:writ/
+read2  ruby-src/test1.ru       /^    attr_reader :read1 , :read2; attr_writer 
:writ/
+read_char      c-src/emacs/src/keyboard.c      /^read_char (int commandflag, 
Lisp_Object map,$/
+read_char_help_form_unwind     c-src/emacs/src/keyboard.c      
/^read_char_help_form_unwind (void)$/
+read_char_minibuf_menu_prompt  c-src/emacs/src/keyboard.c      
/^read_char_minibuf_menu_prompt (int commandflag,$/
+read_char_x_menu_prompt        c-src/emacs/src/keyboard.c      
/^read_char_x_menu_prompt (Lisp_Object map,$/
+read_decoded_event_from_main_queue     c-src/emacs/src/keyboard.c      
/^read_decoded_event_from_main_queue (struct timespe/
+read_event_from_main_queue     c-src/emacs/src/keyboard.c      
/^read_event_from_main_queue (struct timespec *end_t/
+read_key_sequence      c-src/emacs/src/keyboard.c      /^read_key_sequence 
(Lisp_Object *keybuf, int bufsiz/
+read_key_sequence_cmd  c-src/emacs/src/keyboard.c      232
+read_key_sequence_remapped     c-src/emacs/src/keyboard.c      233
+read_key_sequence_vs   c-src/emacs/src/keyboard.c      /^read_key_sequence_vs 
(Lisp_Object prompt, Lisp_Obj/
+read_menu_command      c-src/emacs/src/keyboard.c      /^read_menu_command 
(void)$/
+read_toc       perl-src/htlmify-cystic /^sub read_toc ()$/
+readable_events        c-src/emacs/src/keyboard.c      /^readable_events (int 
flags)$/
+readline       c-src/etags.c   /^readline (linebuffer *lbp, FILE *stream)$/
+readline_internal      c-src/etags.c   /^readline_internal (linebuffer *lbp, 
register FILE /
+realloc        c-src/emacs/src/gmalloc.c       /^realloc (void *ptr, size_t 
size)$/
+realloc        c-src/emacs/src/gmalloc.c       1716
+realloc        c-src/emacs/src/gmalloc.c       65
+realloc        c-src/emacs/src/gmalloc.c       69
+reallochook    c-src/emacs/src/gmalloc.c       /^reallochook (void *ptr, 
size_t size)$/
+recent-keys    c-src/emacs/src/keyboard.c      /^DEFUN ("recent-keys", 
Frecent_keys, Srecent_keys, /
+recent_keys    c-src/emacs/src/keyboard.c      100
+recent_keys_index      c-src/emacs/src/keyboard.c      94
+record_asynch_buffer_change    c-src/emacs/src/keyboard.c      
/^record_asynch_buffer_change (void)$/
+record_auto_save       c-src/emacs/src/keyboard.c      /^record_auto_save 
(void)$/
+record_char    c-src/emacs/src/keyboard.c      /^record_char (Lisp_Object c)$/
+record_menu_key        c-src/emacs/src/keyboard.c      /^record_menu_key 
(Lisp_Object c)$/
+record_single_kboard_state     c-src/emacs/src/keyboard.c      
/^record_single_kboard_state ()$/
+record_xmalloc c-src/emacs/src/lisp.h  /^extern void *record_xmalloc (size_t) 
ATTRIBUTE_ALL/
+recover_top_level_message      c-src/emacs/src/keyboard.c      138
+recursion-depth        c-src/emacs/src/keyboard.c      /^DEFUN 
("recursion-depth", Frecursion_depth, Srecur/
+recursive-edit c-src/emacs/src/keyboard.c      /^DEFUN ("recursive-edit", 
Frecursive_edit, Srecursi/
+recursive_edit_1       c-src/emacs/src/keyboard.c      /^recursive_edit_1 
(void)$/
+recursive_edit_unwind  c-src/emacs/src/keyboard.c      /^recursive_edit_unwind 
(Lisp_Object buffer)$/
+redirect       c-src/emacs/src/lisp.h  663
+reduce prol-src/natded.prolog  /^reduce((X^M)@N,L):-     % beta reduction$/
+reduce_subterm prol-src/natded.prolog  /^reduce_subterm(M,M2):-$/
+refreshPort    pyt-src/server.py       /^    def refreshPort(self):$/
+reg_errcode_t  c-src/emacs/src/regex.h 323
+reg_errcode_t  c.c     279
+reg_syntax_t   c-src/emacs/src/regex.h 43
+regex  c-src/etags.c   219
+regex.o        make-src/Makefile       /^regex.o: emacs\/src\/regex.c$/
+regex_t        c-src/emacs/src/regex.h 416
+regex_tag_multiline    c-src/etags.c   /^regex_tag_multiline (void)$/
+regexfile      make-src/Makefile       /^regexfile: Makefile$/
+regexp c-src/etags.c   256
+regexp c-src/etags.c   268
+registerAction objcpp-src/SimpleCalc.M /^- registerAction:(SEL)action$/
+register_heapinfo      c-src/emacs/src/gmalloc.c       /^register_heapinfo 
(void)$/
+regmatch_t     c-src/emacs/src/regex.h 451
+regoff_t       c-src/emacs/src/regex.h 423
+regs   c-src/etags.c   263
+regs   cp-src/screen.cpp       16
+regs_allocated c-src/emacs/src/regex.h 379
+regset c-src/h.h       31
+regular_top_level_message      c-src/emacs/src/keyboard.c      143
+rehash_size    c-src/emacs/src/lisp.h  1835
+rehash_threshold       c-src/emacs/src/lisp.h  1839
+relative_filename      c-src/etags.c   /^relative_filename (char *file, char 
*dir)$/
+release distrib        make-src/Makefile       /^release distrib: web$/
+removeexp      prol-src/natded.prolog  /^removeexp(E,E,'NIL'):-!.$/
+reorder_modifiers      c-src/emacs/src/keyboard.c      /^reorder_modifiers 
(Lisp_Object symbol)$/
+request        c.c     /^request request (a, b)$/
+requeued_events_pending_p      c-src/emacs/src/keyboard.c      
/^requeued_events_pending_p (void)$/
+require        merc-src/accumulator.m  /^:- import_module require.$/
+required_argument      c-src/getopt.h  90
+reset-this-command-lengths     c-src/emacs/src/keyboard.c      /^DEFUN 
("reset-this-command-lengths", Freset_this_c/
+restore_getcjmp        c-src/emacs/src/keyboard.c      /^restore_getcjmp 
(sys_jmp_buf temp)$/
+restore_kboard_configuration   c-src/emacs/src/keyboard.c      
/^restore_kboard_configuration (int was_locked)$/
+return_to_command_loop c-src/emacs/src/keyboard.c      135
+reverse        prol-src/natded.prolog  /^reverse([],Ws,Ws).$/
+revert objc-src/PackInsp.m     /^-revert:sender$/
+right  c-src/etags.c   216
+right_shift    y-src/cccp.y    /^right_shift (a, b)$/
+ring1  c.c     241
+ring2  c.c     242
+rm_eo  c-src/emacs/src/regex.h 450
+rm_so  c-src/emacs/src/regex.h 449
+rng_base       cp-src/Range.h  79
+rng_inc        cp-src/Range.h  81
+rng_limit      cp-src/Range.h  80
+rng_nelem      cp-src/Range.h  83
+rosso  cp-src/c.C      40
+rsyncfromfly   make-src/Makefile       /^rsyncfromfly:$/
+rsynctofly     make-src/Makefile       /^rsynctofly:$/
+rtint  c-src/h.h       60
+rtint  c-src/h.h       68
+rtstr  c-src/h.h       61
+rtstr  c-src/h.h       69
+rtunion_def    c-src/h.h       58
+rtunion_def    c-src/h.h       64
+rtx    c-src/h.h       62
+rtxnp  c-src/h.h       71
+rtxp   c-src/h.h       70
+s      c-src/emacs/src/lisp.h  4672
+s      c-src/emacs/src/lisp.h  4678
+s1     cp-src/c.C      32
+s2     cp-src/c.C      35
+safe_run_hook_funcall  c-src/emacs/src/keyboard.c      /^safe_run_hook_funcall 
(ptrdiff_t nargs, Lisp_Objec/
+safe_run_hooks c-src/emacs/src/keyboard.c      /^safe_run_hooks (Lisp_Object 
hook)$/
+safe_run_hooks_1       c-src/emacs/src/keyboard.c      /^safe_run_hooks_1 
(ptrdiff_t nargs, Lisp_Object *ar/
+safe_run_hooks_error   c-src/emacs/src/keyboard.c      /^safe_run_hooks_error 
(Lisp_Object error, ptrdiff_t/
+save   pyt-src/server.py       /^    def save(self):$/
+save_getcjmp   c-src/emacs/src/keyboard.c      /^save_getcjmp (sys_jmp_buf 
temp)$/
+save_type      c-src/emacs/src/lisp.h  /^save_type (struct Lisp_Save_Value *v, 
int n)$/
+savenstr       c-src/etags.c   /^savenstr (const char *cp, int len)$/
+savestr        c-src/etags.c   /^savestr (const char *cp)$/
+say    go-src/test.go  /^func say(msg string) {$/
+scan_separators        c-src/etags.c   /^scan_separators (char *name)$/
+scolonseen     c-src/etags.c   2447
+scratch        c-src/sysdep.h  56
+scroll_bar_parts       c-src/emacs/src/keyboard.c      5189
+sec=\relax     tex-src/texinfo.tex     /^\\let\\appendixsec=\\relax$/
+section        perl-src/htlmify-cystic 25
+section=\relax tex-src/texinfo.tex     /^\\let\\appendixsection=\\relax$/
+section_href   perl-src/htlmify-cystic /^sub section_href ($)$/
+section_name   perl-src/htlmify-cystic /^sub section_name ($)$/
+section_name   perl-src/htlmify-cystic 12
+section_toc    perl-src/htlmify-cystic 15
+section_url    perl-src/htlmify-cystic /^sub section_url ()$/
+section_url_base       perl-src/htlmify-cystic /^sub section_url_base ()$/
+section_url_name       perl-src/htlmify-cystic /^sub section_url_name ()$/
+select prol-src/natded.prolog  /^select(X,[X|Xs],Xs).$/
+select-tags-table      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
select-tags-table ()$/
+select-tags-table-mode el-src/emacs/lisp/progmodes/etags.el    
/^(define-derived-mode select-tags-table-mode specia/
+select-tags-table-mode-map     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar select-tags-table-mode-map ; Doc string?$/
+select-tags-table-quit el-src/emacs/lisp/progmodes/etags.el    /^(defun 
select-tags-table-quit ()$/
+select-tags-table-select       el-src/emacs/lisp/progmodes/etags.el    
/^(defun select-tags-table-select (button)$/
+select_last    prol-src/natded.prolog  /^select_last([X],X,[]).$/
+send   objc-src/Subprocess.m   /^- send:(const char *)string 
withNewline:(BOOL)want/
+send   objc-src/Subprocess.m   /^- send:(const char *)string$/
+separator_names        c-src/emacs/src/keyboard.c      7372
+serializeToVars        php-src/lce_functions.php       /^      function 
serializeToVars($prefix)$/
+set    cp-src/conway.hpp       /^    void set(void) { alive = 1; }$/
+set    merc-src/accumulator.m  /^:- import_module set.$/
+set-input-interrupt-mode       c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-interrupt-mode", Fset_input_inte/
+set-input-meta-mode    c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-meta-mode", Fset_input_meta_mode/
+set-input-mode c-src/emacs/src/keyboard.c      /^DEFUN ("set-input-mode", 
Fset_input_mode, Sset_inp/
+set-output-flow-control        c-src/emacs/src/keyboard.c      /^DEFUN 
("set-output-flow-control", Fset_output_flow/
+set-quit-char  c-src/emacs/src/keyboard.c      /^DEFUN ("set-quit-char", 
Fset_quit_char, Sset_quit_/
+setDate        cp-src/functions.cpp    /^void Date::setDate ( int d , int m , 
int y ){$/
+setDelegate    objc-src/Subprocess.m   /^- setDelegate:anObject$/
+setRevertButtonTitle   objc-src/PackInsp.m     /^-setRevertButtonTitle$/
+set_base       cp-src/Range.h  /^  void set_base (double b) { rng_base = b;  
}$/
+set_char_table_contents        c-src/emacs/src/lisp.h  
/^set_char_table_contents (Lisp_Object table, ptrdif/
+set_char_table_defalt  c-src/emacs/src/lisp.h  /^set_char_table_defalt 
(Lisp_Object table, Lisp_Obj/
+set_char_table_extras  c-src/emacs/src/lisp.h  /^set_char_table_extras 
(Lisp_Object table, ptrdiff_/
+set_char_table_purpose c-src/emacs/src/lisp.h  /^set_char_table_purpose 
(Lisp_Object table, Lisp_Ob/
+set_hash_key_slot      c-src/emacs/src/lisp.h  /^set_hash_key_slot (struct 
Lisp_Hash_Table *h, ptrd/
+set_hash_value_slot    c-src/emacs/src/lisp.h  /^set_hash_value_slot (struct 
Lisp_Hash_Table *h, pt/
+set_inc        cp-src/Range.h  /^  void set_inc (double i) { rng_inc = i;   }$/
+set_limit      cp-src/Range.h  /^  void set_limit (double l) { rng_limit = l; 
}$/
+set_overlay_plist      c-src/emacs/src/lisp.h  /^set_overlay_plist 
(Lisp_Object overlay, Lisp_Objec/
+set_poll_suppress_count        c-src/emacs/src/keyboard.c      
/^set_poll_suppress_count (int count)$/
+set_prop       c-src/emacs/src/keyboard.c      /^set_prop (ptrdiff_t idx, 
Lisp_Object val)$/
+set_save_integer       c-src/emacs/src/lisp.h  /^set_save_integer (Lisp_Object 
obj, int n, ptrdiff_/
+set_save_pointer       c-src/emacs/src/lisp.h  /^set_save_pointer (Lisp_Object 
obj, int n, void *va/
+set_string_intervals   c-src/emacs/src/lisp.h  /^set_string_intervals 
(Lisp_Object s, INTERVAL i)$/
+set_sub_char_table_contents    c-src/emacs/src/lisp.h  
/^set_sub_char_table_contents (Lisp_Object table, pt/
+set_symbol_function    c-src/emacs/src/lisp.h  /^set_symbol_function 
(Lisp_Object sym, Lisp_Object /
+set_symbol_next        c-src/emacs/src/lisp.h  /^set_symbol_next (Lisp_Object 
sym, struct Lisp_Symb/
+set_symbol_plist       c-src/emacs/src/lisp.h  /^set_symbol_plist (Lisp_Object 
sym, Lisp_Object pli/
+set_upto       merc-src/accumulator.m  /^:- func set_upto(accu_case, int) = 
set(accu_goal_i/
+set_waiting_for_input  c-src/emacs/src/keyboard.c      /^set_waiting_for_input 
(struct timespec *time_to_cl/
+setref tex-src/texinfo.tex     
/^\\expandafter\\expandafter\\expandafter\\appendixsetre/
+setup  cp-src/c.C      5
+shift  cp-src/functions.cpp    /^void Date::shift ( void ){\/\/Shift this date 
to pre/
+shouldLoad     objc-src/PackInsp.m     /^-(BOOL)shouldLoad$/
+should_attempt_accu_transform  merc-src/accumulator.m  /^:- pred 
should_attempt_accu_transform(module_info:/
+should_attempt_accu_transform_2        merc-src/accumulator.m  /^:- pred 
should_attempt_accu_transform_2(module_inf/
+should_see_this_array_type     cp-src/c.C      156
+should_see_this_function_pointer       cp-src/c.C      153
+should_see_this_one_enclosed_in_extern_C       cp-src/c.C      149
+show   erl-src/gs_dialog.erl   /^show(Module, Title, Message, Args) ->$/
+showError      objc-src/Subprocess.m   /^showError (const char *errorString, 
id theDelegate/
+showInfo       objc-src/PackInsp.m     /^-showInfo:sender$/
+show_help_echo c-src/emacs/src/keyboard.c      /^show_help_echo (Lisp_Object 
help, Lisp_Object wind/
+sig    c-src/emacs/src/keyboard.c      7238
+signal_handler c-src/h.h       82
+signal_handler1        c-src/h.h       83
+signal_handler_t       c-src/h.h       94
+simulation     html-src/software.html  /^Software that I wrote for supporting 
my research a/
+single_kboard  c-src/emacs/src/keyboard.c      89
+single_kboard_state    c-src/emacs/src/keyboard.c      /^single_kboard_state 
()$/
+site   cp-src/conway.hpp       /^    site(int xi, int yi): x(xi), y(yi), 
alive(0) {/
+site   cp-src/conway.hpp       5
+size   c-src/emacs/src/gmalloc.c       156
+size   c-src/emacs/src/gmalloc.c       163
+size   c-src/emacs/src/gmalloc.c       1862
+size   c-src/emacs/src/lisp.h  1364
+size   c-src/emacs/src/lisp.h  1390
+size   c-src/etags.c   236
+size   c-src/etags.c   2522
+skeyseen       c-src/etags.c   2445
+skip_name      c-src/etags.c   /^skip_name (char *cp)$/
+skip_non_spaces        c-src/etags.c   /^skip_non_spaces (char *cp)$/
+skip_spaces    c-src/etags.c   /^skip_spaces (char *cp)$/
+snarf-tag-function     el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
snarf-tag-function nil$/
+snone  c-src/etags.c   2443
+solutions      merc-src/accumulator.m  /^:- import_module solutions.$/
+some_mouse_moved       c-src/emacs/src/keyboard.c      /^some_mouse_moved 
(void)$/
+space  tex-src/texinfo.tex     /^    {#2\\labelspace 
#1}\\dotfill\\doshortpageno{#3}}%/
+space  tex-src/texinfo.tex     /^  
\\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/
+spacer c-src/emacs/src/lisp.h  1975
+spacer c-src/emacs/src/lisp.h  1982
+spacer c-src/emacs/src/lisp.h  2036
+spacer c-src/emacs/src/lisp.h  2205
+specbind_tag   c-src/emacs/src/lisp.h  2943
+specbinding    c-src/emacs/src/lisp.h  2955
+specialsymbol  prol-src/natded.prolog  /^specialsymbol(C1,C2,S):-$/
+splitexp       prol-src/natded.prolog  /^splitexp(E,E,('NIL','NIL')):-!.$/
+srclist        make-src/Makefile       /^srclist: Makefile$/
+ss3    c.c     255
+sss1   c.c     252
+sss2   c.c     253
+sstab  prol-src/natded.prolog  /^sstab(2,'C',',').$/
+st_C_attribute c-src/etags.c   2209
+st_C_class     c-src/etags.c   2212
+st_C_define    c-src/etags.c   2213
+st_C_enum      c-src/etags.c   2213
+st_C_extern    c-src/etags.c   2213
+st_C_gnumacro  c-src/etags.c   2208
+st_C_ignore    c-src/etags.c   2209
+st_C_javastruct        c-src/etags.c   2210
+st_C_objend    c-src/etags.c   2207
+st_C_objimpl   c-src/etags.c   2207
+st_C_objprot   c-src/etags.c   2207
+st_C_operator  c-src/etags.c   2211
+st_C_struct    c-src/etags.c   2213
+st_C_template  c-src/etags.c   2212
+st_C_typedef   c-src/etags.c   2213
+st_none        c-src/etags.c   2206
+stack  c.c     155
+stagseen       c-src/etags.c   2446
+standalone     make-src/Makefile       /^standalone:$/
+start  c-src/emacs/src/keyboard.c      8753
+start  c-src/emacs/src/lisp.h  2038
+start  c-src/emacs/src/regex.h 431
+start  php-src/lce_functions.php       /^      function start($line, $class)$/
+start  y-src/cccp.y    143
+start_polling  c-src/emacs/src/keyboard.c      /^start_polling (void)$/
+start_up       prol-src/natded.prolog  /^start_up:-$/
+state_protected_p      c-src/emacs/src/gmalloc.c       400
+statetable     html-src/algrthms.html  /^Next$/
+staticetags    make-src/Makefile       /^staticetags:$/
+step   cp-src/clheir.hpp       /^    virtual void step(void) { }$/
+step   cp-src/conway.hpp       /^    void step(void) { alive = next_alive; }$/
+step_everybody cp-src/clheir.cpp       /^void step_everybody(void)$/
+stop_polling   c-src/emacs/src/keyboard.c      /^stop_polling (void)$/
+store_info     merc-src/accumulator.m  /^:- type store_info$/
+store_user_signal_events       c-src/emacs/src/keyboard.c      
/^store_user_signal_events (void)$/
+stored_goal_plain_call merc-src/accumulator.m  /^:- inst 
stored_goal_plain_call for goal_store.stor/
+str    go-src/test1.go 9
+strcaseeq      c-src/etags.c   /^#define strcaseeq(s,t)        (assert 
((s)!=NULL && (t)!=/
+streq  c-src/etags.c   /^#define streq(s,t)    (assert ((s)!=NULL || (t)!=NULL/
+string merc-src/accumulator.m  /^:- import_module string.$/
+string_intervals       c-src/emacs/src/lisp.h  /^string_intervals (Lisp_Object 
s)$/
+stripLine      php-src/lce_functions.php       /^      function 
stripLine($line, $class)$/
+stripname      pas-src/common.pas      /^function stripname; (* ($/
+strncaseeq     c-src/etags.c   /^#define strncaseeq(s,t,n) (assert ((s)!=NULL 
&& (t/
+strneq c-src/etags.c   /^#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=N/
+structdef      c-src/etags.c   2448
+stuff_buffered_input   c-src/emacs/src/keyboard.c      /^stuff_buffered_input 
(Lisp_Object stuffstring)$/
+subprocess     objc-src/PackInsp.m     /^-subprocess:(Subprocess *)sender 
output:(char *)bu/
+subprocessDone objc-src/PackInsp.m     /^-subprocessDone:(Subprocess *)sender$/
+subsec=\relax  tex-src/texinfo.tex     /^\\let\\appendixsubsec=\\relax$/
+subsection     perl-src/htlmify-cystic 26
+subsection=\relax      tex-src/texinfo.tex     
/^\\let\\appendixsubsection=\\relax$/
+subsection_marker      perl-src/htlmify-cystic 161
+subst  prol-src/natded.prolog  /^subst(var(Y),var(X),M,N):-$/
+substitute     c-src/etags.c   /^substitute (char *in, char *out, struct 
re_registe/
+subsubsec=\relax       tex-src/texinfo.tex     
/^\\let\\appendixsubsubsec=\\relax$/
+subsubsection  perl-src/htlmify-cystic 27
+subsubsection=\relax   tex-src/texinfo.tex     
/^\\let\\appendixsubsubsection=\\relax$/
+subtle ruby-src/test1.ru       /^                 :tee ; attr_reader :subtle$/
+subtree        prol-src/natded.prolog  /^subtree(T,T).$/
+suffix c-src/etags.c   186
+suffixes       c-src/etags.c   195
+suggest_asking_for_help        c-src/etags.c   /^suggest_asking_for_help 
(void)$/
+suspend-emacs  c-src/emacs/src/keyboard.c      /^DEFUN ("suspend-emacs", 
Fsuspend_emacs, Ssuspend_e/
+sval   y-src/cccp.y    116
+swallow_events c-src/emacs/src/keyboard.c      /^swallow_events (bool 
do_display)$/
+switch_line_buffers    c-src/etags.c   /^#define switch_line_buffers() (curndx 
= 1 - curndx/
+sxhash_combine c-src/emacs/src/lisp.h  /^sxhash_combine (EMACS_UINT x, 
EMACS_UINT y)$/
+sym_type       c-src/etags.c   2204
+symbol c-src/emacs/src/lisp.h  2980
+symbol_interned        c-src/emacs/src/lisp.h  639
+symbol_name    c-src/emacs/src/lisp.h  1687
+symbol_redirect        c-src/emacs/src/lisp.h  646
+syms_of_abbrev c-src/abbrev.c  /^syms_of_abbrev ()$/
+syms_of_keyboard       c-src/emacs/src/keyboard.c      /^syms_of_keyboard 
(void)$/
+synchronize_system_messages_locale     c-src/emacs/src/lisp.h  /^INLINE void 
synchronize_system_messages_locale (vo/
+synchronize_system_time_locale c-src/emacs/src/lisp.h  /^INLINE void 
synchronize_system_time_locale (void) /
+syntax c-src/emacs/src/regex.h 350
+sys_jmp_buf    c-src/emacs/src/lisp.h  2906
+sys_jmp_buf    c-src/emacs/src/lisp.h  2910
+sys_jmp_buf    c-src/emacs/src/lisp.h  2916
+sys_longjmp    c-src/emacs/src/lisp.h  /^# define sys_longjmp(j, v) _longjmp 
(j, v)$/
+sys_longjmp    c-src/emacs/src/lisp.h  /^# define sys_longjmp(j, v) longjmp 
(j, v)$/
+sys_longjmp    c-src/emacs/src/lisp.h  /^# define sys_longjmp(j, v) siglongjmp 
(j, v)$/
+sys_setjmp     c-src/emacs/src/lisp.h  /^# define sys_setjmp(j) _setjmp (j)$/
+sys_setjmp     c-src/emacs/src/lisp.h  /^# define sys_setjmp(j) setjmp (j)$/
+sys_setjmp     c-src/emacs/src/lisp.h  /^# define sys_setjmp(j) sigsetjmp (j, 
0)$/
+syscall_error  c-src/sysdep.h  34
+t      cp-src/c.C      52
+t1     cp-src/c.C      34
+t2     cp-src/c.C      38
+tab_count_words        c-src/tab.c     /^int                   
tab_count_words(char **tab)$/
+tab_delete_first       c-src/tab.c     /^int                   
tab_delete_first(char **tab)$/
+tab_fill       c-src/tab.c     /^char                  **tab_fill(char *str, 
char delim)$/
+tab_free       c-src/tab.c     /^void                  tab_free(char **tab)$/
+tag-any-match-p        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-any-match-p (_tag)$/
+tag-exact-file-name-match-p    el-src/emacs/lisp/progmodes/etags.el    
/^(defun tag-exact-file-name-match-p (tag)$/
+tag-exact-match-p      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-exact-match-p (tag)$/
+tag-file-name-match-p  el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-file-name-match-p (tag)$/
+tag-find-file-of-tag   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-find-file-of-tag (file) ; Doc string?$/
+tag-find-file-of-tag-noselect  el-src/emacs/lisp/progmodes/etags.el    
/^(defun tag-find-file-of-tag-noselect (file)$/
+tag-implicit-name-match-p      el-src/emacs/lisp/progmodes/etags.el    
/^(defun tag-implicit-name-match-p (tag)$/
+tag-lines-already-matched      el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tag-lines-already-matched nil$/
+tag-partial-file-name-match-p  el-src/emacs/lisp/progmodes/etags.el    
/^(defun tag-partial-file-name-match-p (_tag)$/
+tag-re-match-p el-src/emacs/lisp/progmodes/etags.el    /^(defun tag-re-match-p 
(re)$/
+tag-symbol-match-p     el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-symbol-match-p (tag)$/
+tag-word-match-p       el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-word-match-p (tag)$/
+tag1   c-src/dostorture.c      /^(*tag1 (sig, handler)) ()$/
+tag1   c-src/h.h       110
+tag1   c-src/torture.c /^(*tag1 (sig, handler)) ()$/
+tag2   c-src/dostorture.c      /^(*tag2 (sig, handler)) ()$/
+tag2   c-src/torture.c /^(*tag2 (sig, handler)) ()$/
+tag3   c-src/dostorture.c      /^(*tag3 (int sig, void (*handler) (int))) 
(int)$/
+tag3   c-src/torture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/
+tag4   c-src/dostorture.c      /^(*tag4 (int sig, void (*handler) (int))) 
(int)$/
+tag4   c-src/torture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/
+tag5   c-src/dostorture.c      /^tag5 (handler, arg)$/
+tag5   c-src/torture.c /^tag5 (handler, arg)$/
+tag6   c-src/dostorture.c      /^tag6 (void (*handler) (void *), void *arg)$/
+tag6   c-src/torture.c /^tag6 (void (*handler) (void *), void *arg)$/
+tag_or_ch      c-src/emacs/src/lisp.h  3026
+taggedfname    c-src/etags.c   207
+tags   make-src/Makefile       /^tags: TAGS$/
+tags-add-tables        el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-add-tables 'ask-user$/
+tags-apropos   el-src/emacs/lisp/progmodes/etags.el    /^(defun tags-apropos 
(regexp)$/
+tags-apropos-additional-actions        el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom tags-apropos-additional-actions nil$/
+tags-apropos-function  el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-apropos-function nil$/
+tags-apropos-verbose   el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-apropos-verbose nil$/
+tags-case-fold-search  el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-case-fold-search 'default$/
+tags-complete-tags-table-file  el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-complete-tags-table-file (string predi/
+tags-completion-at-point-function      el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-completion-at-point-function ()$/
+tags-completion-table  el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-completion-table ()$/
+tags-completion-table  el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-completion-table nil$/
+tags-completion-table-function el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-completion-table-function nil$/
+tags-compression-info-list     el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom tags-compression-info-list$/
+tags-expand-table-name el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-expand-table-name (file)$/
+tags-file-name el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-file-name nil$/
+tags-included-tables   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-included-tables ()$/
+tags-included-tables   el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-included-tables nil$/
+tags-included-tables-function  el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-included-tables-function nil$/
+tags-lazy-completion-table     el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-lazy-completion-table ()$/
+tags-location-ring     el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-location-ring (make-ring xref-marker-/
+tags-loop-continue     el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-loop-continue (&optional first-time)$/
+tags-loop-eval el-src/emacs/lisp/progmodes/etags.el    /^(defun tags-loop-eval 
(form)$/
+tags-loop-operate      el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-loop-operate nil$/
+tags-loop-revert-buffers       el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom tags-loop-revert-buffers nil$/
+tags-loop-scan el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-loop-scan$/
+tags-next-table        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-next-table ()$/
+tags-query-replace     el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-query-replace (from to &optional delim/
+tags-recognize-empty-tags-table        el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-recognize-empty-tags-table ()$/
+tags-reset-tags-tables el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-reset-tags-tables ()$/
+tags-revert-without-query      el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom tags-revert-without-query nil$/
+tags-search    el-src/emacs/lisp/progmodes/etags.el    /^(defun tags-search 
(regexp &optional file-list-for/
+tags-select-tags-table el-src/emacs/lisp/progmodes/etags.el    
/^(define-button-type 'tags-select-tags-table$/
+tags-table-check-computed-list el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-table-check-computed-list ()$/
+tags-table-computed-list       el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-computed-list nil$/
+tags-table-computed-list-for   el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-computed-list-for nil$/
+tags-table-extend-computed-list        el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-table-extend-computed-list ()$/
+tags-table-files       el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-table-files ()$/
+tags-table-files       el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-table-files nil$/
+tags-table-files-function      el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-files-function nil$/
+tags-table-format-functions    el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-format-functions '(etags-recogn/
+tags-table-including   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-table-including (this-file core-only)$/
+tags-table-list        el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-table-list nil$/
+tags-table-list-member el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-table-list-member (file list)$/
+tags-table-list-pointer        el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-list-pointer nil$/
+tags-table-list-started-at     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-list-started-at nil$/
+tags-table-mode        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-table-mode ()$/
+tags-table-set-list    el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-table-set-list nil$/
+tags-tag-face  el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-tag-face 'default$/
+tags-verify-table      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-verify-table (file)$/
+tags-with-face el-src/emacs/lisp/progmodes/etags.el    /^(defmacro 
tags-with-face (face &rest body)$/
+target_multibyte       c-src/emacs/src/regex.h 407
+tcpdump        html-src/software.html  /^tcpdump$/
+teats  cp-src/c.C      127
+tee    ruby-src/test1.ru       /^    attr_accessor :tee$/
+tee=   ruby-src/test1.ru       /^    attr_accessor :tee$/
+temporarily_switch_to_single_kboard    c-src/emacs/src/keyboard.c      
/^temporarily_switch_to_single_kboard (struct frame /
+tend   c-src/etags.c   2432
+term   merc-src/accumulator.m  /^:- import_module term.$/
+terminate      objc-src/Subprocess.m   /^- terminate:sender$/
+terminateInput objc-src/Subprocess.m   /^- terminateInput$/
+test   c-src/emacs/src/lisp.h  1871
+test   cp-src/c.C      86
+test   erl-src/gs_dialog.erl   /^test() ->$/
+test   go-src/test1.go /^func test(p plus) {$/
+test   make-src/Makefile       /^test:$/
+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_crlf1     test_crlf.c     /^void test_crlf1()$/
+test_crlf2     tset_crlf.c     /^void test_crlf2()$/
+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)$/
+this   c-src/a/b/b.c   1
+this-command-keys      c-src/emacs/src/keyboard.c      /^DEFUN 
("this-command-keys", Fthis_command_keys, St/
+this-command-keys-vector       c-src/emacs/src/keyboard.c      /^DEFUN 
("this-command-keys-vector", Fthis_command_k/
+this-single-command-keys       c-src/emacs/src/keyboard.c      /^DEFUN 
("this-single-command-keys", Fthis_single_co/
+this-single-command-raw-keys   c-src/emacs/src/keyboard.c      /^DEFUN 
("this-single-command-raw-keys", Fthis_singl/
+this_command_key_count c-src/emacs/src/keyboard.c      108
+this_command_key_count_reset   c-src/emacs/src/keyboard.c      112
+this_command_keys      c-src/emacs/src/keyboard.c      107
+this_file_toc  perl-src/htlmify-cystic 29
+this_single_command_key_start  c-src/emacs/src/keyboard.c      125
+tignore        c-src/etags.c   2433
+timer_check    c-src/emacs/src/keyboard.c      /^timer_check (void)$/
+timer_check_2  c-src/emacs/src/keyboard.c      /^timer_check_2 (Lisp_Object 
timers, Lisp_Object idl/
+timer_idleness_start_time      c-src/emacs/src/keyboard.c      335
+timer_last_idleness_start_time c-src/emacs/src/keyboard.c      340
+timer_resume_idle      c-src/emacs/src/keyboard.c      /^timer_resume_idle 
(void)$/
+timer_start_idle       c-src/emacs/src/keyboard.c      /^timer_start_idle 
(void)$/
+timer_stop_idle        c-src/emacs/src/keyboard.c      /^timer_stop_idle 
(void)$/
+timers_run     c-src/emacs/src/keyboard.c      320
+tinbody        c-src/etags.c   2431
+tkeyseen       c-src/etags.c   2429
+tnone  c-src/etags.c   2428
+toc_line       perl-src/htlmify-cystic /^sub toc_line ($)$/
+toggleDescription      objc-src/PackInsp.m     /^-toggleDescription$/
+tok    c-src/etags.c   2491
+token  c-src/etags.c   2508
+token  y-src/cccp.y    437
+token  y-src/cccp.y    439
+tokenize       prol-src/natded.prolog  
/^tokenize([C1,C2,C3|Cs],Xs-Ys,TsResult):-     % spe/
+tokenizeatom   prol-src/natded.prolog  /^tokenizeatom(Atom,Ws):-$/
+tokentab2      y-src/cccp.y    442
+tool_bar_item_properties       c-src/emacs/src/keyboard.c      7970
+tool_bar_items c-src/emacs/src/keyboard.c      /^tool_bar_items (Lisp_Object 
reuse, int *nitems)$/
+tool_bar_items_vector  c-src/emacs/src/keyboard.c      7965
+toolkit_menubar_in_use c-src/emacs/src/keyboard.c      
/^toolkit_menubar_in_use (struct frame *f)$/
+top-level      c-src/emacs/src/keyboard.c      /^DEFUN ("top-level", 
Ftop_level, Stop_level, 0, 0, /
+top_level      merc-src/accumulator.m  /^:- type top_level$/
+top_level_1    c-src/emacs/src/keyboard.c      /^top_level_1 (Lisp_Object 
ignore)$/
+top_level_2    c-src/emacs/src/keyboard.c      /^top_level_2 (void)$/
+total_keys     c-src/emacs/src/keyboard.c      97
+total_size_of_entries  c-src/etags.c   /^total_size_of_entries (register node 
*np)$/
+total_surrounding      cp-src/conway.cpp       /^int 
site::total_surrounding(void)$/
+totally_unblock_input  c-src/emacs/src/keyboard.c      /^totally_unblock_input 
(void)$/
+tpcmd  c-src/h.h       15
+tpcmd  c-src/h.h       8
+track-mouse    c-src/emacs/src/keyboard.c      /^DEFUN 
("internal--track-mouse", Ftrack_mouse, Stra/
+tracking_off   c-src/emacs/src/keyboard.c      /^tracking_off (Lisp_Object 
old_value)$/
+traffic_light  cp-src/conway.cpp       /^void traffic_light(int x, int y)$/
+translate      c-src/emacs/src/regex.h 361
+treats cp-src/c.C      131
+tt     prol-src/natded.prolog  /^tt:-$/
+tt=cmtt10      tex-src/texinfo.tex     /^\\font\\deftt=cmtt10 scaled 
\\magstep1$/
+tty_read_avail_input   c-src/emacs/src/keyboard.c      /^tty_read_avail_input 
(struct terminal *terminal,$/
+ttypeseen      c-src/etags.c   2430
+typdef c-src/etags.c   2434
+type   c-src/emacs/src/gmalloc.c       145
+type   c-src/emacs/src/lisp.h  1973
+type   c-src/emacs/src/lisp.h  1980
+type   c-src/emacs/src/lisp.h  2034
+type   c-src/emacs/src/lisp.h  2112
+type   c-src/emacs/src/lisp.h  2203
+type   c-src/emacs/src/lisp.h  2276
+type   c-src/emacs/src/lisp.h  2286
+type   c-src/emacs/src/lisp.h  2296
+type   c-src/emacs/src/lisp.h  2304
+type   c-src/emacs/src/lisp.h  2364
+type   c-src/emacs/src/lisp.h  3025
+type   c-src/etags.c   2271
+typefunargs    tex-src/texinfo.tex     /^\\deftypefunargs {#3}\\endgroup %$/
+typefunargs    tex-src/texinfo.tex     /^\\deftypefunargs {#4}\\endgroup %$/
+typemargin     tex-src/texinfo.tex     /^\\newskip\\deftypemargin 
\\deftypemargin=12pt$/
+typemargin     tex-src/texinfo.tex     /^\\rlap{\\rightline{{\\rm #2}\\hskip 
\\deftypemargin}}}%/
+u      c-src/emacs/src/lisp.h  2397
+u_any  c-src/emacs/src/lisp.h  2214
+u_boolfwd      c-src/emacs/src/lisp.h  2371
+u_buffer_objfwd        c-src/emacs/src/lisp.h  2373
+u_finalizer    c-src/emacs/src/lisp.h  2219
+u_free c-src/emacs/src/lisp.h  2215
+u_intfwd       c-src/emacs/src/lisp.h  2370
+u_kboard_objfwd        c-src/emacs/src/lisp.h  2374
+u_marker       c-src/emacs/src/lisp.h  2216
+u_objfwd       c-src/emacs/src/lisp.h  2372
+u_overlay      c-src/emacs/src/lisp.h  2217
+u_save_value   c-src/emacs/src/lisp.h  2218
+unargs tex-src/texinfo.tex     /^\\defunargs {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex     /^\\defunargs {#3}\\endgroup %$/
+unblock_input  c-src/emacs/src/keyboard.c      /^unblock_input (void)$/
+unblock_input_to       c-src/emacs/src/keyboard.c      /^unblock_input_to (int 
level)$/
+unchar c-src/h.h       99
+unexpand-abbrev        c-src/abbrev.c  /^DEFUN ("unexpand-abbrev", 
Funexpand_abbrev, Sunexp/
+univ   merc-src/accumulator.m  /^:- import_module univ.$/
+unravel_univ   merc-src/accumulator.m  /^:- some [T] pred 
unravel_univ(univ::in, T::out) is/
+unread_switch_frame    c-src/emacs/src/keyboard.c      204
+unsignedp      y-src/cccp.y    112
+unwind c-src/emacs/src/lisp.h  2962
+unwind_int     c-src/emacs/src/lisp.h  2972
+unwind_ptr     c-src/emacs/src/lisp.h  2967
+unwind_void    c-src/emacs/src/lisp.h  2976
+update_accumulator_pred        merc-src/accumulator.m  /^:- pred 
update_accumulator_pred(pred_id::in, proc_/
+uprintmax_t    c-src/emacs/src/lisp.h  149
+uprintmax_t    c-src/emacs/src/lisp.h  154
+usage  perl-src/yagrip.pl      /^sub usage {$/
+usecharno      c-src/etags.c   210
+used   c-src/emacs/src/regex.h 347
+used_syntax    c-src/emacs/src/regex.h 398
+user_cmp_function      c-src/emacs/src/lisp.h  1814
+user_error     c-src/emacs/src/keyboard.c      /^user_error (const char *msg)$/
+user_hash_function     c-src/emacs/src/lisp.h  1811
+user_signal_info       c-src/emacs/src/keyboard.c      7235
+user_signals   c-src/emacs/src/keyboard.c      7250
+usfreelock_ptr/t       ada-src/etags-test-for.ada      /^   type 
usfreelock_ptr is access$/
+val    c-src/emacs/src/lisp.h  3027
+val    c-src/emacs/src/lisp.h  691
+val    c-src/getopt.h  84
+val    prol-src/natded.prolog  /^val(X) --> ['['], valseq(X), [']'].$/
+valcell        c-src/emacs/src/lisp.h  2357
+valid  c-src/etags.c   220
+valid  c-src/etags.c   2502
+validate       php-src/lce_functions.php       /^      function 
validate($value)$/
+valloc c-src/emacs/src/gmalloc.c       /^valloc (size_t size)$/
+valseq prol-src/natded.prolog  /^valseq([Val|Vals]) --> val(Val), 
plusvalseq(Vals)./
+value  c-src/emacs/src/lisp.h  687
+value  y-src/cccp.y    112
+var    c-src/emacs/src/keyboard.c      11023
+var    c-src/emacs/src/lisp.h  3137
+varargs        tex-src/texinfo.tex     /^\\defvarargs {#2}\\endgroup %$/
+varargs        tex-src/texinfo.tex     /^\\defvarargs {#3}\\endgroup %$/
+varset merc-src/accumulator.m  /^:- import_module varset.$/
+vcopy  c-src/emacs/src/lisp.h  /^vcopy (Lisp_Object v, ptrdiff_t offset, 
Lisp_Objec/
+vectorlike_header      c-src/emacs/src/lisp.h  1343
+verde  cp-src/c.C      40
+verify-tags-table-function     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar verify-tags-table-function nil$/
+verify_ascii   c-src/emacs/src/lisp.h  /^# define verify_ascii(str) (str)$/
+vignore        c-src/etags.c   2417
+visit-tags-table       el-src/emacs/lisp/progmodes/etags.el    /^(defun 
visit-tags-table (file &optional local)$/
+visit-tags-table-buffer        el-src/emacs/lisp/progmodes/etags.el    
/^(defun visit-tags-table-buffer (&optional cont)$/
+void   c-src/emacs/src/lisp.h  /^INLINE void (check_cons_list) (void) { 
lisp_h_chec/
+voidfuncptr    c-src/emacs/src/lisp.h  2108
+voidval        y-src/cccp.y    115
+wait_status_ptr_t      c.c     161
+waiting_for_input      c-src/emacs/src/keyboard.c      150
+warning        y-src/cccp.y    /^warning (msg)$/
+weak   c-src/emacs/src/lisp.h  1830
+weak_alias     c-src/emacs/src/gmalloc.c       /^weak_alias (free, cfree)$/
+web ftp publish        make-src/Makefile       /^web ftp publish:$/
+what   c-src/etags.c   252
+wheel_syms     c-src/emacs/src/keyboard.c      4628
+where  c-src/emacs/src/lisp.h  2348
+where  c-src/emacs/src/lisp.h  2980
+where  cp-src/clheir.hpp       77
+where_in_registry      cp-src/clheir.hpp       15
+windowWillClose        objcpp-src/SimpleCalc.M /^- windowWillClose:sender$/
+wipe_kboard    c-src/emacs/src/keyboard.c      /^wipe_kboard (KBOARD *kb)$/
+womboid        c-src/h.h       63
+womboid        c-src/h.h       75
+word_size      c-src/emacs/src/lisp.h  1473
+write  php-src/lce_functions.php       /^      function write($save="yes")$/
+write  php-src/lce_functions.php       /^      function write()$/
+write1=        ruby-src/test1.ru       /^    attr_reader :read1 , :read2; 
attr_writer :writ/
+write2=        ruby-src/test1.ru       /^    attr_reader :read1 , :read2; 
attr_writer :writ/
+write_abbrev   c-src/abbrev.c  /^write_abbrev (sym, stream)$/
+write_classname        c-src/etags.c   /^write_classname (linebuffer *cn, 
const char *quali/
+write_lex      prol-src/natded.prolog  /^write_lex(File):-$/
+write_lex_cat  prol-src/natded.prolog  /^write_lex_cat(File):-$/
+write_xyc      cp-src/screen.cpp       /^void write_xyc(int x, int y, char c)$/
+writebreak     prol-src/natded.prolog  /^writebreak([]).$/
+writebreaklex  prol-src/natded.prolog  /^writebreaklex([]).$/
+writecat       prol-src/natded.prolog  
/^writecat(np(ind(sng),nm(_)),np,[],[]):-!.$/
+writelist      prol-src/natded.prolog  /^writelist([der(Ws)|Ws2]):-$/
+writelistsubs  prol-src/natded.prolog  /^writelistsubs([],X):-$/
+writenamestring        pas-src/common.pas      /^procedure 
writenamestring;(*($/
+writesubs      prol-src/natded.prolog  /^writesubs([]).$/
+writesups      prol-src/natded.prolog  /^writesups([]).$/
+written        c-src/etags.c   211
+x      c.c     153
+x      c.c     179
+x      c.c     188
+x      c.c     189
+x      cp-src/c.C      53
+x      cp-src/c.C      80
+x      cp-src/clheir.hpp       49
+x      cp-src/clheir.hpp       58
+x      cp-src/conway.hpp       7
+x      cp-src/fail.C   10
+x      cp-src/fail.C   44
+x      tex-src/texinfo.tex     /^\\refx{#1-snt}{} [\\printednodename], 
page\\tie\\refx{/
+x-get-selection-internal       c.c     /^       Fx_get_selection_internal, 
Sx_get_selection/
+x-get-selection-internal       c.c     /^DEFUN ("x-get-selection-internal", 
Fx_get_selectio/
+xcar_addr      c-src/emacs/src/lisp.h  /^xcar_addr (Lisp_Object c)$/
+xcdr_addr      c-src/emacs/src/lisp.h  /^xcdr_addr (Lisp_Object c)$/
+xdiff  make-src/Makefile       /^xdiff: ETAGS EXTAGS ${infiles}$/
+xmalloc        c-src/etags.c   /^xmalloc (size_t size)$/
+xnew   c-src/etags.c   /^#define xnew(n, Type)      ((Type *) xmalloc ((n) /
+xrealloc       c-src/etags.c   /^xrealloc (void *ptr, size_t size)$/
+xref-etags-location    el-src/emacs/lisp/progmodes/etags.el    /^(defclass 
xref-etags-location (xref-location)$/
+xref-location-line     el-src/emacs/lisp/progmodes/etags.el    /^(cl-defmethod 
xref-location-line ((l xref-etags-lo/
+xref-location-marker   el-src/emacs/lisp/progmodes/etags.el    /^(cl-defmethod 
xref-location-marker ((l xref-etags-/
+xref-make-etags-location       el-src/emacs/lisp/progmodes/etags.el    
/^(defun xref-make-etags-location (tag-info file)$/
+xrnew  c-src/etags.c   /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/
+xx     make-src/Makefile       /^xx="this line is here because of a fontlock 
bug$/
+xyz    ruby-src/test1.ru       /^    alias_method :xyz,$/
+y      cp-src/clheir.hpp       49
+y      cp-src/clheir.hpp       58
+y      cp-src/conway.hpp       7
+y-get-selection-internal       c.c     /^      Fy_get_selection_internal, 
Sy_get_selection_/
+yyalloc        /usr/share/bison/bison.simple   83
+yyalloc        /usr/share/bison/bison.simple   84
+yyclearin      /usr/share/bison/bison.simple   149
+yyclearin      /usr/share/bison/bison.simple   150
+yydebug        /usr/share/bison/bison.simple   237
+yydebug        /usr/share/bison/bison.simple   238
+yyerrhandle    /usr/share/bison/bison.simple   848
+yyerrlab1      /usr/share/bison/bison.simple   823
+yyerrok        /usr/share/bison/bison.simple   148
+yyerrok        /usr/share/bison/bison.simple   149
+yyerror        y-src/cccp.y    /^yyerror (s)$/
+yyerrstatus    /usr/share/bison/bison.simple   846
+yylex  y-src/cccp.y    /^yylex ()$/
+yyls   /usr/share/bison/bison.simple   88
+yyls   /usr/share/bison/bison.simple   89
+yylsp  /usr/share/bison/bison.simple   748
+yylsp  /usr/share/bison/bison.simple   921
+yymemcpy       /usr/share/bison/bison.simple   /^yymemcpy (char *yyto, const 
char *yyfrom, YYSIZE_T/
+yymemcpy       /usr/share/bison/bison.simple   264
+yymemcpy       /usr/share/bison/bison.simple   265
+yyn    /usr/share/bison/bison.simple   755
+yyn    /usr/share/bison/bison.simple   861
+yyn    /usr/share/bison/bison.simple   895
+yyn    /usr/share/bison/bison.simple   903
+yynewstate     /usr/share/bison/bison.simple   763
+yynewstate     /usr/share/bison/bison.simple   925
+yyparse        /usr/share/bison/bison.simple   /^yyparse (YYPARSE_PARAM_ARG)$/
+yyresult       /usr/share/bison/bison.simple   932
+yyresult       /usr/share/bison/bison.simple   939
+yyresult       /usr/share/bison/bison.simple   947
+yyreturn       /usr/share/bison/bison.simple   933
+yyreturn       /usr/share/bison/bison.simple   940
+yyss   /usr/share/bison/bison.simple   85
+yyss   /usr/share/bison/bison.simple   86
+yystate        /usr/share/bison/bison.simple   757
+yystate        /usr/share/bison/bison.simple   761
+yystate        /usr/share/bison/bison.simple   875
+yystate        /usr/share/bison/bison.simple   924
+yystpcpy       /usr/share/bison/bison.simple   /^yystpcpy (char *yydest, const 
char *yysrc)$/
+yystpcpy       /usr/share/bison/bison.simple   316
+yystpcpy       /usr/share/bison/bison.simple   317
+yystrlen       /usr/share/bison/bison.simple   /^yystrlen (const char *yystr)$/
+yystrlen       /usr/share/bison/bison.simple   293
+yystrlen       /usr/share/bison/bison.simple   294
+yyvs   /usr/share/bison/bison.simple   86
+yyvs   /usr/share/bison/bison.simple   87
+yyvsp  /usr/share/bison/bison.simple   746
+yyvsp  /usr/share/bison/bison.simple   919
+z      c.c     144
+z      c.c     164
+z      cp-src/clheir.hpp       49
+z      cp-src/clheir.hpp       58
+|      tex-src/texinfo.tex     /^\\def|{{\\tt \\char '174}}$/
+~      tex-src/texinfo.tex     /^\\def~{{\\tt \\char '176}}$/
+~A     cp-src/c.C      /^A::~A() {}$/
+~B     cp-src/c.C      /^    ~B() {};$/
+~MDiagArray2   cp-src/MDiagArray2.h    /^  ~MDiagArray2 (void) { }$/
+~generic_object        cp-src/clheir.cpp       
/^generic_object::~generic_object(void)$/
diff --git a/test/manual/etags/CTAGS.good_update 
b/test/manual/etags/CTAGS.good_update
new file mode 100644
index 0000000000..c618b9582d
--- /dev/null
+++ b/test/manual/etags/CTAGS.good_update
@@ -0,0 +1,4483 @@
+
+#a-defer-word  forth-src/test-forth.fth        /^defer #a-defer-word$/
+#some-storage  forth-src/test-forth.fth        /^2000 buffer: #some-storage$/
+$0x80  c-src/sysdep.h  32
+$SYS_##syscall_na      c-src/sysdep.h  31
+$domain        php-src/lce_functions.php       175
+$filename      php-src/lce_functions.php       174
+$ignore_ws     php-src/lce_functions.php       171
+$memassign     php-src/ptest.php       9
+$memassign_space       php-src/ptest.php       10
+$member        php-src/ptest.php       8
+$msgid php-src/lce_functions.php       107
+$msgid php-src/lce_functions.php       165
+$msgid_lc      php-src/lce_functions.php       113
+$msgstr        php-src/lce_functions.php       108
+$msgstr        php-src/lce_functions.php       166
+$msgstr_lc     php-src/lce_functions.php       114
+$po_entries    php-src/lce_functions.php       172
+$poe_num       php-src/lce_functions.php       173
+$por_a php-src/lce_functions.php       500
+$prefix        php-src/lce_functions.php       72
+$state php-src/lce_functions.php       170
+$sys_comment   php-src/lce_functions.php       110
+$sys_comment   php-src/lce_functions.php       168
+$sys_comment_lc        php-src/lce_functions.php       116
+$test  php-src/ptest.php       12
+$unk_comment   php-src/lce_functions.php       111
+$unk_comment   php-src/lce_functions.php       169
+$unk_comment_lc        php-src/lce_functions.php       117
+$user_comment  php-src/lce_functions.php       109
+$user_comment  php-src/lce_functions.php       167
+$user_comment_lc       php-src/lce_functions.php       115
+${CHECKOBJS}   make-src/Makefile       /^${CHECKOBJS}: CFLAGS=-g3 
-DNULLFREECHECK=0$/
+%cdiff make-src/Makefile       /^%cdiff: CTAGS% CTAGS ${infiles}$/
+%ediff make-src/Makefile       /^%ediff: ETAGS% ETAGS ${infiles}$/
+($_,$flag,$opt,$f,$r,@temp     perl-src/yagrip.pl      8
+($prog,$_,@list        perl-src/yagrip.pl      39
+($string,$flag,@string,@temp,@last     perl-src/yagrip.pl      40
+(a-forth-constant      forth-src/test-forth.fth        /^constant 
(a-forth-constant$/
+(another-forth-word)   forth-src/test-forth.fth        /^: 
(another-forth-word) ( -- )$/
+(foo)  forth-src/test-forth.fth        /^: (foo) 1 ;$/
++      ruby-src/test.rb        /^        def +(y)$/
++      tex-src/texinfo.tex     /^\\def+{{\\tt \\char 43}}$/
+.PRECIOUS      make-src/Makefile       /^.PRECIOUS: ETAGS CTAGS ETAGS16 
CTAGS16 ETAGS17 CTA/
+/.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
+/.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/space \/exclam/
+/A     ps-src/rfc1245.ps       /^\/A { $/
+/Acircumflex   ps-src/rfc1245.ps       /^\/Acircumflex \/Ecircumflex \/Aacute 
\/Edieresis \/Egra/
+/B     ps-src/rfc1245.ps       /^\/B { $/
+/BEGINBITMAP2BIT       ps-src/rfc1245.ps       /^\/BEGINBITMAP2BIT { $/
+/BEGINBITMAP2BITc      ps-src/rfc1245.ps       /^\/BEGINBITMAP2BITc { $/
+/BEGINBITMAPBW ps-src/rfc1245.ps       /^\/BEGINBITMAPBW { $/
+/BEGINBITMAPBWc        ps-src/rfc1245.ps       /^\/BEGINBITMAPBWc { $/
+/BEGINBITMAPGRAY       ps-src/rfc1245.ps       /^\/BEGINBITMAPGRAY { $/
+/BEGINBITMAPGRAYc      ps-src/rfc1245.ps       /^\/BEGINBITMAPGRAYc { $/
+/BEGINPRINTCODE        ps-src/rfc1245.ps       /^\/BEGINPRINTCODE { $/
+/BF    ps-src/rfc1245.ps       /^\/BF { $/
+/BITMAPCOLOR   ps-src/rfc1245.ps       /^\/BITMAPCOLOR { $/
+/BITMAPCOLORc  ps-src/rfc1245.ps       /^\/BITMAPCOLORc { $/
+/BITMAPGRAY    ps-src/rfc1245.ps       /^\/BITMAPGRAY { $/
+/BITMAPGRAYc   ps-src/rfc1245.ps       /^\/BITMAPGRAYc { $/
+/C     ps-src/rfc1245.ps       /^\/C { $/
+/COMMONBITMAP  ps-src/rfc1245.ps       /^\/COMMONBITMAP { $/
+/COMMONBITMAPc ps-src/rfc1245.ps       /^\/COMMONBITMAPc { $/
+/D     ps-src/rfc1245.ps       /^\/D {curveto} bind def$/
+/DiacriticEncoding     ps-src/rfc1245.ps       /^\/DiacriticEncoding [$/
+/E     ps-src/rfc1245.ps       /^\/E {lineto} bind def$/
+/ENDBITMAP     ps-src/rfc1245.ps       /^\/ENDBITMAP {$/
+/ENDPRINTCODE  ps-src/rfc1245.ps       /^\/ENDPRINTCODE {$/
+/F     ps-src/rfc1245.ps       /^\/F { $/
+/FMBEGINEPSF   ps-src/rfc1245.ps       /^\/FMBEGINEPSF { $/
+/FMBEGINPAGE   ps-src/rfc1245.ps       /^\/FMBEGINPAGE { $/
+/FMDEFINEFONT  ps-src/rfc1245.ps       /^\/FMDEFINEFONT { $/
+/FMDOCUMENT    ps-src/rfc1245.ps       /^\/FMDOCUMENT { $/
+/FMENDEPSF     ps-src/rfc1245.ps       /^\/FMENDEPSF {$/
+/FMENDPAGE     ps-src/rfc1245.ps       /^\/FMENDPAGE {$/
+/FMLOCAL       ps-src/rfc1245.ps       /^\/FMLOCAL {$/
+/FMNORMALIZEGRAPHICS   ps-src/rfc1245.ps       /^\/FMNORMALIZEGRAPHICS { $/
+/FMVERSION     ps-src/rfc1245.ps       /^\/FMVERSION {$/
+/FMversion     ps-src/rfc1245.ps       /^\/FMversion (2.0) def $/
+/Fmcc  ps-src/rfc1245.ps       /^\/Fmcc {$/
+/FrameDict     ps-src/rfc1245.ps       /^\/FrameDict 190 dict def $/
+/G     ps-src/rfc1245.ps       /^\/G { $/
+/H     ps-src/rfc1245.ps       /^\/H { $/
+/Icircumflex   ps-src/rfc1245.ps       /^\/Icircumflex \/Idieresis \/Igrave 
\/Oacute \/Ocircumfl/
+/L     ps-src/rfc1245.ps       /^\/L \/M \/N \/O \/P \/Q \/R \/S \/T \/U \/V 
\/W \/X \/Y \/Z \/brac/
+/L     ps-src/rfc1245.ps       /^\/L { $/
+/M     ps-src/rfc1245.ps       /^\/M {newpath moveto} bind def$/
+/N     ps-src/rfc1245.ps       /^\/N { $/
+/Ntilde        ps-src/rfc1245.ps       /^\/Ntilde \/Odieresis \/Udieresis 
\/aacute \/agrave \/aci/
+/O     ps-src/rfc1245.ps       /^\/O {closepath} bind def$/
+/Otilde        ps-src/rfc1245.ps       /^\/Otilde \/OE \/oe \/endash \/emdash 
\/quotedblleft \/quo/
+/P     ps-src/rfc1245.ps       /^\/P { $/
+/PF    ps-src/rfc1245.ps       /^\/PF { $/
+/R     ps-src/rfc1245.ps       /^\/R { $/
+/RF    ps-src/rfc1245.ps       /^\/RF { $/
+/RR    ps-src/rfc1245.ps       /^\/RR { $/
+/ReEncode      ps-src/rfc1245.ps       /^\/ReEncode { $/
+/S     ps-src/rfc1245.ps       /^\/S { $/
+/SF    ps-src/rfc1245.ps       /^\/SF { $/
+/T     ps-src/rfc1245.ps       /^\/T { $/
+/TF    ps-src/rfc1245.ps       /^\/TF { $/
+/U     ps-src/rfc1245.ps       /^\/U { $/
+/Uacute        ps-src/rfc1245.ps       /^\/Uacute \/Ucircumflex \/Ugrave 
\/dotlessi \/circumflex/
+/V     ps-src/rfc1245.ps       /^\/V { $/
+/W     ps-src/rfc1245.ps       /^\/W { $/
+/X     ps-src/rfc1245.ps       /^\/X { $/
+/Y     ps-src/rfc1245.ps       /^\/Y { $/
+/Z     ps-src/rfc1245.ps       /^\/Z {$/
+/atilde        ps-src/rfc1245.ps       /^\/atilde \/aring \/ccedilla \/eacute 
\/egrave \/ecircumf/
+/bl    ps-src/rfc1245.ps       /^\/bl { $/
+/braceright    ps-src/rfc1245.ps       /^\/braceright \/asciitilde \/.notdef 
\/Adieresis \/Aring/
+/bracketright  ps-src/rfc1245.ps       /^\/bracketright \/asciicircum 
\/underscore \/grave \/a \//
+/breve ps-src/rfc1245.ps       /^\/breve \/dotaccent \/ring \/cedilla 
\/hungarumlaut \/og/
+/cfs   ps-src/rfc1245.ps       /^\/cfs { $/
+/colorsetup    ps-src/rfc1245.ps       /^\/colorsetup {$/
+/desperatepapersize    ps-src/rfc1245.ps       /^\/desperatepapersize {$/
+/dieresis      ps-src/rfc1245.ps       /^\/dieresis \/.notdef \/AE \/Oslash 
\/.notdef \/.notdef \//
+/dmatrix       ps-src/rfc1245.ps       /^\/dmatrix matrix def$/
+/dnormalize    ps-src/rfc1245.ps       /^\/dnormalize {$/
+/dpi   ps-src/rfc1245.ps       /^\/dpi    72 0 dmatrix defaultmatrix 
dtransform$/
+/exclamdown    ps-src/rfc1245.ps       /^\/exclamdown \/logicalnot \/.notdef 
\/florin \/.notdef /
+/fakecolorsetup        ps-src/rfc1245.ps       /^\/fakecolorsetup {$/
+/fillprocs     ps-src/rfc1245.ps       /^\/fillprocs 32 array def$/
+/fl    ps-src/rfc1245.ps       /^\/fl { $/
+/fraction      ps-src/rfc1245.ps       /^\/fraction \/currency \/guilsinglleft 
\/guilsinglright/
+/freq  ps-src/rfc1245.ps       /^\/freq dpi 18.75 div 8 div round dup 0 eq 
{pop 1} i/
+/gn    ps-src/rfc1245.ps       /^\/gn { $/
+/graymode      ps-src/rfc1245.ps       /^\/graymode true def$/
+/grayness      ps-src/rfc1245.ps       /^\/grayness {$/
+/guillemotleft ps-src/rfc1245.ps       /^\/guillemotleft \/guillemotright 
\/ellipsis \/.notdef /
+/home/www/pub/etags.c.gz       make-src/Makefile       
/^\/home\/www\/pub\/etags.c.gz: etags.c$/
+/home/www/pub/software/unix/etags.tar.gz       make-src/Makefile       
/^\/home\/www\/pub\/software\/unix\/etags.tar.gz: Makefile/
+/hx    ps-src/rfc1245.ps       /^\/hx { $/
+/i     ps-src/rfc1245.ps       /^\/i \/j \/k \/l \/m \/n \/o \/p \/q \/r \/s 
\/t \/u \/v \/w \/x \/y/
+/iacute        ps-src/rfc1245.ps       /^\/iacute \/igrave \/icircumflex 
\/idieresis \/ntilde \/o/
+/ic    ps-src/rfc1245.ps       /^\/ic [ $/
+/inch  ps-src/rfc1245.ps       /^\/inch {72 mul} def$/
+/ip    ps-src/rfc1245.ps       /^\/ip { $/
+/less  ps-src/rfc1245.ps       /^\/less \/equal \/greater \/question \/at \/A 
\/B \/C \/D \/E/
+/lnormalize    ps-src/rfc1245.ps       /^\/lnormalize { $/
+/manualpapersize       ps-src/rfc1245.ps       /^\/manualpapersize {$/
+/max   ps-src/rfc1245.ps       /^\/max {2 copy lt {exch} if pop} bind def$/
+/min   ps-src/rfc1245.ps       /^\/min {2 copy gt {exch} if pop} bind def$/
+/ms    ps-src/rfc1245.ps       /^\/ms { $/
+/nbluet        ps-src/rfc1245.ps       /^\/nbluet 256 array def$/
+/ngrayt        ps-src/rfc1245.ps       /^\/ngrayt 256 array def$/
+/ngreent       ps-src/rfc1245.ps       /^\/ngreent 256 array def$/
+/normalize     ps-src/rfc1245.ps       /^\/normalize {$/
+/nredt ps-src/rfc1245.ps       /^\/nredt 256 array def$/
+/numbersign    ps-src/rfc1245.ps       /^\/numbersign \/dollar \/percent 
\/ampersand \/quotesing/
+/ocircumflex   ps-src/rfc1245.ps       /^\/ocircumflex \/odieresis \/otilde 
\/uacute \/ugrave \/u/
+/ordfeminine   ps-src/rfc1245.ps       /^\/ordfeminine \/ordmasculine 
\/.notdef \/ae \/oslash \/q/
+/pagedimen     ps-src/rfc1245.ps       /^\/pagedimen { $/
+/papersize     ps-src/rfc1245.ps       /^\/papersize {$/
+/paragraph     ps-src/rfc1245.ps       /^\/paragraph \/germandbls \/registered 
\/copyright \/tra/
+/parenright    ps-src/rfc1245.ps       /^\/parenright \/asterisk \/plus 
\/comma \/hyphen \/period/
+/periodcentered        ps-src/rfc1245.ps       /^\/periodcentered 
\/quotesinglbase \/quotedblbase \/per/
+/quoteleft     ps-src/rfc1245.ps       /^\/quoteleft \/quoteright \/.notdef 
\/.notdef \/ydieresi/
+/restorematrix ps-src/rfc1245.ps       /^\/restorematrix {$/
+/s1    ps-src/rfc1245.ps       /^\/s1 1 string def$/
+/sangle        ps-src/rfc1245.ps       /^\/sangle 1 0 dmatrix defaultmatrix 
dtransform exch /
+/savematrix    ps-src/rfc1245.ps       /^\/savematrix {$/
+/setmanualfeed ps-src/rfc1245.ps       /^\/setmanualfeed {$/
+/setpapername  ps-src/rfc1245.ps       /^\/setpapername { $/
+/setpattern    ps-src/rfc1245.ps       /^\/setpattern {$/
+/two   ps-src/rfc1245.ps       /^\/two \/three \/four \/five \/six \/seven 
\/eight \/nine \//
+/udieresis     ps-src/rfc1245.ps       /^\/udieresis \/dagger \/.notdef \/cent 
\/sterling \/secti/
+/wbytes        ps-src/rfc1245.ps       /^\/wbytes { $/
+/wh    ps-src/rfc1245.ps       /^\/wh { $/
+/yen   ps-src/rfc1245.ps       /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef 
\/.notdef /
+2const forth-src/test-forth.fth        /^3 4 2constant 2const$/
+2val   forth-src/test-forth.fth        /^2const 2value 2val$/
+2var   forth-src/test-forth.fth        /^2variable 2var$/
+:a-forth-dictionary-entry      forth-src/test-forth.fth        /^create 
:a-forth-dictionary-entry$/
+<      tex-src/texinfo.tex     /^\\def<{{\\tt \\less}}$/
+<<     ruby-src/test.rb        /^        def <<(y)$/
+<=     ruby-src/test.rb        /^        def <=(y)$/
+<=>    ruby-src/test.rb        /^        def <=>(y)$/
+=      tex-src/texinfo.tex     /^\\global\\def={{\\tt \\char 61}}}$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\appendixsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\numberedsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\unnumberedsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = \\appendixsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = \\numberedsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = 
\\unnumberedsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\appendixsubsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\numberedsubsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\unnumberedsubsubsec$/
+=/f    ada-src/etags-test-for.ada      /^   function "=" (L, R : 
System.Address) return Boo/
+==     ruby-src/test.rb        /^        def ==(y)$/
+===    ruby-src/test.rb        /^        def ===(y)$/
+=\indexdummyfont       tex-src/texinfo.tex     /^\\let\\cite=\\indexdummyfont$/
+=\relax        tex-src/texinfo.tex     /^\\let\\appendix=\\relax$/
+=\relax        tex-src/texinfo.tex     /^\\let\\chapter=\\relax$/
+=\relax        tex-src/texinfo.tex     /^\\let\\section=\\relax$/
+=\relax        tex-src/texinfo.tex     /^\\let\\subsection=\\relax$/
+=\relax        tex-src/texinfo.tex     /^\\let\\subsubsection=\\relax$/
+=\smartitalic  tex-src/texinfo.tex     /^\\let\\cite=\\smartitalic$/
+=starts-with-equals!   scm-src/test.scm        /^(define =starts-with-equals! 
#t)$/
+>      tex-src/texinfo.tex     /^\\def>{{\\tt \\gtr}}$/
+>field1        forth-src/test-forth.fth        /^   9   field   >field1$/
+>field2        forth-src/test-forth.fth        /^   5   field   >field2$/
+A      c.c     162
+A      cp-src/c.C      /^void A::A() {}$/
+A      cp-src/c.C      117
+A      cp-src/c.C      39
+A      cp-src/c.C      56
+A      cp-src/c.C      57
+A      cp-src/c.C      73
+A      cp-src/fail.C   23
+A      cp-src/fail.C   7
+A      ruby-src/test1.ru       /^class A$/
+A      ruby-src/test1.ru       /^module A$/
+ABC    ruby-src/test1.ru       11
+ADASRC make-src/Makefile       /^ADASRC=etags-test-for.ada 2ataspri.adb 
2ataspri.ad/
+ADDRESS        c-src/emacs/src/gmalloc.c       /^#define ADDRESS(B)    ((void 
*) (((B) - 1) * BLOCKSIZ/
+ALIGNOF_STRUCT_LISP_VECTOR     c-src/emacs/src/lisp.h  1378
+ALLOCATED_BEFORE_DUMPING       c-src/emacs/src/gmalloc.c       /^#define 
ALLOCATED_BEFORE_DUMPING(P) \\$/
+ALLOCATE_PSEUDOVECTOR  c-src/emacs/src/lisp.h  /^#define 
ALLOCATE_PSEUDOVECTOR(type, field, tag)                       /
+ALLOCATE_ZEROED_PSEUDOVECTOR   c-src/emacs/src/lisp.h  /^#define 
ALLOCATE_ZEROED_PSEUDOVECTOR(type, field, /
+AND    y-src/cccp.c    11
+ANSIC  c-src/h.h       84
+ANSIC  c-src/h.h       85
+AREF   c-src/emacs/src/lisp.h  /^AREF (Lisp_Object array, ptrdiff_t idx)$/
+ARGS   make-src/Makefile       /^ARGS=- < srclist$/
+ARITH_EQUAL    c-src/emacs/src/lisp.h  3498
+ARITH_GRTR     c-src/emacs/src/lisp.h  3501
+ARITH_GRTR_OR_EQUAL    c-src/emacs/src/lisp.h  3503
+ARITH_LESS     c-src/emacs/src/lisp.h  3500
+ARITH_LESS_OR_EQUAL    c-src/emacs/src/lisp.h  3502
+ARITH_NOTEQUAL c-src/emacs/src/lisp.h  3499
+ARRAYELTS      c-src/emacs/src/lisp.h  /^#define ARRAYELTS(arr) (sizeof (arr) 
\/ sizeof (arr/
+ARRAYP c-src/emacs/src/lisp.h  /^ARRAYP (Lisp_Object x)$/
+ARRAY_MARK_FLAG        c-src/emacs/src/lisp.h  768
+ASCII_CHAR_P   c-src/emacs/src/lisp.h  /^#define ASCII_CHAR_P(c) UNSIGNED_CMP 
(c, <, 0x80)$/
+ASET   c-src/emacs/src/lisp.h  /^ASET (Lisp_Object array, ptrdiff_t idx, 
Lisp_Objec/
+ASIZE  c-src/emacs/src/lisp.h  /^ASIZE (Lisp_Object array)$/
+ASRC   make-src/Makefile       /^ASRC=empty.zz empty.zz.gz$/
+AST_Array::AST_Array   cp-src/c.C      /^AST_Array::AST_Array(UTL_ScopedName 
*n, unsigned l/
+AST_ConcreteType::AST_ConcreteType     cp-src/c.C      
/^AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeT/
+AST_Root       cp-src/c.C      92
+AT     cp-src/c.C      52
+AU     cp-src/c.C      53
+AUTOLOADP      c-src/emacs/src/lisp.h  /^AUTOLOADP (Lisp_Object x)$/
+AUTO_CONS      c-src/emacs/src/lisp.h  /^#define AUTO_CONS(name, a, b) 
Lisp_Object name = A/
+AUTO_CONS_EXPR c-src/emacs/src/lisp.h  /^#define AUTO_CONS_EXPR(a, b) \\$/
+AUTO_LIST1     c-src/emacs/src/lisp.h  /^#define AUTO_LIST1(name, a)           
                                \\$/
+AUTO_LIST2     c-src/emacs/src/lisp.h  /^#define AUTO_LIST2(name, a, b)        
                                        \\$/
+AUTO_LIST3     c-src/emacs/src/lisp.h  /^#define AUTO_LIST3(name, a, b, c)     
                                \\$/
+AUTO_LIST4     c-src/emacs/src/lisp.h  /^#define AUTO_LIST4(name, a, b, c, d)  
                                \\$/
+AUTO_STRING    c-src/emacs/src/lisp.h  /^#define AUTO_STRING(name, str)        
                                        \\$/
+AVAIL_ALLOCA   c-src/emacs/src/lisp.h  /^#define AVAIL_ALLOCA(size) (sa_avail 
-= (size), al/
+Abort_Handler_Pointer/t        ada-src/2ataspri.ads    /^   type 
Abort_Handler_Pointer is access procedure /
+Abort_Task/p   ada-src/2ataspri.adb    /^   procedure Abort_Task (T : TCB_Ptr) 
is$/
+Abort_Task/p   ada-src/2ataspri.ads    /^   procedure Abort_Task (T : 
TCB_Ptr);$/
+Abort_Wrapper/p        ada-src/2ataspri.adb    /^   procedure Abort_Wrapper$/
+Ada_funcs      c-src/etags.c   /^Ada_funcs (FILE *inf)$/
+Ada_getit      c-src/etags.c   /^Ada_getit (FILE *inf, const char 
*name_qualifier)$/
+Ada_help       c-src/etags.c   475
+Ada_suffixes   c-src/etags.c   473
+AddNullToNmStr pas-src/common.pas      /^function AddNullToNmStr; (*($/
+Address_To_Call_State/f        ada-src/2ataspri.adb    /^      function 
Address_To_Call_State is new$/
+Address_To_TCB_Ptr/f   ada-src/2ataspri.ads    /^   function 
Address_To_TCB_Ptr is new$/
+Advanced usage tex-src/gzip.texi       /^@node Advanced usage, Environment, 
Invoking gzip, /
+Aligned_Cons   c-src/emacs/src/lisp.h  4670
+Aligned_String c-src/emacs/src/lisp.h  4676
+AppendTextString       pas-src/common.pas      /^function 
AppendTextString;(*($/
+Arith_Comparison       c-src/emacs/src/lisp.h  3497
+Asm_help       c-src/etags.c   504
+Asm_labels     c-src/etags.c   /^Asm_labels (FILE *inf)$/
+Asm_suffixes   c-src/etags.c   493
+B      cp-src/c.C      /^void B::B() {}$/
+B      cp-src/c.C      122
+B      cp-src/c.C      54
+B      cp-src/c.C      56
+B      cp-src/c.C      74
+B      cp-src/fail.C   24
+B      cp-src/fail.C   8
+B      ruby-src/test1.ru       /^  class B$/
+BE_Node        cp-src/c.C      /^void BE_Node::BE_Node() {}$/
+BE_Node        cp-src/c.C      77
+BITS_PER_BITS_WORD     c-src/emacs/src/lisp.h  125
+BITS_PER_BITS_WORD     c-src/emacs/src/lisp.h  129
+BITS_PER_CHAR  c-src/emacs/src/lisp.h  136
+BITS_PER_EMACS_INT     c-src/emacs/src/lisp.h  139
+BITS_PER_LONG  c-src/emacs/src/lisp.h  138
+BITS_PER_SHORT c-src/emacs/src/lisp.h  137
+BITS_WORD_MAX  c-src/emacs/src/lisp.h  124
+BITS_WORD_MAX  c-src/emacs/src/lisp.h  128
+BLACK  cp-src/screen.hpp       12
+BLOCK  c-src/emacs/src/gmalloc.c       /^#define BLOCK(A)      (((char *) (A) 
- _heapbase) \/ BLO/
+BLOCKIFY       c-src/emacs/src/gmalloc.c       /^#define BLOCKIFY(SIZE)        
(((SIZE) + BLOCKSIZE - 1) \//
+BLOCKLOG       c-src/emacs/src/gmalloc.c       125
+BLOCKSIZE      c-src/emacs/src/gmalloc.c       126
+BLUE   cp-src/screen.hpp       13
+BOOL_VECTOR_BITS_PER_CHAR      c-src/emacs/src/lisp.h  114
+BOOL_VECTOR_BITS_PER_CHAR      c-src/emacs/src/lisp.h  115
+BOOL_VECTOR_P  c-src/emacs/src/lisp.h  /^BOOL_VECTOR_P (Lisp_Object a)$/
+BROWN  cp-src/screen.hpp       18
+BUFFERP        c-src/emacs/src/lisp.h  /^BUFFERP (Lisp_Object a)$/
+BUFFERSIZE     objc-src/Subprocess.h   43
+BUFFER_OBJFWDP c-src/emacs/src/lisp.h  /^BUFFER_OBJFWDP (union Lisp_Fwd *a)$/
+BYTE_MARK_STACK        c-src/emacs/src/lisp.h  3181
+Bar    lua-src/test.lua        /^function Square.something:Bar ()$/
+Bar    perl-src/kai-test.pl    /^package Bar;$/
+Barrier_Function_Pointer/t     ada-src/etags-test-for.ada      /^   type 
Barrier_Function_Pointer is access$/
+Bidule/b       ada-src/etags-test-for.ada      /^  protected body Bidule is$/
+Bidule/b       ada-src/waroquiers.ada  /^  protected body Bidule is$/
+Bidule/t       ada-src/etags-test-for.ada      /^  protected Bidule is$/
+Bidule/t       ada-src/waroquiers.ada  /^  protected Bidule is$/
+Body_Required/f        ada-src/etags-test-for.ada      /^   function 
Body_Required$/
+Boo    cp-src/c.C      /^    Boo(int _i, int _a, int _b) : i(_i), a(_a), b(/
+Boo    cp-src/c.C      129
+Boo::Boo       cp-src/c.C      /^Boo::Boo(Boo) :$/
+ButtonBar      pyt-src/server.py       /^def ButtonBar(frame, legend, ref, 
alternatives, co/
+C      cp-src/fail.C   /^                         C(int i) {x = i;}$/
+C      cp-src/fail.C   25
+C      cp-src/fail.C   9
+CALLMANY       c-src/emacs/src/lisp.h  /^#define CALLMANY(f, array) (f) 
(ARRAYELTS (array),/
+CALLN  c-src/emacs/src/lisp.h  /^#define CALLN(f, ...) CALLMANY (f, 
((Lisp_Object [/
+CAR    c-src/emacs/src/lisp.h  /^CAR (Lisp_Object c)$/
+CAR_SAFE       c-src/emacs/src/lisp.h  /^CAR_SAFE (Lisp_Object c)$/
+CATCHER        c-src/emacs/src/lisp.h  3021
+CDR    c-src/emacs/src/lisp.h  /^CDR (Lisp_Object c)$/
+CDR_SAFE       c-src/emacs/src/lisp.h  /^CDR_SAFE (Lisp_Object c)$/
+CFLAGS make-src/Makefile       /^CFLAGS=${WARNINGS} -ansi -g3 # -pg -O$/
+CHAR   c-src/etags.c   /^#define CHAR(x)               ((unsigned int)(x) & 
(CHARS - 1))/
+CHAR   y-src/cccp.c    7
+CHARACTERBITS  c-src/emacs/src/lisp.h  2457
+CHARS  c-src/etags.c   157
+CHARTAB_SIZE_BITS      c-src/emacs/src/lisp.h  1565
+CHARTAB_SIZE_BITS_0    c-src/emacs/src/lisp.h  1567
+CHARTAB_SIZE_BITS_1    c-src/emacs/src/lisp.h  1568
+CHARTAB_SIZE_BITS_2    c-src/emacs/src/lisp.h  1569
+CHARTAB_SIZE_BITS_3    c-src/emacs/src/lisp.h  1570
+CHAR_ALT       c-src/emacs/src/lisp.h  2445
+CHAR_BIT       c-src/emacs/src/lisp.h  2957
+CHAR_BIT       c-src/emacs/src/lisp.h  2959
+CHAR_BIT       c-src/emacs/src/lisp.h  2964
+CHAR_BIT       c-src/emacs/src/lisp.h  2969
+CHAR_BIT       c-src/emacs/src/lisp.h  2974
+CHAR_BIT       c-src/emacs/src/lisp.h  2978
+CHAR_BIT       c-src/emacs/src/lisp.h  2983
+CHAR_CLASS_MAX_LENGTH  c-src/emacs/src/regex.h 593
+CHAR_CLASS_MAX_LENGTH  c-src/emacs/src/regex.h 597
+CHAR_CLASS_MAX_LENGTH  c-src/emacs/src/regex.h 605
+CHAR_CTL       c-src/emacs/src/lisp.h  2449
+CHAR_HYPER     c-src/emacs/src/lisp.h  2447
+CHAR_META      c-src/emacs/src/lisp.h  2450
+CHAR_MODIFIER_MASK     c-src/emacs/src/lisp.h  2452
+CHAR_SHIFT     c-src/emacs/src/lisp.h  2448
+CHAR_SUPER     c-src/emacs/src/lisp.h  2446
+CHAR_TABLE_EXTRA_SLOTS c-src/emacs/src/lisp.h  /^CHAR_TABLE_EXTRA_SLOTS 
(struct Lisp_Char_Table *ct/
+CHAR_TABLE_P   c-src/emacs/src/lisp.h  /^CHAR_TABLE_P (Lisp_Object a)$/
+CHAR_TABLE_REF c-src/emacs/src/lisp.h  /^CHAR_TABLE_REF (Lisp_Object ct, int 
idx)$/
+CHAR_TABLE_REF_ASCII   c-src/emacs/src/lisp.h  /^CHAR_TABLE_REF_ASCII 
(Lisp_Object ct, ptrdiff_t id/
+CHAR_TABLE_SET c-src/emacs/src/lisp.h  /^CHAR_TABLE_SET (Lisp_Object ct, int 
idx, Lisp_Obje/
+CHAR_TABLE_STANDARD_SLOTS      c-src/emacs/src/lisp.h  1697
+CHAR_TYPE_SIZE y-src/cccp.y    87
+CHECKFLAGS     make-src/Makefile       /^CHECKFLAGS=-DDEBUG 
-Wno-unused-function$/
+CHECKOBJS      make-src/Makefile       /^CHECKOBJS=chkmalloc.o chkxm.o$/
+CHECK_ARRAY    c-src/emacs/src/lisp.h  /^CHECK_ARRAY (Lisp_Object x, 
Lisp_Object predicate)/
+CHECK_BOOL_VECTOR      c-src/emacs/src/lisp.h  /^CHECK_BOOL_VECTOR 
(Lisp_Object x)$/
+CHECK_BUFFER   c-src/emacs/src/lisp.h  /^CHECK_BUFFER (Lisp_Object x)$/
+CHECK_CONS     c-src/emacs/src/lisp.h  /^CHECK_CONS (Lisp_Object x)$/
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h  571
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h  572
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h  579
+CHECK_LIST     c-src/emacs/src/lisp.h  /^CHECK_LIST (Lisp_Object x)$/
+CHECK_LIST_CONS        c-src/emacs/src/lisp.h  /^# define CHECK_LIST_CONS(x, 
y) lisp_h_CHECK_LIST_C/
+CHECK_NATNUM   c-src/emacs/src/lisp.h  /^CHECK_NATNUM (Lisp_Object x)$/
+CHECK_NUMBER   c-src/emacs/src/lisp.h  /^# define CHECK_NUMBER(x) 
lisp_h_CHECK_NUMBER (x)$/
+CHECK_NUMBER_CAR       c-src/emacs/src/lisp.h  /^CHECK_NUMBER_CAR (Lisp_Object 
x)$/
+CHECK_NUMBER_CDR       c-src/emacs/src/lisp.h  /^CHECK_NUMBER_CDR (Lisp_Object 
x)$/
+CHECK_NUMBER_COERCE_MARKER     c-src/emacs/src/lisp.h  /^#define 
CHECK_NUMBER_COERCE_MARKER(x)                                 \\$/
+CHECK_NUMBER_OR_FLOAT  c-src/emacs/src/lisp.h  /^CHECK_NUMBER_OR_FLOAT 
(Lisp_Object x)$/
+CHECK_NUMBER_OR_FLOAT_COERCE_MARKER    c-src/emacs/src/lisp.h  /^#define 
CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x)                                /
+CHECK_PROCESS  c-src/emacs/src/lisp.h  /^CHECK_PROCESS (Lisp_Object x)$/
+CHECK_RANGED_INTEGER   c-src/emacs/src/lisp.h  /^#define 
CHECK_RANGED_INTEGER(x, lo, hi)                                       \\$/
+CHECK_STRING_CAR       c-src/emacs/src/lisp.h  /^CHECK_STRING_CAR (Lisp_Object 
x)$/
+CHECK_SYMBOL   c-src/emacs/src/lisp.h  /^# define CHECK_SYMBOL(x) 
lisp_h_CHECK_SYMBOL (x)$/
+CHECK_TYPE     c-src/emacs/src/lisp.h  /^# define CHECK_TYPE(ok, predicate, x) 
lisp_h_CHECK/
+CHECK_TYPE_RANGED_INTEGER      c-src/emacs/src/lisp.h  /^#define 
CHECK_TYPE_RANGED_INTEGER(type, x) \\$/
+CHECK_VECTOR   c-src/emacs/src/lisp.h  /^CHECK_VECTOR (Lisp_Object x)$/
+CHECK_VECTOR_OR_STRING c-src/emacs/src/lisp.h  /^CHECK_VECTOR_OR_STRING 
(Lisp_Object x)$/
+CHECK_WINDOW   c-src/emacs/src/lisp.h  /^CHECK_WINDOW (Lisp_Object x)$/
+CK_ABS_C       y-src/parse.y   /^#define CK_ABS_C(x)   if((x)<MIN_COL || 
(x)>MAX_COL)/
+CK_ABS_R       y-src/parse.y   /^#define CK_ABS_R(x)   if((x)<MIN_ROW || 
(x)>MAX_ROW)/
+CK_REL_C       y-src/parse.y   /^#define CK_REL_C(x)   if(   ((x)>0 && 
MAX_COL-(x)<cu/
+CK_REL_R       y-src/parse.y   /^#define CK_REL_R(x)   if(   ((x)>0 && 
MAX_ROW-(x)<cu/
+CMultiChannelCSC19_3D  cp-src/c.C      2
+CNL    c-src/etags.c   /^#define CNL()                                         
                \\$/
+CNL_SAVE_DEFINEDEF     c-src/etags.c   /^#define CNL_SAVE_DEFINEDEF()          
                                \\$/
+COBOLFLAGS     make-src/Makefile       /^COBOLFLAGS=--language=none 
--regex='\/.......[a-zA-/
+COLORS cp-src/screen.hpp       11
+COMPILEDP      c-src/emacs/src/lisp.h  /^COMPILEDP (Lisp_Object a)$/
+COMPILED_ARGLIST       c-src/emacs/src/lisp.h  2431
+COMPILED_BYTECODE      c-src/emacs/src/lisp.h  2432
+COMPILED_CONSTANTS     c-src/emacs/src/lisp.h  2433
+COMPILED_DOC_STRING    c-src/emacs/src/lisp.h  2435
+COMPILED_INTERACTIVE   c-src/emacs/src/lisp.h  2436
+COMPILED_STACK_DEPTH   c-src/emacs/src/lisp.h  2434
+CONDITION_CASE c-src/emacs/src/lisp.h  3021
+CONSP  c-src/emacs/src/lisp.h  /^# define CONSP(x) lisp_h_CONSP (x)$/
+CONSTYPE_HEAP  c-src/emacs/src/lisp.h  3739
+CONSTYPE_PURE  c-src/emacs/src/lisp.h  3739
+CONS_TO_INTEGER        c-src/emacs/src/lisp.h  /^#define CONS_TO_INTEGER(cons, 
type, var)                              \\$/
+CONVERT_CHARSTRING_TO_VALUE    pas-src/common.pas      /^procedure 
CONVERT_CHARSTRING_TO_VALUE;(*($/
+CPPFLAGS       make-src/Makefile       /^CPPFLAGS=${CHECKFLAGS} -DSTDC_HEADERS 
-DHAVE_GETCW/
+CPSRC  make-src/Makefile       /^CPSRC=c.C abstract.C abstract.H cfront.H 
burton.cp/
+CSRC   make-src/Makefile       /^CSRC=abbrev.c ..\/etags\/h.h .\/\/c.c 
torture.c getopt/
+CTAGS  c-src/etags.c   146
+CTAGS  c-src/etags.c   147
+CTAGS  c-src/etags.c   149
+CTAGS  make-src/Makefile       /^CTAGS: ctags ${infiles}$/
+CTAGS% make-src/Makefile       /^CTAGS%: ctags% ${infiles}$/
+CTAGS13 CTAGS14 CTAGS15        make-src/Makefile       /^CTAGS13 CTAGS14 
CTAGS15: ctags% ${infiles}$/
+CYAN   cp-src/screen.hpp       15
+C_AUTO c-src/etags.c   2198
+C_EXT  c-src/etags.c   2193
+C_JAVA c-src/etags.c   2197
+C_PLAIN        c-src/etags.c   2194
+C_PLPL c-src/etags.c   2195
+C_STAR c-src/etags.c   2196
+C_entries      c-src/etags.c   /^C_entries (int c_ext, FILE *inf)$/
+C_stab_entry   c-src/etags.c   2271
+C_symtype      c-src/etags.c   /^C_symtype (char *str, int len, int c_ext)$/
+ChangeFileType pas-src/common.pas      /^function ChangeFileType; (*(FileName 
: NameString;/
+Circle.getPos  lua-src/test.lua        /^function Circle.getPos ()$/
+Cjava_entries  c-src/etags.c   /^Cjava_entries (FILE *inf)$/
+Cjava_help     c-src/etags.c   551
+Cjava_suffixes c-src/etags.c   549
+ClassExample   ruby-src/test.rb        /^    class ClassExample$/
+Clear/p        ada-src/2ataspri.adb    /^   procedure Clear (Cell : in out 
TAS_Cell) is$/
+Clear/p        ada-src/2ataspri.ads    /^   procedure Clear        (Cell : in 
out TAS_Cell)/
+Cobol_help     c-src/etags.c   558
+Cobol_paragraphs       c-src/etags.c   /^Cobol_paragraphs (FILE *inf)$/
+Cobol_suffixes c-src/etags.c   556
+CommentAD      php-src/lce_functions.php       /^      function CommentAD($/
+CommentAD      php-src/lce_functions.php       70
+ConcatT        pas-src/common.pas      /^function ConcatT;(*($/
+Concept Index  tex-src/gzip.texi       /^@node Concept Index, , Problems, Top$/
+Cond_Signal/p  ada-src/2ataspri.adb    /^   procedure Cond_Signal (Cond : in 
out Condition_/
+Cond_Signal/p  ada-src/2ataspri.ads    /^   procedure Cond_Signal (Cond : in 
out Condition_/
+Cond_Timed_Wait/p      ada-src/2ataspri.adb    /^   procedure Cond_Timed_Wait$/
+Cond_Timed_Wait/p      ada-src/2ataspri.ads    /^   procedure Cond_Timed_Wait$/
+Cond_Wait/p    ada-src/2ataspri.adb    /^   procedure Cond_Wait (Cond : in out 
Condition_Va/
+Cond_Wait/p    ada-src/2ataspri.ads    /^   procedure Cond_Wait (Cond : in out 
Condition_Va/
+Condition_Variable/t   ada-src/2ataspri.ads    /^   type Condition_Variable is 
private;$/
+Condition_Variable/t   ada-src/2ataspri.ads    /^   type Condition_Variable 
is$/
+Configure      pyt-src/server.py       /^class Configure(Frame, ControlEdit):$/
+ConfirmQuit    pyt-src/server.py       /^def ConfirmQuit(frame, context):$/
+Constant       ruby-src/test1.ru       42
+ControlEdit    pyt-src/server.py       /^class ControlEdit(Frame):$/
+Controls       pyt-src/server.py       /^class Controls:$/
+CopyTextString pas-src/common.pas      /^function CopyTextString;(*($/
+Copying        tex-src/gzip.texi       /^@node Copying, Overview, , Top$/
+Cplusplus_entries      c-src/etags.c   /^Cplusplus_entries (FILE *inf)$/
+Cplusplus_help c-src/etags.c   540
+Cplusplus_suffixes     c-src/etags.c   535
+Create_LL_Task/p       ada-src/2ataspri.adb    /^   procedure Create_LL_Task$/
+Create_LL_Task/p       ada-src/2ataspri.ads    /^   procedure Create_LL_Task$/
+Cstar_entries  c-src/etags.c   /^Cstar_entries (FILE *inf)$/
+Cstar_suffixes c-src/etags.c   562
+Cube.data.getFoo       lua-src/test.lua        /^function Cube.data.getFoo ()$/
+D      cp-src/fail.C   /^              D() : ::A::T2::T(97), x(1066) {}$/
+D      cp-src/fail.C   41
+DAEMON_RUNNING c-src/emacs/src/lisp.h  4258
+DAEMON_RUNNING c-src/emacs/src/lisp.h  4262
+DARKGRAY       cp-src/screen.hpp       20
+DEAFUN c.c     /^DEAFUN ("expand-file-name", Fexpand_file_name, Sex/
+DEBUG  c-src/etags.c   84
+DEBUG  c-src/etags.c   85
+DEBUG  c-src/etags.c   87
+DEBUG  objc-src/PackInsp.m     37
+DECLARE_GDB_SYM        c-src/emacs/src/lisp.h  /^#define DECLARE_GDB_SYM(type, 
id) type const id EX/
+DEFAULT_HASH_SIZE      c-src/emacs/src/lisp.h  1940
+DEFAULT_REHASH_SIZE    c-src/emacs/src/lisp.h  1950
+DEFAULT_REHASH_THRESHOLD       c-src/emacs/src/lisp.h  1946
+DEFINE_GDB_SYMBOL_BEGIN        c-src/emacs/src/lisp.h  /^# define 
DEFINE_GDB_SYMBOL_BEGIN(type, id) DECLARE/
+DEFINE_GDB_SYMBOL_BEGIN        c-src/emacs/src/lisp.h  /^# define 
DEFINE_GDB_SYMBOL_BEGIN(type, id) extern /
+DEFINE_GDB_SYMBOL_END  c-src/emacs/src/lisp.h  /^# define 
DEFINE_GDB_SYMBOL_END(id) = id;$/
+DEFINE_GDB_SYMBOL_END  c-src/emacs/src/lisp.h  /^# define 
DEFINE_GDB_SYMBOL_END(val) ;$/
+DEFINE_LISP_SYMBOL     c-src/emacs/src/lisp.h  /^#define 
DEFINE_LISP_SYMBOL(name) \\$/
+DEFINE_NON_NIL_Q_SYMBOL_MACROS c-src/emacs/src/lisp.h  755
+DEFSYM c-src/emacs/src/lisp.h  /^#define DEFSYM(sym, name) \/* empty *\/$/
+DEFSYM c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (SYMBOL_CONSTANT_P, int, 
(Lisp_Ob/
+DEFUN  c-src/emacs/src/lisp.h  /^#define DEFUN(lname, fnname, sname, minargs, 
maxar/
+DEFUN_ARGS_0   c-src/emacs/src/lisp.h  714
+DEFUN_ARGS_1   c-src/emacs/src/lisp.h  715
+DEFUN_ARGS_2   c-src/emacs/src/lisp.h  716
+DEFUN_ARGS_3   c-src/emacs/src/lisp.h  717
+DEFUN_ARGS_4   c-src/emacs/src/lisp.h  718
+DEFUN_ARGS_5   c-src/emacs/src/lisp.h  719
+DEFUN_ARGS_6   c-src/emacs/src/lisp.h  721
+DEFUN_ARGS_7   c-src/emacs/src/lisp.h  723
+DEFUN_ARGS_8   c-src/emacs/src/lisp.h  725
+DEFUN_ARGS_MANY        c-src/emacs/src/lisp.h  712
+DEFUN_ARGS_UNEVALLED   c-src/emacs/src/lisp.h  713
+DEFUN_func2    c.c     /^DEFUN_func2()$/
+DEFVAR_BOOL    c-src/emacs/src/lisp.h  /^#define DEFVAR_BOOL(lname, vname, 
doc)                \\$/
+DEFVAR_BUFFER_DEFAULTS c-src/emacs/src/lisp.h  /^#define 
DEFVAR_BUFFER_DEFAULTS(lname, vname, doc)     /
+DEFVAR_INT     c-src/emacs/src/lisp.h  /^#define DEFVAR_INT(lname, vname, doc) 
        \\$/
+DEFVAR_KBOARD  c-src/emacs/src/lisp.h  /^#define DEFVAR_KBOARD(lname, vname, 
doc)                      \\$/
+DEFVAR_LISP    c-src/emacs/src/lisp.h  /^#define DEFVAR_LISP(lname, vname, 
doc)                \\$/
+DEFVAR_LISP_NOPRO      c-src/emacs/src/lisp.h  /^#define 
DEFVAR_LISP_NOPRO(lname, vname, doc)  \\$/
+DEVICE_LAST    c-src/h.h       24
+DEVICE_SWP     c-src/h.h       23
+DOS_NT c-src/etags.c   117
+DOS_NT c-src/etags.c   118
+DUMPED c-src/emacs/src/gmalloc.c       80
+Debug  cp-src/functions.cpp    /^void Debug ( int lineno, int level, char* 
func , c/
+Def_   ruby-src/test1.ru       12
+DisposeANameList       pas-src/common.pas      /^procedure DisposeANameList( $/
+DisposeNameList        pas-src/common.pas      /^procedure DisposeNameList;$/
+ELEM_I c-src/h.h       3
+ELSRC  make-src/Makefile       /^ELSRC=TAGTEST.EL 
emacs\/lisp\/progmodes\/etags.el$/
+EMACS_INT      c-src/emacs/src/lisp.h  103
+EMACS_INT      c-src/emacs/src/lisp.h  91
+EMACS_INT      c-src/emacs/src/lisp.h  96
+EMACS_INT_MAX  c-src/emacs/src/lisp.h  105
+EMACS_INT_MAX  c-src/emacs/src/lisp.h  93
+EMACS_INT_MAX  c-src/emacs/src/lisp.h  98
+EMACS_LISP_H   c-src/emacs/src/lisp.h  22
+EMACS_NAME     c-src/etags.c   786
+EMACS_UINT     c-src/emacs/src/lisp.h  104
+EMACS_UINT     c-src/emacs/src/lisp.h  92
+EMACS_UINT     c-src/emacs/src/lisp.h  97
+ENTRY  c-src/sysdep.h  /^#define       ENTRY(name)                             
                              \\$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^#define ENUM_BF(TYPE) enum TYPE$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^#define ENUM_BF(TYPE) unsigned int$/
+EQ     c-src/emacs/src/lisp.h  /^# define EQ(x, y) lisp_h_EQ (x, y)$/
+EQUAL  y-src/cccp.c    12
+ERLSRC make-src/Makefile       /^ERLSRC=gs_dialog.erl lines.erl lists.erl$/
+ERROR  y-src/cccp.c    9
+ERROR  y-src/parse.y   304
+ETAGS  make-src/Makefile       /^ETAGS: FRC etags ${infiles}$/
+ETAGS% make-src/Makefile       /^ETAGS%: FRC etags% ${infiles}$/
+ETAGS12        make-src/Makefile       /^ETAGS12: etags12 ${infiles}$/
+ETAGS13 ETAGS14 ETAGS15        make-src/Makefile       /^ETAGS13 ETAGS14 
ETAGS15: etags% ${infiles}$/
+EXFUN  c-src/emacs/src/lisp.h  /^#define EXFUN(fnname, maxargs) \\$/
+EXTAGS make-src/Makefile       /^EXTAGS: extags ${infiles} Makefile$/
+EXTERNALLY_VISIBLE     c-src/emacs/src/keyboard.c      3497
+EXTERNALLY_VISIBLE     c-src/emacs/src/keyboard.c      4372
+EmptyNmStr     pas-src/common.pas      /^function EmptyNmStr(* : 
NameString*);$/
+Environment    tex-src/gzip.texi       /^@node Environment, Tapes, Advanced 
usage, Top$/
+Erlang_functions       c-src/etags.c   /^Erlang_functions (FILE *inf)$/
+Erlang_help    c-src/etags.c   567
+Erlang_suffixes        c-src/etags.c   565
+ErrStrToNmStr  pas-src/common.pas      /^function ErrStrToNmStr;(*($/
+Error_Information/t    ada-src/2ataspri.ads    /^   type Error_Information is 
new Interfaces.C.POSI/
+Exit_LL_Task/p ada-src/2ataspri.adb    /^   procedure Exit_LL_Task is$/
+Exit_LL_Task/p ada-src/2ataspri.ads    /^   procedure Exit_LL_Task;$/
+ExtractCommentInfo     pas-src/common.pas      /^procedure ExtractCommentInfo; 
(*($/
+FASTCFLAGS     make-src/Makefile       /^FASTCFLAGS=-O3 -finline-functions 
-ffast-math -fun/
+FASTCFLAGSWARN make-src/Makefile       /^FASTCFLAGSWARN=${WARNINGS} -Werror 
${FASTCFLAGS}$/
+FILTER make-src/Makefile       /^FILTER=grep -v 
'\\.[Cchefy][lor]*,[1-9][0-9]*' || t/
+FINALIZERP     c-src/emacs/src/lisp.h  /^FINALIZERP (Lisp_Object x)$/
+FINAL_FREE_BLOCKS      c-src/emacs/src/gmalloc.c       135
+FIXNUM_BITS    c-src/emacs/src/lisp.h  252
+FIXNUM_OVERFLOW_P      c-src/emacs/src/lisp.h  /^#define FIXNUM_OVERFLOW_P(i) 
\\$/
+FIXNUM_OVERFLOW_P      c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (EQ, bool, 
(Lisp_Object x, Lisp_O/
+FLOATP c-src/emacs/src/lisp.h  /^# define FLOATP(x) lisp_h_FLOATP (x)$/
+FLOAT_TO_STRING_BUFSIZE        c-src/emacs/src/lisp.h  3927
+FORTHSRC       make-src/Makefile       /^FORTHSRC=test-forth.fth$/
+FOR_EACH_ALIST_VALUE   c-src/emacs/src/lisp.h  /^#define 
FOR_EACH_ALIST_VALUE(head_var, list_var, v/
+FOR_EACH_TAIL  c-src/emacs/src/lisp.h  /^#define FOR_EACH_TAIL(hare, list, 
tortoise, n)        \\$/
+FRAMEP c-src/emacs/src/lisp.h  /^FRAMEP (Lisp_Object a)$/
+FRC    make-src/Makefile       /^FRC:;$/
+FREEFLOOD      c-src/emacs/src/gmalloc.c       1858
+FSRC   make-src/Makefile       /^FSRC=entry.for entry.strange_suffix 
entry.strange$/
+FUN0   y-src/parse.y   /^yylex FUN0()$/
+FUN1   y-src/parse.y   /^str_to_col FUN1(char **,str)$/
+FUN1   y-src/parse.y   /^yyerror FUN1(char *, s)$/
+FUN2   y-src/parse.y   /^make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)$/
+FUN2   y-src/parse.y   /^parse_cell_or_range FUN2(char **,ptr, struct rng */
+FUNCTIONP      c-src/emacs/src/lisp.h  /^FUNCTIONP (Lisp_Object obj)$/
+FUNCTION_KEY_OFFSET    c-src/emacs/src/keyboard.c      4766
+FUNCTION_KEY_OFFSET    c-src/emacs/src/keyboard.c      5061
+F_getit        c-src/etags.c   /^F_getit (FILE *inf)$/
+F_takeprec     c-src/etags.c   /^F_takeprec (void)$/
+Fabbrev_expansion      c-src/abbrev.c  /^DEFUN ("abbrev-expansion", 
Fabbrev_expansion, Sabb/
+Fabbrev_symbol c-src/abbrev.c  /^DEFUN ("abbrev-symbol", Fabbrev_symbol, 
Sabbrev_sy/
+Fabort_recursive_edit  c-src/emacs/src/keyboard.c      /^DEFUN 
("abort-recursive-edit", Fabort_recursive_ed/
+Fails_t        c-src/h.h       5
+Fclear_abbrev_table    c-src/abbrev.c  /^DEFUN ("clear-abbrev-table", 
Fclear_abbrev_table, /
+Fclear_this_command_keys       c-src/emacs/src/keyboard.c      /^DEFUN 
("clear-this-command-keys", Fclear_this_comm/
+Fcommand_error_default_function        c-src/emacs/src/keyboard.c      /^DEFUN 
("command-error-default-function", Fcommand_/
+Fcurrent_idle_time     c-src/emacs/src/keyboard.c      /^DEFUN 
("current-idle-time", Fcurrent_idle_time, Sc/
+Fcurrent_input_mode    c-src/emacs/src/keyboard.c      /^DEFUN 
("current-input-mode", Fcurrent_input_mode, /
+Fdefine_abbrev c-src/abbrev.c  /^DEFUN ("define-abbrev", Fdefine_abbrev, 
Sdefine_ab/
+Fdefine_abbrev_table   c-src/abbrev.c  /^DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table/
+Fdefine_global_abbrev  c-src/abbrev.c  /^DEFUN ("define-global-abbrev", 
Fdefine_global_abbr/
+Fdefine_mode_abbrev    c-src/abbrev.c  /^DEFUN ("define-mode-abbrev", 
Fdefine_mode_abbrev, /
+Fdiscard_input c-src/emacs/src/keyboard.c      /^DEFUN ("discard-input", 
Fdiscard_input, Sdiscard_i/
+Fevent_convert_list    c-src/emacs/src/keyboard.c      /^DEFUN 
("event-convert-list", Fevent_convert_list, /
+Fevent_symbol_parse_modifiers  c-src/emacs/src/keyboard.c      /^DEFUN 
("internal-event-symbol-parse-modifiers", Fe/
+Fexit_recursive_edit   c-src/emacs/src/keyboard.c      /^DEFUN 
("exit-recursive-edit", Fexit_recursive_edit/
+Fexpand_abbrev c-src/abbrev.c  /^DEFUN ("expand-abbrev", Fexpand_abbrev, 
Sexpand_ab/
+Finalize_Cond/p        ada-src/2ataspri.adb    /^   procedure Finalize_Cond 
(Cond : in out Conditio/
+Finalize_Cond/p        ada-src/2ataspri.ads    /^   procedure Finalize_Cond 
(Cond : in out Conditio/
+Finalize_Lock/p        ada-src/2ataspri.adb    /^   procedure Finalize_Lock (L 
: in out Lock) is$/
+Finalize_Lock/p        ada-src/2ataspri.ads    /^   procedure Finalize_Lock (L 
: in out Lock);$/
+Finalize_TAS_Cell/p    ada-src/2ataspri.adb    /^   procedure 
Finalize_TAS_Cell (Cell : in out TAS_/
+Finalize_TAS_Cell/p    ada-src/2ataspri.ads    /^   procedure 
Finalize_TAS_Cell   (Cell : in out TA/
+Finput_pending_p       c-src/emacs/src/keyboard.c      /^DEFUN 
("input-pending-p", Finput_pending_p, Sinput/
+Finsert_abbrev_table_description       c-src/abbrev.c  /^DEFUN 
("insert-abbrev-table-description", Finsert_/
+First100Chars  pas-src/common.pas      /^procedure First100Chars; (*($/
+Fmake_abbrev_table     c-src/abbrev.c  /^DEFUN ("make-abbrev-table", 
Fmake_abbrev_table, Sm/
+Foo    perl-src/kai-test.pl    /^package Foo;$/
+Foo::Bar       perl-src/kai-test.pl    /^package Foo::Bar;$/
+Fopen_dribble_file     c-src/emacs/src/keyboard.c      /^DEFUN 
("open-dribble-file", Fopen_dribble_file, So/
+Forth_help     c-src/etags.c   573
+Forth_suffixes c-src/etags.c   571
+Forth_words    c-src/etags.c   /^Forth_words (FILE *inf)$/
+Fortran_functions      c-src/etags.c   /^Fortran_functions (FILE *inf)$/
+Fortran_help   c-src/etags.c   579
+Fortran_suffixes       c-src/etags.c   577
+Fposn_at_point c-src/emacs/src/keyboard.c      /^DEFUN ("posn-at-point", 
Fposn_at_point, Sposn_at_p/
+Fposn_at_x_y   c-src/emacs/src/keyboard.c      /^DEFUN ("posn-at-x-y", 
Fposn_at_x_y, Sposn_at_x_y, /
+Fread_key_sequence     c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence", Fread_key_sequence, Sr/
+Fread_key_sequence_vector      c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence-vector", Fread_key_seque/
+Frecent_keys   c-src/emacs/src/keyboard.c      /^DEFUN ("recent-keys", 
Frecent_keys, Srecent_keys, /
+Frecursion_depth       c-src/emacs/src/keyboard.c      /^DEFUN 
("recursion-depth", Frecursion_depth, Srecur/
+Frecursive_edit        c-src/emacs/src/keyboard.c      /^DEFUN 
("recursive-edit", Frecursive_edit, Srecursi/
+Freset_this_command_lengths    c-src/emacs/src/keyboard.c      /^DEFUN 
("reset-this-command-lengths", Freset_this_c/
+Fset_input_interrupt_mode      c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-interrupt-mode", Fset_input_inte/
+Fset_input_meta_mode   c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-meta-mode", Fset_input_meta_mode/
+Fset_input_mode        c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-mode", Fset_input_mode, Sset_inp/
+Fset_output_flow_control       c-src/emacs/src/keyboard.c      /^DEFUN 
("set-output-flow-control", Fset_output_flow/
+Fset_quit_char c-src/emacs/src/keyboard.c      /^DEFUN ("set-quit-char", 
Fset_quit_char, Sset_quit_/
+Fsuspend_emacs c-src/emacs/src/keyboard.c      /^DEFUN ("suspend-emacs", 
Fsuspend_emacs, Ssuspend_e/
+Fthis_command_keys     c-src/emacs/src/keyboard.c      /^DEFUN 
("this-command-keys", Fthis_command_keys, St/
+Fthis_command_keys_vector      c-src/emacs/src/keyboard.c      /^DEFUN 
("this-command-keys-vector", Fthis_command_k/
+Fthis_single_command_keys      c-src/emacs/src/keyboard.c      /^DEFUN 
("this-single-command-keys", Fthis_single_co/
+Fthis_single_command_raw_keys  c-src/emacs/src/keyboard.c      /^DEFUN 
("this-single-command-raw-keys", Fthis_singl/
+Ftop_level     c-src/emacs/src/keyboard.c      /^DEFUN ("top-level", 
Ftop_level, Stop_level, 0, 0, /
+Ftrack_mouse   c-src/emacs/src/keyboard.c      /^DEFUN 
("internal--track-mouse", Ftrack_mouse, Stra/
+Funexpand_abbrev       c-src/abbrev.c  /^DEFUN ("unexpand-abbrev", 
Funexpand_abbrev, Sunexp/
+Fx_get_selection_internal      c.c     /^       Fx_get_selection_internal, 
Sx_get_selection/
+Fx_get_selection_internal      c.c     /^DEFUN ("x-get-selection-internal", 
Fx_get_selectio/
+Fy_get_selection_internal      c.c     /^      Fy_get_selection_internal, 
Sy_get_selection_/
+GCALIGNED      c-src/emacs/src/lisp.h  288
+GCALIGNED      c-src/emacs/src/lisp.h  290
+GCALIGNMENT    c-src/emacs/src/lisp.h  243
+GCPRO1 c-src/emacs/src/lisp.h  /^#define GCPRO1(a)                             
                        \\$/
+GCPRO1 c-src/emacs/src/lisp.h  /^#define GCPRO1(varname) ((void) gcpro1)$/
+GCPRO2 c-src/emacs/src/lisp.h  /^#define GCPRO2(a, b)                          
                        \\$/
+GCPRO2 c-src/emacs/src/lisp.h  /^#define GCPRO2(varname1, varname2) ((void) 
gcpro2,/
+GCPRO3 c-src/emacs/src/lisp.h  /^#define GCPRO3(a, b, c)                       
                                \\$/
+GCPRO3 c-src/emacs/src/lisp.h  /^#define GCPRO3(varname1, varname2, varname3) 
\\$/
+GCPRO4 c-src/emacs/src/lisp.h  /^#define GCPRO4(a, b, c, d)                    
                        \\$/
+GCPRO4 c-src/emacs/src/lisp.h  /^#define GCPRO4(varname1, varname2, varname3, 
varna/
+GCPRO5 c-src/emacs/src/lisp.h  /^#define GCPRO5(a, b, c, d, e)                 
                        \\$/
+GCPRO5 c-src/emacs/src/lisp.h  /^#define GCPRO5(varname1, varname2, varname3, 
varna/
+GCPRO6 c-src/emacs/src/lisp.h  /^#define GCPRO6(a, b, c, d, e, f)              
                        \\$/
+GCPRO6 c-src/emacs/src/lisp.h  /^#define GCPRO6(varname1, varname2, varname3, 
varna/
+GCPRO7 c-src/emacs/src/lisp.h  /^#define GCPRO7(a, b, c, d, e, f, g)           
                        \\$/
+GCPRO7 c-src/emacs/src/lisp.h  /^#define GCPRO7(a, b, c, d, e, f, g) (GCPRO6 
(a, b,/
+GCTYPEBITS     c-src/emacs/src/lisp.h  /^DEFINE_GDB_SYMBOL_BEGIN (int, 
GCTYPEBITS)$/
+GCTYPEBITS     c-src/emacs/src/lisp.h  67
+GC_MAKE_GCPROS_NOOPS   c-src/emacs/src/lisp.h  3172
+GC_MARK_STACK  c-src/emacs/src/lisp.h  3177
+GC_MARK_STACK_CHECK_GCPROS     c-src/emacs/src/lisp.h  3173
+GC_USE_GCPROS_AS_BEFORE        c-src/emacs/src/lisp.h  3171
+GC_USE_GCPROS_CHECK_ZOMBIES    c-src/emacs/src/lisp.h  3174
+GE     y-src/parse.c   8
+GENERIC_PTR    y-src/cccp.y    56
+GENERIC_PTR    y-src/cccp.y    58
+GEQ    y-src/cccp.c    15
+GETOPTOBJS     make-src/Makefile       /^GETOPTOBJS= #getopt.o getopt1.o$/
+GREEN  cp-src/screen.hpp       14
+GROW_RAW_KEYBUF        c-src/emacs/src/keyboard.c      119
+GatherControls pyt-src/server.py       /^    def GatherControls(self):$/
+GetLayerByName lua-src/allegro.lua     /^function GetLayerByName (name)$/
+GetNameList    pas-src/common.pas      /^function GetNameList; (* : 
BinNodePointer;*)$/
+GetNewNameListNode     pas-src/common.pas      /^function 
GetNewNameListNode;(*($/
+GetTextRef     pas-src/common.pas      /^function GetTextRef;(*($/
+GetUniqueLayerName     lua-src/allegro.lua     /^function GetUniqueLayerName 
()$/
+Get_Own_Priority/f     ada-src/2ataspri.adb    /^   function Get_Own_Priority 
return System.Any_Pri/
+Get_Own_Priority/f     ada-src/2ataspri.ads    /^   function Get_Own_Priority 
return System.Any_Pri/
+Get_Priority/f ada-src/2ataspri.adb    /^   function Get_Priority (T : 
TCB_Ptr) return Syst/
+Get_Priority/f ada-src/2ataspri.ads    /^   function Get_Priority (T : 
TCB_Ptr) return Syst/
+HASH_HASH      c-src/emacs/src/lisp.h  /^HASH_HASH (struct Lisp_Hash_Table *h, 
ptrdiff_t id/
+HASH_INDEX     c-src/emacs/src/lisp.h  /^HASH_INDEX (struct Lisp_Hash_Table 
*h, ptrdiff_t i/
+HASH_KEY       c-src/emacs/src/lisp.h  /^HASH_KEY (struct Lisp_Hash_Table *h, 
ptrdiff_t idx/
+HASH_NEXT      c-src/emacs/src/lisp.h  /^HASH_NEXT (struct Lisp_Hash_Table *h, 
ptrdiff_t id/
+HASH_TABLE_P   c-src/emacs/src/lisp.h  /^HASH_TABLE_P (Lisp_Object a)$/
+HASH_TABLE_SIZE        c-src/emacs/src/lisp.h  /^HASH_TABLE_SIZE (struct 
Lisp_Hash_Table *h)$/
+HASH_VALUE     c-src/emacs/src/lisp.h  /^HASH_VALUE (struct Lisp_Hash_Table 
*h, ptrdiff_t i/
+HAVE_NTGUI     c-src/etags.c   116
+HEAP   c-src/emacs/src/gmalloc.c       131
+HTMLSRC        make-src/Makefile       /^HTMLSRC=softwarelibero.html 
index.shtml algrthms.h/
+HTML_help      c-src/etags.c   584
+HTML_labels    c-src/etags.c   /^HTML_labels (FILE *inf)$/
+HTML_suffixes  c-src/etags.c   582
+IEEE_FLOATING_POINT    c-src/emacs/src/lisp.h  2415
+IMAGEP c-src/emacs/src/lisp.h  /^IMAGEP (Lisp_Object x)$/
+INPUT_EVENT_POS_MAX    c-src/emacs/src/keyboard.c      3698
+INPUT_EVENT_POS_MIN    c-src/emacs/src/keyboard.c      3701
+INSERT_TREE_NODE       pas-src/common.pas      /^procedure 
INSERT_TREE_NODE;(*( $/
+INSTANTIATE_MDIAGARRAY_FRIENDS cp-src/MDiagArray2.h    /^#define 
INSTANTIATE_MDIAGARRAY_FRIENDS(T) \\$/
+INT    c-src/h.h       32
+INT    y-src/cccp.c    6
+INTEGERP       c-src/emacs/src/lisp.h  /^# define INTEGERP(x) lisp_h_INTEGERP 
(x)$/
+INTEGER_TO_CONS        c-src/emacs/src/lisp.h  /^#define INTEGER_TO_CONS(i)    
                                    \\$/
+INTERVAL       c-src/emacs/src/lisp.h  1149
+INTMASK        c-src/emacs/src/lisp.h  437
+INTTYPEBITS    c-src/emacs/src/lisp.h  249
+INT_BIT        c-src/emacs/src/gmalloc.c       124
+INT_TYPE_SIZE  y-src/cccp.y    91
+ISALNUM        c-src/etags.c   /^#define ISALNUM(c)    isalnum (CHAR (c))$/
+ISALPHA        c-src/etags.c   /^#define ISALPHA(c)    isalpha (CHAR (c))$/
+ISDIGIT        c-src/etags.c   /^#define ISDIGIT(c)    isdigit (CHAR (c))$/
+ISLOWER        c-src/etags.c   /^#define ISLOWER(c)    islower (CHAR (c))$/
+ISO_FUNCTION_KEY_OFFSET        c-src/emacs/src/keyboard.c      5149
+ISUPPER        c-src/etags.c   /^# define ISUPPER(c)   isupper (CHAR (c))$/
+IS_DAEMON      c-src/emacs/src/lisp.h  4257
+IS_DAEMON      c-src/emacs/src/lisp.h  4261
+InitNameList   pas-src/common.pas      /^procedure InitNameList;$/
+InitNameStringPool     pas-src/common.pas      /^procedure 
InitNameStringPool;$/
+InitializeStringPackage        pas-src/common.pas      /^procedure 
InitializeStringPackage;$/
+Initialize_Cond/p      ada-src/2ataspri.adb    /^   procedure Initialize_Cond 
(Cond : in out Condit/
+Initialize_Cond/p      ada-src/2ataspri.ads    /^   procedure Initialize_Cond 
(Cond : in out Condit/
+Initialize_LL_Tasks/p  ada-src/2ataspri.adb    /^   procedure 
Initialize_LL_Tasks (T : TCB_Ptr) is$/
+Initialize_LL_Tasks/p  ada-src/2ataspri.ads    /^   procedure 
Initialize_LL_Tasks (T : TCB_Ptr);$/
+Initialize_Lock/p      ada-src/2ataspri.adb    /^   procedure Initialize_Lock$/
+Initialize_Lock/p      ada-src/2ataspri.ads    /^   procedure Initialize_Lock 
(Prio : System.Any_Pr/
+Initialize_TAS_Cell/p  ada-src/2ataspri.adb    /^   procedure 
Initialize_TAS_Cell (Cell : out TAS_C/
+Initialize_TAS_Cell/p  ada-src/2ataspri.ads    /^   procedure 
Initialize_TAS_Cell (Cell :    out TA/
+Inner1/b       ada-src/etags-test-for.ada      /^  package body Inner1 is$/
+Inner1/b       ada-src/waroquiers.ada  /^  package body Inner1 is$/
+Inner1/s       ada-src/etags-test-for.ada      /^  package Inner1 is$/
+Inner1/s       ada-src/waroquiers.ada  /^  package Inner1 is$/
+Inner2/b       ada-src/etags-test-for.ada      /^  package body Inner2 is$/
+Inner2/b       ada-src/waroquiers.ada  /^  package body Inner2 is$/
+Inner2/s       ada-src/etags-test-for.ada      /^  package Inner2 is$/
+Inner2/s       ada-src/waroquiers.ada  /^  package Inner2 is$/
+Install_Abort_Handler/p        ada-src/2ataspri.adb    /^   procedure 
Install_Abort_Handler (Handler : Abor/
+Install_Abort_Handler/p        ada-src/2ataspri.ads    /^   procedure 
Install_Abort_Handler (Handler : Abor/
+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/
+Is_Set/f       ada-src/2ataspri.ads    /^   function  Is_Set       (Cell : in  
   TAS_Cell)/
+JAVASRC        make-src/Makefile       /^JAVASRC=AWTEMul.java KeyEve.java 
SMan.java SysCol./
+KBD_BUFFER_SIZE        c-src/emacs/src/keyboard.c      82
+KBYTES objc-src/PackInsp.m     58
+KEY_TO_CHAR    c-src/emacs/src/keyboard.c      /^#define KEY_TO_CHAR(k) (XINT 
(k) & ((1 << CHARACTE/
+LATEST make-src/Makefile       /^LATEST=17$/
+LCE_COMMENT    php-src/lce_functions.php       13
+LCE_COMMENT_TOOL       php-src/lce_functions.php       17
+LCE_COMMENT_USER       php-src/lce_functions.php       15
+LCE_FUNCTIONS  php-src/lce_functions.php       4
+LCE_MSGID      php-src/lce_functions.php       19
+LCE_MSGSTR     php-src/lce_functions.php       21
+LCE_TEXT       php-src/lce_functions.php       23
+LCE_UNKNOWN    php-src/lce_functions.php       9
+LCE_WS php-src/lce_functions.php       11
+LDFLAGS        make-src/Makefile       /^LDFLAGS=#-static -lc_p$/
+LE     y-src/parse.c   7
+LEQ    y-src/cccp.c    14
+LIGHTBLUE      cp-src/screen.hpp       21
+LIGHTCYAN      cp-src/screen.hpp       23
+LIGHTGRAY      cp-src/screen.hpp       19
+LIGHTGREEN     cp-src/screen.hpp       22
+LIGHTMAGENTA   cp-src/screen.hpp       25
+LIGHTRED       cp-src/screen.hpp       24
+LISP_INITIALLY c-src/emacs/src/lisp.h  /^#define LISP_INITIALLY(i) (i)$/
+LISP_INITIALLY c-src/emacs/src/lisp.h  /^#define LISP_INITIALLY(i) {i}$/
+LISP_INITIALLY_ZERO    c-src/emacs/src/lisp.h  582
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^#define 
LISP_MACRO_DEFUN(name, type, argdecls, arg/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (CONSP, 
bool, (Lisp_Object x), (x/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (NILP, bool, 
(Lisp_Object x), (x)/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (SYMBOL_VAL, 
Lisp_Object, (struct/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XCAR, 
Lisp_Object, (Lisp_Object /
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XCONS, 
struct Lisp_Cons *, (Lisp/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XHASH, 
EMACS_INT, (Lisp_Object a/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XLI, 
EMACS_INT, (Lisp_Object o),/
+LISP_MACRO_DEFUN       c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN (XPNTR, void 
*, (Lisp_Object a), /
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^#define 
LISP_MACRO_DEFUN_VOID(name, argdecls, args/
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN_VOID 
(CHECK_LIST_CONS, (Lisp_Obje/
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN_VOID 
(CHECK_TYPE,$/
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN_VOID 
(SET_SYMBOL_VAL,$/
+LISTCONTENTS   objc-src/PackInsp.m     39
+LISTCONTENTSBUTTON     objc-src/PackInsp.m     48
+LISTDESCRIPTIONBUTTON  objc-src/PackInsp.m     49
+LL_Assert/p    ada-src/2ataspri.adb    /^   procedure LL_Assert (B : Boolean; 
M : String) i/
+LL_Assert/p    ada-src/2ataspri.ads    /^   procedure LL_Assert (B : Boolean; 
M : String);$/
+LL_Task_Procedure_Access/t     ada-src/2ataspri.ads    /^   type 
LL_Task_Procedure_Access is access procedu/
+LL_Task_Procedure_Access/t     ada-src/etags-test-for.ada      /^   type 
LL_Task_Procedure_Access is access procedu/
+LL_Wrapper/p   ada-src/2ataspri.adb    /^   procedure LL_Wrapper (T : TCB_Ptr) 
is$/
+LL_Wrapper/p   ada-src/2ataspri.adb    /^   procedure LL_Wrapper (T : 
TCB_Ptr);$/
+LL_Wrapper/p   ada-src/etags-test-for.ada      /^   procedure LL_Wrapper (T : 
TCB_Ptr);$/
+LOCALIZE       objc-src/PackInsp.m     /^#define LOCALIZE(s)           
NXLoadLocalizedStringFromTabl/
+LOCALIZE_ARCH  objc-src/PackInsp.m     /^#define LOCALIZE_ARCH(s)      
NXLoadLocalizedStringFrom/
+LOCK   c-src/emacs/src/gmalloc.c       /^#define LOCK()                        
                \\$/
+LOCK   c-src/emacs/src/gmalloc.c       /^#define LOCK()$/
+LOCK_ALIGNED_BLOCKS    c-src/emacs/src/gmalloc.c       /^#define 
LOCK_ALIGNED_BLOCKS()                         \\$/
+LOCK_ALIGNED_BLOCKS    c-src/emacs/src/gmalloc.c       /^#define 
LOCK_ALIGNED_BLOCKS()$/
+LONG_TYPE_SIZE y-src/cccp.y    95
+LOOKING_AT     c-src/etags.c   /^#define LOOKING_AT(cp, kw)  \/* kw is the 
keyword, /
+LOOKING_AT_NOCASE      c-src/etags.c   /^#define LOOKING_AT_NOCASE(cp, kw) \/* 
the keyword i/
+LOOKUP objc-src/PackInsp.m     /^#define LOOKUP(key, notfound) ([table 
isKey:key] ?/
+LOOKUP objc-src/PackInsp.m     176
+LOOP_ON_INPUT_LINES    c-src/etags.c   /^#define 
LOOP_ON_INPUT_LINES(file_pointer, line_buf/
+LSH    y-src/cccp.c    16
+LTGT   cp-src/MDiagArray2.h    144
+LTGT   cp-src/MDiagArray2.h    35
+LTGT   cp-src/MDiagArray2.h    39
+LTGT   cp-src/MDiagArray2.h    42
+LUASRC make-src/Makefile       /^LUASRC=allegro.lua$/
+L_CELL y-src/parse.c   10
+L_CONST        y-src/parse.c   13
+L_FN0  y-src/parse.c   14
+L_FN1  y-src/parse.c   15
+L_FN1R y-src/parse.c   20
+L_FN2  y-src/parse.c   16
+L_FN2R y-src/parse.c   21
+L_FN3  y-src/parse.c   17
+L_FN3R y-src/parse.c   22
+L_FN4  y-src/parse.c   18
+L_FN4R y-src/parse.c   23
+L_FNN  y-src/parse.c   19
+L_FNNR y-src/parse.c   24
+L_GE   y-src/parse.c   27
+L_LE   y-src/parse.c   25
+L_NE   y-src/parse.c   26
+L_RANGE        y-src/parse.c   11
+L_VAR  y-src/parse.c   12
+L_getit        c-src/etags.c   /^L_getit (void)$/
+LabeledEntry   pyt-src/server.py       /^class LabeledEntry(Frame):$/
+Lang_function  c-src/etags.c   182
+Lang_function  c-src/h.h       6
+Lisp_Bits      c-src/emacs/src/lisp.h  239
+Lisp_Bool_Vector       c-src/emacs/src/lisp.h  1384
+Lisp_Boolfwd   c-src/emacs/src/lisp.h  2284
+Lisp_Buffer_Local_Value        c-src/emacs/src/lisp.h  2334
+Lisp_Buffer_Objfwd     c-src/emacs/src/lisp.h  2302
+Lisp_Char_Table        c-src/emacs/src/lisp.h  1575
+Lisp_Compiled  c-src/emacs/src/lisp.h  2429
+Lisp_Cons      c-src/emacs/src/lisp.h  475
+Lisp_Finalizer c-src/emacs/src/lisp.h  2186
+Lisp_Float     c-src/emacs/src/lisp.h  2391
+Lisp_Float     c-src/emacs/src/lisp.h  477
+Lisp_Free      c-src/emacs/src/lisp.h  2201
+Lisp_Fwd       c-src/emacs/src/lisp.h  2368
+Lisp_Fwd_Bool  c-src/emacs/src/lisp.h  505
+Lisp_Fwd_Buffer_Obj    c-src/emacs/src/lisp.h  507
+Lisp_Fwd_Int   c-src/emacs/src/lisp.h  504
+Lisp_Fwd_Kboard_Obj    c-src/emacs/src/lisp.h  508
+Lisp_Fwd_Obj   c-src/emacs/src/lisp.h  506
+Lisp_Fwd_Type  c-src/emacs/src/lisp.h  502
+Lisp_Hash_Table        c-src/emacs/src/lisp.h  1823
+Lisp_Int0      c-src/emacs/src/lisp.h  461
+Lisp_Int1      c-src/emacs/src/lisp.h  462
+Lisp_Intfwd    c-src/emacs/src/lisp.h  2274
+Lisp_Kboard_Objfwd     c-src/emacs/src/lisp.h  2362
+Lisp_Marker    c-src/emacs/src/lisp.h  1978
+Lisp_Misc      c-src/emacs/src/lisp.h  2212
+Lisp_Misc      c-src/emacs/src/lisp.h  458
+Lisp_Misc_Any  c-src/emacs/src/lisp.h  1971
+Lisp_Misc_Finalizer    c-src/emacs/src/lisp.h  491
+Lisp_Misc_Float        c-src/emacs/src/lisp.h  494
+Lisp_Misc_Free c-src/emacs/src/lisp.h  487
+Lisp_Misc_Limit        c-src/emacs/src/lisp.h  496
+Lisp_Misc_Marker       c-src/emacs/src/lisp.h  488
+Lisp_Misc_Overlay      c-src/emacs/src/lisp.h  489
+Lisp_Misc_Save_Value   c-src/emacs/src/lisp.h  490
+Lisp_Misc_Type c-src/emacs/src/lisp.h  485
+Lisp_Object    c-src/emacs/src/lisp.h  567
+Lisp_Object    c-src/emacs/src/lisp.h  577
+Lisp_Objfwd    c-src/emacs/src/lisp.h  2294
+Lisp_Overlay   c-src/emacs/src/lisp.h  2021
+Lisp_Save_Type c-src/emacs/src/lisp.h  2064
+Lisp_Save_Value        c-src/emacs/src/lisp.h  2110
+Lisp_String    c-src/emacs/src/lisp.h  466
+Lisp_Sub_Char_Table    c-src/emacs/src/lisp.h  1606
+Lisp_Subr      c-src/emacs/src/lisp.h  1670
+Lisp_Symbol    c-src/emacs/src/lisp.h  454
+Lisp_Symbol    c-src/emacs/src/lisp.h  654
+Lisp_Type      c-src/emacs/src/lisp.h  451
+Lisp_Vector    c-src/emacs/src/lisp.h  1369
+Lisp_Vectorlike        c-src/emacs/src/lisp.h  472
+Lisp_functions c-src/etags.c   /^Lisp_functions (FILE *inf)$/
+Lisp_help      c-src/etags.c   591
+Lisp_suffixes  c-src/etags.c   589
+ListEdit       pyt-src/server.py       /^class ListEdit(Frame):$/
+Locate pas-src/common.pas      /^function Locate; (*($/
+Lock/t ada-src/2ataspri.ads    /^   type Lock is private;$/
+Lock/t ada-src/2ataspri.ads    /^   type Lock is$/
+LowerCaseNmStr pas-src/common.pas      /^function LowerCaseNmStr; (*($/
+Lua_functions  c-src/etags.c   /^Lua_functions (FILE *inf)$/
+Lua_help       c-src/etags.c   600
+Lua_suffixes   c-src/etags.c   598
+MAGENTA        cp-src/screen.hpp       17
+MAGICBYTE      c-src/emacs/src/gmalloc.c       1856
+MAGICFREE      c-src/emacs/src/gmalloc.c       1855
+MAGICWORD      c-src/emacs/src/gmalloc.c       1854
+MAKE   make-src/Makefile       /^MAKE:=$(MAKE) --no-print-directory$/
+MAKESRC        make-src/Makefile       /^MAKESRC=Makefile$/
+MALLOCFLOOD    c-src/emacs/src/gmalloc.c       1857
+MANY   c-src/emacs/src/lisp.h  2833
+MARKERP        c-src/emacs/src/lisp.h  /^# define MARKERP(x) lisp_h_MARKERP 
(x)$/
+MAXPATHLEN     c-src/etags.c   115
+MAX_ALLOCA     c-src/emacs/src/lisp.h  4556
+MAX_ENCODED_BYTES      c-src/emacs/src/keyboard.c      2254
+MAX_HASH_VALUE c-src/etags.c   2329
+MAX_WORD_LENGTH        c-src/etags.c   2327
+MAYBEREL       y-src/parse.y   /^#define MAYBEREL(p) (*(p)=='[' && 
(isdigit((p)[1])/
+MBYTES objc-src/PackInsp.m     59
+MCHECK_DISABLED        c-src/emacs/src/gmalloc.c       285
+MCHECK_FREE    c-src/emacs/src/gmalloc.c       287
+MCHECK_HEAD    c-src/emacs/src/gmalloc.c       288
+MCHECK_OK      c-src/emacs/src/gmalloc.c       286
+MCHECK_TAIL    c-src/emacs/src/gmalloc.c       289
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (T *d, int r, int c) : 
DiagArray2<T>/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (const Array<T>& a) : 
DiagArray2<T> /
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (const DiagArray2<T>& 
a) : DiagArray/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (const MDiagArray2<T>& 
a) : DiagArra/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (int r, int c) : 
DiagArray2<T> (r, c/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (int r, int c, const T& 
val) : DiagA/
+MDiagArray2    cp-src/MDiagArray2.h    /^  MDiagArray2 (void) : DiagArray2<T> 
() { }$/
+MDiagArray2    cp-src/MDiagArray2.h    78
+MIN_HASH_VALUE c-src/etags.c   2328
+MIN_WORD_LENGTH        c-src/etags.c   2326
+MISCP  c-src/emacs/src/lisp.h  /^# define MISCP(x) lisp_h_MISCP (x)$/
+MOST_NEGATIVE_FIXNUM   c-src/emacs/src/lisp.h  835
+MOST_POSITIVE_FIXNUM   c-src/emacs/src/lisp.h  834
+MOVE   c-src/sysdep.h  /^#define MOVE(x,y)     movl x, y$/
+MSDOS  c-src/etags.c   100
+MSDOS  c-src/etags.c   106
+MSDOS  c-src/etags.c   107
+MSDOS  c-src/etags.c   110
+MSGSEL f-src/entry.for /^       ENTRY  MSGSEL ( TYPE )$/
+MSGSEL f-src/entry.strange     /^       ENTRY  MSGSEL ( TYPE )$/
+MSGSEL f-src/entry.strange_suffix      /^       ENTRY  MSGSEL ( TYPE )$/
+MULTI_LETTER_MOD       c-src/emacs/src/keyboard.c      /^#define 
MULTI_LETTER_MOD(BIT, NAME, LEN)                      \\$/
+MULTI_LETTER_MOD       c-src/emacs/src/keyboard.c      /^#define 
MULTI_LETTER_MOD(BIT, NAME, LEN)              \\$/
+MULTI_LETTER_MOD       c-src/emacs/src/keyboard.c      6231
+MULTI_LETTER_MOD       c-src/emacs/src/keyboard.c      6764
+Machin_T/b     ada-src/waroquiers.ada  /^  protected body Machin_T is$/
+Machin_T/t     ada-src/etags-test-for.ada      /^  protected Machin_T is$/
+Machin_T/t     ada-src/etags-test-for.ada      /^  protected type Machin_T is$/
+Machin_T/t     ada-src/waroquiers.ada  /^  protected type Machin_T is$/
+Machine_Exceptions/t   ada-src/2ataspri.ads    /^   type Machine_Exceptions is 
new Interfaces.C.POS/
+MakeDispose    pyt-src/server.py       /^    def MakeDispose(self):$/
+MakeSitelist   pyt-src/server.py       /^    def MakeSitelist(self, master):$/
+Makefile_filenames     c-src/etags.c   603
+Makefile_help  c-src/etags.c   605
+Makefile_targets       c-src/etags.c   /^Makefile_targets (FILE *inf)$/
+Mc     cp-src/c.C      /^int main (void) { my_function0(0); my_function1(1)/
+Mcccp  y-src/cccp.y    /^main ()$/
+Mconway.cpp    cp-src/conway.cpp       /^void main(void)$/
+Metags c-src/etags.c   /^main (int argc, char **argv)$/
+Mfail  cp-src/fail.C   /^main()$/
+Mkai-test.pl   perl-src/kai-test.pl    /^package main;$/
+ModuleExample  ruby-src/test.rb        /^module ModuleExample$/
+More_Lisp_Bits c-src/emacs/src/lisp.h  801
+MoveLayerAfter lua-src/allegro.lua     /^function MoveLayerAfter (this_one)$/
+MoveLayerBefore        lua-src/allegro.lua     /^function MoveLayerBefore 
(this_one)$/
+MoveLayerBottom        lua-src/allegro.lua     /^function MoveLayerBottom ()$/
+MoveLayerTop   lua-src/allegro.lua     /^function MoveLayerTop ()$/
+Mtest.go       go-src/test.go  /^func main() {$/
+Mtest.go       go-src/test.go  1
+Mtest.rs       rs-src/test.rs  /^fn main() {$/
+Mtest1.go      go-src/test1.go /^func main() {$/
+Mtest1.go      go-src/test1.go 1
+Mx.cc  cp-src/x.cc     /^main(int argc, char *argv[])$/
+NAME   y-src/cccp.c    8
+NATNUMP        c-src/emacs/src/lisp.h  /^NATNUMP (Lisp_Object x)$/
+NDEBUG c-src/etags.c   88
+NE     y-src/parse.c   6
+NEG    y-src/parse.c   9
+NEXT_ALMOST_PRIME_LIMIT        c-src/emacs/src/lisp.h  3573
+NILP   c-src/emacs/src/lisp.h  /^# define NILP(x) lisp_h_NILP (x)$/
+NIL_IS_ZERO    c-src/emacs/src/lisp.h  1515
+NONPOINTER_BITS        c-src/emacs/src/lisp.h  78
+NONPOINTER_BITS        c-src/emacs/src/lisp.h  80
+NONSRCS        make-src/Makefile       /^NONSRCS=entry.strange lists.erl 
clheir.hpp.gz$/
+NOTEQUAL       y-src/cccp.c    13
+NULL   y-src/cccp.y    51
+NULL_PTR       y-src/cccp.y    63
+NUMSTATS       objc-src/PackInsp.h     36
+NUM_MOD_NAMES  c-src/emacs/src/keyboard.c      6325
+NUM_RECENT_KEYS        c-src/emacs/src/keyboard.c      91
+NameHasChar    pas-src/common.pas      /^function NameHasChar; (* (TheName : 
NameString; Th/
+NameStringLess pas-src/common.pas      /^function NameStringLess;(*(var 
Name1,Name2 : NameS/
+NewLayer       lua-src/allegro.lua     /^function NewLayer (name, x, y, w, h)$/
+NewLayerSet    lua-src/allegro.lua     /^function NewLayerSet (name)$/
+NewNameString  pas-src/common.pas      /^procedure NewNameString; (* (var NSP: 
NameStringPo/
+NmStrToErrStr  pas-src/common.pas      /^function NmStrToErrStr;(*($/
+NmStrToInteger pas-src/common.pas      /^function NmStrToInteger; (* (Str : 
NameString) : i/
+OBJCPPSRC      make-src/Makefile       /^OBJCPPSRC=SimpleCalc.H SimpleCalc.M$/
+OBJCSRC        make-src/Makefile       /^OBJCSRC=Subprocess.h Subprocess.m 
PackInsp.h PackI/
+OBJS   make-src/Makefile       /^OBJS=${GETOPTOBJS} ${REGEXOBJS} ${CHECKOBJS}$/
+OPENBUTTON     objc-src/PackInsp.m     47
+OPTIONS        make-src/Makefile       /^OPTIONS=--members --declarations 
--regex=@regexfil/
+OR     y-src/cccp.c    10
+OTAGS  make-src/Makefile       /^OTAGS: oetags ${SRCS} srclist$/
+OVERLAYP       c-src/emacs/src/lisp.h  /^OVERLAYP (Lisp_Object x)$/
+Objc_help      c-src/etags.c   613
+Objc_suffixes  c-src/etags.c   609
+OperatorFun    c-src/h.h       88
+Overview       tex-src/gzip.texi       /^@node Overview, Sample, Copying, Top$/
+PASSRC make-src/Makefile       /^PASSRC=common.pas$/
+PDT    c-src/h.h       /^  Date 04 May 87 235311 PDT (Mon)$/
+PERLSRC        make-src/Makefile       /^PERLSRC=htlmify-cystic yagrip.pl 
kai-test.pl mirro/
+PHPSRC make-src/Makefile       /^PHPSRC=lce_functions.php ptest.php 
sendmail.php$/
+PHP_functions  c-src/etags.c   /^PHP_functions (FILE *inf)$/
+PHP_help       c-src/etags.c   639
+PHP_suffixes   c-src/etags.c   637
+POEntry        php-src/lce_functions.php       /^      function POEntry()$/
+POEntry        php-src/lce_functions.php       105
+POEntryAD      php-src/lce_functions.php       29
+PORManager     php-src/lce_functions.php       /^      function PORManager()$/
+PORManager     php-src/lce_functions.php       498
+POReader       php-src/lce_functions.php       /^      function 
POReader($domain, $filename)$/
+POReader       php-src/lce_functions.php       163
+POSTSCRIPTFLAGS        make-src/Makefile       
/^POSTSCRIPTFLAGS=--language=none --regex='#\/[^ \\t{]/
+PRINT_UNDOCUMENTED_OPTIONS_HELP        c-src/etags.c   804
+PROCESSP       c-src/emacs/src/lisp.h  /^PROCESSP (Lisp_Object a)$/
+PROLSRC        make-src/Makefile       /^PROLSRC=ordsets.prolog natded.prolog$/
+PROP   c-src/emacs/src/keyboard.c      /^#define PROP(IDX) AREF 
(tool_bar_item_properties, /
+PROP   c-src/emacs/src/keyboard.c      8379
+PROTECT_MALLOC_STATE   c-src/emacs/src/gmalloc.c       /^#define 
PROTECT_MALLOC_STATE(PROT)    \/* empty *\/$/
+PROTECT_MALLOC_STATE   c-src/emacs/src/gmalloc.c       /^#define 
PROTECT_MALLOC_STATE(PROT) protect_malloc_/
+PRTPKG f-src/entry.for /^      LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/
+PRTPKG f-src/entry.strange     /^      LOGICAL FUNCTION PRTPKG ( SHORT, LONG, 
EXPL,/
+PRTPKG f-src/entry.strange_suffix      /^      LOGICAL FUNCTION PRTPKG ( 
SHORT, LONG, EXPL,/
+PSEUDO c-src/sysdep.h  /^#define       PSEUDO(name, syscall_name, args)        
                              /
+PSEUDOVECSIZE  c-src/emacs/src/lisp.h  /^#define PSEUDOVECSIZE(type, 
nonlispfield)                     \\$/
+PSEUDOVECTORP  c-src/emacs/src/lisp.h  /^PSEUDOVECTORP (Lisp_Object a, int 
code)$/
+PSEUDOVECTOR_AREA_BITS c-src/emacs/src/lisp.h  818
+PSEUDOVECTOR_FLAG      c-src/emacs/src/lisp.h  774
+PSEUDOVECTOR_REST_BITS c-src/emacs/src/lisp.h  813
+PSEUDOVECTOR_REST_MASK c-src/emacs/src/lisp.h  814
+PSEUDOVECTOR_SIZE_BITS c-src/emacs/src/lisp.h  808
+PSEUDOVECTOR_SIZE_MASK c-src/emacs/src/lisp.h  809
+PSEUDOVECTOR_TYPEP     c-src/emacs/src/lisp.h  /^PSEUDOVECTOR_TYPEP (struct 
vectorlike_header *a, i/
+PSSRC  make-src/Makefile       /^PSSRC=rfc1245.ps$/
+PS_functions   c-src/etags.c   /^PS_functions (FILE *inf)$/
+PS_help        c-src/etags.c   649
+PS_suffixes    c-src/etags.c   647
+PTY_LENGTH     objc-src/Subprocess.m   21
+PTY_TEMPLATE   objc-src/Subprocess.m   20
+PUSH_C_STR     c-src/emacs/src/keyboard.c      /^#define PUSH_C_STR(str, 
listvar) \\$/
+PUSH_HANDLER   c-src/emacs/src/lisp.h  /^#define PUSH_HANDLER(c, tag_ch_val, 
handlertype)      \\/
+PVEC_BOOL_VECTOR       c-src/emacs/src/lisp.h  787
+PVEC_BUFFER    c-src/emacs/src/lisp.h  788
+PVEC_CHAR_TABLE        c-src/emacs/src/lisp.h  796
+PVEC_COMPILED  c-src/emacs/src/lisp.h  795
+PVEC_FONT      c-src/emacs/src/lisp.h  798
+PVEC_FRAME     c-src/emacs/src/lisp.h  785
+PVEC_FREE      c-src/emacs/src/lisp.h  783
+PVEC_HASH_TABLE        c-src/emacs/src/lisp.h  789
+PVEC_NORMAL_VECTOR     c-src/emacs/src/lisp.h  782
+PVEC_OTHER     c-src/emacs/src/lisp.h  793
+PVEC_PROCESS   c-src/emacs/src/lisp.h  784
+PVEC_SUBR      c-src/emacs/src/lisp.h  792
+PVEC_SUB_CHAR_TABLE    c-src/emacs/src/lisp.h  797
+PVEC_TERMINAL  c-src/emacs/src/lisp.h  790
+PVEC_TYPE_MASK c-src/emacs/src/lisp.h  819
+PVEC_WINDOW    c-src/emacs/src/lisp.h  786
+PVEC_WINDOW_CONFIGURATION      c-src/emacs/src/lisp.h  791
+PYTSRC make-src/Makefile       /^PYTSRC=server.py$/
+PackageInspector       objc-src/PackInsp.h     /^@interface 
PackageInspector:WMInspector$/
+Pascal_functions       c-src/etags.c   /^Pascal_functions (FILE *inf)$/
+Pascal_help    c-src/etags.c   621
+Pascal_suffixes        c-src/etags.c   619
+Perl_functions c-src/etags.c   /^Perl_functions (FILE *inf)$/
+Perl_help      c-src/etags.c   630
+Perl_interpreters      c-src/etags.c   628
+Perl_suffixes  c-src/etags.c   626
+Pkg1/b ada-src/etags-test-for.ada      /^package body Pkg1 is$/
+Pkg1/b ada-src/waroquiers.ada  /^package body Pkg1 is$/
+Pkg1/s ada-src/etags-test-for.ada      /^package Pkg1 is$/
+Pkg1/s ada-src/waroquiers.ada  /^package Pkg1 is$/
+Pkg1_Func1/f   ada-src/etags-test-for.ada      /^  function Pkg1_Func1 return 
Boolean is separate;$/
+Pkg1_Func1/f   ada-src/etags-test-for.ada      /^  function Pkg1_Func1 return 
Boolean;$/
+Pkg1_Func1/f   ada-src/etags-test-for.ada      /^function  Pkg1_Func1 return 
Boolean is$/
+Pkg1_Func1/f   ada-src/waroquiers.ada  /^  function Pkg1_Func1 return Boolean 
is separate;$/
+Pkg1_Func1/f   ada-src/waroquiers.ada  /^  function Pkg1_Func1 return 
Boolean;$/
+Pkg1_Func1/f   ada-src/waroquiers.ada  /^function  Pkg1_Func1 return Boolean 
is$/
+Pkg1_Func2/f   ada-src/etags-test-for.ada      /^  function Pkg1_Func2 (Ijk : 
Integer; Z : Integer)/
+Pkg1_Func2/f   ada-src/waroquiers.ada  /^  function Pkg1_Func2 (Ijk : Integer; 
Z : Integer)/
+Pkg1_Pkg1/b    ada-src/etags-test-for.ada      /^  package body Pkg1_Pkg1 is 
separate;$/
+Pkg1_Pkg1/b    ada-src/etags-test-for.ada      /^package body Pkg1_Pkg1 is$/
+Pkg1_Pkg1/b    ada-src/waroquiers.ada  /^  package body Pkg1_Pkg1 is 
separate;$/
+Pkg1_Pkg1/b    ada-src/waroquiers.ada  /^package body Pkg1_Pkg1 is$/
+Pkg1_Pkg1/s    ada-src/etags-test-for.ada      /^  package Pkg1_Pkg1 is$/
+Pkg1_Pkg1/s    ada-src/waroquiers.ada  /^  package Pkg1_Pkg1 is$/
+Pkg1_Pkg1_Proc1/p      ada-src/etags-test-for.ada      /^    procedure 
Pkg1_Pkg1_Proc1;$/
+Pkg1_Pkg1_Proc1/p      ada-src/etags-test-for.ada      /^  procedure 
Pkg1_Pkg1_Proc1 is$/
+Pkg1_Pkg1_Proc1/p      ada-src/waroquiers.ada  /^    procedure 
Pkg1_Pkg1_Proc1;$/
+Pkg1_Pkg1_Proc1/p      ada-src/waroquiers.ada  /^  procedure Pkg1_Pkg1_Proc1 
is$/
+Pkg1_Proc1/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc1 is$/
+Pkg1_Proc1/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc1;$/
+Pkg1_Proc1/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc1 is$/
+Pkg1_Proc1/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc1;$/
+Pkg1_Proc2/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc2 (I : 
Integer) is$/
+Pkg1_Proc2/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc2 (I : 
Integer);$/
+Pkg1_Proc2/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc2 (I : Integer) 
is$/
+Pkg1_Proc2/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc2 (I : 
Integer);$/
+PostControls   pyt-src/server.py       /^    def PostControls(self):$/
+Pre_Call_State/t       ada-src/2ataspri.ads    /^   type Pre_Call_State is new 
System.Address;$/
+PrintAdd       go-src/test1.go /^func (n intNumber) PrintAdd() {$/
+PrintAdd       go-src/test1.go /^func (s str) PrintAdd() {$/
+Private        objc-src/Subprocess.m   /^@interface Subprocess(Private)$/
+Private_T/b    ada-src/etags-test-for.ada      /^    task body Private_T is$/
+Private_T/b    ada-src/waroquiers.ada  /^    task body Private_T is$/
+Private_T/k    ada-src/etags-test-for.ada      /^    task Private_T;$/
+Private_T/k    ada-src/waroquiers.ada  /^    task Private_T;$/
+Private_T/p    ada-src/etags-test-for.ada      /^    procedure Private_T is$/
+Private_T/p    ada-src/etags-test-for.ada      /^    procedure Private_T;$/
+Private_T/p    ada-src/waroquiers.ada  /^    procedure Private_T is$/
+Private_T/p    ada-src/waroquiers.ada  /^    procedure Private_T;$/
+Private_T/t    ada-src/etags-test-for.ada      /^  type Private_T is private;$/
+Private_T/t    ada-src/etags-test-for.ada      /^  type Private_T is$/
+Private_T/t    ada-src/waroquiers.ada  /^  type Private_T is private;$/
+Private_T/t    ada-src/waroquiers.ada  /^  type Private_T is$/
+Problems       tex-src/gzip.texi       /^@node Problems, Concept Index, Tapes, 
Top$/
+Proc/t ada-src/2ataspri.ads    /^   type Proc is access procedure (Addr : 
System.Ad/
+Prolog_functions       c-src/etags.c   /^Prolog_functions (FILE *inf)$/
+Prolog_help    c-src/etags.c   654
+Prolog_suffixes        c-src/etags.c   652
+Public_T/t     ada-src/etags-test-for.ada      /^  type Public_T is$/
+Public_T/t     ada-src/waroquiers.ada  /^  type Public_T is$/
+Python_functions       c-src/etags.c   /^Python_functions (FILE *inf)$/
+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
+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
+READABLE_EVENTS_FILTER_EVENTS  c-src/emacs/src/keyboard.c      347
+READABLE_EVENTS_IGNORE_SQUEEZABLES     c-src/emacs/src/keyboard.c      348
+RECC_ALNUM     c-src/emacs/src/regex.h 610
+RECC_ALPHA     c-src/emacs/src/regex.h 610
+RECC_ASCII     c-src/emacs/src/regex.h 617
+RECC_BLANK     c-src/emacs/src/regex.h 615
+RECC_CNTRL     c-src/emacs/src/regex.h 613
+RECC_DIGIT     c-src/emacs/src/regex.h 614
+RECC_ERROR     c-src/emacs/src/regex.h 609
+RECC_GRAPH     c-src/emacs/src/regex.h 611
+RECC_LOWER     c-src/emacs/src/regex.h 612
+RECC_MULTIBYTE c-src/emacs/src/regex.h 616
+RECC_NONASCII  c-src/emacs/src/regex.h 616
+RECC_PRINT     c-src/emacs/src/regex.h 611
+RECC_PUNCT     c-src/emacs/src/regex.h 613
+RECC_SPACE     c-src/emacs/src/regex.h 615
+RECC_UNIBYTE   c-src/emacs/src/regex.h 617
+RECC_UPPER     c-src/emacs/src/regex.h 612
+RECC_WORD      c-src/emacs/src/regex.h 610
+RECC_XDIGIT    c-src/emacs/src/regex.h 614
+RED    cp-src/screen.hpp       16
+REGEX  make-src/Makefile       /^REGEX=\/[ \\t]*DEFVAR_[A-Z_ 
\\t\\n(]+"\\([^"]+\\)"\/$/
+REGEXOBJS      make-src/Makefile       /^REGEXOBJS=regex.o$/
+REGS_FIXED     c-src/emacs/src/regex.h 378
+REGS_REALLOCATE        c-src/emacs/src/regex.h 377
+REGS_UNALLOCATED       c-src/emacs/src/regex.h 376
+REG_BADBR      c-src/emacs/src/regex.h 313
+REG_BADPAT     c-src/emacs/src/regex.h 305
+REG_BADRPT     c-src/emacs/src/regex.h 316
+REG_EBRACE     c-src/emacs/src/regex.h 312
+REG_EBRACK     c-src/emacs/src/regex.h 310
+REG_ECOLLATE   c-src/emacs/src/regex.h 306
+REG_ECTYPE     c-src/emacs/src/regex.h 307
+REG_EEND       c-src/emacs/src/regex.h 319
+REG_EESCAPE    c-src/emacs/src/regex.h 308
+REG_ENOSYS     c-src/emacs/src/regex.h 297
+REG_ENOSYS     c.c     279
+REG_EPAREN     c-src/emacs/src/regex.h 311
+REG_ERANGE     c-src/emacs/src/regex.h 314
+REG_ERANGEX    c-src/emacs/src/regex.h 322
+REG_ERPAREN    c-src/emacs/src/regex.h 321
+REG_ESIZE      c-src/emacs/src/regex.h 320
+REG_ESPACE     c-src/emacs/src/regex.h 315
+REG_ESUBREG    c-src/emacs/src/regex.h 309
+REG_EXTENDED   c-src/emacs/src/regex.h 263
+REG_ICASE      c-src/emacs/src/regex.h 267
+REG_NEWLINE    c-src/emacs/src/regex.h 272
+REG_NOERROR    c-src/emacs/src/regex.h 300
+REG_NOMATCH    c-src/emacs/src/regex.h 301
+REG_NOSUB      c-src/emacs/src/regex.h 276
+REG_NOTBOL     c-src/emacs/src/regex.h 286
+REG_NOTEOL     c-src/emacs/src/regex.h 289
+RELEASELIST    make-src/Makefile       /^RELEASELIST=pot@gnu.org 
xemacs-review@xemacs.org j/
+RESUME_POLLING c-src/emacs/src/keyboard.c      2170
+RETURN_UNGCPRO c-src/emacs/src/lisp.h  /^#define RETURN_UNGCPRO(expr)          
        \\$/
+RE_BACKSLASH_ESCAPE_IN_LISTS   c-src/emacs/src/regex.h 47
+RE_BK_PLUS_QM  c-src/emacs/src/regex.h 52
+RE_CHAR_CLASSES        c-src/emacs/src/regex.h 58
+RE_CONTEXT_INDEP_ANCHORS       c-src/emacs/src/regex.h 72
+RE_CONTEXT_INDEP_OPS   c-src/emacs/src/regex.h 80
+RE_CONTEXT_INVALID_OPS c-src/emacs/src/regex.h 84
+RE_DEBUG       c-src/emacs/src/regex.h 161
+RE_DOT_NEWLINE c-src/emacs/src/regex.h 88
+RE_DOT_NOT_NULL        c-src/emacs/src/regex.h 92
+RE_DUP_MAX     c-src/emacs/src/regex.h 253
+RE_DUP_MAX     c-src/emacs/src/regex.h 256
+RE_FRUGAL      c-src/emacs/src/regex.h 147
+RE_HAT_LISTS_NOT_NEWLINE       c-src/emacs/src/regex.h 96
+RE_INTERVALS   c-src/emacs/src/regex.h 101
+RE_LIMITED_OPS c-src/emacs/src/regex.h 105
+RE_NEWLINE_ALT c-src/emacs/src/regex.h 109
+RE_NO_BK_BRACES        c-src/emacs/src/regex.h 114
+RE_NO_BK_PARENS        c-src/emacs/src/regex.h 118
+RE_NO_BK_REFS  c-src/emacs/src/regex.h 122
+RE_NO_BK_VBAR  c-src/emacs/src/regex.h 126
+RE_NO_EMPTY_RANGES     c-src/emacs/src/regex.h 132
+RE_NO_GNU_OPS  c-src/emacs/src/regex.h 144
+RE_NO_NEWLINE_ANCHOR   c-src/emacs/src/regex.h 153
+RE_NO_POSIX_BACKTRACKING       c-src/emacs/src/regex.h 140
+RE_NREGS       c-src/emacs/src/regex.h 440
+RE_SHY_GROUPS  c-src/emacs/src/regex.h 150
+RE_SYNTAX_AWK  c-src/emacs/src/regex.h 186
+RE_SYNTAX_ED   c-src/emacs/src/regex.h 216
+RE_SYNTAX_EGREP        c-src/emacs/src/regex.h 206
+RE_SYNTAX_EMACS        c-src/emacs/src/regex.h 183
+RE_SYNTAX_GNU_AWK      c-src/emacs/src/regex.h 193
+RE_SYNTAX_GREP c-src/emacs/src/regex.h 201
+RE_SYNTAX_POSIX_AWK    c-src/emacs/src/regex.h 197
+RE_SYNTAX_POSIX_BASIC  c-src/emacs/src/regex.h 225
+RE_SYNTAX_POSIX_EGREP  c-src/emacs/src/regex.h 212
+RE_SYNTAX_POSIX_EXTENDED       c-src/emacs/src/regex.h 234
+RE_SYNTAX_POSIX_MINIMAL_BASIC  c-src/emacs/src/regex.h 231
+RE_SYNTAX_POSIX_MINIMAL_EXTENDED       c-src/emacs/src/regex.h 242
+RE_SYNTAX_SED  c-src/emacs/src/regex.h 218
+RE_TRANSLATE_TYPE      c-src/emacs/src/regex.h 332
+RE_UNMATCHED_RIGHT_PAREN_ORD   c-src/emacs/src/regex.h 136
+RSH    y-src/cccp.c    17
+RTE/s  ada-src/2ataspri.adb    /^   package RTE renames 
Interfaces.C.POSIX_RTE;$/
+RUN    make-src/Makefile       /^RUN=$/
+RUN    make-src/Makefile       /^RUN=time --quiet --format '%U + %S: %E'$/
+RXINCLUDE      make-src/Makefile       /^RXINCLUDE=-Iemacs\/src$/
+Range  cp-src/Range.h  /^  Range (const Range& r)$/
+Range  cp-src/Range.h  /^  Range (double b, double l)$/
+Range  cp-src/Range.h  /^  Range (double b, double l, double i)$/
+Range  cp-src/Range.h  /^  Range (void)$/
+Range  cp-src/Range.h  35
+ReadVacation   cp-src/functions.cpp    /^void ReadVacation ( char *filename ) 
{$/
+Read_Lock/p    ada-src/2ataspri.adb    /^   procedure Read_Lock (L : in out 
Lock; Ceiling_V/
+Read_Lock/p    ada-src/2ataspri.ads    /^   procedure Read_Lock (L : in out 
Lock; Ceiling_V/
+Rectangle.getPos       lua-src/test.lua        /^function Rectangle.getPos ()$/
+ReleaseNameString      pas-src/common.pas      /^procedure ReleaseNameString; 
(* (var NSP: NameStri/
+RemoveLayer    lua-src/allegro.lua     /^function RemoveLayer ()$/
+RemoveUnderlineControl pas-src/common.pas      /^function 
RemoveUnderlineControl; (*($/
+ReprOfChar     pas-src/common.pas      /^function ReprOfChar; (*( ch : char) : 
NameString;*/
+S      c.c     156
+SAFE_ALLOCA    c-src/emacs/src/lisp.h  /^#define SAFE_ALLOCA(size) ((size) <= 
sa_avail                         \\/
+SAFE_ALLOCA_LISP       c-src/emacs/src/lisp.h  /^#define SAFE_ALLOCA_LISP(buf, 
nelt)                          \\$/
+SAFE_ALLOCA_STRING     c-src/emacs/src/lisp.h  /^#define 
SAFE_ALLOCA_STRING(ptr, string)                       \\$/
+SAFE_FREE      c-src/emacs/src/lisp.h  /^#define SAFE_FREE()                   
\\$/
+SAFE_NALLOCA   c-src/emacs/src/lisp.h  /^#define SAFE_NALLOCA(buf, multiplier, 
nitems)                  \\/
+SAVE_FUNCPOINTER       c-src/emacs/src/lisp.h  2049
+SAVE_INTEGER   c-src/emacs/src/lisp.h  2048
+SAVE_OBJECT    c-src/emacs/src/lisp.h  2051
+SAVE_POINTER   c-src/emacs/src/lisp.h  2050
+SAVE_SLOT_BITS c-src/emacs/src/lisp.h  2055
+SAVE_TYPE_BITS c-src/emacs/src/lisp.h  2062
+SAVE_TYPE_BITS c-src/emacs/src/lisp.h  2114
+SAVE_TYPE_BITS c-src/emacs/src/lisp.h  2123
+SAVE_TYPE_FUNCPTR_PTR_OBJ      c-src/emacs/src/lisp.h  2076
+SAVE_TYPE_INT_INT      c-src/emacs/src/lisp.h  2066
+SAVE_TYPE_INT_INT_INT  c-src/emacs/src/lisp.h  2067
+SAVE_TYPE_MEMORY       c-src/emacs/src/lisp.h  2080
+SAVE_TYPE_OBJ_OBJ      c-src/emacs/src/lisp.h  2069
+SAVE_TYPE_OBJ_OBJ_OBJ  c-src/emacs/src/lisp.h  2070
+SAVE_TYPE_OBJ_OBJ_OBJ_OBJ      c-src/emacs/src/lisp.h  2071
+SAVE_TYPE_PTR_INT      c-src/emacs/src/lisp.h  2073
+SAVE_TYPE_PTR_OBJ      c-src/emacs/src/lisp.h  2074
+SAVE_TYPE_PTR_PTR      c-src/emacs/src/lisp.h  2075
+SAVE_UNUSED    c-src/emacs/src/lisp.h  2047
+SAVE_VALUEP    c-src/emacs/src/lisp.h  /^SAVE_VALUEP (Lisp_Object x)$/
+SAVE_VALUE_SLOTS       c-src/emacs/src/lisp.h  2058
+SBYTES c-src/emacs/src/lisp.h  /^SBYTES (Lisp_Object string)$/
+SCHARS c-src/emacs/src/lisp.h  /^SCHARS (Lisp_Object string)$/
+SCREEN_FP      cp-src/screen.hpp       /^#define SCREEN_FP(x,y) \\$/
+SCREEN_START   cp-src/screen.hpp       33
+SDATA  c-src/emacs/src/lisp.h  /^SDATA (Lisp_Object string)$/
+SDTrefGetInteger       pas-src/common.pas      /^function SDTrefGetInteger : 
integer;$/
+SDTrefIsEnd    pas-src/common.pas      /^function SDTrefIsEnd : Boolean;$/
+SDTrefRecToString      pas-src/common.pas      /^procedure SDTrefRecToString  
(* ($/
+SDTrefSkipSpaces       pas-src/common.pas      /^procedure SDTrefSkipSpaces;$/
+SDTrefStringToRec      pas-src/common.pas      /^procedure SDTrefStringToRec 
(* ($/
+SETPRT f-src/entry.for /^       ENTRY  SETPRT ( SHORT, EXPL, LONG, TRACE, D/
+SETPRT f-src/entry.strange     /^       ENTRY  SETPRT ( SHORT, EXPL, LONG, 
TRACE, D/
+SETPRT f-src/entry.strange_suffix      /^       ENTRY  SETPRT ( SHORT, EXPL, 
LONG, TRACE, D/
+SET_SYMBOL_BLV c-src/emacs/src/lisp.h  /^SET_SYMBOL_BLV (struct Lisp_Symbol 
*sym, struct Li/
+SET_SYMBOL_FWD c-src/emacs/src/lisp.h  /^SET_SYMBOL_FWD (struct Lisp_Symbol 
*sym, union Lis/
+SET_SYMBOL_VAL c-src/emacs/src/lisp.h  /^# define SET_SYMBOL_VAL(sym, v) 
lisp_h_SET_SYMBOL_/
+SINGLE_LETTER_MOD      c-src/emacs/src/keyboard.c      /^#define 
SINGLE_LETTER_MOD(BIT)                                \\$/
+SINGLE_LETTER_MOD      c-src/emacs/src/keyboard.c      6212
+SINGLE_LETTER_MOD      c-src/emacs/src/keyboard.c      6763
+SIZEFORMAT     objc-src/PackInsp.m     57
+SPECPDL_BACKTRACE      c-src/emacs/src/lisp.h  2948
+SPECPDL_INDEX  c-src/emacs/src/lisp.h  /^SPECPDL_INDEX (void)$/
+SPECPDL_LET    c-src/emacs/src/lisp.h  2949
+SPECPDL_LET_DEFAULT    c-src/emacs/src/lisp.h  2952
+SPECPDL_LET_LOCAL      c-src/emacs/src/lisp.h  2951
+SPECPDL_UNWIND c-src/emacs/src/lisp.h  2944
+SPECPDL_UNWIND_INT     c-src/emacs/src/lisp.h  2946
+SPECPDL_UNWIND_PTR     c-src/emacs/src/lisp.h  2945
+SPECPDL_UNWIND_VOID    c-src/emacs/src/lisp.h  2947
+SRCS   make-src/Makefile       /^SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} 
${CPSRC} $/
+SREF   c-src/emacs/src/lisp.h  /^SREF (Lisp_Object string, ptrdiff_t index)$/
+SSDATA c-src/emacs/src/lisp.h  /^SSDATA (Lisp_Object string)$/
+SSET   c-src/emacs/src/lisp.h  /^SSET (Lisp_Object string, ptrdiff_t index, 
unsigne/
+STACK_CONS     c-src/emacs/src/lisp.h  /^#define STACK_CONS(a, b) \\$/
+STATE_ABORT    php-src/lce_functions.php       25
+STATE_COMPRESSD        objc-src/PackInsp.m     54
+STATE_INSTALLED        objc-src/PackInsp.m     53
+STATE_LOOP     php-src/lce_functions.php       27
+STATE_OK       php-src/lce_functions.php       26
+STATE_UNINSTALLED      objc-src/PackInsp.m     52
+STAT_EQ        objc-src/PackInsp.m     /^#define STAT_EQ(s1, s2)       
((s1)->st_ino == (s2)->st_/
+STDIN  c-src/etags.c   408
+STDIN  c-src/etags.c   411
+STOP_POLLING   c-src/emacs/src/keyboard.c      2166
+STRING_BYTES   c-src/emacs/src/lisp.h  /^STRING_BYTES (struct Lisp_String *s)$/
+STRING_BYTES_BOUND     c-src/emacs/src/lisp.h  1261
+STRING_MULTIBYTE       c-src/emacs/src/lisp.h  /^STRING_MULTIBYTE (Lisp_Object 
str)$/
+STRING_SET_CHARS       c-src/emacs/src/lisp.h  /^STRING_SET_CHARS (Lisp_Object 
string, ptrdiff_t ne/
+STRING_SET_MULTIBYTE   c-src/emacs/src/lisp.h  /^#define 
STRING_SET_MULTIBYTE(STR)                     \\$/
+STRING_SET_UNIBYTE     c-src/emacs/src/lisp.h  /^#define 
STRING_SET_UNIBYTE(STR)                               \\$/
+SUBRP  c-src/emacs/src/lisp.h  /^SUBRP (Lisp_Object a)$/
+SUB_CHAR_TABLE_OFFSET  c-src/emacs/src/lisp.h  1701
+SUB_CHAR_TABLE_P       c-src/emacs/src/lisp.h  /^SUB_CHAR_TABLE_P (Lisp_Object 
a)$/
+SXHASH_REDUCE  c-src/emacs/src/lisp.h  /^SXHASH_REDUCE (EMACS_UINT x)$/
+SYMBOLP        c-src/emacs/src/lisp.h  /^# define SYMBOLP(x) lisp_h_SYMBOLP 
(x)$/
+SYMBOL_BLV     c-src/emacs/src/lisp.h  /^SYMBOL_BLV (struct Lisp_Symbol *sym)$/
+SYMBOL_CONSTANT_P      c-src/emacs/src/lisp.h  /^# define 
SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONS/
+SYMBOL_FORWARDED       c-src/emacs/src/lisp.h  651
+SYMBOL_FWD     c-src/emacs/src/lisp.h  /^SYMBOL_FWD (struct Lisp_Symbol *sym)$/
+SYMBOL_INDEX   c-src/emacs/src/lisp.h  /^#define SYMBOL_INDEX(sym) i##sym$/
+SYMBOL_INTERNED        c-src/emacs/src/lisp.h  642
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY     c-src/emacs/src/lisp.h  643
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P   c-src/emacs/src/lisp.h  
/^SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object /
+SYMBOL_INTERNED_P      c-src/emacs/src/lisp.h  /^SYMBOL_INTERNED_P 
(Lisp_Object sym)$/
+SYMBOL_LOCALIZED       c-src/emacs/src/lisp.h  650
+SYMBOL_NAME    c-src/emacs/src/lisp.h  /^SYMBOL_NAME (Lisp_Object sym)$/
+SYMBOL_PLAINVAL        c-src/emacs/src/lisp.h  648
+SYMBOL_UNINTERNED      c-src/emacs/src/lisp.h  641
+SYMBOL_VAL     c-src/emacs/src/lisp.h  /^# define SYMBOL_VAL(sym) 
lisp_h_SYMBOL_VAL (sym)$/
+SYMBOL_VARALIAS        c-src/emacs/src/lisp.h  649
+SYSCALL        c-src/machsyscalls.c    /^#define       SYSCALL(name, number, 
type, args, typed_ar/
+Sample tex-src/gzip.texi       /^@node Sample, Invoking gzip, Overview, Top$/
+Scheme_functions       c-src/etags.c   /^Scheme_functions (FILE *inf)$/
+Scheme_help    c-src/etags.c   667
+Scheme_suffixes        c-src/etags.c   665
+SelectLayer    lua-src/allegro.lua     /^function SelectLayer (layer)$/
+Self/f ada-src/2ataspri.adb    /^   function Self return TCB_Ptr is$/
+Self/f ada-src/2ataspri.ads    /^   function Self return TCB_Ptr;$/
+Server pyt-src/server.py       /^class Server:$/
+ServerEdit     pyt-src/server.py       /^class ServerEdit(Frame):$/
+Set_Own_Priority/p     ada-src/2ataspri.adb    /^   procedure Set_Own_Priority 
(Prio : System.Any_P/
+Set_Own_Priority/p     ada-src/2ataspri.ads    /^   procedure Set_Own_Priority 
(Prio : System.Any_P/
+Set_Priority/p ada-src/2ataspri.adb    /^   procedure Set_Priority$/
+Set_Priority/p ada-src/2ataspri.ads    /^   procedure Set_Priority (T : 
TCB_Ptr; Prio : Sys/
+SimpleCalc     objcpp-src/SimpleCalc.H /^@interface SimpleCalc:Object$/
+SkipBlanks     pas-src/common.pas      /^function SkipBlanks; (*($/
+SkipChars      pas-src/common.pas      /^function SkipChars; (*($/
+SkipSpaces     pas-src/common.pas      /^procedure SkipSpaces; (* (Str : 
NameString; var I /
+Square.something:Bar   lua-src/test.lua        /^function Square.something:Bar 
()$/
+StartDay       cp-src/functions.cpp    /^Date StartDay(Date a,int 
days){\/\/Function to calcu/
+StripPath      pas-src/common.pas      /^function StripPath; (*($/
+SubString      pas-src/common.pas      /^function SubString; (*($/
+Subprocess     objc-src/Subprocess.h   /^@interface Subprocess:Object$/
+Subprocess     objc-src/Subprocess.h   41
+System.Task_Primitives/b       ada-src/2ataspri.adb    /^package body 
System.Task_Primitives is$/
+System.Task_Primitives/s       ada-src/2ataspri.ads    /^package 
System.Task_Primitives is$/
+T      cp-src/fail.C   14
+T2     cp-src/fail.C   16
+T3     c.c     163
+TAGS   make-src/Makefile       /^TAGS: etags.c$/
+TAG_PTR        c-src/emacs/src/lisp.h  /^#define TAG_PTR(tag, ptr) \\$/
+TAG_SYMOFFSET  c-src/emacs/src/lisp.h  /^#define TAG_SYMOFFSET(offset)         
                    \\$/
+TAS_Cell/t     ada-src/2ataspri.ads    /^   type TAS_Cell is private;$/
+TAS_Cell/t     ada-src/2ataspri.ads    /^   type TAS_Cell is$/
+TCB_Ptr/t      ada-src/2ataspri.ads    /^   type TCB_Ptr is access all 
Task_Control_Block;$/
+TCLFLAGS       make-src/Makefile       /^TCLFLAGS=--lang=none --regex='\/proc[ 
\\t]+\\([^ \\t]+/
+TERMINALP      c-src/emacs/src/lisp.h  /^TERMINALP (Lisp_Object a)$/
+TEST   php-src/ptest.php       1
+TEXSRC make-src/Makefile       /^TEXSRC=testenv.tex gzip.texi texinfo.tex 
nonewline/
+TEX_LESC       c-src/etags.c   4986
+TEX_SESC       c-src/etags.c   4987
+TEX_clgrp      c-src/etags.c   4922
+TEX_decode_env c-src/etags.c   /^TEX_decode_env (const char *evarname, const 
char */
+TEX_defenv     c-src/etags.c   4912
+TEX_esc        c-src/etags.c   4920
+TEX_mode       c-src/etags.c   /^TEX_mode (FILE *inf)$/
+TEX_opgrp      c-src/etags.c   4921
+TEX_toktab     c-src/etags.c   4908
+TOTAL_KEYWORDS c-src/etags.c   2325
+TSL/s  ada-src/2ataspri.adb    /^   package TSL renames 
System.Tasking_Soft_Links;$/
+TYPESTOSTAT    objc-src/PackInsp.h     37
+TYPE_RANGED_INTEGERP   c-src/emacs/src/lisp.h  /^#define 
TYPE_RANGED_INTEGERP(type, x) \\$/
+Tapes  tex-src/gzip.texi       /^@node Tapes, Problems, Environment, Top$/
+Task_Control_Block/t   ada-src/2ataspri.ads    /^   type Task_Control_Block is 
record$/
+Task_Storage_Size/t    ada-src/2ataspri.ads    /^   type Task_Storage_Size is 
new Interfaces.C.size/
+Task_Type/b    ada-src/etags-test-for.ada      /^  task body Task_Type is$/
+Task_Type/b    ada-src/waroquiers.ada  /^  task body Task_Type is$/
+Task_Type/k    ada-src/etags-test-for.ada      /^  task type Task_Type is$/
+Task_Type/k    ada-src/waroquiers.ada  /^  task type Task_Type is$/
+TeX_commands   c-src/etags.c   /^TeX_commands (FILE *inf)$/
+TeX_help       c-src/etags.c   674
+TeX_suffixes   c-src/etags.c   672
+Test_Abort/p   ada-src/2ataspri.adb    /^   procedure Test_Abort is$/
+Test_Abort/p   ada-src/2ataspri.ads    /^   procedure Test_Abort;$/
+Test_And_Set/p ada-src/2ataspri.adb    /^   procedure Test_And_Set (Cell : in 
out TAS_Cell;/
+Test_And_Set/p ada-src/2ataspri.ads    /^   procedure Test_And_Set (Cell : in 
out TAS_Cell;/
+Texinfo_help   c-src/etags.c   688
+Texinfo_nodes  c-src/etags.c   /^Texinfo_nodes (FILE *inf)$/
+Texinfo_suffixes       c-src/etags.c   686
+Time_to_position       c-src/emacs/src/keyboard.c      /^Time_to_position 
(Time encoded_pos)$/
+To_Lower       pas-src/common.pas      /^function To_Lower;(*(ch:char) : 
char;*)$/
+To_Start_Addr/f        ada-src/2ataspri.adb    /^      function To_Start_Addr 
is new$/
+To_TCB_Ptr/f   ada-src/2ataspri.adb    /^   function To_TCB_Ptr is new$/
+To_Upper       pas-src/common.pas      /^function To_Upper;(*(ch:char) : 
char;*)$/
+To_void_ptr/f  ada-src/2ataspri.adb    /^   function To_void_ptr is new$/
+Top    tex-src/gzip.texi       /^@node Top, , , (dir)$/
+Truc.Bidule/b  ada-src/etags-test-for.ada      /^package body Truc.Bidule is$/
+Truc.Bidule/b  ada-src/waroquiers.ada  /^package body Truc.Bidule is$/
+Truc.Bidule/s  ada-src/etags-test-for.ada      /^package Truc.Bidule is$/
+Truc.Bidule/s  ada-src/waroquiers.ada  /^package Truc.Bidule is$/
+Truc/s ada-src/etags-test-for.ada      /^package Truc is$/
+Truc/s ada-src/waroquiers.ada  /^package Truc is$/
+Type_Specific_Data/t   ada-src/etags-test-for.ada      /^   type 
Type_Specific_Data is record$/
+UCHAR  c-src/emacs/src/lisp.h  2424
+UNARY  y-src/cccp.c    18
+UNDEFINED      c-src/h.h       118
+UNEVALLED      c-src/emacs/src/lisp.h  2834
+UNGCPRO        c-src/emacs/src/lisp.h  3202
+UNGCPRO        c-src/emacs/src/lisp.h  3257
+UNGCPRO        c-src/emacs/src/lisp.h  3353
+UNLOCK c-src/emacs/src/gmalloc.c       /^#define UNLOCK()                      
        \\$/
+UNLOCK c-src/emacs/src/gmalloc.c       /^#define UNLOCK()$/
+UNLOCK_ALIGNED_BLOCKS  c-src/emacs/src/gmalloc.c       /^#define 
UNLOCK_ALIGNED_BLOCKS()                               \\$/
+UNLOCK_ALIGNED_BLOCKS  c-src/emacs/src/gmalloc.c       /^#define 
UNLOCK_ALIGNED_BLOCKS()$/
+UNSIGNED_CMP   c-src/emacs/src/lisp.h  /^#define UNSIGNED_CMP(a, op, b)        
                                        \\$/
+USE_LSB_TAG    c-src/emacs/src/lisp.h  /^DEFINE_GDB_SYMBOL_BEGIN (bool, 
USE_LSB_TAG)$/
+USE_LSB_TAG    c-src/emacs/src/lisp.h  271
+USE_PTHREAD    c-src/emacs/src/gmalloc.c       25
+USE_SAFE_ALLOCA        c-src/emacs/src/lisp.h  4560
+USE_STACK_CONS c-src/emacs/src/lisp.h  4689
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h  4652
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h  4658
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h  4659
+USE_STACK_STRING       c-src/emacs/src/lisp.h  4691
+U_CHAR y-src/cccp.y    38
+Unlock/p       ada-src/2ataspri.adb    /^   procedure Unlock (L : in out Lock) 
is$/
+Unlock/p       ada-src/2ataspri.ads    /^   procedure Unlock (L : in out 
Lock);$/
+User   pyt-src/server.py       /^class User:$/
+UserEdit       pyt-src/server.py       /^class UserEdit(Frame):$/
+VALBITS        c-src/emacs/src/lisp.h  246
+VALMASK        c-src/emacs/src/lisp.h  /^DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT, 
VALMASK)$/
+VALMASK        c-src/emacs/src/lisp.h  829
+VAL_MAX        c-src/emacs/src/lisp.h  263
+VECSIZE        c-src/emacs/src/lisp.h  /^#define VECSIZE(type)                 
                        \\$/
+VECTORLIKEP    c-src/emacs/src/lisp.h  /^# define VECTORLIKEP(x) 
lisp_h_VECTORLIKEP (x)$/
+VECTORP        c-src/emacs/src/lisp.h  /^VECTORP (Lisp_Object x)$/
+VERSION        c-src/etags.c   789
+VERSION        erl-src/gs_dialog.erl   /^-define(VERSION, '2001.1101').$/
+VERSION        objc-src/PackInsp.m     34
+VHDLFLAGS      make-src/Makefile       /^VHDLFLAGS=--language=none 
--regex='\/[ \\t]*\\(ARCHIT/
+Vabbrev_start_location c-src/abbrev.c  63
+Vabbrev_start_location_buffer  c-src/abbrev.c  66
+Vabbrev_table_name_list        c-src/abbrev.c  43
+ValToNmStr     pas-src/common.pas      /^function ValToNmStr; (*($/
+Vfundamental_mode_abbrev_table c-src/abbrev.c  52
+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
+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 /
+WCHAR_TYPE_SIZE        y-src/cccp.y    99
+WHITE  cp-src/screen.hpp       27
+WINDOWP        c-src/emacs/src/lisp.h  /^WINDOWP (Lisp_Object a)$/
+WINDOWSNT      c-src/etags.c   101
+WINDOWSNT      c-src/etags.c   102
+WINDOW_CONFIGURATIONP  c-src/emacs/src/lisp.h  /^WINDOW_CONFIGURATIONP 
(Lisp_Object a)$/
+WORKING        objc-src/PackInsp.m     368
+WorkingDays    cp-src/functions.cpp    /^int WorkingDays(Date a, Date b){$/
+Write_Lock/p   ada-src/2ataspri.adb    /^   procedure Write_Lock (L : in out 
Lock; Ceiling_/
+Write_Lock/p   ada-src/2ataspri.ads    /^   procedure Write_Lock (L : in out 
Lock; Ceiling_/
+X      c-src/h.h       100
+XBOOL_VECTOR   c-src/emacs/src/lisp.h  /^XBOOL_VECTOR (Lisp_Object a)$/
+XBUFFER        c-src/emacs/src/lisp.h  /^XBUFFER (Lisp_Object a)$/
+XBUFFER_OBJFWD c-src/emacs/src/lisp.h  /^XBUFFER_OBJFWD (union Lisp_Fwd *a)$/
+XCAR   c-src/emacs/src/lisp.h  /^# define XCAR(c) lisp_h_XCAR (c)$/
+XCDR   c-src/emacs/src/lisp.h  /^# define XCDR(c) lisp_h_XCDR (c)$/
+XCHAR_TABLE    c-src/emacs/src/lisp.h  /^XCHAR_TABLE (Lisp_Object a)$/
+XCHG_0 c-src/sysdep.h  47
+XCHG_1 c-src/sysdep.h  48
+XCHG_2 c-src/sysdep.h  49
+XCHG_3 c-src/sysdep.h  50
+XCHG_4 c-src/sysdep.h  51
+XCHG_5 c-src/sysdep.h  52
+XCONS  c-src/emacs/src/lisp.h  /^# define XCONS(a) lisp_h_XCONS (a)$/
+XDEFUN c.c     /^XDEFUN ("x-get-selection-internal", Fx_get_selecti/
+XFASTINT       c-src/emacs/src/lisp.h  /^#  define XFASTINT(a) lisp_h_XFASTINT 
(a)$/
+XFASTINT       c-src/emacs/src/lisp.h  /^XFASTINT (Lisp_Object a)$/
+XFINALIZER     c-src/emacs/src/lisp.h  /^XFINALIZER (Lisp_Object a)$/
+XFLOAT c-src/emacs/src/lisp.h  /^XFLOAT (Lisp_Object a)$/
+XFLOATINT      c-src/emacs/src/lisp.h  /^XFLOATINT (Lisp_Object n)$/
+XFLOAT_DATA    c-src/emacs/src/lisp.h  /^XFLOAT_DATA (Lisp_Object f)$/
+XFWDTYPE       c-src/emacs/src/lisp.h  /^XFWDTYPE (union Lisp_Fwd *a)$/
+XHASH  c-src/emacs/src/lisp.h  /^# define XHASH(a) lisp_h_XHASH (a)$/
+XHASH_TABLE    c-src/emacs/src/lisp.h  /^XHASH_TABLE (Lisp_Object a)$/
+XIL    c-src/emacs/src/lisp.h  /^# define XIL(i) lisp_h_XIL (i)$/
+XINT   c-src/emacs/src/lisp.h  /^#  define XINT(a) lisp_h_XINT (a)$/
+XINT   c-src/emacs/src/lisp.h  /^XINT (Lisp_Object a)$/
+XINTPTR        c-src/emacs/src/lisp.h  /^XINTPTR (Lisp_Object a)$/
+XLI    c-src/emacs/src/lisp.h  /^# define XLI(o) lisp_h_XLI (o)$/
+XLI_BUILTIN_LISPSYM    c-src/emacs/src/lisp.h  /^#define 
XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET (/
+XMARKER        c-src/emacs/src/lisp.h  /^XMARKER (Lisp_Object a)$/
+XMISC  c-src/emacs/src/lisp.h  /^XMISC (Lisp_Object a)$/
+XMISCANY       c-src/emacs/src/lisp.h  /^XMISCANY (Lisp_Object a)$/
+XMISCTYPE      c-src/emacs/src/lisp.h  /^XMISCTYPE (Lisp_Object a)$/
+XOVERLAY       c-src/emacs/src/lisp.h  /^XOVERLAY (Lisp_Object a)$/
+XPNTR  c-src/emacs/src/lisp.h  /^# define XPNTR(a) lisp_h_XPNTR (a)$/
+XPROCESS       c-src/emacs/src/lisp.h  /^XPROCESS (Lisp_Object a)$/
+XSAVE_FUNCPOINTER      c-src/emacs/src/lisp.h  /^XSAVE_FUNCPOINTER 
(Lisp_Object obj, int n)$/
+XSAVE_INTEGER  c-src/emacs/src/lisp.h  /^XSAVE_INTEGER (Lisp_Object obj, int 
n)$/
+XSAVE_OBJECT   c-src/emacs/src/lisp.h  /^XSAVE_OBJECT (Lisp_Object obj, int 
n)$/
+XSAVE_POINTER  c-src/emacs/src/lisp.h  /^XSAVE_POINTER (Lisp_Object obj, int 
n)$/
+XSAVE_VALUE    c-src/emacs/src/lisp.h  /^XSAVE_VALUE (Lisp_Object a)$/
+XSETBOOL_VECTOR        c-src/emacs/src/lisp.h  /^#define XSETBOOL_VECTOR(a, b) 
(XSETPSEUDOVECTOR (a/
+XSETBUFFER     c-src/emacs/src/lisp.h  /^#define XSETBUFFER(a, b) 
(XSETPSEUDOVECTOR (a, b, /
+XSETCDR        c-src/emacs/src/lisp.h  /^XSETCDR (Lisp_Object c, Lisp_Object 
n)$/
+XSETCHAR_TABLE c-src/emacs/src/lisp.h  /^#define XSETCHAR_TABLE(a, b) 
(XSETPSEUDOVECTOR (a,/
+XSETCOMPILED   c-src/emacs/src/lisp.h  /^#define XSETCOMPILED(a, b) 
(XSETPSEUDOVECTOR (a, b/
+XSETCONS       c-src/emacs/src/lisp.h  /^#define XSETCONS(a, b) ((a) = 
make_lisp_ptr (b, Li/
+XSETFASTINT    c-src/emacs/src/lisp.h  /^#define XSETFASTINT(a, b) ((a) = 
make_natnum (b))$/
+XSETFLOAT      c-src/emacs/src/lisp.h  /^#define XSETFLOAT(a, b) ((a) = 
make_lisp_ptr (b, L/
+XSETINT        c-src/emacs/src/lisp.h  /^#define XSETINT(a, b) ((a) = 
make_number (b))$/
+XSETMISC       c-src/emacs/src/lisp.h  /^#define XSETMISC(a, b) ((a) = 
make_lisp_ptr (b, Li/
+XSETPROCESS    c-src/emacs/src/lisp.h  /^#define XSETPROCESS(a, b) 
(XSETPSEUDOVECTOR (a, b,/
+XSETPSEUDOVECTOR       c-src/emacs/src/lisp.h  /^#define XSETPSEUDOVECTOR(a, 
b, code) \\$/
+XSETPVECTYPE   c-src/emacs/src/lisp.h  /^#define XSETPVECTYPE(v, code)         
                                \\$/
+XSETPVECTYPESIZE       c-src/emacs/src/lisp.h  /^#define XSETPVECTYPESIZE(v, 
code, lispsize, restsi/
+XSETSTRING     c-src/emacs/src/lisp.h  /^#define XSETSTRING(a, b) ((a) = 
make_lisp_ptr (b, /
+XSETSUBR       c-src/emacs/src/lisp.h  /^#define XSETSUBR(a, b) 
(XSETPSEUDOVECTOR (a, b, PV/
+XSETSUB_CHAR_TABLE     c-src/emacs/src/lisp.h  /^#define XSETSUB_CHAR_TABLE(a, 
b) (XSETPSEUDOVECTOR/
+XSETSYMBOL     c-src/emacs/src/lisp.h  /^#define XSETSYMBOL(a, b) ((a) = 
make_lisp_symbol (/
+XSETTERMINAL   c-src/emacs/src/lisp.h  /^#define XSETTERMINAL(a, b) 
(XSETPSEUDOVECTOR (a, b/
+XSETTYPED_PSEUDOVECTOR c-src/emacs/src/lisp.h  /^#define 
XSETTYPED_PSEUDOVECTOR(a, b, size, code)              /
+XSETVECTOR     c-src/emacs/src/lisp.h  /^#define XSETVECTOR(a, b) ((a) = 
make_lisp_ptr (b, /
+XSETWINDOW     c-src/emacs/src/lisp.h  /^#define XSETWINDOW(a, b) 
(XSETPSEUDOVECTOR (a, b, /
+XSETWINDOW_CONFIGURATION       c-src/emacs/src/lisp.h  /^#define 
XSETWINDOW_CONFIGURATION(a, b) \\$/
+XSET_HASH_TABLE        c-src/emacs/src/lisp.h  /^#define XSET_HASH_TABLE(VAR, 
PTR) \\$/
+XSTRING        c-src/emacs/src/lisp.h  /^XSTRING (Lisp_Object a)$/
+XSUBR  c-src/emacs/src/lisp.h  /^XSUBR (Lisp_Object a)$/
+XSUB_CHAR_TABLE        c-src/emacs/src/lisp.h  /^XSUB_CHAR_TABLE (Lisp_Object 
a)$/
+XSYMBOL        c-src/emacs/src/lisp.h  /^#  define XSYMBOL(a) lisp_h_XSYMBOL 
(a)$/
+XSYMBOL        c-src/emacs/src/lisp.h  /^XSYMBOL (Lisp_Object a)$/
+XTERMINAL      c-src/emacs/src/lisp.h  /^XTERMINAL (Lisp_Object a)$/
+XTYPE  c-src/emacs/src/lisp.h  /^#  define XTYPE(a) lisp_h_XTYPE (a)$/
+XTYPE  c-src/emacs/src/lisp.h  /^XTYPE (Lisp_Object a)$/
+XUNTAG c-src/emacs/src/lisp.h  /^#  define XUNTAG(a, type) lisp_h_XUNTAG (a, 
type)$/
+XUNTAG c-src/emacs/src/lisp.h  /^XUNTAG (Lisp_Object a, int type)$/
+XWINDOW        c-src/emacs/src/lisp.h  /^XWINDOW (Lisp_Object a)$/
+XX     cp-src/x.cc     1
+Xyzzy  ruby-src/test1.ru       13
+Y      c-src/h.h       100
+YACC   c-src/etags.c   2199
+YELLOW cp-src/screen.hpp       26
+YSRC   make-src/Makefile       /^YSRC=parse.y parse.c atest.y cccp.c cccp.y$/
+YYABORT        /usr/share/bison/bison.simple   153
+YYABORT        /usr/share/bison/bison.simple   154
+YYACCEPT       /usr/share/bison/bison.simple   152
+YYACCEPT       /usr/share/bison/bison.simple   153
+YYBACKUP       /usr/share/bison/bison.simple   /^#define YYBACKUP(Token, 
Value)                                        \\$/
+YYBISON        y-src/cccp.c    4
+YYBISON        y-src/parse.c   4
+YYDPRINTF      /usr/share/bison/bison.simple   /^# define YYDPRINTF(Args)      
                \\$/
+YYDPRINTF      /usr/share/bison/bison.simple   /^# define YYDPRINTF(Args)$/
+YYEMPTY        /usr/share/bison/bison.simple   150
+YYEMPTY        /usr/share/bison/bison.simple   151
+YYEOF  /usr/share/bison/bison.simple   151
+YYEOF  /usr/share/bison/bison.simple   152
+YYERRCODE      /usr/share/bison/bison.simple   178
+YYERRCODE      /usr/share/bison/bison.simple   179
+YYERROR        /usr/share/bison/bison.simple   154
+YYERROR        /usr/share/bison/bison.simple   155
+YYFAIL /usr/share/bison/bison.simple   158
+YYFAIL /usr/share/bison/bison.simple   159
+YYFPRINTF      /usr/share/bison/bison.simple   225
+YYFPRINTF      /usr/share/bison/bison.simple   226
+YYINITDEPTH    /usr/share/bison/bison.simple   244
+YYINITDEPTH    /usr/share/bison/bison.simple   245
+YYLEX  /usr/share/bison/bison.simple   200
+YYLEX  /usr/share/bison/bison.simple   201
+YYLEX  /usr/share/bison/bison.simple   202
+YYLEX  /usr/share/bison/bison.simple   203
+YYLEX  /usr/share/bison/bison.simple   206
+YYLEX  /usr/share/bison/bison.simple   207
+YYLEX  /usr/share/bison/bison.simple   208
+YYLEX  /usr/share/bison/bison.simple   209
+YYLEX  /usr/share/bison/bison.simple   212
+YYLEX  /usr/share/bison/bison.simple   213
+YYLLOC_DEFAULT /usr/share/bison/bison.simple   /^# define 
YYLLOC_DEFAULT(Current, Rhs, N)              \\$/
+YYMAXDEPTH     /usr/share/bison/bison.simple   255
+YYMAXDEPTH     /usr/share/bison/bison.simple   256
+YYMAXDEPTH     /usr/share/bison/bison.simple   259
+YYMAXDEPTH     /usr/share/bison/bison.simple   260
+YYPARSE_PARAM_ARG      /usr/share/bison/bison.simple   351
+YYPARSE_PARAM_ARG      /usr/share/bison/bison.simple   354
+YYPARSE_PARAM_ARG      /usr/share/bison/bison.simple   358
+YYPARSE_PARAM_DECL     /usr/share/bison/bison.simple   352
+YYPARSE_PARAM_DECL     /usr/share/bison/bison.simple   355
+YYPARSE_PARAM_DECL     /usr/share/bison/bison.simple   359
+YYPOPSTACK     /usr/share/bison/bison.simple   445
+YYPOPSTACK     /usr/share/bison/bison.simple   447
+YYRECOVERING   /usr/share/bison/bison.simple   /^#define YYRECOVERING()  
(!!yyerrstatus)$/
+YYSIZE_T       /usr/share/bison/bison.simple   128
+YYSIZE_T       /usr/share/bison/bison.simple   129
+YYSIZE_T       /usr/share/bison/bison.simple   131
+YYSIZE_T       /usr/share/bison/bison.simple   132
+YYSIZE_T       /usr/share/bison/bison.simple   136
+YYSIZE_T       /usr/share/bison/bison.simple   137
+YYSIZE_T       /usr/share/bison/bison.simple   140
+YYSIZE_T       /usr/share/bison/bison.simple   141
+YYSIZE_T       /usr/share/bison/bison.simple   145
+YYSIZE_T       /usr/share/bison/bison.simple   146
+YYSIZE_T       /usr/share/bison/bison.simple   51
+YYSIZE_T       /usr/share/bison/bison.simple   52
+YYSIZE_T       /usr/share/bison/bison.simple   56
+YYSIZE_T       /usr/share/bison/bison.simple   57
+YYSIZE_T       /usr/share/bison/bison.simple   71
+YYSIZE_T       /usr/share/bison/bison.simple   72
+YYSIZE_T       /usr/share/bison/bison.simple   75
+YYSIZE_T       /usr/share/bison/bison.simple   76
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   50
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   51
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   55
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   56
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   59
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   60
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   78
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   79
+YYSTACK_BYTES  /usr/share/bison/bison.simple   /^#  define YYSTACK_BYTES(N) 
\\$/
+YYSTACK_FREE   /usr/share/bison/bison.simple   /^#  define YYSTACK_FREE(Ptr) 
do { \/* empty *\/; } wh/
+YYSTACK_FREE   /usr/share/bison/bison.simple   79
+YYSTACK_FREE   /usr/share/bison/bison.simple   80
+YYSTACK_GAP_MAX        /usr/share/bison/bison.simple   93
+YYSTACK_GAP_MAX        /usr/share/bison/bison.simple   94
+YYSTACK_RELOCATE       /usr/share/bison/bison.simple   /^# define 
YYSTACK_RELOCATE(Type, Stack)                                        \\$/
+YYSTACK_RELOCATE       /usr/share/bison/bison.simple   548
+YYSTD  /usr/share/bison/bison.simple   /^# define YYSTD(x) std::x$/
+YYSTD  /usr/share/bison/bison.simple   /^# define YYSTD(x) x$/
+YYSTYPE        y-src/parse.y   72
+YYSTYPE        y-src/parse.y   73
+YYTERROR       /usr/share/bison/bison.simple   177
+YYTERROR       /usr/share/bison/bison.simple   178
+YY_DECL_NON_LSP_VARIABLES      /usr/share/bison/bison.simple   374
+YY_DECL_VARIABLES      /usr/share/bison/bison.simple   385
+YY_DECL_VARIABLES      /usr/share/bison/bison.simple   391
+Yacc_entries   c-src/etags.c   /^Yacc_entries (FILE *inf)$/
+Yacc_help      c-src/etags.c   693
+Yacc_suffixes  c-src/etags.c   691
+Z      c-src/h.h       100
+[]     ruby-src/test.rb        /^        def [](y)$/
+[]=    ruby-src/test.rb        /^        def []=(y, val)$/
+\      tex-src/texinfo.tex     /^\\def\\ {{\\fontdimen2\\font=\\tclosesave{} 
}}%$/
+\      tex-src/texinfo.tex     /^\\gdef\\sepspaces{\\def {\\ }}}$/
+\'     tex-src/texinfo.tex     /^\\def\\'{{'}}$/
+\*     tex-src/texinfo.tex     
/^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
+\.     tex-src/texinfo.tex     /^\\def\\.{.\\spacefactor=3000 }$/
+\:     tex-src/texinfo.tex     /^\\def\\:{\\spacefactor=1000 }$/
+\@     tex-src/texinfo.tex     /^\\def\\@{@}%$/
+\@     tex-src/texinfo.tex     /^\\def\\@{{\\tt \\char '100}}$/
+\CHAPFopen     tex-src/texinfo.tex     /^\\def\\CHAPFopen{$/
+\CHAPFplain    tex-src/texinfo.tex     /^\\def\\CHAPFplain{$/
+\CHAPPAGodd    tex-src/texinfo.tex     /^\\def\\CHAPPAGodd{$/
+\CHAPPAGoff    tex-src/texinfo.tex     /^\\def\\CHAPPAGoff{$/
+\CHAPPAGon     tex-src/texinfo.tex     /^\\def\\CHAPPAGon{$/
+\ENVcheck      tex-src/texinfo.tex     /^\\def\\ENVcheck{%$/
+\Ealphaenumerate       tex-src/texinfo.tex     
/^\\def\\Ealphaenumerate{\\Eenumerate}$/
+\Ecapsenumerate        tex-src/texinfo.tex     
/^\\def\\Ecapsenumerate{\\Eenumerate}$/
+\Ecartouche    tex-src/texinfo.tex     /^\\def\\Ecartouche{%$/
+\Edescription  tex-src/texinfo.tex     /^\\def\\Edescription{\\Etable}% 
Necessary kludge.$/
+\Edisplay      tex-src/texinfo.tex     
/^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
+\Eexample      tex-src/texinfo.tex     /^\\def\\Eexample{\\Elisp}$/
+\Eflushleft    tex-src/texinfo.tex     
/^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
+\Eflushright   tex-src/texinfo.tex     
/^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
+\Eformat       tex-src/texinfo.tex     
/^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
+\Eftable       tex-src/texinfo.tex     
/^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\Egroup        tex-src/texinfo.tex     /^  \\def\\Egroup{\\egroup\\endgroup}%$/
+\Eifclear      tex-src/texinfo.tex     /^\\def\\Eifclear{}$/
+\Eifset        tex-src/texinfo.tex     /^\\def\\Eifset{}$/
+\Eiftex        tex-src/texinfo.tex     /^\\def\\Eiftex{}$/
+\Elisp tex-src/texinfo.tex     /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
+\Equotation    tex-src/texinfo.tex     
/^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
+\Esmallexample tex-src/texinfo.tex     /^\\def\\Esmallexample{\\Elisp}$/
+\Esmallexample tex-src/texinfo.tex     
/^\\global\\def\\Esmallexample{\\Esmalllisp}$/
+\Esmalllisp    tex-src/texinfo.tex     
/^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
+\Etable        tex-src/texinfo.tex     
/^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\Etitlepage    tex-src/texinfo.tex     /^\\def\\Etitlepage{%$/
+\Evtable       tex-src/texinfo.tex     
/^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\HEADINGSafter tex-src/texinfo.tex     
/^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+\HEADINGSdouble        tex-src/texinfo.tex     /^\\def\\HEADINGSdouble{$/
+\HEADINGSdoublex       tex-src/texinfo.tex     /^\\def\\HEADINGSdoublex{%$/
+\HEADINGSoff   tex-src/texinfo.tex     /^\\def\\HEADINGSoff{$/
+\HEADINGSon    tex-src/texinfo.tex     /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
+\HEADINGSon    tex-src/texinfo.tex     
/^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
+\HEADINGSon    tex-src/texinfo.tex     
/^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
+\HEADINGSsingle        tex-src/texinfo.tex     /^\\def\\HEADINGSsingle{$/
+\HEADINGSsingleafter   tex-src/texinfo.tex     
/^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+\HEADINGSsinglex       tex-src/texinfo.tex     /^\\def\\HEADINGSsinglex{%$/
+\TeX   tex-src/texinfo.tex     /^\\def\\TeX{\\realbackslash TeX}$/
+\TeX   tex-src/texinfo.tex     /^\\def\\TeX{\\realbackslash TeX}%$/
+\Yappendixletterandtype        tex-src/texinfo.tex     
/^\\def\\Yappendixletterandtype{%$/
+\Ynothing      tex-src/texinfo.tex     /^\\def\\Ynothing{}$/
+\Ypagenumber   tex-src/texinfo.tex     /^\\def\\Ypagenumber{\\folio}$/
+\Ysectionnumberandtype tex-src/texinfo.tex     
/^\\def\\Ysectionnumberandtype{%$/
+\Ytitle        tex-src/texinfo.tex     /^\\def\\Ytitle{\\thischapter}$/
+\_     tex-src/texinfo.tex     /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule 
width.3em /
+\_     tex-src/texinfo.tex     /^\\def\\_{{\\realbackslash _}}%$/
+\`     tex-src/texinfo.tex     /^\\def\\`{{`}}$/
+\aboveenvbreak tex-src/texinfo.tex     
/^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
+\activedoublequote     tex-src/texinfo.tex     
/^\\def\\activedoublequote{{\\tt \\char '042}}$/
+\activeparens  tex-src/texinfo.tex     /^\\def\\activeparens{%$/
+\afourpaper    tex-src/texinfo.tex     /^\\def\\afourpaper{$/
+\afterenvbreak tex-src/texinfo.tex     /^\\def\\afterenvbreak{\\endgraf 
\\ifdim\\lastskip<\\above/
+\alphaenumerate        tex-src/texinfo.tex     
/^\\def\\alphaenumerate{\\enumerate{a}}$/
+\appendix      tex-src/texinfo.tex     
/^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
+\appendixletter        tex-src/texinfo.tex     
/^\\def\\appendixletter{\\char\\the\\appendixno}$/
+\appendixnoderef       tex-src/texinfo.tex     
/^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
+\appendixsec   tex-src/texinfo.tex     
/^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+\appendixsection       tex-src/texinfo.tex     
/^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+\appendixsectionzzz    tex-src/texinfo.tex     /^\\def\\appendixsectionzzz 
#1{\\seccheck{appendixsecti/
+\appendixsetref        tex-src/texinfo.tex     /^\\def\\appendixsetref#1{%$/
+\appendixsubsec        tex-src/texinfo.tex     
/^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
+\appendixsubseczzz     tex-src/texinfo.tex     /^\\def\\appendixsubseczzz 
#1{\\seccheck{appendixsubsec/
+\appendixsubsubsec     tex-src/texinfo.tex     
/^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+\appendixsubsubseczzz  tex-src/texinfo.tex     /^\\def\\appendixsubsubseczzz 
#1{\\seccheck{appendixsub/
+\appendixzzz   tex-src/texinfo.tex     /^\\def\\appendixzzz 
#1{\\seccheck{appendix}%$/
+\asis  tex-src/texinfo.tex     /^\\def\\asis#1{#1}$/
+\author        tex-src/texinfo.tex     /^   
\\def\\author{\\parsearg\\authorzzz}%$/
+\authorfont    tex-src/texinfo.tex     /^   \\def\\authorfont{\\authorrm 
\\normalbaselineskip =/
+\authorzzz     tex-src/texinfo.tex     /^   
\\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
+\b     tex-src/texinfo.tex     /^\\def\\b##1{\\realbackslash b {##1}}$/
+\b     tex-src/texinfo.tex     /^\\def\\b##1{\\realbackslash b {##1}}%$/
+\b     tex-src/texinfo.tex     /^\\def\\b#1{{\\bf #1}}$/
+\balancecolumns        tex-src/texinfo.tex     /^\\def\\balancecolumns{%$/
+\begin tex-src/texinfo.tex     /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
+\begindoublecolumns    tex-src/texinfo.tex     
/^\\def\\begindoublecolumns{\\begingroup$/
+\beginxxx      tex-src/texinfo.tex     /^\\def\\beginxxx #1{%$/
+\bf    tex-src/texinfo.tex     /^\\def\\bf{\\realbackslash bf }$/
+\bf    tex-src/texinfo.tex     /^\\def\\bf{\\realbackslash bf }%$/
+\bullet        tex-src/texinfo.tex     /^\\def\\bullet{$\\ptexbullet$}$/
+\bye   tex-src/texinfo.tex     
/^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
+\capsenumerate tex-src/texinfo.tex     /^\\def\\capsenumerate{\\enumerate{A}}$/
+\cartbot       tex-src/texinfo.tex     /^\\def\\cartbot{\\hbox to 
\\cartouter{\\hskip\\lskip$/
+\cartouche     tex-src/texinfo.tex     /^\\long\\def\\cartouche{%$/
+\carttop       tex-src/texinfo.tex     /^\\def\\carttop{\\hbox to 
\\cartouter{\\hskip\\lskip$/
+\cbl   tex-src/texinfo.tex     /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
+\cbr   tex-src/texinfo.tex     /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
+\center        tex-src/texinfo.tex     /^\\def\\center{\\parsearg\\centerzzz}$/
+\centerzzz     tex-src/texinfo.tex     /^\\def\\centerzzz #1{{\\advance\\hsize 
by -\\leftskip$/
+\chapbreak     tex-src/texinfo.tex     /^\\def\\chapbreak{\\dobreak 
\\chapheadingskip {-4000}}$/
+\chapentry     tex-src/texinfo.tex     
/^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
+\chapentryfonts        tex-src/texinfo.tex     
/^\\def\\chapentryfonts{\\secfonts \\rm}$/
+\chapfonts     tex-src/texinfo.tex     /^\\def\\chapfonts{%$/
+\chapheading   tex-src/texinfo.tex     
/^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
+\chapheadingzzz        tex-src/texinfo.tex     /^\\def\\chapheadingzzz 
#1{\\chapbreak %$/
+\chapoddpage   tex-src/texinfo.tex     /^\\def\\chapoddpage{\\chappager 
\\ifodd\\pageno \\else \\h/
+\chappager     tex-src/texinfo.tex     
/^\\def\\chappager{\\par\\vfill\\supereject}$/
+\chapter       tex-src/texinfo.tex     
/^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+\chapternofonts        tex-src/texinfo.tex     /^\\def\\chapternofonts{%$/
+\chapterzzz    tex-src/texinfo.tex     /^\\def\\chapterzzz 
#1{\\seccheck{chapter}%$/
+\char  tex-src/texinfo.tex     /^\\def\\char{\\realbackslash char}$/
+\char  tex-src/texinfo.tex     /^\\def\\char{\\realbackslash char}%$/
+\chfopen       tex-src/texinfo.tex     /^\\def\\chfopen #1#2{\\chapoddpage 
{\\chapfonts$/
+\chfplain      tex-src/texinfo.tex     /^\\def\\chfplain #1#2{%$/
+\cindex        tex-src/texinfo.tex     /^\\def\\cindex {\\cpindex}$/
+\cindexsub     tex-src/texinfo.tex     /^\\def\\cindexsub 
{\\begingroup\\obeylines\\cindexsub}$/
+\cite  tex-src/texinfo.tex     /^\\def\\cite##1{\\realbackslash cite {##1}}$/
+\cite  tex-src/texinfo.tex     /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
+\clear tex-src/texinfo.tex     /^\\def\\clear{\\parsearg\\clearxxx}$/
+\clearxxx      tex-src/texinfo.tex     /^\\def\\clearxxx #1{$/
+\code  tex-src/texinfo.tex     /^\\def\\code##1{\\realbackslash code {##1}}$/
+\code  tex-src/texinfo.tex     /^\\def\\code##1{\\realbackslash code {##1}}%$/
+\comment       tex-src/texinfo.tex     /^\\def\\comment{\\catcode 64=\\other 
\\catcode 123=\\othe/
+\commentxxx    tex-src/texinfo.tex     /^\\def\\commentxxx #1{\\catcode 64=0 
\\catcode 123=1 \\c/
+\contents      tex-src/texinfo.tex     /^\\outer\\def\\contents{%$/
+\copyright     tex-src/texinfo.tex     /^\\def\\copyright{\\realbackslash 
copyright }%$/
+\copyright     tex-src/texinfo.tex     /^\\def\\copyright{\\realbackslash 
copyright}$/
+\cropmarks     tex-src/texinfo.tex     
/^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
+\croppageout   tex-src/texinfo.tex     /^\\def\\croppageout#1{\\hoffset=0pt % 
make sure this d/
+\ctl   tex-src/texinfo.tex     /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 
6pt from /
+\ctr   tex-src/texinfo.tex     /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
+\ctrl  tex-src/texinfo.tex     /^\\def\\ctrl #1{{\\tt \\rawbackslash 
\\hat}#1}$/
+\defcodeindex  tex-src/texinfo.tex     
/^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
+\defcv tex-src/texinfo.tex     /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+\defcvarheader tex-src/texinfo.tex     /^\\def\\defcvarheader #1#2#3{%$/
+\defcvx        tex-src/texinfo.tex     /^\\def\\defcvx #1 
{\\errmessage{@defcvx in invalid con/
+\deffn tex-src/texinfo.tex     
/^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+\deffnheader   tex-src/texinfo.tex     /^\\def\\deffnheader #1#2#3{\\doind 
{fn}{\\code{#2}}%$/
+\deffnx        tex-src/texinfo.tex     /^\\def\\deffnx #1 
{\\errmessage{@deffnx in invalid con/
+\defindex      tex-src/texinfo.tex     
/^\\def\\defindex{\\parsearg\\newindex}$/
+\defivar       tex-src/texinfo.tex     
/^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+\defivarheader tex-src/texinfo.tex     /^\\def\\defivarheader #1#2#3{%$/
+\defivarx      tex-src/texinfo.tex     /^\\def\\defivarx #1 
{\\errmessage{@defivarx in invalid/
+\defmac        tex-src/texinfo.tex     
/^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+\defmacheader  tex-src/texinfo.tex     /^\\def\\defmacheader #1#2{\\doind 
{fn}{\\code{#1}}% Mak/
+\defmacx       tex-src/texinfo.tex     /^\\def\\defmacx #1 
{\\errmessage{@defmacx in invalid c/
+\defmethod     tex-src/texinfo.tex     
/^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+\defmethodheader       tex-src/texinfo.tex     /^\\def\\defmethodheader 
#1#2#3{%$/
+\defmethodx    tex-src/texinfo.tex     /^\\def\\defmethodx #1 
{\\errmessage{@defmethodx in inv/
+\defmethparsebody      tex-src/texinfo.tex     /^\\def\\defmethparsebody 
#1#2#3#4 {\\begingroup\\inENV /
+\defname       tex-src/texinfo.tex     /^\\def\\defname #1#2{%$/
+\defop tex-src/texinfo.tex     /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+\defopheader   tex-src/texinfo.tex     /^\\def\\defopheader #1#2#3{%$/
+\defopparsebody        tex-src/texinfo.tex     /^\\def\\defopparsebody 
#1#2#3#4#5 {\\begingroup\\inENV /
+\defopt        tex-src/texinfo.tex     
/^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+\defoptheader  tex-src/texinfo.tex     /^\\def\\defoptheader #1#2{\\doind 
{vr}{\\code{#1}}% Mak/
+\defoptx       tex-src/texinfo.tex     /^\\def\\defoptx #1 
{\\errmessage{@defoptx in invalid c/
+\defopvarparsebody     tex-src/texinfo.tex     /^\\def\\defopvarparsebody 
#1#2#3#4#5 {\\begingroup\\inE/
+\defopx        tex-src/texinfo.tex     /^\\def\\defopx #1 
{\\errmessage{@defopx in invalid con/
+\defparsebody  tex-src/texinfo.tex     /^\\def\\defparsebody 
#1#2#3{\\begingroup\\inENV% Enviro/
+\defspec       tex-src/texinfo.tex     
/^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+\defspecheader tex-src/texinfo.tex     /^\\def\\defspecheader #1#2{\\doind 
{fn}{\\code{#1}}% Ma/
+\defspecx      tex-src/texinfo.tex     /^\\def\\defspecx #1 
{\\errmessage{@defspecx in invalid/
+\deftp tex-src/texinfo.tex     
/^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+\deftpargs     tex-src/texinfo.tex     /^\\def\\deftpargs #1{\\bf 
\\defvarargs{#1}}$/
+\deftpheader   tex-src/texinfo.tex     /^\\def\\deftpheader #1#2#3{\\doind 
{tp}{\\code{#2}}%$/
+\deftpx        tex-src/texinfo.tex     /^\\def\\deftpx #1 
{\\errmessage{@deftpx in invalid con/
+\deftypefn     tex-src/texinfo.tex     
/^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+\deftypefnheader       tex-src/texinfo.tex     /^\\def\\deftypefnheader 
#1#2#3{\\deftypefnheaderx{#1}{/
+\deftypefnheaderx      tex-src/texinfo.tex     /^\\def\\deftypefnheaderx 
#1#2#3 #4\\relax{%$/
+\deftypefnx    tex-src/texinfo.tex     /^\\def\\deftypefnx #1 
{\\errmessage{@deftypefnx in inv/
+\deftypefun    tex-src/texinfo.tex     
/^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+\deftypefunargs        tex-src/texinfo.tex     /^\\def\\deftypefunargs #1{%$/
+\deftypefunheader      tex-src/texinfo.tex     /^\\def\\deftypefunheader 
#1#2{\\deftypefunheaderx{#1}#/
+\deftypefunheaderx     tex-src/texinfo.tex     /^\\def\\deftypefunheaderx #1#2 
#3\\relax{%$/
+\deftypeunx    tex-src/texinfo.tex     /^\\def\\deftypeunx #1 
{\\errmessage{@deftypeunx in inv/
+\deftypevar    tex-src/texinfo.tex     
/^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+\deftypevarheader      tex-src/texinfo.tex     /^\\def\\deftypevarheader 
#1#2{%$/
+\deftypevarx   tex-src/texinfo.tex     /^\\def\\deftypevarx #1 
{\\errmessage{@deftypevarx in i/
+\deftypevr     tex-src/texinfo.tex     
/^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+\deftypevrheader       tex-src/texinfo.tex     /^\\def\\deftypevrheader 
#1#2#3{\\doind {vr}{\\code{#3}}/
+\deftypevrx    tex-src/texinfo.tex     /^\\def\\deftypevrx #1 
{\\errmessage{@deftypevrx in inv/
+\defun tex-src/texinfo.tex     
/^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
+\defunargs     tex-src/texinfo.tex     /^\\def\\defunargs #1{\\functionparens 
\\sl$/
+\defunheader   tex-src/texinfo.tex     /^\\def\\defunheader #1#2{\\doind 
{fn}{\\code{#1}}% Make/
+\defunx        tex-src/texinfo.tex     /^\\def\\defunx #1 
{\\errmessage{@defunx in invalid con/
+\defvar        tex-src/texinfo.tex     
/^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+\defvarargs    tex-src/texinfo.tex     /^\\def\\defvarargs #1{\\normalparens 
#1%$/
+\defvarheader  tex-src/texinfo.tex     /^\\def\\defvarheader #1#2{\\doind 
{vr}{\\code{#1}}% Mak/
+\defvarparsebody       tex-src/texinfo.tex     /^\\def\\defvarparsebody 
#1#2#3{\\begingroup\\inENV% Env/
+\defvarx       tex-src/texinfo.tex     /^\\def\\defvarx #1 
{\\errmessage{@defvarx in invalid c/
+\defvr tex-src/texinfo.tex     
/^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+\defvrheader   tex-src/texinfo.tex     /^\\def\\defvrheader #1#2#3{\\doind 
{vr}{\\code{#2}}%$/
+\defvrparsebody        tex-src/texinfo.tex     /^\\def\\defvrparsebody 
#1#2#3#4 {\\begingroup\\inENV %$/
+\defvrx        tex-src/texinfo.tex     /^\\def\\defvrx #1 
{\\errmessage{@defvrx in invalid con/
+\description   tex-src/texinfo.tex     
/^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
+\df    tex-src/texinfo.tex     /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = 
\\defbf \\bf}/
+\dfn   tex-src/texinfo.tex     /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
+\direntry      tex-src/texinfo.tex     
/^\\def\\direntry{\\begingroup\\direntryxxx}$/
+\direntryxxx   tex-src/texinfo.tex     /^\\long\\def\\direntryxxx #1\\end 
direntry{\\endgroup\\ig/
+\display       tex-src/texinfo.tex     /^\\def\\display{\\begingroup\\inENV 
%This group ends at/
+\dmn   tex-src/texinfo.tex     /^\\def\\dmn#1{\\thinspace #1}$/
+\dobreak       tex-src/texinfo.tex     
/^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
+\dochapentry   tex-src/texinfo.tex     /^\\def\\dochapentry#1#2{%$/
+\docodeindex   tex-src/texinfo.tex     
/^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
+\doind tex-src/texinfo.tex     /^\\def\\doind #1#2{%$/
+\doindex       tex-src/texinfo.tex     
/^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+\donoderef     tex-src/texinfo.tex     
/^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
+\dontindex     tex-src/texinfo.tex     /^\\def\\dontindex #1{}$/
+\dopageno      tex-src/texinfo.tex     /^\\def\\dopageno#1{{\\rm #1}}$/
+\doprintindex  tex-src/texinfo.tex     /^\\def\\doprintindex#1{%$/
+\dosecentry    tex-src/texinfo.tex     /^\\def\\dosecentry#1#2{%$/
+\dosetq        tex-src/texinfo.tex     /^\\def\\dosetq #1#2{{\\let\\folio=0 
\\turnoffactive%$/
+\doshortpageno tex-src/texinfo.tex     /^\\def\\doshortpageno#1{{\\rm #1}}$/
+\dosubind      tex-src/texinfo.tex     /^\\def\\dosubind #1#2#3{%$/
+\dosubsecentry tex-src/texinfo.tex     /^\\def\\dosubsecentry#1#2{%$/
+\dosubsubsecentry      tex-src/texinfo.tex     
/^\\def\\dosubsubsecentry#1#2{%$/
+\dots  tex-src/texinfo.tex     /^\\def\\dots{$\\ldots$}$/
+\dots  tex-src/texinfo.tex     /^\\def\\dots{\\realbackslash dots }%$/
+\dots  tex-src/texinfo.tex     /^\\def\\dots{\\realbackslash dots}$/
+\doublecolumnout       tex-src/texinfo.tex     
/^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
+\emph  tex-src/texinfo.tex     /^\\def\\emph##1{\\realbackslash emph {##1}}$/
+\end   tex-src/texinfo.tex     /^\\def\\end{\\parsearg\\endxxx}$/
+\enddoublecolumns      tex-src/texinfo.tex     
/^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
+\endxxx        tex-src/texinfo.tex     /^\\def\\endxxx #1{%$/
+\entry tex-src/texinfo.tex     /^\\def\\entry #1#2{\\begingroup$/
+\enumerate     tex-src/texinfo.tex     
/^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
+\enumeratey    tex-src/texinfo.tex     /^\\def\\enumeratey #1 
#2\\endenumeratey{%$/
+\enumeratezzz  tex-src/texinfo.tex     /^\\def\\enumeratezzz #1{\\enumeratey 
#1  \\endenumerate/
+\equiv tex-src/texinfo.tex     /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 
1em{\\hfil/
+\equiv tex-src/texinfo.tex     /^\\def\\equiv{\\realbackslash equiv}$/
+\error tex-src/texinfo.tex     
/^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
+\errorE        tex-src/texinfo.tex     /^\\def\\errorE#1{$/
+\evenfooting   tex-src/texinfo.tex     
/^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
+\evenheading   tex-src/texinfo.tex     
/^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
+\everyfooting  tex-src/texinfo.tex     
/^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
+\everyheading  tex-src/texinfo.tex     
/^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
+\ewbot tex-src/texinfo.tex     /^\\def\\ewbot{\\vrule height0pt 
depth\\cornerthick widt/
+\ewtop tex-src/texinfo.tex     /^\\def\\ewtop{\\vrule height\\cornerthick 
depth0pt widt/
+\exdent        tex-src/texinfo.tex     /^\\def\\exdent{\\parsearg\\exdentyyy}$/
+\exdentyyy     tex-src/texinfo.tex     /^\\def\\exdentyyy 
#1{{\\hfil\\break\\hbox{\\kern -\\exdent/
+\expansion     tex-src/texinfo.tex     
/^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
+\expansion     tex-src/texinfo.tex     /^\\def\\expansion{\\realbackslash 
expansion}$/
+\file  tex-src/texinfo.tex     /^\\def\\file##1{\\realbackslash file {##1}}$/
+\file  tex-src/texinfo.tex     /^\\def\\file##1{\\realbackslash file {##1}}%$/
+\finalout      tex-src/texinfo.tex     /^\\def\\finalout{\\overfullrule=0pt}$/
+\findex        tex-src/texinfo.tex     /^\\def\\findex {\\fnindex}$/
+\finishtitlepage       tex-src/texinfo.tex     /^\\def\\finishtitlepage{%$/
+\flushcr       tex-src/texinfo.tex     /^\\def\\flushcr{\\ifx\\par\\lisppar 
\\def\\next##1{}\\else /
+\flushleft     tex-src/texinfo.tex     /^\\def\\flushleft{%$/
+\flushright    tex-src/texinfo.tex     /^\\def\\flushright{%$/
+\fnitemindex   tex-src/texinfo.tex     /^\\def\\fnitemindex #1{\\doind 
{fn}{\\code{#1}}}%$/
+\format        tex-src/texinfo.tex     /^\\def\\format{\\begingroup\\inENV 
%This group ends at /
+\frenchspacing tex-src/texinfo.tex     /^\\def\\frenchspacing{\\sfcode46=1000 
\\sfcode63=1000 \\/
+\ftable        tex-src/texinfo.tex     
/^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+\gloggingall   tex-src/texinfo.tex     /^\\def\\gloggingall{\\begingroup 
\\globaldefs = 1 \\logg/
+\group tex-src/texinfo.tex     /^\\def\\group{\\begingroup$/
+\gtr   tex-src/texinfo.tex     /^\\def\\gtr{\\realbackslash gtr}$/
+\gtr   tex-src/texinfo.tex     /^\\def\\gtr{\\realbackslash gtr}%$/
+\hat   tex-src/texinfo.tex     /^\\def\\hat{\\realbackslash hat}$/
+\hat   tex-src/texinfo.tex     /^\\def\\hat{\\realbackslash hat}%$/
+\heading       tex-src/texinfo.tex     
/^\\def\\heading{\\parsearg\\secheadingi}$/
+\headings      tex-src/texinfo.tex     /^\\def\\headings #1 {\\csname 
HEADINGS#1\\endcsname}$/
+\i     tex-src/texinfo.tex     /^\\def\\i##1{\\realbackslash i {##1}}$/
+\i     tex-src/texinfo.tex     /^\\def\\i##1{\\realbackslash i {##1}}%$/
+\ifclear       tex-src/texinfo.tex     
/^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
+\ifclearfail   tex-src/texinfo.tex     
/^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
+\ifclearfailxxx        tex-src/texinfo.tex     /^\\long\\def\\ifclearfailxxx 
#1\\end ifclear{\\endgroup\\/
+\ifclearxxx    tex-src/texinfo.tex     /^\\def\\ifclearxxx #1{\\endgroup$/
+\ifinfo        tex-src/texinfo.tex     
/^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
+\ifinfoxxx     tex-src/texinfo.tex     /^\\long\\def\\ifinfoxxx #1\\end 
ifinfo{\\endgroup\\ignore/
+\ifset tex-src/texinfo.tex     
/^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
+\ifsetfail     tex-src/texinfo.tex     
/^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
+\ifsetfailxxx  tex-src/texinfo.tex     /^\\long\\def\\ifsetfailxxx #1\\end 
ifset{\\endgroup\\igno/
+\ifsetxxx      tex-src/texinfo.tex     /^\\def\\ifsetxxx #1{\\endgroup$/
+\iftex tex-src/texinfo.tex     /^\\def\\iftex{}$/
+\ifusingtt     tex-src/texinfo.tex     /^\\def\\ifusingtt#1#2{\\ifdim 
\\fontdimen3\\the\\font=0pt/
+\ignore        tex-src/texinfo.tex     
/^\\def\\ignore{\\begingroup\\ignoresections$/
+\ignoresections        tex-src/texinfo.tex     /^\\def\\ignoresections{%$/
+\ignorexxx     tex-src/texinfo.tex     /^\\long\\def\\ignorexxx #1\\end 
ignore{\\endgroup\\ignore/
+\ii    tex-src/texinfo.tex     /^\\def\\ii#1{{\\it #1}}                % 
italic font$/
+\inENV tex-src/texinfo.tex     /^\\newif\\ifENV \\ENVfalse 
\\def\\inENV{\\ifENV\\relax\\els/
+\include       tex-src/texinfo.tex     
/^\\def\\include{\\parsearg\\includezzz}$/
+\includezzz    tex-src/texinfo.tex     /^\\def\\includezzz 
#1{{\\def\\thisfile{#1}\\input #1$/
+\indexbackslash        tex-src/texinfo.tex     /^  
\\def\\indexbackslash{\\rawbackslashxx}$/
+\indexdotfill  tex-src/texinfo.tex     /^\\def\\indexdotfill{\\cleaders$/
+\indexdummies  tex-src/texinfo.tex     /^\\def\\indexdummies{%$/
+\indexdummydots        tex-src/texinfo.tex     /^\\def\\indexdummydots{...}$/
+\indexdummyfont        tex-src/texinfo.tex     /^\\def\\indexdummyfont#1{#1}$/
+\indexdummytex tex-src/texinfo.tex     /^\\def\\indexdummytex{TeX}$/
+\indexfonts    tex-src/texinfo.tex     /^\\def\\indexfonts{%$/
+\indexnofonts  tex-src/texinfo.tex     /^\\def\\indexnofonts{%$/
+\infoappendix  tex-src/texinfo.tex     
/^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+\infoappendixsec       tex-src/texinfo.tex     
/^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
+\infoappendixsubsec    tex-src/texinfo.tex     
/^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
+\infoappendixsubsubsec tex-src/texinfo.tex     
/^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+\infochapter   tex-src/texinfo.tex     
/^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+\inforef       tex-src/texinfo.tex     /^\\def\\inforef #1{\\inforefzzz 
#1,,,,**}$/
+\inforefzzz    tex-src/texinfo.tex     /^\\def\\inforefzzz #1,#2,#3,#4**{See 
Info file \\file{/
+\infosection   tex-src/texinfo.tex     
/^\\def\\infosection{\\parsearg\\sectionzzz}$/
+\infosubsection        tex-src/texinfo.tex     
/^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+\infosubsubsection     tex-src/texinfo.tex     
/^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+\infotop       tex-src/texinfo.tex     
/^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
+\infounnumbered        tex-src/texinfo.tex     
/^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
+\infounnumberedsec     tex-src/texinfo.tex     
/^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
+\infounnumberedsubsec  tex-src/texinfo.tex     
/^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
+\infounnumberedsubsubsec       tex-src/texinfo.tex     
/^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
+\initial       tex-src/texinfo.tex     /^\\def\\initial #1{%$/
+\internalBitem tex-src/texinfo.tex     /^\\def\\internalBitem{\\smallbreak 
\\parsearg\\itemzzz}$/
+\internalBitemx        tex-src/texinfo.tex     /^\\def\\internalBitemx{\\par 
\\parsearg\\itemzzz}$/
+\internalBkitem        tex-src/texinfo.tex     
/^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
+\internalBkitemx       tex-src/texinfo.tex     /^\\def\\internalBkitemx{\\par 
\\parsearg\\kitemzzz}$/
+\internalBxitem        tex-src/texinfo.tex     /^\\def\\internalBxitem 
"#1"{\\def\\xitemsubtopix{#1} \\s/
+\internalBxitemx       tex-src/texinfo.tex     /^\\def\\internalBxitemx 
"#1"{\\def\\xitemsubtopix{#1} \\/
+\internalsetq  tex-src/texinfo.tex     /^\\def\\internalsetq #1#2{'xrdef 
{#1}{\\csname #2\\endc/
+\item  tex-src/texinfo.tex     /^\\def\\item{\\errmessage{@item while not in a 
table}}/
+\itemcontents  tex-src/texinfo.tex     /^\\def\\itemcontents{#1}%$/
+\itemfont      tex-src/texinfo.tex     /^\\def\\itemfont{#2}%$/
+\itemize       tex-src/texinfo.tex     
/^\\def\\itemize{\\parsearg\\itemizezzz}$/
+\itemizeitem   tex-src/texinfo.tex     /^\\def\\itemizeitem{%$/
+\itemizey      tex-src/texinfo.tex     /^\\def\\itemizey #1#2{%$/
+\itemizezzz    tex-src/texinfo.tex     /^\\def\\itemizezzz #1{%$/
+\itemx tex-src/texinfo.tex     /^\\def\\itemx{\\errmessage{@itemx while not in 
a table/
+\itemzzz       tex-src/texinfo.tex     /^\\def\\itemzzz #1{\\begingroup %$/
+\kbd   tex-src/texinfo.tex     /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
+\kbd   tex-src/texinfo.tex     /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
+\kbd   tex-src/texinfo.tex     
/^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
+\kbdfoo        tex-src/texinfo.tex     
/^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+\key   tex-src/texinfo.tex     /^\\def\\key #1{{\\tt 
\\exhyphenpenalty=10000\\uppercase{/
+\key   tex-src/texinfo.tex     /^\\def\\key##1{\\realbackslash key {##1}}$/
+\key   tex-src/texinfo.tex     /^\\def\\key##1{\\realbackslash key {##1}}%$/
+\kindex        tex-src/texinfo.tex     /^\\def\\kindex {\\kyindex}$/
+\kitem tex-src/texinfo.tex     /^\\def\\kitem{\\errmessage{@kitem while not in 
a table/
+\kitemx        tex-src/texinfo.tex     /^\\def\\kitemx{\\errmessage{@kitemx 
while not in a tab/
+\kitemzzz      tex-src/texinfo.tex     /^\\def\\kitemzzz #1{\\dosubind 
{kw}{\\code{#1}}{for {\\b/
+\l     tex-src/texinfo.tex     /^\\def\\l#1{{\\li #1}\\null}           % $/
+\labelspace    tex-src/texinfo.tex     /^\\def\\labelspace{\\hskip1em 
\\relax}$/
+\lbrb  tex-src/texinfo.tex     /^\\def\\lbrb{{\\bf\\char`\\[}} 
\\def\\rbrb{{\\bf\\char`\\]}}$/
+\less  tex-src/texinfo.tex     /^\\def\\less{\\realbackslash less}$/
+\less  tex-src/texinfo.tex     /^\\def\\less{\\realbackslash less}%$/
+\linenumber    tex-src/texinfo.tex     /^  
\\def\\linenumber{\\the\\inputlineno:\\space}$/
+\lisp  tex-src/texinfo.tex     /^\\def\\lisp{\\aboveenvbreak$/
+\loggingall    tex-src/texinfo.tex     /^\\def\\loggingall{\\tracingcommands2 
\\tracingstats2 $/
+\losespace     tex-src/texinfo.tex     /^\\def\\losespace #1{#1}$/
+\lowercaseenumerate    tex-src/texinfo.tex     /^\\def\\lowercaseenumerate{%$/
+\lvvmode       tex-src/texinfo.tex     /^\\def\\lvvmode{\\vbox to 0pt{}}$/
+\majorheading  tex-src/texinfo.tex     
/^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
+\majorheadingzzz       tex-src/texinfo.tex     /^\\def\\majorheadingzzz #1{%$/
+\math  tex-src/texinfo.tex     /^\\def\\math#1{\\implicitmath 
#1\\implicitmath}$/
+\menu  tex-src/texinfo.tex     /^\\long\\def\\menu #1\\end menu{}$/
+\minus tex-src/texinfo.tex     /^\\def\\minus{$-$}$/
+\mylbrace      tex-src/texinfo.tex     /^\\def\\mylbrace {{\\tt \\char '173}}$/
+\myrbrace      tex-src/texinfo.tex     /^\\def\\myrbrace {{\\tt \\char '175}}$/
+\need  tex-src/texinfo.tex     /^\\def\\need{\\parsearg\\needx}$/
+\needx tex-src/texinfo.tex     /^\\def\\needx#1{%$/
+\newcodeindex  tex-src/texinfo.tex     /^\\def\\newcodeindex #1{$/
+\newindex      tex-src/texinfo.tex     /^\\def\\newindex #1{$/
+\next  tex-src/texinfo.tex     /^\\def\\next##1{}\\next}$/
+\nm    tex-src/testenv.tex     
/^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
+\node  tex-src/texinfo.tex     /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
+\nodexxx[      tex-src/texinfo.tex     
/^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+\nodezzz       tex-src/texinfo.tex     /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
+\nofillexdent  tex-src/texinfo.tex     
/^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
+\nofillexdentyyy       tex-src/texinfo.tex     /^\\def\\nofillexdentyyy 
#1{{\\advance \\leftskip by -\\e/
+\normalbackslash       tex-src/texinfo.tex     
/^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
+\normalcaret   tex-src/texinfo.tex     /^\\def\\normalcaret{^}$/
+\normaldoublequote     tex-src/texinfo.tex     /^\\def\\normaldoublequote{"}$/
+\normalgreater tex-src/texinfo.tex     /^\\def\\normalgreater{>}$/
+\normalless    tex-src/texinfo.tex     /^\\def\\normalless{<}$/
+\normalplus    tex-src/texinfo.tex     /^\\def\\normalplus{+}$/
+\normaltilde   tex-src/texinfo.tex     /^\\def\\normaltilde{~}$/
+\normalunderscore      tex-src/texinfo.tex     /^\\def\\normalunderscore{_}$/
+\normalverticalbar     tex-src/texinfo.tex     /^\\def\\normalverticalbar{|}$/
+\nsbot tex-src/texinfo.tex     /^\\def\\nsbot{\\vbox$/
+\nstop tex-src/texinfo.tex     /^\\def\\nstop{\\vbox$/
+\numberedsec   tex-src/texinfo.tex     
/^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
+\numberedsubsec        tex-src/texinfo.tex     
/^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
+\numberedsubseczzz     tex-src/texinfo.tex     /^\\def\\numberedsubseczzz 
#1{\\seccheck{subsection}%$/
+\numberedsubsubsec     tex-src/texinfo.tex     
/^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
+\numberedsubsubseczzz  tex-src/texinfo.tex     /^\\def\\numberedsubsubseczzz 
#1{\\seccheck{subsubsecti/
+\numericenumerate      tex-src/texinfo.tex     /^\\def\\numericenumerate{%$/
+\oddfooting    tex-src/texinfo.tex     
/^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
+\oddheading    tex-src/texinfo.tex     
/^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
+\onepageout    tex-src/texinfo.tex     
/^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
+\opencontents  tex-src/texinfo.tex     /^\\def\\opencontents{\\openout 
\\contentsfile = \\jobnam/
+\openindices   tex-src/texinfo.tex     /^\\def\\openindices{%$/
+\opnr  tex-src/texinfo.tex     /^\\def\\opnr{{\\sf\\char`\\(}} 
\\def\\clnr{{\\sf\\char`\\)}} /
+\page  tex-src/texinfo.tex     /^   \\def\\page{%$/
+\page  tex-src/texinfo.tex     /^\\def\\page{\\par\\vfill\\supereject}$/
+\pagebody      tex-src/texinfo.tex     /^\\def\\pagebody#1{\\vbox 
to\\pageheight{\\boxmaxdepth=\\/
+\pagesofar     tex-src/texinfo.tex     
/^\\def\\pagesofar{\\unvbox\\partialpage %$/
+\parsearg      tex-src/texinfo.tex     /^\\def\\parsearg 
#1{\\let\\next=#1\\begingroup\\obeylines/
+\parseargline  tex-src/texinfo.tex     /^\\def\\parseargline{\\begingroup 
\\obeylines \\parsearg/
+\parseargx     tex-src/texinfo.tex     /^\\def\\parseargx{%$/
+\pindex        tex-src/texinfo.tex     /^\\def\\pindex {\\pgindex}$/
+\plainsecheading       tex-src/texinfo.tex     /^\\def\\plainsecheading 
#1{\\secheadingi {#1}}$/
+\point tex-src/texinfo.tex     /^\\def\\point{$\\star$}$/
+\primary       tex-src/texinfo.tex     /^\\def\\primary #1{\\line{#1\\hfil}}$/
+\print tex-src/texinfo.tex     /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 
1em{\\hfil/
+\print tex-src/texinfo.tex     /^\\def\\print{\\realbackslash print}$/
+\printedmanual tex-src/texinfo.tex     /^\\def\\printedmanual{\\ignorespaces 
#5}%$/
+\printedmanual tex-src/texinfo.tex     /^section ``\\printednodename'' in 
\\cite{\\printedmanu/
+\printednodename       tex-src/texinfo.tex     
/^\\def\\printednodename{\\ignorespaces #1}%$/
+\printednodename       tex-src/texinfo.tex     
/^\\def\\printednodename{\\ignorespaces #3}%$/
+\printindex    tex-src/texinfo.tex     
/^\\def\\printindex{\\parsearg\\doprintindex}$/
+\pxref tex-src/texinfo.tex     /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
+\quotation     tex-src/texinfo.tex     /^\\def\\quotation{%$/
+\r     tex-src/texinfo.tex     /^\\def\\r##1{\\realbackslash r {##1}}$/
+\r     tex-src/texinfo.tex     /^\\def\\r##1{\\realbackslash r {##1}}%$/
+\r     tex-src/texinfo.tex     /^\\def\\r#1{{\\rm #1}}         % roman font$/
+\rawbackslashxx        tex-src/texinfo.tex     
/^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+\rawbackslashxx        tex-src/texinfo.tex     
/^\\def\\rawbackslashxx{\\indexbackslash}%$/
+\readauxfile   tex-src/texinfo.tex     /^\\def\\readauxfile{%$/
+\ref   tex-src/texinfo.tex     /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
+\refx  tex-src/texinfo.tex     /^\\def\\refx#1#2{%$/
+\resetmathfonts        tex-src/texinfo.tex     /^\\def\\resetmathfonts{%$/
+\result        tex-src/texinfo.tex     
/^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
+\result        tex-src/texinfo.tex     /^\\def\\result{\\realbackslash 
result}$/
+\rm    tex-src/texinfo.tex     /^\\def\\rm{\\realbackslash rm }%$/
+\samp  tex-src/texinfo.tex     /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
+\samp  tex-src/texinfo.tex     /^\\def\\samp##1{\\realbackslash samp {##1}}$/
+\samp  tex-src/texinfo.tex     /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
+\sc    tex-src/texinfo.tex     /^\\def\\sc#1{{\\smallcaps#1}}  % smallcaps 
font$/
+\seccheck      tex-src/texinfo.tex     /^\\def\\seccheck#1{\\if \\pageno<0 %$/
+\secentry      tex-src/texinfo.tex     /^      \\def\\secentry ##1##2##3##4{}$/
+\secentry      tex-src/texinfo.tex     
/^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+\secentryfonts tex-src/texinfo.tex     /^\\def\\secentryfonts{\\textfonts}$/
+\secfonts      tex-src/texinfo.tex     /^\\def\\secfonts{%$/
+\secheading    tex-src/texinfo.tex     /^\\def\\secheading 
#1#2#3{\\secheadingi {#2.#3\\enspace/
+\secheadingbreak       tex-src/texinfo.tex     
/^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
+\secheadingi   tex-src/texinfo.tex     /^\\def\\secheadingi #1{{\\advance 
\\secheadingskip by \\/
+\secondary     tex-src/texinfo.tex     /^\\def\\secondary #1#2{$/
+\seczzz        tex-src/texinfo.tex     /^\\def\\seczzz 
#1{\\seccheck{section}%$/
+\set   tex-src/texinfo.tex     /^\\def\\set{\\parsearg\\setxxx}$/
+\setchapternewpage     tex-src/texinfo.tex     /^\\def\\setchapternewpage #1 
{\\csname CHAPPAG#1\\endcs/
+\setchapterstyle       tex-src/texinfo.tex     /^\\def\\setchapterstyle #1 
{\\csname CHAPF#1\\endcsname/
+\setdeffont    tex-src/texinfo.tex     /^\\def\\setdeffont #1 {\\csname 
DEF#1\\endcsname}$/
+\setfilename   tex-src/texinfo.tex     /^\\def\\setfilename{%$/
+\setref        tex-src/texinfo.tex     /^\\def\\setref#1{%$/
+\settitle      tex-src/texinfo.tex     
/^\\def\\settitle{\\parsearg\\settitlezzz}$/
+\settitlezzz   tex-src/texinfo.tex     /^\\def\\settitlezzz 
#1{\\gdef\\thistitle{#1}}$/
+\setxxx        tex-src/texinfo.tex     /^\\def\\setxxx #1{$/
+\sf    tex-src/texinfo.tex     /^\\def\\sf{\\fam=\\sffam \\tensf}$/
+\sf    tex-src/texinfo.tex     /^\\def\\sf{\\realbackslash sf}%$/
+\shortchapentry        tex-src/texinfo.tex     
/^\\def\\shortchapentry#1#2#3{%$/
+\shortunnumberedentry  tex-src/texinfo.tex     
/^\\def\\shortunnumberedentry#1#2{%$/
+\singlecodeindexer     tex-src/texinfo.tex     /^\\def\\singlecodeindexer 
#1{\\doind{\\indexname}{\\code/
+\singleindexer tex-src/texinfo.tex     /^\\def\\singleindexer 
#1{\\doind{\\indexname}{#1}}$/
+\singlespace   tex-src/texinfo.tex     /^\\def\\singlespace{%$/
+\sl    tex-src/texinfo.tex     /^\\def\\sl{\\realbackslash sl }%$/
+\smallbook     tex-src/texinfo.tex     /^\\def\\smallbook{$/
+\smalllispx    tex-src/texinfo.tex     
/^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
+\smartitalic   tex-src/texinfo.tex     /^\\def\\smartitalic#1{{\\sl 
#1}\\futurelet\\next\\smartit/
+\smartitalicx  tex-src/texinfo.tex     
/^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
+\sp    tex-src/texinfo.tex     /^\\def\\sp{\\parsearg\\spxxx}$/
+\splitoff      tex-src/texinfo.tex     
/^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
+\spxxx tex-src/texinfo.tex     /^\\def\\spxxx #1{\\par \\vskip 
#1\\baselineskip}$/
+\startcontents tex-src/texinfo.tex     /^\\def\\startcontents#1{%$/
+\startenumeration      tex-src/texinfo.tex     /^\\def\\startenumeration#1{%$/
+\subheading    tex-src/texinfo.tex     
/^\\def\\subheading{\\parsearg\\subsecheadingi}$/
+\subsecentry   tex-src/texinfo.tex     /^      \\def\\subsecentry 
##1##2##3##4##5{}$/
+\subsecentry   tex-src/texinfo.tex     
/^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
+\subsecfonts   tex-src/texinfo.tex     /^\\def\\subsecfonts{%$/
+\subsecheading tex-src/texinfo.tex     /^\\def\\subsecheading 
#1#2#3#4{\\subsecheadingi {#2.#3/
+\subsecheadingbreak    tex-src/texinfo.tex     
/^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
+\subsecheadingi        tex-src/texinfo.tex     /^\\def\\subsecheadingi 
#1{{\\advance \\subsecheadingski/
+\subsubheading tex-src/texinfo.tex     
/^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
+\subsubsecentry        tex-src/texinfo.tex     /^      \\def\\subsubsecentry 
##1##2##3##4##5##6{}$/
+\subsubsecentry        tex-src/texinfo.tex     
/^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
+\subsubsecfonts        tex-src/texinfo.tex     
/^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
+\subsubsecheading      tex-src/texinfo.tex     /^\\def\\subsubsecheading 
#1#2#3#4#5{\\subsubsecheading/
+\subsubsecheadingi     tex-src/texinfo.tex     /^\\def\\subsubsecheadingi 
#1{{\\advance \\subsecheading/
+\subtitle      tex-src/texinfo.tex     /^   
\\def\\subtitle{\\parsearg\\subtitlezzz}%$/
+\subtitlefont  tex-src/texinfo.tex     /^   \\def\\subtitlefont{\\subtitlerm 
\\normalbaselinesk/
+\subtitlezzz   tex-src/texinfo.tex     /^   
\\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
+\summarycontents       tex-src/texinfo.tex     
/^\\outer\\def\\summarycontents{%$/
+\supereject    tex-src/texinfo.tex     /^\\def\\supereject{\\par\\penalty 
-20000\\footnoteno =0 /
+\syncodeindex  tex-src/texinfo.tex     /^\\def\\syncodeindex #1 #2 {%$/
+\synindex      tex-src/texinfo.tex     /^\\def\\synindex #1 #2 {%$/
+\t     tex-src/texinfo.tex     /^\\def\\t##1{\\realbackslash r {##1}}%$/
+\t     tex-src/texinfo.tex     /^\\def\\t#1{{\\tt 
\\exhyphenpenalty=10000\\rawbackslash /
+\table tex-src/texinfo.tex     
/^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
+\tablez        tex-src/texinfo.tex     /^\\def\\tablez #1#2#3#4#5#6{%$/
+\tclose        tex-src/texinfo.tex     /^\\def\\tclose##1{\\realbackslash 
tclose {##1}}$/
+\tclose        tex-src/texinfo.tex     /^\\def\\tclose##1{\\realbackslash 
tclose {##1}}%$/
+\tclose        tex-src/texinfo.tex     /^\\def\\tclose#1{{\\rm 
\\tcloserm=\\fontdimen2\\font \\tt /
+\tex   tex-src/texinfo.tex     /^\\def\\tex{\\begingroup$/
+\texinfoversion        tex-src/texinfo.tex     /^\\def\\texinfoversion{2.73}$/
+\textfonts     tex-src/texinfo.tex     /^\\def\\textfonts{%$/
+\thearg        tex-src/texinfo.tex     /^  \\def\\thearg{#1}%$/
+\thearg        tex-src/texinfo.tex     /^  \\ifx\\thearg\\empty 
\\def\\thearg{1}\\fi$/
+\thischapter   tex-src/texinfo.tex     /^   
\\unnumbchapmacro{#1}\\def\\thischapter{}%$/
+\thischapter   tex-src/texinfo.tex     /^\\def\\thischapter{} 
\\def\\thissection{}$/
+\thischaptername       tex-src/texinfo.tex     /^\\def\\thischaptername{No 
Chapter Title}$/
+\thisfile      tex-src/texinfo.tex     /^\\def\\thisfile{}$/
+\thistitle     tex-src/texinfo.tex     /^\\def\\thistitle{No Title}$/
+\tie   tex-src/texinfo.tex     /^\\def\\tie{\\penalty 10000\\ }     % Save 
plain tex de/
+\tindex        tex-src/texinfo.tex     /^\\def\\tindex {\\tpindex}$/
+\title tex-src/texinfo.tex     /^   \\def\\title{\\parsearg\\titlezzz}%$/
+\titlefont     tex-src/texinfo.tex     /^\\def\\titlefont#1{{\\titlerm #1}}$/
+\titlepage     tex-src/texinfo.tex     /^\\def\\titlepage{\\begingroup 
\\parindent=0pt \\textfon/
+\titlezzz      tex-src/texinfo.tex     /^   
\\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
+\today tex-src/texinfo.tex     /^\\def\\today{\\number\\day\\space$/
+\top   tex-src/texinfo.tex     /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
+\tt    tex-src/texinfo.tex     /^\\def\\tt{\\realbackslash tt}$/
+\tt    tex-src/texinfo.tex     /^\\def\\tt{\\realbackslash tt}%$/
+\turnoffactive tex-src/texinfo.tex     
/^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
+\unnchfopen    tex-src/texinfo.tex     /^\\def\\unnchfopen #1{%$/
+\unnchfplain   tex-src/texinfo.tex     /^\\def\\unnchfplain #1{%$/
+\unnumbchapentry       tex-src/texinfo.tex     
/^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
+\unnumbered    tex-src/texinfo.tex     
/^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
+\unnumberedsec tex-src/texinfo.tex     
/^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
+\unnumberedseczzz      tex-src/texinfo.tex     /^\\def\\unnumberedseczzz 
#1{\\seccheck{unnumberedsec}%/
+\unnumberedsubsec      tex-src/texinfo.tex     
/^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
+\unnumberedsubseczzz   tex-src/texinfo.tex     /^\\def\\unnumberedsubseczzz 
#1{\\seccheck{unnumberedsu/
+\unnumberedsubsubsec   tex-src/texinfo.tex     
/^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
+\unnumberedsubsubseczzz        tex-src/texinfo.tex     
/^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
+\unnumberedzzz tex-src/texinfo.tex     /^\\def\\unnumberedzzz 
#1{\\seccheck{unnumbered}%$/
+\unnumbnoderef tex-src/texinfo.tex     
/^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
+\unnumbsecentry        tex-src/texinfo.tex     /^      \\def\\unnumbsecentry 
##1##2{}$/
+\unnumbsecentry        tex-src/texinfo.tex     
/^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
+\unnumbsetref  tex-src/texinfo.tex     /^\\def\\unnumbsetref#1{%$/
+\unnumbsubsecentry     tex-src/texinfo.tex     /^      
\\def\\unnumbsubsecentry ##1##2{}$/
+\unnumbsubsecentry     tex-src/texinfo.tex     
/^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
+\unnumbsubsubsecentry  tex-src/texinfo.tex     /^      
\\def\\unnumbsubsubsecentry ##1##2{}$/
+\unnumbsubsubsecentry  tex-src/texinfo.tex     
/^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
+\uppercaseenumerate    tex-src/texinfo.tex     /^\\def\\uppercaseenumerate{%$/
+\var   tex-src/texinfo.tex     /^\\def\\var##1{\\realbackslash var {##1}}$/
+\var   tex-src/texinfo.tex     /^\\def\\var##1{\\realbackslash var {##1}}%$/
+\vindex        tex-src/texinfo.tex     /^\\def\\vindex {\\vrindex}$/
+\vritemindex   tex-src/texinfo.tex     /^\\def\\vritemindex #1{\\doind 
{vr}{\\code{#1}}}%$/
+\vtable        tex-src/texinfo.tex     
/^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+\w     tex-src/texinfo.tex     /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
+\w     tex-src/texinfo.tex     /^\\def\\w{\\realbackslash w }%$/
+\w     tex-src/texinfo.tex     /^\\def\\w{\\realbackslash w}$/
+\xitem tex-src/texinfo.tex     /^\\def\\xitem{\\errmessage{@xitem while not in 
a table/
+\xitemx        tex-src/texinfo.tex     /^\\def\\xitemx{\\errmessage{@xitemx 
while not in a tab/
+\xitemzzz      tex-src/texinfo.tex     /^\\def\\xitemzzz #1{\\dosubind 
{kw}{\\code{#1}}{for {\\b/
+\xkey  tex-src/texinfo.tex     /^\\def\\xkey{\\key}$/
+\xrdef tex-src/texinfo.tex     /^\\def\\xrdef #1#2{$/
+\xref  tex-src/texinfo.tex     /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
+\xrefX[        tex-src/texinfo.tex     
/^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+^      tex-src/texinfo.tex     /^\\def^{{\\tt \\hat}}$/
+_      tex-src/texinfo.tex     /^\\def_{\\ifusingtt\\normalunderscore\\_}$/
+_GETOPT_H      c-src/getopt.h  19
+_GNU_SOURCE    c-src/etags.c   94
+_REGEX_H       c-src/emacs/src/regex.h 21
+_RE_SYNTAX_POSIX_COMMON        c-src/emacs/src/regex.h 221
+_Restrict_     c-src/emacs/src/regex.h 540
+_Restrict_     c-src/emacs/src/regex.h 542
+_Restrict_     c-src/emacs/src/regex.h 544
+_Restrict_arr_ c-src/emacs/src/regex.h 555
+_Restrict_arr_ c-src/emacs/src/regex.h 557
+_UCHAR_T       c-src/emacs/src/lisp.h  2423
+__COLORS       cp-src/screen.hpp       9
+__default_morecore     c-src/emacs/src/gmalloc.c       /^__default_morecore 
(ptrdiff_t increment)$/
+__init__       pyt-src/server.py       /^    def __init__(self):$/
+__init__       pyt-src/server.py       /^    def __init__(self, Master, text, 
textvar, widt/
+__init__       pyt-src/server.py       /^    def __init__(self, host, 
sitelist, master=None/
+__init__       pyt-src/server.py       /^    def __init__(self, master=None):$/
+__init__       pyt-src/server.py       /^    def __init__(self, newlegend, 
list, editor, ma/
+__init__       pyt-src/server.py       /^    def __init__(self, user, 
userlist, master=None/
+__ip   c.c     159
+__libc_atexit  c-src/exit.c    30
+__libc_atexit  c-src/exit.strange_suffix       30
+__malloc_extra_blocks  c-src/emacs/src/gmalloc.c       381
+__malloc_initialize    c-src/emacs/src/gmalloc.c       /^__malloc_initialize 
(void)$/
+__malloc_initialized   c-src/emacs/src/gmalloc.c       379
+__repr__       pyt-src/server.py       /^    def __repr__(self):$/
+__sbrk c-src/emacs/src/gmalloc.c       1513
+__str__        pyt-src/server.py       /^    def __str__(self):$/
+__up   c.c     160
+_aligned_blocks        c-src/emacs/src/gmalloc.c       1004
+_aligned_blocks_mutex  c-src/emacs/src/gmalloc.c       518
+_bar?  ruby-src/test1.ru       /^    def self._bar?(abc)$/
+_bytes_free    c-src/emacs/src/gmalloc.c       376
+_bytes_used    c-src/emacs/src/gmalloc.c       374
+_chunks_free   c-src/emacs/src/gmalloc.c       375
+_chunks_used   c-src/emacs/src/gmalloc.c       373
+_fraghead      c-src/emacs/src/gmalloc.c       370
+_free  c-src/emacs/src/gmalloc.c       /^_free (void *ptr)$/
+_free_internal c-src/emacs/src/gmalloc.c       /^_free_internal (void *ptr)$/
+_free_internal_nolock  c-src/emacs/src/gmalloc.c       /^_free_internal_nolock 
(void *ptr)$/
+_heapbase      c-src/emacs/src/gmalloc.c       355
+_heapindex     c-src/emacs/src/gmalloc.c       364
+_heapinfo      c-src/emacs/src/gmalloc.c       358
+_heaplimit     c-src/emacs/src/gmalloc.c       367
+_malloc        c-src/emacs/src/gmalloc.c       /^_malloc (size_t size)$/
+_malloc_internal       c-src/emacs/src/gmalloc.c       /^_malloc_internal 
(size_t size)$/
+_malloc_internal_nolock        c-src/emacs/src/gmalloc.c       
/^_malloc_internal_nolock (size_t size)$/
+_malloc_mutex  c-src/emacs/src/gmalloc.c       517
+_malloc_thread_enabled_p       c-src/emacs/src/gmalloc.c       519
+_realloc       c-src/emacs/src/gmalloc.c       /^_realloc (void *ptr, size_t 
size)$/
+_realloc_internal      c-src/emacs/src/gmalloc.c       /^_realloc_internal 
(void *ptr, size_t size)$/
+_realloc_internal_nolock       c-src/emacs/src/gmalloc.c       
/^_realloc_internal_nolock (void *ptr, size_t size)$/
+`      ruby-src/test.rb        /^        def `(command)$/
+a      c-src/h.h       103
+a      c-src/h.h       40
+a      c.c     /^a ()$/
+a      c.c     /^a()$/
+a      c.c     152
+a      c.c     180
+a      cp-src/c.C      132
+a      ruby-src/test1.ru       /^ def a()$/
+a-forth-constant!      forth-src/test-forth.fth        /^99 constant 
a-forth-constant!$/
+a-forth-value? forth-src/test-forth.fth        /^55 value a-forth-value?$/
+a-forth-word   forth-src/test-forth.fth        /^: a-forth-word ( a b c -- )$/
+a-forth-word   forth-src/test-forth.fth        /^: a-forth-word ( a b c -- 
a*b+c )  + * ;$/
+a0     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a0) (void);$/
+a1     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a1) (Lisp_Object);$/
+a2     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a2) (Lisp_Object, 
Lisp_Object)/
+a3     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a3) (Lisp_Object, 
Lisp_Object,/
+a4     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a4) (Lisp_Object, 
Lisp_Object,/
+a5     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a5) (Lisp_Object, 
Lisp_Object,/
+a6     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a6) (Lisp_Object, 
Lisp_Object,/
+a7     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a7) (Lisp_Object, 
Lisp_Object,/
+a8     c-src/emacs/src/lisp.h  /^      Lisp_Object (*a8) (Lisp_Object, 
Lisp_Object,/
+aMANY  c-src/emacs/src/lisp.h  /^      Lisp_Object (*aMANY) (ptrdiff_t, 
Lisp_Object/
+aUNEVALLED     c-src/emacs/src/lisp.h  /^      Lisp_Object (*aUNEVALLED) 
(Lisp_Object args)/
+aa     c.c     269
+aa     c.c     279
+aaa    c.c     249
+aaa    c.c     269
+aaaaaa c-src/h.h       111
+abbrev-expansion       c-src/abbrev.c  /^DEFUN ("abbrev-expansion", 
Fabbrev_expansion, Sabb/
+abbrev-symbol  c-src/abbrev.c  /^DEFUN ("abbrev-symbol", Fabbrev_symbol, 
Sabbrev_sy/
+abbrev_all_caps        c-src/abbrev.c  58
+abbrevs_changed        c-src/abbrev.c  56
+abc    c-src/h.h       33
+abc    c-src/h.h       37
+abort-recursive-edit   c-src/emacs/src/keyboard.c      /^DEFUN 
("abort-recursive-edit", Fabort_recursive_ed/
+abs/f  ada-src/etags-test-for.ada      /^   function "abs"   (Right : Complex) 
return Real'/
+absolute_dirname       c-src/etags.c   /^absolute_dirname (char *file, char 
*dir)$/
+absolute_filename      c-src/etags.c   /^absolute_filename (char *file, char 
*dir)$/
+abt    cp-src/c.C      55
+acc_pred_info  merc-src/accumulator.m  /^:- pred 
acc_pred_info(list(mer_type)::in, list(pro/
+acc_proc_info  merc-src/accumulator.m  /^:- pred 
acc_proc_info(list(prog_var)::in, prog_var/
+acc_unification        merc-src/accumulator.m  /^:- pred 
acc_unification(pair(prog_var)::in, hlds_g/
+acc_var_subst_init     merc-src/accumulator.m  /^:- pred 
acc_var_subst_init(list(prog_var)::in,$/
+accent_key_syms        c-src/emacs/src/keyboard.c      4625
+access_keymap_keyremap c-src/emacs/src/keyboard.c      
/^access_keymap_keyremap (Lisp_Object map, Lisp_Obje/
+accu_assoc     merc-src/accumulator.m  /^:- pred accu_assoc(module_info::in, 
vartypes::in, /
+accu_assoc     merc-src/accumulator.m  /^:- type accu_assoc$/
+accu_base      merc-src/accumulator.m  /^:- type accu_base$/
+accu_before    merc-src/accumulator.m  /^:- pred accu_before(module_info::in, 
vartypes::in,/
+accu_case      merc-src/accumulator.m  /^:- type accu_case$/
+accu_construct merc-src/accumulator.m  /^:- pred 
accu_construct(module_info::in, vartypes::/
+accu_construct_assoc   merc-src/accumulator.m  /^:- pred 
accu_construct_assoc(module_info::in, vart/
+accu_create_goal       merc-src/accumulator.m  /^:- pred 
accu_create_goal(accu_goal_id::in, list(pr/
+accu_divide_base_case  merc-src/accumulator.m  /^:- pred 
accu_divide_base_case(module_info::in, var/
+accu_goal_id   merc-src/accumulator.m  /^:- type accu_goal_id$/
+accu_goal_list merc-src/accumulator.m  /^:- func 
accu_goal_list(list(accu_goal_id), accu_go/
+accu_goal_store        merc-src/accumulator.m  /^:- type accu_goal_store == 
goal_store(accu_goal_id/
+accu_has_heuristic     merc-src/accumulator.m  /^:- pred 
accu_has_heuristic(module_name::in, string/
+accu_heuristic merc-src/accumulator.m  /^:- pred 
accu_heuristic(module_name::in, string::in/
+accu_is_associative    merc-src/accumulator.m  /^:- pred 
accu_is_associative(module_info::in, pred_/
+accu_is_update merc-src/accumulator.m  /^:- pred 
accu_is_update(module_info::in, pred_id::i/
+accu_process_assoc_set merc-src/accumulator.m  /^:- pred 
accu_process_assoc_set(module_info::in, ac/
+accu_process_update_set        merc-src/accumulator.m  /^:- pred 
accu_process_update_set(module_info::in, a/
+accu_related   merc-src/accumulator.m  /^:- pred accu_related(module_info::in, 
vartypes::in/
+accu_rename    merc-src/accumulator.m  /^:- func 
accu_rename(list(accu_goal_id), accu_subst/
+accu_sets      merc-src/accumulator.m  /^:- type accu_sets$/
+accu_sets_init merc-src/accumulator.m  /^:- pred 
accu_sets_init(accu_sets::out) is det.$/
+accu_stage1    merc-src/accumulator.m  /^:- pred accu_stage1(module_info::in, 
vartypes::in,/
+accu_stage1_2  merc-src/accumulator.m  /^:- pred 
accu_stage1_2(module_info::in, vartypes::i/
+accu_stage2    merc-src/accumulator.m  /^:- pred accu_stage2(module_info::in, 
proc_info::in/
+accu_stage3    merc-src/accumulator.m  /^:- pred accu_stage3(accu_goal_id::in, 
list(prog_va/
+accu_standardize       merc-src/accumulator.m  /^:- pred 
accu_standardize(hlds_goal::in, hlds_goal:/
+accu_store     merc-src/accumulator.m  /^:- pred accu_store(accu_case::in, 
hlds_goal::in,$/
+accu_subst     merc-src/accumulator.m  /^:- type accu_subst == map(prog_var, 
prog_var).$/
+accu_substs    merc-src/accumulator.m  /^:- type accu_substs$/
+accu_substs_init       merc-src/accumulator.m  /^:- pred 
accu_substs_init(list(prog_var)::in, prog_/
+accu_top_level merc-src/accumulator.m  /^:- pred accu_top_level(top_level::in, 
hlds_goal::i/
+accu_transform_proc    merc-src/accumulator.m  /^:- pred 
accu_transform_proc(pred_proc_id::in, pred/
+accu_update    merc-src/accumulator.m  /^:- pred accu_update(module_info::in, 
vartypes::in,/
+accu_warning   merc-src/accumulator.m  /^:- type accu_warning$/
+act    prol-src/natded.prolog  /^act(OutForm,OutSyn,Ws):-$/
+action prol-src/natded.prolog  /^action(KeyVals):-$/
+active_maps    c-src/emacs/src/keyboard.c      /^active_maps (Lisp_Object 
first_event)$/
+actout prol-src/natded.prolog  /^actout('Text',Trees):-$/
+addArchs       objc-src/PackInsp.m     /^-(void)addArchs:(const char *)string$/
+addPOReader    php-src/lce_functions.php       /^      function 
addPOReader($d_name, &$por)$/
+add_active     prol-src/natded.prolog  /^add_active([],Cat,Goal):-$/
+add_command_key        c-src/emacs/src/keyboard.c      /^add_command_key 
(Lisp_Object key)$/
+add_edge       prol-src/natded.prolog  /^add_edge(Left,Right,Cat):-$/
+add_node       c-src/etags.c   /^add_node (node *np, node **cur_node_p)$/
+add_regex      c-src/etags.c   /^add_regex (char *regexp_pattern, language 
*lang)$/
+add_user_signal        c-src/emacs/src/keyboard.c      /^add_user_signal (int 
sig, const char *name)$/
+addnoise       html-src/algrthms.html  /^Adding Noise to the$/
+address        y-src/cccp.y    113
+adjust_point_for_property      c-src/emacs/src/keyboard.c      
/^adjust_point_for_property (ptrdiff_t last_pt, bool/
+agent  cp-src/clheir.hpp       75
+algorithms     html-src/algrthms.html  /^Description$/
+alias  c-src/emacs/src/lisp.h  688
+align  c-src/emacs/src/gmalloc.c       /^align (size_t size)$/
+alignas        c-src/emacs/src/lisp.h  /^# define alignas(alignment) \/* empty 
*\/$/
+aligned        c-src/emacs/src/gmalloc.c       199
+aligned_alloc  c-src/emacs/src/gmalloc.c       /^aligned_alloc (size_t 
alignment, size_t size)$/
+aligned_alloc  c-src/emacs/src/gmalloc.c       1718
+aligned_alloc  c-src/emacs/src/gmalloc.c       71
+alignlist      c-src/emacs/src/gmalloc.c       196
+alive  cp-src/conway.hpp       7
+all_kboards    c-src/emacs/src/keyboard.c      86
+allocate_kboard        c-src/emacs/src/keyboard.c      /^allocate_kboard 
(Lisp_Object type)$/
+allocated      c-src/emacs/src/regex.h 344
+an_extern_linkage      c-src/h.h       44
+an_extern_linkage      c-src/h.h       56
+an_extern_linkage_ptr  c-src/h.h       43
+analyze_regex  c-src/etags.c   /^analyze_regex (char *regex_arg)$/
+andkeyvalseq   prol-src/natded.prolog  /^andkeyvalseq(KeyVals) --> ['&'], 
keyvalseq(KeyVals/
+animals        c-src/h.h       81
+animals        cp-src/c.C      126
+animals        cp-src/c.C      130
+any_kboard_state       c-src/emacs/src/keyboard.c      /^any_kboard_state ()$/
+appDidInit     objcpp-src/SimpleCalc.M /^- appDidInit:sender$/
+append prol-src/natded.prolog  /^append([],Xs,Xs).$/
+appendToDisplay        objcpp-src/SimpleCalc.M /^- appendToDisplay:(const char 
*)theDigit$/
+append_list    prol-src/natded.prolog  /^append_list([],[]).$/
+append_string  pas-src/common.pas      /^procedure append_string;(*($/
+append_tool_bar_item   c-src/emacs/src/keyboard.c      /^append_tool_bar_item 
(void)$/
+appendix       perl-src/htlmify-cystic 24
+appendix_name  perl-src/htlmify-cystic 13
+appendix_toc   perl-src/htlmify-cystic 16
+apply_modifiers        c-src/emacs/src/keyboard.c      /^apply_modifiers (int 
modifiers, Lisp_Object base)$/
+apply_modifiers_uncached       c-src/emacs/src/keyboard.c      
/^apply_modifiers_uncached (int modifiers, char *bas/
+aref_addr      c-src/emacs/src/lisp.h  /^aref_addr (Lisp_Object array, 
ptrdiff_t idx)$/
+arg    c-src/emacs/src/lisp.h  2961
+arg    c-src/emacs/src/lisp.h  2966
+arg    c-src/emacs/src/lisp.h  2971
+arg    c-src/h.h       13
+arg_type       c-src/etags.c   250
+arglist        y-src/cccp.y    41
+argno  y-src/cccp.y    45
+args   c-src/emacs/src/lisp.h  2986
+args   c-src/h.h       30
+argsindent     tex-src/texinfo.tex     /^\\dimen1=\\hsize \\advance \\dimen1 
by -\\defargsindent/
+argsindent     tex-src/texinfo.tex     /^\\newskip\\defargsindent 
\\defargsindent=50pt$/
+argsindent     tex-src/texinfo.tex     /^\\parshape 2 0in \\dimen0 
\\defargsindent \\dimen1    /
+argument       c-src/etags.c   253
+argvals        prol-src/natded.prolog  /^argvals([]) --> [].$/
+array  c.c     190
+ascii  c-src/emacs/src/lisp.h  1598
+asort  cp-src/functions.cpp    /^void asort(int *a, int num){$/
+assemby-code-word      forth-src/test-forth.fth        /^code 
assemby-code-word ( dunno what it does )$/
+assert c-src/etags.c   /^# define assert(x) ((void) 0)$/
+assert c-src/etags.c   135
+assign_neighbor        cp-src/clheir.hpp       /^    void assign_neighbor(int 
direction, location */
+assoc_list     merc-src/accumulator.m  /^:- import_module assoc_list.$/
+associativity_assertion        merc-src/accumulator.m  /^:- pred 
associativity_assertion(module_info::in, l/
+at_end c-src/etags.c   249
+at_filename    c-src/etags.c   247
+at_language    c-src/etags.c   245
+at_least_one_member    prol-src/natded.prolog  
/^at_least_one_member(X,[X|_]):-!.$/
+at_regexp      c-src/etags.c   246
+at_stdin       c-src/etags.c   248
+atom   prol-src/natded.prolog  /^atom(X) --> [X], {atomic(X)}.$/
+atomval        prol-src/natded.prolog  /^atomval(X) --> atom(X).$/
+aultparindent  tex-src/texinfo.tex     /^\\newdimen\\defaultparindent 
\\defaultparindent = 15p/
+aultparindent  tex-src/texinfo.tex     /^\\parindent = \\defaultparindent$/
+aultparindent\hang\textindent  tex-src/texinfo.tex     
/^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+auto_help      c-src/etags.c   699
+b      c-src/h.h       103
+b      c-src/h.h       104
+b      c-src/h.h       41
+b      c.c     /^b ()$/
+b      c.c     180
+b      c.c     259
+b      c.c     260
+b      c.c     262
+b      cp-src/c.C      132
+b      ruby-src/test1.ru       /^ def b()$/
+backslash=0    tex-src/texinfo.tex     /^\\let\\indexbackslash=0  %overridden 
during \\printin/
+bar    c-src/c.c       /^void bar() {while(0) {}}$/
+bar    c-src/h.h       19
+bar    c.c     143
+bar    cp-src/x.cc     /^XX::bar()$/
+bar1   ruby-src/test1.ru       /^    attr_reader(:foo1, :bar1, # comment$/
+bar=   ruby-src/test1.ru       /^    attr_writer :bar,$/
+bas_syn        prol-src/natded.prolog  /^bas_syn(n(_)).$/
+base   c-src/emacs/src/lisp.h  2188
+base   cp-src/Range.h  /^  double base (void) const { return rng_base;  }$/
+base   cp-src/c.C      /^double base (void) const { return rng_base;  }$/
+base_case_ids  merc-src/accumulator.m  /^:- func 
base_case_ids(accu_goal_store) = list(accu/
+base_case_ids_set      merc-src/accumulator.m  /^:- func 
base_case_ids_set(accu_goal_store) = set(a/
+baz=   ruby-src/test1.ru       /^                :baz,$/
+bb     c.c     275
+bbb    c.c     251
+bbbbbb c-src/h.h       113
+been_warned    c-src/etags.c   222
+before_command_echo_length     c-src/emacs/src/keyboard.c      130
+before_command_key_count       c-src/emacs/src/keyboard.c      129
+begtoken       c-src/etags.c   /^#define       begtoken(c)     (_btk[CHAR 
(c)]) \/* c can star/
+behaviour_info erl-src/gs_dialog.erl   /^behaviour_info(callbacks) ->$/
+bf=cmbx10      tex-src/texinfo.tex     /^\\font\\defbf=cmbx10 scaled 
\\magstep1 %was 1314$/
+bind   pyt-src/server.py       /^    def bind(self, key, action):$/
+bind_polling_period    c-src/emacs/src/keyboard.c      /^bind_polling_period 
(int n)$/
+bits_word      c-src/emacs/src/lisp.h  123
+bits_word      c-src/emacs/src/lisp.h  127
+bla    c.c     /^int bla ()$/
+blah   tex-src/testenv.tex     /^\\section{blah}$/
+bletch el-src/TAGTEST.EL       /^(foo::defmumble bletch beuarghh)$/
+blv    c-src/emacs/src/lisp.h  689
+blv_found      c-src/emacs/src/lisp.h  /^blv_found (struct 
Lisp_Buffer_Local_Value *blv)$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\dimen2 by 
-\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\dimen3 by 
-\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
-\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
\\defbodyindent \\advance \\righ/
+bodyindent     tex-src/texinfo.tex     /^\\exdentamount=\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\newskip\\defbodyindent 
\\defbodyindent=.4in$/
+bool   c.c     222
+bool   merc-src/accumulator.m  /^:- import_module bool.$/
+bool_header_size       c-src/emacs/src/lisp.h  1472
+bool_vector_bitref     c-src/emacs/src/lisp.h  /^bool_vector_bitref 
(Lisp_Object a, EMACS_INT i)$/
+bool_vector_bytes      c-src/emacs/src/lisp.h  /^bool_vector_bytes (EMACS_INT 
size)$/
+bool_vector_data       c-src/emacs/src/lisp.h  /^bool_vector_data (Lisp_Object 
a)$/
+bool_vector_ref        c-src/emacs/src/lisp.h  /^bool_vector_ref (Lisp_Object 
a, EMACS_INT i)$/
+bool_vector_set        c-src/emacs/src/lisp.h  /^bool_vector_set (Lisp_Object 
a, EMACS_INT i, bool /
+bool_vector_size       c-src/emacs/src/lisp.h  /^bool_vector_size (Lisp_Object 
a)$/
+bool_vector_uchar_data c-src/emacs/src/lisp.h  /^bool_vector_uchar_data 
(Lisp_Object a)$/
+bool_vector_words      c-src/emacs/src/lisp.h  /^bool_vector_words (EMACS_INT 
size)$/
+boolvar        c-src/emacs/src/lisp.h  2287
+bracelev       c-src/etags.c   2520
+bsp_DevId      c-src/h.h       25
+bt     c-src/emacs/src/lisp.h  2988
+btowc  c-src/emacs/src/regex.h /^# define btowc(c) c$/
+buffer c-src/emacs/src/lisp.h  2000
+buffer c-src/emacs/src/regex.h 341
+buffer c-src/etags.c   238
+buffer c-src/h.h       119
+build  prol-src/natded.prolog  /^build([],Left,Left).$/
+build_pure_c_string    c-src/emacs/src/lisp.h  /^build_pure_c_string (const 
char *str)$/
+build_string   c-src/emacs/src/lisp.h  /^build_string (const char *str)$/
+buildact       prol-src/natded.prolog  /^buildact([SynIn],Right,RightPlus1):-$/
+builtin_lisp_symbol    c-src/emacs/src/lisp.h  /^builtin_lisp_symbol (int 
index)$/
+burst  c-src/h.h       28
+busy   c-src/emacs/src/gmalloc.c       158
+button_down_location   c-src/emacs/src/keyboard.c      5210
+button_down_time       c-src/emacs/src/keyboard.c      5218
+byte_stack     c-src/emacs/src/lisp.h  3049
+bytecode_dest  c-src/emacs/src/lisp.h  3037
+bytecode_top   c-src/emacs/src/lisp.h  3036
+bytepos        c-src/emacs/src/lisp.h  2016
+bytes_free     c-src/emacs/src/gmalloc.c       314
+bytes_total    c-src/emacs/src/gmalloc.c       310
+bytes_used     c-src/emacs/src/gmalloc.c       312
+c      c-src/h.h       /^#define c() d$/
+c      c-src/h.h       106
+c      c.c     180
+c_ext  c-src/etags.c   2271
+caccacacca     c.c     /^caccacacca (a,b,c,d,e,f,g)$/
+cacheLRUEntry_s        c.c     172
+cacheLRUEntry_t        c.c     177
+calculate_goal_info    merc-src/accumulator.m  /^:- pred 
calculate_goal_info(hlds_goal_expr::in, hl/
+calloc c-src/emacs/src/gmalloc.c       /^calloc (size_t nmemb, size_t size)$/
+calloc c-src/emacs/src/gmalloc.c       1717
+calloc c-src/emacs/src/gmalloc.c       66
+calloc c-src/emacs/src/gmalloc.c       70
+can_be_null    c-src/emacs/src/regex.h 370
+cancel_echoing c-src/emacs/src/keyboard.c      /^cancel_echoing (void)$/
+canonicalize_filename  c-src/etags.c   /^canonicalize_filename (register char 
*fn)$/
+case_Lisp_Int  c-src/emacs/src/lisp.h  438
+cat    c-src/h.h       81
+cat    cp-src/c.C      126
+cat    cp-src/c.C      130
+cat    prol-src/natded.prolog  /^cat(A, Alpha@Beta, Ass3, Qs3, 
tree(fe,A:Alpha@Beta/
+cat_atoms      prol-src/natded.prolog  /^cat_atoms(A1,A2,A3):-$/
+cccccccccc     c-src/h.h       115
+cdr    c-src/emacs/src/lisp.h  1159
+cell   y-src/parse.y   279
+cgrep  html-src/software.html  /^cgrep$/
+chain  c-src/emacs/src/lisp.h  1162
+chain  c-src/emacs/src/lisp.h  2206
+chain  c-src/emacs/src/lisp.h  2396
+chain_subst    merc-src/accumulator.m  /^:- func chain_subst(accu_subst, 
accu_subst) = accu/
+chain_subst_2  merc-src/accumulator.m  /^:- pred chain_subst_2(list(A)::in, 
map(A, B)::in, /
+char_bits      c-src/emacs/src/lisp.h  2443
+char_table_specials    c-src/emacs/src/lisp.h  1692
+charpos        c-src/emacs/src/lisp.h  2011
+charset_unibyte        c-src/emacs/src/regex.h 410
+chartonmstr    pas-src/common.pas      /^function chartonmstr; (*($/
+checkQuotation php-src/lce_functions.php       /^      function 
checkQuotation($str)$/
+check_cons_list        c-src/emacs/src/lisp.h  /^#  define check_cons_list() 
lisp_h_check_cons_list/
+checker        make-src/Makefile       /^checker:$/
+checkhdr       c-src/emacs/src/gmalloc.c       /^checkhdr (const struct hdr 
*hdr)$/
+checkiso       html-src/software.html  /^checkiso$/
+childDidExit   objc-src/Subprocess.m   /^- childDidExit$/
+chunks_free    c-src/emacs/src/gmalloc.c       313
+chunks_used    c-src/emacs/src/gmalloc.c       311
+cjava  c-src/etags.c   2936
+class_method   ruby-src/test.rb        /^        def 
ClassExample.class_method$/
+classifyLine   php-src/lce_functions.php       /^      function 
classifyLine($line)$/
+clean  make-src/Makefile       /^clean:$/
+clear  cp-src/conway.hpp       /^    void clear(void) { alive = 0; }$/
+clear-abbrev-table     c-src/abbrev.c  /^DEFUN ("clear-abbrev-table", 
Fclear_abbrev_table, /
+clear-this-command-keys        c-src/emacs/src/keyboard.c      /^DEFUN 
("clear-this-command-keys", Fclear_this_comm/
+clearAllKey    objcpp-src/SimpleCalc.M /^- clearAllKey:sender$/
+clearKey       objcpp-src/SimpleCalc.M /^- clearKey:sender$/
+clear_event    c-src/emacs/src/keyboard.c      /^clear_event (struct 
input_event *event)$/
+clear_input_pending    c-src/emacs/src/keyboard.c      /^clear_input_pending 
(void)$/
+clear_neighbors        cp-src/clheir.cpp       /^void 
discrete_location::clear_neighbors(void)$/
+clear_screen   cp-src/screen.cpp       /^void clear_screen(void)$/
+clear_waiting_for_input        c-src/emacs/src/keyboard.c      
/^clear_waiting_for_input (void)$/
+cmd_error      c-src/emacs/src/keyboard.c      /^cmd_error (Lisp_Object data)$/
+cmd_error_internal     c-src/emacs/src/keyboard.c      /^cmd_error_internal 
(Lisp_Object data, const char */
+cmpfn  c-src/emacs/src/lisp.h  /^  bool (*cmpfn) (struct hash_table_test *t, 
Lisp_O/
+cmt    prol-src/natded.prolog  /^cmt:-$/
+cname  c-src/etags.c   2519
+cno    c-src/etags.c   224
+colori cp-src/c.C      40
+commaargvals   prol-src/natded.prolog  /^commaargvals(Args) -->$/
+command        c-src/etags.c   187
+command-error-default-function c-src/emacs/src/keyboard.c      /^DEFUN 
("command-error-default-function", Fcommand_/
+command_loop   c-src/emacs/src/keyboard.c      /^command_loop (void)$/
+command_loop_1 c-src/emacs/src/keyboard.c      /^command_loop_1 (void)$/
+command_loop_2 c-src/emacs/src/keyboard.c      /^command_loop_2 (Lisp_Object 
ignore)$/
+command_loop_level     c-src/emacs/src/keyboard.c      195
+comment        php-src/lce_functions.php       /^      function comment($line, 
$class)$/
+commutativity_assertion        merc-src/accumulator.m  /^:- pred 
commutativity_assertion(module_info::in,li/
+compile_empty  prol-src/natded.prolog  /^compile_empty:-$/
+compile_lex    prol-src/natded.prolog  /^compile_lex(File):-$/
+complete       prol-src/natded.prolog  /^complete(Cat):-$/
+complete-tag   el-src/emacs/lisp/progmodes/etags.el    /^(defun complete-tag 
()$/
+compressor     c-src/etags.c   188
+compressors    c-src/etags.c   457
+compute_next_state     cp-src/clheir.hpp       /^    virtual void 
compute_next_state(void) { }$/
+compute_next_state     cp-src/conway.hpp       /^    void 
compute_next_state(void)$/
+conalgorithm   html-src/algrthms.html  /^Convolutionally$/
+concat c-src/etags.c   /^concat (const char *s1, const char *s2, const char/
+concatenatenamestrings pas-src/common.pas      /^function 
concatenatenamestrings; (*($/
+consider_token c-src/etags.c   /^consider_token (char *str, int len, int c, 
int *c_/
+constant       c-src/emacs/src/lisp.h  668
+constant       c-src/h.h       29
+constant       y-src/cccp.y    112
+constant_args  c-src/h.h       27
+constype       c-src/emacs/src/lisp.h  3739
+consult_lex    prol-src/natded.prolog  /^consult_lex:-$/
+contents       c-src/emacs/src/lisp.h  1372
+contents       c-src/emacs/src/lisp.h  1600
+contents       c-src/emacs/src/lisp.h  1624
+count  c-src/emacs/src/lisp.h  1863
+count_layers   lua-src/allegro.lua     /^local function count_layers (layer)$/
+count_words    c-src/tab.c     /^static int            count_words(char *str, 
char delim)$/
+counter        cp-src/c.C      33
+counter        cp-src/c.C      36
+cow    cp-src/c.C      127
+cow    cp-src/c.C      131
+cplpl  c-src/etags.c   2935
+create-bar     forth-src/test-forth.fth        /^: create-bar foo ;$/
+createPOEntries        php-src/lce_functions.php       /^      function 
createPOEntries()$/
+createWidgets  pyt-src/server.py       /^    def createWidgets(self):$/
+createWidgets  pyt-src/server.py       /^    def createWidgets(self, host):$/
+create_acc_call        merc-src/accumulator.m  /^:- func 
create_acc_call(hlds_goal::in(goal_plain_c/
+create_acc_goal        merc-src/accumulator.m  /^:- pred 
create_acc_goal(hlds_goal::in, accu_substs/
+create_new_base_goals  merc-src/accumulator.m  /^:- func 
create_new_base_goals(set(accu_goal_id), a/
+create_new_orig_recursive_goals        merc-src/accumulator.m  /^:- func 
create_new_orig_recursive_goals(set(accu_g/
+create_new_recursive_goals     merc-src/accumulator.m  /^:- func 
create_new_recursive_goals(set(accu_goal_i/
+create_new_var merc-src/accumulator.m  /^:- pred create_new_var(prog_var::in, 
string::in, p/
+create_orig_goal       merc-src/accumulator.m  /^:- pred 
create_orig_goal(hlds_goal::in, accu_subst/
+cscInitTime    cp-src/c.C      7
+cscSegmentationTime    cp-src/c.C      8
+cstack c-src/etags.c   2523
+ctags  make-src/Makefile       /^ctags: etags.c ${OBJS}$/
+curlb  c-src/etags.c   2929
+curlinepos     c-src/etags.c   2931
+current-idle-time      c-src/emacs/src/keyboard.c      /^DEFUN 
("current-idle-time", Fcurrent_idle_time, Sc/
+current-input-mode     c-src/emacs/src/keyboard.c      /^DEFUN 
("current-input-mode", Fcurrent_input_mode, /
+current_kboard c-src/emacs/src/keyboard.c      85
+current_lb_is_new      c-src/etags.c   2926
+curry-test     scm-src/test.scm        /^(define (((((curry-test a) b) c) d) 
e)$/
+cursor_position        cp-src/screen.cpp       /^void cursor_position(void)$/
+cursor_x       cp-src/screen.cpp       15
+cursor_y       cp-src/screen.cpp       15
+d      c-src/emacs/src/lisp.h  4673
+d      c-src/emacs/src/lisp.h  4679
+d      c.c     180
+data   c-src/emacs/src/lisp.h  1395
+data   c-src/emacs/src/lisp.h  2129
+data   c-src/emacs/src/lisp.h  2395
+ddefineseen    c-src/etags.c   2462
+debian-bug     html-src/software.html  /^debian-bug.el$/
+debug_on_exit  c-src/emacs/src/lisp.h  2984
+decimalKey     objcpp-src/SimpleCalc.M /^- decimalKey:sender$/
+declared_special       c-src/emacs/src/lisp.h  676
+decode_timer   c-src/emacs/src/keyboard.c      /^decode_timer (Lisp_Object 
timer, struct timespec */
+def    c-src/h.h       35
+def    c-src/h.h       38
+defalt c-src/emacs/src/lisp.h  1585
+default-tags-table-function    el-src/emacs/lisp/progmodes/etags.el    
/^(defvar default-tags-table-function nil$/
+default_C_entries      c-src/etags.c   /^default_C_entries (FILE *inf)$/
+default_C_help c-src/etags.c   515
+default_C_help c-src/etags.c   523
+default_C_suffixes     c-src/etags.c   512
+defcell        c-src/emacs/src/lisp.h  2351
+define-abbrev  c-src/abbrev.c  /^DEFUN ("define-abbrev", Fdefine_abbrev, 
Sdefine_ab/
+define-abbrev-table    c-src/abbrev.c  /^DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table/
+define-global-abbrev   c-src/abbrev.c  /^DEFUN ("define-global-abbrev", 
Fdefine_global_abbr/
+define-mode-abbrev     c-src/abbrev.c  /^DEFUN ("define-mode-abbrev", 
Fdefine_mode_abbrev, /
+defined_GC_CHECK_STRING_BYTES  c-src/emacs/src/lisp.h  4663
+defined_GC_CHECK_STRING_BYTES  c-src/emacs/src/lisp.h  4665
+definedef      c-src/etags.c   2464
+defun_func1    c.c     /^defun_func1()$/
+delegate       objc-src/Subprocess.m   /^- delegate$/
+deleteItem     pyt-src/server.py       /^    def deleteItem(self):$/
+delete_kboard  c-src/emacs/src/keyboard.c      /^delete_kboard (KBOARD *kb)$/
+deliver_input_available_signal c-src/emacs/src/keyboard.c      
/^deliver_input_available_signal (int sig)$/
+deliver_interrupt_signal       c-src/emacs/src/keyboard.c      
/^deliver_interrupt_signal (int sig)$/
+deliver_user_signal    c-src/emacs/src/keyboard.c      /^deliver_user_signal 
(int sig)$/
+depth  c-src/emacs/src/lisp.h  1618
+derived_analyses       prol-src/natded.prolog  /^derived_analyses([],[]).$/
+describe_abbrev        c-src/abbrev.c  /^describe_abbrev (sym, stream)$/
+detect_input_pending   c-src/emacs/src/keyboard.c      /^detect_input_pending 
(void)$/
+detect_input_pending_ignore_squeezables        c-src/emacs/src/keyboard.c      
/^detect_input_pending_ignore_squeezables (void)$/
+detect_input_pending_run_timers        c-src/emacs/src/keyboard.c      
/^detect_input_pending_run_timers (bool do_display)$/
+dialog_loop    erl-src/gs_dialog.erl   /^dialog_loop(Module, Window, Frame, 
Extra, Args) ->/
+dignorerest    c-src/etags.c   2463
+discard-input  c-src/emacs/src/keyboard.c      /^DEFUN ("discard-input", 
Fdiscard_input, Sdiscard_i/
+discard_mouse_events   c-src/emacs/src/keyboard.c      /^discard_mouse_events 
(void)$/
+discrete_location      cp-src/clheir.hpp       /^    discrete_location(int xi, 
int yi, int zi):$/
+discrete_location      cp-src/clheir.hpp       56
+display        cp-src/conway.cpp       /^void display(void)$/
+disposetextstring      pas-src/common.pas      /^procedure 
disposetextstring;(*($/
+dnone  c-src/etags.c   2460
+doc    c-src/emacs/src/lisp.h  1689
+dog    c-src/h.h       81
+dog    cp-src/c.C      126
+dog    cp-src/c.C      130
+dotfill        tex-src/texinfo.tex     /^  \\null\\nobreak\\indexdotfill % 
Have leaders before/
+dotfill        tex-src/texinfo.tex     
/^\\noindent\\hskip\\secondaryindent\\hbox{#1}\\indexdotf/
+double_click_count     c-src/emacs/src/keyboard.c      5222
+drag_n_drop_syms       c-src/emacs/src/keyboard.c      4629
+dribble        c-src/emacs/src/keyboard.c      236
+dsharpseen     c-src/etags.c   2461
+dummies        tex-src/texinfo.tex     /^{\\indexdummies % Must do this here, 
since \\bf, etc/
+dummy1 cp-src/burton.cpp       /^::dummy::dummy test::dummy1(void)$/
+dummy2 cp-src/burton.cpp       /^::dummy::dummy test::dummy2(::CORBA::Long 
dummy)$/
+dummy3 cp-src/burton.cpp       /^::dummy::dummy test::dummy3(char* name, 
::CORBA::L/
+dummydots      tex-src/texinfo.tex     /^\\let\\dots=\\indexdummydots$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\b=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\code=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\emph=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\file=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\i=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\kbd=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\key=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\r=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\samp=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\sc=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\strong=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\t=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\tclose=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\var=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\w=\\indexdummyfont$/
+dummytex       tex-src/texinfo.tex     /^\\let\\TeX=\\indexdummytex$/
+dump   pyt-src/server.py       /^    def dump(self, folded):$/
+eabs   c-src/emacs/src/lisp.h  /^#define eabs(x)         ((x) < 0 ? -(x) : 
(x))$/
+eassert        c-src/emacs/src/lisp.h  /^# define eassert(cond)                
                                \\$/
+eassert        c-src/emacs/src/lisp.h  /^# define eassert(cond) ((void) (false 
&& (cond))) /
+eassume        c-src/emacs/src/lisp.h  /^# define eassume(cond)                
                                \\$/
+eassume        c-src/emacs/src/lisp.h  /^# define eassume(cond) assume (cond)$/
+eax    c-src/sysdep.h  31
+eax    c-src/sysdep.h  33
+echo_add_key   c-src/emacs/src/keyboard.c      /^echo_add_key (Lisp_Object c)$/
+echo_char      c-src/emacs/src/keyboard.c      /^echo_char (Lisp_Object c)$/
+echo_dash      c-src/emacs/src/keyboard.c      /^echo_dash (void)$/
+echo_kboard    c-src/emacs/src/keyboard.c      166
+echo_keystrokes_p      c-src/emacs/src/keyboard.c      /^echo_keystrokes_p 
(void)$/
+echo_length    c-src/emacs/src/keyboard.c      /^echo_length (void)$/
+echo_message_buffer    c-src/emacs/src/keyboard.c      171
+echo_now       c-src/emacs/src/keyboard.c      /^echo_now (void)$/
+echo_truncate  c-src/emacs/src/keyboard.c      /^echo_truncate (ptrdiff_t 
nchars)$/
+echoing        c-src/emacs/src/keyboard.c      154
+editItem       pyt-src/server.py       /^    def editItem(self):$/
+editsite       pyt-src/server.py       /^    def editsite(self, site):$/
+edituser       pyt-src/server.py       /^    def edituser(self, user):$/
+egetenv        c-src/emacs/src/lisp.h  /^egetenv (const char *var)$/
+emacs_abort    c-src/emacs/src/lisp.h  /^extern _Noreturn void emacs_abort 
(void) NO_INLINE/
+end    c-src/emacs/src/keyboard.c      8753
+end    c-src/emacs/src/lisp.h  2039
+end    c-src/emacs/src/regex.h 432
+endtoken       c-src/etags.c   /^#define       endtoken(c)     (_etk[CHAR 
(c)]) \/* c ends tok/
+enter_critical_section c-src/h.h       116
+entry  perl-src/htlmify-cystic 218
+entry  perl-src/htlmify-cystic 234
+entry  perl-src/htlmify-cystic 245
+entry  perl-src/htlmify-cystic 252
+entry  perl-src/htlmify-cystic 268
+entry  perl-src/htlmify-cystic 276
+entry  perl-src/htlmify-cystic 281
+entry  perl-src/htlmify-cystic 296
+equalsKey      objcpp-src/SimpleCalc.M /^- equalsKey:sender$/
+erlang_atom    c-src/etags.c   /^erlang_atom (char *s)$/
+erlang_attribute       c-src/etags.c   /^erlang_attribute (char *s)$/
+erlang_func    c-src/etags.c   /^erlang_func (char *s, char *last)$/
+error  c-src/emacs/src/lisp.h  /^extern _Noreturn void error (const char *, 
...) AT/
+error  c-src/etags.c   /^error (const char *format, ...)$/
+error  c-src/etags.c   /^static void error (const char *, ...) ATTRIBUTE_FO/
+error  y-src/cccp.y    /^error (msg)$/
+error_signaled c-src/etags.c   264
+etags  el-src/emacs/lisp/progmodes/etags.el    /^(defgroup etags nil "Tags 
tables."$/
+etags  html-src/software.html  /^Etags$/
+etags  make-src/Makefile       /^etags: etags.c ${OBJS}$/
+etags--xref-find-definitions   el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags--xref-find-definitions (pattern &opti/
+etags--xref-limit      el-src/emacs/lisp/progmodes/etags.el    /^(defconst 
etags--xref-limit 1000)$/
+etags-file-of-tag      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-file-of-tag (&optional relative) ; Do/
+etags-goto-tag-location        el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-goto-tag-location (tag-info)$/
+etags-list-tags        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-list-tags (file) ; Doc string?$/
+etags-recognize-tags-table     el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-recognize-tags-table ()$/
+etags-snarf-tag        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-snarf-tag (&optional use-explicit) ; /
+etags-tags-apropos     el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-tags-apropos (string) ; Doc string?$/
+etags-tags-apropos-additional  el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-tags-apropos-additional (regexp)$/
+etags-tags-completion-table    el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-tags-completion-table () ; Doc string/
+etags-tags-included-tables     el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-tags-included-tables () ; Doc string?/
+etags-tags-table-files el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-tags-table-files () ; Doc string?$/
+etags-verify-tags-table        el-src/emacs/lisp/progmodes/etags.el    
/^(defun etags-verify-tags-table ()$/
+etags-xref-find        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
etags-xref-find (action id)$/
+etags-xref-find-definitions-tag-order  el-src/emacs/lisp/progmodes/etags.el    
/^(defvar etags-xref-find-definitions-tag-order '(ta/
+etags.1.man    make-src/Makefile       /^etags.1.man: etags.1$/
+etags_getcwd   c-src/etags.c   /^etags_getcwd (void)$/
+eval_dyn       c-src/emacs/src/keyboard.c      /^eval_dyn (Lisp_Object form)$/
+event-convert-list     c-src/emacs/src/keyboard.c      /^DEFUN 
("event-convert-list", Fevent_convert_list, /
+event-symbol-parse-modifiers   c-src/emacs/src/keyboard.c      /^DEFUN 
("internal-event-symbol-parse-modifiers", Fe/
+event_head     c-src/emacs/src/keyboard.c      11021
+event_to_kboard        c-src/emacs/src/keyboard.c      /^event_to_kboard 
(struct input_event *event)$/
+exact  c-src/emacs/src/gmalloc.c       200
+execute        cp-src/c.C      /^        void execute(CPluginCSCState& p, int 
w, in/
+exit   c-src/exit.c    /^DEFUN(exit, (status), int status)$/
+exit   c-src/exit.strange_suffix       /^DEFUN(exit, (status), int status)$/
+exit-recursive-edit    c-src/emacs/src/keyboard.c      /^DEFUN 
("exit-recursive-edit", Fexit_recursive_edit/
+exit_critical_to_previous      c-src/h.h       117
+exp    y-src/atest.y   2
+exp    y-src/cccp.y    156
+exp    y-src/cccp.y    185
+exp    y-src/parse.y   95
+exp1   y-src/cccp.y    148
+exp_list       y-src/parse.y   263
+expand-abbrev  c-src/abbrev.c  /^DEFUN ("expand-abbrev", Fexpand_abbrev, 
Sexpand_ab/
+expandmng      prol-src/natded.prolog  /^expandmng(var(V),var(V)).$/
+expandmng_tree prol-src/natded.prolog  
/^expandmng_tree(tree(Rule,Syn:Sem,Trees),$/
+expandmng_trees        prol-src/natded.prolog  /^expandmng_trees([],[]).$/
+expandsyn      prol-src/natded.prolog  /^expandsyn(Syn,Syn):-$/
+explicitly-quoted-pending-delete-mode  el-src/TAGTEST.EL       /^(defalias 
(quote explicitly-quoted-pending-delete-/
+expression_value       y-src/cccp.y    68
+extras c-src/emacs/src/lisp.h  1603
+extvar c-src/h.h       109
+f      c-src/c.c       /^T f(){if(x){}$/
+f      c-src/h.h       89
+f      c.c     /^int f$/
+f      c.c     145
+f      c.c     156
+f      c.c     168
+f      cp-src/c.C      /^     void f() {}$/
+f      cp-src/c.C      /^  int f(){return 0;};         \/\/ first comment$/
+f      cp-src/c.C      /^A<float,B<int> > A<B<float>,int>::f(A<int>* x) {}$/
+f      cp-src/c.C      /^A<int>* f() {}$/
+f      cp-src/c.C      /^class B<int> { void f() {} };$/
+f      cp-src/c.C      /^int A<int>::f(A<int>* x) {}$/
+f      cp-src/c.C      /^int f(A<int> x) {}$/
+f      cp-src/fail.C   /^              int f() { return 5; }$/
+f      cp-src/fail.C   /^int A::B::f() { return 2; }$/
+f1     c.c     /^     f1 () { \/* Do something. *\/; }$/
+f1     perl-src/kai-test.pl    /^sub f1 {$/
+f2     c.c     /^void f2 () { \/* Do something. *\/; }$/
+f2     perl-src/kai-test.pl    /^sub main::f2 {$/
+f3     perl-src/kai-test.pl    /^sub f3 {$/
+f4     perl-src/kai-test.pl    /^sub Bar::f4 {$/
+f5     perl-src/kai-test.pl    /^sub f5 {$/
+f6     perl-src/kai-test.pl    /^sub f6 {$/
+f7     perl-src/kai-test.pl    /^sub f7 {$/
+fast_string_match_ignore_case  c-src/emacs/src/lisp.h  
/^fast_string_match_ignore_case (Lisp_Object regexp,/
+fastctags      make-src/Makefile       /^fastctags:$/
+fastetags      make-src/Makefile       /^fastetags:$/
+fastmap        c-src/emacs/src/regex.h 355
+fastmap_accurate       c-src/emacs/src/regex.h 383
+fatal  c-src/etags.c   /^fatal (const char *s1, const char *s2)$/
+fatala c.c     /^void fatala () __attribute__ ((noreturn));$/
+fconst forth-src/test-forth.fth        /^3.1415e fconstant fconst$/
+fdHandler      objc-src/Subprocess.m   /^- fdHandler:(int)theFd$/
+fdHandler      objc-src/Subprocess.m   /^fdHandler (int theFd, id self)$/
+fdefunkey      c-src/etags.c   2409
+fdefunname     c-src/etags.c   2410
+fdesc  c-src/etags.c   201
+fdesc  c-src/etags.c   212
+fdp    c-src/etags.c   217
+ff     cp-src/c.C      /^  int ff(){return 1;};$/
+field_of_play  cp-src/conway.cpp       18
+fignore        c-src/etags.c   2416
+file-of-tag    el-src/emacs/lisp/progmodes/etags.el    /^(defun file-of-tag 
(&optional relative)$/
+file-of-tag-function   el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
file-of-tag-function nil$/
+fileJoin       php-src/lce_functions.php       /^  function fileJoin()$/
+file_end       perl-src/htlmify-cystic /^sub file_end ()$/
+file_index     perl-src/htlmify-cystic 33
+file_tocs      perl-src/htlmify-cystic 30
+filename_is_absolute   c-src/etags.c   /^filename_is_absolute (char *fn)$/
+filenames      c-src/etags.c   196
+find-tag       el-src/emacs/lisp/progmodes/etags.el    /^(defun find-tag 
(tagname &optional next-p regexp-p/
+find-tag-default-function      el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom find-tag-default-function nil$/
+find-tag-history       el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
find-tag-history nil) ; Doc string?$/
+find-tag-hook  el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
find-tag-hook nil$/
+find-tag-in-order      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-in-order (pattern$/
+find-tag-interactive   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-interactive (prompt &optional no-d/
+find-tag-marker-ring   el-src/emacs/lisp/progmodes/etags.el    /^(defvaralias 
'find-tag-marker-ring 'xref--marker-r/
+find-tag-marker-ring-length    el-src/emacs/lisp/progmodes/etags.el    
/^(define-obsolete-variable-alias 'find-tag-marker-r/
+find-tag-next-line-after-failure-p     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar find-tag-next-line-after-failure-p nil$/
+find-tag-noselect      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-noselect (tagname &optional next-p/
+find-tag-other-frame   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-other-frame (tagname &optional nex/
+find-tag-other-window  el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-other-window (tagname &optional ne/
+find-tag-regexp        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
find-tag-regexp (regexp &optional next-p ot/
+find-tag-regexp-next-line-after-failure-p      
el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
find-tag-regexp-next-line-after-failure-p /
+find-tag-regexp-search-function        el-src/emacs/lisp/progmodes/etags.el    
/^(defvar find-tag-regexp-search-function nil$/
+find-tag-regexp-tag-order      el-src/emacs/lisp/progmodes/etags.el    
/^(defvar find-tag-regexp-tag-order nil$/
+find-tag-search-function       el-src/emacs/lisp/progmodes/etags.el    
/^(defvar find-tag-search-function nil$/
+find-tag-tag   el-src/emacs/lisp/progmodes/etags.el    /^(defun find-tag-tag 
(string)$/
+find-tag-tag-order     el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
find-tag-tag-order nil$/
+find_entries   c-src/etags.c   /^find_entries (FILE *inf)$/
+find_user_signal_name  c-src/emacs/src/keyboard.c      /^find_user_signal_name 
(int sig)$/
+findcats       prol-src/natded.prolog  /^findcats([],Left,Left).$/
+finish_appendices      perl-src/htlmify-cystic /^sub finish_appendices ()$/
+finish_sections        perl-src/htlmify-cystic /^sub finish_sections ()$/
+finish_subsections     perl-src/htlmify-cystic /^sub finish_subsections ()$/
+finish_subsubsections  perl-src/htlmify-cystic /^sub finish_subsubsections ()$/
+finlist        c-src/etags.c   2414
+first  c-src/emacs/src/gmalloc.c       151
+fitchtreelist  prol-src/natded.prolog  /^fitchtreelist([]).$/
+fixup_locale   c-src/emacs/src/lisp.h  /^INLINE void fixup_locale (void) {}$/
+flag   c-src/getopt.h  83
+flag2str       pyt-src/server.py       /^def flag2str(value, string):$/
+flistseen      c-src/etags.c   2415
+fn     c-src/exit.c    /^    void EXFUN((*fn[1]), (NOARGS));$/
+fn     c-src/exit.strange_suffix       /^    void EXFUN((*fn[1]), (NOARGS));$/
+fnin   y-src/parse.y   68
+focus_set      pyt-src/server.py       /^    def focus_set(self):$/
+follow_key     c-src/emacs/src/keyboard.c      /^follow_key (Lisp_Object 
keymap, Lisp_Object key)$/
+fonts  tex-src/texinfo.tex     /^\\obeyspaces \\obeylines \\ninett 
\\indexfonts \\rawbac/
+fonts\rm       tex-src/texinfo.tex     /^  \\indexfonts\\rm \\tolerance=9500 
\\advance\\baseline/
+foo    c-src/h.h       18
+foo    c.c     150
+foo    c.c     166
+foo    c.c     167
+foo    c.c     178
+foo    c.c     189
+foo    cp-src/c.C      /^    foo() {$/
+foo    cp-src/c.C      68
+foo    cp-src/c.C      79
+foo    cp-src/x.cc     /^XX::foo()$/
+foo    f-src/entry.for /^       character*(*) function foo()$/
+foo    f-src/entry.strange     /^       character*(*) function foo()$/
+foo    f-src/entry.strange_suffix      /^       character*(*) function foo()$/
+foo    forth-src/test-forth.fth        /^: foo (foo) ;$/
+foo    php-src/ptest.php       /^foo()$/
+foo    ruby-src/test1.ru       /^    attr_reader :foo$/
+foo!   ruby-src/test1.ru       /^    def foo!$/
+foo1   ruby-src/test1.ru       /^    attr_reader(:foo1, :bar1, # comment$/
+foo2   ruby-src/test1.ru       /^    alias_method ( :foo2, #cmmt$/
+foo==bar       el-src/TAGTEST.EL       /^(defun foo==bar () (message "hi"))  ; 
Bug#5624$/
+foobar c-src/c.c       /^int foobar() {;}$/
+foobar c.c     /^extern void foobar (void) __attribute__ ((section /
+foobar2        c-src/h.h       20
+foobar2_       c-src/h.h       16
+foperator      c-src/etags.c   2411
+force_auto_save_soon   c-src/emacs/src/keyboard.c      /^force_auto_save_soon 
(void)$/
+force_explicit_name    c-src/etags.c   265
+force_quit_count       c-src/emacs/src/keyboard.c      10387
+foreign_export merc-src/accumulator.m  /^:- pragma foreign_export("C", 
unravel_univ(in, out/
+formatSize     objc-src/PackInsp.m     /^-(const char *)formatSize:(const char 
*)size inBuf/
+found  c-src/emacs/src/lisp.h  2344
+fracas html-src/software.html  /^Fracas$/
+frag   c-src/emacs/src/gmalloc.c       152
+frame_local    c-src/emacs/src/lisp.h  2341
+free   c-src/emacs/src/gmalloc.c       /^free (void *ptr)$/
+free   c-src/emacs/src/gmalloc.c       166
+free   c-src/emacs/src/gmalloc.c       1719
+free   c-src/emacs/src/gmalloc.c       67
+free   c-src/emacs/src/gmalloc.c       72
+free_fdesc     c-src/etags.c   /^free_fdesc (register fdesc *fdp)$/
+free_for       prol-src/natded.prolog  /^free_for(var(_),_,_).$/
+free_regexps   c-src/etags.c   /^free_regexps (void)$/
+free_tree      c-src/etags.c   /^free_tree (register node *np)$/
+free_var       prol-src/natded.prolog  /^free_var(var(V),var(V)).$/
+freehook       c-src/emacs/src/gmalloc.c       /^freehook (void *ptr)$/
+fresh_vars     prol-src/natded.prolog  /^fresh_vars(var(V),var(V)).$/
+fstartlist     c-src/etags.c   2413
+func   c-src/emacs/src/lisp.h  /^      void (*func) (Lisp_Object);$/
+func   c-src/emacs/src/lisp.h  /^      void (*func) (int);$/
+func   c-src/emacs/src/lisp.h  /^      void (*func) (void *);$/
+func   c-src/emacs/src/lisp.h  /^      void (*func) (void);$/
+func1  c.c     /^int func1$/
+func2  c.c     /^int func2 (a,b$/
+func_key_syms  c-src/emacs/src/keyboard.c      4626
+funcboo        c.c     /^bool funcboo ()$/
+funcpointer    c-src/emacs/src/lisp.h  2126
+funcptr        c-src/h.h       /^    fu   int (*funcptr) (void *ptr);$/
+function       c-src/emacs/src/lisp.h  1685
+function       c-src/emacs/src/lisp.h  2197
+function       c-src/emacs/src/lisp.h  2985
+function       c-src/emacs/src/lisp.h  694
+function       c-src/etags.c   194
+functionp      c-src/emacs/src/lisp.h  /^functionp (Lisp_Object object)$/
+fval   forth-src/test-forth.fth        /^fconst fvalue fval$/
+fvar   forth-src/test-forth.fth        /^fvariable fvar$/
+fvdef  c-src/etags.c   2418
+fvextern       c-src/etags.c   2420
+fvnameseen     c-src/etags.c   2412
+fvnone c-src/etags.c   2408
+fwd    c-src/emacs/src/lisp.h  2346
+fwd    c-src/emacs/src/lisp.h  690
+g      cp-src/c.C      /^  int g(){return 2;};$/
+galileo        html-src/software.html  /^GaliLEO$/
+gather pyt-src/server.py       /^    def gather(self):$/
+gc_aset        c-src/emacs/src/lisp.h  /^gc_aset (Lisp_Object array, ptrdiff_t 
idx, Lisp_Ob/
+gcmarkbit      c-src/emacs/src/lisp.h  1974
+gcmarkbit      c-src/emacs/src/lisp.h  1981
+gcmarkbit      c-src/emacs/src/lisp.h  2035
+gcmarkbit      c-src/emacs/src/lisp.h  2113
+gcmarkbit      c-src/emacs/src/lisp.h  2204
+gcmarkbit      c-src/emacs/src/lisp.h  656
+gcpro  c-src/emacs/src/lisp.h  3042
+gcpro  c-src/emacs/src/lisp.h  3132
+gen_help_event c-src/emacs/src/keyboard.c      /^gen_help_event (Lisp_Object 
help, Lisp_Object fram/
+genalgorithm   html-src/algrthms.html  /^Generating the 
Data<\/font><\/i><\/b>$/
+generate_warning       merc-src/accumulator.m  /^:- pred 
generate_warning(module_info::in, prog_var/
+generate_warnings      merc-src/accumulator.m  /^:- pred 
generate_warnings(module_info::in, prog_va/
+generic_object cp-src/clheir.cpp       /^generic_object::generic_object(void)$/
+generic_object cp-src/clheir.hpp       13
+getArchs       objc-src/PackInsp.m     /^-(void)getArchs$/
+getDomainNames php-src/lce_functions.php       /^      function 
getDomainNames()$/
+getFoo lua-src/test.lua        /^function Cube.data.getFoo ()$/
+getPOReader    php-src/lce_functions.php       /^      function 
&getPOReader($domain)$/
+getPath        objc-src/PackInsp.m     /^-(const char *)getPath:(char *)buf 
forType:(const /
+getPos lua-src/test.lua        /^function Circle.getPos ()$/
+getPos lua-src/test.lua        /^function Rectangle.getPos ()$/
+getTextDomains php-src/lce_functions.php       /^  function 
getTextDomains($lines)$/
+get_compressor_from_suffix     c-src/etags.c   /^get_compressor_from_suffix 
(char *file, char **ext/
+get_contiguous_space   c-src/emacs/src/gmalloc.c       /^get_contiguous_space 
(ptrdiff_t size, void *positi/
+get_current_dir_name   c-src/emacs/src/gmalloc.c       33
+get_input_pending      c-src/emacs/src/keyboard.c      /^get_input_pending 
(int flags)$/
+get_language_from_filename     c-src/etags.c   /^get_language_from_filename 
(char *file, int case_s/
+get_language_from_interpreter  c-src/etags.c   /^get_language_from_interpreter 
(char *interpreter)$/
+get_language_from_langname     c-src/etags.c   /^get_language_from_langname 
(const char *name)$/
+get_layer_by_name      lua-src/allegro.lua     /^local function 
get_layer_by_name (sprite, layer, n/
+get_tag        c-src/etags.c   /^get_tag (register char *bp, char **namepp)$/
+get_word       c-src/tab.c     /^static char           *get_word(char **str, 
char delim)$/
+getcjmp        c-src/emacs/src/keyboard.c      147
+getopt perl-src/yagrip.pl      /^sub getopt {$/
+getopt.o       make-src/Makefile       /^getopt.o: emacs\/lib-src\/getopt.c$/
+getopt1.o      make-src/Makefile       /^getopt1.o: emacs\/lib-src\/getopt1.c$/
+getptys        objc-src/Subprocess.m   /^getptys (int *master, int *slave)$/
+gettext        php-src/lce_functions.php       /^      function 
gettext($msgid)$/
+ggg    c-src/h.h       10
+ghi1   c-src/h.h       36
+ghi2   c-src/h.h       39
+giallo cp-src/c.C      40
+glider cp-src/conway.cpp       /^void glider(int x, int y)$/
+gnu    html-src/software.html  /^Free software that I wrote for the GNU 
project or /
+gobble_input   c-src/emacs/src/keyboard.c      /^gobble_input (void)$/
+goto-tag-location-function     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar goto-tag-location-function nil$/
+goto_xy        cp-src/screen.cpp       /^void goto_xy(unsigned char x, 
unsigned char y)$/
+handleList     pyt-src/server.py       /^    def handleList(self, event):$/
+handleNew      pyt-src/server.py       /^    def handleNew(self, event):$/
+handle_async_input     c-src/emacs/src/keyboard.c      /^handle_async_input 
(void)$/
+handle_input_available_signal  c-src/emacs/src/keyboard.c      
/^handle_input_available_signal (int sig)$/
+handle_interrupt       c-src/emacs/src/keyboard.c      /^handle_interrupt 
(bool in_signal_handler)$/
+handle_interrupt_signal        c-src/emacs/src/keyboard.c      
/^handle_interrupt_signal (int sig)$/
+handle_user_signal     c-src/emacs/src/keyboard.c      /^handle_user_signal 
(int sig)$/
+handler        c-src/emacs/src/lisp.h  3023
+handlertype    c-src/emacs/src/lisp.h  3021
+has_arg        c-src/getopt.h  82
+hash   c-src/emacs/src/lisp.h  1843
+hash   c-src/etags.c   /^hash (const char *str, int len)$/
+hash_table_test        c-src/emacs/src/lisp.h  1805
+hashfn c-src/emacs/src/lisp.h  /^  EMACS_UINT (*hashfn) (struct 
hash_table_test *t,/
+hdr    c-src/emacs/src/gmalloc.c       1860
+head_table     c-src/emacs/src/keyboard.c      11027
+header c-src/emacs/src/lisp.h  1371
+header c-src/emacs/src/lisp.h  1388
+header c-src/emacs/src/lisp.h  1581
+header c-src/emacs/src/lisp.h  1610
+header c-src/emacs/src/lisp.h  1672
+header c-src/emacs/src/lisp.h  1826
+header_size    c-src/emacs/src/lisp.h  1471
+heapsize       c-src/emacs/src/gmalloc.c       361
+hello  scm-src/test.scm        /^(define hello "Hello, Emacs!")$/
+hello  scm-src/test.scm        /^(set! hello "Hello, world!")$/
+hello-world    scm-src/test.scm        /^(define (hello-world)$/
+help   c-src/etags.c   193
+helpPanel      objcpp-src/SimpleCalc.M /^- helpPanel:sender$/
+help_char_p    c-src/emacs/src/keyboard.c      /^help_char_p (Lisp_Object c)$/
+help_form_saved_window_configs c-src/emacs/src/keyboard.c      2156
+helpwin        pyt-src/server.py       /^def helpwin(helpdict):$/
+hide_cursor    cp-src/screen.cpp       /^void hide_cursor(void)$/
+hlds   merc-src/accumulator.m  /^:- import_module hlds.$/
+htmltreelist   prol-src/natded.prolog  /^htmltreelist([]).$/
+hybrid_aligned_alloc   c-src/emacs/src/gmalloc.c       /^hybrid_aligned_alloc 
(size_t alignment, size_t siz/
+hybrid_calloc  c-src/emacs/src/gmalloc.c       /^hybrid_calloc (size_t nmemb, 
size_t size)$/
+hybrid_free    c-src/emacs/src/gmalloc.c       /^hybrid_free (void *ptr)$/
+hybrid_get_current_dir_name    c-src/emacs/src/gmalloc.c       
/^hybrid_get_current_dir_name (void)$/
+hybrid_malloc  c-src/emacs/src/gmalloc.c       /^hybrid_malloc (size_t size)$/
+hybrid_realloc c-src/emacs/src/gmalloc.c       /^hybrid_realloc (void *ptr, 
size_t size)$/
+hypothetical_mem       prol-src/natded.prolog  
/^hypothetical_mem(fi(N),Ass,_):-$/
+i      c-src/c.c       2
+i      c-src/emacs/src/lisp.h  4673
+i      c-src/emacs/src/lisp.h  4679
+i      c-src/emacs/src/lisp.h  567
+i      c.c     169
+i      cp-src/c.C      132
+ialpage        tex-src/texinfo.tex     /^     \\dimen@=\\pageheight 
\\advance\\dimen@ by-\\ht\\pa/
+ialpage        tex-src/texinfo.tex     /^  \\availdimen@=\\pageheight 
\\advance\\availdimen@ by/
+ialpage        tex-src/texinfo.tex     /^  \\dimen@=\\pageheight 
\\advance\\dimen@ by-\\ht\\parti/
+ialpage        tex-src/texinfo.tex     /^\\newbox\\partialpage$/
+ialpage=       tex-src/texinfo.tex     /^  
\\output={\\global\\setbox\\partialpage=$/
+identify_goal_type     merc-src/accumulator.m  /^:- pred 
identify_goal_type(pred_id::in, proc_id::i/
+identify_out_and_out_prime     merc-src/accumulator.m  /^:- pred 
identify_out_and_out_prime(module_info::in/
+identify_recursive_calls       merc-src/accumulator.m  /^:- pred 
identify_recursive_calls(pred_id::in, proc/
+idx    c-src/emacs/src/lisp.h  3150
+ignore_case    c-src/etags.c   266
+ignore_mouse_drag_p    c-src/emacs/src/keyboard.c      1256
+ill=\relax     tex-src/texinfo.tex     /^\\let\\refill=\\relax$/
+immediate_quit c-src/emacs/src/keyboard.c      174
+impatto        html-src/softwarelibero.html    /^Impatto pratico del software 
libero$/
+implementation merc-src/accumulator.m  /^:- implementation.$/
+in_word_set    c-src/etags.c   /^in_word_set (register const char *str, 
register un/
+inattribute    c-src/etags.c   2400
+inc    cp-src/Range.h  /^  double inc (void) const { return rng_inc;   }$/
+index  c-src/emacs/src/lisp.h  1856
+infabsdir      c-src/etags.c   206
+infabsname     c-src/etags.c   205
+infiles        make-src/Makefile       /^infiles = $(filter-out 
${NONSRCS},${SRCS}) srclist/
+infname        c-src/etags.c   204
+info   c-src/emacs/src/gmalloc.c       157
+infoPanel      objcpp-src/SimpleCalc.M /^- infoPanel:sender$/
+init   c-src/etags.c   /^init (void)$/
+init   objc-src/Subprocess.m   /^    andStdErr:(BOOL)wantsStdErr$/
+init   objc-src/Subprocess.m   /^- init:(const char *)subprocessString$/
+init   objcpp-src/SimpleCalc.M /^- init$/
+init_control   c.c     239
+init_kboard    c-src/emacs/src/keyboard.c      /^init_kboard (KBOARD *kb, 
Lisp_Object type)$/
+init_keyboard  c-src/emacs/src/keyboard.c      /^init_keyboard (void)$/
+init_registry  cp-src/clheir.cpp       /^void init_registry(void)$/
+init_tool_bar_items    c-src/emacs/src/keyboard.c      /^init_tool_bar_items 
(Lisp_Object reuse)$/
+inita  c.c     /^static void inita () {}$/
+initb  c.c     /^static void initb () {}$/
+initial_kboard c-src/emacs/src/keyboard.c      84
+initialize-new-tags-table      el-src/emacs/lisp/progmodes/etags.el    
/^(defun initialize-new-tags-table ()$/
+initialize_goal_store  merc-src/accumulator.m  /^:- func 
initialize_goal_store(list(hlds_goal), ins/
+initialize_random_junk y-src/cccp.y    /^initialize_random_junk ()$/
+input-pending-p        c-src/emacs/src/keyboard.c      /^DEFUN 
("input-pending-p", Finput_pending_p, Sinput/
+input_available_clear_time     c-src/emacs/src/keyboard.c      324
+input_pending  c-src/emacs/src/keyboard.c      239
+input_polling_used     c-src/emacs/src/keyboard.c      /^input_polling_used 
(void)$/
+input_was_pending      c-src/emacs/src/keyboard.c      287
+insert-abbrev-table-description        c-src/abbrev.c  /^DEFUN 
("insert-abbrev-table-description", Finsert_/
+insertion_type c-src/emacs/src/lisp.h  1989
+insertname     pas-src/common.pas      /^function insertname;(*($/
+instance_method        ruby-src/test.rb        /^        def instance_method$/
+instance_method_equals=        ruby-src/test.rb        /^        def 
instance_method_equals=$/
+instance_method_exclamation!   ruby-src/test.rb        /^        def 
instance_method_exclamation!$/
+instance_method_question?      ruby-src/test.rb        /^        def 
instance_method_question?$/
+instr  y-src/parse.y   81
+instruct       c-src/etags.c   2527
+int    merc-src/accumulator.m  /^:- import_module int.$/
+intNumber      go-src/test1.go 13
+integer        c-src/emacs/src/lisp.h  2127
+integer        y-src/cccp.y    112
+integer_overflow       y-src/cccp.y    /^integer_overflow ()$/
+integertonmstr pas-src/common.pas      /^function integertonmstr; (* 
(TheInteger : integer)/
+intensity1     f-src/entry.for /^     & 
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+intensity1     f-src/entry.strange     /^     & 
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+intensity1     f-src/entry.strange_suffix      /^     & 
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+interface      merc-src/accumulator.m  /^:- interface.$/
+interface_locate       c-src/c.c       /^interface_locate(void)$/
+intern c-src/emacs/src/lisp.h  /^intern (const char *str)$/
+intern_c_string        c-src/emacs/src/lisp.h  /^intern_c_string (const char 
*str)$/
+internal_last_event_frame      c-src/emacs/src/keyboard.c      228
+interned       c-src/emacs/src/lisp.h  672
+interpreters   c-src/etags.c   197
+interrupt_input        c-src/emacs/src/keyboard.c      328
+interrupt_input_blocked        c-src/emacs/src/keyboard.c      76
+interrupt_input_blocked        c-src/emacs/src/lisp.h  3048
+interrupts_deferred    c-src/emacs/src/keyboard.c      331
+intoken        c-src/etags.c   /^#define       intoken(c)      (_itk[CHAR 
(c)]) \/* c can be in/
+intspec        c-src/emacs/src/lisp.h  1688
+intvar c-src/emacs/src/lisp.h  2277
+invalidate_nodes       c-src/etags.c   /^invalidate_nodes (fdesc *badfdp, node 
**npp)$/
+io     merc-src/accumulator.m  /^:- import_module io.$/
+ipc3dCSC19     cp-src/c.C      6
+ipc3dChannelType       cp-src/c.C      1
+ipc3dIslandHierarchy   cp-src/c.C      1
+ipc3dLinkControl       cp-src/c.C      1
+irregular_location     cp-src/clheir.hpp       /^    irregular_location(double 
xi, double yi, doubl/
+irregular_location     cp-src/clheir.hpp       47
+isComment      php-src/lce_functions.php       /^      function 
isComment($class)$/
+isHoliday      cp-src/functions.cpp    /^bool isHoliday ( Date d ){$/
+isLeap cp-src/functions.cpp    /^bool isLeap ( int year ){$/
+is_associative_construction    merc-src/accumulator.m  /^:- pred 
is_associative_construction(module_info::i/
+is_curly_brace_form    c-src/h.h       54
+is_explicit    c-src/h.h       49
+is_func        c-src/etags.c   221
+is_hor_space   y-src/cccp.y    953
+is_idchar      y-src/cccp.y    948
+is_idstart     y-src/cccp.y    950
+is_muldiv_operation    cp-src/c.C      /^is_muldiv_operation(pc)$/
+is_ordset      prol-src/ordsets.prolog /^is_ordset(X) :- var(X), !, fail.$/
+is_recursive_case      merc-src/accumulator.m  /^:- pred 
is_recursive_case(list(hlds_goal)::in, pre/
+iso_lispy_function_keys        c-src/emacs/src/keyboard.c      5151
+isoperator     prol-src/natded.prolog  /^isoperator(Char):-$/
+isoptab        prol-src/natded.prolog  /^isoptab('%').$/
+iswhite        c-src/etags.c   /^#define       iswhite(c)      (_wht[CHAR 
(c)]) \/* c is white /
+item_properties        c-src/emacs/src/keyboard.c      7568
+jmp    c-src/emacs/src/lisp.h  3044
+just_read_file c-src/etags.c   /^just_read_file (FILE *inf)$/
+kbd_buffer     c-src/emacs/src/keyboard.c      291
+kbd_buffer_events_waiting      c-src/emacs/src/keyboard.c      
/^kbd_buffer_events_waiting (void)$/
+kbd_buffer_get_event   c-src/emacs/src/keyboard.c      /^kbd_buffer_get_event 
(KBOARD **kbp,$/
+kbd_buffer_nr_stored   c-src/emacs/src/keyboard.c      /^kbd_buffer_nr_stored 
(void)$/
+kbd_buffer_store_event c-src/emacs/src/keyboard.c      
/^kbd_buffer_store_event (register struct input_even/
+kbd_buffer_store_event_hold    c-src/emacs/src/keyboard.c      
/^kbd_buffer_store_event_hold (register struct input/
+kbd_buffer_store_help_event    c-src/emacs/src/keyboard.c      
/^kbd_buffer_store_help_event (Lisp_Object frame, Li/
+kbd_buffer_unget_event c-src/emacs/src/keyboard.c      
/^kbd_buffer_unget_event (register struct input_even/
+kbd_fetch_ptr  c-src/emacs/src/keyboard.c      297
+kbd_store_ptr  c-src/emacs/src/keyboard.c      302
+kboard c-src/emacs/src/keyboard.c      860
+kboard_stack   c-src/emacs/src/keyboard.c      858
+kboard_stack   c-src/emacs/src/keyboard.c      864
+key_and_value  c-src/emacs/src/lisp.h  1868
+keyremap       c-src/emacs/src/keyboard.c      8742
+keyremap       c-src/emacs/src/keyboard.c      8754
+keyremap_step  c-src/emacs/src/keyboard.c      /^keyremap_step (Lisp_Object 
*keybuf, int bufsize, v/
+keys_of_keyboard       c-src/emacs/src/keyboard.c      /^keys_of_keyboard 
(void)$/
+keyval prol-src/natded.prolog  /^keyval(key(Key,Val)) --> [Key,'='], 
valseq(Val).$/
+keyvalcgi      prol-src/natded.prolog  /^keyvalcgi(Key,Val):-$/
+keyvalscgi     prol-src/natded.prolog  /^keyvalscgi(KeyVals),$/
+keyvalseq      prol-src/natded.prolog  /^keyvalseq([KeyVal|KeyVals]) --> $/
+keyword_parsing        y-src/cccp.y    73
+keywords       y-src/cccp.y    114
+keywords       y-src/cccp.y    306
+kind   c-src/emacs/src/keyboard.c      11024
+kind   c-src/h.h       46
+kset_echo_string       c-src/emacs/src/keyboard.c      /^kset_echo_string 
(struct kboard *kb, Lisp_Object v/
+kset_kbd_queue c-src/emacs/src/keyboard.c      /^kset_kbd_queue (struct kboard 
*kb, Lisp_Object val/
+kset_keyboard_translate_table  c-src/emacs/src/keyboard.c      
/^kset_keyboard_translate_table (struct kboard *kb, /
+kset_last_prefix_arg   c-src/emacs/src/keyboard.c      /^kset_last_prefix_arg 
(struct kboard *kb, Lisp_Obje/
+kset_last_repeatable_command   c-src/emacs/src/keyboard.c      
/^kset_last_repeatable_command (struct kboard *kb, L/
+kset_local_function_key_map    c-src/emacs/src/keyboard.c      
/^kset_local_function_key_map (struct kboard *kb, Li/
+kset_overriding_terminal_local_map     c-src/emacs/src/keyboard.c      
/^kset_overriding_terminal_local_map (struct kboard /
+kset_real_last_command c-src/emacs/src/keyboard.c      
/^kset_real_last_command (struct kboard *kb, Lisp_Ob/
+kset_system_key_syms   c-src/emacs/src/keyboard.c      /^kset_system_key_syms 
(struct kboard *kb, Lisp_Obje/
+lang   c-src/etags.c   208
+lang   c-src/etags.c   251
+lang   c-src/etags.c   259
+lang_names     c-src/etags.c   718
+language       c-src/etags.c   199
+last-tag       el-src/emacs/lisp/progmodes/etags.el    /^(defvar last-tag nil$/
+last_abbrev_point      c-src/abbrev.c  79
+last_auto_save c-src/emacs/src/keyboard.c      214
+last_heapinfo  c-src/emacs/src/gmalloc.c       402
+last_mouse_button      c-src/emacs/src/keyboard.c      5215
+last_mouse_x   c-src/emacs/src/keyboard.c      5216
+last_mouse_y   c-src/emacs/src/keyboard.c      5217
+last_non_minibuf_size  c-src/emacs/src/keyboard.c      207
+last_point_position    c-src/emacs/src/keyboard.c      217
+last_state_size        c-src/emacs/src/gmalloc.c       401
+last_undo_boundary     c-src/emacs/src/keyboard.c      1287
+lasta  c.c     272
+lastargmargin  tex-src/texinfo.tex     /^\\newskip\\deflastargmargin 
\\deflastargmargin=18pt$/
+lastargmargin  tex-src/texinfo.tex     /^\\setbox0=\\hbox{\\hskip 
\\deflastargmargin{\\rm #2}\\hs/
+lastb  c.c     278
+lb     c-src/etags.c   2923
+lbs    c-src/etags.c   2924
+lce    php-src/lce_functions.php       /^      function lce()$/
+lce_bindtextdomain     php-src/lce_functions.php       /^      function 
lce_bindtextdomain($d_name, $d_path/
+lce_bindtextdomain     php-src/lce_functions.php       /^      function 
lce_bindtextdomain($domain, $path)$/
+lce_dgettext   php-src/lce_functions.php       /^      function 
lce_dgettext($domain, $msgid)$/
+lce_geteditcode        php-src/lce_functions.php       /^  function 
lce_geteditcode($type, $name, $text, $r/
+lce_gettext    php-src/lce_functions.php       /^      function 
lce_gettext($msgid)$/
+lce_textdomain php-src/lce_functions.php       /^      function 
lce_textdomain($domain)$/
+leasqr html-src/software.html  /^Leasqr$/
+left   c-src/etags.c   216
+left_shift     y-src/cccp.y    /^left_shift (a, b)$/
+len    c-src/etags.c   237
+length c-src/etags.c   2495
+length y-src/cccp.y    113
+length y-src/cccp.y    44
+let    c-src/emacs/src/lisp.h  2981
+letter tex-src/texinfo.tex     /^  {#1}{Appendix 
\\appendixletter}{\\noexpand\\folio}}/
+letter tex-src/texinfo.tex     /^  {\\appendixletter}$/
+letter tex-src/texinfo.tex     /^  
{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\th/
+letter tex-src/texinfo.tex     /^\\chapmacro {#1}{Appendix \\appendixletter}%$/
+letter tex-src/texinfo.tex     /^\\gdef\\thissection{#1}\\secheading 
{#1}{\\appendixlet/
+letter tex-src/texinfo.tex     /^\\subsecheading 
{#1}{\\appendixletter}{\\the\\secno}{\\/
+letter tex-src/texinfo.tex     
/^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/
+letter tex-src/texinfo.tex     
/^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/
+letter:        tex-src/texinfo.tex     /^\\xdef\\thischapter{Appendix 
\\appendixletter: \\noexp/
+level  c-src/emacs/src/lisp.h  3153
+lex    prol-src/natded.prolog  /^lex(W,SynOut,Sem):-$/
+lexptr y-src/cccp.y    332
+libs   merc-src/accumulator.m  /^:- import_module libs.$/
+licenze        html-src/softwarelibero.html    /^Licenze d'uso di un 
programma$/
+limit  cp-src/Range.h  /^  double limit (void) const { return rng_limit; }$/
+line   c-src/etags.c   2493
+line   perl-src/htlmify-cystic 37
+line   y-src/parse.y   87
+lineCount      php-src/lce_functions.php       /^      function 
lineCount($entry)$/
+linebuffer     c-src/etags.c   239
+linebuffer_init        c-src/etags.c   /^linebuffer_init (linebuffer *lbp)$/
+linebuffer_setlen      c-src/etags.c   /^linebuffer_setlen (linebuffer *lbp, 
int toksize)$/
+lineno c-src/emacs/src/lisp.h  3147
+lineno c-src/etags.c   2506
+linepos        c-src/etags.c   2507
+linepos        c-src/etags.c   2922
+links  html-src/software.html  /^Links to interesting software$/
+lisp_eval_depth        c-src/emacs/src/lisp.h  3045
+lisp_h_CHECK_LIST_CONS c-src/emacs/src/lisp.h  /^#define 
lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (C/
+lisp_h_CHECK_NUMBER    c-src/emacs/src/lisp.h  /^#define 
lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGER/
+lisp_h_CHECK_SYMBOL    c-src/emacs/src/lisp.h  /^#define 
lisp_h_CHECK_SYMBOL(x) CHECK_TYPE (SYMBOLP/
+lisp_h_CHECK_TYPE      c-src/emacs/src/lisp.h  /^#define lisp_h_CHECK_TYPE(ok, 
predicate, x) \\$/
+lisp_h_CONSP   c-src/emacs/src/lisp.h  /^#define lisp_h_CONSP(x) (XTYPE (x) == 
Lisp_Cons)$/
+lisp_h_EQ      c-src/emacs/src/lisp.h  /^#define lisp_h_EQ(x, y) (XLI (x) == 
XLI (y))$/
+lisp_h_FLOATP  c-src/emacs/src/lisp.h  /^#define lisp_h_FLOATP(x) (XTYPE (x) 
== Lisp_Float)/
+lisp_h_INTEGERP        c-src/emacs/src/lisp.h  /^#define lisp_h_INTEGERP(x) 
((XTYPE (x) & (Lisp_Int/
+lisp_h_MARKERP c-src/emacs/src/lisp.h  /^#define lisp_h_MARKERP(x) (MISCP (x) 
&& XMISCTYPE /
+lisp_h_MISCP   c-src/emacs/src/lisp.h  /^#define lisp_h_MISCP(x) (XTYPE (x) == 
Lisp_Misc)$/
+lisp_h_NILP    c-src/emacs/src/lisp.h  /^#define lisp_h_NILP(x) EQ (x, Qnil)$/
+lisp_h_SET_SYMBOL_VAL  c-src/emacs/src/lisp.h  /^#define 
lisp_h_SET_SYMBOL_VAL(sym, v) \\$/
+lisp_h_SYMBOLP c-src/emacs/src/lisp.h  /^#define lisp_h_SYMBOLP(x) (XTYPE (x) 
== Lisp_Symbo/
+lisp_h_SYMBOL_CONSTANT_P       c-src/emacs/src/lisp.h  /^#define 
lisp_h_SYMBOL_CONSTANT_P(sym) (XSYMBOL (sy/
+lisp_h_SYMBOL_VAL      c-src/emacs/src/lisp.h  /^#define 
lisp_h_SYMBOL_VAL(sym) \\$/
+lisp_h_VECTORLIKEP     c-src/emacs/src/lisp.h  /^#define lisp_h_VECTORLIKEP(x) 
(XTYPE (x) == Lisp_V/
+lisp_h_XCAR    c-src/emacs/src/lisp.h  /^#define lisp_h_XCAR(c) XCONS 
(c)->car$/
+lisp_h_XCDR    c-src/emacs/src/lisp.h  /^#define lisp_h_XCDR(c) XCONS 
(c)->u.cdr$/
+lisp_h_XCONS   c-src/emacs/src/lisp.h  /^#define lisp_h_XCONS(a) \\$/
+lisp_h_XFASTINT        c-src/emacs/src/lisp.h  /^# define lisp_h_XFASTINT(a) 
XINT (a)$/
+lisp_h_XHASH   c-src/emacs/src/lisp.h  /^#define lisp_h_XHASH(a) XUINT (a)$/
+lisp_h_XIL     c-src/emacs/src/lisp.h  /^# define lisp_h_XIL(i) ((Lisp_Object) 
{ i })$/
+lisp_h_XIL     c-src/emacs/src/lisp.h  /^# define lisp_h_XIL(i) (i)$/
+lisp_h_XINT    c-src/emacs/src/lisp.h  /^# define lisp_h_XINT(a) (XLI (a) >> 
INTTYPEBITS)$/
+lisp_h_XLI     c-src/emacs/src/lisp.h  /^# define lisp_h_XLI(o) ((o).i)$/
+lisp_h_XLI     c-src/emacs/src/lisp.h  /^# define lisp_h_XLI(o) (o)$/
+lisp_h_XPNTR   c-src/emacs/src/lisp.h  /^#define lisp_h_XPNTR(a) \\$/
+lisp_h_XSYMBOL c-src/emacs/src/lisp.h  /^# define lisp_h_XSYMBOL(a) \\$/
+lisp_h_XTYPE   c-src/emacs/src/lisp.h  /^# define lisp_h_XTYPE(a) ((enum 
Lisp_Type) (XLI (a/
+lisp_h_XUNTAG  c-src/emacs/src/lisp.h  /^# define lisp_h_XUNTAG(a, type) 
((void *) (intptr_/
+lisp_h_check_cons_list c-src/emacs/src/lisp.h  /^# define 
lisp_h_check_cons_list() ((void) 0)$/
+lisp_h_make_number     c-src/emacs/src/lisp.h  /^# define 
lisp_h_make_number(n) \\$/
+lispy_accent_codes     c-src/emacs/src/keyboard.c      4634
+lispy_accent_keys      c-src/emacs/src/keyboard.c      4741
+lispy_drag_n_drop_names        c-src/emacs/src/keyboard.c      5181
+lispy_function_keys    c-src/emacs/src/keyboard.c      4768
+lispy_function_keys    c-src/emacs/src/keyboard.c      5065
+lispy_kana_keys        c-src/emacs/src/keyboard.c      5026
+lispy_modifier_list    c-src/emacs/src/keyboard.c      /^lispy_modifier_list 
(int modifiers)$/
+lispy_multimedia_keys  c-src/emacs/src/keyboard.c      4962
+lispy_wheel_names      c-src/emacs/src/keyboard.c      5174
+list   c-src/emacs/src/gmalloc.c       186
+list   merc-src/accumulator.m  /^:- import_module list.$/
+list-tags      el-src/emacs/lisp/progmodes/etags.el    /^(defun list-tags 
(file &optional _next-match)$/
+list-tags-function     el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
list-tags-function nil$/
+list2i c-src/emacs/src/lisp.h  /^list2i (EMACS_INT x, EMACS_INT y)$/
+list3i c-src/emacs/src/lisp.h  /^list3i (EMACS_INT x, EMACS_INT y, EMACS_INT 
w)$/
+list4i c-src/emacs/src/lisp.h  /^list4i (EMACS_INT x, EMACS_INT y, EMACS_INT 
w, EMA/
+list_to_ord_set        prol-src/ordsets.prolog /^list_to_ord_set(List, Set) 
:-$/
+lno    c-src/etags.c   223
+load   objc-src/PackInsp.m     /^-load$/
+loadContentsOf objc-src/PackInsp.m     /^-loadContentsOf:(const char *)type 
inTable:(HashTa/
+loadImage      objc-src/PackInsp.m     /^-loadImage$/
+loadKeyValuesFrom      objc-src/PackInsp.m     /^-loadKeyValuesFrom:(const 
char *)type inTable:(Has/
+loadPORManager php-src/lce_functions.php       /^  function &loadPORManager()$/
+local_if_set   c-src/emacs/src/lisp.h  2338
+location       cp-src/clheir.hpp       /^    location() { }$/
+location       cp-src/clheir.hpp       33
+lookup y-src/cccp.y    /^lookup (name, len, hash)$/
+lookup_call    merc-src/accumulator.m  /^:- pred 
lookup_call(accu_goal_store::in, accu_goal/
+lowcase        c-src/etags.c   /^#define lowcase(c)    tolower (CHAR (c))$/
+lucid_event_type_list_p        c-src/emacs/src/keyboard.c      
/^lucid_event_type_list_p (Lisp_Object object)$/
+mabort c-src/emacs/src/gmalloc.c       /^mabort (enum mcheck_status status)$/
+mach_host_self c-src/machsyscalls.h    /^SYSCALL (mach_host_self, -29,$/
+mach_msg_trap  c-src/machsyscalls.h    /^SYSCALL (mach_msg_trap, -25,$/
+mach_reply_port        c-src/machsyscalls.h    /^SYSCALL (mach_reply_port, 
-26,$/
+mach_task_self c-src/machsyscalls.h    /^SYSCALL (mach_task_self, -28,$/
+mach_thread_self       c-src/machsyscalls.h    /^SYSCALL (mach_thread_self, 
-27,$/
+magic  c-src/emacs/src/gmalloc.c       1863
+maintaining.info       make-src/Makefile       /^maintaining.info: 
maintaining.texi$/
+make-abbrev-table      c-src/abbrev.c  /^DEFUN ("make-abbrev-table", 
Fmake_abbrev_table, Sm/
+make_C_tag     c-src/etags.c   /^make_C_tag (bool isfun)$/
+make_coor      prol-src/natded.prolog  
/^make_coor(s(_),Alpha,Sem1,Sem2,Alpha@Sem1@Sem2).$/
+make_ctrl_char c-src/emacs/src/keyboard.c      /^make_ctrl_char (int c)$/
+make_fixnum_or_float   c-src/emacs/src/lisp.h  /^#define 
make_fixnum_or_float(val) \\$/
+make_formatted_string  c-src/emacs/src/lisp.h  /^extern Lisp_Object 
make_formatted_string (char *, /
+make_lisp_ptr  c-src/emacs/src/lisp.h  /^make_lisp_ptr (void *ptr, enum 
Lisp_Type type)$/
+make_lisp_symbol       c-src/emacs/src/lisp.h  /^make_lisp_symbol (struct 
Lisp_Symbol *sym)$/
+make_lispy_event       c-src/emacs/src/keyboard.c      /^make_lispy_event 
(struct input_event *event)$/
+make_lispy_focus_in    c-src/emacs/src/keyboard.c      /^make_lispy_focus_in 
(Lisp_Object frame)$/
+make_lispy_focus_out   c-src/emacs/src/keyboard.c      /^make_lispy_focus_out 
(Lisp_Object frame)$/
+make_lispy_movement    c-src/emacs/src/keyboard.c      /^make_lispy_movement 
(struct frame *frame, Lisp_Obj/
+make_lispy_position    c-src/emacs/src/keyboard.c      /^make_lispy_position 
(struct frame *f, Lisp_Object /
+make_lispy_switch_frame        c-src/emacs/src/keyboard.c      
/^make_lispy_switch_frame (Lisp_Object frame)$/
+make_number    c-src/emacs/src/lisp.h  /^#  define make_number(n) 
lisp_h_make_number (n)$/
+make_pointer_integer   c-src/emacs/src/lisp.h  /^make_pointer_integer (void 
*p)$/
+make_scroll_bar_position       c-src/emacs/src/keyboard.c      
/^make_scroll_bar_position (struct input_event *ev, /
+make_tag       c-src/etags.c   /^make_tag (const char *name,   \/* tag name, 
or NULL /
+make_uninit_sub_char_table     c-src/emacs/src/lisp.h  
/^make_uninit_sub_char_table (int depth, int min_cha/
+make_uninit_vector     c-src/emacs/src/lisp.h  /^make_uninit_vector (ptrdiff_t 
size)$/
+malloc c-src/emacs/src/gmalloc.c       /^extern void *malloc (size_t size) 
ATTRIBUTE_MALLOC/
+malloc c-src/emacs/src/gmalloc.c       /^malloc (size_t size)$/
+malloc c-src/emacs/src/gmalloc.c       1715
+malloc c-src/emacs/src/gmalloc.c       64
+malloc c-src/emacs/src/gmalloc.c       68
+malloc_atfork_handler_child    c-src/emacs/src/gmalloc.c       
/^malloc_atfork_handler_child (void)$/
+malloc_atfork_handler_parent   c-src/emacs/src/gmalloc.c       
/^malloc_atfork_handler_parent (void)$/
+malloc_atfork_handler_prepare  c-src/emacs/src/gmalloc.c       
/^malloc_atfork_handler_prepare (void)$/
+malloc_enable_thread   c-src/emacs/src/gmalloc.c       /^malloc_enable_thread 
(void)$/
+malloc_info    c-src/emacs/src/gmalloc.c       167
+malloc_initialize_1    c-src/emacs/src/gmalloc.c       /^malloc_initialize_1 
(void)$/
+mallochook     c-src/emacs/src/gmalloc.c       /^mallochook (size_t size)$/
+man manpage    make-src/Makefile       /^man manpage: etags.1.man$/
+mao    c-src/h.h       101
+map    c-src/emacs/src/keyboard.c      8748
+map    merc-src/accumulator.m  /^:- import_module map.$/
+map_word       prol-src/natded.prolog  /^map_word([[_]|Ws],Exp):-$/
+mapping        html-src/algrthms.html  /^Mapping the Channel Symbols$/
+mapsyn prol-src/natded.prolog  /^mapsyn(A\/B,AM\/BM):-$/
+mark_kboards   c-src/emacs/src/keyboard.c      /^mark_kboards (void)$/
+max    c-src/emacs/src/lisp.h  /^#define max(a, b) ((a) > (b) ? (a) : (b))$/
+max    c-src/emacs/src/lisp.h  58
+max    c.c     /^__attribute__ ((always_inline)) max (int a, int b)/
+max    c.c     /^max (int a, int b)$/
+max    cp-src/conway.cpp       /^#define max(x,y)  ((x > y) ? x : y)$/
+max_args       c-src/emacs/src/lisp.h  1686
+max_num_directions     cp-src/clheir.hpp       31
+max_num_generic_objects        cp-src/clheir.cpp       9
+maxargs        c-src/emacs/src/lisp.h  2831
+maybe  merc-src/accumulator.m  /^:- import_module maybe.$/
+maybe_gc       c-src/emacs/src/lisp.h  /^maybe_gc (void)$/
+mcCSC  cp-src/c.C      6
+mcheck c-src/emacs/src/gmalloc.c       /^mcheck (void (*func) (enum 
mcheck_status))$/
+mcheck_status  c-src/emacs/src/gmalloc.c       283
+mcheck_used    c-src/emacs/src/gmalloc.c       2012
+mdbcomp        merc-src/accumulator.m  /^:- import_module mdbcomp.$/
+me22b  lua-src/test.lua        /^   local function test.me22b (one)$/
+me_22a lua-src/test.lua        /^   function test.me_22a(one, two)$/
+memalign       c-src/emacs/src/gmalloc.c       /^memalign (size_t alignment, 
size_t size)$/
+member prol-src/natded.prolog  /^member(X,[X|_]).$/
+member_lessthan_goalid merc-src/accumulator.m  /^:- pred 
member_lessthan_goalid(accu_goal_store::in/
+memclear       c-src/emacs/src/lisp.h  /^memclear (void *p, ptrdiff_t nbytes)$/
+menu_bar_item  c-src/emacs/src/keyboard.c      /^menu_bar_item (Lisp_Object 
key, Lisp_Object item, /
+menu_bar_items c-src/emacs/src/keyboard.c      /^menu_bar_items (Lisp_Object 
old)$/
+menu_bar_items_index   c-src/emacs/src/keyboard.c      7369
+menu_bar_items_vector  c-src/emacs/src/keyboard.c      7368
+menu_bar_one_keymap_changed_items      c-src/emacs/src/keyboard.c      7363
+menu_item_eval_property        c-src/emacs/src/keyboard.c      
/^menu_item_eval_property (Lisp_Object sexpr)$/
+menu_item_eval_property_1      c-src/emacs/src/keyboard.c      
/^menu_item_eval_property_1 (Lisp_Object arg)$/
+menu_separator_name_p  c-src/emacs/src/keyboard.c      /^menu_separator_name_p 
(const char *label)$/
+metasource     c-src/etags.c   198
+min    c-src/emacs/src/gmalloc.c       /^#define min(a, b) ((a) < (b) ? (a) : 
(b))$/
+min    c-src/emacs/src/lisp.h  /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
+min    c-src/emacs/src/lisp.h  57
+min    cp-src/conway.cpp       /^#define min(x,y)  ((x > y) ? y : x)$/
+min_args       c-src/emacs/src/lisp.h  1686
+min_char       c-src/emacs/src/lisp.h  1621
+minus  cp-src/functions.cpp    /^void Date::minus ( int days , int month , int 
year/
+miti   html-src/softwarelibero.html    /^Sfatiamo alcuni miti$/
+modifier_names c-src/emacs/src/keyboard.c      6319
+modifier_symbols       c-src/emacs/src/keyboard.c      6327
+modify_event_symbol    c-src/emacs/src/keyboard.c      /^modify_event_symbol 
(ptrdiff_t symbol_num, int mod/
+module_class_method    ruby-src/test.rb        /^    def 
ModuleExample.module_class_method$/
+module_instance_method ruby-src/test.rb        /^    def 
module_instance_method$/
+more=  ruby-src/test1.ru       /^                :more$/
+more_aligned_int       c.c     165
+morecore_nolock        c-src/emacs/src/gmalloc.c       /^morecore_nolock 
(size_t size)$/
+morecore_recursing     c-src/emacs/src/gmalloc.c       604
+mouse_syms     c-src/emacs/src/keyboard.c      4627
+move   cp-src/clheir.cpp       /^void agent::move(int direction)$/
+mprobe c-src/emacs/src/gmalloc.c       /^mprobe (void *ptr)$/
+msgid  php-src/lce_functions.php       /^      function msgid($line, $class)$/
+msgstr php-src/lce_functions.php       /^      function msgstr($line, $class)$/
+mstats c-src/emacs/src/gmalloc.c       308
+mt     prol-src/natded.prolog  /^mt:-$/
+mtg    html-src/software.html  /^MTG$/
+multi_line     c-src/etags.c   267
+multibyte      c-src/emacs/src/regex.h 403
+my_printf      c.c     /^my_printf (void *my_object, const char *my_format,/
+my_struct      c-src/h.h       91
+my_struct      c.c     226
+my_typedef     c-src/h.h       93
+my_typedef     c.c     228
+mypi   forth-src/test-forth.fth        /^synonym mypi fconst$/
+n      c-src/exit.c    28
+n      c-src/exit.strange_suffix       28
+name   c-src/emacs/src/keyboard.c      7241
+name   c-src/emacs/src/lisp.h  1808
+name   c-src/emacs/src/lisp.h  3144
+name   c-src/emacs/src/lisp.h  682
+name   c-src/etags.c   192
+name   c-src/etags.c   218
+name   c-src/etags.c   2271
+name   c-src/etags.c   261
+name   c-src/getopt.h  76
+name   c-src/getopt.h  78
+name   perl-src/htlmify-cystic 357
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Function}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Macro}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Special Form}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{User Option}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Variable}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname 
{#2}{#1}\\deftpargs{#3}\\endgrou/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname 
{#2}{#1}\\defunargs{#3}\\endgrou/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname 
{#2}{#1}\\defvarargs{#3}\\endgro/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#2}{Instance Variable 
of #1}%/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#2}{Method on #1}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#2}{\\defcvtype{} of 
#1}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#2}{\\defoptype{} on 
#1}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#1} 
#2}{Function}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#1} 
#2}{Variable}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#2} #3}{#1}$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#2} #3}{#1}%$/
+name   y-src/cccp.y    113
+name   y-src/cccp.y    43
+named  c-src/etags.c   2505
+namestringequal        pas-src/common.pas      /^function 
namestringequal;(*(var Name1,Name2 : Name/
+nargs  c-src/emacs/src/lisp.h  2987
+need_adjustment        c-src/emacs/src/lisp.h  1986
+neighbors      cp-src/clheir.hpp       59
+nelem  cp-src/Range.h  /^  int nelem (void) const { return rng_nelem; }$/
+nestlev        c-src/etags.c   2525
+new    objc-src/PackInsp.m     /^+new$/
+new    perl-src/htlmify-cystic 163
+new_tag        perl-src/htlmify-cystic 18
+newlb  c-src/etags.c   2930
+newlinepos     c-src/etags.c   2932
+newtextstring  pas-src/common.pas      /^function newtextstring; (*: 
TextString;*)$/
+next   c-src/emacs/src/gmalloc.c       164
+next   c-src/emacs/src/gmalloc.c       188
+next   c-src/emacs/src/gmalloc.c       198
+next   c-src/emacs/src/keyboard.c      7246
+next   c-src/emacs/src/keyboard.c      861
+next   c-src/emacs/src/lisp.h  1848
+next   c-src/emacs/src/lisp.h  2009
+next   c-src/emacs/src/lisp.h  2037
+next   c-src/emacs/src/lisp.h  2192
+next   c-src/emacs/src/lisp.h  3028
+next   c-src/emacs/src/lisp.h  3134
+next   c-src/emacs/src/lisp.h  700
+next   c-src/etags.c   203
+next   c.c     174
+next   y-src/cccp.y    42
+next-file      el-src/emacs/lisp/progmodes/etags.el    /^(defun next-file 
(&optional initialize novisit)$/
+next-file-list el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
next-file-list nil$/
+next_alive     cp-src/conway.hpp       7
+next_almost_prime      c-src/emacs/src/lisp.h  /^extern EMACS_INT 
next_almost_prime (EMACS_INT) ATT/
+next_free      c-src/emacs/src/lisp.h  1851
+next_weak      c-src/emacs/src/lisp.h  1875
+nextfree       c-src/emacs/src/lisp.h  3029
+nfree  c-src/emacs/src/gmalloc.c       150
+nl     c-src/etags.c   2521
+no     tex-src/texinfo.tex     /^\\global\\advance \\appendixno by 1 
\\message{Appendix/
+no     tex-src/texinfo.tex     /^\\ifnum\\secno=0 
Appendix\\xreftie'char\\the\\appendixn/
+no     tex-src/texinfo.tex     /^\\newcount \\appendixno  \\appendixno = `\\@$/
+no.\the\secno  tex-src/texinfo.tex     /^\\else \\ifnum \\subsecno=0 
Section\\xreftie'char\\the\\/
+no.\the\secno.\the\subsecno    tex-src/texinfo.tex     
/^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the\secno.\the\subsecno.\the\subsubsecno   tex-src/texinfo.tex     
/^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no_argument    c-src/getopt.h  89
+no_lang_help   c-src/etags.c   707
+no_sub c-src/emacs/src/regex.h 387
+nocase_tail    c-src/etags.c   /^nocase_tail (const char *cp)$/
+node   c-src/etags.c   225
+node_st        c-src/etags.c   214
+noderef        tex-src/texinfo.tex     /^\\appendixnoderef %$/
+nofonts        tex-src/texinfo.tex     /^{\\indexnofonts$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+none_help      c-src/etags.c   703
+normalize      prol-src/natded.prolog  /^normalize(M,MNorm):-$/
+normalize_fresh        prol-src/natded.prolog  /^normalize_fresh(M,N):-$/
+normalize_tree prol-src/natded.prolog  
/^normalize_tree(tree(Rule,Syn:Sem,Trees),$/
+normalize_trees        prol-src/natded.prolog  /^normalize_trees([],[]).$/
+nosave pyt-src/server.py       /^    def nosave(self):$/
+not_bol        c-src/emacs/src/regex.h 391
+not_eol        c-src/emacs/src/regex.h 394
+not_single_kboard_state        c-src/emacs/src/keyboard.c      
/^not_single_kboard_state (KBOARD *kboard)$/
+notag2 c-src/dostorture.c      26
+notag2 c-src/torture.c 26
+notag4 c-src/dostorture.c      45
+notag4 c-src/torture.c 45
+notinname      c-src/etags.c   /^#define notinname(c)  (_nin[CHAR (c)]) \/* c 
is not /
+npending       c-src/emacs/src/keyboard.c      7244
+ntool_bar_items        c-src/emacs/src/keyboard.c      7974
+numOfChannels  cp-src/c.C      1
+num_columns    cp-src/conway.cpp       16
+num_input_events       c-src/emacs/src/keyboard.c      210
+num_regs       c-src/emacs/src/regex.h 430
+num_rows       cp-src/conway.cpp       15
+numberKeys     objcpp-src/SimpleCalc.M /^- numberKeys:sender$/
+number_len     c-src/etags.c   /^static int number_len (long) 
ATTRIBUTE_CONST;$/
+numbervars     prol-src/natded.prolog  /^numbervars(X):-$/
+nvars  c-src/emacs/src/lisp.h  3140
+objdef c-src/etags.c   2484
+object c-src/emacs/src/lisp.h  2128
+object_registry        cp-src/clheir.cpp       10
+objtag c-src/etags.c   2453
+objvar c-src/emacs/src/lisp.h  2297
+obstack_chunk_alloc    y-src/parse.y   47
+obstack_chunk_free     y-src/parse.y   48
+ocatseen       c-src/etags.c   2477
+octave_MDiagArray2_h   cp-src/MDiagArray2.h    29
+octave_Range_h cp-src/Range.h  24
+oediff make-src/Makefile       /^oediff: OTAGS ETAGS ${infiles}$/
+offset c-src/emacs/src/lisp.h  2305
+offset c-src/emacs/src/lisp.h  2365
+offset c-src/etags.c   2494
+oignore        c-src/etags.c   2483
+oimplementation        c-src/etags.c   2474
+oinbody        c-src/etags.c   2478
+ok     objc-src/PackInsp.m     /^-ok:sender$/
+ok_to_echo_at_next_pause       c-src/emacs/src/keyboard.c      159
+old_value      c-src/emacs/src/lisp.h  2980
+omethodcolon   c-src/etags.c   2481
+omethodparm    c-src/etags.c   2482
+omethodsign    c-src/etags.c   2479
+omethodtag     c-src/etags.c   2480
+onone  c-src/etags.c   2472
+oparenseen     c-src/etags.c   2476
+open   objc-src/PackInsp.m     /^-open:sender$/
+open-dribble-file      c-src/emacs/src/keyboard.c      /^DEFUN 
("open-dribble-file", Fopen_dribble_file, So/
+openInWorkspace        objc-src/PackInsp.m     /^static void 
openInWorkspace(const char *filename)$/
+operationKeys  objcpp-src/SimpleCalc.M /^- operationKeys:sender$/
+operator       y-src/cccp.y    438
+operator ++    cp-src/functions.cpp    /^Date & Date::operator ++ ( void ){$/
+operator +=    cp-src/functions.cpp    /^Date & Date::operator += ( int days 
){$/
+operator -     cp-src/c.C      /^void operator -(int, int) {}$/
+operator -     cp-src/functions.cpp    /^int Date::operator - ( Date d ){$/
+operator --    cp-src/functions.cpp    /^Date & Date::operator -- ( void ){$/
+operator -=    cp-src/functions.cpp    /^Date & Date::operator -= ( int days 
){$/
+operator <     cp-src/functions.cpp    /^int Date::operator < ( Date d ) {$/
+operator <<    cp-src/functions.cpp    /^ostream& operator <<  ( ostream &c, 
Date d ) {$/
+operator =     cp-src/MDiagArray2.h    /^  MDiagArray2<T>& operator = (const 
MDiagArray2<T>/
+operator =     cp-src/functions.cpp    /^Date & Date::operator = ( Date d ){$/
+operator ==    cp-src/functions.cpp    /^int Date::operator == ( Date d ) {$/
+operator >     cp-src/functions.cpp    /^int Date::operator > ( Date d ) {$/
+operator >>    cp-src/functions.cpp    /^istream& operator >> ( istream &i, 
Date & dd ){$/
+operator MArray2<T>    cp-src/MDiagArray2.h    /^  operator MArray2<T> () 
const$/
+operator int   cp-src/c.C      /^void operator int(int, int) {}$/
+operator int   cp-src/fail.C   /^                         operator int() const 
{return x;}$/
+operator+      cp-src/c.C      /^  A operator+(A& a) {};$/
+operator+      cp-src/c.C      /^const A& A::operator+(const A&) { }$/
+operator+      cp-src/c.C      /^void operator+(int, int) {}$/
+opparsebody\Edefop\defopx\defopheader\defoptype        tex-src/texinfo.tex     
/^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+oprotocol      c-src/etags.c   2473
+option c-src/getopt.h  73
+optional_argument      c-src/getopt.h  91
+opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype   tex-src/texinfo.tex     
/^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+ord_add_element        prol-src/ordsets.prolog /^ord_add_element([], Element, 
[Element]).$/
+ord_del_element        prol-src/ordsets.prolog /^ord_del_element([], _, []).$/
+ord_disjoint   prol-src/ordsets.prolog /^ord_disjoint(Set1, Set2) :-$/
+ord_intersect  prol-src/ordsets.prolog /^ord_intersect([Head1|Tail1], 
[Head2|Tail2]) :-$/
+ord_intersection       prol-src/ordsets.prolog /^ord_intersection(Sets, 
Intersection) :- $/
+ord_intersection       prol-src/ordsets.prolog /^ord_intersection([], Set2, 
[], Set2).$/
+ord_intersection       prol-src/ordsets.prolog /^ord_intersection([], _, []).$/
+ord_intersection2      prol-src/ordsets.prolog /^ord_intersection2(1, 
[Set|Sets], Set0, Sets0) :- !/
+ord_intersection3      prol-src/ordsets.prolog /^ord_intersection3(<, _, Set1, 
Head2, Tail2, Inters/
+ord_intersection4      prol-src/ordsets.prolog /^ord_intersection4(<, _, Set1, 
Head2, Tail2, Inters/
+ord_member     prol-src/ordsets.prolog /^ord_member(X, [E|Es]) :-$/
+ord_seteq      prol-src/ordsets.prolog /^ord_seteq(Set1, Set2) :-$/
+ord_setproduct prol-src/ordsets.prolog /^ord_setproduct([], _, []).$/
+ord_subset     prol-src/ordsets.prolog /^ord_subset([], _).$/
+ord_subtract   prol-src/ordsets.prolog /^ord_subtract(Set1, Set2, Union) :-$/
+ord_symdiff    prol-src/ordsets.prolog /^ord_symdiff([], Set2, Set2).$/
+ord_union      prol-src/ordsets.prolog /^ord_union(Set1, Set2, Union) :-$/
+ord_union      prol-src/ordsets.prolog /^ord_union([], Union) :- !, Union = 
[].$/
+ord_union4     prol-src/ordsets.prolog /^ord_union4(<, Head, Set1, Head2, 
Tail2, [Head|Unio/
+ord_union_all  prol-src/ordsets.prolog /^ord_union_all(1, [Set|Sets], Set, 
Sets) :- !.$/
+oss    html-src/softwarelibero.html    /^Il movimento open source$/
+otagseen       c-src/etags.c   2475
+outputTime     cp-src/c.C      9
+output_file    perl-src/htlmify-cystic 35
+output_files   perl-src/htlmify-cystic 32
+outputtable    html-src/algrthms.html  /^Output$/
+outsyn prol-src/natded.prolog  /^outsyn(['Any'],_).$/
+p      c-src/emacs/src/lisp.h  4673
+p      c-src/emacs/src/lisp.h  4679
+p.x    forth-src/test-forth.fth        /^  1 CELLS +FIELD p.x    \\ A single 
cell filed name/
+p.y    forth-src/test-forth.fth        /^  1 CELLS +FIELD p.y    \\ A single 
cell field name/
+p/f    ada-src/etags-test-for.ada      /^   function p pragma Import (C,$/
+p/f    ada-src/etags-test-for.ada      /^function p ("p");$/
+pD     c-src/emacs/src/lisp.h  165
+pD     c-src/emacs/src/lisp.h  167
+pD     c-src/emacs/src/lisp.h  169
+pD     c-src/emacs/src/lisp.h  171
+pI     c-src/emacs/src/lisp.h  106
+pI     c-src/emacs/src/lisp.h  94
+pI     c-src/emacs/src/lisp.h  99
+pMd    c-src/emacs/src/lisp.h  150
+pMd    c-src/emacs/src/lisp.h  155
+pMu    c-src/emacs/src/lisp.h  151
+pMu    c-src/emacs/src/lisp.h  156
+p_next c-src/etags.c   258
+pagesize       c-src/emacs/src/gmalloc.c       1703
+pair   merc-src/accumulator.m  /^:- import_module pair.$/
+parent c-src/emacs/src/keyboard.c      8745
+parent c-src/emacs/src/lisp.h  1590
+parse  prol-src/natded.prolog  /^parse(Ws,Cat):-$/
+parseFromVars  php-src/lce_functions.php       /^      function 
parseFromVars($prefix)$/
+parse_c_expression     y-src/cccp.y    /^parse_c_expression (string)$/
+parse_cgi      prol-src/natded.prolog  /^parse_cgi(TokenList,KeyVals):-$/
+parse_error    y-src/parse.y   82
+parse_escape   y-src/cccp.y    /^parse_escape (string_ptr)$/
+parse_hash     y-src/parse.y   64
+parse_menu_item        c-src/emacs/src/keyboard.c      /^parse_menu_item 
(Lisp_Object item, int inmenubar)$/
+parse_modifiers        c-src/emacs/src/keyboard.c      /^parse_modifiers 
(Lisp_Object symbol)$/
+parse_modifiers_uncached       c-src/emacs/src/keyboard.c      
/^parse_modifiers_uncached (Lisp_Object symbol, ptrd/
+parse_number   y-src/cccp.y    /^parse_number (olen)$/
+parse_return   y-src/parse.y   74
+parse_return_error     y-src/cccp.y    70
+parse_solitary_modifier        c-src/emacs/src/keyboard.c      
/^parse_solitary_modifier (Lisp_Object symbol)$/
+parse_tool_bar_item    c-src/emacs/src/keyboard.c      /^parse_tool_bar_item 
(Lisp_Object key, Lisp_Object /
+parse_tree     merc-src/accumulator.m  /^:- import_module parse_tree.$/
+pat    c-src/etags.c   262
+pattern        c-src/etags.c   260
+pdlcount       c-src/emacs/src/lisp.h  3046
+pending-delete-mode    el-src/TAGTEST.EL       /^(defalias 
'pending-delete-mode 'delete-selection-m/
+pending_funcalls       c-src/emacs/src/keyboard.c      4377
+pending_signals        c-src/emacs/src/keyboard.c      80
+pfatal c-src/etags.c   /^pfatal (const char *s1)$/
+pfdset c-src/h.h       57
+pfnote c-src/etags.c   /^pfnote (char *name, bool is_func, char *linestart,/
+pinned c-src/emacs/src/lisp.h  679
+plain_C_entries        c-src/etags.c   /^plain_C_entries (FILE *inf)$/
+plain_C_suffixes       c-src/etags.c   643
+plainc c-src/etags.c   2934
+plist  c-src/emacs/src/lisp.h  2040
+plist  c-src/emacs/src/lisp.h  697
+plus   cp-src/functions.cpp    /^void Date::plus ( int days , int month , int 
year /
+plus   go-src/test1.go 5
+plusvalseq     prol-src/natded.prolog  /^plusvalseq([]) --> [].$/
+point  forth-src/test-forth.fth        /^BEGIN-STRUCTURE point \\ create the 
named structure/
+pointer        c-src/emacs/src/lisp.h  2125
+poll_for_input c-src/emacs/src/keyboard.c      /^poll_for_input (struct atimer 
*timer)$/
+poll_for_input_1       c-src/emacs/src/keyboard.c      /^poll_for_input_1 
(void)$/
+poll_suppress_count    c-src/emacs/src/keyboard.c      1908
+poll_suppress_count    c-src/emacs/src/lisp.h  3047
+poll_timer     c-src/emacs/src/keyboard.c      1915
+pop-tag-mark   el-src/emacs/lisp/progmodes/etags.el    /^(defalias 
'pop-tag-mark 'xref-pop-marker-stack)$/
+pop_kboard     c-src/emacs/src/keyboard.c      /^pop_kboard (void)$/
+popclass_above c-src/etags.c   /^popclass_above (int bracelev)$/
+position_to_Time       c-src/emacs/src/keyboard.c      /^position_to_Time 
(ptrdiff_t pos)$/
+posix_memalign c-src/emacs/src/gmalloc.c       /^posix_memalign (void 
**memptr, size_t alignment, s/
+posn-at-point  c-src/emacs/src/keyboard.c      /^DEFUN ("posn-at-point", 
Fposn_at_point, Sposn_at_p/
+posn-at-x-y    c-src/emacs/src/keyboard.c      /^DEFUN ("posn-at-x-y", 
Fposn_at_x_y, Sposn_at_x_y, /
+possible_sum_sign      y-src/cccp.y    /^#define possible_sum_sign(a, b, sum) 
((((a) ^ (b))/
+post   pyt-src/server.py       /^    def post(self):$/
+pot_etags_version      c-src/etags.c   81
+pp1    c-src/dostorture.c      /^int pp1($/
+pp1    c-src/torture.c /^int pp1($/
+pp2    c-src/dostorture.c      /^pp2$/
+pp2    c-src/torture.c /^pp2$/
+pp3    c-src/dostorture.c      /^pp3(int bar)$/
+pp3    c-src/torture.c /^pp3(int bar)$/
+pp_bas_cat     prol-src/natded.prolog  /^pp_bas_cat(Cat):-$/
+pp_cat prol-src/natded.prolog  /^pp_cat(Syn:Sem):-$/
+pp_exp prol-src/natded.prolog  /^pp_exp('NIL'):-$/
+pp_exps        prol-src/natded.prolog  /^pp_exps([]).$/
+pp_html_fitch_tree     prol-src/natded.prolog  
/^pp_html_fitch_tree(tree(der,Root,[ders(Words)]),M,/
+pp_html_table_fitch_tree       prol-src/natded.prolog  
/^pp_html_table_fitch_tree(T):-$/
+pp_html_table_tree     prol-src/natded.prolog  /^pp_html_table_tree(T):-$/
+pp_html_tree   prol-src/natded.prolog  /^pp_html_tree(ass(Syn,V,'$VAR'(N))):-$/
+pp_html_trees  prol-src/natded.prolog  /^pp_html_trees([T|Ts],N,M):-$/
+pp_lam prol-src/natded.prolog  /^pp_lam(Var^Alpha):-$/
+pp_lam_bracket prol-src/natded.prolog  /^pp_lam_bracket(A^B):-$/
+pp_lam_paren   prol-src/natded.prolog  /^pp_lam_paren(Var^Alpha):-$/
+pp_paren       prol-src/natded.prolog  /^pp_paren(C):-$/
+pp_rule        prol-src/natded.prolog  /^pp_rule(fe):-write('\/E').$/
+pp_syn prol-src/natded.prolog  /^pp_syn(A\/B):-$/
+pp_syn_back    prol-src/natded.prolog  /^pp_syn_back(A\/B):-$/
+pp_syn_paren   prol-src/natded.prolog  /^pp_syn_paren(A\/B):-$/
+pp_tree        prol-src/natded.prolog  /^pp_tree(T):-$/
+pp_trees       prol-src/natded.prolog  /^pp_trees([T|Ts],Column):-$/
+pp_word        prol-src/natded.prolog  /^pp_word(W):-$/
+pp_word_list   prol-src/natded.prolog  /^pp_word_list([]).$/
+pp_word_list_rest      prol-src/natded.prolog  /^pp_word_list_rest([]).$/
+predicate      c-src/emacs/src/lisp.h  2307
+prev   c-src/emacs/src/gmalloc.c       165
+prev   c-src/emacs/src/gmalloc.c       189
+prev   c-src/emacs/src/lisp.h  2191
+prev   c.c     175
+printClassification    php-src/lce_functions.php       /^      function 
printClassification()$/
+print_help     c-src/etags.c   /^print_help (argument *argbuffer)$/
+print_language_names   c-src/etags.c   /^print_language_names (void)$/
+print_version  c-src/etags.c   /^print_version (void)$/
+printmax_t     c-src/emacs/src/lisp.h  148
+printmax_t     c-src/emacs/src/lisp.h  153
+proc   c-src/h.h       87
+process_file   c-src/etags.c   /^process_file (FILE *fh, char *fn, language 
*lang)$/
+process_file_name      c-src/etags.c   /^process_file_name (char *file, 
language *lang)$/
+process_pending_signals        c-src/emacs/src/keyboard.c      
/^process_pending_signals (void)$/
+process_special_events c-src/emacs/src/keyboard.c      
/^process_special_events (void)$/
+process_tool_bar_item  c-src/emacs/src/keyboard.c      /^process_tool_bar_item 
(Lisp_Object key, Lisp_Objec/
+prof   make-src/Makefile       /^prof: ETAGS$/
+prolog_atom    c-src/etags.c   /^prolog_atom (char *s, size_t pos)$/
+prolog_pr      c-src/etags.c   /^prolog_pr (char *s, char *last)$/
+prolog_skip_comment    c-src/etags.c   /^prolog_skip_comment (linebuffer *plb, 
FILE *inf)$/
+prop   c-src/etags.c   209
+protect_malloc_state   c-src/emacs/src/gmalloc.c       /^protect_malloc_state 
(int protect_p)$/
+pthread_mutexattr_setprio_ceiling/f    ada-src/2ataspri.adb    /^   function 
pthread_mutexattr_setprio_ceiling$/
+pthread_mutexattr_setprotocol/f        ada-src/2ataspri.adb    /^   function 
pthread_mutexattr_setprotocol$/
+purpose        c-src/emacs/src/lisp.h  1594
+push_kboard    c-src/emacs/src/keyboard.c      /^push_kboard (struct kboard 
*k)$/
+pushclass_above        c-src/etags.c   /^pushclass_above (int bracelev, char 
*str, int len)/
+put_entries    c-src/etags.c   /^put_entries (register node *np)$/
+pvec_type      c-src/emacs/src/lisp.h  780
+quantizing     html-src/algrthms.html  /^Quantizing the Received$/
+questo ../c/c.web      34
+quiettest      make-src/Makefile       /^quiettest:$/
+quit_char      c-src/emacs/src/keyboard.c      192
+quit_throw_to_read_char        c-src/emacs/src/keyboard.c      
/^quit_throw_to_read_char (bool from_signal)$/
+qux    ruby-src/test1.ru       /^    alias_method :qux, :tee, 
attr_accessor(:bogus)/
+qux1   ruby-src/test1.ru       /^                :qux1)$/
+qux=   ruby-src/test1.ru       /^      def qux=(tee)$/
+r0     c-src/sysdep.h  54
+r1     c-src/sysdep.h  55
+r_alloc        c-src/emacs/src/lisp.h  /^extern void *r_alloc (void **, 
size_t) ATTRIBUTE_A/
+range_exp      y-src/parse.y   269
+range_exp_list y-src/parse.y   273
+raw_keybuf     c-src/emacs/src/keyboard.c      116
+raw_keybuf_count       c-src/emacs/src/keyboard.c      117
+rbtp   c.c     240
+re_iswctype    c-src/emacs/src/regex.h 602
+re_nsub        c-src/emacs/src/regex.h 364
+re_pattern_buffer      c-src/emacs/src/regex.h 335
+re_pattern_buffer      c-src/h.h       119
+re_registers   c-src/emacs/src/regex.h 428
+re_wchar_t     c-src/emacs/src/regex.h 600
+re_wchar_t     c-src/emacs/src/regex.h 623
+re_wctype      c-src/emacs/src/regex.h 601
+re_wctype_t    c-src/emacs/src/regex.h 599
+re_wctype_t    c-src/emacs/src/regex.h 618
+re_wctype_to_bit       c-src/emacs/src/regex.h /^# define re_wctype_to_bit(cc) 
0$/
+read   cp-src/conway.hpp       /^    char read() { return alive; }$/
+read   php-src/lce_functions.php       /^      function read()$/
+read-key-sequence      c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence", Fread_key_sequence, Sr/
+read-key-sequence-vector       c-src/emacs/src/keyboard.c      /^DEFUN 
("read-key-sequence-vector", Fread_key_seque/
+read1  ruby-src/test1.ru       /^    attr_reader :read1 , :read2; attr_writer 
:writ/
+read2  ruby-src/test1.ru       /^    attr_reader :read1 , :read2; attr_writer 
:writ/
+read_char      c-src/emacs/src/keyboard.c      /^read_char (int commandflag, 
Lisp_Object map,$/
+read_char_help_form_unwind     c-src/emacs/src/keyboard.c      
/^read_char_help_form_unwind (void)$/
+read_char_minibuf_menu_prompt  c-src/emacs/src/keyboard.c      
/^read_char_minibuf_menu_prompt (int commandflag,$/
+read_char_x_menu_prompt        c-src/emacs/src/keyboard.c      
/^read_char_x_menu_prompt (Lisp_Object map,$/
+read_decoded_event_from_main_queue     c-src/emacs/src/keyboard.c      
/^read_decoded_event_from_main_queue (struct timespe/
+read_event_from_main_queue     c-src/emacs/src/keyboard.c      
/^read_event_from_main_queue (struct timespec *end_t/
+read_key_sequence      c-src/emacs/src/keyboard.c      /^read_key_sequence 
(Lisp_Object *keybuf, int bufsiz/
+read_key_sequence_cmd  c-src/emacs/src/keyboard.c      232
+read_key_sequence_remapped     c-src/emacs/src/keyboard.c      233
+read_key_sequence_vs   c-src/emacs/src/keyboard.c      /^read_key_sequence_vs 
(Lisp_Object prompt, Lisp_Obj/
+read_menu_command      c-src/emacs/src/keyboard.c      /^read_menu_command 
(void)$/
+read_toc       perl-src/htlmify-cystic /^sub read_toc ()$/
+readable_events        c-src/emacs/src/keyboard.c      /^readable_events (int 
flags)$/
+readline       c-src/etags.c   /^readline (linebuffer *lbp, FILE *stream)$/
+readline_internal      c-src/etags.c   /^readline_internal (linebuffer *lbp, 
register FILE /
+realloc        c-src/emacs/src/gmalloc.c       /^realloc (void *ptr, size_t 
size)$/
+realloc        c-src/emacs/src/gmalloc.c       1716
+realloc        c-src/emacs/src/gmalloc.c       65
+realloc        c-src/emacs/src/gmalloc.c       69
+reallochook    c-src/emacs/src/gmalloc.c       /^reallochook (void *ptr, 
size_t size)$/
+recent-keys    c-src/emacs/src/keyboard.c      /^DEFUN ("recent-keys", 
Frecent_keys, Srecent_keys, /
+recent_keys    c-src/emacs/src/keyboard.c      100
+recent_keys_index      c-src/emacs/src/keyboard.c      94
+record_asynch_buffer_change    c-src/emacs/src/keyboard.c      
/^record_asynch_buffer_change (void)$/
+record_auto_save       c-src/emacs/src/keyboard.c      /^record_auto_save 
(void)$/
+record_char    c-src/emacs/src/keyboard.c      /^record_char (Lisp_Object c)$/
+record_menu_key        c-src/emacs/src/keyboard.c      /^record_menu_key 
(Lisp_Object c)$/
+record_single_kboard_state     c-src/emacs/src/keyboard.c      
/^record_single_kboard_state ()$/
+record_xmalloc c-src/emacs/src/lisp.h  /^extern void *record_xmalloc (size_t) 
ATTRIBUTE_ALL/
+recover_top_level_message      c-src/emacs/src/keyboard.c      138
+recursion-depth        c-src/emacs/src/keyboard.c      /^DEFUN 
("recursion-depth", Frecursion_depth, Srecur/
+recursive-edit c-src/emacs/src/keyboard.c      /^DEFUN ("recursive-edit", 
Frecursive_edit, Srecursi/
+recursive_edit_1       c-src/emacs/src/keyboard.c      /^recursive_edit_1 
(void)$/
+recursive_edit_unwind  c-src/emacs/src/keyboard.c      /^recursive_edit_unwind 
(Lisp_Object buffer)$/
+redirect       c-src/emacs/src/lisp.h  663
+reduce prol-src/natded.prolog  /^reduce((X^M)@N,L):-     % beta reduction$/
+reduce_subterm prol-src/natded.prolog  /^reduce_subterm(M,M2):-$/
+refreshPort    pyt-src/server.py       /^    def refreshPort(self):$/
+reg_errcode_t  c-src/emacs/src/regex.h 323
+reg_errcode_t  c.c     279
+reg_syntax_t   c-src/emacs/src/regex.h 43
+regex  c-src/etags.c   219
+regex.o        make-src/Makefile       /^regex.o: emacs\/src\/regex.c$/
+regex_t        c-src/emacs/src/regex.h 416
+regex_tag_multiline    c-src/etags.c   /^regex_tag_multiline (void)$/
+regexfile      make-src/Makefile       /^regexfile: Makefile$/
+regexp c-src/etags.c   256
+regexp c-src/etags.c   268
+registerAction objcpp-src/SimpleCalc.M /^- registerAction:(SEL)action$/
+register_heapinfo      c-src/emacs/src/gmalloc.c       /^register_heapinfo 
(void)$/
+regmatch_t     c-src/emacs/src/regex.h 451
+regoff_t       c-src/emacs/src/regex.h 423
+regs   c-src/etags.c   263
+regs   cp-src/screen.cpp       16
+regs_allocated c-src/emacs/src/regex.h 379
+regset c-src/h.h       31
+regular_top_level_message      c-src/emacs/src/keyboard.c      143
+rehash_size    c-src/emacs/src/lisp.h  1835
+rehash_threshold       c-src/emacs/src/lisp.h  1839
+relative_filename      c-src/etags.c   /^relative_filename (char *file, char 
*dir)$/
+release distrib        make-src/Makefile       /^release distrib: web$/
+removeexp      prol-src/natded.prolog  /^removeexp(E,E,'NIL'):-!.$/
+reorder_modifiers      c-src/emacs/src/keyboard.c      /^reorder_modifiers 
(Lisp_Object symbol)$/
+request        c.c     /^request request (a, b)$/
+requeued_events_pending_p      c-src/emacs/src/keyboard.c      
/^requeued_events_pending_p (void)$/
+require        merc-src/accumulator.m  /^:- import_module require.$/
+required_argument      c-src/getopt.h  90
+reset-this-command-lengths     c-src/emacs/src/keyboard.c      /^DEFUN 
("reset-this-command-lengths", Freset_this_c/
+restore_getcjmp        c-src/emacs/src/keyboard.c      /^restore_getcjmp 
(sys_jmp_buf temp)$/
+restore_kboard_configuration   c-src/emacs/src/keyboard.c      
/^restore_kboard_configuration (int was_locked)$/
+return_to_command_loop c-src/emacs/src/keyboard.c      135
+reverse        prol-src/natded.prolog  /^reverse([],Ws,Ws).$/
+revert objc-src/PackInsp.m     /^-revert:sender$/
+right  c-src/etags.c   216
+right_shift    y-src/cccp.y    /^right_shift (a, b)$/
+ring1  c.c     241
+ring2  c.c     242
+rm_eo  c-src/emacs/src/regex.h 450
+rm_so  c-src/emacs/src/regex.h 449
+rng_base       cp-src/Range.h  79
+rng_inc        cp-src/Range.h  81
+rng_limit      cp-src/Range.h  80
+rng_nelem      cp-src/Range.h  83
+rosso  cp-src/c.C      40
+rsyncfromfly   make-src/Makefile       /^rsyncfromfly:$/
+rsynctofly     make-src/Makefile       /^rsynctofly:$/
+rtint  c-src/h.h       60
+rtint  c-src/h.h       68
+rtstr  c-src/h.h       61
+rtstr  c-src/h.h       69
+rtunion_def    c-src/h.h       58
+rtunion_def    c-src/h.h       64
+rtx    c-src/h.h       62
+rtxnp  c-src/h.h       71
+rtxp   c-src/h.h       70
+s      c-src/emacs/src/lisp.h  4672
+s      c-src/emacs/src/lisp.h  4678
+s1     cp-src/c.C      32
+s2     cp-src/c.C      35
+safe_run_hook_funcall  c-src/emacs/src/keyboard.c      /^safe_run_hook_funcall 
(ptrdiff_t nargs, Lisp_Objec/
+safe_run_hooks c-src/emacs/src/keyboard.c      /^safe_run_hooks (Lisp_Object 
hook)$/
+safe_run_hooks_1       c-src/emacs/src/keyboard.c      /^safe_run_hooks_1 
(ptrdiff_t nargs, Lisp_Object *ar/
+safe_run_hooks_error   c-src/emacs/src/keyboard.c      /^safe_run_hooks_error 
(Lisp_Object error, ptrdiff_t/
+save   pyt-src/server.py       /^    def save(self):$/
+save_getcjmp   c-src/emacs/src/keyboard.c      /^save_getcjmp (sys_jmp_buf 
temp)$/
+save_type      c-src/emacs/src/lisp.h  /^save_type (struct Lisp_Save_Value *v, 
int n)$/
+savenstr       c-src/etags.c   /^savenstr (const char *cp, int len)$/
+savestr        c-src/etags.c   /^savestr (const char *cp)$/
+say    go-src/test.go  /^func say(msg string) {$/
+scan_separators        c-src/etags.c   /^scan_separators (char *name)$/
+scolonseen     c-src/etags.c   2447
+scratch        c-src/sysdep.h  56
+scroll_bar_parts       c-src/emacs/src/keyboard.c      5189
+sec=\relax     tex-src/texinfo.tex     /^\\let\\appendixsec=\\relax$/
+section        perl-src/htlmify-cystic 25
+section=\relax tex-src/texinfo.tex     /^\\let\\appendixsection=\\relax$/
+section_href   perl-src/htlmify-cystic /^sub section_href ($)$/
+section_name   perl-src/htlmify-cystic /^sub section_name ($)$/
+section_name   perl-src/htlmify-cystic 12
+section_toc    perl-src/htlmify-cystic 15
+section_url    perl-src/htlmify-cystic /^sub section_url ()$/
+section_url_base       perl-src/htlmify-cystic /^sub section_url_base ()$/
+section_url_name       perl-src/htlmify-cystic /^sub section_url_name ()$/
+select prol-src/natded.prolog  /^select(X,[X|Xs],Xs).$/
+select-tags-table      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
select-tags-table ()$/
+select-tags-table-mode el-src/emacs/lisp/progmodes/etags.el    
/^(define-derived-mode select-tags-table-mode specia/
+select-tags-table-mode-map     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar select-tags-table-mode-map ; Doc string?$/
+select-tags-table-quit el-src/emacs/lisp/progmodes/etags.el    /^(defun 
select-tags-table-quit ()$/
+select-tags-table-select       el-src/emacs/lisp/progmodes/etags.el    
/^(defun select-tags-table-select (button)$/
+select_last    prol-src/natded.prolog  /^select_last([X],X,[]).$/
+send   objc-src/Subprocess.m   /^- send:(const char *)string 
withNewline:(BOOL)want/
+send   objc-src/Subprocess.m   /^- send:(const char *)string$/
+separator_names        c-src/emacs/src/keyboard.c      7372
+serializeToVars        php-src/lce_functions.php       /^      function 
serializeToVars($prefix)$/
+set    cp-src/conway.hpp       /^    void set(void) { alive = 1; }$/
+set    merc-src/accumulator.m  /^:- import_module set.$/
+set-input-interrupt-mode       c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-interrupt-mode", Fset_input_inte/
+set-input-meta-mode    c-src/emacs/src/keyboard.c      /^DEFUN 
("set-input-meta-mode", Fset_input_meta_mode/
+set-input-mode c-src/emacs/src/keyboard.c      /^DEFUN ("set-input-mode", 
Fset_input_mode, Sset_inp/
+set-output-flow-control        c-src/emacs/src/keyboard.c      /^DEFUN 
("set-output-flow-control", Fset_output_flow/
+set-quit-char  c-src/emacs/src/keyboard.c      /^DEFUN ("set-quit-char", 
Fset_quit_char, Sset_quit_/
+setDate        cp-src/functions.cpp    /^void Date::setDate ( int d , int m , 
int y ){$/
+setDelegate    objc-src/Subprocess.m   /^- setDelegate:anObject$/
+setRevertButtonTitle   objc-src/PackInsp.m     /^-setRevertButtonTitle$/
+set_base       cp-src/Range.h  /^  void set_base (double b) { rng_base = b;  
}$/
+set_char_table_contents        c-src/emacs/src/lisp.h  
/^set_char_table_contents (Lisp_Object table, ptrdif/
+set_char_table_defalt  c-src/emacs/src/lisp.h  /^set_char_table_defalt 
(Lisp_Object table, Lisp_Obj/
+set_char_table_extras  c-src/emacs/src/lisp.h  /^set_char_table_extras 
(Lisp_Object table, ptrdiff_/
+set_char_table_purpose c-src/emacs/src/lisp.h  /^set_char_table_purpose 
(Lisp_Object table, Lisp_Ob/
+set_hash_key_slot      c-src/emacs/src/lisp.h  /^set_hash_key_slot (struct 
Lisp_Hash_Table *h, ptrd/
+set_hash_value_slot    c-src/emacs/src/lisp.h  /^set_hash_value_slot (struct 
Lisp_Hash_Table *h, pt/
+set_inc        cp-src/Range.h  /^  void set_inc (double i) { rng_inc = i;   }$/
+set_limit      cp-src/Range.h  /^  void set_limit (double l) { rng_limit = l; 
}$/
+set_overlay_plist      c-src/emacs/src/lisp.h  /^set_overlay_plist 
(Lisp_Object overlay, Lisp_Objec/
+set_poll_suppress_count        c-src/emacs/src/keyboard.c      
/^set_poll_suppress_count (int count)$/
+set_prop       c-src/emacs/src/keyboard.c      /^set_prop (ptrdiff_t idx, 
Lisp_Object val)$/
+set_save_integer       c-src/emacs/src/lisp.h  /^set_save_integer (Lisp_Object 
obj, int n, ptrdiff_/
+set_save_pointer       c-src/emacs/src/lisp.h  /^set_save_pointer (Lisp_Object 
obj, int n, void *va/
+set_string_intervals   c-src/emacs/src/lisp.h  /^set_string_intervals 
(Lisp_Object s, INTERVAL i)$/
+set_sub_char_table_contents    c-src/emacs/src/lisp.h  
/^set_sub_char_table_contents (Lisp_Object table, pt/
+set_symbol_function    c-src/emacs/src/lisp.h  /^set_symbol_function 
(Lisp_Object sym, Lisp_Object /
+set_symbol_next        c-src/emacs/src/lisp.h  /^set_symbol_next (Lisp_Object 
sym, struct Lisp_Symb/
+set_symbol_plist       c-src/emacs/src/lisp.h  /^set_symbol_plist (Lisp_Object 
sym, Lisp_Object pli/
+set_upto       merc-src/accumulator.m  /^:- func set_upto(accu_case, int) = 
set(accu_goal_i/
+set_waiting_for_input  c-src/emacs/src/keyboard.c      /^set_waiting_for_input 
(struct timespec *time_to_cl/
+setref tex-src/texinfo.tex     
/^\\expandafter\\expandafter\\expandafter\\appendixsetre/
+setup  cp-src/c.C      5
+shift  cp-src/functions.cpp    /^void Date::shift ( void ){\/\/Shift this date 
to pre/
+shouldLoad     objc-src/PackInsp.m     /^-(BOOL)shouldLoad$/
+should_attempt_accu_transform  merc-src/accumulator.m  /^:- pred 
should_attempt_accu_transform(module_info:/
+should_attempt_accu_transform_2        merc-src/accumulator.m  /^:- pred 
should_attempt_accu_transform_2(module_inf/
+should_see_this_array_type     cp-src/c.C      156
+should_see_this_function_pointer       cp-src/c.C      153
+should_see_this_one_enclosed_in_extern_C       cp-src/c.C      149
+show   erl-src/gs_dialog.erl   /^show(Module, Title, Message, Args) ->$/
+showError      objc-src/Subprocess.m   /^showError (const char *errorString, 
id theDelegate/
+showInfo       objc-src/PackInsp.m     /^-showInfo:sender$/
+show_help_echo c-src/emacs/src/keyboard.c      /^show_help_echo (Lisp_Object 
help, Lisp_Object wind/
+sig    c-src/emacs/src/keyboard.c      7238
+signal_handler c-src/h.h       82
+signal_handler1        c-src/h.h       83
+signal_handler_t       c-src/h.h       94
+simulation     html-src/software.html  /^Software that I wrote for supporting 
my research a/
+single_kboard  c-src/emacs/src/keyboard.c      89
+single_kboard_state    c-src/emacs/src/keyboard.c      /^single_kboard_state 
()$/
+site   cp-src/conway.hpp       /^    site(int xi, int yi): x(xi), y(yi), 
alive(0) {/
+site   cp-src/conway.hpp       5
+size   c-src/emacs/src/gmalloc.c       156
+size   c-src/emacs/src/gmalloc.c       163
+size   c-src/emacs/src/gmalloc.c       1862
+size   c-src/emacs/src/lisp.h  1364
+size   c-src/emacs/src/lisp.h  1390
+size   c-src/etags.c   236
+size   c-src/etags.c   2522
+skeyseen       c-src/etags.c   2445
+skip_name      c-src/etags.c   /^skip_name (char *cp)$/
+skip_non_spaces        c-src/etags.c   /^skip_non_spaces (char *cp)$/
+skip_spaces    c-src/etags.c   /^skip_spaces (char *cp)$/
+snarf-tag-function     el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
snarf-tag-function nil$/
+snone  c-src/etags.c   2443
+solutions      merc-src/accumulator.m  /^:- import_module solutions.$/
+some_mouse_moved       c-src/emacs/src/keyboard.c      /^some_mouse_moved 
(void)$/
+space  tex-src/texinfo.tex     /^    {#2\\labelspace 
#1}\\dotfill\\doshortpageno{#3}}%/
+space  tex-src/texinfo.tex     /^  
\\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/
+spacer c-src/emacs/src/lisp.h  1975
+spacer c-src/emacs/src/lisp.h  1982
+spacer c-src/emacs/src/lisp.h  2036
+spacer c-src/emacs/src/lisp.h  2205
+specbind_tag   c-src/emacs/src/lisp.h  2943
+specbinding    c-src/emacs/src/lisp.h  2955
+specialsymbol  prol-src/natded.prolog  /^specialsymbol(C1,C2,S):-$/
+splitexp       prol-src/natded.prolog  /^splitexp(E,E,('NIL','NIL')):-!.$/
+srclist        make-src/Makefile       /^srclist: Makefile$/
+ss3    c.c     255
+sss1   c.c     252
+sss2   c.c     253
+sstab  prol-src/natded.prolog  /^sstab(2,'C',',').$/
+st_C_attribute c-src/etags.c   2209
+st_C_class     c-src/etags.c   2212
+st_C_define    c-src/etags.c   2213
+st_C_enum      c-src/etags.c   2213
+st_C_extern    c-src/etags.c   2213
+st_C_gnumacro  c-src/etags.c   2208
+st_C_ignore    c-src/etags.c   2209
+st_C_javastruct        c-src/etags.c   2210
+st_C_objend    c-src/etags.c   2207
+st_C_objimpl   c-src/etags.c   2207
+st_C_objprot   c-src/etags.c   2207
+st_C_operator  c-src/etags.c   2211
+st_C_struct    c-src/etags.c   2213
+st_C_template  c-src/etags.c   2212
+st_C_typedef   c-src/etags.c   2213
+st_none        c-src/etags.c   2206
+stack  c.c     155
+stagseen       c-src/etags.c   2446
+standalone     make-src/Makefile       /^standalone:$/
+start  c-src/emacs/src/keyboard.c      8753
+start  c-src/emacs/src/lisp.h  2038
+start  c-src/emacs/src/regex.h 431
+start  php-src/lce_functions.php       /^      function start($line, $class)$/
+start  y-src/cccp.y    143
+start_polling  c-src/emacs/src/keyboard.c      /^start_polling (void)$/
+start_up       prol-src/natded.prolog  /^start_up:-$/
+state_protected_p      c-src/emacs/src/gmalloc.c       400
+statetable     html-src/algrthms.html  /^Next$/
+staticetags    make-src/Makefile       /^staticetags:$/
+step   cp-src/clheir.hpp       /^    virtual void step(void) { }$/
+step   cp-src/conway.hpp       /^    void step(void) { alive = next_alive; }$/
+step_everybody cp-src/clheir.cpp       /^void step_everybody(void)$/
+stop_polling   c-src/emacs/src/keyboard.c      /^stop_polling (void)$/
+store_info     merc-src/accumulator.m  /^:- type store_info$/
+store_user_signal_events       c-src/emacs/src/keyboard.c      
/^store_user_signal_events (void)$/
+stored_goal_plain_call merc-src/accumulator.m  /^:- inst 
stored_goal_plain_call for goal_store.stor/
+str    go-src/test1.go 9
+strcaseeq      c-src/etags.c   /^#define strcaseeq(s,t)        (assert 
((s)!=NULL && (t)!=/
+streq  c-src/etags.c   /^#define streq(s,t)    (assert ((s)!=NULL || (t)!=NULL/
+string merc-src/accumulator.m  /^:- import_module string.$/
+string_intervals       c-src/emacs/src/lisp.h  /^string_intervals (Lisp_Object 
s)$/
+stripLine      php-src/lce_functions.php       /^      function 
stripLine($line, $class)$/
+stripname      pas-src/common.pas      /^function stripname; (* ($/
+strncaseeq     c-src/etags.c   /^#define strncaseeq(s,t,n) (assert ((s)!=NULL 
&& (t/
+strneq c-src/etags.c   /^#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=N/
+structdef      c-src/etags.c   2448
+stuff_buffered_input   c-src/emacs/src/keyboard.c      /^stuff_buffered_input 
(Lisp_Object stuffstring)$/
+subprocess     objc-src/PackInsp.m     /^-subprocess:(Subprocess *)sender 
output:(char *)bu/
+subprocessDone objc-src/PackInsp.m     /^-subprocessDone:(Subprocess *)sender$/
+subsec=\relax  tex-src/texinfo.tex     /^\\let\\appendixsubsec=\\relax$/
+subsection     perl-src/htlmify-cystic 26
+subsection=\relax      tex-src/texinfo.tex     
/^\\let\\appendixsubsection=\\relax$/
+subsection_marker      perl-src/htlmify-cystic 161
+subst  prol-src/natded.prolog  /^subst(var(Y),var(X),M,N):-$/
+substitute     c-src/etags.c   /^substitute (char *in, char *out, struct 
re_registe/
+subsubsec=\relax       tex-src/texinfo.tex     
/^\\let\\appendixsubsubsec=\\relax$/
+subsubsection  perl-src/htlmify-cystic 27
+subsubsection=\relax   tex-src/texinfo.tex     
/^\\let\\appendixsubsubsection=\\relax$/
+subtle ruby-src/test1.ru       /^                 :tee ; attr_reader :subtle$/
+subtree        prol-src/natded.prolog  /^subtree(T,T).$/
+suffix c-src/etags.c   186
+suffixes       c-src/etags.c   195
+suggest_asking_for_help        c-src/etags.c   /^suggest_asking_for_help 
(void)$/
+suspend-emacs  c-src/emacs/src/keyboard.c      /^DEFUN ("suspend-emacs", 
Fsuspend_emacs, Ssuspend_e/
+sval   y-src/cccp.y    116
+swallow_events c-src/emacs/src/keyboard.c      /^swallow_events (bool 
do_display)$/
+switch_line_buffers    c-src/etags.c   /^#define switch_line_buffers() (curndx 
= 1 - curndx/
+sxhash_combine c-src/emacs/src/lisp.h  /^sxhash_combine (EMACS_UINT x, 
EMACS_UINT y)$/
+sym_type       c-src/etags.c   2204
+symbol c-src/emacs/src/lisp.h  2980
+symbol_interned        c-src/emacs/src/lisp.h  639
+symbol_name    c-src/emacs/src/lisp.h  1687
+symbol_redirect        c-src/emacs/src/lisp.h  646
+syms_of_abbrev c-src/abbrev.c  /^syms_of_abbrev ()$/
+syms_of_keyboard       c-src/emacs/src/keyboard.c      /^syms_of_keyboard 
(void)$/
+synchronize_system_messages_locale     c-src/emacs/src/lisp.h  /^INLINE void 
synchronize_system_messages_locale (vo/
+synchronize_system_time_locale c-src/emacs/src/lisp.h  /^INLINE void 
synchronize_system_time_locale (void) /
+syntax c-src/emacs/src/regex.h 350
+sys_jmp_buf    c-src/emacs/src/lisp.h  2906
+sys_jmp_buf    c-src/emacs/src/lisp.h  2910
+sys_jmp_buf    c-src/emacs/src/lisp.h  2916
+sys_longjmp    c-src/emacs/src/lisp.h  /^# define sys_longjmp(j, v) _longjmp 
(j, v)$/
+sys_longjmp    c-src/emacs/src/lisp.h  /^# define sys_longjmp(j, v) longjmp 
(j, v)$/
+sys_longjmp    c-src/emacs/src/lisp.h  /^# define sys_longjmp(j, v) siglongjmp 
(j, v)$/
+sys_setjmp     c-src/emacs/src/lisp.h  /^# define sys_setjmp(j) _setjmp (j)$/
+sys_setjmp     c-src/emacs/src/lisp.h  /^# define sys_setjmp(j) setjmp (j)$/
+sys_setjmp     c-src/emacs/src/lisp.h  /^# define sys_setjmp(j) sigsetjmp (j, 
0)$/
+syscall_error  c-src/sysdep.h  34
+t      cp-src/c.C      52
+t1     cp-src/c.C      34
+t2     cp-src/c.C      38
+tab_count_words        c-src/tab.c     /^int                   
tab_count_words(char **tab)$/
+tab_delete_first       c-src/tab.c     /^int                   
tab_delete_first(char **tab)$/
+tab_fill       c-src/tab.c     /^char                  **tab_fill(char *str, 
char delim)$/
+tab_free       c-src/tab.c     /^void                  tab_free(char **tab)$/
+tag-any-match-p        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-any-match-p (_tag)$/
+tag-exact-file-name-match-p    el-src/emacs/lisp/progmodes/etags.el    
/^(defun tag-exact-file-name-match-p (tag)$/
+tag-exact-match-p      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-exact-match-p (tag)$/
+tag-file-name-match-p  el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-file-name-match-p (tag)$/
+tag-find-file-of-tag   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-find-file-of-tag (file) ; Doc string?$/
+tag-find-file-of-tag-noselect  el-src/emacs/lisp/progmodes/etags.el    
/^(defun tag-find-file-of-tag-noselect (file)$/
+tag-implicit-name-match-p      el-src/emacs/lisp/progmodes/etags.el    
/^(defun tag-implicit-name-match-p (tag)$/
+tag-lines-already-matched      el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tag-lines-already-matched nil$/
+tag-partial-file-name-match-p  el-src/emacs/lisp/progmodes/etags.el    
/^(defun tag-partial-file-name-match-p (_tag)$/
+tag-re-match-p el-src/emacs/lisp/progmodes/etags.el    /^(defun tag-re-match-p 
(re)$/
+tag-symbol-match-p     el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-symbol-match-p (tag)$/
+tag-word-match-p       el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tag-word-match-p (tag)$/
+tag1   c-src/dostorture.c      /^(*tag1 (sig, handler)) ()$/
+tag1   c-src/h.h       110
+tag1   c-src/torture.c /^(*tag1 (sig, handler)) ()$/
+tag2   c-src/dostorture.c      /^(*tag2 (sig, handler)) ()$/
+tag2   c-src/torture.c /^(*tag2 (sig, handler)) ()$/
+tag3   c-src/dostorture.c      /^(*tag3 (int sig, void (*handler) (int))) 
(int)$/
+tag3   c-src/torture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/
+tag4   c-src/dostorture.c      /^(*tag4 (int sig, void (*handler) (int))) 
(int)$/
+tag4   c-src/torture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/
+tag5   c-src/dostorture.c      /^tag5 (handler, arg)$/
+tag5   c-src/torture.c /^tag5 (handler, arg)$/
+tag6   c-src/dostorture.c      /^tag6 (void (*handler) (void *), void *arg)$/
+tag6   c-src/torture.c /^tag6 (void (*handler) (void *), void *arg)$/
+tag_or_ch      c-src/emacs/src/lisp.h  3026
+taggedfname    c-src/etags.c   207
+tags   make-src/Makefile       /^tags: TAGS$/
+tags-add-tables        el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-add-tables 'ask-user$/
+tags-apropos   el-src/emacs/lisp/progmodes/etags.el    /^(defun tags-apropos 
(regexp)$/
+tags-apropos-additional-actions        el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom tags-apropos-additional-actions nil$/
+tags-apropos-function  el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-apropos-function nil$/
+tags-apropos-verbose   el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-apropos-verbose nil$/
+tags-case-fold-search  el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-case-fold-search 'default$/
+tags-complete-tags-table-file  el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-complete-tags-table-file (string predi/
+tags-completion-at-point-function      el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-completion-at-point-function ()$/
+tags-completion-table  el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-completion-table ()$/
+tags-completion-table  el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-completion-table nil$/
+tags-completion-table-function el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-completion-table-function nil$/
+tags-compression-info-list     el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom tags-compression-info-list$/
+tags-expand-table-name el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-expand-table-name (file)$/
+tags-file-name el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-file-name nil$/
+tags-included-tables   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-included-tables ()$/
+tags-included-tables   el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-included-tables nil$/
+tags-included-tables-function  el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-included-tables-function nil$/
+tags-lazy-completion-table     el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-lazy-completion-table ()$/
+tags-location-ring     el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-location-ring (make-ring xref-marker-/
+tags-loop-continue     el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-loop-continue (&optional first-time)$/
+tags-loop-eval el-src/emacs/lisp/progmodes/etags.el    /^(defun tags-loop-eval 
(form)$/
+tags-loop-operate      el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-loop-operate nil$/
+tags-loop-revert-buffers       el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom tags-loop-revert-buffers nil$/
+tags-loop-scan el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-loop-scan$/
+tags-next-table        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-next-table ()$/
+tags-query-replace     el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-query-replace (from to &optional delim/
+tags-recognize-empty-tags-table        el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-recognize-empty-tags-table ()$/
+tags-reset-tags-tables el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-reset-tags-tables ()$/
+tags-revert-without-query      el-src/emacs/lisp/progmodes/etags.el    
/^(defcustom tags-revert-without-query nil$/
+tags-search    el-src/emacs/lisp/progmodes/etags.el    /^(defun tags-search 
(regexp &optional file-list-for/
+tags-select-tags-table el-src/emacs/lisp/progmodes/etags.el    
/^(define-button-type 'tags-select-tags-table$/
+tags-table-check-computed-list el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-table-check-computed-list ()$/
+tags-table-computed-list       el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-computed-list nil$/
+tags-table-computed-list-for   el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-computed-list-for nil$/
+tags-table-extend-computed-list        el-src/emacs/lisp/progmodes/etags.el    
/^(defun tags-table-extend-computed-list ()$/
+tags-table-files       el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-table-files ()$/
+tags-table-files       el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-table-files nil$/
+tags-table-files-function      el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-files-function nil$/
+tags-table-format-functions    el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-format-functions '(etags-recogn/
+tags-table-including   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-table-including (this-file core-only)$/
+tags-table-list        el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-table-list nil$/
+tags-table-list-member el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-table-list-member (file list)$/
+tags-table-list-pointer        el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-list-pointer nil$/
+tags-table-list-started-at     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar tags-table-list-started-at nil$/
+tags-table-mode        el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-table-mode ()$/
+tags-table-set-list    el-src/emacs/lisp/progmodes/etags.el    /^(defvar 
tags-table-set-list nil$/
+tags-tag-face  el-src/emacs/lisp/progmodes/etags.el    /^(defcustom 
tags-tag-face 'default$/
+tags-verify-table      el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-verify-table (file)$/
+tags-with-face el-src/emacs/lisp/progmodes/etags.el    /^(defmacro 
tags-with-face (face &rest body)$/
+target_multibyte       c-src/emacs/src/regex.h 407
+tcpdump        html-src/software.html  /^tcpdump$/
+teats  cp-src/c.C      127
+tee    ruby-src/test1.ru       /^    attr_accessor :tee$/
+tee=   ruby-src/test1.ru       /^    attr_accessor :tee$/
+temporarily_switch_to_single_kboard    c-src/emacs/src/keyboard.c      
/^temporarily_switch_to_single_kboard (struct frame /
+tend   c-src/etags.c   2432
+term   merc-src/accumulator.m  /^:- import_module term.$/
+terminate      objc-src/Subprocess.m   /^- terminate:sender$/
+terminateInput objc-src/Subprocess.m   /^- terminateInput$/
+test   c-src/emacs/src/lisp.h  1871
+test   cp-src/c.C      86
+test   erl-src/gs_dialog.erl   /^test() ->$/
+test   go-src/test1.go /^func test(p plus) {$/
+test   make-src/Makefile       /^test:$/
+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)$/
+this   c-src/a/b/b.c   1
+this-command-keys      c-src/emacs/src/keyboard.c      /^DEFUN 
("this-command-keys", Fthis_command_keys, St/
+this-command-keys-vector       c-src/emacs/src/keyboard.c      /^DEFUN 
("this-command-keys-vector", Fthis_command_k/
+this-single-command-keys       c-src/emacs/src/keyboard.c      /^DEFUN 
("this-single-command-keys", Fthis_single_co/
+this-single-command-raw-keys   c-src/emacs/src/keyboard.c      /^DEFUN 
("this-single-command-raw-keys", Fthis_singl/
+this_command_key_count c-src/emacs/src/keyboard.c      108
+this_command_key_count_reset   c-src/emacs/src/keyboard.c      112
+this_command_keys      c-src/emacs/src/keyboard.c      107
+this_file_toc  perl-src/htlmify-cystic 29
+this_single_command_key_start  c-src/emacs/src/keyboard.c      125
+tignore        c-src/etags.c   2433
+timer_check    c-src/emacs/src/keyboard.c      /^timer_check (void)$/
+timer_check_2  c-src/emacs/src/keyboard.c      /^timer_check_2 (Lisp_Object 
timers, Lisp_Object idl/
+timer_idleness_start_time      c-src/emacs/src/keyboard.c      335
+timer_last_idleness_start_time c-src/emacs/src/keyboard.c      340
+timer_resume_idle      c-src/emacs/src/keyboard.c      /^timer_resume_idle 
(void)$/
+timer_start_idle       c-src/emacs/src/keyboard.c      /^timer_start_idle 
(void)$/
+timer_stop_idle        c-src/emacs/src/keyboard.c      /^timer_stop_idle 
(void)$/
+timers_run     c-src/emacs/src/keyboard.c      320
+tinbody        c-src/etags.c   2431
+tkeyseen       c-src/etags.c   2429
+tnone  c-src/etags.c   2428
+toc_line       perl-src/htlmify-cystic /^sub toc_line ($)$/
+toggleDescription      objc-src/PackInsp.m     /^-toggleDescription$/
+tok    c-src/etags.c   2491
+token  c-src/etags.c   2508
+token  y-src/cccp.y    437
+token  y-src/cccp.y    439
+tokenize       prol-src/natded.prolog  
/^tokenize([C1,C2,C3|Cs],Xs-Ys,TsResult):-     % spe/
+tokenizeatom   prol-src/natded.prolog  /^tokenizeatom(Atom,Ws):-$/
+tokentab2      y-src/cccp.y    442
+tool_bar_item_properties       c-src/emacs/src/keyboard.c      7970
+tool_bar_items c-src/emacs/src/keyboard.c      /^tool_bar_items (Lisp_Object 
reuse, int *nitems)$/
+tool_bar_items_vector  c-src/emacs/src/keyboard.c      7965
+toolkit_menubar_in_use c-src/emacs/src/keyboard.c      
/^toolkit_menubar_in_use (struct frame *f)$/
+top-level      c-src/emacs/src/keyboard.c      /^DEFUN ("top-level", 
Ftop_level, Stop_level, 0, 0, /
+top_level      merc-src/accumulator.m  /^:- type top_level$/
+top_level_1    c-src/emacs/src/keyboard.c      /^top_level_1 (Lisp_Object 
ignore)$/
+top_level_2    c-src/emacs/src/keyboard.c      /^top_level_2 (void)$/
+total_keys     c-src/emacs/src/keyboard.c      97
+total_size_of_entries  c-src/etags.c   /^total_size_of_entries (register node 
*np)$/
+total_surrounding      cp-src/conway.cpp       /^int 
site::total_surrounding(void)$/
+totally_unblock_input  c-src/emacs/src/keyboard.c      /^totally_unblock_input 
(void)$/
+tpcmd  c-src/h.h       15
+tpcmd  c-src/h.h       8
+track-mouse    c-src/emacs/src/keyboard.c      /^DEFUN 
("internal--track-mouse", Ftrack_mouse, Stra/
+tracking_off   c-src/emacs/src/keyboard.c      /^tracking_off (Lisp_Object 
old_value)$/
+traffic_light  cp-src/conway.cpp       /^void traffic_light(int x, int y)$/
+translate      c-src/emacs/src/regex.h 361
+treats cp-src/c.C      131
+tt     prol-src/natded.prolog  /^tt:-$/
+tt=cmtt10      tex-src/texinfo.tex     /^\\font\\deftt=cmtt10 scaled 
\\magstep1$/
+tty_read_avail_input   c-src/emacs/src/keyboard.c      /^tty_read_avail_input 
(struct terminal *terminal,$/
+ttypeseen      c-src/etags.c   2430
+typdef c-src/etags.c   2434
+type   c-src/emacs/src/gmalloc.c       145
+type   c-src/emacs/src/lisp.h  1973
+type   c-src/emacs/src/lisp.h  1980
+type   c-src/emacs/src/lisp.h  2034
+type   c-src/emacs/src/lisp.h  2112
+type   c-src/emacs/src/lisp.h  2203
+type   c-src/emacs/src/lisp.h  2276
+type   c-src/emacs/src/lisp.h  2286
+type   c-src/emacs/src/lisp.h  2296
+type   c-src/emacs/src/lisp.h  2304
+type   c-src/emacs/src/lisp.h  2364
+type   c-src/emacs/src/lisp.h  3025
+type   c-src/etags.c   2271
+typefunargs    tex-src/texinfo.tex     /^\\deftypefunargs {#3}\\endgroup %$/
+typefunargs    tex-src/texinfo.tex     /^\\deftypefunargs {#4}\\endgroup %$/
+typemargin     tex-src/texinfo.tex     /^\\newskip\\deftypemargin 
\\deftypemargin=12pt$/
+typemargin     tex-src/texinfo.tex     /^\\rlap{\\rightline{{\\rm #2}\\hskip 
\\deftypemargin}}}%/
+u      c-src/emacs/src/lisp.h  2397
+u_any  c-src/emacs/src/lisp.h  2214
+u_boolfwd      c-src/emacs/src/lisp.h  2371
+u_buffer_objfwd        c-src/emacs/src/lisp.h  2373
+u_finalizer    c-src/emacs/src/lisp.h  2219
+u_free c-src/emacs/src/lisp.h  2215
+u_intfwd       c-src/emacs/src/lisp.h  2370
+u_kboard_objfwd        c-src/emacs/src/lisp.h  2374
+u_marker       c-src/emacs/src/lisp.h  2216
+u_objfwd       c-src/emacs/src/lisp.h  2372
+u_overlay      c-src/emacs/src/lisp.h  2217
+u_save_value   c-src/emacs/src/lisp.h  2218
+unargs tex-src/texinfo.tex     /^\\defunargs {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex     /^\\defunargs {#3}\\endgroup %$/
+unblock_input  c-src/emacs/src/keyboard.c      /^unblock_input (void)$/
+unblock_input_to       c-src/emacs/src/keyboard.c      /^unblock_input_to (int 
level)$/
+unchar c-src/h.h       99
+unexpand-abbrev        c-src/abbrev.c  /^DEFUN ("unexpand-abbrev", 
Funexpand_abbrev, Sunexp/
+univ   merc-src/accumulator.m  /^:- import_module univ.$/
+unravel_univ   merc-src/accumulator.m  /^:- some [T] pred 
unravel_univ(univ::in, T::out) is/
+unread_switch_frame    c-src/emacs/src/keyboard.c      204
+unsignedp      y-src/cccp.y    112
+unwind c-src/emacs/src/lisp.h  2962
+unwind_int     c-src/emacs/src/lisp.h  2972
+unwind_ptr     c-src/emacs/src/lisp.h  2967
+unwind_void    c-src/emacs/src/lisp.h  2976
+update_accumulator_pred        merc-src/accumulator.m  /^:- pred 
update_accumulator_pred(pred_id::in, proc_/
+uprintmax_t    c-src/emacs/src/lisp.h  149
+uprintmax_t    c-src/emacs/src/lisp.h  154
+usage  perl-src/yagrip.pl      /^sub usage {$/
+usecharno      c-src/etags.c   210
+used   c-src/emacs/src/regex.h 347
+used_syntax    c-src/emacs/src/regex.h 398
+user_cmp_function      c-src/emacs/src/lisp.h  1814
+user_error     c-src/emacs/src/keyboard.c      /^user_error (const char *msg)$/
+user_hash_function     c-src/emacs/src/lisp.h  1811
+user_signal_info       c-src/emacs/src/keyboard.c      7235
+user_signals   c-src/emacs/src/keyboard.c      7250
+usfreelock_ptr/t       ada-src/etags-test-for.ada      /^   type 
usfreelock_ptr is access$/
+val    c-src/emacs/src/lisp.h  3027
+val    c-src/emacs/src/lisp.h  691
+val    c-src/getopt.h  84
+val    prol-src/natded.prolog  /^val(X) --> ['['], valseq(X), [']'].$/
+valcell        c-src/emacs/src/lisp.h  2357
+valid  c-src/etags.c   220
+valid  c-src/etags.c   2502
+validate       php-src/lce_functions.php       /^      function 
validate($value)$/
+valloc c-src/emacs/src/gmalloc.c       /^valloc (size_t size)$/
+valseq prol-src/natded.prolog  /^valseq([Val|Vals]) --> val(Val), 
plusvalseq(Vals)./
+value  c-src/emacs/src/lisp.h  687
+value  y-src/cccp.y    112
+var    c-src/emacs/src/keyboard.c      11023
+var    c-src/emacs/src/lisp.h  3137
+varargs        tex-src/texinfo.tex     /^\\defvarargs {#2}\\endgroup %$/
+varargs        tex-src/texinfo.tex     /^\\defvarargs {#3}\\endgroup %$/
+varset merc-src/accumulator.m  /^:- import_module varset.$/
+vcopy  c-src/emacs/src/lisp.h  /^vcopy (Lisp_Object v, ptrdiff_t offset, 
Lisp_Objec/
+vectorlike_header      c-src/emacs/src/lisp.h  1343
+verde  cp-src/c.C      40
+verify-tags-table-function     el-src/emacs/lisp/progmodes/etags.el    
/^(defvar verify-tags-table-function nil$/
+verify_ascii   c-src/emacs/src/lisp.h  /^# define verify_ascii(str) (str)$/
+vignore        c-src/etags.c   2417
+visit-tags-table       el-src/emacs/lisp/progmodes/etags.el    /^(defun 
visit-tags-table (file &optional local)$/
+visit-tags-table-buffer        el-src/emacs/lisp/progmodes/etags.el    
/^(defun visit-tags-table-buffer (&optional cont)$/
+void   c-src/emacs/src/lisp.h  /^INLINE void (check_cons_list) (void) { 
lisp_h_chec/
+voidfuncptr    c-src/emacs/src/lisp.h  2108
+voidval        y-src/cccp.y    115
+wait_status_ptr_t      c.c     161
+waiting_for_input      c-src/emacs/src/keyboard.c      150
+warning        y-src/cccp.y    /^warning (msg)$/
+weak   c-src/emacs/src/lisp.h  1830
+weak_alias     c-src/emacs/src/gmalloc.c       /^weak_alias (free, cfree)$/
+web ftp publish        make-src/Makefile       /^web ftp publish:$/
+what   c-src/etags.c   252
+wheel_syms     c-src/emacs/src/keyboard.c      4628
+where  c-src/emacs/src/lisp.h  2348
+where  c-src/emacs/src/lisp.h  2980
+where  cp-src/clheir.hpp       77
+where_in_registry      cp-src/clheir.hpp       15
+windowWillClose        objcpp-src/SimpleCalc.M /^- windowWillClose:sender$/
+wipe_kboard    c-src/emacs/src/keyboard.c      /^wipe_kboard (KBOARD *kb)$/
+womboid        c-src/h.h       63
+womboid        c-src/h.h       75
+word_size      c-src/emacs/src/lisp.h  1473
+write  php-src/lce_functions.php       /^      function write($save="yes")$/
+write  php-src/lce_functions.php       /^      function write()$/
+write1=        ruby-src/test1.ru       /^    attr_reader :read1 , :read2; 
attr_writer :writ/
+write2=        ruby-src/test1.ru       /^    attr_reader :read1 , :read2; 
attr_writer :writ/
+write_abbrev   c-src/abbrev.c  /^write_abbrev (sym, stream)$/
+write_classname        c-src/etags.c   /^write_classname (linebuffer *cn, 
const char *quali/
+write_lex      prol-src/natded.prolog  /^write_lex(File):-$/
+write_lex_cat  prol-src/natded.prolog  /^write_lex_cat(File):-$/
+write_xyc      cp-src/screen.cpp       /^void write_xyc(int x, int y, char c)$/
+writebreak     prol-src/natded.prolog  /^writebreak([]).$/
+writebreaklex  prol-src/natded.prolog  /^writebreaklex([]).$/
+writecat       prol-src/natded.prolog  
/^writecat(np(ind(sng),nm(_)),np,[],[]):-!.$/
+writelist      prol-src/natded.prolog  /^writelist([der(Ws)|Ws2]):-$/
+writelistsubs  prol-src/natded.prolog  /^writelistsubs([],X):-$/
+writenamestring        pas-src/common.pas      /^procedure 
writenamestring;(*($/
+writesubs      prol-src/natded.prolog  /^writesubs([]).$/
+writesups      prol-src/natded.prolog  /^writesups([]).$/
+written        c-src/etags.c   211
+x      c.c     153
+x      c.c     179
+x      c.c     188
+x      c.c     189
+x      cp-src/c.C      53
+x      cp-src/c.C      80
+x      cp-src/clheir.hpp       49
+x      cp-src/clheir.hpp       58
+x      cp-src/conway.hpp       7
+x      cp-src/fail.C   10
+x      cp-src/fail.C   44
+x      tex-src/texinfo.tex     /^\\refx{#1-snt}{} [\\printednodename], 
page\\tie\\refx{/
+x-get-selection-internal       c.c     /^       Fx_get_selection_internal, 
Sx_get_selection/
+x-get-selection-internal       c.c     /^DEFUN ("x-get-selection-internal", 
Fx_get_selectio/
+xcar_addr      c-src/emacs/src/lisp.h  /^xcar_addr (Lisp_Object c)$/
+xcdr_addr      c-src/emacs/src/lisp.h  /^xcdr_addr (Lisp_Object c)$/
+xdiff  make-src/Makefile       /^xdiff: ETAGS EXTAGS ${infiles}$/
+xmalloc        c-src/etags.c   /^xmalloc (size_t size)$/
+xnew   c-src/etags.c   /^#define xnew(n, Type)      ((Type *) xmalloc ((n) /
+xrealloc       c-src/etags.c   /^xrealloc (void *ptr, size_t size)$/
+xref-etags-location    el-src/emacs/lisp/progmodes/etags.el    /^(defclass 
xref-etags-location (xref-location)$/
+xref-location-line     el-src/emacs/lisp/progmodes/etags.el    /^(cl-defmethod 
xref-location-line ((l xref-etags-lo/
+xref-location-marker   el-src/emacs/lisp/progmodes/etags.el    /^(cl-defmethod 
xref-location-marker ((l xref-etags-/
+xref-make-etags-location       el-src/emacs/lisp/progmodes/etags.el    
/^(defun xref-make-etags-location (tag-info file)$/
+xrnew  c-src/etags.c   /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/
+xx     make-src/Makefile       /^xx="this line is here because of a fontlock 
bug$/
+xyz    ruby-src/test1.ru       /^    alias_method :xyz,$/
+y      cp-src/clheir.hpp       49
+y      cp-src/clheir.hpp       58
+y      cp-src/conway.hpp       7
+y-get-selection-internal       c.c     /^      Fy_get_selection_internal, 
Sy_get_selection_/
+yyalloc        /usr/share/bison/bison.simple   83
+yyalloc        /usr/share/bison/bison.simple   84
+yyclearin      /usr/share/bison/bison.simple   149
+yyclearin      /usr/share/bison/bison.simple   150
+yydebug        /usr/share/bison/bison.simple   237
+yydebug        /usr/share/bison/bison.simple   238
+yyerrhandle    /usr/share/bison/bison.simple   848
+yyerrlab1      /usr/share/bison/bison.simple   823
+yyerrok        /usr/share/bison/bison.simple   148
+yyerrok        /usr/share/bison/bison.simple   149
+yyerror        y-src/cccp.y    /^yyerror (s)$/
+yyerrstatus    /usr/share/bison/bison.simple   846
+yylex  y-src/cccp.y    /^yylex ()$/
+yyls   /usr/share/bison/bison.simple   88
+yyls   /usr/share/bison/bison.simple   89
+yylsp  /usr/share/bison/bison.simple   748
+yylsp  /usr/share/bison/bison.simple   921
+yymemcpy       /usr/share/bison/bison.simple   /^yymemcpy (char *yyto, const 
char *yyfrom, YYSIZE_T/
+yymemcpy       /usr/share/bison/bison.simple   264
+yymemcpy       /usr/share/bison/bison.simple   265
+yyn    /usr/share/bison/bison.simple   755
+yyn    /usr/share/bison/bison.simple   861
+yyn    /usr/share/bison/bison.simple   895
+yyn    /usr/share/bison/bison.simple   903
+yynewstate     /usr/share/bison/bison.simple   763
+yynewstate     /usr/share/bison/bison.simple   925
+yyparse        /usr/share/bison/bison.simple   /^yyparse (YYPARSE_PARAM_ARG)$/
+yyresult       /usr/share/bison/bison.simple   932
+yyresult       /usr/share/bison/bison.simple   939
+yyresult       /usr/share/bison/bison.simple   947
+yyreturn       /usr/share/bison/bison.simple   933
+yyreturn       /usr/share/bison/bison.simple   940
+yyss   /usr/share/bison/bison.simple   85
+yyss   /usr/share/bison/bison.simple   86
+yystate        /usr/share/bison/bison.simple   757
+yystate        /usr/share/bison/bison.simple   761
+yystate        /usr/share/bison/bison.simple   875
+yystate        /usr/share/bison/bison.simple   924
+yystpcpy       /usr/share/bison/bison.simple   /^yystpcpy (char *yydest, const 
char *yysrc)$/
+yystpcpy       /usr/share/bison/bison.simple   316
+yystpcpy       /usr/share/bison/bison.simple   317
+yystrlen       /usr/share/bison/bison.simple   /^yystrlen (const char *yystr)$/
+yystrlen       /usr/share/bison/bison.simple   293
+yystrlen       /usr/share/bison/bison.simple   294
+yyvs   /usr/share/bison/bison.simple   86
+yyvs   /usr/share/bison/bison.simple   87
+yyvsp  /usr/share/bison/bison.simple   746
+yyvsp  /usr/share/bison/bison.simple   919
+z      c.c     144
+z      c.c     164
+z      cp-src/clheir.hpp       49
+z      cp-src/clheir.hpp       58
+|      tex-src/texinfo.tex     /^\\def|{{\\tt \\char '174}}$/
+~      tex-src/texinfo.tex     /^\\def~{{\\tt \\char '176}}$/
+~A     cp-src/c.C      /^A::~A() {}$/
+~B     cp-src/c.C      /^    ~B() {};$/
+~MDiagArray2   cp-src/MDiagArray2.h    /^  ~MDiagArray2 (void) { }$/
+~generic_object        cp-src/clheir.cpp       
/^generic_object::~generic_object(void)$/
diff --git a/test/manual/etags/Makefile b/test/manual/etags/Makefile
index b3a82fdba8..81b5c3ca72 100644
--- a/test/manual/etags/Makefile
+++ b/test/manual/etags/Makefile
@@ -60,6 +60,7 @@ check:
        @$(MAKE) OPTIONS='nonexistent --members --declarations 
--regex=@regexfile' ediff_5
        @$(MAKE) OPTIONS='--class-qualify --members --declarations 
--regex=@regexfile' ediff_6
        @$(MAKE) cdiff
+       @$(MAKE) ctags_update
 
 ediff%: ETAGS.good% ETAGS ${infiles}
        diff -u --suppress-common-lines --width=80 ETAGS.good$* ETAGS
@@ -67,6 +68,20 @@ ediff%: ETAGS.good% ETAGS ${infiles}
 cdiff: CTAGS.good CTAGS ${infiles}
        diff -u --suppress-common-lines --width=80 CTAGS.good CTAGS
 
+ctags_update: CTAGS.good_update ${infiles}
+       head -n 100 CTAGS.good_update > CTAGS
+       tail -n 100 CTAGS.good_update >> CTAGS
+       ${RUN} ${CTAGS_PROG} -o CTAGS -u ${ARGS}
+       sort CTAGS > CTAGS.sorted
+       sort CTAGS.good_update > CTAGS.good_update.sorted
+       diff -u --suppress-common-lines --width=80 CTAGS.good_update.sorted 
CTAGS.sorted
+
+       cp crlf CTAGS
+       ${RUN} ${CTAGS_PROG} -o CTAGS -u ${ARGS}
+       sort CTAGS > CTAGS.sorted
+       sort CTAGS.good_crlf > CTAGS.good_crlf.sorted
+       diff -u --suppress-common-lines --width=80 CTAGS.good_crlf.sorted 
CTAGS.sorted
+
 ETAGS: ${infiles}
        ${RUN} ${ETAGS_PROG} ${OPTIONS} -o $@ ${ARGS}
 
diff --git a/test/manual/etags/crlf b/test/manual/etags/crlf
new file mode 100644
index 0000000000..d677595f01
--- /dev/null
+++ b/test/manual/etags/crlf
@@ -0,0 +1,2 @@
+test_crlf1     test_crlf.c     /^void test_crlf1()$/
+test_crlf2     tset_crlf.c     /^void test_crlf2()$/
diff --git a/test/src/sqlite-tests.el b/test/src/sqlite-tests.el
index be4f60ab57..e9ddf9c0be 100644
--- a/test/src/sqlite-tests.el
+++ b/test/src/sqlite-tests.el
@@ -243,6 +243,7 @@
 
 (ert-deftest sqlite-returning ()
   (skip-unless (sqlite-available-p))
+  (skip-unless (version<= "3.35" (sqlite-version)))
   (let (db)
     (progn
       (setq db (sqlite-open))
diff --git a/test/src/treesit-tests.el b/test/src/treesit-tests.el
index 59264722ba..80fde408cd 100644
--- a/test/src/treesit-tests.el
+++ b/test/src/treesit-tests.el
@@ -22,6 +22,39 @@
 (require 'ert)
 (require 'treesit)
 
+(declare-function treesit-language-available-p "treesit.c")
+
+(declare-function treesit-parser-root-node "treesit.c")
+(declare-function treesit-parser-set-included-ranges "treesit.c")
+(declare-function treesit-parser-included-ranges "treesit.c")
+
+(declare-function treesit-parser-create "treesit.c")
+(declare-function treesit-parser-delete "treesit.c")
+(declare-function treesit-parser-list "treesit.c")
+(declare-function treesit-parser-buffer "treesit.c")
+(declare-function treesit-parser-language "treesit.c")
+
+(declare-function treesit-query-expand "treesit.c")
+(declare-function treesit-query-compile "treesit.c")
+(declare-function treesit-query-capture "treesit.c")
+
+(declare-function treesit-node-type "treesit.c")
+(declare-function treesit-node-start "treesit.c")
+(declare-function treesit-node-end "treesit.c")
+(declare-function treesit-node-string "treesit.c")
+(declare-function treesit-node-parent "treesit.c")
+(declare-function treesit-node-child "treesit.c")
+(declare-function treesit-node-check "treesit.c")
+(declare-function treesit-node-field-name-for-child "treesit.c")
+(declare-function treesit-node-child-count "treesit.c")
+(declare-function treesit-node-child-by-field-name "treesit.c")
+(declare-function treesit-node-next-sibling "treesit.c")
+(declare-function treesit-node-prev-sibling "treesit.c")
+(declare-function treesit-node-first-child-for-pos "treesit.c")
+(declare-function treesit-node-descendant-for-range "treesit.c")
+(declare-function treesit-node-eq "treesit.c")
+
+
 (ert-deftest treesit-basic-parsing ()
   "Test basic parsing routines."
   (skip-unless (treesit-language-available-p 'json))
@@ -127,7 +160,7 @@
   "Tests for query API."
   (skip-unless (treesit-language-available-p 'json))
   (with-temp-buffer
-    (let (parser root-node pattern doc-node object-node pair-node)
+    (let (parser root-node)
       (progn
         (insert "[1,2,{\"name\": \"Bob\"},3]")
         (setq parser (treesit-parser-create 'json))
@@ -178,13 +211,12 @@
   "Tests if narrowing works."
   (skip-unless (treesit-language-available-p 'json))
   (with-temp-buffer
-    (let (parser root-node pattern doc-node object-node pair-node)
+    (let (parser)
       (progn
         (insert "xxx[1,{\"name\": \"Bob\"},2,3]xxx")
         (narrow-to-region (+ (point-min) 3) (- (point-max) 3))
         (setq parser (treesit-parser-create 'json))
-        (setq root-node (treesit-parser-root-node
-                         parser)))
+        (treesit-parser-root-node parser))
       ;; This test is from the basic test.
       (should
        (equal
@@ -236,13 +268,13 @@ bunch of assertions that checks e.g. visible_beg <=
 visible_end.)"
   (skip-unless (treesit-language-available-p 'json))
   (with-temp-buffer
-    (let (parser root-node pattern doc-node object-node pair-node)
+    (let (parser)
       (progn
         (insert "xxx[1,{\"name\": \"Bob\"},2,3]xxx")
         (narrow-to-region (+ (point-min) 3) (- (point-max) 3))
         (setq parser (treesit-parser-create 'json))
         ;; Now visible_beg/end = visible boundary.
-        (setq root-node (treesit-parser-root-node parser)))
+        (treesit-parser-root-node parser))
       ;; Now parser knows the content of the visible region.
       (widen)
       ;; Now visible_beg/end don't change, but visible region expanded.
@@ -315,12 +347,11 @@ visible_end.)"
   "Tests if range works."
   (skip-unless (treesit-language-available-p 'json))
   (with-temp-buffer
-    (let (parser root-node pattern doc-node object-node pair-node)
+    (let (parser)
       (progn
         (insert "[[1],oooxxx[1,2,3],xxx[1,2]]")
         (setq parser (treesit-parser-create 'json))
-        (setq root-node (treesit-parser-root-node
-                         parser)))
+        (treesit-parser-root-node parser))
 
       (should (eq (treesit-parser-included-ranges parser) nil))
 
@@ -371,10 +402,10 @@ visible_end.)"
                     (treesit-language-available-p 'css)
                     (treesit-language-available-p 'javascript)))
   (with-temp-buffer
-    (let (html css js html-range css-range js-range)
+    (let (css js css-range js-range)
       (progn
         (insert "<html><script>1</script><style>body {}</style></html>")
-        (setq html (treesit-parser-create 'html))
+        (treesit-parser-create 'html)
         (setq css (treesit-parser-create 'css))
         (setq js (treesit-parser-create 'javascript)))
       ;; JavaScript.
@@ -411,19 +442,19 @@ visible_end.)"
                    'json))
                  "(document (array (number) (number) (object (pair key: 
(string (string_content)) value: (string (string_content)))) (number)))"))
   (with-temp-buffer
-    (let (parser root-node doc-node object-node pair-node)
+    (let (parser root-node)
       (progn
         (insert "[1,2,{\"name\": \"Bob\"},3]")
         (setq parser (treesit-parser-create 'json))
         (setq root-node (treesit-parser-root-node
                          parser))
-        (setq doc-node (treesit-node-child root-node 0)))
+        (treesit-node-child root-node 0))
       )))
 
 (ert-deftest treesit-node-supplemental ()
   "Supplemental node functions."
   (skip-unless (treesit-language-available-p 'json))
-  (let (parser root-node doc-node array-node)
+  (let (parser root-node doc-node)
     (progn
       (insert "[1,2,{\"name\": \"Bob\"},3]")
       (setq parser (treesit-parser-create 'json))
@@ -473,12 +504,11 @@ visible_end.)"
 (ert-deftest treesit-node-at ()
   "Test `treesit-node-at'."
   (skip-unless (treesit-language-available-p 'json))
-  (let (parser root-node)
+  (let (parser)
     (progn
       (insert "[1,  2, 3,4]  ")
       (setq parser (treesit-parser-create 'json))
-      (setq root-node (treesit-parser-root-node
-                       parser)))
+      (treesit-parser-root-node parser))
     ;; Point at ",", should return ",".
     (goto-char (point-min))
     (search-forward "1")



reply via email to

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