emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] cairo 6445ee0: Merge branch 'master' into cairo


From: Jan D.
Subject: [Emacs-diffs] cairo 6445ee0: Merge branch 'master' into cairo
Date: Sun, 17 May 2015 14:47:11 +0000

branch: cairo
commit 6445ee0fb751ae2c1dfef900d44721b3d952812f
Merge: f92ac2e c9c4708
Author: Jan D <address@hidden>
Commit: Jan D <address@hidden>

    Merge branch 'master' into cairo
---
 .gitignore                                         |   11 +-
 ChangeLog.2                                        | 1156 +++++
 Makefile.in                                        |   50 +-
 admin/charsets/cp51932.awk                         |    2 +
 admin/charsets/eucjp-ms.awk                        |    2 +
 admin/notes/hydra                                  |    2 +-
 admin/notes/unicode                                |    8 +-
 admin/update_autogen                               |   16 +-
 build-aux/gitlog-to-changelog                      |    5 +-
 build-aux/gitlog-to-emacslog                       |   53 +-
 configure.ac                                       |   33 +-
 doc/emacs/Makefile.in                              |    1 +
 doc/emacs/docstyle.texi                            |   10 +
 doc/emacs/emacs-xtra.texi                          |    3 +-
 doc/emacs/emacs.texi                               |    5 +-
 doc/emacs/maintaining.texi                         |   36 +-
 doc/emacs/mule.texi                                |    7 +-
 doc/lispintro/Makefile.in                          |    4 +-
 doc/lispintro/emacs-lisp-intro.texi                |    2 +-
 doc/lispref/Makefile.in                            |    3 +-
 doc/lispref/back.texi                              |    2 +-
 doc/lispref/book-spine.texi                        |    2 +-
 doc/lispref/debugging.texi                         |    1 +
 doc/lispref/elisp.texi                             |    3 +-
 doc/lispref/keymaps.texi                           |    6 +-
 doc/lispref/lay-flat.texi                          |    2 +-
 doc/lispref/modes.texi                             |    6 +-
 doc/lispref/nonascii.texi                          |    4 +-
 doc/lispref/objects.texi                           |   10 +-
 doc/lispref/positions.texi                         |    8 +
 doc/lispref/sequences.texi                         |   38 +-
 doc/misc/Makefile.in                               |   18 +-
 doc/misc/ada-mode.texi                             |    2 +-
 doc/misc/auth.texi                                 |    2 +-
 doc/misc/autotype.texi                             |    2 +-
 doc/misc/bovine.texi                               |    2 +-
 doc/misc/calc.texi                                 |   24 +-
 doc/misc/cc-mode.texi                              |    2 +-
 doc/misc/cl.texi                                   |    2 +-
 doc/misc/dbus.texi                                 |    4 +-
 doc/misc/dired-x.texi                              |    2 +-
 doc/misc/ebrowse.texi                              |    2 +-
 doc/misc/ede.texi                                  |    2 +-
 doc/misc/ediff.texi                                |    6 +-
 doc/misc/edt.texi                                  |    2 +-
 doc/misc/efaq-w32.texi                             |    4 +-
 doc/misc/efaq.texi                                 |    2 +-
 doc/misc/eieio.texi                                |    2 +-
 doc/misc/emacs-gnutls.texi                         |    2 +-
 doc/misc/emacs-mime.texi                           |    2 +-
 doc/misc/epa.texi                                  |    2 +-
 doc/misc/erc.texi                                  |    2 +-
 doc/misc/ert.texi                                  |    2 +-
 doc/misc/eshell.texi                               |    2 +-
 doc/misc/eudc.texi                                 |    2 +-
 doc/misc/eww.texi                                  |    2 +-
 doc/misc/flymake.texi                              |    2 +-
 doc/misc/forms.texi                                |    2 +-
 doc/misc/gnus-coding.texi                          |    2 +-
 doc/misc/gnus-faq.texi                             |    2 +-
 doc/misc/gnus.texi                                 |   11 +-
 doc/misc/htmlfontify.texi                          |    2 +-
 doc/misc/idlwave.texi                              |    2 +-
 doc/misc/ido.texi                                  |    2 +-
 doc/misc/info.texi                                 |    2 +-
 doc/misc/mairix-el.texi                            |    3 +-
 doc/misc/message.texi                              |    2 +-
 doc/misc/mh-e.texi                                 |    2 +-
 doc/misc/newsticker.texi                           |    2 +-
 doc/misc/nxml-mode.texi                            |    2 +-
 doc/misc/octave-mode.texi                          |    2 +-
 doc/misc/org.texi                                  |    6 +-
 doc/misc/pcl-cvs.texi                              |    2 +-
 doc/misc/pgg.texi                                  |    3 +-
 doc/misc/rcirc.texi                                |    2 +-
 doc/misc/reftex.texi                               |    2 +-
 doc/misc/remember.texi                             |    4 +-
 doc/misc/sasl.texi                                 |    3 +-
 doc/misc/sc.texi                                   |    2 +-
 doc/misc/semantic.texi                             |    2 +-
 doc/misc/ses.texi                                  |    2 +-
 doc/misc/sieve.texi                                |    2 +-
 doc/misc/smtpmail.texi                             |    2 +-
 doc/misc/speedbar.texi                             |    2 +-
 doc/misc/srecode.texi                              |    2 +-
 doc/misc/texinfo.tex                               |   45 +-
 doc/misc/todo-mode.texi                            |    2 +-
 doc/misc/tramp.texi                                |    6 +-
 doc/misc/url.texi                                  |    3 +-
 doc/misc/vhdl-mode.texi                            |    2 +-
 doc/misc/vip.texi                                  |    3 +-
 doc/misc/viper.texi                                |    3 +-
 doc/misc/widget.texi                               |    2 +-
 doc/misc/wisent.texi                               |    2 +-
 doc/misc/woman.texi                                |    2 +-
 etc/NEWS                                           |   49 +
 etc/refcards/cs-dired-ref.tex                      |    2 +-
 etc/refcards/cs-refcard.tex                        |    2 +-
 etc/refcards/cs-survival.tex                       |    2 +-
 etc/refcards/sk-dired-ref.tex                      |    2 +-
 etc/refcards/sk-refcard.tex                        |    2 +-
 etc/refcards/sk-survival.tex                       |    2 +-
 etc/themes/tsdh-light-theme.el                     |    3 +-
 lib-src/etags.c                                    |   26 +-
 lisp/allout.el                                     |    4 +-
 lisp/calc/calc.el                                  |    1 +
 lisp/cedet/ede.el                                  |    2 +-
 lisp/cedet/ede/config.el                           |    8 +
 lisp/cedet/ede/generic.el                          |    2 +-
 lisp/cedet/ede/locate.el                           |    2 +-
 lisp/cedet/pulse.el                                |   76 +-
 lisp/cedet/semantic/bovine/c.el                    |    4 +-
 lisp/cedet/semantic/bovine/gcc.el                  |   15 +-
 lisp/cedet/semantic/db-el.el                       |   10 +-
 lisp/cedet/semantic/grammar.el                     |   90 +-
 lisp/cedet/semantic/symref.el                      |    8 +-
 lisp/cedet/semantic/symref/grep.el                 |   62 +-
 lisp/cedet/semantic/symref/idutils.el              |    2 +-
 lisp/cedet/semantic/symref/list.el                 |   10 +-
 lisp/cedet/srecode/compile.el                      |   17 +-
 lisp/cedet/srecode/dictionary.el                   |    4 +-
 lisp/cedet/srecode/insert.el                       |   52 +-
 lisp/cus-start.el                                  |    1 +
 lisp/dired-aux.el                                  |    3 +
 lisp/dired.el                                      |    2 +-
 lisp/dom.el                                        |    1 +
 lisp/emacs-lisp/bytecomp.el                        |   80 +-
 lisp/emacs-lisp/chart.el                           |    4 +-
 lisp/emacs-lisp/check-declare.el                   |    7 +-
 lisp/emacs-lisp/cl-generic.el                      |  270 +-
 lisp/emacs-lisp/cl-lib.el                          |    7 +-
 lisp/emacs-lisp/cl-seq.el                          |    2 +
 lisp/emacs-lisp/cl.el                              |    3 +
 lisp/emacs-lisp/debug.el                           |    3 +-
 lisp/emacs-lisp/eieio-core.el                      |   24 +-
 lisp/emacs-lisp/eieio-custom.el                    |   14 +-
 lisp/emacs-lisp/eieio-opt.el                       |    3 +
 lisp/emacs-lisp/eieio.el                           |    4 +-
 lisp/emacs-lisp/eldoc.el                           |   27 +-
 lisp/emacs-lisp/ert.el                             |    6 +-
 lisp/emacs-lisp/lisp.el                            |   15 +-
 lisp/emacs-lisp/package-x.el                       |    1 +
 lisp/emacs-lisp/package.el                         |  274 +-
 lisp/emacs-lisp/pcase.el                           |   10 +
 lisp/emacs-lisp/seq.el                             |  104 +-
 lisp/emacs-lisp/subr-x.el                          |    3 +-
 lisp/emacs-lisp/tabulated-list.el                  |   30 +-
 lisp/emacs-lisp/testcover.el                       |   27 +-
 lisp/emulation/cua-base.el                         |    2 +
 lisp/eshell/em-cmpl.el                             |   10 +-
 lisp/eshell/esh-ext.el                             |   17 +-
 lisp/ffap.el                                       |    2 +-
 lisp/files.el                                      |   12 +-
 lisp/foldout.el                                    |   24 +-
 lisp/font-lock.el                                  |    2 +-
 lisp/frame.el                                      |    1 +
 lisp/gnus/gnus-art.el                              |    3 +-
 lisp/gnus/gnus-async.el                            |    3 -
 lisp/gnus/gnus-sync.el                             |    9 +-
 lisp/gnus/gnus-util.el                             |    4 +-
 lisp/gnus/message.el                               |    4 +-
 lisp/gnus/mm-archive.el                            |    5 +-
 lisp/gnus/mm-decode.el                             |    2 +-
 lisp/gnus/mm-util.el                               |    9 +-
 lisp/gnus/mm-view.el                               |    2 +
 lisp/gnus/mml-smime.el                             |   43 +-
 lisp/gnus/mml.el                                   |    2 +-
 lisp/gnus/nnir.el                                  |   23 +-
 lisp/gnus/nnmail.el                                |    3 +-
 lisp/gnus/nnrss.el                                 |    2 +-
 lisp/gnus/spam.el                                  |    9 -
 lisp/help-fns.el                                   |    5 +-
 lisp/help-mode.el                                  |    2 +-
 lisp/help.el                                       |    3 +-
 lisp/info.el                                       |   43 +-
 lisp/international/cp51932.el                      |    2 +
 lisp/international/eucjp-ms.el                     |    2 +
 lisp/international/iso-transl.el                   |   31 +-
 lisp/international/mule-cmds.el                    |   10 +-
 lisp/international/quail.el                        |    3 +-
 lisp/international/robin.el                        |    2 +-
 lisp/isearch.el                                    |    6 +-
 lisp/language/ethio-util.el                        |    2 -
 lisp/language/japanese.el                          |    4 +-
 lisp/ldefs-boot.el                                 | 2433 +++++-----
 lisp/linum.el                                      |    3 +
 lisp/loadup.el                                     |   35 +-
 lisp/mail/rmail.el                                 |  142 +-
 lisp/mail/rmailedit.el                             |    2 +
 lisp/mail/rmailmm.el                               |   14 +-
 lisp/mail/rmailsum.el                              |   37 +-
 lisp/midnight.el                                   |   95 +-
 lisp/mouse-copy.el                                 |    4 +-
 lisp/net/eudc-vars.el                              |    6 +-
 lisp/net/eww.el                                    |    2 +-
 lisp/net/mairix.el                                 |   43 +-
 lisp/net/net-utils.el                              |    2 +
 lisp/net/nsm.el                                    |    5 +
 lisp/net/rcirc.el                                  |   34 +-
 lisp/net/secrets.el                                |   10 +-
 lisp/net/shr.el                                    |   34 +-
 lisp/obsolete/mouse-sel.el                         |    2 +-
 lisp/org/org-list.el                               |   68 +-
 lisp/org/org-macs.el                               |   55 +-
 lisp/org/ox-ascii.el                               |    2 +-
 lisp/play/dunnet.el                                |    2 +-
 lisp/play/gametree.el                              |   12 +-
 lisp/progmodes/cc-awk.el                           |    1 +
 lisp/progmodes/cc-cmds.el                          |    3 +
 lisp/progmodes/cmacexp.el                          |    4 +-
 lisp/progmodes/elisp-mode.el                       |  143 +-
 lisp/progmodes/etags.el                            |   23 +-
 lisp/progmodes/idlw-shell.el                       |   14 +-
 lisp/progmodes/js.el                               |    4 -
 lisp/progmodes/python.el                           |    3 +-
 lisp/progmodes/tcl.el                              |    3 +-
 lisp/progmodes/verilog-mode.el                     |  282 +-
 lisp/progmodes/xref.el                             |  181 +-
 lisp/saveplace.el                                  |   71 +-
 lisp/simple.el                                     |   50 +-
 lisp/subr.el                                       |   21 +-
 lisp/term/common-win.el                            |    2 +
 lisp/term/ns-win.el                                |   15 +-
 lisp/term/rxvt.el                                  |  142 +-
 lisp/term/screen.el                                |   17 +-
 lisp/term/x-win.el                                 |   12 +
 lisp/term/xterm.el                                 |  175 +-
 lisp/textmodes/bibtex.el                           |    2 +-
 lisp/textmodes/ispell.el                           |   21 +-
 lisp/textmodes/reftex-cite.el                      |    9 +-
 lisp/textmodes/reftex-toc.el                       |  145 +-
 lisp/textmodes/reftex.el                           |    4 +-
 lisp/textmodes/sgml-mode.el                        |   43 +-
 lisp/textmodes/text-mode.el                        |    3 +-
 lisp/url/url-handlers.el                           |    4 +-
 lisp/url/url-http.el                               |    2 +
 lisp/vc/ediff-util.el                              |    2 +
 lisp/vc/log-edit.el                                |   32 +-
 lisp/vc/vc-bzr.el                                  |   52 +-
 lisp/vc/vc-cvs.el                                  |    2 +-
 lisp/vc/vc-dir.el                                  |   10 +-
 lisp/vc/vc-git.el                                  |   77 +-
 lisp/vc/vc-hg.el                                   |   83 +-
 lisp/vc/vc-hooks.el                                |    6 +
 lisp/vc/vc-mtn.el                                  |    2 +-
 lisp/vc/vc-rcs.el                                  |    2 +-
 lisp/vc/vc.el                                      |   36 +-
 lisp/w32-fns.el                                    |    2 +-
 lisp/whitespace.el                                 |   53 +-
 lisp/window.el                                     |    6 +
 lwlib/Makefile.in                                  |   20 +-
 lwlib/autodeps.mk                                  |    5 -
 lwlib/deps.mk                                      |    2 +-
 m4/acl.m4                                          |   24 +-
 m4/extern-inline.m4                                |    5 +-
 make-dist                                          |   20 +-
 oldXMenu/Makefile.in                               |   20 +-
 oldXMenu/autodeps.mk                               |    5 -
 oldXMenu/deps.mk                                   |    2 +-
 src/Makefile.in                                    |   77 +-
 src/alloc.c                                        |    4 +-
 src/autodeps.mk                                    |    5 -
 src/buffer.c                                       |   92 +-
 src/buffer.h                                       |  188 +-
 src/category.c                                     |    2 +-
 src/cmds.c                                         |    2 +-
 src/deps.mk                                        |    2 +-
 src/editfns.c                                      |   10 +-
 src/filelock.c                                     |   49 +-
 src/gtkutil.c                                      |   90 +-
 src/image.c                                        |    4 +-
 src/keyboard.c                                     |   28 +-
 src/keyboard.h                                     |   52 +-
 src/lisp.h                                         |    4 -
 src/lisp.mk                                        |  174 -
 src/lread.c                                        |    6 +-
 src/macfont.h                                      |    6 +-
 src/nsfns.m                                        |   31 +-
 src/nsimage.m                                      |  104 +-
 src/nsmenu.m                                       |    6 +-
 src/nsterm.h                                       |    9 +-
 src/nsterm.m                                       |  211 +-
 src/process.c                                      |    4 +-
 src/syntax.c                                       |    2 +-
 src/window.c                                       |    6 +-
 src/xdisp.c                                        |   11 +
 src/xterm.c                                        |   15 +-
 test/automated/cl-generic-tests.el                 |   10 +
 test/automated/cl-lib-tests.el                     |   41 +
 test/automated/elisp-mode-tests.el                 |  129 +
 test/automated/package-test.el                     |    7 +-
 test/automated/seq-tests.el                        |   21 +
 test/etags/CTAGS.good                              | 4530 ++++++++++++++++
 test/etags/ETAGS.good_1                            | 4216 +++++++++++++++
 test/etags/ETAGS.good_2                            | 4842 ++++++++++++++++++
 test/etags/ETAGS.good_3                            | 4611 +++++++++++++++++
 test/etags/ETAGS.good_4                            | 4380 ++++++++++++++++
 test/etags/ETAGS.good_5                            | 5401 ++++++++++++++++++++
 test/etags/Makefile                                |   79 +
 test/etags/ada-src/2ataspri.adb                    |  665 +++
 test/etags/ada-src/2ataspri.ads                    |  298 ++
 test/etags/ada-src/etags-test-for.ada              |  193 +
 test/etags/ada-src/waroquiers.ada                  |  153 +
 test/etags/c-src/a/b/b.c                           |    5 +
 test/etags/c-src/abbrev.c                          |  616 +++
 test/etags/c-src/c.c                               |  169 +
 test/etags/c-src/dostorture.c                      |  107 +
 test/etags/c-src/emacs/src/gmalloc.c               | 2040 ++++++++
 {src => test/etags/c-src/emacs/src}/keyboard.c     |   28 +-
 {src => test/etags/c-src/emacs/src}/lisp.h         |    4 -
 test/etags/c-src/emacs/src/regex.h                 |  630 +++
 {lib-src => test/etags/c-src}/etags.c              |   22 +-
 test/etags/c-src/exit.c                            |   77 +
 test/etags/c-src/exit.strange_suffix               |   77 +
 test/etags/c-src/fail.c                            |    1 +
 test/etags/c-src/getopt.h                          |  125 +
 test/etags/c-src/h.h                               |  119 +
 test/etags/c-src/machsyscalls.c                    |   10 +
 test/etags/c-src/machsyscalls.h                    |   31 +
 test/etags/c-src/sysdep.h                          |   57 +
 test/etags/c-src/tab.c                             |  112 +
 test/etags/c-src/torture.c                         |  107 +
 test/etags/cp-src/MDiagArray2.h                    |  163 +
 test/etags/cp-src/Range.h                          |   96 +
 test/etags/cp-src/burton.cpp                       |   14 +
 test/etags/cp-src/c.C                              |  156 +
 test/etags/cp-src/clheir.cpp.gz                    |  Bin 0 -> 408 bytes
 test/etags/cp-src/clheir.hpp                       |   82 +
 test/etags/cp-src/conway.cpp                       |   95 +
 test/etags/cp-src/conway.hpp                       |   23 +
 test/etags/cp-src/fail.C                           |   52 +
 test/etags/cp-src/functions.cpp                    |  239 +
 test/etags/cp-src/screen.cpp                       |   62 +
 test/etags/cp-src/screen.hpp                       |   39 +
 test/etags/el-src/TAGTEST.EL                       |   31 +
 .../etags/el-src/emacs/lisp}/progmodes/etags.el    |   20 +-
 test/etags/erl-src/gs_dialog.erl                   |  271 +
 test/etags/f-src/entry.for                         |  581 +++
 test/etags/f-src/entry.strange.gz                  |  Bin 0 -> 3265 bytes
 test/etags/f-src/entry.strange_suffix              |  581 +++
 test/etags/forth-src/test-forth.fth                |   53 +
 test/etags/html-src/algrthms.html                  |  519 ++
 test/etags/html-src/index.shtml                    |   70 +
 test/etags/html-src/software.html                  |  241 +
 test/etags/html-src/softwarelibero.html            |  313 ++
 test/etags/lua-src/allegro.lua                     |  282 +
 test/etags/make-src/Makefile                       |  226 +
 test/etags/objc-src/PackInsp.h                     |  120 +
 test/etags/objc-src/PackInsp.m                     |  505 ++
 test/etags/objc-src/Subprocess.h                   |   81 +
 test/etags/objc-src/Subprocess.m                   |  343 ++
 test/etags/objcpp-src/SimpleCalc.H                 |   49 +
 test/etags/objcpp-src/SimpleCalc.M                 |  207 +
 test/etags/pas-src/common.pas                      | 1545 ++++++
 test/etags/perl-src/htlmify-cystic                 |  382 ++
 test/etags/perl-src/kai-test.pl                    |   39 +
 test/etags/perl-src/yagrip.pl                      |   54 +
 test/etags/php-src/lce_functions.php               |  699 +++
 test/etags/php-src/ptest.php                       |   18 +
 test/etags/php-src/sendmail.php                    |  527 ++
 test/etags/prol-src/natded.prolog                  | 1545 ++++++
 test/etags/prol-src/ordsets.prolog                 |  337 ++
 test/etags/ps-src/rfc1245.ps                       | 2085 ++++++++
 test/etags/pyt-src/server.py                       |  819 +++
 test/etags/tex-src/gzip.texi                       |  479 ++
 test/etags/tex-src/nonewline.tex                   |    1 +
 test/etags/tex-src/testenv.tex                     |   15 +
 test/etags/tex-src/texinfo.tex                     | 3350 ++++++++++++
 test/etags/y-src/atest.y                           |    5 +
 test/etags/y-src/cccp.c                            | 2202 ++++++++
 test/etags/y-src/cccp.y                            | 1006 ++++
 test/etags/y-src/parse.c                           | 2236 ++++++++
 test/etags/y-src/parse.y                           |  875 ++++
 373 files changed, 63508 insertions(+), 3666 deletions(-)

diff --git a/.gitignore b/.gitignore
index 9d32e6b..618249c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,11 +39,13 @@ src/config.in
 Info.plist
 InfoPlist.strings
 Makefile
+makefile
 !admin/charsets/Makefile
 !etc/refcards/Makefile
 !test/automated/data/flymake/Makefile
 !test/indent/Makefile
-makefile
+!test/etags/Makefile
+!test/etags/make-src/Makefile
 /*.cache
 /confdefs.h
 /config.status
@@ -74,6 +76,7 @@ lib/unistd.h
 lib/warn-on-use.h
 src/buildobj.h
 src/globals.h
+src/lisp.mk
 
 # Lisp-level sources built by 'make'.
 *cus-load.el
@@ -145,6 +148,10 @@ src/*.map
 # Tests.
 test/indent/*.new
 test/biditest.txt
+test/etags/srclist
+test/etags/regexfile
+test/etags/ETAGS
+test/etags/CTAGS
 
 # ctags, etags.
 TAGS
@@ -200,6 +207,7 @@ lisp/international/uni-*.el
 *.fn
 *.fns
 *.html
+!test/etags/html-src/*.html
 *.info
 *.ky
 *.kys
@@ -215,6 +223,7 @@ lisp/international/uni-*.el
 *.pj
 *.pjs
 *.ps
+!test/etags/ps-src/*.ps
 *.sc
 *.scs
 *.t2d/
diff --git a/ChangeLog.2 b/ChangeLog.2
index 188e3ff..d1c9477 100644
--- a/ChangeLog.2
+++ b/ChangeLog.2
@@ -1,3 +1,1159 @@
+2015-05-09  Eli Zaretskii  <address@hidden>
+
+       Avoid infloop in ERC
+       * lisp/simple.el (line-move-to-column): Ignore field boundaries
+       while computing line beginning position.  (Bug#20498)
+
+2015-05-08  Glenn Morris  <address@hidden>
+
+       * Makefile.in (ChangeLog): No longer pass "srcprefix"; cd instead.
+       * build-aux/gitlog-to-emacslog: Check called from right directory.
+       (srcprefix): Remove.
+
+       * build-aux/gitlog-to-emacslog: Get rid of "distprefix".
+       * Makefile.in (ChangeLog): No longer pass "distprefix".
+       * make-dist: Update "make ChangeLog" syntax for the above change.
+
+       * build-aux/gitlog-to-emacslog: Don't hard-code "ChangeLog.2".
+       * Makefile.in (ChangeLog): Pass -n to gitlog-to-emacslog.
+
+       * build-aux/gitlog-to-emacslog: Add "for earlier changes" to footer.
+
+       Add command-line option-parsing to gitlog-to-emacslog.
+       * build-aux/gitlog-to-emacslog: Add command-line options.
+       By default, refuse to remove an existing output file.
+       * Makefile.in (CHANGELOG): Update default.
+       (ChangeLog): Do not test for existing file.
+       (change-history-nocommit): Ensure temp file does not exist.
+
+       Quieten --without-x compilation.
+       * lisp/term/common-win.el: Provide a feature.
+       * lisp/term/x-win.el (term/common-win): Require it.
+
+       * lisp/dired-aux.el (dired-do-print): Require lpr.
+
+       Quieten compilation, eg in --without-x builds.
+       * lisp/dired-aux.el (lpr-printer-switch):
+       * lisp/frame.el (tool-bar-height):
+       * lisp/linum.el (font-info):
+       * lisp/window.el (font-info, overflow-newline-into-fringe)
+       (tool-bar-height):
+       * lisp/emacs-lisp/package-x.el (tar-data-buffer):
+       * lisp/gnus/gnus-util.el (iswitchb-mode):
+       * lisp/mail/rmailmm.el (libxml-parse-html-region):
+       * lisp/net/nsm.el (gnutls-peer-status)
+       (gnutls-peer-status-warning-describe):
+       * lisp/net/shr.el (libxml-parse-xml-region):
+       * lisp/url/url-http.el (gnutls-peer-status): Declare.
+
+2015-05-08  Stefan Monnier  <address@hidden>
+
+       CEDET (srecode-pop, srecode-peek): Don't use `subclass'
+       * lisp/cedet/srecode/insert.el (srecode-pop, srecode-peek): Don't use
+       `subclass' since they're never called with a class.
+       (srecode-insert-method, srecode-insert-subtemplate): Avoid obsolete
+       srecode-dictionary-child-p.
+
+2015-05-08  Nicolas Richard  <address@hidden>
+
+       help--binding-locus: Document argument POSITION.
+       * lisp/help.el (help--binding-locus): Document argument POSITION. 
(bug#20530)
+
+2015-05-08  Paul Eggert  <address@hidden>
+
+       Merge from gnulib.
+       * doc/misc/texinfo.tex: Get latest version.
+
+2015-05-08  Oleh Krehel  <address@hidden>
+
+       ffap.el (ffap-read-file-or-url): Fix completing-read call
+       * lisp/ffap.el (ffap-read-file-or-url): The HIST argument of
+         `completing-read' should be a symbol.
+
+2015-05-08  Eli Zaretskii  <address@hidden>
+
+       Verify file modifications by other programs
+       * src/filelock.c (lock_file): Check whether the file was modified
+       since it was visited even if 'create-lockfiles' is nil.  (Bug#18828)
+
+       Fix keyboard macros that include function keys
+       * src/keyboard.c (read_char_minibuf_menu_prompt): Record function
+       keys in the macro before returning.  (Bug#20454)
+
+2015-05-08  Glenn Morris  <address@hidden>
+
+       * build-aux/gitlog-to-changelog: Treat "Tiny-change" like
+       "Copyright-paperwork-exempt".  (Bug#20324)
+
+       * lisp/vc/log-edit.el: Handle "(tiny change)".  (Bug#20324)
+       (log-edit-rewrite-tiny-change): New variable.
+       (log-edit-insert-changelog): Maybe add "Copyright-paperwork-exempt".
+       (log-edit-changelog-ours-p): Set log-edit-author to a cons.
+       * etc/NEWS: Mention this.
+
+       * lisp/calc/calc.el (math-zerop): Declare.
+
+       * lisp/emacs-lisp/eieio-opt.el (help-fns-short-filename): Declare.
+
+2015-05-07  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/subr-x.el (if-let): Fix debug spec
+       Support the case when BINDINGS is a single tuple.  (Bug#20525)
+
+       * etc/NEWS: Fix typo in commit 14bb519
+
+2015-05-07  Jan D  <address@hidden>
+
+       Warn for multiple display crash for all Gtk+ versions.
+       * configure.ac: Warn for multiple display crash for all Gtk+
+       versions.  Output URL to Gtk+ bug (Bug#20452).
+
+       ns-win.el (ns-paste-secondary): Use gui-get-selection.
+       * ns-win.el (ns-paste-secondary): Use gui-get-selection.
+
+2015-05-07  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el: New "external" package status
+       An external package is any installed package that's not built-in
+       and not from `package-user-dir', which usually means it's from an
+       entry in `package-directory-list'.  They are treated much like
+       built-in packages, in that they cannot be through the Package Menu
+       deleted and are not considered for upgrades.
+       (package-desc-status): Identify if a package is installed outside
+       `package-user-dir'.
+       (package-menu--print-info-simple)
+       (package-menu--status-predicate): Add support for it.
+       * etc/NEWS: Document it.
+
+2015-05-06  Stefan Monnier  <address@hidden>
+
+       * lisp/mail/rmail.el: Use lexical-binding
+       (rmail-bury): Remove unused var `buffer-to-bury'.
+       (rmail-get-new-mail): Remove unused vars `opoint' and `success'.
+       (rmail-parse-url): Remove unused var `proto', `user', and `host'.
+       (rmail-unrmail-new-mail-maybe): Remove unused var `new-file'.
+       (rmail-insert-inbox-text): Remove unused var `movemail'.
+       (rmail-add-mbox-headers): Remove unused var `limit'.
+       (rmail-undelete-previous-message): Remove unused var `value'.
+       (rmail-reply): Remove unused vars `resent-to', `resent-cc',
+       `resent-reply-to'.
+       (rmail-mime-mbox-buffer, rmail-mime-view-buffer): Declare.
+       (rmail-restore-desktop-buffer): Rename arguments.
+
+2015-05-06  Glenn Morris  <address@hidden>
+
+       * Makefile.in (change-history-commit): Add missing piece of previous.
+
+       Avoid unnecessary bumping of Makefile.in's timestamp.
+       * Makefile.in (gen_origin): Move to gitlog-to-emacslog.
+       (emacslog): New variable.
+       (ChangeLog): Use $emacslog.  Don't pass $gen_origin.
+       (unchanged-history-files): Use $emacslog rather than Makefile.in.
+       (change-history-nocommit): Store hash in $emacslog.
+       * build-aux/gitlog-to-emacslog (gen_origin): Move default here.
+       * admin/update_autogen (changelog_files): Update for the above.
+
+       * Makefile.in: Don't always insist on removing existing "ChangeLog".
+       (CHANGELOG): New variable.
+       (no-ChangeLog): Remove.
+       (ChangeLog): Replace "no-ChangeLog"; pass output file to script.
+       (change-history-nocommit): Use a temp file rather than insisting
+       on deletion of any existing "ChangeLog".
+
+       * build-aux/gitlog-to-emacslog: Allow specification of output.
+
+       * admin/update_autogen: Add option to update ChangeLog.
+       (usage): Mention -H.
+       (changelog_flag, changelog_n, changelog_files): New variables.
+       (main): Check for -H, and maybe run change-history-nocommit.
+
+2015-05-06  Stefan Monnier  <address@hidden>
+
+       * lisp/subr.el (delete-dups): Pre-size the hashtable.
+
+       (define-modify-macro): Make sure cl--arglist-args is defined
+       * lisp/emacs-lisp/cl.el (define-modify-macro): Make sure
+       cl--arglist-args is defined (bug#20517).
+
+2015-05-06  Glenn Morris  <address@hidden>
+
+       * Makefile.in (change-history-nocommit): New.
+
+2015-05-06  Dmitry Gutov  <address@hidden>
+
+       Only cancel timer when it is non-nil
+       * lisp/cedet/pulse.el (pulse-momentary-unhighlight): Only cancel
+       timer when it is non-nil
+       (http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00223.html).
+
+2015-05-06  Glenn Morris  <address@hidden>
+
+       Quieten cedet compilation
+       * lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym->tag):
+       Invert fboundp test to quieten on current Emacs.
+       * lisp/cedet/ede/config.el (ede-shell-run-something)
+       (semanticdb-file-table-object, semanticdb-needs-refresh-p)
+       (semanticdb-refresh-table): Declare.
+       (ede-preprocessor-map): Require semantic/db.
+
+       Quieten cc-mode compilation
+       * lisp/progmodes/cc-awk.el (c-forward-sws):
+       * lisp/progmodes/cc-cmds.el (c-forward-subword, c-backward-subword):
+       Declare.
+
+2015-05-06  Oleh Krehel  <address@hidden>
+
+       lisp/subr.el (delete-dups): Avoid nreverse.
+
+2015-05-06  Artur Malabarba  <address@hidden>
+
+       * lisp/subr.el (delete-dups): Make it destructive again.
+
+2015-05-06  Paul Eggert  <address@hidden>
+
+       * doc/lispref/sequences.texi (Sequence Functions): Fix quoting.
+
+2015-05-06  Stefan Monnier  <address@hidden>
+
+       * lisp/emacs-lisp/testcover.el: Don't use edebug--read (bug#20487)
+       * lisp/emacs-lisp/testcover.el: Use lexical-binding.
+       (testcover--read): Rename from testcover-read.  Change calling 
convention.
+       Use edebug-read-and-maybe-wrap-form now that edebug-read is gone.
+       (testcover-start): Use add-function.  Move edebug-all-defs binding to
+       testcover--read.
+       (testcover-this-defun): Tighten scope of edebug-all-defs binding.
+       (testcover-mark): Remove unused var `item'.
+       * src/lread.c (syms_of_lread): Default load-read-function to `read'.
+
+2015-05-06  Oleh Krehel  <address@hidden>
+
+       lisp/subr.el (delete-dups): Use a hash table
+       * lisp/subr.el (delete-dups): When there are more than 100 candidates,
+         use a hash table. This can result in ~500 times speed-up for typical
+         collections of size 5000, like that of `load-library'.
+
+2015-05-06  Stefan Monnier  <address@hidden>
+
+       CEDET: Avoid `oref' on classes in a few more cases
+       * lisp/cedet/ede/generic.el (ede-find-target):
+       * lisp/cedet/ede.el (ede-project-forms-menu): Avoid `oref' on classes.
+       * lisp/cedet/semantic/bovine/gcc.el (semantic-gcc-setup): Remove unused
+       var `prefix'.
+
+       * lisp/cedet/semantic/symref/grep.el: Fix unused var warnings
+       * lisp/cedet/semantic/symref/grep.el (grepflags, greppattern): Declare.
+       (semantic-symref-perform-search): Remove unused var `pat'.
+
+       CEDET (srecode-compile-inserter): Avoid `oref' on classes
+       * lisp/cedet/srecode/compile.el (srecode-compile-inserter):
+       Avoid `oref' on classes (bug#20491).
+       (srecode-compile-split-code): Remove unused var `key'.
+
+2015-05-06  Dmitry Gutov  <address@hidden>
+
+       Clean up pulse.el a little
+       * lisp/cedet/pulse.el (pulse): Remove.
+       (pulse-momentary-timer): Save instead of the stop time.
+       (pulse-momentary-highlight-overlay): Call
+       pulse-momentary-unhighlight first thing. Treat
+       pulse-momentary-overlay as a single value, not a list. Save the
+       created timer. Only pass the stop time to the timer.
+       (pulse-tick): Update accordingly.
+       (pulse-momentary-unhighlight): Treat pulse-momentary-overlay as a
+       single value. Cancel the timer.
+
+2015-05-06  Tassilo Horn  <address@hidden>
+
+       Support the biblatex journaltitle field
+       * lisp/textmodes/reftex-cite.el (reftex-format-bib-entry):
+       Support the biblatex journaltitle field.
+
+2015-05-05  Glenn Morris  <address@hidden>
+
+       Minor declare-function improvement
+       * lisp/emacs-lisp/bytecomp.el
+       (byte-compile-macroexpand-declare-function):
+       Handle declarations after calls.  (Bug#20509)
+
+       * lisp/progmodes/js.el (js--optimize-arglist): Remove declaration.
+
+       * lisp/w32-fns.el (w32-shell-name): Silence compiler.
+
+2015-05-05  Dmitry Gutov  <address@hidden>
+
+       Pulse using a timer
+       * lisp/cedet/pulse.el (pulse-momentary-stop-time): New variable.
+       (pulse-momentary-highlight-overlay): Set up the timer instead of
+       calling `pulse'
+       (http://lists.gnu.org/archive/html/emacs-devel/2015-05/).
+       (pulse-tick): New function.
+       (pulse-momentary-unhighlight): Cut off the stop time.
+       (pulse-delay): Update the docstring WRT to not using sit-for.
+
+       Add semantic/symref/grep file patterns for ruby-mode
+       * lisp/cedet/semantic/symref/grep.el
+       (semantic-symref-filepattern-alist): Add patterns for
+       ruby-mode. Clarify the docstring.
+
+       Don't require match
+       * lisp/progmodes/xref.el (xref--read-identifier): Don't require
+       match. That doesn't work for every command, and some identifier
+       completion tables are bound to be imperfect anyway.
+
+2015-05-05  Stefan Monnier  <address@hidden>
+
+       * lisp/cedet/semantic/grammar.el: Fix compiler warnings (bug#20505)
+       (semantic-grammar--template-expand): New function.
+       (semantic-grammar-header, semantic-grammar-footer): Use it.
+       (semantic-grammar--lex-block-specs): Remove unused var `block-spec'.
+       (semantic-grammar-file-regexp): Refine regexp.
+       (semantic-grammar-eldoc-get-macro-docstring):
+       Use elisp-get-fnsym-args-string when available.
+       (semantic-idle-summary-current-symbol-info): Use new elisp-* names
+       instead of the old eldoc-* names.
+       * lisp/emacs-lisp/eldoc.el (eldoc-docstring-format-sym-doc): Move back
+       from elisp-mode.el.  Tweak calling convention.
+       * lisp/progmodes/elisp-mode.el (package-user-dir): Declare.
+       (elisp-get-fnsym-args-string): Add `prefix' argument.  Rename from
+       elisp--get-fnsym-args-string.
+       (elisp--highlight-function-argument): Add `prefix' arg.
+       (elisp-get-var-docstring): Rename from elisp--get-var-docstring.
+       (elisp--docstring-format-sym-doc): Move back to eldoc.el.
+
+2015-05-05  Glenn Morris  <address@hidden>
+
+       * lisp/help-fns.el (describe-function-1):
+       Handle builtins with advertised calling conventions.  (Bug#20479)
+
+2015-05-05  Nicolas Petton  <address@hidden>
+
+       Merge branch 'seq-let'
+
+       Update `seq-let' documentation
+       * doc/lispref/sequences.texi: Update the documentation of `seq-let'
+       with the support of  `&rest'.
+
+       Add support for &rest in `seq-let'
+       * lisp/emacs-lisp/seq.el (seq--make-bindings): Add support for `&rest'
+       in the argument list.
+       * test/automated/seq-tests.el: Add a test for parsing and binding
+       `&rest' in `seq-let'.
+
+2015-05-05  Paul Eggert  <address@hidden>
+
+       Spelling fixes
+
+2015-05-05  (tiny change) Pierre Lorenzon  <address@hidden>
+
+       * eieio-custom.el (eieio-object-value-get): Add missing increment
+       (Bug#20467)
+
+       (eieio-object-value-create): Adjust to new slots representation
+       (Bug#20467)
+       * eieio-custom.el (eieio-object-value-create):
+       Fix missed adjustment to new representation of slots metadata.
+
+2015-05-05  Nicolas Petton  <address@hidden>
+
+       * lisp/emacs-lisp/seq.el (seq--make-bindings): Improve the docstring.
+
+2015-05-05  Dmitry Gutov  <address@hidden>
+
+       Work around "Attempt to modify read-only object"
+       * lisp/progmodes/elisp-mode.el (elisp--xref-format): Extract from
+       elisp--xref-find-definitions, to work around "Attempt to modify
+       read-only object" error.
+
+       Only skip some variables that have function counterparts
+       * lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location):
+       Only skip minor-mode-named variable if it's defined in a Lisp
+       file, and it's in minor-mode-list (bug#20506).
+       * test/automated/elisp-mode-tests.el
+       (elisp-xref-finds-both-function-and-variable)
+       (elisp-xref-finds-only-function-for-minor-mode): New tests.
+
+2015-05-04  Dmitry Gutov  <address@hidden>
+
+       Buttonize the whole line, including the number at the beginning
+       * lisp/progmodes/xref.el (xref--location-at-point): Revert the
+       previous change.
+       (xref--insert-xrefs): Buttonize the whole line, including the
+       number at the beginning.
+
+       Make sure we're inside the let bindings
+       * lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
+       Make sure we're inside the let bindings.
+       * test/automated/elisp-mode-tests.el
+       (elisp-completes-functions-after-let-bindings): New test.
+
+2015-05-04  Glenn Morris  <address@hidden>
+
+       * lisp/cedet/semantic/grammar.el (eldoc-function-argstring)
+       (eldoc-docstring-format-sym-doc, eldoc-last-data-store)
+       (eldoc-get-fnsym-args-string, eldoc-get-var-docstring):
+       Remove outdated declarations.
+
+       Replace instances of "(eval-when-compile (autoload ...))"
+       * lisp/gnus/gnus-art.el (nneething-get-file-name):
+       Declare rather than autoload.
+       * lisp/gnus/gnus-async.el (gnus-html-prefetch-images):
+       Remove pointless autoload.
+       * lisp/gnus/gnus-sync.el (gnus-group-topic): Autoload at run-time.
+       (gnus-topic-create-topic, gnus-topic-enter-dribble):
+       Declare rather than autoload.
+       * lisp/gnus/mm-archive.el (gnus-recursive-directory-files)
+       (mailcap-extension-to-mime): Autoload at run-time.
+       * lisp/gnus/mm-util.el (latin-unity-massage-name)
+       (latin-unity-maybe-remap, latin-unity-representations-feasible-region)
+       (latin-unity-representations-present-region):
+       Declare rather than autoload.
+       * lisp/gnus/mml-smime.el (epg-make-context)
+       (epg-passphrase-callback-function): Autoload at run-time.
+       (epg-context-set-signers, epg-context-result-for)
+       (epg-new-signature-digest-algorithm)
+       (epg-verify-result-to-string, epg-list-keys, epg-verify-string)
+       (epg-sign-string, epg-encrypt-string)
+       (epg-context-set-passphrase-callback, epg-sub-key-fingerprint)
+       (epg-configuration, epg-expand-group, epa-select-keys):
+       Declare rather than autoload.
+       * lisp/gnus/nnir.el (nnimap-change-group, nnimap-make-thread-query):
+       Autoload at run-time.
+       (gnus-group-topic-name, nnimap-buffer, nnimap-command)
+       (gnus-registry-get-id-key, gnus-registry-action):
+       Declare rather than autoload.
+       * lisp/gnus/nnmail.el (mail-send-and-exit): Autoload at run-time.
+       * lisp/gnus/spam.el (spam-stat-buffer-change-to-non-spam)
+       (spam-stat-buffer-change-to-spam, spam-stat-buffer-is-non-spam)
+       (spam-stat-buffer-is-spam, spam-stat-load, spam-stat-save)
+       (spam-stat-split-fancy): Remove pointless autoloads.
+       * lisp/net/mairix.el: Load gnus-util when compiling.
+       (gnus-group-read-ephemeral-group, gnus-summary-toggle-header)
+       (message-field-value): Declare rather than autoload.
+       (mairix-gnus-ephemeral-nndoc, mairix-gnus-fetch-field):
+       Check gnus-alive-p is fbound.
+       (vm-quit, vm-visit-folder, vm-select-folder-buffer)
+       (vm-check-for-killed-summary, vm-error-if-folder-empty)
+       (vm-get-header-contents, vm-select-marked-or-prefixed-messages):
+       Declare rather than autoload.
+
+       * lisp/gnus/mm-view.el (epg-decrypt-string): Autoload.
+
+       * lisp/gnus/mml-smime.el (epg-key-sub-key-list)
+       (epg-sub-key-capability, epg-sub-key-validity): Fix declarations.
+
+       * lisp/progmodes/elisp-mode.el (xref-collect-references): Declare.
+
+       * lisp/emacs-lisp/debug.el (help-xref-interned): Update declaration.
+
+       * lisp/allout.el (epg-user-id-string, epg-key-user-id-list):
+       * lisp/emacs-lisp/package.el (epg-signature-status):
+       Fix declarations.
+
+       * lisp/play/gametree.el (gametree-show-children-and-entry)
+       (gametree-apply-layout, gametree-mouse-show-subtree)
+       (gametree-mouse-hide-subtree): Replace obsolete outline aliases.
+
+       * lisp/emacs-lisp/check-declare.el (check-declare-verify):
+       Handle cl-defgeneric, cl-defmethod.
+
+2015-05-04  Dmitry Gutov  <address@hidden>
+
+       Highlight both type and symbol name
+       * lisp/progmodes/elisp-mode.el (elisp--xref-find-definitions):
+       Highlight both type and symbol name.
+
+       Insert, highlight and align line numbers in xref output
+       * lisp/progmodes/etags.el (xref-location-line): Specialize for
+       xref-etags-location.
+       * lisp/progmodes/xref.el (xref-location-line): New generic method.
+       (xref-file-location): Add reader for the line slot.
+       (xref--location-at-point): Skip to the `xref-location' property.
+       (xref--collect-reference): Drop the line number from description.
+       (xref--insert-xrefs): Insert, highlight and align line numbers.
+
+2015-05-04  Daniel Colascione  <address@hidden>
+
+       Fix previous commit
+
+2015-05-04  Dmitry Gutov  <address@hidden>
+
+       Don't pulse the indentation, or the newline
+       * lisp/cedet/pulse.el (pulse-lighten-highlight)
+       (pulse-reset-face): Fall back to the inherited background
+       attribute in FACE.
+       (pulse-momentary-highlight-region): Add autoload cookie.
+       * lisp/progmodes/xref.el (xref--maybe-pulse): Don't highlight the
+       indentation, or the newline, if the line's non-empty
+       (http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00118.html).
+
+2015-05-04  Daniel Colascione  <address@hidden>
+
+       Add `save-mark-and-excursion', which has the old `save-excursion' 
behavior
+       * doc/lispref/positions.texi (Excursions): Document
+       `save-mark-and-excursion'.
+       * lisp/font-lock.el (font-lock-fontify-block): Use
+       `save-mark-and-excursion' instead of `save-excursion', restoring
+       Emacs 24 behavior.
+       * lisp/simple.el (save-mark-and-excursion--save)
+       (save-mark-and-excursion--restore): New functions.
+       (save-mark-and-excursion): New user macro.
+       * src/editfns.c (Fsave_excursion): Mention
+       `save-mark-and-excursion' in `save-excursion' documentation.
+
+2015-05-04  Dmitry Gutov  <address@hidden>
+
+       Classify lone symbol inside let varlist as variable
+       * lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
+       Classify lone symbol inside let varlist as variable.
+       * test/automated/elisp-mode-tests.el 
(completest-variables-in-let-bindings):
+       New test.
+
+       Add xref-pulse-on-jump
+       * lisp/cedet/pulse.el (pulse-momentary-highlight-one-line):
+       Add autoload cookie.
+       * lisp/progmodes/xref.el (xref-pulse-on-jump): New option.
+       (xref--maybe-pulse): New function.
+       (xref-pop-marker-stack, xref--pop-to-location)
+       (xref--display-position): Use it.
+       (xref--location-at-point): Use back-to-indentation.
+
+2015-05-04  Stefan Monnier  <address@hidden>
+
+       * lisp/org/org-{macs,list}.el: Fix lexical warnings
+       * lisp/org/org-list.el (org-list-struct): Remove unused var `ind'.
+       (org-list-get-next-item, org-list-get-prev-item)
+       (org-list-get-children): Mark unused arg `struct'.
+       (org-list-use-alpha-bul-p): Remove unused var `bul'.
+       (org-toggle-checkbox): Mark unused var.
+       (org-update-checkbox-count): Remove unused var `box-num'.
+       (org-adapt-indentation): Declare.
+       (org-list-parse-list): Declare var instead of adding a dummy duplicate.
+       (org-list-send-list): Remove unused var `txt'.
+       (org-list-to-latex, org-list-to-texinfo): Mark unused arg `params'.
+       (org-list-to-subtree): Add prefix to dyn-bind var, and declare them.
+       * lisp/org/org-macs.el: Use `declare'.
+       (org-with-limited-levels): Declare dyn-bound vars.
+
+2015-05-04  Eli Zaretskii  <address@hidden>
+
+       Fix minor issues with CEDET on MS-Windows
+       * lisp/cedet/semantic/symref/idutils.el
+       (semantic-symref-parse-tool-output-one-line): Fix the search
+       regexp to match MS-Windows file names with drive letters.
+       (Bug#19468)
+       * lisp/cedet/semantic/symref/grep.el
+       (semantic-symref-grep-use-template): Remove "--color=always" from
+       Grep switches on MS-Windows.
+       (semantic-symref-grep-shell): Use shell-file-name as the default
+       value, so this works not only on Posix platforms.
+       (semantic-symref-perform-search): Use shell-quote-argument instead
+       of literal '..' for portable quoting of Grep command-line
+       argument.  Use shell-command-switch instead of a literal "-c".
+       * lisp/cedet/semantic/bovine/gcc.el
+       (semantic-gcc-get-include-paths): Use file-name-absolute-p to test
+       for an absolute file name in a portable way.
+
+2015-05-04  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el: Remove `package--silence' variable
+       (package-import-keyring, package-refresh-contents)
+       (package-compute-transaction, package--save-selected-packages)
+       (package-install-from-archive, package-delete)
+       (package-menu--perform-transaction): Use `inhibit-message'
+       instead.
+       (package--compile): Set `warning-minimum-level' to :error.
+
+2015-05-03  Stefan Monnier  <address@hidden>
+
+       * lisp/term/screen.el (xterm-screen-extra-capabilities): New custom
+       (terminal-init-screen): Use it (bug#20356).
+       * lisp/term/xterm.el: Provide `term/xterm' instead of `xterm'.
+       (xterm--extra-capabilities-type): New const.
+       (xterm-extra-capabilities): Use it.
+       (xterm--version-handler): Lower the pseudo-version for `screen'.
+
+2015-05-03  Dmitry Gutov  <address@hidden>
+
+       xref--insert-xrefs: Tweak the faces
+       * lisp/progmodes/xref.el (xref--insert-xrefs): Tweak the faces.
+       Always insert a newline at the end (to avoid mouse-face background
+       tail at the last line).
+
+       elisp-completion-at-point: Prioritize being quoted over funpos
+       * lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
+       Only consider function position when not inside quoted form
+       (bug#20425).
+       * test/automated/elisp-mode-tests.el: New file.
+
+       Stop vc-print-log from jumping to the top
+       * lisp/vc/vc.el (vc-print-log-internal): Pass nil
+       GOTO-LOCATION-FUNC to vc-log-internal-common when WORKING-REVISION
+       is not specified.
+       (vc-incoming-outgoing-internal): Always pass nil.
+       (vc-log-internal-common): When GOTO-LOCATION-FUNC is nil, don't
+       call it, and don't set vc-sentinel-movepoint (bug#15322).
+       (vc-print-root-log): Don't fetch the root working revision, nor
+       pass it to vc-print-log-internal.
+
+2015-05-02  Michael Vehrs  <address@hidden>
+
+       Fix display of keyboard layouts for right-to-left scripts
+       * lisp/international/quail.el (quail-insert-kbd-layout): Force
+       left-to-right paragraph direction.
+
+2015-05-02  K. Handa  <address@hidden>
+
+       Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
+
+       * cmds.c (internal_self_insert): When we insert spaces for
+       padding, set point before the padding spaces, not after them.
+
+2015-05-02  Nicolas Petton  <address@hidden>
+
+       * lisp/emacs-lisp/seq.el (seq-p): New alias to `sequencep'.
+
+2015-05-02  Dmitry Gutov  <address@hidden>
+
+       Fix etags-xref-find for references
+       * lisp/progmodes/elisp-mode.el (elisp--xref-find-references): Use 
`cl-mapcan'.
+       * lisp/progmodes/etags.el (etags-xref-find): Ditto.  Prompt for
+       directory if no tags tables are loaded (bug#19468).
+
+2015-05-02  Philipp Stephani  <address@hidden>
+
+       Update the options in whitespace-style defcustom
+       * lisp/whitespace.el (whitespace-style): Use `set' instead of a
+       `repeat' because the option is really set-like.  Add missing
+       options.  Reorder options to match the order in the
+       documentation.  (Bug#20346)
+
+2015-05-02  Eli Zaretskii  <address@hidden>
+
+       Fix error diagnostics of c-macro-expand
+       * lisp/progmodes/cmacexp.el (c-macro-expansion): Don't bail out
+       too early if no start-marker string was found -- that generally
+       means cpp exited abnormally, and we still want to show its error
+       messages to the user.
+
+       Don't require Texinfo 5.0 for Emacs documentation
+       * doc/emacs/docstyle.texi: Use "@set txicodequoteundirected" and
+       "@set txicodequotebacktick" instead of "@codequotebacktick on" and
+       "@codequoteundirected on", respectively, to avoid requiring
+       Texinfo 5.x for Emacs documentation.
+
+2015-05-01  Simen Heggestøyl  <address@hidden>
+
+       * lisp/files.el (pwd):
+       When called with a prefix argument, insert the current default
+       directory at point.
+
+2015-05-01  Stefan Monnier  <address@hidden>
+
+       * lisp/isearch.el (isearch-mode-map): Allow backspace remapping
+       * lisp/isearch.el (isearch-mode-map): Don't inhibit
+       function-key-map remapping for backspace (bug#20466).
+
+2015-05-01  Dmitry Gutov  <address@hidden>
+
+       Implement xref-find-references in etags and elisp-mode
+       * lisp/progmodes/elisp-mode.el (elisp--xref-find-references): New 
function.
+       (elisp-xref-find): Use it.
+       * lisp/progmodes/etags.el (etags-xref-find): Use 
`xref-collect-references'.
+       * lisp/progmodes/xref.el (xref-collect-references):
+       (xref--collect-reference): New functions.
+
+2015-05-01  Paul Eggert  <address@hidden>
+
+       Prefer plain characters to Texinfo circumlocutions
+       For example, prefer 'François' to 'Fran\c{c}ois', 'Fran\c cois',
+       'Fran@,{c}ois' or 'Francois' (all of which were used!) in Texinfo 
sources.
+
+       Fix single-quoting style in PDF manuals
+       The PDF versions of the GNU manuals used curved single quotes to
+       represent grave accent and apostrophe, which made it a pain to cut
+       and paste code examples from them.  Fix the PDF versions to use
+       grave accent and apostrophe for Lisp source code, keystrokes, etc.
+       This change does not affect the info files, nor does it affect
+       ordinary uses of curved single quotes in PDF.
+       * doc/emacs/docstyle.texi: New file, which specifies treatment for
+       grave accent and apostrophe, as well as the document encoding.
+       * doc/emacs/emacs-xtra.texi, doc/emacs/emacs.texi:
+       * doc/lispintro/emacs-lisp-intro.texi:
+       * doc/lispref/back.texi, doc/lispref/book-spine.texi:
+       * doc/lispref/elisp.texi, doc/lispref/lay-flat.texi:
+       * doc/misc/ada-mode.texi, doc/misc/auth.texi:
+       * doc/misc/autotype.texi, doc/misc/bovine.texi, doc/misc/calc.texi:
+       * doc/misc/cc-mode.texi, doc/misc/cl.texi, doc/misc/dbus.texi:
+       * doc/misc/dired-x.texi, doc/misc/ebrowse.texi, doc/misc/ede.texi:
+       * doc/misc/ediff.texi, doc/misc/edt.texi, doc/misc/efaq-w32.texi:
+       * doc/misc/efaq.texi, doc/misc/eieio.texi, doc/misc/emacs-gnutls.texi:
+       * doc/misc/emacs-mime.texi, doc/misc/epa.texi, doc/misc/erc.texi:
+       * doc/misc/ert.texi, doc/misc/eshell.texi, doc/misc/eudc.texi:
+       * doc/misc/eww.texi, doc/misc/flymake.texi, doc/misc/forms.texi:
+       * doc/misc/gnus-coding.texi, doc/misc/gnus-faq.texi:
+       * doc/misc/gnus.texi, doc/misc/htmlfontify.texi:
+       * doc/misc/idlwave.texi, doc/misc/ido.texi, doc/misc/info.texi:
+       * doc/misc/mairix-el.texi, doc/misc/message.texi, doc/misc/mh-e.texi:
+       * doc/misc/newsticker.texi, doc/misc/nxml-mode.texi:
+       * doc/misc/octave-mode.texi, doc/misc/org.texi, doc/misc/pcl-cvs.texi:
+       * doc/misc/pgg.texi, doc/misc/rcirc.texi, doc/misc/reftex.texi:
+       * doc/misc/remember.texi, doc/misc/sasl.texi, doc/misc/sc.texi:
+       * doc/misc/semantic.texi, doc/misc/ses.texi, doc/misc/sieve.texi:
+       * doc/misc/smtpmail.texi, doc/misc/speedbar.texi:
+       * doc/misc/srecode.texi, doc/misc/todo-mode.texi, doc/misc/tramp.texi:
+       * doc/misc/url.texi, doc/misc/vhdl-mode.texi, doc/misc/vip.texi:
+       * doc/misc/viper.texi, doc/misc/widget.texi, doc/misc/wisent.texi:
+       * doc/misc/woman.texi:
+       Use it instead of '@documentencoding UTF-8', to lessen the need for
+       global changes like this in the future.
+       * doc/emacs/Makefile.in (EMACS_XTRA):
+       * doc/lispintro/Makefile.in (srcs):
+       * doc/lispref/Makefile.in (srcs):
+       Add dependency on docstyle.texi.
+       * doc/misc/Makefile.in (style): New macro.
+       (${buildinfodir}/%.info, %.dvi, %.pdf, %.html)
+       (${buildinfodir}/ccmode.info, ${buildinfodir}/efaq%.info, gnus_deps):
+       Use it.
+
+2015-05-01  Glenn Morris  <address@hidden>
+
+       * test/automated/cl-lib-tests.el (cl-lib-adjoin-test): Fix it.
+
+       * lisp/emacs-lisp/pcase.el (get-edebug-spec, edebug-match)
+       (help-fns--signature): Declare.
+
+       * lisp/emacs-lisp/pcase.el (pcase--make-docstring): Require help-fns.
+
+2015-05-01  Nicolas Petton  <address@hidden>
+
+       New macro seq-let, providing destructuring support to seq.el
+       * lisp/emacs-lisp/seq.el (seq-let): New macro.  `seq-let' is similar
+       to `cl-destructuring-bind' but works on all sequence types supported
+       by `seq.el'.  Bump version number to 1.6.
+       * test/automated/seq-tests.el: Add tests for seq-let.
+       * doc/lispref/sequences.texi: Add documentation for seq-let.
+
+2015-05-01  Pontus Michael  <address@hidden>
+
+       * lisp/simple.el (blink-matching-open): Better behavior in minibuffer
+
+2015-05-01  Glenn Morris  <address@hidden>
+
+       * lisp/emacs-lisp/ert.el (ert--special-operator-p): Fix previous.
+
+2015-05-01  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/bytecomp.el: Revert "Silence noninteractive 
compilations"
+       This reverts commit 9a7ddde977378cb5276a81476ae458889c403267.
+       This reverts commit 3c0ea587daf8b17960b90603a70e3ac4057d883d.
+       With message: "* lisp/emacs-lisp/bytecomp.el: Use `inhibit-message'".
+       (Bug#20445).
+
+2015-05-01  K. Handa  <address@hidden>
+
+       * mule-cmds.el (input-method-use-echo-area): Change :type to
+       'boolean.
+
+2015-05-01  Lars Magne Ingebrigtsen  <address@hidden>
+
+       Start using proportional fonts in eww by default
+       * lisp/net/shr.el (shr-use-fonts): Switch the default to t, since
+       it seems to work well.
+
+       Fix links in tables in shr
+       * lisp/net/shr.el: Remove `shr-inhibit-decoration', because that
+       makes (some) links in tables not work.
+
+2015-05-01  Jan D  <address@hidden>
+
+       (ns-get-cut-buffer-internal): Remove this alias.
+       * lisp/term/ns-win.el (ns-get-cut-buffer-internal): Remove this alias.
+
+2015-04-30  Glenn Morris  <address@hidden>
+
+       * lisp/emacs-lisp/ert.el (ert--special-operator-p):
+       Update for 2015-02-08 change to indirect-function.
+
+       * lisp/term/ns-win.el (ns-get-selection-internal):
+       Remove declaration for function deleted 2014-10-21.
+
+       * lisp/dom.el: Load subr-x when compiling, for when-let.
+
+       Silence some compilation warnings
+       * lisp/emacs-lisp/check-declare.el (compilation-forget-errors):
+       * lisp/emulation/cua-base.el (delete-active-region):
+       * lisp/net/net-utils.el (w32-get-console-output-codepage):
+       * lisp/term/ns-win.el (ns-own-selection-internal)
+       (ns-disown-selection-internal, ns-selection-owner-p)
+       (ns-selection-exists-p, ns-get-selection):
+       Declare for compiler..
+
+       Function declaration updates prompted by 'make check-declare'
+       * lisp/emacs-lisp/package.el (lm-homepage):
+       * lisp/gnus/gnus-util.el (iswitchb-read-buffer):
+       * lisp/gnus/mm-decode.el (libxml-parse-html-region):
+       * lisp/gnus/mml.el (libxml-parse-html-region):
+       * lisp/gnus/nnrss.el (libxml-parse-html-region):
+       * lisp/net/eww.el (libxml-parse-html-region):
+       * lisp/net/shr.el (libxml-parse-html-region):
+       * lisp/vc/vc-bzr.el (vc-annotate-convert-time):
+       * lisp/vc/vc-cvs.el (vc-annotate-convert-time):
+       * lisp/vc/vc-git.el (vc-annotate-convert-time):
+       * lisp/vc/vc-hg.el (vc-annotate-convert-time):
+       * lisp/vc/vc-mtn.el (vc-annotate-convert-time):
+       * lisp/vc/vc-rcs.el (vc-annotate-convert-time):
+       Update declaration.
+
+       Remove compatibility code for 20-year old function renaming
+       * lisp/progmodes/idlw-shell.el (idlwave-shell-comint-filter):
+       Make it an obsolete alias.
+       (idlwave-shell-filter): Change all uses to comint-output-filter.
+
+2015-04-30  Tassilo Horn  <address@hidden>
+
+       Add ace-window face config
+       * etc/themes/tsdh-light-theme.el (tsdh-light): Add ace-window face
+       configuration.
+
+2015-04-30  Paul Eggert  <address@hidden>
+
+       Unclutter 'make doc' output a bit
+       * Makefile.in ($(DOCS), $(INSTALL_DOC), $(UNINSTALL_DOC)):
+       Use make subst rather than sh IFS to split target string apart.
+       This makes 'make' output easier to follow.
+
+       Merge from gnulib
+       * doc/misc/texinfo.tex: Update from gnulib.
+
+2015-04-30  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el: Some speed optimizations on menu refresh
+       (package-menu--print-info): Obsolete.
+       (package-menu--print-info-simple): New function.
+       (package-menu--refresh): Use it, simplify code, and improve
+       performance.
+       * lisp/emacs-lisp/tabulated-list.el (tabulated-list-print-entry):
+       Tiny performance improvement.
+
+       * lisp/emacs-lisp/package.el (package--message): inhibit-message
+
+2015-04-29  Paul Eggert  <address@hidden>
+
+       Omit -Wstrict-overflow workaround in GCC 5
+       * src/process.c: Remove workaround for GCC -Wstrict-overflow bug
+       if it's GCC 5 or later, as the bug appears to be fixed in GCC 5.1.
+
+       Merge from gnulib
+       This incorporates:
+       2015-04-29 extern-inline: no need for workaround in GCC 5.1
+       2015-04-26 file-has-acl: port to CentOS 6
+       * m4/acl.m4, m4/extern-inline.m4: Update from gnulib.
+
+2015-04-29  Helmut Eller  <address@hidden>
+
+       Set next-error-* in xref--xref-buffer-mode
+       * xref.el (xref--xref-buffer-mode): Set `next-error-function' and
+       `next-error-last-buffer'.
+       (xref--next-error-function): New function.
+       (http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg01311.html)
+
+2015-04-29  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Fix warnings on looking-back calls missing LIMIT
+       * lisp/progmodes/python.el (python-shell-accept-process-output):
+       Pass LIMIT arg to looking-back.
+
+2015-04-29  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el: Use pushnew for downloads in progress
+       (package--download-and-read-archives): Use pushnew instead of
+       append.  If something terrible happened during a previous
+       download, simply refreshing should now make things work again.
+
+2015-04-29  Dmitry Gutov  <address@hidden>
+
+       Introduce etags-xref-find-definitions-tag-order
+       * lisp/progmodes/etags.el (etags-xref-find-definitions-tag-order):
+       New variable.
+       (etags--xref-find-definitions): Use it (bug#19468).
+
+2015-04-29  Eli Zaretskii  <address@hidden>
+
+       PATH- and completion-related fixes in Eshell on MS-Windows
+       * lisp/eshell/esh-ext.el (eshell-search-path): When running on
+       MS-Windows, prepend "." to list of directories produced from PATH,
+       as Windows always implicitly searches the current directory first.
+       (eshell-force-execution): Make it have a non-nil default value on
+       MS-Windows and MS-DOS.
+       * lisp/eshell/em-cmpl.el (eshell-complete-commands-list): If
+       eshell-force-execution is non-nil, complete on readable files and
+       directories, not only executables.  When running on MS-Windows,
+       prepend "." to list of directories produced from PATH, as Windows
+       always implicitly searches the current directory first.
+
+2015-04-29  Sam Steingold  <address@hidden>
+
+       bury RCIRC buffers when there is no activity
+       lisp/net/rcirc.el (rcirc-non-irc-buffer): remove
+       (rcirc-bury-buffers): new function
+       (rcirc-next-active-buffer): when there is no new activity, use
+       `rcirc-bury-buffers' to hide all RCIRC buffers
+
+2015-04-29  Michael Albinus  <address@hidden>
+
+       Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
+
+2015-04-29  Krzysztof Jurewicz  <address@hidden>  (tiny change)
+
+       Fix DBUS query result parsing for secrets-search-items
+       * lisp/net/secrets.el (secrets-search-items): Fix DBUS query result
+       parsing.  The function assumed that return value of the
+       SearchItems method called on a collection is a list of two lists,
+       however this is true only when no collection is specified.  GNOME
+       had used to incorrectly return a list of two lists in both cases,
+       but this was already fixed:
+       https://bugzilla.gnome.org/show_bug.cgi?id=695115 .  Also fix an
+       incorrect information in the secrets-search-items’ docstring.
+       (Bug#20449)
+
+2015-04-29  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/bytecomp.el: Use `inhibit-message'
+       (byte-compile--message): Use `inhibit-message' instead of hiding
+       the previous message with (message nil).
+
+2015-04-29  Oleh Krehel  <address@hidden>
+
+       Remove the deprecated INTERNAL_FIELD macro by expanding it
+       * src/lisp.h (INTERNAL_FIELD): Remove.
+       (DEFVAR_KBOARD): Modify accordingly.
+       * alloc.c, buffer.c, buffer.h, category.c, keyboard.c, keyboard.h:
+       * syntax.c: Adjust users.
+       * src/buffer.c (compact_buffer): Use BVAR.
+
+2015-04-29  Glenn Morris  <address@hidden>
+
+       Replace an obsolete function alias
+       * lisp/isearch.el (isearch-yank-x-selection):
+       * lisp/mouse-copy.el (mouse-drag-secondary-pasting)
+       (mouse-drag-secondary-moving):
+       * lisp/obsolete/mouse-sel.el (mouse-sel-get-selection-function):
+       Replace obsolete alias x-get-selection with gui-get-selection.
+
+2015-04-29  Stefan Monnier  <address@hidden>
+
+       * lisp/mail/rmailsum.el: Use lexical-binding.
+
+2015-04-29  Glenn Morris  <address@hidden>
+
+       * test/automated/package-test.el (package-test-update-archives-async):
+       Skip test on hydra.nixos.org.
+
+2015-04-28  Glenn Morris  <address@hidden>
+
+       * lisp/foldout.el: Update for 2015-01-30 outline.el changes.
+       (foldout-zoom-subtree, foldout-exit-fold, foldout-mouse-show)
+       (foldout-mouse-hide-or-exit): Use new names for outline functions.
+
+       * lisp/cedet/semantic/bovine/c.el (semantic-c-do-lex-if):
+       Update for 2014-06-26 hideif.el change.
+
+       * lisp/mail/rmailsum.el: Fix search for encoded subjects.  (Bug#19088)
+       (rmail--decode-and-apply): New function.
+       (rmail-message-regexp-p-1, rmail-message-subject-p): Use it.
+
+       * lisp/mail/rmail.el (rmail-highlighted-headers): Fix :type.
+
+2015-04-28  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el: Fix priority-hiding corner case
+       (package-menu--refresh): Delegate obsolete-hiding to
+       `package--remove-hidden'.
+       (package--remove-hidden): Disregard high-priority package if it is
+       older than the installed one.
+
+2015-04-28  Paul Eggert  <address@hidden>
+
+       Update source file encoding list
+       Update admin/notes/unicode, along with coding system cookies in
+       other files, so that the two match each other better.
+       * admin/notes/unicode: lisp/language/ethio-util.el and
+       lisp/language/ethiopic.el also use utf-8-emacs.
+       * admin/notes/hydra, doc/misc/dbus.texi, doc/misc/org.texi:
+       * doc/misc/remember.texi, etc/refcards/cs-dired-ref.tex:
+       * etc/refcards/cs-refcard.tex, etc/refcards/cs-survival.tex:
+       * etc/refcards/sk-dired-ref.tex, etc/refcards/sk-refcard.tex:
+       * etc/refcards/sk-survival.tex:
+       Add "coding: utf-8" so that this file is not mishandled in a
+       Latin-1 or Big-5 locale.
+       * lisp/international/robin.el, lisp/org/ox-ascii.el:
+       Specify utf-8, not utf-8-emacs, as these are plain UTF-8 files.
+       * lisp/language/ethio-util.el: Fix trailer.
+
+2015-04-28  Eli Zaretskii  <address@hidden>
+
+       Fix synchronous invocation of Ispell
+       * lisp/textmodes/ispell.el (ispell-init-process): Assign a non-nil
+       value to ispell-process-directory before calling ispell-init-process.
+       Don't call set-process-coding-system if ispell-async-processp is nil.
+       (Bug#20448)
+
+2015-04-28  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el: Skip space and comments in init file
+       (package--ensure-init-file): Insert snippet at first
+       non-whitespace non-comments line.  Respects local-vars at the top
+       of the file.
+
+2015-04-28  Glenn Morris  <address@hidden>
+
+       * lisp/mail/rmail.el (rmail-copy-headers):
+       Handle rmail-nonignored-headers being nil.  (Bug#18878)
+
+       * lisp/subr.el (delay-mode-hooks): Fix doc typo.
+
+       * lisp/vc/vc-bzr.el (vc-bzr-after-dir-status):
+       Don't get confused by a bzrlib version mismatch warning.
+
+2015-04-27  Thomas Fitzsimmons  <address@hidden>
+
+       Change default location of EUDC options file
+       * NEWS: Document change to EUDC options file's default location.
+       * lisp/net/eudc-vars.el (eudc-options-file): Use
+       `locate-user-emacs-file' to change default options file location.
+
+2015-04-27  Glenn Morris  <address@hidden>
+
+       * test/automated/package-test.el (package-test-update-archives-async):
+       Try to handle the test server script dying.
+
+2015-04-27  Stefan Monnier  <address@hidden>
+
+       * lisp/saveplace.el (save-place-mode): New minor mode.
+       (save-place): Redefine as an obsolete alias.
+
+       * lisp/midnight.el: Make it a minor mode.  Allow predicates.
+       * lisp/midnight.el: Use lexical-binding.
+       (midnight-mode): Make it a proper minor mode.
+       (midnight-buffer-display-time): Make arg non-optional.
+       (midnight-find): Remove.
+       (clean-buffer-list-kill-never-regexps)
+       (clean-buffer-list-kill-regexps): Tweak type for new function choice.
+       (clean-buffer-list-delay): Allow clean-buffer-list-kill-regexps to
+       contain functions.
+       (clean-buffer-list): Use cl-find.
+       Allow clean-buffer-list-kill-never-regexps to contain functions.
+
+2015-04-27  Nicolas Petton  <address@hidden>
+
+       Bump version of seq.el to 1.5
+       * lisp/emacs-lisp/seq.el (seq-doseq): Remove undocumented return value
+         from seq-doseq.  Bump version number of seq.el.
+
+2015-04-27  Glenn Morris  <address@hidden>
+
+       * lisp/mail/rmail.el (rmail-reply):
+       Decode subject before matching "Re:" prefix.  (Bug#20396)
+
+2015-04-27  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el: Small improvements
+       (package--with-work-buffer-async): More informative error.
+       (package-install-user-selected-packages): Rename to
+       `package-install-selected-packages'.
+
+2015-04-27  Stefan Monnier  <address@hidden>
+
+       * lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal): Fix last
+       * lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal): Fix last 
change.
+       (eieio--class-make): Remove leftover `tag'.
+
+2015-04-27  Glenn Morris  <address@hidden>
+
+       * lisp/gnus/message.el (gnus-extract-address-components):
+       Remove bogus declaration that was masking previous problem.
+
+2015-04-27  Nicolas Graner  <address@hidden>  (tiny change)
+
+       * lisp/gnus/message.el (message-insert-formatted-citation-line):
+       Fix typo.  (Bug#20318)
+
+2015-04-27  Stefan Monnier  <address@hidden>
+
+       * lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal): Reuse oldc.
+
+       * lisp/textmodes/reftex-toc.el: Improve multi-frame behavior
+       * lisp/textmodes/reftex-toc.el (reftex-toc-revert): Avoid displaying
+       the buffer in yet another frame.
+       (reftex-toc-visit-location): Make sure toc-window has focus at the end
+       when `final' is nil.
+       (reftex--rebuilding-toc): Defvar to avoid `boundp' and
+       silence warnings.  Use `--' to clarify that it's internal.
+       (reftex-toc-next, reftex-toc-previous, reftex-toc-demote)
+       (reftex-toc-promote): Clarify unused argument.
+       (reftex--pro-or-de, reftex--start-line, reftex--mark-line):
+       Add `reftex--' prefix.  Fix all users.
+       (reftex-toc-promote-prepare): Use _ for dummy variable.
+       (reftex-toc-restore-region): Rename `m
+
+2015-04-27  Eli Zaretskii  <address@hidden>
+
+       Fix a typo in bibtex.el
+       * lisp/textmodes/bibtex.el (bibtex-insert-kill): Fix a typo from
+       last change.  (Bug#20429)
+
+       Fix redisplay of frame after loading new fonts
+       * src/xdisp.c (redisplay_internal): When retrying redisplay of a
+       frame because new fonts were loaded, disable all redisplay
+       optimizations on that frame by calling SET_FRAME_GARBAGED.
+       (Bug#20410)
+
+2015-04-27  Stefan Monnier  <address@hidden>
+
+       * lisp/info.el (Info-menu): Properly provide the `default'
+       (Bug#20391)
+
+       * elisp-mode.el: Catch errors from `documentation'
+       (Bug#20418)
+       * lisp/progmodes/elisp-mode.el (elisp--get-fnsym-args-string):
+       Catch errors from documentation.
+       (emacs-lisp-mode-abbrev-table): Remove redundant defvar.
+
+2015-04-26  Stefan Monnier  <address@hidden>
+
+       lisp/emacs-lisp/package.el: Move variables to silence byte-compiler
+       Remove redundant ":group 'package".
+
+2015-04-26  Eli Zaretskii  <address@hidden>
+
+       Fix a typo in rmail.el
+       * lisp/mail/rmail.el (rmail-ensure-blank-line): Fix a typo in the
+       last commit.  (Bug#20429)
+
+2015-04-26  Dmitry Gutov  <address@hidden>
+
+       Introduce xref-prompt-for-identifier
+       * lisp/progmodes/xref.el (xref-prompt-for-identifier): New option.
+       (xref--read-identifier): Use it
+       (http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg01205.html).
+
+2015-04-26  João Távora  <address@hidden>
+
+       `tex-insert-quote' after single `'' opens quotes instead of closing
+       Without this, it's very hard to precede double quotes with the
+       apostrophe character, i.e. insert the sequence '``
+       (quote-backquote-backquote), commonly useful in portuguese, for
+       instance.
+       * tex-mode.el (tex-insert-quote): Add ?' to the list of preceding
+       chars making `tex-insert-quote' be in the "opening" context.
+
+2015-04-25  Dmitry Gutov  <address@hidden>
+
+       Pass `id' to `completing-read' as def instead of initial input
+       * xref.el (xref--read-identifier): Pass `id' to `completing-read'
+       as the default value instead of initial input
+       (http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg01182.html).
+
 2015-04-25  Paul Eggert  <address@hidden>
 
        Don't freeze with unreadable processes
diff --git a/Makefile.in b/Makefile.in
index f88a9c5..eec6d31 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -413,7 +413,7 @@ blessmail: Makefile src
 # etc. to be built without running into similar recursion problems.
 MAKEFILE_NAME = Makefile
 $(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \
-          $(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN) $(srcdir)/src/lisp.mk
+          $(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN)
        MAKE='$(MAKE)' ./config.status
 
 # Don't erase these files if make is interrupted while refreshing them.
@@ -940,7 +940,7 @@ PSS   = lispref-ps   lispintro-ps   emacs-ps   misc-ps
 
 DOCS = $(DVIS) $(HTMLS) $(INFOS) $(PDFS) $(PSS)
 $(DOCS):
-       t=$@; IFS=-; set $$t; IFS=; $(MAKE) -C doc/$$1 $$2
+       $(MAKE) -C doc/$(subst -, ,$@)
 
 .PHONY: $(DOCS) docs pdf ps
 .PHONY: info dvi dist check html info-real info-dir check-info
@@ -997,7 +997,7 @@ INSTALL_DOC = $(INSTALL_DVI) $(INSTALL_HTML) $(INSTALL_PDF) 
$(INSTALL_PS)
 ## Install non .info forms of the documentation.
 ## TODO add etc/refcards.
 $(INSTALL_DOC):
-       t=$@; IFS=-; set $$t; IFS=; $(MAKE) -C doc/$$2 $$1-$$3
+       $(MAKE) -C doc/$(subst -, install-,$(subst install-,,$@))
 
 .PHONY: $(INSTALL_DOC) install-doc
 .PHONY: install-dvi install-html install-pdf install-ps
@@ -1020,7 +1020,7 @@ UNINSTALL_PS = uninstall-emacs-ps uninstall-lispref-ps \
 UNINSTALL_DOC = $(UNINSTALL_DVI) $(UNINSTALL_HTML) $(UNINSTALL_PDF) 
$(UNINSTALL_PS)
 
 $(UNINSTALL_DOC):
-       t=$@; IFS=-; set $$t; IFS=; $(MAKE) -C doc/$$2 $$1-$$3
+       $(MAKE) -C doc/$(subst -, uninstall-,$(subst uninstall-,,$@))
 
 .PHONY: $(UNINSTALL_DOC) uninstall-doc
 .PHONY: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps
@@ -1088,50 +1088,52 @@ bootstrap: bootstrap-clean
        $(MAKE) MAKEFILE_NAME=force-Makefile force-Makefile
        $(MAKE) all
 
-.PHONY: ChangeLog change-history change-history-commit
-.PHONY: master-branch-is-current no-ChangeLog unchanged-history-files
-
-# The newest revision that should not appear in the generated ChangeLog.
-gen_origin = 2c1b8604946efbcd8ec5dd6c6dda7541ce4fc3c0
-
-# Convert git commit log to ChangeLog file.  make-dist uses this.
-ChangeLog:
-       $(AM_V_GEN)distprefix=$(distprefix) srcprefix=$(srcdir)/ \
-       $(srcdir)/build-aux/gitlog-to-emacslog $(gen_origin)
+.PHONY: ChangeLog change-history change-history-commit change-history-nocommit
+.PHONY: master-branch-is-current unchanged-history-files
 
+CHANGELOG = ChangeLog
+emacslog = build-aux/gitlog-to-emacslog
 # The ChangeLog history files are called ChangeLog.1, ChangeLog.2, ...,
 # ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX).  $(CHANGELOG_N) stands for
 # the newest (highest-numbered) ChangeLog history file.
 CHANGELOG_HISTORY_INDEX_MAX = 2
 CHANGELOG_N = ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX)
 
+# Convert git commit log to ChangeLog file.  make-dist uses this.
+# I guess this is PHONY so it always updates?
+ChangeLog:
+       $(AM_V_GEN)cd $(srcdir) && \
+         ./$(emacslog) -o $(CHANGELOG) -n $(CHANGELOG_HISTORY_INDEX_MAX)
+
 # Check that we are in a good state for changing history.
-no-ChangeLog:
-       test ! -f ChangeLog
 master-branch-is-current:
        git branch | grep -q '^\* master$$'
 unchanged-history-files:
-       x=$$(git diff-files --name-only $(CHANGELOG_N) Makefile.in) && \
+       x=$$(git diff-files --name-only $(CHANGELOG_N) $(emacslog)) && \
          test -z "$$x"
 
 # Copy newer commit messages to the start of the ChangeLog history file,
 # and consider them to be older.
-change-history: no-ChangeLog master-branch-is-current unchanged-history-files \
-  ChangeLog
-       (sed '/^;; [L]ocal Variables:/,$$d' <ChangeLog && cat $(CHANGELOG_N)) \
+change-history-nocommit: master-branch-is-current unchanged-history-files
+       -rm -f ChangeLog.tmp
+       $(MAKE) ChangeLog CHANGELOG=ChangeLog.tmp
+       (sed '/^See ChangeLog.[0-9]* for earlier/,$$d' <ChangeLog.tmp && cat 
$(CHANGELOG_N)) \
          >$(CHANGELOG_N).tmp
+       rm ChangeLog.tmp
        new_origin=$$(git log --pretty=format:%H HEAD^!) && \
-       sed 's/^\(gen_origin *= *\).*/\1'"$$new_origin/" \
-         <Makefile.in >Makefile.in.tmp
+       sed 's/^\(gen_origin=\).*/\1'"$$new_origin/" \
+         < $(emacslog) > $(emacslog).tmp && chmod +x $(emacslog).tmp
        mv $(CHANGELOG_N).tmp $(CHANGELOG_N)
-       mv Makefile.in.tmp Makefile.in
+       mv $(emacslog).tmp $(emacslog)
+
+change-history: change-history-nocommit
        $(MAKE) address@hidden
 
 # If 'make change-history' fails because the newest ChangeLog history
 # file contains invalid text, fix the file by hand and then run
 # 'make change-history-commit'.
 change-history-commit:
-       git commit -m'; make $@' $(CHANGELOG_N) Makefile.in
+       git commit -m'; make $@' $(CHANGELOG_N) $(emacslog)
 
 .PHONY: check-declare
 
diff --git a/admin/charsets/cp51932.awk b/admin/charsets/cp51932.awk
index c8879b3..f59e91c 100644
--- a/admin/charsets/cp51932.awk
+++ b/admin/charsets/cp51932.awk
@@ -52,4 +52,6 @@ END {
   print "            (setcar x (cdr x)) (setcdr x tmp)))";
   print "      map)";
   print "  (define-translation-table 'cp51932-encode map))";
+  print "";
+  print "(provide 'cp51932)";
 }
diff --git a/admin/charsets/eucjp-ms.awk b/admin/charsets/eucjp-ms.awk
index 18c19f5..f17222d 100644
--- a/admin/charsets/eucjp-ms.awk
+++ b/admin/charsets/eucjp-ms.awk
@@ -106,5 +106,7 @@ END {
   print "            (setcar x (cdr x)) (setcdr x tmp)))";
   print "      map)";
   print "  (define-translation-table 'eucjp-ms-encode map))";
+  print "";
+  print "(provide 'eucjp-ms)";
 }
 
diff --git a/admin/notes/hydra b/admin/notes/hydra
index 7f8615d..80ce787 100644
--- a/admin/notes/hydra
+++ b/admin/notes/hydra
@@ -1,4 +1,4 @@
--*- outline -*-
+-*- mode: outline; coding: utf-8 -*-
 
 Copyright (C) 2013-2015 Free Software Foundation, Inc.
 See the end of the file for license conditions.
diff --git a/admin/notes/unicode b/admin/notes/unicode
index 13971ef..028bcc1 100644
--- a/admin/notes/unicode
+++ b/admin/notes/unicode
@@ -167,8 +167,8 @@ nontrivial changes to the build process.
        leim/CXTERM-DIC/QJ.tit
        leim/CXTERM-DIC/SW.tit
        leim/CXTERM-DIC/TONEPY.tit
-       leim/MISC-DIC/pinyin.map
        leim/MISC-DIC/CTLau.html
+       leim/MISC-DIC/pinyin.map
        leim/MISC-DIC/ziranma.cin
 
  * cp850
@@ -237,9 +237,11 @@ nontrivial changes to the build process.
 
      These files contain characters that cannot be encoded in UTF-8.
 
-       lisp/language/tibetan.el
-       lisp/language/tibet-util.el
+       lisp/language/ethio-util.el
+       lisp/language/ethiopic.el
        lisp/language/ind-util.el
+       lisp/language/tibet-util.el
+       lisp/language/tibetan.el
        lisp/leim/quail/ethiopic.el
        lisp/leim/quail/tibetan.el
 
diff --git a/admin/update_autogen b/admin/update_autogen
index 1bd8296..27d5303 100755
--- a/admin/update_autogen
+++ b/admin/update_autogen
@@ -69,6 +69,7 @@ Options:
     commit them (caution).
 -q: be quiet; only give error messages, not status messages.
 -A: only update autotools files, copying into specified dir.
+-H: also update ChangeLog.${changelog_n}
 -I: also update info/dir.
 -L: also update ldefs-boot.el.
 -C: start from a clean state.  Slower, but more correct.
@@ -87,10 +88,13 @@ autogendir=                     # was "autogen"
 ldefs_flag=1
 lboot_flag=
 info_flag=
+changelog_flag=
 
 ## Parameters.
 ldefs_in=lisp/loaddefs.el
 ldefs_out=lisp/ldefs-boot.el
+changelog_n=$(sed -n 's/CHANGELOG_HISTORY_INDEX_MAX *= *//p' Makefile.in)
+changelog_files="ChangeLog.$changelog_n build-aux/gitlog-to-emacslog"
 sources="configure.ac lib/Makefile.am"
 ## Files to copy into autogendir.
 ## Everything:
@@ -113,7 +117,7 @@ tempfile=/tmp/$PN.$$
 trap "rm -f $tempfile 2> /dev/null" EXIT
 
 
-while getopts ":hcfqA:CIL" option ; do
+while getopts ":hcfqA:HCIL" option ; do
     case $option in
         (h) usage ;;
 
@@ -129,6 +133,8 @@ while getopts ":hcfqA:CIL" option ; do
 
         (C) clean=1 ;;
 
+        (H) changelog_flag=1 ;;
+
         (I) info_flag=1 ;;
 
         (L) lboot_flag=1 ;;
@@ -382,6 +388,14 @@ modified=$(status $genfiles $ldefs_out) || die
 commit "loaddefs" $modified || die "commit error"
 
 
+## Less important than the other stuff, so do it last.
+[ ! "$changelog_flag" ] || {
+    make change-history-nocommit || die "make change-history error"
+    modified=$(status $changelog_files) || die
+    commit "ChangeLog" $modified || die "commit error"
+}
+
+
 exit 0
 
 ### update_autogen ends here
diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog
index 3f4b06a..ad7c273 100755
--- a/build-aux/gitlog-to-changelog
+++ b/build-aux/gitlog-to-changelog
@@ -3,7 +3,7 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
     if 0;
 # Convert git log output to ChangeLog format.
 
-my $VERSION = '2015-04-09 16:03'; # UTC
+my $VERSION = '2015-05-08 06:05'; # UTC
 # The definition above must lie within the first 8 lines in order
 # for the Emacs time-stamp write hook (at end) to update it.
 # If you change this file with Emacs, please let the write hook
@@ -324,7 +324,7 @@ sub git_dir_option($)
 
       # Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog
       # `(tiny change)' annotation.
-      my $tiny = (grep (/^Copyright-paperwork-exempt:\s+[Yy]es$/, @line)
+      my $tiny = (grep 
(/^(?:Copyright-paperwork-exempt|Tiny-change):\s+[Yy]es$/, @line)
                   ? '  (tiny change)' : '');
 
       my $date_line = sprintf "%s  %s$tiny\n",
@@ -335,6 +335,7 @@ sub git_dir_option($)
       @line = grep !/^(?:Signed-off-by:[ ].*>$
                        |Co-authored-by:[ ]
                        |Copyright-paperwork-exempt:[ ]
+                       |Tiny-change:[ ]
                        )/x, @line;
 
       # Remove leading and trailing blank lines.
diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog
index 996f6d0..e38f896 100755
--- a/build-aux/gitlog-to-emacslog
+++ b/build-aux/gitlog-to-emacslog
@@ -22,35 +22,59 @@
 LC_ALL=C
 export LC_ALL
 
-gen_origin=${1?}
+# The newest revision that should not appear in the generated ChangeLog.
+gen_origin=d2c7e14ac3bd2b517d35a86255c28d5b6d779451
+force=
+output=ChangeLog
+nmax=2
+
+while [ $# -gt 0 ]; do
+  case "$1" in
+      -g|--gen-origin) gen_origin="$2" ; shift ;;
+      -f|--force) force=1 ;;
+      -n|--nmax) nmax="$2"; shift ;;
+      -o|--output) output="$2" ; shift ;;
+      *) echo "Unrecognized argument: $1" >&2; exit 1 ;;
+  esac
+  shift
+done
+
+if [ ! -f ChangeLog.$nmax ]; then
+    echo "Can't find ChangeLog.$nmax" >&2
+    echo "Must be run from the top source directory" >&2
+    exit 1
+fi
+
+if [ -f "$output" ]; then
+    [ ! "$force" ] && echo "$output exists" >&2 && exit 1
+    rm -f "$output" || exit 1
+fi
 
 # If this is not a Git repository, just generate an empty ChangeLog.
-test -d ${srcprefix}.git || {
-  # Remove any old ChangeLog, in case it is a vc-dwim symlink.
-  rm -f "${distprefix}ChangeLog" || exit
-  >"${distprefix}ChangeLog"
+test -d .git || {
+  >"$output"
   exit
 }
 
 # Use Gnulib's packaged ChangeLog generator.
-${srcprefix}build-aux/gitlog-to-changelog --ignore-matching='^; ' \
+./build-aux/gitlog-to-changelog --ignore-matching='^; ' \
   --format='%B' \
-  "$gen_origin.." >"${distprefix}ChangeLog.tmp" || exit
+  "$gen_origin.." >"ChangeLog.tmp" || exit
 
-if test -s "${distprefix}ChangeLog.tmp"; then
+if test -s "ChangeLog.tmp"; then
 
   # Fix up bug references.
   # This would be better as eg a --transform option to gitlog-to-changelog,
   # but... effort.  FIXME does not handle rare cases like:
   # Fixes: debbugs:19434 debbugs:19519
   sed 's/      Fixes: \(debbugs:\|bug#\)\([0-9][0-9]*\)/       (Bug#\2)/' \
-      "${distprefix}ChangeLog.tmp" > "${distprefix}ChangeLog.tmp2"
-  mv "${distprefix}ChangeLog.tmp2" "${distprefix}ChangeLog.tmp"
+      "ChangeLog.tmp" > "ChangeLog.tmp2"
+  mv "ChangeLog.tmp2" "ChangeLog.tmp"
 
   # Find the years covered by the generated ChangeLog, so that
   # a proper copyright notice can be output.
   years=`
-    sed -n 's/^\([0-9][0-9]*\).*/\1/p' "${distprefix}ChangeLog.tmp" |
+    sed -n 's/^\([0-9][0-9]*\).*/\1/p' "ChangeLog.tmp" |
     sort -nu
   `
   start_year=
@@ -70,12 +94,13 @@ if test -s "${distprefix}ChangeLog.tmp"; then
   sed -n '
     1i\
 
-    /^;; Local Variables:/,${
+    /^See ChangeLog.[0-9]* for earlier/,${
+       s/ChangeLog\.[0-9]*/ChangeLog.'$nmax'/
        s/\(Copyright[ (C)]*\)[0-9]*-[0-9]*/\1'"$year_range"'/
        p
     }
-  ' <ChangeLog.2 >>"${distprefix}ChangeLog.tmp" || exit
+  ' <ChangeLog.$nmax >>"ChangeLog.tmp" || exit
 fi
 
 # Install the generated ChangeLog.
-mv -i "${distprefix}ChangeLog.tmp" "${distprefix}ChangeLog"
+test "$output" = "ChangeLog.tmp" || mv "ChangeLog.tmp" "$output"
diff --git a/configure.ac b/configure.ac
index bc7081d..fff3db9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1662,9 +1662,7 @@ dnl AC_C_BIGENDIAN is done by gnulib.
 
 dnl check for Make feature
 
-DEPFLAGS=
-MKDEPDIR=":"
-deps_frag=deps.mk
+AUTO_DEPEND=no
 dnl check if we have GCC and autodepend is on.
 if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
    AC_MSG_CHECKING([whether gcc understands -MMD -MF])
@@ -1676,24 +1674,10 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = 
yes; then
    rm -rf deps.d
    AC_MSG_RESULT([$ac_enable_autodepend])
    if test $ac_enable_autodepend = yes; then
-      DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
-      ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
-      MKDEPDIR='${MKDIR_P} ${DEPDIR}'
-      deps_frag=autodeps.mk
+      AUTO_DEPEND=yes
    fi
 fi
-lwlib_deps_frag=$srcdir/lwlib/$deps_frag
-oldxmenu_deps_frag=$srcdir/oldXMenu/$deps_frag
-deps_frag=$srcdir/src/$deps_frag
-AC_SUBST(MKDEPDIR)
-AC_SUBST(DEPFLAGS)
-AC_SUBST_FILE(deps_frag)
-AC_SUBST_FILE(lwlib_deps_frag)
-AC_SUBST_FILE(oldxmenu_deps_frag)
-
-lisp_frag=$srcdir/src/lisp.mk
-AC_SUBST_FILE(lisp_frag)
-
+AC_SUBST(AUTO_DEPEND)
 
 dnl checks for operating system services
 AC_SYS_LONG_FILE_NAMES
@@ -2498,15 +2482,12 @@ if test x"$pkg_check_gtk" = xyes; then
     GTK_OBJ="gtkutil.o $GTK_OBJ"
     term_header=$gtk_term_header
     USE_X_TOOLKIT=none
-    if "$PKG_CONFIG" --atleast-version=2.10 gtk+-2.0; then
-      :
-    else
-      AC_MSG_WARN([[Your version of Gtk+ will have problems with
+    AC_MSG_WARN([[Your version of Gtk+ will have problems with
        closing open displays.  This is no problem if you just use
        one display, but if you use more than one and close one of them
-       Emacs may crash.]])
-      sleep 3
-    fi
+       Emacs may crash.
+       See http://bugzilla.gnome.org/show_bug.cgi?id=85715]])
+    sleep 3
   fi
 
 fi
diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in
index 9932348..7630780 100644
--- a/doc/emacs/Makefile.in
+++ b/doc/emacs/Makefile.in
@@ -94,6 +94,7 @@ EMACS_XTRA= \
        $(srcdir)/arevert-xtra.texi \
        $(srcdir)/cal-xtra.texi \
        $(srcdir)/dired-xtra.texi \
+       ${srcdir}/docstyle.texi \
        $(srcdir)/picture-xtra.texi \
        $(srcdir)/emerge-xtra.texi \
        $(srcdir)/vc-xtra.texi \
diff --git a/doc/emacs/docstyle.texi b/doc/emacs/docstyle.texi
new file mode 100644
index 0000000..dfd1430
--- /dev/null
+++ b/doc/emacs/docstyle.texi
@@ -0,0 +1,10 @@
address@hidden Emacs documentation style settings
address@hidden UTF-8
address@hidden These two require Texinfo 5.0 or later, so we use the older
address@hidden equivalent @set variables supported in 4.11 and hence
address@hidden
address@hidden on
address@hidden on
address@hidden ignore
address@hidden txicodequoteundirected
address@hidden txicodequotebacktick
diff --git a/doc/emacs/emacs-xtra.texi b/doc/emacs/emacs-xtra.texi
index fcedf73..3490c08 100644
--- a/doc/emacs/emacs-xtra.texi
+++ b/doc/emacs/emacs-xtra.texi
@@ -2,6 +2,7 @@
 @comment %**start of header
 @setfilename ../../info/emacs-xtra.info
 @settitle Specialized Emacs Features
address@hidden docstyle.texi
 @c Merge all functions, variables, and keys into the concept index.
 @syncodeindex fn cp
 @syncodeindex vr cp
@@ -26,8 +27,6 @@ modify this GNU manual.''
 @end quotation
 @end copying
 
address@hidden UTF-8
-
 @dircategory Emacs
 @direntry
 * Emacs-Xtra: (emacs-xtra).    Specialized Emacs features.
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index caec373..21f645e 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -2,6 +2,7 @@
 
 @setfilename ../../info/emacs.info
 @settitle GNU Emacs Manual
address@hidden docstyle.texi
 
 @c The edition number appears in more than one place in this file
 @c I don't really know what it means...
@@ -44,8 +45,6 @@ developing GNU and promoting software freedom.''
 @end quotation
 @end copying
 
address@hidden UTF-8
-
 @dircategory Emacs
 @direntry
 * Emacs: (emacs).               The extensible self-documenting text editor.
@@ -832,7 +831,7 @@ VC Directory Mode
 Version Control Branches
 
 * Switching Branches::    How to get to another existing branch.
-* VC Pull::               Updating the contents of a branch.
+* Pulling / Pushing::     Receiving/sending changes from/to elsewhere.
 * Merging::               Transferring changes between branches.
 * Creating Branches::     How to start a new branch.
 
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index a129886..8ec1cd2 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -491,10 +491,10 @@ commit.  @xref{Log Buffer}.
 If committing to a shared repository, the commit may fail if the
 repository that has been changed since your last update.  In that
 case, you must perform an update before trying again.  On a
-decentralized version control system, use @kbd{C-x v +} (@pxref{VC
-Pull}) or @kbd{C-x v m} (@pxref{Merging}).  On a centralized version
-control system, type @kbd{C-x v v} again to merge in the repository
-changes.
+decentralized version control system, use @kbd{C-x v +}
+(@pxref{Pulling / Pushing}) or @kbd{C-x v m} (@pxref{Merging}).
+On a centralized version control system, type @kbd{C-x v v} again to
+merge in the repository changes.
 
 @item
 Finally, if you are using a centralized version control system, check
@@ -942,7 +942,7 @@ revision at point.  A second @key{RET} hides it again.
 (@code{vc-log-incoming}) command displays a log buffer showing the
 changes that will be applied, the next time you run the version
 control system's ``pull'' command to get new revisions from another
-repository (@pxref{VC Pull}).  This other repository is the default
+repository (@pxref{Pulling / Pushing}).  This other repository is the default
 one from which changes are pulled, as defined by the version control
 system; with a prefix argument, @code{vc-log-incoming} prompts for a
 specific repository.  Similarly, @kbd{C-x v O}
@@ -1305,7 +1305,7 @@ different branches.
 
 @menu
 * Switching Branches::    How to get to another existing branch.
-* VC Pull::               Updating the contents of a branch.
+* Pulling / Pushing::     Receiving/sending changes from/to elsewhere.
 * Merging::               Transferring changes between branches.
 * Creating Branches::     How to start a new branch.
 @end menu
@@ -1349,8 +1349,8 @@ unlocks (write-protects) the working tree.
 branch until you switch away; for instance, any VC filesets that you
 commit will be committed to that specific branch.
 
address@hidden VC Pull
address@hidden Pulling Changes into a Branch
address@hidden Pulling / Pushing
address@hidden Pulling/Pushing Changes into/from a Branch
 
 @table @kbd
 @item C-x v +
@@ -1359,6 +1359,11 @@ by ``pulling in'' changes from another location.
 
 On a centralized version control system, update the current VC
 fileset.
+
address@hidden C-x v P
+On a decentralized version control system, ``push'' changes from the
+current branch to another location.  This concept does not exist
+for centralized version control systems.
 @end table
 
 @kindex C-x v +
@@ -1388,6 +1393,21 @@ Log}.
   On a centralized version control system like CVS, @kbd{C-x v +}
 updates the current VC fileset from the repository.
 
address@hidden C-x v P
address@hidden vc-push
+  On a decentralized version control system, the command @kbd{C-x v P}
+(@code{vc-push}) sends changes from your current branch to another location.
+With a prefix argument, the command prompts for the exact
+version control command to use, which lets you specify where to push
+changes.  Otherwise, it pushes to a default location determined
+by the version control system.
+
+  Prior to pushing, you can use @kbd{C-x v O} (@code{vc-log-outgoing})
+to view a log buffer of the changes to be sent.  @xref{VC Change Log}.
+
+This command is currently supported only by Bazaar, Git, and Mercurial.
+It signals an error for centralized version control systems.
+
 @node Merging
 @subsubsection Merging Branches
 @cindex merging changes
diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi
index a80f942..d929e09 100644
--- a/doc/emacs/mule.texi
+++ b/doc/emacs/mule.texi
@@ -1,3 +1,4 @@
address@hidden -*- coding: utf-8 -*-
 @c This is part of the Emacs manual.
 @c Copyright (C) 1997, 1999-2015 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
@@ -214,7 +215,7 @@ faces used to display the character, and any overlays 
containing it
 
 @smallexample
              position: 1 of 1 (0%), column: 0
-            character: @^e (displayed as @^e) (codepoint 234, #o352, #xea)
+            character: ê (displayed as ê) (codepoint 234, #o352, #xea)
     preferred charset: unicode (Unicode (ISO10646))
 code point in charset: 0xEA
                script: latin
@@ -1659,8 +1660,8 @@ characters present directly on the keyboard or using 
@key{Compose} or
 @cindex compose character
 @cindex dead character
 @item
-For Latin-1 only, you can use the key @kbd{C-x 8} as a ``compose
-character'' prefix for entry of address@hidden Latin-1 printing
+You can use the key @kbd{C-x 8} as a ``compose character'' prefix for
+entry of address@hidden Latin-1 and a few other printing
 characters.  @kbd{C-x 8} is good for insertion (in the minibuffer as
 well as other buffers), for searching, and in any other context where
 a key sequence is allowed.
diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in
index ba63ee8..d1a696c 100644
--- a/doc/lispintro/Makefile.in
+++ b/doc/lispintro/Makefile.in
@@ -24,7 +24,7 @@ srcdir = @srcdir@
 buildinfodir = $(srcdir)/../../info
 # Directory with the (customized) texinfo.tex file.
 texinfodir = $(srcdir)/../misc
-# Directory with emacsver.texi.
+# Directory with docstyle.texi and emacsver.texi.
 emacsdir =  $(srcdir)/../emacs
 
 prefix = @prefix@
@@ -73,7 +73,7 @@ PDF_TARGETS = emacs-lisp-intro.pdf
 PS_TARGETS = emacs-lisp-intro.ps
 
 srcs = ${srcdir}/emacs-lisp-intro.texi ${srcdir}/doclicense.texi \
-  ${emacsdir}/emacsver.texi
+  ${emacsdir}/docstyle.texi ${emacsdir}/emacsver.texi
 
 ## Disable implicit rules.
 %.texi: ;
diff --git a/doc/lispintro/emacs-lisp-intro.texi 
b/doc/lispintro/emacs-lisp-intro.texi
index 46dc41a..83d6022 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -4,7 +4,7 @@
 @c setfilename emacs-lisp-intro.info
 @c sethtmlfilename emacs-lisp-intro.html
 @settitle Programming in Emacs Lisp
address@hidden UTF-8
address@hidden docstyle.texi
 @syncodeindex vr cp
 @syncodeindex fn cp
 @finalout
diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in
index 4c62c70..9475917 100644
--- a/doc/lispref/Makefile.in
+++ b/doc/lispref/Makefile.in
@@ -28,7 +28,7 @@ srcdir = @srcdir@
 buildinfodir = $(srcdir)/../../info
 # Directory with the (customized) texinfo.tex file.
 texinfodir = $(srcdir)/../misc
-# Directory with emacsver.texi.
+# Directory with docstyle.tex and emacsver.texi.
 emacsdir =  $(srcdir)/../emacs
 
 prefix = @prefix@
@@ -80,6 +80,7 @@ PS_TARGETS = elisp.ps
 
 srcs = \
   $(srcdir)/elisp.texi \
+  $(emacsdir)/docstyle.texi \
   $(emacsdir)/emacsver.texi \
   $(srcdir)/abbrevs.texi \
   $(srcdir)/anti.texi \
diff --git a/doc/lispref/back.texi b/doc/lispref/back.texi
index 5edfb67..3433277 100644
--- a/doc/lispref/back.texi
+++ b/doc/lispref/back.texi
@@ -6,7 +6,7 @@
 @c %**start of header
 @setfilename back-cover
 @settitle GNU Emacs Lisp Reference Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 .
 @sp 7
diff --git a/doc/lispref/book-spine.texi b/doc/lispref/book-spine.texi
index f58fb77..8c6381f 100644
--- a/doc/lispref/book-spine.texi
+++ b/doc/lispref/book-spine.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename book-spine
 @settitle book-spine
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @include emacsver.texi
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index 0ccac18..47b2499 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -815,6 +815,7 @@ be cleaner to combine them.
 @node Profiling
 @section Profiling
 @cindex profiling
address@hidden profile
 @cindex measuring resource usage
 @cindex memory usage
 
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index bf1fc4d..a32c69c 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -18,6 +18,7 @@
 @ifclear volflag
 @settitle GNU Emacs Lisp Reference Manual
 @end ifclear
address@hidden docstyle.texi
 
 @c %**end of header
 
@@ -115,8 +116,6 @@ developing GNU and promoting software freedom.''
 @end quotation
 @end copying
 
address@hidden UTF-8
-
 @dircategory Emacs lisp
 @direntry
 * Elisp: (elisp).               The Emacs Lisp Reference Manual.
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 7ba45a6..7752bf0 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -1,4 +1,4 @@
address@hidden -*-texinfo-*-
address@hidden -*- mode: texinfo; coding: utf-8 -*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
 @c Copyright (C) 1990-1994, 1998-2015 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
@@ -1717,14 +1717,14 @@ they usually will be in a Lisp file (@pxref{Loading 
Non-ASCII}), you
 must type the keys as multibyte too.  For instance, if you use this:
 
 @smallexample
-(global-set-key "@"o" 'my-function) ; bind o-umlaut
+(global-set-key "ö" 'my-function) ; bind o-umlaut
 @end smallexample
 
 @noindent
 or
 
 @smallexample
-(global-set-key ?@"o 'my-function) ; bind o-umlaut
+(global-set-key ?ö 'my-function) ; bind o-umlaut
 @end smallexample
 
 @noindent
diff --git a/doc/lispref/lay-flat.texi b/doc/lispref/lay-flat.texi
index 81755b6..947beec 100644
--- a/doc/lispref/lay-flat.texi
+++ b/doc/lispref/lay-flat.texi
@@ -6,8 +6,8 @@
 @comment %**start of header
 @setfilename inner-covers.info
 @settitle Inner Covers
address@hidden docstyle.texi
 @smallbook
address@hidden UTF-8
 @comment %**end of header
 
 @headings off
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 8cb0f3d..c325506 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -958,9 +958,9 @@ Menu,,, emacs, The GNU Emacs Manual}).
 way, specifying @code{tabulated-list-mode} as the second argument
 (@pxref{Derived Modes}).  The body of the @code{define-derived-mode}
 form should specify the format of the tabulated data, by assigning
-values to the variables documented below; then, it should call the
-function @code{tabulated-list-init-header} to initialize the header
-line.
+values to the variables documented below; optionally, it can then call
+the function @code{tabulated-list-init-header}, which will populate a
+header with the names of the columns.
 
   The derived mode should also define a @dfn{listing command}.  This,
 not the mode command, is what the user calls (e.g., @kbd{M-x
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index 05d5ca4..28f90d9 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -1,4 +1,4 @@
address@hidden -*-texinfo-*-
address@hidden -*- mode: texinfo; coding: utf-8 -*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
 @c Copyright (C) 1998-1999, 2001-2015 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
@@ -1817,7 +1817,7 @@ original text:
 @example
 @group
 (decode-coding-string "Gr\374ss Gott" 'latin-1)
-     @result{} #("Gr@"uss Gott" 0 9 (charset iso-8859-1))
+     @result{} #("Grüss Gott" 0 9 (charset iso-8859-1))
 @end group
 @end example
 @end defun
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index c7d71d2..c4c74ec 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -1,4 +1,4 @@
address@hidden -*-texinfo-*-
address@hidden -*- mode: texinfo; coding: utf-8 -*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
 @c Copyright (C) 1990-1995, 1998-1999, 2001-2015 Free Software
 @c Foundation, Inc.
@@ -375,13 +375,7 @@ that, Emacs signals an error.
 codes.  A hexadecimal escape sequence consists of a backslash,
 @samp{x}, and the hexadecimal character code.  Thus, @samp{?\x41} is
 the character @kbd{A}, @samp{?\x1} is the character @kbd{C-a}, and
address@hidden is the character
address@hidden
address@hidden@`a}.
address@hidden iftex
address@hidden
address@hidden with grave accent.
address@hidden ifnottex
address@hidden is the character @kbd{à} (@kbd{a} with grave accent).
 You can use any number of hex digits, so you can represent any
 character code in this way.
 
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index fc47f1c..e7c79d5 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -888,6 +888,14 @@ type @code{nil}.  @xref{Marker Insertion Types}.  
Therefore, when the
 saved point value is restored, it normally comes before the inserted
 text.
 
address@hidden save-mark-and-excursion address@hidden
address@hidden mark excursion
address@hidden point excursion
+This macro is like @code{save-excursion}, but also saves and restores
+the mark location and @code{mark-active}.  This macro does what
address@hidden did before Emacs 25.1.
address@hidden defmac
+
 @node Narrowing
 @section Narrowing
 @cindex narrowing
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index b48fae4..72976b1 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -413,7 +413,7 @@ but their relative order is also preserved:
          (9 . "aaa") (9 . "zzz") (9 . "ppp") (9 . "fff")]
 @end group
 @end example
-                
+
 @xref{Sorting}, for more functions that perform sorting.
 See @code{documentation} in @ref{Accessing Documentation}, for a
 useful example of @code{sort}.
@@ -797,6 +797,42 @@ vector or string (@pxref{Iteration} for more information 
about the
 @code{dolist} macro).  This is primarily useful for side-effects.
 @end defmac
 
address@hidden seq-let arguments sequence address@hidden
address@hidden sequence destructuring
+  This macro binds the variables in defined in the sequence
address@hidden to the elements of the sequence @var{sequence}.
address@hidden can itself include sequences allowing for nested
+destructuring.
+
+The @var{arguments} sequence can also include the @code{&rest} marker
+followed by a variable name to be bound to the rest of
address@hidden
+
address@hidden
address@hidden
+(seq-let [first second] [1 2 3 4]
+  (list first second))
address@hidden (1 2)
address@hidden group
address@hidden
+(seq-let (_ a _ b) '(1 2 3 4)
+  (list a b))
address@hidden (2 4)
address@hidden group
address@hidden
+(seq-let [a [b [c]]] [1 [2 [3]]]
+  (list a b c))
address@hidden (1 2 3)
address@hidden group
address@hidden
+(seq-let [a b &rest others] [1 2 3 4]
+  others)
address@hidden group
address@hidden [3 4]
address@hidden example
address@hidden defmac
+
+
 @node Arrays
 @section Arrays
 @cindex array
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
index 1f21f82..aa35002 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -29,7 +29,7 @@ address@hidden@
 ## In a tarfile of Emacs, the Info files should be up to date.
 buildinfodir = $(srcdir)/../../info
 
-## Directory with emacsver.texi.
+## Directory with docstyle.texi and emacsver.texi.
 emacsdir = $(srcdir)/../emacs
 
 prefix = @prefix@
@@ -108,6 +108,7 @@ ENVADD = 
$(AM_V_GEN)TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" \
          MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
 
 gfdl = ${srcdir}/doclicense.texi
+style = ${emacsdir}/docstyle.texi
 
 .PHONY: info dvi html pdf ps echo-info $(INFO_TARGETS)
 ## Prevent implicit rule triggering for foo.info.
@@ -140,7 +141,7 @@ ${buildinfodir}:
 
 EXTRA_OPTS =
 
-${buildinfodir}/%.info: ${srcdir}/%.texi ${gfdl} | ${buildinfodir}
+${buildinfodir}/%.info: ${srcdir}/%.texi ${gfdl} ${style} | ${buildinfodir}
        $(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) $(EXTRA_OPTS) \
          -o $@ $<
 
@@ -155,13 +156,13 @@ info.info: $(buildinfodir)/info.info
 $(foreach ifile,$(filter-out info.info,$(INFO_TARGETS)),$(eval $(call 
info_template,$(ifile))))
 
 
-%.dvi: ${srcdir}/%.texi ${gfdl}
+%.dvi: ${srcdir}/%.texi ${gfdl} ${style}
        $(ENVADD) $(TEXI2DVI) $<
 
-%.pdf: ${srcdir}/%.texi ${gfdl}
+%.pdf: ${srcdir}/%.texi ${gfdl} ${style}
        $(ENVADD) $(TEXI2PDF) $<
 
-%.html: ${srcdir}/%.texi ${gfdl}
+%.html: ${srcdir}/%.texi ${gfdl} ${style}
        $(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) $(EXTRA_OPTS) \
          -o $@ $<
 
@@ -184,12 +185,13 @@ $(buildinfodir)/semantic.info semantic.dvi semantic.pdf 
semantic.html: ${srcdir}
 
 
 ## Please can we just rename cc-mode.texi to ccmode.texi...
-${buildinfodir}/ccmode.info: ${srcdir}/cc-mode.texi ${gfdl} | ${buildinfodir}
+${buildinfodir}/ccmode.info: \
+  ${srcdir}/cc-mode.texi ${gfdl} ${style} | ${buildinfodir}
        $(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ $<
 
 ## efaq, efaq_w32 do not depend on gfdl.
 ## Maybe we can use .SECONDEXPANSION for this.
-${buildinfodir}/efaq%.info: ${srcdir}/efaq%.texi | ${buildinfodir}
+${buildinfodir}/efaq%.info: ${srcdir}/efaq%.texi ${style} | ${buildinfodir}
        $(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ $<
 
 efaq%.dvi: ${srcdir}/efaq%.texi
@@ -203,7 +205,7 @@ efaq%.html: ${srcdir}/efaq%.texi
 
 ${buildinfodir}/emacs-mime.info emacs-mime.html: EXTRA_OPTS = --enable-encoding
 
-gnus_deps = ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl}
+gnus_deps = ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl} ${style}
 gnus.dvi: $(gnus_deps)
        sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmpdvi.texi
        $(ENVADD) $(TEXI2DVI) gnustmpdvi.texi
diff --git a/doc/misc/ada-mode.texi b/doc/misc/ada-mode.texi
index 539e2b2..e84ef6e 100644
--- a/doc/misc/ada-mode.texi
+++ b/doc/misc/ada-mode.texi
@@ -1,7 +1,7 @@
 \input texinfo  @c -*-texinfo-*-
 @setfilename ../../info/ada-mode.info
 @settitle Ada Mode
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 Copyright @copyright{} 1999--2015 Free Software Foundation, Inc.
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index 177f7cc..082dc1d 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -6,7 +6,7 @@
 
 @setfilename ../../info/auth.info
 @settitle Emacs auth-source Library @value{VERSION}
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 This file describes the Emacs auth-source library.
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi
index 51880d8..acc98ed 100644
--- a/doc/misc/autotype.texi
+++ b/doc/misc/autotype.texi
@@ -5,7 +5,7 @@
 @c @node Autotypist, Picture, Abbrevs, Top
 @c @chapter Features for Automatic Typing
 @settitle Features for Automatic Typing
address@hidden UTF-8
address@hidden docstyle.texi
 @c  @cindex text
 @c  @cindex selfinserting text
 @c  @cindex autotypist
diff --git a/doc/misc/bovine.texi b/doc/misc/bovine.texi
index cd2e736..ec11aa8 100644
--- a/doc/misc/bovine.texi
+++ b/doc/misc/bovine.texi
@@ -4,7 +4,7 @@
 @set TITLE  Bovine parser development
 @set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim
 @settitle @value{TITLE}
address@hidden UTF-8
address@hidden docstyle.texi
 
 @c *************************************************************************
 @c @ Header
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 84eb274..034f42b 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -1,10 +1,10 @@
-\input texinfo                  @c -*-texinfo-*-
+\input texinfo @c -*- mode: texinfo; coding: utf-8 -*-
 @comment %**start of header (This is for running Texinfo on a region.)
 @c smallbook
 @setfilename ../../info/calc.info
 @c [title]
 @settitle GNU Emacs Calc Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @setchapternewpage odd
 @comment %**end of header (This is for running Texinfo on a region.)
 
@@ -1203,9 +1203,7 @@ algebra system for microcomputers.
 Many people have contributed to Calc by reporting bugs and suggesting
 features, large and small.  A few deserve special mention:  Tim Peters,
 who helped develop the ideas that led to the selection commands, rewrite
-rules, and many other algebra features;
address@hidden Fran\c{c}ois
address@hidden Francois
+rules, and many other algebra features; François
 Pinard, who contributed an early prototype of the Calc Summary appendix
 as well as providing valuable suggestions in many other areas of Calc;
 Carl Witty, whose eagle eyes discovered many typographical and factual
@@ -7218,9 +7216,7 @@ so that the mapping operation works; no prime factor will 
ever be
 zero, so adding zeros on the left and right is safe.  From then on
 the job is pretty straightforward.
 
-Incidentally, Calc provides the
address@hidden @dfn{M@"obius} @math{\mu}
address@hidden @dfn{Moebius mu}
+Incidentally, Calc provides the @dfn{Möbius μ}
 function which is zero if and only if its argument is square-free.  It
 would be a much more convenient way to do the above test in practice.
 
@@ -8098,7 +8094,7 @@ argument is exactly what we want to map over:
 @end smallexample
 
 @noindent
-Et address@hidden, September 13, 1991 is a Friday.
+Et voilà, September 13, 1991 is a Friday.
 
 @smallexample
 @group
@@ -19304,9 +19300,7 @@ are relatively prime to @expr{n}.
 @pindex calc-moebius
 @tindex moebius
 The @kbd{k m} (@code{calc-moebius}) address@hidden command computes the
address@hidden M@"obius @math{\mu}
address@hidden Moebius ``mu''
-function.  If the input number is a product of @expr{k}
+Möbius μ function.  If the input number is a product of @expr{k}
 distinct factors, this is @expr{(-1)^k}.  If the input number has any
 duplicate factors (i.e., can be divided by the same prime more than once),
 the result is zero.
@@ -27698,9 +27692,7 @@ the keyboard macro @kbd{' tri($) @key{RET}} to make a 
command that applies
 @code{tri} to the value on the top of the stack.  @xref{Programming}.
 
 @cindex Quaternions
-The following rule set, contributed by
address@hidden Fran\c cois
address@hidden Francois
+The following rule set, contributed by François
 Pinard, implements @dfn{quaternions}, a generalization of the concept of
 complex numbers.  Quaternions have four components, and are here
 represented by function calls @samp{quat(@var{w}, address@hidden, @var{y},
@@ -28048,7 +28040,7 @@ based on a fundamental physical process (although there 
are efforts to
 change this) is the kilogram, which was originally defined as the mass
 of one liter of water, but is now defined as the mass of the
 international prototype of the kilogram (IPK), a cylinder of platinum-iridium
-kept at the Bureau international des poids et mesures in address@hidden,
+kept at the Bureau international des poids et mesures in Sèvres,
 France.  (There are several copies of the IPK throughout the world.)
 The British imperial units, once defined in terms of physical objects,
 were redefined in 1963 in terms of SI units.  The US customary units,
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index b86df18..5ad29cd 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -83,7 +83,7 @@ the second with them pointing to the XEmacs manuals.
 
 @setfilename  ../../info/ccmode.info
 @settitle     CC Mode Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @footnotestyle end
 
 @c The following four macros generate the filenames and titles of the
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 00e47b9..d7b3f4a 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -1,7 +1,7 @@
 \input texinfo    @c -*-texinfo-*-
 @setfilename ../../info/cl.info
 @settitle Common Lisp Extensions
address@hidden UTF-8
address@hidden docstyle.texi
 @include emacsver.texi
 
 @copying
diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi
index 2eef4f4..5dd8bf2 100644
--- a/doc/misc/dbus.texi
+++ b/doc/misc/dbus.texi
@@ -1,8 +1,8 @@
-\input texinfo   @c -*-texinfo-*-
+\input texinfo  @c -*- coding: utf-8 -*-
 @setfilename ../../info/dbus.info
 @c %**start of header
 @settitle Using of D-Bus
address@hidden UTF-8
address@hidden docstyle.texi
 @c @setchapternewpage odd
 @c %**end of header
 
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi
index 90fb511..e6370f3 100644
--- a/doc/misc/dired-x.texi
+++ b/doc/misc/dired-x.texi
@@ -9,7 +9,7 @@
 @comment %**start of header (This is for running Texinfo on a region.)
 @setfilename ../../info/dired-x.info
 @settitle Dired Extra User's Manual
address@hidden UTF-8
address@hidden docstyle.texi
 
 @include emacsver.texi
 
diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi
index 1b24007..74183a4 100644
--- a/doc/misc/ebrowse.texi
+++ b/doc/misc/ebrowse.texi
@@ -3,7 +3,7 @@
 @comment %**start of header
 @setfilename ../../info/ebrowse.info
 @settitle A Class Browser for C++
address@hidden UTF-8
address@hidden docstyle.texi
 @setchapternewpage odd
 @syncodeindex fn cp
 @comment %**end of header
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index dfe22b7..7a824ac 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -1,7 +1,7 @@
 \input texinfo
 @setfilename ../../info/ede.info
 @settitle Emacs Development Environment
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 This file describes EDE, the Emacs Development Environment.
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index de54f28..552e3be 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -1,4 +1,4 @@
-\input texinfo                  @c -*-texinfo-*-
+\input texinfo @c -*- mode: texinfo; coding: utf-8 -*-
 @c documentation for Ediff
 @c Written by Michael Kifer
 
@@ -10,7 +10,7 @@
 @setfilename ../../info/ediff.info
 
 @settitle Ediff User's Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @synindex vr cp
 @synindex fn cp
 @synindex pg cp
@@ -2485,7 +2485,7 @@ Ray Nickson (nickson at cs.uq.oz.au),
 Dan Nicolaescu (dann at ics.uci.edu),
 David Petchey (petchey_david at jpmorgan.com),
 Benjamin Pierce (benjamin.pierce at cl.cam.ac.uk),
-Francois Pinard (pinard at iro.umontreal.ca),
+François Pinard (pinard at iro.umontreal.ca),
 Tibor Polgar (tlp00 at spg.amdahl.com),
 David Prince (dave0d at fegs.co.uk),
 Paul Raines (raines at slac.stanford.edu),
diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi
index c72aca2..91f36e6 100644
--- a/doc/misc/edt.texi
+++ b/doc/misc/edt.texi
@@ -1,7 +1,7 @@
 \input texinfo
 @setfilename ../../info/edt.info
 @settitle EDT Emulation for Emacs
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 This file documents the EDT emulation package for Emacs.
diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi
index 566a6d7..f8a188d 100644
--- a/doc/misc/efaq-w32.texi
+++ b/doc/misc/efaq-w32.texi
@@ -1,6 +1,7 @@
 \input texinfo    @c -*-coding:utf-8 -*-
 @setfilename ../../info/efaq-w32.info
 @settitle GNU Emacs FAQ For MS Windows
address@hidden docstyle.texi
 @setchapternewpage odd
 @syncodeindex pg cp
 @syncodeindex ky cp
@@ -13,9 +14,6 @@ Answers to Frequently asked Questions about using Emacs on 
Microsoft Windows.
 
 @include emacsver.texi
 
address@hidden utf-8
address@hidden en
-
 @copying
 Copyright @copyright{} 2008, 2010-2015 Free Software Foundation, Inc.
 
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi
index 9fc8cfc..3e9109d 100644
--- a/doc/misc/efaq.texi
+++ b/doc/misc/efaq.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename ../../info/efaq.info
 @settitle GNU Emacs FAQ
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @include emacsver.texi
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index 5d1a8cf..fb4e147 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -3,7 +3,7 @@
 @set TITLE Enhanced Implementation of Emacs Interpreted Objects
 @set AUTHOR Eric M. Ludlam
 @settitle @value{TITLE}
address@hidden UTF-8
address@hidden docstyle.texi
 
 @c *************************************************************************
 @c @ Header
diff --git a/doc/misc/emacs-gnutls.texi b/doc/misc/emacs-gnutls.texi
index 25bb9d0..4f6ef01 100644
--- a/doc/misc/emacs-gnutls.texi
+++ b/doc/misc/emacs-gnutls.texi
@@ -4,7 +4,7 @@
 
 @setfilename ../../info/emacs-gnutls.info
 @settitle Emacs GnuTLS Integration @value{VERSION}
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 This file describes the Emacs GnuTLS integration.
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 0147db3..3b3df0f 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -4,6 +4,7 @@
 
 @setfilename ../../info/emacs-mime.info
 @settitle Emacs MIME Manual
address@hidden docstyle.texi
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -27,7 +28,6 @@ modify this GNU manual.''
 @end copying
 
 @c Node ``Interface Functions'' uses non-ASCII characters
address@hidden UTF-8
 
 @dircategory Emacs lisp libraries
 @direntry
diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi
index 8de8604..6830ba7 100644
--- a/doc/misc/epa.texi
+++ b/doc/misc/epa.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename ../../info/epa.info
 @settitle EasyPG Assistant User's Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @set VERSION 1.0.0
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index 9cdfe77..9e570da 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -2,9 +2,9 @@
 @c %**start of header
 @setfilename ../../info/erc.info
 @settitle ERC Manual
address@hidden docstyle.texi
 @syncodeindex fn cp
 @include emacsver.texi
address@hidden UTF-8
 @c %**end of header
 
 @copying
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
index 710ebbb..3192e4b 100644
--- a/doc/misc/ert.texi
+++ b/doc/misc/ert.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename ../../info/ert.info
 @settitle Emacs Lisp Regression Testing
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @dircategory Emacs misc features
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index b2fbd7a..60a1af0 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -2,9 +2,9 @@
 @c %**start of header
 @setfilename ../../info/eshell.info
 @settitle Eshell: The Emacs Shell
address@hidden docstyle.texi
 @defindex cm
 @synindex vr fn
address@hidden UTF-8
 @c %**end of header
 
 @copying
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index 064f570..33c9a0e 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -2,8 +2,8 @@
 @c %**start of header
 @setfilename ../../info/eudc.info
 @settitle Emacs Unified Directory Client (EUDC) Manual
address@hidden docstyle.texi
 @afourpaper
address@hidden UTF-8
 @syncodeindex fn cp
 @syncodeindex vr cp
 @c %**end of header
diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi
index c7f84b5..f1347b7 100644
--- a/doc/misc/eww.texi
+++ b/doc/misc/eww.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename ../../info/eww.info
 @settitle Emacs Web Wowser
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @copying
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 31fa1ab..6c924cf 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -4,8 +4,8 @@
 @set VERSION 0.3
 @set UPDATED April 2004
 @settitle GNU Flymake @value{VERSION}
address@hidden docstyle.texi
 @syncodeindex pg cp
address@hidden UTF-8
 @comment %**end of header
 
 @copying
diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi
index ab284bd..487cebd 100644
--- a/doc/misc/forms.texi
+++ b/doc/misc/forms.texi
@@ -5,6 +5,7 @@
 @comment %**start of header (This is for running Texinfo on a region.)
 @setfilename ../../info/forms.info
 @settitle Forms Mode User's Manual
address@hidden docstyle.texi
 @syncodeindex vr cp
 @syncodeindex fn cp
 @syncodeindex ky cp
@@ -14,7 +15,6 @@
 @end iftex
 @c      @smallbook
 @comment %**end of header (This is for running Texinfo on a region.)
address@hidden UTF-8
 
 @copying
 This file documents Forms mode, a form-editing major mode for GNU Emacs.
diff --git a/doc/misc/gnus-coding.texi b/doc/misc/gnus-coding.texi
index bbead6b..a3be0ed 100644
--- a/doc/misc/gnus-coding.texi
+++ b/doc/misc/gnus-coding.texi
@@ -2,7 +2,7 @@
 
 @setfilename gnus-coding.info
 @settitle Gnus Coding Style and Maintenance Guide
address@hidden UTF-8
address@hidden docstyle.texi
 @syncodeindex fn cp
 @syncodeindex vr cp
 @syncodeindex pg cp
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index 8126827..76d1a52 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -5,7 +5,7 @@
 @c
 @c @setfilename gnus-faq.info
 @c @settitle Frequently Asked Questions
address@hidden @documentencoding UTF-8
address@hidden @include docstyle.texi
 @c %**end of header
 @c
 
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 97e56e1..d801031 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -4,12 +4,11 @@
 
 @setfilename ../../info/gnus.info
 @settitle Gnus Manual
address@hidden docstyle.texi
 @syncodeindex fn cp
 @syncodeindex vr cp
 @syncodeindex pg cp
 
address@hidden UTF-8
-
 @copying
 Copyright @copyright{} 1995--2015 Free Software Foundation, Inc.
 
@@ -9083,7 +9082,7 @@ CRs into LF (this takes care of Mac line endings)
 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
 Quoted-Printable is one common @acronym{MIME} encoding employed when
 sending address@hidden (i.e., 8-bit) articles.  It typically
-makes strings like @samp{d@'address@hidden vu} look like @samp{d=E9j=E0 vu},
+makes strings like @samp{déjà vu} look like @samp{d=E9j=E0 vu},
 which doesn't look very readable to me.  Note that this is usually
 done automatically by Gnus if the message in question has a
 @code{Content-Transfer-Encoding} header that says that this encoding
@@ -16968,7 +16967,7 @@ group as read.
 
 If the search engine changes its output substantially, @code{nnweb}
 won't be able to parse it and will fail.  One could hardly fault the Web
-providers if they were to do this---their @emph{raison d'@^etre} is to
+providers if they were to do this---their @emph{raison d'être} is to
 make money off of advertisements, not to provide services to the
 community.  Since @code{nnweb} washes the ads off all the articles, one
 might think that the providers might be somewhat miffed.  We'll see.
@@ -26815,7 +26814,7 @@ David Moore---rewrite of @file{nnvirtual.el} and many 
other things.
 Kevin Davidson---came up with the name @dfn{ding}, so blame him.
 
 @item
-Fran@,{c}ois Pinard---many, many interesting and thorough bug reports, as
+François Pinard---many, many interesting and thorough bug reports, as
 well as autoconf support.
 
 @end itemize
@@ -26923,7 +26922,7 @@ Gunnar Horrigmo,
 Richard Hoskins,
 Brad Howes,
 Miguel de Icaza,
-Fran@,{c}ois Felix Ingrand,
+François Felix Ingrand,
 Tatsuya Ichikawa, @c Ichikawa
 Ishikawa Ichiro, @c Ishikawa
 Lee Iverson,
diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi
index 8140b43..b14f2d3 100644
--- a/doc/misc/htmlfontify.texi
+++ b/doc/misc/htmlfontify.texi
@@ -2,8 +2,8 @@
 @comment %**start of header
 @setfilename ../../info/htmlfontify.info
 @settitle Htmlfontify User Manual
address@hidden docstyle.texi
 @exampleindent 2
address@hidden UTF-8
 @comment %**end of header
 
 @copying
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index ca449e4..7fe8f51 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -2,6 +2,7 @@
 @c %**start of header
 @setfilename ../../info/idlwave.info
 @settitle IDLWAVE User Manual
address@hidden docstyle.texi
 @synindex ky cp
 @syncodeindex vr cp
 @syncodeindex fn cp
@@ -12,7 +13,6 @@
 @set DATE April, 2007
 @set AUTHOR J.D. Smith & Carsten Dominik
 @set MAINTAINER J.D. Smith
address@hidden UTF-8
 @c %**end of header
 @finalout
 
diff --git a/doc/misc/ido.texi b/doc/misc/ido.texi
index a80620f..afc3238 100644
--- a/doc/misc/ido.texi
+++ b/doc/misc/ido.texi
@@ -1,7 +1,7 @@
 \input texinfo    @c -*-texinfo-*-
 @setfilename ../../info/ido.info
 @settitle Interactive Do
address@hidden UTF-8
address@hidden docstyle.texi
 @include emacsver.texi
 
 @copying
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index 7337b46..1439d30 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -5,10 +5,10 @@
 @comment %**start of header
 @setfilename info.info
 @settitle Info
address@hidden docstyle.texi
 @syncodeindex fn cp
 @syncodeindex vr cp
 @syncodeindex ky cp
address@hidden UTF-8
 @comment %**end of header
 
 @copying
diff --git a/doc/misc/mairix-el.texi b/doc/misc/mairix-el.texi
index 16f4902..ef253a0 100644
--- a/doc/misc/mairix-el.texi
+++ b/doc/misc/mairix-el.texi
@@ -2,8 +2,7 @@
 
 @setfilename ../../info/mairix-el.info
 @settitle Emacs Interface for Mairix
-
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 Copyright @copyright{} 2008--2015 Free Software Foundation, Inc.
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 884d829..d63f7e6 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -4,7 +4,7 @@
 
 @setfilename ../../info/message.info
 @settitle Message Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index fc2303c..8406a80 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -5,7 +5,7 @@
 @c %**start of header
 @setfilename ../../info/mh-e.info
 @settitle The MH-E Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @c Version of the software and manual.
diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi
index dfabb92..9f7b6df 100644
--- a/doc/misc/newsticker.texi
+++ b/doc/misc/newsticker.texi
@@ -4,10 +4,10 @@
 @include emacsver.texi
 @set VERSION @value{EMACSVER}
 @settitle Newsticker @value{VERSION}
address@hidden docstyle.texi
 @syncodeindex vr cp
 @syncodeindex fn cp
 @syncodeindex pg cp
address@hidden UTF-8
 @comment %**end of header
 
 @copying
diff --git a/doc/misc/nxml-mode.texi b/doc/misc/nxml-mode.texi
index d213355..e87e6a0 100644
--- a/doc/misc/nxml-mode.texi
+++ b/doc/misc/nxml-mode.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename ../../info/nxml-mode.info
 @settitle nXML Mode
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @copying
diff --git a/doc/misc/octave-mode.texi b/doc/misc/octave-mode.texi
index 3199ec4..34499c2 100644
--- a/doc/misc/octave-mode.texi
+++ b/doc/misc/octave-mode.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename ../../info/octave-mode.info
 @settitle Octave Mode
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @copying
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index a2cc51e..71572f7 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -1,7 +1,8 @@
-\input texinfo
+\input texinfo  @c -*- coding: utf-8 -*-
 @c %**start of header
 @setfilename ../../info/org.info
 @settitle The Org Manual
address@hidden docstyle.texi
 
 @set VERSION 8.2.9
 
@@ -11,7 +12,6 @@
 @set MAINTAINER Carsten Dominik
 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the 
maintainer}
address@hidden UTF-8
 @c %**end of header
 @finalout
 
@@ -18487,7 +18487,7 @@ enabled source code highlighting in Gnus.
 Max-Planck-Institute for Neurology.  He also inspired the creation of a
 concept index for HTML export.
 @item
address@hidden@"urgen Vollmer} contributed code generating the table of contents
address@hidden Vollmer} contributed code generating the table of contents
 in HTML output.
 @item
 @i{Samuel Wales} has provided important feedback and bug reports.
diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi
index 6970c69..dd2ba38 100644
--- a/doc/misc/pcl-cvs.texi
+++ b/doc/misc/pcl-cvs.texi
@@ -2,8 +2,8 @@
 @c %**start of header
 @setfilename ../../info/pcl-cvs.info
 @settitle PCL-CVS---Emacs Front-End to CVS
address@hidden docstyle.texi
 @syncodeindex vr fn
address@hidden UTF-8
 @c %**end of header
 
 @copying
diff --git a/doc/misc/pgg.texi b/doc/misc/pgg.texi
index a46c0fb..49a2cfd 100644
--- a/doc/misc/pgg.texi
+++ b/doc/misc/pgg.texi
@@ -6,8 +6,7 @@
 
 @set VERSION 0.1
 @settitle PGG @value{VERSION}
-
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 This file describes PGG @value{VERSION}, an Emacs interface to various
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index 646122b..a707ba5 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename ../../info/rcirc.info
 @settitle rcirc Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @copying
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index 6488ae2..726ec4e 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename ../../info/reftex.info
 @settitle RefTeX User Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @synindex ky cp
 @syncodeindex vr cp
 @syncodeindex fn cp
diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi
index 13594d9..d5a03b6 100644
--- a/doc/misc/remember.texi
+++ b/doc/misc/remember.texi
@@ -1,9 +1,9 @@
-\input texinfo @c -*-texinfo-*-
+\input texinfo  @c -*- mode: texinfo; coding: utf-8 -*-
 @c %**start of header
 @setfilename ../../info/remember.info
 @settitle Remember Manual
address@hidden docstyle.texi
 @syncodeindex fn cp
address@hidden UTF-8
 @c %**end of header
 
 @copying
diff --git a/doc/misc/sasl.texi b/doc/misc/sasl.texi
index f6f0a98..86bcd1a 100644
--- a/doc/misc/sasl.texi
+++ b/doc/misc/sasl.texi
@@ -6,8 +6,7 @@
 
 @set VERSION 0.2
 @settitle Emacs SASL Library @value{VERSION}
-
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 This file describes the Emacs SASL library, version @value{VERSION}.
diff --git a/doc/misc/sc.texi b/doc/misc/sc.texi
index a851fa2..ba36672 100644
--- a/doc/misc/sc.texi
+++ b/doc/misc/sc.texi
@@ -3,7 +3,7 @@
 @comment %**start of header (This is for running Texinfo on a region.)
 @setfilename ../../info/sc.info
 @settitle Supercite User's Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @iftex
 @finalout
 @end iftex
diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi
index 5f4a782..71b81e7 100644
--- a/doc/misc/semantic.texi
+++ b/doc/misc/semantic.texi
@@ -3,7 +3,7 @@
 @set TITLE  Semantic Manual
 @set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim
 @settitle @value{TITLE}
address@hidden UTF-8
address@hidden docstyle.texi
 
 @c *************************************************************************
 @c @ Header
diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi
index 0685050..7017429 100644
--- a/doc/misc/ses.texi
+++ b/doc/misc/ses.texi
@@ -2,11 +2,11 @@
 @c %**start of header
 @setfilename ../../info/ses.info
 @settitle @acronym{SES}: Simple Emacs Spreadsheet
address@hidden docstyle.texi
 @setchapternewpage off
 @syncodeindex fn cp
 @syncodeindex vr cp
 @syncodeindex ky cp
address@hidden UTF-8
 @c %**end of header
 
 @copying
diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi
index ca965e6..e9cd9ac 100644
--- a/doc/misc/sieve.texi
+++ b/doc/misc/sieve.texi
@@ -4,7 +4,7 @@
 
 @setfilename ../../info/sieve.info
 @settitle Emacs Sieve Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
diff --git a/doc/misc/smtpmail.texi b/doc/misc/smtpmail.texi
index 314e6a0..2d4e7f9 100644
--- a/doc/misc/smtpmail.texi
+++ b/doc/misc/smtpmail.texi
@@ -1,7 +1,7 @@
 \input texinfo  @c -*-texinfo-*-
 @setfilename ../../info/smtpmail.info
 @settitle Emacs SMTP Library
address@hidden UTF-8
address@hidden docstyle.texi
 @syncodeindex vr fn
 @copying
 Copyright @copyright{} 2003--2015 Free Software Foundation, Inc.
diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi
index da507db..6ad369c 100644
--- a/doc/misc/speedbar.texi
+++ b/doc/misc/speedbar.texi
@@ -1,7 +1,7 @@
 \input texinfo   @c -*-texinfo-*-
 @setfilename ../../info/speedbar.info
 @settitle Speedbar: File/Tag summarizing utility
address@hidden UTF-8
address@hidden docstyle.texi
 @syncodeindex fn cp
 
 @copying
diff --git a/doc/misc/srecode.texi b/doc/misc/srecode.texi
index b58cc4a..98fab5c 100644
--- a/doc/misc/srecode.texi
+++ b/doc/misc/srecode.texi
@@ -4,7 +4,7 @@
 @set TITLE SRecoder Manual
 @set AUTHOR Eric M. Ludlam
 @settitle @value{TITLE}
address@hidden UTF-8
address@hidden docstyle.texi
 
 @c Merge all indexes into a single index for now.
 @c We can always separate them later into two or more as needed.
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 8236d7d..152e985 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{2015-02-05.16}
+\def\texinfoversion{2015-05-06.11}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -3022,11 +3022,16 @@ end
   \TeX
 }
 
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
+% Some math mode symbols.  Define \ensuremath to switch into math mode
+% unless we are already there.  Expansion tricks may not be needed here,
+% but safer, and can't hurt.
+\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi}
+\def\ensuredmath#1{$\relax#1$}
+%
+\def\bullet{\ensuremath\ptexbullet}
+\def\geq{\ensuremath\ge}
+\def\leq{\ensuremath\le}
+\def\minus{\ensuremath-}
 
 % @dots{} outputs an ellipsis using the current font.
 % We do .5em per period so that it has the same spacing in the cm
@@ -9038,7 +9043,7 @@ directory should work if nowhere else does.}
   \gdef^^b4{\'{}}
   \gdef^^b5{$\mu$}
   \gdef^^b6{\P}
-  \gdef^^b7{\ifmmode\cdot\else $\cdot$\fi}
+  \gdef^^b7{\ensuremath\cdot}
   \gdef^^b8{\cedilla\ }
   \gdef^^b9{$^1$}
   \gdef^^ba{\ordm}
@@ -9397,19 +9402,19 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{00A9}{\copyright}
   \DeclareUnicodeCharacter{00AA}{\ordf}
   \DeclareUnicodeCharacter{00AB}{\guillemetleft}
-  \DeclareUnicodeCharacter{00AC}{\ifmmode\lnot\else $\lnot$\fi}
+  \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}
   \DeclareUnicodeCharacter{00AD}{\-}
   \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
   \DeclareUnicodeCharacter{00AF}{\={ }}
 
   \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
-  \DeclareUnicodeCharacter{00B1}{\ifmmode\pm\else $\pm$\fi}
+  \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}
   \DeclareUnicodeCharacter{00B2}{$^2$}
   \DeclareUnicodeCharacter{00B3}{$^3$}
   \DeclareUnicodeCharacter{00B4}{\'{ }}
   \DeclareUnicodeCharacter{00B5}{$\mu$}
   \DeclareUnicodeCharacter{00B6}{\P}
-  \DeclareUnicodeCharacter{00B7}{\ifmmode\cdot\else $\cdot$\fi}
+  \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot}
   \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
   \DeclareUnicodeCharacter{00B9}{$^1$}
   \DeclareUnicodeCharacter{00BA}{\ordm}
@@ -9443,7 +9448,7 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{00D4}{\^O}
   \DeclareUnicodeCharacter{00D5}{\~O}
   \DeclareUnicodeCharacter{00D6}{\"O}
-  \DeclareUnicodeCharacter{00D7}{\ifmmode\times\else $\times$\fi}
+  \DeclareUnicodeCharacter{00D7}{\ensuremath\times}
   \DeclareUnicodeCharacter{00D8}{\O}
   \DeclareUnicodeCharacter{00D9}{\`U}
   \DeclareUnicodeCharacter{00DA}{\'U}
@@ -9477,7 +9482,7 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{00F4}{\^o}
   \DeclareUnicodeCharacter{00F5}{\~o}
   \DeclareUnicodeCharacter{00F6}{\"o}
-  \DeclareUnicodeCharacter{00F7}{\ifmmode\div\else $\div$\fi}
+  \DeclareUnicodeCharacter{00F7}{\ensuremath\div}
   \DeclareUnicodeCharacter{00F8}{\o}
   \DeclareUnicodeCharacter{00F9}{\`u}
   \DeclareUnicodeCharacter{00FA}{\'u}
@@ -9546,7 +9551,7 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
   \DeclareUnicodeCharacter{0136}{\cedilla{K}}
   \DeclareUnicodeCharacter{0137}{\cedilla{k}}
-  \DeclareUnicodeCharacter{0138}{\ifmmode\kappa\else $\kappa$\fi}  
+  \DeclareUnicodeCharacter{0138}{\ensuremath\kappa}  
   \DeclareUnicodeCharacter{0139}{\'L}
   \DeclareUnicodeCharacter{013A}{\'l}
   \DeclareUnicodeCharacter{013B}{\cedilla{L}}
@@ -9813,6 +9818,8 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{201C}{\quotedblleft}
   \DeclareUnicodeCharacter{201D}{\quotedblright}
   \DeclareUnicodeCharacter{201E}{\quotedblbase}
+  \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}
+  \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}
   \DeclareUnicodeCharacter{2022}{\bullet}
   \DeclareUnicodeCharacter{2026}{\dots}
   \DeclareUnicodeCharacter{2039}{\guilsinglleft}
@@ -9824,6 +9831,7 @@ directory should work if nowhere else does.}
 
   \DeclareUnicodeCharacter{2212}{\minus}
   \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}
   \DeclareUnicodeCharacter{2261}{\equiv}
 }% end of \utfeightchardefs
 
@@ -9836,6 +9844,17 @@ directory should work if nowhere else does.}
 \def\nonasciistringdefs{%
   \setnonasciicharscatcode\active
   \def\defstringchar##1{\def##1{\string##1}}%
+  %
+  \defstringchar^^80\defstringchar^^81\defstringchar^^82\defstringchar^^83%
+  \defstringchar^^84\defstringchar^^85\defstringchar^^86\defstringchar^^87%
+  \defstringchar^^88\defstringchar^^89\defstringchar^^8a\defstringchar^^8b%
+  \defstringchar^^8c\defstringchar^^8d\defstringchar^^8e\defstringchar^^8f%
+  %
+  \defstringchar^^90\defstringchar^^91\defstringchar^^92\defstringchar^^93%
+  \defstringchar^^94\defstringchar^^95\defstringchar^^96\defstringchar^^97%
+  \defstringchar^^98\defstringchar^^99\defstringchar^^9a\defstringchar^^9b%
+  \defstringchar^^9c\defstringchar^^9d\defstringchar^^9e\defstringchar^^9f%
+  %
   \defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3%
   \defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7%
   \defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab%
diff --git a/doc/misc/todo-mode.texi b/doc/misc/todo-mode.texi
index 3032da3..69656da 100644
--- a/doc/misc/todo-mode.texi
+++ b/doc/misc/todo-mode.texi
@@ -2,10 +2,10 @@
 @c %**start of header
 @setfilename ../../info/todo-mode.info
 @settitle Todo Mode User Manual
address@hidden docstyle.texi
 @syncodeindex fn cp
 @syncodeindex vr cp
 @syncodeindex ky cp
address@hidden UTF-8
 @c %**end of header
 
 @copying
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 1875a70..ece851d 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -2,7 +2,7 @@
 @setfilename ../../info/tramp.info
 @c %**start of header
 @settitle TRAMP User Manual
address@hidden UTF-8
address@hidden docstyle.texi
 @c %**end of header
 
 @c This is *so* much nicer :)
@@ -91,7 +91,7 @@ copy and modify this GNU manual.''
 @titlepage
 @title @value{tramp} version @value{trampver} User Manual
 @author by Daniel Pittman
address@hidden based on documentation by Kai address@hidden
address@hidden based on documentation by Kai Großjohann
 @page
 @insertcopying
 @end titlepage
@@ -1935,7 +1935,7 @@ of your (local or remote) host, you might need to adapt 
this.  Example:
           "password" "Password"
           ;; Deutsch
           "passwort" "Passwort"
-          ;; Fran@,{c}ais
+          ;; Français
           "mot de passe" "Mot de passe") t)
       ".*:\0? *"))
 @end lisp
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index 8c4afbe..d94b19f 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -1,8 +1,7 @@
 \input texinfo
 @setfilename ../../info/url.info
 @settitle URL Programmer's Manual
-
address@hidden UTF-8
address@hidden docstyle.texi
 
 @iftex
 @c @finalout
diff --git a/doc/misc/vhdl-mode.texi b/doc/misc/vhdl-mode.texi
index 829c4f6..b8b3850 100644
--- a/doc/misc/vhdl-mode.texi
+++ b/doc/misc/vhdl-mode.texi
@@ -2,7 +2,7 @@
 
 @setfilename ../../info/vhdl-mode.info
 @settitle VHDL Mode, an Emacs mode for editing VHDL code
address@hidden UTF-8
address@hidden docstyle.texi
 
 @c Adapted from the VHDL Mode texinfo manual version 2 by Rodney J. Whitby.
 @c Adapted from the CC Mode texinfo manual by Barry A. Warsaw.
diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi
index 250ced9..4680a09 100644
--- a/doc/misc/vip.texi
+++ b/doc/misc/vip.texi
@@ -1,8 +1,7 @@
 \input texinfo
 @setfilename ../../info/vip.info
 @settitle VIP
-
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 Copyright @copyright{} 1987, 2001--2015 Free Software Foundation, Inc.
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index cfaf4e6..f449e3b 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -5,8 +5,7 @@
 @comment @setfilename viper
 @comment @setfilename viper.info
 @setfilename ../../info/viper.info
-
address@hidden UTF-8
address@hidden docstyle.texi
 
 @copying
 Copyright @copyright{} 1995--1997, 2001--2015 Free Software Foundation, Inc.
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index 1942b79..ea78550 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -2,10 +2,10 @@
 @c %**start of header
 @setfilename ../../info/widget.info
 @settitle The Emacs Widget Library
address@hidden docstyle.texi
 @syncodeindex fn cp
 @syncodeindex vr cp
 @syncodeindex ky cp
address@hidden UTF-8
 @c %**end of header
 
 @copying
diff --git a/doc/misc/wisent.texi b/doc/misc/wisent.texi
index 16b5d12..7bcc46d 100644
--- a/doc/misc/wisent.texi
+++ b/doc/misc/wisent.texi
@@ -4,6 +4,7 @@
 @set TITLE  Wisent Parser Development
 @set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim
 @settitle @value{TITLE}
address@hidden docstyle.texi
 
 @c *************************************************************************
 @c @ Header
@@ -20,7 +21,6 @@
 @c @footnotestyle separate
 @c @paragraphindent 2
 @c @@smallbook
address@hidden UTF-8
 @c %**end of header
 
 @copying
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi
index a935bed..f1286fc 100644
--- a/doc/misc/woman.texi
+++ b/doc/misc/woman.texi
@@ -2,13 +2,13 @@
 @c %**start of header
 @setfilename ../../info/woman.info
 @settitle WoMan: Browse Unix Manual Pages ``W.O. (without) Man''
address@hidden docstyle.texi
 @include emacsver.texi
 @afourpaper
 @c With different size paper the printed page breaks will need attention!
 @c Look for @page and @need commands.
 @setchapternewpage off
 @paragraphindent 0
address@hidden UTF-8
 @c %**end of header
 
 @copying
diff --git a/etc/NEWS b/etc/NEWS
index b408b51..fdd0c87 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -205,6 +205,10 @@ font, and (iii) the specified window.
    `message' and related functions from displaying messages the Echo
    Area.  The output is still logged to the *Messages* buffer.
 
+** It is now safe for a mode that derives `tabulated-list-mode' to not
+call `tabulated-list-init-header', in which case it will have no
+header.
+
 
 * Editing Changes in Emacs 25.1
 
@@ -213,6 +217,9 @@ successive char insertions.
 
 ** Unicode names entered via C-x 8 RET now use substring completion by default.
 
+** C-x 8 now has shorthands for these chars: ‐ ‑ ‒ – — ― ‘ ’ “ ” † ‡ • ′ ″
+€ № ← → ↔ − ≈ ≠ ≤ ≥.  As before, you can type C-x 8 C-h to list shorthands.
+
 ** New minor mode global-eldoc-mode is enabled by default.
 
 ** Emacs now supports "bracketed paste mode" when running on a terminal
@@ -237,6 +244,15 @@ Unicode standards.
 
 
 * Changes in Specialized Modes and Packages in Emacs 25.1
+
+** New `xterm-screen-extra-capabilities' config.
+
+** The `save-place' variable is replaced by a `save-place-mode'.
+
+** Midnight-mode
+*** `midnight-mode' is a proper minor mode.
+*** clean-buffer-*-regexps can now specify buffers via predicate functions.
+
 ** In xterms, killing text now also sets the CLIPBOARD/PRIMARY selection
 in the surrounding GUI (using the OSC-52 escape sequence).  This only works
 if your xterm supports it and enables the `allowWindowOps' options (disabled
@@ -246,6 +262,17 @@ by default at least in Debian, for security reasons).
 
 ** package.el
 
+*** New "external" package status.
+An external package is any installed package that's not built-in and
+not from `package-user-dir', which usually means it's from an entry in
+`package-directory-list'.  They are treated much like built-in
+packages, in that they cannot be deleted through the package menu and
+are not considered for upgrades.
+
+The effect, is that a user can manually place a specific version of a
+package inside `package-directory-list' and the package menu will
+always respect that.
+
 *** If a package is available on multiple archives and one has higher
 priority (as per `package-archive-priorities') only that one is
 listed. This can be configured with `package-menu-hide-low-priority'.
@@ -530,6 +557,10 @@ and comments.
 
 ** VC and related modes
 
+*** Basic push support, via `vc-push', bound to `C-x v P'.
+Implemented for Bzr, Git, Hg.  As part of this change, the pre-existing
+(undocumented) command vc-hg-push now behaves slightly differently.
+
 *** The new command vc-region-history shows the log+diff of the active region.
 
 *** New option `vc-annotate-background-mode' controls whether
@@ -543,6 +574,11 @@ allows to customize this.
 *** Two new faces `compare-windows-removed' and `compare-windows-added'
 replace the obsolete face `compare-windows'.
 
+---
+*** `log-edit-insert-changelog' converts "(tiny change)" to
+"Copyright-paperwork-exempt: yes".  Set `log-edit-rewrite-tiny-change'
+nil to disable this.
+
 ** VHDL mode supports VHDL'08.
 
 ** Calculator: decimal display mode uses "," groups, so it's more
@@ -626,6 +662,9 @@ to avoid interfering with the kill ring.
 *** Custom variable `eudc-inline-expansion-format' defaults to
 "Firstname Surname <mail-address>".
 
+*** Custom variable `eudc-options-file' defaults to
+"~/.emacs.d/eudc-options".
+
 *** New custom variable `ldap-ldapsearch-password-prompt-regexp' to
 allow overriding the regular expression that recognizes the ldapsearch
 command line's password prompt.
@@ -681,6 +720,11 @@ a typographically-correct documents.
 
 * Incompatible Lisp Changes in Emacs 25.1
 
+** `indirect-function' does not signal `void-function' any more.
+This is mostly a bug-fix, since this change was missed back in 24.4 when
+symbol-function was changed not to signal `void-function' any more.
+*** As a consequence, the second arg of `indirect-function' is now obsolete.
+
 ** Comint, term, and compile do not set the EMACS env var any more.
 Use the INSIDE_EMACS environment variable instead.
 
@@ -732,6 +776,8 @@ behavior, set `diff-switches' to `-c'.
 
 * Lisp Changes in Emacs 25.1
 
+** The default value of `load-read-function' is now `read'.
+
 ** New hook `pre-redisplay-functions', a bit easier to use than 
pre-redisplay-function.
 
 ** The second arg of `looking-back' should always be provided explicitly.
@@ -807,6 +853,9 @@ name.  The variable `system-name' is now obsolete.
 +++
 ** Function `write-region' no longer outputs "Wrote FILE" in batch mode.
 
+** If `pwd' is called with a prefix argument, insert the current default
+directory at point.
+
 ---
 ** New utilities in subr-x.el:
 *** New macros `if-let' and `when-let' allow defining bindings and to
diff --git a/etc/refcards/cs-dired-ref.tex b/etc/refcards/cs-dired-ref.tex
index 29a9b09..ac1d27a 100644
--- a/etc/refcards/cs-dired-ref.tex
+++ b/etc/refcards/cs-dired-ref.tex
@@ -1,4 +1,4 @@
-% Reference Card for Dired
+% Reference Card for Dired -*- coding: utf-8 -*-
 
 % Copyright (C) 2000-2015 Free Software Foundation, Inc.
 
diff --git a/etc/refcards/cs-refcard.tex b/etc/refcards/cs-refcard.tex
index 29ea258..3158b5b 100644
--- a/etc/refcards/cs-refcard.tex
+++ b/etc/refcards/cs-refcard.tex
@@ -1,4 +1,4 @@
-% Reference Card for GNU Emacs
+% Reference Card for GNU Emacs -*- coding: utf-8 -*-
 
 % Copyright (C) 1987, 1993, 1996-1997, 2001-2015 Free Software
 % Foundation, Inc.
diff --git a/etc/refcards/cs-survival.tex b/etc/refcards/cs-survival.tex
index 72162c3..cdf261a 100644
--- a/etc/refcards/cs-survival.tex
+++ b/etc/refcards/cs-survival.tex
@@ -1,4 +1,4 @@
-% Title:  GNU Emacs Survival Card
+% Title:  GNU Emacs Survival Card -*- coding: utf-8 -*-
 
 % Copyright (C) 2000-2015 Free Software Foundation, Inc.
 
diff --git a/etc/refcards/sk-dired-ref.tex b/etc/refcards/sk-dired-ref.tex
index 8f89856..57a4b5b 100644
--- a/etc/refcards/sk-dired-ref.tex
+++ b/etc/refcards/sk-dired-ref.tex
@@ -1,4 +1,4 @@
-% Reference Card for Dired
+% Reference Card for Dired -*- coding: utf-8 -*-
 
 % Copyright (C) 2000-2015 Free Software Foundation, Inc.
 
diff --git a/etc/refcards/sk-refcard.tex b/etc/refcards/sk-refcard.tex
index a8d0760..e2df212 100644
--- a/etc/refcards/sk-refcard.tex
+++ b/etc/refcards/sk-refcard.tex
@@ -1,4 +1,4 @@
-% Reference Card for GNU Emacs
+% Reference Card for GNU Emacs -*- coding: utf-8 -*-
 
 % Copyright (C) 1987, 1993, 1996-1997, 2001-2015 Free Software
 % Foundation, Inc.
diff --git a/etc/refcards/sk-survival.tex b/etc/refcards/sk-survival.tex
index 363716c..9f25b6a 100644
--- a/etc/refcards/sk-survival.tex
+++ b/etc/refcards/sk-survival.tex
@@ -1,4 +1,4 @@
-% Title:  GNU Emacs Survival Card
+% Title:  GNU Emacs Survival Card -*- coding: utf-8 -*-
 
 % Copyright (C) 2000-2015 Free Software Foundation, Inc.
 
diff --git a/etc/themes/tsdh-light-theme.el b/etc/themes/tsdh-light-theme.el
index 6555e49..397885a 100644
--- a/etc/themes/tsdh-light-theme.el
+++ b/etc/themes/tsdh-light-theme.el
@@ -26,7 +26,8 @@ Used and created by Tassilo Horn.")
 (custom-theme-set-faces
  'tsdh-light
  '(Info-quoted ((t (:weight bold))))
- '(ace-jump-face-foreground ((t (:foreground "DeepPink" :box (:line-width -1 
:color "grey75") :weight bold))))
+ '(ace-jump-face-foreground ((t (:foreground "DeepPink" :box nil :weight 
bold))))
+ '(aw-leading-char-face ((t (:inherit ace-jump-face-foreground))))
  '(default ((t (:background "white" :foreground "black"))))
  '(diff-added ((t (:inherit diff-changed :background "light green"))))
  '(diff-changed ((t (:background "light steel blue"))))
diff --git a/lib-src/etags.c b/lib-src/etags.c
index b1361db..7bacbd3 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -68,8 +68,8 @@ University of California, as described above. */
  * 1994 Line-by-line regexp tags by Tom Tromey.
  * 2001 Nested classes by Francesco Potortì (concept by Mykola Dzyuba).
  * 2002 #line directives by Francesco Potortì.
- *
- * Francesco Potortì <address@hidden> has maintained and improved it since 
1993.
+ * Francesco Potortì maintained and improved it for many years
+   starting in 1993.
  */
 
 /*
@@ -2862,7 +2862,10 @@ consider_token (char *str, int len, int c, int *c_extp,
      case st_none:
        if (constantypedefs
           && structdef == snone
-          && structtype == st_C_enum && bracelev > structbracelev)
+          && structtype == st_C_enum && bracelev > structbracelev
+          /* Don't tag tokens in expressions that assign values to enum
+             constants.  */
+          && fvdef != vignore)
         return true;           /* enum constant */
        switch (fvdef)
         {
@@ -3176,7 +3179,19 @@ C_entries (int c_ext, FILE *inf)
                      cpptoken = false;
                  }
              if (cpptoken)
-               definedef = dsharpseen;
+               {
+                 definedef = dsharpseen;
+                 /* This is needed for tagging enum values: when there are
+                    preprocessor conditionals inside the enum, we need to
+                    reset the value of fvdef so that the next enum value is
+                    tagged even though the one before it did not end in a
+                    comma.  */
+                 if (fvdef == vignore && instruct && parlev == 0)
+                   {
+                     if (strneq (cp, "#if", 3) || strneq (cp, "#el", 3))
+                       fvdef = fvnone;
+                   }
+               }
            } /* if (definedef == dnone) */
          continue;
        case '[':
@@ -3507,7 +3522,10 @@ C_entries (int c_ext, FILE *inf)
            case fstartlist:
            case finlist:
            case fignore:
+             break;
            case vignore:
+             if (instruct && parlev == 0)
+               fvdef = fvnone;
              break;
            case fdefunname:
              fvdef = fignore;
diff --git a/lisp/allout.el b/lisp/allout.el
index 689bed5..2cdac99 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -6051,8 +6051,8 @@ See `allout-toggle-current-subtree-encryption' for more 
details."
 (declare-function epg-decrypt-string "epg" (context cipher))
 (declare-function epg-encrypt-string "epg"
                   (context plain recipients &optional sign always-trust))
-(declare-function epg-user-id-string "epg" (user-id))
-(declare-function epg-key-user-id-list "epg" (key))
+(declare-function epg-user-id-string "epg" (user-id) t)
+(declare-function epg-key-user-id-list "epg" (key) t)
 
 ;;;_  > allout-encrypt-string (text decrypt allout-buffer keymode-cue
 ;;;                                 &optional rejected)
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 58bbdb8..1cc11b4 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -154,6 +154,7 @@
 (declare-function math-parse-date "calc-forms" (math-pd-str))
 (declare-function math-lessp "calc-ext" (a b))
 (declare-function math-compare "calc-ext" (a b))
+(declare-function math-zerop "calc-misc" (a))
 (declare-function calc-embedded-finish-command "calc-embed" ())
 (declare-function calc-embedded-select-buffer "calc-embed" ())
 (declare-function calc-embedded-mode-line-change "calc-embed" ())
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 074fda9..43660a8 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -339,7 +339,7 @@ Argument MENU-DEF is the menu definition to use."
          (progn
            (while (and class (slot-exists-p class 'menu))
              ;;(message "Looking at class %S" class)
-             (setq menu (append menu (oref class menu))
+             (setq menu (append menu (oref-default class menu))
                    class (eieio-class-parent class))
              (if (listp class) (setq class (car class))))
            (append
diff --git a/lisp/cedet/ede/config.el b/lisp/cedet/ede/config.el
index f91a6c1..f5578a2 100644
--- a/lisp/cedet/ede/config.el
+++ b/lisp/cedet/ede/config.el
@@ -268,6 +268,8 @@ programs from a project.")
         (cmdsym (intern-soft (car cmdsplit))))
     (call-interactively cmdsym t)))
 
+(declare-function ede-shell-run-something "ede/shell")
+
 (cl-defmethod project-run-target ((target ede-target-with-config-program))
   "Run the current project derived from TARGET."
   (let* ((proj (ede-target-parent target))
@@ -358,8 +360,14 @@ parsed again."))
 This target brings in methods used by Semantic to query
 the preprocessor map, and include paths.")
 
+(declare-function semanticdb-file-table-object "semantic/db"
+                 (file &optional dontload))
+(declare-function semanticdb-needs-refresh-p "semantic/db" (arg &rest args))
+(declare-function semanticdb-refresh-table "semantic/db" (arg &rest args))
+
 (cl-defmethod ede-preprocessor-map ((this ede-target-with-config-c))
   "Get the pre-processor map for some generic C code."
+  (require 'semantic/sb)
   (let* ((proj (ede-target-parent this))
         (root (ede-project-root proj))
         (config (ede-config-get-configuration proj))
diff --git a/lisp/cedet/ede/generic.el b/lisp/cedet/ede/generic.el
index 7e1425f..9e6fc97 100644
--- a/lisp/cedet/ede/generic.el
+++ b/lisp/cedet/ede/generic.el
@@ -230,7 +230,7 @@ If one doesn't exist, create a new one for this directory."
     (when ext
       (dolist (C classes)
        (let* ((classsym (intern (car C)))
-              (extreg (oref classsym extension)))
+              (extreg (oref-default classsym extension)))
          (when (and (not (string= extreg ""))
                     (string-match (concat "\\`\\(?:" extreg "\\)\\'") ext))
            (setq cls classsym)))))
diff --git a/lisp/cedet/ede/locate.el b/lisp/cedet/ede/locate.el
index 2ff8341..a076c46 100644
--- a/lisp/cedet/ede/locate.el
+++ b/lisp/cedet/ede/locate.el
@@ -353,7 +353,7 @@ that created this EDE locate object."
 
 (cl-defmethod ede-locate-create/update-root-database
   ((loc (subclass ede-locate-cscope)) root)
-  "Create or update the GNU Global database for the current project."
+  "Create or update the Cscope database for the current project."
   (require 'cedet-cscope)
   (cedet-cscope-create/update-database root))
 
diff --git a/lisp/cedet/pulse.el b/lisp/cedet/pulse.el
index 89d44c2..39ba13c 100644
--- a/lisp/cedet/pulse.el
+++ b/lisp/cedet/pulse.el
@@ -121,7 +121,7 @@ http://www.emacswiki.org/cgi-bin/wiki/hexrgb.el";
   :group 'pulse
   :type 'number)
 (defcustom pulse-delay .03
-  "Delay between face lightening iterations, as used by `sit-for'."
+  "Delay between face lightening iterations."
   :group 'pulse
   :type 'number)
 
@@ -133,7 +133,8 @@ Return t if there is more drift to do, nil if completed."
     (let* ((frame (color-values (face-background 'default)))
           (start (color-values (face-background
                                 (get 'pulse-highlight-face
-                                     :startface))))
+                                     :startface)
+                                 nil t)))
           (frac  (list (/ (- (nth 0 frame) (nth 0 start)) pulse-iterations)
                        (/ (- (nth 1 frame) (nth 1 start)) pulse-iterations)
                        (/ (- (nth 2 frame) (nth 2 start)) pulse-iterations)))
@@ -154,35 +155,28 @@ Return t if there is more drift to do, nil if completed."
   "Reset the pulse highlighting FACE."
   (set-face-background 'pulse-highlight-face
                       (if face
-                          (face-background face)
+                          (face-background face nil t)
                         (face-background 'pulse-highlight-start-face)
                         ))
   (put 'pulse-highlight-face :startface (or face
                                            'pulse-highlight-start-face))
   (put 'pulse-highlight-face :iteration 0))
 
-(defun pulse (&optional face)
-  "Pulse the colors on our highlight face.
-If optional FACE is provided, reset the face to FACE color,
-instead of `pulse-highlight-start-face'.
-Be sure to call `pulse-reset-face' after calling pulse."
-  (unwind-protect
-      (progn
-       (pulse-reset-face face)
-       (while (and (pulse-lighten-highlight)
-                   (sit-for pulse-delay))
-         nil))))
-
 ;;; Convenience Functions
 ;;
 (defvar pulse-momentary-overlay nil
   "The current pulsing overlay.")
 
+(defvar pulse-momentary-timer nil
+  "The current pulsing timer.")
+
 (defun pulse-momentary-highlight-overlay (o &optional face)
   "Pulse the overlay O, unhighlighting before next command.
 Optional argument FACE specifies the face to do the highlighting."
+  ;; We don't support simultaneous highlightings.
+  (pulse-momentary-unhighlight)
   (overlay-put o 'original-face (overlay-get o 'face))
-  (add-to-list 'pulse-momentary-overlay o)
+  (setq pulse-momentary-overlay o)
   (if (eq pulse-flag 'never)
       nil
     (if (or (not pulse-flag) (not (pulse-available-p)))
@@ -191,39 +185,46 @@ Optional argument FACE specifies the face to do the 
highlighting."
          (overlay-put o 'face (or face 'pulse-highlight-start-face))
          (add-hook 'pre-command-hook
                    'pulse-momentary-unhighlight))
-      ;; pulse it.
-      (unwind-protect
-         (progn
-           (overlay-put o 'face 'pulse-highlight-face)
-           ;; The pulse function puts FACE onto 'pulse-highlight-face.
-           ;; Thus above we put our face on the overlay, but pulse
-           ;; with a reference face needed for the color.
-           (pulse face))
-       (pulse-momentary-unhighlight)))))
+      ;; Pulse it.
+      (overlay-put o 'face 'pulse-highlight-face)
+      ;; The pulse function puts FACE onto 'pulse-highlight-face.
+      ;; Thus above we put our face on the overlay, but pulse
+      ;; with a reference face needed for the color.
+      (pulse-reset-face face)
+      (setq pulse-momentary-timer
+            (run-with-timer 0 pulse-delay #'pulse-tick
+                            (time-add (current-time)
+                                      (* pulse-delay pulse-iterations)))))))
+
+(defun pulse-tick (stop-time)
+  (if (time-less-p (current-time) stop-time)
+      (pulse-lighten-highlight)
+    (pulse-momentary-unhighlight)))
 
 (defun pulse-momentary-unhighlight ()
   "Unhighlight a line recently highlighted."
-  ;; If someone passes in an overlay, then pulse-momentary-overlay
-  ;; will still be nil, and won't need modifying.
   (when pulse-momentary-overlay
     ;; clear the starting face
-    (mapc
-     (lambda (ol)
-       (overlay-put ol 'face (overlay-get ol 'original-face))
-       (overlay-put ol 'original-face nil)
-       ;; Clear the overlay if it needs deleting.
-       (when (overlay-get ol 'pulse-delete) (delete-overlay ol)))
-     pulse-momentary-overlay)
+    (let ((ol pulse-momentary-overlay))
+      (overlay-put ol 'face (overlay-get ol 'original-face))
+      (overlay-put ol 'original-face nil)
+      ;; Clear the overlay if it needs deleting.
+      (when (overlay-get ol 'pulse-delete) (delete-overlay ol)))
 
     ;; Clear the variable.
-    (setq pulse-momentary-overlay nil))
+    (setq pulse-momentary-overlay nil)
+
+    ;; Reset the pulsing face.
+    (pulse-reset-face))
 
-  ;; Reset the pulsing face.
-  (pulse-reset-face)
+  ;; Cancel the timer.
+  (when pulse-momentary-timer
+    (cancel-timer pulse-momentary-timer))
 
   ;; Remove this hook.
   (remove-hook 'pre-command-hook 'pulse-momentary-unhighlight))
 
+;;;###autoload
 (defun pulse-momentary-highlight-one-line (point &optional face)
   "Highlight the line around POINT, unhighlighting before next command.
 Optional argument FACE specifies the face to do the highlighting."
@@ -237,6 +238,7 @@ Optional argument FACE specifies the face to do the 
highlighting."
                  (point))))
       (pulse-momentary-highlight-region start end face))))
 
+;;;###autoload
 (defun pulse-momentary-highlight-region (start end &optional face)
   "Highlight between START and END, unhighlighting before next command.
 Optional argument FACE specifies the face to do the highlighting."
diff --git a/lisp/cedet/semantic/bovine/c.el b/lisp/cedet/semantic/bovine/c.el
index aa93e24..e86f09c 100644
--- a/lisp/cedet/semantic/bovine/c.el
+++ b/lisp/cedet/semantic/bovine/c.el
@@ -498,12 +498,12 @@ code to parse."
         (parsedtokelist
          (condition-case nil
              ;; This is imperfect, so always assume on error.
-             (hif-canonicalize)
+             (hif-canonicalize hif-ifx-regexp)
            (error nil))))
 
     (let ((eval-form (condition-case err
                         (eval parsedtokelist)
-                      (error 
+                      (error
                        (semantic-push-parser-warning
                         (format "Hideif forms produced an error.  Assuming 
false.\n%S" err)
                         (point) (1+ (point)))
diff --git a/lisp/cedet/semantic/bovine/gcc.el 
b/lisp/cedet/semantic/bovine/gcc.el
index 19d1491..fe7a144 100644
--- a/lisp/cedet/semantic/bovine/gcc.el
+++ b/lisp/cedet/semantic/bovine/gcc.el
@@ -86,13 +86,11 @@ to give to the program."
           (let ((chars (append line nil)))
             (when (= 32 (nth 0 chars))
               (let ((path (substring line 1)))
-                (when (file-accessible-directory-p path)
-                  (when (if (memq system-type '(windows-nt))
-                            (/= ?/ (nth 1 chars))
-                          (= ?/ (nth 1 chars)))
-                    (add-to-list 'inc-path
-                                 (expand-file-name (substring line 1))
-                                 t)))))))))
+                (when (and (file-accessible-directory-p path)
+                           (file-name-absolute-p path))
+                  (add-to-list 'inc-path
+                               (expand-file-name path)
+                               t))))))))
     inc-path))
 
 
@@ -166,8 +164,9 @@ It should also include other symbols GCC was compiled 
with.")
          (host (or (cdr (assoc 'target fields))
                    (cdr (assoc '--target fields))
                    (cdr (assoc '--host fields))))
-         (prefix (cdr (assoc '--prefix fields)))
+         ;; (prefix (cdr (assoc '--prefix fields)))
          ;; gcc output supplied paths
+         ;; FIXME: Where are `c-include-path' and `c++-include-path' used?
          (c-include-path (semantic-gcc-get-include-paths "c"))
          (c++-include-path (semantic-gcc-get-include-paths "c++"))
         (gcc-exe (locate-file "gcc" exec-path exec-suffixes 'executable))
diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el
index b20a756..432f638 100644
--- a/lisp/cedet/semantic/db-el.el
+++ b/lisp/cedet/semantic/db-el.el
@@ -223,11 +223,11 @@ TOKTYPE is a hint to the type of tag desired."
            (symbol-name sym)
            "class"
            (semantic-elisp-desymbolify
-             (let ((class (find-class sym)))
-               (if (fboundp 'eieio-slot-descriptor-name)
-                   (mapcar #'eieio-slot-descriptor-name
-                           (eieio-class-slots class))
-                 (eieio--class-public-a class))))
+            (let ((class (find-class sym)))
+              (if (fboundp 'eieio--class-public-a) ; Emacs < 25.1
+                  (eieio--class-public-a class)
+                (mapcar #'eieio-slot-descriptor-name
+                        (eieio-class-slots class)))))
            (semantic-elisp-desymbolify (eieio-class-parents sym)) ;; parents
            ))
          ((not toktype)
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index 7a92a12..fc7e9e6 100644
--- a/lisp/cedet/semantic/grammar.el
+++ b/lisp/cedet/semantic/grammar.el
@@ -628,39 +628,38 @@ The symbols in the list are local variables in
                              t)
       (match-string 0))))
 
+(defun semantic-grammar--template-expand (template env)
+  (mapconcat (lambda (S)
+               (if (stringp S) S
+                 (let ((x (assq S env)))
+                   (cond
+                    (x (cdr x))
+                    ((symbolp S) (symbol-value S))))))
+             template ""))
+
 (defun semantic-grammar-header ()
   "Return text of a generated standard header."
-  (let ((file (semantic-grammar-buffer-file
+  (semantic-grammar--template-expand
+   semantic-grammar-header-template
+   `((file . ,(semantic-grammar-buffer-file
                semantic--grammar-output-buffer))
-        (gram (semantic-grammar-buffer-file))
-        (date (format-time-string "%Y-%m-%d %T%z"))
-        (vcid (concat "$" "Id" "$")) ;; Avoid expansion
-        ;; Try to get the copyright from the input grammar, or
-        ;; generate a new one if not found.
-        (copy (or (semantic-grammar-copyright-line)
+     (gram . ,(semantic-grammar-buffer-file))
+     (date . ,(format-time-string "%Y-%m-%d %T%z"))
+     (vcid . ,(concat "$" "Id" "$")) ;; Avoid expansion
+     ;; Try to get the copyright from the input grammar, or
+     ;; generate a new one if not found.
+     (copy . ,(or (semantic-grammar-copyright-line)
                   (concat (format-time-string ";; Copyright (C) %Y ")
-                          user-full-name)))
-       (out ""))
-    (dolist (S semantic-grammar-header-template)
-      (cond ((stringp S)
-            (setq out (concat out S)))
-           ((symbolp S)
-            (setq out (concat out (symbol-value S))))))
-    out))
+                          user-full-name))))))
 
 (defun semantic-grammar-footer ()
   "Return text of a generated standard footer."
-  (let* ((file (semantic-grammar-buffer-file
-                semantic--grammar-output-buffer))
-         (libr (or semantic--grammar-provide
-                  semantic--grammar-package))
-        (out ""))
-    (dolist (S semantic-grammar-footer-template)
-      (cond ((stringp S)
-            (setq out (concat out S)))
-           ((symbolp S)
-            (setq out (concat out (symbol-value S))))))
-    out))
+  (semantic-grammar--template-expand
+   semantic-grammar-footer-template
+   `((file . ,(semantic-grammar-buffer-file
+               semantic--grammar-output-buffer))
+     (libr . ,(or semantic--grammar-provide
+                  semantic--grammar-package)))))
 
 (defun semantic-grammar-token-data ()
   "Return the string value of the table of lexical tokens."
@@ -714,7 +713,7 @@ Block definitions are read from the current table of 
lexical types."
         (let* ((blocks       (cdr (semantic-lex-type-value "block" t)))
                (open-delims  (cdr (semantic-lex-type-value "open-paren" t)))
                (close-delims (cdr (semantic-lex-type-value "close-paren" t)))
-               olist clist block-spec delim-spec open-spec close-spec)
+               olist clist delim-spec open-spec close-spec)
           (dolist (block-spec blocks)
             (setq delim-spec (semantic-grammar--lex-delim-spec block-spec)
                   open-spec  (assq (car  delim-spec) open-delims)
@@ -818,7 +817,7 @@ Block definitions are read from the current table of 
lexical types."
 
 ;;; Generation of the grammar support file.
 ;;
-(defcustom semantic-grammar-file-regexp "\\.[wb]y$"
+(defcustom semantic-grammar-file-regexp "\\.[wb]y\\'"
   "Regexp which matches grammar source files."
   :group 'semantic
   :type 'regexp)
@@ -1073,7 +1072,7 @@ See also the variable `semantic-grammar-file-regexp'."
 (defvar semantic--grammar-macros-regexp-2 nil)
 (make-variable-buffer-local 'semantic--grammar-macros-regexp-2)
 
-(defun semantic--grammar-clear-macros-regexp-2 (&rest ignore)
+(defun semantic--grammar-clear-macros-regexp-2 (&rest _)
   "Clear the cached regexp that match macros local in this grammar.
 IGNORE arguments.
 Added to `before-change-functions' hooks to be run before each text
@@ -1659,21 +1658,17 @@ Select the buffer containing the tag's definition, and 
move point there."
     )
   "Association of syntax elements, and the corresponding help.")
 
-(declare-function eldoc-function-argstring "eldoc")
-(declare-function eldoc-docstring-format-sym-doc "eldoc")
-(declare-function eldoc-last-data-store "eldoc")
-(declare-function eldoc-get-fnsym-args-string "eldoc")
-(declare-function eldoc-get-var-docstring "eldoc")
-
 (defvar semantic-grammar-eldoc-last-data (cons nil nil))
 
 (defun semantic-grammar-eldoc-get-macro-docstring (macro expander)
   "Return a one-line docstring for the given grammar MACRO.
 EXPANDER is the name of the function that expands MACRO."
   (require 'eldoc)
-  (if (eq expander (car semantic-grammar-eldoc-last-data))
-      (cdr semantic-grammar-eldoc-last-data)
-    (let ((doc (help-split-fundoc (documentation expander t) expander)))
+  (cond
+   ((eq expander (car semantic-grammar-eldoc-last-data))
+    (cdr semantic-grammar-eldoc-last-data))
+   ((fboundp 'eldoc-function-argstring) ;; Emacs<25
+    (let* ((doc (help-split-fundoc (documentation expander t) expander)))
       (cond
        (doc
         (setq doc (car doc))
@@ -1686,7 +1681,16 @@ EXPANDER is the name of the function that expands MACRO."
              (eldoc-docstring-format-sym-doc
               macro (format "==> %s %s" expander doc) 'default))
         (setq semantic-grammar-eldoc-last-data (cons expander doc)))
-      doc)))
+      doc))
+   ((fboundp 'elisp-get-fnsym-args-string) ;; Emacs≥25
+    (elisp-get-fnsym-args-string
+     expander nil
+     (concat (propertize (symbol-name macro)
+                         'face 'font-lock-keyword-face)
+             " ==> "
+             (propertize (symbol-name macro)
+                         'face 'font-lock-function-name-face)
+             ": ")))))
 
 (define-mode-local-override semantic-idle-summary-current-symbol-info
   semantic-grammar-mode ()
@@ -1717,10 +1721,14 @@ Otherwise return nil."
         (setq val (semantic-grammar-eldoc-get-macro-docstring elt val)))
        ;; Function
        ((and elt (fboundp elt))
-        (setq val (eldoc-get-fnsym-args-string elt)))
+        (setq val (if (fboundp 'eldoc-get-fnsym-args-string)
+                      (eldoc-get-fnsym-args-string elt)
+                    (elisp-get-fnsym-args-string elt))))
        ;; Variable
        ((and elt (boundp elt))
-        (setq val (eldoc-get-var-docstring elt)))
+        (setq val (if (fboundp 'eldoc-get-var-docstring)
+                      (eldoc-get-var-docstring elt)
+                    (elisp-get-var-docstring elt))))
        (t nil)))
     (or val (semantic-idle-summary-current-symbol-info-default))))
 
diff --git a/lisp/cedet/semantic/symref.el b/lisp/cedet/semantic/symref.el
index 10293d9..2c5e3ba 100644
--- a/lisp/cedet/semantic/symref.el
+++ b/lisp/cedet/semantic/symref.el
@@ -472,8 +472,12 @@ buffers that were opened."
     (goto-char (point-min))
     (forward-line (1- line))
 
-    ;; Search forward for the matching text
-    (when (re-search-forward (regexp-quote searchtxt)
+    ;; Search forward for the matching text.
+    ;; FIXME: This still fails if the regexp uses something specific
+    ;; to the extended syntax, like grouping.
+    (when (re-search-forward (if (memq searchtype '(regexp tagregexp))
+                                 searchtxt
+                               (regexp-quote searchtxt))
                             (point-at-eol)
                             t)
       (goto-char (match-beginning 0))
diff --git a/lisp/cedet/semantic/symref/grep.el 
b/lisp/cedet/semantic/symref/grep.el
index 981dab8..6325eb4 100644
--- a/lisp/cedet/semantic/symref/grep.el
+++ b/lisp/cedet/semantic/symref/grep.el
@@ -46,9 +46,11 @@ and those hits returned.")
   '((c-mode "*.[ch]")
     (c++-mode "*.[chCH]" "*.[ch]pp" "*.cc" "*.hh")
     (html-mode "*.s?html" "*.php")
+    (ruby-mode "*.r[bu]" "*.rake" "*.gemspec" "*.erb" "*.haml"
+               "Rakefile" "Thorfile" "Capfile" "Guardfile" "Vagrantfile")
     )
-  "List of major modes and file extension pattern regexp.
-See find -regex man page for format.")
+  "List of major modes and file extension pattern.
+See find -name man page for format.")
 
 (defun semantic-symref-derive-find-filepatterns (&optional mode)
   "Derive a list of file patterns for the current buffer.
@@ -85,6 +87,9 @@ Optional argument MODE specifies the `major-mode' to test."
           (error "Customize `semantic-symref-filepattern-alist' for %s" 
major-mode))
          )))
 
+(defvar grepflags)
+(defvar greppattern)
+
 (defvar semantic-symref-grep-expand-keywords
   (condition-case nil
       (let* ((kw (copy-alist grep-expand-keywords))
@@ -96,7 +101,7 @@ Optional argument MODE specifies the `major-mode' to test."
     (error nil))
   "Grep expand keywords used when expanding templates for symref.")
 
-(defun semantic-symref-grep-use-template (rootdir filepattern grepflags 
greppattern)
+(defun semantic-symref-grep-use-template (rootdir filepattern flags pattern)
   "Use the grep template expand feature to create a grep command.
 ROOTDIR is the root location to run the `find' from.
 FILEPATTERN is a string representing find flags for searching file patterns.
@@ -104,18 +109,29 @@ GREPFLAGS are flags passed to grep, such as -n or -l.
 GREPPATTERN is the pattern used by grep."
   ;; We have grep-compute-defaults.  Let's use it.
   (grep-compute-defaults)
-  (let* ((grep-expand-keywords semantic-symref-grep-expand-keywords)
-        (cmd (grep-expand-template grep-find-template
-                                   greppattern
-                                   filepattern
-                                   rootdir)))
+  (let* ((grepflags flags)
+         (greppattern pattern)
+         (grep-expand-keywords semantic-symref-grep-expand-keywords)
+        (cmd (grep-expand-template
+               (if (memq system-type '(windows-nt ms-dos))
+                   ;; grep-find uses '--color=always' on MS-Windows
+                   ;; because it wants the colorized output, to show
+                   ;; it to the user.  By contrast, here we don't show
+                   ;; the output, and the SGR escapes get in the way
+                   ;; of parsing the output.
+                   (replace-regexp-in-string "--color=always" ""
+                                             grep-find-template t t)
+                 grep-find-template)
+               greppattern
+               filepattern
+               rootdir)))
     ;; For some reason, my default has no <D> in it.
     (when (string-match "find \\(\\.\\)" cmd)
       (setq cmd (replace-match rootdir t t cmd 1)))
     ;;(message "New command: %s" cmd)
     cmd))
 
-(defcustom semantic-symref-grep-shell "sh"
+(defcustom semantic-symref-grep-shell shell-file-name
   "The shell command to use for executing find/grep.
 This shell should support pipe redirect syntax."
   :group 'semantic
@@ -125,22 +141,28 @@ This shell should support pipe redirect syntax."
   "Perform a search with Grep."
   ;; Grep doesn't support some types of searches.
   (let ((st (oref tool :searchtype)))
-    (when (not (eq st 'symbol))
+    (when (not (memq st '(symbol regexp)))
       (error "Symref impl GREP does not support searchtype of %s" st))
     )
   ;; Find the root of the project, and do a find-grep...
   (let* (;; Find the file patterns to use.
-        (pat (cdr (assoc major-mode semantic-symref-filepattern-alist)))
         (rootdir (semantic-symref-calculate-rootdir))
         (filepattern (semantic-symref-derive-find-filepatterns))
         ;; Grep based flags.
         (grepflags (cond ((eq (oref tool :resulttype) 'file)
-                         "-l ")
-                        (t "-n ")))
-        (greppat (cond ((eq (oref tool :searchtype) 'regexp)
-                        (oref tool searchfor))
-                       (t
-                        (concat "'\\<" (oref tool searchfor) "\\>'"))))
+                           "-l ")
+                          ((eq (oref tool :searchtype) 'regexp)
+                           "-nE ")
+                          (t "-n ")))
+        (greppat (shell-quote-argument
+                   (cond ((eq (oref tool :searchtype) 'regexp)
+                          (oref tool searchfor))
+                         (t
+                          ;; Can't use the word boundaries: Grep
+                          ;; doesn't always agrees with the language
+                          ;; syntax on those.
+                          (format "\\(^\\|\\W\\)%s\\(\\W\\|$\\)"
+                                  (oref tool searchfor))))))
         ;; Misc
         (b (get-buffer-create "*Semantic SymRef*"))
         (ans nil)
@@ -158,10 +180,12 @@ This shell should support pipe redirect syntax."
          (let ((cmd (concat "find " default-directory " -type f " filepattern 
" -print0 "
                             "| xargs -0 grep -H " grepflags "-e " greppat)))
            ;;(message "Old command: %s" cmd)
-           (call-process semantic-symref-grep-shell nil b nil "-c" cmd)
+           (call-process semantic-symref-grep-shell nil b nil
+                          shell-command-switch cmd)
            )
        (let ((cmd (semantic-symref-grep-use-template rootdir filepattern 
grepflags greppat)))
-         (call-process semantic-symref-grep-shell nil b nil "-c" cmd))
+         (call-process semantic-symref-grep-shell nil b nil
+                        shell-command-switch cmd))
        ))
     (setq ans (semantic-symref-parse-tool-output tool b))
     ;; Return the answer
diff --git a/lisp/cedet/semantic/symref/idutils.el 
b/lisp/cedet/semantic/symref/idutils.el
index c22a6a3..655b000 100644
--- a/lisp/cedet/semantic/symref/idutils.el
+++ b/lisp/cedet/semantic/symref/idutils.el
@@ -60,7 +60,7 @@ Moves cursor to end of the match."
         (when (re-search-forward "^\\([^ ]+\\) " nil t)
           (match-string 1)))
        (t
-        (when (re-search-forward "^\\([^ :]+\\):+\\([0-9]+\\):" nil t)
+        (when (re-search-forward 
"^\\(\\(?:[a-zA-Z]:\\)?[^:\n]+\\):\\([0-9]+\\):" nil t)
           (cons (string-to-number (match-string 2))
                 (expand-file-name (match-string 1) default-directory))
           ))))
diff --git a/lisp/cedet/semantic/symref/list.el 
b/lisp/cedet/semantic/symref/list.el
index c99fc5f..f72499b 100644
--- a/lisp/cedet/semantic/symref/list.el
+++ b/lisp/cedet/semantic/symref/list.el
@@ -84,9 +84,13 @@ This command uses the currently configured references tool 
within the
 current project to find references to the input SYM.  The
 references are the organized by file and the name of the function
 they are used in.
-Display the references in`semantic-symref-results-mode'."
-  (interactive (list (semantic-tag-name (semantic-complete-read-tag-buffer-deep
-                                        "Symrefs for: "))))
+Display the references in `semantic-symref-results-mode'."
+  (interactive (list (let ((tag (semantic-current-tag)))
+                       (read-string " Symrefs for: " nil nil
+                                    (when tag
+                                      (regexp-quote (semantic-tag-name 
tag)))))))
+  ;; FIXME: Shouldn't the input be in Emacs regexp format, for
+  ;; consistency? Converting it to extended is not hard.
   (semantic-fetch-tags)
   (message "Gathering References...")
   ;; Gather results and tags
diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el
index c93a6f7..a8d6a50 100644
--- a/lisp/cedet/srecode/compile.el
+++ b/lisp/cedet/srecode/compile.el
@@ -116,19 +116,19 @@ additional static argument data."))
 Plain text strings are not handled via this baseclass."
   :abstract t)
 
-(cl-defmethod srecode-parse-input ((ins srecode-template-inserter)
-                               tag input STATE)
+(cl-defmethod srecode-parse-input ((_ins srecode-template-inserter)
+                                   _tag input _STATE)
   "For the template inserter INS, parse INPUT.
 Shorten input only by the amount needed.
 Return the remains of INPUT.
 STATE is the current compilation state."
   input)
 
-(cl-defmethod srecode-match-end ((ins srecode-template-inserter) name)
+(cl-defmethod srecode-match-end ((_ins srecode-template-inserter) _name)
   "For the template inserter INS, do I end a section called NAME?"
   nil)
 
-(cl-defmethod srecode-inserter-apply-state ((ins srecode-template-inserter) 
STATE)
+(cl-defmethod srecode-inserter-apply-state ((_ins srecode-template-inserter) 
_STATE)
   "For the template inserter INS, apply information from STATE."
   nil)
 
@@ -415,7 +415,7 @@ If END-NAME is specified, and the input string"
                                 (match-end 0)))
               (namestart (match-end 0))
               (junk (string-match regexend what namestart))
-              end tail name key)
+              end tail name)
          ;; Add string to compiled output
          (when (> (length prefix) 0)
            (setq comp (cons prefix comp)))
@@ -453,8 +453,7 @@ If END-NAME is specified, and the input string"
                          (semantic-tag-name tag)))
                  )
            ;; Add string to compiled output
-           (setq name (substring what namestart end)
-                 key nil)
+           (setq name (substring what namestart end))
            ;; Trim WHAT back.
            (setq what (substring what tail))
            ;; Get the inserter
@@ -523,7 +522,7 @@ to the inserter constructor."
        (setq classes (append classes (eieio-class-children (car classes))))
        ;; Do we have a match?
        (when (and (not (class-abstract-p (car classes)))
-                  (equal (oref (car classes) key) key))
+                  (equal (oref-default (car classes) key) key))
          ;; Create the new class, and apply state.
          (setq new (apply (car classes) name props))
          (srecode-inserter-apply-state new STATE)
@@ -642,7 +641,7 @@ Argument INDENT specifies the indentation level for the 
list."
        (princ "\n"))))
   )
 
-(cl-defmethod srecode-dump ((ins srecode-template-inserter) indent)
+(cl-defmethod srecode-dump ((ins srecode-template-inserter) _indent)
   "Dump the state of the SRecode template inserter INS."
   (princ "INS: \"")
   (princ (eieio-object-name-string ins))
diff --git a/lisp/cedet/srecode/dictionary.el b/lisp/cedet/srecode/dictionary.el
index 97d3310..27e730f 100644
--- a/lisp/cedet/srecode/dictionary.el
+++ b/lisp/cedet/srecode/dictionary.el
@@ -195,8 +195,8 @@ associated with a buffer or parent."
              initfrombuff t)))
 
       ;; Create the new dictionary object.
-      (let ((dict (srecode-dictionary
-                  major-mode
+      (let ((dict (make-instance
+                   'srecode-dictionary
                   :buffer   buffer
                   :parent   parent
                   :namehash (make-hash-table :test 'equal
diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el
index 0c13ee5..c2a70fe 100644
--- a/lisp/cedet/srecode/insert.el
+++ b/lisp/cedet/srecode/insert.el
@@ -35,7 +35,6 @@
 (require 'srecode/args)
 (require 'srecode/filters)
 
-(defvar srecode-template-inserter-point)
 (declare-function srecode-overlaid-activate "srecode/fields")
 (declare-function srecode-template-inserted-region "srecode/fields")
 
@@ -145,7 +144,7 @@ has set everything up already."
               )
       (set-buffer standard-output)
       (setq end-mark (point-marker))
-      (goto-char  (oref srecode-template-inserter-point point)))
+      (goto-char  (oref-default 'srecode-template-inserter-point point)))
     (oset-default 'srecode-template-inserter-point point eieio-unbound)
 
     ;; Return the end-mark.
@@ -264,13 +263,12 @@ Optional argument TEMP is the template that is getting 
its arguments resolved."
   "Push the srecoder template ST onto the active stack."
   (oset st active (cons st (oref st active))))
 
-(cl-defmethod srecode-pop ((st (subclass srecode-template)))
-  "Pop the srecoder template ST onto the active stack.
-ST can be a class, or an object."
+(cl-defmethod srecode-pop ((st srecode-template))
+  "Pop the srecoder template ST onto the active stack."
   (oset st active (cdr (oref st active))))
 
-(cl-defmethod srecode-peek ((st (subclass srecode-template)))
-  "Fetch the topmost active template record.  ST can be a class."
+(cl-defmethod srecode-peek ((st srecode-template))
+  "Fetch the topmost active template record."
   (car (oref st active)))
 
 (cl-defmethod srecode-insert-method ((st srecode-template) dictionary)
@@ -363,7 +361,7 @@ occur in your template.")
            ((stringp i)
             (princ i))))))
 
-(cl-defmethod srecode-dump ((ins srecode-template-inserter-newline) indent)
+(cl-defmethod srecode-dump ((ins srecode-template-inserter-newline) _indent)
   "Dump the state of the SRecode template inserter INS."
   (cl-call-next-method)
   (when (oref ins hard)
@@ -425,8 +423,8 @@ Specify the :blank argument to enable this inserter.")
    )
   "Allow comments within template coding.  This inserts nothing.")
 
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass 
srecode-template-inserter-comment))
-                                                 escape-start escape-end)
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass 
srecode-template-inserter-comment))
+                                             escape-start escape-end)
   "Insert an example using inserter INS.
 Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
   (princ "   ")
@@ -436,8 +434,8 @@ Arguments ESCAPE-START and ESCAPE-END are the current 
escape sequences in use."
   (terpri)
   )
 
-(cl-defmethod srecode-insert-method ((sti srecode-template-inserter-comment)
-                                 dictionary)
+(cl-defmethod srecode-insert-method ((_sti srecode-template-inserter-comment)
+                                     _dictionary)
   "Don't insert anything for comment macros in STI."
   nil)
 
@@ -491,7 +489,7 @@ If SECONDNAME is nil, return VALUE."
        (setq val (srecode-insert-variable-secondname-handler
                   sti dictionary val fcnpart)))
        ;; Compound data value
-       ((srecode-dictionary-compound-value-child-p val)
+       ((cl-typep val 'srecode-dictionary-compound-value)
        ;; Force FCN to be a symbol
        (when fcnpart (setq fcnpart (read fcnpart)))
        ;; Convert compound value to a string with the fcn.
@@ -502,7 +500,7 @@ If SECONDNAME is nil, return VALUE."
          (setq do-princ nil)))
 
        ;; Dictionaries... not allowed in this style
-       ((srecode-dictionary-child-p val)
+       ((cl-typep val 'srecode-dictionary)
        (srecode-insert-report-error
         dictionary
         "Macro %s cannot insert a dictionary - use section macros instead"
@@ -661,7 +659,7 @@ Use DICTIONARY to resolve values."
     ;; across multiple locations.
     compound-value))
 
-(cl-defmethod srecode-dump ((ins srecode-template-inserter-ask) indent)
+(cl-defmethod srecode-dump ((ins srecode-template-inserter-ask) _indent)
   "Dump the state of the SRecode template inserter INS."
   (cl-call-next-method)
   (princ " : \"")
@@ -682,7 +680,7 @@ to 10 characters, with spaces added to the left.  Use 
`right' for adding
 spaces to the right.")
 
 (cl-defmethod srecode-insert-variable-secondname-handler
-  ((sti srecode-template-inserter-width) dictionary value width)
+  ((_sti srecode-template-inserter-width) dictionary value width)
   "For VALUE handle WIDTH behaviors for this variable inserter.
 Return the result as a string.
 By default, treat as a function name."
@@ -714,8 +712,8 @@ By default, treat as a function name."
            (concat padchars value)
          (concat value padchars))))))
 
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass 
srecode-template-inserter-width))
-                                                 escape-start escape-end)
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass 
srecode-template-inserter-width))
+                                             escape-start escape-end)
   "Insert an example using inserter INS.
 Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
   (princ "   ")
@@ -750,8 +748,8 @@ The cursor is placed at the ^ macro after insertion.
 Some inserter macros, such as `srecode-template-inserter-include-wrap'
 will place text at the ^ macro from the included macro.")
 
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass 
srecode-template-inserter-point))
-                                                 escape-start escape-end)
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass 
srecode-template-inserter-point))
+                                             escape-start escape-end)
   "Insert an example using inserter INS.
 Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
   (princ "   ")
@@ -787,8 +785,8 @@ generalized marker will do something else.  See
   "Wrap a section of a template under the control of a macro."
   :abstract t)
 
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass 
srecode-template-inserter-subtemplate))
-                                                 escape-start escape-end)
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass 
srecode-template-inserter-subtemplate))
+                                             escape-start escape-end)
   "Insert an example using inserter INS.
 Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
   (cl-call-next-method)
@@ -805,7 +803,7 @@ Arguments ESCAPE-START and ESCAPE-END are the current 
escape sequences in use."
                                       dict slot)
   "Insert a subtemplate for the inserter STI with dictionary DICT."
   ;; Make sure that only dictionaries are used.
-  (unless (srecode-dictionary-child-p dict)
+  (unless (cl-typep dict 'srecode-dictionary)
     (srecode-insert-report-error
      dict
      "Only section dictionaries allowed for `%s'"
@@ -889,8 +887,8 @@ Return the remains of INPUT."
   "All template segments between the section-start and section-end
 are treated specially.")
 
-(cl-defmethod srecode-insert-method ((sti 
srecode-template-inserter-section-end)
-                                 dictionary)
+(cl-defmethod srecode-insert-method ((_sti 
srecode-template-inserter-section-end)
+                                 _dictionary)
   "Insert the STI inserter."
   )
 
@@ -912,7 +910,7 @@ are treated specially.")
 The included template will have additional dictionary entries from the 
subdictionary
 stored specified by this macro.")
 
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass 
srecode-template-inserter-include))
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass 
srecode-template-inserter-include))
                                                  escape-start escape-end)
   "Insert an example using inserter INS.
 Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
@@ -1017,7 +1015,7 @@ stored specified by this macro.  If the included macro 
includes a ^ macro,
 then the text between this macro and the end macro will be inserted at
 the ^ macro.")
 
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass 
srecode-template-inserter-include-wrap))
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass 
srecode-template-inserter-include-wrap))
                                                  escape-start escape-end)
   "Insert an example using inserter INS.
 Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 071aaa6..b4d2139 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -438,6 +438,7 @@ Leaving \"Default\" unchecked is equivalent with specifying 
a default of
                      (const super)) "23.1")
             (ns-antialias-text ns boolean "23.1")
             (ns-auto-hide-menu-bar ns boolean "24.1")
+             (ns-confirm-quit ns boolean "25.1")
             (ns-use-native-fullscreen ns boolean "24.4")
              (ns-use-fullscreen-animation ns boolean "25.1")
              (ns-use-srgb-colorspace ns boolean "24.4")
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index b4e2dc0..4dcb519 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -413,12 +413,15 @@ into the minibuffer."
       ;; Now the original list FILES has been put back as it was.
       (nconc past pending))))
 
+(defvar lpr-printer-switch)
+
 ;;;###autoload
 (defun dired-do-print (&optional arg)
   "Print the marked (or next ARG) files.
 Uses the shell command coming from variables `lpr-command' and
 `lpr-switches' as default."
   (interactive "P")
+  (require 'lpr)
   (let* ((file-list (dired-get-marked-files t arg))
         (lpr-switches
          (if (and (stringp printer-name)
diff --git a/lisp/dired.el b/lisp/dired.el
index cc16c8c..ca13900 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3889,7 +3889,7 @@ Ask means pop up a menu for the user to select one of 
copy, move or link."
 
 ;;; Start of automatically extracted autoloads.
 
-;;;### (autoloads nil "dired-aux" "dired-aux.el" 
"65f8aa57ace423283926d92dff903ca7")
+;;;### (autoloads nil "dired-aux" "dired-aux.el" 
"8820677763cb69eef827e38b86d35f47")
 ;;; Generated autoloads from dired-aux.el
 
 (autoload 'dired-diff "dired-aux" "\
diff --git a/lisp/dom.el b/lisp/dom.el
index 4213107..091197a 100644
--- a/lisp/dom.el
+++ b/lisp/dom.el
@@ -25,6 +25,7 @@
 ;;; Code:
 
 (require 'cl-lib)
+(eval-when-compile (require 'subr-x))
 
 (defsubst dom-tag (node)
   "Return the NODE tag."
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 51bbf8a..67744c6 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -979,17 +979,6 @@ Each function's symbol gets added to 
`byte-compile-noruntime-functions'."
           (lambda (x) (if (symbolp x) (list 'prin1-to-string x) x))
           args))))))
 
-(defvar byte-compile--interactive nil
-  "Determine if `byte-compile--message' uses the minibuffer.")
-
-(defun byte-compile--message (format &rest args)
-  "Like `message', except sometimes don't print to minibuffer.
-If the variable `byte-compile--interactive' is nil, the message
-is not displayed on the minibuffer."
-  (apply #'message format args)
-  (unless byte-compile--interactive
-    (message nil)))
-
 ;; Log something that isn't a warning.
 (defun byte-compile-log-1 (string)
   (with-current-buffer byte-compile-log-buffer
@@ -997,7 +986,7 @@ is not displayed on the minibuffer."
       (goto-char (point-max))
       (byte-compile-warning-prefix nil nil)
       (cond (noninteractive
-            (byte-compile--message " %s" string))
+            (message " %s" string))
            (t
             (insert (format "%s\n" string)))))))
 
@@ -1601,10 +1590,7 @@ extra args."
   "Recompile every `.el' file in DIRECTORY that already has a `.elc' file.
 Files in subdirectories of DIRECTORY are processed also."
   (interactive "DByte force recompile (directory): ")
-  (let ((byte-compile--interactive
-         (or byte-compile--interactive
-             (called-interactively-p 'any))))
-    (byte-recompile-directory directory nil t)))
+  (byte-recompile-directory directory nil t))
 
 ;;;###autoload
 (defun byte-recompile-directory (directory &optional arg force)
@@ -1634,9 +1620,6 @@ that already has a `.elc' file."
       (compilation-mode))
     (let ((directories (list default-directory))
          (default-directory default-directory)
-          (byte-compile--interactive
-           (or byte-compile--interactive
-               (called-interactively-p 'any)))
          (skip-count 0)
          (fail-count 0)
          (file-count 0)
@@ -1645,7 +1628,7 @@ that already has a `.elc' file."
       (displaying-byte-compile-warnings
        (while directories
         (setq directory (car directories))
-        (byte-compile--message "Checking %s..." directory)
+        (message "Checking %s..." directory)
          (dolist (file (directory-files directory))
            (let ((source (expand-file-name file directory)))
             (if (file-directory-p source)
@@ -1670,13 +1653,13 @@ that already has a `.elc' file."
                              (`t file-count)
                              (_ fail-count)))
                           (or noninteractive
-                              (byte-compile--message "Checking %s..." 
directory))
+                              (message "Checking %s..." directory))
                           (if (not (eq last-dir directory))
                               (setq last-dir directory
                                     dir-count (1+ dir-count)))
                           )))))
         (setq directories (cdr directories))))
-      (byte-compile--message "Done (Total of %d file%s compiled%s%s%s)"
+      (message "Done (Total of %d file%s compiled%s%s%s)"
               file-count (if (= file-count 1) "" "s")
               (if (> fail-count 0) (format ", %d failed" fail-count) "")
               (if (> skip-count 0) (format ", %d skipped" skip-count) "")
@@ -1723,10 +1706,7 @@ If compilation is needed, this functions returns the 
result of
           current-prefix-arg)))
   (let ((dest (byte-compile-dest-file filename))
         ;; Expand now so we get the current buffer's defaults
-        (filename (expand-file-name filename))
-        (byte-compile--interactive
-         (or byte-compile--interactive
-             (called-interactively-p 'any))))
+        (filename (expand-file-name filename)))
     (if (if (file-exists-p dest)
             ;; File was already compiled
             ;; Compile if forced to, or filename newer
@@ -1738,7 +1718,7 @@ If compilation is needed, this functions returns the 
result of
                                      filename "? ")))))
         (progn
           (if (and noninteractive (not byte-compile-verbose))
-              (byte-compile--message "Compiling %s..." filename))
+              (message "Compiling %s..." filename))
           (byte-compile-file filename load))
       (when load
        (load (if (file-exists-p dest) dest filename)))
@@ -1782,9 +1762,6 @@ The value is non-nil if there were no errors, nil if 
errors."
   (let ((byte-compile-current-file filename)
         (byte-compile-current-group nil)
        (set-auto-coding-for-load t)
-        (byte-compile--interactive
-         (or byte-compile--interactive
-             (called-interactively-p 'any)))
        target-file input-buffer output-buffer
        byte-compile-dest-file)
     (setq target-file (byte-compile-dest-file filename))
@@ -1840,14 +1817,14 @@ The value is non-nil if there were no errors, nil if 
errors."
          ;;       (byte-compile-abbreviate-file filename)
          ;;       (with-current-buffer input-buffer no-byte-compile))
          (when (file-exists-p target-file)
-           (byte-compile--message "%s deleted because of `no-byte-compile: %s'"
+           (message "%s deleted because of `no-byte-compile: %s'"
                     (byte-compile-abbreviate-file target-file)
                     (buffer-local-value 'no-byte-compile input-buffer))
            (condition-case nil (delete-file target-file) (error nil)))
          ;; We successfully didn't compile this file.
          'no-byte-compile)
       (when byte-compile-verbose
-       (byte-compile--message "Compiling %s..." filename))
+       (message "Compiling %s..." filename))
       (setq byte-compiler-error-flag nil)
       ;; It is important that input-buffer not be current at this call,
       ;; so that the value of point set in input-buffer
@@ -1859,7 +1836,7 @@ The value is non-nil if there were no errors, nil if 
errors."
       (if byte-compiler-error-flag
          nil
        (when byte-compile-verbose
-         (byte-compile--message "Compiling %s...done" filename))
+         (message "Compiling %s...done" filename))
        (kill-buffer input-buffer)
        (with-current-buffer output-buffer
          (goto-char (point-max))
@@ -1885,7 +1862,7 @@ The value is non-nil if there were no errors, nil if 
errors."
                ;; recompiled).  Previously this was accomplished by
                ;; deleting target-file before writing it.
                (rename-file tempfile target-file t)
-               (or noninteractive (byte-compile--message "Wrote %s" 
target-file)))
+               (or noninteractive (message "Wrote %s" target-file)))
            ;; This is just to give a better error message than write-region
            (signal 'file-error
                    (list "Opening output file"
@@ -1919,9 +1896,6 @@ With argument ARG, insert value in current buffer after 
the form."
           (byte-compile-read-position (point))
           (byte-compile-last-position byte-compile-read-position)
           (byte-compile-last-warned-form 'nothing)
-           (byte-compile--interactive
-            (or byte-compile--interactive
-                (called-interactively-p 'any)))
           (value (eval
                   (let ((read-with-symbol-positions (current-buffer))
                         (read-symbol-positions-list nil))
@@ -1929,10 +1903,10 @@ With argument ARG, insert value in current buffer after 
the form."
                      (byte-compile-sexp (read (current-buffer)))))
                    lexical-binding)))
       (cond (arg
-            (byte-compile--message "Compiling from buffer... done.")
+            (message "Compiling from buffer... done.")
             (prin1 value (current-buffer))
             (insert "\n"))
-           ((byte-compile--message "%s" (prin1-to-string value)))))))
+           ((message "%s" (prin1-to-string value)))))))
 
 (defun byte-compile-from-buffer (inbuffer)
   (let ((byte-compile-current-buffer inbuffer)
@@ -2436,7 +2410,7 @@ not to take responsibility for the actual compilation of 
the code."
         (byte-compile-arglist-warn name arglist macro))
 
     (if byte-compile-verbose
-        (byte-compile--message "Compiling %s... (%s)"
+        (message "Compiling %s... (%s)"
                  (or byte-compile-current-file "") name))
     (cond ((not (or macro (listp body)))
            ;; We do not know positively if the definition is a macro
@@ -2606,7 +2580,7 @@ If FORM is a lambda or a macro, byte-compile it as a 
function."
        ;; error to a simple message for the known case where signaling an error
        ;; causes problems.
        ((byte-code-function-p fun)
-        (byte-compile--message "Function %s is already compiled"
+        (message "Function %s is already compiled"
                  (if (symbolp form) form "provided"))
         fun)
        (t
@@ -2946,11 +2920,17 @@ for symbols generated by the byte compiler itself."
 
 ;; Special macro-expander used during byte-compilation.
 (defun byte-compile-macroexpand-declare-function (fn file &rest args)
-  (push (cons fn
-              (if (and (consp args) (listp (car args)))
-                  (list 'declared (car args))
-                t))                     ; Arglist not specified.
-        byte-compile-function-environment)
+  (let ((gotargs (and (consp args) (listp (car args))))
+       (unresolved (assq fn byte-compile-unresolved-functions)))
+    (when unresolved         ; function was called before declaration
+      (if (and gotargs (byte-compile-warning-enabled-p 'callargs))
+         (byte-compile-arglist-warn fn (car args) nil)
+       (setq byte-compile-unresolved-functions
+             (delq unresolved byte-compile-unresolved-functions))))
+    (push (cons fn (if gotargs
+                      (list 'declared (car args))
+                    t))                     ; Arglist not specified.
+         byte-compile-function-environment))
   ;; We are stating that it _will_ be defined at runtime.
   (setq byte-compile-noruntime-functions
         (delq fn byte-compile-noruntime-functions))
@@ -4424,8 +4404,8 @@ binding slots have been popped."
                   name macro arglist body rest)
            (when macro
              (if (null fun)
-                 (byte-compile--message "Macro %s unrecognized, won't work in 
file" name)
-               (byte-compile--message "Macro %s partly recognized, trying our 
luck" name)
+                 (message "Macro %s unrecognized, won't work in file" name)
+               (message "Macro %s partly recognized, trying our luck" name)
                (push (cons name (eval fun))
                      byte-compile-macro-environment)))
            (byte-compile-keep-pending form))))
@@ -4551,11 +4531,11 @@ The call tree also lists those functions which are not 
known to be called
 \(that is, to which no calls have been compiled\), and which cannot be
 invoked interactively."
   (interactive)
-  (byte-compile--message "Generating call tree...")
+  (message "Generating call tree...")
   (with-output-to-temp-buffer "*Call-Tree*"
     (set-buffer "*Call-Tree*")
     (erase-buffer)
-    (byte-compile--message "Generating call tree... (sorting on %s)"
+    (message "Generating call tree... (sorting on %s)"
             byte-compile-call-tree-sort)
     (insert "Call tree for "
            (cond ((null byte-compile-current-file) (or filename "???"))
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index 851b3bf..0660125 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -280,7 +280,7 @@ START and END represent the boundary."
   "Draw axis information based upon a range to be spread along the edge.
 A is the chart to draw.  DIR is the direction.
 MARGIN, ZONE, START, and END specify restrictions in chart space."
-  (call-next-method)
+  (cl-call-next-method)
   ;; We prefer about 5 spaces between each value
   (let* ((i (car (oref a bounds)))
         (e (cdr (oref a bounds)))
@@ -333,7 +333,7 @@ Automatically compensates for direction."
   "Draw axis information based upon A range to be spread along the edge.
 Optional argument DIR is the direction of the chart.
 Optional arguments MARGIN, ZONE, START and END specify boundaries of the 
drawing."
-  (call-next-method)
+  (cl-call-next-method)
   ;; We prefer about 5 spaces between each value
   (let* ((i 0)
         (s (oref a items))
diff --git a/lisp/emacs-lisp/check-declare.el b/lisp/emacs-lisp/check-declare.el
index 8fc299d..7269b83 100644
--- a/lisp/emacs-lisp/check-declare.el
+++ b/lisp/emacs-lisp/check-declare.el
@@ -157,6 +157,7 @@ is a string giving details of the error."
           (setq re (format (if cflag
                                "^[ \t]*\\(DEFUN\\)[ \t]*([ \t]*\"%s\""
                              "^[ \t]*(\\(fset[ \t]+'\\|\
+cl-def\\(?:generic\\|method\\)\\|\
 def\\(?:un\\|subst\\|foo\\|method\\|class\\|\
 ine-\\(?:derived\\|generic\\|\\(?:global\\(?:ized\\)?-\\)?minor\\)-mode\\|\
 \\(?:ine-obsolete-function-\\)?alias[ \t]+'\\|\
@@ -200,8 +201,8 @@ ine-overloadable-function\\)\\)\
                               type)
                              'obsolete)
                             ;; Can't easily check arguments in these cases.
-                            ((string-match "\\`\\(def\\(alias\\|\
-method\\|class\\)\\|fset\\)\\>" type)
+                            ((string-match "\\`\\(def\\(alias\\|class\\)\\|\
+fset\\|\\(?:cl-\\)?defmethod\\)\\>" type)
                              t)
                             ((looking-at "\\((\\|nil\\)")
                              (byte-compile-arglist-signature
@@ -284,6 +285,8 @@ TYPE is a string giving the nature of the error.  Warning 
is displayed in
                              type)
                      nil check-declare-warning-buffer)))
 
+(declare-function compilation-forget-errors "compile" ())
+
 (defun check-declare-files (&rest files)
   "Check veracity of all `declare-function' statements in FILES.
 Return a list of any errors found."
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index fb11a3e..a2716ef 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -54,6 +54,15 @@
 ;; - The standard method combination supports ":extra STRING" qualifiers
 ;;   which simply allows adding more methods for the same
 ;;   specializers&qualifiers.
+;; - Methods can dispatch on the context.  For that, a method needs to specify
+;;   context arguments, introduced by `&context' (which need to come right
+;;   after the mandatory arguments and before anything like
+;;   &optional/&rest/&key).  Each context argument is given as (EXP 
SPECIALIZER)
+;;   which means that EXP is taken as an expression which computes some context
+;;   and this value is then used to dispatch.
+;;   E.g. (foo &context (major-mode (eql c-mode))) is an arglist specifying
+;;   that this method will only be applicable when `major-mode' has value
+;;   `c-mode'.
 
 ;; Efficiency considerations: overall, I've made an effort to make this fairly
 ;; efficient for the expected case (e.g. no constant redefinition of methods).
@@ -222,17 +231,12 @@ BODY, if present, is used as the body of a default method.
        ,@(mapcar (lambda (method) `(cl-defmethod ,name ,@method))
                  (nreverse methods)))))
 
-(defun cl--generic-mandatory-args (args)
-  (let ((res ()))
-    (while (not (memq (car args) '(nil &rest &optional &key)))
-      (push (pop args) res))
-    (nreverse res)))
-
 ;;;###autoload
 (defun cl-generic-define (name args options)
-  (let ((generic (cl-generic-ensure-function name))
-        (mandatory (cl--generic-mandatory-args args))
-        (apo (assq :argument-precedence-order options)))
+  (pcase-let* ((generic (cl-generic-ensure-function name))
+               (`(,spec-args . ,_) (cl--generic-split-args args))
+               (mandatory (mapcar #'car spec-args))
+               (apo (assq :argument-precedence-order options)))
     (setf (cl--generic-dispatches generic) nil)
     (when apo
       (dolist (arg (cdr apo))
@@ -259,52 +263,70 @@ This macro can only be used within the lexical scope of a 
cl-generic method."
       (and (memq sexp vars) (not (memq sexp res)) (push sexp res))
       res))
 
-  (defun cl--generic-lambda (args body)
-    "Make the lambda expression for a method with ARGS and BODY."
+  (defun cl--generic-split-args (args)
+    "Return (SPEC-ARGS . PLAIN-ARGS)."
     (let ((plain-args ())
           (specializers nil)
           (mandatory t))
       (dolist (arg args)
         (push (pcase arg
                 ((or '&optional '&rest '&key) (setq mandatory nil) arg)
-                ((and `(,name . ,type) (guard mandatory))
+                ('&context
+                 (unless mandatory
+                   (error "&context not immediately after mandatory args"))
+                 (setq mandatory 'context) nil)
+                ((let 'nil mandatory) arg)
+                ((let 'context mandatory)
+                 (unless (consp arg)
+                   (error "Invalid &context arg: %S" arg))
+                 (push `((&context . ,(car arg)) . ,(cadr arg)) specializers)
+                 nil)
+                (`(,name . ,type)
                  (push (cons name (car type)) specializers)
                  name)
-                (_ arg))
+                (_
+                 (push (cons arg t) specializers)
+                 arg))
               plain-args))
-      (setq plain-args (nreverse plain-args))
-      (let ((fun `(cl-function (lambda ,plain-args ,@body)))
-            (macroenv (cons `(cl-generic-current-method-specializers
-                              . ,(lambda () specializers))
-                            macroexpand-all-environment)))
-        (require 'cl-lib)        ;Needed to expand `cl-flet' and `cl-function'.
-        ;; First macroexpand away the cl-function stuff (e.g. &key and
-        ;; destructuring args, `declare' and whatnot).
-        (pcase (macroexpand fun macroenv)
-          (`#'(lambda ,args . ,body)
-           (let* ((parsed-body (macroexp-parse-body body))
-                  (cnm (make-symbol "cl--cnm"))
-                  (nmp (make-symbol "cl--nmp"))
-                  (nbody (macroexpand-all
-                          `(cl-flet ((cl-call-next-method ,cnm)
-                                     (cl-next-method-p ,nmp))
-                             ,@(cdr parsed-body))
-                          macroenv))
-                  ;; FIXME: Rather than `grep' after the fact, the
-                  ;; macroexpansion should directly set some flag when cnm
-                  ;; is used.
-                  ;; FIXME: Also, optimize the case where call-next-method is
-                  ;; only called with explicit arguments.
-                  (uses-cnm (cl--generic-fgrep (list cnm nmp) nbody)))
-             (cons (not (not uses-cnm))
-                   `#'(lambda (,@(if uses-cnm (list cnm)) ,@args)
-                        ,@(car parsed-body)
-                        ,(if (not (memq nmp uses-cnm))
-                             nbody
-                           `(let ((,nmp (lambda ()
-                                          (cl--generic-isnot-nnm-p ,cnm))))
-                              ,nbody))))))
-          (f (error "Unexpected macroexpansion result: %S" f)))))))
+      (cons (nreverse specializers)
+            (nreverse (delq nil plain-args)))))
+
+  (defun cl--generic-lambda (args body)
+    "Make the lambda expression for a method with ARGS and BODY."
+    (pcase-let* ((`(,spec-args . ,plain-args)
+                  (cl--generic-split-args args))
+                 (fun `(cl-function (lambda ,plain-args ,@body)))
+                 (macroenv (cons `(cl-generic-current-method-specializers
+                                   . ,(lambda () spec-args))
+                                 macroexpand-all-environment)))
+      (require 'cl-lib)        ;Needed to expand `cl-flet' and `cl-function'.
+      ;; First macroexpand away the cl-function stuff (e.g. &key and
+      ;; destructuring args, `declare' and whatnot).
+      (pcase (macroexpand fun macroenv)
+        (`#'(lambda ,args . ,body)
+         (let* ((parsed-body (macroexp-parse-body body))
+                (cnm (make-symbol "cl--cnm"))
+                (nmp (make-symbol "cl--nmp"))
+                (nbody (macroexpand-all
+                        `(cl-flet ((cl-call-next-method ,cnm)
+                                   (cl-next-method-p ,nmp))
+                           ,@(cdr parsed-body))
+                        macroenv))
+                ;; FIXME: Rather than `grep' after the fact, the
+                ;; macroexpansion should directly set some flag when cnm
+                ;; is used.
+                ;; FIXME: Also, optimize the case where call-next-method is
+                ;; only called with explicit arguments.
+                (uses-cnm (cl--generic-fgrep (list cnm nmp) nbody)))
+           (cons (not (not uses-cnm))
+                 `#'(lambda (,@(if uses-cnm (list cnm)) ,@args)
+                      ,@(car parsed-body)
+                      ,(if (not (memq nmp uses-cnm))
+                           nbody
+                         `(let ((,nmp (lambda ()
+                                        (cl--generic-isnot-nnm-p ,cnm))))
+                            ,nbody))))))
+        (f (error "Unexpected macroexpansion result: %S" f))))))
 
 
 ;;;###autoload
@@ -375,21 +397,26 @@ which case this method will be invoked when the argument 
is `eql' to VAL.
 
 ;;;###autoload
 (defun cl-generic-define-method (name qualifiers args uses-cnm function)
-  (let* ((generic (cl-generic-ensure-function name))
-         (mandatory (cl--generic-mandatory-args args))
-         (specializers
-          (mapcar (lambda (arg) (if (consp arg) (cadr arg) t)) mandatory))
-         (method (cl--generic-make-method
-                  specializers qualifiers uses-cnm function))
-         (mt (cl--generic-method-table generic))
-         (me (cl--generic-member-method specializers qualifiers mt))
-         (dispatches (cl--generic-dispatches generic))
-         (i 0))
-    (dolist (specializer specializers)
-      (let* ((generalizers (cl-generic-generalizers specializer))
-             (x (assq i dispatches)))
+  (pcase-let*
+      ((generic (cl-generic-ensure-function name))
+       (`(,spec-args . ,_) (cl--generic-split-args args))
+       (specializers (mapcar (lambda (spec-arg)
+                               (if (eq '&context (car-safe (car spec-arg)))
+                                   spec-arg (cdr spec-arg)))
+                             spec-args))
+       (method (cl--generic-make-method
+                specializers qualifiers uses-cnm function))
+       (mt (cl--generic-method-table generic))
+       (me (cl--generic-member-method specializers qualifiers mt))
+       (dispatches (cl--generic-dispatches generic))
+       (i 0))
+    (dolist (spec-arg spec-args)
+      (let* ((key (if (eq '&context (car-safe (car spec-arg)))
+                      (car spec-arg) i))
+             (generalizers (cl-generic-generalizers (cdr spec-arg)))
+             (x (assoc key dispatches)))
         (unless x
-          (setq x (cons i (cl-generic-generalizers t)))
+          (setq x (cons key (cl-generic-generalizers t)))
           (setf (cl--generic-dispatches generic)
                 (setq dispatches (cons x dispatches))))
         (dolist (generalizer generalizers)
@@ -411,7 +438,16 @@ which case this method will be invoked when the argument 
is `eql' to VAL.
           ;; the generic function.
           current-load-list)
       ;; For aliases, cl--generic-name gives us the actual name.
-      (defalias (cl--generic-name generic) gfun))))
+      (funcall
+       (if purify-flag
+           ;; BEWARE!  Don't purify this function definition, since that leads
+           ;; to memory corruption if the hash-tables it holds are modified
+           ;; (the GC doesn't trace those pointers).
+           #'fset
+         ;; But do use `defalias' in the normal case, so that it interacts
+         ;; properly with nadvice, e.g. for tracing/debug-on-entry.
+         #'defalias)
+       (cl--generic-name generic) gfun))))
 
 (defmacro cl--generic-with-memoization (place &rest code)
   (declare (indent 1) (debug t))
@@ -427,6 +463,7 @@ which case this method will be invoked when the argument is 
`eql' to VAL.
 (defun cl--generic-get-dispatcher (dispatch)
   (cl--generic-with-memoization
       (gethash dispatch cl--generic-dispatchers)
+    ;; (message "cl--generic-get-dispatcher (%S)" dispatch)
     (let* ((dispatch-arg (car dispatch))
            (generalizers (cdr dispatch))
            (lexical-binding t)
@@ -437,13 +474,14 @@ which case this method will be invoked when the argument 
is `eql' to VAL.
                                'arg))
                     generalizers))
            (typescodes
-            (mapcar (lambda (generalizer)
-                      `(funcall 
',(cl--generic-generalizer-specializers-function
-                                   generalizer)
-                                ,(funcall 
(cl--generic-generalizer-tagcode-function
-                                           generalizer)
-                                          'arg)))
-                    generalizers))
+            (mapcar
+             (lambda (generalizer)
+               `(funcall ',(cl--generic-generalizer-specializers-function
+                            generalizer)
+                         ,(funcall (cl--generic-generalizer-tagcode-function
+                                    generalizer)
+                                   'arg)))
+             generalizers))
            (tag-exp
             ;; Minor optimization: since this tag-exp is
             ;; only used to lookup the method-cache, it
@@ -452,23 +490,30 @@ which case this method will be invoked when the argument 
is `eql' to VAL.
             `(or ,@(if (macroexp-const-p (car (last tagcodes)))
                        (butlast tagcodes)
                      tagcodes)))
-           (extraargs ()))
-      (dotimes (_ dispatch-arg)
-        (push (make-symbol "arg") extraargs))
+           (fixedargs '(arg))
+           (dispatch-idx dispatch-arg)
+           (bindings nil))
+      (when (eq '&context (car-safe dispatch-arg))
+        (setq bindings `((arg ,(cdr dispatch-arg))))
+        (setq fixedargs nil)
+        (setq dispatch-idx 0))
+      (dotimes (i dispatch-idx)
+        (push (make-symbol (format "arg%d" (- dispatch-idx i 1))) fixedargs))
       ;; FIXME: For generic functions with a single method (or with 2 methods,
       ;; one of which always matches), using a tagcode + hash-table is
       ;; overkill: better just use a `cl-typep' test.
       (byte-compile
        `(lambda (generic dispatches-left methods)
           (let ((method-cache (make-hash-table :test #'eql)))
-            (lambda (,@extraargs arg &rest args)
-              (apply (cl--generic-with-memoization
-                         (gethash ,tag-exp method-cache)
-                       (cl--generic-cache-miss
-                        generic ',dispatch-arg dispatches-left methods
-                        ,(if (cdr typescodes)
-                             `(append ,@typescodes) (car typescodes))))
-                     ,@extraargs arg args))))))))
+            (lambda (,@fixedargs &rest args)
+              (let ,bindings
+                (apply (cl--generic-with-memoization
+                        (gethash ,tag-exp method-cache)
+                        (cl--generic-cache-miss
+                         generic ',dispatch-arg dispatches-left methods
+                         ,(if (cdr typescodes)
+                              `(append ,@typescodes) (car typescodes))))
+                       ,@fixedargs args)))))))))
 
 (defun cl--generic-make-function (generic)
   (cl--generic-make-next-function generic
@@ -593,8 +638,11 @@ FUN is the function that should be called when METHOD calls
                                dispatch-arg dispatches-left methods-left types)
   (let ((methods '()))
     (dolist (method methods-left)
-      (let* ((specializer (or (nth dispatch-arg
-                                   (cl--generic-method-specializers method))
+      (let* ((specializer (or (if (integerp dispatch-arg)
+                                  (nth dispatch-arg
+                                       (cl--generic-method-specializers 
method))
+                                (cdr (assoc dispatch-arg
+                                            (cl--generic-method-specializers 
method))))
                               t))
              (m (member specializer types)))
         (when m
@@ -657,6 +705,25 @@ methods.")
   (if (eq specializer t) (list cl--generic-t-generalizer)
     (error "Unknown specializer %S" specializer)))
 
+(defmacro cl--generic-prefill-dispatchers (arg-or-context specializer)
+  (unless (integerp arg-or-context)
+    (setq arg-or-context `(&context . ,arg-or-context)))
+  (unless (fboundp 'cl--generic-get-dispatcher)
+    (require 'cl-generic))
+  (let ((fun (cl--generic-get-dispatcher
+              `(,arg-or-context ,@(cl-generic-generalizers specializer)
+                                ,cl--generic-t-generalizer))))
+    ;; Recompute dispatch at run-time, since the generalizers may be slightly
+    ;; different (e.g. byte-compiled rather than interpreted).
+    ;; FIXME: There is a risk that the run-time generalizer is not equivalent
+    ;; to the compile-time one, in which case `fun' may not be correct
+    ;; any more!
+    `(let ((dispatch `(,',arg-or-context
+                       ,@(cl-generic-generalizers ',specializer)
+                       ,cl--generic-t-generalizer)))
+       ;; (message "Prefilling for %S with \n%S" dispatch ',fun)
+       (puthash dispatch ',fun cl--generic-dispatchers))))
+
 (cl-defmethod cl-generic-combine-methods (generic methods)
   "Standard support for :after, :before, :around, and `:extra NAME' 
qualifiers."
   (cl--generic-standard-method-combination generic methods))
@@ -840,6 +907,8 @@ Can only be used from within the lexical body of a primary 
or around method."
         (gethash (cadr specializer) cl--generic-head-used) specializer)
     (list cl--generic-head-generalizer)))
 
+(cl--generic-prefill-dispatchers 0 (head eql))
+
 ;;; Support for (eql <val>) specializers.
 
 (defvar cl--generic-eql-used (make-hash-table :test #'eql))
@@ -854,6 +923,9 @@ Can only be used from within the lexical body of a primary 
or around method."
   (puthash (cadr specializer) specializer cl--generic-eql-used)
   (list cl--generic-eql-generalizer))
 
+(cl--generic-prefill-dispatchers 0 (eql nil))
+(cl--generic-prefill-dispatchers window-system (eql nil))
+
 ;;; Support for cl-defstructs specializers.
 
 (defun cl--generic-struct-tag (name)
@@ -910,6 +982,8 @@ Can only be used from within the lexical body of a primary 
or around method."
             (list cl--generic-struct-generalizer))))
    (cl-call-next-method)))
 
+(cl--generic-prefill-dispatchers 0 cl--generic-generalizer)
+
 ;;; Dispatch on "system types".
 
 (defconst cl--generic-typeof-types
@@ -948,39 +1022,7 @@ Can only be used from within the lexical body of a 
primary or around method."
           (list cl--generic-typeof-generalizer)))
    (cl-call-next-method)))
 
-;;; Just for kicks: dispatch on major-mode
-;;
-;; Here's how you'd use it:
-;;   (cl-defmethod foo ((x (major-mode text-mode)) y z) ...)
-;; And then
-;;     (foo 'major-mode toto titi)
-;;
-;; FIXME: Better would be to do that via dispatch on an "implicit argument".
-;; E.g. (cl-defmethod foo (y z &context (major-mode text-mode)) ...)
-
-;; (defvar cl--generic-major-modes (make-hash-table :test #'eq))
-;;
-;; (add-function :before-until cl-generic-generalizer-function
-;;               #'cl--generic-major-mode-tagcode)
-;; (defun cl--generic-major-mode-tagcode (type name)
-;;   (if (eq 'major-mode (car-safe type))
-;;       `(50 . (if (eq ,name 'major-mode)
-;;                  (cl--generic-with-memoization
-;;                      (gethash major-mode cl--generic-major-modes)
-;;                    `(cl--generic-major-mode . ,major-mode))))))
-;;
-;; (add-function :before-until cl-generic-tag-types-function
-;;               #'cl--generic-major-mode-types)
-;; (defun cl--generic-major-mode-types (tag)
-;;   (when (eq (car-safe tag) 'cl--generic-major-mode)
-;;     (if (eq tag 'fundamental-mode) '(fundamental-mode t)
-;;       (let ((types `((major-mode ,(cdr tag)))))
-;;         (while (get (car types) 'derived-mode-parent)
-;;           (push (list 'major-mode (get (car types) 'derived-mode-parent))
-;;                 types))
-;;         (unless (eq 'fundamental-mode (car types))
-;;           (push '(major-mode fundamental-mode) types))
-;;         (nreverse types)))))
+(cl--generic-prefill-dispatchers 0 integer)
 
 ;; Local variables:
 ;; generated-autoload-file: "cl-loaddefs.el"
diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el
index 6b43c12..b6f3a79 100644
--- a/lisp/emacs-lisp/cl-lib.el
+++ b/lisp/emacs-lisp/cl-lib.el
@@ -731,9 +731,10 @@ If ALIST is non-nil, the new pairs are prepended to it."
 ;;; Miscellaneous.
 
 (provide 'cl-lib)
-(or (load "cl-loaddefs" 'noerror 'quiet)
-    ;; When bootstrapping, cl-loaddefs hasn't been built yet!
-    (require 'cl-macs))
+(unless (load "cl-loaddefs" 'noerror 'quiet)
+  ;; When bootstrapping, cl-loaddefs hasn't been built yet!
+  (require 'cl-macs)
+  (require 'cl-seq))
 
 ;; Local variables:
 ;; byte-compile-dynamic: t
diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el
index 5624acc..3aea67a 100644
--- a/lisp/emacs-lisp/cl-seq.el
+++ b/lisp/emacs-lisp/cl-seq.el
@@ -1018,4 +1018,6 @@ Atoms are compared by `eql'; cons cells are compared 
recursively.
 ;; generated-autoload-file: "cl-loaddefs.el"
 ;; End:
 
+(provide 'cl-seq)
+
 ;;; cl-seq.el ends here
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index 564a444..c966ace 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -626,6 +626,8 @@ You can replace this form with `gv-define-setter'.
 ;;     ...the rest, and build the 5-tuple))
 (make-obsolete 'get-setf-method 'gv-letplace "24.3")
 
+(declare-function cl--arglist-args "cl-macs" (args))
+
 (defmacro define-modify-macro (name arglist func &optional doc)
   "Define a `setf'-like modify macro.
 If NAME is called, it combines its PLACE argument with the other
@@ -639,6 +641,7 @@ You can replace this macro with `gv-letplace'."
                      symbolp &optional stringp)))
   (if (memq '&key arglist)
       (error "&key not allowed in define-modify-macro"))
+  (require 'cl-macs)                    ;For cl--arglist-args.
   (let ((place (make-symbol "--cl-place--")))
     `(cl-defmacro ,name (,place ,@arglist)
        ,doc
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index ce5c786..9d32ba2 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -731,7 +731,8 @@ Complete list of commands:
             (buffer-substring (line-beginning-position 0)
                               (line-end-position 0)))))
 
-(declare-function help-xref-interned "help-mode" (symbol))
+(declare-function help-xref-interned "help-mode"
+                  (symbol &optional buffer frame))
 
 (defun debug-help-follow (&optional pos)
   "Follow cross-reference at POS, defaulting to point.
diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el
index 59d8348..bf3f442 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -88,7 +88,7 @@ Currently under control of this var:
 
 (cl-defstruct (eieio--class
                (:constructor nil)
-               (:constructor eieio--class-make (name &aux (tag 'defclass)))
+               (:constructor eieio--class-make (name))
                (:include cl--class)
                (:copier nil))
   children
@@ -277,12 +277,12 @@ See `defclass' for more information."
   (setq eieio-hook nil)
 
   (let* ((oldc (let ((c (eieio--class-v cname))) (if (eieio--class-p c) c)))
-        (newc (if (and oldc (not (eieio--class-default-object-cache oldc)))
-                   ;; The oldc class is a stub setup by 
eieio-defclass-autoload.
-                   ;; Reuse it instead of creating a new one, so that existing
-                   ;; references stay valid.
-                   oldc
-                 (eieio--class-make cname)))
+        (newc (or oldc
+                   ;; Reuse `oldc' instead of creating a new one, so that
+                   ;; existing references stay valid.  E.g. when
+                   ;; reloading the file that does the `defclass', we don't
+                   ;; want to create a new class object.
+                   (eieio--class-make cname)))
         (groups nil) ;; list of groups id'd from slots
         (clearparent nil))
 
@@ -292,7 +292,13 @@ See `defclass' for more information."
     ;; method table breakage, particularly when the users is only
     ;; byte compiling an EIEIO file.
     (if oldc
-       (setf (eieio--class-children newc) (eieio--class-children oldc))
+        (progn
+          (cl-assert (eq newc oldc))
+          ;; Reset the fields.
+          (setf (eieio--class-parents newc) nil)
+          (setf (eieio--class-slots newc) nil)
+          (setf (eieio--class-initarg-tuples newc) nil)
+          (setf (eieio--class-class-slots newc) nil))
       ;; If the old class did not exist, but did exist in the autoload map,
       ;; then adopt those children.  This is like the above, but deals with
       ;; autoloads nicely.
@@ -724,7 +730,7 @@ Argument FN is the function calling this verifier."
   (cl-check-type slot symbol)
   (cl-check-type obj (or eieio-object class))
   (let* ((class (cond ((symbolp obj)
-                       (error "eieio-oref called on a class!")
+                       (error "eieio-oref called on a class: %s" obj)
                        (let ((c (eieio--class-v obj)))
                          (if (eieio--class-p c) (eieio-class-un-autoload obj))
                          c))
diff --git a/lisp/emacs-lisp/eieio-custom.el b/lisp/emacs-lisp/eieio-custom.el
index 26fc452..31d0b85 100644
--- a/lisp/emacs-lisp/eieio-custom.el
+++ b/lisp/emacs-lisp/eieio-custom.el
@@ -223,6 +223,7 @@ Optional argument IGNORE is an extraneous parameter."
     ;; Loop over all the slots, creating child widgets.
     (dotimes (i (length slots))
       (let* ((slot (aref slots i))
+             (sname (eieio-slot-descriptor-name slot))
              (props (cl--slot-descriptor-props slot)))
         ;; Output this slot if it has a customize flag associated with it.
         (when (and (alist-get :custom props)
@@ -261,13 +262,13 @@ Optional argument IGNORE is an extraneous parameter."
                                              (or
                                               (eieio--class-slot-initarg
                                                (eieio--object-class obj)
-                                               (car slots))
-                                              (car slots)))))
+                                              sname)
+                                             sname))))
                                      (capitalize
                                       (if (string-match "^:" s)
                                           (substring s (match-end 0))
                                         s)))))
-                              :value (slot-value obj (car slots))
+                              :value (slot-value obj sname)
                               :doc  (or (alist-get :documentation props)
                                         "Slot not Documented.")
                               :eieio-custom-visibility 'visible
@@ -297,6 +298,13 @@ Optional argument IGNORE is an extraneous parameter."
       (let* ((slot (aref slots i))
              (props (cl--slot-descriptor-props slot))
              (cust (alist-get :custom props)))
+       ;;
+       ;; Shouldn't I be incremented unconditionally?  Or
+       ;; better shouldn't we simply mapc on the slots vector
+       ;; avoiding use of this integer variable?  PLN Sat May
+       ;; 2 07:35:45 2015
+       ;;
+       (setq i (+ i 1))
         (if (and cust
                  (or eieio-custom-ignore-eieio-co
                      (not master-group)
diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index 7f98730..02b89e0 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -74,6 +74,9 @@ Argument CH-PREFIX is another character prefix to display."
 
 ;;; CLASS COMPLETION / DOCUMENTATION
 
+;; Called via help-fns-describe-function-functions.
+(declare-function help-fns-short-filename "help-fns" (filename))
+
 ;;;###autoload
 (defun eieio-help-class (class)
   "Print help description for CLASS.
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index 1114595..f6ffa3d 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -967,7 +967,7 @@ variable PRINT-FUNCTION.  Optional argument NOESCAPE is 
passed to
 
 ;;; Start of automatically extracted autoloads.
 
-;;;### (autoloads nil "eieio-custom" "eieio-custom.el" 
"813d32fbf76d4248fc6b4dc97ebcd720")
+;;;### (autoloads nil "eieio-custom" "eieio-custom.el" 
"916f54b818479a77a02f3ecccda84a11")
 ;;; Generated autoloads from eieio-custom.el
 
 (autoload 'customize-object "eieio-custom" "\
@@ -978,7 +978,7 @@ Optional argument GROUP is the sub-group of slots to 
display.
 
 ;;;***
 
-;;;### (autoloads nil "eieio-opt" "eieio-opt.el" 
"3005b815c6b30eccbf0642170b3f82a5")
+;;;### (autoloads nil "eieio-opt" "eieio-opt.el" 
"59cee62a4829ace9bb4a6526442d2b3c")
 ;;; Generated autoloads from eieio-opt.el
 
 (autoload 'eieio-browse "eieio-opt" "\
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index d527d67..0091cdb 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -354,7 +354,32 @@ return any documentation.")
                nil))
         (eldoc-message (funcall eldoc-documentation-function)))))
 
-
+;; If the entire line cannot fit in the echo area, the symbol name may be
+;; truncated or eliminated entirely from the output to make room for the
+;; description.
+(defun eldoc-docstring-format-sym-doc (prefix doc &optional face)
+  (when (symbolp prefix)
+    (setq prefix (concat (propertize (symbol-name prefix) 'face face) ": ")))
+  (let* ((ea-multi eldoc-echo-area-use-multiline-p)
+         ;; Subtract 1 from window width since emacs will not write
+         ;; any chars to the last column, or in later versions, will
+         ;; cause a wraparound and resize of the echo area.
+         (ea-width (1- (window-width (minibuffer-window))))
+         (strip (- (+ (length prefix) (length doc)) ea-width)))
+    (cond ((or (<= strip 0)
+               (eq ea-multi t)
+               (and ea-multi (> (length doc) ea-width)))
+           (concat prefix doc))
+          ((> (length doc) ea-width)
+           (substring (format "%s" doc) 0 ea-width))
+          ((>= strip (string-match-p ":? *\\'" prefix))
+           doc)
+          (t
+           ;; Show the end of the partial symbol name, rather
+           ;; than the beginning, since the former is more likely
+           ;; to be unique given package namespace conventions.
+           (concat (substring prefix strip) doc)))))
+
 ;; When point is in a sexp, the function args are not reprinted in the echo
 ;; area after every possible interactive command because some of them print
 ;; their own messages in the echo area; the eldoc functions would instantly
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index 4ffd8cd..b678e12 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -269,7 +269,7 @@ DATA is displayed to the user and should state the reason 
for skipping."
 (defun ert--special-operator-p (thing)
   "Return non-nil if THING is a symbol naming a special operator."
   (and (symbolp thing)
-       (let ((definition (indirect-function thing t)))
+       (let ((definition (indirect-function thing)))
          (and (subrp definition)
               (eql (cdr (subr-arity definition)) 'unevalled)))))
 
@@ -2537,7 +2537,7 @@ To be used in the ERT results buffer."
 (add-to-list 'minor-mode-alist '(ert--current-run-stats
                                  (:eval
                                   (ert--tests-running-mode-line-indicator))))
-(add-to-list 'emacs-lisp-mode-hook 'ert--activate-font-lock-keywords)
+(add-hook 'emacs-lisp-mode-hook #'ert--activate-font-lock-keywords)
 
 (defun ert--unload-function ()
   "Unload function to undo the side-effects of loading ert.el."
@@ -2548,7 +2548,7 @@ To be used in the ERT results buffer."
   nil)
 
 (defvar ert-unload-hook '())
-(add-hook 'ert-unload-hook 'ert--unload-function)
+(add-hook 'ert-unload-hook #'ert--unload-function)
 
 
 (provide 'ert)
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index 67d1487..d401b31 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -736,22 +736,19 @@ character."
         )
     (call-interactively 'minibuffer-complete)))
 
-(defun lisp-complete-symbol (&optional predicate)
+(defun lisp-complete-symbol (&optional _predicate)
   "Perform completion on Lisp symbol preceding point.
 Compare that symbol against the known Lisp symbols.
 If no characters can be completed, display a list of possible completions.
 Repeating the command at that point scrolls the list.
 
-When called from a program, optional arg PREDICATE is a predicate
-determining which symbols are considered, e.g. `commandp'.
-If PREDICATE is nil, the context determines which symbols are
-considered.  If the symbol starts just after an open-parenthesis, only
-symbols with function definitions are considered.  Otherwise, all
-symbols with function definitions, values or properties are
-considered."
+The context determines which symbols are considered.  If the
+symbol starts just after an open-parenthesis, only symbols with
+function definitions are considered.  Otherwise, all symbols with
+function definitions, values or properties are considered."
   (declare (obsolete completion-at-point "24.4"))
   (interactive)
-  (let* ((data (lisp-completion-at-point predicate))
+  (let* ((data (lisp-completion-at-point))
          (plist (nthcdr 3 data)))
     (if (null data)
         (minibuffer-message "Nothing to complete")
diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el
index 6955ce8..81d0b83 100644
--- a/lisp/emacs-lisp/package-x.el
+++ b/lisp/emacs-lisp/package-x.el
@@ -156,6 +156,7 @@ DESCRIPTION is the text of the news item."
                               archive-url))
 
 (declare-function lm-commentary "lisp-mnt" (&optional file))
+(defvar tar-data-buffer)
 
 (defun package-upload-buffer-internal (pkg-desc extension &optional 
archive-url)
   "Upload a package whose contents are in the current buffer.
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index f770acd..55fa962 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -185,7 +185,6 @@ and before `after-init-hook'.  Activation is not done if
 Even if the value is nil, you can type \\[package-initialize] to
 activate the package system at any time."
   :type 'boolean
-  :group 'package
   :version "24.1")
 
 (defcustom package-load-list '(all)
@@ -203,7 +202,6 @@ If VERSION is a string, only that version is ever loaded.
 If VERSION is nil, the package is not loaded (it is \"disabled\")."
   :type '(repeat symbol)
   :risky t
-  :group 'package
   :version "24.1")
 
 (defcustom package-archives '(("gnu" . "http://elpa.gnu.org/packages/";))
@@ -222,7 +220,6 @@ a package can run arbitrary code."
   :type '(alist :key-type (string :tag "Archive name")
                 :value-type (string :tag "URL or directory name"))
   :risky t
-  :group 'package
   :version "24.1")
 
 (defcustom package-menu-hide-low-priority 'archive
@@ -246,7 +243,6 @@ nil, so it can be toggled with \\<package-menu-mode-map> 
\\[package-menu-hide-ob
                  (const :tag "Hide per package-archive-priorities"
                         archive)
                  (const :tag "Hide per archive and version number" t))
-  :group 'package
   :version "25.1")
 
 (defcustom package-archive-priorities nil
@@ -265,7 +261,6 @@ See also `package-menu-hide-low-priority'."
   :type '(alist :key-type (string :tag "Archive name")
                 :value-type (integer :tag "Priority (default is 0)"))
   :risky t
-  :group 'package
   :version "25.1")
 
 (defcustom package-pinned-packages nil
@@ -289,7 +284,6 @@ the package will be unavailable."
   ;; via an entry (PACKAGE . NON-EXISTING).  Which could be an issue
   ;; if PACKAGE has a known vulnerability that is fixed in newer versions.
   :risky t
-  :group 'package
   :version "24.4")
 
 (defcustom package-user-dir (locate-user-emacs-file "elpa")
@@ -299,7 +293,6 @@ Apart from this directory, Emacs also looks for system-wide
 packages in `package-directory-list'."
   :type 'directory
   :risky t
-  :group 'package
   :version "24.1")
 
 (defcustom package-directory-list
@@ -317,7 +310,6 @@ These directories contain packages intended for 
system-wide; in
 contrast, `package-user-dir' contains packages for personal use."
   :type '(repeat directory)
   :risky t
-  :group 'package
   :version "24.1")
 
 (defvar epg-gpg-program)
@@ -335,14 +327,12 @@ contents of the archive."
                  (const allow-unsigned :tag "Allow unsigned")
                  (const t :tag "Check always"))
   :risky t
-  :group 'package
   :version "24.4")
 
 (defcustom package-unsigned-archives nil
   "List of archives where we do not check for package signatures."
   :type '(repeat (string :tag "Archive name"))
   :risky t
-  :group 'package
   :version "24.4")
 
 (defcustom package-selected-packages nil
@@ -356,9 +346,15 @@ by running `package-user-selected-packages-install'.
 To check if a package is contained in this list here, use
 `package--user-selected-p', as it may populate the variable with
 a sane initial value."
-  :group 'package
   :type '(repeat symbol))
 
+(defcustom package-menu-async t
+  "If non-nil, package-menu will use async operations when possible.
+This includes refreshing archive contents as well as installing
+packages."
+  :type 'boolean
+  :version "25.1")
+
 
 ;;; `package-desc' object definition
 ;; This is the struct used internally to represent packages.
@@ -897,7 +893,7 @@ untar into a directory named DIR; otherwise, signal an 
error."
          ;;(ignore-name (concat name "-pkg.el"))
          (generated-autoload-file (expand-file-name auto-name pkg-dir))
          ;; Silence `autoload-generate-file-autoloads'.
-         (noninteractive package--silence)
+         (noninteractive inhibit-message)
          (backup-inhibited t)
          (version-control 'never))
     (package-autoload-ensure-default-file generated-autoload-file)
@@ -917,10 +913,13 @@ untar into a directory named DIR; otherwise, signal an 
error."
   )
 
 ;;;; Compilation
+(defvar warning-minimum-level)
 (defun package--compile (pkg-desc)
   "Byte-compile installed package PKG-DESC."
-  (package-activate-1 pkg-desc)
-  (byte-recompile-directory (package-desc-dir pkg-desc) 0 t))
+  (let ((warning-minimum-level :error)
+        (save-silently inhibit-message))
+    (package-activate-1 pkg-desc)
+    (byte-recompile-directory (package-desc-dir pkg-desc) 0 t)))
 
 ;;;; Inferring package from current buffer
 (defun package-read-from-string (str)
@@ -958,7 +957,7 @@ is wrapped around any parts requiring it."
               deps))))
 
 (declare-function lm-header "lisp-mnt" (header))
-(declare-function lm-homepage "lisp-mnt" ())
+(declare-function lm-homepage "lisp-mnt" (&optional file))
 
 (defun package-buffer-info ()
   "Return a `package-desc' describing the package in the current buffer.
@@ -1080,7 +1079,7 @@ The return result is a `package-desc'."
 (declare-function epg-verify-string "epg" (context signature
                                                    &optional signed-text))
 (declare-function epg-context-result-for "epg" (context name))
-(declare-function epg-signature-status "epg" (signature))
+(declare-function epg-signature-status "epg" (signature) t)
 (declare-function epg-signature-to-string "epg" (signature))
 
 (defun package--display-verify-error (context sig-file)
@@ -1137,7 +1136,8 @@ arguments see `package--with-work-buffer'."
                              (signal (cdar status) (cddr status)))
                          (goto-char (point-min))
                          (unless (search-forward "\n\n" nil 'noerror)
-                           (error "Invalid url response"))
+                           (error "Invalid url response in buffer %s"
+                             (current-buffer)))
                          (delete-region (point-min) (point))
                          ,@body)
                        (kill-buffer (current-buffer)))
@@ -1346,6 +1346,9 @@ If successful, set `package-archive-contents'."
 ;; available on disk.
 (defvar package--initialized nil)
 
+(defvar package--init-file-ensured nil
+  "Whether we know the init file has package-initialize.")
+
 ;;;###autoload
 (defun package-initialize (&optional no-activate)
   "Load Emacs Lisp packages, and activate them.
@@ -1355,7 +1358,11 @@ If `user-init-file' does not mention 
`(package-initialize)', add
 it to the file."
   (interactive)
   (setq package-alist nil)
-  (package--ensure-init-file)
+  (if (equal user-init-file load-file-name)
+      ;; If `package-initialize' is being called as part of loading
+      ;; the init file, it's obvious we don't need to ensure-init.
+      (setq package--init-file-ensured t)
+    (package--ensure-init-file))
   (package-load-all-descriptors)
   (package-read-all-archive-contents)
   (unless no-activate
@@ -1378,16 +1385,6 @@ it to the file."
 (declare-function epg-configuration "epg-config" ())
 (declare-function epg-import-keys-from-file "epg" (context keys))
 
-(defvar package--silence nil)
-
-(defun package--message (format &rest args)
-  "Like `message', except sometimes don't print to minibuffer.
-If the variable `package--silence' is non-nil, the message is not
-displayed on the minibuffer."
-  (apply #'message format args)
-  (when package--silence
-    (message nil)))
-
 ;;;###autoload
 (defun package-import-keyring (&optional file)
   "Import keys from FILE."
@@ -1398,9 +1395,9 @@ displayed on the minibuffer."
     (with-file-modes 448
       (make-directory homedir t))
     (setf (epg-context-home-directory context) homedir)
-    (package--message "Importing %s..." (file-name-nondirectory file))
+    (message "Importing %s..." (file-name-nondirectory file))
     (epg-import-keys-from-file context file)
-    (package--message "Importing %s...done" (file-name-nondirectory file))))
+    (message "Importing %s...done" (file-name-nondirectory file))))
 
 (defvar package--post-download-archives-hook nil
   "Hook run after the archive contents are downloaded.
@@ -1466,9 +1463,9 @@ This populates `package-archive-contents'.  If ASYNC is 
non-nil,
 perform the downloads asynchronously."
   ;; The downloaded archive contents will be read as part of
   ;; `package--update-downloads-in-progress'.
-  (setq package--downloads-in-progress
-        (append package-archives
-                package--downloads-in-progress))
+  (dolist (archive package-archives)
+    (cl-pushnew archive package--downloads-in-progress
+                :test #'equal))
   (dolist (archive package-archives)
     (condition-case-unless-debug nil
         (package--download-one-archive
@@ -1492,14 +1489,14 @@ downloads in the background."
     (make-directory package-user-dir t))
   (let ((default-keyring (expand-file-name "package-keyring.gpg"
                                            data-directory))
-        (package--silence async))
+        (inhibit-message async))
     (when (and package-check-signature (file-exists-p default-keyring))
       (condition-case-unless-debug error
           (progn
             (epg-check-configuration (epg-configuration))
             (package-import-keyring default-keyring))
-        (error (message "Cannot import default keyring: %S" (cdr error)))))
-    (package--download-and-read-archives async)))
+        (error (message "Cannot import default keyring: %S" (cdr error))))))
+  (package--download-and-read-archives async))
 
 
 ;;; Dependency Management
@@ -1541,7 +1538,7 @@ SEEN is used internally to detect infinite recursion."
             ;; we re-add it (along with its dependencies) at an earlier place
             ;; below (bug#16994).
             (if (memq already seen)     ;Avoid inf-loop on dependency cycles.
-                (package--message "Dependency cycle going through %S"
+                (message "Dependency cycle going through %S"
                          (package-desc-full-name already))
               (setq packages (delq already packages))
               (setq already nil))
@@ -1607,7 +1604,7 @@ Used to populate `package-selected-packages'."
 
 (defun package--save-selected-packages (value)
   "Set and save `package-selected-packages' to VALUE."
-  (let ((save-silently package--silence))
+  (let ((save-silently inhibit-message))
     (customize-save-variable
      'package-selected-packages
      (setq package-selected-packages value))))
@@ -1728,7 +1725,8 @@ operation is done."
                       package-unsigned-archives))
           ;; If we don't care about the signature, unpack and we're
           ;; done.
-          (progn (let ((save-silently async))
+          (progn (let ((save-silently    async)
+                       (inhibit-message  async))
                    (package-unpack pkg-desc))
                  (funcall callback))
         ;; If we care, check it and *then* write the file.
@@ -1744,7 +1742,8 @@ operation is done."
                  (package-desc-name pkg-desc)))
              ;; Signature checked, unpack now.
              (with-temp-buffer (insert content)
-                               (let ((save-silently async))
+                               (let ((save-silently    async)
+                                     (inhibit-message  async))
                                  (package-unpack pkg-desc)))
              ;; Here the package has been installed successfully, mark it as
              ;; signed if appropriate.
@@ -1804,9 +1803,15 @@ using `package-compute-transaction'."
    (callback (funcall callback))))
 
 (defun package--ensure-init-file ()
-  "Ensure that the user's init file calls `package-initialize'."
+  "Ensure that the user's init file has `package-initialize'.
+`package-initialize' doesn't have to be called, as long as it is
+present somewhere in the file, even as a comment.  If it is not,
+add a call to it along with some explanatory comments."
   ;; Don't mess with the init-file from "emacs -Q".
-  (when user-init-file
+  (when (and (stringp user-init-file)
+             (not package--init-file-ensured)
+             (file-readable-p user-init-file)
+             (file-writable-p user-init-file))
     (let* ((buffer (find-buffer-visiting user-init-file))
            (contains-init
             (if buffer
@@ -1816,6 +1821,7 @@ using `package-compute-transaction'."
                       (widen)
                       (goto-char (point-min))
                       (search-forward "(package-initialize)" nil 'noerror))))
+              ;; Don't visit the file if we don't have to.
               (with-temp-buffer
                 (insert-file-contents user-init-file)
                 (goto-char (point-min))
@@ -1828,7 +1834,11 @@ using `package-compute-transaction'."
             (save-restriction
               (widen)
               (goto-char (point-min))
+              (while (and (looking-at-p "[[:blank:]]*\\(;\\|$\\)")
+                          (not (eobp)))
+                (forward-line 1))
               (insert
+               "\n"
                ";; Added by Package.el.  This must come before configurations 
of\n"
                ";; installed packages.  Don't delete this line.  If you don't 
want it,\n"
                ";; just comment it out by adding a semicolon to the start of 
the line.\n"
@@ -1839,7 +1849,8 @@ using `package-compute-transaction'."
               (let ((file-precious-flag t))
                 (save-buffer))
               (unless buffer
-                (kill-buffer (current-buffer))))))))))
+                (kill-buffer (current-buffer)))))))))
+  (setq package--init-file-ensured t))
 
 ;;;###autoload
 (defun package-install (pkg &optional dont-select async callback)
@@ -1885,7 +1896,8 @@ to install it but still mark it as selected."
                                                (package-desc-reqs pkg)))
               (package-compute-transaction () (list (list pkg))))))
       (package-download-transaction transaction async callback)
-    (package--message "`%s' is already installed" (package-desc-full-name 
pkg))))
+    (message "`%s' is already installed" (package-desc-full-name pkg))
+    (funcall callback)))
 
 (defun package-strip-rcs-id (str)
   "Strip RCS version ID from the version string STR.
@@ -1953,7 +1965,7 @@ The file can either be a tar file or an Emacs Lisp file."
     (package-install-from-buffer)))
 
 ;;;###autoload
-(defun package-install-user-selected-packages ()
+(defun package-install-selected-packages ()
   "Ensure packages in `package-selected-packages' are installed.
 If some packages are not installed propose to install them."
   (interactive)
@@ -2027,7 +2039,7 @@ If NOSAVE is non-nil, the package is not removed from
              (delete pkg-desc pkgs)
              (unless (cdr pkgs)
                (setq package-alist (delq pkgs package-alist))))
-           (package--message "Package `%s' deleted." (package-desc-full-name 
pkg-desc))))))
+           (message "Package `%s' deleted." (package-desc-full-name 
pkg-desc))))))
 
 ;;;###autoload
 (defun package-reinstall (pkg)
@@ -2457,16 +2469,17 @@ of these dependencies, similar to the list returned by
          ((version-list-= version hv) "held")
          ((version-list-< version hv) "obsolete")
          (t "disabled"))))
-     ((package-built-in-p name version) "obsolete")
-     ((package--incompatible-p pkg-desc) "incompat")
      (dir                               ;One of the installed packages.
       (cond
-       ((not (file-exists-p (package-desc-dir pkg-desc))) "deleted")
+       ((not (file-exists-p dir)) "deleted")
+       ;; Not inside `package-user-dir'.
+       ((not (file-in-directory-p dir package-user-dir)) "external")
        ((eq pkg-desc (cadr (assq name package-alist)))
         (if (not signed) "unsigned"
           (if (package--user-selected-p name)
               "installed" "dependency")))
        (t "obsolete")))
+     ((package--incompatible-p pkg-desc) "incompat")
      (t
       (let* ((ins (cadr (assq name package-alist)))
              (ins-v (if ins (package-desc-version ins))))
@@ -2497,29 +2510,43 @@ Installed obsolete packages are always displayed.")
 
 (defun package--remove-hidden (pkg-list)
   "Filter PKG-LIST according to `package-archive-priorities'.
-PKG-LIST must be a list of package-desc objects sorted by
-decreasing version number.
+PKG-LIST must be a list of package-desc objects, all with the
+same name, sorted by decreasing `package-desc-priority-version'.
 Return a list of packages tied for the highest priority according
 to their archives."
   (when pkg-list
-    ;; The first is a variable toggled with
-    ;; `package-menu-hide-obsolete', the second is a static user
-    ;; option that defines *what* we hide.
-    (if (and package-menu--hide-obsolete
-             package-menu-hide-low-priority)
-        (let ((max-priority (package-desc-priority (car pkg-list)))
-              (out (list (pop pkg-list))))
-          (dolist (p pkg-list (nreverse out))
-            (let ((priority (package-desc-priority p)))
-              (cond
-               ((> priority max-priority)
-                (setq max-priority priority)
-                (setq out (list p)))
-               ;; This assumes pkg-list is sorted by version number.
-               ((and (= priority max-priority)
-                     (eq package-menu-hide-low-priority 'archive))
-                (push p out))))))
-      pkg-list)))
+    ;; Variable toggled with `package-menu-hide-obsolete'.
+    (if (not package-menu--hide-obsolete)
+        pkg-list
+      (let ((installed (cadr (assq (package-desc-name (car pkg-list))
+                                   package-alist))))
+        (when installed
+          (setq pkg-list
+                (let ((ins-version (package-desc-version installed)))
+                  (cl-remove-if (lambda (p) (version-list-< 
(package-desc-version p)
+                                                       ins-version))
+                                pkg-list))))
+        (let ((filtered-by-priority
+               (cond
+                ((not package-menu-hide-low-priority)
+                 pkg-list)
+                ((eq package-menu-hide-low-priority 'archive)
+                 (let* ((max-priority most-negative-fixnum)
+                        (out))
+                   (while pkg-list
+                     (let ((p (pop pkg-list)))
+                       (if (>= (package-desc-priority p) max-priority)
+                           (push p out)
+                         (setq pkg-list nil))))
+                   (nreverse out)))
+                (pkg-list
+                 (list (car pkg-list))))))
+          (if (not installed)
+              filtered-by-priority
+            (let ((ins-version (package-desc-version installed)))
+              (cl-remove-if (lambda (p) (version-list-= (package-desc-version 
p)
+                                                   ins-version))
+                            filtered-by-priority))))))))
 
 (defun package-menu--refresh (&optional packages keywords)
   "Re-populate the `tabulated-list-entries'.
@@ -2527,40 +2554,38 @@ PACKAGES should be nil or t, which means to display all 
known packages.
 KEYWORDS should be nil or a list of keywords."
   ;; Construct list of (PKG-DESC . STATUS).
   (unless packages (setq packages t))
-  (let (info-list name)
+  (let (info-list)
     ;; Installed packages:
     (dolist (elt package-alist)
-      (setq name (car elt))
-      (when (or (eq packages t) (memq name packages))
-        (dolist (pkg (cdr elt))
-          (when (package--has-keyword-p pkg keywords)
-            (package--push pkg (package-desc-status pkg) info-list)))))
+      (let ((name (car elt)))
+        (when (or (eq packages t) (memq name packages))
+          (dolist (pkg (cdr elt))
+            (when (package--has-keyword-p pkg keywords)
+              (push pkg info-list))))))
 
     ;; Built-in packages:
     (dolist (elt package--builtins)
-      (setq name (car elt))
-      (when (and (not (eq name 'emacs)) ; Hide the `emacs' package.
-                 (package--has-keyword-p (package--from-builtin elt) keywords)
-                 (or package-list-unversioned
-                     (package--bi-desc-version (cdr elt)))
-                 (or (eq packages t) (memq name packages)))
-        (package--push (package--from-builtin elt) "built-in" info-list)))
+      (let ((pkg  (package--from-builtin elt))
+            (name (car elt)))
+        (when (not (eq name 'emacs)) ; Hide the `emacs' package.
+          (when (and (package--has-keyword-p pkg keywords)
+                     (or package-list-unversioned
+                         (package--bi-desc-version (cdr elt)))
+                     (or (eq packages t) (memq name packages)))
+            (push pkg info-list)))))
 
     ;; Available and disabled packages:
     (dolist (elt package-archive-contents)
-      (setq name (car elt))
-      (when (or (eq packages t) (memq name packages))
-        (dolist (pkg (package--remove-hidden (cdr elt)))
-          ;; Hide available obsolete packages.
-          (when (and (not (and package-menu--hide-obsolete
-                               (package-installed-p (package-desc-name pkg)
-                                                    (package-desc-version 
pkg))))
-                     (package--has-keyword-p pkg keywords))
-            (package--push pkg (package-desc-status pkg) info-list)))))
+      (let ((name (car elt)))
+        (when (or (eq packages t) (memq name packages))
+          ;; Hide available-obsolete or low-priority packages.
+          (dolist (pkg (package--remove-hidden (cdr elt)))
+            (when (package--has-keyword-p pkg keywords)
+              (push pkg info-list))))))
 
     ;; Print the result.
     (setq tabulated-list-entries
-          (mapcar #'package-menu--print-info info-list))))
+          (mapcar #'package-menu--print-info-simple info-list))))
 
 (defun package-all-keywords ()
   "Collect all package keywords"
@@ -2642,10 +2667,18 @@ shown."
   "Return a package entry suitable for `tabulated-list-entries'.
 PKG has the form (PKG-DESC . STATUS).
 Return (PKG-DESC [NAME VERSION STATUS DOC])."
-  (let* ((pkg-desc (car pkg))
-         (status  (cdr pkg))
+  (package-menu--print-info-simple (car pkg)))
+(make-obsolete 'package-menu--print-info
+               'package-menu--print-info-simple "25.1")
+
+(defun package-menu--print-info-simple (pkg)
+  "Return a package entry suitable for `tabulated-list-entries'.
+PKG is a package-desc object.
+Return (PKG-DESC [NAME VERSION STATUS DOC])."
+  (let* ((status  (package-desc-status pkg))
          (face (pcase status
                  (`"built-in"  'font-lock-builtin-face)
+                 (`"external"  'font-lock-builtin-face)
                  (`"available" 'default)
                  (`"avail-obso" 'font-lock-comment-face)
                  (`"new"       'bold)
@@ -2656,21 +2689,23 @@ Return (PKG-DESC [NAME VERSION STATUS DOC])."
                  (`"unsigned"  'font-lock-warning-face)
                  (`"incompat"  'font-lock-comment-face)
                  (_            'font-lock-warning-face)))) ; obsolete.
-    (list pkg-desc
-          `[,(list (symbol-name (package-desc-name pkg-desc))
-                   'face 'link
-                   'follow-link t
-                   'package-desc pkg-desc
-                   'action 'package-menu-describe-package)
+    (list pkg
+          `[(,(symbol-name (package-desc-name pkg))
+             face link
+             follow-link t
+             package-desc ,pkg
+             action package-menu-describe-package)
             ,(propertize (package-version-join
-                          (package-desc-version pkg-desc))
+                          (package-desc-version pkg))
                          'font-lock-face face)
             ,(propertize status 'font-lock-face face)
             ,@(if (cdr package-archives)
-                  (list (propertize (or (package-desc-archive pkg-desc) "")
+                  (list (propertize (or (package-desc-archive pkg) "")
                                     'font-lock-face face)))
-            ,(propertize (package-desc-summary pkg-desc)
-                         'font-lock-face face)])))
+            ,(package-desc-summary pkg)])))
+
+(defvar package-menu--old-archive-contents nil
+  "`package-archive-contents' before the latest refresh.")
 
 (defun package-menu-refresh ()
   "Download the Emacs Lisp package archive.
@@ -2887,19 +2922,19 @@ asynchronously."
         (package-install
          pkg dont-mark async
          (lambda () (package-menu--perform-transaction rest delete-list 
async))))
-    ;; Once there are no more packages to install, proceed to
-    ;; deletion.
-    (let ((package--silence async))
+    (let ((inhibit-message async))
+      ;; Once there are no more packages to install, proceed to
+      ;; deletion.
       (dolist (elt (package--sort-by-dependence delete-list))
         (condition-case-unless-debug err
             (package-delete elt)
-          (error (message (cadr err)))))
-      (when package-selected-packages
-        (when-let ((removable (package--removable-packages)))
-          (package--message "These %d packages are no longer needed, type `M-x 
package-autoremove' to remove them (%s)"
-                            (length removable)
-                            (mapconcat #'symbol-name removable ", ")))))
+          (error (message (cadr err))))))
     (message "Transaction done")
+    (when package-selected-packages
+      (when-let ((removable (package--removable-packages)))
+        (message "These %d packages are no longer needed, type `M-x 
package-autoremove' to remove them (%s)"
+          (length removable)
+          (mapconcat #'symbol-name removable ", "))))
     (package-menu--post-refresh)))
 
 (defun package-menu-execute (&optional noquery)
@@ -2959,6 +2994,8 @@ Optional argument NOQUERY non-nil means do not ask the 
user to confirm."
           ((string= sB "unsigned") nil)
           ((string= sA "held") t)
           ((string= sB "held") nil)
+          ((string= sA "external") t)
+          ((string= sB "external") nil)
           ((string= sA "built-in") t)
           ((string= sB "built-in") nil)
           ((string= sA "obsolete") t)
@@ -2982,9 +3019,6 @@ Optional argument NOQUERY non-nil means do not ask the 
user to confirm."
   (string< (or (package-desc-archive (car A)) "")
            (or (package-desc-archive (car B)) "")))
 
-(defvar package-menu--old-archive-contents nil
-  "`package-archive-contents' before the latest refresh.")
-
 (defun package-menu--populate-new-package-list ()
   "Decide which packages are new in `package-archives-contents'.
 Store this list in `package-menu--new-package-list'."
@@ -3015,14 +3049,6 @@ after `package-menu--perform-transaction'."
         (revert-buffer nil 'noconfirm))))
   (package-menu--find-and-notify-upgrades))
 
-(defcustom package-menu-async t
-  "If non-nil, package-menu will use async operations when possible.
-This includes refreshing archive contents as well as installing
-packages."
-  :type 'boolean
-  :version "25.1"
-  :group 'package)
-
 ;;;###autoload
 (defun list-packages (&optional no-fetch)
   "Display a list of packages.
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 978c3f0..5a81bb2 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -91,6 +91,10 @@
 
 (def-edebug-spec pcase-MACRO pcase--edebug-match-macro)
 
+;; Only called from edebug.
+(declare-function get-edebug-spec "edebug" (symbol))
+(declare-function edebug-match "edebug" (cursor specs))
+
 (defun pcase--edebug-match-macro (cursor)
   (let (specs)
     (mapatoms
@@ -158,12 +162,18 @@ Currently, the following patterns are provided this way:"
         ;; (puthash (car cases) `(,exp ,cases ,@expansion) pcase--memoize-2)
         expansion))))
 
+(declare-function help-fns--signature "help-fns"
+                  (function doc real-def real-function))
+
 ;; FIXME: Obviously, this will collide with nadvice's use of
 ;; function-documentation if we happen to advise `pcase'.
 (put 'pcase 'function-documentation '(pcase--make-docstring))
 (defun pcase--make-docstring ()
   (let* ((main (documentation (symbol-function 'pcase) 'raw))
          (ud (help-split-fundoc main 'pcase)))
+    ;; So that eg emacs -Q -l cl-lib --eval "(documentation 'pcase)" works,
+    ;; where cl-lib is anything using pcase-defmacro.
+    (require 'help-fns)
     (with-temp-buffer
       (insert (or (cdr ud) main))
       (mapatoms
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index 0050ff0..0aa0f09 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -4,7 +4,7 @@
 
 ;; Author: Nicolas Petton <address@hidden>
 ;; Keywords: sequences
-;; Version: 1.4
+;; Version: 1.7
 ;; Package: seq
 
 ;; Maintainer: address@hidden
@@ -63,9 +63,40 @@ Evaluate BODY with VAR bound to each element of SEQ, in turn.
                                 (prog1 (seq-elt ,seq ,index)
                                   (setq ,index (+ ,index 1)))
                               (pop ,index))))
-           ,@body))
-       ;; FIXME: Do we really want to support this?
-       ,@(cddr spec))))
+           ,@body)))))
+
+(if (fboundp 'pcase-defmacro)
+    ;; Implementation of `seq-let' based on a `pcase'
+    ;; pattern. Requires Emacs>=25.1.
+    (progn
+      (pcase-defmacro seq (&rest args)
+        "pcase pattern matching sequence elements.
+Matches if the object is a sequence (list, string or vector), and
+binds each element of ARGS to the corresponding element of the
+sequence."
+        `(and (pred seq-p)
+              ,@(seq--make-pcase-bindings args)))
+
+      (defmacro seq-let (args seq &rest body)
+        "Bind the variables in ARGS to the elements of SEQ then evaluate BODY.
+
+ARGS can also include the `&rest' marker followed by a variable
+name to be bound to the rest of SEQ."
+        (declare (indent 2) (debug t))
+        `(pcase-let ((,(seq--make-pcase-patterns args) ,seq))
+           ,@body)))
+
+  ;; Implementation of `seq-let' compatible with Emacs<25.1.
+  (defmacro seq-let (args seq &rest body)
+    "Bind the variables in ARGS to the elements of SEQ then evaluate BODY.
+
+ARGS can also include the `&rest' marker followed by a variable
+name to be bound to the rest of SEQ."
+    (declare (indent 2) (debug t))
+    (let ((seq-var (make-symbol "seq")))
+      `(let* ((,seq-var ,seq)
+              ,@(seq--make-bindings args seq-var))
+         ,@body))))
 
 (defun seq-drop (seq n)
   "Return a subsequence of SEQ without its first N elements.
@@ -335,10 +366,70 @@ This is an optimization for lists in `seq-take-while'."
       (setq n (+ 1 n)))
     n))
 
+(defun seq--make-pcase-bindings (args)
+  "Return a list of bindings of the variables in ARGS to the elements of a 
sequence."
+  (let ((bindings '())
+        (index 0)
+        (rest-marker nil))
+    (seq-doseq (name args)
+      (unless rest-marker
+        (pcase name
+          (`&rest
+           (progn (push `(app (pcase--flip seq-drop ,index)
+                              ,(seq--elt-safe args (1+ index)))
+                        bindings)
+                  (setq rest-marker t)))
+          (t
+           (push `(app (pcase--flip seq--elt-safe ,index) ,name) bindings))))
+      (setq index (1+ index)))
+    bindings))
+
+(defun seq--make-pcase-patterns (args)
+  "Return a list of `(seq ...)' pcase patterns from the argument list ARGS."
+  (cons 'seq
+        (seq-map (lambda (elt)
+                   (if (seq-p elt)
+                       (seq--make-pcase-patterns elt)
+                     elt))
+                 args)))
+
+;; Helper function for the Backward-compatible version of `seq-let'
+;; for Emacs<25.1.
+(defun seq--make-bindings (args seq &optional bindings)
+  "Return a list of bindings of the variables in ARGS to the elements of a 
sequence.
+if BINDINGS is non-nil, append new bindings to it, and return
+BINDINGS."
+  (let ((index 0)
+        (rest-marker nil))
+    (seq-doseq (name args)
+      (unless rest-marker
+        (pcase name
+          ((pred seq-p)
+           (setq bindings (seq--make-bindings (seq--elt-safe args index)
+                                              `(seq--elt-safe ,seq ,index)
+                                              bindings)))
+          (`&rest
+           (progn (push `(,(seq--elt-safe args (1+ index))
+                          (seq-drop ,seq ,index))
+                        bindings)
+                  (setq rest-marker t)))
+          (t
+           (push `(,name (seq--elt-safe ,seq ,index)) bindings))))
+      (setq index (1+ index)))
+    bindings))
+
+(defun seq--elt-safe (seq n)
+  "Return element of SEQ at the index N.
+If no element is found, return nil."
+  (when (or (listp seq)
+            (and (sequencep seq)
+                 (> (seq-length seq) n)))
+    (seq-elt seq n)))
+
 (defun seq--activate-font-lock-keywords ()
   "Activate font-lock keywords for some symbols defined in seq."
   (font-lock-add-keywords 'emacs-lisp-mode
-                          '("\\<seq-doseq\\>")))
+                          '("\\<seq-doseq\\>" "\\<seq-let\\>")))
 
 (defalias 'seq-copy #'copy-sequence)
 (defalias 'seq-elt #'elt)
@@ -346,11 +437,12 @@ This is an optimization for lists in `seq-take-while'."
 (defalias 'seq-do #'mapc)
 (defalias 'seq-each #'seq-do)
 (defalias 'seq-map #'mapcar)
+(defalias 'seq-p #'sequencep)
 
 (unless (fboundp 'elisp--font-lock-flush-elisp-buffers)
   ;; In Emacs≥25, (via elisp--font-lock-flush-elisp-buffers and a few others)
   ;; we automatically highlight macros.
-  (add-to-list 'emacs-lisp-mode-hook #'seq--activate-font-lock-keywords))
+  (add-hook 'emacs-lisp-mode-hook #'seq--activate-font-lock-keywords))
 
 (provide 'seq)
 ;;; seq.el ends here
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el
index 78a6dc9..bd178fa 100644
--- a/lisp/emacs-lisp/subr-x.el
+++ b/lisp/emacs-lisp/subr-x.el
@@ -120,7 +120,8 @@ Argument BINDINGS is a list of tuples whose car is a symbol 
to be
 bound and (optionally) used in THEN, and its cadr is a sexp to be
 evalled to set symbol's value.  In the special case you only want
 to bind a single value, BINDINGS can just be a plain tuple."
-  (declare (indent 2) (debug ((&rest (symbolp form)) form body)))
+  (declare (indent 2)
+           (debug ([&or (&rest (symbolp form)) (symbolp form)] form body)))
   (when (and (<= (length bindings) 2)
              (not (listp (car bindings))))
     ;; Adjust the single binding case
diff --git a/lisp/emacs-lisp/tabulated-list.el 
b/lisp/emacs-lisp/tabulated-list.el
index 15a0914..5d10b55 100644
--- a/lisp/emacs-lisp/tabulated-list.el
+++ b/lisp/emacs-lisp/tabulated-list.el
@@ -179,7 +179,9 @@ If ADVANCE is non-nil, move forward by one line afterwards."
     table)
   "The `glyphless-char-display' table in Tabulated List buffers.")
 
-(defvar tabulated-list--header-string nil)
+(defvar tabulated-list--header-string nil
+  "Holds the header if `tabulated-list-use-header-line' is nil.
+Populated by `tabulated-list-init-header'.")
 (defvar tabulated-list--header-overlay nil)
 
 (defun tabulated-list-init-header ()
@@ -243,15 +245,17 @@ If ADVANCE is non-nil, move forward by one line 
afterwards."
       (setq-local tabulated-list--header-string cols))))
 
 (defun tabulated-list-print-fake-header ()
-  "Insert a fake Tabulated List \"header line\" at the start of the buffer."
-  (goto-char (point-min))
-  (let ((inhibit-read-only t))
-    (insert tabulated-list--header-string "\n")
-    (if tabulated-list--header-overlay
-       (move-overlay tabulated-list--header-overlay (point-min) (point))
-      (setq-local tabulated-list--header-overlay
-                  (make-overlay (point-min) (point))))
-    (overlay-put tabulated-list--header-overlay 'face 'underline)))
+  "Insert a fake Tabulated List \"header line\" at the start of the buffer.
+Do nothing if `tabulated-list--header-string' is nil."
+  (when tabulated-list--header-string
+    (goto-char (point-min))
+    (let ((inhibit-read-only t))
+      (insert tabulated-list--header-string "\n")
+      (if tabulated-list--header-overlay
+          (move-overlay tabulated-list--header-overlay (point-min) (point))
+        (setq-local tabulated-list--header-overlay
+                    (make-overlay (point-min) (point))))
+      (overlay-put tabulated-list--header-overlay 'face 'underline))))
 
 (defun tabulated-list-revert (&rest ignored)
   "The `revert-buffer-function' for `tabulated-list-mode'.
@@ -341,8 +345,10 @@ of column descriptors."
     (dotimes (n ncols)
       (setq x (tabulated-list-print-col n (aref cols n) x)))
     (insert ?\n)
-    (put-text-property beg (point) 'tabulated-list-id id)
-    (put-text-property beg (point) 'tabulated-list-entry cols)))
+    ;; Ever so slightly faster than calling `put-text-property' twice.
+    (add-text-properties
+     beg (point)
+     `(tabulated-list-id ,id tabulated-list-entry ,cols))))
 
 (defun tabulated-list-print-col (n col-desc x)
   "Insert a specified Tabulated List entry at point.
diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el
index a91704a..110c63f 100644
--- a/lisp/emacs-lisp/testcover.el
+++ b/lisp/emacs-lisp/testcover.el
@@ -1,4 +1,4 @@
-;;;; testcover.el -- Visual code-coverage tool
+;;;; testcover.el -- Visual code-coverage tool  -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2002-2015 Free Software Foundation, Inc.
 
@@ -191,8 +191,9 @@ problems with type-ahead or post-command-hook, etc.  If 
BYTE-COMPILE is
 non-nil, byte-compiles each function after instrumenting."
   (interactive "fStart covering file: ")
   (let ((buf                (find-file filename))
-       (load-read-function 'testcover-read)
-       (edebug-all-defs t))
+       (load-read-function load-read-function))
+    (add-function :around load-read-function
+                  #'testcover--read)
     (setq edebug-form-data                       nil
          testcover-module-constants             nil
          testcover-module-1value-functions nil)
@@ -207,22 +208,26 @@ non-nil, byte-compiles each function after instrumenting."
 (defun testcover-this-defun ()
   "Start coverage on function under point."
   (interactive)
-  (let* ((edebug-all-defs t)
-        (x (symbol-function (eval-defun nil))))
+  (let ((x (let ((edebug-all-defs t))
+             (symbol-function (eval-defun nil)))))
     (testcover-reinstrument x)
     x))
 
-(defun testcover-read (&optional stream)
+(defun testcover--read (orig &optional stream)
   "Read a form using edebug, changing edebug callbacks to testcover callbacks."
-  (let ((x (edebug-read stream)))
-    (testcover-reinstrument x)
-    x))
+  (or stream (setq stream standard-input))
+  (if (eq stream (current-buffer))
+      (let ((x (let ((edebug-all-defs t))
+                 (edebug-read-and-maybe-wrap-form))))
+        (testcover-reinstrument x)
+        x)
+    (funcall (or orig #'read) stream)))
 
 (defun testcover-reinstrument (form)
   "Reinstruments FORM to use testcover instead of edebug.  This
 function modifies the list that FORM points to.  Result is nil if
 FORM should return multiple values, t if should always return same
-value, 'maybe if either is acceptable."
+value, `maybe' if either is acceptable."
   (let ((fun (car-safe form))
        id val)
     (cond
@@ -495,7 +500,7 @@ eliminated by adding more test cases."
         (len      (length points))
         (changed (buffer-modified-p))
         (coverage (get def 'edebug-coverage))
-        ov j item)
+        ov j)
     (or (and def-mark points coverage)
        (error "Missing edebug data for function %s" def))
     (when (> len 0)
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index c6d7b50..e91ce80 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -790,6 +790,8 @@ Repeating prefix key when region is active works as a 
single prefix key."
 
 ;;; Region specific commands
 
+(declare-function delete-active-region "delsel" (&optional killp))
+
 (defun cua-delete-region ()
   "Delete the active region.
 Save a copy in register 0 if `cua-delete-copy-to-register-0' is non-nil."
diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el
index dbea9e5..93b275e 100644
--- a/lisp/eshell/em-cmpl.el
+++ b/lisp/eshell/em-cmpl.el
@@ -405,7 +405,9 @@ to writing a completion function."
   "Generate list of applicable, visible commands."
   (let ((filename (pcomplete-arg)) glob-name)
     (if (file-name-directory filename)
-       (pcomplete-executables)
+        (if eshell-force-execution
+            (pcomplete-dirs-or-entries nil 'file-readable-p)
+          (pcomplete-executables))
       (if (and (> (length filename) 0)
               (eq (aref filename 0) eshell-explicit-command-char))
          (setq filename (substring filename 1)
@@ -416,6 +418,8 @@ to writing a completion function."
                   (expand-file-name default-directory)))
             (path "") (comps-in-path ())
             (file "") (filepath "") (completions ()))
+        (if (eshell-under-windows-p)
+            (push "." paths))
        ;; Go thru each path in the search path, finding completions.
        (while paths
          (setq path (file-name-as-directory
@@ -431,7 +435,9 @@ to writing a completion function."
            (if (and (not (member file completions)) ;
                     (or (string-equal path cwd)
                         (not (file-directory-p filepath)))
-                    (file-executable-p filepath))
+                     (if eshell-force-execution
+                         (file-readable-p filepath)
+                       (file-executable-p filepath)))
                (setq completions (cons file completions)))
            (setq comps-in-path (cdr comps-in-path)))
          (setq paths (cdr paths)))
diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el
index 0b25b31..91c4f4b 100644
--- a/lisp/eshell/esh-ext.el
+++ b/lisp/eshell/esh-ext.el
@@ -60,14 +60,15 @@ loaded into memory, thus beginning a new process."
   :type '(repeat string)
   :group 'eshell-ext)
 
-(defcustom eshell-force-execution nil
-  "If non-nil, try to execute binary files regardless of permissions.
+(defcustom eshell-force-execution
+  (not (null (memq system-type '(windows-nt ms-dos))))
+  "If non-nil, try to execute files regardless of execute permissions.
 This can be useful on systems like Windows, where the operating system
-doesn't happen to honor the permission bits in certain cases; or in
-cases where you want to associate an interpreter with a particular
-kind of script file, but the language won't let you but a '#!'
-interpreter line in the file, and you don't want to make it executable
-since nothing else but Eshell will be able to understand
+doesn't support the execution bit for shell scripts; or in cases where
+you want to associate an interpreter with a particular kind of script
+file, but the language won't let you but a '#!' interpreter line in
+the file, and you don't want to make it executable since nothing else
+but Eshell will be able to understand
 `eshell-interpreter-alist'."
   :type 'boolean
   :group 'eshell-ext)
@@ -78,6 +79,8 @@ since nothing else but Eshell will be able to understand
       name
     (let ((list (eshell-parse-colon-path eshell-path-env))
          suffixes n1 n2 file)
+      (if (eshell-under-windows-p)
+          (push "." list))
       (while list
        (setq n1 (concat (car list) name))
        (setq suffixes eshell-binary-suffixes)
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 452275a..d78fd4c 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1288,7 +1288,7 @@ which may actually result in an URL rather than a 
filename."
                    nil
                    nil
                    (if dir (cons guess (length dir)) guess)
-                   (list 'file-name-history)
+                   'file-name-history
                    (and buffer-file-name
                         (abbreviate-file-name buffer-file-name)))))
         ;; Remove the special handler manually.  We used to just let-bind
diff --git a/lisp/files.el b/lisp/files.el
index 045eeaf..ef6ac7b 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -654,10 +654,14 @@ the value of `default-directory'."
                  'file-directory-p))
 
 
-(defun pwd ()
-  "Show the current default directory."
-  (interactive nil)
-  (message "Directory %s" default-directory))
+(defun pwd (&optional insert)
+  "Show the current default directory.
+With prefix argument INSERT, insert the current default directory
+at point instead."
+  (interactive "P")
+  (if insert
+      (insert default-directory)
+    (message "Directory %s" default-directory)))
 
 (defvar cd-path nil
   "Value of the CDPATH environment variable, as a list.
diff --git a/lisp/foldout.el b/lisp/foldout.el
index 443f8b7..64c0af4 100644
--- a/lisp/foldout.el
+++ b/lisp/foldout.el
@@ -280,16 +280,16 @@ optional arg EXPOSURE \(interactively with prefix arg\) 
changes this:-
       (goto-char start)
       (cond
        ((null exposure)
-       (show-entry)
-       (show-children))
+       (outline-show-entry)
+       (outline-show-children))
        ((< exposure-value 0)
-       (show-entry))
+       (outline-show-entry))
        ((consp exposure)
-       (show-children))
+       (outline-show-children))
        ((> exposure-value 0)
-       (show-children exposure-value))
+       (outline-show-children exposure-value))
        (t
-       (show-subtree))
+       (outline-show-subtree))
        )
 
       ;; save the location of the fold we are entering
@@ -366,7 +366,7 @@ exited and text is left visible."
        ;; hide the subtree
        (when hide-fold
          (goto-char start-marker)
-         (hide-subtree))
+         (outline-hide-subtree))
 
        ;; make sure the next heading is exposed
        (if end-marker
@@ -454,10 +454,10 @@ What gets exposed depends on the number of mouse clicks:-
   (foldout-mouse-goto-heading event)
   (let ((nclicks (event-click-count event)))
     (cond
-     ((= nclicks 1) (show-entry))
-     ((= nclicks 2) (show-children))
-     ((= nclicks 3) (show-entry) (show-children))
-     (t (show-subtree)))))
+     ((= nclicks 1) (outline-show-entry))
+     ((= nclicks 2) (outline-show-children))
+     ((= nclicks 3) (outline-show-entry) (outline-show-children))
+     (t (outline-show-subtree)))))
 
 (defun foldout-mouse-hide-or-exit (event)
   "Hide the subtree under the heading clicked on, or exit a fold.
@@ -478,7 +478,7 @@ What happens depends on the number of mouse clicks:-
     (if (= nclicks 1)
        (progn
          (foldout-mouse-goto-heading event)
-         (hide-subtree))
+         (outline-hide-subtree))
       (foldout-exit-fold
        (cond
        ((= nclicks 2) 1)               ; exit and hide
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 96b290e..b145513 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1350,7 +1350,7 @@ delimit the region to fontify."
        deactivate-mark)
     ;; Make sure we have the right `font-lock-keywords' etc.
     (if (not font-lock-mode) (font-lock-set-defaults))
-    (save-excursion
+    (save-mark-and-excursion
       (save-match-data
        (condition-case error-data
            (if (or arg (not font-lock-mark-block-function))
diff --git a/lisp/frame.el b/lisp/frame.el
index e8a8982..0c1fb38 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -217,6 +217,7 @@ This function runs the hook `focus-out-hook'."
   "Non-nil means function `frame-notice-user-settings' wasn't run yet.")
 
 (declare-function tool-bar-mode "tool-bar" (&optional arg))
+(declare-function tool-bar-height "xdisp.c" (&optional frame pixelwise))
 
 (defalias 'tool-bar-lines-needed 'tool-bar-height)
 
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 14f9adc..989a424 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -7027,8 +7027,7 @@ If given a prefix, show the hidden text instead."
     (gnus-check-server (gnus-find-method-for-group gnus-newsgroup-name))
     (gnus-request-group gnus-newsgroup-name t)))
 
-(eval-when-compile
-  (autoload 'nneething-get-file-name "nneething"))
+(declare-function nneething-get-file-name "nneething" (id))
 
 (defun gnus-request-article-this-buffer (article group)
   "Get an article and insert it into this buffer."
diff --git a/lisp/gnus/gnus-async.el b/lisp/gnus/gnus-async.el
index b1b3af9..d4d3dba 100644
--- a/lisp/gnus/gnus-async.el
+++ b/lisp/gnus/gnus-async.el
@@ -226,9 +226,6 @@ that was fetched."
   `(lambda (arg)
      (gnus-async-article-callback arg ,group ,article ,mark ,summary ,next)))
 
-(eval-when-compile
-  (autoload 'gnus-html-prefetch-images "gnus-html"))
-
 (defun gnus-async-article-callback (arg group article mark summary next)
   "Function called when an async article is done being fetched."
   (save-excursion
diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el
index 3c0025f..c9ccc3e 100644
--- a/lisp/gnus/gnus-sync.el
+++ b/lisp/gnus/gnus-sync.el
@@ -90,10 +90,7 @@
 (require 'gnus-util)
 
 (defvar gnus-topic-alist) ;; gnus-group.el
-(eval-when-compile
-  (autoload 'gnus-group-topic "gnus-topic")
-  (autoload 'gnus-topic-create-topic "gnus-topic" nil t)
-  (autoload 'gnus-topic-enter-dribble "gnus-topic"))
+(autoload 'gnus-group-topic "gnus-topic")
 
 (defgroup gnus-sync nil
   "The Gnus synchronization facility."
@@ -605,6 +602,10 @@ unwanted groups via the LeSync URL."
                       loc name gnus-sync-lesync-name (or sources "")))
       nil)))
 
+(declare-function gnus-topic-create-topic "gnus-topic"
+                  (topic parent &optional previous full-topic))
+(declare-function gnus-topic-enter-dribble "gnus-topic" ())
+
 (defun gnus-sync-lesync-install-group-entry (name)
   (let* ((master (assoc name gnus-newsrc-alist))
          (old-topic-name (gnus-group-topic name))
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 7bacaba..b75d9ef 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1575,8 +1575,10 @@ SPEC is a predicate specifier that contains stuff like 
`or', `and',
 
 
 (declare-function iswitchb-read-buffer "iswitchb"
-                 (prompt &optional default require-match start matches-set))
+                 (prompt &optional default require-match
+                         _predicate start matches-set))
 (defvar iswitchb-temp-buflist)
+(defvar iswitchb-mode)
 
 (defun gnus-iswitchb-completing-read (prompt collection &optional require-match
                                             initial-input history def)
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 1371e70..8bb0a78 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -3997,8 +3997,6 @@ This function uses `mail-citation-hook' if that is 
non-nil."
   "Cite function in the standard Message manner."
   (message-cite-original-1 nil))
 
-(defvar gnus-extract-address-components)
-
 (autoload 'format-spec "format-spec")
 (autoload 'gnus-date-get-time "gnus-util")
 
@@ -4020,7 +4018,7 @@ See `message-citation-line-format'."
     (unless from
       (setq from (mail-header-from message-reply-headers)))
     (let* ((data (condition-case ()
-                    (funcall (if (boundp gnus-extract-address-components)
+                    (funcall (if (boundp 'gnus-extract-address-components)
                                  gnus-extract-address-components
                                'mail-extract-address-components)
                              from)
diff --git a/lisp/gnus/mm-archive.el b/lisp/gnus/mm-archive.el
index d88e159..9c86c4a 100644
--- a/lisp/gnus/mm-archive.el
+++ b/lisp/gnus/mm-archive.el
@@ -23,9 +23,8 @@
 ;;; Code:
 
 (require 'mm-decode)
-(eval-when-compile
-  (autoload 'gnus-recursive-directory-files "gnus-util")
-  (autoload 'mailcap-extension-to-mime "mailcap"))
+(autoload 'gnus-recursive-directory-files "gnus-util")
+(autoload 'mailcap-extension-to-mime "mailcap")
 
 (defvar mm-archive-decoders
   '(("application/ms-tnef" t "tnef" "-f" "-" "-C")
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index ae6bb71..bce9abd 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1827,7 +1827,7 @@ If RECURSIVE, search recursively."
              (not (mm-long-lines-p 76))))))
 
 (declare-function libxml-parse-html-region "xml.c"
-                 (start end &optional base-url))
+                 (start end &optional base-url discard-comments))
 (declare-function shr-insert-document "shr" (dom))
 (defvar shr-blocked-images)
 (defvar shr-use-fonts)
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 0b75901..ab9145f 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -1058,11 +1058,10 @@ This affects whether coding conversion should be 
attempted generally."
                (length (memq (coding-system-base b) priorities)))
           t))))
 
-(eval-when-compile
-  (autoload 'latin-unity-massage-name "latin-unity")
-  (autoload 'latin-unity-maybe-remap "latin-unity")
-  (autoload 'latin-unity-representations-feasible-region "latin-unity")
-  (autoload 'latin-unity-representations-present-region "latin-unity"))
+(declare-function latin-unity-massage-name "ext:latin-unity")
+(declare-function latin-unity-maybe-remap "ext:latin-unity")
+(declare-function latin-unity-representations-feasible-region 
"ext:latin-unity")
+(declare-function latin-unity-representations-present-region "ext:latin-unity")
 
 (defvar latin-unity-coding-systems)
 (defvar latin-unity-ucs-list)
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index a3d6e74..edc2d39 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -629,6 +629,8 @@ If MODE is not set, try to find mode automatically."
     (replace-match "\n"))
   t)
 
+(autoload 'epg-decrypt-string "epg")
+
 (defun mm-view-pkcs7-decrypt (handle &optional from)
   (insert-buffer-substring (mm-handle-buffer handle))
   (goto-char (point-min))
diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el
index 58d3b46..3f0809e 100644
--- a/lisp/gnus/mml-smime.el
+++ b/lisp/gnus/mml-smime.el
@@ -317,24 +317,25 @@ Whether the passphrase is cached at all is controlled by
 (defvar inhibit-redisplay)
 (defvar password-cache-expiry)
 
-(eval-when-compile
-  (autoload 'epg-make-context "epg")
-  (autoload 'epg-context-set-armor "epg")
-  (autoload 'epg-context-set-signers "epg")
-  (autoload 'epg-context-result-for "epg")
-  (autoload 'epg-new-signature-digest-algorithm "epg")
-  (autoload 'epg-verify-result-to-string "epg")
-  (autoload 'epg-list-keys "epg")
-  (autoload 'epg-decrypt-string "epg")
-  (autoload 'epg-verify-string "epg")
-  (autoload 'epg-sign-string "epg")
-  (autoload 'epg-encrypt-string "epg")
-  (autoload 'epg-passphrase-callback-function "epg")
-  (autoload 'epg-context-set-passphrase-callback "epg")
-  (autoload 'epg-sub-key-fingerprint "epg")
-  (autoload 'epg-configuration "epg-config")
-  (autoload 'epg-expand-group "epg-config")
-  (autoload 'epa-select-keys "epa"))
+(autoload 'epg-make-context "epg")
+(autoload 'epg-passphrase-callback-function "epg")
+(declare-function epg-context-set-signers "epg" (context signers))
+(declare-function epg-context-result-for "epg" (context name))
+(declare-function epg-new-signature-digest-algorithm "epg" (cl-x) t)
+(declare-function epg-verify-result-to-string "epg" (verify-result))
+(declare-function epg-list-keys "epg" (context &optional name mode))
+(declare-function epg-verify-string "epg"
+                 (context signature &optional signed-text))
+(declare-function epg-sign-string "epg" (context plain &optional mode))
+(declare-function epg-encrypt-string "epg"
+                 (context plain recipients &optional sign always-trust))
+(declare-function epg-context-set-passphrase-callback "epg"
+                 (context passphrase-callback))
+(declare-function epg-sub-key-fingerprint "epg" (cl-x) t)
+(declare-function epg-configuration "epg-config" ())
+(declare-function epg-expand-group "epg-config" (config group))
+(declare-function epa-select-keys "epa"
+                 (context prompt &optional names secret))
 
 (defvar mml-smime-epg-secret-key-id-list nil)
 
@@ -359,9 +360,9 @@ Whether the passphrase is cached at all is controlled by
              (cons key-id mml-smime-epg-secret-key-id-list))
        (copy-sequence passphrase)))))
 
-(declare-function epg-key-sub-key-list   "ext:epg" (key))
-(declare-function epg-sub-key-capability "ext:epg" (sub-key))
-(declare-function epg-sub-key-validity   "ext:epg" (sub-key))
+(declare-function epg-key-sub-key-list   "epg" (key) t)
+(declare-function epg-sub-key-capability "epg" (sub-key) t)
+(declare-function epg-sub-key-validity   "epg" (sub-key) t)
 
 (defun mml-smime-epg-find-usable-key (keys usage)
   (catch 'found
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 2a3b228..5754475 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -463,7 +463,7 @@ If MML is non-nil, return the buffer up till the 
correspondent mml tag."
 (defvar mml-inhibit-compute-boundary nil)
 
 (declare-function libxml-parse-html-region "xml.c"
-                 (start end &optional base-url))
+                 (start end &optional base-url discard-comments))
 
 (defun mml-generate-mime (&optional multipart-type)
   "Generate a MIME message based on the current MML document.
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index 08ca7c7..15ccc47 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -281,16 +281,6 @@ is `(valuefunc member)'."
 
 (require 'gnus-sum)
 
-(eval-when-compile
-  (autoload 'nnimap-buffer "nnimap")
-  (autoload 'nnimap-command "nnimap")
-  (autoload 'nnimap-change-group "nnimap")
-  (autoload 'nnimap-make-thread-query "nnimap")
-  (autoload 'gnus-registry-action "gnus-registry")
-  (autoload 'gnus-registry-get-id-key "gnus-registry")
-  (autoload 'gnus-group-topic-name "gnus-topic"))
-
-
 (nnoo-declare nnir)
 (nnoo-define-basics nnir)
 
@@ -586,6 +576,8 @@ Add an entry here when adding a new search engine.")
 
 ;; Gnus glue.
 
+(declare-function gnus-group-topic-name "gnus-topic" ())
+
 (defun gnus-group-make-nnir-group (nnir-extra-parms &optional specs)
   "Create an nnir group.  Prompt for a search query and determine
 the groups to search as follows: if called from the *Server*
@@ -948,6 +940,10 @@ ready to be added to the list of search results."
 
 ;;; Search Engine Interfaces:
 
+(autoload 'nnimap-change-group "nnimap")
+(declare-function nnimap-buffer "nnimap" ())
+(declare-function nnimap-command "nnimap" (&rest args))
+
 ;; imap interface
 (defun nnir-run-imap (query srv &optional groups)
   "Run a search against an IMAP back-end server.
@@ -1774,6 +1770,9 @@ environment unless `not-global' is non-nil."
   (let ((backend (car (gnus-server-to-method server))))
     (nnoo-current-server-p (or backend 'nnir) server)))
 
+(autoload 'nnimap-make-thread-query "nnimap")
+(declare-function gnus-registry-get-id-key "gnus-registry" (id key))
+
 (defun nnir-search-thread (header)
   "Make an nnir group based on the thread containing the article
 header. The current server will be searched. If the registry is
@@ -1841,6 +1840,10 @@ article came from is also searched."
            (forward-line)))))
     groups))
 
+;; Behind gnus-registry-enabled test.
+(declare-function gnus-registry-action "gnus-registry"
+                  (action data-header from &optional to method))
+
 (defun nnir-registry-action (action data-header from &optional to method)
   "Call `gnus-registry-action' with the original article group."
   (gnus-registry-action
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 5c54810..71bc916 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -36,8 +36,7 @@
 
 (autoload 'gnus-add-buffer "gnus")
 (autoload 'gnus-kill-buffer "gnus")
-(eval-when-compile
-  (autoload 'mail-send-and-exit "sendmail" nil t))
+(autoload 'mail-send-and-exit "sendmail" nil t)
 
 (defgroup nnmail nil
   "Reading mail with Gnus."
diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el
index ac9c5ff..1546f92 100644
--- a/lisp/gnus/nnrss.el
+++ b/lisp/gnus/nnrss.el
@@ -395,7 +395,7 @@ otherwise return nil."
     (mm-coding-system-p 'utf-8)))
 
 (declare-function libxml-parse-html-region "xml.c"
-                 (start end &optional base-url))
+                 (start end &optional base-url discard-comments))
 (defun nnrss-fetch (url &optional local)
   "Fetch URL and put it in a the expected Lisp structure."
   (mm-with-unibyte-buffer
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index 500f341..02ec695 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -2232,15 +2232,6 @@ Uses `gnus-newsgroup-name' if category is nil (for ham 
registration)."
 
 ;;{{{ spam-stat
 
-(eval-when-compile
-  (autoload 'spam-stat-buffer-change-to-non-spam "spam-stat")
-  (autoload 'spam-stat-buffer-change-to-spam "spam-stat")
-  (autoload 'spam-stat-buffer-is-non-spam "spam-stat")
-  (autoload 'spam-stat-buffer-is-spam "spam-stat")
-  (autoload 'spam-stat-load "spam-stat")
-  (autoload 'spam-stat-save "spam-stat")
-  (autoload 'spam-stat-split-fancy "spam-stat"))
-
 (require 'spam-stat)
 
 (defun spam-check-stat ()
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 9020037..4982ee5 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -495,6 +495,9 @@ FILE is the file where FUNCTION was probably defined."
                               f))
                    ((subrp def) (intern (subr-name def)))
                    (t def)))
+        (sig-key (if (subrp def)
+                      (indirect-function real-def)
+                    real-def))
         (file-name (find-lisp-object-file-name function def))
          (pt1 (with-current-buffer (help-buffer) (point)))
         (beg (if (and (or (byte-code-function-p def)
@@ -586,7 +589,7 @@ FILE is the file where FUNCTION was probably defined."
 
         (help-fns--key-bindings function)
         (with-current-buffer standard-output
-          (setq doc (help-fns--signature function doc real-def real-function))
+          (setq doc (help-fns--signature function doc sig-key real-function))
          (run-hook-with-args 'help-fns-describe-function-functions function)
           (insert "\n"
                   (or doc "Not documented.")))))))
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index d6679e9..f99e916 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -727,7 +727,7 @@ BUFFER or FRAME."
     (user-error "No previous help buffer")))
 
 (defun help-go-forward ()
-  "Go back to next topic in this help buffer."
+  "Go to the next topic in this help buffer."
   (interactive)
   (if help-xref-forward-stack
       (help-xref-go-forward (current-buffer))
diff --git a/lisp/help.el b/lisp/help.el
index fb1719a..2b8f642 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -691,7 +691,8 @@ POSITION is as documented in the function `key-binding'."
 (defun help--binding-locus (key position)
   "Describe in which keymap KEY is defined.
 Return a symbol pointing to that keymap if one exists ; otherwise
-return nil."
+return nil.  The argument POSITION is as documented in the
+function `key-binding'."
   (let ((map (help--key-binding-keymap key t nil position)))
     (when map
       (catch 'found
diff --git a/lisp/info.el b/lisp/info.el
index 057bd77..05574ae 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -632,7 +632,7 @@ Do the right thing if the file has been compressed or 
zipped."
                                       default-directory)))
            (or (consp decoder)
                (setq decoder (list decoder)))
-           (apply 'call-process-region (point-min) (point-max)
+           (apply #'call-process-region (point-min) (point-max)
                   (car decoder) t t nil (cdr decoder))))
       (let ((inhibit-null-byte-detection t)) ; Index nodes include null bytes
        (insert-file-contents fullname visit)))
@@ -1422,10 +1422,10 @@ is non-nil)."
            (insert "\^_\nFile: dir\tNode: " nodename "\n\n* Menu:\n\n"))
          ;; Merge the text from the other buffer's menu
          ;; into the menu in the like-named node in the main buffer.
-         (apply 'insert-buffer-substring (cdr node))))
+         (apply #'insert-buffer-substring (cdr node))))
       (Info-dir-remove-duplicates)
       ;; Kill all the buffers we just made, including the special one excised.
-      (mapc 'kill-buffer (cons buffer buffers))
+      (mapc #'kill-buffer (cons buffer buffers))
       (goto-char (point-min))
       (if problems
          (message "Composing main Info directory...problems encountered, see 
`*Messages*'")
@@ -1810,10 +1810,10 @@ See `completing-read' for a description of arguments 
and usage."
    ((string-match "\\`([^)]*\\'" string)
     (completion-table-with-context
      "("
-     (apply-partially 'completion-table-with-terminator ")"
-                      (apply-partially 'Info-read-node-name-2
+     (apply-partially #'completion-table-with-terminator ")"
+                      (apply-partially #'Info-read-node-name-2
                                        Info-directory-list
-                                       (mapcar 'car Info-suffix-list)))
+                                       (mapcar #'car Info-suffix-list)))
      (substring string 1)
      predicate
      code))
@@ -1827,12 +1827,11 @@ See `completing-read' for a description of arguments 
and usage."
          t
        (completion-table-with-context
         file0
-        (apply-partially
-         (lambda (string pred action)
-           (complete-with-action
-            action
-            (Info-build-node-completions (Info-find-file file1))
-            string pred)))
+         (lambda (string pred action)
+           (complete-with-action
+            action
+            (Info-build-node-completions (Info-find-file file1))
+            string pred))
         nodename predicate code))))
    ;; Otherwise use Info-read-node-completion-table.
    (t (complete-with-action
@@ -2750,7 +2749,8 @@ new buffer."
              (end-of-line)
              (if (re-search-backward (concat "\n\\* +\\("
                                              Info-menu-entry-name-re
-                                             "\\):") beg t)
+                                             "\\):")
+                                      beg t)
                  (setq default (match-string-no-properties 1))))))
      (let ((item nil))
        (while (null item)
@@ -2760,7 +2760,8 @@ new buffer."
                                           (format "Menu item (default %s): "
                                                   default)
                                         "Menu item: ")
-                                      'Info-complete-menu-item nil t)))
+                                      #'Info-complete-menu-item nil t nil nil
+                                       default)))
         ;; we rely on the fact that completing-read accepts an input
         ;; of "" even when the require-match argument is true and ""
         ;; is not a valid possibility
@@ -3496,7 +3497,7 @@ MATCHES is a list of index matches found by 
`Info-apropos-matches'.")
 
 (defun Info-apropos-toc-nodes (filename)
   "Apropos-specific implementation of `Info-toc-nodes'."
-  (let ((nodes (mapcar 'car (reverse Info-apropos-nodes))))
+  (let ((nodes (mapcar #'car (reverse Info-apropos-nodes))))
     `(,filename
       ("Top" nil nil ,nodes)
       ,@(mapcar (lambda (node) `(,node "Top" nil nil)) nodes))))
@@ -3709,13 +3710,13 @@ Build a menu of the possible matches."
      "The following packages match the keyword `" nodename "':\n\n")
     (insert "* Menu:\n\n")
     (let ((keywords
-          (mapcar 'intern (if (string-match-p "," nodename)
+          (mapcar #'intern (if (string-match-p "," nodename)
                               (split-string nodename ",[ \t\n]*" t)
                             (list nodename))))
          hits desc)
       (dolist (keyword keywords)
        (push (copy-tree (gethash keyword finder-keywords-hash)) hits))
-      (setq hits (delete-dups (apply 'append hits))
+      (setq hits (delete-dups (apply #'append hits))
            ;; Not a meaningful package.
            hits (delete 'emacs hits)
            hits (sort hits (lambda (a b) (string< (symbol-name a)
@@ -3766,8 +3767,8 @@ with a list of packages that contain all specified 
keywords."
      (list
       (completing-read-multiple
        "Keywords (separated by comma): "
-       (mapcar 'symbol-name (mapcar 'car (append finder-known-keywords
-                                                (finder-unknown-keywords))))
+       (mapcar #'symbol-name (mapcar #'car (append finder-known-keywords
+                                                   (finder-unknown-keywords))))
        nil t))))
   (require 'finder)
   (if keywords
@@ -5322,9 +5323,9 @@ completion alternatives to currently visited manuals."
                         (when (not visited-only)
                           (all-completions
                            ""
-                           (apply-partially 'Info-read-node-name-2
+                           (apply-partially #'Info-read-node-name-2
                                             Info-directory-list
-                                            (mapcar 'car 
Info-suffix-list))))))))
+                                            (mapcar #'car 
Info-suffix-list))))))))
 
 (provide 'info)
 
diff --git a/lisp/international/cp51932.el b/lisp/international/cp51932.el
index a648926..cb72356 100644
--- a/lisp/international/cp51932.el
+++ b/lisp/international/cp51932.el
@@ -468,3 +468,5 @@
              (setcar x (cdr x)) (setcdr x tmp)))
        map)
   (define-translation-table 'cp51932-encode map))
+
+(provide 'cp51932)
diff --git a/lisp/international/eucjp-ms.el b/lisp/international/eucjp-ms.el
index 6e4e1e7..efb0a2b 100644
--- a/lisp/international/eucjp-ms.el
+++ b/lisp/international/eucjp-ms.el
@@ -2085,3 +2085,5 @@
              (setcar x (cdr x)) (setcdr x tmp)))
        map)
   (define-translation-table 'eucjp-ms-encode map))
+
+(provide 'eucjp-ms)
diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-transl.el
index 73bcae0..e9fb009 100644
--- a/lisp/international/iso-transl.el
+++ b/lisp/international/iso-transl.el
@@ -1,4 +1,4 @@
-;;; iso-transl.el --- keyboard input definitions for ISO 8859-1  -*- coding: 
utf-8 -*-
+;;; iso-transl.el --- keyboard input for ISO 10646 chars -*- coding: utf-8 -*-
 
 ;; Copyright (C) 1987, 1993-1999, 2001-2015 Free Software Foundation,
 ;; Inc.
@@ -36,6 +36,10 @@
 ;; to make all of the Alt keys autoload, and it is not clear
 ;; that the dead accent keys SHOULD autoload this package.
 
+;; This package supports all characters defined by ISO 8859-1, along
+;; with a few other ISO 10646 characters commonly used in English and
+;; basic math.
+
 ;;; Code:
 
 ;;; Provide some binding for startup:
@@ -192,6 +196,31 @@
     ("~o"   . [?õ])
     ("~t"   . [?þ])
     ("~~"   . [?¬])
+    ("_h"   . [?‐])
+    ("_H"   . [?‑])
+    ("_f"   . [?‒])
+    ("_n"   . [?–])
+    ("_m"   . [?—])
+    ("_q"   . [?―])
+    ("["    . [?‘])
+    ("]"    . [?’])
+    ("{"    . [?“])
+    ("}"    . [?”])
+    ("1+"   . [?†])
+    ("2+"   . [?‡])
+    ("**"   . [?•])
+    ("*'"   . [?′])
+    ("*\""  . [?″])
+    ("*E"   . [?€])
+    ("No"   . [?№])
+    ("a<"   . [?←])
+    ("a>"   . [?→])
+    ("a="   . [?↔])
+    ("_-"   . [?−])
+    ("~="   . [?≈])
+    ("/="   . [?≠])
+    ("_<"   . [?≤])
+    ("_>"   . [?≥])
     ("' "   . "'")
     ("` "   . "`")
     ("\" "  . "\"")
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index cca659f..4b63cb8 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -1698,7 +1698,7 @@ Usually, the input method inserts the intermediate key 
sequence,
 or candidate translations corresponding to the sequence,
 at point in the current buffer.
 But, if this flag is non-nil, it displays them in echo area instead."
-  :type 'hook
+  :type 'boolean
   :group 'mule)
 
 (defvar input-method-exit-on-invalid-key nil
@@ -2708,6 +2708,14 @@ See also `locale-charset-language-names', 
`locale-language-names',
        (set-terminal-coding-system 'utf-8)
        (set-keyboard-coding-system 'utf-8)))
 
+    ;; If curved quotes don't work, display straight ASCII approximations.
+    (unless frame
+      (dolist (char-repl '((?‘ . [?\']) (?’ . [?\']) (?“ . [?\"]) (?” . 
[?\"])))
+        (when (not (char-displayable-p (car char-repl)))
+          (or standard-display-table
+              (setq standard-display-table (make-display-table)))
+          (aset standard-display-table (car char-repl) (cdr char-repl)))))
+
     ;; Default to A4 paper if we're not in a C, POSIX or US locale.
     ;; (See comments in Flocale_info.)
     (unless frame
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index 5e422bf..90a540a 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -793,9 +793,10 @@ you type is correctly handled."
                 keyseq)))
 
 (defun quail-insert-kbd-layout (kbd-layout)
-"Insert the visual keyboard layout table according to KBD-LAYOUT.
+  "Insert the visual keyboard layout table according to KBD-LAYOUT.
 The format of KBD-LAYOUT is the same as `quail-keyboard-layout'."
   (let (done-list layout i ch)
+    (setq bidi-paragraph-direction 'left-to-right)
     ;; At first, convert KBD-LAYOUT to the same size vector that
     ;; contains translated character or string.
     (setq layout (string-to-vector kbd-layout)
diff --git a/lisp/international/robin.el b/lisp/international/robin.el
index 897075f..8254180 100644
--- a/lisp/international/robin.el
+++ b/lisp/international/robin.el
@@ -576,7 +576,7 @@ used."
 (provide 'robin)
 
 ;; Local Variables:
-;; coding: utf-8-emacs
+;; coding: utf-8
 ;; End:
 
 ;;; robin.el ends here
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 35fb060..dc10502 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -452,7 +452,7 @@ This is like `describe-bindings', but displays only Isearch 
keys."
     (define-key map "\M-\C-s" 'isearch-repeat-forward)
     (define-key map "\M-\C-r" 'isearch-repeat-backward)
     (define-key map "\177" 'isearch-delete-char)
-    (define-key map [backspace] 'isearch-delete-char)
+    (define-key map [backspace] 'undefined) ;bug#20466.
     (define-key map "\C-g" 'isearch-abort)
 
     ;; This assumes \e is the meta-prefix-char.
@@ -1924,8 +1924,8 @@ If search string is empty, just beep."
 (defun isearch-yank-x-selection ()
   "Pull current X selection into search string."
   (interactive)
-  (isearch-yank-string (x-get-selection))
-  ;; If `x-get-selection' returned the text from the active region,
+  (isearch-yank-string (gui-get-selection))
+  ;; If `gui-get-selection' returned the text from the active region,
   ;; then it "used" the mark which we should hence deactivate.
   (when select-active-regions (deactivate-mark)))
 
diff --git a/lisp/language/ethio-util.el b/lisp/language/ethio-util.el
index 8575e7b..a27f749 100644
--- a/lisp/language/ethio-util.el
+++ b/lisp/language/ethio-util.el
@@ -2071,5 +2071,3 @@ mark."
 (provide 'ethio-util)
 
 ;;; ethio-util.el ends here
-
-;;; ethio-util.el ends here
diff --git a/lisp/language/japanese.el b/lisp/language/japanese.el
index ce48025..38159d7 100644
--- a/lisp/language/japanese.el
+++ b/lisp/language/japanese.el
@@ -34,8 +34,8 @@
 ;;; Code:
 
 ;;; Load translation tables for CP932.
-(load "international/cp51932")
-(load "international/eucjp-ms")
+(require 'cp51932)
+(require 'eucjp-ms)
 
 (define-coding-system 'iso-2022-jp
   "ISO 2022 based 7bit encoding for Japanese (MIME:ISO-2022-JP)."
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index ff09bf7..0d1940c 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -3,7 +3,7 @@
 ;;; Code:
 
 
-;;;### (autoloads nil "5x5" "play/5x5.el" (21799 24401 566172 757000))
+;;;### (autoloads nil "5x5" "play/5x5.el" (21799 41767 31221 635000))
 ;;; Generated autoloads from play/5x5.el
 
 (autoload '5x5 "5x5" "\
@@ -65,8 +65,8 @@ should return a grid vector array that is the new solution.
 
 ;;;***
 
-;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (21678 60840
-;;;;;;  221777 189000))
+;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (21814 9129
+;;;;;;  380496 997000))
 ;;; Generated autoloads from progmodes/ada-mode.el
 
 (autoload 'ada-add-extensions "ada-mode" "\
@@ -85,8 +85,8 @@ Ada mode is the major mode for editing Ada code.
 
 ;;;***
 
-;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (21678 60840
-;;;;;;  221777 189000))
+;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/ada-stmt.el
 
 (autoload 'ada-header "ada-stmt" "\
@@ -96,8 +96,8 @@ Insert a descriptive header at the top of the file.
 
 ;;;***
 
-;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (21678 60840
-;;;;;;  225777 350000))
+;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/ada-xref.el
 
 (autoload 'ada-find-file "ada-xref" "\
@@ -108,8 +108,8 @@ Completion is available.
 
 ;;;***
 
-;;;### (autoloads nil "add-log" "vc/add-log.el" (21678 60840 513788
-;;;;;;  871000))
+;;;### (autoloads nil "add-log" "vc/add-log.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from vc/add-log.el
 
 (put 'change-log-default-name 'safe-local-variable 'string-or-null-p)
@@ -238,8 +238,8 @@ old-style time formats for entries are supported.
 
 ;;;***
 
-;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21678 60839
-;;;;;;  441745 885000))
+;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emacs-lisp/advice.el
 
 (defvar ad-redefinition-action 'warn "\
@@ -374,7 +374,7 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] 
FLAG...)
 
 ;;;***
 
-;;;### (autoloads nil "align" "align.el" (21678 60839 237737 687000))
+;;;### (autoloads nil "align" "align.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from align.el
 
 (autoload 'align "align" "\
@@ -477,7 +477,7 @@ A replacement function for `newline-and-indent', aligning 
as it goes.
 
 ;;;***
 
-;;;### (autoloads nil "allout" "allout.el" (21678 60839 245738 8000))
+;;;### (autoloads nil "allout" "allout.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from allout.el
 (push (purecopy '(allout 2 3)) package--builtin-versions)
 
@@ -837,8 +837,8 @@ for details on preparing Emacs for automatic allout 
activation.
 
 ;;;***
 
-;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (21678
-;;;;;;  60839 241737 848000))
+;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from allout-widgets.el
 (push (purecopy '(allout-widgets 1 0)) package--builtin-versions)
 
@@ -896,8 +896,8 @@ outline hot-spot navigation (see `allout-mode').
 
 ;;;***
 
-;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21697 290 536850
-;;;;;;  376000))
+;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21696 56380 925320
+;;;;;;  624000))
 ;;; Generated autoloads from net/ange-ftp.el
 
 (defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir)
@@ -918,8 +918,8 @@ directory, so that Emacs will know its current contents.
 
 ;;;***
 
-;;;### (autoloads nil "animate" "play/animate.el" (21678 60840 197776
-;;;;;;  230000))
+;;;### (autoloads nil "animate" "play/animate.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/animate.el
 
 (autoload 'animate-string "animate" "\
@@ -951,8 +951,8 @@ the buffer *Birthday-Present-for-Name*.
 
 ;;;***
 
-;;;### (autoloads nil "ansi-color" "ansi-color.el" (21678 60839 249738
-;;;;;;  169000))
+;;;### (autoloads nil "ansi-color" "ansi-color.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from ansi-color.el
 (push (purecopy '(ansi-color 3 4 2)) package--builtin-versions)
 
@@ -978,8 +978,8 @@ This is a good function to put in 
`comint-output-filter-functions'.
 
 ;;;***
 
-;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (21678
-;;;;;;  60840 229777 510000))
+;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from progmodes/antlr-mode.el
 (push (purecopy '(antlr-mode 2 2 3)) package--builtin-versions)
 
@@ -1015,8 +1015,8 @@ Used in `antlr-mode'.  Also a useful function in 
`java-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "appt" "calendar/appt.el" (21678 60839 305740
-;;;;;;  419000))
+;;;### (autoloads nil "appt" "calendar/appt.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from calendar/appt.el
 
 (autoload 'appt-add "appt" "\
@@ -1037,8 +1037,8 @@ ARG is positive, otherwise off.
 
 ;;;***
 
-;;;### (autoloads nil "apropos" "apropos.el" (21678 60839 249738
-;;;;;;  169000))
+;;;### (autoloads nil "apropos" "apropos.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from apropos.el
 
 (autoload 'apropos-read-pattern "apropos" "\
@@ -1153,8 +1153,8 @@ Returns list of symbols and documentation found.
 
 ;;;***
 
-;;;### (autoloads nil "arc-mode" "arc-mode.el" (21678 60839 249738
-;;;;;;  169000))
+;;;### (autoloads nil "arc-mode" "arc-mode.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from arc-mode.el
 
 (autoload 'archive-mode "arc-mode" "\
@@ -1174,7 +1174,7 @@ archive.
 
 ;;;***
 
-;;;### (autoloads nil "array" "array.el" (21678 60839 253738 330000))
+;;;### (autoloads nil "array" "array.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from array.el
 
 (autoload 'array-mode "array" "\
@@ -1245,8 +1245,8 @@ Entering array mode calls the function `array-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "artist" "textmodes/artist.el" (21756 63738
-;;;;;;  14470 148000))
+;;;### (autoloads nil "artist" "textmodes/artist.el" (21750 59840
+;;;;;;  704617 663000))
 ;;; Generated autoloads from textmodes/artist.el
 (push (purecopy '(artist 1 2 6)) package--builtin-versions)
 
@@ -1452,8 +1452,8 @@ Keymap summary
 
 ;;;***
 
-;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21678 60840
-;;;;;;  229777 510000))
+;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/asm-mode.el
 
 (autoload 'asm-mode "asm-mode" "\
@@ -1480,8 +1480,8 @@ Special commands:
 
 ;;;***
 
-;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21678
-;;;;;;  60839 625753 279000))
+;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from gnus/auth-source.el
 
 (defvar auth-source-cache-expiry 7200 "\
@@ -1493,8 +1493,8 @@ let-binding.")
 
 ;;;***
 
-;;;### (autoloads nil "autoarg" "autoarg.el" (21678 60839 253738
-;;;;;;  330000))
+;;;### (autoloads nil "autoarg" "autoarg.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from autoarg.el
 
 (defvar autoarg-mode nil "\
@@ -1554,8 +1554,8 @@ This is similar to `autoarg-mode' but rebinds the keypad 
keys
 
 ;;;***
 
-;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (21678 60840
-;;;;;;  229777 510000))
+;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/autoconf.el
 
 (autoload 'autoconf-mode "autoconf" "\
@@ -1565,8 +1565,8 @@ Major mode for editing Autoconf configure.ac files.
 
 ;;;***
 
-;;;### (autoloads nil "autoinsert" "autoinsert.el" (21678 60839 253738
-;;;;;;  330000))
+;;;### (autoloads nil "autoinsert" "autoinsert.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from autoinsert.el
 
 (autoload 'auto-insert "autoinsert" "\
@@ -1604,8 +1604,8 @@ insert a template for the file depending on the mode of 
the buffer.
 
 ;;;***
 
-;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (21803
-;;;;;;  61751 253342 299000))
+;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (21802
+;;;;;;  17960 382855 287000))
 ;;; Generated autoloads from emacs-lisp/autoload.el
 
 (put 'generated-autoload-file 'safe-local-variable 'stringp)
@@ -1656,8 +1656,8 @@ should be non-nil).
 
 ;;;***
 
-;;;### (autoloads nil "autorevert" "autorevert.el" (21756 63737 806475
-;;;;;;  370000))
+;;;### (autoloads nil "autorevert" "autorevert.el" (21752 15166 568176
+;;;;;;  278000))
 ;;; Generated autoloads from autorevert.el
 
 (autoload 'auto-revert-mode "autorevert" "\
@@ -1745,7 +1745,7 @@ specifies in the mode line.
 
 ;;;***
 
-;;;### (autoloads nil "avoid" "avoid.el" (21678 60839 253738 330000))
+;;;### (autoloads nil "avoid" "avoid.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from avoid.el
 
 (defvar mouse-avoidance-mode nil "\
@@ -1783,8 +1783,8 @@ definition of \"random distance\".)
 
 ;;;***
 
-;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (21678 60840
-;;;;;;  229777 510000))
+;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/bat-mode.el
 
 (add-to-list 'auto-mode-alist '("\\.\\(bat\\|cmd\\)\\'" . bat-mode))
@@ -1802,8 +1802,8 @@ Run script using `bat-run' and `bat-run-args'.
 
 ;;;***
 
-;;;### (autoloads nil "battery" "battery.el" (21756 63737 810475
-;;;;;;  270000))
+;;;### (autoloads nil "battery" "battery.el" (21754 56896 744606
+;;;;;;  568000))
 ;;; Generated autoloads from battery.el
  (put 'battery-mode-line-string 'risky-local-variable t)
 
@@ -1838,8 +1838,8 @@ seconds.
 
 ;;;***
 
-;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (21678
-;;;;;;  60839 441745 885000))
+;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from emacs-lisp/benchmark.el
 
 (autoload 'benchmark-run "benchmark" "\
@@ -1875,8 +1875,8 @@ For non-interactive use see also `benchmark-run' and
 
 ;;;***
 
-;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21678 60840
-;;;;;;  445786 150000))
+;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21822 37176
+;;;;;;  700494 564000))
 ;;; Generated autoloads from textmodes/bibtex.el
 
 (autoload 'bibtex-initialize "bibtex" "\
@@ -1968,7 +1968,7 @@ A prefix arg negates the value of 
`bibtex-search-entry-globally'.
 ;;;***
 
 ;;;### (autoloads nil "bibtex-style" "textmodes/bibtex-style.el"
-;;;;;;  (21678 60840 441785 990000))
+;;;;;;  (21670 32331 885635 586000))
 ;;; Generated autoloads from textmodes/bibtex-style.el
 
 (autoload 'bibtex-style-mode "bibtex-style" "\
@@ -1978,8 +1978,8 @@ Major mode for editing BibTeX style files.
 
 ;;;***
 
-;;;### (autoloads nil "binhex" "mail/binhex.el" (21678 60839 869763
-;;;;;;  84000))
+;;;### (autoloads nil "binhex" "mail/binhex.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from mail/binhex.el
 
 (defconst binhex-begin-line 
"^:...............................................................$" "\
@@ -2003,8 +2003,8 @@ Binhex decode region between START and END.
 
 ;;;***
 
-;;;### (autoloads nil "blackbox" "play/blackbox.el" (21678 60840
-;;;;;;  197776 230000))
+;;;### (autoloads nil "blackbox" "play/blackbox.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from play/blackbox.el
 
 (autoload 'blackbox "blackbox" "\
@@ -2123,8 +2123,8 @@ a reflection.
 
 ;;;***
 
-;;;### (autoloads nil "bookmark" "bookmark.el" (21798 38124 240660
-;;;;;;  218000))
+;;;### (autoloads nil "bookmark" "bookmark.el" (21798 49947 232670
+;;;;;;  676000))
 ;;; Generated autoloads from bookmark.el
  (define-key ctl-x-r-map "b" 'bookmark-jump)
  (define-key ctl-x-r-map "m" 'bookmark-set)
@@ -2317,8 +2317,8 @@ Incremental search of bookmarks, hiding the non-matches 
as we go.
 
 ;;;***
 
-;;;### (autoloads nil "browse-url" "net/browse-url.el" (21797 54705
-;;;;;;  60905 16000))
+;;;### (autoloads nil "browse-url" "net/browse-url.el" (21811 32939
+;;;;;;  190503 320000))
 ;;; Generated autoloads from net/browse-url.el
 
 (defvar browse-url-browser-function 'browse-url-default-browser "\
@@ -2363,16 +2363,21 @@ Ask a WWW browser to display the current region.
 
 (autoload 'browse-url "browse-url" "\
 Ask a WWW browser to load URL.
-Prompt for a URL, defaulting to the URL at or before point.  Variable
-`browse-url-browser-function' says which browser to use.
+Prompt for a URL, defaulting to the URL at or before point.
+The variable `browse-url-browser-function' says which browser to use.
 If the URL is a mailto: URL, consult `browse-url-mailto-function'
 first, if that exists.
 
+Passes any ARGS to the browser function.
+The default is to pass `browse-url-new-window-flag'.
+
 \(fn URL &rest ARGS)" t nil)
 
 (autoload 'browse-url-at-point "browse-url" "\
 Ask a WWW browser to load the URL at or before point.
 Variable `browse-url-browser-function' says which browser to use.
+Optional prefix argument ARG non-nil inverts the value of the option
+`browse-url-new-window-flag'.
 
 \(fn &optional ARG)" t nil)
 
@@ -2653,7 +2658,7 @@ from `browse-url-elinks-wrapper'.
 
 ;;;***
 
-;;;### (autoloads nil "bs" "bs.el" (21678 60839 257738 491000))
+;;;### (autoloads nil "bs" "bs.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from bs.el
 (push (purecopy '(bs 1 17)) package--builtin-versions)
 
@@ -2694,8 +2699,8 @@ name of buffer configuration.
 
 ;;;***
 
-;;;### (autoloads nil "bubbles" "play/bubbles.el" (21678 60840 197776
-;;;;;;  230000))
+;;;### (autoloads nil "bubbles" "play/bubbles.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/bubbles.el
 
 (autoload 'bubbles "bubbles" "\
@@ -2717,7 +2722,7 @@ columns on its right towards the left.
 ;;;***
 
 ;;;### (autoloads nil "bug-reference" "progmodes/bug-reference.el"
-;;;;;;  (21678 60840 229777 510000))
+;;;;;;  (21670 32331 385639 720000))
 ;;; Generated autoloads from progmodes/bug-reference.el
 
 (put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp 
s) (and (symbolp s) (get s 'bug-reference-url-format)))))
@@ -2737,8 +2742,8 @@ Like `bug-reference-mode', but only buttonize in comments 
and strings.
 
 ;;;***
 
-;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21804
-;;;;;;  3763 202437 529000))
+;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21824
+;;;;;;  44973 370497 114000))
 ;;; Generated autoloads from emacs-lisp/bytecomp.el
 (put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
 (put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2858,8 +2863,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21678
-;;;;;;  60839 305740 419000))
+;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from calendar/cal-china.el
 
 (put 'calendar-chinese-time-zone 'risky-local-variable t)
@@ -2868,8 +2873,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21678 60839
-;;;;;;  305740 419000))
+;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from calendar/cal-dst.el
 
 (put 'calendar-daylight-savings-starts 'risky-local-variable t)
@@ -2880,8 +2885,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21678
-;;;;;;  60839 305740 419000))
+;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from calendar/cal-hebrew.el
 
 (autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\
@@ -2893,7 +2898,7 @@ from the cursor position.
 
 ;;;***
 
-;;;### (autoloads nil "calc" "calc/calc.el" (21678 60839 297740 98000))
+;;;### (autoloads nil "calc" "calc/calc.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from calc/calc.el
  (define-key ctl-x-map "*" 'calc-dispatch)
 
@@ -2979,8 +2984,8 @@ See Info node `(calc)Defining Functions'.
 
 ;;;***
 
-;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21678 60839
-;;;;;;  289739 776000))
+;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from calc/calc-undo.el
 
 (autoload 'calc-undo "calc-undo" "\
@@ -2990,8 +2995,8 @@ See Info node `(calc)Defining Functions'.
 
 ;;;***
 
-;;;### (autoloads nil "calculator" "calculator.el" (21702 18751 28687
-;;;;;;  539000))
+;;;### (autoloads nil "calculator" "calculator.el" (21702 8774 274627
+;;;;;;  813000))
 ;;; Generated autoloads from calculator.el
 
 (autoload 'calculator "calculator" "\
@@ -3002,8 +3007,8 @@ See the documentation for `calculator-mode' for more 
information.
 
 ;;;***
 
-;;;### (autoloads nil "calendar" "calendar/calendar.el" (21678 60839
-;;;;;;  313740 741000))
+;;;### (autoloads nil "calendar" "calendar/calendar.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from calendar/calendar.el
 
 (autoload 'calendar "calendar" "\
@@ -3046,8 +3051,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "canlock" "gnus/canlock.el" (21678 60839 625753
-;;;;;;  279000))
+;;;### (autoloads nil "canlock" "gnus/canlock.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from gnus/canlock.el
 
 (autoload 'canlock-insert-header "canlock" "\
@@ -3065,7 +3070,7 @@ it fails.
 ;;;***
 
 ;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21743
-;;;;;;  12185 601417 366000))
+;;;;;;  190 195328 729000))
 ;;; Generated autoloads from progmodes/cc-engine.el
 
 (autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -3075,8 +3080,8 @@ Return the syntactic context of the current line.
 
 ;;;***
 
-;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21678 60840
-;;;;;;  249778 310000))
+;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/cc-guess.el
 
 (defvar c-guess-guessed-offsets-alist nil "\
@@ -3174,8 +3179,8 @@ the absolute file name of the file if STYLE-NAME is nil.
 
 ;;;***
 
-;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21797 54705
-;;;;;;  112903 894000))
+;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21814 50992
+;;;;;;  820503 761000))
 ;;; Generated autoloads from progmodes/cc-mode.el
 
 (autoload 'c-initialize-cc-mode "cc-mode" "\
@@ -3332,8 +3337,8 @@ Key bindings:
 
 ;;;***
 
-;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21678
-;;;;;;  60840 253778 470000))
+;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from progmodes/cc-styles.el
 
 (autoload 'c-set-style "cc-styles" "\
@@ -3384,8 +3389,8 @@ and exists only for compatibility reasons.
 
 ;;;***
 
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21678 60840
-;;;;;;  257778 629000))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/cc-vars.el
 (put 'c-basic-offset 'safe-local-variable 'integerp)
 (put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -3393,8 +3398,8 @@ and exists only for compatibility reasons.
 
 ;;;***
 
-;;;### (autoloads nil "ccl" "international/ccl.el" (21684 3021 710224
-;;;;;;  877000))
+;;;### (autoloads nil "ccl" "international/ccl.el" (21682 23484 726747
+;;;;;;  991000))
 ;;; Generated autoloads from international/ccl.el
 
 (autoload 'ccl-compile "ccl" "\
@@ -3687,8 +3692,8 @@ See the documentation of `define-ccl-program' for the 
detail of CCL program.
 
 ;;;***
 
-;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21715 51226
-;;;;;;  268496 513000))
+;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21716 41663
+;;;;;;  456033 27000))
 ;;; Generated autoloads from emacs-lisp/cconv.el
 
 (autoload 'cconv-closure-convert "cconv" "\
@@ -3707,15 +3712,15 @@ Add the warnings that closure conversion would 
encounter.
 
 ;;;***
 
-;;;### (autoloads nil "cedet" "cedet/cedet.el" (21678 60839 333741
-;;;;;;  545000))
+;;;### (autoloads nil "cedet" "cedet/cedet.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from cedet/cedet.el
 (push (purecopy '(cedet 2 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21694 48017
-;;;;;;  606102 36000))
+;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21695 35516
+;;;;;;  595262 313000))
 ;;; Generated autoloads from progmodes/cfengine.el
 (push (purecopy '(cfengine 1 3)) package--builtin-versions)
 
@@ -3744,15 +3749,15 @@ Choose `cfengine2-mode' or `cfengine3-mode' by buffer 
contents.
 
 ;;;***
 
-;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21678 60854
-;;;;;;  898345 827000))
+;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21679 47292
+;;;;;;  556033 759000))
 ;;; Generated autoloads from emacs-lisp/chart.el
 (push (purecopy '(chart 0 2)) package--builtin-versions)
 
 ;;;***
 
 ;;;### (autoloads nil "check-declare" "emacs-lisp/check-declare.el"
-;;;;;;  (21756 63737 822474 968000))
+;;;;;;  (21826 50092 650494 96000))
 ;;; Generated autoloads from emacs-lisp/check-declare.el
 
 (autoload 'check-declare-file "check-declare" "\
@@ -3769,8 +3774,8 @@ Returns non-nil if any false statements are found.
 
 ;;;***
 
-;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21778
-;;;;;;  65092 741003 198000))
+;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21779
+;;;;;;  56495 106033 935000))
 ;;; Generated autoloads from emacs-lisp/checkdoc.el
 (push (purecopy '(checkdoc 0 6 2)) package--builtin-versions)
 (put 'checkdoc-force-docstrings-flag 'safe-local-variable #'booleanp)
@@ -3970,8 +3975,8 @@ checking of documentation strings.
 
 ;;;***
 
-;;;### (autoloads nil "china-util" "language/china-util.el" (21678
-;;;;;;  60839 797760 191000))
+;;;### (autoloads nil "china-util" "language/china-util.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from language/china-util.el
 
 (autoload 'decode-hz-region "china-util" "\
@@ -4008,8 +4013,8 @@ Encode the text in the current buffer to HZ.
 
 ;;;***
 
-;;;### (autoloads nil "chistory" "chistory.el" (21678 60839 401744
-;;;;;;  277000))
+;;;### (autoloads nil "chistory" "chistory.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from chistory.el
 
 (autoload 'repeat-matching-complex-command "chistory" "\
@@ -4049,7 +4054,7 @@ and runs the normal hook `command-history-hook'.
 ;;;***
 
 ;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21765
-;;;;;;  52461 376136 680000))
+;;;;;;  23600 805241 145000))
 ;;; Generated autoloads from emacs-lisp/cl-indent.el
 
 (autoload 'common-lisp-indent-function "cl-indent" "\
@@ -4132,8 +4137,8 @@ instead.
 
 ;;;***
 
-;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21799 24999
-;;;;;;  410026 774000))
+;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21799 41766
+;;;;;;  961230 875000))
 ;;; Generated autoloads from emacs-lisp/cl-lib.el
 (push (purecopy '(cl-lib 1 0)) package--builtin-versions)
 
@@ -4151,8 +4156,8 @@ a future Emacs interpreter will be able to use it.")
 
 ;;;***
 
-;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21678 60840
-;;;;;;  257778 629000))
+;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/cmacexp.el
 
 (autoload 'c-macro-expand "cmacexp" "\
@@ -4172,8 +4177,8 @@ For use inside Lisp programs, see also 
`c-macro-expansion'.
 
 ;;;***
 
-;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21678 60839 401744
-;;;;;;  277000))
+;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from cmuscheme.el
 
 (autoload 'run-scheme "cmuscheme" "\
@@ -4193,7 +4198,7 @@ is run).
 
 ;;;***
 
-;;;### (autoloads nil "color" "color.el" (21678 60839 401744 277000))
+;;;### (autoloads nil "color" "color.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from color.el
 
 (autoload 'color-name-to-rgb "color" "\
@@ -4212,7 +4217,7 @@ If FRAME cannot display COLOR, return nil.
 
 ;;;***
 
-;;;### (autoloads nil "comint" "comint.el" (21798 37607 346141 281000))
+;;;### (autoloads nil "comint" "comint.el" (21810 12071 401207 648000))
 ;;; Generated autoloads from comint.el
 
 (defvar comint-output-filter-functions '(ansi-color-process-output 
comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -4313,8 +4318,8 @@ REGEXP-GROUP is the regular expression group in REGEXP to 
use.
 
 ;;;***
 
-;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21678 60840
-;;;;;;  513788 871000))
+;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from vc/compare-w.el
 
 (autoload 'compare-windows "compare-w" "\
@@ -4350,8 +4355,8 @@ on third call it again advances points to the next 
difference and so on.
 
 ;;;***
 
-;;;### (autoloads nil "compile" "progmodes/compile.el" (21798 37675
-;;;;;;  396889 196000))
+;;;### (autoloads nil "compile" "progmodes/compile.el" (21798 49947
+;;;;;;  262665 54000))
 ;;; Generated autoloads from progmodes/compile.el
 
 (defvar compilation-mode-hook nil "\
@@ -4532,8 +4537,8 @@ This is the value of `next-error-function' in Compilation 
buffers.
 
 ;;;***
 
-;;;### (autoloads nil "completion" "completion.el" (21803 61751 249342
-;;;;;;  464000))
+;;;### (autoloads nil "completion" "completion.el" (21804 59688 154807
+;;;;;;  989000))
 ;;; Generated autoloads from completion.el
 
 (defvar dynamic-completion-mode nil "\
@@ -4555,8 +4560,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21678
-;;;;;;  60840 445786 150000))
+;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21670
+;;;;;;  32331 885635 586000))
 ;;; Generated autoloads from textmodes/conf-mode.el
 
 (autoload 'conf-mode "conf-mode" "\
@@ -4711,8 +4716,8 @@ For details see `conf-mode'.  Example:
 
 ;;;***
 
-;;;### (autoloads nil "cookie1" "play/cookie1.el" (21678 60840 197776
-;;;;;;  230000))
+;;;### (autoloads nil "cookie1" "play/cookie1.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/cookie1.el
 
 (autoload 'cookie "cookie1" "\
@@ -4740,8 +4745,8 @@ and subsequent calls on the same file won't go to disk.
 
 ;;;***
 
-;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21678
-;;;;;;  60839 461746 688000))
+;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from emacs-lisp/copyright.el
 (put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
 (put 'copyright-names-regexp 'safe-local-variable 'stringp)
@@ -4779,8 +4784,8 @@ If FIX is non-nil, run `copyright-fix-years' instead.
 
 ;;;***
 
-;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21772
-;;;;;;  3649 129589 390000))
+;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21771
+;;;;;;  62389 36768 739000))
 ;;; Generated autoloads from progmodes/cperl-mode.el
 (put 'cperl-indent-level 'safe-local-variable 'integerp)
 (put 'cperl-brace-offset 'safe-local-variable 'integerp)
@@ -4978,8 +4983,8 @@ Run a `perldoc' on the word around point.
 
 ;;;***
 
-;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21678 60840 269779
-;;;;;;  110000))
+;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from progmodes/cpp.el
 
 (autoload 'cpp-highlight-buffer "cpp" "\
@@ -4997,8 +5002,8 @@ Edit display information for cpp conditionals.
 
 ;;;***
 
-;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21678 60839 461746
-;;;;;;  688000))
+;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emacs-lisp/crm.el
 
 (autoload 'completing-read-multiple "crm" "\
@@ -5024,8 +5029,8 @@ with empty strings removed.
 
 ;;;***
 
-;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21799 19718
-;;;;;;  378236 623000))
+;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21811 32939
+;;;;;;  200500 777000))
 ;;; Generated autoloads from textmodes/css-mode.el
 
 (autoload 'css-mode "css-mode" "\
@@ -5041,8 +5046,8 @@ Major mode to edit \"Sassy CSS\" files.
 
 ;;;***
 
-;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21804 3763
-;;;;;;  202437 529000))
+;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21826 50080
+;;;;;;  561727 536000))
 ;;; Generated autoloads from emulation/cua-base.el
 
 (defvar cua-mode nil "\
@@ -5087,8 +5092,8 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v 
bindings.
 
 ;;;***
 
-;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21678 60839
-;;;;;;  501748 296000))
+;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emulation/cua-rect.el
 
 (autoload 'cua-rectangle-mark-mode "cua-rect" "\
@@ -5099,8 +5104,29 @@ Activates the region if needed.  Only lasts until the 
region is deactivated.
 
 ;;;***
 
-;;;### (autoloads nil "cus-edit" "cus-edit.el" (21803 61751 249342
-;;;;;;  464000))
+;;;### (autoloads nil "cursor-sensor" "emacs-lisp/cursor-sensor.el"
+;;;;;;  (21804 59688 154807 989000))
+;;; Generated autoloads from emacs-lisp/cursor-sensor.el
+
+(autoload 'cursor-intangible-mode "cursor-sensor" "\
+Keep cursor outside of any `cursor-intangible' text property.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'cursor-sensor-mode "cursor-sensor" "\
+Handle the `cursor-sensor-functions' text property.
+This property should hold a list of functions which react to the motion
+of the cursor.  They're called with three arguments (WINDOW OLDPOS DIR)
+where WINDOW is the affected window, OLDPOS is the last known position of
+the cursor and DIR can be `left' or `entered' depending on whether the cursor 
is
+entering the area covered by the text-property property or leaving it.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;;;### (autoloads nil "cus-edit" "cus-edit.el" (21815 59890 571208
+;;;;;;  933000))
 ;;; Generated autoloads from cus-edit.el
 
 (defvar custom-browse-sort-alphabetically nil "\
@@ -5419,8 +5445,8 @@ The format is suitable for use with `easy-menu-define'.
 
 ;;;***
 
-;;;### (autoloads nil "cus-theme" "cus-theme.el" (21678 60839 413744
-;;;;;;  759000))
+;;;### (autoloads nil "cus-theme" "cus-theme.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from cus-theme.el
 
 (autoload 'customize-create-theme "cus-theme" "\
@@ -5453,8 +5479,8 @@ omitted, a buffer named *Custom Themes* is used.
 
 ;;;***
 
-;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21678 60840
-;;;;;;  513788 871000))
+;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from vc/cvs-status.el
 
 (autoload 'cvs-status-mode "cvs-status" "\
@@ -5464,8 +5490,8 @@ Mode used for cvs status output.
 
 ;;;***
 
-;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21678 60840 269779
-;;;;;;  110000))
+;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from progmodes/cwarn.el
 (push (purecopy '(cwarn 1 3 1)) package--builtin-versions)
 
@@ -5509,8 +5535,8 @@ See `cwarn-mode' for more information on Cwarn mode.
 
 ;;;***
 
-;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21678
-;;;;;;  60839 797760 191000))
+;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from language/cyril-util.el
 
 (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
@@ -5538,8 +5564,8 @@ If the argument is nil, we return the display table to 
its standard state.
 
 ;;;***
 
-;;;### (autoloads nil "dabbrev" "dabbrev.el" (21678 60839 417744
-;;;;;;  920000))
+;;;### (autoloads nil "dabbrev" "dabbrev.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from dabbrev.el
 (put 'dabbrev-case-fold-search 'risky-local-variable t)
 (put 'dabbrev-case-replace 'risky-local-variable t)
@@ -5585,8 +5611,8 @@ See also `dabbrev-abbrev-char-regexp' and 
\\[dabbrev-completion].
 
 ;;;***
 
-;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21678 60839
-;;;;;;  333741 545000))
+;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from cedet/data-debug.el
 
 (autoload 'data-debug-new-buffer "data-debug" "\
@@ -5596,7 +5622,7 @@ Create a new data-debug buffer with NAME.
 
 ;;;***
 
-;;;### (autoloads nil "dbus" "net/dbus.el" (21799 25402 297856 218000))
+;;;### (autoloads nil "dbus" "net/dbus.el" (21799 41767 11212 472000))
 ;;; Generated autoloads from net/dbus.el
 
 (autoload 'dbus-handle-event "dbus" "\
@@ -5609,8 +5635,8 @@ If the HANDLER returns a `dbus-error', it is propagated 
as return message.
 
 ;;;***
 
-;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21678 60840
-;;;;;;  269779 110000))
+;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/dcl-mode.el
 
 (autoload 'dcl-mode "dcl-mode" "\
@@ -5736,8 +5762,8 @@ There is some minimal font-lock support (see vars
 
 ;;;***
 
-;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21776 37118
-;;;;;;  308010 713000))
+;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21777 14770
+;;;;;;  397461 322000))
 ;;; Generated autoloads from emacs-lisp/debug.el
 
 (setq debugger 'debug)
@@ -5780,8 +5806,8 @@ To specify a nil argument interactively, exit with an 
empty minibuffer.
 
 ;;;***
 
-;;;### (autoloads nil "decipher" "play/decipher.el" (21799 24401
-;;;;;;  570172 675000))
+;;;### (autoloads nil "decipher" "play/decipher.el" (21799 41767
+;;;;;;  31221 635000))
 ;;; Generated autoloads from play/decipher.el
 
 (autoload 'decipher "decipher" "\
@@ -5809,8 +5835,8 @@ The most useful commands are:
 
 ;;;***
 
-;;;### (autoloads nil "delim-col" "delim-col.el" (21678 60839 417744
-;;;;;;  920000))
+;;;### (autoloads nil "delim-col" "delim-col.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from delim-col.el
 (push (purecopy '(delim-col 2 1)) package--builtin-versions)
 
@@ -5835,7 +5861,7 @@ START and END delimits the corners of text rectangle.
 
 ;;;***
 
-;;;### (autoloads nil "delsel" "delsel.el" (21714 30294 262748 97000))
+;;;### (autoloads nil "delsel" "delsel.el" (21716 41663 456033 27000))
 ;;; Generated autoloads from delsel.el
 
 (defalias 'pending-delete-mode 'delete-selection-mode)
@@ -5863,8 +5889,8 @@ point regardless of any selection.
 
 ;;;***
 
-;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21703 62119
-;;;;;;  434295 103000))
+;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21703 29629
+;;;;;;  608890 826000))
 ;;; Generated autoloads from emacs-lisp/derived.el
 
 (autoload 'define-derived-mode "derived" "\
@@ -5932,8 +5958,8 @@ the first time the mode is used.
 
 ;;;***
 
-;;;### (autoloads nil "descr-text" "descr-text.el" (21694 48017 602102
-;;;;;;  111000))
+;;;### (autoloads nil "descr-text" "descr-text.el" (21695 35516 595262
+;;;;;;  313000))
 ;;; Generated autoloads from descr-text.el
 
 (autoload 'describe-text-properties "descr-text" "\
@@ -5982,8 +6008,8 @@ This function is meant to be used as a value of
 
 ;;;***
 
-;;;### (autoloads nil "desktop" "desktop.el" (21799 25192 774103
-;;;;;;  976000))
+;;;### (autoloads nil "desktop" "desktop.el" (21799 41766 961230
+;;;;;;  875000))
 ;;; Generated autoloads from desktop.el
 
 (defvar desktop-save-mode nil "\
@@ -6188,8 +6214,8 @@ Revert to the last loaded desktop.
 
 ;;;***
 
-;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21797 54705
-;;;;;;  36905 533000))
+;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21795 44704
+;;;;;;  920702 722000))
 ;;; Generated autoloads from gnus/deuglify.el
 
 (autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\
@@ -6221,8 +6247,8 @@ Deuglify broken Outlook (Express) articles and redisplay.
 
 ;;;***
 
-;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21678
-;;;;;;  60839 317740 902000))
+;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from calendar/diary-lib.el
 
 (autoload 'diary "diary-lib" "\
@@ -6264,10 +6290,10 @@ Major mode for editing the diary file.
 
 ;;;***
 
-;;;### (autoloads nil "diff" "vc/diff.el" (21678 60840 517789 31000))
+;;;### (autoloads nil "diff" "vc/diff.el" (21804 59688 284811 0))
 ;;; Generated autoloads from vc/diff.el
 
-(defvar diff-switches (purecopy "-c") "\
+(defvar diff-switches (purecopy "-u") "\
 A string or list of strings specifying switches to be passed to diff.")
 
 (custom-autoload 'diff-switches "diff" t)
@@ -6312,8 +6338,8 @@ This requires the external program `diff' to be in your 
`exec-path'.
 
 ;;;***
 
-;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21797 55597
-;;;;;;  620753 991000))
+;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21798 20907
+;;;;;;  11218 42000))
 ;;; Generated autoloads from vc/diff-mode.el
 
 (autoload 'diff-mode "diff-mode" "\
@@ -6345,7 +6371,7 @@ the mode if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "dig" "net/dig.el" (21678 60839 961766 782000))
+;;;### (autoloads nil "dig" "net/dig.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from net/dig.el
 
 (autoload 'dig "dig" "\
@@ -6356,7 +6382,7 @@ Optional arguments are passed to `dig-invoke'.
 
 ;;;***
 
-;;;### (autoloads nil "dired" "dired.el" (21757 49303 481943 552000))
+;;;### (autoloads nil "dired" "dired.el" (21757 29489 158925 687000))
 ;;; Generated autoloads from dired.el
 
 (defvar dired-listing-switches (purecopy "-al") "\
@@ -6476,8 +6502,8 @@ Keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "dirtrack" "dirtrack.el" (21678 60839 429745
-;;;;;;  402000))
+;;;### (autoloads nil "dirtrack" "dirtrack.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from dirtrack.el
 
 (autoload 'dirtrack-mode "dirtrack" "\
@@ -6507,8 +6533,8 @@ from `default-directory'.
 
 ;;;***
 
-;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21678 60839
-;;;;;;  461746 688000))
+;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emacs-lisp/disass.el
 
 (autoload 'disassemble "disass" "\
@@ -6522,8 +6548,8 @@ redefine OBJECT if it is a symbol.
 
 ;;;***
 
-;;;### (autoloads nil "disp-table" "disp-table.el" (21678 60839 429745
-;;;;;;  402000))
+;;;### (autoloads nil "disp-table" "disp-table.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from disp-table.el
 
 (autoload 'make-display-table "disp-table" "\
@@ -6644,8 +6670,8 @@ in `.emacs'.
 
 ;;;***
 
-;;;### (autoloads nil "dissociate" "play/dissociate.el" (21678 60840
-;;;;;;  197776 230000))
+;;;### (autoloads nil "dissociate" "play/dissociate.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from play/dissociate.el
 
 (autoload 'dissociated-press "dissociate" "\
@@ -6661,7 +6687,7 @@ Default is 2.
 
 ;;;***
 
-;;;### (autoloads nil "dnd" "dnd.el" (21678 60839 429745 402000))
+;;;### (autoloads nil "dnd" "dnd.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from dnd.el
 
 (defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) 
(,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . 
dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . 
dnd-open-file)) "\
@@ -6681,8 +6707,8 @@ if some action was made, or nil if the URL is ignored.")
 
 ;;;***
 
-;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21678 60840
-;;;;;;  449786 311000))
+;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from textmodes/dns-mode.el
 
 (autoload 'dns-mode "dns-mode" "\
@@ -6705,8 +6731,8 @@ Locate SOA record and increment the serial field.
 
 ;;;***
 
-;;;### (autoloads nil "doc-view" "doc-view.el" (21718 7576 270960
-;;;;;;  954000))
+;;;### (autoloads nil "doc-view" "doc-view.el" (21716 41663 456033
+;;;;;;  27000))
 ;;; Generated autoloads from doc-view.el
 
 (autoload 'doc-view-mode-p "doc-view" "\
@@ -6752,8 +6778,8 @@ See the command `doc-view-mode' for more information on 
this mode.
 
 ;;;***
 
-;;;### (autoloads nil "doctor" "play/doctor.el" (21678 60840 201776
-;;;;;;  390000))
+;;;### (autoloads nil "doctor" "play/doctor.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/doctor.el
 
 (autoload 'doctor "doctor" "\
@@ -6763,7 +6789,7 @@ Switch to *doctor* buffer and start giving psychotherapy.
 
 ;;;***
 
-;;;### (autoloads nil "double" "double.el" (21678 60839 433745 563000))
+;;;### (autoloads nil "double" "double.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from double.el
 
 (autoload 'double-mode "double" "\
@@ -6779,8 +6805,8 @@ strings when pressed twice.  See `double-map' for details.
 
 ;;;***
 
-;;;### (autoloads nil "dunnet" "play/dunnet.el" (21678 60840 201776
-;;;;;;  390000))
+;;;### (autoloads nil "dunnet" "play/dunnet.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/dunnet.el
 (push (purecopy '(dunnet 2 1)) package--builtin-versions)
 
@@ -6792,7 +6818,7 @@ Switch to *dungeon* buffer and start game.
 ;;;***
 
 ;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (21732
-;;;;;;  38826 390629 134000))
+;;;;;;  29888 498897 471000))
 ;;; Generated autoloads from emacs-lisp/easy-mmode.el
 
 (defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
@@ -6936,8 +6962,8 @@ CSS contains a list of syntax specifications of the form 
(CHAR . SYNTAX).
 
 ;;;***
 
-;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21678
-;;;;;;  60839 461746 688000))
+;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from emacs-lisp/easymenu.el
 
 (autoload 'easy-menu-define "easymenu" "\
@@ -7075,8 +7101,8 @@ To implement dynamic menus, either call this from
 
 ;;;***
 
-;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21678 60840
-;;;;;;  277779 430000))
+;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/ebnf2ps.el
 (push (purecopy '(ebnf2ps 4 4)) package--builtin-versions)
 
@@ -7341,8 +7367,8 @@ See `ebnf-style-database' documentation.
 
 ;;;***
 
-;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21678 60840
-;;;;;;  281779 590000))
+;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/ebrowse.el
 
 (autoload 'ebrowse-tree-mode "ebrowse" "\
@@ -7490,8 +7516,8 @@ Display statistics for a class tree.
 
 ;;;***
 
-;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21678 60839 433745
-;;;;;;  563000))
+;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from ebuff-menu.el
 
 (autoload 'electric-buffer-list "ebuff-menu" "\
@@ -7523,8 +7549,8 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
 
 ;;;***
 
-;;;### (autoloads nil "echistory" "echistory.el" (21678 60839 433745
-;;;;;;  563000))
+;;;### (autoloads nil "echistory" "echistory.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from echistory.el
 
 (autoload 'Electric-command-history-redo-expression "echistory" "\
@@ -7535,8 +7561,8 @@ With prefix arg NOCONFIRM, execute current line as-is 
without editing.
 
 ;;;***
 
-;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21678 60839
-;;;;;;  625753 279000))
+;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/ecomplete.el
 
 (autoload 'ecomplete-setup "ecomplete" "\
@@ -7546,7 +7572,7 @@ With prefix arg NOCONFIRM, execute current line as-is 
without editing.
 
 ;;;***
 
-;;;### (autoloads nil "ede" "cedet/ede.el" (21714 11434 472202 812000))
+;;;### (autoloads nil "ede" "cedet/ede.el" (21715 20800 626041 761000))
 ;;; Generated autoloads from cedet/ede.el
 (push (purecopy '(ede 1 2)) package--builtin-versions)
 
@@ -7572,8 +7598,8 @@ an EDE controlled project.
 
 ;;;***
 
-;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21803 61751
-;;;;;;  261341 967000))
+;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21803 38822
+;;;;;;  934065 207000))
 ;;; Generated autoloads from emacs-lisp/edebug.el
 
 (defvar edebug-all-defs nil "\
@@ -7637,7 +7663,7 @@ Toggle edebugging of all forms.
 
 ;;;***
 
-;;;### (autoloads nil "ediff" "vc/ediff.el" (21678 60840 529789 511000))
+;;;### (autoloads nil "ediff" "vc/ediff.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from vc/ediff.el
 (push (purecopy '(ediff 2 81 4)) package--builtin-versions)
 
@@ -7909,8 +7935,8 @@ With optional NODE, goes to that node.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21678 60840
-;;;;;;  517789 31000))
+;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from vc/ediff-help.el
 
 (autoload 'ediff-customize "ediff-help" "\
@@ -7920,8 +7946,8 @@ With optional NODE, goes to that node.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21678 60840
-;;;;;;  521789 190000))
+;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from vc/ediff-mult.el
 
 (autoload 'ediff-show-registry "ediff-mult" "\
@@ -7933,8 +7959,8 @@ Display Ediff's registry.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21678 60840
-;;;;;;  525789 351000))
+;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from vc/ediff-util.el
 
 (autoload 'ediff-toggle-multiframe "ediff-util" "\
@@ -7953,8 +7979,8 @@ To change the default, set the variable 
`ediff-use-toolbar-p', which see.
 
 ;;;***
 
-;;;### (autoloads nil "edmacro" "edmacro.el" (21799 24401 550173
-;;;;;;  82000))
+;;;### (autoloads nil "edmacro" "edmacro.el" (21799 41766 961230
+;;;;;;  875000))
 ;;; Generated autoloads from edmacro.el
 (push (purecopy '(edmacro 2 1)) package--builtin-versions)
 
@@ -8003,8 +8029,8 @@ or nil, use a compact 80-column format.
 
 ;;;***
 
-;;;### (autoloads nil "edt" "emulation/edt.el" (21678 60839 505748
-;;;;;;  457000))
+;;;### (autoloads nil "edt" "emulation/edt.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emulation/edt.el
 
 (autoload 'edt-set-scroll-margins "edt" "\
@@ -8021,7 +8047,7 @@ Turn on EDT Emulation.
 
 ;;;***
 
-;;;### (autoloads nil "ehelp" "ehelp.el" (21678 60839 437745 724000))
+;;;### (autoloads nil "ehelp" "ehelp.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from ehelp.el
 
 (autoload 'with-electric-help "ehelp" "\
@@ -8057,15 +8083,15 @@ BUFFER is put back into its original major mode.
 
 ;;;***
 
-;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21803 61751
-;;;;;;  261341 967000))
+;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21803 38822
+;;;;;;  944058 719000))
 ;;; Generated autoloads from emacs-lisp/eieio.el
 (push (purecopy '(eieio 1 4)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21797
-;;;;;;  54704 984906 655000))
+;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21822
+;;;;;;  42786 590507 895000))
 ;;; Generated autoloads from emacs-lisp/eieio-core.el
 (push (purecopy '(eieio-core 1 4)) package--builtin-versions)
 
@@ -8081,8 +8107,8 @@ It creates an autoload function for CNAME's constructor.
 
 ;;;***
 
-;;;### (autoloads nil "elec-pair" "elec-pair.el" (21783 27762 910046
-;;;;;;  655000))
+;;;### (autoloads nil "elec-pair" "elec-pair.el" (21811 32939 170488
+;;;;;;  968000))
 ;;; Generated autoloads from elec-pair.el
 
 (defvar electric-pair-text-pairs '((34 . 34)) "\
@@ -8123,8 +8149,8 @@ Toggle `electric-pair-mode' only in this buffer.
 
 ;;;***
 
-;;;### (autoloads nil "elide-head" "elide-head.el" (21678 60839 437745
-;;;;;;  724000))
+;;;### (autoloads nil "elide-head" "elide-head.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from elide-head.el
 
 (autoload 'elide-head "elide-head" "\
@@ -8139,8 +8165,8 @@ This is suitable as an entry on `find-file-hook' or 
appropriate mode hooks.
 
 ;;;***
 
-;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21678 60839
-;;;;;;  473747 171000))
+;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21814 9129 240503
+;;;;;;  291000))
 ;;; Generated autoloads from emacs-lisp/elint.el
 
 (autoload 'elint-file "elint" "\
@@ -8175,8 +8201,8 @@ optional prefix argument REINIT is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21678 60839 473747
-;;;;;;  171000))
+;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emacs-lisp/elp.el
 
 (autoload 'elp-instrument-function "elp" "\
@@ -8210,8 +8236,8 @@ displayed.
 
 ;;;***
 
-;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21678 60839 497748
-;;;;;;  135000))
+;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emacs-lock.el
 
 (autoload 'emacs-lock-mode "emacs-lock" "\
@@ -8238,8 +8264,8 @@ Other values are interpreted as usual.
 
 ;;;***
 
-;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21678 60839
-;;;;;;  869763 84000))
+;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21814 9129 290493
+;;;;;;  495000))
 ;;; Generated autoloads from mail/emacsbug.el
 
 (autoload 'report-emacs-bug "emacsbug" "\
@@ -8252,8 +8278,8 @@ Prompts for bug subject.  Leaves you in a mail buffer.
 
 ;;;***
 
-;;;### (autoloads nil "emerge" "vc/emerge.el" (21605 26937 780008
-;;;;;;  15000))
+;;;### (autoloads nil "emerge" "vc/emerge.el" (21607 54478 800121
+;;;;;;  42000))
 ;;; Generated autoloads from vc/emerge.el
 
 (autoload 'emerge-files "emerge" "\
@@ -8313,8 +8339,8 @@ Emerge two RCS revisions of a file, with another revision 
as ancestor.
 
 ;;;***
 
-;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21690 51765
-;;;;;;  876519 934000))
+;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21691 38459
+;;;;;;  74604 918000))
 ;;; Generated autoloads from textmodes/enriched.el
 
 (autoload 'enriched-mode "enriched" "\
@@ -8349,7 +8375,7 @@ Commands:
 
 ;;;***
 
-;;;### (autoloads nil "epa" "epa.el" (21678 60839 517748 939000))
+;;;### (autoloads nil "epa" "epa.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from epa.el
 
 (autoload 'epa-list-keys "epa" "\
@@ -8537,8 +8563,8 @@ Insert selected KEYS after the point.
 
 ;;;***
 
-;;;### (autoloads nil "epa-dired" "epa-dired.el" (21678 60839 513748
-;;;;;;  778000))
+;;;### (autoloads nil "epa-dired" "epa-dired.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from epa-dired.el
 
 (autoload 'epa-dired-do-decrypt "epa-dired" "\
@@ -8563,8 +8589,8 @@ Encrypt marked files.
 
 ;;;***
 
-;;;### (autoloads nil "epa-file" "epa-file.el" (21678 60839 517748
-;;;;;;  939000))
+;;;### (autoloads nil "epa-file" "epa-file.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from epa-file.el
 
 (autoload 'epa-file-handler "epa-file" "\
@@ -8584,8 +8610,8 @@ Encrypt marked files.
 
 ;;;***
 
-;;;### (autoloads nil "epa-mail" "epa-mail.el" (21678 60839 517748
-;;;;;;  939000))
+;;;### (autoloads nil "epa-mail" "epa-mail.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from epa-mail.el
 
 (autoload 'epa-mail-mode "epa-mail" "\
@@ -8662,7 +8688,7 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "epg" "epg.el" (21803 61751 269341 636000))
+;;;### (autoloads nil "epg" "epg.el" (21802 17960 412629 175000))
 ;;; Generated autoloads from epg.el
 (push (purecopy '(epg 1 0 0)) package--builtin-versions)
 
@@ -8673,8 +8699,8 @@ Return a context object.
 
 ;;;***
 
-;;;### (autoloads nil "epg-config" "epg-config.el" (21678 60839 517748
-;;;;;;  939000))
+;;;### (autoloads nil "epg-config" "epg-config.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from epg-config.el
 
 (autoload 'epg-configuration "epg-config" "\
@@ -8694,7 +8720,7 @@ Look at CONFIG and try to expand GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "erc" "erc/erc.el" (21778 44895 439347 149000))
+;;;### (autoloads nil "erc" "erc/erc.el" (21779 56495 106033 935000))
 ;;; Generated autoloads from erc/erc.el
 (push (purecopy '(erc 5 3)) package--builtin-versions)
 
@@ -8743,36 +8769,36 @@ Otherwise, connect to HOST:PORT as USER and /join 
CHANNEL.
 
 ;;;***
 
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21678
-;;;;;;  60839 529749 421000))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from erc/erc-autoaway.el
  (autoload 'erc-autoaway-mode "erc-autoaway")
 
 ;;;***
 
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21678 60839
-;;;;;;  533749 582000))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-button.el
  (autoload 'erc-button-mode "erc-button" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21678 60839
-;;;;;;  533749 582000))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-capab.el
  (autoload 'erc-capab-identify-mode "erc-capab" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21678 60839
-;;;;;;  533749 582000))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-compat.el
  (autoload 'erc-define-minor-mode "erc-compat")
 
 ;;;***
 
-;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21697 290 520850
-;;;;;;  834000))
+;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21696 56380 925320
+;;;;;;  624000))
 ;;; Generated autoloads from erc/erc-dcc.el
  (autoload 'erc-dcc-mode "erc-dcc")
 
@@ -8802,14 +8828,14 @@ that subcommand.
 ;;;***
 
 ;;;### (autoloads nil "erc-desktop-notifications" 
"erc/erc-desktop-notifications.el"
-;;;;;;  (21678 60839 533749 582000))
+;;;;;;  (21670 32330 885624 725000))
 ;;; Generated autoloads from erc/erc-desktop-notifications.el
 (autoload 'erc-notifications-mode "erc-desktop-notifications" "" t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21678
-;;;;;;  60839 533749 582000))
+;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from erc/erc-ezbounce.el
 
 (autoload 'erc-cmd-ezb "erc-ezbounce" "\
@@ -8871,8 +8897,8 @@ Add EZBouncer convenience functions to ERC.
 
 ;;;***
 
-;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21678 60839 533749
-;;;;;;  582000))
+;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from erc/erc-fill.el
  (autoload 'erc-fill-mode "erc-fill" nil t)
 
@@ -8884,8 +8910,8 @@ You can put this on `erc-insert-modify-hook' and/or 
`erc-send-modify-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21678 60839
-;;;;;;  537749 742000))
+;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-identd.el
  (autoload 'erc-identd-mode "erc-identd")
 
@@ -8906,8 +8932,8 @@ system.
 
 ;;;***
 
-;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21678 60839
-;;;;;;  537749 742000))
+;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-imenu.el
 
 (autoload 'erc-create-imenu-index "erc-imenu" "\
@@ -8917,22 +8943,22 @@ system.
 
 ;;;***
 
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21678 60839 537749
-;;;;;;  742000))
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from erc/erc-join.el
  (autoload 'erc-autojoin-mode "erc-join" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21678 60839 537749
-;;;;;;  742000))
+;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from erc/erc-list.el
  (autoload 'erc-list-mode "erc-list")
 
 ;;;***
 
-;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21678 60839 537749
-;;;;;;  742000))
+;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from erc/erc-log.el
  (autoload 'erc-log-mode "erc-log" nil t)
 
@@ -8961,8 +8987,8 @@ You can save every individual message by putting this 
function on
 
 ;;;***
 
-;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21678 60839
-;;;;;;  537749 742000))
+;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-match.el
  (autoload 'erc-match-mode "erc-match")
 
@@ -9008,15 +9034,15 @@ Delete dangerous-host interactively to 
`erc-dangerous-hosts'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21678 60839 537749
-;;;;;;  742000))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from erc/erc-menu.el
  (autoload 'erc-menu-mode "erc-menu" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21678
-;;;;;;  60839 537749 742000))
+;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from erc/erc-netsplit.el
  (autoload 'erc-netsplit-mode "erc-netsplit")
 
@@ -9027,8 +9053,8 @@ Show who's gone.
 
 ;;;***
 
-;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21678
-;;;;;;  60839 541749 903000))
+;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from erc/erc-networks.el
 
 (autoload 'erc-determine-network "erc-networks" "\
@@ -9045,8 +9071,8 @@ Interactively select a server to connect to using 
`erc-server-alist'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21678 60839
-;;;;;;  541749 903000))
+;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-notify.el
  (autoload 'erc-notify-mode "erc-notify" nil t)
 
@@ -9064,36 +9090,36 @@ with args, toggle notify status of people.
 
 ;;;***
 
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21678 60839 541749
-;;;;;;  903000))
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from erc/erc-page.el
  (autoload 'erc-page-mode "erc-page")
 
 ;;;***
 
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21804
-;;;;;;  3763 202437 529000))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21808
+;;;;;;  56742 451927 765000))
 ;;; Generated autoloads from erc/erc-pcomplete.el
  (autoload 'erc-completion-mode "erc-pcomplete" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21678 60839
-;;;;;;  541749 903000))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-replace.el
  (autoload 'erc-replace-mode "erc-replace")
 
 ;;;***
 
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21678 60839 541749
-;;;;;;  903000))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from erc/erc-ring.el
  (autoload 'erc-ring-mode "erc-ring" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21678
-;;;;;;  60839 541749 903000))
+;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from erc/erc-services.el
  (autoload 'erc-services-mode "erc-services" nil t)
 
@@ -9110,15 +9136,15 @@ When called interactively, read the password using 
`read-passwd'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21678 60839
-;;;;;;  541749 903000))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-sound.el
  (autoload 'erc-sound-mode "erc-sound")
 
 ;;;***
 
-;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21678
-;;;;;;  60839 541749 903000))
+;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from erc/erc-speedbar.el
 
 (autoload 'erc-speedbar-browser "erc-speedbar" "\
@@ -9130,21 +9156,21 @@ This will add a speedbar major display mode.
 ;;;***
 
 ;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21727
-;;;;;;  22885 681250 112000))
+;;;;;;  11963 635339 992000))
 ;;; Generated autoloads from erc/erc-spelling.el
  (autoload 'erc-spelling-mode "erc-spelling" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21804 4012
-;;;;;;  674064 262000))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21804 59688
+;;;;;;  164807 902000))
 ;;; Generated autoloads from erc/erc-stamp.el
  (autoload 'erc-timestamp-mode "erc-stamp" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21678 60839
-;;;;;;  541749 903000))
+;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from erc/erc-track.el
 
 (defvar erc-track-minor-mode nil "\
@@ -9169,8 +9195,8 @@ keybindings will not do anything useful.
 
 ;;;***
 
-;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21678
-;;;;;;  60839 545750 64000))
+;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from erc/erc-truncate.el
  (autoload 'erc-truncate-mode "erc-truncate" nil t)
 
@@ -9189,8 +9215,8 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21678 60839 545750
-;;;;;;  64000))
+;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from erc/erc-xdcc.el
  (autoload 'erc-xdcc-mode "erc-xdcc")
 
@@ -9201,8 +9227,8 @@ Add a file to `erc-xdcc-files'.
 
 ;;;***
 
-;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21678 60839 477747
-;;;;;;  331000))
+;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21826 54340 400495
+;;;;;;  677000))
 ;;; Generated autoloads from emacs-lisp/ert.el
 
 (autoload 'ert-deftest "ert" "\
@@ -9271,8 +9297,8 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol 
or ert-test).
 
 ;;;***
 
-;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21678 60839
-;;;;;;  473747 171000))
+;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emacs-lisp/ert-x.el
 
 (put 'ert-with-test-buffer 'lisp-indent-function 1)
@@ -9284,8 +9310,8 @@ Kill all test buffers that are still live.
 
 ;;;***
 
-;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21767 20340
-;;;;;;  938139 905000))
+;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21812 53800
+;;;;;;  114093 251000))
 ;;; Generated autoloads from eshell/esh-mode.el
 
 (autoload 'eshell-mode "esh-mode" "\
@@ -9295,8 +9321,8 @@ Emacs shell interactive mode.
 
 ;;;***
 
-;;;### (autoloads nil "eshell" "eshell/eshell.el" (21678 60839 561750
-;;;;;;  707000))
+;;;### (autoloads nil "eshell" "eshell/eshell.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from eshell/eshell.el
 (push (purecopy '(eshell 2 4 2)) package--builtin-versions)
 
@@ -9331,8 +9357,8 @@ corresponding to a successful execution.
 
 ;;;***
 
-;;;### (autoloads nil "etags" "progmodes/etags.el" (21697 290 536850
-;;;;;;  376000))
+;;;### (autoloads nil "etags" "progmodes/etags.el" (21826 300 610486
+;;;;;;  122000))
 ;;; Generated autoloads from progmodes/etags.el
 
 (defvar tags-file-name nil "\
@@ -9647,8 +9673,8 @@ for \\[find-tag] (which see).
 
 ;;;***
 
-;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21678
-;;;;;;  60839 797760 191000))
+;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21824
+;;;;;;  5851 711914 99000))
 ;;; Generated autoloads from language/ethio-util.el
 
 (autoload 'setup-ethiopic-environment-internal "ethio-util" "\
@@ -9816,7 +9842,7 @@ With ARG, insert that many delimiters.
 
 ;;;***
 
-;;;### (autoloads nil "eudc" "net/eudc.el" (21799 24829 185482 342000))
+;;;### (autoloads nil "eudc" "net/eudc.el" (21799 41767 21224 988000))
 ;;; Generated autoloads from net/eudc.el
 
 (autoload 'eudc-set-server "eudc" "\
@@ -9870,8 +9896,8 @@ This does nothing except loading eudc by autoload 
side-effect.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21703 62119 462294
-;;;;;;  474000))
+;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21704 50495 455324
+;;;;;;  752000))
 ;;; Generated autoloads from net/eudc-bob.el
 
 (autoload 'eudc-display-generic-binary "eudc-bob" "\
@@ -9906,8 +9932,8 @@ Display a button for the JPEG DATA.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21799 24730
-;;;;;;  583484 950000))
+;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21794 23865
+;;;;;;  772631 636000))
 ;;; Generated autoloads from net/eudc-export.el
 
 (autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
@@ -9923,8 +9949,8 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a 
record.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21703
-;;;;;;  62119 462294 474000))
+;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21704
+;;;;;;  50495 455324 752000))
 ;;; Generated autoloads from net/eudc-hotlist.el
 
 (autoload 'eudc-edit-hotlist "eudc-hotlist" "\
@@ -9934,8 +9960,8 @@ Edit the hotlist of directory servers in a specialized 
buffer.
 
 ;;;***
 
-;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21678 60839 477747
-;;;;;;  331000))
+;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emacs-lisp/ewoc.el
 
 (autoload 'ewoc-create "ewoc" "\
@@ -9961,7 +9987,7 @@ fourth arg NOSEP non-nil inhibits this.
 
 ;;;***
 
-;;;### (autoloads nil "eww" "net/eww.el" (21756 63737 898473 61000))
+;;;### (autoloads nil "eww" "net/eww.el" (21826 49851 770496 504000))
 ;;; Generated autoloads from net/eww.el
 
 (defvar eww-suggest-uris '(eww-links-at-point url-get-url-at-point 
eww-current-url) "\
@@ -10008,8 +10034,8 @@ Display the bookmarks.
 
 ;;;***
 
-;;;### (autoloads nil "executable" "progmodes/executable.el" (21678
-;;;;;;  60840 285779 750000))
+;;;### (autoloads nil "executable" "progmodes/executable.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from progmodes/executable.el
 
 (autoload 'executable-command-find-posix-p "executable" "\
@@ -10050,7 +10076,7 @@ file modes.
 
 ;;;***
 
-;;;### (autoloads nil "expand" "expand.el" (21678 60839 561750 707000))
+;;;### (autoloads nil "expand" "expand.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from expand.el
 
 (autoload 'expand-add-abbrevs "expand" "\
@@ -10099,8 +10125,8 @@ This is used only in conjunction with 
`expand-add-abbrevs'.
 
 ;;;***
 
-;;;### (autoloads nil "f90" "progmodes/f90.el" (21741 10923 306579
-;;;;;;  600000))
+;;;### (autoloads nil "f90" "progmodes/f90.el" (21740 23998 526747
+;;;;;;  884000))
 ;;; Generated autoloads from progmodes/f90.el
 
 (autoload 'f90-mode "f90" "\
@@ -10167,8 +10193,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "face-remap" "face-remap.el" (21678 60839 561750
-;;;;;;  707000))
+;;;### (autoloads nil "face-remap" "face-remap.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from face-remap.el
 
 (autoload 'face-remap-add-relative "face-remap" "\
@@ -10327,8 +10353,8 @@ Besides the choice of face, it is the same as 
`buffer-face-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21605 26936
-;;;;;;  980023 383000))
+;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21607 54478
+;;;;;;  300138 641000))
 ;;; Generated autoloads from mail/feedmail.el
 (push (purecopy '(feedmail 11)) package--builtin-versions)
 
@@ -10382,7 +10408,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
 
 ;;;***
 
-;;;### (autoloads nil "ffap" "ffap.el" (21797 54704 996906 396000))
+;;;### (autoloads nil "ffap" "ffap.el" (21797 36 690506 232000))
 ;;; Generated autoloads from ffap.el
 
 (autoload 'ffap-next "ffap" "\
@@ -10445,8 +10471,8 @@ Evaluate the forms in variable `ffap-bindings'.
 
 ;;;***
 
-;;;### (autoloads nil "filecache" "filecache.el" (21741 10923 302579
-;;;;;;  694000))
+;;;### (autoloads nil "filecache" "filecache.el" (21740 23998 26747
+;;;;;;  125000))
 ;;; Generated autoloads from filecache.el
 
 (autoload 'file-cache-add-directory "filecache" "\
@@ -10503,8 +10529,8 @@ the name is considered already unique; only the second 
substitution
 
 ;;;***
 
-;;;### (autoloads nil "filenotify" "filenotify.el" (21706 14224 249963
-;;;;;;  176000))
+;;;### (autoloads nil "filenotify" "filenotify.el" (21704 50495 455324
+;;;;;;  752000))
 ;;; Generated autoloads from filenotify.el
 
 (autoload 'file-notify-handle-event "filenotify" "\
@@ -10519,8 +10545,8 @@ Otherwise, signal a `file-notify-error'.
 
 ;;;***
 
-;;;### (autoloads nil "files-x" "files-x.el" (21678 60839 569751
-;;;;;;  28000))
+;;;### (autoloads nil "files-x" "files-x.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from files-x.el
 
 (autoload 'add-file-local-variable "files-x" "\
@@ -10585,8 +10611,8 @@ Copy directory-local variables to the -*- line.
 
 ;;;***
 
-;;;### (autoloads nil "filesets" "filesets.el" (21678 60839 577751
-;;;;;;  350000))
+;;;### (autoloads nil "filesets" "filesets.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from filesets.el
 
 (autoload 'filesets-init "filesets" "\
@@ -10597,8 +10623,8 @@ Set up hooks, load the cache file -- if existing -- and 
build the menu.
 
 ;;;***
 
-;;;### (autoloads nil "find-cmd" "find-cmd.el" (21678 60839 577751
-;;;;;;  350000))
+;;;### (autoloads nil "find-cmd" "find-cmd.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from find-cmd.el
 (push (purecopy '(find-cmd 0 6)) package--builtin-versions)
 
@@ -10618,8 +10644,8 @@ result is a string that should be ready for the command 
line.
 
 ;;;***
 
-;;;### (autoloads nil "find-dired" "find-dired.el" (21678 60839 577751
-;;;;;;  350000))
+;;;### (autoloads nil "find-dired" "find-dired.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from find-dired.el
 
 (autoload 'find-dired "find-dired" "\
@@ -10659,8 +10685,8 @@ use in place of \"-ls\" as the final argument.
 
 ;;;***
 
-;;;### (autoloads nil "find-file" "find-file.el" (21678 60839 581751
-;;;;;;  511000))
+;;;### (autoloads nil "find-file" "find-file.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from find-file.el
 
 (defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s 
+[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) 
(match-end 2)))) "\
@@ -10750,8 +10776,8 @@ Visit the file you click on in another window.
 
 ;;;***
 
-;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21701
-;;;;;;  12613 256523 949000))
+;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21700
+;;;;;;  53432 444919 658000))
 ;;; Generated autoloads from emacs-lisp/find-func.el
 
 (autoload 'find-library "find-func" "\
@@ -10909,8 +10935,8 @@ Define some key bindings for the find-function family 
of functions.
 
 ;;;***
 
-;;;### (autoloads nil "find-lisp" "find-lisp.el" (21678 60839 581751
-;;;;;;  511000))
+;;;### (autoloads nil "find-lisp" "find-lisp.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from find-lisp.el
 
 (autoload 'find-lisp-find-dired "find-lisp" "\
@@ -10930,7 +10956,7 @@ Change the filter on a `find-lisp-find-dired' buffer to 
REGEXP.
 
 ;;;***
 
-;;;### (autoloads nil "finder" "finder.el" (21678 60839 581751 511000))
+;;;### (autoloads nil "finder" "finder.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from finder.el
 (push (purecopy '(finder 1 0)) package--builtin-versions)
 
@@ -10952,8 +10978,8 @@ Find packages matching a given keyword.
 
 ;;;***
 
-;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21678 60839 581751
-;;;;;;  511000))
+;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from flow-ctrl.el
 
 (autoload 'enable-flow-control "flow-ctrl" "\
@@ -10974,8 +11000,8 @@ to get the effect of a C-q.
 
 ;;;***
 
-;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21678 60839
-;;;;;;  625753 279000))
+;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/flow-fill.el
 
 (autoload 'fill-flowed-encode "flow-fill" "\
@@ -10990,8 +11016,8 @@ to get the effect of a C-q.
 
 ;;;***
 
-;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21678 60840
-;;;;;;  289779 910000))
+;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/flymake.el
 (push (purecopy '(flymake 0 3)) package--builtin-versions)
 
@@ -11021,8 +11047,8 @@ Turn flymake mode off.
 
 ;;;***
 
-;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21756 63738
-;;;;;;  18470 49000))
+;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21750 59840
+;;;;;;  704617 663000))
 ;;; Generated autoloads from textmodes/flyspell.el
 
 (autoload 'flyspell-prog-mode "flyspell" "\
@@ -11092,14 +11118,14 @@ Flyspell whole buffer.
 
 ;;;***
 
-;;;### (autoloads nil "foldout" "foldout.el" (21678 60839 581751
-;;;;;;  511000))
+;;;### (autoloads nil "foldout" "foldout.el" (21824 11953 672190
+;;;;;;  35000))
 ;;; Generated autoloads from foldout.el
 (push (purecopy '(foldout 1 10)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "follow" "follow.el" (21678 60839 581751 511000))
+;;;### (autoloads nil "follow" "follow.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from follow.el
 
 (autoload 'turn-on-follow-mode "follow" "\
@@ -11167,8 +11193,8 @@ selected if the original window is the first one in the 
frame.
 
 ;;;***
 
-;;;### (autoloads nil "footnote" "mail/footnote.el" (21799 24401
-;;;;;;  558172 920000))
+;;;### (autoloads nil "footnote" "mail/footnote.el" (21814 9129 310503
+;;;;;;  742000))
 ;;; Generated autoloads from mail/footnote.el
 (push (purecopy '(footnote 0 19)) package--builtin-versions)
 
@@ -11187,7 +11213,7 @@ play around with the following keys:
 
 ;;;***
 
-;;;### (autoloads nil "forms" "forms.el" (21804 4012 674064 262000))
+;;;### (autoloads nil "forms" "forms.el" (21804 59688 164807 902000))
 ;;; Generated autoloads from forms.el
 
 (autoload 'forms-mode "forms" "\
@@ -11223,8 +11249,8 @@ Visit a file in Forms mode in other window.
 
 ;;;***
 
-;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21678 60840
-;;;;;;  289779 910000))
+;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/fortran.el
 
 (autoload 'fortran-mode "fortran" "\
@@ -11301,8 +11327,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "fortune" "play/fortune.el" (21678 60840 201776
-;;;;;;  390000))
+;;;### (autoloads nil "fortune" "play/fortune.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/fortune.el
 
 (autoload 'fortune-add-fortune "fortune" "\
@@ -11350,8 +11376,8 @@ and choose the directory as the fortune-file.
 
 ;;;***
 
-;;;### (autoloads nil "frameset" "frameset.el" (21799 24401 554173
-;;;;;;  1000))
+;;;### (autoloads nil "frameset" "frameset.el" (21799 41766 981374
+;;;;;;  972000))
 ;;; Generated autoloads from frameset.el
 
 (defvar frameset-session-filter-alist '((name . :never) (left . 
frameset-filter-iconified) (minibuffer . frameset-filter-minibuffer) (top . 
frameset-filter-iconified)) "\
@@ -11537,15 +11563,15 @@ Interactively, reads the register using 
`register-read-with-preview'.
 
 ;;;***
 
-;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21720 48653
-;;;;;;  160356 477000))
+;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21720 38720
+;;;;;;  956749 443000))
 ;;; Generated autoloads from play/gamegrid.el
 (push (purecopy '(gamegrid 1 2)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21724 48240
-;;;;;;  923325 678000))
+;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21724 35774
+;;;;;;  954622 790000))
 ;;; Generated autoloads from progmodes/gdb-mi.el
 
 (defvar gdb-enable-debug nil "\
@@ -11622,8 +11648,8 @@ detailed description of this mode.
 
 ;;;***
 
-;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21678 60839
-;;;;;;  477747 331000))
+;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emacs-lisp/generic.el
 
 (defvar generic-mode-list nil "\
@@ -11703,8 +11729,8 @@ regular expression that can be used as an element of
 
 ;;;***
 
-;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21678 60840
-;;;;;;  293780 70000))
+;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/glasses.el
 
 (autoload 'glasses-mode "glasses" "\
@@ -11718,8 +11744,8 @@ add virtual separators (like underscores) at places 
they belong to.
 
 ;;;***
 
-;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21678 60839
-;;;;;;  629753 440000))
+;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gmm-utils.el
 
 (autoload 'gmm-regexp-concat "gmm-utils" "\
@@ -11773,7 +11799,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
 
 ;;;***
 
-;;;### (autoloads nil "gnus" "gnus/gnus.el" (21678 60839 681755 530000))
+;;;### (autoloads nil "gnus" "gnus/gnus.el" (21670 32330 885624 725000))
 ;;; Generated autoloads from gnus/gnus.el
 (push (purecopy '(gnus 5 13)) package--builtin-versions)
 (when (fboundp 'custom-autoload)
@@ -11823,8 +11849,8 @@ prompt the user for the name of an NNTP server to use.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21678 60839
-;;;;;;  629753 440000))
+;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-agent.el
 
 (autoload 'gnus-unplugged "gnus-agent" "\
@@ -11914,8 +11940,8 @@ CLEAN is obsolete and ignored.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21799 14518
-;;;;;;  691699 178000))
+;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21804 59688
+;;;;;;  184805 112000))
 ;;; Generated autoloads from gnus/gnus-art.el
 
 (autoload 'gnus-article-prepare-display "gnus-art" "\
@@ -11925,8 +11951,8 @@ Make the current buffer look like a nice article.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21678
-;;;;;;  60839 637753 761000))
+;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from gnus/gnus-bookmark.el
 
 (autoload 'gnus-bookmark-set "gnus-bookmark" "\
@@ -11949,8 +11975,8 @@ deletion, or > if it is flagged for displaying.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21678 60839
-;;;;;;  641753 922000))
+;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-cache.el
 
 (autoload 'gnus-jog-cache "gnus-cache" "\
@@ -11991,8 +12017,8 @@ supported.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21678 60839
-;;;;;;  641753 922000))
+;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-delay.el
 
 (autoload 'gnus-delay-article "gnus-delay" "\
@@ -12027,8 +12053,8 @@ Checking delayed messages is skipped if optional arg 
NO-CHECK is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21678 60839
-;;;;;;  641753 922000))
+;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-diary.el
 
 (autoload 'gnus-user-format-function-d "gnus-diary" "\
@@ -12043,8 +12069,8 @@ Checking delayed messages is skipped if optional arg 
NO-CHECK is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21678 60839
-;;;;;;  641753 922000))
+;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-dired.el
 
 (autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
@@ -12054,8 +12080,8 @@ Convenience method to turn on gnus-dired-mode.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21678 60839
-;;;;;;  645754 83000))
+;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-draft.el
 
 (autoload 'gnus-draft-reminder "gnus-draft" "\
@@ -12065,8 +12091,8 @@ Reminder user if there are unsent drafts.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21678 60839
-;;;;;;  645754 83000))
+;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-fun.el
 
 (autoload 'gnus--random-face-with-type "gnus-fun" "\
@@ -12131,8 +12157,8 @@ Insert a random Face header from `gnus-face-directory'.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21678
-;;;;;;  60839 645754 83000))
+;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from gnus/gnus-gravatar.el
 
 (autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\
@@ -12149,8 +12175,8 @@ If gravatars are already displayed, remove them.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21804 4012
-;;;;;;  678064 192000))
+;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21804 59688
+;;;;;;  184805 112000))
 ;;; Generated autoloads from gnus/gnus-group.el
 
 (autoload 'gnus-fetch-group "gnus-group" "\
@@ -12167,8 +12193,8 @@ Pop up a frame and enter GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21678 60839
-;;;;;;  649754 243000))
+;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-html.el
 
 (autoload 'gnus-article-html "gnus-html" "\
@@ -12183,8 +12209,8 @@ Pop up a frame and enter GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21678 60839
-;;;;;;  649754 243000))
+;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-kill.el
 
 (defalias 'gnus-batch-kill 'gnus-batch-score)
@@ -12197,8 +12223,8 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f 
gnus-batch-score
 
 ;;;***
 
-;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21678 60839 653754
-;;;;;;  404000))
+;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from gnus/gnus-ml.el
 
 (autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\
@@ -12221,8 +12247,8 @@ Minor mode for providing mailing-list commands.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21678 60839
-;;;;;;  653754 404000))
+;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-mlspl.el
 
 (autoload 'gnus-group-split-setup "gnus-mlspl" "\
@@ -12322,8 +12348,8 @@ Calling (gnus-group-split-fancy nil nil 
\"mail.others\") returns:
 
 ;;;***
 
-;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21727 22885
-;;;;;;  701249 695000))
+;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21725 56638
+;;;;;;  795320 63000))
 ;;; Generated autoloads from gnus/gnus-msg.el
 
 (autoload 'gnus-msg-mail "gnus-msg" "\
@@ -12350,7 +12376,7 @@ Like `message-reply'.
 ;;;***
 
 ;;;### (autoloads nil "gnus-notifications" "gnus/gnus-notifications.el"
-;;;;;;  (21756 63737 858474 66000))
+;;;;;;  (21757 29489 158925 687000))
 ;;; Generated autoloads from gnus/gnus-notifications.el
 
 (autoload 'gnus-notifications "gnus-notifications" "\
@@ -12366,8 +12392,8 @@ This is typically a function to add in
 
 ;;;***
 
-;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21678 60839
-;;;;;;  653754 404000))
+;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-picon.el
 
 (autoload 'gnus-treat-from-picon "gnus-picon" "\
@@ -12390,8 +12416,8 @@ If picons are already displayed, remove them.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21678 60839
-;;;;;;  653754 404000))
+;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-range.el
 
 (autoload 'gnus-sorted-difference "gnus-range" "\
@@ -12459,7 +12485,7 @@ Add NUM into sorted LIST by side effect.
 ;;;***
 
 ;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (21774
-;;;;;;  52426 305831 981000))
+;;;;;;  38574 225319 550000))
 ;;; Generated autoloads from gnus/gnus-registry.el
 
 (autoload 'gnus-registry-initialize "gnus-registry" "\
@@ -12474,8 +12500,8 @@ Install the registry hooks.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21678 60839
-;;;;;;  661754 726000))
+;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-sieve.el
 
 (autoload 'gnus-sieve-update "gnus-sieve" "\
@@ -12502,8 +12528,8 @@ See the documentation for these variables and functions 
for details.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21678 60839
-;;;;;;  661754 726000))
+;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-spec.el
 
 (autoload 'gnus-update-format "gnus-spec" "\
@@ -12513,8 +12539,8 @@ Update the format specification near point.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21715 35341
-;;;;;;  203436 746000))
+;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21716 41663
+;;;;;;  456033 27000))
 ;;; Generated autoloads from gnus/gnus-start.el
 
 (autoload 'gnus-declare-backend "gnus-start" "\
@@ -12524,8 +12550,8 @@ Declare back end NAME with ABILITIES as a Gnus back end.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21803 61751
-;;;;;;  289340 808000))
+;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21804 59688
+;;;;;;  194794 158000))
 ;;; Generated autoloads from gnus/gnus-sum.el
 
 (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
@@ -12536,8 +12562,8 @@ BOOKMARK is a bookmark name or a bookmark record.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21678 60839
-;;;;;;  673755 208000))
+;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-sync.el
 
 (autoload 'gnus-sync-initialize "gnus-sync" "\
@@ -12552,8 +12578,8 @@ Install the sync hooks.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21678 60839
-;;;;;;  681755 530000))
+;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gnus-win.el
 
 (autoload 'gnus-add-configuration "gnus-win" "\
@@ -12563,8 +12589,8 @@ Add the window configuration CONF to 
`gnus-buffer-configuration'.
 
 ;;;***
 
-;;;### (autoloads nil "gnutls" "net/gnutls.el" (21678 60839 969767
-;;;;;;  103000))
+;;;### (autoloads nil "gnutls" "net/gnutls.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from net/gnutls.el
 
 (defvar gnutls-min-prime-bits 256 "\
@@ -12580,8 +12606,8 @@ A value of nil says to use the default GnuTLS value.")
 
 ;;;***
 
-;;;### (autoloads nil "gomoku" "play/gomoku.el" (21678 60840 205776
-;;;;;;  549000))
+;;;### (autoloads nil "gomoku" "play/gomoku.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/gomoku.el
 
 (autoload 'gomoku "gomoku" "\
@@ -12607,8 +12633,8 @@ Use \\[describe-mode] for more info.
 
 ;;;***
 
-;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21678 60839
-;;;;;;  969767 103000))
+;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from net/goto-addr.el
 
 (define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point 
"22.1")
@@ -12649,8 +12675,8 @@ Like `goto-address-mode', but only for comments and 
strings.
 
 ;;;***
 
-;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21678 60839
-;;;;;;  685755 690000))
+;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/gravatar.el
 
 (autoload 'gravatar-retrieve "gravatar" "\
@@ -12666,8 +12692,8 @@ Retrieve MAIL-ADDRESS gravatar and returns it.
 
 ;;;***
 
-;;;### (autoloads nil "grep" "progmodes/grep.el" (21678 60840 297780
-;;;;;;  230000))
+;;;### (autoloads nil "grep" "progmodes/grep.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from progmodes/grep.el
 
 (defvar grep-window-height nil "\
@@ -12831,7 +12857,7 @@ file name to `*.gz', and sets `grep-highlight-matches' 
to `always'.
 
 ;;;***
 
-;;;### (autoloads nil "gs" "gs.el" (21678 60839 733757 619000))
+;;;### (autoloads nil "gs" "gs.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from gs.el
 
 (autoload 'gs-load-image "gs" "\
@@ -12844,8 +12870,8 @@ the form \"WINDOW-ID PIXMAP-ID\".  Value is non-nil if 
successful.
 
 ;;;***
 
-;;;### (autoloads nil "gud" "progmodes/gud.el" (21769 35727 354145
-;;;;;;  723000))
+;;;### (autoloads nil "gud" "progmodes/gud.el" (21769 20661 366048
+;;;;;;  601000))
 ;;; Generated autoloads from progmodes/gud.el
 
 (autoload 'gud-gdb "gud" "\
@@ -12940,8 +12966,8 @@ it if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21756 63737 830474
-;;;;;;  768000))
+;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21750 59840 206034
+;;;;;;  761000))
 ;;; Generated autoloads from emacs-lisp/gv.el
 
 (autoload 'gv-get "gv" "\
@@ -13043,8 +13069,8 @@ binding mode.
 
 ;;;***
 
-;;;### (autoloads nil "handwrite" "play/handwrite.el" (21678 60840
-;;;;;;  205776 549000))
+;;;### (autoloads nil "handwrite" "play/handwrite.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from play/handwrite.el
 
 (autoload 'handwrite "handwrite" "\
@@ -13061,8 +13087,8 @@ Variables: `handwrite-linespace'     (default 12)
 
 ;;;***
 
-;;;### (autoloads nil "hanoi" "play/hanoi.el" (21799 25474 348396
-;;;;;;  169000))
+;;;### (autoloads nil "hanoi" "play/hanoi.el" (21799 41767 31221
+;;;;;;  635000))
 ;;; Generated autoloads from play/hanoi.el
 
 (autoload 'hanoi "hanoi" "\
@@ -13089,8 +13115,8 @@ to be updated.
 
 ;;;***
 
-;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21678 60839
-;;;;;;  869763 84000))
+;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/hashcash.el
 
 (autoload 'hashcash-insert-payment "hashcash" "\
@@ -13132,8 +13158,8 @@ Prefix arg sets default accept amount temporarily.
 
 ;;;***
 
-;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21678 60839 733757
-;;;;;;  619000))
+;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from help-at-pt.el
 
 (autoload 'help-at-pt-string "help-at-pt" "\
@@ -13260,8 +13286,8 @@ different regions.  With numeric argument ARG, behaves 
like
 
 ;;;***
 
-;;;### (autoloads nil "help-fns" "help-fns.el" (21720 48653 588347
-;;;;;;  670000))
+;;;### (autoloads nil "help-fns" "help-fns.el" (21818 36533 711220
+;;;;;;  766000))
 ;;; Generated autoloads from help-fns.el
 
 (autoload 'describe-function "help-fns" "\
@@ -13347,8 +13373,8 @@ Produce a texinfo buffer with sorted doc-strings from 
the DOC file.
 
 ;;;***
 
-;;;### (autoloads nil "help-macro" "help-macro.el" (21678 60839 737757
-;;;;;;  780000))
+;;;### (autoloads nil "help-macro" "help-macro.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from help-macro.el
 
 (defvar three-step-help nil "\
@@ -13362,8 +13388,8 @@ gives the window that lists the options.")
 
 ;;;***
 
-;;;### (autoloads nil "help-mode" "help-mode.el" (21733 15494 350926
-;;;;;;  217000))
+;;;### (autoloads nil "help-mode" "help-mode.el" (21733 50750 334730
+;;;;;;  5000))
 ;;; Generated autoloads from help-mode.el
 
 (autoload 'help-mode "help-mode" "\
@@ -13470,8 +13496,8 @@ BOOKMARK is a bookmark name or a bookmark record.
 
 ;;;***
 
-;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21678 60839
-;;;;;;  481747 492000))
+;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emacs-lisp/helper.el
 
 (autoload 'Helper-describe-bindings "helper" "\
@@ -13486,7 +13512,7 @@ Provide help for current mode.
 
 ;;;***
 
-;;;### (autoloads nil "hexl" "hexl.el" (21694 48017 602102 111000))
+;;;### (autoloads nil "hexl" "hexl.el" (21695 35516 595262 313000))
 ;;; Generated autoloads from hexl.el
 
 (autoload 'hexl-mode "hexl" "\
@@ -13580,8 +13606,7 @@ This discards the buffer's undo information.
 
 ;;;***
 
-;;;### (autoloads nil "hi-lock" "hi-lock.el" (21741 10923 302579
-;;;;;;  694000))
+;;;### (autoloads nil "hi-lock" "hi-lock.el" (21741 1161 438890 423000))
 ;;; Generated autoloads from hi-lock.el
 
 (autoload 'hi-lock-mode "hi-lock" "\
@@ -13748,8 +13773,8 @@ be found in variable `hi-lock-interactive-patterns'.
 
 ;;;***
 
-;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21799 25495
-;;;;;;  339970 854000))
+;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21799 41767
+;;;;;;  51222 992000))
 ;;; Generated autoloads from progmodes/hideif.el
 
 (autoload 'hide-ifdef-mode "hideif" "\
@@ -13796,8 +13821,8 @@ Several variables affect how the hiding is done:
 
 ;;;***
 
-;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21678 60840
-;;;;;;  301780 390000))
+;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/hideshow.el
 
 (defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil 
nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) 
(java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\
@@ -13859,8 +13884,8 @@ Unconditionally turn off `hs-minor-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21678 60839 741757
-;;;;;;  940000))
+;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from hilit-chg.el
 
 (autoload 'highlight-changes-mode "hilit-chg" "\
@@ -13991,8 +14016,8 @@ See `highlight-changes-mode' for more information on 
Highlight-Changes mode.
 
 ;;;***
 
-;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21678 60839 741757
-;;;;;;  940000))
+;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from hippie-exp.el
 (push (purecopy '(hippie-exp 1 6)) package--builtin-versions)
 
@@ -14024,8 +14049,8 @@ argument VERBOSE non-nil makes the function verbose.
 
 ;;;***
 
-;;;### (autoloads nil "hl-line" "hl-line.el" (21678 60839 741757
-;;;;;;  940000))
+;;;### (autoloads nil "hl-line" "hl-line.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from hl-line.el
 
 (autoload 'hl-line-mode "hl-line" "\
@@ -14074,8 +14099,8 @@ Global-Hl-Line mode uses the functions 
`global-hl-line-unhighlight' and
 
 ;;;***
 
-;;;### (autoloads nil "holidays" "calendar/holidays.el" (21678 60839
-;;;;;;  317740 902000))
+;;;### (autoloads nil "holidays" "calendar/holidays.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from calendar/holidays.el
 
 (defvar holiday-general-holidays (mapcar 'purecopy '((holiday-fixed 1 1 "New 
Year's Day") (holiday-float 1 1 3 "Martin Luther King Day") (holiday-fixed 2 2 
"Groundhog Day") (holiday-fixed 2 14 "Valentine's Day") (holiday-float 2 1 3 
"President's Day") (holiday-fixed 3 17 "St. Patrick's Day") (holiday-fixed 4 1 
"April Fools' Day") (holiday-float 5 0 2 "Mother's Day") (holiday-float 5 1 -1 
"Memorial Day") (holiday-fixed 6 14 "Flag Day") (holiday-float 6 0 3 "Father's 
Day") (holiday-fixed 7 [...]
@@ -14185,8 +14210,8 @@ The optional LABEL is used to label the buffer created.
 
 ;;;***
 
-;;;### (autoloads nil "html2text" "gnus/html2text.el" (21678 60839
-;;;;;;  685755 690000))
+;;;### (autoloads nil "html2text" "gnus/html2text.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from gnus/html2text.el
 
 (autoload 'html2text "html2text" "\
@@ -14196,8 +14221,8 @@ Convert HTML to plain text in the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21797 54705
-;;;;;;  36905 533000))
+;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21794 23865
+;;;;;;  762631 503000))
 ;;; Generated autoloads from htmlfontify.el
 (push (purecopy '(htmlfontify 0 21)) package--builtin-versions)
 
@@ -14230,8 +14255,8 @@ You may also want to set `hfy-page-header' and 
`hfy-page-footer'.
 
 ;;;***
 
-;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21678 60839 745758
-;;;;;;  101000))
+;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from ibuf-macs.el
 
 (autoload 'define-ibuffer-column "ibuf-macs" "\
@@ -14333,8 +14358,7 @@ bound to the current value of the filter.
 
 ;;;***
 
-;;;### (autoloads nil "ibuffer" "ibuffer.el" (21799 25376 342382
-;;;;;;  265000))
+;;;### (autoloads nil "ibuffer" "ibuffer.el" (21799 41767 11212 472000))
 ;;; Generated autoloads from ibuffer.el
 
 (autoload 'ibuffer-list-buffers "ibuffer" "\
@@ -14373,8 +14397,8 @@ FORMATS is the value to use for `ibuffer-formats'.
 
 ;;;***
 
-;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21797
-;;;;;;  54704 968907 0))
+;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21795
+;;;;;;  44704 594368 994000))
 ;;; Generated autoloads from calendar/icalendar.el
 (push (purecopy '(icalendar 0 19)) package--builtin-versions)
 
@@ -14427,8 +14451,8 @@ buffer `*icalendar-errors*'.
 
 ;;;***
 
-;;;### (autoloads nil "icomplete" "icomplete.el" (21678 60839 749758
-;;;;;;  262000))
+;;;### (autoloads nil "icomplete" "icomplete.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from icomplete.el
 
 (defvar icomplete-mode nil "\
@@ -14467,8 +14491,8 @@ completions:
 
 ;;;***
 
-;;;### (autoloads nil "icon" "progmodes/icon.el" (21678 60840 301780
-;;;;;;  390000))
+;;;### (autoloads nil "icon" "progmodes/icon.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from progmodes/icon.el
 
 (autoload 'icon-mode "icon" "\
@@ -14508,8 +14532,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21678
-;;;;;;  60840 309780 710000))
+;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21826
+;;;;;;  49523 450500 879000))
 ;;; Generated autoloads from progmodes/idlw-shell.el
 
 (autoload 'idlwave-shell "idlw-shell" "\
@@ -14534,8 +14558,8 @@ See also the variable `idlwave-shell-prompt-pattern'.
 
 ;;;***
 
-;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21678 60840
-;;;;;;  313780 870000))
+;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/idlwave.el
 (push (purecopy '(idlwave 6 1 22)) package--builtin-versions)
 
@@ -14664,7 +14688,7 @@ The main features of this mode are
 
 ;;;***
 
-;;;### (autoloads nil "ido" "ido.el" (21767 20340 942139 827000))
+;;;### (autoloads nil "ido" "ido.el" (21767 65327 504606 256000))
 ;;; Generated autoloads from ido.el
 
 (defvar ido-mode nil "\
@@ -14926,7 +14950,7 @@ DEF, if non-nil, is the default value.
 
 ;;;***
 
-;;;### (autoloads nil "ielm" "ielm.el" (21694 48017 602102 111000))
+;;;### (autoloads nil "ielm" "ielm.el" (21695 35516 595262 313000))
 ;;; Generated autoloads from ielm.el
 
 (autoload 'ielm "ielm" "\
@@ -14938,7 +14962,7 @@ See `inferior-emacs-lisp-mode' for details.
 
 ;;;***
 
-;;;### (autoloads nil "iimage" "iimage.el" (21678 60839 753758 423000))
+;;;### (autoloads nil "iimage" "iimage.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from iimage.el
 
 (define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
@@ -14954,7 +14978,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG 
is `toggle'.
 
 ;;;***
 
-;;;### (autoloads nil "image" "image.el" (21678 60839 757758 583000))
+;;;### (autoloads nil "image" "image.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from image.el
 
 (autoload 'image-type-from-data "image" "\
@@ -15147,8 +15171,8 @@ If Emacs is compiled without ImageMagick support, this 
does nothing.
 
 ;;;***
 
-;;;### (autoloads nil "image-dired" "image-dired.el" (21678 60839
-;;;;;;  757758 583000))
+;;;### (autoloads nil "image-dired" "image-dired.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from image-dired.el
 (push (purecopy '(image-dired 0 4 11)) package--builtin-versions)
 
@@ -15285,8 +15309,8 @@ easy-to-use form.
 
 ;;;***
 
-;;;### (autoloads nil "image-file" "image-file.el" (21678 60839 757758
-;;;;;;  583000))
+;;;### (autoloads nil "image-file" "image-file.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from image-file.el
 
 (defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" 
"tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\
@@ -15348,8 +15372,8 @@ An image file is one whose name has an extension in
 
 ;;;***
 
-;;;### (autoloads nil "image-mode" "image-mode.el" (21718 7576 278960
-;;;;;;  757000))
+;;;### (autoloads nil "image-mode" "image-mode.el" (21716 41663 456033
+;;;;;;  27000))
 ;;; Generated autoloads from image-mode.el
 
 (autoload 'image-mode "image-mode" "\
@@ -15396,7 +15420,7 @@ on these modes.
 
 ;;;***
 
-;;;### (autoloads nil "imenu" "imenu.el" (21678 60839 761758 744000))
+;;;### (autoloads nil "imenu" "imenu.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from imenu.el
 
 (defvar imenu-sort-function nil "\
@@ -15534,8 +15558,8 @@ for more information.
 
 ;;;***
 
-;;;### (autoloads nil "ind-util" "language/ind-util.el" (21678 60839
-;;;;;;  813760 834000))
+;;;### (autoloads nil "ind-util" "language/ind-util.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from language/ind-util.el
 
 (autoload 'indian-compose-region "ind-util" "\
@@ -15565,8 +15589,8 @@ Convert old Emacs Devanagari characters to UCS.
 
 ;;;***
 
-;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21678 60840
-;;;;;;  317781 30000))
+;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/inf-lisp.el
 
 (autoload 'inferior-lisp "inf-lisp" "\
@@ -15584,7 +15608,7 @@ of `inferior-lisp-program').  Runs the hooks from
 
 ;;;***
 
-;;;### (autoloads nil "info" "info.el" (21678 60839 765758 905000))
+;;;### (autoloads nil "info" "info.el" (21822 3243 710497 966000))
 ;;; Generated autoloads from info.el
 
 (defcustom Info-default-directory-list (let* ((config-dir 
(file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name 
"../info" data-directory))) (if (file-directory-p dir) dir))) 
configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" 
"/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" 
"gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply 
#'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx 
[...]
@@ -15796,8 +15820,8 @@ completion alternatives to currently visited manuals.
 
 ;;;***
 
-;;;### (autoloads nil "info-look" "info-look.el" (21763 18426 747793
-;;;;;;  948000))
+;;;### (autoloads nil "info-look" "info-look.el" (21814 9129 270507
+;;;;;;  521000))
 ;;; Generated autoloads from info-look.el
 
 (autoload 'info-lookup-reset "info-look" "\
@@ -15844,8 +15868,8 @@ Perform completion on file preceding point.
 
 ;;;***
 
-;;;### (autoloads nil "info-xref" "info-xref.el" (21678 60839 761758
-;;;;;;  744000))
+;;;### (autoloads nil "info-xref" "info-xref.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from info-xref.el
 (push (purecopy '(info-xref 3)) package--builtin-versions)
 
@@ -15928,8 +15952,8 @@ the sources handy.
 
 ;;;***
 
-;;;### (autoloads nil "informat" "informat.el" (21678 60839 765758
-;;;;;;  905000))
+;;;### (autoloads nil "informat" "informat.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from informat.el
 
 (autoload 'Info-tagify "informat" "\
@@ -15974,8 +15998,8 @@ For example, invoke \"emacs -batch -f 
batch-info-validate $info/ ~/*.info\"
 
 ;;;***
 
-;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21678 60839
-;;;;;;  481747 492000))
+;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emacs-lisp/inline.el
 
 (autoload 'define-inline "inline" "\
@@ -15989,8 +16013,8 @@ For example, invoke \"emacs -batch -f 
batch-info-validate $info/ ~/*.info\"
 
 ;;;***
 
-;;;### (autoloads nil "inversion" "cedet/inversion.el" (21678 60839
-;;;;;;  349742 188000))
+;;;### (autoloads nil "inversion" "cedet/inversion.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from cedet/inversion.el
 (push (purecopy '(inversion 1 3)) package--builtin-versions)
 
@@ -16002,8 +16026,8 @@ Only checks one based on which kind of Emacs is being 
run.
 
 ;;;***
 
-;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21678
-;;;;;;  60839 769759 66000))
+;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from international/isearch-x.el
 
 (autoload 'isearch-toggle-specified-input-method "isearch-x" "\
@@ -16023,8 +16047,8 @@ Toggle input method in interactive search.
 
 ;;;***
 
-;;;### (autoloads nil "isearchb" "isearchb.el" (21767 20340 942139
-;;;;;;  827000))
+;;;### (autoloads nil "isearchb" "isearchb.el" (21767 65327 504606
+;;;;;;  256000))
 ;;; Generated autoloads from isearchb.el
 (push (purecopy '(isearchb 1 5)) package--builtin-versions)
 
@@ -16038,8 +16062,8 @@ accessed via isearchb.
 
 ;;;***
 
-;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21678
-;;;;;;  60839 769759 66000))
+;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from international/iso-cvt.el
 
 (autoload 'iso-spanish "iso-cvt" "\
@@ -16130,15 +16154,15 @@ Add submenus to the File menu, to convert to and from 
various formats.
 ;;;***
 
 ;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;;  (21678 60839 769759 66000))
+;;;;;;  (21670 32331 385639 720000))
 ;;; Generated autoloads from international/iso-transl.el
  (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map)
  (autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 
'keymap)
 
 ;;;***
 
-;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21756 63738
-;;;;;;  22469 950000))
+;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21824 5851
+;;;;;;  721914 174000))
 ;;; Generated autoloads from textmodes/ispell.el
 
 (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t 
exclusive))))
@@ -16371,8 +16395,8 @@ You can bind this to the key C-c i in GNUS or mail by 
adding to
 
 ;;;***
 
-;;;### (autoloads nil "japan-util" "language/japan-util.el" (21678
-;;;;;;  60839 817760 994000))
+;;;### (autoloads nil "japan-util" "language/japan-util.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from language/japan-util.el
 
 (autoload 'setup-japanese-environment-internal "japan-util" "\
@@ -16449,8 +16473,8 @@ If non-nil, second arg INITIAL-INPUT is a string to 
insert before reading.
 
 ;;;***
 
-;;;### (autoloads nil "jka-compr" "jka-compr.el" (21678 60839 793760
-;;;;;;  30000))
+;;;### (autoloads nil "jka-compr" "jka-compr.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from jka-compr.el
 
 (defvar jka-compr-inhibit nil "\
@@ -16473,8 +16497,8 @@ by `jka-compr-installed'.
 
 ;;;***
 
-;;;### (autoloads nil "js" "progmodes/js.el" (21790 46509 351608
-;;;;;;  183000))
+;;;### (autoloads nil "js" "progmodes/js.el" (21790 26797 438891
+;;;;;;  674000))
 ;;; Generated autoloads from progmodes/js.el
 (push (purecopy '(js 9)) package--builtin-versions)
 
@@ -16488,14 +16512,14 @@ Major mode for editing JavaScript.
 
 ;;;***
 
-;;;### (autoloads nil "json" "json.el" (21779 20029 611175 954000))
+;;;### (autoloads nil "json" "json.el" (21779 56495 106033 935000))
 ;;; Generated autoloads from json.el
 (push (purecopy '(json 1 4)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "keypad" "emulation/keypad.el" (21678 60839
-;;;;;;  505748 457000))
+;;;### (autoloads nil "keypad" "emulation/keypad.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emulation/keypad.el
 
 (defvar keypad-setup nil "\
@@ -16550,8 +16574,8 @@ the decimal key on the keypad is mapped to DECIMAL 
instead of `.'
 
 ;;;***
 
-;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21678
-;;;;;;  60839 773759 227000))
+;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from international/kinsoku.el
 
 (autoload 'kinsoku "kinsoku" "\
@@ -16572,8 +16596,8 @@ the context of text formatting.
 
 ;;;***
 
-;;;### (autoloads nil "kkc" "international/kkc.el" (21678 60839 773759
-;;;;;;  227000))
+;;;### (autoloads nil "kkc" "international/kkc.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from international/kkc.el
 
 (defvar kkc-after-update-conversion-functions nil "\
@@ -16595,7 +16619,7 @@ and the return value is the length of the conversion.
 
 ;;;***
 
-;;;### (autoloads nil "kmacro" "kmacro.el" (21678 60839 793760 30000))
+;;;### (autoloads nil "kmacro" "kmacro.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from kmacro.el
  (global-set-key "\C-x(" 'kmacro-start-macro)
  (global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16707,8 +16731,8 @@ If kbd macro currently being defined end it before 
activating it.
 
 ;;;***
 
-;;;### (autoloads nil "korea-util" "language/korea-util.el" (21678
-;;;;;;  60839 817760 994000))
+;;;### (autoloads nil "korea-util" "language/korea-util.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from language/korea-util.el
 
 (defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv 
"HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
@@ -16722,8 +16746,8 @@ The kind of Korean keyboard for Korean input method.
 
 ;;;***
 
-;;;### (autoloads nil "landmark" "play/landmark.el" (21678 60840
-;;;;;;  209776 710000))
+;;;### (autoloads nil "landmark" "play/landmark.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from play/landmark.el
 (push (purecopy '(landmark 1 0)) package--builtin-versions)
 
@@ -16754,8 +16778,8 @@ Use \\[describe-mode] for more info.
 
 ;;;***
 
-;;;### (autoloads nil "lao-util" "language/lao-util.el" (21678 60839
-;;;;;;  817760 994000))
+;;;### (autoloads nil "lao-util" "language/lao-util.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from language/lao-util.el
 
 (autoload 'lao-compose-string "lao-util" "\
@@ -16792,8 +16816,8 @@ Transcribe Romanized Lao string STR to Lao character 
string.
 
 ;;;***
 
-;;;### (autoloads nil "latexenc" "international/latexenc.el" (21678
-;;;;;;  60839 773759 227000))
+;;;### (autoloads nil "latexenc" "international/latexenc.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from international/latexenc.el
 
 (defvar latex-inputenc-coding-alist (purecopy '(("ansinew" . windows-1252) 
("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) 
("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . 
cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) 
("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) 
("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) 
("next" . next) ("utf8" . utf-8) ("utf8x" .  [...]
@@ -16825,7 +16849,7 @@ coding system names is determined from 
`latex-inputenc-coding-alist'.
 ;;;***
 
 ;;;### (autoloads nil "latin1-disp" "international/latin1-disp.el"
-;;;;;;  (21678 60839 773759 227000))
+;;;;;;  (21670 32331 385639 720000))
 ;;; Generated autoloads from international/latin1-disp.el
 
 (defvar latin1-display nil "\
@@ -16866,8 +16890,8 @@ use either \\[customize] or the function 
`latin1-display'.")
 
 ;;;***
 
-;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21678
-;;;;;;  60840 317781 30000))
+;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from progmodes/ld-script.el
 
 (autoload 'ld-script-mode "ld-script" "\
@@ -16877,8 +16901,8 @@ A major mode to edit GNU ld script files
 
 ;;;***
 
-;;;### (autoloads nil "let-alist" "let-alist.el" (21678 60839 865762
-;;;;;;  924000))
+;;;### (autoloads nil "let-alist" "let-alist.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from let-alist.el
 (push (purecopy '(let-alist 1 0 3)) package--builtin-versions)
 
@@ -16917,7 +16941,7 @@ displayed in the example above.
 
 ;;;***
 
-;;;### (autoloads nil "life" "play/life.el" (21678 60840 209776 710000))
+;;;### (autoloads nil "life" "play/life.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from play/life.el
 
 (autoload 'life "life" "\
@@ -16930,7 +16954,7 @@ generations (this defaults to 1).
 
 ;;;***
 
-;;;### (autoloads nil "linum" "linum.el" (21678 60839 865762 924000))
+;;;### (autoloads nil "linum" "linum.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from linum.el
 (push (purecopy '(linum 0 9 24)) package--builtin-versions)
 
@@ -16967,8 +16991,8 @@ See `linum-mode' for more information on Linum mode.
 
 ;;;***
 
-;;;### (autoloads nil "loadhist" "loadhist.el" (21678 60839 865762
-;;;;;;  924000))
+;;;### (autoloads nil "loadhist" "loadhist.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from loadhist.el
 
 (autoload 'unload-feature "loadhist" "\
@@ -16999,7 +17023,7 @@ something strange, such as redefining an Emacs function.
 
 ;;;***
 
-;;;### (autoloads nil "locate" "locate.el" (21678 60839 865762 924000))
+;;;### (autoloads nil "locate" "locate.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from locate.el
 
 (defvar locate-ls-subdir-switches (purecopy "-al") "\
@@ -17051,8 +17075,8 @@ except that FILTER is not optional.
 
 ;;;***
 
-;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21803 61751 305340
-;;;;;;  145000))
+;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21800 62630 983381
+;;;;;;  721000))
 ;;; Generated autoloads from vc/log-edit.el
 
 (autoload 'log-edit "log-edit" "\
@@ -17083,8 +17107,8 @@ done.  Otherwise, it uses the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "log-view" "vc/log-view.el" (21678 60840 529789
-;;;;;;  511000))
+;;;### (autoloads nil "log-view" "vc/log-view.el" (21814 9129 450497
+;;;;;;  666000))
 ;;; Generated autoloads from vc/log-view.el
 
 (autoload 'log-view-mode "log-view" "\
@@ -17094,7 +17118,7 @@ Major mode for browsing CVS log output.
 
 ;;;***
 
-;;;### (autoloads nil "lpr" "lpr.el" (21678 60839 865762 924000))
+;;;### (autoloads nil "lpr" "lpr.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from lpr.el
 
 (defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\
@@ -17189,8 +17213,8 @@ for further customization of the printer command.
 
 ;;;***
 
-;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21678 60839 865762
-;;;;;;  924000))
+;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from ls-lisp.el
 
 (defvar ls-lisp-support-shell-wildcards t "\
@@ -17201,8 +17225,8 @@ Otherwise they are treated as Emacs regexps (for 
backward compatibility).")
 
 ;;;***
 
-;;;### (autoloads nil "lunar" "calendar/lunar.el" (21678 60839 321741
-;;;;;;  62000))
+;;;### (autoloads nil "lunar" "calendar/lunar.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from calendar/lunar.el
 
 (autoload 'lunar-phases "lunar" "\
@@ -17214,8 +17238,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21678 60840
-;;;;;;  317781 30000))
+;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/m4-mode.el
 
 (autoload 'm4-mode "m4-mode" "\
@@ -17225,7 +17249,7 @@ A major mode to edit m4 macro files.
 
 ;;;***
 
-;;;### (autoloads nil "macros" "macros.el" (21678 60839 869763 84000))
+;;;### (autoloads nil "macros" "macros.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from macros.el
 
 (autoload 'name-last-kbd-macro "macros" "\
@@ -17314,8 +17338,8 @@ and then select the region of un-tablified names and use
 
 ;;;***
 
-;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21678 60839
-;;;;;;  869763 84000))
+;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/mail-extr.el
 
 (autoload 'mail-extract-address-components "mail-extr" "\
@@ -17345,8 +17369,8 @@ Convert mail domain DOMAIN to the country it 
corresponds to.
 
 ;;;***
 
-;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21678 60839
-;;;;;;  873763 245000))
+;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/mail-hist.el
 
 (autoload 'mail-hist-define-keys "mail-hist" "\
@@ -17375,8 +17399,8 @@ This function normally would be called when the message 
is sent.
 
 ;;;***
 
-;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21678 60839
-;;;;;;  873763 245000))
+;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/mail-utils.el
 
 (defvar mail-use-rfc822 nil "\
@@ -17450,8 +17474,8 @@ matches may be returned from the message body.
 
 ;;;***
 
-;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21678 60839
-;;;;;;  873763 245000))
+;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/mailabbrev.el
 
 (defvar mail-abbrevs-mode nil "\
@@ -17500,8 +17524,8 @@ double-quotes.
 
 ;;;***
 
-;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21678 60839
-;;;;;;  873763 245000))
+;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/mailalias.el
 
 (defvar mail-complete-style 'angles "\
@@ -17554,8 +17578,8 @@ current header, calls `mail-complete-function' and 
passes prefix ARG if any.
 
 ;;;***
 
-;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21678 60839
-;;;;;;  873763 245000))
+;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/mailclient.el
 
 (autoload 'mailclient-send-it "mailclient" "\
@@ -17567,8 +17591,8 @@ The mail client is taken to be the handler of mailto 
URLs.
 
 ;;;***
 
-;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21678
-;;;;;;  60840 321781 190000))
+;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from progmodes/make-mode.el
 
 (autoload 'makefile-mode "make-mode" "\
@@ -17685,8 +17709,8 @@ An adapted `makefile-mode' that knows about imake.
 
 ;;;***
 
-;;;### (autoloads nil "makesum" "makesum.el" (21678 60839 893764
-;;;;;;  49000))
+;;;### (autoloads nil "makesum" "makesum.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from makesum.el
 
 (autoload 'make-command-summary "makesum" "\
@@ -17697,7 +17721,7 @@ Previous contents of that buffer are killed first.
 
 ;;;***
 
-;;;### (autoloads nil "man" "man.el" (21678 60839 893764 49000))
+;;;### (autoloads nil "man" "man.el" (21814 9129 320508 708000))
 ;;; Generated autoloads from man.el
 
 (defalias 'manual-entry 'man)
@@ -17753,7 +17777,7 @@ Default bookmark handler for Man buffers.
 
 ;;;***
 
-;;;### (autoloads nil "master" "master.el" (21678 60839 893764 49000))
+;;;### (autoloads nil "master" "master.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from master.el
 (push (purecopy '(master 1 0 2)) package--builtin-versions)
 
@@ -17776,8 +17800,8 @@ yourself the value of `master-of' by calling 
`master-show-slave'.
 
 ;;;***
 
-;;;### (autoloads nil "mb-depth" "mb-depth.el" (21678 60839 893764
-;;;;;;  49000))
+;;;### (autoloads nil "mb-depth" "mb-depth.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from mb-depth.el
 
 (defvar minibuffer-depth-indicate-mode nil "\
@@ -17804,14 +17828,14 @@ recursion depth in the minibuffer prompt.  This is 
only useful if
 
 ;;;***
 
-;;;### (autoloads nil "md4" "md4.el" (21678 60839 897764 210000))
+;;;### (autoloads nil "md4" "md4.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from md4.el
 (push (purecopy '(md4 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "message" "gnus/message.el" (21803 61751 293340
-;;;;;;  642000))
+;;;### (autoloads nil "message" "gnus/message.el" (21822 37322 690488
+;;;;;;  175000))
 ;;; Generated autoloads from gnus/message.el
 
 (define-mail-user-agent 'message-user-agent 'message-mail 
'message-send-and-exit 'message-kill-buffer 'message-send-hook)
@@ -17976,8 +18000,8 @@ which specify the range to operate on.
 
 ;;;***
 
-;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21678
-;;;;;;  60840 321781 190000))
+;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from progmodes/meta-mode.el
 (push (purecopy '(meta-mode 1 0)) package--builtin-versions)
 
@@ -17993,8 +18017,8 @@ Major mode for editing MetaPost sources.
 
 ;;;***
 
-;;;### (autoloads nil "metamail" "mail/metamail.el" (21678 60839
-;;;;;;  873763 245000))
+;;;### (autoloads nil "metamail" "mail/metamail.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/metamail.el
 
 (autoload 'metamail-interpret-header "metamail" "\
@@ -18037,8 +18061,8 @@ redisplayed as output is inserted.
 
 ;;;***
 
-;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21678 60839 913764
-;;;;;;  853000))
+;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from mh-e/mh-comp.el
 
 (autoload 'mh-smail "mh-comp" "\
@@ -18128,7 +18152,7 @@ delete the draft message.
 
 ;;;***
 
-;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21678 60839 917765 13000))
+;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from mh-e/mh-e.el
 (push (purecopy '(mh-e 8 6)) package--builtin-versions)
 
@@ -18145,8 +18169,8 @@ Display version information about MH-E and the MH mail 
handling system.
 
 ;;;***
 
-;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21678 60839
-;;;;;;  917765 13000))
+;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mh-e/mh-folder.el
 
 (autoload 'mh-rmail "mh-folder" "\
@@ -18227,10 +18251,24 @@ perform the operation on all messages in that region.
 
 ;;;***
 
-;;;### (autoloads nil "midnight" "midnight.el" (21678 60839 937765
-;;;;;;  817000))
+;;;### (autoloads nil "midnight" "midnight.el" (21822 58098 20521
+;;;;;;  61000))
 ;;; Generated autoloads from midnight.el
 
+(defvar midnight-mode nil "\
+Non-nil if Midnight mode is enabled.
+See the command `midnight-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `midnight-mode'.")
+
+(custom-autoload 'midnight-mode "midnight" nil)
+
+(autoload 'midnight-mode "midnight" "\
+Non-nil means run `midnight-hook' at midnight.
+
+\(fn &optional ARG)" t nil)
+
 (autoload 'clean-buffer-list "midnight" "\
 Kill old buffers that have not been displayed recently.
 The relevant variables are `clean-buffer-list-delay-general',
@@ -18254,8 +18292,8 @@ to its second argument TM.
 
 ;;;***
 
-;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21678 60839
-;;;;;;  937765 817000))
+;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from minibuf-eldef.el
 
 (defvar minibuffer-electric-default-mode nil "\
@@ -18284,7 +18322,7 @@ is modified to remove the default indication.
 
 ;;;***
 
-;;;### (autoloads nil "misc" "misc.el" (21678 60839 941765 977000))
+;;;### (autoloads nil "misc" "misc.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from misc.el
 
 (autoload 'butterfly "misc" "\
@@ -18312,8 +18350,7 @@ The return value is always nil.
 
 ;;;***
 
-;;;### (autoloads nil "misearch" "misearch.el" (21797 54705 52905
-;;;;;;  188000))
+;;;### (autoloads nil "misearch" "misearch.el" (21797 36 720489 297000))
 ;;; Generated autoloads from misearch.el
  (add-hook 'isearch-mode-hook 'multi-isearch-setup)
 
@@ -18401,8 +18438,8 @@ whose file names match the specified wildcard.
 
 ;;;***
 
-;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21678
-;;;;;;  60840 321781 190000))
+;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from progmodes/mixal-mode.el
 (push (purecopy '(mixal-mode 0 1)) package--builtin-versions)
 
@@ -18413,8 +18450,8 @@ Major mode for the mixal asm language.
 
 ;;;***
 
-;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21678 60839
-;;;;;;  697756 173000))
+;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from gnus/mm-encode.el
 
 (autoload 'mm-default-file-encoding "mm-encode" "\
@@ -18424,8 +18461,8 @@ Return a default encoding for FILE.
 
 ;;;***
 
-;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21678 60839
-;;;;;;  697756 173000))
+;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from gnus/mm-extern.el
 
 (autoload 'mm-extern-cache-contents "mm-extern" "\
@@ -18443,8 +18480,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing 
after replacing.
 
 ;;;***
 
-;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21678 60839
-;;;;;;  697756 173000))
+;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from gnus/mm-partial.el
 
 (autoload 'mm-inline-partial "mm-partial" "\
@@ -18457,8 +18494,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing 
after replacing.
 
 ;;;***
 
-;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21678 60839 697756
-;;;;;;  173000))
+;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from gnus/mm-url.el
 
 (autoload 'mm-url-insert-file-contents "mm-url" "\
@@ -18474,8 +18511,8 @@ Insert file contents of URL using `mm-url-program'.
 
 ;;;***
 
-;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21678 60839 697756
-;;;;;;  173000))
+;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from gnus/mm-uu.el
 
 (autoload 'mm-uu-dissect "mm-uu" "\
@@ -18494,7 +18531,7 @@ Assume text has been decoded if DECODED is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "mml" "gnus/mml.el" (21678 60839 701756 333000))
+;;;### (autoloads nil "mml" "gnus/mml.el" (21826 49866 790514 606000))
 ;;; Generated autoloads from gnus/mml.el
 
 (autoload 'mml-to-mime "mml" "\
@@ -18519,8 +18556,8 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21678 60839 701756
-;;;;;;  333000))
+;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from gnus/mml1991.el
 
 (autoload 'mml1991-encrypt "mml1991" "\
@@ -18535,8 +18572,8 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21678 60839 701756
-;;;;;;  333000))
+;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from gnus/mml2015.el
 
 (autoload 'mml2015-decrypt "mml2015" "\
@@ -18576,16 +18613,16 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21678 60839
-;;;;;;  349742 188000))
+;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from cedet/mode-local.el
 
 (put 'define-overloadable-function 'doc-string-elt 3)
 
 ;;;***
 
-;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21605 26937
-;;;;;;  524012 932000))
+;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21607 54478
+;;;;;;  800121 42000))
 ;;; Generated autoloads from progmodes/modula2.el
 
 (defalias 'modula-2-mode 'm2-mode)
@@ -18618,8 +18655,8 @@ followed by the first character of the construct.
 
 ;;;***
 
-;;;### (autoloads nil "morse" "play/morse.el" (21678 60840 209776
-;;;;;;  710000))
+;;;### (autoloads nil "morse" "play/morse.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/morse.el
 
 (autoload 'morse-region "morse" "\
@@ -18644,8 +18681,8 @@ Convert NATO phonetic alphabet in region to ordinary 
ASCII text.
 
 ;;;***
 
-;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21678 60839 949766
-;;;;;;  299000))
+;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from mouse-drag.el
 
 (autoload 'mouse-drag-throw "mouse-drag" "\
@@ -18692,7 +18729,7 @@ To test this function, evaluate:
 
 ;;;***
 
-;;;### (autoloads nil "mpc" "mpc.el" (21678 60839 953766 460000))
+;;;### (autoloads nil "mpc" "mpc.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from mpc.el
 
 (autoload 'mpc "mpc" "\
@@ -18702,7 +18739,7 @@ Main entry point for MPC.
 
 ;;;***
 
-;;;### (autoloads nil "mpuz" "play/mpuz.el" (21678 60840 209776 710000))
+;;;### (autoloads nil "mpuz" "play/mpuz.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from play/mpuz.el
 
 (autoload 'mpuz "mpuz" "\
@@ -18712,7 +18749,7 @@ Multiplication puzzle with GNU Emacs.
 
 ;;;***
 
-;;;### (autoloads nil "msb" "msb.el" (21678 60839 953766 460000))
+;;;### (autoloads nil "msb" "msb.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from msb.el
 
 (defvar msb-mode nil "\
@@ -18737,8 +18774,8 @@ different buffer menu using the function `msb'.
 
 ;;;***
 
-;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21678
-;;;;;;  60839 777759 387000))
+;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from international/mule-diag.el
 
 (autoload 'list-character-sets "mule-diag" "\
@@ -18870,8 +18907,8 @@ The default is 20.  If LIMIT is negative, do not limit 
the listing.
 
 ;;;***
 
-;;;### (autoloads nil "mule-util" "international/mule-util.el" (21678
-;;;;;;  60839 781759 548000))
+;;;### (autoloads nil "mule-util" "international/mule-util.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from international/mule-util.el
 
 (defsubst string-to-list (string) "\
@@ -19002,8 +19039,8 @@ per-character basis, this may not be accurate.
 
 ;;;***
 
-;;;### (autoloads nil "net-utils" "net/net-utils.el" (21706 14224
-;;;;;;  285958 900000))
+;;;### (autoloads nil "net-utils" "net/net-utils.el" (21826 50071
+;;;;;;  80489 638000))
 ;;; Generated autoloads from net/net-utils.el
 
 (autoload 'ifconfig "net-utils" "\
@@ -19097,8 +19134,8 @@ Open a network connection to HOST on PORT.
 
 ;;;***
 
-;;;### (autoloads nil "netrc" "net/netrc.el" (21678 60839 973767
-;;;;;;  264000))
+;;;### (autoloads nil "netrc" "net/netrc.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from net/netrc.el
 
 (autoload 'netrc-credentials "netrc" "\
@@ -19110,8 +19147,8 @@ listed in the PORTS list.
 
 ;;;***
 
-;;;### (autoloads nil "network-stream" "net/network-stream.el" (21718
-;;;;;;  7576 278960 757000))
+;;;### (autoloads nil "network-stream" "net/network-stream.el" (21716
+;;;;;;  41663 456033 27000))
 ;;; Generated autoloads from net/network-stream.el
 
 (autoload 'open-network-stream "network-stream" "\
@@ -19207,8 +19244,8 @@ asynchronously, if possible.
 
 ;;;***
 
-;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21678
-;;;;;;  60839 977767 424000))
+;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from net/newst-backend.el
 
 (autoload 'newsticker-running-p "newst-backend" "\
@@ -19230,7 +19267,7 @@ Run `newsticker-start-hook' if newsticker was not 
running already.
 ;;;***
 
 ;;;### (autoloads nil "newst-plainview" "net/newst-plainview.el"
-;;;;;;  (21678 60839 977767 424000))
+;;;;;;  (21670 32331 385639 720000))
 ;;; Generated autoloads from net/newst-plainview.el
 
 (autoload 'newsticker-plainview "newst-plainview" "\
@@ -19240,8 +19277,8 @@ Start newsticker plainview.
 
 ;;;***
 
-;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21678
-;;;;;;  60839 977767 424000))
+;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from net/newst-reader.el
 
 (autoload 'newsticker-show-news "newst-reader" "\
@@ -19251,8 +19288,8 @@ Start reading news.  You may want to bind this to a key.
 
 ;;;***
 
-;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21678
-;;;;;;  60839 977767 424000))
+;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from net/newst-ticker.el
 
 (autoload 'newsticker-ticker-running-p "newst-ticker" "\
@@ -19272,8 +19309,8 @@ running already.
 
 ;;;***
 
-;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21678
-;;;;;;  60839 981767 585000))
+;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from net/newst-treeview.el
 
 (autoload 'newsticker-treeview "newst-treeview" "\
@@ -19283,8 +19320,8 @@ Start newsticker treeview.
 
 ;;;***
 
-;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21678 60839 705756
-;;;;;;  494000))
+;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from gnus/nndiary.el
 
 (autoload 'nndiary-generate-nov-databases "nndiary" "\
@@ -19294,8 +19331,8 @@ Generate NOV databases in all nndiary directories.
 
 ;;;***
 
-;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21678 60839 705756
-;;;;;;  494000))
+;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from gnus/nndoc.el
 
 (autoload 'nndoc-add-type "nndoc" "\
@@ -19309,8 +19346,8 @@ symbol in the alist.
 
 ;;;***
 
-;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21678 60839
-;;;;;;  709756 654000))
+;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from gnus/nnfolder.el
 
 (autoload 'nnfolder-generate-active-file "nnfolder" "\
@@ -19321,7 +19358,7 @@ This command does not work if you use short group names.
 
 ;;;***
 
-;;;### (autoloads nil "nnml" "gnus/nnml.el" (21678 60839 717756 976000))
+;;;### (autoloads nil "nnml" "gnus/nnml.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from gnus/nnml.el
 
 (autoload 'nnml-generate-nov-databases "nnml" "\
@@ -19331,7 +19368,7 @@ Generate NOV databases in all nnml directories.
 
 ;;;***
 
-;;;### (autoloads nil "novice" "novice.el" (21678 60840 13768 869000))
+;;;### (autoloads nil "novice" "novice.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from novice.el
 
 (define-obsolete-variable-alias 'disabled-command-hook 
'disabled-command-function "22.1")
@@ -19363,8 +19400,8 @@ future sessions.
 
 ;;;***
 
-;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21678
-;;;;;;  60840 457786 630000))
+;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21670
+;;;;;;  32331 885635 586000))
 ;;; Generated autoloads from textmodes/nroff-mode.el
 
 (autoload 'nroff-mode "nroff-mode" "\
@@ -19378,14 +19415,14 @@ closing requests for requests that are used in 
matched pairs.
 
 ;;;***
 
-;;;### (autoloads nil "ntlm" "net/ntlm.el" (21678 60839 981767 585000))
+;;;### (autoloads nil "ntlm" "net/ntlm.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from net/ntlm.el
 (push (purecopy '(ntlm 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21678 60840
-;;;;;;  13768 869000))
+;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from nxml/nxml-glyph.el
 
 (autoload 'nxml-glyph-display-string "nxml-glyph" "\
@@ -19397,8 +19434,8 @@ Return nil if the face cannot display a glyph for N.
 
 ;;;***
 
-;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21678 60840
-;;;;;;  17769 29000))
+;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from nxml/nxml-mode.el
 
 (autoload 'nxml-mode "nxml-mode" "\
@@ -19458,8 +19495,8 @@ Many aspects this mode can be customized using
 
 ;;;***
 
-;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21678 60840
-;;;;;;  17769 29000))
+;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from nxml/nxml-uchnm.el
 
 (autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\
@@ -19471,8 +19508,8 @@ the variable `nxml-enabled-unicode-blocks'.
 
 ;;;***
 
-;;;### (autoloads nil "octave" "progmodes/octave.el" (21694 48017
-;;;;;;  610101 961000))
+;;;### (autoloads nil "octave" "progmodes/octave.el" (21695 35516
+;;;;;;  595262 313000))
 ;;; Generated autoloads from progmodes/octave.el
 
 (autoload 'octave-mode "octave" "\
@@ -19509,8 +19546,8 @@ startup file, `~/.emacs-octave'.
 
 ;;;***
 
-;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21678 60840
-;;;;;;  325781 350000))
+;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/opascal.el
 
 (define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4")
@@ -19545,7 +19582,7 @@ Coloring:
 
 ;;;***
 
-;;;### (autoloads nil "org" "org/org.el" (21804 3763 242436 828000))
+;;;### (autoloads nil "org" "org/org.el" (21814 9129 360494 26000))
 ;;; Generated autoloads from org/org.el
 
 (autoload 'org-babel-do-load-languages "org" "\
@@ -19766,8 +19803,8 @@ Call the customize function with org as argument.
 
 ;;;***
 
-;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21804 3763
-;;;;;;  222437 179000))
+;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from org/org-agenda.el
 
 (autoload 'org-toggle-sticky-agenda "org-agenda" "\
@@ -20040,8 +20077,8 @@ to override `appt-message-warning-time'.
 
 ;;;***
 
-;;;### (autoloads nil "org-capture" "org/org-capture.el" (21678 60840
-;;;;;;  117773 29000))
+;;;### (autoloads nil "org-capture" "org/org-capture.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from org/org-capture.el
 
 (autoload 'org-capture-string "org-capture" "\
@@ -20083,8 +20120,8 @@ Set `org-capture-templates' to be similar to 
`org-remember-templates'.
 
 ;;;***
 
-;;;### (autoloads nil "org-colview" "org/org-colview.el" (21804 3763
-;;;;;;  222437 179000))
+;;;### (autoloads nil "org-colview" "org/org-colview.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from org/org-colview.el
 
 (autoload 'org-columns-remove-overlays "org-colview" "\
@@ -20147,8 +20184,8 @@ Turn on or update column view in the agenda.
 
 ;;;***
 
-;;;### (autoloads nil "org-compat" "org/org-compat.el" (21678 60840
-;;;;;;  121773 189000))
+;;;### (autoloads nil "org-compat" "org/org-compat.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from org/org-compat.el
 
 (autoload 'org-check-version "org-compat" "\
@@ -20158,8 +20195,8 @@ Try very hard to provide sensible version strings.
 
 ;;;***
 
-;;;### (autoloads nil "org-macs" "org/org-macs.el" (21678 60840 137773
-;;;;;;  829000))
+;;;### (autoloads nil "org-macs" "org/org-macs.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from org/org-macs.el
 
 (autoload 'org-load-noerror-mustsuffix "org-macs" "\
@@ -20169,8 +20206,8 @@ Load FILE with optional arguments NOERROR and 
MUSTSUFFIX.  Drop the MUSTSUFFIX a
 
 ;;;***
 
-;;;### (autoloads nil "org-version" "org/org-version.el" (21605 26937
-;;;;;;  304017 159000))
+;;;### (autoloads nil "org-version" "org/org-version.el" (21607 54478
+;;;;;;  800121 42000))
 ;;; Generated autoloads from org/org-version.el
 
 (autoload 'org-release "org-version" "\
@@ -20187,8 +20224,8 @@ The Git version of org-mode.
 
 ;;;***
 
-;;;### (autoloads nil "outline" "outline.el" (21719 45321 591080
-;;;;;;  883000))
+;;;### (autoloads nil "outline" "outline.el" (21720 38720 956749
+;;;;;;  443000))
 ;;; Generated autoloads from outline.el
 (put 'outline-regexp 'safe-local-variable 'stringp)
 (put 'outline-heading-end-regexp 'safe-local-variable 'stringp)
@@ -20231,8 +20268,8 @@ See the command `outline-mode' for more information on 
this mode.
 
 ;;;***
 
-;;;### (autoloads nil "package" "emacs-lisp/package.el" (21803 61751
-;;;;;;  265341 801000))
+;;;### (autoloads nil "package" "emacs-lisp/package.el" (21826 49900
+;;;;;;  450489 321000))
 ;;; Generated autoloads from emacs-lisp/package.el
 (push (purecopy '(package 1 0 1)) package--builtin-versions)
 
@@ -20307,7 +20344,7 @@ The file can either be a tar file or an Emacs Lisp file.
 
 \(fn FILE)" t nil)
 
-(autoload 'package-install-user-selected-packages "package" "\
+(autoload 'package-install-selected-packages "package" "\
 Ensure packages in `package-selected-packages' are installed.
 If some packages are not installed propose to install them.
 
@@ -20346,7 +20383,7 @@ The list is displayed in a buffer named `*Packages*'.
 
 ;;;***
 
-;;;### (autoloads nil "paren" "paren.el" (21678 60840 193776 69000))
+;;;### (autoloads nil "paren" "paren.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from paren.el
 
 (defvar show-paren-mode nil "\
@@ -20372,8 +20409,8 @@ matching parenthesis is highlighted in 
`show-paren-style' after
 
 ;;;***
 
-;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21678
-;;;;;;  60839 321741 62000))
+;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from calendar/parse-time.el
 (put 'parse-time-rules 'risky-local-variable t)
 
@@ -20386,8 +20423,8 @@ unknown are returned as nil.
 
 ;;;***
 
-;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21678 60840
-;;;;;;  329781 510000))
+;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/pascal.el
 
 (autoload 'pascal-mode "pascal" "\
@@ -20436,8 +20473,8 @@ See also the user variables `pascal-type-keywords', 
`pascal-start-keywords' and
 
 ;;;***
 
-;;;### (autoloads nil "password-cache" "password-cache.el" (21678
-;;;;;;  60840 193776 69000))
+;;;### (autoloads nil "password-cache" "password-cache.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from password-cache.el
 
 (defvar password-cache t "\
@@ -20458,8 +20495,8 @@ Check if KEY is in the cache.
 
 ;;;***
 
-;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21804 3853 736850
-;;;;;;  365000))
+;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21804 59688
+;;;;;;  164807 902000))
 ;;; Generated autoloads from emacs-lisp/pcase.el
 
 (autoload 'pcase "pcase" "\
@@ -20554,8 +20591,8 @@ Define a pcase UPattern macro.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21678 60840 193776
-;;;;;;  69000))
+;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from pcmpl-cvs.el
 
 (autoload 'pcomplete/cvs "pcmpl-cvs" "\
@@ -20565,8 +20602,8 @@ Completion rules for the `cvs' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21678 60840 193776
-;;;;;;  69000))
+;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from pcmpl-gnu.el
 
 (autoload 'pcomplete/gzip "pcmpl-gnu" "\
@@ -20593,8 +20630,8 @@ Completion for the GNU tar utility.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21678 60840
-;;;;;;  193776 69000))
+;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from pcmpl-linux.el
 
 (autoload 'pcomplete/kill "pcmpl-linux" "\
@@ -20614,8 +20651,8 @@ Completion for GNU/Linux `mount'.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21678 60840 193776
-;;;;;;  69000))
+;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from pcmpl-rpm.el
 
 (autoload 'pcomplete/rpm "pcmpl-rpm" "\
@@ -20625,8 +20662,8 @@ Completion for the `rpm' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21790 46509 343608
-;;;;;;  375000))
+;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21791 47660 796747
+;;;;;;  422000))
 ;;; Generated autoloads from pcmpl-unix.el
 
 (autoload 'pcomplete/cd "pcmpl-unix" "\
@@ -20681,8 +20718,8 @@ Includes files as well as host names followed by a 
colon.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21678 60840 193776
-;;;;;;  69000))
+;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from pcmpl-x.el
 
 (autoload 'pcomplete/tlmgr "pcmpl-x" "\
@@ -20706,8 +20743,8 @@ Completion for the `ag' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcomplete" "pcomplete.el" (21804 3763 246436
-;;;;;;  758000))
+;;;### (autoloads nil "pcomplete" "pcomplete.el" (21688 62278 418203
+;;;;;;  119000))
 ;;; Generated autoloads from pcomplete.el
 
 (autoload 'pcomplete "pcomplete" "\
@@ -20764,7 +20801,7 @@ Setup `shell-mode' to use pcomplete.
 
 ;;;***
 
-;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21678 60840 533789 670000))
+;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from vc/pcvs.el
 
 (autoload 'cvs-checkout "pcvs" "\
@@ -20839,8 +20876,8 @@ The exact behavior is determined also by 
`cvs-dired-use-hook'." (when (stringp d
 
 ;;;***
 
-;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21678 60840
-;;;;;;  533789 670000))
+;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from vc/pcvs-defs.el
 
 (defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key 
m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help 
,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] 
`(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check 
out a module from the repository"))) (define-key m [update] `(menu-item 
,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from 
the repository"))) (define-key m [ex [...]
@@ -20848,8 +20885,8 @@ Global menu used by PCL-CVS.")
 
 ;;;***
 
-;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21678
-;;;;;;  60840 329781 510000))
+;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from progmodes/perl-mode.el
 (put 'perl-indent-level 'safe-local-variable 'integerp)
 (put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -20910,8 +20947,8 @@ Turning on Perl mode runs the normal hook 
`perl-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "picture" "textmodes/picture.el" (21678 60840
-;;;;;;  457786 630000))
+;;;### (autoloads nil "picture" "textmodes/picture.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from textmodes/picture.el
 
 (autoload 'picture-mode "picture" "\
@@ -20991,8 +21028,8 @@ they are not by default assigned to keys.
 
 ;;;***
 
-;;;### (autoloads nil "plstore" "gnus/plstore.el" (21785 63745 85575
-;;;;;;  501000))
+;;;### (autoloads nil "plstore" "gnus/plstore.el" (21786 29744 368212
+;;;;;;  633000))
 ;;; Generated autoloads from gnus/plstore.el
 
 (autoload 'plstore-open "plstore" "\
@@ -21007,8 +21044,8 @@ Major mode for editing PLSTORE files.
 
 ;;;***
 
-;;;### (autoloads nil "po" "textmodes/po.el" (21678 60840 457786
-;;;;;;  630000))
+;;;### (autoloads nil "po" "textmodes/po.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from textmodes/po.el
 
 (autoload 'po-find-file-coding-system "po" "\
@@ -21019,7 +21056,7 @@ Called through `file-coding-system-alist', before the 
file is visited for real.
 
 ;;;***
 
-;;;### (autoloads nil "pong" "play/pong.el" (21678 60840 209776 710000))
+;;;### (autoloads nil "pong" "play/pong.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from play/pong.el
 
 (autoload 'pong "pong" "\
@@ -21035,7 +21072,7 @@ pong-mode keybindings:\\<pong-mode-map>
 
 ;;;***
 
-;;;### (autoloads nil "pop3" "gnus/pop3.el" (21678 60839 725757 297000))
+;;;### (autoloads nil "pop3" "gnus/pop3.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from gnus/pop3.el
 
 (autoload 'pop3-movemail "pop3" "\
@@ -21046,8 +21083,8 @@ Use streaming commands.
 
 ;;;***
 
-;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21678 60839 485747
-;;;;;;  653000))
+;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emacs-lisp/pp.el
 
 (autoload 'pp-to-string "pp" "\
@@ -21097,8 +21134,8 @@ Ignores leading comment characters.
 
 ;;;***
 
-;;;### (autoloads nil "printing" "printing.el" (21678 60840 217777
-;;;;;;  30000))
+;;;### (autoloads nil "printing" "printing.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from printing.el
 (push (purecopy '(printing 6 9 3)) package--builtin-versions)
 
@@ -21686,7 +21723,7 @@ are both set to t.
 
 ;;;***
 
-;;;### (autoloads nil "proced" "proced.el" (21678 60840 217777 30000))
+;;;### (autoloads nil "proced" "proced.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from proced.el
 
 (autoload 'proced "proced" "\
@@ -21704,8 +21741,8 @@ Proced buffers.
 
 ;;;***
 
-;;;### (autoloads nil "profiler" "profiler.el" (21678 60840 217777
-;;;;;;  30000))
+;;;### (autoloads nil "profiler" "profiler.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from profiler.el
 
 (autoload 'profiler-start "profiler" "\
@@ -21733,8 +21770,8 @@ Open profile FILENAME.
 
 ;;;***
 
-;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21678 60840
-;;;;;;  329781 510000))
+;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/prolog.el
 
 (autoload 'prolog-mode "prolog" "\
@@ -21767,7 +21804,7 @@ With prefix argument ARG, restart the Prolog process if 
running before.
 
 ;;;***
 
-;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21678 60840 377783 430000))
+;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from ps-bdf.el
 
 (defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list 
(expand-file-name "fonts/bdf" installation-directory)) 
'("/usr/local/share/emacs/fonts/bdf")) "\
@@ -21778,8 +21815,8 @@ The default value is 
'(\"/usr/local/share/emacs/fonts/bdf\").")
 
 ;;;***
 
-;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21678 60840
-;;;;;;  333781 670000))
+;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/ps-mode.el
 (push (purecopy '(ps-mode 1 1 9)) package--builtin-versions)
 
@@ -21825,8 +21862,8 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when 
the cursor is at the number
 
 ;;;***
 
-;;;### (autoloads nil "ps-print" "ps-print.el" (21678 60840 385783
-;;;;;;  750000))
+;;;### (autoloads nil "ps-print" "ps-print.el" (21670 32624 385626
+;;;;;;  484000))
 ;;; Generated autoloads from ps-print.el
 (push (purecopy '(ps-print 7 3 5)) package--builtin-versions)
 
@@ -22023,15 +22060,15 @@ If EXTENSION is any other symbol, it is ignored.
 
 ;;;***
 
-;;;### (autoloads nil "pulse" "cedet/pulse.el" (21678 60839 349742
-;;;;;;  188000))
+;;;### (autoloads nil "pulse" "cedet/pulse.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from cedet/pulse.el
 (push (purecopy '(pulse 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "python" "progmodes/python.el" (21803 61751
-;;;;;;  297340 476000))
+;;;### (autoloads nil "python" "progmodes/python.el" (21826 300 630487
+;;;;;;  331000))
 ;;; Generated autoloads from progmodes/python.el
 (push (purecopy '(python 0 24 5)) package--builtin-versions)
 
@@ -22068,7 +22105,7 @@ Major mode for editing Python files.
 
 ;;;***
 
-;;;### (autoloads nil "qp" "gnus/qp.el" (21678 60839 725757 297000))
+;;;### (autoloads nil "qp" "gnus/qp.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from gnus/qp.el
 
 (autoload 'quoted-printable-decode-region "qp" "\
@@ -22087,8 +22124,8 @@ them into characters should be done separately.
 
 ;;;***
 
-;;;### (autoloads nil "quail" "international/quail.el" (21760 22311
-;;;;;;  618792 686000))
+;;;### (autoloads nil "quail" "international/quail.el" (21761 26543
+;;;;;;  734945 674000))
 ;;; Generated autoloads from international/quail.el
 
 (autoload 'quail-title "quail" "\
@@ -22319,7 +22356,7 @@ of each directory.
 ;;;***
 
 ;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (21770
-;;;;;;  15582 625546 353000))
+;;;;;;  41522 196747 399000))
 ;;; Generated autoloads from leim/quail/hangul.el
 
 (autoload 'hangul-input-method-activate "quail/hangul" "\
@@ -22332,7 +22369,7 @@ HELP-TEXT is a text set in 
`hangul-input-method-help-text'.
 ;;;***
 
 ;;;### (autoloads nil "quail/uni-input" "leim/quail/uni-input.el"
-;;;;;;  (21678 60839 861762 763000))
+;;;;;;  (21670 32331 385639 720000))
 ;;; Generated autoloads from leim/quail/uni-input.el
 
 (autoload 'ucs-input-activate "quail/uni-input" "\
@@ -22346,8 +22383,8 @@ While this input method is active, the variable
 
 ;;;***
 
-;;;### (autoloads nil "quickurl" "net/quickurl.el" (21678 60839 985767
-;;;;;;  746000))
+;;;### (autoloads nil "quickurl" "net/quickurl.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from net/quickurl.el
 
 (defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn 
(require 'quickurl) (add-hook 'local-write-file-hooks (lambda () 
(quickurl-read) nil)))\n;; End:\n" "\
@@ -22418,8 +22455,7 @@ Display `quickurl-list' as a formatted list using 
`quickurl-list-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "rcirc" "net/rcirc.el" (21799 25426 601363
-;;;;;;  687000))
+;;;### (autoloads nil "rcirc" "net/rcirc.el" (21826 300 570503 812000))
 ;;; Generated autoloads from net/rcirc.el
 
 (autoload 'rcirc "rcirc" "\
@@ -22457,8 +22493,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21678
-;;;;;;  60839 489747 814000))
+;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from emacs-lisp/re-builder.el
 
 (defalias 'regexp-builder 're-builder)
@@ -22476,8 +22512,8 @@ matching parts of the target buffer will be highlighted.
 
 ;;;***
 
-;;;### (autoloads nil "recentf" "recentf.el" (21678 60840 385783
-;;;;;;  750000))
+;;;### (autoloads nil "recentf" "recentf.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from recentf.el
 
 (defvar recentf-mode nil "\
@@ -22503,7 +22539,7 @@ were operated on recently.
 
 ;;;***
 
-;;;### (autoloads nil "rect" "rect.el" (21803 61751 301340 310000))
+;;;### (autoloads nil "rect" "rect.el" (21803 38823 44085 519000))
 ;;; Generated autoloads from rect.el
 
 (autoload 'delete-rectangle "rect" "\
@@ -22643,8 +22679,8 @@ Activates the region if needed.  Only lasts until the 
region is deactivated.
 
 ;;;***
 
-;;;### (autoloads nil "refill" "textmodes/refill.el" (21678 60840
-;;;;;;  461786 791000))
+;;;### (autoloads nil "refill" "textmodes/refill.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from textmodes/refill.el
 
 (autoload 'refill-mode "refill" "\
@@ -22664,8 +22700,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' 
instead.
 
 ;;;***
 
-;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21804 3763
-;;;;;;  270436 337000))
+;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21823 24169
+;;;;;;  100485 529000))
 ;;; Generated autoloads from textmodes/reftex.el
 (autoload 'reftex-citation "reftex-cite" nil t)
 (autoload 'reftex-all-document-files "reftex-parse")
@@ -22719,7 +22755,7 @@ This enforces rescanning the buffer on next use.
 ;;;***
 
 ;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (21743
-;;;;;;  12185 613417 151000))
+;;;;;;  190 195328 729000))
 ;;; Generated autoloads from textmodes/reftex-vars.el
 (put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) 
(symbolp x))))
 (put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) 
(symbolp x))))
@@ -22728,8 +22764,8 @@ This enforces rescanning the buffer on next use.
 
 ;;;***
 
-;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21678
-;;;;;;  60839 489747 814000))
+;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from emacs-lisp/regexp-opt.el
 
 (autoload 'regexp-opt "regexp-opt" "\
@@ -22758,15 +22794,15 @@ This means the number of non-shy regexp grouping 
constructs
 
 ;;;***
 
-;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21678 60839 489747
-;;;;;;  814000))
+;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emacs-lisp/regi.el
 (push (purecopy '(regi 1 8)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "remember" "textmodes/remember.el" (21678 60840
-;;;;;;  473787 271000))
+;;;### (autoloads nil "remember" "textmodes/remember.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from textmodes/remember.el
 (push (purecopy '(remember 2 0)) package--builtin-versions)
 
@@ -22820,7 +22856,7 @@ to turn the *scratch* buffer into your notes buffer.
 
 ;;;***
 
-;;;### (autoloads nil "repeat" "repeat.el" (21678 60840 389783 910000))
+;;;### (autoloads nil "repeat" "repeat.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from repeat.el
 (push (purecopy '(repeat 0 51)) package--builtin-versions)
 
@@ -22843,8 +22879,8 @@ recently executed command not bound to an input event\".
 
 ;;;***
 
-;;;### (autoloads nil "reporter" "mail/reporter.el" (21678 60839
-;;;;;;  873763 245000))
+;;;### (autoloads nil "reporter" "mail/reporter.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/reporter.el
 
 (autoload 'reporter-submit-bug-report "reporter" "\
@@ -22875,8 +22911,8 @@ mail-sending package is used for editing and sending 
the message.
 
 ;;;***
 
-;;;### (autoloads nil "reposition" "reposition.el" (21678 60840 389783
-;;;;;;  910000))
+;;;### (autoloads nil "reposition" "reposition.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from reposition.el
 
 (autoload 'reposition-window "reposition" "\
@@ -22902,7 +22938,7 @@ first comment line visible (if point is in a comment).
 
 ;;;***
 
-;;;### (autoloads nil "reveal" "reveal.el" (21678 60840 389783 910000))
+;;;### (autoloads nil "reveal" "reveal.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from reveal.el
 
 (autoload 'reveal-mode "reveal" "\
@@ -22937,8 +22973,8 @@ the mode if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21678 60839 489747
-;;;;;;  814000))
+;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emacs-lisp/ring.el
 
 (autoload 'ring-p "ring" "\
@@ -22953,8 +22989,8 @@ Make a ring that can contain SIZE elements.
 
 ;;;***
 
-;;;### (autoloads nil "rlogin" "net/rlogin.el" (21678 60839 985767
-;;;;;;  746000))
+;;;### (autoloads nil "rlogin" "net/rlogin.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from net/rlogin.el
 
 (autoload 'rlogin "rlogin" "\
@@ -22998,8 +23034,8 @@ variable.
 
 ;;;***
 
-;;;### (autoloads nil "rmail" "mail/rmail.el" (21797 54705 48905
-;;;;;;  274000))
+;;;### (autoloads nil "rmail" "mail/rmail.el" (21824 45139 490498
+;;;;;;  458000))
 ;;; Generated autoloads from mail/rmail.el
 
 (defvar rmail-file-name (purecopy "~/RMAIL") "\
@@ -23196,8 +23232,8 @@ Set PASSWORD to be used for retrieving mail from a POP 
or IMAP server.
 
 ;;;***
 
-;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21678 60839
-;;;;;;  885763 727000))
+;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/rmailout.el
 (put 'rmail-output-file-alist 'risky-local-variable t)
 
@@ -23261,8 +23297,8 @@ than appending to it.  Deletes the message after 
writing if
 
 ;;;***
 
-;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21678 60840
-;;;;;;  21769 189000))
+;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from nxml/rng-cmpct.el
 
 (autoload 'rng-c-load-schema "rng-cmpct" "\
@@ -23273,8 +23309,8 @@ Return a pattern.
 
 ;;;***
 
-;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21678 60840
-;;;;;;  21769 189000))
+;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from nxml/rng-nxml.el
 
 (autoload 'rng-nxml-mode-init "rng-nxml" "\
@@ -23286,8 +23322,8 @@ Validation will be enabled if 
`rng-nxml-auto-validate-flag' is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21678 60840
-;;;;;;  25769 349000))
+;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from nxml/rng-valid.el
 
 (autoload 'rng-validate-mode "rng-valid" "\
@@ -23317,8 +23353,8 @@ to use for finding the schema.
 
 ;;;***
 
-;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21678 60840 25769
-;;;;;;  349000))
+;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from nxml/rng-xsd.el
 
 (put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 
'rng-xsd-compile)
@@ -23345,8 +23381,8 @@ must be equal.
 
 ;;;***
 
-;;;### (autoloads nil "robin" "international/robin.el" (21605 26936
-;;;;;;  840026 71000))
+;;;### (autoloads nil "robin" "international/robin.el" (21824 5851
+;;;;;;  711914 99000))
 ;;; Generated autoloads from international/robin.el
 
 (autoload 'robin-define-package "robin" "\
@@ -23378,7 +23414,7 @@ Start using robin package NAME, which is a string.
 
 ;;;***
 
-;;;### (autoloads nil "rot13" "rot13.el" (21678 60840 393784 70000))
+;;;### (autoloads nil "rot13" "rot13.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from rot13.el
 
 (autoload 'rot13 "rot13" "\
@@ -23415,8 +23451,8 @@ Toggle the use of ROT13 encoding for the current window.
 
 ;;;***
 
-;;;### (autoloads nil "rst" "textmodes/rst.el" (21678 60840 477787
-;;;;;;  431000))
+;;;### (autoloads nil "rst" "textmodes/rst.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from textmodes/rst.el
  (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
 
@@ -23446,8 +23482,8 @@ for modes derived from Text mode, like Mail mode.
 
 ;;;***
 
-;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21772
-;;;;;;  3649 133589 283000))
+;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21814
+;;;;;;  9129 410518 16000))
 ;;; Generated autoloads from progmodes/ruby-mode.el
 (push (purecopy '(ruby-mode 1 2)) package--builtin-versions)
 
@@ -23464,8 +23500,8 @@ Major mode for editing Ruby code.
 
 ;;;***
 
-;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (21678 60840 393784
-;;;;;;  70000))
+;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from ruler-mode.el
 (push (purecopy '(ruler-mode 1 6)) package--builtin-versions)
 
@@ -23483,8 +23519,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21678 60839 489747
-;;;;;;  814000))
+;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21807 35879 352666
+;;;;;;  863000))
 ;;; Generated autoloads from emacs-lisp/rx.el
 
 (autoload 'rx-to-string "rx" "\
@@ -23592,20 +23628,20 @@ CHAR
      matches space and tab only.
 
 `graphic', `graph'
-     matches graphic characters--everything except ASCII control chars,
-     space, and DEL.
+     matches graphic characters--everything except whitespace, ASCII
+     and non-ASCII control characters, surrogates, and codepoints
+     unassigned by Unicode.
 
 `printing', `print'
-     matches printing characters--everything except ASCII control chars
-     and DEL.
+     matches whitespace and graphic characters.
 
 `alphanumeric', `alnum'
-     matches letters and digits.  (But at present, for multibyte characters,
-     it matches anything that has word syntax.)
+     matches alphabetic characters and digits.  (For multibyte characters,
+     it matches according to Unicode character properties.)
 
 `letter', `alphabetic', `alpha'
-     matches letters.  (But at present, for multibyte characters,
-     it matches anything that has word syntax.)
+     matches alphabetic characters.  (For multibyte characters,
+     it matches according to Unicode character properties.)
 
 `ascii'
      matches ASCII (unibyte) characters.
@@ -23795,15 +23831,15 @@ enclosed in `(and ...)'.
 
 ;;;***
 
-;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21678 60839
-;;;;;;  989767 907000))
+;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from net/sasl-ntlm.el
 (push (purecopy '(sasl 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "savehist" "savehist.el" (21678 60840 393784
-;;;;;;  70000))
+;;;### (autoloads nil "savehist" "savehist.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from savehist.el
 (push (purecopy '(savehist 24)) package--builtin-versions)
 
@@ -23835,8 +23871,30 @@ histories, which is probably undesirable.
 
 ;;;***
 
-;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21678 60840
-;;;;;;  337781 830000))
+;;;### (autoloads nil "saveplace" "saveplace.el" (21822 58098 20521
+;;;;;;  61000))
+;;; Generated autoloads from saveplace.el
+
+(defvar save-place-mode nil "\
+Non-nil if Save-Place mode is enabled.
+See the command `save-place-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `save-place-mode'.")
+
+(custom-autoload 'save-place-mode "saveplace" nil)
+
+(autoload 'save-place-mode "saveplace" "\
+Non-nil means automatically save place in each file.
+This means when you visit a file, point goes to the last place
+where it was when you previously visited the same file.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/scheme.el
 
 (autoload 'scheme-mode "scheme" "\
@@ -23875,8 +23933,8 @@ that variable's value is a string.
 
 ;;;***
 
-;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21678 60839
-;;;;;;  725757 297000))
+;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from gnus/score-mode.el
 
 (autoload 'gnus-score-mode "score-mode" "\
@@ -23889,8 +23947,8 @@ This mode is an extended emacs-lisp mode.
 
 ;;;***
 
-;;;### (autoloads nil "scroll-all" "scroll-all.el" (21678 60840 393784
-;;;;;;  70000))
+;;;### (autoloads nil "scroll-all" "scroll-all.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from scroll-all.el
 
 (defvar scroll-all-mode nil "\
@@ -23915,8 +23973,8 @@ one window apply to all visible windows in the same 
frame.
 
 ;;;***
 
-;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21678 60840
-;;;;;;  393784 70000))
+;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from scroll-lock.el
 
 (autoload 'scroll-lock-mode "scroll-lock" "\
@@ -23932,16 +23990,16 @@ vertically fixed relative to window boundaries during 
scrolling.
 
 ;;;***
 
-;;;### (autoloads nil "secrets" "net/secrets.el" (21799 25450 636876
-;;;;;;  627000))
+;;;### (autoloads nil "secrets" "net/secrets.el" (21824 44973 380509
+;;;;;;  24000))
 ;;; Generated autoloads from net/secrets.el
 (when (featurep 'dbusbind)
  (autoload 'secrets-show-secrets "secrets" nil t))
 
 ;;;***
 
-;;;### (autoloads nil "semantic" "cedet/semantic.el" (21678 60854
-;;;;;;  970348 529000))
+;;;### (autoloads nil "semantic" "cedet/semantic.el" (21679 47292
+;;;;;;  556033 759000))
 ;;; Generated autoloads from cedet/semantic.el
 (push (purecopy '(semantic 2 2)) package--builtin-versions)
 
@@ -23999,7 +24057,7 @@ Semantic mode.
 ;;;***
 
 ;;;### (autoloads nil "semantic/bovine/grammar" 
"cedet/semantic/bovine/grammar.el"
-;;;;;;  (21678 60839 357742 509000))
+;;;;;;  (21670 32330 885624 725000))
 ;;; Generated autoloads from cedet/semantic/bovine/grammar.el
 
 (autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\
@@ -24010,7 +24068,7 @@ Major mode for editing Bovine grammars.
 ;;;***
 
 ;;;### (autoloads nil "semantic/wisent/grammar" 
"cedet/semantic/wisent/grammar.el"
-;;;;;;  (21678 60839 393743 956000))
+;;;;;;  (21670 32330 885624 725000))
 ;;; Generated autoloads from cedet/semantic/wisent/grammar.el
 
 (autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\
@@ -24020,8 +24078,8 @@ Major mode for editing Wisent grammars.
 
 ;;;***
 
-;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21785 52256
-;;;;;;  612012 760000))
+;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21786 29744
+;;;;;;  368212 633000))
 ;;; Generated autoloads from mail/sendmail.el
 
 (defvar mail-from-style 'default "\
@@ -24302,14 +24360,14 @@ Like `mail' command, but display mail buffer in 
another frame.
 
 ;;;***
 
-;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (21778 45004 713399
-;;;;;;  126000))
+;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (21822 58098 20521
+;;;;;;  61000))
 ;;; Generated autoloads from emacs-lisp/seq.el
-(push (purecopy '(seq 1 3)) package--builtin-versions)
+(push (purecopy '(seq 1 5)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "server" "server.el" (21744 29479 720733 839000))
+;;;### (autoloads nil "server" "server.el" (21818 36774 564783 146000))
 ;;; Generated autoloads from server.el
 
 (put 'server-host 'risky-local-variable t)
@@ -24376,7 +24434,7 @@ only these files will be asked to be saved.
 
 ;;;***
 
-;;;### (autoloads nil "ses" "ses.el" (21804 4012 686064 51000))
+;;;### (autoloads nil "ses" "ses.el" (21804 59688 264800 604000))
 ;;; Generated autoloads from ses.el
 
 (autoload 'ses-mode "ses" "\
@@ -24421,7 +24479,7 @@ formula:
 ;;;***
 
 ;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21804
-;;;;;;  4012 698063 841000))
+;;;;;;  59688 284811 0))
 ;;; Generated autoloads from textmodes/sgml-mode.el
 
 (autoload 'sgml-mode "sgml-mode" "\
@@ -24486,8 +24544,8 @@ To work around that, do:
 
 ;;;***
 
-;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21706
-;;;;;;  14224 297957 474000))
+;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21814
+;;;;;;  9129 410518 16000))
 ;;; Generated autoloads from progmodes/sh-script.el
 (push (purecopy '(sh-script 2 0 6)) package--builtin-versions)
 (put 'sh-shell 'safe-local-variable 'symbolp)
@@ -24550,8 +24608,8 @@ with your script for an edit-interpret-debug cycle.
 
 ;;;***
 
-;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21678 60839
-;;;;;;  489747 814000))
+;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emacs-lisp/shadow.el
 
 (autoload 'list-load-path-shadows "shadow" "\
@@ -24600,8 +24658,8 @@ function, `load-path-shadows-find'.
 
 ;;;***
 
-;;;### (autoloads nil "shadowfile" "shadowfile.el" (21678 60840 401784
-;;;;;;  390000))
+;;;### (autoloads nil "shadowfile" "shadowfile.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from shadowfile.el
 
 (autoload 'shadow-define-cluster "shadowfile" "\
@@ -24639,7 +24697,7 @@ Set up file shadowing.
 
 ;;;***
 
-;;;### (autoloads nil "shell" "shell.el" (21678 60840 401784 390000))
+;;;### (autoloads nil "shell" "shell.el" (21678 26426 225333 737000))
 ;;; Generated autoloads from shell.el
 
 (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
@@ -24687,7 +24745,7 @@ Otherwise, one argument `-i' is passed to the shell.
 
 ;;;***
 
-;;;### (autoloads nil "shr" "net/shr.el" (21756 63737 910472 761000))
+;;;### (autoloads nil "shr" "net/shr.el" (21826 49834 1206 441000))
 ;;; Generated autoloads from net/shr.el
 
 (autoload 'shr-render-region "shr" "\
@@ -24704,8 +24762,8 @@ DOM should be a parse tree as generated by
 
 ;;;***
 
-;;;### (autoloads nil "sieve" "gnus/sieve.el" (21678 60839 729757
-;;;;;;  458000))
+;;;### (autoloads nil "sieve" "gnus/sieve.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from gnus/sieve.el
 
 (autoload 'sieve-manage "sieve" "\
@@ -24730,8 +24788,8 @@ DOM should be a parse tree as generated by
 
 ;;;***
 
-;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21678 60839
-;;;;;;  729757 458000))
+;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from gnus/sieve-mode.el
 
 (autoload 'sieve-mode "sieve-mode" "\
@@ -24746,8 +24804,8 @@ Turning on Sieve mode runs `sieve-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "simula" "progmodes/simula.el" (21678 60840
-;;;;;;  345782 150000))
+;;;### (autoloads nil "simula" "progmodes/simula.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from progmodes/simula.el
 
 (autoload 'simula-mode "simula" "\
@@ -24795,8 +24853,8 @@ with no arguments, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "skeleton" "skeleton.el" (21678 60840 409784
-;;;;;;  710000))
+;;;### (autoloads nil "skeleton" "skeleton.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from skeleton.el
 
 (defvar skeleton-filter-function 'identity "\
@@ -24914,8 +24972,8 @@ symmetrical ones, and the same character twice for the 
others.
 
 ;;;***
 
-;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21678 60840
-;;;;;;  537789 831000))
+;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from vc/smerge-mode.el
 
 (autoload 'smerge-ediff "smerge-mode" "\
@@ -24942,8 +25000,8 @@ If no conflict maker is found, turn off `smerge-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "smiley" "gnus/smiley.el" (21678 60839 729757
-;;;;;;  458000))
+;;;### (autoloads nil "smiley" "gnus/smiley.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from gnus/smiley.el
 
 (autoload 'smiley-region "smiley" "\
@@ -24960,8 +25018,8 @@ interactively.  If there's no argument, do it at the 
current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21678 60839
-;;;;;;  889763 888000))
+;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/smtpmail.el
 
 (autoload 'smtpmail-send-it "smtpmail" "\
@@ -24976,8 +25034,8 @@ Send mail that was queued as a result of setting 
`smtpmail-queue-mail'.
 
 ;;;***
 
-;;;### (autoloads nil "snake" "play/snake.el" (21678 60840 209776
-;;;;;;  710000))
+;;;### (autoloads nil "snake" "play/snake.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/snake.el
 
 (autoload 'snake "snake" "\
@@ -25000,8 +25058,8 @@ Snake mode keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21678 60839
-;;;;;;  989767 907000))
+;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from net/snmp-mode.el
 
 (autoload 'snmp-mode "snmp-mode" "\
@@ -25030,8 +25088,8 @@ then `snmpv2-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "solar" "calendar/solar.el" (21735 24088 384215
-;;;;;;  80000))
+;;;### (autoloads nil "solar" "calendar/solar.el" (21735 6077 666769
+;;;;;;  364000))
 ;;; Generated autoloads from calendar/solar.el
 
 (autoload 'sunrise-sunset "solar" "\
@@ -25046,8 +25104,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "solitaire" "play/solitaire.el" (21678 60840
-;;;;;;  209776 710000))
+;;;### (autoloads nil "solitaire" "play/solitaire.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from play/solitaire.el
 
 (autoload 'solitaire "solitaire" "\
@@ -25122,7 +25180,7 @@ Pick your favorite shortcuts:
 
 ;;;***
 
-;;;### (autoloads nil "sort" "sort.el" (21678 60840 409784 710000))
+;;;### (autoloads nil "sort" "sort.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from sort.el
 (put 'sort-fold-case 'safe-local-variable 'booleanp)
 
@@ -25297,7 +25355,7 @@ is non-nil, it also prints a message describing the 
number of deletions.
 
 ;;;***
 
-;;;### (autoloads nil "spam" "gnus/spam.el" (21678 60839 733757 619000))
+;;;### (autoloads nil "spam" "gnus/spam.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from gnus/spam.el
 
 (autoload 'spam-initialize "spam" "\
@@ -25311,8 +25369,8 @@ installed through `spam-necessary-extra-headers'.
 
 ;;;***
 
-;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21678
-;;;;;;  60839 729757 458000))
+;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from gnus/spam-report.el
 
 (autoload 'spam-report-process-queue "spam-report" "\
@@ -25354,8 +25412,8 @@ Spam reports will be queued with the method used when
 
 ;;;***
 
-;;;### (autoloads nil "speedbar" "speedbar.el" (21678 60840 413784
-;;;;;;  870000))
+;;;### (autoloads nil "speedbar" "speedbar.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from speedbar.el
 
 (defalias 'speedbar 'speedbar-frame-mode)
@@ -25379,8 +25437,8 @@ selected.  If the speedbar frame is active, then select 
the attached frame.
 
 ;;;***
 
-;;;### (autoloads nil "spook" "play/spook.el" (21678 60840 209776
-;;;;;;  710000))
+;;;### (autoloads nil "spook" "play/spook.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/spook.el
 
 (autoload 'spook "spook" "\
@@ -25395,8 +25453,8 @@ Return a vector containing the lines from 
`spook-phrases-file'.
 
 ;;;***
 
-;;;### (autoloads nil "sql" "progmodes/sql.el" (21765 52461 396136
-;;;;;;  269000))
+;;;### (autoloads nil "sql" "progmodes/sql.el" (21765 23600 805241
+;;;;;;  145000))
 ;;; Generated autoloads from progmodes/sql.el
 (push (purecopy '(sql 3 5)) package--builtin-versions)
 
@@ -25862,15 +25920,15 @@ Run vsql as an inferior process.
 
 ;;;***
 
-;;;### (autoloads nil "srecode" "cedet/srecode.el" (21678 60839 393743
-;;;;;;  956000))
+;;;### (autoloads nil "srecode" "cedet/srecode.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from cedet/srecode.el
 (push (purecopy '(srecode 1 2)) package--builtin-versions)
 
 ;;;***
 
 ;;;### (autoloads nil "srecode/srt-mode" "cedet/srecode/srt-mode.el"
-;;;;;;  (21678 60839 401744 277000))
+;;;;;;  (21670 32330 885624 725000))
 ;;; Generated autoloads from cedet/srecode/srt-mode.el
 
 (autoload 'srecode-template-mode "srecode/srt-mode" "\
@@ -25882,8 +25940,8 @@ Major-mode for writing SRecode macros.
 
 ;;;***
 
-;;;### (autoloads nil "starttls" "gnus/starttls.el" (21678 60839
-;;;;;;  733757 619000))
+;;;### (autoloads nil "starttls" "gnus/starttls.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from gnus/starttls.el
 
 (autoload 'starttls-open-stream "starttls" "\
@@ -25906,8 +25964,8 @@ GnuTLS requires a port number.
 
 ;;;***
 
-;;;### (autoloads nil "strokes" "strokes.el" (21678 60840 417785
-;;;;;;  31000))
+;;;### (autoloads nil "strokes" "strokes.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from strokes.el
 
 (autoload 'strokes-global-set-stroke "strokes" "\
@@ -26020,8 +26078,8 @@ Read a complex stroke and insert its glyph into the 
current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "studly" "play/studly.el" (21605 26937 380015
-;;;;;;  699000))
+;;;### (autoloads nil "studly" "play/studly.el" (21607 54478 800121
+;;;;;;  42000))
 ;;; Generated autoloads from play/studly.el
 
 (autoload 'studlify-region "studly" "\
@@ -26041,8 +26099,8 @@ Studlify-case the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "subword" "progmodes/subword.el" (21678 60840
-;;;;;;  349782 310000))
+;;;### (autoloads nil "subword" "progmodes/subword.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from progmodes/subword.el
 
 (define-obsolete-function-alias 'capitalized-words-mode 'subword-mode "25.1")
@@ -26134,8 +26192,8 @@ See `superword-mode' for more information on Superword 
mode.
 
 ;;;***
 
-;;;### (autoloads nil "supercite" "mail/supercite.el" (21678 60839
-;;;;;;  889763 888000))
+;;;### (autoloads nil "supercite" "mail/supercite.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/supercite.el
 
 (autoload 'sc-cite-original "supercite" "\
@@ -26167,8 +26225,8 @@ and `sc-post-hook' is run after the guts of this 
function.
 
 ;;;***
 
-;;;### (autoloads nil "t-mouse" "t-mouse.el" (21678 60840 421785
-;;;;;;  191000))
+;;;### (autoloads nil "t-mouse" "t-mouse.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from t-mouse.el
 
 (define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
@@ -26196,7 +26254,7 @@ It relies on the `gpm' daemon being activated.
 
 ;;;***
 
-;;;### (autoloads nil "tabify" "tabify.el" (21678 60840 421785 191000))
+;;;### (autoloads nil "tabify" "tabify.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from tabify.el
 
 (autoload 'untabify "tabify" "\
@@ -26225,31 +26283,10 @@ The variable `tab-width' controls the spacing of tab 
stops.
 
 ;;;***
 
-;;;### (autoloads nil "table" "textmodes/table.el" (21804 4012 706063
-;;;;;;  701000))
+;;;### (autoloads nil "table" "textmodes/table.el" (21804 59688 284811
+;;;;;;  0))
 ;;; Generated autoloads from textmodes/table.el
 
-(defvar table-cell-map-hook nil "\
-Normal hooks run when finishing construction of `table-cell-map'.
-User can modify `table-cell-map' by adding custom functions here.")
-
-(custom-autoload 'table-cell-map-hook "table" t)
-
-(defvar table-load-hook nil "\
-List of functions to be called after the table is first loaded.")
-
-(custom-autoload 'table-load-hook "table" t)
-
-(defvar table-point-entered-cell-hook nil "\
-List of functions to be called after point entered a table cell.")
-
-(custom-autoload 'table-point-entered-cell-hook "table" t)
-
-(defvar table-point-left-cell-hook nil "\
-List of functions to be called after point left a table cell.")
-
-(custom-autoload 'table-point-left-cell-hook "table" t)
-
 (autoload 'table-insert "table" "\
 Insert an editable text table.
 Insert a table of specified number of COLUMNS and ROWS.  Optional
@@ -26818,7 +26855,7 @@ converts a table into plain text without frames.  It is 
a companion to
 
 ;;;***
 
-;;;### (autoloads nil "talk" "talk.el" (21678 60840 421785 191000))
+;;;### (autoloads nil "talk" "talk.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from talk.el
 
 (autoload 'talk-connect "talk" "\
@@ -26833,8 +26870,8 @@ Connect to the Emacs talk group from the current X 
display or tty frame.
 
 ;;;***
 
-;;;### (autoloads nil "tar-mode" "tar-mode.el" (21706 14224 305956
-;;;;;;  524000))
+;;;### (autoloads nil "tar-mode" "tar-mode.el" (21704 50495 455324
+;;;;;;  752000))
 ;;; Generated autoloads from tar-mode.el
 
 (autoload 'tar-mode "tar-mode" "\
@@ -26857,8 +26894,8 @@ See also: variables `tar-update-datestamp' and 
`tar-anal-blocksize'.
 
 ;;;***
 
-;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21678 60840 349782
-;;;;;;  310000))
+;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from progmodes/tcl.el
 
 (autoload 'tcl-mode "tcl" "\
@@ -26906,8 +26943,8 @@ Prefix argument means invert sense of 
`tcl-use-smart-word-finder'.
 
 ;;;***
 
-;;;### (autoloads nil "telnet" "net/telnet.el" (21678 60839 993768
-;;;;;;  67000))
+;;;### (autoloads nil "telnet" "net/telnet.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from net/telnet.el
 
 (autoload 'telnet "telnet" "\
@@ -26932,7 +26969,7 @@ Normally input is edited in Emacs and sent a line at a 
time.
 
 ;;;***
 
-;;;### (autoloads nil "term" "term.el" (21798 37736 247770 610000))
+;;;### (autoloads nil "term" "term.el" (21798 49947 262665 54000))
 ;;; Generated autoloads from term.el
 
 (autoload 'make-term "term" "\
@@ -26974,8 +27011,8 @@ use in that buffer.
 
 ;;;***
 
-;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21678
-;;;;;;  60839 497748 135000))
+;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from emacs-lisp/testcover.el
 
 (autoload 'testcover-this-defun "testcover" "\
@@ -26985,8 +27022,8 @@ Start coverage on function under point.
 
 ;;;***
 
-;;;### (autoloads nil "tetris" "play/tetris.el" (21678 60840 209776
-;;;;;;  710000))
+;;;### (autoloads nil "tetris" "play/tetris.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from play/tetris.el
 (push (purecopy '(tetris 2 1)) package--builtin-versions)
 
@@ -27011,8 +27048,8 @@ tetris-mode keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21678 60840
-;;;;;;  485787 751000))
+;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21822 3243
+;;;;;;  760493 958000))
 ;;; Generated autoloads from textmodes/tex-mode.el
 
 (defvar tex-shell-file-name nil "\
@@ -27313,8 +27350,8 @@ Major mode to edit DocTeX files.
 
 ;;;***
 
-;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21678 60840
-;;;;;;  489787 911000))
+;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from textmodes/texinfmt.el
 
 (autoload 'texinfo-format-buffer "texinfmt" "\
@@ -27353,8 +27390,8 @@ if large.  You can use `Info-split' to do this manually.
 
 ;;;***
 
-;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21678 60840
-;;;;;;  489787 911000))
+;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from textmodes/texinfo.el
 
 (defvar texinfo-open-quote (purecopy "``") "\
@@ -27438,8 +27475,8 @@ value of `texinfo-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "thai-util" "language/thai-util.el" (21678
-;;;;;;  60839 817760 994000))
+;;;### (autoloads nil "thai-util" "language/thai-util.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from language/thai-util.el
 
 (autoload 'thai-compose-region "thai-util" "\
@@ -27466,8 +27503,8 @@ Compose Thai characters in the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "thingatpt" "thingatpt.el" (21678 60840 493788
-;;;;;;  71000))
+;;;### (autoloads nil "thingatpt" "thingatpt.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from thingatpt.el
 
 (autoload 'forward-thing "thingatpt" "\
@@ -27531,7 +27568,7 @@ Return the Lisp list at point, or nil if none is found.
 
 ;;;***
 
-;;;### (autoloads nil "thumbs" "thumbs.el" (21678 60840 493788 71000))
+;;;### (autoloads nil "thumbs" "thumbs.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from thumbs.el
 
 (autoload 'thumbs-find-thumb "thumbs" "\
@@ -27565,8 +27602,8 @@ In dired, call the setroot program on the image at 
point.
 
 ;;;***
 
-;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21678
-;;;;;;  60839 817760 994000))
+;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from language/tibet-util.el
 
 (autoload 'tibetan-char-p "tibet-util" "\
@@ -27639,8 +27676,8 @@ See also docstring of the function 
tibetan-compose-region.
 
 ;;;***
 
-;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21694 48017
-;;;;;;  622101 735000))
+;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21695 35516
+;;;;;;  595262 313000))
 ;;; Generated autoloads from textmodes/tildify.el
 (push (purecopy '(tildify 4 6 1)) package--builtin-versions)
 
@@ -27706,7 +27743,7 @@ variable will be set to the representation.
 
 ;;;***
 
-;;;### (autoloads nil "time" "time.el" (21678 60840 493788 71000))
+;;;### (autoloads nil "time" "time.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from time.el
 
 (defvar display-time-day-and-date nil "\
@@ -27768,8 +27805,8 @@ Return a string giving the duration of the Emacs 
initialization.
 
 ;;;***
 
-;;;### (autoloads nil "time-date" "calendar/time-date.el" (21678
-;;;;;;  60839 321741 62000))
+;;;### (autoloads nil "time-date" "calendar/time-date.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from calendar/time-date.el
 
 (autoload 'date-to-time "time-date" "\
@@ -27872,8 +27909,8 @@ Convert the time interval in seconds to a short string.
 
 ;;;***
 
-;;;### (autoloads nil "time-stamp" "time-stamp.el" (21678 60840 493788
-;;;;;;  71000))
+;;;### (autoloads nil "time-stamp" "time-stamp.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from time-stamp.el
 (put 'time-stamp-format 'safe-local-variable 'stringp)
 (put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p)
@@ -27913,8 +27950,8 @@ With ARG, turn time stamping on if and only if arg is 
positive.
 
 ;;;***
 
-;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21678
-;;;;;;  60839 321741 62000))
+;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from calendar/timeclock.el
 (push (purecopy '(timeclock 2 6 1)) package--builtin-versions)
 
@@ -28024,7 +28061,7 @@ relative only to the time worked today, and not to past 
time.
 ;;;***
 
 ;;;### (autoloads nil "titdic-cnv" "international/titdic-cnv.el"
-;;;;;;  (21678 60839 785759 709000))
+;;;;;;  (21670 32331 385639 720000))
 ;;; Generated autoloads from international/titdic-cnv.el
 
 (autoload 'titdic-convert "titdic-cnv" "\
@@ -28046,7 +28083,7 @@ To get complete usage, invoke \"emacs -batch -f 
batch-titdic-convert -h\".
 
 ;;;***
 
-;;;### (autoloads nil "tmm" "tmm.el" (21678 60840 497788 230000))
+;;;### (autoloads nil "tmm" "tmm.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from tmm.el
  (define-key global-map "\M-`" 'tmm-menubar)
  (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -28088,8 +28125,8 @@ Its value should be an event that has a binding in MENU.
 
 ;;;***
 
-;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21756
-;;;;;;  63737 814475 170000))
+;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21814
+;;;;;;  9129 220497 835000))
 ;;; Generated autoloads from calendar/todo-mode.el
 
 (autoload 'todo-show "todo-mode" "\
@@ -28156,8 +28193,8 @@ Mode for displaying and reprioritizing top priority 
Todo.
 
 ;;;***
 
-;;;### (autoloads nil "tool-bar" "tool-bar.el" (21678 60840 497788
-;;;;;;  230000))
+;;;### (autoloads nil "tool-bar" "tool-bar.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from tool-bar.el
 
 (autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\
@@ -28227,8 +28264,8 @@ holds a keymap.
 
 ;;;***
 
-;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21678 60839 497748
-;;;;;;  135000))
+;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emacs-lisp/tq.el
 
 (autoload 'tq-create "tq" "\
@@ -28241,8 +28278,8 @@ to a tcp server on another machine.
 
 ;;;***
 
-;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21741 17831
-;;;;;;  261102 632000))
+;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emacs-lisp/trace.el
 
 (defvar trace-buffer "*trace-output*" "\
@@ -28287,8 +28324,8 @@ the output buffer or changing the window configuration.
 
 ;;;***
 
-;;;### (autoloads nil "tramp" "net/tramp.el" (21765 52461 392136
-;;;;;;  351000))
+;;;### (autoloads nil "tramp" "net/tramp.el" (21766 44463 655319
+;;;;;;  936000))
 ;;; Generated autoloads from net/tramp.el
 
 (defvar tramp-mode t "\
@@ -28403,8 +28440,8 @@ Discard Tramp from loading remote files.
 
 ;;;***
 
-;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21678 60839
-;;;;;;  997768 228000))
+;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from net/tramp-ftp.el
 
 (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\
@@ -28414,8 +28451,8 @@ Discard Tramp from loading remote files.
 
 ;;;***
 
-;;;### (autoloads nil "tutorial" "tutorial.el" (21678 60840 497788
-;;;;;;  230000))
+;;;### (autoloads nil "tutorial" "tutorial.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from tutorial.el
 
 (autoload 'help-with-tutorial "tutorial" "\
@@ -28439,8 +28476,8 @@ resumed later.
 
 ;;;***
 
-;;;### (autoloads nil "tv-util" "language/tv-util.el" (21605 26936
-;;;;;;  888025 150000))
+;;;### (autoloads nil "tv-util" "language/tv-util.el" (21607 54478
+;;;;;;  300138 641000))
 ;;; Generated autoloads from language/tv-util.el
 
 (autoload 'tai-viet-composition-function "tv-util" "\
@@ -28450,8 +28487,8 @@ resumed later.
 
 ;;;***
 
-;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21678
-;;;;;;  60840 493788 71000))
+;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21670
+;;;;;;  32331 885635 586000))
 ;;; Generated autoloads from textmodes/two-column.el
  (autoload '2C-command "two-column" () t 'keymap)
  (global-set-key "\C-x6" '2C-command)
@@ -28498,8 +28535,8 @@ First column's text    sSs  Second column's text
 
 ;;;***
 
-;;;### (autoloads nil "type-break" "type-break.el" (21678 60840 497788
-;;;;;;  230000))
+;;;### (autoloads nil "type-break" "type-break.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from type-break.el
 
 (defvar type-break-mode nil "\
@@ -28631,7 +28668,7 @@ FRAC should be the inverse of the fractional value; for 
example, a value of
 
 ;;;***
 
-;;;### (autoloads nil "uce" "mail/uce.el" (21678 60839 889763 888000))
+;;;### (autoloads nil "uce" "mail/uce.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from mail/uce.el
 
 (autoload 'uce-reply-to-uce "uce" "\
@@ -28645,7 +28682,7 @@ You might need to set `uce-mail-reader' before using 
this.
 ;;;***
 
 ;;;### (autoloads nil "ucs-normalize" "international/ucs-normalize.el"
-;;;;;;  (21678 60839 785759 709000))
+;;;;;;  (21670 32331 385639 720000))
 ;;; Generated autoloads from international/ucs-normalize.el
 
 (autoload 'ucs-normalize-NFD-region "ucs-normalize" "\
@@ -28710,8 +28747,8 @@ Normalize the string STR by the Unicode NFC and Mac 
OS's HFS Plus.
 
 ;;;***
 
-;;;### (autoloads nil "underline" "textmodes/underline.el" (21678
-;;;;;;  60840 493788 71000))
+;;;### (autoloads nil "underline" "textmodes/underline.el" (21670
+;;;;;;  32331 885635 586000))
 ;;; Generated autoloads from textmodes/underline.el
 
 (autoload 'underline-region "underline" "\
@@ -28731,8 +28768,8 @@ which specify the range to operate on.
 
 ;;;***
 
-;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21678 60839 893764
-;;;;;;  49000))
+;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from mail/unrmail.el
 
 (autoload 'batch-unrmail "unrmail" "\
@@ -28752,8 +28789,8 @@ The variable `unrmail-mbox-format' controls which mbox 
format to use.
 
 ;;;***
 
-;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21678 60839
-;;;;;;  497748 135000))
+;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21670 32330
+;;;;;;  885624 725000))
 ;;; Generated autoloads from emacs-lisp/unsafep.el
 
 (autoload 'unsafep "unsafep" "\
@@ -28765,7 +28802,7 @@ UNSAFEP-VARS is a list of symbols with local bindings.
 
 ;;;***
 
-;;;### (autoloads nil "url" "url/url.el" (21678 60840 513788 871000))
+;;;### (autoloads nil "url" "url/url.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from url/url.el
 
 (autoload 'url-retrieve "url" "\
@@ -28812,8 +28849,8 @@ no further processing).  URL is either a string or a 
parsed URL.
 
 ;;;***
 
-;;;### (autoloads nil "url-auth" "url/url-auth.el" (21678 60840 501788
-;;;;;;  391000))
+;;;### (autoloads nil "url-auth" "url/url-auth.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-auth.el
 
 (autoload 'url-get-authentication "url-auth" "\
@@ -28854,8 +28891,8 @@ RATING   a rating between 1 and 10 of the strength of 
the authentication.
 
 ;;;***
 
-;;;### (autoloads nil "url-cache" "url/url-cache.el" (21678 60840
-;;;;;;  501788 391000))
+;;;### (autoloads nil "url-cache" "url/url-cache.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from url/url-cache.el
 
 (autoload 'url-store-in-cache "url-cache" "\
@@ -28876,8 +28913,8 @@ Extract FNAM from the local disk cache.
 
 ;;;***
 
-;;;### (autoloads nil "url-cid" "url/url-cid.el" (21678 60840 501788
-;;;;;;  391000))
+;;;### (autoloads nil "url-cid" "url/url-cid.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-cid.el
 
 (autoload 'url-cid "url-cid" "\
@@ -28887,8 +28924,8 @@ Extract FNAM from the local disk cache.
 
 ;;;***
 
-;;;### (autoloads nil "url-dav" "url/url-dav.el" (21697 290 540850
-;;;;;;  262000))
+;;;### (autoloads nil "url-dav" "url/url-dav.el" (21696 56380 925320
+;;;;;;  624000))
 ;;; Generated autoloads from url/url-dav.el
 
 (autoload 'url-dav-supported-p "url-dav" "\
@@ -28922,8 +28959,8 @@ added to this list, so most requests can just pass in 
nil.
 
 ;;;***
 
-;;;### (autoloads nil "url-file" "url/url-file.el" (21678 60840 505788
-;;;;;;  551000))
+;;;### (autoloads nil "url-file" "url/url-file.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-file.el
 
 (autoload 'url-file "url-file" "\
@@ -28933,8 +28970,8 @@ Handle file: and ftp: URLs.
 
 ;;;***
 
-;;;### (autoloads nil "url-gw" "url/url-gw.el" (21678 60840 505788
-;;;;;;  551000))
+;;;### (autoloads nil "url-gw" "url/url-gw.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-gw.el
 
 (autoload 'url-gateway-nslookup-host "url-gw" "\
@@ -28955,8 +28992,8 @@ overriding the value of `url-gateway-method'.
 
 ;;;***
 
-;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21765
-;;;;;;  52463 696089 51000))
+;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21766
+;;;;;;  44463 655319 936000))
 ;;; Generated autoloads from url/url-handlers.el
 
 (defvar url-handler-mode nil "\
@@ -29010,8 +29047,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-http" "url/url-http.el" (21678 60840 509788
-;;;;;;  711000))
+;;;### (autoloads nil "url-http" "url/url-http.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-http.el
  (autoload 'url-default-expander "url-expand")
 
@@ -29023,8 +29060,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-irc" "url/url-irc.el" (21678 60840 509788
-;;;;;;  711000))
+;;;### (autoloads nil "url-irc" "url/url-irc.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-irc.el
 
 (autoload 'url-irc "url-irc" "\
@@ -29034,8 +29071,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21678 60840 509788
-;;;;;;  711000))
+;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-ldap.el
 
 (autoload 'url-ldap "url-ldap" "\
@@ -29048,8 +29085,8 @@ URL can be a URL string, or a URL vector of the type 
returned by
 
 ;;;***
 
-;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21678 60840
-;;;;;;  509788 711000))
+;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from url/url-mailto.el
 
 (autoload 'url-mail "url-mailto" "\
@@ -29064,8 +29101,8 @@ Handle the mailto: URL syntax.
 
 ;;;***
 
-;;;### (autoloads nil "url-misc" "url/url-misc.el" (21678 60840 509788
-;;;;;;  711000))
+;;;### (autoloads nil "url-misc" "url/url-misc.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-misc.el
 
 (autoload 'url-man "url-misc" "\
@@ -29096,8 +29133,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-news" "url/url-news.el" (21678 60840 509788
-;;;;;;  711000))
+;;;### (autoloads nil "url-news" "url/url-news.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-news.el
 
 (autoload 'url-news "url-news" "\
@@ -29112,8 +29149,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-ns" "url/url-ns.el" (21678 60840 509788
-;;;;;;  711000))
+;;;### (autoloads nil "url-ns" "url/url-ns.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-ns.el
 
 (autoload 'isPlainHostName "url-ns" "\
@@ -29153,8 +29190,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-parse" "url/url-parse.el" (21678 60840
-;;;;;;  509788 711000))
+;;;### (autoloads nil "url-parse" "url/url-parse.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from url/url-parse.el
 
 (autoload 'url-recreate-url "url-parse" "\
@@ -29205,8 +29242,8 @@ parses to
 
 ;;;***
 
-;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21678 60840
-;;;;;;  509788 711000))
+;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from url/url-privacy.el
 
 (autoload 'url-setup-privacy-info "url-privacy" "\
@@ -29216,8 +29253,8 @@ Setup variables that expose info about you and your 
system.
 
 ;;;***
 
-;;;### (autoloads nil "url-queue" "url/url-queue.el" (21678 60840
-;;;;;;  509788 711000))
+;;;### (autoloads nil "url-queue" "url/url-queue.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from url/url-queue.el
 
 (autoload 'url-queue-retrieve "url-queue" "\
@@ -29231,8 +29268,8 @@ The variable `url-queue-timeout' sets a timeout.
 
 ;;;***
 
-;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21678 60840
-;;;;;;  509788 711000))
+;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from url/url-tramp.el
 
 (defvar url-tramp-protocols '("ftp" "ssh" "scp" "rsync" "telnet") "\
@@ -29250,8 +29287,8 @@ would have been passed to OPERATION.
 
 ;;;***
 
-;;;### (autoloads nil "url-util" "url/url-util.el" (21678 60840 513788
-;;;;;;  871000))
+;;;### (autoloads nil "url-util" "url/url-util.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from url/url-util.el
 
 (defvar url-debug nil "\
@@ -29419,8 +29456,8 @@ This uses `url-current-object', set locally to the 
buffer.
 
 ;;;***
 
-;;;### (autoloads nil "userlock" "userlock.el" (21678 60840 513788
-;;;;;;  871000))
+;;;### (autoloads nil "userlock" "userlock.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from userlock.el
 
 (autoload 'ask-user-about-lock "userlock" "\
@@ -29448,8 +29485,8 @@ The buffer in question is current when this function is 
called.
 
 ;;;***
 
-;;;### (autoloads nil "utf-7" "international/utf-7.el" (21678 60839
-;;;;;;  785759 709000))
+;;;### (autoloads nil "utf-7" "international/utf-7.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from international/utf-7.el
 
 (autoload 'utf-7-post-read-conversion "utf-7" "\
@@ -29474,7 +29511,7 @@ The buffer in question is current when this function is 
called.
 
 ;;;***
 
-;;;### (autoloads nil "utf7" "gnus/utf7.el" (21678 60839 733757 619000))
+;;;### (autoloads nil "utf7" "gnus/utf7.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from gnus/utf7.el
 
 (autoload 'utf7-encode "utf7" "\
@@ -29484,8 +29521,8 @@ Encode UTF-7 STRING.  Use IMAP modification if FOR-IMAP 
is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21678 60839
-;;;;;;  893764 49000))
+;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21670 32331
+;;;;;;  385639 720000))
 ;;; Generated autoloads from mail/uudecode.el
 
 (autoload 'uudecode-decode-region-external "uudecode" "\
@@ -29509,7 +29546,7 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
 
 ;;;***
 
-;;;### (autoloads nil "vc" "vc/vc.el" (21756 63738 30469 750000))
+;;;### (autoloads nil "vc" "vc/vc.el" (21748 18111 534605 274000))
 ;;; Generated autoloads from vc/vc.el
 
 (defvar vc-checkout-hook nil "\
@@ -29806,8 +29843,8 @@ Return the branch part of a revision number REV.
 
 ;;;***
 
-;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21678 60840
-;;;;;;  537789 831000))
+;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21670 32331
+;;;;;;  885635 586000))
 ;;; Generated autoloads from vc/vc-annotate.el
 
 (autoload 'vc-annotate "vc-annotate" "\
@@ -29846,8 +29883,8 @@ should be applied to the background or to the 
foreground.
 
 ;;;***
 
-;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21743 64718 144093
-;;;;;;  773000))
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21826 49705 100508
+;;;;;;  896000))
 ;;; Generated autoloads from vc/vc-bzr.el
 
 (defconst vc-bzr-admin-dirname ".bzr" "\
@@ -29863,8 +29900,8 @@ Name of the format file in a .bzr directory.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21743 64718 148093
-;;;;;;  697000))
+;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21826 49707 480493
+;;;;;;  554000))
 ;;; Generated autoloads from vc/vc-cvs.el
 (defun vc-cvs-registered (f)
   "Return non-nil if file F is registered with CVS."
@@ -29875,8 +29912,8 @@ Name of the format file in a .bzr directory.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21694 48017 622101
-;;;;;;  735000))
+;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21694 14651 747488
+;;;;;;  989000))
 ;;; Generated autoloads from vc/vc-dir.el
 
 (autoload 'vc-dir "vc-dir" "\
@@ -29900,8 +29937,8 @@ These are the commands available for use in the file 
status buffer:
 
 ;;;***
 
-;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21803
-;;;;;;  61751 309339 979000))
+;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21800
+;;;;;;  62631 12543 671000))
 ;;; Generated autoloads from vc/vc-dispatcher.el
 
 (autoload 'vc-do-command "vc-dispatcher" "\
@@ -29924,8 +29961,8 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21743 64718 148093
-;;;;;;  697000))
+;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21826 49709 140509
+;;;;;;  237000))
 ;;; Generated autoloads from vc/vc-git.el
  (defun vc-git-registered (file)
   "Return non-nil if FILE is registered with git."
@@ -29936,7 +29973,7 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21743 64718 148093 697000))
+;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21826 49710 734782 20000))
 ;;; Generated autoloads from vc/vc-hg.el
  (defun vc-hg-registered (file)
   "Return non-nil if FILE is registered with hg."
@@ -29947,8 +29984,8 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21743 64718 148093
-;;;;;;  697000))
+;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21826 49712 314797
+;;;;;;  780000))
 ;;; Generated autoloads from vc/vc-mtn.el
 
 (defconst vc-mtn-admin-dir "_MTN" "\
@@ -29964,8 +30001,8 @@ Name of the monotone directory's format file.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21756 63738 26469
-;;;;;;  850000))
+;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21826 49714 91236
+;;;;;;  252000))
 ;;; Generated autoloads from vc/vc-rcs.el
 
 (defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) 
"\
@@ -29978,8 +30015,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21756 63738 26469
-;;;;;;  850000))
+;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21748 18111 534605
+;;;;;;  274000))
 ;;; Generated autoloads from vc/vc-sccs.el
 
 (defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" 
vc-sccs-search-project-dir)) "\
@@ -29997,8 +30034,8 @@ find any project directory." (let ((project-dir (getenv 
"PROJECTDIR")) dirs dir)
 
 ;;;***
 
-;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21756 63738 26469
-;;;;;;  850000))
+;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21748 18111 534605
+;;;;;;  274000))
 ;;; Generated autoloads from vc/vc-src.el
 
 (defvar vc-src-master-templates (purecopy '("%s.src/%s,v")) "\
@@ -30011,8 +30048,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21743 64718 148093
-;;;;;;  697000))
+;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21744 21055 525326
+;;;;;;  515000))
 ;;; Generated autoloads from vc/vc-svn.el
  (defun vc-svn-registered (f)
   (let ((admin-dir (cond ((and (eq system-type 'windows-nt)
@@ -30025,8 +30062,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21678
-;;;;;;  60840 349782 310000))
+;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21670
+;;;;;;  32331 885635 586000))
 ;;; Generated autoloads from progmodes/vera-mode.el
 (push (purecopy '(vera-mode 2 28)) package--builtin-versions)
  (add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'")  'vera-mode))
@@ -30085,7 +30122,7 @@ Key bindings:
 ;;;***
 
 ;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el"
-;;;;;;  (21737 7371 369619 402000))
+;;;;;;  (21735 54828 874639 640000))
 ;;; Generated autoloads from progmodes/verilog-mode.el
 
 (autoload 'verilog-mode "verilog-mode" "\
@@ -30225,7 +30262,7 @@ Key bindings specific to `verilog-mode-map' are:
 ;;;***
 
 ;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (21799
-;;;;;;  14913 220433 536000))
+;;;;;;  41767 71224 187000))
 ;;; Generated autoloads from progmodes/vhdl-mode.el
 
 (autoload 'vhdl-mode "vhdl-mode" "\
@@ -30779,8 +30816,8 @@ Key bindings:
 
 ;;;***
 
-;;;### (autoloads nil "viet-util" "language/viet-util.el" (21678
-;;;;;;  60839 821761 156000))
+;;;### (autoloads nil "viet-util" "language/viet-util.el" (21670
+;;;;;;  32331 385639 720000))
 ;;; Generated autoloads from language/viet-util.el
 
 (autoload 'viet-encode-viscii-char "viet-util" "\
@@ -30824,7 +30861,7 @@ Convert Vietnamese characters of the current buffer to 
`VIQR' mnemonics.
 
 ;;;***
 
-;;;### (autoloads nil "view" "view.el" (21678 60840 553790 471000))
+;;;### (autoloads nil "view" "view.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from view.el
 
 (defvar view-remove-frame-by-deleting t "\
@@ -31080,8 +31117,8 @@ Exit View mode and make the current buffer editable.
 
 ;;;***
 
-;;;### (autoloads nil "viper" "emulation/viper.el" (21678 60839 513748
-;;;;;;  778000))
+;;;### (autoloads nil "viper" "emulation/viper.el" (21670 32330 885624
+;;;;;;  725000))
 ;;; Generated autoloads from emulation/viper.el
 (push (purecopy '(viper 3 14 1)) package--builtin-versions)
 
@@ -31098,8 +31135,8 @@ Turn on Viper emulation of Vi in Emacs. See Info node 
`(viper)Top'.
 
 ;;;***
 
-;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21678
-;;;;;;  60839 497748 135000))
+;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21670
+;;;;;;  32330 885624 725000))
 ;;; Generated autoloads from emacs-lisp/warnings.el
 
 (defvar warning-prefix-function nil "\
@@ -31189,7 +31226,7 @@ this is equivalent to `display-warning', using
 
 ;;;***
 
-;;;### (autoloads nil "wdired" "wdired.el" (21678 60840 553790 471000))
+;;;### (autoloads nil "wdired" "wdired.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from wdired.el
 (push (purecopy '(wdired 2 0)) package--builtin-versions)
 
@@ -31207,8 +31244,8 @@ See `wdired-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "webjump" "net/webjump.el" (21678 60840 9768
-;;;;;;  710000))
+;;;### (autoloads nil "webjump" "net/webjump.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from net/webjump.el
 
 (autoload 'webjump "webjump" "\
@@ -31224,8 +31261,8 @@ Please submit bug reports and other feedback to the 
author, Neil W. Van Dyke
 
 ;;;***
 
-;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21678
-;;;;;;  60840 377783 430000))
+;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21670
+;;;;;;  32331 885635 586000))
 ;;; Generated autoloads from progmodes/which-func.el
  (put 'which-func-format 'risky-local-variable t)
  (put 'which-func-current 'risky-local-variable t)
@@ -31255,8 +31292,8 @@ in certain major modes.
 
 ;;;***
 
-;;;### (autoloads nil "whitespace" "whitespace.el" (21678 60840 557790
-;;;;;;  631000))
+;;;### (autoloads nil "whitespace" "whitespace.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from whitespace.el
 (push (purecopy '(whitespace 13 2 2)) package--builtin-versions)
 
@@ -31624,8 +31661,8 @@ cleaning up these problems.
 
 ;;;***
 
-;;;### (autoloads nil "wid-browse" "wid-browse.el" (21678 60840 557790
-;;;;;;  631000))
+;;;### (autoloads nil "wid-browse" "wid-browse.el" (21670 32331 885635
+;;;;;;  586000))
 ;;; Generated autoloads from wid-browse.el
 
 (autoload 'widget-browse-at "wid-browse" "\
@@ -31653,8 +31690,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "wid-edit" "wid-edit.el" (21678 60840 561790
-;;;;;;  791000))
+;;;### (autoloads nil "wid-edit" "wid-edit.el" (21816 50862 20497
+;;;;;;  333000))
 ;;; Generated autoloads from wid-edit.el
 
 (autoload 'widgetp "wid-edit" "\
@@ -31696,8 +31733,8 @@ Setup current buffer so editing string widgets works.
 
 ;;;***
 
-;;;### (autoloads nil "windmove" "windmove.el" (21733 15494 362925
-;;;;;;  968000))
+;;;### (autoloads nil "windmove" "windmove.el" (21733 50750 334730
+;;;;;;  5000))
 ;;; Generated autoloads from windmove.el
 
 (autoload 'windmove-left "windmove" "\
@@ -31749,7 +31786,7 @@ Default MODIFIER is 'shift.
 
 ;;;***
 
-;;;### (autoloads nil "winner" "winner.el" (21733 15494 362925 968000))
+;;;### (autoloads nil "winner" "winner.el" (21733 50750 334730 5000))
 ;;; Generated autoloads from winner.el
 
 (defvar winner-mode nil "\
@@ -31772,7 +31809,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG 
is `toggle'.
 
 ;;;***
 
-;;;### (autoloads nil "woman" "woman.el" (21678 60840 573791 271000))
+;;;### (autoloads nil "woman" "woman.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from woman.el
 (push (purecopy '(woman 0 551)) package--builtin-versions)
 
@@ -31821,7 +31858,7 @@ Default bookmark handler for Woman buffers.
 
 ;;;***
 
-;;;### (autoloads nil "xml" "xml.el" (21678 60840 573791 271000))
+;;;### (autoloads nil "xml" "xml.el" (21670 32331 885635 586000))
 ;;; Generated autoloads from xml.el
 
 (autoload 'xml-parse-file "xml" "\
@@ -31877,8 +31914,8 @@ Both features can be combined by providing a cons cell
 
 ;;;***
 
-;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21678 60840 29769
-;;;;;;  509000))
+;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21670 32331 385639
+;;;;;;  720000))
 ;;; Generated autoloads from nxml/xmltok.el
 
 (autoload 'xmltok-get-declared-encoding-position "xmltok" "\
@@ -31896,8 +31933,8 @@ If LIMIT is non-nil, then do not consider characters 
beyond LIMIT.
 
 ;;;***
 
-;;;### (autoloads nil "xref" "progmodes/xref.el" (21738 45410 880804
-;;;;;;  179000))
+;;;### (autoloads nil "xref" "progmodes/xref.el" (21826 300 640488
+;;;;;;  815000))
 ;;; Generated autoloads from progmodes/xref.el
 
 (autoload 'xref-pop-marker-stack "xref" "\
@@ -31946,8 +31983,8 @@ The argument has the same meaning as in `apropos'.
 
 ;;;***
 
-;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21779 25618 200348
-;;;;;;  730000))
+;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21779 56495 106033
+;;;;;;  935000))
 ;;; Generated autoloads from xt-mouse.el
 
 (defvar xterm-mouse-mode nil "\
@@ -31976,7 +32013,7 @@ down the SHIFT key while pressing the mouse button.
 
 ;;;***
 
-;;;### (autoloads nil "yenc" "gnus/yenc.el" (21678 60839 733757 619000))
+;;;### (autoloads nil "yenc" "gnus/yenc.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from gnus/yenc.el
 
 (autoload 'yenc-decode-region "yenc" "\
@@ -31991,7 +32028,7 @@ Extract file name from an yenc header.
 
 ;;;***
 
-;;;### (autoloads nil "zone" "play/zone.el" (21678 60840 213776 870000))
+;;;### (autoloads nil "zone" "play/zone.el" (21670 32331 385639 720000))
 ;;; Generated autoloads from play/zone.el
 
 (autoload 'zone "zone" "\
@@ -32037,11 +32074,9 @@ Zone out, completely.
 ;;;;;;  "cedet/ede/system.el" "cedet/ede/util.el" "cedet/semantic/analyze.el"
 ;;;;;;  "cedet/semantic/analyze/complete.el" "cedet/semantic/analyze/debug.el"
 ;;;;;;  "cedet/semantic/analyze/fcn.el" "cedet/semantic/analyze/refs.el"
-;;;;;;  "cedet/semantic/bovine.el" "cedet/semantic/bovine/c-by.el"
-;;;;;;  "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el"
+;;;;;;  "cedet/semantic/bovine.el" "cedet/semantic/bovine/c.el" 
"cedet/semantic/bovine/debug.el"
 ;;;;;;  "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el"
-;;;;;;  "cedet/semantic/bovine/make-by.el" "cedet/semantic/bovine/make.el"
-;;;;;;  "cedet/semantic/bovine/scm-by.el" "cedet/semantic/bovine/scm.el"
+;;;;;;  "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm.el"
 ;;;;;;  "cedet/semantic/chart.el" "cedet/semantic/complete.el" 
"cedet/semantic/ctxt.el"
 ;;;;;;  "cedet/semantic/db-debug.el" "cedet/semantic/db-ebrowse.el"
 ;;;;;;  "cedet/semantic/db-el.el" "cedet/semantic/db-file.el" 
"cedet/semantic/db-find.el"
@@ -32064,23 +32099,21 @@ Zone out, completely.
 ;;;;;;  "cedet/semantic/tag.el" "cedet/semantic/texi.el" 
"cedet/semantic/util-modes.el"
 ;;;;;;  "cedet/semantic/util.el" "cedet/semantic/wisent.el" 
"cedet/semantic/wisent/comp.el"
 ;;;;;;  "cedet/semantic/wisent/java-tags.el" 
"cedet/semantic/wisent/javascript.el"
-;;;;;;  "cedet/semantic/wisent/javat-wy.el" "cedet/semantic/wisent/js-wy.el"
-;;;;;;  "cedet/semantic/wisent/python-wy.el" "cedet/semantic/wisent/python.el"
-;;;;;;  "cedet/semantic/wisent/wisent.el" "cedet/srecode/args.el"
-;;;;;;  "cedet/srecode/compile.el" "cedet/srecode/cpp.el" 
"cedet/srecode/ctxt.el"
-;;;;;;  "cedet/srecode/dictionary.el" "cedet/srecode/document.el"
+;;;;;;  "cedet/semantic/wisent/python.el" "cedet/semantic/wisent/wisent.el"
+;;;;;;  "cedet/srecode/args.el" "cedet/srecode/compile.el" 
"cedet/srecode/cpp.el"
+;;;;;;  "cedet/srecode/ctxt.el" "cedet/srecode/dictionary.el" 
"cedet/srecode/document.el"
 ;;;;;;  "cedet/srecode/el.el" "cedet/srecode/expandproto.el" 
"cedet/srecode/extract.el"
 ;;;;;;  "cedet/srecode/fields.el" "cedet/srecode/filters.el" 
"cedet/srecode/find.el"
 ;;;;;;  "cedet/srecode/getset.el" "cedet/srecode/insert.el" 
"cedet/srecode/java.el"
 ;;;;;;  "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" 
"cedet/srecode/mode.el"
-;;;;;;  "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" 
"cedet/srecode/srt.el"
-;;;;;;  "cedet/srecode/table.el" "cedet/srecode/template.el" 
"cedet/srecode/texi.el"
-;;;;;;  "cus-dep.el" "cus-load.el" "dframe.el" "dired-aux.el" "dired-x.el"
-;;;;;;  "dom.el" "dos-fns.el" "dos-vars.el" "dos-w32.el" "dynamic-setting.el"
-;;;;;;  "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" 
"emacs-lisp/byte-opt.el"
-;;;;;;  "emacs-lisp/cl-extra.el" "emacs-lisp/cl-generic.el" 
"emacs-lisp/cl-loaddefs.el"
-;;;;;;  "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el"
-;;;;;;  "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-compat.el" 
"emacs-lisp/eieio-custom.el"
+;;;;;;  "cedet/srecode/semantic.el" "cedet/srecode/srt.el" 
"cedet/srecode/table.el"
+;;;;;;  "cedet/srecode/template.el" "cedet/srecode/texi.el" "cus-dep.el"
+;;;;;;  "dframe.el" "dired-aux.el" "dired-x.el" "dom.el" "dos-fns.el"
+;;;;;;  "dos-vars.el" "dos-w32.el" "dynamic-setting.el" 
"emacs-lisp/avl-tree.el"
+;;;;;;  "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" 
"emacs-lisp/cl-extra.el"
+;;;;;;  "emacs-lisp/cl-generic.el" "emacs-lisp/cl-loaddefs.el" 
"emacs-lisp/cl-macs.el"
+;;;;;;  "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el"
+;;;;;;  "emacs-lisp/eieio-compat.el" "emacs-lisp/eieio-custom.el"
 ;;;;;;  "emacs-lisp/eieio-datadebug.el" "emacs-lisp/eieio-opt.el"
 ;;;;;;  "emacs-lisp/eieio-speedbar.el" "emacs-lisp/generator.el"
 ;;;;;;  "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" "emacs-lisp/smie.el"
@@ -32099,66 +32132,51 @@ Zone out, completely.
 ;;;;;;  "eshell/esh-arg.el" "eshell/esh-cmd.el" "eshell/esh-ext.el"
 ;;;;;;  "eshell/esh-groups.el" "eshell/esh-io.el" "eshell/esh-module.el"
 ;;;;;;  "eshell/esh-opt.el" "eshell/esh-proc.el" "eshell/esh-util.el"
-;;;;;;  "eshell/esh-var.el" "ezimage.el" "finder-inf.el" "format-spec.el"
-;;;;;;  "fringe.el" "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el"
-;;;;;;  "gnus/gnus-bcklg.el" "gnus/gnus-cite.el" "gnus/gnus-cloud.el"
-;;;;;;  "gnus/gnus-cus.el" "gnus/gnus-demon.el" "gnus/gnus-dup.el"
-;;;;;;  "gnus/gnus-eform.el" "gnus/gnus-ems.el" "gnus/gnus-icalendar.el"
-;;;;;;  "gnus/gnus-int.el" "gnus/gnus-logic.el" "gnus/gnus-mh.el"
-;;;;;;  "gnus/gnus-salt.el" "gnus/gnus-score.el" "gnus/gnus-srvr.el"
-;;;;;;  "gnus/gnus-topic.el" "gnus/gnus-undo.el" "gnus/gnus-util.el"
-;;;;;;  "gnus/gnus-uu.el" "gnus/gnus-vm.el" "gnus/gssapi.el" 
"gnus/ietf-drums.el"
-;;;;;;  "gnus/legacy-gnus-agent.el" "gnus/mail-parse.el" "gnus/mail-prsvr.el"
-;;;;;;  "gnus/mail-source.el" "gnus/mailcap.el" "gnus/messcompat.el"
-;;;;;;  "gnus/mm-archive.el" "gnus/mm-bodies.el" "gnus/mm-decode.el"
-;;;;;;  "gnus/mm-util.el" "gnus/mm-view.el" "gnus/mml-sec.el" 
"gnus/mml-smime.el"
-;;;;;;  "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndir.el" "gnus/nndraft.el"
-;;;;;;  "gnus/nneething.el" "gnus/nngateway.el" "gnus/nnheader.el"
-;;;;;;  "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnmail.el" "gnus/nnmaildir.el"
-;;;;;;  "gnus/nnmairix.el" "gnus/nnmbox.el" "gnus/nnmh.el" "gnus/nnnil.el"
-;;;;;;  "gnus/nnoo.el" "gnus/nnregistry.el" "gnus/nnrss.el" "gnus/nnspool.el"
-;;;;;;  "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.el" "gnus/registry.el"
-;;;;;;  "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" "gnus/rfc2231.el"
-;;;;;;  "gnus/rtree.el" "gnus/sieve-manage.el" "gnus/smime.el" 
"gnus/spam-stat.el"
-;;;;;;  "gnus/spam-wash.el" "hex-util.el" "hfy-cmap.el" "ibuf-ext.el"
-;;;;;;  "international/cp51932.el" "international/eucjp-ms.el" 
"international/fontset.el"
-;;;;;;  "international/iso-ascii.el" "international/ja-dic-cnv.el"
-;;;;;;  "international/ja-dic-utl.el" "international/ogonek.el" 
"international/uni-bidi.el"
-;;;;;;  "international/uni-brackets.el" "international/uni-category.el"
-;;;;;;  "international/uni-combining.el" "international/uni-comment.el"
-;;;;;;  "international/uni-decimal.el" "international/uni-decomposition.el"
-;;;;;;  "international/uni-digit.el" "international/uni-lowercase.el"
-;;;;;;  "international/uni-mirrored.el" "international/uni-name.el"
-;;;;;;  "international/uni-numeric.el" "international/uni-old-name.el"
-;;;;;;  "international/uni-titlecase.el" "international/uni-uppercase.el"
-;;;;;;  "kermit.el" "language/hanja-util.el" "language/thai-word.el"
-;;;;;;  "ldefs-boot.el" "leim/ja-dic/ja-dic.el" "leim/quail/4Corner.el"
-;;;;;;  "leim/quail/ARRAY30.el" "leim/quail/CCDOSPY.el" 
"leim/quail/CTLau-b5.el"
-;;;;;;  "leim/quail/CTLau.el" "leim/quail/ECDICT.el" "leim/quail/ETZY.el"
-;;;;;;  "leim/quail/PY-b5.el" "leim/quail/PY.el" "leim/quail/Punct-b5.el"
-;;;;;;  "leim/quail/Punct.el" "leim/quail/QJ-b5.el" "leim/quail/QJ.el"
-;;;;;;  "leim/quail/SW.el" "leim/quail/TONEPY.el" "leim/quail/ZIRANMA.el"
-;;;;;;  "leim/quail/ZOZY.el" "leim/quail/arabic.el" "leim/quail/croatian.el"
-;;;;;;  "leim/quail/cyril-jis.el" "leim/quail/cyrillic.el" 
"leim/quail/czech.el"
-;;;;;;  "leim/quail/ethiopic.el" "leim/quail/georgian.el" "leim/quail/greek.el"
-;;;;;;  "leim/quail/hanja-jis.el" "leim/quail/hanja.el" "leim/quail/hanja3.el"
-;;;;;;  "leim/quail/hebrew.el" "leim/quail/indian.el" "leim/quail/ipa-praat.el"
-;;;;;;  "leim/quail/ipa.el" "leim/quail/japanese.el" "leim/quail/lao.el"
-;;;;;;  "leim/quail/latin-alt.el" "leim/quail/latin-ltx.el" 
"leim/quail/latin-post.el"
-;;;;;;  "leim/quail/latin-pre.el" "leim/quail/lrt.el" "leim/quail/persian.el"
-;;;;;;  "leim/quail/py-punct.el" "leim/quail/pypunct-b5.el" 
"leim/quail/quick-b5.el"
-;;;;;;  "leim/quail/quick-cns.el" "leim/quail/rfc1345.el" 
"leim/quail/sgml-input.el"
+;;;;;;  "eshell/esh-var.el" "ezimage.el" "format-spec.el" "fringe.el"
+;;;;;;  "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el" 
"gnus/gnus-bcklg.el"
+;;;;;;  "gnus/gnus-cite.el" "gnus/gnus-cloud.el" "gnus/gnus-cus.el"
+;;;;;;  "gnus/gnus-demon.el" "gnus/gnus-dup.el" "gnus/gnus-eform.el"
+;;;;;;  "gnus/gnus-ems.el" "gnus/gnus-icalendar.el" "gnus/gnus-int.el"
+;;;;;;  "gnus/gnus-logic.el" "gnus/gnus-mh.el" "gnus/gnus-salt.el"
+;;;;;;  "gnus/gnus-score.el" "gnus/gnus-srvr.el" "gnus/gnus-topic.el"
+;;;;;;  "gnus/gnus-undo.el" "gnus/gnus-util.el" "gnus/gnus-uu.el"
+;;;;;;  "gnus/gnus-vm.el" "gnus/gssapi.el" "gnus/ietf-drums.el" 
"gnus/legacy-gnus-agent.el"
+;;;;;;  "gnus/mail-parse.el" "gnus/mail-prsvr.el" "gnus/mail-source.el"
+;;;;;;  "gnus/mailcap.el" "gnus/messcompat.el" "gnus/mm-archive.el"
+;;;;;;  "gnus/mm-bodies.el" "gnus/mm-decode.el" "gnus/mm-util.el"
+;;;;;;  "gnus/mm-view.el" "gnus/mml-sec.el" "gnus/mml-smime.el" 
"gnus/nnagent.el"
+;;;;;;  "gnus/nnbabyl.el" "gnus/nndir.el" "gnus/nndraft.el" "gnus/nneething.el"
+;;;;;;  "gnus/nngateway.el" "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el"
+;;;;;;  "gnus/nnmail.el" "gnus/nnmaildir.el" "gnus/nnmairix.el" 
"gnus/nnmbox.el"
+;;;;;;  "gnus/nnmh.el" "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el"
+;;;;;;  "gnus/nnrss.el" "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el"
+;;;;;;  "gnus/nnweb.el" "gnus/registry.el" "gnus/rfc1843.el" "gnus/rfc2045.el"
+;;;;;;  "gnus/rfc2047.el" "gnus/rfc2231.el" "gnus/rtree.el" 
"gnus/sieve-manage.el"
+;;;;;;  "gnus/smime.el" "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el"
+;;;;;;  "hfy-cmap.el" "ibuf-ext.el" "international/cp51932.el" 
"international/eucjp-ms.el"
+;;;;;;  "international/fontset.el" "international/iso-ascii.el" 
"international/ja-dic-cnv.el"
+;;;;;;  "international/ja-dic-utl.el" "international/ogonek.el" "kermit.el"
+;;;;;;  "language/hanja-util.el" "language/thai-word.el" "ldefs-boot.el"
+;;;;;;  "leim/quail/arabic.el" "leim/quail/croatian.el" 
"leim/quail/cyril-jis.el"
+;;;;;;  "leim/quail/cyrillic.el" "leim/quail/czech.el" "leim/quail/ethiopic.el"
+;;;;;;  "leim/quail/georgian.el" "leim/quail/greek.el" 
"leim/quail/hanja-jis.el"
+;;;;;;  "leim/quail/hanja.el" "leim/quail/hanja3.el" "leim/quail/hebrew.el"
+;;;;;;  "leim/quail/indian.el" "leim/quail/ipa-praat.el" "leim/quail/ipa.el"
+;;;;;;  "leim/quail/japanese.el" "leim/quail/lao.el" "leim/quail/latin-alt.el"
+;;;;;;  "leim/quail/latin-ltx.el" "leim/quail/latin-post.el" 
"leim/quail/latin-pre.el"
+;;;;;;  "leim/quail/lrt.el" "leim/quail/persian.el" "leim/quail/py-punct.el"
+;;;;;;  "leim/quail/pypunct-b5.el" "leim/quail/rfc1345.el" 
"leim/quail/sgml-input.el"
 ;;;;;;  "leim/quail/sisheng.el" "leim/quail/slovak.el" 
"leim/quail/symbol-ksc.el"
-;;;;;;  "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/tsang-b5.el"
-;;;;;;  "leim/quail/tsang-cns.el" "leim/quail/viqr.el" "leim/quail/vntelex.el"
-;;;;;;  "leim/quail/vnvni.el" "leim/quail/welsh.el" "loadup.el" 
"mail/blessmail.el"
-;;;;;;  "mail/mailheader.el" "mail/mspools.el" "mail/rfc2368.el"
-;;;;;;  "mail/rfc822.el" "mail/rmail-spam-filter.el" "mail/rmailedit.el"
-;;;;;;  "mail/rmailkwd.el" "mail/rmailmm.el" "mail/rmailmsc.el" 
"mail/rmailsort.el"
-;;;;;;  "mail/rmailsum.el" "mail/undigest.el" "mh-e/mh-acros.el"
-;;;;;;  "mh-e/mh-alias.el" "mh-e/mh-buffers.el" "mh-e/mh-compat.el"
-;;;;;;  "mh-e/mh-funcs.el" "mh-e/mh-gnus.el" "mh-e/mh-identity.el"
-;;;;;;  "mh-e/mh-inc.el" "mh-e/mh-junk.el" "mh-e/mh-letter.el" 
"mh-e/mh-limit.el"
+;;;;;;  "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/viqr.el"
+;;;;;;  "leim/quail/vntelex.el" "leim/quail/vnvni.el" "leim/quail/welsh.el"
+;;;;;;  "loadup.el" "mail/blessmail.el" "mail/mailheader.el" "mail/mspools.el"
+;;;;;;  "mail/rfc2368.el" "mail/rfc822.el" "mail/rmail-spam-filter.el"
+;;;;;;  "mail/rmailedit.el" "mail/rmailkwd.el" "mail/rmailmm.el"
+;;;;;;  "mail/rmailmsc.el" "mail/rmailsort.el" "mail/rmailsum.el"
+;;;;;;  "mail/undigest.el" "mh-e/mh-acros.el" "mh-e/mh-alias.el"
+;;;;;;  "mh-e/mh-buffers.el" "mh-e/mh-compat.el" "mh-e/mh-funcs.el"
+;;;;;;  "mh-e/mh-gnus.el" "mh-e/mh-identity.el" "mh-e/mh-inc.el"
+;;;;;;  "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el"
 ;;;;;;  "mh-e/mh-loaddefs.el" "mh-e/mh-mime.el" "mh-e/mh-print.el"
 ;;;;;;  "mh-e/mh-scan.el" "mh-e/mh-search.el" "mh-e/mh-seq.el" 
"mh-e/mh-show.el"
 ;;;;;;  "mh-e/mh-speed.el" "mh-e/mh-thread.el" "mh-e/mh-tool-bar.el"
@@ -32212,23 +32230,22 @@ Zone out, completely.
 ;;;;;;  "progmodes/ebnf-otz.el" "progmodes/ebnf-yac.el" 
"progmodes/idlw-complete-structtag.el"
 ;;;;;;  "progmodes/idlw-help.el" "progmodes/idlw-toolbar.el" 
"progmodes/mantemp.el"
 ;;;;;;  "progmodes/xscheme.el" "ps-def.el" "ps-mule.el" "ps-samp.el"
-;;;;;;  "saveplace.el" "sb-image.el" "scroll-bar.el" "soundex.el"
-;;;;;;  "subdirs.el" "tempo.el" "textmodes/bib-mode.el" "textmodes/makeinfo.el"
-;;;;;;  "textmodes/page-ext.el" "textmodes/refbib.el" "textmodes/refer.el"
-;;;;;;  "textmodes/reftex-auc.el" "textmodes/reftex-cite.el" 
"textmodes/reftex-dcr.el"
-;;;;;;  "textmodes/reftex-global.el" "textmodes/reftex-index.el"
-;;;;;;  "textmodes/reftex-parse.el" "textmodes/reftex-ref.el" 
"textmodes/reftex-sel.el"
-;;;;;;  "textmodes/reftex-toc.el" "textmodes/texnfo-upd.el" "timezone.el"
-;;;;;;  "tooltip.el" "tree-widget.el" "url/url-about.el" "url/url-cookie.el"
-;;;;;;  "url/url-dired.el" "url/url-domsuf.el" "url/url-expand.el"
-;;;;;;  "url/url-ftp.el" "url/url-future.el" "url/url-history.el"
-;;;;;;  "url/url-imap.el" "url/url-methods.el" "url/url-nfs.el" 
"url/url-proxy.el"
-;;;;;;  "url/url-vars.el" "vc/ediff-diff.el" "vc/ediff-init.el" 
"vc/ediff-merg.el"
-;;;;;;  "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el"
-;;;;;;  "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el"
-;;;;;;  "vc/vc-filewise.el" "vcursor.el" "vt-control.el" "vt100-led.el"
-;;;;;;  "w32-fns.el" "w32-vars.el" "x-dnd.el") (21804 4067 633695
-;;;;;;  693000))
+;;;;;;  "sb-image.el" "scroll-bar.el" "soundex.el" "subdirs.el" "tempo.el"
+;;;;;;  "textmodes/bib-mode.el" "textmodes/makeinfo.el" "textmodes/page-ext.el"
+;;;;;;  "textmodes/refbib.el" "textmodes/refer.el" "textmodes/reftex-auc.el"
+;;;;;;  "textmodes/reftex-cite.el" "textmodes/reftex-dcr.el" 
"textmodes/reftex-global.el"
+;;;;;;  "textmodes/reftex-index.el" "textmodes/reftex-parse.el" 
"textmodes/reftex-ref.el"
+;;;;;;  "textmodes/reftex-sel.el" "textmodes/reftex-toc.el" 
"textmodes/texnfo-upd.el"
+;;;;;;  "timezone.el" "tooltip.el" "tree-widget.el" "url/url-about.el"
+;;;;;;  "url/url-cookie.el" "url/url-dired.el" "url/url-domsuf.el"
+;;;;;;  "url/url-expand.el" "url/url-ftp.el" "url/url-future.el"
+;;;;;;  "url/url-history.el" "url/url-imap.el" "url/url-methods.el"
+;;;;;;  "url/url-nfs.el" "url/url-proxy.el" "url/url-vars.el" 
"vc/ediff-diff.el"
+;;;;;;  "vc/ediff-init.el" "vc/ediff-merg.el" "vc/ediff-ptch.el"
+;;;;;;  "vc/ediff-vers.el" "vc/ediff-wind.el" "vc/pcvs-info.el" 
"vc/pcvs-parse.el"
+;;;;;;  "vc/pcvs-util.el" "vc/vc-dav.el" "vc/vc-filewise.el" "vcursor.el"
+;;;;;;  "vt-control.el" "vt100-led.el" "w32-fns.el" "w32-vars.el"
+;;;;;;  "x-dnd.el") (21827 21192 518044 532000))
 
 ;;;***
 
diff --git a/lisp/linum.el b/lisp/linum.el
index de15274..2aac13a 100644
--- a/lisp/linum.el
+++ b/lisp/linum.el
@@ -138,6 +138,9 @@ Linum mode is a buffer-local minor mode."
       (mapc #'delete-overlay linum-available)
       (setq linum-available nil))))
 
+;; Behind display-graphic-p test.
+(declare-function font-info "font.c" (name &optional frame))
+
 (defun linum--face-width (face)
   (let ((info (font-info (face-font face)))
        width)
diff --git a/lisp/loadup.el b/lisp/loadup.el
index 0746f95..84fa327 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -26,20 +26,24 @@
 
 ;; This is loaded into a bare Emacs to make a dumpable one.
 
-;; If you add/remove Lisp files to be loaded here, consider the
-;; following issues:
+;; If you add a file to be loaded here, keep the following points in mind:
 
-;; i) Any file loaded on any platform should appear in $lisp in src/lisp.mk.
-;; Use the .el or .elc version as appropriate.
+;; i) If the file is no-byte-compile, explicitly load the .el version.
+;; Such files should (where possible) obey the doc-string conventions
+;; expected by make-docfile.  They should also be added to the
+;; uncompiled[] list in make-docfile.c.
 
+;; ii) If the file is dumped with Emacs (on any platform), put the
+;; load statement at the start of a line (leading whitespace is ok).
+
+;; iii) If the file is _not_ dumped with Emacs, make sure the load
+;; statement is _not_ at the start of a line.  See pcase for an example.
+
+;; These rules are so that src/Makefile can construct lisp.mk automatically.
 ;; This ensures both that the Lisp files are compiled (if necessary)
 ;; before the emacs executable is dumped, and that they are passed to
 ;; make-docfile.  (Any that are not processed for DOC will not have
-;; doc strings in the dumped Emacs.)  Because of this:
-
-;; ii) If the file is loaded uncompiled, it should (where possible)
-;; obey the doc-string conventions expected by make-docfile.  It
-;; should also be added to the uncompiled[] list in make-docfile.c.
+;; doc strings in the dumped Emacs.)
 
 ;;; Code:
 
@@ -117,8 +121,7 @@
   ;; Since loaddefs is not yet loaded, macroexp's uses of pcase will simply
   ;; fail until pcase is explicitly loaded.  This also means that we have to
   ;; disable eager macro-expansion while loading pcase.
-  (let ((macroexp--pending-eager-loads '(skip)))
-    (load "emacs-lisp/pcase"))
+  (let ((macroexp--pending-eager-loads '(skip))) (load "emacs-lisp/pcase"))
   ;; Re-load macroexp so as to eagerly macro-expand its uses of pcase.
   (let ((max-lisp-eval-depth (* 2 max-lisp-eval-depth)))
     (load "emacs-lisp/macroexp")))
@@ -139,9 +142,7 @@
 ;; should be updated by overwriting it with an up-to-date copy of
 ;; loaddefs.el that is uncorrupted by local changes.
 ;; autogen/update_autogen can be used to periodically update ldefs-boot.
-(condition-case nil
-    ;; Don't get confused if someone compiled this by mistake.
-    (load "loaddefs.el")
+(condition-case nil (load "loaddefs.el")
   ;; In case loaddefs hasn't been generated yet.
   (file-error (load "ldefs-boot.el")))
 
@@ -178,6 +179,8 @@
 (load "language/romanian")
 (load "language/greek")
 (load "language/hebrew")
+(load "international/cp51932.el")
+(load "international/eucjp-ms.el")
 (load "language/japanese")
 (load "language/korean")
 (load "language/lao")
@@ -193,6 +196,7 @@
 (load "language/cham")
 
 (load "indent")
+(load "emacs-lisp/cl-generic")
 (load "frame")
 (load "startup")
 (load "term/tty-colors")
@@ -286,7 +290,8 @@
 (load "electric")
 (load "emacs-lisp/eldoc")
 (load "cus-start") ;Late to reduce customize-rogue (needs loaddefs.el anyway)
-(if (not (eq system-type 'ms-dos)) (load "tooltip"))
+(if (not (eq system-type 'ms-dos))
+    (load "tooltip"))
 
 ;; This file doesn't exist when building a development version of Emacs
 ;; from the repository.  It is generated just after temacs is built.
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 74533f8..f0c6d87 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -1,4 +1,4 @@
-;;; rmail.el --- main code of "RMAIL" mail reader for Emacs
+;;; rmail.el --- main code of "RMAIL" mail reader for Emacs  -*- 
lexical-binding:t -*-
 
 ;; Copyright (C) 1985-1988, 1993-1998, 2000-2015 Free Software
 ;; Foundation, Inc.
@@ -393,7 +393,7 @@ go to that message and type \\[rmail-toggle-header] twice."
   "Regexp to match Header fields that Rmail should display.
 If nil, display all header fields except those matched by
 `rmail-ignored-headers'."
-  :type '(choice regexp (const :tag "All"))
+  :type '(choice regexp (const :tag "All" nil))
   :group 'rmail-headers)
 
 ;;;###autoload
@@ -407,7 +407,7 @@ If nil, display all header fields except those matched by
 (defcustom rmail-highlighted-headers (purecopy "^From:\\|^Subject:")
   "Regexp to match Header fields that Rmail should normally highlight.
 A value of nil means don't highlight.  Uses the face `rmail-highlight'."
-  :type 'regexp
+  :type '(choice regexp (const :tag "None" nil))
   :group 'rmail-headers)
 
 (defface rmail-highlight
@@ -889,7 +889,7 @@ that knows the exact ordering of the \\( \\) 
subexpressions.")
 Signal an error and set `rmail-mime-feature' to nil if the feature
 isn't provided."
   (when rmail-enable-mime
-    (condition-case err
+    (condition-case nil
        (require rmail-mime-feature)
       (error
        (display-warning
@@ -1586,13 +1586,12 @@ Hook `rmail-quit-hook' is run after expunging."
   (interactive)
   ;; This let var was called rmail-buffer, but that interfered
   ;; with the buffer-local var used in summary buffers.
-  (let ((buffer-to-bury (current-buffer)))
-    (if (rmail-summary-exists)
-       (let (window)
-         (while (setq window (get-buffer-window rmail-summary-buffer))
-           (quit-window nil window))
-         (bury-buffer rmail-summary-buffer)))
-    (quit-window)))
+  (if (rmail-summary-exists)
+      (let (window)
+        (while (setq window (get-buffer-window rmail-summary-buffer))
+          (quit-window nil window))
+        (bury-buffer rmail-summary-buffer)))
+  (quit-window))
 
 (defun rmail-duplicate-message ()
   "Create a duplicated copy of the current message.
@@ -1760,15 +1759,14 @@ not be a new one).  It returns non-nil if it got any 
new messages."
          ;; This loops if any members of the inbox list have the same
          ;; basename (see "name conflict" below).
          (while all-files
-           (let ((opoint (point))
-                 ;; If buffer has not changed yet, and has not been
+           (let (;; If buffer has not changed yet, and has not been
                  ;; saved yet, don't replace the old backup file now.
                  (make-backup-files (and make-backup-files
                                          (buffer-modified-p)))
                  (buffer-read-only nil)
                  ;; Don't make undo records while getting mail.
                  (buffer-undo-list t)
-                 delete-files success files file-last-names)
+                 delete-files files file-last-names)
              ;; Pull files off all-files onto files as long as there is
              ;; no name conflict.  A conflict happens when two inbox
              ;; file names have the same last component.
@@ -1910,9 +1908,10 @@ is non-nil if the user has supplied the password 
interactively.
 
    ((string-match "^po:\\([^:]+\\)\\(:\\(.*\\)\\)?" file)
     (let (got-password supplied-password
-          (proto "pop")
-         (user  (match-string 1 file))
-         (host  (match-string 3 file)))
+          ;; (proto "pop")
+         ;; (user  (match-string 1 file))
+         ;; (host  (match-string 3 file))
+          )
 
       (when rmail-remote-password-required
        (setq got-password (not (rmail-have-password)))
@@ -1945,8 +1944,7 @@ SIZE is the original size of the newly read mail.
 Value is the size of the newly read mail after conversion."
   ;; Detect previous Babyl format files.
   (let ((case-fold-search nil)
-       (old-file file)
-       new-file)
+       (old-file file))
     (cond ((looking-at "BABYL OPTIONS:")
           ;; The new mail is in Babyl version 5 format.  Use unrmail
           ;; to convert it.
@@ -1972,7 +1970,7 @@ Value is the size of the newly read mail after 
conversion."
   (or (memq (file-locked-p buffer-file-name) '(nil t))
       (error "RMAIL file %s is locked"
             (file-name-nondirectory buffer-file-name)))
-  (let (file tofile delete-files movemail popmail got-password password)
+  (let (file tofile delete-files popmail got-password password)
     (while files
       ;; Handle remote mailbox names specially; don't expand as filenames
       ;; in case the userid contains a directory separator.
@@ -2127,7 +2125,7 @@ Value is the size of the newly read mail after 
conversion."
 Call with point at the end of the message."
   (unless (bolp)
     (insert "\n"))
-  (unless (looking-back "\n\n" (- (point 2)))
+  (unless (looking-back "\n\n" (- (point) 2))
     (insert "\n")))
 
 (defun rmail-add-mbox-headers ()
@@ -2144,7 +2142,7 @@ new messages.  Return the number of new messages."
            (value "------U-")
            (case-fold-search nil)
            (delim (concat "\n\n" rmail-unix-mail-delimiter))
-           limit stop)
+           stop)
        ;; Detect an empty inbox file.
        (unless (= start (point-max))
          ;; Scan the new messages to establish a count and to ensure that
@@ -2889,7 +2887,7 @@ The current mail message becomes the message displayed."
          (setq blurb (format "Showing message %d...done" msg)))))
     blurb))
 
-(defun rmail-copy-headers (beg end &optional ignored-headers)
+(defun rmail-copy-headers (beg _end &optional ignored-headers)
   "Copy displayed header fields to the message viewer buffer.
 BEG and END marks the start and end positions of the message in
 the mbox buffer.  If the optional argument IGNORED-HEADERS is
@@ -2942,7 +2940,8 @@ buffer to the end of the headers."
                              (1+ (match-beginning 0))
                            (point-max))))
              (if (and (looking-at ignored-headers)
-                      (not (looking-at rmail-nonignored-headers)))
+                      (not (and rmail-nonignored-headers
+                                (looking-at rmail-nonignored-headers))))
                  (goto-char lim)
                (append-to-buffer rmail-view-buffer (point) lim)
                (goto-char lim))))
@@ -3152,7 +3151,7 @@ or forward if N is negative."
   (rmail-maybe-set-message-counters)
   (rmail-show-message rmail-total-messages))
 
-(defun rmail-next-error-move (msg-pos bad-marker)
+(defun rmail-next-error-move (msg-pos _bad-marker)
   "Move to an error locus (probably grep hit) in an Rmail buffer.
 MSG-POS is a marker pointing at the error message in the grep buffer.
 BAD-MARKER is a marker that ought to point at where to move to,
@@ -3462,21 +3461,20 @@ STATE non-nil means mark as deleted."
   "Back up to deleted message, select it, and undelete it."
   (interactive "p")
   (set-buffer rmail-buffer)
-  (let (value)
-    (dotimes (i count)
-      (let ((msg rmail-current-message))
-       (while (and (> msg 0)
-                   (not (rmail-message-deleted-p msg)))
-         (setq msg (1- msg)))
-       (if (= msg 0)
-           (error "No previous deleted message")
-         (if (/= msg rmail-current-message)
-             (rmail-show-message msg))
-         (rmail-set-attribute rmail-deleted-attr-index nil)
-         (if (rmail-summary-exists)
-             (with-current-buffer rmail-summary-buffer
-               (rmail-summary-mark-undeleted msg))))))
-    (rmail-maybe-display-summary)))
+  (dotimes (_ count)
+    (let ((msg rmail-current-message))
+      (while (and (> msg 0)
+                  (not (rmail-message-deleted-p msg)))
+        (setq msg (1- msg)))
+      (if (= msg 0)
+          (error "No previous deleted message")
+        (if (/= msg rmail-current-message)
+            (rmail-show-message msg))
+        (rmail-set-attribute rmail-deleted-attr-index nil)
+        (if (rmail-summary-exists)
+            (with-current-buffer rmail-summary-buffer
+              (rmail-summary-mark-undeleted msg))))))
+  (rmail-maybe-display-summary))
 
 (defun rmail-delete-forward (&optional count)
   "Delete this message and move to next nondeleted one.
@@ -3490,7 +3488,7 @@ Returns t if a new message is displayed after the delete, 
or nil otherwise."
   (let (value backward)
     (if (< count 0)
        (setq count (- count) backward t))
-    (dotimes (i count)
+    (dotimes (_ count)
       (rmail-set-attribute rmail-deleted-attr-index t)
       (run-hooks 'rmail-delete-message-hook)
       (let ((del-msg rmail-current-message))
@@ -3787,7 +3785,7 @@ use \\[mail-yank-original] to yank the original message 
into it."
   (if (zerop rmail-current-message)
       (error "There is no message to reply to"))
   (let (from reply-to cc subject date to message-id references
-            resent-to resent-cc resent-reply-to
+            ;; resent-to resent-cc resent-reply-to
             (msgnum rmail-current-message))
     (rmail-apply-in-message
      rmail-current-message
@@ -3802,14 +3800,14 @@ use \\[mail-yank-original] to yank the original message 
into it."
             date (mail-fetch-field "date")
             message-id (mail-fetch-field "message-id")
             references (mail-fetch-field "references" nil nil t)
-            resent-reply-to (mail-fetch-field "resent-reply-to" nil t)
             ;; Bug#512.  It's inappropriate to reply to these addresses.
-;;;         resent-cc (and (not just-sender)
-;;;                        (mail-fetch-field "resent-cc" nil t))
-;;;         resent-to (or (mail-fetch-field "resent-to" nil t) "")
-;;;         resent-subject (mail-fetch-field "resent-subject")
-;;;         resent-date (mail-fetch-field "resent-date")
-;;;         resent-message-id (mail-fetch-field "resent-message-id")
+            ;;resent-reply-to (mail-fetch-field "resent-reply-to" nil t)
+            ;;resent-cc (and (not just-sender)
+            ;;             (mail-fetch-field "resent-cc" nil t))
+            ;;resent-to (or (mail-fetch-field "resent-to" nil t) "")
+            ;;resent-subject (mail-fetch-field "resent-subject")
+            ;;resent-date (mail-fetch-field "resent-date")
+            ;;resent-message-id (mail-fetch-field "resent-message-id")
             )
        (unless just-sender
         (if (mail-fetch-field "mail-followup-to" nil t)
@@ -3820,17 +3818,18 @@ use \\[mail-yank-original] to yank the original message 
into it."
                 to (or (mail-fetch-field "to" nil t) ""))))))
     ;; Merge the resent-to and resent-cc into the to and cc.
     ;; Bug#512.  It's inappropriate to reply to these addresses.
-;;;    (if (and resent-to (not (equal resent-to "")))
-;;;    (if (not (equal to ""))
-;;;        (setq to (concat to ", " resent-to))
-;;;      (setq to resent-to)))
-;;;    (if (and resent-cc (not (equal resent-cc "")))
-;;;    (if (not (equal cc ""))
-;;;        (setq cc (concat cc ", " resent-cc))
-;;;      (setq cc resent-cc)))
+    ;;(if (and resent-to (not (equal resent-to "")))
+    ;;    (setq to (if (not (equal to ""))
+    ;;                 (concat to ", " resent-to)
+    ;;               resent-to)))
+    ;;(if (and resent-cc (not (equal resent-cc "")))
+    ;;    (setq cc (if (not (equal cc ""))
+    ;;                 (concat cc ", " resent-cc)
+    ;;               resent-cc)))
     ;; Add `Re: ' to subject if not there already.
     (and (stringp subject)
-        (setq subject
+        (setq subject (rfc2047-decode-string subject)
+              subject
               (concat rmail-reply-prefix
                       (if (let ((case-fold-search t))
                             (string-match rmail-reply-regexp subject))
@@ -4145,6 +4144,9 @@ The message should be narrowed to just the headers."
 
 (declare-function rmail-mime-toggle-raw "rmailmm" (&optional state))
 
+(defvar rmail-mime-mbox-buffer)
+(defvar rmail-mime-view-buffer)
+
 (defun rmail-retry-failure ()
   "Edit a mail message which is based on the contents of the current message.
 For a message rejected by the mail system, extract the interesting headers and
@@ -4421,13 +4423,13 @@ current message into that RMAIL folder."
 (declare-function dframe-select-attached-frame "dframe" (&optional frame))
 (declare-function dframe-maybee-jump-to-attached-frame "dframe" ())
 
-(defun rmail-speedbar-button (text token indent)
+(defun rmail-speedbar-button (_text token _indent)
   "Execute an rmail command specified by TEXT.
 The command used is TOKEN.  INDENT is not used."
   (dframe-with-attached-buffer
    (funcall token t)))
 
-(defun rmail-speedbar-find-file (text token indent)
+(defun rmail-speedbar-find-file (text _token _indent)
   "Load in the rmail file TEXT.
 TOKEN and INDENT are not used."
   (dframe-with-attached-buffer
@@ -4446,7 +4448,7 @@ TOKEN and INDENT are not used."
          (forward-char -2)
          (speedbar-do-function-pointer)))))
 
-(defun rmail-speedbar-move-message (text token indent)
+(defun rmail-speedbar-move-message (_text token _indent)
   "From button TEXT, copy current message to the rmail file specified by TOKEN.
 TEXT and INDENT are not used."
   (dframe-with-attached-buffer
@@ -4642,13 +4644,13 @@ encoded string (and the same mask) will decode the 
string."
 
 ;;;;  Desktop support
 
-(defun rmail-restore-desktop-buffer (desktop-buffer-file-name
-                                    desktop-buffer-name
-                                    desktop-buffer-misc)
+(defun rmail-restore-desktop-buffer (file-name
+                                    _buffer-name
+                                    _buffer-misc)
   "Restore an rmail buffer specified in a desktop file."
-  (condition-case error
+  (condition-case nil
       (progn
-       (rmail-input desktop-buffer-file-name)
+       (rmail-input file-name)
        (if (eq major-mode 'rmail-mode)
            (current-buffer)
          rmail-buffer))
@@ -4664,7 +4666,7 @@ encoded string (and the same mask) will decode the 
string."
 (defvar rmail-message-encoding nil)
 
 ;; Used in `write-region-annotate-functions' to write rmail files.
-(defun rmail-write-region-annotate (start end)
+(defun rmail-write-region-annotate (start _end)
   (when (and (null start) rmail-buffer-swapped)
     (unless (buffer-live-p rmail-view-buffer)
       (error "Buffer `%s' with real text of `%s' has disappeared"
@@ -4691,7 +4693,7 @@ encoded string (and the same mask) will decode the 
string."
 
 ;;; Start of automatically extracted autoloads.
 
-;;;### (autoloads nil "rmailedit" "rmailedit.el" 
"f6da7267316d02c90b9d314ce95b3c22")
+;;;### (autoloads nil "rmailedit" "rmailedit.el" 
"1ed1c211e6e9c254ba3e0dd8d546e745")
 ;;; Generated autoloads from rmailedit.el
 
 (autoload 'rmail-edit-current-message "rmailedit" "\
@@ -4744,7 +4746,7 @@ With prefix argument N moves forward N messages with 
these labels.
 
 ;;;***
 
-;;;### (autoloads nil "rmailmm" "rmailmm.el" 
"a17df5ef8968113c8f6a78cf85c82da4")
+;;;### (autoloads nil "rmailmm" "rmailmm.el" 
"e5b89eed8afb278cc8881f2208382c7c")
 ;;; Generated autoloads from rmailmm.el
 
 (autoload 'rmail-mime "rmailmm" "\
@@ -4841,7 +4843,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse 
order.
 
 ;;;***
 
-;;;### (autoloads nil "rmailsum" "rmailsum.el" 
"3203e61425330fc20f3154b559f8b539")
+;;;### (autoloads nil "rmailsum" "rmailsum.el" 
"b34aec2c31535804e2731992a64c8cdf")
 ;;; Generated autoloads from rmailsum.el
 
 (autoload 'rmail-summary "rmailsum" "\
diff --git a/lisp/mail/rmailedit.el b/lisp/mail/rmailedit.el
index 15d27a0..0b49782 100644
--- a/lisp/mail/rmailedit.el
+++ b/lisp/mail/rmailedit.el
@@ -44,6 +44,8 @@
 
 (declare-function rmail-summary-disable "rmailsum" ())
 
+;; We can't straightforwardly make this derive from text-mode, because
+;; we need to bind (rmail-buffer-swapped) around the text-mode call.  :(
 (defun rmail-edit-mode ()
   "Major mode for editing the contents of an Rmail message.
 The editing commands are the same as in Text mode, together with
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el
index 00fc25d..3dd57b9 100644
--- a/lisp/mail/rmailmm.el
+++ b/lisp/mail/rmailmm.el
@@ -135,9 +135,10 @@ automatically display the image in the buffer."
   (cond ((fboundp 'libxml-parse-html-region) 'rmail-mime-render-html-shr)
        ((executable-find "lynx") 'rmail-mime-render-html-lynx)
        (t nil))
-  "Function to convert HTML to text.  Called with buffer containing HTML
-extracted from message in a temporary buffer.  Converts to text in current 
-buffer. If NIL, display HTML source."
+  "Function to convert HTML to text.
+Called with buffer containing HTML extracted from message in a
+temporary buffer.  Converts to text in current buffer.  If nil,
+display HTML source."
   :group 'rmail
   :version "25.1"
   :type '(choice function (const nil)))
@@ -705,6 +706,9 @@ HEADER is a header component of a MIME-entity object (see
              (insert-buffer-substring source-buffer))
            (rmail-mime-fix-inserted-faces start)))))))
 
+(declare-function libxml-parse-html-region "xml.c"
+                 (start end &optional base-url discard-comments))
+
 (defun rmail-mime-render-html-shr (source-buffer)
   (let ((dom (with-current-buffer source-buffer
               (libxml-parse-html-region (point-min) (point-max))))
@@ -732,12 +736,12 @@ HEADER is a header component of a MIME-entity object (see
 (defun rmail-mime-fix-inserted-faces (start)
   (while (< start (point))
     (let ((face (get-text-property start 'face))
-         (next (next-single-property-change 
+         (next (next-single-property-change
                 start 'face (current-buffer) (point))))
       (if face                         ; anything to do?
          (put-text-property start next 'font-lock-face face))
       (setq start next))))
-    
+
 (defun rmail-mime-toggle-button (button)
   "Hide or show the body of the MIME-entity associated with BUTTON."
   (save-excursion
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index 7144e43..7097fef 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -1,4 +1,4 @@
-;;; rmailsum.el --- make summary buffers for the mail reader
+;;; rmailsum.el --- make summary buffers for the mail reader  -*- 
lexical-binding:t -*-
 
 ;; Copyright (C) 1985, 1993-1996, 2000-2015 Free Software Foundation, Inc.
 
@@ -262,7 +262,7 @@ Setting this option to nil might speed up the generation of 
summaries."
 ;; Regenerate the contents of the summary
 ;; using the same selection criterion as last time.
 ;; M-x revert-buffer in a summary buffer calls this function.
-(defun rmail-update-summary (&rest ignore)
+(defun rmail-update-summary (&rest _)
   (apply (car rmail-summary-redo) (cdr rmail-summary-redo)))
 
 ;;;###autoload
@@ -340,13 +340,30 @@ Emacs will list the message in the summary."
   "Return t, if for message number MSG, regexp REGEXP matches in the header."
   (rmail-apply-in-message msg 'rmail-message-regexp-p-1 msg regexp))
 
+(defun rmail--decode-and-apply (function &rest args)
+  "Make an RFC2047-decoded copy of current buffer, apply FUNCTION with ARGS."
+  (let ((buff (current-buffer)))
+    (with-temp-buffer
+      (insert-buffer-substring buff)
+      (goto-char (point-min))
+      ;; FIXME?  In rmail-show-message-1, decoding depends on
+      ;; rmail-enable-mime being non-nil (?).
+      (rfc2047-decode-region (point-min)
+                            (save-excursion
+                              (progn
+                                (search-forward "\n\n" nil 'move)
+                                (point))))
+      (apply function args))))
+
 (defun rmail-message-regexp-p-1 (msg regexp)
   ;; Search functions can expect to start from the beginning.
   (narrow-to-region (point) (save-excursion (search-forward "\n\n") (point)))
   (if (and rmail-enable-mime
           rmail-search-mime-header-function)
       (funcall rmail-search-mime-header-function msg regexp (point))
-    (re-search-forward regexp nil t)))
+    ;; We need to search the full headers, but probably want to decode
+    ;; them so they match the ones people see displayed.  (Bug#19088)
+    (rmail--decode-and-apply 're-search-forward regexp nil t)))
 
 ;;;###autoload
 (defun rmail-summary-by-topic (subject &optional whole-message)
@@ -370,7 +387,9 @@ SUBJECT is a string of regexps separated by commas."
 
 (defun rmail-message-subject-p (msg subject &optional whole-message)
   (if whole-message
-      (rmail-apply-in-message msg 're-search-forward subject nil t)
+      ;; SUBJECT and rmail-simplified-subject are 2047 decoded.
+      (rmail-apply-in-message msg 'rmail--decode-and-apply
+                             're-search-forward subject nil t)
     (string-match subject (rmail-simplified-subject msg))))
 
 ;;;###autoload
@@ -655,7 +674,7 @@ LINES is the number of lines in the message (if we should 
display that)
   (goto-char (point-min))
   (let ((line (rmail-header-summary))
        (labels (rmail-get-summary-labels))
-       pos status prefix basic-start basic-end linecount-string)
+        status prefix basic-start basic-end linecount-string)
 
     (setq linecount-string
          (cond
@@ -727,7 +746,7 @@ the message being processed."
                                 ;; Get all the lines of the From field
                                 ;; so that we get a whole comment if there is 
one,
                                 ;; so that mail-strip-quoted-names can discard 
it.
-                                (let ((opoint (point)))
+                                (progn
                                   (while (progn (forward-line 1)
                                                 (looking-at "[ \t]")))
                                   ;; Back up over newline, then trailing 
spaces or tabs
@@ -909,8 +928,8 @@ A prefix argument serves as a repeat count;
 a negative argument means to delete and move backward."
   (interactive "p")
   (unless (numberp count) (setq count 1))
-  (let (end del-msg
-           (backward (< count 0)))
+  (let (del-msg
+        (backward (< count 0)))
     (while (and (/= count 0)
                ;; Don't waste time if we are at the beginning
                ;; and trying to go backward.
@@ -1029,7 +1048,7 @@ Optional prefix ARG means undelete ARG previous messages."
          (forward-line 1))
        (setq n (1- n)))
     (rmail-summary-goto-msg 1)
-    (dotimes (i rmail-total-messages)
+    (dotimes (_ rmail-total-messages)
       (rmail-summary-goto-msg)
       (let (del-msg)
        (when (rmail-summary-deleted-p)
diff --git a/lisp/midnight.el b/lisp/midnight.el
index dbf0c02..256ab9c 100644
--- a/lisp/midnight.el
+++ b/lisp/midnight.el
@@ -1,4 +1,4 @@
-;;; midnight.el --- run something every midnight, e.g., kill old buffers
+;;; midnight.el --- run something every midnight, e.g., kill old buffers  -*- 
lexical-binding:t -*-
 
 ;; Copyright (C) 1998, 2001-2015 Free Software Foundation, Inc.
 
@@ -36,7 +36,7 @@
 
 ;;; Code:
 
-(eval-when-compile (require 'cl-lib))
+(require 'cl-lib)
 
 (defgroup midnight nil
   "Run something every day at midnight."
@@ -48,24 +48,19 @@
 Use `cancel-timer' to stop it and `midnight-delay-set' to change
 the time when it is run.")
 
-(defcustom midnight-mode nil
-  "Non-nil means run `midnight-hook' at midnight.
-Setting this variable outside customize has no effect;
-call `cancel-timer' or `timer-activate' on `midnight-timer' instead."
-  :type 'boolean
-  :group 'midnight
-  :require 'midnight
-  :initialize 'custom-initialize-default
-  :set (lambda (symb val)
-         (set symb val) (require 'midnight)
-         (if val (timer-activate midnight-timer)
-             (cancel-timer midnight-timer))))
+;;;###autoload
+(define-minor-mode midnight-mode
+  "Non-nil means run `midnight-hook' at midnight."
+  :global t
+  :initialize #'custom-initialize-default
+  (if midnight-mode (timer-activate midnight-timer)
+    (cancel-timer midnight-timer)))
 
 ;;; time conversion
 
-(defun midnight-buffer-display-time (&optional buffer)
+(defun midnight-buffer-display-time (buffer)
   "Return the time-stamp of BUFFER, or current buffer, as float."
-  (with-current-buffer (or buffer (current-buffer))
+  (with-current-buffer buffer
     (when buffer-display-time (float-time buffer-display-time))))
 
 ;;; clean-buffer-list stuff
@@ -76,18 +71,16 @@ The autokilling is done by `clean-buffer-list' when is it 
in `midnight-hook'.
 Currently displayed and/or modified (unsaved) buffers, as well as buffers
 matching `clean-buffer-list-kill-never-buffer-names' and
 `clean-buffer-list-kill-never-regexps' are excluded."
-  :type 'integer
-  :group 'midnight)
+  :type 'integer)
 
 (defcustom clean-buffer-list-delay-special 3600
   "The number of seconds before some buffers become eligible for autokilling.
 Buffers matched by `clean-buffer-list-kill-regexps' and
 `clean-buffer-list-kill-buffer-names' are killed if they were last
 displayed more than this many seconds ago."
-  :type 'integer
-  :group 'midnight)
+  :type 'integer)
 
-(defcustom clean-buffer-list-kill-regexps '("^\\*Man ")
+(defcustom clean-buffer-list-kill-regexps '("\\`\\*Man ")
   "List of regexps saying which buffers will be killed at midnight.
 If buffer name matches a regexp in the list and the buffer was not displayed
 in the last `clean-buffer-list-delay-special' seconds, it is killed by
@@ -96,9 +89,14 @@ If a member of the list is a cons, its `car' is the regexp 
and its `cdr' is
 the number of seconds to use instead of `clean-buffer-list-delay-special'.
 See also `clean-buffer-list-kill-buffer-names',
 `clean-buffer-list-kill-never-regexps' and
-`clean-buffer-list-kill-never-buffer-names'."
-  :type '(repeat (regexp :tag "Regexp matching Buffer Name"))
-  :group 'midnight)
+`clean-buffer-list-kill-never-buffer-names'.
+
+Each element can also be a function instead of a regexp, in which case
+it takes a single argument (a buffer name) and should return non-nil
+if the buffer should be killed by `clean-buffer-list'."
+  :type '(repeat
+          (choice (regexp :tag "Regexp matching Buffer Name")
+                  (function :tag "Predicate function"))))
 
 (defcustom clean-buffer-list-kill-buffer-names
     '("*Help*" "*Apropos*" "*Buffer List*" "*Compile-Log*" "*info*"
@@ -112,8 +110,7 @@ the number of seconds to use instead of 
`clean-buffer-list-delay-special'.
 See also `clean-buffer-list-kill-regexps',
 `clean-buffer-list-kill-never-regexps' and
 `clean-buffer-list-kill-never-buffer-names'."
-  :type '(repeat (string :tag "Buffer Name"))
-  :group 'midnight)
+  :type '(repeat (string :tag "Buffer Name")))
 
 (defcustom clean-buffer-list-kill-never-buffer-names
     '("*scratch*" "*Messages*")
@@ -122,33 +119,34 @@ See also `clean-buffer-list-kill-never-regexps'.
 Note that this does override `clean-buffer-list-kill-regexps' and
 `clean-buffer-list-kill-buffer-names' so a buffer matching any of these
 two lists will NOT be killed if it is also present in this list."
-  :type '(repeat (string :tag "Buffer Name"))
-  :group 'midnight)
+  :type '(repeat (string :tag "Buffer Name")))
 
-(defcustom clean-buffer-list-kill-never-regexps '("^ \\*Minibuf-.*\\*$")
+(defcustom clean-buffer-list-kill-never-regexps '("\\` \\*Minibuf-.*\\*\\'")
   "List of regexp saying which buffers will never be killed at midnight.
 See also `clean-buffer-list-kill-never-buffer-names'.
 Killing is done by `clean-buffer-list'.
 Note that this does override `clean-buffer-list-kill-regexps' and
 `clean-buffer-list-kill-buffer-names' so a buffer matching any of these
-two lists will NOT be killed if it also matches anything in this list."
-  :type '(repeat (regexp :tag "Regexp matching Buffer Name"))
-  :group 'midnight)
+two lists will NOT be killed if it also matches anything in this list.
 
-(defun midnight-find (el ls test &optional key)
-  "A stopgap solution to the absence of `find' in ELisp."
-  (cl-dolist (rr ls)
-    (when (funcall test (if key (funcall key rr) rr) el)
-      (cl-return rr))))
+Each element can also be a function instead of a regexp, in which case
+it takes a single argument (a buffer name) and should return non-nil
+if the buffer should never be killed by `clean-buffer-list'."
+  :type '(repeat
+          (choice (regexp :tag "Regexp matching Buffer Name")
+                  (function :tag "Predicate function"))))
 
 (defun clean-buffer-list-delay (name)
   "Return the delay, in seconds, before killing a buffer named NAME.
 Uses `clean-buffer-list-kill-buffer-names', `clean-buffer-list-kill-regexps'
 `clean-buffer-list-delay-general' and `clean-buffer-list-delay-special'.
 Autokilling is done by `clean-buffer-list'."
-  (or (assoc-default name clean-buffer-list-kill-buffer-names 'string=
+  (or (assoc-default name clean-buffer-list-kill-buffer-names #'string=
                      clean-buffer-list-delay-special)
-      (assoc-default name clean-buffer-list-kill-regexps 'string-match
+      (assoc-default name clean-buffer-list-kill-regexps
+                     (lambda (re str)
+                       (if (functionp re)
+                           (funcall re str) (string-match re str)))
                      clean-buffer-list-delay-special)
       (* clean-buffer-list-delay-general 24 60 60)))
 
@@ -172,10 +170,13 @@ lifetime, i.e., its \"age\" when it will be purged."
        (setq bts (midnight-buffer-display-time buf) bn (buffer-name buf)
              delay (if bts (- tm bts) 0) cbld (clean-buffer-list-delay bn))
        (message "[%s] `%s' [%s %d]" ts bn (if bts (round delay)) cbld)
-       (unless (or (midnight-find bn clean-buffer-list-kill-never-regexps
-                                  'string-match)
-                   (midnight-find bn clean-buffer-list-kill-never-buffer-names
-                                  'string-equal)
+       (unless (or (cl-find bn clean-buffer-list-kill-never-regexps
+                             :test (lambda (bn re)
+                                     (if (functionp re)
+                                         (funcall re bn)
+                                       (string-match re bn))))
+                   (cl-find bn clean-buffer-list-kill-never-buffer-names
+                             :test #'string-equal)
                    (get-buffer-process buf)
                    (and (buffer-file-name buf) (buffer-modified-p buf))
                    (get-buffer-window buf 'visible) (< delay cbld))
@@ -190,8 +191,7 @@ lifetime, i.e., its \"age\" when it will be purged."
 (defcustom midnight-hook '(clean-buffer-list)
   "The hook run `midnight-delay' seconds after midnight every day.
 The default value is `clean-buffer-list'."
-  :type 'hook
-  :group 'midnight)
+  :type 'hook)
 
 (defun midnight-next ()
   "Return the number of seconds till the next midnight."
@@ -209,7 +209,7 @@ to its second argument TM."
   (when (timerp midnight-timer) (cancel-timer midnight-timer))
   (setq midnight-timer
         (run-at-time (if (numberp tm) (+ (midnight-next) tm) tm)
-                     midnight-period 'run-hooks 'midnight-hook)))
+                     midnight-period #'run-hooks 'midnight-hook)))
 
 (defcustom midnight-delay 3600
   "The number of seconds after the midnight when the `midnight-timer' is run.
@@ -218,8 +218,7 @@ set it by calling `midnight-delay-set', or use `custom'.
 If you wish, you can use a string instead, it will be passed as the
 first argument to `run-at-time'."
   :type 'sexp
-  :set 'midnight-delay-set
-  :group 'midnight)
+  :set #'midnight-delay-set)
 
 (provide 'midnight)
 
diff --git a/lisp/mouse-copy.el b/lisp/mouse-copy.el
index 609713c..d3c3c80 100644
--- a/lisp/mouse-copy.el
+++ b/lisp/mouse-copy.el
@@ -177,7 +177,7 @@ put the point at one place, then click and drag over some 
other region."
            (mouse-copy-work-around-drag-bug start-event last-input-event))
        ;; Remember what we do so we can undo it, if necessary.
        (setq mouse-copy-last-paste-start (point))
-       (insert (x-get-selection 'SECONDARY))
+       (insert (gui-get-selection 'SECONDARY))
        (setq mouse-copy-last-paste-end (point)))
     (setq mouse-copy-last-paste-start nil)))
 
@@ -216,7 +216,7 @@ by address@hidden"
   (if (mouse-drag-secondary start-event)
       (progn
        (mouse-kill-preserving-secondary)
-       (insert (x-get-selection 'SECONDARY))))
+       (insert (gui-get-selection 'SECONDARY))))
 )
 
 (provide 'mouse-copy)
diff --git a/lisp/net/eudc-vars.el b/lisp/net/eudc-vars.el
index 36a583d..5e994a3 100644
--- a/lisp/net/eudc-vars.el
+++ b/lisp/net/eudc-vars.el
@@ -312,9 +312,11 @@ arguments that should be passed to the program."
                        :inline t
                        (string :tag "Argument")))))
 
-(defcustom eudc-options-file "~/.eudc-options"
+(defcustom eudc-options-file
+  (locate-user-emacs-file "eudc-options" ".eudc-options")
   "A file where the `servers' hotlist is stored."
-  :type '(file :Tag "File Name:"))
+  :type '(file :Tag "File Name:")
+  :version "25.1")
 
 (defcustom eudc-mode-hook nil
   "Normal hook run on entry to EUDC mode."
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index a128ffb..f2f5ecb 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -379,7 +379,7 @@ Currently this means either text/html or 
application/xhtml+xml."
             (match-string 1)))))
 
 (declare-function libxml-parse-html-region "xml.c"
-                 (start end &optional base-url))
+                 (start end &optional base-url discard-comments))
 
 (defun eww-display-html (charset url &optional document point buffer encode)
   (unless (fboundp 'libxml-parse-html-region)
diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el
index c1b1079..087ae43 100644
--- a/lisp/net/mairix.el
+++ b/lisp/net/mairix.el
@@ -265,18 +265,22 @@ Currently there are 'threads and 'flags.")
        (mail-fetch-field field)))))
 
 ;;; Gnus
-(eval-when-compile
-  (defvar gnus-article-buffer)
-  (autoload 'gnus-summary-toggle-header "gnus-sum")
-  (autoload 'gnus-buffer-exists-p "gnus-util")
-  (autoload 'message-field-value "message")
-  (autoload 'gnus-group-read-ephemeral-group "gnus-group")
-  (autoload 'gnus-alive-p "gnus-util"))
+
+;; For gnus-buffer-exists-p, although it seems that could be replaced by:
+;; (and buffer (get-buffer buffer))
+(eval-when-compile (require 'gnus-util))
+(defvar gnus-article-buffer)
+(declare-function gnus-group-read-ephemeral-group "gnus-group"
+                 (group method &optional activate quit-config
+                 request-only select-articles parameters number))
+(declare-function gnus-summary-toggle-header "gnus-sum" (&optional arg))
+(declare-function message-field-value "message" (header &optional not-all))
 
 ;; Display function:
 (defun mairix-gnus-ephemeral-nndoc (folder)
   "Create ephemeral nndoc group for reading mbox file FOLDER in Gnus."
-  (unless (gnus-alive-p)
+  (unless (and (fboundp 'gnus-alive-p)
+              (gnus-alive-p))
     (error "Gnus is not running"))
   (gnus-group-read-ephemeral-group
    ;; add randomness to group string to prevent Gnus from using a
@@ -289,26 +293,29 @@ Currently there are 'threads and 'flags.")
 ;; Fetching mail header field:
 (defun mairix-gnus-fetch-field (field)
   "Get mail header FIELD for current message using Gnus."
-  (unless (gnus-alive-p)
+  (unless (and (fboundp 'gnus-alive-p)
+              (gnus-alive-p))
     (error "Gnus is not running"))
   (unless (gnus-buffer-exists-p gnus-article-buffer)
     (error "No article buffer available"))
   (with-current-buffer gnus-article-buffer
+    ;; gnus-art requires gnus-sum and message.
     (gnus-summary-toggle-header 1)
     (message-field-value field)))
 
 ;;; VM
 ;;; written by Ulrich Mueller
 
-(eval-when-compile
-  (autoload 'vm-quit "vm-folder")
-  (autoload 'vm-visit-folder "vm")
-  (autoload 'vm-select-folder-buffer "vm-macro")
-  (autoload 'vm-check-for-killed-summary "vm-misc")
-  (autoload 'vm-get-header-contents "vm-summary")
-  (autoload 'vm-check-for-killed-summary "vm-misc")
-  (autoload 'vm-error-if-folder-empty "vm-misc")
-  (autoload 'vm-select-marked-or-prefixed-messages "vm-folder"))
+(declare-function vm-quit "ext:vm-folder" (&optional no-change))
+(declare-function vm-visit-folder "ext:vm-startup"
+                 (folder &optional read-only))
+(declare-function vm-select-folder-buffer "ext:vm-macro" ()) ; defsubst
+(declare-function vm-check-for-killed-summary "ext:vm-misc" ())
+(declare-function vm-error-if-folder-empty "ext:vm-misc" ())
+(declare-function vm-get-header-contents "ext:vm-summary"
+                 (message header-name-regexp &optional clump-sep))
+(declare-function vm-select-marked-or-prefixed-messages "ext:vm-folder"
+                 (prefix))
 
 ;; Display function
 (defun mairix-vm-display (folder)
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index ebcbc71..eaf1d7e 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -326,6 +326,8 @@ This variable is only used if the variable
         (insert filtered-string)
         (set-marker (process-mark process) (point))))))
 
+(declare-function w32-get-console-output-codepage "w32proc.c" ())
+
 (defun net-utils-run-program (name header program args)
   "Run a network information program."
   (let ((buf (get-buffer-create (concat "*" name "*")))
diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el
index 28253e5..261e5a1 100644
--- a/lisp/net/nsm.el
+++ b/lisp/net/nsm.el
@@ -76,6 +76,8 @@ stored in plain text."
   "If non-nil, the connection is opened in a non-interactive context.
 This means that no queries should be performed.")
 
+(declare-function gnutls-peer-status "gnutls.c" (proc))
+
 (defun nsm-verify-connection (process host port &optional
                                      save-fingerprint warn-unencrypted)
   "Verify the security status of PROCESS that's connected to HOST:PORT.
@@ -122,6 +124,9 @@ unencrypted."
        (nsm-check-protocol process host port status settings)
       process)))
 
+(declare-function gnutls-peer-status-warning-describe "gnutls.c"
+                 (status-symbol))
+
 (defun nsm-check-certificate (process host port status settings)
   (let ((warnings (plist-get status :warnings)))
     (cond
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 5ea1047..11db7a2 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -1924,17 +1924,13 @@ Uninteresting lines are those whose responses are 
listed in
       (goto-char overlay-arrow-position)
     (message "No unread messages")))
 
-(defun rcirc-non-irc-buffer ()
-  (let ((buflist (buffer-list))
-       buffer)
-    (while (and buflist (not buffer))
-      (with-current-buffer (car buflist)
-       (unless (or (eq major-mode 'rcirc-mode)
-                   (= ?\s (aref (buffer-name) 0)) ; internal buffers
-                   (get-buffer-window (current-buffer)))
-         (setq buffer (current-buffer))))
-      (setq buflist (cdr buflist)))
-    buffer))
+(defun rcirc-bury-buffers ()
+  "Bury all RCIRC buffers."
+  (interactive)
+  (dolist (buf (buffer-list))
+    (when (eq 'rcirc-mode (with-current-buffer buf major-mode))
+      (bury-buffer buf)         ; buffers not shown
+      (quit-windows-on buf))))  ; buffers shown in a window
 
 (defun rcirc-next-active-buffer (arg)
   "Switch to the next rcirc buffer with activity.
@@ -1949,15 +1945,13 @@ With prefix ARG, go to the next low priority buffer 
with activity."
          (switch-to-buffer (car (if arg lopri hipri)))
          (when (> (point) rcirc-prompt-start-marker)
            (recenter -1)))
-      (if (eq major-mode 'rcirc-mode)
-         (switch-to-buffer (rcirc-non-irc-buffer))
-       (message "%s" (concat
-                      "No IRC activity."
-                      (when lopri
-                        (concat
-                         "  Type C-u "
-                         (key-description (this-command-keys))
-                         " for low priority activity."))))))))
+      (rcirc-bury-buffers)
+      (message "No IRC activity.%s"
+               (if lopri
+                   (concat
+                    "  Type C-u " (key-description (this-command-keys))
+                    " for low priority activity.")
+                 "")))))
 
 (define-obsolete-variable-alias 'rcirc-activity-hooks
   'rcirc-activity-functions "24.3")
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el
index 6f4e173..56cbec4 100644
--- a/lisp/net/secrets.el
+++ b/lisp/net/secrets.el
@@ -598,10 +598,9 @@ If successful, return the object path of the collection."
 ATTRIBUTES are key-value pairs.  The keys are keyword symbols,
 starting with a colon.  Example:
 
-  \(secrets-create-item \"Tramp collection\" \"item\" \"geheim\"
-   :method \"sudo\" :user \"joe\" :host \"remote-host\"\)
+  \(secrets-search-items \"Tramp collection\" :user \"joe\")
 
-The object paths of the found items are returned as list."
+The object labels of the found items are returned as list."
   (let ((collection-path (secrets-unlock-collection collection))
        result props)
     (unless (secrets-empty-path collection-path)
@@ -618,8 +617,7 @@ The object paths of the found items are returned as list."
                           (cadr attributes))
                     'append)
              attributes (cddr attributes)))
-      ;; Search.  The result is a list of two lists, the object paths
-      ;; of the unlocked and the locked items.
+      ;; Search.  The result is a list of object paths.
       (setq result
            (dbus-call-method
             :session secrets-service collection-path
@@ -630,7 +628,7 @@ The object paths of the found items are returned as list."
       ;; Return the found items.
       (mapcar
        (lambda (item-path) (secrets-get-item-property item-path "Label"))
-       (append (car result) (cadr result))))))
+       result))))
 
 (defun secrets-create-item (collection item password &rest attributes)
   "Create a new item in COLLECTION with label ITEM and password PASSWORD.
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index 454332e..0ce77b9 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -57,7 +57,7 @@ fit these criteria."
   :group 'shr
   :type '(choice (const nil) regexp))
 
-(defcustom shr-use-fonts nil
+(defcustom shr-use-fonts t
   "If non-nil, use proportional fonts for text."
   :version "25.1"
   :group 'shr
@@ -152,7 +152,6 @@ cid: URL as the argument.")
 (defvar shr-ignore-cache nil)
 (defvar shr-external-rendering-functions nil)
 (defvar shr-target-id nil)
-(defvar shr-inhibit-decoration nil)
 (defvar shr-table-separator-length 1)
 (defvar shr-table-separator-pixel-width 0)
 (defvar shr-table-id nil)
@@ -178,7 +177,7 @@ cid: URL as the argument.")
 
 ;; Public functions and commands.
 (declare-function libxml-parse-html-region "xml.c"
-                 (start end &optional base-url))
+                 (start end &optional base-url discard-comments))
 
 (defun shr-render-buffer (buffer)
   "Display the HTML rendering of the current buffer."
@@ -783,16 +782,15 @@ size, and full-buffer size."
 ;; blank text at the start of the line, and the newline at the end, to
 ;; avoid ugliness.
 (defun shr-add-font (start end type)
-  (unless shr-inhibit-decoration
-    (save-excursion
-      (goto-char start)
-      (while (< (point) end)
-       (when (bolp)
-         (skip-chars-forward " "))
-       (add-face-text-property (point) (min (line-end-position) end) type t)
-       (if (< (line-end-position) end)
-           (forward-line 1)
-         (goto-char end))))))
+  (save-excursion
+    (goto-char start)
+    (while (< (point) end)
+      (when (bolp)
+        (skip-chars-forward " "))
+      (add-face-text-property (point) (min (line-end-position) end) type t)
+      (if (< (line-end-position) end)
+          (forward-line 1)
+        (goto-char end)))))
 
 (defun shr-mouse-browse-url (ev)
   "Browse the URL under the mouse cursor."
@@ -951,6 +949,9 @@ Return a string with image data."
                (search-forward "\r\n\r\n" nil t))
        (shr-parse-image-data)))))
 
+(declare-function libxml-parse-xml-region "xml.c"
+                 (start end &optional base-url discard-comments))
+
 (defun shr-parse-image-data ()
   (let ((data (buffer-substring (point) (point-max)))
        (content-type
@@ -1041,8 +1042,7 @@ ones, in case fg and bg are nil."
                (shr-color-visible bg fg)))))))
 
 (defun shr-colorize-region (start end fg &optional bg)
-  (when (and (not shr-inhibit-decoration)
-            (or fg bg))
+  (when (or fg bg)
     (let ((new-colors (shr-color-check fg bg)))
       (when new-colors
        (when fg
@@ -1212,8 +1212,7 @@ ones, in case fg and bg are nil."
        (shr-ensure-newline)
        (insert " "))
       (put-text-property start (1+ start) 'shr-target-id shr-target-id))
-    (when (and url
-              (not shr-inhibit-decoration))
+    (when url
       (shr-urlify (or shr-start start) (shr-expand-url url) title))))
 
 (defun shr-tag-object (dom)
@@ -1805,7 +1804,6 @@ The preference is a float determined from 
`shr-prefer-media-type'."
 
 (defun shr-make-table-1 (dom widths &optional fill)
   (let ((trs nil)
-       (shr-inhibit-decoration (not fill))
        (rowspans (make-vector (length widths) 0))
        (colspan-remaining 0)
        colspan-width colspan-count
diff --git a/lisp/obsolete/mouse-sel.el b/lisp/obsolete/mouse-sel.el
index fcadedf..865a427 100644
--- a/lisp/obsolete/mouse-sel.el
+++ b/lisp/obsolete/mouse-sel.el
@@ -315,7 +315,7 @@ is `interprogram-cut-paste'.")
        (or (gui-selection-value)
            (bound-and-true-p x-last-selected-text-primary)
             gui--last-selected-text-primary)
-      (x-get-selection selection)))
+      (gui-get-selection selection)))
   "Function to call to get the selection.
 Called with one argument:
 
diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el
index c8db77b..73f24ce 100644
--- a/lisp/org/org-list.el
+++ b/lisp/org/org-list.el
@@ -431,7 +431,7 @@ group 4: description tag")
           (context (org-list-context))
           (lim-up (car context))
           (drawers-re (concat "^[ \t]*:\\("
-                              (mapconcat 'regexp-quote org-drawers "\\|")
+                              (mapconcat #'regexp-quote org-drawers "\\|")
                               "\\):[ \t]*$"))
           (inlinetask-re (and (featurep 'org-inlinetask)
                               (org-inlinetask-outline-regexp)))
@@ -550,7 +550,7 @@ Contexts `block' and `invalid' refer to 
`org-list-forbidden-blocks'."
               ;; Can't use org-drawers-regexp as this function might
               ;; be called in buffers not in Org mode.
               (beg-re (concat "^[ \t]*:\\("
-                              (mapconcat 'regexp-quote org-drawers "\\|")
+                              (mapconcat #'regexp-quote org-drawers "\\|")
                               "\\):[ \t]*$")))
           (when (save-excursion
                   (and (not (looking-at beg-re))
@@ -636,12 +636,12 @@ Assume point is at an item."
           (text-min-ind 10000)
           (item-re (org-item-re))
           (drawers-re (concat "^[ \t]*:\\("
-                              (mapconcat 'regexp-quote org-drawers "\\|")
+                              (mapconcat #'regexp-quote org-drawers "\\|")
                               "\\):[ \t]*$"))
           (inlinetask-re (and (featurep 'org-inlinetask)
                               (org-inlinetask-outline-regexp)))
           (beg-cell (cons (point) (org-get-indentation)))
-          ind itm-lst itm-lst-2 end-lst end-lst-2 struct
+           itm-lst itm-lst-2 end-lst end-lst-2 struct
           (assoc-at-point
            (function
             ;; Return association at point.
@@ -926,13 +926,13 @@ Value returned is the position of the first child of 
ITEM."
               (< ind (org-list-get-ind child-maybe struct)))
       child-maybe)))
 
-(defun org-list-get-next-item (item struct prevs)
+(defun org-list-get-next-item (item _struct prevs)
   "Return next item in same sub-list as ITEM, or nil.
 STRUCT is the list structure.  PREVS is the alist of previous
 items, as returned by `org-list-prevs-alist'."
   (car (rassq item prevs)))
 
-(defun org-list-get-prev-item (item struct prevs)
+(defun org-list-get-prev-item (item _struct prevs)
   "Return previous item in same sub-list as ITEM, or nil.
 STRUCT is the list structure.  PREVS is the alist of previous
 items, as returned by `org-list-prevs-alist'."
@@ -964,7 +964,7 @@ items, as returned by `org-list-prevs-alist'."
       (push next-item after-item))
     (append before-item (list item) (nreverse after-item))))
 
-(defun org-list-get-children (item struct parents)
+(defun org-list-get-children (item _struct parents)
   "List all children of ITEM, or nil.
 STRUCT is the list structure.  PARENTS is the alist of parents,
 as returned by `org-list-parents-alist'."
@@ -982,7 +982,7 @@ STRUCT is the list structure."
 (defun org-list-get-bottom-point (struct)
   "Return point at bottom of list.
 STRUCT is the list structure."
-  (apply 'max
+  (apply #'max
         (mapcar (lambda (e) (org-list-get-item-end (car e) struct)) struct)))
 
 (defun org-list-get-list-begin (item struct prevs)
@@ -1630,8 +1630,7 @@ as returned by `org-list-prevs-alist'."
           ;; Pretend that bullets are uppercase and check if alphabet
           ;; is sufficient, taking counters into account.
           (while item
-            (let ((bul (org-list-get-bullet item struct))
-                  (count (org-list-get-counter item struct)))
+            (let ((count (org-list-get-counter item struct)))
               ;; Virtually determine current bullet
               (if (and count (string-match "[a-zA-Z]" count))
                   ;; Counters are not case-sensitive.
@@ -1728,7 +1727,7 @@ This function modifies STRUCT."
                  (replace-match "1" nil nil bullet))
                 ;; Not an ordered list: keep bullet.
                 (t bullet)))))))))
-    (mapc fix-bul (mapcar 'car struct))))
+    (mapc fix-bul (mapcar #'car struct))))
 
 (defun org-list-struct-fix-ind (struct parents &optional bullet-size)
   "Verify and correct indentation in STRUCT.
@@ -1756,7 +1755,7 @@ This function modifies STRUCT."
                                  org-list-indent-offset))
                 ;; If no parent, indent like top-point.
                (org-list-set-ind item struct top-ind))))))
-    (mapc new-ind (mapcar 'car (cdr struct)))))
+    (mapc new-ind (mapcar #'car (cdr struct)))))
 
 (defun org-list-struct-fix-box (struct parents prevs &optional ordered)
   "Verify and correct checkboxes in STRUCT.
@@ -1771,7 +1770,7 @@ break this rule, the function will return the blocking 
item.  In
 all others cases, the return value will be nil.
 
 This function modifies STRUCT."
-  (let ((all-items (mapcar 'car struct))
+  (let ((all-items (mapcar #'car struct))
        (set-parent-box
         (function
          (lambda (item)
@@ -1942,8 +1941,8 @@ Initial position of cursor is restored after the changes."
       ;;    same amount of indentation.  Each slice follow the pattern
       ;;    (END BEG DELTA MAX-IND-OR-NIL).  Slices are returned in
       ;;    reverse order.
-      (setq all-ends (sort (append (mapcar 'car itm-shift)
-                                  (org-uniquify (mapcar 'car end-list)))
+      (setq all-ends (sort (append (mapcar #'car itm-shift)
+                                  (org-uniquify (mapcar #'car end-list)))
                           '<))
       (while (cdr all-ends)
        (let* ((up (pop all-ends))
@@ -2327,7 +2326,7 @@ in subtree, ignoring drawers."
           lim-up
           lim-down
           (drawer-re (concat "^[ \t]*:\\("
-                             (mapconcat 'regexp-quote org-drawers "\\|")
+                             (mapconcat #'regexp-quote org-drawers "\\|")
                              "\\):[ \t]*$"))
           (keyword-re (concat "^[ \t]*\\<\\(" org-scheduled-string
                               "\\|" org-deadline-string
@@ -2335,7 +2334,7 @@ in subtree, ignoring drawers."
                               "\\|" org-clock-string "\\)"
                               " *[[<]\\([^]>]+\\)[]>]"))
           (orderedp (org-entry-get nil "ORDERED"))
-          (bounds
+          (_bounds
            ;; In a region, start at first item in region.
            (cond
             ((org-region-active-p)
@@ -2391,7 +2390,7 @@ in subtree, ignoring drawers."
               (bottom (copy-marker (org-list-get-bottom-point struct)))
               (items-to-toggle (org-remove-if
                                 (lambda (e) (or (< e lim-up) (> e lim-down)))
-                                (mapcar 'car struct))))
+                                (mapcar #'car struct))))
          (mapc (lambda (e) (org-list-set-checkbox
                             e struct
                             ;; If there is no box at item, leave as-is
@@ -2473,7 +2472,7 @@ With optional prefix argument ALL, do this for the whole 
buffer."
                          (items
                           (cond
                            ((and recursivep item) (org-list-get-subtree item 
s))
-                           (recursivep (mapcar 'car s))
+                           (recursivep (mapcar #'car s))
                            (item (org-list-get-children item s par))
                            (t (org-list-get-all-items
                                (org-list-get-top-point s) s pre))))
@@ -2486,7 +2485,7 @@ With optional prefix argument ALL, do this for the whole 
buffer."
                 structs)
                (cons c-on c-all)))))
          (backup-end 1)
-         cookies-list structs-bak box-num)
+         cookies-list structs-bak)
       (goto-char (car bounds))
       ;; 1. Build an alist for each cookie found within BOUNDS.  The
       ;;    key will be position at beginning of cookie and values
@@ -2749,6 +2748,7 @@ If a region is active, all items inside will be moved."
      (t (error "Not at an item")))))
 
 (defvar org-tab-ind-state)
+(defvar org-adapt-indentation)
 (defun org-cycle-item-indentation ()
   "Cycle levels of indentation of an empty item.
 The first run indents the item, if applicable.  Subsequent runs
@@ -2940,13 +2940,13 @@ will be parsed as:
   \(3 \"last item\"\)\)
 
 Point is left at list end."
+  (defvar parse-item)                   ;FIXME: Or use `cl-labels' or `letrec'.
   (let* ((struct (org-list-struct))
         (prevs (org-list-prevs-alist struct))
         (parents (org-list-parents-alist struct))
         (top (org-list-get-top-point struct))
         (bottom (org-list-get-bottom-point struct))
         out
-        parse-item                     ; for byte-compiler
         (get-text
          (function
           ;; Return text between BEG and END, trimmed, with
@@ -3072,7 +3072,7 @@ for this list."
              (re-search-forward (org-item-beginning-re) bottom-point t)
              (match-beginning 0)))
           (plain-list (buffer-substring-no-properties top-point bottom-point))
-          beg txt)
+          beg)
       (unless (fboundp transform)
        (error "No such transformation function %s" transform))
       (let ((txt (funcall transform plain-list)))
@@ -3082,7 +3082,8 @@ for this list."
          (unless (re-search-forward
                   (concat "BEGIN RECEIVE ORGLST +"
                           name
-                          "\\([ \t]\\|$\\)") nil t)
+                          "\\([ \t]\\|$\\)")
+                   nil t)
            (error "Don't know where to insert translated list"))
          (goto-char (match-beginning 0))
          (beginning-of-line 2)
@@ -3230,7 +3231,7 @@ items."
                                      items (or (eval isep) ""))))))))
     (concat (funcall export-sublist list 0) "\n")))
 
-(defun org-list-to-latex (list &optional params)
+(defun org-list-to-latex (list &optional _params)
   "Convert LIST into a LaTeX list.
 LIST is as string representing the list to transform, as Org
 syntax.  Return converted list as a string."
@@ -3244,7 +3245,7 @@ syntax.  Return converted list as a string."
   (require 'ox-html)
   (org-export-string-as list 'html t))
 
-(defun org-list-to-texinfo (list &optional params)
+(defun org-list-to-texinfo (list &optional _params)
   "Convert LIST into a Texinfo list.
 LIST is as string representing the list to transform, as Org
 syntax.  Return converted list as a string."
@@ -3255,14 +3256,15 @@ syntax.  Return converted list as a string."
   "Convert LIST into an Org subtree.
 LIST is as returned by `org-list-parse-list'.  PARAMS is a property list
 with overruling parameters for `org-list-to-generic'."
+  (defvar get-stars) (defvar org--blankp)
   (let* ((rule (cdr (assq 'heading org-blank-before-new-entry)))
         (level (org-reduced-level (or (org-current-level) 0)))
-        (blankp (or (eq rule t)
+        (org--blankp (or (eq rule t)
                     (and (eq rule 'auto)
                          (save-excursion
                            (outline-previous-heading)
                            (org-previous-line-empty-p)))))
-        (get-stars
+        (get-stars ;FIXME: Can't rename without renaming it in org.el as well!
          (function
           ;; Return the string for the heading, depending on depth D
           ;; of current sub-list.
@@ -3277,12 +3279,12 @@ with overruling parameters for `org-list-to-generic'."
      list
      (org-combine-plists
       '(:splice t
-               :dtstart " " :dtend " "
-               :istart (funcall get-stars depth)
-               :icount (funcall get-stars depth)
-               :isep (if blankp "\n\n" "\n")
-               :csep (if blankp "\n\n" "\n")
-               :cbon "DONE" :cboff "TODO" :cbtrans "TODO")
+        :dtstart " " :dtend " "
+        :istart (funcall get-stars depth)
+        :icount (funcall get-stars depth)
+        :isep (if org--blankp "\n\n" "\n")
+        :csep (if org--blankp "\n\n" "\n")
+        :cbon "DONE" :cboff "TODO" :cbtrans "TODO")
       params))))
 
 (provide 'org-list)
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el
index 23c3017..db09909 100644
--- a/lisp/org/org-macs.el
+++ b/lisp/org/org-macs.el
@@ -33,7 +33,7 @@
 
 (eval-and-compile
   (unless (fboundp 'declare-function)
-    (defmacro declare-function (fn file &optional arglist fileonly)
+    (defmacro declare-function (fn file &optional _arglist _fileonly)
       `(autoload ',fn ,file)))
 
   (if (>= emacs-major-version 23)
@@ -48,13 +48,14 @@
 (declare-function org-string-match-p "org-compat" (&rest args))
 
 (defmacro org-with-gensyms (symbols &rest body)
+  (declare (debug (sexp body)) (indent 1))
   `(let ,(mapcar (lambda (s)
-                  `(,s (make-symbol (concat "--" (symbol-name ',s))))) symbols)
+                  `(,s (make-symbol (concat "--" (symbol-name ',s)))))
+                 symbols)
      ,@body))
-(def-edebug-spec org-with-gensyms (sexp body))
-(put 'org-with-gensyms 'lisp-indent-function 1)
 
 (defmacro org-called-interactively-p (&optional kind)
+  (declare (debug (&optional ("quote" symbolp)))) ;Why not just `t'?
   (if (featurep 'xemacs)
       `(interactive-p)
     (if (or (> emacs-major-version 23)
@@ -63,12 +64,11 @@
        ;; defined with no argument in <=23.1
        `(with-no-warnings (called-interactively-p ,kind))
       `(interactive-p))))
-(def-edebug-spec org-called-interactively-p (&optional ("quote" symbolp)))
 
 (defmacro org-bound-and-true-p (var)
   "Return the value of symbol VAR if it is bound, else nil."
+  (declare (debug (symbolp)))
   `(and (boundp (quote ,var)) ,var))
-(def-edebug-spec org-bound-and-true-p (symbolp))
 
 (defun org-string-nw-p (s)
   "Is S a string with a non-white character?"
@@ -97,10 +97,11 @@ Otherwise return nil."
 
 (defmacro org-re (s)
   "Replace posix classes in regular expression."
+  (declare (debug (form)))
   (if (featurep 'xemacs) `(org-substitute-posix-classes ,s) s))
-(def-edebug-spec org-re (form))
 
 (defmacro org-preserve-lc (&rest body)
+  (declare (debug (body)))
   (org-with-gensyms (line col)
     `(let ((,line (org-current-line))
           (,col (current-column)))
@@ -108,12 +109,12 @@ Otherwise return nil."
           (progn ,@body)
         (org-goto-line ,line)
         (org-move-to-column ,col)))))
-(def-edebug-spec org-preserve-lc (body))
 
 ;; Use `org-with-silent-modifications' to ignore cosmetic changes and
 ;; `org-unmodified' to ignore real text modifications
 (defmacro org-unmodified (&rest body)
   "Run BODY while preserving the buffer's `buffer-modified-p' state."
+  (declare (debug (body)))
   (org-with-gensyms (was-modified)
     `(let ((,was-modified (buffer-modified-p)))
        (unwind-protect
@@ -121,9 +122,9 @@ Otherwise return nil."
                 (inhibit-modification-hooks t))
             ,@body)
         (set-buffer-modified-p ,was-modified)))))
-(def-edebug-spec org-unmodified (body))
 
 (defmacro org-without-partial-completion (&rest body)
+  (declare (debug (body)))
   `(if (and (boundp 'partial-completion-mode)
            partial-completion-mode
            (fboundp 'partial-completion-mode))
@@ -133,7 +134,6 @@ Otherwise return nil."
             ,@body)
         (partial-completion-mode 1))
      ,@body))
-(def-edebug-spec org-without-partial-completion (body))
 
 ;; FIXME: Slated for removal.  Current Org mode does not support Emacs < 22
 (defmacro org-maybe-intangible (props)
@@ -150,6 +150,7 @@ We use a macro so that the test can happen at compilation 
time."
 
 (defmacro org-with-point-at (pom &rest body)
   "Move to buffer and point of point-or-marker POM for the duration of BODY."
+  (declare (debug (form body)) (indent 1))
   (org-with-gensyms (mpom)
     `(let ((,mpom ,pom))
        (save-excursion
@@ -157,15 +158,14 @@ We use a macro so that the test can happen at compilation 
time."
         (org-with-wide-buffer
          (goto-char (or ,mpom (point)))
          ,@body)))))
-(def-edebug-spec org-with-point-at (form body))
-(put 'org-with-point-at 'lisp-indent-function 1)
 
 (defmacro org-no-warnings (&rest body)
+  (declare (debug (body)))
   (cons (if (fboundp 'with-no-warnings) 'with-no-warnings 'progn) body))
-(def-edebug-spec org-no-warnings (body))
 
 (defmacro org-with-remote-undo (buffer &rest body)
   "Execute BODY while recording undo information in two buffers."
+  (declare (debug (form body)) (indent 1))
   (org-with-gensyms (cline cmd buf1 buf2 undo1 undo2 c1 c2)
     `(let ((,cline (org-current-line))
           (,cmd this-command)
@@ -187,13 +187,11 @@ We use a macro so that the test can happen at compilation 
time."
           ;; remember which buffer to undo
           (push (list ,cmd ,cline ,buf1 ,c1 ,buf2 ,c2)
                 org-agenda-undo-list))))))
-(def-edebug-spec org-with-remote-undo (form body))
-(put 'org-with-remote-undo 'lisp-indent-function 1)
 
 (defmacro org-no-read-only (&rest body)
   "Inhibit read-only for BODY."
+  (declare (debug (body)))
   `(let ((inhibit-read-only t)) ,@body))
-(def-edebug-spec org-no-read-only (body))
 
 (defconst org-rm-props '(invisible t face t keymap t intangible t mouse-face t
                                   rear-nonsticky t mouse-map t fontified t
@@ -313,7 +311,7 @@ This means that the buffer may change while running BODY,
 but it also means that the buffer should stay alive
 during the operation, because otherwise all these markers will
 point nowhere."
-  (declare (indent 1))
+  (declare (debug (form body)) (indent 1))
   (org-with-gensyms (data rtn)
     `(let ((,data (org-outline-overlay-data ,use-markers))
           ,rtn)
@@ -327,24 +325,28 @@ point nowhere."
                   (and (markerp (cdr c)) (move-marker (cdr c) nil)))
                 ,data)))
        ,rtn)))
-(def-edebug-spec org-save-outline-visibility (form body))
 
 (defmacro org-with-wide-buffer (&rest body)
   "Execute body while temporarily widening the buffer."
+  (declare (debug (body)))
   `(save-excursion
      (save-restriction
        (widen)
        ,@body)))
-(def-edebug-spec org-with-wide-buffer (body))
 
 (defmacro org-with-limited-levels (&rest body)
   "Execute BODY with limited number of outline levels."
-  `(let* ((org-called-with-limited-levels t)
-         (org-outline-regexp (org-get-limited-outline-regexp))
-         (outline-regexp org-outline-regexp)
-         (org-outline-regexp-bol (concat "^" org-outline-regexp)))
-     ,@body))
-(def-edebug-spec org-with-limited-levels (body))
+  (declare (debug (body)))
+  `(progn
+     (defvar org-called-with-limited-levels)
+     (defvar org-outline-regexp)
+     (defvar outline-regexp)
+     (defvar org-outline-regexp-bol)
+     (let* ((org-called-with-limited-levels t)
+            (org-outline-regexp (org-get-limited-outline-regexp))
+            (outline-regexp org-outline-regexp)
+            (org-outline-regexp-bol (concat "^" org-outline-regexp)))
+       ,@body)))
 
 (defvar org-outline-regexp) ; defined in org.el
 (defvar org-odd-levels-only) ; defined in org.el
@@ -365,9 +367,8 @@ The number of levels is controlled by 
`org-inlinetask-min-level'"
     (format-time-string string (seconds-to-time seconds))))
 
 (defmacro org-eval-in-environment (environment form)
+  (declare (debug (form form)) (indent 1))
   `(eval (list 'let ,environment ',form)))
-(def-edebug-spec org-eval-in-environment (form form))
-(put 'org-eval-in-environment 'lisp-indent-function 1)
 
 (defun org-make-parameter-alist (flat)
   "Return alist based on FLAT.
diff --git a/lisp/org/ox-ascii.el b/lisp/org/ox-ascii.el
index 65b6f75..a3284d9 100644
--- a/lisp/org/ox-ascii.el
+++ b/lisp/org/ox-ascii.el
@@ -1965,7 +1965,7 @@ Return output file name."
 
 ;; Local variables:
 ;; generated-autoload-file: "org-loaddefs.el"
-;; coding: utf-8-emacs
+;; coding: utf-8
 ;; End:
 
 ;;; ox-ascii.el ends here
diff --git a/lisp/play/dunnet.el b/lisp/play/dunnet.el
index 2f4536c..877e5db 100644
--- a/lisp/play/dunnet.el
+++ b/lisp/play/dunnet.el
@@ -3099,7 +3099,7 @@ File not found")))
 (defun dun-dos-boot-msg ()
   (sleep-for 3)
   (dun-mprinc "Current time is ")
-  (dun-mprincl (substring (current-time-string) 12 20))
+  (dun-mprincl (format-time-string "%H:%M:%S"))
   (dun-mprinc "Enter new time: ")
   (dun-read-line)
   (if (not dun-batch-mode)
diff --git a/lisp/play/gametree.el b/lisp/play/gametree.el
index ef55015..2c68c40 100644
--- a/lisp/play/gametree.el
+++ b/lisp/play/gametree.el
@@ -248,8 +248,8 @@ This value is simply the outline heading level of the 
current line."
 ;;;; outline layout
 
 (defsubst gametree-show-children-and-entry ()
-  (show-children)
-  (show-entry))
+  (outline-show-children)
+  (outline-show-entry))
 
 (defun gametree-entry-shown-p ()
   (save-excursion
@@ -307,7 +307,7 @@ This value is simply the outline heading level of the 
current line."
       (if (not first-time)
           (outline-next-visible-heading 1))
       (setq first-time nil)
-      (hide-subtree)
+      (outline-hide-subtree)
       (if (nth 0 layout)
           (funcall (nth 0 layout)))
       (if (not (and (nth 1 layout) (listp (nth 1 layout))))
@@ -393,7 +393,7 @@ depth AT-DEPTH or smaller is found."
         (outline-up-heading 1)))
   (beginning-of-line 1)
   (let ((parent-depth (gametree-current-branch-depth)))
-    (show-entry)
+    (outline-show-entry)
     (condition-case nil
         (outline-next-visible-heading 1)
       (error
@@ -601,11 +601,11 @@ shogi, etc.) players, it is a slightly modified version 
of Outline mode.
 (defun gametree-mouse-show-subtree (event)
   (interactive "e")
   (mouse-set-point event)
-  (show-subtree))
+  (outline-show-subtree))
 (defun gametree-mouse-hide-subtree (event)
   (interactive "e")
   (mouse-set-point event)
-  (hide-subtree))
+  (outline-hide-subtree))
 (define-key gametree-mode-map [M-down-mouse-2 M-mouse-2]
   'gametree-mouse-break-line-here)
 (define-key gametree-mode-map [S-down-mouse-1 S-mouse-1]
diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el
index 1ef80c8..ad02485 100644
--- a/lisp/progmodes/cc-awk.el
+++ b/lisp/progmodes/cc-awk.el
@@ -61,6 +61,7 @@
 (cc-bytecomp-defun c-backward-token-1)
 (cc-bytecomp-defun c-beginning-of-statement-1)
 (cc-bytecomp-defun c-backward-sws)
+(cc-bytecomp-defun c-forward-sws)
 
 (defvar awk-mode-syntax-table
   (let ((st (make-syntax-table)))
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 68075f3..94dc34b 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -1317,6 +1317,9 @@ keyword on the line, the keyword is not inserted inside a 
literal, and
   (autoload 'c-subword-mode "cc-subword"
     "Mode enabling subword movement and editing keys." t)))
 
+(declare-function c-forward-subword "ext:cc-subword" (&optional arg))
+(declare-function c-backward-subword "ext:cc-subword" (&optional arg))
+
 ;; "nomenclature" functions + c-scope-operator.
 (defun c-forward-into-nomenclature (&optional arg)
   "Compatibility alias for `c-forward-subword'."
diff --git a/lisp/progmodes/cmacexp.el b/lisp/progmodes/cmacexp.el
index 357625d..19d0473 100644
--- a/lisp/progmodes/cmacexp.el
+++ b/lisp/progmodes/cmacexp.el
@@ -364,8 +364,8 @@ Optional arg DISPLAY non-nil means show messages in the 
echo area."
            ;; Find and delete the mark of the start of the expansion.
            ;; Look for `# nn "file.c"' lines and delete them.
            (goto-char (point-min))
-           (search-forward startmarker)
-           (delete-region 1 (point)))
+            (if (search-forward startmarker nil t)
+                (delete-region 1 (point))))
          (while (re-search-forward (concat "^# [0-9]+ \""
                                            (regexp-quote filename)
                                            "\"") nil t)
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index ad35c48..e06b920 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -30,7 +30,6 @@
 
 (require 'lisp-mode)
 
-(defvar emacs-lisp-mode-abbrev-table nil)
 (define-abbrev-table 'emacs-lisp-mode-abbrev-table ()
   "Abbrev table for Emacs Lisp mode.
 It has `lisp-mode-abbrev-table' as its parent."
@@ -476,11 +475,12 @@ It can be quoted, or be inside a quoted form."
                      (point)))
                (scan-error pos))))
            ;; t if in function position.
-           (funpos (eq (char-before beg) ?\()))
+           (funpos (eq (char-before beg) ?\())
+           (quoted (elisp--form-quoted-p beg)))
       (when (and end (or (not (nth 8 (syntax-ppss)))
                          (eq (char-before beg) ?`)))
         (let ((table-etc
-               (if (not funpos)
+               (if (or (not funpos) quoted)
                    ;; FIXME: We could look at the first element of the list and
                    ;; use it to provide a more specific completion table in 
some
                    ;; cases.  E.g. filter out keywords that are not understood 
by
@@ -492,7 +492,7 @@ It can be quoted, or be inside a quoted form."
                            :company-doc-buffer #'elisp--company-doc-buffer
                            :company-docsig #'elisp--company-doc-string
                            :company-location #'elisp--company-location))
-                    ((elisp--form-quoted-p beg)
+                    (quoted
                      (list nil obarray
                            ;; Don't include all symbols (bug#16646).
                            :predicate (lambda (sym)
@@ -544,10 +544,11 @@ It can be quoted, or be inside a quoted form."
                                         (< (point) beg)))))
                         (list t obarray
                               :predicate (lambda (sym) (get sym 
'error-conditions))))
-                       ((and ?\(
+                       ((and (or ?\( `let `let*)
                              (guard (save-excursion
                                       (goto-char (1- beg))
-                                      (up-list -1)
+                                      (when (eq parent ?\()
+                                        (up-list -1))
                                       (forward-symbol -1)
                                       (looking-at "\\_<let\\*?\\_>"))))
                         (list t obarray
@@ -580,6 +581,7 @@ It can be quoted, or be inside a quoted form."
 (declare-function xref-make-elisp-location "xref" (symbol type file))
 (declare-function xref-make-bogus-location "xref" (message))
 (declare-function xref-make "xref" (description location))
+(declare-function xref-collect-matches "xref" (input dir &optional kind))
 
 (defun elisp-xref-find (action id)
   (require 'find-func)
@@ -588,6 +590,10 @@ It can be quoted, or be inside a quoted form."
       (let ((sym (intern-soft id)))
         (when sym
           (elisp--xref-find-definitions sym))))
+    (`references
+     (elisp--xref-find-matches id 'symbol))
+    (`matches
+     (elisp--xref-find-matches id 'regexp))
     (`apropos
      (elisp--xref-find-apropos id))))
 
@@ -600,12 +606,16 @@ It can be quoted, or be inside a quoted form."
                        (setq sym (car fun-lib))
                        (cdr fun-lib))))
            (`defvar (and (boundp sym)
-                         ;; Don't show minor modes twice.
-                         ;; TODO: If TYPE ever becomes dependent on the
-                         ;; context, move this check outside.
-                         (not (fboundp sym))
-                         (or (symbol-file sym 'defvar)
-                             (help-C-file-name sym 'var))))
+                         (let ((el-file (symbol-file sym 'defvar)))
+                           (if el-file
+                               (and
+                                ;; Don't show minor modes twice.
+                                ;; TODO: If TYPE ever becomes dependent on the
+                                ;; context, move this check outside.
+                                (not (and (fboundp sym)
+                                          (memq sym minor-mode-list)))
+                                el-file)
+                             (help-C-file-name sym 'var)))))
            (`feature (and (featurep sym)
                           ;; Skip when a function with the same name
                           ;; is defined, because it's probably in the
@@ -620,6 +630,12 @@ It can be quoted, or be inside a quoted form."
         (setq file (substring file 0 -1)))
       (xref-make-elisp-location sym type file))))
 
+(defvar elisp--xref-format
+  (let ((str "(%s %s)"))
+    (put-text-property 1 3 'face 'font-lock-keyword-face str)
+    (put-text-property 4 6 'face 'font-lock-function-name-face str)
+    str))
+
 (defun elisp--xref-find-definitions (symbol)
   (save-excursion
     (let (lst)
@@ -631,11 +647,35 @@ It can be quoted, or be inside a quoted form."
                   (xref-make-bogus-location (error-message-string err))))))
           (when loc
             (push
-             (xref-make (format "(%s %s)" type symbol)
+             (xref-make (format elisp--xref-format type symbol)
                         loc)
              lst))))
       lst)))
 
+(defvar package-user-dir)
+
+(defun elisp--xref-find-matches (symbol kind)
+  (let* ((dirs (sort
+                (mapcar
+                 (lambda (dir)
+                   (file-name-as-directory (expand-file-name dir)))
+                 ;; It's one level above a number of `load-path'
+                 ;; elements (one for each installed package).
+                 ;; Save us some process calls.
+                 (cons package-user-dir load-path))
+                #'string<))
+         (ref dirs))
+    ;; Delete subdirectories from the list.
+    (while (cdr ref)
+      (if (string-prefix-p (car ref) (cadr ref))
+          (setcdr ref (cddr ref))
+        (setq ref (cdr ref))))
+    (cl-mapcan
+     (lambda (dir)
+       (and (file-exists-p dir)
+            (xref-collect-matches symbol dir kind)))
+     dirs)))
+
 (defun elisp--xref-find-apropos (regexp)
   (apply #'nconc
          (let (lst)
@@ -1141,13 +1181,13 @@ which see."
     (cond ((null current-fnsym)
           nil)
          ((eq current-symbol (car current-fnsym))
-          (or (apply #'elisp--get-fnsym-args-string current-fnsym)
-              (elisp--get-var-docstring current-symbol)))
+          (or (apply #'elisp-get-fnsym-args-string current-fnsym)
+              (elisp-get-var-docstring current-symbol)))
          (t
-          (or (elisp--get-var-docstring current-symbol)
-              (apply #'elisp--get-fnsym-args-string current-fnsym))))))
+          (or (elisp-get-var-docstring current-symbol)
+              (apply #'elisp-get-fnsym-args-string current-fnsym))))))
 
-(defun elisp--get-fnsym-args-string (sym &optional index)
+(defun elisp-get-fnsym-args-string (sym &optional index prefix)
   "Return a string containing the parameter list of the function SYM.
 If SYM is a subr and no arglist is obtainable from the docstring
 or elsewhere, return a 1-line docstring."
@@ -1164,20 +1204,29 @@ or elsewhere, return a 1-line docstring."
                  (args
                   (cond
                    ((listp advertised) advertised)
-                   ((setq doc (help-split-fundoc (documentation sym t) sym))
+                   ((setq doc (help-split-fundoc
+                               (condition-case nil (documentation sym t)
+                                 (invalid-function nil))
+                               sym))
                     (car doc))
                    (t (help-function-arglist sym)))))
              ;; Stringify, and store before highlighting, downcasing, etc.
-             ;; FIXME should truncate before storing.
-            (elisp--last-data-store sym (elisp--function-argstring args)
+            (elisp--last-data-store sym (elisp-function-argstring args)
                                     'function))))))
     ;; Highlight, truncate.
     (if argstring
-       (elisp--highlight-function-argument sym argstring index))))
-
-(defun elisp--highlight-function-argument (sym args index)
+       (elisp--highlight-function-argument
+         sym argstring index
+         (or prefix
+             (concat (propertize (symbol-name sym) 'face
+                                 (if (functionp sym)
+                                     'font-lock-function-name-face
+                                   'font-lock-keyword-face))
+                     ": "))))))
+
+(defun elisp--highlight-function-argument (sym args index prefix)
   "Highlight argument INDEX in ARGS list for function SYM.
-In the absence of INDEX, just call `elisp--docstring-format-sym-doc'."
+In the absence of INDEX, just call `eldoc-docstring-format-sym-doc'."
   ;; FIXME: This should probably work on the list representation of `args'
   ;; rather than its string representation.
   ;; FIXME: This function is much too long, we need to split it up!
@@ -1262,9 +1311,9 @@ In the absence of INDEX, just call 
`elisp--docstring-format-sym-doc'."
                     ((string= argument "&allow-other-keys")) ; Skip.
                     ;; Back to index 0 in ARG1 ARG2 ARG2 ARG3 etc...
                     ;; like in `setq'.
-                   ((or (and (string-match-p "\\.\\.\\.$" argument)
+                   ((or (and (string-match-p "\\.\\.\\.\\'" argument)
                               (string= argument (car (last args-lst))))
-                         (and (string-match-p "\\.\\.\\.$"
+                         (and (string-match-p "\\.\\.\\.\\'"
                                               (substring args 1 (1- (length 
args))))
                               (= (length (remove "..." args-lst)) 2)
                               (> index 1) (eq (logand index 1) 1)))
@@ -1279,14 +1328,12 @@ In the absence of INDEX, just call 
`elisp--docstring-format-sym-doc'."
       (when start
        (setq doc (copy-sequence args))
        (add-text-properties start end (list 'face argument-face) doc))
-      (setq doc (elisp--docstring-format-sym-doc
-                sym doc (if (functionp sym) 'font-lock-function-name-face
-                           'font-lock-keyword-face)))
+      (setq doc (eldoc-docstring-format-sym-doc prefix doc))
       doc)))
 
 ;; Return a string containing a brief (one-line) documentation string for
 ;; the variable.
-(defun elisp--get-var-docstring (sym)
+(defun elisp-get-var-docstring (sym)
   (cond ((not sym) nil)
         ((and (eq sym (aref elisp--eldoc-last-data 0))
               (eq 'variable (aref elisp--eldoc-last-data 2)))
@@ -1294,7 +1341,7 @@ In the absence of INDEX, just call 
`elisp--docstring-format-sym-doc'."
         (t
          (let ((doc (documentation-property sym 'variable-documentation t)))
            (when doc
-             (let ((doc (elisp--docstring-format-sym-doc
+             (let ((doc (eldoc-docstring-format-sym-doc
                          sym (elisp--docstring-first-line doc)
                          'font-lock-variable-name-face)))
                (elisp--last-data-store sym doc 'variable)))))))
@@ -1318,36 +1365,6 @@ In the absence of INDEX, just call 
`elisp--docstring-format-sym-doc'."
                    (substring doc start (match-beginning 0)))
                   ((zerop start) doc)
                   (t (substring doc start))))))))
-
-(defvar eldoc-echo-area-use-multiline-p)
-
-;; If the entire line cannot fit in the echo area, the symbol name may be
-;; truncated or eliminated entirely from the output to make room for the
-;; description.
-(defun elisp--docstring-format-sym-doc (sym doc face)
-  (save-match-data
-    (let* ((name (symbol-name sym))
-           (ea-multi eldoc-echo-area-use-multiline-p)
-           ;; Subtract 1 from window width since emacs will not write
-           ;; any chars to the last column, or in later versions, will
-           ;; cause a wraparound and resize of the echo area.
-           (ea-width (1- (window-width (minibuffer-window))))
-           (strip (- (+ (length name) (length ": ") (length doc)) ea-width)))
-      (cond ((or (<= strip 0)
-                 (eq ea-multi t)
-                 (and ea-multi (> (length doc) ea-width)))
-             (format "%s: %s" (propertize name 'face face) doc))
-            ((> (length doc) ea-width)
-             (substring (format "%s" doc) 0 ea-width))
-            ((>= strip (length name))
-             (format "%s" doc))
-            (t
-             ;; Show the end of the partial symbol name, rather
-             ;; than the beginning, since the former is more likely
-             ;; to be unique given package namespace conventions.
-             (setq name (substring name strip))
-             (format "%s: %s" (propertize name 'face face) doc))))))
-
 
 ;; Return a list of current function name and argument index.
 (defun elisp--fnsym-in-current-sexp ()
@@ -1392,7 +1409,7 @@ In the absence of INDEX, just call 
`elisp--docstring-format-sym-doc'."
          (memq (char-syntax c) '(?w ?_))
          (intern-soft (current-word)))))
 
-(defun elisp--function-argstring (arglist)
+(defun elisp-function-argstring (arglist)
   "Return ARGLIST as a string enclosed by ().
 ARGLIST is either a string, or a list of strings or symbols."
   (let ((str (cond ((stringp arglist) arglist)
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index b470352..7a87377 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -947,6 +947,7 @@ onto a ring and may be popped back to with \\[pop-tag-mark].
 Contrast this with the ring of marks gone to by the command.
 
 See documentation of variable `tags-file-name'."
+  (declare (obsolete xref-find-definitions "25.1"))
   (interactive (find-tag-interactive "Find tag: "))
   (let* ((buf (find-tag-noselect tagname next-p regexp-p))
         (pos (with-current-buffer buf (point))))
@@ -2073,12 +2074,28 @@ for \\[find-tag] (which see)."
 ;; we hit the limit rarely.
 (defconst etags--xref-limit 1000)
 
+(defvar etags-xref-find-definitions-tag-order '(tag-exact-match-p
+                                                tag-implicit-name-match-p)
+  "Tag order used in `etags-xref-find' to look for definitions.")
+
 ;;;###autoload
 (defun etags-xref-find (action id)
   (pcase action
     (`definitions (etags--xref-find-definitions id))
+    (`references (etags--xref-find-matches id 'symbol))
+    (`matches (etags--xref-find-matches id 'regexp))
     (`apropos (etags--xref-find-definitions id t))))
 
+(defun etags--xref-find-matches (input kind)
+  (let ((dirs (if tags-table-list
+                  (mapcar #'file-name-directory tags-table-list)
+                ;; If no tags files are loaded, prompt for the dir.
+                (list (read-directory-name "In directory: " nil nil t)))))
+    (cl-mapcan
+     (lambda (dir)
+       (xref-collect-matches input dir kind))
+     dirs)))
+
 (defun etags--xref-find-definitions (pattern &optional regexp?)
   ;; This emulates the behaviour of `find-tag-in-order' but instead of
   ;; returning one match at a time all matches are returned as list.
@@ -2094,7 +2111,7 @@ for \\[find-tag] (which see)."
       (while (visit-tags-table-buffer (not first-time))
         (setq first-time nil)
         (dolist (order-fun (cond (regexp? find-tag-regexp-tag-order)
-                                 (t find-tag-tag-order)))
+                                 (t etags-xref-find-definitions-tag-order)))
           (goto-char (point-min))
           (while (and (funcall search-fun pattern nil t)
                       (< (hash-table-count marks) etags--xref-limit))
@@ -2129,6 +2146,10 @@ for \\[find-tag] (which see)."
         (etags-goto-tag-location tag-info)
         (point-marker)))))
 
+(cl-defmethod xref-location-line ((l xref-etags-location))
+  (with-slots (tag-info) l
+    (nth 1 tag-info)))
+
 
 (provide 'etags)
 
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index 40c40ee..02a8ec8 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -1445,12 +1445,8 @@ Otherwise just move the line.  Move down unless UP is 
non-nil."
   (interactive "p")
   (idlwave-shell-move-or-history nil arg))
 
-;; Newer versions of comint.el changed the name of comint-filter to
-;; comint-output-filter.
-(defalias 'idlwave-shell-comint-filter
-  (if (fboundp 'comint-output-filter)
-      #'comint-output-filter
-    #'comint-filter))
+(define-obsolete-function-alias 'idlwave-shell-comint-filter
+  'comint-output-filter "25.1")
 
 (defun idlwave-shell-is-running ()
   "Return t if the shell process is running."
@@ -1496,7 +1492,7 @@ and then calls `idlwave-shell-send-command' for any 
pending commands."
                     (get-buffer-create idlwave-shell-hidden-output-buffer))
                    (goto-char (point-max))
                    (insert string))
-               (idlwave-shell-comint-filter proc string))
+               (comint-output-filter proc string))
              ;; Watch for magic - need to accumulate the current line
              ;; since it may not be sent all at once.
              (if (string-match "\n" string)
@@ -1552,7 +1548,7 @@ and then calls `idlwave-shell-send-command' for any 
pending commands."
                  (if idlwave-shell-hide-output
                      (if (and idlwave-shell-show-if-error
                               (eq idlwave-shell-current-state 'error))
-                         (idlwave-shell-comint-filter proc full-output)
+                         (comint-output-filter proc full-output)
                        ;; If it's only *mostly* hidden, filter % lines,
                        ;; and show anything that remains
                        (if (eq idlwave-shell-hide-output 'mostly)
@@ -1560,7 +1556,7 @@ and then calls `idlwave-shell-send-command' for any 
pending commands."
                                   (idlwave-shell-filter-hidden-output
                                    full-output)))
                              (if filtered
-                                 (idlwave-shell-comint-filter
+                                 (comint-output-filter
                                   proc filtered))))))
 
                  ;; Call the post-command hook
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 62f19f4..f06c5c7 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -2852,10 +2852,6 @@ with `js--js-encode-value'."
 (defsubst js--js-true (value)
   (not (js--js-not value)))
 
-;; The somewhat complex code layout confuses the byte-compiler into
-;; thinking this function "might not be defined at runtime".
-(declare-function js--optimize-arglist "js" (arglist))
-
 (eval-and-compile
   (defun js--optimize-arglist (arglist)
     "Convert immediate js< and js! references to deferred ones."
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index eb17d07..4b0a028 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -2268,7 +2268,8 @@ banner and the initial prompt are received separately."
       (while t
         (when (not (accept-process-output process timeout))
           (throw 'found nil))
-        (when (looking-back regexp)
+        (when (looking-back
+               regexp (car (python-util-comint-last-prompt)))
           (throw 'found t))))))
 
 (defun python-shell-comint-end-of-output-p (output)
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index 8f7705b..e4e9655 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -1028,7 +1028,8 @@ Returns nil if line starts inside a string, t if in a 
comment."
     (with-current-buffer (process-buffer proc)
       ;; Delete prompt if requested.
       (when (marker-buffer inferior-tcl-delete-prompt-marker)
-        (delete-region (process-mark proc) inferior-tcl-delete-prompt-marker)
+       (let ((inhibit-read-only t))
+         (delete-region (process-mark proc) inferior-tcl-delete-prompt-marker))
         (set-marker inferior-tcl-delete-prompt-marker nil))))
   (comint-output-filter proc string))
 
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 5720654..a1ad49e 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -123,7 +123,7 @@
 ;;; Code:
 
 ;; This variable will always hold the version number of the mode
-(defconst verilog-mode-version "2015-02-20-0d6420b-vpo"
+(defconst verilog-mode-version "2015-05-14-6232468-vpo-GNU"
   "Version of this Verilog mode.")
 (defconst verilog-mode-release-emacs t
   "If non-nil, this version of Verilog mode was released with Emacs itself.")
@@ -282,6 +282,50 @@ STRING should be given if the last search was by 
`string-match' on STRING."
     ;; Emacs.
     (defalias 'verilog-regexp-opt 'regexp-opt)))
 
+;; emacs >=22 has looking-back, but older emacs and xemacs don't.
+;; This function is lifted directly from emacs's subr.el
+;; so that it can be used by xemacs.
+;; The idea for this was borrowed from org-mode via this link:
+;; https://lists.gnu.org/archive/html/emacs-orgmode/2009-12/msg00032.html
+(eval-and-compile
+  (cond
+   ((fboundp 'looking-back)
+    (defalias 'verilog-looking-back 'looking-back))
+   (t
+    (defun verilog-looking-back (regexp limit &optional greedy)
+      "Return non-nil if text before point matches regular expression REGEXP.
+Like `looking-at' except matches before point, and is slower.
+LIMIT if non-nil speeds up the search by specifying a minimum
+starting position, to avoid checking matches that would start
+before LIMIT.
+
+If GREEDY is non-nil, extend the match backwards as far as
+possible, stopping when a single additional previous character
+cannot be part of a match for REGEXP.  When the match is
+extended, its starting position is allowed to occur before
+LIMIT.
+
+As a general recommendation, try to avoid using `looking-back'
+wherever possible, since it is slow."
+   (let ((start (point))
+         (pos
+          (save-excursion
+            (and (re-search-backward (concat "\\(?:" regexp "\\)\\=") limit t)
+                 (point)))))
+     (if (and greedy pos)
+         (save-restriction
+           (narrow-to-region (point-min) start)
+           (while (and (> pos (point-min))
+                       (save-excursion
+                         (goto-char pos)
+                         (backward-char 1)
+                         (looking-at (concat "\\(?:"  regexp "\\)\\'"))))
+             (setq pos (1- pos)))
+           (save-excursion
+             (goto-char pos)
+             (looking-at (concat "\\(?:"  regexp "\\)\\'")))))
+     (not (null pos)))))))
+
 (eval-and-compile
   ;; Both xemacs and emacs
   (condition-case nil
@@ -662,9 +706,10 @@ to see the effect as font color choices are cached by 
Emacs."
 
 (defcustom verilog-highlight-grouping-keywords nil
   "Non-nil means highlight grouping keywords more dramatically.
-If false, these words are in the `font-lock-type-face'; if True then they are 
in
-`verilog-font-lock-ams-face'.  Some find that special highlighting on these
-grouping constructs allow the structure of the code to be understood at a 
glance."
+If false, these words are in the `font-lock-type-face'; if True
+then they are in `verilog-font-lock-grouping-keywords-face'.
+Some find that special highlighting on these grouping constructs
+allow the structure of the code to be understood at a glance."
   :group 'verilog-mode-indent
   :type 'boolean)
 (put 'verilog-highlight-grouping-keywords 'safe-local-variable 
'verilog-booleanp)
@@ -1880,14 +1925,22 @@ find the errors."
 (if (featurep 'xemacs) (add-hook 'compilation-mode-hook 
'verilog-error-regexp-add-xemacs))
 (if (featurep 'emacs) (add-hook 'compilation-mode-hook 
'verilog-error-regexp-add-emacs))
 
-(defconst verilog-directive-re
+(defconst verilog-compiler-directives
   (eval-when-compile
-    (verilog-regexp-words
-     '(
-   "`case" "`default" "`define" "`else" "`elsif" "`endfor" "`endif"
-   "`endprotect" "`endswitch" "`endwhile" "`for" "`format" "`if" "`ifdef"
-   "`ifndef" "`include" "`let" "`protect" "`switch" "`timescale"
-   "`time_scale" "`undef" "`while" ))))
+    '( ;; compiler directives, from IEEE 1800-2012 section 22.1
+    "`__FILE__" "`__LINE" "`begin_keywords" "`celldefine" "`default_nettype"
+    "`define" "`else" "`elsif" "`end_keywords" "`endcelldefine" "`endif"
+    "`ifdef" "`ifndef" "`include" "`line" "`nounconnected_drive" "`pragma"
+    "`resetall" "`timescale" "`unconnected_drive" "`undef" "`undefineall"
+     ;; compiler directives not covered by IEEE 1800
+     "`case" "`default" "`endfor" "`endprotect" "`endswitch" "`endwhile" "`for"
+     "`format" "`if" "`let" "`protect" "`switch" "`timescale" "`time_scale"
+     "`while"
+     ))
+  "List of Verilog compiler directives.")
+
+(defconst verilog-directive-re
+  (verilog-regexp-words verilog-compiler-directives))
 
 (defconst verilog-directive-re-1
   (concat "[ \t]*"  verilog-directive-re))
@@ -2411,11 +2464,9 @@ find the errors."
    "\\(\\<begin\\>\\)\\|"                       ; 1
    "\\(\\<else\\>\\)\\|"                        ; 2
    "\\(\\<end\\>\\s-+\\<else\\>\\)\\|"          ; 3
-   "\\(\\<always_comb\\>\\(\[ address@hidden)?\\)\\|"  ; 4
-   "\\(\\<always_ff\\>\\(\[ address@hidden)?\\)\\|"    ; 5
-   "\\(\\<always_latch\\>\\(\[ address@hidden)?\\)\\|" ; 6
+   "\\(\\<always\\(?:_ff\\)?\\>\\(?:\[ address@hidden)\\)\\|"    ; 4 (matches 
always or always_ff w/ @...)
+   "\\(\\<always\\(?:_comb\\|_latch\\)?\\>\\)\\|"  ; 5 (matches always, 
always_comb, always_latch w/o @...)
    "\\(\\<fork\\>\\)\\|"                        ; 7
-   "\\(\\<always\\>\\(\[ address@hidden)?\\)\\|"
    "\\(\\<if\\>\\)\\|"
    verilog-property-re "\\|"
    "\\(\\(" verilog-label-re "\\)?\\<assert\\>\\)\\|"
@@ -2581,10 +2632,10 @@ find the errors."
 (defconst verilog-declaration-re
   (concat "\\(" verilog-declaration-prefix-re "\\s-*\\)?" 
verilog-declaration-core-re))
 (defconst verilog-range-re "\\(\\[[^]]*\\]\\s-*\\)+")
-(defconst verilog-optional-signed-re "\\s-*\\(signed\\)?")
+(defconst verilog-optional-signed-re "\\s-*\\(\\(un\\)?signed\\)?")
 (defconst verilog-optional-signed-range-re
   (concat
-   "\\s-*\\(\\<\\(reg\\|wire\\)\\>\\s-*\\)?\\(\\<signed\\>\\s-*\\)?\\(" 
verilog-range-re "\\)?"))
+   
"\\s-*\\(\\<\\(reg\\|wire\\)\\>\\s-*\\)?\\(\\<\\(un\\)?signed\\>\\s-*\\)?\\(" 
verilog-range-re "\\)?"))
 (defconst verilog-macroexp-re "`\\sw+")
 
 (defconst verilog-delay-re 
"#\\s-*\\(\\([0-9_]+\\('s?[hdxbo][0-9a-fA-F_xz]+\\)?\\)\\|\\(([^()]*)\\)\\|\\(\\sw+\\)\\)")
@@ -2799,17 +2850,23 @@ find the errors."
      ;; from http://www.emacswiki.org/emacs/MultilineRegexp
      (concat "\\<\\(`define\\|`if\\)\\>" ;; directive
             "\\s-+" ;; separator
-            "\\(.*\\(?:\n.*\\)*?\\)" ;; definition: to tend of line, the maybe 
more lines (excludes any trailing \n)
+             "\\(?:.*?\\(?:\n.*\\)*?\\)" ;; definition: to end of line, then 
maybe more lines (excludes any trailing \n)
+            "\\(?:\n\\s-*\n\\|\\'\\)") ;; blank line or EOF
+     "\\)\\|\\(?:"
+     ;; `<macro>() : i.e. `uvm_info(a,b,c) or any other pre-defined macro
+     ;; Since parameters inside the macro can have parentheses, and
+     ;; the macro can span multiple lines, just look for the opening
+     ;; parentheses and then continue to the end of the first
+     ;; non-escaped EOL
+     (concat "\\<`\\w+\\>\\s-*("
+      "\\(?:.*?\\(?:\n.*\\)*?\\)" ;; definition: to end of line, then maybe 
more lines (excludes any trailing \n)
             "\\(?:\n\\s-*\n\\|\\'\\)") ;; blank line or EOF
      "\\)"
      )))
 
 (defconst verilog-keywords
-  '( "`case" "`default" "`define" "`else" "`endfor" "`endif"
-     "`endprotect" "`endswitch" "`endwhile" "`for" "`format" "`if" "`ifdef"
-     "`ifndef" "`include" "`let" "`protect" "`switch" "`timescale"
-     "`time_scale" "`undef" "`while"
-
+  (append verilog-compiler-directives
+   '(
      "after" "alias" "always" "always_comb" "always_ff" "always_latch" "and"
      "assert" "assign" "assume" "automatic" "before" "begin" "bind"
      "bins" "binsof" "bit" "break" "buf" "bufif0" "bufif1" "byte"
@@ -2851,7 +2908,7 @@ find the errors."
      "sync_reject_on" "unique0" "until" "until_with" "untyped" "weak"
      ;; 1800-2012
      "implements" "interconnect" "nettype" "soft"
-     )
+     ))
   "List of Verilog keywords.")
 
 (defconst verilog-comment-start-regexp "//\\|/\\*"
@@ -2955,10 +3012,10 @@ See also `verilog-font-lock-extra-types'.")
 (defface verilog-font-lock-grouping-keywords-face
   '((((class color)
       (background light))
-     (:foreground "red4" :bold t ))
+     (:foreground "Purple" :bold t ))
     (((class color)
       (background dark))
-     (:foreground "red4" :bold t ))
+     (:foreground "orange1" :bold t ))
     (t (:italic t)))
   "Font lock mode face used to highlight verilog grouping keywords."
   :group 'font-lock-highlighting-faces)
@@ -3068,7 +3125,7 @@ See also `verilog-font-lock-extra-types'.")
         ;; Fontify all types
         (if verilog-highlight-grouping-keywords
             (cons (concat "\\<\\(" verilog-font-grouping-keywords "\\)\\>")
-                  'verilog-font-lock-ams-face)
+                  'verilog-font-lock-grouping-keywords-face)
           (cons (concat "\\<\\(" verilog-font-grouping-keywords "\\)\\>")
                 'font-lock-type-face))
         (cons (concat "\\<\\(" verilog-type-font-keywords "\\)\\>")
@@ -4200,6 +4257,8 @@ Uses `verilog-scan' cache."
        (not (or
              ;; stop if beginning of buffer
              (bobp)
+             ;; stop if looking at a pre-processor directive
+             (looking-at "`\\w+")
              ;; stop if we find a ;
              (= (preceding-char) ?\;)
              ;; stop if we see a named coverpoint
@@ -4208,12 +4267,13 @@ Uses `verilog-scan' cache."
              (not (or (looking-at "\\<") (forward-word -1)))
              ;; stop if we see an assertion (perhaps labeled)
              (and
-              (looking-at 
"\\(\\<\\(assert\\|assume\\|cover\\)\\>\\s-+\\<property\\>\\)\\|\\(\\<assert\\>\\)")
+              (looking-at 
"\\(\\w+\\W*:\\W*\\)?\\(\\<\\(assert\\|assume\\|cover\\)\\>\\s-+\\<property\\>\\)\\|\\(\\<assert\\>\\)")
               (progn
                 (setq h (point))
                 (save-excursion
                   (verilog-backward-token)
-                  (if (looking-at verilog-label-re)
+                  (if (and (looking-at verilog-label-re)
+                           (not (looking-at verilog-end-block-re)))
                       (setq h (point))))
                 (goto-char h)))
              ;; stop if we see an extended complete reg, perhaps a complete one
@@ -4715,8 +4775,8 @@ primitive or interface named NAME."
                                            (setq str (concat " // else: 
!assert " str ))
                                            (throw 'skip 1)))))))))
 
-                            (; always_comb, always_ff, always_latch
-                             (or (match-end 4) (match-end 5) (match-end 6))
+                            (; always, always_comb, always_latch w/o @...
+                             (match-end 5)
                              (goto-char (match-end 0))
                              (setq there (point))
                              (setq err nil)
@@ -4800,6 +4860,9 @@ primitive or interface named NAME."
                                (throw 'skip 1))))
                         ))))
                  (end-of-line)
+      (if kill-existing-comment
+          (verilog-kill-existing-comment))
+      (delete-horizontal-space)
                  (insert (concat " // " string ))))
 
               (;- this is 
end{function,generate,task,module,primitive,table,generate}
@@ -5161,7 +5224,8 @@ FILENAME to find directory to run in, or defaults to 
`buffer-file-name`."
           ;; We should use font-lock-ensure in preference to
           ;; font-lock-fontify-buffer, but IIUC the problem this is supposed to
           ;; solve only appears in Emacsen older than font-lock-ensure anyway.
-          (when fontlocked (font-lock-fontify-buffer)))))))
+          ;; So avoid bytecomp's interactive-only by going through intern.
+          (when fontlocked (funcall (intern "font-lock-fontify-buffer"))))))))
 
 
 ;;
@@ -5530,8 +5594,12 @@ Return a list of two elements: (INDENT-TYPE 
INDENT-LEVEL)."
           ((equal (char-after) ?\{)
             ;; block type returned based on outer constraint { or inner
            (if (verilog-at-constraint-p)
-                (cond (inconstraint (throw 'nesting 'constraint))
-                      (t            (throw 'nesting 'statement)))))
+                (cond (inconstraint
+                       (beginning-of-line nil)
+                       (skip-chars-forward " \t")
+                       (throw 'nesting 'constraint))
+                      (t
+                       (throw 'nesting 'statement)))))
           ((equal (char-after) ?\})
            (let (par-pos
                   (there (verilog-at-close-constraint-p)))
@@ -6044,7 +6112,16 @@ Optional BOUND limits search."
  (save-match-data
    (save-excursion
      (verilog-re-search-backward "\\((\\*\\)\\|\\(\\*)\\)" nil 'move)
-     (numberp (match-beginning 1)))))
+     (cond
+      ((match-end 1)
+         (progn (goto-char (match-end 1))
+                (not (looking-at "\\s-*)")))
+        nil)
+       ((match-end 2)
+        (progn (goto-char (match-beginning 2))
+               (not (looking-at "(\\s-*")))
+        nil)
+       (t nil)))))
 
 (defun verilog-in-parameter-p ()
  "Return true if point is in a parameter assignment #( p1=1, p2=5)."
@@ -6176,7 +6253,7 @@ Return >0 for nested struct."
                        ))
             ;; if first word token not keyword, it maybe the instance name
             ;;   check next word token
-            (if (looking-at "\\<\\w+\\>\\|\\s-*(\\s-*\\w+")
+            (if (looking-at "\\<\\w+\\>\\|\\s-*(\\s-*\\S-+")
                 (progn (verilog-beg-of-statement)
                        (if (looking-at (concat "\\<\\(constraint\\|"
                                                
"\\(?:\\w+\\s-*:\\s-*\\)?\\(coverpoint\\|cross\\)"
@@ -6275,8 +6352,8 @@ Return >0 for nested struct."
               (goto-char (- (point) 2))
               t) ;; Let nth 4 state handle the rest
              ((and (not (bobp))
-                   (= (char-before) ?\))
-                   (= (char-before (1- (point))) ?\*))
+                   (verilog-looking-back "\\*)" nil)
+                   (not (verilog-looking-back "(\\s-*\\*)" nil)))
               (goto-char (- (point) 2))
               (if (search-backward "(*" nil t)
                   (progn
@@ -6320,7 +6397,8 @@ Return >0 for nested struct."
              (progn
                (goto-char h)
                nil))))
-        ((looking-at "(\\*")
+        ((and (looking-at "(\\*")              ;; attribute start, but not an 
event (*) or (* )
+              (not (looking-at "(\\*\\s-*)")))
          (progn
            (setq h (point))
            (goto-char (match-end 0))
@@ -6375,7 +6453,6 @@ Only look at a few lines to determine indent level."
        (cond
         ((or
           (= (preceding-char) ?\,)
-          (= (preceding-char) ?\])
           (save-excursion
             (verilog-beg-of-statement-1)
             (looking-at verilog-declaration-re)))
@@ -7830,6 +7907,48 @@ Signals must be in standard (base vector) form."
           (nreverse out-list)))))
 ;;(verilog-signals-not-in '(("A" "") ("B" "") ("DEL" "[2:3]")) '(("DEL" "") 
("EXT" "")))
 
+(defun verilog-signals-not-in-struct (in-list not-list)
+  "Return list of signals in IN-LIST that aren't also in NOT-LIST.
+Also remove any duplicates in IN-LIST.
+Any structure in not-list will remove all members in in-list.
+Signals must be in standard (base vector) form."
+  (cond ((eval-when-compile (fboundp 'make-hash-table))
+        (let ((ht (make-hash-table :test 'equal :rehash-size 4.0))
+              out-list addit nm)
+          (while not-list
+            (puthash (car (car not-list)) t ht)
+            (setq not-list (cdr not-list)))
+          (while in-list
+            (setq nm (verilog-sig-name (car in-list)))
+            (when (not (gethash nm ht))
+              (setq addit t)
+              (while (string-match "^\\([^\\].*\\)\\.[^.]+$" nm)
+                (setq nm (match-string 1 nm))
+                (setq addit (and addit
+                                 (not (gethash nm ht)))))
+              (when addit
+                (setq out-list (cons (car in-list) out-list))
+                (puthash (verilog-sig-name (car in-list)) t ht)))
+            (setq in-list (cdr in-list)))
+          (nreverse out-list)))
+       ;; Slower Fallback if no hash tables (pre Emacs 21.1/XEmacs 21.4)
+       (t
+        (let (out-list addit nm)
+          (while in-list
+            (setq nm (verilog-sig-name (car in-list)))
+            (when (and (not (assoc nm not-list))
+                       (not (assoc nm out-list)))
+              (setq addit t)
+              (while (string-match "^\\([^\\].*\\)\\.[^.]+$" nm)
+                (setq nm (match-string 1 nm))
+                (setq addit (and addit
+                                 (not (assoc nm not-list)))))
+              (when addit
+                (setq out-list (cons (car in-list) out-list))))
+            (setq in-list (cdr in-list)))
+          (nreverse out-list)))))
+;;(verilog-signals-not-in-struct '(("A" "") ("B" "") ("DEL.SUB.A" "[2:3]")) 
'(("DEL.SUB" "") ("EXT" "")))
+
 (defun verilog-signals-memory (in-list)
   "Return list of signals in IN-LIST that are memorized (multidimensional)."
   (let (out-list)
@@ -8281,10 +8400,9 @@ Return an array of [outputs inouts inputs wire reg 
assign const]."
                       typedefed nil  multidim nil    ptype nil   modport nil
                       expect-signal 'sigs-assign     sig-paren paren))
                ((member keywd '("localparam" "genvar"))
-                (unless io
-                  (setq vec nil        enum nil      rvalue nil  signed nil
-                        typedefed nil  multidim nil  ptype nil   modport nil
-                        expect-signal 'sigs-const    sig-paren paren)))
+                (setq vec nil        enum nil      rvalue nil  signed nil
+                      typedefed nil  multidim nil  ptype nil   modport nil
+                      expect-signal 'sigs-const    sig-paren paren))
                ((member keywd '("signed" "unsigned"))
                 (setq signed keywd))
                ((member keywd '("assert" "assume" "cover" "expect" "restrict"))
@@ -12134,20 +12252,26 @@ You may also provide an optional third argument 
regular
 expression, in which case only signals which have that pin
 direction and data type matching that regular expression will be
 included.  This matches against everything before the signal name
-in the declaration, for example against \"input\" (single bit),
-\"output logic\" (direction and type) or \"output
-[1:0]\" (direction and implicit type).  You also probably want to
-skip spaces in your regexp.
+in the declaration, for example against \"input\" (single
+bit), \"output logic\" (direction and type) or
+\"output [1:0]\" (direction and implicit type).  You also
+probably want to skip spaces in your regexp.
 
 For example, the below will result in matching the output \"o\"
 against the previous example's module:
 
-          /*AUTOINOUTMODULE(\"ExampMain\",\"\",\"^output.*\")*/"
+          /*AUTOINOUTMODULE(\"ExampMain\",\"\",\"^output.*\")*/
+
+You may also provide an optional fourth argument regular
+expression, which if not \"\" only signals which do NOT match
+that expression are included."
+  ;; Beware spacing of quotes in above as can mess up Emacs indenter
   (save-excursion
-    (let* ((params (verilog-read-auto-params 1 3))
+    (let* ((params (verilog-read-auto-params 1 4))
           (submod (nth 0 params))
           (regexp (nth 1 params))
           (direction-re (nth 2 params))
+          (not-re (nth 3 params))
           submodi)
       ;; Lookup position, etc of co-module
       ;; Note this may raise an error
@@ -12182,20 +12306,24 @@ against the previous example's module:
                             (append (verilog-decls-get-interfaces moddecls)))))
          (forward-line 1)
          (setq sig-list-i  (verilog-signals-edit-wire-reg
-                            (verilog-signals-matching-dir-re
-                             (verilog-signals-matching-regexp sig-list-i 
regexp)
-                             "input" direction-re))
+                            (verilog-signals-not-matching-regexp
+                             (verilog-signals-matching-dir-re
+                              (verilog-signals-matching-regexp sig-list-i 
regexp)
+                              "input" direction-re) not-re))
                sig-list-o  (verilog-signals-edit-wire-reg
-                            (verilog-signals-matching-dir-re
-                             (verilog-signals-matching-regexp sig-list-o 
regexp)
-                             "output" direction-re))
+                            (verilog-signals-not-matching-regexp
+                             (verilog-signals-matching-dir-re
+                              (verilog-signals-matching-regexp sig-list-o 
regexp)
+                              "output" direction-re) not-re))
                sig-list-io (verilog-signals-edit-wire-reg
+                            (verilog-signals-not-matching-regexp
+                             (verilog-signals-matching-dir-re
+                              (verilog-signals-matching-regexp sig-list-io 
regexp)
+                              "inout" direction-re) not-re))
+               sig-list-if (verilog-signals-not-matching-regexp
                             (verilog-signals-matching-dir-re
-                             (verilog-signals-matching-regexp sig-list-io 
regexp)
-                             "inout" direction-re))
-               sig-list-if (verilog-signals-matching-dir-re
-                            (verilog-signals-matching-regexp sig-list-if 
regexp)
-                            "interface" direction-re))
+                             (verilog-signals-matching-regexp sig-list-if 
regexp)
+                             "interface" direction-re) not-re))
          (when v2k (verilog-repair-open-comma))
          (when (or sig-list-i sig-list-o sig-list-io sig-list-if)
            (verilog-insert-indent "// Beginning of automatic in/out/inouts 
(from specific module)\n")
@@ -12262,15 +12390,20 @@ You may also provide an optional third argument 
regular
 expression, in which case only signals which have that pin
 direction and data type matching that regular expression will be
 included.  This matches against everything before the signal name
-in the declaration, for example against \"input\" (single bit),
-\"output logic\" (direction and type) or \"output
-[1:0]\" (direction and implicit type).  You also probably want to
-skip spaces in your regexp.
+in the declaration, for example against \"input\" (single
+bit), \"output logic\" (direction and type)
+or \"output [1:0]\" (direction and implicit type).  You also
+probably want to skip spaces in your regexp.
 
 For example, the below will result in matching the output \"o\"
 against the previous example's module:
 
-          /*AUTOINOUTCOMP(\"ExampMain\",\"\",\"^output.*\")*/"
+          /*AUTOINOUTCOMP(\"ExampMain\",\"\",\"^output.*\")*/
+
+You may also provide an optional fourth argument regular
+expression, which if not \"\" only signals which do NOT match
+that expression are included."
+  ;; Beware spacing of quotes in above as can mess up Emacs indenter
   (verilog-auto-inout-module t nil))
 
 (defun verilog-auto-inout-in ()
@@ -12793,14 +12926,15 @@ Typing \\[verilog-auto] will make this into:
        (verilog-re-search-backward-quick 
"\\(@\\|\\<\\(always\\(_latch\\|_ff\\|_comb\\)?\\)\\>\\)" nil t)
         (setq sigss (verilog-read-always-signals)))
       (setq dly-list (verilog-alw-get-outputs-delayed sigss))
-      (setq sig-list (verilog-signals-not-in (append
-                                             (verilog-alw-get-outputs-delayed 
sigss)
-                                             (when (or (not 
(verilog-alw-get-uses-delayed sigss))
-                                                       
verilog-auto-reset-blocking-in-non)
-                                               
(verilog-alw-get-outputs-immediate sigss)))
-                                            (append
-                                             (verilog-alw-get-temps sigss)
-                                             prereset-sigs)))
+      (setq sig-list (verilog-signals-not-in-struct
+                     (append
+                      (verilog-alw-get-outputs-delayed sigss)
+                      (when (or (not (verilog-alw-get-uses-delayed sigss))
+                                verilog-auto-reset-blocking-in-non)
+                        (verilog-alw-get-outputs-immediate sigss)))
+                     (append
+                      (verilog-alw-get-temps sigss)
+                      prereset-sigs)))
       (setq sig-list (sort sig-list `verilog-signals-sort-compare))
       (when sig-list
        (insert "\n");
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 0257210..ef46e34 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -73,13 +73,17 @@
   "Return a string used to group a set of locations.
 This is typically the filename.")
 
+(cl-defgeneric xref-location-line (_location)
+  "Return the line number corresponding to the location."
+  nil)
+
 ;;;; Commonly needed location classes are defined here:
 
 ;; FIXME: might be useful to have an optional "hint" i.e. a string to
 ;; search for in case the line number is sightly out of date.
 (defclass xref-file-location (xref-location)
   ((file :type string :initarg :file)
-   (line :type fixnum :initarg :line)
+   (line :type fixnum :initarg :line :reader xref-location-line)
    (column :type fixnum :initarg :column))
   :documentation "A file location is a file/line/column triple.
 Line numbers start from 1 and columns from 0.")
@@ -203,6 +207,9 @@ found, return nil.
  (apropos PATTERN): Find all symbols that match PATTERN.  PATTERN
 is a regexp.
 
+ (matches REGEXP): Find all matches for REGEXP in the related
+files.  REGEXP is an Emacs regular expression.
+
 IDENTIFIER can be any string returned by
 `xref-identifier-at-point-function', or from the table returned
 by `xref-identifier-completion-table-function'.
@@ -276,6 +283,20 @@ backward."
   :type 'integer
   :version "25.1")
 
+(defcustom xref-prompt-for-identifier nil
+  "When non-nil, always prompt for the identifier name.
+
+Otherwise, only prompt when there's no value at point we can use,
+or when the command has been called with the prefix argument."
+  :type '(choice (const :tag "always" t)
+                 (const :tag "auto" nil))
+  :version "25.1")
+
+(defcustom xref-pulse-on-jump t
+  "When non-nil, momentarily highlight jump locations."
+  :type 'boolean
+  :version "25.1")
+
 (defvar xref--marker-ring (make-ring xref-marker-ring-length)
   "Ring of markers to implement the marker stack.")
 
@@ -294,7 +315,20 @@ backward."
       (switch-to-buffer (or (marker-buffer marker)
                             (error "The marked buffer has been deleted")))
       (goto-char (marker-position marker))
-      (set-marker marker nil nil))))
+      (set-marker marker nil nil)
+      (xref--maybe-pulse))))
+
+(defun xref--maybe-pulse ()
+  (when xref-pulse-on-jump
+    (let (beg end)
+      (save-excursion
+        (back-to-indentation)
+        (if (eolp)
+            (setq beg (line-beginning-position)
+                  end (1+ (point)))
+          (setq beg (point)
+                end (line-end-position))))
+      (pulse-momentary-highlight-region beg end 'next-error))))
 
 ;; etags.el needs this
 (defun xref-clear-marker-stack ()
@@ -329,7 +363,8 @@ WINDOW controls how the buffer is displayed:
   (cl-ecase window
     ((nil)  (switch-to-buffer (current-buffer)))
     (window (pop-to-buffer (current-buffer) t))
-    (frame  (let ((pop-up-frames t)) (pop-to-buffer (current-buffer) t)))))
+    (frame  (let ((pop-up-frames t)) (pop-to-buffer (current-buffer) t))))
+  (xref--maybe-pulse))
 
 
 ;;; XREF buffer (part of the UI)
@@ -365,6 +400,7 @@ Used for temporary buffers.")
   (with-selected-window (display-buffer (current-buffer) other-window)
     (goto-char pos)
     (recenter recenter-arg)
+    (xref--maybe-pulse)
     (let ((buf (current-buffer))
           (win (selected-window)))
       (with-current-buffer xref-buf
@@ -406,7 +442,9 @@ Used for temporary buffers.")
   (xref-show-location-at-point))
 
 (defun xref--location-at-point ()
-  (get-text-property (point) 'xref-location))
+  (save-excursion
+    (back-to-indentation)
+    (get-text-property (point) 'xref-location)))
 
 (defvar-local xref--window nil
   "ACTION argument to call `display-buffer' with.")
@@ -414,7 +452,6 @@ Used for temporary buffers.")
 (defun xref-goto-xref ()
   "Jump to the xref on the current line and bury the xref buffer."
   (interactive)
-  (back-to-indentation)
   (let ((loc (or (xref--location-at-point)
                  (user-error "No reference at point")))
         (window xref--window))
@@ -435,7 +472,22 @@ Used for temporary buffers.")
 
 (define-derived-mode xref--xref-buffer-mode special-mode "XREF"
   "Mode for displaying cross-references."
-  (setq buffer-read-only t))
+  (setq buffer-read-only t)
+  (setq next-error-function #'xref--next-error-function)
+  (setq next-error-last-buffer (current-buffer)))
+
+(defun xref--next-error-function (n reset?)
+  (when reset?
+    (goto-char (point-min)))
+  (let ((backward (< n 0))
+        (n (abs n))
+        (loc nil))
+    (dotimes (_ n)
+      (setq loc (xref--search-property 'xref-location backward)))
+    (cond (loc
+           (xref--pop-to-location loc))
+          (t
+           (error "No %s xref" (if backward "previous" "next"))))))
 
 (defun xref-quit (&optional kill)
   "Bury temporarily displayed buffers, then quit the current window.
@@ -485,22 +537,35 @@ meantime are preserved."
 XREF-ALIST is of the form ((GROUP . (XREF ...)) ...).  Where
 GROUP is a string for decoration purposes and XREF is an
 `xref--xref' object."
-  (cl-loop for ((group . xrefs) . more1) on xref-alist do
-           (xref--insert-propertized '(face bold) group "\n")
+  (require 'compile) ; For the compilation faces.
+  (cl-loop for ((group . xrefs) . more1) on xref-alist
+           for max-line-width =
+           (cl-loop for xref in xrefs
+                    maximize (let ((line (xref-location-line
+                                          (oref xref :location))))
+                               (length (and line (format "%d" line)))))
+           for line-format = (and max-line-width
+                                  (format "%%%dd: " max-line-width))
+           do
+           (xref--insert-propertized '(face compilation-info) group "\n")
            (cl-loop for (xref . more2) on xrefs do
-                    (insert "  ")
                     (with-slots (description location) xref
-                      (xref--insert-propertized
-                       (list 'xref-location location
-                             'face 'font-lock-keyword-face
-                             'mouse-face 'highlight
-                             'keymap xref--button-map
-                             'help-echo
-                             (concat "mouse-2: display in another window, "
-                                     "RET or mouse-1: follow reference"))
-                       description))
-                    (when (or more1 more2)
-                      (insert "\n")))))
+                      (let* ((line (xref-location-line location))
+                             (prefix
+                              (if line
+                                  (propertize (format line-format line)
+                                              'face 'compilation-line-number)
+                                "  ")))
+                        (xref--insert-propertized
+                         (list 'xref-location location
+                               ;; 'face 'font-lock-keyword-face
+                               'mouse-face 'highlight
+                               'keymap xref--button-map
+                               'help-echo
+                               (concat "mouse-2: display in another window, "
+                                       "RET or mouse-1: follow reference"))
+                         prefix description)))
+                    (insert "\n"))))
 
 (defun xref--analyze (xrefs)
   "Find common filenames in XREFS.
@@ -559,10 +624,10 @@ Return an alist of the form ((FILENAME . (XREF ...)) 
...)."
 (defun xref--read-identifier (prompt)
   "Return the identifier at point or read it from the minibuffer."
   (let ((id (funcall xref-identifier-at-point-function)))
-    (cond ((or current-prefix-arg (not id))
+    (cond ((or current-prefix-arg xref-prompt-for-identifier (not id))
            (completing-read prompt
                             (funcall xref-identifier-completion-table-function)
-                            nil t nil
+                            nil nil nil
                             'xref--read-identifier-history id))
           (t id))))
 
@@ -599,6 +664,12 @@ With prefix argument, prompt for the identifier."
   (interactive (list (xref--read-identifier "Find references of: ")))
   (xref--show-xrefs identifier 'references identifier nil))
 
+;;;###autoload
+(defun xref-find-regexp (regexp)
+  "Find all matches for REGEXP."
+  (interactive (list (xref--read-identifier "Find regexp: ")))
+  (xref--show-xrefs regexp 'matches regexp nil))
+
 (declare-function apropos-parse-pattern "apropos" (pattern))
 
 ;;;###autoload
@@ -650,6 +721,72 @@ and just use etags."
     (setq-local xref-identifier-completion-table-function
                 (cdr xref-etags-mode--saved))))
 
+(declare-function semantic-symref-find-references-by-name "semantic/symref")
+(declare-function semantic-symref-find-text "semantic/symref")
+(declare-function semantic-find-file-noselect "semantic/fw")
+
+(defun xref-collect-matches (input dir &optional kind)
+  "Collect KIND matches for INPUT inside DIR according.
+KIND can be `symbol', `regexp' or nil, the last of which means
+literal matches.  This function uses the Semantic Symbol
+Reference API, see `semantic-symref-find-references-by-name' for
+details on which tools are used, and when."
+  (require 'semantic/symref)
+  (defvar semantic-symref-tool)
+  (cl-assert (directory-name-p dir))
+  (when (null kind)
+    (setq input (regexp-quote input)))
+  (let* ((default-directory dir)
+         (semantic-symref-tool 'detect)
+         (res (if (eq kind 'symbol)
+                  (semantic-symref-find-references-by-name input 'subdirs)
+                (semantic-symref-find-text (xref--regexp-to-extended input)
+                                           'subdirs)))
+         (hits (and res (oref res :hit-lines)))
+         (orig-buffers (buffer-list)))
+    (unwind-protect
+        (delq nil
+              (mapcar (lambda (hit) (xref--collect-match hit input kind)) 
hits))
+      (mapc #'kill-buffer
+            (cl-set-difference (buffer-list) orig-buffers)))))
+
+(defun xref--regexp-to-extended (str)
+  (replace-regexp-in-string
+   ;; FIXME: Add tests.  Move to subr.el, make a public function.
+   ;; Maybe error on Emacs-only constructs.
+   "\\(?:\\\\\\\\\\)*\\(?:\\\\[][]\\)?\\(?:\\[.+?\\]\\|\\(\\\\?[(){}|]\\)\\)"
+   (lambda (str)
+     (cond
+      ((not (match-beginning 1))
+       str)
+      ((eq (length (match-string 1 str)) 2)
+       (concat (substring str 0 (match-beginning 1))
+               (substring (match-string 1 str) 1 2)))
+      (t
+       (concat (substring str 0 (match-beginning 1))
+               "\\"
+               (match-string 1 str)))))
+   str t t))
+
+(defun xref--collect-match (hit input kind)
+  (pcase-let* ((`(,line . ,file) hit)
+               (buf (or (find-buffer-visiting file)
+                        (semantic-find-file-noselect file)))
+               (input (if (eq kind 'symbol)
+                          (format "\\_<%s\\_>" (regexp-quote input))
+                        input)))
+    (with-current-buffer buf
+      (save-excursion
+        (goto-char (point-min))
+        (forward-line (1- line))
+        (when (re-search-forward input (line-end-position) t)
+          (goto-char (match-beginning 0))
+          (xref-make (buffer-substring
+                      (line-beginning-position)
+                      (line-end-position))
+                     (xref-make-file-location file line
+                                              (current-column))))))))
+
 
 (provide 'xref)
 
diff --git a/lisp/saveplace.el b/lisp/saveplace.el
index 4c53632..fe54743 100644
--- a/lisp/saveplace.el
+++ b/lisp/saveplace.el
@@ -50,28 +50,10 @@ visiting file FILENAME goes automatically to position 
POSITION
 rather than the beginning of the buffer.
 This alist is saved between Emacs sessions.")
 
-(defcustom save-place nil
-  "Non-nil means automatically save place in each file.
-This means when you visit a file, point goes to the last place
-where it was when you previously visited the same file.
-
-If you wish your place in any file to always be automatically
-saved, set this to t using the Customize facility, or put the
-following code in your init file:
-
-\(setq-default save-place t)
-\(require 'saveplace)"
-  :type 'boolean
-  :require 'saveplace
-  :group 'save-place)
-
-(make-variable-buffer-local 'save-place)
-
 (defcustom save-place-file (locate-user-emacs-file "places" ".emacs-places")
   "Name of the file that records `save-place-alist' value."
   :version "24.4"                       ; added locate-user-emacs-file
-  :type 'file
-  :group 'save-place)
+  :type 'file)
 
 (defcustom save-place-version-control nil
   "Controls whether to make numbered backups of master save-place file.
@@ -82,8 +64,7 @@ value of `version-control'."
   :type '(radio (const :tag "Unconditionally" t)
                (const :tag "For VC Files" nil)
                (const never)
-               (const :tag "Use value of `version-control'" nospecial))
-  :group 'save-place)
+               (const :tag "Use value of `version-control'" nospecial)))
 
 (defvar save-place-loaded nil
   "Non-nil means that the `save-place-file' has been loaded.")
@@ -92,8 +73,7 @@ value of `version-control'."
   "Maximum number of entries to retain in the list; nil means no limit."
   :version "24.1"                       ; nil -> 400
   :type '(choice (integer :tag "Entries" :value 1)
-                (const :tag "No Limit" nil))
-  :group 'save-place)
+                (const :tag "No Limit" nil)))
 
 (defcustom save-place-forget-unreadable-files t
   "Non-nil means forget place in unreadable files.
@@ -106,7 +86,7 @@ You may do this anytime by calling the complementary 
function,
 `save-place-forget-unreadable-files'.  When this option is turned on,
 this happens automatically before saving `save-place-alist' to
 `save-place-file'."
-  :type 'boolean :group 'save-place)
+  :type 'boolean)
 
 (defcustom save-place-save-skipped t
   "If non-nil, remember files matching `save-place-skip-check-regexp'.
@@ -114,7 +94,7 @@ this happens automatically before saving `save-place-alist' 
to
 When filtering `save-place-alist' for unreadable files, some will not
 be checked, based on said regexp, and instead saved or forgotten based
 on this flag."
-  :type 'boolean :group 'save-place)
+  :type 'boolean)
 
 (defcustom save-place-skip-check-regexp
   ;; thanks to ange-ftp-name-format
@@ -127,7 +107,7 @@ subject to `save-place-save-skipped'.
 
 Files for which such a check may be inconvenient include those on
 removable and network volumes."
-  :type 'regexp :group 'save-place)
+  :type 'regexp)
 
 (defcustom save-place-ignore-files-regexp
   
"\\(?:COMMIT_EDITMSG\\|hg-editor-[[:alnum:]]+\\.txt\\|svn-commit\\.tmp\\|bzr_log\\.[[:alnum:]]+\\)$"
@@ -136,11 +116,34 @@ Useful for temporary file such as commit message files 
that are
 automatically created by the VCS.  If set to nil, this feature is
 disabled, i.e., the position is recorded for all files."
   :version "24.1"
-  :type 'regexp :group 'save-place)
+  :type 'regexp)
 
 (declare-function dired-current-directory "dired" (&optional localp))
 
-(defun toggle-save-place (&optional parg)
+(define-obsolete-variable-alias 'save-place 'save-place-mode "25.1")
+;;;###autoload
+(define-minor-mode save-place-mode
+  "Non-nil means automatically save place in each file.
+This means when you visit a file, point goes to the last place
+where it was when you previously visited the same file."
+  :global t
+  :group 'save-place
+  (cond
+   (save-place-mode
+    (add-hook 'find-file-hook 'save-place-find-file-hook t)
+    (add-hook 'dired-initial-position-hook 'save-place-dired-hook)
+    (unless noninteractive
+      (add-hook 'kill-emacs-hook 'save-place-kill-emacs-hook))
+    (add-hook 'kill-buffer-hook 'save-place-to-alist))
+   (t
+    (remove-hook 'find-file-hook 'save-place-find-file-hook t)
+    (remove-hook 'dired-initial-position-hook 'save-place-dired-hook)
+    (remove-hook 'kill-emacs-hook 'save-place-kill-emacs-hook)
+    (remove-hook 'kill-buffer-hook 'save-place-to-alist))))
+
+(make-variable-buffer-local 'save-place-mode) ; Hysterical raisins.
+
+(defun toggle-save-place (&optional parg) ;FIXME: save-place-local-mode!
   "Toggle whether to save your place in this file between sessions.
 If this mode is enabled, point is recorded when you kill the buffer
 or exit Emacs.  Visiting this file again will go to that position,
@@ -353,15 +356,5 @@ may have changed) back to `save-place-alist'."
   (if save-place-loaded
       (save-place-alist-to-file)))
 
-(add-hook 'find-file-hook 'save-place-find-file-hook t)
-
-(add-hook 'dired-initial-position-hook 'save-place-dired-hook)
-
-(unless noninteractive
-  (add-hook 'kill-emacs-hook 'save-place-kill-emacs-hook))
-
-(add-hook 'kill-buffer-hook 'save-place-to-alist)
-
-(provide 'saveplace) ; why not...
-
+(provide 'saveplace)
 ;;; saveplace.el ends here
diff --git a/lisp/simple.el b/lisp/simple.el
index cf1912a..dfd92dc 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4870,6 +4870,45 @@ store it in a Lisp variable.  Example:
     (setq mark-active nil)
     (set-marker (mark-marker) nil)))
 
+(defun save-mark-and-excursion--save ()
+  (cons
+   (let ((mark (mark-marker)))
+     (and (marker-position mark) (copy-marker mark)))
+   mark-active))
+
+(defun save-mark-and-excursion--restore (saved-mark-info)
+  (let ((saved-mark (car saved-mark-info))
+        (omark (marker-position (mark-marker)))
+        (nmark nil)
+        (saved-mark-active (cdr saved-mark-info)))
+    ;; Mark marker
+    (if (null saved-mark)
+        (set-marker (mark-marker) nil)
+      (setf nmark (marker-position saved-mark))
+      (set-marker (mark-marker) nmark)
+      (set-marker saved-mark nil))
+    ;; Mark active
+    (let ((cur-mark-active mark-active))
+      (setq mark-active saved-mark-active)
+      ;; If mark is active now, and either was not active or was at a
+      ;; different place, run the activate hook.
+      (if saved-mark-active
+          (when (or (not cur-mark-active)
+                    (not (eq omark nmark)))
+            (run-hooks 'activate-mark-hook))
+        ;; If mark has ceased to be active, run deactivate hook.
+        (when cur-mark-active
+          (run-hooks 'deactivate-mark-hook))))))
+
+(defmacro save-mark-and-excursion (&rest body)
+  "Like `save-excursion', but also save and restore the mark state.
+This macro does what `save-excursion' did before Emacs 25.1."
+  (let ((saved-marker-sym (make-symbol "saved-marker")))
+    `(let ((,saved-marker-sym (save-mark-and-excursion--save)))
+       (unwind-protect
+            (save-excursion ,@body)
+         (save-mark-and-excursion--restore ,saved-marker-sym)))))
+
 (defcustom use-empty-active-region nil
   "Whether \"region-aware\" commands should act on empty regions.
 If nil, region-aware commands treat empty regions as inactive.
@@ -5961,7 +6000,11 @@ and `current-column' to be able to ignore invisible 
text."
        ;; that will get us to the same place on the screen
        ;; but with a more reasonable buffer position.
        (goto-char normal-location)
-       (let ((line-beg (line-beginning-position)))
+       (let ((line-beg
+               ;; We want the real line beginning, so it's consistent
+               ;; with bolp below, otherwise we might infloop.
+               (let ((inhibit-field-text-motion t))
+                 (line-beginning-position))))
          (while (and (not (bolp)) (invisible-p (1- (point))))
            (goto-char (previous-char-property-change (point) line-beg))))))))
 
@@ -6992,8 +7035,9 @@ The function should return non-nil if the two tokens do 
not match.")
                     (buffer-substring blinkpos (1+ blinkpos))))
                   ;; There is nothing to show except the char itself.
                   (t (buffer-substring blinkpos (1+ blinkpos))))))
-            (message "Matches %s"
-                     (substring-no-properties open-paren-line-string)))))))))
+            (minibuffer-message
+             "Matches %s"
+             (substring-no-properties open-paren-line-string)))))))))
 
 (defvar blink-paren-function 'blink-matching-open
   "Function called, if non-nil, whenever a close parenthesis is inserted.
diff --git a/lisp/subr.el b/lisp/subr.el
index 0343edb..9c56e51 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -417,10 +417,21 @@ If N is omitted or nil, remove the last element."
 Store the result in LIST and return it.  LIST must be a proper list.
 Of several `equal' occurrences of an element in LIST, the first
 one is kept."
-  (let ((tail list))
-    (while tail
-      (setcdr tail (delete (car tail) (cdr tail)))
-      (setq tail (cdr tail))))
+  (let ((l (length list)))
+    (if (> l 100)
+        (let ((hash (make-hash-table :test #'equal :size l))
+              (tail list) retail)
+          (puthash (car list) t hash)
+          (while (setq retail (cdr tail))
+            (let ((elt (car retail)))
+              (if (gethash elt hash)
+                  (setcdr tail (cdr retail))
+                (puthash elt t hash)))
+            (setq tail retail)))
+      (let ((tail list))
+        (while tail
+          (setcdr tail (delete (car tail) (cdr tail)))
+          (setq tail (cdr tail))))))
   list)
 
 ;; See http://lists.gnu.org/archive/html/emacs-devel/2013-05/msg00204.html
@@ -1733,7 +1744,7 @@ this instead of `run-hooks' when running their 
FOO-mode-hook."
 (defmacro delay-mode-hooks (&rest body)
   "Execute BODY, but delay any `run-mode-hooks'.
 These hooks will be executed by the first following call to
-`run-mode-hooks' that occurs outside any `delayed-mode-hooks' form.
+`run-mode-hooks' that occurs outside any `delay-mode-hooks' form.
 Only affects hooks run in the current buffer."
   (declare (debug t) (indent 0))
   `(progn
diff --git a/lisp/term/common-win.el b/lisp/term/common-win.el
index 6445935..98ad5ac 100644
--- a/lisp/term/common-win.el
+++ b/lisp/term/common-win.el
@@ -419,4 +419,6 @@ the operating system.")
             (setq defined-colors (cons this-color defined-colors))))
       defined-colors)))
 
+(provide 'term/common-win)
+
 ;;; common-win.el ends here
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index 9264a1c..e642ab5 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -717,10 +717,6 @@ See the documentation of 
`create-fontset-from-fontset-spec' for the format.")
 
 ;;;; Pasteboard support.
 
-(declare-function ns-get-selection-internal "nsselect.m" (buffer))
-
-(define-obsolete-function-alias 'ns-get-cut-buffer-internal
-  'ns-get-selection-internal "24.1")
 (define-obsolete-function-alias 'ns-store-cut-buffer-internal
   'gui-set-selection "24.1")
 
@@ -732,7 +728,7 @@ See the documentation of `create-fontset-from-fontset-spec' 
for the format.")
 
 (defun ns-paste-secondary ()
   (interactive)
-  (insert (ns-get-selection-internal 'SECONDARY)))
+  (insert (gui-get-selection 'SECONDARY)))
 
 
 ;;;; Scrollbar handling.
@@ -930,6 +926,15 @@ See the documentation of 
`create-fontset-from-fontset-spec' for the format.")
 (gui-method-define window-system-initialization ns
                    #'ns-initialize-window-system)
 
+(declare-function ns-own-selection-internal "nsselect.m" (selection value))
+(declare-function ns-disown-selection-internal "nsselect.m" (selection))
+(declare-function ns-selection-owner-p "nsselect.m"
+                  (&optional selection terminal))
+(declare-function ns-selection-exists-p "nsselect.m"
+                  (&optional selection terminal))
+(declare-function ns-get-selection "nsselect.m"
+                  (selection-symbol target-type &optional time-stamp terminal))
+
 (gui-method-define gui-set-selection ns
                    (lambda (selection value)
                      (if value (ns-own-selection-internal selection value)
diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el
index fa981c6..c205508 100644
--- a/lisp/term/rxvt.el
+++ b/lisp/term/rxvt.el
@@ -24,36 +24,21 @@
 
 ;;; Code:
 
+(require 'term/xterm)
+
 (defvar rxvt-function-map
   (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map xterm-rxvt-function-map)
 
     ;; Set up input-decode-map entries that termcap and terminfo don't know.
-    (define-key map "\e[A" [up])
-    (define-key map "\e[B" [down])
-    (define-key map "\e[C" [right])
-    (define-key map "\e[D" [left])
-    (define-key map "\e[2~" [insert])
-    (define-key map "\e[3~" [delete])
-    (define-key map "\e[4~" [select])
-    (define-key map "\e[5~" [prior])
-    (define-key map "\e[6~" [next])
     (define-key map "\e[7~" [home])
     (define-key map "\e[8~" [end])
-    (define-key map "\e[11~" [f1])
-    (define-key map "\e[12~" [f2])
-    (define-key map "\e[13~" [f3])
-    (define-key map "\e[14~" [f4])
-    (define-key map "\e[15~" [f5])
-    (define-key map "\e[17~" [f6])
-    (define-key map "\e[18~" [f7])
-    (define-key map "\e[19~" [f8])
-    (define-key map "\e[20~" [f9])
-    (define-key map "\e[21~" [f10])
     ;; The strings emitted by f11 and f12 are the same as the strings
     ;; emitted by S-f1 and S-f2, so don't define f11 and f12.
     ;; (define-key rxvt-function-map "\e[23~" [f11])
     ;; (define-key rxvt-function-map "\e[24~" [f12])
-    (define-key map "\e[29~" [print])
+    (define-key map "\e[23~" [S-f1])
+    (define-key map "\e[24~" [S-f2])
 
     (define-key map "\e[11^" [C-f1])
     (define-key map "\e[12^" [C-f2])
@@ -66,8 +51,6 @@
     (define-key map "\e[20^" [C-f9])
     (define-key map "\e[21^" [C-f10])
 
-    (define-key map "\e[23~" [S-f1])
-    (define-key map "\e[24~" [S-f2])
     (define-key map "\e[25~" [S-f3])
     (define-key map "\e[26~" [S-f4])
     (define-key map "\e[28~" [S-f5])
@@ -99,7 +82,6 @@
     (define-key map "\eOa" [C-up])
     (define-key map "\eOb" [C-down])
 
-    (define-key map "\e[2;2~" [S-insert])
     (define-key map "\e[3$" [S-delete])
     (define-key map "\e[5$" [S-prior])
     (define-key map "\e[6$" [S-next])
@@ -157,26 +139,6 @@
     map)
   "Keymap of possible alternative meanings for some keys.")
 
-(defun terminal-init-rxvt ()
-  "Terminal initialization function for rxvt."
-
-  (let ((map (copy-keymap rxvt-alternatives-map)))
-    (set-keymap-parent map (keymap-parent local-function-key-map))
-    (set-keymap-parent local-function-key-map map))
-
-  ;; Use inheritance to let the main keymap override those defaults.
-  ;; This way we don't override terminfo-derived settings or settings
-  ;; made in the init file.
-  (let ((m (copy-keymap rxvt-function-map)))
-    (set-keymap-parent m (keymap-parent input-decode-map))
-    (set-keymap-parent input-decode-map m))
-
-  ;; Initialize colors and background mode.
-  (rxvt-register-default-colors)
-  (rxvt-set-background-mode)
-  ;; This recomputes all the default faces given the colors we've just set up.
-  (tty-set-up-initial-frame-faces))
-
 ;; Set up colors, for those versions of rxvt that support it.
 (defvar rxvt-standard-colors
   ;; The names of the colors in the comments taken from the rxvt.1 man
@@ -199,93 +161,17 @@
     ("brightwhite"   15 (255 255 255)))        ; white
   "Names of 16 standard rxvt colors, their numbers, and RGB values.")
 
-(defun rxvt-rgb-convert-to-16bit (prim)
-  "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value."
-  (logior prim (lsh prim 8)))
-
-(defun rxvt-register-default-colors ()
-  "Register the default set of colors for rxvt or compatible emulator.
+(defun terminal-init-rxvt ()
+  "Terminal initialization function for rxvt."
 
-This function registers the number of colors returned by `display-color-cells'
-for the currently selected frame."
-  (let* ((ncolors (display-color-cells))
-        (colors rxvt-standard-colors)
-        (color (car colors)))
-    (if (> ncolors 0)
-       ;; Clear the 8 default tty colors registered by startup.el
-       (tty-color-clear))
-    ;; Only register as many colors as are supported by the display.
-    (while (and (> ncolors 0) colors)
-      (tty-color-define (car color) (cadr color)
-                       (mapcar 'rxvt-rgb-convert-to-16bit
-                               (car (cddr color))))
-      (setq colors (cdr colors)
-           color (car colors)
-           ncolors (1- ncolors)))
-    (when (> ncolors 0)
-      (cond
-       ((= ncolors 240)                        ; 256-color rxvt
-       ;; 216 non-gray colors first
-       (let ((r 0) (g 0) (b 0))
-         (while (> ncolors 24)
-           ;; This and other formulas taken from 256colres.pl and
-           ;; 88colres.pl in the xterm distribution.
-           (tty-color-define (format "color-%d" (- 256 ncolors))
-                             (- 256 ncolors)
-                             (mapcar 'rxvt-rgb-convert-to-16bit
-                                     (list (if (zerop r) 0 (+ (* r 40) 55))
-                                           (if (zerop g) 0 (+ (* g 40) 55))
-                                           (if (zerop b) 0 (+ (* b 40) 55)))))
-           (setq b (1+ b))
-           (if (> b 5)
-               (setq g (1+ g)
-                     b 0))
-           (if (> g 5)
-               (setq r (1+ r)
-                     g 0))
-           (setq ncolors (1- ncolors))))
-       ;; Now the 24 gray colors
-       (while (> ncolors 0)
-         (setq color (rxvt-rgb-convert-to-16bit (+ 8 (* (- 24 ncolors) 10))))
-         (tty-color-define (format "color-%d" (- 256 ncolors))
-                           (- 256 ncolors)
-                           (list color color color))
-         (setq ncolors (1- ncolors))))
+  (xterm--push-map rxvt-alternatives-map local-function-key-map)
+  (xterm--push-map rxvt-function-map input-decode-map)
 
-       ((= ncolors 72) ; rxvt-unicode
-       ;; 64 non-gray colors
-       (let ((levels '(0 139 205 255))
-             (r 0) (g 0) (b 0))
-         (while (> ncolors 8)
-           (tty-color-define (format "color-%d" (- 88 ncolors))
-                             (- 88 ncolors)
-                             (mapcar 'rxvt-rgb-convert-to-16bit
-                                     (list (nth r levels)
-                                           (nth g levels)
-                                           (nth b levels))))
-           (setq b (1+ b))
-           (if (> b 3)
-               (setq g (1+ g)
-                     b 0))
-           (if (> g 3)
-               (setq r (1+ r)
-                     g 0))
-           (setq ncolors (1- ncolors))))
-       ;; Now the 8 gray colors
-       (while (> ncolors 0)
-         (setq color (rxvt-rgb-convert-to-16bit
-                      (floor
-                       (if (= ncolors 8)
-                           46.36363636
-                         (+ (* (- 8 ncolors) 23.18181818) 69.54545454)))))
-         (tty-color-define (format "color-%d" (- 88 ncolors))
-                           (- 88 ncolors)
-                           (list color color color))
-         (setq ncolors (1- ncolors))))
-       (t (error "Unsupported number of rxvt colors (%d)" (+ 16 ncolors)))))
-    ;; Modifying color mappings means realized faces don't use the
-    ;; right colors, so clear them.
-    (clear-face-cache)))
+  ;; Initialize colors and background mode.
+  (xterm-register-default-colors rxvt-standard-colors)
+  (rxvt-set-background-mode)
+  ;; This recomputes all the default faces given the colors we've just set up.
+  (tty-set-up-initial-frame-faces))
 
 ;; rxvt puts the default colors into an environment variable
 ;; COLORFGBG.  We use this to set the background mode in a more
diff --git a/lisp/term/screen.el b/lisp/term/screen.el
index 3587c4f..41fd916 100644
--- a/lisp/term/screen.el
+++ b/lisp/term/screen.el
@@ -1,9 +1,22 @@
 ;;; screen.el --- terminal initialization for screen and tmux  -*- 
lexical-binding: t -*-
 ;; Copyright (C) 1995, 2001-2015 Free Software Foundation, Inc.
 
+(require 'term/xterm)
+
+(defcustom xterm-screen-extra-capabilities '(modifyOtherKeys)
+  "Extra capabilities supported under \"screen\".
+Some features of screen depend on the terminal emulator in which
+it runs, which can change when the screen session is moved to another tty."
+  :type xterm--extra-capabilities-type
+  :group 'xterm)
+
 (defun terminal-init-screen ()
   "Terminal initialization function for screen."
-  ;; Treat a screen terminal similar to an xterm.
-  (tty-run-terminal-initialization (selected-frame) "xterm"))
+  ;; Treat a screen terminal similar to an xterm, but don't use
+  ;; xterm-extra-capabilities's `check' setting since that doesn't seem
+  ;; to work so well (it depends too much on the surrounding terminal
+  ;; emulator, which can change during the session, bug#20356).
+  (let ((xterm-extra-capabilities xterm-screen-extra-capabilities))
+    (tty-run-terminal-initialization (selected-frame) "xterm")))
 
 ;; screen.el ends here
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el
index b090294..f929288 100644
--- a/lisp/term/x-win.el
+++ b/lisp/term/x-win.el
@@ -72,6 +72,7 @@
 (if (not (fboundp 'x-create-frame))
     (error "%s: Loading x-win.el but not compiled for X" (invocation-name)))
 
+(require 'term/common-win)
 (require 'frame)
 (require 'mouse)
 (require 'scroll-bar)
@@ -1322,6 +1323,17 @@ This returns an error if any Emacs frames are X frames."
   (x-apply-session-resources)
   (setq x-initialized t))
 
+(declare-function x-own-selection-internal "xselect.c"
+                 (selection value &optional frame))
+(declare-function x-disown-selection-internal "xselect.c"
+                 (selection &optional time-object terminal))
+(declare-function x-selection-owner-p "xselect.c"
+                 (&optional selection terminal))
+(declare-function x-selection-exists-p "xselect.c"
+                 (&optional selection terminal))
+(declare-function x-get-selection-internal "xselect.c"
+                 (selection-symbol target-type &optional time-stamp terminal))
+
 (add-to-list 'display-format-alist '("\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'" . x))
 (gui-method-define handle-args-function x #'x-handle-args)
 (gui-method-define frame-creation-function x #'x-create-frame-with-faces)
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 726ecf9..667e4ce 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -29,6 +29,13 @@
   :version "24.1"
   :group 'terminals)
 
+(defconst xterm--extra-capabilities-type
+  ;; NOTE: If you add entries here, make sure to update
+  ;; `terminal-init-xterm' as well.
+  '(set (const :tag "modifyOtherKeys support" modifyOtherKeys)
+        (const :tag "report background" reportBackground)
+        (const :tag "set X selection" setSelection)))
+
 (defcustom xterm-extra-capabilities 'check
   "Whether Xterm supports some additional, more modern, features.
 If nil, just assume that it does not.
@@ -40,13 +47,8 @@ The relevant features are:
   reportBackground -- if supported, Xterm reports its background color
   setSelection     -- if supported, Xterm saves yanked text to the X selection"
   :version "24.1"
-  :type '(choice (const :tag "No" nil)
-                 (const :tag "Check" check)
-                 ;; NOTE: If you add entries here, make sure to update
-                 ;; `terminal-init-xterm' as well.
-                 (set (const :tag "modifyOtherKeys support" modifyOtherKeys)
-                      (const :tag "report background" reportBackground)
-                      (const :tag "set X selection" setSelection))))
+  :type `(choice (const :tag "Check" check)
+                 ,xterm--extra-capabilities-type))
 
 (defcustom xterm-max-cut-length 100000
   "Maximum number of bytes to cut into xterm using the OSC 52 sequence.
@@ -93,20 +95,50 @@ string bytes that can be copied is 3/4 of this value."
 
 (define-key global-map [xterm-paste] #'xterm-paste)
 
-(defvar xterm-function-map
+(defvar xterm-rxvt-function-map
   (let ((map (make-sparse-keymap)))
+    (define-key map "\e[2~" [insert])
+    (define-key map "\e[3~" [delete])
+    (define-key map "\e[4~" [select])
+    (define-key map "\e[5~" [prior])
+    (define-key map "\e[6~" [next])
 
-    ;; xterm from X.org 6.8.2 uses these key definitions.
-    (define-key map "\eOP" [f1])
-    (define-key map "\eOQ" [f2])
-    (define-key map "\eOR" [f3])
-    (define-key map "\eOS" [f4])
     (define-key map "\e[15~" [f5])
     (define-key map "\e[17~" [f6])
     (define-key map "\e[18~" [f7])
     (define-key map "\e[19~" [f8])
     (define-key map "\e[20~" [f9])
     (define-key map "\e[21~" [f10])
+
+    (define-key map "\e[2;2~" [S-insert])
+
+    ;; Other versions of xterm might emit these.
+    (define-key map "\e[A" [up])
+    (define-key map "\e[B" [down])
+    (define-key map "\e[C" [right])
+    (define-key map "\e[D" [left])
+
+    (define-key map "\e[11~" [f1])
+    (define-key map "\e[12~" [f2])
+    (define-key map "\e[13~" [f3])
+    (define-key map "\e[14~" [f4])
+
+    ;; Recognize the start of a bracketed paste sequence.  The handler
+    ;; internally recognizes the end.
+    (define-key map "\e[200~" [xterm-paste])
+
+    map)
+  "Keymap of escape sequences, shared between xterm and rxvt support.")
+
+(defvar xterm-function-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map xterm-rxvt-function-map)
+
+    ;; xterm from X.org 6.8.2 uses these key definitions.
+    (define-key map "\eOP" [f1])
+    (define-key map "\eOQ" [f2])
+    (define-key map "\eOR" [f3])
+    (define-key map "\eOS" [f4])
     (define-key map "\e[23~" [f11])
     (define-key map "\e[24~" [f12])
 
@@ -235,12 +267,6 @@ string bytes that can be copied is 3/4 of this value."
     (define-key map "\e[1;3F" [M-end])
     (define-key map "\e[1;3H" [M-home])
 
-    (define-key map "\e[2~" [insert])
-    (define-key map "\e[3~" [delete])
-    (define-key map "\e[5~" [prior])
-    (define-key map "\e[6~" [next])
-
-    (define-key map "\e[2;2~" [S-insert])
     (define-key map "\e[3;2~" [S-delete])
     (define-key map "\e[5;2~" [S-prior])
     (define-key map "\e[6;2~" [S-next])
@@ -275,7 +301,6 @@ string bytes that can be copied is 3/4 of this value."
     (define-key map "\e[5;3~" [M-prior])
     (define-key map "\e[6;3~" [M-next])
 
-    (define-key map "\e[4~" [select])
     (define-key map "\e[29~" [print])
 
     (define-key map "\eOj" [kp-multiply])
@@ -480,10 +505,6 @@ string bytes that can be copied is 3/4 of this value."
         (format "\e[%d;%du" (nth 1 bind) (nth 0 bind)) (nth 2 bind)))
 
     ;; Other versions of xterm might emit these.
-    (define-key map "\e[A" [up])
-    (define-key map "\e[B" [down])
-    (define-key map "\e[C" [right])
-    (define-key map "\e[D" [left])
     (define-key map "\e[1~" [home])
 
     (define-key map "\eO2A" [S-up])
@@ -500,15 +521,6 @@ string bytes that can be copied is 3/4 of this value."
     (define-key map "\eO5F" [C-end])
     (define-key map "\eO5H" [C-home])
 
-    (define-key map "\e[11~" [f1])
-    (define-key map "\e[12~" [f2])
-    (define-key map "\e[13~" [f3])
-    (define-key map "\e[14~" [f4])
-
-    ;; Recognize the start of a bracketed paste sequence.  The handler
-    ;; internally recognizes the end.
-    (define-key map "\e[200~" [xterm-paste])
-    
     map)
   "Function key map overrides for xterm.")
 
@@ -578,6 +590,29 @@ string bytes that can be copied is 3/4 of this value."
     map)
   "Keymap of possible alternative meanings for some keys.")
 
+;; Set up colors, for those versions of xterm that support it.
+(defvar xterm-standard-colors
+  ;; The names in the comments taken from XTerm-col.ad in the xterm
+  ;; distribution, see ftp://dickey.his.com/xterm/.  RGB values are
+  ;; from rgb.txt.
+  '(("black"          0 (  0   0   0)) ; black
+    ("red"            1 (205   0   0)) ; red3
+    ("green"          2 (  0 205   0)) ; green3
+    ("yellow"         3 (205 205   0)) ; yellow3
+    ("blue"           4 (  0   0 238)) ; blue2
+    ("magenta"        5 (205   0 205)) ; magenta3
+    ("cyan"           6 (  0 205 205)) ; cyan3
+    ("white"          7 (229 229 229)) ; gray90
+    ("brightblack"    8 (127 127 127)) ; gray50
+    ("brightred"      9 (255   0   0)) ; red
+    ("brightgreen"   10 (  0 255   0)) ; green
+    ("brightyellow"  11 (255 255   0)) ; yellow
+    ("brightblue"    12 (92   92 255)) ; rgb:5c/5c/ff
+    ("brightmagenta" 13 (255   0 255)) ; magenta
+    ("brightcyan"    14 (  0 255 255)) ; cyan
+    ("brightwhite"   15 (255 255 255)))        ; white
+  "Names of 16 standard xterm/aixterm colors, their numbers, and RGB values.")
+
 (defun xterm--report-background-handler ()
   (let ((str "")
         chr)
@@ -623,8 +658,11 @@ string bytes that can be copied is 3/4 of this value."
           (setq version 200))
         (when (equal (match-string 1 str) "83")
           ;; `screen' (which returns 83;40003;0) seems to also lack support for
-          ;; some of these (bug#17607).
-          (setq version 240))
+          ;; some of these (bug#17607, bug#20356).
+          ;; Note: this code path should normally not be used any more
+          ;; since term/screen.el now binds xterm-extra-capabilities
+          ;; to a fixed value, rather than using the dynamic checking.
+          (setq version 200))
         ;; If version is 242 or higher, assume the xterm supports
         ;; reporting the background color (TODO: maybe earlier
         ;; versions do too...)
@@ -682,6 +720,14 @@ We run the first FUNCTION whose STRING matches the input 
events."
             (push (aref (car handler) (setq i (1- i)))
                   unread-command-events)))))))
 
+(defun xterm--push-map (map basemap)
+  ;; Use inheritance to let the main keymaps override those defaults.
+  ;; This way we don't override terminfo-derived settings or settings
+  ;; made in the init file.
+  (set-keymap-parent
+   basemap
+   (make-composed-keymap map (keymap-parent basemap))))
+
 (defun terminal-init-xterm ()
   "Terminal initialization function for xterm."
   ;; rxvt terminals sometimes set the TERM variable to "xterm", but
@@ -691,19 +737,10 @@ We run the first FUNCTION whose STRING matches the input 
events."
           (string-match "\\`rxvt" (getenv "COLORTERM" (selected-frame))))
       (tty-run-terminal-initialization (selected-frame) "rxvt")
 
-    (let ((map (copy-keymap xterm-alternatives-map)))
-      (set-keymap-parent map (keymap-parent local-function-key-map))
-      (set-keymap-parent local-function-key-map map))
-
-    (let ((map (copy-keymap xterm-function-map)))
+      (xterm--push-map xterm-alternatives-map local-function-key-map)
+      (xterm--push-map xterm-function-map     input-decode-map))
 
-      ;; Use inheritance to let the main keymap override those defaults.
-      ;; This way we don't override terminfo-derived settings or settings
-      ;; made in the init file.
-      (set-keymap-parent map (keymap-parent input-decode-map))
-      (set-keymap-parent input-decode-map map)))
-
-  (xterm-register-default-colors)
+  (xterm-register-default-colors xterm-standard-colors)
   (tty-set-up-initial-frame-faces)
 
   (if (eq xterm-extra-capabilities 'check)
@@ -802,43 +839,19 @@ hitting screen's max DCS length."
             "\a"
             (when screen "\e\\"))))))))
 
-;; Set up colors, for those versions of xterm that support it.
-(defvar xterm-standard-colors
-  ;; The names in the comments taken from XTerm-col.ad in the xterm
-  ;; distribution, see ftp://dickey.his.com/xterm/.  RGB values are
-  ;; from rgb.txt.
-  '(("black"          0 (  0   0   0)) ; black
-    ("red"            1 (205   0   0)) ; red3
-    ("green"          2 (  0 205   0)) ; green3
-    ("yellow"         3 (205 205   0)) ; yellow3
-    ("blue"           4 (  0   0 238)) ; blue2
-    ("magenta"        5 (205   0 205)) ; magenta3
-    ("cyan"           6 (  0 205 205)) ; cyan3
-    ("white"          7 (229 229 229)) ; gray90
-    ("brightblack"    8 (127 127 127)) ; gray50
-    ("brightred"      9 (255   0   0)) ; red
-    ("brightgreen"   10 (  0 255   0)) ; green
-    ("brightyellow"  11 (255 255   0)) ; yellow
-    ("brightblue"    12 (92   92 255)) ; rgb:5c/5c/ff
-    ("brightmagenta" 13 (255   0 255)) ; magenta
-    ("brightcyan"    14 (  0 255 255)) ; cyan
-    ("brightwhite"   15 (255 255 255)))        ; white
-  "Names of 16 standard xterm/aixterm colors, their numbers, and RGB values.")
-
 (defun xterm-rgb-convert-to-16bit (prim)
   "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value."
   (logior prim (lsh prim 8)))
 
-(defun xterm-register-default-colors ()
+(defun xterm-register-default-colors (colors)
   "Register the default set of colors for xterm or compatible emulator.
 
 This function registers the number of colors returned by `display-color-cells'
-for the currently selected frame.  The first 16 colors are taken from
-`xterm-standard-colors', which see, while the rest are computed assuming
+for the currently selected frame.  The first (16) colors are taken from
+COLORS, which see, while the rest are computed assuming
 either the 88- or 256-color standard color scheme supported by latest
 versions of xterm."
-  (let* ((ncolors (display-color-cells (selected-frame)))
-        (colors xterm-standard-colors)
+  (let* ((ncolors (display-color-cells))
         (color (car colors)))
     (if (> ncolors 0)
        ;; Clear the 8 default tty colors registered by startup.el
@@ -846,12 +859,12 @@ versions of xterm."
     ;; Only register as many colors as are supported by the display.
     (while (and (> ncolors 0) colors)
       (tty-color-define (car color) (cadr color)
-                       (mapcar 'xterm-rgb-convert-to-16bit
+                       (mapcar #'xterm-rgb-convert-to-16bit
                                (car (cddr color))))
       (setq colors (cdr colors)
            color (car colors)
            ncolors (1- ncolors)))
-    ;; We've exhausted the colors from `xterm-standard-colors'.  If there
+    ;; We've exhausted the colors from `colors'.  If there
     ;; are more colors to support, compute them now.
     (when (> ncolors 0)
       (cond
@@ -863,7 +876,7 @@ versions of xterm."
            ;; 88colres.pl in the xterm distribution.
            (tty-color-define (format "color-%d" (- 256 ncolors))
                              (- 256 ncolors)
-                             (mapcar 'xterm-rgb-convert-to-16bit
+                             (mapcar #'xterm-rgb-convert-to-16bit
                                      (list (if (zerop r) 0 (+ (* r 40) 55))
                                            (if (zerop g) 0 (+ (* g 40) 55))
                                            (if (zerop b) 0 (+ (* b 40) 55)))))
@@ -890,7 +903,7 @@ versions of xterm."
          (while (> ncolors 8)
            (tty-color-define (format "color-%d" (- 88 ncolors))
                              (- 88 ncolors)
-                             (mapcar 'xterm-rgb-convert-to-16bit
+                             (mapcar #'xterm-rgb-convert-to-16bit
                                      (list (nth r levels)
                                            (nth g levels)
                                            (nth b levels))))
@@ -925,6 +938,6 @@ versions of xterm."
     (set-terminal-parameter nil 'background-mode 'dark)
     t))
 
-(provide 'xterm)
-
+(provide 'xterm)                        ;Backward compatibility.
+(provide 'term/xterm)
 ;;; xterm.el ends here
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 8a01852..10edefc 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -2229,7 +2229,7 @@ Optional arg COMMA is as in `bibtex-enclosing-field'."
                        bibtex-entry-kill-ring))
       ;; If we copied an entry from a buffer containing only this one entry,
       ;; it can be missing the second "\n".
-      (unless (looking-back "\n\n" (- (point 2))) (insert "\n"))
+      (unless (looking-back "\n\n" (- (point) 2)) (insert "\n"))
       (unless (functionp bibtex-reference-keys)
         ;; update `bibtex-reference-keys'
         (save-excursion
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 498def0..f67fae8 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1075,9 +1075,11 @@ of `ispell-dictionary-base-alist' elements."
           (dolist ( tmp-path (list ispell-aspell-dict-dir
                                    ispell-aspell-data-dir ))
             ;; Try xx.dat first, strip out variant, country code, etc,
-            ;; then try xx_YY.dat (without stripping country code).
+            ;; then try xx_YY.dat (without stripping country code),
+             ;; then try xx-alt.dat, for deu-alt etc.
             (dolist (tmp-regexp (list "^[[:alpha:]]+"
-                                      "^[[:alpha:]_]+"))
+                                      "^[[:alpha:]_]+"
+                                       "^[[:alpha:]]+-\\(alt\\|old\\)"))
               (let ((fullpath
                      (concat tmp-path "/"
                              (and (string-match tmp-regexp dict-name)
@@ -2986,10 +2988,14 @@ Keeps argument list for future Ispell invocations for 
no async support."
               (or ispell-local-dictionary ispell-dictionary "default"))
       (sit-for 0)
       (setq ispell-library-directory (ispell-check-version)
+            ;; Assign a non-nil value to ispell-process-directory
+            ;; before calling ispell-start-process, since that
+            ;; function needs it to set default-directory when
+            ;; ispell-async-processp is nil.
+           ispell-process-directory default-directory
            ispell-process (ispell-start-process)
            ispell-filter nil
-           ispell-filter-continue nil
-           ispell-process-directory default-directory)
+           ispell-filter-continue nil)
 
       (unless (equal ispell-process-directory (expand-file-name "~/"))
        ;; At this point, `ispell-process-directory' will be "~/" unless using
@@ -3015,7 +3021,12 @@ Keeps argument list for future Ispell invocations for no 
async support."
       (if (and (or (featurep 'xemacs)
                   (and (boundp 'enable-multibyte-characters)
                        enable-multibyte-characters))
-              (fboundp 'set-process-coding-system))
+              (fboundp 'set-process-coding-system)
+               ;; Evidently, some people use the synchronous mode even
+               ;; when async subprocesses are supported, in which case
+               ;; set-process-coding-system is bound, but
+               ;; ispell-process is not a process object.
+               ispell-async-processp)
          (set-process-coding-system ispell-process (ispell-get-coding-system)
                                     (ispell-get-coding-system)))
       ;; Get version ID line
diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el
index b22e8b1..17e8cfd 100644
--- a/lisp/textmodes/reftex-cite.el
+++ b/lisp/textmodes/reftex-cite.el
@@ -543,7 +543,14 @@ If FORMAT is non-nil `format' entry accordingly."
        (extra
         (cond
          ((equal type "article")
-          (concat (reftex-get-bib-field "journal" entry) " "
+          (concat (let ((jt (reftex-get-bib-field "journal" entry)))
+                    ;; biblatex prefers the alternative journaltitle
+                    ;; field, so check if that exists in case journal
+                    ;; is empty.
+                    (if (zerop (length jt))
+                        (reftex-get-bib-field "journaltitle" entry)
+                      jt))
+                  " "
                   (reftex-get-bib-field "volume" entry) ", "
                   (reftex-get-bib-field "pages" entry)))
          ((equal type "book")
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index 085f2d7..d51fb9b 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -190,8 +190,11 @@ M-%        Global search and replace to rename label at 
point.
 x          Switch to TOC of external document (with LaTeX package `xr').
 z          Jump to a specific section (e.g. '3 z' goes to section 3).")
 
+(defvar reftex--rebuilding-toc nil)
+
 ;;;###autoload
-(defun reftex-toc (&optional rebuild reuse)
+(defun reftex-toc (&optional _rebuild reuse)
+  ;; FIXME: Get rid of the `rebuild' argument.
   "Show the table of contents for the current document.
 When called with a raw C-u prefix, rescan the document first."
 
@@ -201,6 +204,9 @@ When called with a raw C-u prefix, rescan the document 
first."
   (interactive)
 
   (if (or (not (string= reftex-last-toc-master (reftex-TeX-master-file)))
+          ;; FIXME: use (interactive "P") to receive current-prefix-arg as
+          ;; an argument instead of using the var here, which forces us to set
+          ;; current-prefix-arg in the callers.
           current-prefix-arg)
       (reftex-erase-buffer "*toc*"))
 
@@ -225,7 +231,7 @@ When called with a raw C-u prefix, rescan the document 
first."
          (docstruct-symbol reftex-docstruct-symbol)
          (xr-data (assq 'xr (symbol-value reftex-docstruct-symbol)))
          (xr-alist (cons (cons "" (buffer-file-name)) (nth 1 xr-data)))
-         (here-I-am (if (boundp 'reftex-rebuilding-toc)
+         (here-I-am (if reftex--rebuilding-toc
                         (get 'reftex-toc :reftex-data)
                       (car (reftex-where-am-I))))
          (unsplittable (if (fboundp 'frame-property)
@@ -414,17 +420,17 @@ SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels 
[f]ollow [x]r [?]Help
   (if reftex-toc-follow-mode
       (setq reftex-toc-follow-mode 1)))
 
-(defun reftex-toc-next (&optional arg)
+(defun reftex-toc-next (&optional _arg)
   "Move to next selectable item."
-  (interactive "p")
+  (interactive)
   (when (featurep 'xemacs) (setq zmacs-region-stays t))
   (setq reftex-callback-fwd t)
   (or (eobp) (forward-char 1))
   (goto-char (or (next-single-property-change (point) :data)
                  (point))))
-(defun reftex-toc-previous (&optional arg)
+(defun reftex-toc-previous (&optional _arg)
   "Move to previous selectable item."
-  (interactive "p")
+  (interactive)
   (when (featurep 'xemacs) (setq zmacs-region-stays t))
   (setq reftex-callback-fwd nil)
   (goto-char (or (previous-single-property-change (point) :data)
@@ -558,7 +564,7 @@ With prefix arg 1, restrict index to the section at point."
     (reftex-display-index (if restr nil arg) restr)))
 
 ;; Rescanning the document and rebuilding the TOC buffer.
-(defun reftex-toc-rescan (&rest ignore)
+(defun reftex-toc-rescan (&rest _)
   "Regenerate the *toc* buffer by reparsing file of section at point."
   (interactive)
   (if (and reftex-enable-partial-scans
@@ -576,12 +582,12 @@ With prefix arg 1, restrict index to the section at 
point."
           (switch-to-buffer-other-window
            (reftex-get-file-buffer-force file))
           (setq current-prefix-arg '(4))
-          (let ((reftex-rebuilding-toc t))
+          (let ((reftex--rebuilding-toc t))
             (reftex-toc))))
     (reftex-toc-Rescan))
   (reftex-kill-temporary-buffers))
 
-(defun reftex-toc-Rescan (&rest ignore)
+(defun reftex-toc-Rescan (&rest _)
   "Regenerate the *toc* buffer by reparsing the entire document."
   (interactive)
   (let* ((line (+ (count-lines (point-min) (point)) (if (bolp) 1 0))))
@@ -589,17 +595,17 @@ With prefix arg 1, restrict index to the section at 
point."
   (switch-to-buffer-other-window
    (reftex-get-file-buffer-force reftex-last-toc-file))
   (setq current-prefix-arg '(16))
-  (let ((reftex-rebuilding-toc t))
+  (let ((reftex--rebuilding-toc t))
     (reftex-toc)))
 
-(defun reftex-toc-revert (&rest ignore)
+(defun reftex-toc-revert (&rest _)
   "Regenerate the TOC from the internal lists."
   (interactive)
   (let ((unsplittable
          (if (fboundp 'frame-property)
              (frame-property (selected-frame) 'unsplittable)
            (frame-parameter nil 'unsplittable)))
-        (reftex-rebuilding-toc t))
+        (reftex--rebuilding-toc t))
     (if unsplittable
         (switch-to-buffer
          (reftex-get-file-buffer-force reftex-last-toc-file))
@@ -607,9 +613,9 @@ With prefix arg 1, restrict index to the section at point."
        (reftex-get-file-buffer-force reftex-last-toc-file))))
   (reftex-erase-buffer "*toc*")
   (setq current-prefix-arg nil)
-  (reftex-toc t))
+  (reftex-toc t t))
 
-(defun reftex-toc-external (&rest ignore)
+(defun reftex-toc-external (&rest _)
   "Switch to table of contents of an external document."
   (interactive)
   (reftex-toc-dframe-p nil 'error)
@@ -637,18 +643,17 @@ Useful for large TOCs."
 
 ;; Promotion/Demotion stuff
 
-(defvar pro-or-de)
-(defvar start-pos)
-(defvar start-line)
-(defvar mark-line)
+(defvar reftex--pro-or-de)
+(defvar reftex--start-line)
+(defvar reftex--mark-line)
 
-(defun reftex-toc-demote (&optional arg)
+(defun reftex-toc-demote (&optional _arg)
   "Demote section at point.  If region is active, apply to all in region."
-  (interactive "p")
+  (interactive)
   (reftex-toc-do-promote 1))
-(defun reftex-toc-promote (&optional arg)
+(defun reftex-toc-promote (&optional _arg)
   "Promote section at point.  If region is active, apply to all in region."
-  (interactive "p")
+  (interactive)
   (reftex-toc-do-promote -1))
 (defun reftex-toc-do-promote (delta)
   "Workhorse for `reftex-toc-promote' and `reftex-toc-demote'.
@@ -657,14 +662,15 @@ point."
   ;; We should not do anything unless we are sure this is going to work for
   ;; each section in the region.  Therefore we first collect information and
   ;; test.
-  (let* ((start-line (+ (count-lines (point-min) (point))
-                       (if (bolp) 1 0)))
-        (mark-line  (if (reftex-region-active-p)
-                        (save-excursion (goto-char (mark))
-                                        (+ (count-lines (point-min) (point))
-                                           (if (bolp) 1 0)))))
+  (let* ((reftex--start-line (+ (count-lines (point-min) (point))
+                                (if (bolp) 1 0)))
+        (reftex--mark-line
+          (if (reftex-region-active-p)
+              (save-excursion (goto-char (mark))
+                              (+ (count-lines (point-min) (point))
+                                 (if (bolp) 1 0)))))
          (start-pos (point))
-         (pro-or-de (if (> delta 0) "de" "pro"))
+         (reftex--pro-or-de (if (> delta 0) "de" "pro"))
          beg end entries data sections nsec msg)
     (setq msg
           (catch 'exit
@@ -713,23 +719,23 @@ point."
             ;; Rescan the document and rebuilt the toc buffer
             (save-window-excursion
               (reftex-toc-Rescan))
-            (reftex-toc-restore-region start-line mark-line)
+            (reftex-toc-restore-region reftex--start-line reftex--mark-line)
             (message "%d section%s %smoted"
-                     nsec (if (= 1 nsec) "" "s") pro-or-de)
+                     nsec (if (= 1 nsec) "" "s") reftex--pro-or-de)
             nil))
     (if msg (progn (ding) (message "%s" msg)))))
 
 
 (defun reftex-toc-restore-region (point-line &optional mark-line)
-  (let (mpos)
-    (when mark-line
-      (goto-char (point-min))
-      (forward-line (1- mark-line))
-      (setq mpos (point)))
+  (let ((mpos
+         (when mark-line
+           (goto-char (point-min))
+           (forward-line (1- mark-line))
+           (point))))
     (when point-line
       (goto-char (point-min))
       (forward-line (1- point-line)))
-    (when mark-line
+    (when mpos
       (set-mark mpos)
       (if (featurep 'xemacs)
           (zmacs-activate-region)
@@ -749,7 +755,7 @@ promotion/demotion later.  DELTA is the level change."
          (name nil)
          ;; Here follows some paranoid code to make very sure we are not
          ;; going to break anything
-         (name1         ; dummy
+         (_
           (if (and (markerp marker) (marker-buffer marker))
               ;; Buffer is still live and we have the marker.
               (progn
@@ -772,24 +778,24 @@ promotion/demotion later.  DELTA is the level change."
             ;; We don't have a live marker: scan and load files.
             (reftex-toc-load-all-files-for-promotion)))
          (level (cdr (assoc name reftex-section-levels-all)))
-         (dummy (if (not (integerp level))
-                    (progn
-                      (goto-char toc-point)
-                      (error "Cannot %smote special sections" pro-or-de))))
+         (_ (if (not (integerp level))
+                (progn
+                  (goto-char toc-point)
+                  (error "Cannot %smote special sections" reftex--pro-or-de))))
          (newlevel (if (>= level 0) (+ delta level) (- level delta)))
-         (dummy2 (if (or (and (>= level 0) (= newlevel -1))
-                         (and (< level 0)  (= newlevel 0)))
-                     (error "Cannot %smote \\%s" pro-or-de name)))
+         (_ (if (or (and (>= level 0) (= newlevel -1))
+                    (and (< level 0)  (= newlevel 0)))
+                (error "Cannot %smote \\%s" reftex--pro-or-de name)))
          (newname (reftex-toc-newhead-from-alist newlevel name
                                                  reftex-section-levels-all)))
     (if (and name newname)
         (list data name newname toc-point)
       (goto-char toc-point)
-      (error "Cannot %smote \\%s" pro-or-de name))))
+      (error "Cannot %smote \\%s" reftex--pro-or-de name))))
 
 (defun reftex-toc-promote-action (x)
   "Change the level of a TOC entry.
-PRO-OR-DE is assumed to be dynamically scoped into this function."
+`reftex--pro-or-de' is assumed to be dynamically scoped into this function."
   (let* ((data (car x))
          (name (nth 1 x))
          (newname (nth 2 x))
@@ -798,7 +804,7 @@ PRO-OR-DE is assumed to be dynamically scoped into this 
function."
       (goto-char (marker-position marker))
       (if (looking-at (concat "\\([ \t]*" reftex-section-pre-regexp "\\)" 
(regexp-quote name)))
           (replace-match (concat "\\1" newname))
-        (error "Fatal error during %smotion" pro-or-de)))))
+        (error "Fatal error during %smotion" reftex--pro-or-de)))))
 
 (defun reftex-toc-extract-section-number (entry)
   "Get the numbering of a TOC entry, for message purposes."
@@ -848,11 +854,11 @@ if these sets are sorted blocks in the alist."
   "Make sure all files of the document are being visited by buffers,
 and that the scanning info is absolutely up to date.
 We do this by rescanning with `reftex-keep-temporary-buffers' bound to t.
-The variable PRO-OR-DE is assumed to be dynamically scoped into this function.
+The variable `reftex--pro-or-de' is assumed to be dynamically scoped into this 
function.
 When finished, we exit with an error message."
   (let ((reftex-keep-temporary-buffers t))
     (reftex-toc-Rescan)
-    (reftex-toc-restore-region start-line mark-line)
+    (reftex-toc-restore-region reftex--start-line reftex--mark-line)
     (throw 'exit
            "TOC had to be updated first.  Please check selection and repeat 
the command.")))
 
@@ -895,7 +901,7 @@ label prefix determines the wording of a reference."
 
   (let* ((toc (get-text-property (point) :data))
          (toc-window (selected-window))
-         show-window show-buffer match)
+         match)
 
     (unless toc (error "Don't know which TOC line to visit"))
 
@@ -926,30 +932,33 @@ label prefix determines the wording of a reference."
       (setq match (reftex-show-label-location toc reftex-callback-fwd
                                                 no-revisit t))))
 
-    (setq show-window (selected-window)
-          show-buffer (current-buffer))
-
     (unless match
       (select-window toc-window)
       (error "Cannot find location"))
 
-    (select-window toc-window)
-
-    ;; use the `final' parameter to decide what to do next
+    ;; Use the `final' parameter to decide what to do next.
     (cond
      ((eq final t)
-      (reftex-unhighlight 0)
-      (select-window show-window))
+      (with-selected-window toc-window
+        (reftex-unhighlight 0)))
      ((eq final 'hide)
-      (reftex-unhighlight 0)
-      (or (one-window-p) (delete-window))
-      ;; If `show-window' is still live, show-buffer is already visible
-      ;; so let's not make it visible in yet-another-window.
-      (if (window-live-p show-window)
-         (set-buffer show-buffer)
-       (switch-to-buffer show-buffer))
-      (reftex-re-enlarge))
-     (t nil))))
+      (let ((show-window (selected-window))
+            (show-buffer (window-buffer)))
+        (unless (eq show-window toc-window) ;FIXME: Can this happen?
+          (with-selected-window toc-window
+            (reftex-unhighlight 0)
+            (or (one-window-p) (delete-window))))
+        ;; If `show-window' is still live, show-buffer is already visible
+        ;; so let's not make it visible in yet-another-window.
+        (unless (window-live-p show-window)
+          ;; FIXME: How could show-window not be live?
+          (switch-to-buffer show-buffer))
+        (reftex-re-enlarge)))
+     (t
+      (unless (eq (selected-frame) (window-frame toc-window))
+        ;; Make sure `toc-window' is not just selected but has focus.
+        (select-frame-set-input-focus (window-frame toc-window)))
+      (select-window toc-window)))))
 
 (defun reftex-toc-find-section (toc &optional no-revisit)
   (let* ((file (nth 3 toc))
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index ce083c9..f1a917d 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -2446,7 +2446,7 @@ of ENTRY-LIST is a list of cons cells (\"MACRONAME\" . 
LEVEL).  See
 
 ;;;***
 
-;;;### (autoloads nil "reftex-cite" "reftex-cite.el" 
"9e0690737924aef6e3836bc2c42a36c9")
+;;;### (autoloads nil "reftex-cite" "reftex-cite.el" 
"83811ccf3471820f0ad0dc005ffc88d5")
 ;;; Generated autoloads from reftex-cite.el
 
 (autoload 'reftex-default-bibliography "reftex-cite" "\
@@ -3046,7 +3046,7 @@ During a selection process, these are the local bindings.
 
 ;;;***
 
-;;;### (autoloads nil "reftex-toc" "reftex-toc.el" 
"8b6d6733d445a55206e84fc119909520")
+;;;### (autoloads nil "reftex-toc" "reftex-toc.el" 
"70daa7ce5ba54f2c8d469337f64636c1")
 ;;; Generated autoloads from reftex-toc.el
 
 (autoload 'reftex-toc "reftex-toc" "\
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index c71ecb4..2ffe9c1 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -1828,6 +1828,8 @@ This takes effect when first loading the library.")
       ("array" (nil \n
                    ("Item: " "<item>" str (if sgml-xml-mode "</item>") \n))
        "align")
+      ("article" \n)
+      ("aside" \n)
       ("au")
       ("b")
       ("big")
@@ -1853,7 +1855,10 @@ This takes effect when first loading the library.")
              "<dd>" (if sgml-xml-mode "</dd>") \n))
       ("em")
       ("fn" "id" "fn")  ;; Footnotes were deprecated in HTML 3.2
+      ("footer" \n)
       ("head" \n)
+      ("header" \n)
+      ("hgroup" \n)
       ("html" (\n
               "<head>\n"
               "<title>" (setq str (read-input "Title: ")) "</title>\n"
@@ -1871,6 +1876,7 @@ This takes effect when first loading the library.")
       ("lang")
       ("li" ,(not sgml-xml-mode))
       ("math" \n)
+      ("nav" \n)
       ("nobr")
       ("option" t ("value") ("label") ("selected" t))
       ("over" t)
@@ -1880,6 +1886,7 @@ This takes effect when first loading the library.")
       ("rev")
       ("s")
       ("samp")
+      ("section" \n)
       ("small")
       ("span" nil
        ("class"
@@ -1910,6 +1917,8 @@ This takes effect when first loading the library.")
     ("acronym" . "Acronym")
     ("address" . "Formatted mail address")
     ("array" . "Math array")
+    ("article" . "An independent part of document or site")
+    ("aside" . "Secondary content related to surrounding content (e.g. page or 
article)")
     ("au" . "Author")
     ("b" . "Bold face")
     ("base" . "Base address for URLs")
@@ -1939,6 +1948,7 @@ This takes effect when first loading the library.")
     ("figt" . "Figure text")
     ("fn" . "Footnote")  ;; No one supports special footnote rendering.
     ("font" . "Font size")
+    ("footer" . "Footer of a section")
     ("form" . "Form with input fields")
     ("group" . "Document grouping")
     ("h1" . "Most important section headline")
@@ -1948,6 +1958,8 @@ This takes effect when first loading the library.")
     ("h5" . "Unimportant section headline")
     ("h6" . "Least important section headline")
     ("head" . "Document header")
+    ("header" . "Header of a section")
+    ("hgroup" . "Group of headings - h1-h6 elements")
     ("hr" . "Horizontal rule")
     ("html" . "HTML Document")
     ("i" . "Italic face")
@@ -1960,8 +1972,9 @@ This takes effect when first loading the library.")
     ("li" . "List item")
     ("link" . "Link relationship")
     ("math" . "Math formula")
-    ("menu" . "Menu list (obsolete)")
+    ("menu" . "List of commands")
     ("mh" . "Form mail header")
+    ("nav" . "Group of navigational links")
     ("nextid" . "Allocate new id")
     ("nobr" . "Text without line break")
     ("ol" . "Ordered list")
@@ -1975,6 +1988,7 @@ This takes effect when first loading the library.")
     ("rev" . "Reverse video")
     ("s" . "Strikeout")
     ("samp" . "Sample text")
+    ("section" . "Section of a document")
     ("select" . "Selection list")
     ("small" . "Font size")
     ("sp" . "Nobreak space")
@@ -2242,6 +2256,33 @@ HTML Autoview mode is a buffer-local minor mode for use 
with
                             "")))
    \n))
 
+(define-skeleton html-navigational-links
+  "Group of navigational links."
+  nil
+  "<nav>" \n
+  "<ul>" \n
+  "<li><a href=\"" (skeleton-read "URL: " "#") "\">"
+  (skeleton-read "Title: ") "</a>"
+  (if sgml-xml-mode (if sgml-xml-mode "</li>")) \n
+  "</ul>" \n
+  "</nav>")
+
+(define-skeleton html-html5-template
+  "Initial HTML5 template"
+  nil
+  "<!DOCTYPE html>" \n
+  "<html lang=\"en\">" \n
+  "<head>" \n
+  "<meta charset=\"utf-8\">" \n
+  "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">" \n
+  "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">" \n
+  "<title>" (skeleton-read "Page Title: ") "</title>" \n
+  "</head>" \n
+  "<body>" \n
+  "<div id=\"app\"></div>" \n
+  "</body>" \n
+  "</html>")
+
 (provide 'sgml-mode)
 
 ;;; sgml-mode.el ends here
diff --git a/lisp/textmodes/text-mode.el b/lisp/textmodes/text-mode.el
index 7effa6a..1466556 100644
--- a/lisp/textmodes/text-mode.el
+++ b/lisp/textmodes/text-mode.el
@@ -149,7 +149,8 @@ Turning on Paragraph-Indent minor mode runs the normal hook
 (defalias 'indented-text-mode 'text-mode)
 
 ;; This can be made a no-op once all modes that use text-mode-hook
-;; are "derived" from text-mode.
+;; are "derived" from text-mode.  (As of 2015/04, and probably well before,
+;; the only one I can find that doesn't so derive is rmail-edit-mode.)
 (defun text-mode-hook-identify ()
   "Mark that this mode has run `text-mode-hook'.
 This is how `toggle-text-mode-auto-fill' knows which buffers to operate on."
diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el
index ff3eafd..001a783 100644
--- a/lisp/url/url-handlers.el
+++ b/lisp/url/url-handlers.el
@@ -344,14 +344,14 @@ They count bytes from the beginning of the body."
 
 (put 'insert-file-contents 'url-file-handlers 'url-insert-file-contents)
 
-(defun url-file-name-completion (url directory &optional predicate)
+(defun url-file-name-completion (url _directory &optional _predicate)
   ;; Even if it's not implemented, it's not an error to ask for completion,
   ;; in case it's available (bug#14806).
   ;; (error "Unimplemented")
   url)
 (put 'file-name-completion 'url-file-handlers 'url-file-name-completion)
 
-(defun url-file-name-all-completions (file directory)
+(defun url-file-name-all-completions (_file _directory)
   ;; Even if it's not implemented, it's not an error to ask for completion,
   ;; in case it's available (bug#14806).
   ;; (error "Unimplemented")
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index d766952..6a7d8e2 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -485,6 +485,8 @@ work correctly."
     )
   )
 
+(declare-function gnutls-peer-status "gnutls.c" (proc))
+
 (defun url-http-parse-headers ()
  "Parse and handle HTTP specific headers.
 Return t if and only if the current buffer is still active and
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el
index 62a0d9d..260366e 100644
--- a/lisp/vc/ediff-util.el
+++ b/lisp/vc/ediff-util.el
@@ -2318,6 +2318,7 @@ the number seen by the user."
                              (narrow-to-region
                               (ediff-get-diff-posn 'B 'beg n ctl-buf)
                               (ediff-get-diff-posn 'B 'end n ctl-buf))
+                             (goto-char (point-min))
                              (re-search-forward regex-B nil t))))
             (reg-C-match (if ediff-3way-comparison-job
                              (ediff-with-current-buffer ediff-buffer-C
@@ -2325,6 +2326,7 @@ the number seen by the user."
                                  (narrow-to-region
                                   (ediff-get-diff-posn 'C 'beg n ctl-buf)
                                   (ediff-get-diff-posn 'C 'end n ctl-buf))
+                                  (goto-char (point-min))
                                  (re-search-forward regex-C nil t))))))
        (not (eval (if ediff-3way-comparison-job
                       (list ediff-focus-regexp-connective
diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el
index f82c7e9..08ae998 100644
--- a/lisp/vc/log-edit.el
+++ b/lisp/vc/log-edit.el
@@ -717,6 +717,9 @@ can thus take some time."
 
 (defvar log-edit-changelog-use-first nil)
 
+(defvar log-edit-rewrite-tiny-change t
+  "Non-nil means rewrite (tiny change).")
+
 (defvar log-edit-rewrite-fixes nil
   "Rule to rewrite bug numbers into Fixes: headers.
 The value should be of the form (REGEXP . REPLACEMENT)
@@ -761,7 +764,7 @@ regardless of user name or time."
             (log-edit-insert-changelog-entries (log-edit-files)))))
       (log-edit-set-common-indentation)
       ;; Add an Author: field if appropriate.
-      (when author (log-edit-add-field "Author" author))
+      (when author (log-edit-add-field "Author" (car author)))
       ;; Add a Fixes: field if applicable.
       (when (consp log-edit-rewrite-fixes)
        (rfc822-goto-eoh)
@@ -782,7 +785,13 @@ regardless of user name or time."
               (goto-char start)
               (skip-chars-forward "^():")
               (skip-chars-forward ": ")
-              (delete-region start (point))))))))
+              (delete-region start (point)))))
+      ;; FIXME also add "Co-authored-by" when appropriate.
+      ;; Bzr accepts multiple --author arguments, others (?) don't.
+      (and log-edit-rewrite-tiny-change
+           (eq 'tiny (cdr author))
+           (goto-char (point-max))
+           (insert "\nCopyright-paperwork-exempt: yes\n")))))
 
 ;;;;
 ;;;; functions for getting commit message from ChangeLog a file...
@@ -868,19 +877,26 @@ Return non-nil if it is."
     (if (null log-edit-changelog-use-first)
         (looking-at (regexp-quote (format "%s  %s  <%s>" time name mail)))
       ;; Check the author, to potentially add it as a "Author: " header.
+      ;; FIXME This accumulates multiple authors, but only when there
+      ;; are multiple ChangeLog files.  It should also check for
+      ;; multiple authors in each individual entry.
       (when (looking-at "[^ \t]")
         (when (and (boundp 'log-edit-author)
                    (not (looking-at (format ".+  .+  <%s>"
                                             (regexp-quote mail))))
-                   (looking-at ".+  \\(.+  <.+>\\)"))
+                   (looking-at ".+  \\(.+  <.+>\\) *\\((tiny change)\\)?"))
           (let ((author (replace-regexp-in-string "  " " "
                                                   (match-string 1))))
             (unless (and log-edit-author
-                         (string-match (regexp-quote author) log-edit-author))
-              (setq log-edit-author
-                    (if log-edit-author
-                        (concat log-edit-author ", " author)
-                      author)))))
+                         (string-match (regexp-quote author)
+                                       (car log-edit-author)))
+              (if (not log-edit-author)
+                  (setq log-edit-author
+                        (cons author (if (match-string 2) 'tiny)))
+                (setcar log-edit-author
+                        (concat (car log-edit-author) ", " author))
+                (and (match-string 2) (not (cdr log-edit-author))
+                     (setcdr log-edit-author 'tiny))))))
         t))))
 
 (defun log-edit-changelog-entries (file)
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index 811f9e8..c950825 100644
--- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -335,29 +335,31 @@ in the repository root directory of FILE."
 (declare-function vc-set-async-update "vc-dispatcher" (process-buffer))
 (declare-function vc-compilation-mode "vc-dispatcher" (backend))
 
-(defun vc-bzr-pull (prompt)
-  "Pull changes into the current Bzr branch.
-Normally, this runs \"bzr pull\".  However, if the branch is a
-bound branch, run \"bzr update\" instead.  If there is no default
-location from which to pull or update, or if PROMPT is non-nil,
-prompt for the Bzr command to run."
+(defun vc-bzr--pushpull (command prompt)
+    "Run COMMAND (a string; either push or pull) on the current Bzr branch.
+If PROMPT is non-nil, prompt for the Bzr command to run."
   (let* ((vc-bzr-program vc-bzr-program)
         (branch-conf (vc-bzr-branch-conf default-directory))
         ;; Check whether the branch is bound.
         (bound (assoc "bound" branch-conf))
         (bound (and bound (equal "true" (downcase (cdr bound)))))
-        ;; If we need to do a "bzr pull", check for a parent.  If it
-        ;; does not exist, bzr will need a pull location.
-        (has-parent (unless bound
-                      (assoc "parent_location" branch-conf)))
-        (command (if bound "update" "pull"))
+        (has-loc (assoc (if (equal command "push")
+                            "push_location"
+                          "parent_location")
+                        branch-conf))
         args)
+    (when bound
+      (if (equal command "push")
+         (user-error "Cannot push a bound branch")
+       (setq command "update")))
     ;; If necessary, prompt for the exact command.
-    (when (or prompt (not (or bound has-parent)))
+    (when (or prompt (if (equal command "push")
+                        (not has-loc)
+                      (not (or bound has-loc))))
       (setq args (split-string
                  (read-shell-command
-                  "Bzr pull command: "
-                  (concat vc-bzr-program " " command)
+                  (format "Bzr %s command: " command)
+                  (format "%s %s" vc-bzr-program command)
                   'vc-bzr-history)
                  " " t))
       (setq vc-bzr-program (car  args)
@@ -368,6 +370,20 @@ prompt for the Bzr command to run."
       (with-current-buffer buf (vc-run-delayed (vc-compilation-mode 'bzr)))
       (vc-set-async-update buf))))
 
+(defun vc-bzr-pull (prompt)
+  "Pull changes into the current Bzr branch.
+Normally, this runs \"bzr pull\".  However, if the branch is a
+bound branch, run \"bzr update\" instead.  If there is no default
+location from which to pull or update, or if PROMPT is non-nil,
+prompt for the Bzr command to run."
+  (vc-bzr--pushpull "pull" prompt))
+
+(defun vc-bzr-push (prompt)
+  "Push changes from the current Bzr branch.
+Normally, this runs \"bzr push\".  If there is no push location,
+or if PROMPT is non-nil, prompt for the Bzr command to run."
+  (vc-bzr--pushpull "push" prompt))
+
 (defun vc-bzr-merge-branch ()
   "Merge another Bzr branch into the current one.
 Prompt for the Bzr command to run, providing a pre-defined merge
@@ -873,7 +889,7 @@ property containing author and date information."
                (move-marker (process-mark proc) (point))))
            (process-put proc :vc-left-over string)))))))
 
-(declare-function vc-annotate-convert-time "vc-annotate" (time))
+(declare-function vc-annotate-convert-time "vc-annotate" (&optional time))
 
 (defun vc-bzr-annotate-time ()
   (when (re-search-forward "^ *[0-9.]+ +.+? +|" nil t)
@@ -954,6 +970,12 @@ stream.  Standard error output is discarded."
        (translated nil)
        (result nil))
       (goto-char (point-min))
+      ;; Skip a warning message that can occur in some bzr installations.
+      ;; vc-bzr-dir-extra-headers already reports it.
+      ;; Perhaps we should just discard stderr?
+      (and (looking-at "bzr: WARNING: bzrlib version doesn't match")
+           (re-search-forward "^bzr is version" nil t)
+           (forward-line 1))
       (while (not (eobp))
         ;; Bzr 2.3.0 added this if there are shelves.  (Bug#8170)
         (unless (looking-at "[0-9]+ shel\\(f\\|ves\\) exists?\\.")
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el
index 232dcc2..9a41905 100644
--- a/lisp/vc/vc-cvs.el
+++ b/lisp/vc/vc-cvs.el
@@ -651,7 +651,7 @@ Optional arg REVISION is a revision to annotate from."
         (re-search-forward vc-cvs-annotate-first-line-re)
         (delete-region (point-min) (1- (point)))))))
 
-(declare-function vc-annotate-convert-time "vc-annotate" (time))
+(declare-function vc-annotate-convert-time "vc-annotate" (&optional time))
 
 (defun vc-cvs-annotate-current-time ()
   "Return the current time, based at midnight of the current day, and
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index e050c94..eb03a8b 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -111,7 +111,7 @@ See `run-hooks'."
           (current-buffer)))))
 
 (defvar vc-dir-menu-map
-  (let ((map (make-sparse-keymap "VC-dir")))
+  (let ((map (make-sparse-keymap "VC-Dir")))
     (define-key map [quit]
       '(menu-item "Quit" quit-window
                  :help "Quit"))
@@ -204,6 +204,10 @@ See `run-hooks'."
                  :help "List the change log for the current tree in a window"))
     ;; VC commands.
     (define-key map [sepvccmd] '("--"))
+    (define-key map [push]
+      '(menu-item "Push Changes" vc-push
+                 :enable (vc-find-backend-function vc-dir-backend 'push)
+                 :help "Push the current branch's changes"))
     (define-key map [update]
       '(menu-item "Update to Latest Version" vc-update
                  :help "Update the current fileset's files to their tip 
revisions"))
@@ -246,6 +250,8 @@ See `run-hooks'."
     (define-key map "D" 'vc-root-diff)    ;; C-x v D
     (define-key map "i" 'vc-register)     ;; C-x v i
     (define-key map "+" 'vc-update)       ;; C-x v +
+    ;; I'd prefer some kind of symmetry with vc-update:
+    (define-key map "P" 'vc-push)         ;; C-x v P
     (define-key map "l" 'vc-print-log)    ;; C-x v l
     (define-key map "L" 'vc-print-root-log) ;; C-x v L
     (define-key map "I" 'vc-log-incoming)   ;; C-x v I
@@ -294,7 +300,7 @@ See `run-hooks'."
       `(menu-item
        ;; VC backends can use this to add mode-specific menu items to
        ;; vc-dir-menu-map.
-       "VC-dir" ,vc-dir-menu-map :filter vc-dir-menu-map-filter))
+       "VC-Dir" ,vc-dir-menu-map :filter vc-dir-menu-map-filter))
     map)
   "Keymap for directory buffer.")
 
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index c8b696a..cbf3da3 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -117,8 +117,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no 
switches."
                 (const :tag "None" t)
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
-  :version "23.1"
-  :group 'vc-git)
+  :version "23.1")
 
 (defcustom vc-git-annotate-switches nil
   "String or list of strings specifying switches for Git blame under VC.
@@ -127,14 +126,24 @@ If nil, use the value of `vc-annotate-switches'.  If t, 
use no switches."
                 (const :tag "None" t)
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
-  :version "25.1"
-  :group 'vc-git)
+  :version "25.1")
+
+(defcustom vc-git-resolve-conflicts t
+  "When non-nil, mark conflicted file as resolved upon saving.
+That is performed after all conflict markers in it have been
+removed.  If the value is `unstage-maybe', and no merge is in
+progress, then after the last conflict is resolved, also clear
+the staging area."
+  :type '(choice (const :tag "Don't resolve" nil)
+                 (const :tag "Resolve" t)
+                 (const :tag "Resolve and maybe unstage all files"
+                        unstage-maybe))
+  :version "25.1")
 
 (defcustom vc-git-program "git"
   "Name of the Git executable (excluding any arguments)."
   :version "24.1"
-  :type 'string
-  :group 'vc-git)
+  :type 'string)
 
 (defcustom vc-git-root-log-format
   '("%d%h..: %an %ad %s"
@@ -154,7 +163,6 @@ format string (which is passed to \"git log\" via the 
argument
 matching the resulting Git log output, and KEYWORDS is a list of
 `font-lock-keywords' for highlighting the Log View buffer."
   :type '(list string string (repeat sexp))
-  :group 'vc-git
   :version "24.1")
 
 (defvar vc-git-commits-coding-system 'utf-8
@@ -721,21 +729,21 @@ It is based on `log-edit-mode', and has Git-specific 
extensions.")
 ;; To be called via vc-pull from vc.el, which requires vc-dispatcher.
 (declare-function vc-compilation-mode "vc-dispatcher" (backend))
 
-(defun vc-git-pull (prompt)
-  "Pull changes into the current Git branch.
-Normally, this runs \"git pull\".  If PROMPT is non-nil, prompt
-for the Git command to run."
+(defun vc-git--pushpull (command prompt)
+  "Run COMMAND (a string; either push or pull) on the current Git branch.
+If PROMPT is non-nil, prompt for the Git command to run."
   (let* ((root (vc-git-root default-directory))
         (buffer (format "*vc-git : %s*" (expand-file-name root)))
-        (command "pull")
         (git-program vc-git-program)
         args)
     ;; If necessary, prompt for the exact command.
+    ;; TODO if pushing, prompt if no default push location - cf bzr.
     (when prompt
       (setq args (split-string
-                 (read-shell-command "Git pull command: "
-                                      (format "%s pull" git-program)
-                                     'vc-git-history)
+                 (read-shell-command
+                   (format "Git %s command: " command)
+                   (format "%s %s" git-program command)
+                   'vc-git-history)
                  " " t))
       (setq git-program (car  args)
            command     (cadr args)
@@ -745,6 +753,18 @@ for the Git command to run."
     (with-current-buffer buffer (vc-run-delayed (vc-compilation-mode 'git)))
     (vc-set-async-update buffer)))
 
+(defun vc-git-pull (prompt)
+  "Pull changes into the current Git branch.
+Normally, this runs \"git pull\".  If PROMPT is non-nil, prompt
+for the Git command to run."
+  (vc-git--pushpull "pull" prompt))
+
+(defun vc-git-push (prompt)
+  "Push changes from the current Git branch.
+Normally, this runs \"git push\".  If PROMPT is non-nil, prompt
+for the Git command to run."
+  (vc-git--pushpull "push" prompt))
+
 (defun vc-git-merge-branch ()
   "Merge changes into the current Git branch.
 This prompts for a branch to merge from."
@@ -789,12 +809,14 @@ This prompts for a branch to merge from."
   (save-excursion
     (goto-char (point-min))
     (unless (re-search-forward "^<<<<<<< " nil t)
-      (if (file-exists-p (expand-file-name ".git/MERGE_HEAD"
-                                           (vc-git-root buffer-file-name)))
-          ;; Doing a merge.
-          (vc-git-command nil 0 buffer-file-name "add")
-        ;; Doing something else.  Likely applying a stash (bug#20292).
-        (vc-git-command nil 0 buffer-file-name "reset"))
+      (vc-git-command nil 0 buffer-file-name "add")
+      (unless (or
+               (not (eq vc-git-resolve-conflicts 'unstage-maybe))
+               ;; Doing a merge, so bug#20292 doesn't apply.
+               (file-exists-p (expand-file-name ".git/MERGE_HEAD"
+                                                (vc-git-root 
buffer-file-name)))
+               (vc-git-conflicted-files (vc-git-root buffer-file-name)))
+        (vc-git-command nil 0 nil "reset"))
       ;; Remove the hook so that it is not called multiple times.
       (remove-hook 'after-save-hook 'vc-git-resolve-when-done t))))
 
@@ -811,7 +833,8 @@ This prompts for a branch to merge from."
                (re-search-forward "^<<<<<<< " nil 'noerror)))
     (vc-file-setprop buffer-file-name 'vc-state 'conflict)
     (smerge-start-session)
-    (add-hook 'after-save-hook 'vc-git-resolve-when-done nil 'local)
+    (when vc-git-resolve-conflicts
+      (add-hook 'after-save-hook 'vc-git-resolve-when-done nil 'local))
     (message "There are unresolved conflicts in this file")))
 
 ;;; HISTORY FUNCTIONS
@@ -1031,17 +1054,19 @@ or BRANCH^ (where \"^\" can be repeated)."
 
 (defun vc-git-annotate-command (file buf &optional rev)
   (let ((name (file-relative-name file)))
-    (apply #'vc-git-command buf 'async nil "blame" "--date=iso"
+    (apply #'vc-git-command buf 'async nil "blame" "--date=short"
           (append (vc-switches 'git 'annotate)
                   (list rev "--" name)))))
 
-(declare-function vc-annotate-convert-time "vc-annotate" (time))
+(declare-function vc-annotate-convert-time "vc-annotate" (&optional time))
 
 (defun vc-git-annotate-time ()
-  (and (re-search-forward "[0-9a-f]+[^()]+(.* 
\\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\) \\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\) 
\\([-+0-9]+\\) +[0-9]+) " nil t)
+  (and (re-search-forward 
"^[0-9a-f]+[^()]+(.*?\\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\) 
\\(:?\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\) \\([-+0-9]+\\)\\)? *[0-9]+) " nil t)
        (vc-annotate-convert-time
         (apply #'encode-time (mapcar (lambda (match)
-                                       (string-to-number (match-string match)))
+                                       (if (match-beginning match)
+                                           (string-to-number (match-string 
match))
+                                         0))
                                      '(6 5 4 3 2 1 7))))))
 
 (defun vc-git-annotate-extract-revision-at-line ()
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index c841dfc..556174a 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -373,7 +373,7 @@ Optional arg REVISION is a revision to annotate from."
         (append (vc-switches 'hg 'annotate)
                  (if revision (list (concat "-r" revision))))))
 
-(declare-function vc-annotate-convert-time "vc-annotate" (time))
+(declare-function vc-annotate-convert-time "vc-annotate" (&optional time))
 
 ;; The format for one line output by "hg annotate -d -n" looks like this:
 ;;215 Wed Jun 20 21:22:58 2007 -0700: CONTENTS
@@ -659,20 +659,6 @@ REV is the revision to check out into WORKFILE."
   (vc-hg-command buffer 1 nil "outgoing" "-n" (unless (string= remote-location 
"")
                                                remote-location)))
 
-(declare-function log-view-get-marked "log-view" ())
-
-;; XXX maybe also add key bindings for these functions.
-(defun vc-hg-push ()
-  (interactive)
-  (let ((marked-list (log-view-get-marked)))
-    (if marked-list
-        (apply #'vc-hg-command
-               nil 0 nil
-               "push"
-               (apply 'nconc
-                      (mapcar (lambda (arg) (list "-r" arg)) marked-list)))
-      (error "No log entries selected for push"))))
-
 (defvar vc-hg-error-regexp-alist nil
   ;; 'hg pull' does not list modified files, so, for now, the only
   ;; benefit of `vc-compilation-mode' is that one can get rid of
@@ -682,51 +668,70 @@ REV is the revision to check out into WORKFILE."
   "Value of `compilation-error-regexp-alist' in *vc-hg* buffers.")
 
 (autoload 'vc-do-async-command "vc-dispatcher")
+(autoload 'log-view-get-marked "log-view")
 
-(defun vc-hg-pull (prompt)
-  "Issue a Mercurial pull command.
-If called interactively with a set of marked Log View buffers,
-call \"hg pull -r REVS\" to pull in the specified revisions REVS.
-
-With a prefix argument or if PROMPT is non-nil, prompt for a
-specific Mercurial pull command.  The default is \"hg pull -u\",
-which fetches changesets from the default remote repository and
-then attempts to update the working directory."
-  (interactive "P")
+(defun vc-hg--pushpull (command prompt &optional obsolete)
+  "Run COMMAND (a string; either push or pull) on the current Hg branch.
+If PROMPT is non-nil, prompt for the Hg command to run.
+If OBSOLETE is non-nil, behave like the old versions of the Hg push/pull
+commands, which only operated on marked files."
   (let (marked-list)
-    ;; The `vc-hg-pull' command existed before the `pull' VC action
-    ;; was implemented.  Keep it for backward compatibility.
-    (if (and (called-interactively-p 'interactive)
-            (setq marked-list (log-view-get-marked)))
+    ;; The `vc-hg-pull' and `vc-hg-push' commands existed before the
+    ;; `pull'/`push' VC actions were implemented.
+    ;; The following is for backwards compatibility.
+    (if (and obsolete (setq marked-list (log-view-get-marked)))
        (apply #'vc-hg-command
               nil 0 nil
-              "pull"
+              command
               (apply 'nconc
-                     (mapcar (lambda (arg) (list "-r" arg))
-                             marked-list)))
+                     (mapcar (lambda (arg) (list "-r" arg)) marked-list)))
       (let* ((root (vc-hg-root default-directory))
             (buffer (format "*vc-hg : %s*" (expand-file-name root)))
-            (command "pull")
             (hg-program vc-hg-program)
             ;; Fixme: before updating the working copy to the latest
             ;; state, should check if it's visiting an old revision.
-            (args '("-u")))
+            (args (if (equal command "pull") '("-u"))))
        ;; If necessary, prompt for the exact command.
+        ;; TODO if pushing, prompt if no default push location - cf bzr.
        (when prompt
          (setq args (split-string
-                     (read-shell-command "Run Hg (like this): "
-                                         (format "%s pull -u" hg-program)
-                                         'vc-hg-history)
+                     (read-shell-command
+                       (format "Hg %s command: " command)
+                       (format "%s %s%s" hg-program command
+                               (if (not args) ""
+                                 (concat " " (mapconcat 'identity args " "))))
+                       'vc-hg-history)
                      " " t))
          (setq hg-program (car  args)
                command    (cadr args)
                args       (cddr args)))
-       (apply 'vc-do-async-command buffer root hg-program
-              command args)
+       (apply 'vc-do-async-command buffer root hg-program command args)
         (with-current-buffer buffer
           (vc-run-delayed (vc-compilation-mode 'hg)))
        (vc-set-async-update buffer)))))
 
+(defun vc-hg-pull (prompt)
+  "Issue a Mercurial pull command.
+If called interactively with a set of marked Log View buffers,
+call \"hg pull -r REVS\" to pull in the specified revisions REVS.
+
+With a prefix argument or if PROMPT is non-nil, prompt for a
+specific Mercurial pull command.  The default is \"hg pull -u\",
+which fetches changesets from the default remote repository and
+then attempts to update the working directory."
+  (interactive "P")
+  (vc-hg--pushpull "pull" prompt (called-interactively-p 'interactive)))
+
+(defun vc-hg-push (prompt)
+  "Push changes from the current Mercurial branch.
+Normally, this runs \"hg push\".  If PROMPT is non-nil, prompt
+for the Hg command to run.
+
+If called interactively with a set of marked Log View buffers,
+call \"hg push -r REVS\" to push the specified revisions REVS."
+  (interactive "P")
+  (vc-hg--pushpull "push" prompt (called-interactively-p 'interactive)))
+
 (defun vc-hg-merge-branch ()
   "Merge incoming changes into the current working directory.
 This runs the command \"hg merge\"."
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 251fecb..bae9919 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -883,6 +883,8 @@ current, and kill the buffer that visits the link."
     (define-key map "u" 'vc-revert)
     (define-key map "v" 'vc-next-action)
     (define-key map "+" 'vc-update)
+    ;; I'd prefer some kind of symmetry with vc-update:
+    (define-key map "P" 'vc-push)
     (define-key map "=" 'vc-diff)
     (define-key map "D" 'vc-root-diff)
     (define-key map "~" 'vc-revision-other-window)
@@ -940,6 +942,10 @@ current, and kill the buffer that visits the link."
     (bindings--define-key map [vc-revert]
       '(menu-item "Revert to Base Version" vc-revert
                  :help "Revert working copies of the selected file set to 
their repository contents"))
+    ;; TODO Only :enable if (vc-find-backend-function backend 'push)
+    (bindings--define-key map [vc-push]
+      '(menu-item "Push Changes" vc-push
+                 :help "Push the current branch's changes"))
     (bindings--define-key map [vc-update]
       '(menu-item "Update to Latest Version" vc-update
                  :help "Update the current fileset's files to their tip 
revisions"))
diff --git a/lisp/vc/vc-mtn.el b/lisp/vc/vc-mtn.el
index cd84ebe..93bd1f6 100644
--- a/lisp/vc/vc-mtn.el
+++ b/lisp/vc/vc-mtn.el
@@ -261,7 +261,7 @@ If LIMIT is non-nil, show no more than this many entries."
         (append (vc-switches 'mtn 'annotate)
                 (if rev (list "-r" rev)))))
 
-(declare-function vc-annotate-convert-time "vc-annotate" (time))
+(declare-function vc-annotate-convert-time "vc-annotate" (&optional time))
 
 (defconst vc-mtn-annotate-full-re
   "^ *\\([0-9a-f]+\\)\\.* by [^ ]+ \\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\): ")
diff --git a/lisp/vc/vc-rcs.el b/lisp/vc/vc-rcs.el
index 8aedc00..1e19908 100644
--- a/lisp/vc/vc-rcs.el
+++ b/lisp/vc/vc-rcs.el
@@ -758,7 +758,7 @@ Optional arg REVISION is a revision to annotate from."
       (insert (gethash (get-text-property (point) :vc-rcs-r/d/a) ht))
       (forward-line 1))))
 
-(declare-function vc-annotate-convert-time "vc-annotate" (time))
+(declare-function vc-annotate-convert-time "vc-annotate" (&optional time))
 
 (defun vc-rcs-annotate-current-time ()
   "Return the current time, based at midnight of the current day, and
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index bb4dd60..d5d0abe 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -2224,8 +2224,10 @@ earlier revisions.  Show up to LIMIT entries (non-nil 
means unlimited)."
        (lambda (_bk _files-arg ret)
         (vc-print-log-setup-buttons working-revision
                                     is-start-revision limit ret))
-       (lambda (bk)
-        (vc-call-backend bk 'show-log-entry working-revision))
+       ;; When it's nil, point really shouldn't move (bug#15322).
+       (when working-revision
+         (lambda (bk)
+           (vc-call-backend bk 'show-log-entry working-revision)))
        (lambda (_ignore-auto _noconfirm)
         (vc-print-log-internal backend files working-revision
                               is-start-revision limit)))))
@@ -2263,8 +2265,9 @@ earlier revisions.  Show up to LIMIT entries (non-nil 
means unlimited)."
      (let ((inhibit-read-only t))
        (funcall setup-buttons-func backend files retval)
        (shrink-window-if-larger-than-buffer)
-       (funcall goto-location-func backend)
-       (setq vc-sentinel-movepoint (point))
+       (when goto-location-func
+         (funcall goto-location-func backend)
+         (setq vc-sentinel-movepoint (point)))
        (set-buffer-modified-p nil)))))
 
 (defun vc-incoming-outgoing-internal (backend remote-location buffer-name type)
@@ -2273,7 +2276,7 @@ earlier revisions.  Show up to LIMIT entries (non-nil 
means unlimited)."
    (lambda (bk buf type-arg _files)
      (vc-call-backend bk type-arg buf remote-location))
    (lambda (_bk _files-arg _ret) nil)
-   (lambda (_bk) (goto-char (point-min)))
+   nil ;; Don't move point.
    (lambda (_ignore-auto _noconfirm)
      (vc-incoming-outgoing-internal backend remote-location buffer-name 
type))))
 
@@ -2328,16 +2331,15 @@ When called interactively with a prefix argument, 
prompt for LIMIT."
      (list (when (> vc-log-show-limit 0) vc-log-show-limit)))))
   (let ((backend (vc-deduce-backend))
        (default-directory default-directory)
-       rootdir working-revision)
+       rootdir)
     (if backend
        (setq rootdir (vc-call-backend backend 'root default-directory))
       (setq rootdir (read-directory-name "Directory for VC root-log: "))
       (setq backend (vc-responsible-backend rootdir))
       (unless backend
         (error "Directory is not version controlled")))
-    (setq working-revision (vc-working-revision rootdir)
-          default-directory rootdir)
-    (vc-print-log-internal backend (list rootdir) working-revision nil limit)))
+    (setq default-directory rootdir)
+    (vc-print-log-internal backend (list rootdir) nil nil limit)))
 
 ;;;###autoload
 (defun vc-log-incoming (&optional remote-location)
@@ -2482,6 +2484,22 @@ tip revision are merged into the working file."
 ;;;###autoload
 (defalias 'vc-update 'vc-pull)
 
+;;;###autoload
+(defun vc-push (&optional arg)
+  "Push the current branch.
+You must be visiting a version controlled file, or in a `vc-dir' buffer.
+On a distributed version control system, this runs a \"push\"
+operation on the current branch, prompting for the precise command
+if required.  Optional prefix ARG non-nil forces a prompt.
+On a non-distributed version control system, this signals an error."
+  (interactive "P")
+  (let* ((vc-fileset (vc-deduce-fileset t))
+        (backend (car vc-fileset)))
+;;;     (files (cadr vc-fileset)))
+    (if (vc-find-backend-function backend 'push)
+        (vc-call-backend backend 'push arg)
+      (user-error "VC push is unsupported for `%s'" backend))))
+
 (defun vc-version-backup-file (file &optional rev)
   "Return name of backup file for revision REV of FILE.
 If version backups should be used for FILE, and there exists
diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el
index 876df87..6f8fa84 100644
--- a/lisp/w32-fns.el
+++ b/lisp/w32-fns.el
@@ -44,7 +44,7 @@
   (or (bound-and-true-p shell-file-name)
       (getenv "ESHELL")
       (getenv "SHELL")
-      (and (w32-using-nt) "cmd.exe")
+      (and (fboundp 'w32-using-nt) (w32-using-nt) "cmd.exe")
       "command.com"))
 
 (defun w32-system-shell-p (shell-name)
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index b4cd67f..fad3e2f 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -538,31 +538,34 @@ cleaning up a buffer.  See `whitespace-cleanup' and
 `whitespace-cleanup-region' for documentation.
 
 See also `whitespace-display-mappings' for documentation."
-  :type '(repeat :tag "Kind of Blank"
-                (choice :tag "Kind of Blank Face"
-                        (const :tag "(Face) Face visualization"
-                               face)
-                        (const :tag "(Face) Trailing TABs, SPACEs and HARD 
SPACEs"
-                               trailing)
-                        (const :tag "(Face) SPACEs and HARD SPACEs"
-                               spaces)
-                        (const :tag "(Face) TABs" tabs)
-                        (const :tag "(Face) Lines" lines)
-                        (const :tag "(Face) SPACEs before TAB"
-                               space-before-tab)
-                        (const :tag "(Face) NEWLINEs" newline)
-                        (const :tag "(Face) Indentation SPACEs"
-                               indentation)
-                        (const :tag "(Face) Too much line indentation"
-                               big-indent)
-                        (const :tag "(Face) Empty Lines At BOB And/Or EOB"
-                               empty)
-                        (const :tag "(Face) SPACEs after TAB"
-                               space-after-tab)
-                        (const :tag "(Mark) SPACEs and HARD SPACEs"
-                               space-mark)
-                        (const :tag "(Mark) TABs" tab-mark)
-                        (const :tag "(Mark) NEWLINEs" newline-mark)))
+  :type '(set :tag "Kind of Blank"
+              (const :tag "(Face) Face visualization" face)
+              (const :tag "(Face) Trailing TABs, SPACEs and HARD SPACEs"
+                     trailing)
+              (const :tag "(Face) TABs" tabs)
+              (const :tag "(Face) SPACEs and HARD SPACEs" spaces)
+              (const :tag "(Face) Lines" lines)
+              (const :tag "(Face) Lines, only overlong part" lines-tail)
+              (const :tag "(Face) NEWLINEs" newline)
+              (const :tag "(Face) Empty Lines At BOB And/Or EOB" empty)
+              (const :tag "(Face) Indentation SPACEs" indentation::tab)
+              (const :tag "(Face) Indentation TABs"
+                     indentation::space)
+              (const :tag "(Face) Indentation TABs or SPACEs" indentation)
+              (const :tag "(Face) Too much line indentation" big-indent)
+              (const :tag "(Face) SPACEs after TAB: SPACEs"
+                     space-after-tab::tab)
+              (const :tag "(Face) SPACEs after TAB: TABs"
+                     space-after-tab::space)
+              (const :tag "(Face) SPACEs after TAB" space-after-tab)
+              (const :tag "(Face) SPACEs before TAB: SPACEs"
+                     space-before-tab::tab)
+              (const :tag "(Face) SPACEs before TAB: TABs"
+                     space-before-tab::space)
+              (const :tag "(Face) SPACEs before TAB" space-before-tab)
+              (const :tag "(Mark) SPACEs and HARD SPACEs" space-mark)
+              (const :tag "(Mark) TABs" tab-mark)
+              (const :tag "(Mark) NEWLINEs" newline-mark))
   :group 'whitespace)
 
 (defvar whitespace-space 'whitespace-space
diff --git a/lisp/window.el b/lisp/window.el
index a6c60e9..49b7e2c 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -1835,6 +1835,8 @@ optional argument PIXELWISE is passed to the functions."
       (window-body-width window pixelwise)
     (window-body-height window pixelwise)))
 
+(declare-function font-info "font.c" (name &optional frame))
+
 (defun window-font-width (&optional window face)
    "Return average character width for the font of FACE used in WINDOW.
 WINDOW must be a live window and defaults to the selected one.
@@ -1866,6 +1868,8 @@ information for the remapped face."
           (aref info 3))
        (frame-char-height))))
 
+(defvar overflow-newline-into-fringe)
+
 (defun window-max-chars-per-line (&optional window face)
   "Return the number of characters that can be displayed on one line in WINDOW.
 WINDOW must be a live window and defaults to the selected one.
@@ -7187,6 +7191,8 @@ See also `fit-frame-to-buffer-margins'."
             (<= left (- right margin)) (<= margin right))
     margin))
 
+(declare-function tool-bar-height "xdisp.c" (&optional frame pixelwise))
+
 (defun fit-frame-to-buffer (&optional frame max-height min-height max-width 
min-width only)
   "Adjust size of FRAME to display the contents of its buffer exactly.
 FRAME can be any live frame and defaults to the selected one.
diff --git a/lwlib/Makefile.in b/lwlib/Makefile.in
index 7c91fb3..cbc747c 100644
--- a/lwlib/Makefile.in
+++ b/lwlib/Makefile.in
@@ -71,10 +71,15 @@ am__v_at_0 = @
 am__v_at_1 =
 
 DEPDIR = deps
-## -MMD -MF $(DEPDIR)/$*.d if AUTO_DEPEND; else empty.
-DEPFLAGS = @DEPFLAGS@
-## ${MKDIR_P} ${DEPDIR} (if AUTO_DEPEND); else ':'.
-MKDEPDIR = @MKDEPDIR@
+AUTO_DEPEND = @AUTO_DEPEND@
+
+ifeq ($(AUTO_DEPEND),yes)
+DEPFLAGS = -MMD -MF ${DEPDIR}/$*.d -MP
+MKDEPDIR = ${MKDIR_P} ${DEPDIR}
+else
+DEPFLAGS =
+MKDEPDIR = :
+endif
 
 ## ../src is where the generated file (config.h, globals.h) are.
 ## $(srcdir)/../src is where the non-generated files (lisp.h) are.
@@ -104,8 +109,11 @@ globals_h = ../src/globals.h
 $(globals_h):
        $(MAKE) -C ../src globals.h
 
-## Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk.
address@hidden@
+ifeq ($(AUTO_DEPEND),yes)
+-include $(ALLOBJS:%.o=${DEPDIR}/%.d)
+else
+include $(srcdir)/deps.mk
+endif
 
 .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
 
diff --git a/lwlib/autodeps.mk b/lwlib/autodeps.mk
deleted file mode 100644
index f710929..0000000
--- a/lwlib/autodeps.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-### autodeps.mk --- lwlib/Makefile fragment for GNU Emacs
-
-## This is inserted in lwlib/Makefile if AUTO_DEPEND=yes.
-
--include $(ALLOBJS:%.o=${DEPDIR}/%.d)
diff --git a/lwlib/deps.mk b/lwlib/deps.mk
index 11cc056..a19e51f 100644
--- a/lwlib/deps.mk
+++ b/lwlib/deps.mk
@@ -20,7 +20,7 @@
 
 ### Commentary:
 
-## This file is inserted in lwlib/Makefile if AUTO_DEPEND=no.
+## This file is included in lwlib/Makefile if AUTO_DEPEND=no.
 ## It defines static dependencies between the various source files.
 
 ### Code:
diff --git a/m4/acl.m4 b/m4/acl.m4
index 186353c..b8f4660 100644
--- a/m4/acl.m4
+++ b/m4/acl.m4
@@ -1,5 +1,5 @@
 # acl.m4 - check for access control list (ACL) primitives
-# serial 18
+# serial 19
 
 # Copyright (C) 2002, 2004-2015 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
@@ -181,12 +181,26 @@ AC_DEFUN([gl_FILE_HAS_ACL],
 [
   AC_REQUIRE([gl_FUNC_ACL_ARG])
   if test "$enable_acl" != no; then
-    AC_CHECK_HEADERS([linux/xattr.h],
-      [AC_CHECK_HEADERS([sys/xattr.h],
-         [AC_CHECK_FUNCS([getxattr])])])
+    AC_CACHE_CHECK([for getxattr with XATTR_NAME_POSIX_ACL macros],
+      [gl_cv_getxattr_with_posix_acls],
+      [gl_cv_getxattr_with_posix_acls=no
+       AC_LINK_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[#include <sys/types.h>
+              #include <sys/xattr.h>
+              #include <linux/xattr.h>
+            ]],
+            [[ssize_t a = getxattr (".", XATTR_NAME_POSIX_ACL_ACCESS, 0, 0);
+              ssize_t b = getxattr (".", XATTR_NAME_POSIX_ACL_DEFAULT, 0, 0);
+              return a < 0 || b < 0;
+            ]])],
+         [gl_cv_getxattr_with_posix_acls=yes])])
   fi
-  if test 
"$ac_cv_header_sys_xattr_h,$ac_cv_header_linux_xattr_h,$ac_cv_func_getxattr" = 
yes,yes,yes; then
+  if test "$gl_cv_getxattr_with_posix_acls" = yes; then
     LIB_HAS_ACL=
+    AC_DEFINE([GETXATTR_WITH_POSIX_ACLS], 1,
+      [Define to 1 if getxattr works with XATTR_NAME_POSIX_ACL_ACCESS
+       and XATTR_NAME_POSIX_ACL_DEFAULT.])
   else
     dnl Set gl_need_lib_has_acl to a nonempty value, so that any
     dnl later gl_FUNC_ACL call will set LIB_HAS_ACL=$LIB_ACL.
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
index e74339a..7280065 100644
--- a/m4/extern-inline.m4
+++ b/m4/extern-inline.m4
@@ -74,12 +74,13 @@ AC_DEFUN([gl_EXTERN_INLINE],
 # define _GL_EXTERN_INLINE static _GL_UNUSED
 #endif
 
-/* In GCC, suppress bogus "no previous prototype for 'FOO'"
+/* In GCC 4.6 (inclusive) to 5.1 (exclusive),
+   suppress bogus "no previous prototype for 'FOO'"
    and "no previous declaration for 'FOO'" diagnostics,
    when FOO is an inline function in the header; see
    <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
    <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>.  */
-#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
+#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
 # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
 #  define _GL_INLINE_HEADER_CONST_PRAGMA
 # else
diff --git a/make-dist b/make-dist
index 441070f..6bf01ff 100755
--- a/make-dist
+++ b/make-dist
@@ -52,6 +52,7 @@ make_tar=no
 default_gzip=gzip
 newer=""
 with_tests=no
+changelog=yes
 
 while [ $# -gt 0 ]; do
   case "$1" in
@@ -72,6 +73,9 @@ while [ $# -gt 0 ]; do
     "--no-check" )
       check=no
     ;;
+    "--no-changelog" )
+      changelog=no
+    ;;
     ## This option tells make-dist to make the distribution normally, then
     ## remove all files older than the given timestamp file.  This is useful
     ## for creating incremental or patch distributions.
@@ -115,6 +119,7 @@ while [ $# -gt 0 ]; do
       echo "  --newer=TIME     don't include files older than TIME"
       echo "  --no-check       don't check for bad file names etc."
       echo "  --no-update      don't recompile or do analogous things"
+      echo "  --no-changelog   don't generate the top-level ChangeLog"
       echo "  --snapshot       same as --clean-up --no-update --tar --no-check"
       echo "  --tar            make a tar file"
       echo "  --tests  include the test/ directory"
@@ -277,11 +282,14 @@ fi
 echo "Creating top directory: '${tempdir}'"
 mkdir ${tempdir}
 
-if test -d .git; then
-  echo "Making top-level ChangeLog"
-  make distprefix=${tempdir}/ ChangeLog
-else
-  echo "No repository, so omitting top-level ChangeLog"
+if [ "$changelog" = yes ]; then
+  if test -d .git; then
+    echo "Making top-level ChangeLog"
+    make ChangeLog CHANGELOG=${tempdir}/ChangeLog || \
+      { x=$?; echo "make ChangeLog FAILED (try --no-changelog?)" >&2; exit $x; 
}
+  else
+    echo "No repository, so omitting top-level ChangeLog"
+  fi
 fi
 
 ### We copy in the top-level files before creating the subdirectories in
@@ -367,7 +375,7 @@ echo "Making links to 'src'"
  echo "  (It is ok if ln fails in some cases.)"
  ln [a-zA-Z]*.[chm] ../${tempdir}/src
  ln [a-zA-Z]*.in ../${tempdir}/src
- ln [a-zA-Z]*.mk ../${tempdir}/src
+ ln deps.mk ../${tempdir}/src
  ln README ChangeLog.*[0-9] ../${tempdir}/src
  ln makefile.w32-in ../${tempdir}/src
  ln .gdbinit .dbxinit ../${tempdir}/src
diff --git a/oldXMenu/Makefile.in b/oldXMenu/Makefile.in
index ef2a360..de5b8e1 100644
--- a/oldXMenu/Makefile.in
+++ b/oldXMenu/Makefile.in
@@ -112,10 +112,15 @@ am__v_at_0 = @
 am__v_at_1 =
 
 DEPDIR = deps
-## -MMD -MF $(DEPDIR)/$*.d if AUTO_DEPEND; else empty.
-DEPFLAGS = @DEPFLAGS@
-## ${MKDIR_P} ${DEPDIR} (if AUTO_DEPEND); else ':'.
-MKDEPDIR = @MKDEPDIR@
+AUTO_DEPEND = @AUTO_DEPEND@
+
+ifeq ($(AUTO_DEPEND),yes)
+DEPFLAGS = -MMD -MF ${DEPDIR}/$*.d -MP
+MKDEPDIR = ${MKDIR_P} ${DEPDIR}
+else
+DEPFLAGS =
+MKDEPDIR = :
+endif
 
 ALL_CFLAGS=$(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \
   $(C_SWITCH_X_SITE) $(DEPFLAGS) \
@@ -132,8 +137,11 @@ libXMenu11.a: $(OBJS) $(EXTRA)
        $(AM_V_at)$(AR) $(ARFLAGS) $@ $(OBJS) $(EXTRA)
        $(AM_V_at)$(RANLIB) $@
 
-## Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk.
address@hidden@
+ifeq ($(AUTO_DEPEND),yes)
+-include $(ALLOBJS:%.o=${DEPDIR}/%.d)
+else
+include $(srcdir)/deps.mk
+endif
 
 .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
 
diff --git a/oldXMenu/autodeps.mk b/oldXMenu/autodeps.mk
deleted file mode 100644
index f710929..0000000
--- a/oldXMenu/autodeps.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-### autodeps.mk --- lwlib/Makefile fragment for GNU Emacs
-
-## This is inserted in lwlib/Makefile if AUTO_DEPEND=yes.
-
--include $(ALLOBJS:%.o=${DEPDIR}/%.d)
diff --git a/oldXMenu/deps.mk b/oldXMenu/deps.mk
index cdb89f9..54ce358 100644
--- a/oldXMenu/deps.mk
+++ b/oldXMenu/deps.mk
@@ -32,7 +32,7 @@
 
 ### Commentary:
 
-## This file is inserted in oldXMenu/Makefile if AUTO_DEPEND=no.
+## This file is included in oldXMenu/Makefile if AUTO_DEPEND=no.
 ## It defines static dependencies between the various source files.
 
 ### Code:
diff --git a/src/Makefile.in b/src/Makefile.in
index 9e7a8a7..d0df326 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -327,10 +327,15 @@ am__v_at_0 = @
 am__v_at_1 =
 
 DEPDIR=deps
-## -MMD -MF $(DEPDIR)/$*.d if AUTO_DEPEND; else empty.
address@hidden@
-## ${MKDIR_P} ${DEPDIR} (if AUTO_DEPEND); else ':'.
address@hidden@
+AUTO_DEPEND = @AUTO_DEPEND@
+
+ifeq ($(AUTO_DEPEND),yes)
+DEPFLAGS = -MMD -MF ${DEPDIR}/$*.d -MP
+MKDEPDIR = ${MKDIR_P} ${DEPDIR}
+else
+DEPFLAGS =
+MKDEPDIR = :
+endif
 
 ## DO NOT use -R.  There is a special hack described in lastfile.c
 ## which is used instead.  Some initialized data areas are modified
@@ -417,9 +422,37 @@ otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) 
$(RALLOC_OBJ) \
 address@hidden@
 ALLOBJS = $(FIRSTFILE_OBJ) $(VMLIMIT_OBJ) $(obj) $(otherobj)
 
-## Configure inserts the file lisp.mk at this point, defining $lisp.
address@hidden@
-
+## This is the list of all Lisp files that might be loaded into the
+## dumped Emacs.  Some of them are not loaded on all platforms, but
+## the DOC file on every platform uses them (because the DOC file is
+## supposed to be platform-independent).
+## Note that this list should not include lisp files which might not
+## be present, like site-load.el and site-init.el; this makefile
+## expects them all to be either present or buildable.
+##
+## To generate this list from loadup.el, we can either:
+## 1) Extract everything matching (load "..."), in which case
+## we need to add charprop.el by hand; or
+## 2) Extract everything matching (load "...", in which case
+## we need to remove leim-list, site-init, and site-load by hand.
+## There's not much to choose between these two approaches,
+## but the second one seems like it could be more future-proof.
+shortlisp =
+lisp.mk: $(lispsource)/loadup.el
+       @rm -f $@
+       ${AM_V_GEN}( echo "shortlisp = \\"; \
+       sed -n 's/^[ \t]*(load "\([^"]*\)".*/\1/p' $< | \
+         sed -e 's/$$/.elc \\/' -e 's/\.el\.elc/.el/'; \
+       echo "" ) > $@
+
+-include lisp.mk
+shortlisp_filter = leim/leim-list.el site-load.elc site-init.elc
+shortlisp := $(filter-out ${shortlisp_filter},${shortlisp})
+## Place loaddefs.el first, so it gets generated first, since it is on
+## the critical path (relevant in parallel compilations).
+## We don't really need to sort, but may as well use it to remove duplicates.
+shortlisp := loaddefs.el loadup.el $(sort ${shortlisp})
+lisp = $(addprefix ${lispsource}/,${shortlisp})
 
 ## Construct full set of libraries to be linked.
 LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(LIBX_BASE) $(LIBIMAGE) \
@@ -453,7 +486,7 @@ $(srcdir)/macuvs.h $(lispsource)/international/charprop.el: 
\
 ## since not all pieces are used on all platforms.  But DOC depends
 ## on all of $lisp, and emacs depends on DOC, so it is ok to use $lisp here.
 emacs$(EXEEXT): temacs$(EXEEXT) \
-                $(etc)/DOC $(lisp) $(leimdir)/leim-list.el \
+                lisp.mk $(etc)/DOC $(lisp) $(leimdir)/leim-list.el \
                 $(lispsource)/international/charprop.el
 ifeq ($(CANNOT_DUMP),yes)
        ln -f temacs$(EXEEXT) $@
@@ -464,12 +497,9 @@ else
 endif
 
 ## We run make-docfile twice because the command line may get too long
-## on some systems.  The sed command operating on lisp.mk also reduces
-## the length of the command line.  Unfortunately, no-one has any idea
+## on some systems.  Unfortunately, no-one has any idea
 ## exactly how long the maximum safe command line length is on all the
-## various systems that Emacs supports.  Obviously, the length depends
-## on what your value of $srcdir is.  If the length restriction goes
-## away, lisp.mk can be merged back into this file.
+## various systems that Emacs supports.
 ##
 ## $(SOME_MACHINE_OBJECTS) comes before $(obj) because some files may
 ## or may not be included in $(obj), but they are always included in
@@ -477,14 +507,13 @@ endif
 ## for the first time, this prevents any variation between configurations
 ## in the contents of the DOC file.
 ##
-$(etc)/DOC: $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp)
+$(etc)/DOC: lisp.mk $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp)
        $(AM_V_GEN)$(MKDIR_P) $(etc)
        -$(AM_V_at)rm -f $(etc)/DOC
        $(AM_V_at)$(libsrc)/make-docfile -d $(srcdir) \
          $(SOME_MACHINE_OBJECTS) $(obj) > $(etc)/DOC
        $(AM_V_at)$(libsrc)/make-docfile -a $(etc)/DOC -d $(lispsource) \
-         `sed -n -e 's| \\\\||' -e 's|^[       ]*$$(lispsource)/||p' \
-            $(srcdir)/lisp.mk`
+         $(shortlisp)
 
 $(libsrc)/make-docfile$(EXEEXT):
        $(MAKE) -C $(libsrc) make-docfile$(EXEEXT)
@@ -584,7 +613,7 @@ bootstrap-clean: clean
        fi
 
 distclean: bootstrap-clean
-       rm -f Makefile
+       rm -f Makefile lisp.mk
 
 maintainer-clean: distclean
        rm -f TAGS
@@ -607,9 +636,11 @@ ctagsfiles3 = [a-zA-Z]*.m
 ## rather than the file contents.
 TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) 
$(srcdir)/$(ctagsfiles3)
        "$(ETAGS)" --include=../lisp/TAGS --include=$(lwlibdir)/TAGS \
-         --regex='{c}/[        ]*DEFVAR_[A-Z_  (]+"\([^"]+\)"/' \
+         --regex='{c}/[        ]*DEFVAR_[A-Z_  (]+"\([^"]+\)"/\1/' \
+         --regex='{c}/[        ]*DEFVAR_[A-Z_  (]+"[^"]+",[    
]\([A-Za-z0-9_]+\)/\1/' \
          $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) \
-         --regex='{objc}/[     ]*DEFVAR_[A-Z_  (]+"\([^"]+\)"/' \
+         --regex='{objc}/[     ]*DEFVAR_[A-Z_  (]+"\([^"]+\)"/\1/' \
+         --regex='{objc}/[     ]*DEFVAR_[A-Z_  (]+"[^"]+",[    
]\([A-Za-z0-9_]+\)/\1/' \
          $(srcdir)/$(ctagsfiles3)
 
 ## Arrange to make tags tables for ../lisp and ../lwlib,
@@ -669,8 +700,10 @@ endif
        @: Compile some files earlier to speed up further compilation.
        $(MAKE) -C ../lisp compile-first EMACS="$(bootstrap_exe)"
 
-## Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk.
address@hidden@
-
+ifeq ($(AUTO_DEPEND),yes)
+-include $(ALLOBJS:%.o=${DEPDIR}/%.d)
+else
+include $(srcdir)/deps.mk
+endif
 
 ### Makefile.in ends here
diff --git a/src/alloc.c b/src/alloc.c
index 1f4b1a4..030c6e0 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -4496,7 +4496,7 @@ live_buffer_p (struct mem_node *m, void *p)
      must not have been killed.  */
   return (m->type == MEM_TYPE_BUFFER
          && p == m->start
-         && !NILP (((struct buffer *) p)->INTERNAL_FIELD (name)));
+         && !NILP (((struct buffer *) p)->name_));
 }
 
 #endif /* GC_MARK_STACK || defined GC_MALLOC_CHECK */
@@ -5762,7 +5762,7 @@ garbage_collect_1 (void *end)
      after GC.  It's important to scan finalizers at this stage so
      that we can be sure that unmarked finalizers are really
      unreachable except for references from their associated functions
-     and from other finalizers. */
+     and from other finalizers.  */
 
   queue_doomed_finalizers (&doomed_finalizers, &finalizers);
   mark_finalizer_list (&doomed_finalizers);
diff --git a/src/autodeps.mk b/src/autodeps.mk
deleted file mode 100644
index 8b014a7..0000000
--- a/src/autodeps.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-### autodeps.mk --- src/Makefile fragment for GNU Emacs
-
-## This is inserted in src/Makefile if AUTO_DEPEND=yes.
-
--include $(ALLOBJS:%.o=${DEPDIR}/%.d)
diff --git a/src/buffer.c b/src/buffer.c
index 332d6d5..b09676c 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -134,227 +134,227 @@ CHECK_OVERLAY (Lisp_Object x)
 static void
 bset_abbrev_mode (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (abbrev_mode) = val;
+  b->abbrev_mode_ = val;
 }
 static void
 bset_abbrev_table (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (abbrev_table) = val;
+  b->abbrev_table_ = val;
 }
 static void
 bset_auto_fill_function (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (auto_fill_function) = val;
+  b->auto_fill_function_ = val;
 }
 static void
 bset_auto_save_file_format (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (auto_save_file_format) = val;
+  b->auto_save_file_format_ = val;
 }
 static void
 bset_auto_save_file_name (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (auto_save_file_name) = val;
+  b->auto_save_file_name_ = val;
 }
 static void
 bset_backed_up (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (backed_up) = val;
+  b->backed_up_ = val;
 }
 static void
 bset_begv_marker (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (begv_marker) = val;
+  b->begv_marker_ = val;
 }
 static void
 bset_bidi_display_reordering (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (bidi_display_reordering) = val;
+  b->bidi_display_reordering_ = val;
 }
 static void
 bset_buffer_file_coding_system (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (buffer_file_coding_system) = val;
+  b->buffer_file_coding_system_ = val;
 }
 static void
 bset_case_fold_search (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (case_fold_search) = val;
+  b->case_fold_search_ = val;
 }
 static void
 bset_ctl_arrow (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (ctl_arrow) = val;
+  b->ctl_arrow_ = val;
 }
 static void
 bset_cursor_in_non_selected_windows (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (cursor_in_non_selected_windows) = val;
+  b->cursor_in_non_selected_windows_ = val;
 }
 static void
 bset_cursor_type (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (cursor_type) = val;
+  b->cursor_type_ = val;
 }
 static void
 bset_display_table (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (display_table) = val;
+  b->display_table_ = val;
 }
 static void
 bset_extra_line_spacing (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (extra_line_spacing) = val;
+  b->extra_line_spacing_ = val;
 }
 static void
 bset_file_format (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (file_format) = val;
+  b->file_format_ = val;
 }
 static void
 bset_file_truename (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (file_truename) = val;
+  b->file_truename_ = val;
 }
 static void
 bset_fringe_cursor_alist (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (fringe_cursor_alist) = val;
+  b->fringe_cursor_alist_ = val;
 }
 static void
 bset_fringe_indicator_alist (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (fringe_indicator_alist) = val;
+  b->fringe_indicator_alist_ = val;
 }
 static void
 bset_fringes_outside_margins (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (fringes_outside_margins) = val;
+  b->fringes_outside_margins_ = val;
 }
 static void
 bset_header_line_format (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (header_line_format) = val;
+  b->header_line_format_ = val;
 }
 static void
 bset_indicate_buffer_boundaries (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (indicate_buffer_boundaries) = val;
+  b->indicate_buffer_boundaries_ = val;
 }
 static void
 bset_indicate_empty_lines (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (indicate_empty_lines) = val;
+  b->indicate_empty_lines_ = val;
 }
 static void
 bset_invisibility_spec (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (invisibility_spec) = val;
+  b->invisibility_spec_ = val;
 }
 static void
 bset_left_fringe_width (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (left_fringe_width) = val;
+  b->left_fringe_width_ = val;
 }
 static void
 bset_major_mode (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (major_mode) = val;
+  b->major_mode_ = val;
 }
 static void
 bset_mark (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (mark) = val;
+  b->mark_ = val;
 }
 static void
 bset_minor_modes (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (minor_modes) = val;
+  b->minor_modes_ = val;
 }
 static void
 bset_mode_line_format (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (mode_line_format) = val;
+  b->mode_line_format_ = val;
 }
 static void
 bset_mode_name (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (mode_name) = val;
+  b->mode_name_ = val;
 }
 static void
 bset_name (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (name) = val;
+  b->name_ = val;
 }
 static void
 bset_overwrite_mode (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (overwrite_mode) = val;
+  b->overwrite_mode_ = val;
 }
 static void
 bset_pt_marker (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (pt_marker) = val;
+  b->pt_marker_ = val;
 }
 static void
 bset_right_fringe_width (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (right_fringe_width) = val;
+  b->right_fringe_width_ = val;
 }
 static void
 bset_save_length (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (save_length) = val;
+  b->save_length_ = val;
 }
 static void
 bset_scroll_bar_width (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (scroll_bar_width) = val;
+  b->scroll_bar_width_ = val;
 }
 static void
 bset_scroll_bar_height (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (scroll_bar_height) = val;
+  b->scroll_bar_height_ = val;
 }
 static void
 bset_scroll_down_aggressively (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (scroll_down_aggressively) = val;
+  b->scroll_down_aggressively_ = val;
 }
 static void
 bset_scroll_up_aggressively (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (scroll_up_aggressively) = val;
+  b->scroll_up_aggressively_ = val;
 }
 static void
 bset_selective_display (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (selective_display) = val;
+  b->selective_display_ = val;
 }
 static void
 bset_selective_display_ellipses (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (selective_display_ellipses) = val;
+  b->selective_display_ellipses_ = val;
 }
 static void
 bset_vertical_scroll_bar_type (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (vertical_scroll_bar_type) = val;
+  b->vertical_scroll_bar_type_ = val;
 }
 static void
 bset_horizontal_scroll_bar_type (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (horizontal_scroll_bar_type) = val;
+  b->horizontal_scroll_bar_type_ = val;
 }
 static void
 bset_word_wrap (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (word_wrap) = val;
+  b->word_wrap_ = val;
 }
 static void
 bset_zv_marker (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (zv_marker) = val;
+  b->zv_marker_ = val;
 }
 
 void
@@ -1591,7 +1591,7 @@ compact_buffer (struct buffer *buffer)
         turned off in that buffer.  Calling truncate_undo_list on
         Qt tends to return NULL, which effectively turns undo back on.
         So don't call truncate_undo_list if undo_list is Qt.  */
-      if (!EQ (buffer->INTERNAL_FIELD (undo_list), Qt))
+      if (!EQ (BVAR(buffer, undo_list), Qt))
        truncate_undo_list (buffer);
 
       /* Shrink buffer gaps.  */
diff --git a/src/buffer.h b/src/buffer.h
index 81852ca..a0410d4 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -483,7 +483,7 @@ struct buffer_text
 
 /* Most code should use this macro to access Lisp fields in struct buffer.  */
 
-#define BVAR(buf, field) ((buf)->INTERNAL_FIELD (field))
+#define BVAR(buf, field) ((buf)->field ## _)
 
 /* This is the structure that the buffer Lisp object points to.  */
 
@@ -492,17 +492,17 @@ struct buffer
   struct vectorlike_header header;
 
   /* The name of this buffer.  */
-  Lisp_Object INTERNAL_FIELD (name);
+  Lisp_Object name_;
 
   /* The name of the file visited in this buffer, or nil.  */
-  Lisp_Object INTERNAL_FIELD (filename);
+  Lisp_Object filename_;
 
   /* Directory for expanding relative file names.  */
-  Lisp_Object INTERNAL_FIELD (directory);
+  Lisp_Object directory_;
 
   /* True if this buffer has been backed up (if you write to the visited
      file and it hasn't been backed up, then a backup will be made).  */
-  Lisp_Object INTERNAL_FIELD (backed_up);
+  Lisp_Object backed_up_;
 
   /* Length of file when last read or saved.
      -1 means auto saving turned off because buffer shrank a lot.
@@ -510,132 +510,132 @@ struct buffer
        (That value is used with buffer-swap-text.)
      This is not in the  struct buffer_text
      because it's not used in indirect buffers at all.  */
-  Lisp_Object INTERNAL_FIELD (save_length);
+  Lisp_Object save_length_;
 
   /* File name used for auto-saving this buffer.
      This is not in the  struct buffer_text
      because it's not used in indirect buffers at all.  */
-  Lisp_Object INTERNAL_FIELD (auto_save_file_name);
+  Lisp_Object auto_save_file_name_;
 
   /* Non-nil if buffer read-only.  */
-  Lisp_Object INTERNAL_FIELD (read_only);
+  Lisp_Object read_only_;
 
   /* "The mark".  This is a marker which may
      point into this buffer or may point nowhere.  */
-  Lisp_Object INTERNAL_FIELD (mark);
+  Lisp_Object mark_;
 
   /* Alist of elements (SYMBOL . VALUE-IN-THIS-BUFFER) for all
      per-buffer variables of this buffer.  For locally unbound
      symbols, just the symbol appears as the element.  */
-  Lisp_Object INTERNAL_FIELD (local_var_alist);
+  Lisp_Object local_var_alist_;
 
   /* Symbol naming major mode (e.g., lisp-mode).  */
-  Lisp_Object INTERNAL_FIELD (major_mode);
+  Lisp_Object major_mode_;
 
   /* Pretty name of major mode (e.g., "Lisp"). */
-  Lisp_Object INTERNAL_FIELD (mode_name);
+  Lisp_Object mode_name_;
 
   /* Mode line element that controls format of mode line.  */
-  Lisp_Object INTERNAL_FIELD (mode_line_format);
+  Lisp_Object mode_line_format_;
 
   /* Analogous to mode_line_format for the line displayed at the top
      of windows.  Nil means don't display that line.  */
-  Lisp_Object INTERNAL_FIELD (header_line_format);
+  Lisp_Object header_line_format_;
 
   /* Keys that are bound local to this buffer.  */
-  Lisp_Object INTERNAL_FIELD (keymap);
+  Lisp_Object keymap_;
 
   /* This buffer's local abbrev table.  */
-  Lisp_Object INTERNAL_FIELD (abbrev_table);
+  Lisp_Object abbrev_table_;
 
   /* This buffer's syntax table.  */
-  Lisp_Object INTERNAL_FIELD (syntax_table);
+  Lisp_Object syntax_table_;
 
   /* This buffer's category table.  */
-  Lisp_Object INTERNAL_FIELD (category_table);
+  Lisp_Object category_table_;
 
   /* Values of several buffer-local variables.  */
   /* tab-width is buffer-local so that redisplay can find it
      in buffers that are not current.  */
-  Lisp_Object INTERNAL_FIELD (case_fold_search);
-  Lisp_Object INTERNAL_FIELD (tab_width);
-  Lisp_Object INTERNAL_FIELD (fill_column);
-  Lisp_Object INTERNAL_FIELD (left_margin);
+  Lisp_Object case_fold_search_;
+  Lisp_Object tab_width_;
+  Lisp_Object fill_column_;
+  Lisp_Object left_margin_;
 
   /* Function to call when insert space past fill column.  */
-  Lisp_Object INTERNAL_FIELD (auto_fill_function);
+  Lisp_Object auto_fill_function_;
 
   /* Case table for case-conversion in this buffer.
      This char-table maps each char into its lower-case version.  */
-  Lisp_Object INTERNAL_FIELD (downcase_table);
+  Lisp_Object downcase_table_;
 
   /* Char-table mapping each char to its upper-case version.  */
-  Lisp_Object INTERNAL_FIELD (upcase_table);
+  Lisp_Object upcase_table_;
 
   /* Char-table for conversion for case-folding search.  */
-  Lisp_Object INTERNAL_FIELD (case_canon_table);
+  Lisp_Object case_canon_table_;
 
   /* Char-table of equivalences for case-folding search.  */
-  Lisp_Object INTERNAL_FIELD (case_eqv_table);
+  Lisp_Object case_eqv_table_;
 
   /* Non-nil means do not display continuation lines.  */
-  Lisp_Object INTERNAL_FIELD (truncate_lines);
+  Lisp_Object truncate_lines_;
 
   /* Non-nil means to use word wrapping when displaying continuation lines.  */
-  Lisp_Object INTERNAL_FIELD (word_wrap);
+  Lisp_Object word_wrap_;
 
   /* Non-nil means display ctl chars with uparrow.  */
-  Lisp_Object INTERNAL_FIELD (ctl_arrow);
+  Lisp_Object ctl_arrow_;
 
   /* Non-nil means reorder bidirectional text for display in the
      visual order.  */
-  Lisp_Object INTERNAL_FIELD (bidi_display_reordering);
+  Lisp_Object bidi_display_reordering_;
 
   /* If non-nil, specifies which direction of text to force in all the
      paragraphs of the buffer.  Nil means determine paragraph
      direction dynamically for each paragraph.  */
-  Lisp_Object INTERNAL_FIELD (bidi_paragraph_direction);
+  Lisp_Object bidi_paragraph_direction_;
 
   /* Non-nil means do selective display;
      see doc string in syms_of_buffer (buffer.c) for details.  */
-  Lisp_Object INTERNAL_FIELD (selective_display);
+  Lisp_Object selective_display_;
 
   /* Non-nil means show ... at end of line followed by invisible lines.  */
-  Lisp_Object INTERNAL_FIELD (selective_display_ellipses);
+  Lisp_Object selective_display_ellipses_;
 
   /* Alist of (FUNCTION . STRING) for each minor mode enabled in buffer.  */
-  Lisp_Object INTERNAL_FIELD (minor_modes);
+  Lisp_Object minor_modes_;
 
   /* t if "self-insertion" should overwrite; `binary' if it should also
      overwrite newlines and tabs - for editing executables and the like.  */
-  Lisp_Object INTERNAL_FIELD (overwrite_mode);
+  Lisp_Object overwrite_mode_;
 
   /* Non-nil means abbrev mode is on.  Expand abbrevs automatically.  */
-  Lisp_Object INTERNAL_FIELD (abbrev_mode);
+  Lisp_Object abbrev_mode_;
 
   /* Display table to use for text in this buffer.  */
-  Lisp_Object INTERNAL_FIELD (display_table);
+  Lisp_Object display_table_;
 
   /* t means the mark and region are currently active.  */
-  Lisp_Object INTERNAL_FIELD (mark_active);
+  Lisp_Object mark_active_;
 
   /* Non-nil means the buffer contents are regarded as multi-byte
      form of characters, not a binary code.  */
-  Lisp_Object INTERNAL_FIELD (enable_multibyte_characters);
+  Lisp_Object enable_multibyte_characters_;
 
   /* Coding system to be used for encoding the buffer contents on
      saving.  */
-  Lisp_Object INTERNAL_FIELD (buffer_file_coding_system);
+  Lisp_Object buffer_file_coding_system_;
 
   /* List of symbols naming the file format used for visited file.  */
-  Lisp_Object INTERNAL_FIELD (file_format);
+  Lisp_Object file_format_;
 
   /* List of symbols naming the file format used for auto-save file.  */
-  Lisp_Object INTERNAL_FIELD (auto_save_file_format);
+  Lisp_Object auto_save_file_format_;
 
   /* True if the newline position cache, width run cache and BIDI paragraph
      cache are enabled.  See search.c, indent.c and bidi.c for details.  */
-  Lisp_Object INTERNAL_FIELD (cache_long_scans);
+  Lisp_Object cache_long_scans_;
 
   /* If the width run cache is enabled, this table contains the
      character widths width_run_cache (see above) assumes.  When we
@@ -643,104 +643,104 @@ struct buffer
      current display table to see whether the display table has
      affected the widths of any characters.  If it has, we
      invalidate the width run cache, and re-initialize width_table.  */
-  Lisp_Object INTERNAL_FIELD (width_table);
+  Lisp_Object width_table_;
 
   /* In an indirect buffer, or a buffer that is the base of an
      indirect buffer, this holds a marker that records
      PT for this buffer when the buffer is not current.  */
-  Lisp_Object INTERNAL_FIELD (pt_marker);
+  Lisp_Object pt_marker_;
 
   /* In an indirect buffer, or a buffer that is the base of an
      indirect buffer, this holds a marker that records
      BEGV for this buffer when the buffer is not current.  */
-  Lisp_Object INTERNAL_FIELD (begv_marker);
+  Lisp_Object begv_marker_;
 
   /* In an indirect buffer, or a buffer that is the base of an
      indirect buffer, this holds a marker that records
      ZV for this buffer when the buffer is not current.  */
-  Lisp_Object INTERNAL_FIELD (zv_marker);
+  Lisp_Object zv_marker_;
 
   /* This holds the point value before the last scroll operation.
      Explicitly setting point sets this to nil.  */
-  Lisp_Object INTERNAL_FIELD (point_before_scroll);
+  Lisp_Object point_before_scroll_;
 
   /* Truename of the visited file, or nil.  */
-  Lisp_Object INTERNAL_FIELD (file_truename);
+  Lisp_Object file_truename_;
 
   /* Invisibility spec of this buffer.
      t => any non-nil `invisible' property means invisible.
      A list => `invisible' property means invisible
      if it is memq in that list.  */
-  Lisp_Object INTERNAL_FIELD (invisibility_spec);
+  Lisp_Object invisibility_spec_;
 
   /* This is the last window that was selected with this buffer in it,
      or nil if that window no longer displays this buffer.  */
-  Lisp_Object INTERNAL_FIELD (last_selected_window);
+  Lisp_Object last_selected_window_;
 
   /* Incremented each time the buffer is displayed in a window.  */
-  Lisp_Object INTERNAL_FIELD (display_count);
+  Lisp_Object display_count_;
 
   /* Widths of left and right marginal areas for windows displaying
      this buffer.  */
-  Lisp_Object INTERNAL_FIELD (left_margin_cols);
-  Lisp_Object INTERNAL_FIELD (right_margin_cols);
+  Lisp_Object left_margin_cols_;
+  Lisp_Object right_margin_cols_;
 
   /* Widths of left and right fringe areas for windows displaying
      this buffer.  */
-  Lisp_Object INTERNAL_FIELD (left_fringe_width);
-  Lisp_Object INTERNAL_FIELD (right_fringe_width);
+  Lisp_Object left_fringe_width_;
+  Lisp_Object right_fringe_width_;
 
   /* Non-nil means fringes are drawn outside display margins;
      othersize draw them between margin areas and text.  */
-  Lisp_Object INTERNAL_FIELD (fringes_outside_margins);
+  Lisp_Object fringes_outside_margins_;
 
   /* Width, height and types of scroll bar areas for windows displaying
      this buffer.  */
-  Lisp_Object INTERNAL_FIELD (scroll_bar_width);
-  Lisp_Object INTERNAL_FIELD (scroll_bar_height);
-  Lisp_Object INTERNAL_FIELD (vertical_scroll_bar_type);
-  Lisp_Object INTERNAL_FIELD (horizontal_scroll_bar_type);
+  Lisp_Object scroll_bar_width_;
+  Lisp_Object scroll_bar_height_;
+  Lisp_Object vertical_scroll_bar_type_;
+  Lisp_Object horizontal_scroll_bar_type_;
 
   /* Non-nil means indicate lines not displaying text (in a style
      like vi).  */
-  Lisp_Object INTERNAL_FIELD (indicate_empty_lines);
+  Lisp_Object indicate_empty_lines_;
 
   /* Non-nil means indicate buffer boundaries and scrolling.  */
-  Lisp_Object INTERNAL_FIELD (indicate_buffer_boundaries);
+  Lisp_Object indicate_buffer_boundaries_;
 
   /* Logical to physical fringe bitmap mappings.  */
-  Lisp_Object INTERNAL_FIELD (fringe_indicator_alist);
+  Lisp_Object fringe_indicator_alist_;
 
   /* Logical to physical cursor bitmap mappings.  */
-  Lisp_Object INTERNAL_FIELD (fringe_cursor_alist);
+  Lisp_Object fringe_cursor_alist_;
 
   /* Time stamp updated each time this buffer is displayed in a window.  */
-  Lisp_Object INTERNAL_FIELD (display_time);
+  Lisp_Object display_time_;
 
   /* If scrolling the display because point is below the bottom of a
      window showing this buffer, try to choose a window start so
      that point ends up this number of lines from the top of the
      window.  Nil means that scrolling method isn't used.  */
-  Lisp_Object INTERNAL_FIELD (scroll_up_aggressively);
+  Lisp_Object scroll_up_aggressively_;
 
   /* If scrolling the display because point is above the top of a
      window showing this buffer, try to choose a window start so
      that point ends up this number of lines from the bottom of the
      window.  Nil means that scrolling method isn't used.  */
-  Lisp_Object INTERNAL_FIELD (scroll_down_aggressively);
+  Lisp_Object scroll_down_aggressively_;
 
   /* Desired cursor type in this buffer.  See the doc string of
      per-buffer variable `cursor-type'.  */
-  Lisp_Object INTERNAL_FIELD (cursor_type);
+  Lisp_Object cursor_type_;
 
   /* An integer > 0 means put that number of pixels below text lines
      in the display of this buffer.  */
-  Lisp_Object INTERNAL_FIELD (extra_line_spacing);
+  Lisp_Object extra_line_spacing_;
 
   /* Cursor type to display in non-selected windows.
      t means to use hollow box cursor.
      See `cursor-type' for other values.  */
-  Lisp_Object INTERNAL_FIELD (cursor_in_non_selected_windows);
+  Lisp_Object cursor_in_non_selected_windows_;
 
   /* No more Lisp_Object beyond this point.  Except undo_list,
      which is handled specially in Fgarbage_collect.  */
@@ -872,7 +872,7 @@ struct buffer
      buffer of an indirect buffer.  But we can't store it in the
      struct buffer_text because local variables have to be right in
      the struct buffer. So we copy it around in set_buffer_internal.  */
-  Lisp_Object INTERNAL_FIELD (undo_list);
+  Lisp_Object undo_list_;
 };
 
 /* Most code should use these functions to set Lisp fields in struct
@@ -881,102 +881,102 @@ struct buffer
 INLINE void
 bset_bidi_paragraph_direction (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (bidi_paragraph_direction) = val;
+  b->bidi_paragraph_direction_ = val;
 }
 INLINE void
 bset_cache_long_scans (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (cache_long_scans) = val;
+  b->cache_long_scans_ = val;
 }
 INLINE void
 bset_case_canon_table (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (case_canon_table) = val;
+  b->case_canon_table_ = val;
 }
 INLINE void
 bset_case_eqv_table (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (case_eqv_table) = val;
+  b->case_eqv_table_ = val;
 }
 INLINE void
 bset_directory (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (directory) = val;
+  b->directory_ = val;
 }
 INLINE void
 bset_display_count (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (display_count) = val;
+  b->display_count_ = val;
 }
 INLINE void
 bset_display_time (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (display_time) = val;
+  b->display_time_ = val;
 }
 INLINE void
 bset_downcase_table (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (downcase_table) = val;
+  b->downcase_table_ = val;
 }
 INLINE void
 bset_enable_multibyte_characters (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (enable_multibyte_characters) = val;
+  b->enable_multibyte_characters_ = val;
 }
 INLINE void
 bset_filename (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (filename) = val;
+  b->filename_ = val;
 }
 INLINE void
 bset_keymap (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (keymap) = val;
+  b->keymap_ = val;
 }
 INLINE void
 bset_last_selected_window (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (last_selected_window) = val;
+  b->last_selected_window_ = val;
 }
 INLINE void
 bset_local_var_alist (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (local_var_alist) = val;
+  b->local_var_alist_ = val;
 }
 INLINE void
 bset_mark_active (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (mark_active) = val;
+  b->mark_active_ = val;
 }
 INLINE void
 bset_point_before_scroll (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (point_before_scroll) = val;
+  b->point_before_scroll_ = val;
 }
 INLINE void
 bset_read_only (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (read_only) = val;
+  b->read_only_ = val;
 }
 INLINE void
 bset_truncate_lines (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (truncate_lines) = val;
+  b->truncate_lines_ = val;
 }
 INLINE void
 bset_undo_list (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (undo_list) = val;
+  b->undo_list_ = val;
 }
 INLINE void
 bset_upcase_table (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (upcase_table) = val;
+  b->upcase_table_ = val;
 }
 INLINE void
 bset_width_table (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (width_table) = val;
+  b->width_table_ = val;
 }
 
 /* Number of Lisp_Objects at the beginning of struct buffer.
@@ -1253,7 +1253,7 @@ extern int last_per_buffer_idx;
    from the start of a buffer structure.  */
 
 #define PER_BUFFER_VAR_OFFSET(VAR) \
-  offsetof (struct buffer, INTERNAL_FIELD (VAR))
+  offsetof (struct buffer, VAR ## _)
 
 /* Used to iterate over normal Lisp_Object fields of struct buffer (all
    Lisp_Objects except undo_list).  If you add, remove, or reorder
diff --git a/src/category.c b/src/category.c
index b20493e..ab90f5f 100644
--- a/src/category.c
+++ b/src/category.c
@@ -41,7 +41,7 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 static void
 bset_category_table (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (category_table) = val;
+  b->category_table_ = val;
 }
 
 /* The version number of the latest category table.  Each category
diff --git a/src/cmds.c b/src/cmds.c
index 168ce83..b590805 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -473,7 +473,7 @@ internal_self_insert (int c, EMACS_INT n)
        }
 
       replace_range (PT, PT + chars_to_delete, string, 1, 1, 1);
-      Fforward_char (make_number (n + spaces_to_insert));
+      Fforward_char (make_number (n));
     }
   else if (n > 1)
     {
diff --git a/src/deps.mk b/src/deps.mk
index 71a5f42..2378938 100644
--- a/src/deps.mk
+++ b/src/deps.mk
@@ -20,7 +20,7 @@
 
 ## Commentary:
 ##
-## This file is inserted in src/Makefile if AUTO_DEPEND=no.
+## This file is included in src/Makefile if AUTO_DEPEND=no.
 ## It defines static dependencies between the various source files.
 
 ## FIXME some of these dependencies are platform-specific.
diff --git a/src/editfns.c b/src/editfns.c
index dead48c..cddb0d4 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -908,6 +908,10 @@ even in case of abnormal exit (throw or error).
 If you only want to save the current buffer but not point,
 then just use `save-current-buffer', or even `with-current-buffer'.
 
+Before Emacs 25.1, `save-excursion' used to save the mark state.
+To save the marker state as well as the point and buffer, use
+`save-mark-and-excursion'.
+
 usage: (save-excursion &rest BODY)  */)
   (Lisp_Object args)
 {
@@ -4386,9 +4390,6 @@ usage: (format STRING &rest OBJECTS)  */)
     nchars = multibyte_chars_in_text ((unsigned char *) buf, p - buf);
   val = make_specified_string (buf, nchars, p - buf, multibyte);
 
-  /* If we allocated BUF with malloc, free it too.  */
-  SAFE_FREE ();
-
   /* If the format string has text properties, or any of the string
      arguments has text properties, set up text properties of the
      result string.  */
@@ -4494,6 +4495,9 @@ usage: (format STRING &rest OBJECTS)  */)
       UNGCPRO;
     }
 
+  /* If we allocated BUF or INFO with malloc, free it too.  */
+  SAFE_FREE ();
+
   return val;
 }
 
diff --git a/src/filelock.c b/src/filelock.c
index 89d3e35..4ee7a01 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -669,10 +669,6 @@ lock_file (Lisp_Object fn)
   struct gcpro gcpro1;
   USE_SAFE_ALLOCA;
 
-  /* Don't do locking if the user has opted out.  */
-  if (! create_lockfiles)
-    return;
-
   /* Don't do locking while dumping Emacs.
      Uncompressing wtmp files uses call-process, which does not work
      in an uninitialized Emacs.  */
@@ -690,9 +686,6 @@ lock_file (Lisp_Object fn)
 #endif
   encoded_fn = ENCODE_FILE (fn);
 
-  /* Create the name of the lock-file for file fn */
-  MAKE_LOCK_NAME (lfname, encoded_fn);
-
   /* See if this file is visited and has changed on disk since it was
      visited.  */
   {
@@ -707,27 +700,35 @@ lock_file (Lisp_Object fn)
 
   }
 
-  /* Try to lock the lock.  */
-  if (0 < lock_if_free (&lock_info, lfname))
+  /* Don't do locking if the user has opted out.  */
+  if (create_lockfiles)
     {
-      /* Someone else has the lock.  Consider breaking it.  */
-      Lisp_Object attack;
-      char *dot = lock_info.dot;
-      ptrdiff_t pidlen = lock_info.colon - (dot + 1);
-      static char const replacement[] = " (pid ";
-      int replacementlen = sizeof replacement - 1;
-      memmove (dot + replacementlen, dot + 1, pidlen);
-      strcpy (dot + replacementlen + pidlen, ")");
-      memcpy (dot, replacement, replacementlen);
-      attack = call2 (intern ("ask-user-about-lock"), fn,
-                     build_string (lock_info.user));
-      /* Take the lock if the user said so.  */
-      if (!NILP (attack))
-       lock_file_1 (lfname, 1);
+
+      /* Create the name of the lock-file for file fn */
+      MAKE_LOCK_NAME (lfname, encoded_fn);
+
+      /* Try to lock the lock.  */
+      if (0 < lock_if_free (&lock_info, lfname))
+       {
+         /* Someone else has the lock.  Consider breaking it.  */
+         Lisp_Object attack;
+         char *dot = lock_info.dot;
+         ptrdiff_t pidlen = lock_info.colon - (dot + 1);
+         static char const replacement[] = " (pid ";
+         int replacementlen = sizeof replacement - 1;
+         memmove (dot + replacementlen, dot + 1, pidlen);
+         strcpy (dot + replacementlen + pidlen, ")");
+         memcpy (dot, replacement, replacementlen);
+         attack = call2 (intern ("ask-user-about-lock"), fn,
+                         build_string (lock_info.user));
+         /* Take the lock if the user said so.  */
+         if (!NILP (attack))
+           lock_file_1 (lfname, 1);
+       }
+      SAFE_FREE ();
     }
 
   UNGCPRO;
-  SAFE_FREE ();
 }
 
 void
diff --git a/src/gtkutil.c b/src/gtkutil.c
index d7340ba..5d28b02 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -869,6 +869,21 @@ xg_clear_under_internal_border (struct frame *f)
     }
 }
 
+static int
+xg_get_gdk_scale (void)
+{
+  const char *sscale = getenv ("GDK_SCALE");
+
+  if (sscale)
+    {
+      long scale = atol (sscale);
+      if (0 < scale)
+       return min (scale, INT_MAX);
+    }
+
+  return 1;
+}
+
 /* Function to handle resize of our frame.  As we have a Gtk+ tool bar
    and a Gtk+ menu bar, we get resize events for the edit part of the
    frame only.  We let Gtk+ deal with the Gtk+ parts.
@@ -919,6 +934,9 @@ xg_frame_set_char_size (struct frame *f, int width, int 
height)
   int pixelheight = FRAME_TEXT_TO_PIXEL_HEIGHT (f, height);
   Lisp_Object fullscreen = get_frame_param (f, Qfullscreen);
   gint gwidth, gheight;
+  int totalheight
+    = pixelheight + FRAME_TOOLBAR_HEIGHT (f) + FRAME_MENUBAR_HEIGHT (f);
+  int totalwidth = pixelwidth + FRAME_TOOLBAR_WIDTH (f);
 
   if (FRAME_PIXEL_HEIGHT (f) == 0)
     return;
@@ -929,6 +947,13 @@ xg_frame_set_char_size (struct frame *f, int width, int 
height)
   /* Do this before resize, as we don't know yet if we will be resized.  */
   xg_clear_under_internal_border (f);
 
+  if (FRAME_VISIBLE_P (f))
+    {
+      int scale = xg_get_gdk_scale ();
+      totalheight /= scale;
+      totalwidth /= scale;
+    }
+
   /* Resize the top level widget so rows and columns remain constant.
 
      When the frame is fullheight and we only want to change the width
@@ -943,38 +968,33 @@ xg_frame_set_char_size (struct frame *f, int width, int 
height)
       frame_size_history_add
        (f, Qxg_frame_set_char_size_1, width, height,
         list2 (make_number (gheight),
-               make_number (pixelheight + FRAME_TOOLBAR_HEIGHT (f)
-                            + FRAME_MENUBAR_HEIGHT (f))));
+               make_number (totalheight)));
 
       gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
                         gwidth,
-                        pixelheight + FRAME_TOOLBAR_HEIGHT (f)
-                        + FRAME_MENUBAR_HEIGHT (f));
+                        totalheight);
     }
   else if (EQ (fullscreen, Qfullheight) && height == FRAME_TEXT_HEIGHT (f))
     {
       frame_size_history_add
        (f, Qxg_frame_set_char_size_2, width, height,
         list2 (make_number (gwidth),
-               make_number (pixelwidth + FRAME_TOOLBAR_WIDTH (f))));
+               make_number (totalwidth)));
 
       gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
-                        pixelwidth + FRAME_TOOLBAR_WIDTH (f),
+                        totalwidth,
                         gheight);
     }
-
   else
     {
       frame_size_history_add
        (f, Qxg_frame_set_char_size_3, width, height,
-        list2 (make_number (pixelwidth + FRAME_TOOLBAR_WIDTH (f)),
-               make_number (pixelheight + FRAME_TOOLBAR_HEIGHT (f)
-                            + FRAME_MENUBAR_HEIGHT (f))));
+        list2 (make_number (totalwidth),
+               make_number (totalheight)));
 
       gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
-                        pixelwidth + FRAME_TOOLBAR_WIDTH (f),
-                        pixelheight + FRAME_TOOLBAR_HEIGHT (f)
-                        + FRAME_MENUBAR_HEIGHT (f));
+                        totalwidth,
+                        totalheight);
       fullscreen = Qnil;
     }
 
@@ -1126,18 +1146,6 @@ delete_cb (GtkWidget *widget,
            GdkEvent  *event,
            gpointer user_data)
 {
-#ifdef HAVE_GTK3
-  /* The event doesn't arrive in the normal event loop.  Send event
-     here.  */
-  struct frame *f = user_data;
-  struct input_event ie;
-
-  EVENT_INIT (ie);
-  ie.kind = DELETE_WINDOW_EVENT;
-  XSETFRAME (ie.frame_or_window, f);
-  kbd_buffer_store_event (&ie);
-#endif
-
   return TRUE;
 }
 
@@ -1356,6 +1364,7 @@ x_wm_set_size_hint (struct frame *f, long int flags, bool 
user_position)
   int min_rows = 0, min_cols = 0;
   int win_gravity = f->win_gravity;
   Lisp_Object fs_state, frame;
+  int scale = xg_get_gdk_scale ();
 
   /* Don't set size hints during initialization; that apparently leads
      to a race condition.  See the thread at
@@ -1435,6 +1444,11 @@ x_wm_set_size_hint (struct frame *f, long int flags, 
bool user_position)
       hint_flags |= GDK_HINT_USER_POS;
     }
 
+  size_hints.base_width /= scale;
+  size_hints.base_height /= scale;
+  size_hints.width_inc /= scale;
+  size_hints.height_inc /= scale;
+
   if (hint_flags != f->output_data.x->hint_flags
       || memcmp (&size_hints,
                 &f->output_data.x->size_hints,
@@ -3556,14 +3570,14 @@ update_theme_scrollbar_height (void)
 int
 xg_get_default_scrollbar_width (void)
 {
-  return scroll_bar_width_for_theme;
+  return scroll_bar_width_for_theme * xg_get_gdk_scale ();
 }
 
 int
 xg_get_default_scrollbar_height (void)
 {
   /* Apparently there's no default height for themes.  */
-  return scroll_bar_width_for_theme;
+  return scroll_bar_width_for_theme * xg_get_gdk_scale ();
 }
 
 /* Return the scrollbar id for X Window WID on display DPY.
@@ -3762,14 +3776,18 @@ xg_update_scrollbar_pos (struct frame *f,
                          int width,
                          int height)
 {
-
   GtkWidget *wscroll = xg_get_widget_from_map (scrollbar_id);
-
   if (wscroll)
     {
       GtkWidget *wfixed = f->output_data.x->edit_widget;
       GtkWidget *wparent = gtk_widget_get_parent (wscroll);
       gint msl;
+      int scale = xg_get_gdk_scale ();
+
+      top /= scale;
+      left /= scale;
+      height /= scale;
+      left -= (scale - 1) * ((width / scale) >> 1);
 
       /* Clear out old position.  */
       int oldx = -1, oldy = -1, oldw, oldh;
@@ -3800,11 +3818,15 @@ xg_update_scrollbar_pos (struct frame *f,
       gdk_window_process_all_updates ();
 #endif
       if (oldx != -1 && oldw > 0 && oldh > 0)
-       /* Clear under old scroll bar position.  This must be done after
-          the gtk_widget_queue_draw and gdk_window_process_all_updates
-          above.  */
-       x_clear_area (f,
-                     oldx, oldy, oldw, oldh);
+        {
+          /* Clear under old scroll bar position.  This must be done after
+             the gtk_widget_queue_draw and gdk_window_process_all_updates
+             above.  */
+         oldw += (scale - 1) * oldw;
+         oldx -= (scale - 1) * oldw;
+          x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
+                        oldx, oldy, oldw, oldh);
+        }
 
       /* GTK does not redraw until the main loop is entered again, but
          if there are no X events pending we will not enter it.  So we sync
diff --git a/src/image.c b/src/image.c
index ffbed74..87029bf 100644
--- a/src/image.c
+++ b/src/image.c
@@ -237,7 +237,7 @@ x_create_bitmap_from_data (struct frame *f, char *bits, 
unsigned int width, unsi
 #endif /* HAVE_NTGUI */
 
 #ifdef HAVE_NS
-  void *bitmap = ns_image_from_XBM (bits, width, height);
+  void *bitmap = ns_image_from_XBM (bits, width, height, 0, 0);
   if (!bitmap)
       return -1;
 #endif
@@ -2706,7 +2706,7 @@ Create_Pixmap_From_Bitmap_Data (struct frame *f, struct 
image *img, char *data,
     convert_mono_to_color_image (f, img, fg, bg);
 
 #elif defined (HAVE_NS)
-  img->pixmap = ns_image_from_XBM (data, img->width, img->height);
+  img->pixmap = ns_image_from_XBM (data, img->width, img->height, fg, bg);
 
 #else
   img->pixmap =
diff --git a/src/keyboard.c b/src/keyboard.c
index bd79f90..77f7fb9 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -391,47 +391,47 @@ static void store_user_signal_events (void);
 static void
 kset_echo_string (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (echo_string) = val;
+  kb->echo_string_ = val;
 }
 static void
 kset_kbd_queue (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (kbd_queue) = val;
+  kb->kbd_queue_ = val;
 }
 static void
 kset_keyboard_translate_table (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vkeyboard_translate_table) = val;
+  kb->Vkeyboard_translate_table_ = val;
 }
 static void
 kset_last_prefix_arg (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vlast_prefix_arg) = val;
+  kb->Vlast_prefix_arg_ = val;
 }
 static void
 kset_last_repeatable_command (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vlast_repeatable_command) = val;
+  kb->Vlast_repeatable_command_ = val;
 }
 static void
 kset_local_function_key_map (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vlocal_function_key_map) = val;
+  kb->Vlocal_function_key_map_ = val;
 }
 static void
 kset_overriding_terminal_local_map (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Voverriding_terminal_local_map) = val;
+  kb->Voverriding_terminal_local_map_ = val;
 }
 static void
 kset_real_last_command (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vreal_last_command) = val;
+  kb->Vreal_last_command_ = val;
 }
 static void
 kset_system_key_syms (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (system_key_syms) = val;
+  kb->system_key_syms_ = val;
 }
 
 
@@ -8707,12 +8707,10 @@ read_char_minibuf_menu_prompt (int commandflag,
       while (BUFFERP (obj));
       kset_defining_kbd_macro (current_kboard, orig_defn_macro);
 
-      if (!INTEGERP (obj) || XINT (obj) == -2)
-        return obj;
-
-      if (! EQ (obj, menu_prompt_more_char)
-         && (!INTEGERP (menu_prompt_more_char)
-             || ! EQ (obj, make_number (Ctl (XINT (menu_prompt_more_char))))))
+      if (!INTEGERP (obj) || XINT (obj) == -2
+         || (! EQ (obj, menu_prompt_more_char)
+             && (!INTEGERP (menu_prompt_more_char)
+                 || ! EQ (obj, make_number (Ctl (XINT 
(menu_prompt_more_char)))))))
        {
          if (!NILP (KVAR (current_kboard, defining_kbd_macro)))
            store_kbd_macro_char (obj);
diff --git a/src/keyboard.h b/src/keyboard.h
index 0ce6d18..bcdeaf6 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -25,7 +25,7 @@ INLINE_HEADER_BEGIN
 
 /* Most code should use this macro to access Lisp fields in struct kboard.  */
 
-#define KVAR(kboard, field) ((kboard)->INTERNAL_FIELD (field))
+#define KVAR(kboard, field) ((kboard)->field ## _)
 
 /* Each KBOARD represents one logical input stream from which Emacs
    gets input.  If we are using ordinary terminals, it has one KBOARD
@@ -78,32 +78,32 @@ struct kboard
        can effectively wait for input in the any-kboard state, and hence
        avoid blocking out the other KBOARDs.  See universal-argument in
        lisp/simple.el for an example.  */
-    Lisp_Object INTERNAL_FIELD (Voverriding_terminal_local_map);
+    Lisp_Object Voverriding_terminal_local_map_;
 
     /* Last command executed by the editor command loop, not counting
        commands that set the prefix argument.  */
-    Lisp_Object INTERNAL_FIELD (Vlast_command);
+    Lisp_Object Vlast_command_;
 
     /* Normally same as last-command, but never modified by other commands.  */
-    Lisp_Object INTERNAL_FIELD (Vreal_last_command);
+    Lisp_Object Vreal_last_command_;
 
     /* User-supplied table to translate input characters through.  */
-    Lisp_Object INTERNAL_FIELD (Vkeyboard_translate_table);
+    Lisp_Object Vkeyboard_translate_table_;
 
     /* Last command that may be repeated by `repeat'.  */
-    Lisp_Object INTERNAL_FIELD (Vlast_repeatable_command);
+    Lisp_Object Vlast_repeatable_command_;
 
     /* The prefix argument for the next command, in raw form.  */
-    Lisp_Object INTERNAL_FIELD (Vprefix_arg);
+    Lisp_Object Vprefix_arg_;
 
     /* Saved prefix argument for the last command, in raw form.  */
-    Lisp_Object INTERNAL_FIELD (Vlast_prefix_arg);
+    Lisp_Object Vlast_prefix_arg_;
 
     /* Unread events specific to this kboard.  */
-    Lisp_Object INTERNAL_FIELD (kbd_queue);
+    Lisp_Object kbd_queue_;
 
     /* Non-nil while a kbd macro is being defined.  */
-    Lisp_Object INTERNAL_FIELD (defining_kbd_macro);
+    Lisp_Object defining_kbd_macro_;
 
     /* The start of storage for the current keyboard macro.  */
     Lisp_Object *kbd_macro_buffer;
@@ -125,28 +125,28 @@ struct kboard
     ptrdiff_t kbd_macro_bufsize;
 
     /* Last anonymous kbd macro defined.  */
-    Lisp_Object INTERNAL_FIELD (Vlast_kbd_macro);
+    Lisp_Object Vlast_kbd_macro_;
 
     /* Alist of system-specific X windows key symbols.  */
-    Lisp_Object INTERNAL_FIELD (Vsystem_key_alist);
+    Lisp_Object Vsystem_key_alist_;
 
     /* Cache for modify_event_symbol.  */
-    Lisp_Object INTERNAL_FIELD (system_key_syms);
+    Lisp_Object system_key_syms_;
 
     /* The kind of display: x, w32, ...  */
-    Lisp_Object INTERNAL_FIELD (Vwindow_system);
+    Lisp_Object Vwindow_system_;
 
     /* Keymap mapping keys to alternative preferred forms.
        See the DEFVAR for more documentation.  */
-    Lisp_Object INTERNAL_FIELD (Vlocal_function_key_map);
+    Lisp_Object Vlocal_function_key_map_;
 
     /* Keymap mapping ASCII function key sequences onto their preferred
        forms.  Initialized by the terminal-specific lisp files.  See the
        DEFVAR for more documentation.  */
-    Lisp_Object INTERNAL_FIELD (Vinput_decode_map);
+    Lisp_Object Vinput_decode_map_;
 
     /* Minibufferless frames on this display use this frame's minibuffer.  */
-    Lisp_Object INTERNAL_FIELD (Vdefault_minibuffer_frame);
+    Lisp_Object Vdefault_minibuffer_frame_;
 
     /* Number of displays using this KBOARD.  Normally 1, but can be
        larger when you have multiple screens on a single X display.  */
@@ -154,7 +154,7 @@ struct kboard
 
     /* The text we're echoing in the modeline - partial key sequences,
        usually.  This is nil when not echoing.  */
-    Lisp_Object INTERNAL_FIELD (echo_string);
+    Lisp_Object echo_string_;
 
     /* This flag indicates that events were put into kbd_queue
        while Emacs was running for some other KBOARD.
@@ -179,42 +179,42 @@ struct kboard
 INLINE void
 kset_default_minibuffer_frame (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vdefault_minibuffer_frame) = val;
+  kb->Vdefault_minibuffer_frame_ = val;
 }
 INLINE void
 kset_defining_kbd_macro (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (defining_kbd_macro) = val;
+  kb->defining_kbd_macro_ = val;
 }
 INLINE void
 kset_input_decode_map (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vinput_decode_map) = val;
+  kb->Vinput_decode_map_ = val;
 }
 INLINE void
 kset_last_command (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vlast_command) = val;
+  kb->Vlast_command_ = val;
 }
 INLINE void
 kset_last_kbd_macro (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vlast_kbd_macro) = val;
+  kb->Vlast_kbd_macro_ = val;
 }
 INLINE void
 kset_prefix_arg (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vprefix_arg) = val;
+  kb->Vprefix_arg_ = val;
 }
 INLINE void
 kset_system_key_alist (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vsystem_key_alist) = val;
+  kb->Vsystem_key_alist_ = val;
 }
 INLINE void
 kset_window_system (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vwindow_system) = val;
+  kb->Vwindow_system_ = val;
 }
 
 /* Temporarily used before a frame has been opened. */
diff --git a/src/lisp.h b/src/lisp.h
index 55c4c66..6d34ce3 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1144,10 +1144,6 @@ LISP_MACRO_DEFUN_VOID (CHECK_TYPE,
                       (int ok, Lisp_Object predicate, Lisp_Object x),
                       (ok, predicate, x))
 
-/* Deprecated and will be removed soon.  */
-
-#define INTERNAL_FIELD(field) field ## _
-
 /* See the macros in intervals.h.  */
 
 typedef struct interval *INTERVAL;
diff --git a/src/lisp.mk b/src/lisp.mk
deleted file mode 100644
index ee2a07c..0000000
--- a/src/lisp.mk
+++ /dev/null
@@ -1,174 +0,0 @@
-### lisp.mk --- src/Makefile fragment for GNU Emacs
-
-## Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2015 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 <http://www.gnu.org/licenses/>.
-
-### Commentary:
-
-## This is the list of all Lisp files that might be loaded into the
-## dumped Emacs.  Some of them are not loaded on all platforms, but
-## the DOC file on every platform uses them (because the DOC file is
-## supposed to be platform-independent).
-## It is arranged like this because it is easier to generate it
-## semi-mechanically from loadup.el this way.
-## Eg something like:
-##   sed -e 's/"[ )].*//' -n -e '/(load "/ s/.*load "//p' loadup.el | \
-##   grep -vE 'site-|ldefs-boot'
-## minus any duplicates.
-## Note that you can generally just add a ".elc" extension to every file
-## that does not have an explicit .el extension, but beware of any
-## no-byte-compile ones.
-
-## Confusingly, international/cp51932 and international/eucjp-ms are
-## unconditionally loaded from language/japanese, instead of being
-## loaded directly from loadup.el; FIXME.
-
-## Note that this list should not include lisp files which might not
-## be present, like site-load.el and site-init.el; this makefile
-## expects them all to be either present or buildable.
-
-## Place loaddefs.el first, so it gets generated first, since it is on
-## the critical path (relevant in parallel compilations).
-
-### Code:
-
-## NB: This list is parsed by sed in the main src/Makefile.
-## Do not change the formatting.
-lisp = \
-       $(lispsource)/loaddefs.el \
-       $(lispsource)/loadup.el \
-       $(lispsource)/emacs-lisp/byte-run.elc \
-       $(lispsource)/emacs-lisp/backquote.elc \
-       $(lispsource)/subr.elc \
-       $(lispsource)/version.elc \
-       $(lispsource)/widget.elc \
-       $(lispsource)/custom.elc \
-       $(lispsource)/emacs-lisp/map-ynp.elc \
-       $(lispsource)/cus-start.elc \
-       $(lispsource)/international/mule.elc \
-       $(lispsource)/international/mule-conf.elc \
-       $(lispsource)/env.elc \
-       $(lispsource)/format.elc \
-       $(lispsource)/bindings.elc \
-       $(lispsource)/files.elc \
-       $(lispsource)/emacs-lisp/macroexp.elc \
-       $(lispsource)/cus-face.elc \
-       $(lispsource)/faces.elc \
-       $(lispsource)/button.elc \
-       $(lispsource)/startup.elc \
-       $(lispsource)/emacs-lisp/cl-preloaded.elc \
-       $(lispsource)/emacs-lisp/nadvice.elc \
-       $(lispsource)/minibuffer.elc \
-       $(lispsource)/abbrev.elc \
-       $(lispsource)/simple.elc \
-       $(lispsource)/help.elc \
-       $(lispsource)/jka-cmpr-hook.elc \
-       $(lispsource)/epa-hook.elc \
-       $(lispsource)/international/mule-cmds.elc \
-       $(lispsource)/case-table.elc \
-       $(lispsource)/international/characters.elc \
-       $(lispsource)/composite.elc \
-       $(lispsource)/international/charprop.el \
-       $(lispsource)/language/chinese.elc \
-       $(lispsource)/language/cyrillic.elc \
-       $(lispsource)/language/indian.elc \
-       $(lispsource)/language/sinhala.elc \
-       $(lispsource)/language/english.elc \
-       $(lispsource)/language/ethiopic.elc \
-       $(lispsource)/language/european.elc \
-       $(lispsource)/language/czech.elc \
-       $(lispsource)/language/slovak.elc \
-       $(lispsource)/language/romanian.elc \
-       $(lispsource)/language/greek.elc \
-       $(lispsource)/language/hebrew.elc \
-       $(lispsource)/language/japanese.elc \
-       $(lispsource)/international/cp51932.el \
-       $(lispsource)/international/eucjp-ms.el \
-       $(lispsource)/language/korean.elc \
-       $(lispsource)/language/lao.elc \
-       $(lispsource)/language/tai-viet.elc \
-       $(lispsource)/language/thai.elc \
-       $(lispsource)/language/tibetan.elc \
-       $(lispsource)/language/vietnamese.elc \
-       $(lispsource)/language/misc-lang.elc \
-       $(lispsource)/language/utf-8-lang.elc \
-       $(lispsource)/language/georgian.elc \
-       $(lispsource)/language/khmer.elc \
-       $(lispsource)/language/burmese.elc \
-       $(lispsource)/language/cham.elc \
-       $(lispsource)/indent.elc \
-       $(lispsource)/window.elc \
-       $(lispsource)/frame.elc \
-       $(lispsource)/term/tty-colors.elc \
-       $(lispsource)/font-core.elc \
-       $(lispsource)/facemenu.elc \
-       $(lispsource)/emacs-lisp/syntax.elc \
-       $(lispsource)/font-lock.elc \
-       $(lispsource)/jit-lock.elc \
-       $(lispsource)/mouse.elc \
-       $(lispsource)/scroll-bar.elc \
-       $(lispsource)/select.elc \
-       $(lispsource)/emacs-lisp/timer.elc \
-       $(lispsource)/isearch.elc \
-       $(lispsource)/rfn-eshadow.elc \
-       $(lispsource)/menu-bar.elc \
-       $(lispsource)/emacs-lisp/lisp.elc \
-       $(lispsource)/textmodes/page.elc \
-       $(lispsource)/register.elc \
-       $(lispsource)/textmodes/paragraphs.elc \
-       $(lispsource)/progmodes/prog-mode.elc \
-       $(lispsource)/emacs-lisp/lisp-mode.elc \
-       $(lispsource)/progmodes/elisp-mode.elc \
-       $(lispsource)/textmodes/text-mode.elc \
-       $(lispsource)/textmodes/fill.elc \
-       $(lispsource)/newcomment.elc \
-       $(lispsource)/replace.elc \
-       $(lispsource)/emacs-lisp/tabulated-list.elc \
-       $(lispsource)/buff-menu.elc \
-       $(lispsource)/fringe.elc \
-       $(lispsource)/emacs-lisp/regexp-opt.elc \
-       $(lispsource)/image.elc \
-       $(lispsource)/international/fontset.elc \
-       $(lispsource)/dnd.elc \
-       $(lispsource)/tool-bar.elc \
-       $(lispsource)/dynamic-setting.elc \
-       $(lispsource)/x-dnd.elc \
-       $(lispsource)/term/common-win.elc \
-       $(lispsource)/term/x-win.elc \
-       $(lispsource)/w32-vars.elc \
-       $(lispsource)/term/w32-win.elc \
-       $(lispsource)/ls-lisp.elc \
-       $(lispsource)/disp-table.elc \
-       $(lispsource)/dos-w32.elc \
-       $(lispsource)/w32-fns.elc \
-       $(lispsource)/dos-fns.elc \
-       $(lispsource)/dos-vars.elc \
-       $(lispsource)/term/pc-win.elc \
-       $(lispsource)/term/internal.elc \
-       $(lispsource)/term/ns-win.elc \
-       $(lispsource)/mwheel.elc \
-       $(lispsource)/emacs-lisp/float-sup.elc \
-       $(lispsource)/vc/vc-hooks.elc \
-       $(lispsource)/vc/ediff-hook.elc \
-       $(lispsource)/electric.elc \
-       $(lispsource)/emacs-lisp/eldoc.elc \
-       $(lispsource)/uniquify.elc \
-       $(lispsource)/tooltip.elc
-
-
-### lisp.mk ends here
diff --git a/src/lread.c b/src/lread.c
index a84450a..26c19d8 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4592,8 +4592,10 @@ of the file, regardless of whether or not it has the 
`.elc' extension.  */);
 
   DEFVAR_LISP ("load-read-function", Vload_read_function,
               doc: /* Function used by `load' and `eval-region' for reading 
expressions.
-The default is nil, which means use the function `read'.  */);
-  Vload_read_function = Qnil;
+Called with a single argument (the stream from which to read).
+The default is to use the function `read'.  */);
+  DEFSYM (Qread, "read");
+  Vload_read_function = Qread;
 
   DEFVAR_LISP ("load-source-file-function", Vload_source_file_function,
               doc: /* Function called in `load' to load an Emacs Lisp source 
file.
diff --git a/src/macfont.h b/src/macfont.h
index f311577..403be94 100644
--- a/src/macfont.h
+++ b/src/macfont.h
@@ -48,7 +48,7 @@ struct mac_glyph_layout
 typedef CTFontDescriptorRef FontDescriptorRef;
 typedef CTFontRef FontRef;
 typedef CTFontSymbolicTraits FontSymbolicTraits;
-typedef CTCharacterCollection CharacterCollection;
+typedef NSCharacterCollection CharacterCollection;
 
 #define MAC_FONT_NAME_ATTRIBUTE kCTFontNameAttribute
 #define MAC_FONT_FAMILY_NAME_ATTRIBUTE kCTFontFamilyNameAttribute
@@ -79,8 +79,8 @@ enum {
 };
 
 enum {
-  MAC_CHARACTER_COLLECTION_IDENTITY_MAPPING = 
kCTIdentityMappingCharacterCollection,
-  MAC_CHARACTER_COLLECTION_ADOBE_JAPAN1 = kCTAdobeJapan1CharacterCollection
+  MAC_CHARACTER_COLLECTION_IDENTITY_MAPPING = 
NSIdentityMappingCharacterCollection,
+  MAC_CHARACTER_COLLECTION_ADOBE_JAPAN1 = NSAdobeJapan1CharacterCollection
 };
 
 #define mac_font_descriptor_create_with_attributes \
diff --git a/src/nsfns.m b/src/nsfns.m
index f8863e6..8a3c6cc 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1075,7 +1075,6 @@ This function is an internal primitive--use `make-frame' 
instead.  */)
   Lisp_Object name;
   int minibuffer_only = 0;
   long window_prompting = 0;
-  int width, height;
   ptrdiff_t count = specpdl_ptr - specpdl;
   struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
   Lisp_Object display;
@@ -1455,6 +1454,15 @@ ns_run_file_dialog (void)
   ns_fd_data.panel = nil;
 }
 
+#ifdef NS_IMPL_COCOA
+#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_9
+#define MODAL_OK_RESPONSE NSModalResponseOK
+#endif
+#endif
+#ifndef MODAL_OK_RESPONSE
+#define MODAL_OK_RESPONSE NSOKButton
+#endif
+
 DEFUN ("ns-read-file-name", Fns_read_file_name, Sns_read_file_name, 1, 5, 0,
        doc: /* Use a graphical panel to read a file name, using prompt PROMPT.
 Optional arg DIR, if non-nil, supplies a default directory.
@@ -1466,10 +1474,9 @@ Optional arg DIR_ONLY_P, if non-nil, means choose only 
directories.  */)
    Lisp_Object init, Lisp_Object dir_only_p)
 {
   static id fileDelegate = nil;
-  BOOL ret;
   BOOL isSave = NILP (mustmatch) && NILP (dir_only_p);
   id panel;
-  Lisp_Object fname;
+  Lisp_Object fname = Qnil;
 
   NSString *promptS = NILP (prompt) || !STRINGP (prompt) ? nil :
     [NSString stringWithUTF8String: SSDATA (prompt)];
@@ -1549,20 +1556,17 @@ Optional arg DIR_ONLY_P, if non-nil, means choose only 
directories.  */)
   while (ns_fd_data.panel != nil)
     [NSApp run];
 
-  ret = (ns_fd_data.ret == NSOKButton);
-
-  if (ret)
+  if (ns_fd_data.ret == MODAL_OK_RESPONSE)
     {
       NSString *str = ns_filename_from_panel (panel);
       if (! str) str = ns_directory_from_panel (panel);
-      if (! str) ret = NO;
-      else fname = build_string ([str UTF8String]);
+      if (str) fname = build_string ([str UTF8String]);
     }
 
   [[FRAME_NS_VIEW (SELECTED_FRAME ()) window] makeKeyWindow];
   unblock_input ();
 
-  return ret ? fname : Qnil;
+  return fname;
 }
 
 const char *
@@ -2677,7 +2681,16 @@ compute_tip_xy (struct frame *f,
       pt.y = dpyinfo->last_mouse_motion_y;
       /* Convert to screen coordinates */
       pt = [view convertPoint: pt toView: nil];
+#if !defined (NS_IMPL_COCOA) || MAC_OS_X_VERSION_MAX_ALLOWED < 
MAC_OS_X_VERSION_10_7
       pt = [[view window] convertBaseToScreen: pt];
+#else
+      {
+        NSRect r = NSMakeRect (pt.x, pt.y, 0, 0);
+        r = [[view window] convertRectToScreen: r];
+        pt.x = r.origin.x;
+        pt.y = r.origin.y;
+      }
+#endif
     }
   else
     {
diff --git a/src/nsimage.m b/src/nsimage.m
index f37ad38..9302cd2 100644
--- a/src/nsimage.m
+++ b/src/nsimage.m
@@ -53,12 +53,13 @@ int image_trace_num = 0;
    ========================================================================== 
*/
 
 void *
-ns_image_from_XBM (unsigned char *bits, int width, int height)
+ns_image_from_XBM (unsigned char *bits, int width, int height,
+                   unsigned long fg, unsigned long bg)
 {
   NSTRACE (ns_image_from_XBM);
   return [[EmacsImage alloc] initFromXBM: bits
                                    width: width height: height
-                                    flip: YES];
+                                      fg: fg bg: bg];
 }
 
 void *
@@ -186,7 +187,11 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
 
   /* The next two lines cause the DPI of the image to be ignored.
      This seems to be the behavior users expect. */
+#ifdef NS_IMPL_COCOA
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
   [image setScalesWhenResized: YES];
+#endif
+#endif
   [image setSize: NSMakeSize([imgRep pixelsWide], [imgRep pixelsHigh])];
 
   [image setName: [NSString stringWithUTF8String: SSDATA (file)]];
@@ -204,16 +209,8 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
 
 
 - initFromXBM: (unsigned char *)bits width: (int)w height: (int)h
-         flip: (BOOL)flip
+           fg: (unsigned long)fg bg: (unsigned long)bg
 {
-  return [self initFromSkipXBM: bits width: w height: h flip: flip length: 0];
-}
-
-
-- initFromSkipXBM: (unsigned char *)bits width: (int)w height: (int)h
-             flip: (BOOL)flip length: (int)length;
-{
-  int bpr = (w + 7) / 8;
   unsigned char *planes[5];
 
   [self initWithSize: NSMakeSize (w, h)];
@@ -226,57 +223,58 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
                                     bytesPerRow: w bitsPerPixel: 0];
 
   [bmRep getBitmapDataPlanes: planes];
+
+  if (fg == 0 && bg == 0)
+    bg = 0xffffff;
+
   {
     /* pull bits out to set the (bytewise) alpha mask */
     int i, j, k;
     unsigned char *s = bits;
+    unsigned char *rr = planes[0];
+    unsigned char *gg = planes[1];
+    unsigned char *bb = planes[2];
     unsigned char *alpha = planes[3];
-    unsigned char swt[16] = {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13,
-                             3, 11, 7, 15};
-    unsigned char c, bitPat;
-
-    for (j = 0; j < h; j++)
-      for (i = 0; i < bpr; i++)
+    unsigned char fgr = (fg >> 16) & 0xff;
+    unsigned char fgg = (fg >> 8) & 0xff;
+    unsigned char fgb = fg & 0xff;
+    unsigned char bgr = (bg >> 16) & 0xff;
+    unsigned char bgg = (bg >> 8) & 0xff;
+    unsigned char bgb = bg & 0xff;
+    unsigned char c;
+
+    int idx = 0;
+    for (j = 0; j < h; ++j)
+      for (i = 0; i < w; )
         {
-          if (length)
+          c = *s++;
+          for (k = 0; i < w && k < 8; ++k, ++i)
             {
-              unsigned char s1, s2;
-              while (*s++ != 'x' && s < bits + length);
-              if (s >= bits + length)
+              *alpha++ = 0xff;
+              if (c & 1)
                 {
-                  [bmRep release];
-                  bmRep = nil;
-                  return nil;
+                  *rr++ = fgr;
+                  *gg++ = fgg;
+                  *bb++ = fgb;
                 }
-#define hexchar(x) ('0' <= (x) && (x) <= '9' ? (x) - '0' : (x) - 'a' + 10)
-              s1 = *s++;
-              s2 = *s++;
-              c = hexchar (s1) * 0x10 + hexchar (s2);
-            }
-          else
-            c = *s++;
-
-          bitPat = flip ? swt[c >> 4] | (swt[c & 0xf] << 4) : c ^ 255;
-          for (k =0; k<8; k++)
-            {
-              *alpha++ = (bitPat & 0x80) ? 0xff : 0;
-              bitPat <<= 1;
+              else
+                {
+                  *rr++ = bgr;
+                  *gg++ = bgg;
+                  *bb++ = bgb;
+                }
+              idx++;
+              c >>= 1;
             }
         }
   }
 
+  xbm_fg = fg;
   [self addRepresentation: bmRep];
-
-  memset (planes[0], 0, w*h);
-  memset (planes[1], 0, w*h);
-  memset (planes[2], 0, w*h);
-  [self setXBMColor: [NSColor blackColor]];
   return self;
 }
 
-
-/* Set color for a bitmap image (see initFromSkipXBM).  Note that the alpha
-   is used as a mask, so we just memset the entire array. */
+/* Set color for a bitmap image.  */
 - setXBMColor: (NSColor *)color
 {
   NSSize s = [self size];
@@ -296,19 +294,21 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
 
   [bmRep getBitmapDataPlanes: planes];
 
-  /* we used to just do this, but Cocoa seems to have a bug when rendering
-     an alpha-masked image onto a dark background where it bloats the mask */
-   /* memset (planes[0..2], r, g, b*0xff, len); */
   {
     int i, len = s.width*s.height;
     int rr = r * 0xff, gg = g * 0xff, bb = b * 0xff;
-    for (i =0; i<len; i++)
-      if (planes[3][i] != 0)
+    unsigned char fgr = (xbm_fg >> 16) & 0xff;
+    unsigned char fgg = (xbm_fg >> 8) & 0xff;
+    unsigned char fgb = xbm_fg & 0xff;
+
+    for (i = 0; i < len; ++i)
+      if (planes[0][i] == fgr && planes[1][i] == fgg && planes[2][i] == fgb)
         {
           planes[0][i] = rr;
           planes[1][i] = gg;
           planes[2][i] = bb;
         }
+    xbm_fg = ((rr << 16) & 0xff) + ((gg << 8) & 0xff) + (bb & 0xff);
   }
 
   return self;
@@ -356,7 +356,11 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
 
           /* The next two lines cause the DPI of the image to be ignored.
              This seems to be the behavior users expect. */
+#ifdef NS_IMPL_COCOA
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
           [self setScalesWhenResized: YES];
+#endif
+#endif
           [self setSize: NSMakeSize([bmr pixelsWide], [bmr pixelsHigh])];
 
           break;
diff --git a/src/nsmenu.m b/src/nsmenu.m
index 26fe26e..b5cb64d 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -1418,7 +1418,7 @@ Lisp_Object
 ns_popup_dialog (struct frame *f, Lisp_Object header, Lisp_Object contents)
 {
   id dialog;
-  Lisp_Object window, tem, title;
+  Lisp_Object tem, title;
   NSPoint p;
   BOOL isQ;
   NSAutoreleasePool *pool;
@@ -1506,7 +1506,11 @@ ns_popup_dialog (struct frame *f, Lisp_Object header, 
Lisp_Object contents)
   area.size.width = ICONSIZE;
   area.size.height= ICONSIZE;
   img = [[NSImage imageNamed: @"NSApplicationIcon"] copy];
+#ifdef NS_IMPL_COCOA
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
   [img setScalesWhenResized: YES];
+#endif
+#endif
   [img setSize: NSMakeSize (ICONSIZE, ICONSIZE)];
   imgView = [[NSImageView alloc] initWithFrame: area];
   [imgView setImage: img];
diff --git a/src/nsterm.h b/src/nsterm.h
index 9035ee1..c06b7c4 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -341,13 +341,12 @@ typedef float EmacsCGFloat;
   NSBitmapImageRep *bmRep; /* used for accessing pixel data */
   unsigned char *pixmapData[5]; /* shortcut to access pixel data */
   NSColor *stippleMask;
+  unsigned long xbm_fg;
 }
 + allocInitFromFile: (Lisp_Object)file;
 - (void)dealloc;
 - initFromXBM: (unsigned char *)bits width: (int)w height: (int)h
-         flip: (BOOL)flip;
-- initFromSkipXBM: (unsigned char *)bits width: (int)w height: (int)h
-             flip: (BOOL)flip length: (int)length;
+                  fg: (unsigned long)fg bg: (unsigned long)bg;
 - setXBMColor: (NSColor *)color;
 - initForXPMWithDepth: (int)depth width: (int)width height: (int)height;
 - (void)setPixmapData;
@@ -397,6 +396,7 @@ typedef float EmacsCGFloat;
 - condemn;
 - reprieve;
 - (bool)judge;
++ (CGFloat)scrollerWidth;
 @end
 
 
@@ -864,7 +864,8 @@ extern void syms_of_nsselect (void);
 
 /* From nsimage.m, needed in image.c */
 struct image;
-extern void *ns_image_from_XBM (unsigned char *bits, int width, int height);
+extern void *ns_image_from_XBM (unsigned char *bits, int width, int height,
+                                unsigned long fg, unsigned long bg);
 extern void *ns_image_for_XPM (int width, int height, int depth);
 extern void *ns_image_from_file (Lisp_Object file);
 extern bool ns_load_image (struct frame *f, struct image *img,
diff --git a/src/nsterm.m b/src/nsterm.m
index e90c3d7..67a0389 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1538,7 +1538,7 @@ ns_get_color (const char *name, NSColor **col)
 {
   NSColor *new = nil;
   static char hex[20];
-  int scaling;
+  int scaling = 0;
   float r = -1.0, g, b;
   NSString *nsname = [NSString stringWithUTF8String: name];
 
@@ -2093,6 +2093,18 @@ ns_clear_frame_area (struct frame *f, int x, int y, int 
width, int height)
   return;
 }
 
+static void
+ns_copy_bits (struct frame *f, NSRect src, NSRect dest)
+{
+  if (FRAME_NS_VIEW (f))
+    {
+      ns_focus (f, &dest, 1);
+      [FRAME_NS_VIEW (f) scrollRect: src
+                                 by: NSMakeSize (dest.origin.x - src.origin.x,
+                                                 dest.origin.y - 
src.origin.y)];
+      ns_unfocus (f);
+    }
+}
 
 static void
 ns_scroll_run (struct window *w, struct run *run)
@@ -2145,11 +2157,8 @@ ns_scroll_run (struct window *w, struct run *run)
   {
     NSRect srcRect = NSMakeRect (x, from_y, width, height);
     NSRect dstRect = NSMakeRect (x, to_y, width, height);
-    NSPoint dstOrigin = NSMakePoint (x, to_y);
 
-    ns_focus (f, &dstRect, 1);
-    NSCopyBits (0, srcRect , dstOrigin);
-    ns_unfocus (f);
+    ns_copy_bits (f, srcRect , dstRect);
   }
 
   unblock_input ();
@@ -2205,13 +2214,10 @@ ns_shift_glyphs_for_insert (struct frame *f,
 {
   NSRect srcRect = NSMakeRect (x, y, width, height);
   NSRect dstRect = NSMakeRect (x+shift_by, y, width, height);
-  NSPoint dstOrigin = dstRect.origin;
 
   NSTRACE (ns_shift_glyphs_for_insert);
 
-  ns_focus (f, &dstRect, 1);
-  NSCopyBits (0, srcRect, dstOrigin);
-  ns_unfocus (f);
+  ns_copy_bits (f, srcRect, dstRect);
 }
 
 
@@ -2317,7 +2323,7 @@ ns_draw_fringe_bitmap (struct window *w, struct glyph_row 
*row,
           for (i = 0; i < len; i++)
             cbits[i] = ~(bits[i] & 0xff);
           img = [[EmacsImage alloc] initFromXBM: cbits width: 8 height: p->h
-                                           flip: NO];
+                                             fg: 0 bg: 0];
           bimgs[p->which - 1] = img;
           xfree (cbits);
         }
@@ -2459,6 +2465,7 @@ ns_draw_window_cursor (struct window *w, struct glyph_row 
*glyph_row,
 
   switch (cursor_type)
     {
+    case DEFAULT_CURSOR:
     case NO_CURSOR:
       break;
     case FILLED_BOX_CURSOR:
@@ -3188,6 +3195,96 @@ ns_dumpglyphs_stretch (struct glyph_string *s)
 
 
 static void
+ns_draw_composite_glyph_string_foreground (struct glyph_string *s)
+{
+  int i, j, x;
+  struct font *font = s->font;
+
+  /* If first glyph of S has a left box line, start drawing the text
+     of S to the right of that box line.  */
+  if (s->face && s->face->box != FACE_NO_BOX
+      && s->first_glyph->left_box_line_p)
+    x = s->x + eabs (s->face->box_line_width);
+  else
+    x = s->x;
+
+  /* S is a glyph string for a composition.  S->cmp_from is the index
+     of the first character drawn for glyphs of this composition.
+     S->cmp_from == 0 means we are drawing the very first character of
+     this composition.  */
+
+  /* Draw a rectangle for the composition if the font for the very
+     first character of the composition could not be loaded.  */
+  if (s->font_not_found_p)
+    {
+      if (s->cmp_from == 0)
+        {
+          NSRect r = NSMakeRect (s->x, s->y, s->width-1, s->height -1);
+          ns_draw_box (r, 1, FRAME_CURSOR_COLOR (s->f), 1, 1);
+        }
+    }
+  else if (! s->first_glyph->u.cmp.automatic)
+    {
+      int y = s->ybase;
+
+      for (i = 0, j = s->cmp_from; i < s->nchars; i++, j++)
+       /* TAB in a composition means display glyphs with padding
+          space on the left or right.  */
+       if (COMPOSITION_GLYPH (s->cmp, j) != '\t')
+         {
+           int xx = x + s->cmp->offsets[j * 2];
+           int yy = y - s->cmp->offsets[j * 2 + 1];
+
+           font->driver->draw (s, j, j + 1, xx, yy, false);
+           if (s->face->overstrike)
+             font->driver->draw (s, j, j + 1, xx + 1, yy, false);
+         }
+    }
+  else
+    {
+      Lisp_Object gstring = composition_gstring_from_id (s->cmp_id);
+      Lisp_Object glyph;
+      int y = s->ybase;
+      int width = 0;
+
+      for (i = j = s->cmp_from; i < s->cmp_to; i++)
+       {
+         glyph = LGSTRING_GLYPH (gstring, i);
+         if (NILP (LGLYPH_ADJUSTMENT (glyph)))
+           width += LGLYPH_WIDTH (glyph);
+         else
+           {
+             int xoff, yoff, wadjust;
+
+             if (j < i)
+               {
+                 font->driver->draw (s, j, i, x, y, false);
+                 if (s->face->overstrike)
+                   font->driver->draw (s, j, i, x + 1, y, false);
+                 x += width;
+               }
+             xoff = LGLYPH_XOFF (glyph);
+             yoff = LGLYPH_YOFF (glyph);
+             wadjust = LGLYPH_WADJUST (glyph);
+             font->driver->draw (s, i, i + 1, x + xoff, y + yoff, false);
+             if (s->face->overstrike)
+               font->driver->draw (s, i, i + 1, x + xoff + 1, y + yoff,
+                                   false);
+             x += wadjust;
+             j = i + 1;
+             width = 0;
+           }
+       }
+      if (j < i)
+       {
+         font->driver->draw (s, j, i, x, y, false);
+         if (s->face->overstrike)
+           font->driver->draw (s, j, i, x + 1, y, false);
+       }
+    }
+}
+
+static void
 ns_draw_glyph_string (struct glyph_string *s)
 /* --------------------------------------------------------------------------
       External (RIF): Main draw-text call.
@@ -3279,13 +3376,14 @@ ns_draw_glyph_string (struct glyph_string *s)
 
       {
         BOOL isComposite = s->first_glyph->type == COMPOSITE_GLYPH;
-        int end = isComposite ? s->cmp_to : s->nchars;
-
-        font->driver->draw
-          (s, s->cmp_from, end, s->x, s->ybase,
-           (flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
-           || flags == NS_DUMPGLYPH_MOUSEFACE);
 
+        if (isComposite)
+          ns_draw_composite_glyph_string_foreground (s);
+        else
+          font->driver->draw
+            (s, s->cmp_from, s->nchars, s->x, s->ybase,
+             (flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
+             || flags == NS_DUMPGLYPH_MOUSEFACE);
       }
 
       {
@@ -3866,7 +3964,6 @@ ns_set_horizontal_scroll_bar (struct window *window,
   EmacsScroller *bar;
   int top, height, left, width;
   int window_x, window_width;
-  int pixel_width = WINDOW_PIXEL_WIDTH (window);
   BOOL update_p = YES;
 
   /* optimization; display engine sends WAY too many of these.. */
@@ -4224,6 +4321,7 @@ ns_create_terminal (struct ns_display_info *dpyinfo)
   terminal->menu_show_hook = ns_menu_show;
   terminal->popup_dialog_hook = ns_popup_dialog;
   terminal->set_vertical_scroll_bar_hook = ns_set_vertical_scroll_bar;
+  terminal->set_horizontal_scroll_bar_hook = ns_set_horizontal_scroll_bar;
   terminal->condemn_scroll_bars_hook = ns_condemn_scroll_bars;
   terminal->redeem_scroll_bar_hook = ns_redeem_scroll_bar;
   terminal->judge_scroll_bars_hook = ns_judge_scroll_bars;
@@ -4508,7 +4606,7 @@ ns_term_shutdown (int sig)
 
 - (id)init
 {
-  if (self = [super init])
+  if ((self = [super init]))
     {
 #ifdef NS_IMPL_COCOA
       self->isFirst = YES;
@@ -4795,21 +4893,43 @@ ns_term_shutdown (int sig)
   EV_TRAILER ((id)nil);
 }
 
+static bool
+runAlertPanel(NSString *title,
+              NSString *msgFormat,
+              NSString *defaultButton,
+              NSString *alternateButton)
+{
+#if !defined (NS_IMPL_COCOA) || \
+  MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_9
+  return NSRunAlertPanel(title, msgFormat, defaultButton, alternateButton, nil)
+    == NSAlertDefaultReturn;
+#else
+  NSAlert *alert = [[NSAlert alloc] init];
+  [alert setAlertStyle: NSCriticalAlertStyle];
+  [alert setMessageText: msgFormat];
+  [alert addButtonWithTitle: defaultButton];
+  [alert addButtonWithTitle: alternateButton];
+  NSInteger ret = [alert runModal];
+  [alert release];
+  return ret == NSAlertFirstButtonReturn;
+#endif
+}
+
 
 - (NSApplicationTerminateReply)applicationShouldTerminate: (id)sender
 {
-  int ret;
+  bool ret;
 
   if (NILP (ns_confirm_quit)) //   || ns_shutdown_properly  --> TO DO
     return NSTerminateNow;
 
-    ret = NSRunAlertPanel(ns_app_name,
-                          @"Exit requested.  Would you like to Save Buffers 
and Exit, or Cancel the request?",
-                          @"Save Buffers and Exit", @"Cancel", nil);
+    ret = runAlertPanel(ns_app_name,
+                        @"Exit requested.  Would you like to Save Buffers and 
Exit, or Cancel the request?",
+                        @"Save Buffers and Exit", @"Cancel");
 
-    if (ret == NSAlertDefaultReturn)
+    if (ret)
         return NSTerminateNow;
-    else if (ret == NSAlertAlternateReturn)
+    else
         return NSTerminateCancel;
     return NSTerminateNow;  /* just in case */
 }
@@ -5153,9 +5273,6 @@ not_in_argv (NSString *arg)
   int code;
   unsigned fnKeysym = 0;
   static NSMutableArray *nsEvArray;
-#ifdef NS_IMPL_GNUSTEP
-  static BOOL firstTime = YES;
-#endif
   int left_is_none;
   unsigned int flags = [theEvent modifierFlags];
 
@@ -5384,18 +5501,6 @@ not_in_argv (NSString *arg)
     }
 
 
-#ifdef NS_IMPL_GNUSTEP
-  /* if we get here we should send the key for input manager processing */
-  /* Disable warning, there is nothing a user can do about it anyway, and
-     it does not seem to matter.  */
-#if 0
-  if (firstTime && [[NSInputManager currentInputManager]
-                     wantsToDelayTextChangeNotifications] == NO)
-    fprintf (stderr,
-          "Emacs: WARNING: TextInput mgr wants marked text to be 
permanent!\n");
-#endif
-  firstTime = NO;
-#endif
   if (NS_KEYLOG && !processingCompose)
     fprintf (stderr, "keyDown: Begin compose sequence.\n");
 
@@ -6160,8 +6265,10 @@ if (cols > 0 && rows > 0)
 
   [win setAcceptsMouseMovedEvents: YES];
   [win setDelegate: self];
+#if !defined (NS_IMPL_COCOA) || \
+  MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_9
   [win useOptimizedDrawing: YES];
-
+#endif
   sz.width = frame_resize_pixelwise ? 1 : FRAME_COLUMN_WIDTH (f);
   sz.height = frame_resize_pixelwise ? 1 : FRAME_LINE_HEIGHT (f);
   [win setResizeIncrements: sz];
@@ -6222,8 +6329,10 @@ if (cols > 0 && rows > 0)
   if ([col alphaComponent] != (EmacsCGFloat) 1.0)
     [win setOpaque: NO];
 
+#if !defined (NS_IMPL_COCOA) || \
+  MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_9
   [self allocateGState];
-
+#endif
   [NSApp registerServicesMenuSendTypes: ns_send_types
                            returnTypes: nil];
 
@@ -6278,7 +6387,7 @@ if (cols > 0 && rows > 0)
       }
   else if (next_maximized == FULLSCREEN_HEIGHT
       || (next_maximized == -1
-          && abs (defaultFrame.size.height - result.size.height)
+          && abs ((int)(defaultFrame.size.height - result.size.height))
           > FRAME_LINE_HEIGHT (emacsframe)))
     {
       /* first click */
@@ -6301,7 +6410,7 @@ if (cols > 0 && rows > 0)
     }
   else if (next_maximized == FULLSCREEN_MAXIMIZED
            || (next_maximized == -1
-               && abs (defaultFrame.size.width - result.size.width)
+               && abs ((int)(defaultFrame.size.width - result.size.width))
                > FRAME_COLUMN_WIDTH (emacsframe)))
     {
       result = defaultFrame;  /* second click */
@@ -6548,7 +6657,10 @@ if (cols > 0 && rows > 0)
       [fw setTitle:[w title]];
       [fw setDelegate:self];
       [fw setAcceptsMouseMovedEvents: YES];
+#if !defined (NS_IMPL_COCOA) || \
+  MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_9
       [fw useOptimizedDrawing: YES];
+#endif
       [fw setResizeIncrements: sz];
       [fw setBackgroundColor: col];
       if ([col alphaComponent] != (EmacsCGFloat) 1.0)
@@ -6791,7 +6903,7 @@ if (cols > 0 && rows > 0)
 /* NSDraggingDestination protocol methods.  Actually this is not really a
    protocol, but a category of Object.  O well...  */
 
--(NSUInteger) draggingEntered: (id <NSDraggingInfo>) sender
+-(NSDragOperation) draggingEntered: (id <NSDraggingInfo>) sender
 {
   NSTRACE (draggingEntered);
   return NSDragOperationGeneric;
@@ -7076,7 +7188,6 @@ if (cols > 0 && rows > 0)
      one screen, we want to constrain.  Other times not.  */
   NSArray *screens = [NSScreen screens];
   NSUInteger nr_screens = [screens count], nr_eff_screens = 0, i;
-  struct frame *f = ((EmacsView *)[self delegate])->emacsframe;
   NSTRACE (constrainFrameRect);
   NSTRACE_RECT ("input", frameRect);
 
@@ -7172,7 +7283,15 @@ if (cols > 0 && rows > 0)
 {
   /* TODO: if we want to allow variable widths, this is the place to do it,
            however neither GNUstep nor Cocoa support it very well */
-  return [NSScroller scrollerWidth];
+  CGFloat r;
+#if !defined (NS_IMPL_COCOA) || \
+  MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
+  r = [NSScroller scrollerWidth];
+#else
+  r = [NSScroller scrollerWidthForControlSize: NSRegularControlSize
+                                scrollerStyle: NSScrollerStyleLegacy];
+#endif
+  return r;
 }
 
 
diff --git a/src/process.c b/src/process.c
index 3e04cb7..ce78d81 100644
--- a/src/process.c
+++ b/src/process.c
@@ -136,8 +136,8 @@ extern int sys_select (int, fd_set *, fd_set *, fd_set *,
 
 /* Work around GCC 4.7.0 bug with strict overflow checking; see
    <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52904>.
-   These lines can be removed once the GCC bug is fixed.  */
-#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
+   This bug appears to be fixed in GCC 5.1, so don't work around it there.  */
+#if __GNUC__ == 4 && __GNUC_MINOR__ >= 3
 # pragma GCC diagnostic ignored "-Wstrict-overflow"
 #endif
 
diff --git a/src/syntax.c b/src/syntax.c
index 2f82156..1695815 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -186,7 +186,7 @@ static bool in_classes (int, Lisp_Object);
 static void
 bset_syntax_table (struct buffer *b, Lisp_Object val)
 {
-  b->INTERNAL_FIELD (syntax_table) = val;
+  b->syntax_table_ = val;
 }
 
 /* Whether the syntax of the character C has the prefix flag set.  */
diff --git a/src/window.c b/src/window.c
index 0fcf82d..b828166 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1748,7 +1748,11 @@ if it isn't already recorded.  */)
          || b->clip_changed
          || b->prevent_redisplay_optimizations_p
          || window_outdated (w))
-      && !noninteractive)
+      /* Don't call display routines if we didn't yet create any real
+        frames, because the glyph matrices are not yet allocated in
+        that case.  This could happen in some code that runs in the
+        daemon during initialization (e.g., see bug#20565).  */
+      && !(noninteractive || FRAME_INITIAL_P (WINDOW_XFRAME (w))))
     {
       struct text_pos startp;
       struct it it;
diff --git a/src/xdisp.c b/src/xdisp.c
index 5a27adc..c2f0b74 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13359,6 +13359,13 @@ redisplay_internal (void)
          if (f->fonts_changed)
            {
              adjust_frame_glyphs (f);
+             /* Disable all redisplay optimizations for this frame.
+                This is because adjust_frame_glyphs resets the
+                enabled_p flag for all glyph rows of all windows, so
+                many optimizations will fail anyway, and some might
+                fail to test that flag and do bogus things as
+                result.  */
+             SET_FRAME_GARBAGED (f);
              f->fonts_changed = false;
            }
          /* If cursor type has been changed on the frame
@@ -13753,6 +13760,10 @@ redisplay_internal (void)
                  if (f->fonts_changed)
                    {
                      adjust_frame_glyphs (f);
+                     /* Disable all redisplay optimizations for this
+                        frame.  For the reasons, see the comment near
+                        the previous call to adjust_frame_glyphs above.  */
+                     SET_FRAME_GARBAGED (f);
                      f->fonts_changed = false;
                      goto retry_frame;
                    }
diff --git a/src/xterm.c b/src/xterm.c
index 3d3e0a7..8f595c8 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -263,7 +263,7 @@ static int x_dispatch_event (XEvent *, Display *);
 #endif
 /* Don't declare this _Noreturn because we want no
    interference with debugging failing X calls.  */
-static void x_connection_closed (Display *, const char *);
+static void x_connection_closed (Display *, const char *, bool);
 static void x_wm_set_window_state (struct frame *, int);
 static void x_wm_set_icon_pixmap (struct frame *, ptrdiff_t);
 static void x_initialize (void);
@@ -3664,7 +3664,9 @@ x_draw_glyph_string (struct glyph_string *s)
 static void
 x_shift_glyphs_for_insert (struct frame *f, int x, int y, int width, int 
height, int shift_by)
 {
-  x_free_cr_resources (f);
+/* Never called on a GUI frame, see
+   http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00456.html
+*/
   XCopyArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), FRAME_X_WINDOW (f),
             f->output_data.x->normal_gc,
             x, y, width, height,
@@ -9249,7 +9251,7 @@ static char *error_msg;
    the text of an error message that lead to the connection loss.  */
 
 static void
-x_connection_closed (Display *dpy, const char *error_message)
+x_connection_closed (Display *dpy, const char *error_message, bool ioerror)
 {
   struct x_display_info *dpyinfo = x_display_info_for_display (dpy);
   Lisp_Object frame, tail;
@@ -9268,6 +9270,7 @@ x_connection_closed (Display *dpy, const char 
*error_message)
       dpyinfo->reference_count++;
       dpyinfo->terminal->reference_count++;
     }
+  if (ioerror) dpyinfo->display = 0;
 
   /* First delete frames whose mini-buffers are on frames
      that are on the dead display.  */
@@ -9405,7 +9408,7 @@ x_error_quitter (Display *display, XErrorEvent *event)
   XGetErrorText (display, event->error_code, buf, sizeof (buf));
   sprintf (buf1, "X protocol error: %s on protocol request %d",
           buf, event->request_code);
-  x_connection_closed (display, buf1);
+  x_connection_closed (display, buf1, false);
 }
 
 
@@ -9420,7 +9423,7 @@ x_io_error_quitter (Display *display)
 
   snprintf (buf, sizeof buf, "Connection lost to X server `%s'",
            DisplayString (display));
-  x_connection_closed (display, buf);
+  x_connection_closed (display, buf, true);
   return 0;
 }
 
@@ -12251,7 +12254,7 @@ static struct redisplay_interface x_redisplay_interface 
=
     x_draw_window_cursor,
     x_draw_vertical_window_border,
     x_draw_window_divider,
-    x_shift_glyphs_for_insert,
+    x_shift_glyphs_for_insert, /* Never called, se comment in function.  */
     x_show_hourglass,
     x_hide_hourglass
   };
diff --git a/test/automated/cl-generic-tests.el 
b/test/automated/cl-generic-tests.el
index 5194802..a6035d1 100644
--- a/test/automated/cl-generic-tests.el
+++ b/test/automated/cl-generic-tests.el
@@ -179,5 +179,15 @@
     (cl-list* "quatre" (cl-next-method-p) (cl-call-next-method)))
   (should (equal (cl--generic-1 4 5) '("quatre" t 4 5 nil))))
 
+(ert-deftest sm-generic-test-12-context ()
+  (cl-defgeneric cl--generic-1 ())
+  (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql t)))   'is-t)
+  (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql nil))) 'is-nil)
+  (cl-defmethod cl--generic-1 () 'other)
+  (should (equal (list (let ((overwrite-mode t))   (cl--generic-1))
+                       (let ((overwrite-mode nil)) (cl--generic-1))
+                       (let ((overwrite-mode 1))   (cl--generic-1)))
+                 '(is-t is-nil other))))
+
 (provide 'cl-generic-tests)
 ;;; cl-generic-tests.el ends here
diff --git a/test/automated/cl-lib-tests.el b/test/automated/cl-lib-tests.el
index ce0e591..1bdc6d7 100644
--- a/test/automated/cl-lib-tests.el
+++ b/test/automated/cl-lib-tests.el
@@ -422,6 +422,47 @@
     ;; should return a copy
     (should-not (eq (cl-ldiff l '()) l))))
 
+(ert-deftest cl-lib-adjoin-test ()
+  (let ((nums '(1 2))
+        (myfn-p '=))
+    ;; add non-existing item to the front
+    (should (equal '(3 1 2) (cl-adjoin 3 nums)))
+    ;; just add - don't copy rest
+    (should (eq nums (cdr (cl-adjoin 3 nums))))
+    ;; add only when not already there
+    (should (eq nums (cl-adjoin 2 nums)))
+    (should (equal '(2 1 (2)) (cl-adjoin 2 '(1 (2)))))
+    ;; default test function is eql
+    (should (equal '(1.0 1 2) (cl-adjoin 1.0 nums)))
+    ;; own :test function - returns true if match
+    (should (equal '(1.0 1 2) (cl-adjoin 1.0 nums :test nil))) ;defaults to eql
+    (should (eq nums (cl-adjoin 2 nums :test myfn-p))) ;match
+    (should (equal '(3 1 2) (cl-adjoin 3 nums :test myfn-p))) ;no match
+    ;; own :test-not function - returns false if match
+    (should (equal '(1.0 1 2) (cl-adjoin 1.0 nums :test-not nil))) ;defaults 
to eql
+    (should (equal '(2 2) (cl-adjoin 2 '(2) :test-not myfn-p))) ; no match
+    (should (eq nums (cl-adjoin 2 nums :test-not myfn-p))) ; 1 matches
+    (should (eq nums (cl-adjoin 3 nums :test-not myfn-p))) ; 1 and 2 matches
+
+    ;; according to CLtL2 passing both :test and :test-not should signal error
+    ;;(should-error (cl-adjoin 3 nums :test 'myfn-p :test-not myfn-p))
+
+    ;; own :key fn
+    (should (eq nums (cl-adjoin 3 nums :key (lambda (x) (if (cl-evenp x) (1+ 
x) x)))))
+    (should (equal '(3 1 2) (cl-adjoin 3 nums :key (lambda (x) (if (cl-evenp 
x) (+ 2 x) x)))))
+
+    ;; convert using :key, then compare with :test
+    (should (eq nums (cl-adjoin 1 nums :key 'int-to-string :test 'string=)))
+    (should (equal '(3 1 2) (cl-adjoin 3 nums :key 'int-to-string :test 
'string=)))
+    (should-error (cl-adjoin 3 nums :key 'int-to-string :test myfn-p)
+                  :type 'wrong-type-argument)
+
+    ;; convert using :key, then compare with :test-not
+    (should (eq nums (cl-adjoin 3 nums :key 'int-to-string :test-not 
'string=)))
+    (should (equal '(1 1) (cl-adjoin 1 '(1) :key 'int-to-string :test-not 
'string=)))
+    (should-error (cl-adjoin 1 nums :key 'int-to-string :test-not myfn-p)
+                  :type 'wrong-type-argument)))
+
 (ert-deftest cl-parse-integer ()
   (should-error (cl-parse-integer "abc"))
   (should (null (cl-parse-integer "abc" :junk-allowed t)))
diff --git a/test/automated/elisp-mode-tests.el 
b/test/automated/elisp-mode-tests.el
new file mode 100644
index 0000000..7af6dfc
--- /dev/null
+++ b/test/automated/elisp-mode-tests.el
@@ -0,0 +1,129 @@
+;;; elisp-mode-tests.el --- Tests for emacs-lisp-mode  -*- lexical-binding: t; 
-*-
+
+;; Copyright (C) 2015 Free Software Foundation, Inc.
+
+;; Author: Dmitry Gutov <address@hidden>
+
+;; 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 <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'xref)
+
+;;; Completion
+
+(defun elisp--test-completions ()
+  (let ((data (elisp-completion-at-point)))
+    (all-completions (buffer-substring (nth 0 data) (nth 1 data))
+                     (nth 2 data)
+                     (plist-get (nthcdr 3 data) :predicate))))
+
+(ert-deftest elisp-completes-functions ()
+  (with-temp-buffer
+    (emacs-lisp-mode)
+    (insert "(ba")
+    (let ((comps (elisp--test-completions)))
+      (should (member "backup-buffer" comps))
+      (should-not (member "backup-inhibited" comps)))))
+
+(ert-deftest elisp-completes-variables ()
+  (with-temp-buffer
+    (emacs-lisp-mode)
+    (insert "(foo ba")
+    (let ((comps (elisp--test-completions)))
+      (should (member "backup-inhibited" comps))
+      (should-not (member "backup-buffer" comps)))))
+
+(ert-deftest elisp-completes-anything-quoted ()
+  (dolist (text '("`(foo ba" "(foo 'ba"
+                  "`(,foo ba" "`,(foo `ba"
+                  "'(foo (ba"))
+    (with-temp-buffer
+      (emacs-lisp-mode)
+      (insert text)
+      (let ((comps (elisp--test-completions)))
+        (should (member "backup-inhibited" comps))
+        (should (member "backup-buffer" comps))
+        (should (member "backup" comps))))))
+
+(ert-deftest elisp-completes-variables-unquoted ()
+  (dolist (text '("`(foo ,ba" "`(,(foo ba" "`(,ba"))
+    (with-temp-buffer
+      (emacs-lisp-mode)
+      (insert text)
+      (let ((comps (elisp--test-completions)))
+        (should (member "backup-inhibited" comps))
+        (should-not (member "backup-buffer" comps))))))
+
+(ert-deftest elisp-completes-functions-in-special-macros ()
+  (dolist (text '("(declare-function ba" "(cl-callf2 ba"))
+    (with-temp-buffer
+      (emacs-lisp-mode)
+      (insert text)
+      (let ((comps (elisp--test-completions)))
+        (should (member "backup-buffer" comps))
+        (should-not (member "backup-inhibited" comps))))))
+
+(ert-deftest elisp-completes-local-variables ()
+  (with-temp-buffer
+    (emacs-lisp-mode)
+    (insert "(let ((bar 1) baz) (foo ba")
+    (let ((comps (elisp--test-completions)))
+      (should (member "backup-inhibited" comps))
+      (should (member "bar" comps))
+      (should (member "baz" comps)))))
+
+(ert-deftest elisp-completest-variables-in-let-bindings ()
+  (dolist (text '("(let (ba" "(let* ((ba"))
+    (with-temp-buffer
+      (emacs-lisp-mode)
+      (insert text)
+      (let ((comps (elisp--test-completions)))
+        (should (member "backup-inhibited" comps))
+        (should-not (member "backup-buffer" comps))))))
+
+(ert-deftest elisp-completes-functions-after-let-bindings ()
+  (with-temp-buffer
+    (emacs-lisp-mode)
+    (insert "(let ((bar 1) (baz 2)) (ba")
+    (let ((comps (elisp--test-completions)))
+      (should (member "backup-buffer" comps))
+      (should-not (member "backup-inhibited" comps)))))
+
+;;; Navigation
+
+(ert-deftest elisp-xref-finds-both-function-and-variable ()
+  ;; "system-name" is both: a variable and a function
+  (let ((defs (elisp-xref-find 'definitions "system-name")))
+    (should (= (length defs) 2))
+    (should (string= (xref--xref-description (nth 0 defs))
+                     "(defun system-name)"))
+    (should (string= (xref--xref-description (nth 1 defs))
+                     "(defvar system-name)")))
+  ;; It's a minor mode, but the variable is defined in buffer.c
+  (let ((defs (elisp-xref-find 'definitions "abbrev-mode")))
+    (should (= (length defs) 2))))
+
+(ert-deftest elisp-xref-finds-only-function-for-minor-mode ()
+  ;; Both variable and function are defined in the same place.
+  (let ((defs (elisp-xref-find 'definitions "visible-mode")))
+    (should (= (length defs) 1))
+    (should (string= (xref--xref-description (nth 0 defs))
+                     "(defun visible-mode)"))))
+
+(provide 'elisp-mode-tests)
+;;; elisp-mode-tests.el ends here
diff --git a/test/automated/package-test.el b/test/automated/package-test.el
index 4385ee0..ed2e3cf 100644
--- a/test/automated/package-test.el
+++ b/test/automated/package-test.el
@@ -343,6 +343,8 @@ Must called from within a `tar-mode' buffer."
 (ert-deftest package-test-update-archives-async ()
   "Test updating package archives asynchronously."
   (skip-unless (executable-find "python2"))
+  ;; For some reason this test doesn't work reliably on hydra.nixos.org.
+  (skip-unless (not (getenv "NIX_STORE")))
   (with-package-test (:basedir
                       package-test-data-dir
                       :location "http://0.0.0.0:8000/";)
@@ -361,10 +363,13 @@ Must called from within a `tar-mode' buffer."
                (while package--downloads-in-progress
                  (accept-process-output nil 1))
                nil))
+            ;; If the server process died, there's some non-Emacs problem.
+            ;; Eg maybe the port was already in use.
+            (skip-unless (process-live-p process))
             (goto-char (point-min))
             (should
              (search-forward-regexp "^ +simple-single" nil t)))
-        (kill-process process)))))
+        (if (process-live-p process) (kill-process process))))))
 
 (ert-deftest package-test-describe-package ()
   "Test displaying help for a package."
diff --git a/test/automated/seq-tests.el b/test/automated/seq-tests.el
index 7f6e06c..ab46eb8 100644
--- a/test/automated/seq-tests.el
+++ b/test/automated/seq-tests.el
@@ -276,5 +276,26 @@ Evaluate BODY for each created sequence.
         (v2 [2 4 6]))
     (should (seq-empty-p (seq-difference v1 v2)))))
 
+(ert-deftest test-seq-let ()
+  (with-test-sequences (seq '(1 2 3 4))
+    (seq-let (a b c d e) seq
+      (should (= a 1))
+      (should (= b 2))
+      (should (= c 3))
+      (should (= d 4))
+      (should (null e)))
+    (seq-let (a b &rest others) seq
+      (should (= a 1))
+      (should (= b 2))
+      (should (same-contents-p others (seq-drop seq 2)))))
+  (let ((seq '(1 (2 (3 (4))))))
+    (seq-let (_ (_ (_ (a)))) seq
+      (should (= a 4))))
+  (let (seq)
+    (seq-let (a b c) seq
+      (should (null a))
+      (should (null b))
+      (should (null c)))))
+
 (provide 'seq-tests)
 ;;; seq-tests.el ends here
diff --git a/test/etags/CTAGS.good b/test/etags/CTAGS.good
new file mode 100644
index 0000000..1a885cc
--- /dev/null
+++ b/test/etags/CTAGS.good
@@ -0,0 +1,4530 @@
+#a-defer-word  forth-src/test-forth.fth        /^defer #a-defer-word$/
+#some-storage  forth-src/test-forth.fth        /^2000 buffer: #some-storage$/
+$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='--no-members' 
${LATEST}ediff$/
+$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='--declarations 
--no-members' $/
+$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='--members' 
${LATEST}ediff$/
+$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='address@hidden 
--no-member/
+$      make-src/Makefile       /^      @-$(MAKE) OPTIONS='nonexistent 
--members --declar/
+$      make-src/Makefile       /^      @-$(MAKE) ${LATEST}cdiff$/
+$      make-src/Makefile       /^      $(CC) ${FASTCFLAGS} -c $?$/
+$      make-src/Makefile       /^      $(CC) ${FASTCFLAGS} -c $?$/
+$      make-src/Makefile       /^      $(CC) ${FASTCFLAGS} -c $?$/
+$      make-src/Makefile       /^      $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) 
-o etags e/
+$      make-src/Makefile       /^      $(CC) $(CFLAGS) $(CPPFLAGS) -DCTAGS 
$(LDFLAGS) -o/
+$$i    make-src/Makefile       140
+$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
+($_,$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) ( -- )$/
++      tex-src/texinfo.tex     /^\\def+{{\\tt \\char 43}}$/
+.PRECIOUS      Makefile        /^.PRECIOUS: ETAGS.good CTAGS.good$/
+/.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
+/.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
+/.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
+/.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 /
+/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 /
+::cat  cp-src/c.C      126
+::dog  cp-src/c.C      126
+::f    cp-src/c.C      /^     void f() {}$/
+::teats        cp-src/c.C      127
+:a-forth-dictionary-entry      forth-src/test-forth.fth        /^create 
:a-forth-dictionary-entry$/
+<      tex-src/texinfo.tex     /^\\def<{{\\tt \\less}}$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\numberedsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = \\numberedsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\numberedsubsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\appendixsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = \\appendixsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\appendixsubsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\unnumberedsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = 
\\unnumberedsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\unnumberedsubsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\section = \\numberedsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsection = \\numberedsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\numberedsubsubsec$/
+=      tex-src/texinfo.tex     /^\\global\\def={{\\tt \\char 61}}}$/
+=/f    ada-src/etags-test-for.ada      /^   function "=" (L, R : 
System.Address) return Boo/
+=\indexdummyfont       tex-src/texinfo.tex     /^\\let\\cite=\\indexdummyfont$/
+=\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$/
+=\relax        tex-src/texinfo.tex     /^\\let\\appendix=\\relax$/
+=\smartitalic  tex-src/texinfo.tex     /^\\let\\cite=\\smartitalic$/
+>      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$/
address@hidden  make-src/Makefile       /^      @$(MAKE) OPTIONS='--no-members' 
${LATEST}ediff$/
address@hidden  make-src/Makefile       /^      @$(MAKE) 
OPTIONS='--declarations --no-members' ${/
address@hidden  make-src/Makefile       /^      @$(MAKE) OPTIONS='--members' 
${LATEST}ediff$/
address@hidden  make-src/Makefile       /^      @$(MAKE) 
OPTIONS='address@hidden --no-members/
address@hidden  make-src/Makefile       /^      @$(MAKE) OPTIONS='nonexistent 
--members --declara/
address@hidden  make-src/Makefile       /^      @$(MAKE) ${LATEST}cdiff$/
address@hidden  make-src/Makefile       /^      @$(MAKE) etags 
"CPPFLAGS=-UVERSION"$/
address@hidden  make-src/Makefile       /^      @$(MAKE) CHECKOBJS= CHECKFLAGS= 
etags "CFLAGS=-an/
address@hidden  make-src/Makefile       /^      @$(MAKE) CHECKOBJS= CHECKFLAGS= 
ctags "CFLAGS=-an/
address@hidden  make-src/Makefile       /^      @$(MAKE) etags CHECKOBJS= 
CHECKFLAGS= REGEXOBJS= /
+A      c.c     162
+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/c.C      117
+A      cp-src/fail.C   7
+A      cp-src/fail.C   23
+A::A   cp-src/c.C      /^void A::A() {}$/
+A::B   cp-src/c.C      56
+A::B   cp-src/fail.C   8
+A::B   cp-src/fail.C   24
+A::B::C        cp-src/fail.C   9
+A::B::C        cp-src/fail.C   25
+A::B::C::C     cp-src/fail.C   /^                         C(int i) {x = i;}$/
+A::B::C::operator int  cp-src/fail.C   /^                         operator 
int() const {return x;}$/
+A::B::C::x     cp-src/fail.C   10
+A::B::T        cp-src/fail.C   14
+A::B::f        cp-src/fail.C   /^              int f() { return 5; }$/
+A::B::f        cp-src/fail.C   /^int A::B::f() { return 2; }$/
+A::T2  cp-src/fail.C   16
+A::colori      cp-src/c.C      40
+A::giallo      cp-src/c.C      40
+A::operator+   cp-src/c.C      /^const A& A::operator+(const A&) { }$/
+A::operator+   cp-src/c.C      /^  A operator+(A& a) {};$/
+A::rosso       cp-src/c.C      40
+A::verde       cp-src/c.C      40
+A::~A  cp-src/c.C      /^A::~A() {}$/
+ADASRC Makefile        /^ADASRC=$(addprefix .\/ada-src\/,etags-test-for.ada 2/
+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   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   Makefile        /^ASRC=$(addprefix .\/a-src\/,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
+AT::t  cp-src/c.C      52
+AU     cp-src/c.C      53
+AU::x  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$/
+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       /address@hidden 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      54
+B      cp-src/c.C      74
+B      cp-src/c.C      122
+B::B   cp-src/c.C      /^void B::B() {}$/
+B::f   cp-src/c.C      /^class B<int> { void f() {} };$/
+B::~B  cp-src/c.C      /^    ~B() {};$/
+BE_Node        cp-src/c.C      77
+BE_Node::BE_Node       cp-src/c.C      /^void BE_Node::BE_Node() {}$/
+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
+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
+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)$/
+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    perl-src/kai-test.pl    /^package Bar;$/
+Bar::f4        perl-src/kai-test.pl    /^sub Bar::f4 {$/
+Bar::f5        perl-src/kai-test.pl    /^sub f5 {$/
+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      129
+Boo::Boo       cp-src/c.C      /^    Boo(int _i, int _a, int _b) : i(_i), 
a(_a), b(/
+Boo::Boo       cp-src/c.C      /^Boo::Boo(Boo) :$/
+Boo::a cp-src/c.C      132
+Boo::animals   cp-src/c.C      130
+Boo::b cp-src/c.C      132
+Boo::cat       cp-src/c.C      130
+Boo::cow       cp-src/c.C      131
+Boo::dog       cp-src/c.C      130
+Boo::foo       cp-src/c.C      /^    foo() {$/
+Boo::i cp-src/c.C      132
+Boo::treats    cp-src/c.C      131
+ButtonBar      pyt-src/server.py       /^def ButtonBar(frame, legend, ref, 
alternatives, co/
+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       88
+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_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 cccp.y  87
+CHAR_TYPE_SIZE y-src/cccp.y    87
+CHECKEROPTS    make-src/Makefile       92
+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  572
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h  579
+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_C       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_ABS_R       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_C       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/
+CK_REL_R       parse.y /^#define CK_REL_R(x)   if(   ((x)>0 && MAX_ROW-(x)<cu/
+CMultiChannelCSC19_3D  cp-src/c.C      2
+CMultiChannelCSC19_3D::cscInitTime     cp-src/c.C      7
+CMultiChannelCSC19_3D::cscSegmentationTime     cp-src/c.C      8
+CMultiChannelCSC19_3D::execute cp-src/c.C      /^        void 
execute(CPluginCSCState& p, int w, in/
+CMultiChannelCSC19_3D::ipc3dCSC19      cp-src/c.C      6
+CMultiChannelCSC19_3D::mcCSC   cp-src/c.C      6
+CMultiChannelCSC19_3D::outputTime      cp-src/c.C      9
+CMultiChannelCSC19_3D::setup   cp-src/c.C      5
+CNL    c-src/etags.c   /^#define CNL()                                         
                \\$/
+CNL_SAVE_DEFINEDEF     c-src/etags.c   /^#define CNL_SAVE_DEFINEDEF()          
                                \\$/
+COLORS cp-src/screen.hpp       11
+COLORS::BLACK  cp-src/screen.hpp       12
+COLORS::BLUE   cp-src/screen.hpp       13
+COLORS::BROWN  cp-src/screen.hpp       18
+COLORS::CYAN   cp-src/screen.hpp       15
+COLORS::DARKGRAY       cp-src/screen.hpp       20
+COLORS::GREEN  cp-src/screen.hpp       14
+COLORS::LIGHTBLUE      cp-src/screen.hpp       21
+COLORS::LIGHTCYAN      cp-src/screen.hpp       23
+COLORS::LIGHTGRAY      cp-src/screen.hpp       19
+COLORS::LIGHTGREEN     cp-src/screen.hpp       22
+COLORS::LIGHTMAGENTA   cp-src/screen.hpp       25
+COLORS::LIGHTRED       cp-src/screen.hpp       24
+COLORS::MAGENTA        cp-src/screen.hpp       17
+COLORS::RED    cp-src/screen.hpp       16
+COLORS::WHITE  cp-src/screen.hpp       27
+COLORS::YELLOW cp-src/screen.hpp       26
+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       49
+CPSRC  Makefile        /^CPSRC=$(addprefix .\/cp-src\/,c.C burton.cpp burton./
+CSRC   Makefile        /^CSRC=$(addprefix .\/c-src\/,abbrev.c .\/\/c.c 
torture./
+CTAGS  Makefile        /^CTAGS: FRC ${infiles}$/
+CTAGS  c-src/etags.c   146
+CTAGS  c-src/etags.c   147
+CTAGS  c-src/etags.c   149
+CTAGS_PROG     Makefile        /^CTAGS_PROG=..\/..\/lib-src\/ctags$/
+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;/
+Cjava_entries  c-src/etags.c   /^Cjava_entries (FILE *inf)$/
+Cjava_help     c-src/etags.c   551
+Cjava_suffixes c-src/etags.c   549
+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       70
+CommentAD      php-src/lce_functions.php       /^      function CommentAD($/
+ConcatT        pas-src/common.pas      /^function ConcatT;(*($/
+Concept Index  tex-src/gzip.texi       /address@hidden 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):$/
+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       /address@hidden 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
+D      cp-src/fail.C   41
+D::D   cp-src/fail.C   /^              D() : ::A::T2::T(97), x(1066) {}$/
+D::x   cp-src/fail.C   44
+DAEMON_RUNNING c-src/emacs/src/lisp.h  4258
+DAEMON_RUNNING c-src/emacs/src/lisp.h  4262
+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_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  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
+Date::minus    cp-src/functions.cpp    /^void Date::minus ( int days , int 
month , int year/
+Date::operator ++      cp-src/functions.cpp    /^Date & Date::operator ++ ( 
void ){$/
+Date::operator +=      cp-src/functions.cpp    /^Date & Date::operator += ( 
int days ){$/
+Date::operator -       cp-src/functions.cpp    /^int Date::operator - ( Date d 
){$/
+Date::operator --      cp-src/functions.cpp    /^Date & Date::operator -- ( 
void ){$/
+Date::operator -=      cp-src/functions.cpp    /^Date & Date::operator -= ( 
int days ){$/
+Date::operator <       cp-src/functions.cpp    /^int Date::operator < ( Date d 
) {$/
+Date::operator =       cp-src/functions.cpp    /^Date & Date::operator = ( 
Date d ){$/
+Date::operator ==      cp-src/functions.cpp    /^int Date::operator == ( Date 
d ) {$/
+Date::operator >       cp-src/functions.cpp    /^int Date::operator > ( Date d 
) {$/
+Date::plus     cp-src/functions.cpp    /^void Date::plus ( int days , int 
month , int year /
+Date::setDate  cp-src/functions.cpp    /^void Date::setDate ( int d , int m , 
int y ){$/
+Date::shift    cp-src/functions.cpp    /^void Date::shift ( void ){\/\/Shift 
this date to pre/
+Debug  cp-src/functions.cpp    /^void Debug ( int lineno, int level, char* 
func , c/
+DisposeANameList       pas-src/common.pas      /^procedure DisposeANameList( $/
+DisposeNameList        pas-src/common.pas      /^procedure DisposeNameList;$/
+ELEM_I c-src/h.h       3
+ELSRC  Makefile        /^ELSRC=$(addprefix .\/el-src\/,TAGTEST.EL 
emacs\/lisp\//
+EMACS_INT      c-src/emacs/src/lisp.h  91
+EMACS_INT      c-src/emacs/src/lisp.h  96
+EMACS_INT      c-src/emacs/src/lisp.h  103
+EMACS_INT_MAX  c-src/emacs/src/lisp.h  93
+EMACS_INT_MAX  c-src/emacs/src/lisp.h  98
+EMACS_INT_MAX  c-src/emacs/src/lisp.h  105
+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  92
+EMACS_UINT     c-src/emacs/src/lisp.h  97
+EMACS_UINT     c-src/emacs/src/lisp.h  104
+ENTRY  c-src/sysdep.h  /^#define       ENTRY(name)                             
                              \\$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^#define ENUM_BF(TYPE) unsigned int$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^#define ENUM_BF(TYPE) enum TYPE$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^  ENUM_BF (symbol_redirect) redirect 
: 3;$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^  ENUM_BF (Lisp_Misc_Type) type : 16; 
        \/* = Lisp_M/
+ENUM_BF        c-src/emacs/src/lisp.h  /^  ENUM_BF (Lisp_Misc_Type) type : 16; 
        \/* = Lisp_M/
+ENUM_BF        c-src/emacs/src/lisp.h  /^    ENUM_BF (Lisp_Misc_Type) type : 
16;       \/* = Lisp_/
+ENUM_BF        c-src/emacs/src/lisp.h  /^    ENUM_BF (Lisp_Misc_Type) type : 
16;       \/* = Lisp_/
+ENUM_BF        c-src/emacs/src/lisp.h  /^    ENUM_BF (Lisp_Misc_Type) type : 
16;       \/* = Lisp_/
+ENUM_BF        c-src/emacs/src/lisp.h  /^    ENUM_BF (specbind_tag) kind : 
CHAR_BIT;$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^      ENUM_BF (specbind_tag) kind : 
CHAR_BIT;$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^      ENUM_BF (specbind_tag) kind : 
CHAR_BIT;$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^      ENUM_BF (specbind_tag) kind : 
CHAR_BIT;$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^      ENUM_BF (specbind_tag) kind : 
CHAR_BIT;$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^      ENUM_BF (specbind_tag) kind : 
CHAR_BIT;$/
+ENUM_BF        c-src/emacs/src/lisp.h  /^      ENUM_BF (specbind_tag) kind : 
CHAR_BIT;$/
+EQ     c-src/emacs/src/lisp.h  /^# define EQ(x, y) lisp_h_EQ (x, y)$/
+EQUAL  y-src/cccp.c    12
+ERLSRC Makefile        /^ERLSRC=$(addprefix .\/erl-src\/,gs_dialog.erl)$/
+ERROR  y-src/parse.y   303
+ERROR  parse.y 303
+ERROR  y-src/cccp.c    9
+ETAGS  Makefile        /^ETAGS: FRC ${infiles}$/
+ETAGS_PROG     Makefile        /^ETAGS_PROG=..\/..\/lib-src\/etags$/
+EXFUN  c-src/emacs/src/lisp.h  /^#define EXFUN(fnname, maxargs) \\$/
+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       /address@hidden 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       55
+FILTER make-src/Makefile       58
+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       Makefile        /^FORTHSRC=$(addprefix 
.\/forth-src\/,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    Makefile        /^FRC:;$/
+FREEFLOOD      c-src/emacs/src/gmalloc.c       1858
+FSRC   Makefile        /^FSRC=$(addprefix .\/f-src\/,entry.for entry.strange_/
+FUN0   y-src/parse.y   /^yylex FUN0()$/
+FUN0   parse.y /^yylex FUN0()$/
+FUN1   y-src/parse.y   /^yyerror FUN1(char *, s)$/
+FUN1   y-src/parse.y   /^str_to_col FUN1(char **,str)$/
+FUN1   parse.y /^yyerror FUN1(char *, s)$/
+FUN1   parse.y /^str_to_col FUN1(char **,str)$/
+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 */
+FUN2   parse.y /^make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)$/
+FUN2   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)$/
+Fails_t        c-src/h.h       5
+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/
+First100Chars  pas-src/common.pas      /^procedure First100Chars; (*($/
+Foo    perl-src/kai-test.pl    /^package Foo;$/
+Foo::Bar       perl-src/kai-test.pl    /^package Foo::Bar;$/
+Foo::Bar::f6   perl-src/kai-test.pl    /^sub f6 {$/
+Foo::f3        perl-src/kai-test.pl    /^sub f3 {$/
+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
+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(varname) ((void) gcpro1)$/
+GCPRO1 c-src/emacs/src/lisp.h  /^#define GCPRO1(a)                             
                        \\$/
+GCPRO1 c-src/emacs/src/lisp.h  /^#define GCPRO1(a)                             
                        \\$/
+GCPRO2 c-src/emacs/src/lisp.h  /^#define GCPRO2(varname1, varname2) ((void) 
gcpro2,/
+GCPRO2 c-src/emacs/src/lisp.h  /^#define GCPRO2(a, b)                          
                        \\$/
+GCPRO2 c-src/emacs/src/lisp.h  /^#define GCPRO2(a, b)                          
                        \\$/
+GCPRO3 c-src/emacs/src/lisp.h  /^#define GCPRO3(varname1, varname2, varname3) 
\\$/
+GCPRO3 c-src/emacs/src/lisp.h  /^#define GCPRO3(a, b, c)                       
                                \\$/
+GCPRO3 c-src/emacs/src/lisp.h  /^#define GCPRO3(a, b, c)                       
                                \\$/
+GCPRO4 c-src/emacs/src/lisp.h  /^#define GCPRO4(varname1, varname2, varname3, 
varna/
+GCPRO4 c-src/emacs/src/lisp.h  /^#define GCPRO4(a, b, c, d)                    
                        \\$/
+GCPRO4 c-src/emacs/src/lisp.h  /^#define GCPRO4(a, b, c, d)                    
                        \\$/
+GCPRO5 c-src/emacs/src/lisp.h  /^#define GCPRO5(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(a, b, c, d, e)                 
                        \\$/
+GCPRO6 c-src/emacs/src/lisp.h  /^#define GCPRO6(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(a, b, c, d, e, f)              
                        \\$/
+GCPRO7 c-src/emacs/src/lisp.h  /^#define GCPRO7(a, b, c, d, e, f, g) (GCPRO6 
(a, b,/
+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)           
                        \\$/
+GCTYPEBITS     c-src/emacs/src/lisp.h  67
+GCTYPEBITS     c-src/emacs/src/lisp.h  /^DEFINE_GDB_SYMBOL_BEGIN (int, 
GCTYPEBITS)$/
+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    cccp.y  56
+GENERIC_PTR    cccp.y  58
+GENERIC_PTR    y-src/cccp.y    56
+GENERIC_PTR    y-src/cccp.y    58
+GEQ    y-src/cccp.c    15
+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        Makefile        /^HTMLSRC=$(addprefix 
.\/html-src\/,softwarelibero.htm/
+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  cccp.y  91
+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       /address@hidden Invoking gzip, Advanced 
usage, Sample, Top$/
+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)/
+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       1
+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       50
+LE     y-src/parse.c   7
+LEQ    y-src/cccp.c    14
+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 (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       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 (XCONS, 
struct Lisp_Cons *, (Lisp/
+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 (SYMBOL_VAL, 
Lisp_Object, (struct/
+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 (CONSP, 
bool, (Lisp_Object x), (x/
+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_TYPE,$/
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN_VOID 
(SET_SYMBOL_VAL,$/
+LISP_MACRO_DEFUN_VOID  c-src/emacs/src/lisp.h  /^LISP_MACRO_DEFUN_VOID 
(CHECK_LIST_CONS, (Lisp_Obje/
+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/etags-test-for.ada      /^   type 
LL_Task_Procedure_Access is access procedu/
+LL_Task_Procedure_Access/t     ada-src/2ataspri.ads    /^   type 
LL_Task_Procedure_Access is access procedu/
+LL_Wrapper/p   ada-src/etags-test-for.ada      /^   procedure LL_Wrapper (T : 
TCB_Ptr);$/
+LL_Wrapper/p   ada-src/2ataspri.adb    /^   procedure LL_Wrapper (T : 
TCB_Ptr);$/
+LL_Wrapper/p   ada-src/2ataspri.adb    /^   procedure LL_Wrapper (T : TCB_Ptr) 
is$/
+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 cccp.y  95
+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    35
+LTGT   cp-src/MDiagArray2.h    39
+LTGT   cp-src/MDiagArray2.h    42
+LTGT   cp-src/MDiagArray2.h    144
+LUASRC Makefile        /^LUASRC=$(addprefix .\/lua-src\/,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  477
+Lisp_Float     c-src/emacs/src/lisp.h  2391
+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  458
+Lisp_Misc      c-src/emacs/src/lisp.h  2212
+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
+MAGICBYTE      c-src/emacs/src/gmalloc.c       1856
+MAGICFREE      c-src/emacs/src/gmalloc.c       1855
+MAGICWORD      c-src/emacs/src/gmalloc.c       1854
+MAKESRC        Makefile        /^MAKESRC=$(addprefix .\/make-src\/,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_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])/
+MAYBEREL       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    78
+MDiagArray2::MDiagArray2       cp-src/MDiagArray2.h    /^  MDiagArray2 (T *d, 
int r, int c) : DiagArray2<T>/
+MDiagArray2::MDiagArray2       cp-src/MDiagArray2.h    /^  MDiagArray2 (void) 
: DiagArray2<T> () { }$/
+MDiagArray2::MDiagArray2       cp-src/MDiagArray2.h    /^  MDiagArray2 (int r, 
int c) : DiagArray2<T> (r, c/
+MDiagArray2::MDiagArray2       cp-src/MDiagArray2.h    /^  MDiagArray2 (int r, 
int c, const T& val) : DiagA/
+MDiagArray2::MDiagArray2       cp-src/MDiagArray2.h    /^  MDiagArray2 (const 
Array<T>& a) : DiagArray2<T> /
+MDiagArray2::MDiagArray2       cp-src/MDiagArray2.h    /^  MDiagArray2 (const 
DiagArray2<T>& a) : DiagArray/
+MDiagArray2::MDiagArray2       cp-src/MDiagArray2.h    /^  MDiagArray2 (const 
MDiagArray2<T>& a) : DiagArra/
+MDiagArray2::operator =        cp-src/MDiagArray2.h    /^  MDiagArray2<T>& 
operator = (const MDiagArray2<T>/
+MDiagArray2::operator MArray2<T>       cp-src/MDiagArray2.h    /^  operator 
MArray2<T> () const$/
+MDiagArray2::~MDiagArray2      cp-src/MDiagArray2.h    /^  ~MDiagArray2 (void) 
{ }$/
+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_suffix      /^       ENTRY  MSGSEL ( TYPE )$/
+MSGSEL f-src/entry.strange     /^       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      6231
+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      6764
+Machin_T/b     ada-src/waroquiers.ada  /^  protected body Machin_T is$/
+Machin_T/t     ada-src/etags-test-for.ada      /^  protected type Machin_T is$/
+Machin_T/t     ada-src/etags-test-for.ada      /^  protected 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  cccp.y  /^main ()$/
+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;$/
+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 ()$/
+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        Makefile        /^NONSRCS=.\/f-src\/entry.strange 
.\/erl-src\/lists.erl /
+NONSRCS        make-src/Makefile       35
+NOTEQUAL       y-src/cccp.c    13
+NULL   cccp.y  51
+NULL   y-src/cccp.y    51
+NULL_PTR       cccp.y  63
+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      Makefile        /^OBJCPPSRC=$(addprefix 
.\/objcpp-src\/,SimpleCalc.H S/
+OBJCSRC        Makefile        /^OBJCSRC=$(addprefix 
.\/objc-src\/,Subprocess.h Subpr/
+OPENBUTTON     objc-src/PackInsp.m     47
+OPTIONS        Makefile        /^OPTIONS=--members --declarations 
address@hidden/
+OR     y-src/cccp.c    10
+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       /address@hidden Overview, Sample, 
Copying, Top$/
+PASSRC Makefile        /^PASSRC=$(addprefix .\/pas-src\/,common.pas)$/
+PDT    c-src/h.h       /^  Date 04 May 87 235311 PDT (Mon)$/
+PERLSRC        Makefile        /^PERLSRC=$(addprefix 
.\/perl-src\/,htlmify-cystic yag/
+PHPSRC Makefile        /^PHPSRC=$(addprefix .\/php-src\/,lce_functions.php pt/
+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       105
+POEntry        php-src/lce_functions.php       /^      function POEntry()$/
+POEntryAD      php-src/lce_functions.php       29
+PORManager     php-src/lce_functions.php       498
+PORManager     php-src/lce_functions.php       /^      function PORManager()$/
+POReader       php-src/lce_functions.php       163
+POReader       php-src/lce_functions.php       /^      function 
POReader($domain, $filename)$/
+PRINT_UNDOCUMENTED_OPTIONS_HELP        c-src/etags.c   804
+PROCESSP       c-src/emacs/src/lisp.h  /^PROCESSP (Lisp_Object a)$/
+PROLSRC        Makefile        /^PROLSRC=$(addprefix 
.\/prol-src\/,ordsets.prolog nat/
+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) protect_malloc_/
+PROTECT_MALLOC_STATE   c-src/emacs/src/gmalloc.c       /^#define 
PROTECT_MALLOC_STATE(PROT)    \/* empty *\/$/
+PRTPKG f-src/entry.for /^      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  Makefile        /^PSSRC=$(addprefix .\/ps-src\/,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 Makefile        /^PYTSRC=$(addprefix .\/pyt-src\/,server.py)$/
+PackageInspector       objc-src/PackInsp.h     /address@hidden 
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;$/
+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 is$/
+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 separate;$/
+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/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_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;$/
+Pkg1_Proc1/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc1 is$/
+Pkg1_Proc1/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc1;$/
+Pkg1_Proc1/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc1 is$/
+Pkg1_Proc2/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc2 (I : 
Integer);$/
+Pkg1_Proc2/p   ada-src/etags-test-for.ada      /^  procedure Pkg1_Proc2 (I : 
Integer) is$/
+Pkg1_Proc2/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc2 (I : 
Integer);$/
+Pkg1_Proc2/p   ada-src/waroquiers.ada  /^  procedure Pkg1_Proc2 (I : Integer) 
is$/
+PostControls   pyt-src/server.py       /^    def PostControls(self):$/
+Pre_Call_State/t       ada-src/2ataspri.ads    /^   type Pre_Call_State is new 
System.Address;$/
+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;$/
+Private_T/p    ada-src/etags-test-for.ada      /^    procedure Private_T is$/
+Private_T/p    ada-src/waroquiers.ada  /^    procedure Private_T;$/
+Private_T/p    ada-src/waroquiers.ada  /^    procedure Private_T is$/
+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       /address@hidden 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
+Qpre_abbrev_expand_hook        c-src/abbrev.c  82
+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
+REGEX  Makefile        /^REGEX=\/[ \\t]*DEFVAR_[A-Z_ \\t\\n(]+"\\([^"]+\\)"\/$/
+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.c     279
+REG_ENOSYS     c-src/emacs/src/regex.h 297
+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
+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    Makefile        /^RUN=$/
+Range  cp-src/Range.h  35
+Range::Range   cp-src/Range.h  /^  Range (void)$/
+Range::Range   cp-src/Range.h  /^  Range (const Range& r)$/
+Range::Range   cp-src/Range.h  /^  Range (double b, double l)$/
+Range::Range   cp-src/Range.h  /^  Range (double b, double l, double i)$/
+Range::base    cp-src/Range.h  /^  double base (void) const { return rng_base; 
 }$/
+Range::inc     cp-src/Range.h  /^  double inc (void) const { return rng_inc;   
}$/
+Range::limit   cp-src/Range.h  /^  double limit (void) const { return 
rng_limit; }$/
+Range::nelem   cp-src/Range.h  /^  int nelem (void) const { return rng_nelem; 
}$/
+Range::rng_base        cp-src/Range.h  79
+Range::rng_inc cp-src/Range.h  81
+Range::rng_limit       cp-src/Range.h  80
+Range::rng_nelem       cp-src/Range.h  83
+Range::set_base        cp-src/Range.h  /^  void set_base (double b) { rng_base 
= b;  }$/
+Range::set_inc cp-src/Range.h  /^  void set_inc (double i) { rng_inc = i;   }$/
+Range::set_limit       cp-src/Range.h  /^  void set_limit (double l) { 
rng_limit = l; }$/
+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/
+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_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_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      /^#define 
SINGLE_LETTER_MOD(BIT)                                \\$/
+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_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   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       /address@hidden 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 /address@hidden 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 /
+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   41
+Subprocess     objc-src/Subprocess.h   /address@hidden Subprocess:Object$/
+Subprocess(Private)    objc-src/Subprocess.m   /address@hidden 
Subprocess(Private)$/
+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$/
+T3     c.c     163
+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;$/
+TERMINALP      c-src/emacs/src/lisp.h  /^TERMINALP (Lisp_Object a)$/
+TEST   php-src/ptest.php       1
+TEXSRC Makefile        /^TEXSRC=$(addprefix .\/tex-src\/,testenv.tex gzip.tex/
+TEXTAGS        make-src/Makefile       204
+TEXTAGS        make-src/Makefile       219
+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       /address@hidden 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       /address@hidden 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  271
+USE_LSB_TAG    c-src/emacs/src/lisp.h  /^DEFINE_GDB_SYMBOL_BEGIN (bool, 
USE_LSB_TAG)$/
+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 cccp.y  38
+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  829
+VALMASK        c-src/emacs/src/lisp.h  /^DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT, 
VALMASK)$/
+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
+Vabbrev_start_location c-src/abbrev.c  62
+Vabbrev_start_location_buffer  c-src/abbrev.c  65
+Vabbrev_table_name_list        c-src/abbrev.c  42
+ValToNmStr     pas-src/common.pas      /^function ValToNmStr; (*($/
+Vfundamental_mode_abbrev_table c-src/abbrev.c  51
+Vglobal_abbrev_table   c-src/abbrev.c  47
+Vlast_abbrev   c-src/abbrev.c  69
+Vlast_abbrev_text      c-src/abbrev.c  74
+Vlispy_mouse_stem      c-src/emacs/src/keyboard.c      5172
+Vpre_abbrev_expand_hook        c-src/abbrev.c  82
+WAIT_READING_MAX       c-src/emacs/src/lisp.h  4281
+WAIT_READING_MAX       c-src/emacs/src/lisp.h  4283
+WCHAR_TYPE_SIZE        cccp.y  99
+WCHAR_TYPE_SIZE        y-src/cccp.y    99
+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)$/
+Y      c-src/h.h       100
+YACC   c-src/etags.c   2199
+YSRC   Makefile        /^YSRC=$(addprefix .\/y-src\/,parse.y parse.c atest.y /
+YYABORT        /usr/share/bison/bison.simple   153
+YYABORT        /usr/share/bison/bison.simple   153
+YYACCEPT       /usr/share/bison/bison.simple   152
+YYACCEPT       /usr/share/bison/bison.simple   152
+YYBACKUP       /usr/share/bison/bison.simple   /^#define YYBACKUP(Token, 
Value)                                        \\$/
+YYBACKUP       /usr/share/bison/bison.simple   /^#define YYBACKUP(Token, 
Value)                                        \\$/
+YYBISON        y-src/parse.c   4
+YYBISON        y-src/cccp.c    4
+YYDEBUG        parse.y 88
+YYDEBUG        cccp.y  122
+YYDPRINTF      /usr/share/bison/bison.simple   /^# define YYDPRINTF(Args)      
                \\$/
+YYDPRINTF      /usr/share/bison/bison.simple   /^# define YYDPRINTF(Args)$/
+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   150
+YYEOF  /usr/share/bison/bison.simple   151
+YYEOF  /usr/share/bison/bison.simple   151
+YYERRCODE      /usr/share/bison/bison.simple   178
+YYERRCODE      /usr/share/bison/bison.simple   178
+YYERROR        /usr/share/bison/bison.simple   154
+YYERROR        /usr/share/bison/bison.simple   154
+YYFAIL /usr/share/bison/bison.simple   158
+YYFAIL /usr/share/bison/bison.simple   158
+YYFINAL        parse.y 93
+YYFINAL        cccp.y  127
+YYFLAG parse.y 94
+YYFLAG cccp.y  128
+YYFPRINTF      /usr/share/bison/bison.simple   225
+YYFPRINTF      /usr/share/bison/bison.simple   225
+YYINITDEPTH    /usr/share/bison/bison.simple   244
+YYINITDEPTH    /usr/share/bison/bison.simple   244
+YYLAST parse.y 266
+YYLAST cccp.y  274
+YYLEX  /usr/share/bison/bison.simple   200
+YYLEX  /usr/share/bison/bison.simple   202
+YYLEX  /usr/share/bison/bison.simple   206
+YYLEX  /usr/share/bison/bison.simple   208
+YYLEX  /usr/share/bison/bison.simple   212
+YYLEX  /usr/share/bison/bison.simple   200
+YYLEX  /usr/share/bison/bison.simple   202
+YYLEX  /usr/share/bison/bison.simple   206
+YYLEX  /usr/share/bison/bison.simple   208
+YYLEX  /usr/share/bison/bison.simple   212
+YYLLOC_DEFAULT /usr/share/bison/bison.simple   /^# define 
YYLLOC_DEFAULT(Current, Rhs, N)              \\$/
+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   259
+YYMAXDEPTH     /usr/share/bison/bison.simple   255
+YYMAXDEPTH     /usr/share/bison/bison.simple   259
+YYNTBASE       parse.y 95
+YYNTBASE       cccp.y  129
+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_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
+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
+YYPOPSTACK     /usr/share/bison/bison.simple   445
+YYPOPSTACK     /usr/share/bison/bison.simple   447
+YYRECOVERING   /usr/share/bison/bison.simple   /^#define YYRECOVERING()  
(!!yyerrstatus)$/
+YYRECOVERING   /usr/share/bison/bison.simple   /^#define YYRECOVERING()  
(!!yyerrstatus)$/
+YYSIZE_T       /usr/share/bison/bison.simple   51
+YYSIZE_T       /usr/share/bison/bison.simple   56
+YYSIZE_T       /usr/share/bison/bison.simple   71
+YYSIZE_T       /usr/share/bison/bison.simple   75
+YYSIZE_T       /usr/share/bison/bison.simple   128
+YYSIZE_T       /usr/share/bison/bison.simple   131
+YYSIZE_T       /usr/share/bison/bison.simple   136
+YYSIZE_T       /usr/share/bison/bison.simple   140
+YYSIZE_T       /usr/share/bison/bison.simple   145
+YYSIZE_T       /usr/share/bison/bison.simple   51
+YYSIZE_T       /usr/share/bison/bison.simple   56
+YYSIZE_T       /usr/share/bison/bison.simple   71
+YYSIZE_T       /usr/share/bison/bison.simple   75
+YYSIZE_T       /usr/share/bison/bison.simple   128
+YYSIZE_T       /usr/share/bison/bison.simple   131
+YYSIZE_T       /usr/share/bison/bison.simple   136
+YYSIZE_T       /usr/share/bison/bison.simple   140
+YYSIZE_T       /usr/share/bison/bison.simple   145
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   50
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   55
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   59
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   78
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   50
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   55
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   59
+YYSTACK_ALLOC  /usr/share/bison/bison.simple   78
+YYSTACK_BYTES  /usr/share/bison/bison.simple   /^#  define YYSTACK_BYTES(N) 
\\$/
+YYSTACK_BYTES  /usr/share/bison/bison.simple   /^#  define YYSTACK_BYTES(N) 
\\$/
+YYSTACK_BYTES  /usr/share/bison/bison.simple   /^#  define YYSTACK_BYTES(N) 
\\$/
+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   /^#  define YYSTACK_FREE(Ptr) 
do { \/* empty *\/; } wh/
+YYSTACK_FREE   /usr/share/bison/bison.simple   79
+YYSTACK_GAP_MAX        /usr/share/bison/bison.simple   93
+YYSTACK_GAP_MAX        /usr/share/bison/bison.simple   93
+YYSTACK_RELOCATE       /usr/share/bison/bison.simple   /^# define 
YYSTACK_RELOCATE(Type, Stack)                                        \\$/
+YYSTACK_RELOCATE       /usr/share/bison/bison.simple   548
+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$/
+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   71
+YYSTYPE        y-src/parse.y   72
+YYSTYPE        parse.y 71
+YYSTYPE        parse.y 72
+YYSTYPE        parse.y 85
+YYSTYPE        cccp.y  119
+YYTERROR       /usr/share/bison/bison.simple   177
+YYTERROR       /usr/share/bison/bison.simple   177
+YYTRANSLATE    parse.y /^#define YYTRANSLATE(x) ((unsigned)(x) <= 278 ? yyt/
+YYTRANSLATE    cccp.y  /^#define YYTRANSLATE(x) ((unsigned)(x) <= 269 ? yyt/
+YY_DECL_NON_LSP_VARIABLES      /usr/share/bison/bison.simple   374
+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
+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
+\      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 }$/
+\1     c-src/abbrev.c  /^  DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_/
+\1     c-src/abbrev.c  /^  DEFVAR_LISP ("global-abbrev-table", &Vglobal_abb/
+\1     c-src/abbrev.c  /^  DEFVAR_LISP ("fundamental-mode-abbrev-table", &V/
+\1     c-src/abbrev.c  /^  DEFVAR_LISP ("last-abbrev", &Vlast_abbrev,
+    "/
+\1     c-src/abbrev.c  /^  DEFVAR_LISP ("last-abbrev-text", &Vlast_abbrev_t/
+\1     c-src/abbrev.c  /^  DEFVAR_INT ("last-abbrev-location", &last_abbrev/
+\1     c-src/abbrev.c  /^  DEFVAR_LISP ("abbrev-start-location", &Vabbrev_s/
+\1     c-src/abbrev.c  /^  DEFVAR_LISP ("abbrev-start-location-buffer", &Va/
+\1     c-src/abbrev.c  /^  DEFVAR_PER_BUFFER ("local-abbrev-table", &curren/
+\1     c-src/abbrev.c  /^  DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed/
+\1     c-src/abbrev.c  /^  DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps/
+\1     c-src/abbrev.c  /^  DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abb/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("internal--top-level-message", Vint/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("last-command-event", 
last_command_/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("last-nonmenu-event", 
last_nonmenu_/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("last-input-event", 
last_input_even/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("unread-command-events", Vunread_co/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("unread-post-input-method-events", /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("unread-input-method-events", Vunre/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("meta-prefix-char", 
meta_prefix_cha/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_KBOARD ("last-command", 
Vlast_command,
+               /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_KBOARD ("real-last-command", 
Vreal_last_c/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_KBOARD 
("last-repeatable-command", Vlast_/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("this-command", 
Vthis_command,
+          /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("real-this-command", 
Vreal_this_com/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("this-command-keys-shift-translated/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("this-original-command", Vthis_orig/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_INT ("auto-save-interval", 
auto_save_inte/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("auto-save-timeout", 
Vauto_save_tim/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("echo-keystrokes", 
Vecho_keystrokes/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_INT ("polling-period", 
polling_period,
+        /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("double-click-time", 
Vdouble_click_/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_INT ("double-click-fuzz", 
double_click_fu/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_INT ("num-input-keys", 
num_input_keys,
+        /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_INT 
("num-nonmacro-input-events", num_non/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("last-event-frame", 
Vlast_event_fra/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("tty-erase-char", 
Vtty_erase_char,
+/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("help-char", 
Vhelp_char,
+              do/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("help-event-list", 
Vhelp_event_list/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("help-form", 
Vhelp_form,
+              do/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("prefix-help-command", 
Vprefix_help/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("top-level", 
Vtop_level,
+              do/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_KBOARD 
("keyboard-translate-table", Vkeyb/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_BOOL ("cannot-suspend", 
cannot_suspend,
+       /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_BOOL ("menu-prompting", 
menu_prompting,
+       /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("menu-prompt-more-char", menu_promp/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_INT 
("extra-keyboard-modifiers", extra_ke/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("deactivate-mark", 
Vdeactivate_mark/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("pre-command-hook", 
Vpre_command_ho/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("post-command-hook", 
Vpost_command_/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("echo-area-clear-hook", ...,
+            /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("lucid-menu-bar-dirty-flag", Vlucid/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("menu-bar-final-items", Vmenu_bar_f/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("tool-bar-separator-image-expressio/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_KBOARD 
("overriding-terminal-local-map",
+/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("overriding-local-map", Voverriding/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("overriding-local-map-menu-flag", V/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("special-event-map", 
Vspecial_event/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("track-mouse", 
do_mouse_tracking,
+       /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_KBOARD ("system-key-alist", 
Vsystem_key_a/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_KBOARD 
("local-function-key-map", Vlocal_/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_KBOARD ("input-decode-map", 
Vinput_decode/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("function-key-map", 
Vfunction_key_m/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("key-translation-map", 
Vkey_transla/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("deferred-action-list", Vdeferred_a/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("deferred-action-function", Vdeferr/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("delayed-warnings-list", Vdelayed_w/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("timer-list", 
Vtimer_list,
+              /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("timer-idle-list", 
Vtimer_idle_list/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("input-method-function", Vinput_met/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("input-method-previous-message",
+        /
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("show-help-function", 
Vshow_help_fu/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("disable-point-adjustment", Vdisabl/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("global-disable-point-adjustment",
+/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("minibuffer-message-timeout", Vmini/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("throw-on-input", 
Vthrow_on_input,
+/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("command-error-function", Vcommand_/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("enable-disabled-menus-and-buttons"/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("select-active-regions",
+              Vs/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("saved-region-selection",
+              V/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP 
("selection-inhibit-update-commands"/
+\1     c-src/emacs/src/keyboard.c      /^  DEFVAR_LISP ("debug-on-event",
+               Vd/
+\:     tex-src/texinfo.tex     /^\\def\\:{\\spacefactor=1000 }$/
+\@     tex-src/texinfo.tex     /address@hidden \\char '100}}$/
+\@     tex-src/texinfo.tex     /address@hidden@}%$/
+\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}% 
Neccessary 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{\\HEADINGSsingle}}$/
+\HEADINGSon    tex-src/texinfo.tex     
/^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
+\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\\_{{\\realbackslash _}}%$/
+\_     tex-src/texinfo.tex     /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule 
width.3em /
+\`     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{{\\bf #1}}$/
+\b     tex-src/texinfo.tex     /^\\def\\b##1{\\realbackslash b {##1}}%$/
+\b     tex-src/texinfo.tex     /^\\def\\b##1{\\realbackslash b {##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 address@hidden 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 address@hidden 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 address@hidden 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 address@hidden 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 address@hidden 
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 address@hidden 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 address@hidden 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 address@hidden 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 address@hidden 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 address@hidden 
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 address@hidden 
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 address@hidden 
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 address@hidden 
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 address@hidden 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 address@hidden 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 address@hidden 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{\\realbackslash equiv}$/
+\equiv tex-src/texinfo.tex     /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 
1em{\\hfil/
+\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{\\realbackslash 
expansion}$/
+\expansion     tex-src/texinfo.tex     
/^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
+\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     /address@hidden 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     /address@hidden while not in a table/
+\itemzzz       tex-src/texinfo.tex     /^\\def\\itemzzz #1{\\begingroup %$/
+\kbd   tex-src/texinfo.tex     
/^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
+\kbd   tex-src/texinfo.tex     /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
+\kbd   tex-src/texinfo.tex     /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
+\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     /address@hidden while not in a table/
+\kitemx        tex-src/texinfo.tex     /address@hidden 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}$/
+\next  tex-src/texinfo.tex     /^\\def\\next##1{}\\next}$/
+\next  tex-src/texinfo.tex     /^\\def\\next##1{}\\next}$/
+\next  tex-src/texinfo.tex     /^\\def\\next##1{}\\next}$/
+\next  tex-src/texinfo.tex     /^\\def\\next##1{}\\next}$/
+\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{\\par\\vfill\\supereject}$/
+\page  tex-src/texinfo.tex     /^   \\def\\page{%$/
+\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{\\realbackslash print}$/
+\print tex-src/texinfo.tex     /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 
1em{\\hfil/
+\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 #3}%$/
+\printednodename       tex-src/texinfo.tex     
/^\\def\\printednodename{\\ignorespaces #1}%$/
+\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{{\\rm #1}}         % roman font$/
+\r     tex-src/texinfo.tex     /^\\def\\r##1{\\realbackslash r {##1}}%$/
+\r     tex-src/texinfo.tex     /^\\def\\r##1{\\realbackslash r {##1}}$/
+\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{\\realbackslash 
result}$/
+\result        tex-src/texinfo.tex     
/^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
+\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{{\\tt 
\\exhyphenpenalty=10000\\rawbackslash /
+\t     tex-src/texinfo.tex     /^\\def\\t##1{\\realbackslash r {##1}}%$/
+\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{{\\rm 
\\tcloserm=\\fontdimen2\\font \\tt /
+\tclose        tex-src/texinfo.tex     /^\\def\\tclose##1{\\realbackslash 
tclose {##1}}%$/
+\tclose        tex-src/texinfo.tex     /^\\def\\tclose##1{\\realbackslash 
tclose {##1}}$/
+\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     /^\\def\\thischapter{} 
\\def\\thissection{}$/
+\thischapter   tex-src/texinfo.tex     /^   
\\unnumbchapmacro{#1}\\def\\thischapter{}%$/
+\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     /address@hidden while not in a table/
+\xitemx        tex-src/texinfo.tex     /address@hidden 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):$/
+__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, newlegend, 
list, editor, ma/
+__init__       pyt-src/server.py       /^    def __init__(self, host, 
sitelist, master=None/
+__init__       pyt-src/server.py       /^    def __init__(self, user, 
userlist, master=None/
+__init__       pyt-src/server.py       /^    def __init__(self, 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):$/
+__repr__       pyt-src/server.py       /^    def __repr__(self):$/
+__repr__       pyt-src/server.py       /^    def __repr__(self):$/
+__sbrk c-src/emacs/src/gmalloc.c       1513
+__str__        pyt-src/server.py       /^    def __str__(self):$/
+__str__        pyt-src/server.py       /^    def __str__(self):$/
+__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
+_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)$/
+a      c.c     152
+a      c.c     180
+a      c.c     /^a()$/
+a      c.c     /^a ()$/
+a      c-src/h.h       40
+a      c-src/h.h       103
+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*b+c )  + * ;$/
+a-forth-word   forth-src/test-forth.fth        /^: a-forth-word ( 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  57
+abbrevs_changed        c-src/abbrev.c  55
+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
+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/
+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        cccp.y  114
+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
+agent::move    cp-src/clheir.cpp       /^void agent::move(int direction)$/
+agent::where   cp-src/clheir.hpp       77
+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       71
+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
+alignlist      c-src/emacs/src/gmalloc.c       196
+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
+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/h.h       13
+arg_type       c-src/etags.c   250
+arglist        cccp.y  41
+arglist        y-src/cccp.y    41
+argno  cccp.y  45
+argno  y-src/cccp.y    45
+args   c-src/h.h       30
+argsindent     tex-src/texinfo.tex     /^\\newskip\\defargsindent 
\\defargsindent=50pt$/
+argsindent     tex-src/texinfo.tex     /^\\dimen1=\\hsize \\advance \\dimen1 
by -\\defargsindent/
+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   135
+assert c-src/etags.c   /^# define assert(x) ((void) 0)$/
+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.c     180
+b      c.c     259
+b      c.c     260
+b      c.c     262
+b      c.c     /^b ()$/
+b      c-src/h.h       41
+b      c-src/h.h       103
+b      c-src/h.h       104
+backslash=0    tex-src/texinfo.tex     /^\\let\\indexbackslash=0  %overridden 
during \\printin/
+bar    c-src//c.c      /^void bar() {while(0) {}}$/
+bar    c.c     143
+bar    c-src/h.h       19
+bas_syn        prol-src/natded.prolog  /^bas_syn(n(_)).$/
+base   c-src/emacs/src/lisp.h  2188
+base   cp-src/c.C      /^double base (void) const { return rng_base;  }$/
+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     /^\\newskip\\defbodyindent 
\\defbodyindent=.4in$/
+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     /^\\exdentamount=\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
\\defbodyindent \\advance \\righ/
+bodyindent     tex-src/texinfo.tex     /^\\exdentamount=\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
\\defbodyindent \\advance \\righ/
+bodyindent     tex-src/texinfo.tex     /^\\exdentamount=\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
\\defbodyindent \\advance \\righ/
+bodyindent     tex-src/texinfo.tex     /^\\exdentamount=\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
\\defbodyindent \\advance \\righ/
+bodyindent     tex-src/texinfo.tex     /^\\exdentamount=\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
\\defbodyindent \\advance \\righ/
+bodyindent     tex-src/texinfo.tex     /^\\exdentamount=\\defbodyindent$/
+bodyindent     tex-src/texinfo.tex     /^\\advance\\leftskip by 
\\defbodyindent \\advance \\righ/
+bodyindent     tex-src/texinfo.tex     /^\\exdentamount=\\defbodyindent$/
+bool   c.c     222
+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
+btowc  c-src/emacs/src/regex.h /^# define btowc(c) c$/
+buffer c-src/etags.c   238
+buffer c-src/emacs/src/regex.h 341
+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
+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.c     180
+c      c-src/h.h       /^#define c() d$/
+c      c-src/h.h       106
+c      make-src/Makefile       222
+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
+calloc c-src/emacs/src/gmalloc.c       66
+calloc c-src/emacs/src/gmalloc.c       70
+calloc c-src/emacs/src/gmalloc.c       /^calloc (size_t nmemb, size_t size)$/
+calloc c-src/emacs/src/gmalloc.c       1717
+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    prol-src/natded.prolog  /^cat(A, address@hidden, Ass3, Qs3, 
tree(fe,A:address@hidden/
+cat_atoms      prol-src/natded.prolog  /^cat_atoms(A1,A2,A3):-$/
+cccccccccc     c-src/h.h       115
+cdiff  Makefile        /^cdiff: CTAGS.good CTAGS ${infiles}$/
+cdr    c-src/emacs/src/lisp.h  1159
+cell   y-src/parse.y   278
+cgrep  html-src/software.html  /^cgrep$/
+chain  c-src/emacs/src/lisp.h  1162
+chain  c-src/emacs/src/lisp.h  2396
+char_bits      c-src/emacs/src/lisp.h  2443
+char_table_specials    c-src/emacs/src/lisp.h  1692
+charset_unibyte        c-src/emacs/src/regex.h 410
+chartonmstr    pas-src/common.pas      /^function chartonmstr; (*($/
+check  Makefile        /^check:$/
+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/
+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
+classifyLine   php-src/lce_functions.php       /^      function 
classifyLine($line)$/
+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_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
+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)$/
+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
+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/h.h       29
+constant       cccp.y  113
+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)$/
+cow    cp-src/c.C      127
+cplpl  c-src/etags.c   2935
+createPOEntries        php-src/lce_functions.php       /^      function 
createPOEntries()$/
+createWidgets  pyt-src/server.py       /^    def createWidgets(self, host):$/
+createWidgets  pyt-src/server.py       /^    def createWidgets(self):$/
+cstack c-src/etags.c   2523
+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
+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.c     180
+d      c-src/emacs/src/lisp.h  4673
+d      c-src/emacs/src/lisp.h  4679
+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$/
+decimalKey:    objcpp-src/SimpleCalc.M /^- decimalKey:sender$/
+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       56
+discrete_location::assign_neighbor     cp-src/clheir.hpp       /^    void 
assign_neighbor(int direction, location */
+discrete_location::clear_neighbors     cp-src/clheir.cpp       /^void 
discrete_location::clear_neighbors(void)$/
+discrete_location::discrete_location   cp-src/clheir.hpp       /^    
discrete_location(int xi, int yi, int zi):$/
+discrete_location::neighbors   cp-src/clheir.hpp       59
+discrete_location::x   cp-src/clheir.hpp       58
+discrete_location::y   cp-src/clheir.hpp       58
+discrete_location::z   cp-src/clheir.hpp       58
+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
+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/
+dummies        tex-src/texinfo.tex     /^{\\indexdummies % Must do this here, 
since \\bf, etc/
+dummydots      tex-src/texinfo.tex     /^\\let\\dots=\\indexdummydots$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\w=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\t=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\r=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\i=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\b=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\emph=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\strong=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\sc=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\tclose=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\code=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\file=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\samp=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\kbd=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\key=\\indexdummyfont$/
+dummyfont      tex-src/texinfo.tex     /^\\let\\var=\\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) ((void) (false 
&& (cond))) /
+eassert        c-src/emacs/src/lisp.h  /^# define eassert(cond)                
                                \\$/
+eassume        c-src/emacs/src/lisp.h  /^# define eassume(cond) assume (cond)$/
+eassume        c-src/emacs/src/lisp.h  /^# define eassume(cond)                
                                \\$/
+eax    c-src/sysdep.h  31
+eax    c-src/sysdep.h  33
+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
+ediff% Makefile        /^ediff%: ETAGS.good% ETAGS ${infiles}$/
+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/regex.h 432
+end    c-src/emacs/src/keyboard.c      8753
+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/etags.c   /^static void error (const char *, ...) ATTRIBUTE_FO/
+error  c-src/etags.c   /^error (const char *format, ...)$/
+error  c-src/emacs/src/lisp.h  /^extern _Noreturn void error (const char *, 
...) AT/
+error  cccp.y  /^error (msg)$/
+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--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_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
+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/parse.y   94
+exp    y-src/atest.y   2
+exp    y-src/cccp.y    156
+exp    y-src/cccp.y    185
+exp1   y-src/cccp.y    148
+exp_list       y-src/parse.y   262
+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       cccp.y  68
+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.c     145
+f      c.c     156
+f      c.c     168
+f      c.c     /^int f$/
+f      c-src/h.h       89
+f      cp-src/c.C      /^A<int>* f() {}$/
+f      cp-src/c.C      /^int f(A<int> x) {}$/
+f      cp-src/c.C      /^int A<int>::f(A<int>* x) {}$/
+f      cp-src/c.C      /^A<float,B<int> > A<B<float>,int>::f(A<int>* x) {}$/
+f1     c.c     /^     f1 () { \/* Do something. *\/; }$/
+f2     c.c     /^void f2 () { \/* Do something. *\/; }$/
+fast_string_match_ignore_case  c-src/emacs/src/lisp.h  
/^fast_string_match_ignore_case (Lisp_Object regexp,/
+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));$/
+fdHandler      objc-src/Subprocess.m   /^fdHandler (int theFd, id self)$/
+fdHandler:     objc-src/Subprocess.m   /^- fdHandler:(int)theFd$/
+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
+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_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).$/
+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   67
+fnin   parse.y 67
+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.c     150
+foo    c.c     166
+foo    c.c     167
+foo    c.c     178
+foo    c.c     189
+foo    c-src/h.h       18
+foo    cp-src/c.C      68
+foo    cp-src/c.C      79
+foo    f-src/entry.for /^       character*(*) function foo()$/
+foo    f-src/entry.strange_suffix      /^       character*(*) function foo()$/
+foo    f-src/entry.strange     /^       character*(*) function foo()$/
+foo    php-src/ptest.php       /^foo()$/
+foo::f cp-src/c.C      /^     void f() {}$/
+foo::x cp-src/c.C      80
+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
+formatSize:inBuf:      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       67
+free   c-src/emacs/src/gmalloc.c       72
+free   c-src/emacs/src/gmalloc.c       166
+free   c-src/emacs/src/gmalloc.c       /^free (void *ptr)$/
+free   c-src/emacs/src/gmalloc.c       1719
+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
+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/etags.c   194
+function       c-src/emacs/src/lisp.h  694
+function       c-src/emacs/src/lisp.h  1685
+function       c-src/emacs/src/lisp.h  2197
+functionp      c-src/emacs/src/lisp.h  /^functionp (Lisp_Object object)$/
+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  690
+fwd    c-src/emacs/src/lisp.h  2346
+galileo        html-src/software.html  /^GaliLEO$/
+gather pyt-src/server.py       /^    def gather(self):$/
+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  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>$/
+generic_object cp-src/clheir.hpp       13
+generic_object::compute_next_state     cp-src/clheir.hpp       /^    virtual 
void compute_next_state(void) { }$/
+generic_object::generic_object cp-src/clheir.cpp       
/^generic_object::generic_object(void)$/
+generic_object::step   cp-src/clheir.hpp       /^    virtual void step(void) { 
}$/
+generic_object::where_in_registry      cp-src/clheir.hpp       15
+generic_object::~generic_object        cp-src/clheir.cpp       
/^generic_object::~generic_object(void)$/
+getArchs       objc-src/PackInsp.m     /^-(void)getArchs$/
+getDomainNames php-src/lce_functions.php       /^      function 
getDomainNames()$/
+getPOReader    php-src/lce_functions.php       /^      function 
&getPOReader($domain)$/
+getPath:forType:       objc-src/PackInsp.m     /^-(const char *)getPath:(char 
*)buf forType:(const /
+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
+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
+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/etags.c   /^hash (const char *str, int len)$/
+hash   c-src/emacs/src/lisp.h  1843
+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
+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)$/
+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.c     169
+i      c-src/emacs/src/lisp.h  567
+i      c-src/emacs/src/lisp.h  4673
+i      c-src/emacs/src/lisp.h  4679
+ialpage        tex-src/texinfo.tex     /^\\newbox\\partialpage$/
+ialpage        tex-src/texinfo.tex     /^  address@hidden \\advance\\dimen@ 
by-\\ht\\parti/
+ialpage        tex-src/texinfo.tex     /^  address@hidden 
\\advance\\availdimen@ by/
+ialpage        tex-src/texinfo.tex     /^     address@hidden \\advance\\dimen@ 
by-\\ht\\pa/
+ialpage=       tex-src/texinfo.tex     /^  
\\output={\\global\\setbox\\partialpage=$/
+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$/
+in_word_set    c-src/etags.c   /^in_word_set (register const char *str, 
register un/
+inattribute    c-src/etags.c   2400
+index  c-src/emacs/src/lisp.h  1856
+infabsdir      c-src/etags.c   206
+infabsname     c-src/etags.c   205
+infiles        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   objcpp-src/SimpleCalc.M /^- init$/
+init:  objc-src/Subprocess.m   /^- init:(const char *)subprocessString$/
+init:withDelegate:andPtySupport:andStdErr:     objc-src/Subprocess.m   /^    
andStdErr:(BOOL)wantsStdErr$/
+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_random_junk cccp.y  /^initialize_random_junk ()$/
+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_/
+insertname     pas-src/common.pas      /^function insertname;(*($/
+instr  y-src/parse.y   80
+instr  parse.y 80
+instruct       c-src/etags.c   2527
+integer        c-src/emacs/src/lisp.h  2127
+integer        cccp.y  113
+integer        y-src/cccp.y    112
+integer_overflow       cccp.y  /^integer_overflow ()$/
+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_suffix      /^     & 
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+intensity1     f-src/entry.strange     /^     & 
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+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
+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)$/
+ipc3dChannelType       cp-src/c.C      1
+ipc3dIslandHierarchy   cp-src/c.C      1
+ipc3dLinkControl       cp-src/c.C      1
+irregular_location     cp-src/clheir.hpp       47
+irregular_location::irregular_location cp-src/clheir.hpp       /^    
irregular_location(double xi, double yi, doubl/
+irregular_location::x  cp-src/clheir.hpp       49
+irregular_location::y  cp-src/clheir.hpp       49
+irregular_location::z  cp-src/clheir.hpp       49
+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_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   cccp.y  953
+is_hor_space   y-src/cccp.y    953
+is_idchar      cccp.y  948
+is_idchar      y-src/cccp.y    948
+is_idstart     cccp.y  950
+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.$/
+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        cccp.y  73
+keyword_parsing        y-src/cccp.y    73
+keywords       cccp.y  115
+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  78
+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    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_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_gettext    php-src/lce_functions.php       /^      function 
lce_gettext($msgid)$/
+lce_textdomain php-src/lce_functions.php       /^      function 
lce_textdomain($domain)$/
+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     cccp.y  /^left_shift (a, b)$/
+left_shift     y-src/cccp.y    /^left_shift (a, b)$/
+len    c-src/etags.c   237
+length c-src/etags.c   2495
+length cccp.y  44
+length cccp.y  114
+length y-src/cccp.y    44
+length y-src/cccp.y    113
+letter tex-src/texinfo.tex     /^\\chapmacro {#1}{Appendix \\appendixletter}%$/
+letter tex-src/texinfo.tex     /^  {#1}{Appendix 
\\appendixletter}{\\noexpand\\folio}}/
+letter tex-src/texinfo.tex     /^\\gdef\\thissection{#1}\\secheading 
{#1}{\\appendixlet/
+letter tex-src/texinfo.tex     
/^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/
+letter tex-src/texinfo.tex     /^\\subsecheading 
{#1}{\\appendixletter}{\\the\\secno}{\\/
+letter tex-src/texinfo.tex     
/^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/
+letter tex-src/texinfo.tex     /^  
{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\th/
+letter tex-src/texinfo.tex     /^  {\\appendixletter}$/
+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 cccp.y  332
+lexptr y-src/cccp.y    332
+licenze        html-src/softwarelibero.html    /^Licenze d'uso di un 
programma$/
+line   c-src/etags.c   2493
+line   perl-src/htlmify-cystic 37
+line   y-src/parse.y   86
+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/etags.c   2506
+lineno c-src/emacs/src/lisp.h  3147
+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-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:inTable:        objc-src/PackInsp.m     
/^-loadContentsOf:(const char *)type inTable:(HashTa/
+loadImage      objc-src/PackInsp.m     /^-loadImage$/
+loadKeyValuesFrom:inTable:     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       33
+location::location     cp-src/clheir.hpp       /^    location() { }$/
+lookup cccp.y  /^lookup (name, len, hash)$/
+lookup y-src/cccp.y    /^lookup (name, len, hash)$/
+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
+main::f1       perl-src/kai-test.pl    /^sub f1 {$/
+main::f2       perl-src/kai-test.pl    /^sub main::f2 {$/
+main::f7       perl-src/kai-test.pl    /^sub f7 {$/
+main::file_end perl-src/htlmify-cystic /^sub file_end ()$/
+main::finish_appendices        perl-src/htlmify-cystic /^sub finish_appendices 
()$/
+main::finish_sections  perl-src/htlmify-cystic /^sub finish_sections ()$/
+main::finish_subsections       perl-src/htlmify-cystic /^sub 
finish_subsections ()$/
+main::finish_subsubsections    perl-src/htlmify-cystic /^sub 
finish_subsubsections ()$/
+main::getopt   perl-src/yagrip.pl      /^sub getopt {$/
+main::read_toc perl-src/htlmify-cystic /^sub read_toc ()$/
+main::section_href     perl-src/htlmify-cystic /^sub section_href ($)$/
+main::section_name     perl-src/htlmify-cystic /^sub section_name ($)$/
+main::section_url      perl-src/htlmify-cystic /^sub section_url ()$/
+main::section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/
+main::section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/
+main::toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/
+main::usage    perl-src/yagrip.pl      /^sub usage {$/
+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,address@hidden@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       64
+malloc c-src/emacs/src/gmalloc.c       68
+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_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)$/
+mao    c-src/h.h       101
+map    c-src/emacs/src/keyboard.c      8748
+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.c     /^max (int a, int b)$/
+max    c.c     /^__attribute__ ((always_inline)) max (int a, int b)/
+max    c-src/emacs/src/lisp.h  58
+max    c-src/emacs/src/lisp.h  /^#define max(a, b) ((a) > (b) ? (a) : (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_gc       c-src/emacs/src/lisp.h  /^maybe_gc (void)$/
+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
+memalign       c-src/emacs/src/gmalloc.c       /^memalign (size_t alignment, 
size_t size)$/
+member prol-src/natded.prolog  /^member(X,[X|_]).$/
+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  57
+min    c-src/emacs/src/lisp.h  /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
+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
+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/
+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
+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.c     226
+my_struct      c-src/h.h       91
+my_typedef     c.c     228
+my_typedef     c-src/h.h       93
+n      c-src/exit.c    28
+n      c-src/exit.strange_suffix       28
+name   c-src/getopt.h  76
+name   c-src/getopt.h  78
+name   c-src/etags.c   192
+name   c-src/etags.c   218
+name   c-src/etags.c   261
+name   c-src/etags.c   2271
+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   perl-src/htlmify-cystic 357
+name   tex-src/texinfo.tex     /^\\begingroup\\defname 
{#2}{#1}\\defunargs{#3}\\endgrou/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Function}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#1} 
#2}{Function}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {\\code{#2} #3}{#1}%$/
+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 {#2}{\\defoptype{} on 
#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}{Instance Variable 
of #1}%/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname 
{#2}{#1}\\defvarargs{#3}\\endgro/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{Variable}%$/
+name   tex-src/texinfo.tex     /^\\begingroup\\defname {#1}{User Option}%$/
+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 
{#2}{#1}\\deftpargs{#3}\\endgrou/
+name   cccp.y  43
+name   cccp.y  114
+name   cccp.y  114
+name   y-src/cccp.y    43
+name   y-src/cccp.y    113
+name   y-src/cccp.y    113
+named  c-src/etags.c   2505
+namestringequal        pas-src/common.pas      /^function 
namestringequal;(*(var Name1,Name2 : Name/
+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.c     174
+next   c-src/etags.c   203
+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      861
+next   c-src/emacs/src/keyboard.c      7246
+next   c-src/emacs/src/lisp.h  700
+next   c-src/emacs/src/lisp.h  1848
+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   cccp.y  42
+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_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     /^\\newcount \\appendixno  \\appendixno = 
address@hidden/
+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.\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 %$/
+noderef        tex-src/texinfo.tex     /^\\appendixnoderef %$/
+noderef        tex-src/texinfo.tex     /^\\appendixnoderef %$/
+noderef        tex-src/texinfo.tex     /^\\appendixnoderef %$/
+nofonts        tex-src/texinfo.tex     /^{\\indexnofonts$/
+nofonts        tex-src/texinfo.tex     /^{\\indexnofonts$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+nofonts%       tex-src/texinfo.tex     /^{\\chapternofonts%$/
+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):$/
+nosave pyt-src/server.py       /^    def nosave(self):$/
+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/torture.c 26
+notag2 c-src/dostorture.c      26
+notag4 c-src/torture.c 45
+notag4 c-src/dostorture.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   46
+obstack_chunk_alloc    parse.y 46
+obstack_chunk_free     y-src/parse.y   47
+obstack_chunk_free     parse.y 47
+ocatseen       c-src/etags.c   2477
+octave_MDiagArray2_h   cp-src/MDiagArray2.h    29
+octave_Range_h cp-src/Range.h  24
+offset c-src/etags.c   2494
+offset c-src/emacs/src/lisp.h  2305
+offset c-src/emacs/src/lisp.h  2365
+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
+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-dribble-file      c-src/emacs/src/keyboard.c      /^DEFUN 
("open-dribble-file", Fopen_dribble_file, So/
+open:  objc-src/PackInsp.m     /^-open:sender$/
+openInWorkspace        objc-src/PackInsp.m     /^static void 
openInWorkspace(const char *filename)$/
+operationKeys: objcpp-src/SimpleCalc.M /^- operationKeys:sender$/
+operator       cccp.y  438
+operator       y-src/cccp.y    438
+operator -     cp-src/c.C      /^void operator -(int, int) {}$/
+operator <<    cp-src/functions.cpp    /^ostream& operator <<  ( ostream &c, 
Date d ) {$/
+operator >>    cp-src/functions.cpp    /^istream& operator >> ( istream &i, 
Date & dd ){$/
+operator int   cp-src/c.C      /^void operator int(int, int) {}$/
+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([], _, []).$/
+ord_intersection       prol-src/ordsets.prolog /^ord_intersection([], Set2, 
[], Set2).$/
+ord_intersection       prol-src/ordsets.prolog /^ord_intersection(Sets, 
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
+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/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  94
+pI     c-src/emacs/src/lisp.h  99
+pI     c-src/emacs/src/lisp.h  106
+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
+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     cccp.y  /^parse_c_expression (string)$/
+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   81
+parse_error    parse.y 81
+parse_escape   cccp.y  /^parse_escape (string_ptr)$/
+parse_escape   y-src/cccp.y    /^parse_escape (string_ptr)$/
+parse_hash     y-src/parse.y   63
+parse_hash     parse.y 63
+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   cccp.y  /^parse_number (olen)$/
+parse_number   y-src/cccp.y    /^parse_number (olen)$/
+parse_return   y-src/parse.y   73
+parse_return   parse.y 73
+parse_return_error     cccp.y  70
+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 /
+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,/
+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  697
+plusvalseq     prol-src/natded.prolog  /^plusvalseq([]) --> [].$/
+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      cccp.y  /^#define possible_sum_sign(a, b, sum) ((((a) ^ 
(b))/
+possible_sum_sign      y-src/cccp.y    /^#define possible_sum_sign(a, b, sum) 
((((a) ^ (b))/
+post   pyt-src/server.py       /^    def post(self):$/
+post   pyt-src/server.py       /^    def post(self):$/
+pot_etags_version      c-src/etags.c   81
+pp1    c-src/torture.c /^int pp1($/
+pp1    c-src/dostorture.c      /^int pp1($/
+pp2    c-src/torture.c /^pp2$/
+pp2    c-src/dostorture.c      /^pp2$/
+pp3    c-src/torture.c /^pp3(int bar)$/
+pp3    c-src/dostorture.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.c     175
+prev   c-src/emacs/src/gmalloc.c       165
+prev   c-src/emacs/src/gmalloc.c       189
+prev   c-src/emacs/src/lisp.h  2191
+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/
+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
+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)$/
+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   268
+range_exp_list y-src/parse.y   272
+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   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/
+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)$/
+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       65
+realloc        c-src/emacs/src/gmalloc.c       69
+realloc        c-src/emacs/src/gmalloc.c       /^realloc (void *ptr, size_t 
size)$/
+realloc        c-src/emacs/src/gmalloc.c       1716
+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)$/
+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.c     279
+reg_errcode_t  c-src/emacs/src/regex.h 323
+reg_syntax_t   c-src/emacs/src/regex.h 43
+regex  c-src/etags.c   219
+regex  make-src/Makefile       204
+regex  make-src/Makefile       207
+regex  make-src/Makefile       213
+regex  make-src/Makefile       216
+regex  make-src/Makefile       219
+regex_t        c-src/emacs/src/regex.h 416
+regex_tag_multiline    c-src/etags.c   /^regex_tag_multiline (void)$/
+regexfile      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)$/
+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)$/
+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    cccp.y  /^right_shift (a, b)$/
+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
+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
+s1::counter    cp-src/c.C      33
+s2     cp-src/c.C      35
+s2::counter    cp-src/c.C      36
+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   pyt-src/server.py       /^    def save(self):$/
+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)$/
+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_name   perl-src/htlmify-cystic 12
+section_toc    perl-src/htlmify-cystic 15
+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$/
+send:withNewline:      objc-src/Subprocess.m   /^- send:(const char *)string 
withNewline:(BOOL)want/
+separator_names        c-src/emacs/src/keyboard.c      7372
+serializeToVars        php-src/lce_functions.php       /^      function 
serializeToVars($prefix)$/
+serializeToVars        php-src/lce_functions.php       /^      function 
serializeToVars($prefix)$/
+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_/
+setDelegate:   objc-src/Subprocess.m   /^- setDelegate:anObject$/
+setRevertButtonTitle   objc-src/PackInsp.m     /^-setRevertButtonTitle$/
+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_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_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/
+shouldLoad     objc-src/PackInsp.m     /^-(BOOL)shouldLoad$/
+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       5
+site::alive    cp-src/conway.hpp       7
+site::clear    cp-src/conway.hpp       /^    void clear(void) { alive = 0; }$/
+site::compute_next_state       cp-src/conway.hpp       /^    void 
compute_next_state(void)$/
+site::next_alive       cp-src/conway.hpp       7
+site::read     cp-src/conway.hpp       /^    char read() { return alive; }$/
+site::set      cp-src/conway.hpp       /^    void set(void) { alive = 1; }$/
+site::site     cp-src/conway.hpp       /^    site(int xi, int yi): x(xi), 
y(yi), alive(0) {/
+site::step     cp-src/conway.hpp       /^    void step(void) { alive = 
next_alive; }$/
+site::total_surrounding        cp-src/conway.cpp       /^int 
site::total_surrounding(void)$/
+site::x        cp-src/conway.hpp       7
+site::y        cp-src/conway.hpp       7
+size   c-src/etags.c   236
+size   c-src/etags.c   2522
+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
+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
+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}}/
+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        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
+start  c-src/emacs/src/regex.h 431
+start  c-src/emacs/src/keyboard.c      8753
+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$/
+step_everybody cp-src/clheir.cpp       /^void step_everybody(void)$/
+stop_polling   c-src/emacs/src/keyboard.c      /^stop_polling (void)$/
+store_user_signal_events       c-src/emacs/src/keyboard.c      
/^store_user_signal_events (void)$/
+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_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:output:     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$/
+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   cccp.y  117
+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_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) siglongjmp 
(j, v)$/
+sys_longjmp    c-src/emacs/src/lisp.h  /^# define sys_longjmp(j, v) longjmp 
(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) sigsetjmp (j, 
0)$/
+sys_setjmp     c-src/emacs/src/lisp.h  /^# define sys_setjmp(j) setjmp (j)$/
+syscall_error  c-src/sysdep.h  34
+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/torture.c /^(*tag1 (sig, handler)) ()$/
+tag1   c-src/dostorture.c      /^(*tag1 (sig, handler)) ()$/
+tag1   c-src/h.h       110
+tag2   c-src/torture.c /^(*tag2 (sig, handler)) ()$/
+tag2   c-src/dostorture.c      /^(*tag2 (sig, handler)) ()$/
+tag3   c-src/torture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/
+tag3   c-src/dostorture.c      /^(*tag3 (int sig, void (*handler) (int))) 
(int)$/
+tag4   c-src/torture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/
+tag4   c-src/dostorture.c      /^(*tag4 (int sig, void (*handler) (int))) 
(int)$/
+tag5   c-src/torture.c /^tag5 (handler, arg)$/
+tag5   c-src/dostorture.c      /^tag5 (handler, arg)$/
+tag6   c-src/torture.c /^tag6 (void (*handler) (void *), void *arg)$/
+tag6   c-src/dostorture.c      /^tag6 (void (*handler) (void *), void *arg)$/
+tag_or_ch      c-src/emacs/src/lisp.h  3026
+taggedfname    c-src/etags.c   207
+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    /^(defvar 
tags-completion-table nil$/
+tags-completion-table  el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-completion-table ()$/
+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    /^(defvar 
tags-included-tables nil$/
+tags-included-tables   el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-included-tables ()$/
+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    /^(defvar 
tags-table-files nil$/
+tags-table-files       el-src/emacs/lisp/progmodes/etags.el    /^(defun 
tags-table-files ()$/
+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$/
+temporarily_switch_to_single_kboard    c-src/emacs/src/keyboard.c      
/^temporarily_switch_to_single_kboard (struct frame /
+tend   c-src/etags.c   2432
+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   php-src/ptest.php       /^test $/
+test::dummy1   cp-src/burton.cpp       /^::dummy::dummy test::dummy1(void)$/
+test::dummy2   cp-src/burton.cpp       /^::dummy::dummy 
test::dummy2(::CORBA::Long dummy)$/
+test::dummy3   cp-src/burton.cpp       /^::dummy::dummy test::dummy3(char* 
name, ::CORBA::L/
+test::f        cp-src/c.C      /^  int f(){return 0;};         \/\/ first 
comment$/
+test::ff       cp-src/c.C      /^  int ff(){return 1;};$/
+test::g        cp-src/c.C      /^  int g(){return 2;};$/
+test_undefined c-src/emacs/src/keyboard.c      /^test_undefined (Lisp_Object 
binding)$/
+texttreelist   prol-src/natded.prolog  /^texttreelist([]).$/
+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
+toggleDescription      objc-src/PackInsp.m     /^-toggleDescription$/
+tok    c-src/etags.c   2491
+token  c-src/etags.c   2508
+token  cccp.y  437
+token  cccp.y  439
+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      cccp.y  442
+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_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)$/
+totally_unblock_input  c-src/emacs/src/keyboard.c      /^totally_unblock_input 
(void)$/
+tpcmd  c-src/h.h       8
+tpcmd  c-src/h.h       15
+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
+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/etags.c   2271
+type   c-src/emacs/src/gmalloc.c       145
+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
+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 {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex     /^\\defunargs {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex     /^\\defunargs {#3}\\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/
+unread_switch_frame    c-src/emacs/src/keyboard.c      204
+unsignedp      cccp.y  113
+unsignedp      y-src/cccp.y    112
+uprintmax_t    c-src/emacs/src/lisp.h  149
+uprintmax_t    c-src/emacs/src/lisp.h  154
+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/getopt.h  84
+val    c-src/emacs/src/lisp.h  691
+val    c-src/emacs/src/lisp.h  3027
+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)$/
+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  cccp.y  113
+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 {#3}\\endgroup %$/
+varargs        tex-src/texinfo.tex     /^\\defvarargs {#3}\\endgroup %$/
+varargs        tex-src/texinfo.tex     /^\\defvarargs {#2}\\endgroup %$/
+varargs        tex-src/texinfo.tex     /^\\defvarargs {#2}\\endgroup %$/
+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
+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        cccp.y  116
+voidval        y-src/cccp.y    115
+wait_status_ptr_t      c.c     161
+waiting_for_input      c-src/emacs/src/keyboard.c      150
+warning        cccp.y  /^warning (msg)$/
+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)$/
+what   c-src/etags.c   252
+wheel_syms     c-src/emacs/src/keyboard.c      4628
+where  c-src/emacs/src/lisp.h  2348
+width  make-src/Makefile       186
+width  make-src/Makefile       189
+width  make-src/Makefile       192
+width  make-src/Makefile       195
+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()$/
+write  php-src/lce_functions.php       /^      function write($save="yes")$/
+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      tex-src/texinfo.tex     /^\\refx{#1-snt}{} [\\printednodename], 
page\\tie\\refx{/
+x-get-selection-internal       c.c     /^DEFUN ("x-get-selection-internal", 
Fx_get_selectio/
+x-get-selection-internal       c.c     /^       Fx_get_selection_internal, 
Sx_get_selection/
+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)$/
+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     Makefile        /^xx="this line is here because of a fontlock bug$/
+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   83
+yycheck        parse.y 330
+yycheck        cccp.y  301
+yyclearin      /usr/share/bison/bison.simple   149
+yyclearin      /usr/share/bison/bison.simple   149
+yydebug        /usr/share/bison/bison.simple   237
+yydebug        /usr/share/bison/bison.simple   237
+yydefact       parse.y 219
+yydefact       cccp.y  239
+yydefgoto      parse.y 237
+yydefgoto      cccp.y  251
+yyerrhandle    /usr/share/bison/bison.simple   848
+yyerrhandle    /usr/share/bison/bison.simple   848
+yyerrlab1      /usr/share/bison/bison.simple   823
+yyerrlab1      /usr/share/bison/bison.simple   823
+yyerrok        /usr/share/bison/bison.simple   148
+yyerrok        /usr/share/bison/bison.simple   148
+yyerror        cccp.y  /^yyerror (s)$/
+yyerror        y-src/cccp.y    /^yyerror (s)$/
+yyerrstatus    /usr/share/bison/bison.simple   846
+yyerrstatus    /usr/share/bison/bison.simple   846
+yylex  cccp.y  /^yylex ()$/
+yylex  y-src/cccp.y    /^yylex ()$/
+yyls   /usr/share/bison/bison.simple   88
+yyls   /usr/share/bison/bison.simple   88
+yylsp  /usr/share/bison/bison.simple   748
+yylsp  /usr/share/bison/bison.simple   921
+yylsp  /usr/share/bison/bison.simple   748
+yylsp  /usr/share/bison/bison.simple   921
+yymemcpy       /usr/share/bison/bison.simple   264
+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   /^yymemcpy (char *yyto, const 
char *yyfrom, YYSIZE_T/
+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
+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
+yynewstate     /usr/share/bison/bison.simple   763
+yynewstate     /usr/share/bison/bison.simple   925
+yypact parse.y 242
+yypact cccp.y  256
+yyparse        /usr/share/bison/bison.simple   /^yyparse (YYPARSE_PARAM_ARG)$/
+yyparse        /usr/share/bison/bison.simple   /^yyparse (YYPARSE_PARAM_ARG)$/
+yypgoto        parse.y 260
+yypgoto        cccp.y  268
+yyprhs parse.y 134
+yyprhs cccp.y  167
+yyr1   parse.y 197
+yyr1   cccp.y  219
+yyr2   parse.y 207
+yyr2   cccp.y  228
+yyresult       /usr/share/bison/bison.simple   932
+yyresult       /usr/share/bison/bison.simple   939
+yyresult       /usr/share/bison/bison.simple   947
+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
+yyreturn       /usr/share/bison/bison.simple   933
+yyreturn       /usr/share/bison/bison.simple   940
+yyrhs  parse.y 142
+yyrhs  cccp.y  174
+yyrline        parse.y 171
+yyrline        cccp.y  195
+yyss   /usr/share/bison/bison.simple   85
+yyss   /usr/share/bison/bison.simple   85
+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
+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   316
+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   /^yystpcpy (char *yydest, const 
char *yysrc)$/
+yystrlen       /usr/share/bison/bison.simple   293
+yystrlen       /usr/share/bison/bison.simple   /^yystrlen (const char *yystr)$/
+yystrlen       /usr/share/bison/bison.simple   293
+yystrlen       /usr/share/bison/bison.simple   /^yystrlen (const char *yystr)$/
+yystype        cccp.y  118
+yytable        parse.y 269
+yytable        cccp.y  277
+yytname        parse.y 185
+yytname        cccp.y  208
+yytranslate    parse.y 101
+yytranslate    cccp.y  135
+yyvs   /usr/share/bison/bison.simple   86
+yyvs   /usr/share/bison/bison.simple   86
+yyvsp  /usr/share/bison/bison.simple   746
+yyvsp  /usr/share/bison/bison.simple   919
+yyvsp  /usr/share/bison/bison.simple   746
+yyvsp  /usr/share/bison/bison.simple   919
+z      c.c     144
+z      c.c     164
+|      tex-src/texinfo.tex     /^\\def|{{\\tt \\char '174}}$/
+~      tex-src/texinfo.tex     /^\\def~{{\\tt \\char '176}}$/
diff --git a/test/etags/ETAGS.good_1 b/test/etags/ETAGS.good_1
new file mode 100644
index 0000000..6762bf3
--- /dev/null
+++ b/test/etags/ETAGS.good_1
@@ -0,0 +1,4216 @@
+
+Makefile,683
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,584
+ERLSRC=11,654
+FORTHSRC=12,699
+FSRC=13,749
+HTMLSRC=14,821
+LUASRC=16,950
+MAKESRC=17,993
+OBJCSRC=18,1035
+OBJCPPSRC=19,1116
+PASSRC=20,1179
+PERLSRC=21,1221
+PHPSRC=22,1291
+PSSRC=23,1363
+PROLSRC=24,1403
+PYTSRC=25,1465
+TEXSRC=26,1506
+YSRC=27,1585
+SRCS=28,1650
+NONSRCS=32,1902
+ETAGS_PROG=34,1976
+CTAGS_PROG=35,2007
+REGEX=37,2039
+xx=38,2085
+RUN=40,2134
+OPTIONS=42,2140
+ARGS=43,2192
+infiles 45,2210
+check:check47,2272
+ediff%:ediff%55,2575
+cdiff:cdiff58,2676
+ETAGS:ETAGS61,2773
+CTAGS:CTAGS64,2843
+srclist:srclist67,2921
+regexfile:regexfile71,3012
+.PRECIOUS:.PRECIOUS77,3189
+FRC:FRC79,3223
+
+ada-src/etags-test-for.ada,1969
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+   function Body_RequiredBody_Required/f3,78
+   type Type_Specific_Data Type_Specific_Data/t11,280
+   function "abs"abs/f19,504
+   type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+   function "="=/f27,722
+   type usfreelock_ptr usfreelock_ptr/t30,803
+   function p p/f33,891
+   procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+  type Private_T Private_T/t46,1220
+  package Inner1 Inner1/s48,1250
+    procedure Private_T;Private_T/p49,1270
+  package Inner2 Inner2/s52,1310
+    task Private_T;Private_T/k53,1330
+  type Public_T Public_T/t56,1365
+  procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+  procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+  function Pkg1_Func1 Pkg1_Func1/f66,1514
+  function Pkg1_Func2 Pkg1_Func2/f68,1553
+  package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+  task type Task_Type Task_Type/k75,1694
+  type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+  procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+  package body Inner1 Inner1/b96,1956
+    procedure Private_T Private_T/p97,1981
+  package body Inner2 Inner2/b103,2054
+    task body Private_T Private_T/b104,2079
+  task body Task_Type Task_Type/b112,2181
+  procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+  function Pkg1_Func1 Pkg1_Func1/f132,2445
+  function Pkg1_Func2 Pkg1_Func2/f134,2496
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function  Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+  protected Bidule Bidule/t168,2953
+  protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+  protected body Bidule Bidule/b179,3115
+  protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+   package RTE RTE/s69,2712
+   package TSL TSL/s70,2759
+   function To_void_ptr To_void_ptr/f86,3287
+   function To_TCB_Ptr To_TCB_Ptr/f89,3366
+   function 
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+   function 
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+   procedure Abort_WrapperAbort_Wrapper/p115,4302
+   procedure LL_Wrapper LL_Wrapper/p122,4526
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+   function Self Self/f160,5586
+   procedure Initialize_LockInitialize_Lock/p174,5958
+   procedure Finalize_Lock Finalize_Lock/p210,6927
+   procedure Write_Lock Write_Lock/p226,7338
+   procedure Read_Lock Read_Lock/p239,7700
+   procedure Unlock Unlock/p246,7850
+   procedure Initialize_Cond Initialize_Cond/p258,8160
+   procedure Finalize_Cond Finalize_Cond/p286,8979
+   procedure Cond_Wait Cond_Wait/p300,9303
+   procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+   procedure Cond_Signal Cond_Signal/p343,10510
+   procedure Set_PrioritySet_Priority/p355,10836
+   procedure Set_Own_Priority Set_Own_Priority/p372,11243
+   function Get_Priority Get_Priority/f385,11598
+   function Get_Own_Priority Get_Own_Priority/f398,12023
+   procedure Create_LL_TaskCreate_LL_Task/p412,12438
+      function To_Start_Addr To_Start_Addr/f426,12873
+   procedure Exit_LL_Task Exit_LL_Task/p491,14995
+   procedure Abort_Task Abort_Task/p500,15158
+   procedure Test_Abort Test_Abort/p518,15716
+   procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+   procedure Abort_WrapperAbort_Wrapper/p557,16939
+      function Address_To_Call_State Address_To_Call_State/f562,17062
+   procedure Install_Error_Handler Install_Error_Handler/p573,17351
+   procedure LL_Assert LL_Assert/p599,18146
+   procedure LL_Wrapper LL_Wrapper/p608,18299
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+   procedure Clear Clear/p640,19236
+   procedure Test_And_Set Test_And_Set/p645,19330
+   function  Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+   type Pre_Call_State Pre_Call_State/t64,3331
+   type Task_Storage_Size Task_Storage_Size/t66,3378
+   type Machine_Exceptions Machine_Exceptions/t68,3433
+   type Error_Information Error_Information/t70,3499
+   type Lock Lock/t72,3569
+   type Condition_Variable Condition_Variable/t73,3594
+   type Task_Control_Block Task_Control_Block/t81,3955
+   type TCB_Ptr TCB_Ptr/t89,4241
+   function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+   function Self Self/f100,4602
+   procedure Initialize_Lock Initialize_Lock/p103,4707
+   procedure Finalize_Lock Finalize_Lock/p107,4879
+   procedure Write_Lock Write_Lock/p111,5034
+   procedure Read_Lock Read_Lock/p118,5428
+   procedure Unlock Unlock/p128,5995
+   procedure Initialize_Cond Initialize_Cond/p135,6300
+   procedure Finalize_Cond Finalize_Cond/p138,6413
+   procedure Cond_Wait Cond_Wait/p142,6591
+   procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+   procedure Cond_Signal Cond_Signal/p164,7812
+   procedure Set_Priority Set_Priority/p169,8040
+   procedure Set_Own_Priority Set_Own_Priority/p173,8200
+   function Get_Priority Get_Priority/f177,8348
+   function Get_Own_Priority Get_Own_Priority/f181,8504
+   procedure Create_LL_TaskCreate_LL_Task/p185,8647
+   procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+   procedure Abort_Task Abort_Task/p203,9516
+   procedure Test_Abort;Test_Abort/p210,9878
+   type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+   procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+   procedure Install_Error_Handler Install_Error_Handler/p226,10741
+   procedure LL_Assert LL_Assert/p231,10983
+   type Proc Proc/t238,11240
+   type TAS_Cell TAS_Cell/t242,11328
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+   procedure Clear Clear/p260,12157
+   procedure Test_And_Set Test_And_Set/p267,12462
+   function  Is_Set Is_Set/f275,12877
+   type Lock Lock/t283,13155
+   type Condition_Variable Condition_Variable/t288,13267
+   type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+  type Private_T Private_T/t5,106
+  package Inner1 Inner1/s7,136
+    procedure Private_T;Private_T/p8,156
+  package Inner2 Inner2/s11,196
+    task Private_T;Private_T/k12,216
+  type Public_T Public_T/t15,251
+  procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+  procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+  function Pkg1_Func1 Pkg1_Func1/f25,400
+  function Pkg1_Func2 Pkg1_Func2/f27,439
+  package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+  task type Task_Type Task_Type/k34,580
+  type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+  procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+  package body Inner1 Inner1/b53,840
+    procedure Private_T Private_T/p54,865
+  package body Inner2 Inner2/b60,938
+    task body Private_T Private_T/b61,963
+  task body Task_Type Task_Type/b68,1064
+  procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+  function Pkg1_Func1 Pkg1_Func1/f88,1328
+  function Pkg1_Func2 Pkg1_Func2/f90,1379
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function  Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+  protected Bidule Bidule/t125,1964
+  protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+  protected body Bidule Bidule/b139,2181
+  protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,1432
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,147
+#define _GETOPT_H 19,801
+struct option73,2797
+#define        no_argument     89,3124
+#define required_argument      90,3147
+#define optional_argument      91,3175
+
+c-src/etags.c,10045
+char pot_etags_version[pot_etags_version81,3470
+#  undef DEBUG84,3552
+#  define DEBUG 85,3567
+#  define DEBUG 87,3594
+#  define NDEBUG       88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef  WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef  DOS_NT117,4160
+# define DOS_NT118,4176
+# undef  assert        135,4482
+# define assert(136,4541
+# undef  CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define        iswhite(159,5329
+#define notinname(160,5394
+#define        begtoken(161,5469
+#define        intoken(162,5542
+#define        endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+} compressor;188,6365
+} language;199,6835
+typedef struct fdesc201,6848
+} fdesc;212,7366
+typedef struct node_st214,7376
+} node;225,7894
+} linebuffer;239,8248
+    at_language,245,8344
+    at_regexp,246,8393
+    at_filename,247,8437
+    at_stdin,248,8473
+    at_end     249,8516
+} argument;253,8698
+typedef struct regexp256,8758
+} regexp;268,9325
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT  2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC   2199,69242
+enum sym_type2204,69312
+  st_none,2206,69328
+  st_C_objprot,2207,69339
+  st_C_objprot, st_C_objimpl,2207,69339
+  st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+  st_C_gnumacro,2208,69382
+  st_C_ignore,2209,69399
+  st_C_ignore, st_C_attribute,2209,69399
+  st_C_javastruct,2210,69430
+  st_C_operator,2211,69449
+  st_C_class,2212,69466
+  st_C_class, st_C_template,2212,69466
+  st_C_struct,2213,69495
+  st_C_struct, st_C_extern,2213,69495
+  st_C_struct, st_C_extern, st_C_enum,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+      TOTAL_KEYWORDS 2325,73018
+      MIN_WORD_LENGTH 2326,73045
+      MAX_WORD_LENGTH 2327,73072
+      MIN_HASH_VALUE 2328,73100
+      MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+  fvnone,2408,75435
+  fdefunkey,2409,75466
+  fdefunname,2410,75512
+  foperator,2411,75556
+  fvnameseen,2412,75613
+  fstartlist,2413,75666
+  finlist,2414,75722
+  flistseen,2415,75765
+  fignore,2416,75813
+  vignore      2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+  tnone,2428,76089
+  tkeyseen,2429,76119
+  ttypeseen,2430,76160
+  tinbody,2431,76199
+  tend,2432,76238
+  tignore      2433,76279
+} typdef;2434,76320
+  snone,2443,76499
+  skeyseen,2445,76575
+  stagseen,2446,76620
+  scolonseen   2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+  dnone,2460,76942
+  dsharpseen,2461,76972
+  ddefineseen,2462,77025
+  dignorerest  2463,77070
+} definedef;2464,77112
+  onone,2472,77267
+  oprotocol,2473,77297
+  oimplementation,2474,77347
+  otagseen,2475,77395
+  oparenseen,2476,77431
+  ocatseen,2477,77486
+  oinbody,2478,77525
+  omethodsign,2479,77568
+  omethodtag,2480,77626
+  omethodcolon,2481,77666
+  omethodparm,2482,77709
+  oignore      2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+} token;2508,78626
+} cstack;2523,79136
+#define nestlev        2525,79264
+#define instruct       2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+consider_token 2613,81341
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,47
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,47
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define        ENTRY(21,865
+#define        PSEUDO(26,972
+    movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+    movl $SYS_##syscall_name, %eax;eax31,1132
+    int $0x80;32,1180
+    test %eax,eax33,1210
+    test %eax, %eax;eax33,1210
+    jl syscall_error;34,1245
+#define        XCHG_0  47,1562
+#define        XCHG_1  48,1606
+#define        XCHG_2  49,1648
+#define        XCHG_3  50,1691
+#define        XCHG_4  51,1734
+#define        XCHG_5  52,1777
+#define        r0      54,1821
+#define        r1      55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int             count_words(15,263
+static char            *get_word(get_word35,553
+void                   tab_free(59,966
+char                   **tab_fill(tab_fill70,1129
+int                    tab_delete_first(91,1638
+int                    tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,3539
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT        124,3934
+#define BLOCKLOG       125,3977
+#define BLOCKSIZE      126,4018
+#define BLOCKIFY(127,4052
+#define HEAP   131,4215
+#define FINAL_FREE_BLOCKS      135,4391
+  } malloc_info;167,5388
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+struct list186,5939
+struct alignlist196,6153
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+enum mcheck_status283,9092
+    MCHECK_DISABLED 285,9115
+    MCHECK_OK,286,9187
+    MCHECK_FREE,287,9226
+    MCHECK_HEAD,288,9270
+    MCHECK_TAIL        289,9334
+struct mstats308,10153
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define        __sbrk  1513,46042
+__default_morecore 1525,46511
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+hybrid_get_current_dir_name 1811,53797
+#define MAGICWORD      1854,55206
+#define MAGICFREE      1855,55261
+#define MAGICBYTE      1856,55316
+#define MALLOCFLOOD    1857,55348
+#define FREEFLOOD      1858,55382
+struct hdr1860,55415
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,3761
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+#define RE_SYNTAX_EMACS        183,7684
+#define RE_SYNTAX_AWK  186,7780
+#define RE_SYNTAX_GNU_AWK      193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP        206,8549
+#define RE_SYNTAX_POSIX_EGREP  212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON        221,9072
+#define RE_SYNTAX_POSIX_BASIC  225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC  231,9508
+#define RE_SYNTAX_POSIX_EXTENDED       234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED       242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+  REG_ENOSYS 297,11859
+  REG_NOERROR 300,11941
+  REG_NOMATCH,301,11976
+  REG_BADPAT,305,12123
+  REG_ECOLLATE,306,12162
+  REG_ECTYPE,307,12203
+  REG_EESCAPE,308,12255
+  REG_ESUBREG,309,12298
+  REG_EBRACK,310,12345
+  REG_EPAREN,311,12391
+  REG_EBRACE,312,12436
+  REG_BADBR,313,12472
+  REG_ERANGE,314,12519
+  REG_ESPACE,315,12560
+  REG_BADRPT,316,12601
+  REG_EEND,319,12693
+  REG_ESIZE,320,12728
+  REG_ERPAREN,321,12790
+  REG_ERANGEX  322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+# define RE_NREGS 440,16942
+} regmatch_t;451,17317
+#  define _Restrict_ 540,20886
+#  define _Restrict_ 542,20979
+#  define _Restrict_544,21018
+#  define _Restrict_arr_ 555,21418
+#  define _Restrict_arr_557,21461
+#  define CHAR_CLASS_MAX_LENGTH 593,22470
+#  define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+              RECC_ALNUM,610,22984
+              RECC_ALNUM, RECC_ALPHA,610,22984
+              RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+              RECC_GRAPH,611,23027
+              RECC_GRAPH, RECC_PRINT,611,23027
+              RECC_LOWER,612,23059
+              RECC_LOWER, RECC_UPPER,612,23059
+              RECC_PUNCT,613,23091
+              RECC_PUNCT, RECC_CNTRL,613,23091
+              RECC_DIGIT,614,23123
+              RECC_DIGIT, RECC_XDIGIT,614,23123
+              RECC_BLANK,615,23156
+              RECC_BLANK, RECC_SPACE,615,23156
+              RECC_MULTIBYTE,616,23188
+              RECC_MULTIBYTE, RECC_NONASCII,616,23188
+              RECC_ASCII,617,23227
+              RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+typedef int re_wchar_t;623,23387
+
+c-src/emacs/src/keyboard.c,13565
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF        119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard 
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+unsigned timers_run;320,11296
+struct timespec 
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW  346,12046
+#define READABLE_EVENTS_FILTER_EVENTS  347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES     348,12142
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function", 
Fcommand_error_default_function,command-error-default-function1043,32030
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit", 
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit", 
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING   2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const 
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const 
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const 
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+
+c-src/emacs/src/lisp.h,20567
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+#  define EMACS_INT_MAX 93,3079
+#  define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+#  define EMACS_INT_MAX 98,3265
+#  define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+#  define EMACS_INT_MAX 105,3553
+#  define pI 106,3587
+enum {  BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+    BITS_PER_CHAR 136,4570
+    BITS_PER_SHORT 137,4605
+    BITS_PER_LONG 138,4657
+    BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+    VALBITS 246,8742
+    INTTYPEBITS 249,8838
+    FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+#  define check_cons_list(405,15097
+#  define make_number(408,15176
+#  define XFASTINT(409,15224
+#  define XINT(410,15266
+#  define XSYMBOL(411,15300
+#  define XTYPE(412,15340
+#  define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+    Lisp_Symbol 454,16851
+    Lisp_Misc 458,16993
+    Lisp_Int0 461,17067
+    Lisp_Int1 462,17086
+    Lisp_String 466,17264
+    Lisp_Vectorlike 472,17543
+    Lisp_Cons 475,17632
+    Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+    Lisp_Misc_Free 487,18040
+    Lisp_Misc_Marker,488,18069
+    Lisp_Misc_Overlay,489,18091
+    Lisp_Misc_Save_Value,490,18114
+    Lisp_Misc_Finalizer,491,18140
+    Lisp_Misc_Float,494,18275
+    Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+    Lisp_Fwd_Int,504,18566
+    Lisp_Fwd_Bool,505,18619
+    Lisp_Fwd_Obj,506,18670
+    Lisp_Fwd_Buffer_Obj,507,18729
+    Lisp_Fwd_Kboard_Obj        508,18800
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+enum symbol_interned639,24199
+  SYMBOL_UNINTERNED 641,24222
+  SYMBOL_INTERNED 642,24247
+  SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+  SYMBOL_PLAINVAL 648,24338
+  SYMBOL_VARALIAS 649,24362
+  SYMBOL_LOCALIZED 650,24386
+  SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+  ENUM_BF 663,24793
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY        712,26446
+#define DEFUN_ARGS_UNEVALLED   713,26498
+#define DEFUN_ARGS_0   714,26541
+#define DEFUN_ARGS_1   715,26569
+#define DEFUN_ARGS_2   716,26604
+#define DEFUN_ARGS_3   717,26652
+#define DEFUN_ARGS_4   718,26713
+#define DEFUN_ARGS_5   719,26787
+#define DEFUN_ARGS_6   721,26880
+#define DEFUN_ARGS_7   723,26986
+#define DEFUN_ARGS_8   725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+  PVEC_NORMAL_VECTOR,782,29585
+  PVEC_FREE,783,29607
+  PVEC_PROCESS,784,29620
+  PVEC_FRAME,785,29636
+  PVEC_WINDOW,786,29650
+  PVEC_BOOL_VECTOR,787,29665
+  PVEC_BUFFER,788,29685
+  PVEC_HASH_TABLE,789,29700
+  PVEC_TERMINAL,790,29719
+  PVEC_WINDOW_CONFIGURATION,791,29736
+  PVEC_SUBR,792,29765
+  PVEC_OTHER,793,29778
+  PVEC_COMPILED,795,29856
+  PVEC_CHAR_TABLE,796,29873
+  PVEC_SUB_CHAR_TABLE,797,29892
+  PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+    PSEUDOVECTOR_SIZE_BITS 808,30382
+    PSEUDOVECTOR_SIZE_MASK 809,30415
+    PSEUDOVECTOR_REST_BITS 813,30625
+    PSEUDOVECTOR_REST_MASK 814,30658
+    PSEUDOVECTOR_AREA_BITS 818,30823
+    PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+struct Lisp_Vector1369,46482
+    ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+    header_size 1471,49047
+    bool_header_size 1472,49106
+    word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+    CHARTAB_SIZE_BITS_0 1567,52516
+    CHARTAB_SIZE_BITS_1 1568,52545
+    CHARTAB_SIZE_BITS_2 1569,52574
+    CHARTAB_SIZE_BITS_3 1570,52603
+struct Lisp_Char_Table1575,52672
+struct Lisp_Sub_Char_Table1606,53752
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+enum char_table_specials1692,56798
+    CHAR_TABLE_STANDARD_SLOTS 1697,56993
+    SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+struct Lisp_Hash_Table1823,60555
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any   1971,64806
+  ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+  ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+    ENUM_BF 2034,67346
+    SAVE_UNUSED,2047,67641
+    SAVE_INTEGER,2048,67658
+    SAVE_FUNCPOINTER,2049,67676
+    SAVE_POINTER,2050,67698
+    SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+    SAVE_TYPE_INT_INT 2066,68096
+    SAVE_TYPE_INT_INT_INT2067,68169
+    SAVE_TYPE_OBJ_OBJ 2069,68259
+    SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+    SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+    SAVE_TYPE_PTR_INT 2073,68506
+    SAVE_TYPE_PTR_OBJ 2074,68579
+    SAVE_TYPE_PTR_PTR 2075,68651
+    SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+    SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+    ENUM_BF 2112,69900
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+struct Lisp_Free2201,72581
+    ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+struct Lisp_Boolfwd2284,74411
+struct Lisp_Objfwd2294,74702
+struct Lisp_Buffer_Objfwd2302,74934
+struct Lisp_Buffer_Local_Value2334,76470
+struct Lisp_Kboard_Objfwd2362,77729
+union Lisp_Fwd2368,77838
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+XFLOAT_DATA 2401,78434
+    IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+    COMPILED_ARGLIST 2431,79389
+    COMPILED_BYTECODE 2432,79415
+    COMPILED_CONSTANTS 2433,79442
+    COMPILED_STACK_DEPTH 2434,79470
+    COMPILED_DOC_STRING 2435,79500
+    COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+    CHAR_ALT 2445,79850
+    CHAR_SUPER 2446,79876
+    CHAR_HYPER 2447,79904
+    CHAR_SHIFT 2448,79932
+    CHAR_CTL 2449,79960
+    CHAR_META 2450,79986
+    CHAR_MODIFIER_MASK 2452,80014
+    CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+enum maxargs2831,89401
+    MANY 2833,89418
+    UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+  SPECPDL_UNWIND,2944,93822
+  SPECPDL_UNWIND_PTR,2945,93891
+  SPECPDL_UNWIND_INT,2946,93942
+  SPECPDL_UNWIND_VOID,2947,93990
+  SPECPDL_BACKTRACE,2948,94044
+  SPECPDL_LET,2949,94102
+  SPECPDL_LET_LOCAL,2951,94232
+  SPECPDL_LET_DEFAULT  2952,94289
+union specbinding2955,94361
+    ENUM_BF 2957,94383
+      ENUM_BF 2959,94440
+      ENUM_BF 2964,94570
+      ENUM_BF 2969,94693
+      ENUM_BF 2974,94811
+      ENUM_BF 2978,94916
+      ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+#define PUSH_HANDLER(3053,97443
+#define QUIT   3101,99220
+#define QUITP 3112,99470
+struct gcpro3132,100313
+#define GC_USE_GCPROS_AS_BEFORE        3171,101294
+#define GC_MAKE_GCPROS_NOOPS   3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS     3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES    3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO        3353,109913
+#define RETURN_UNGCPRO(3363,110180
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+enum Arith_Comparison 3497,113300
+  ARITH_EQUAL,3498,113324
+  ARITH_NOTEQUAL,3499,113339
+  ARITH_LESS,3500,113357
+  ARITH_GRTR,3501,113371
+  ARITH_LESS_OR_EQUAL,3502,113385
+  ARITH_GRTR_OR_EQUAL3503,113408
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_formatted_string 3767,124631
+build_pure_c_string 3792,125659
+build_string 3801,125864
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+intern 3968,132131
+intern_c_string 3974,132219
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern _Noreturn void emacs_abort 4374,148383
+egetenv 4532,152806
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA        4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+union Aligned_String4676,157349
+    USE_STACK_CONS 4689,157704
+    USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define        SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/h.h,1850
+   ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+typedef struct tpcmd8,147
+#define ggg 10,170
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+} foobar2;20,307
+    DEVICE_SWP,23,333
+    DEVICE_LAST24,349
+} bsp_DevId;25,365
+  struct constant_args 27,394
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+} ghi1;36,534
+typedef union abc 37,542
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage 
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+} an_extern_linkage;56,1054
+typedef struct pollfd   pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+  } womboid 63,1206
+typedef union rtunion_def64,1220
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+  Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous      117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+
+cp-src/c.C,2225
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+        void execute(CMultiChannelCSC19_3D::execute11,493
+int main 25,1026
+double base 26,1088
+typedef struct s1 32,1251
+} t1;34,1287
+struct s2 35,1293
+typedef struct s2 t2;38,1324
+class A 39,1346
+  enum { rosso,A::rosso40,1356
+  enum { rosso, giallo,A::giallo40,1356
+  enum { rosso, giallo, verde A::verde40,1356
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+class AU 53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A 57,1826
+  A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+     void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct B 74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+class test 86,2156
+  int f(test::f87,2169
+  int ff(test::ff89,2231
+  int g(test::g90,2254
+class  AST_Root 92,2278
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+     void f(::f115,2733
+struct A 117,2753
+A::~A(120,2777
+struct B 122,2789
+    ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+    enum {dog,Boo::dog130,2880
+    enum {dog, cat}Boo::cat130,2880
+    foo(Boo::foo133,2954
+    Boo(Boo::Boo137,2995
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int 
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,709
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2 78,2022
+  MDiagArray2 MDiagArray2::MDiagArray282,2077
+  MDiagArray2 MDiagArray2::MDiagArray286,2154
+  MDiagArray2 MDiagArray2::MDiagArray287,2198
+  MDiagArray2 MDiagArray2::MDiagArray288,2254
+  MDiagArray2 MDiagArray2::MDiagArray289,2329
+  MDiagArray2 MDiagArray2::MDiagArray290,2387
+  MDiagArray2 MDiagArray2::MDiagArray291,2450
+  ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+  MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+  operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Range.h,424
+#define octave_Range_h 24,765
+Range35,891
+  Range Range::Range39,909
+  Range Range::Range42,995
+  Range Range::Range46,1130
+  Range Range::Range50,1248
+  double base Range::base54,1376
+  double limit Range::limit55,1425
+  double inc Range::inc56,1475
+  int nelem Range::nelem57,1523
+  void set_base Range::set_base68,1728
+  void set_limit Range::set_limit69,1774
+  void set_inc Range::set_inc70,1821
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,667
+#define __COLORS9,401
+enum COLORS 11,419
+    BLACK,COLORS::BLACK12,433
+    BLUE,COLORS::BLUE13,471
+    GREEN,COLORS::GREEN14,481
+    CYAN,COLORS::CYAN15,492
+    RED,COLORS::RED16,502
+    MAGENTA,COLORS::MAGENTA17,511
+    BROWN,COLORS::BROWN18,524
+    LIGHTGRAY,COLORS::LIGHTGRAY19,535
+    DARKGRAY,COLORS::DARKGRAY20,550
+    LIGHTBLUE,COLORS::LIGHTBLUE21,589
+    LIGHTGREEN,COLORS::LIGHTGREEN22,604
+    LIGHTCYAN,COLORS::LIGHTCYAN23,620
+    LIGHTRED,COLORS::LIGHTRED24,635
+    LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+    YELLOW,COLORS::YELLOW26,667
+    WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,244
+class site:site5,235
+    site(site::site10,344
+    char read(site::read12,410
+    void set(site::set13,444
+    void clear(site::clear14,478
+    void compute_next_state(site::compute_next_state15,514
+    void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,609
+class generic_object13,520
+    virtual void compute_next_state(generic_object::compute_next_state21,842
+    virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+    location(location::location43,1642
+class irregular_location:irregular_location47,1686
+    irregular_location(irregular_location::irregular_location51,1762
+class discrete_location:discrete_location56,1889
+    discrete_location(discrete_location::discrete_location62,2044
+    void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+
+cp-src/fail.C,365
+struct A 7,263
+          struct B A::B8,274
+                  struct C A::B::C9,289
+                          C(A::B::C::C11,318
+                          operator int(A::B::C::operator int12,342
+                  typedef C T;A::B::T14,389
+          typedef B T2;A::T216,414
+class A 23,453
+       class B A::B24,463
+               class C A::B::C25,474
+               int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+       class D 41,622
+               D(D::D43,659
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5069
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias 
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+f-src/entry.for,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+       ENTRY  MSGSEL 193,4382
+     & intensity1(375,8135
+       character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+   9   field   >field136,582
+   5   field   >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+&nbsp;8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the 
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and 
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or 
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1133
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+       @-$($72,3064
+       @-$($73,3113
+       @-$($74,3177
+       @-$($75,3223
+       @-$($76,3291
+       @-$($77,3383
+       @$(81,3466
+       @$(82,3514
+       @$(83,3577
+       @$(84,3622
+       @$(85,3689
+       @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+       @env CHECKEROPTS=92,3922
+       @$(98,4094
+       @$(106,4250
+       @$(110,4374
+       @$(114,4500
+       @for i in $(SRCS); do echo $$i;140,5315
+       $(160,6053
+       $(163,6114
+       $(166,6177
+       $(169,6228
+       $(172,6317
+       sdiff --suppress-common-lines --width=width186,6614
+       sdiff --suppress-common-lines --width=width189,6703
+       sdiff --suppress-common-lines --width=width192,6791
+       sdiff --suppress-common-lines --width=width195,6880
+       TEXTAGS=204,7122
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7122
+       ${RUN} etags12 --members -o $@ --regex=regex207,7239
+       ${RUN} ./ctags -o $@ --regex=regex213,7388
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+       TEXTAGS=219,7583
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7583
+       ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,475
+#define        PTY_TEMPLATE 20,494
+#define        PTY_LENGTH 21,528
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+    andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS       36,1101
+#define TYPESTOSTAT    37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION        34,1116
+#   define DEBUG 37,1155
+#define LISTCONTENTS   39,1181
+#define OPENBUTTON     47,1352
+#define LISTCONTENTSBUTTON     48,1449
+#define LISTDESCRIPTIONBUTTON  49,1562
+#define STATE_UNINSTALLED      52,1687
+#define STATE_INSTALLED        53,1807
+#define STATE_COMPRESSD        54,1948
+#define SIZEFORMAT     57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type 
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING        368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2152
+  define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+  define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+  define("LCE_WS"LCE_WS11,194
+  define("LCE_COMMENT"LCE_COMMENT13,244
+  define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+  define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+  define("LCE_MSGID"LCE_MSGID19,430
+  define("LCE_MSGSTR"LCE_MSGSTR21,488
+  define("LCE_TEXT"LCE_TEXT23,541
+  define("STATE_ABORT"STATE_ABORT25,567
+  define("STATE_OK"STATE_OK26,595
+  define("STATE_LOOP"STATE_LOOP27,620
+  class POEntryAD 29,648
+      function validate(31,683
+      function checkQuotation(59,1384
+  class CommentAD 70,1639
+      function CommentAD(73,1693
+      function validate(83,1944
+  class POEntry 105,2410
+      function POEntry(119,2711
+      function lineCount(135,3255
+      function serializeToVars(141,3365
+      function write(151,3800
+  class POReader 163,4178
+      function gettext(177,4457
+      function parseFromVars(189,4705
+      function serializeToVars(215,5331
+      function POReader(229,5613
+      function read(243,5983
+      function write(259,6307
+      function isComment(277,6645
+      function comment(284,6822
+      function msgid(304,7247
+      function msgstr(320,7574
+      function start(340,8232
+      function createPOEntries(360,8644
+      function stripLine(394,9472
+      function printClassification(421,10056
+      function classifyLine(432,10301
+  function getTextDomains(471,11094
+  class PORManager 498,11756
+      function PORManager(502,11822
+      function addPOReader(507,11896
+      function &getPOReader(getPOReader512,11992
+      function getDomainNames(517,12081
+  function &loadPORManager(loadPORManager523,12174
+  function fileJoin(536,12436
+      function lce_bindtextdomain(557,12839
+      function lce_textdomain(614,14530
+      function lce_gettext(620,14641
+      function lce_dgettext(626,14767
+      function lce(634,14966
+      function lce_bindtextdomain(651,15488
+      function lce_textdomain(656,15592
+      function lce_gettext(661,15674
+      function lce_dgettext(666,15755
+      function lce(670,15855
+  function lce_geteditcode(676,15898
+
+php-src/ptest.php,46
+define("TEST"TEST1,0
+test 4,26
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+         my $entry entry218,5621
+         my $entry entry234,6077
+             my $entry entry245,6351
+         my $entry entry252,6536
+         my $entry entry268,7010
+             my $entry entry276,7204
+         my $entry entry281,7328
+      my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+  my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+       local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+       local($prog,$_,@list)($prog,$_,@list39,868
+       
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+    def __init__(18,374
+    def __repr__(24,590
+    def __str__(34,871
+class Server:Server37,934
+    def __init__(38,948
+    def dump(73,2198
+    def __repr__(125,3896
+    def __str__(128,3945
+class User:User131,4014
+    def __init__(132,4026
+    def __repr__(172,5445
+    def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+    def bind(234,7525
+    def focus_set(236,7584
+    def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+    def __init__(269,8808
+    def handleList(303,10042
+    def handleNew(306,10094
+    def editItem(314,10426
+    def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+    def PostControls(376,12403
+    def GatherControls(421,13530
+class ServerEdit(512,16264
+    def __init__(513,16289
+    def post(525,16629
+    def gather(543,17191
+    def nosave(547,17304
+    def save(551,17408
+    def refreshPort(556,17509
+    def createWidgets(561,17663
+    def edituser(631,20708
+class UserEdit(645,20921
+    def __init__(646,20944
+    def post(658,21283
+    def gather(676,21841
+    def nosave(680,21950
+    def save(684,22052
+    def createWidgets(689,22151
+class Configure(760,24879
+    def __init__(761,24916
+    def MakeDispose(772,25211
+    def MakeSitelist(786,25706
+    def editsite(794,25949
+    def save(797,26022
+    def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+  \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+   \def\subtitlefont{\subtitlefont765,24968
+   \def\authorfont{\authorfont767,25052
+   \def\title{\title773,25262
+   \def\titlezzz##1{\titlezzz774,25297
+   \def\subtitle{\subtitle782,25612
+   \def\subtitlezzz##1{\subtitlezzz783,25653
+   \def\author{\author786,25771
+   \def\authorzzz##1{\authorzzz787,25808
+   \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+  \def\thearg{\thearg1145,37720
+  \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0  %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+  \def\indexbackslash{\indexbackslash1480,48406
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+  \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+  address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+  address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+     address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno  \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+  {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+  {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+  {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+      \def\secentry ##1##2##3##4{\secentry2066,68220
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+    {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+  \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,1663
+my_printf 135,
+void fatala 138,
+max 141,
+struct bar 143,
+__attribute__ ((always_inline)) max 147,
+struct foo150,
+char stack[stack155,
+struct S 156,
+} wait_status_ptr_t 161,
+Some_Class  A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S  __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+     f1 183,
+void f2 184,
+int x 188,
+struct foo 189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal", 
Fx_get_selection_internal,x-get-selection-internal206,
+       Fx_get_selection_internal,x-get-selection-internal212,
+      Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+  aaa;249,
+  bbb;251,
+struct sss1 252,
+struct sss2253,
+  struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+  **b;b262,
+caccacacca 263,
+a 267,
+  typedef struct aa 269,
+  typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+  typedef  int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,738
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+VOIDSTAR parse_hash;63,1400
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+char *instr;instr80,1790
+int parse_error 81,1803
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define       NE      6,114
+# define       LE      7,130
+# define       GE      8,146
+# define       NEG     9,162
+# define       L_CELL  10,179
+# define       L_RANGE 11,199
+# define       L_VAR   12,220
+# define       L_CONST 13,239
+# define       L_FN0   14,260
+# define       L_FN1   15,279
+# define       L_FN2   16,298
+# define       L_FN3   17,317
+# define       L_FN4   18,336
+# define       L_FNN   19,355
+# define       L_FN1R  20,374
+# define       L_FN2R  21,394
+# define       L_FN3R  22,414
+# define       L_FN4R  23,434
+# define       L_FNNR  24,454
+# define       L_LE    25,474
+# define       L_NE    26,492
+# define       L_GE    27,510
+
+parse.y,1181
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+VOIDSTAR parse_hash;63,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+char *instr;instr80,
+int parse_error 81,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define        YYFINAL 93,
+#define        YYFLAG  94,
+#define        YYNTBASE        95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define        YYLAST  266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2110
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyresult 947,
+
+y-src/atest.y,9
+exp    2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define       INT     6,113
+# define       CHAR    7,130
+# define       NAME    8,148
+# define       ERROR   9,166
+# define       OR      10,185
+# define       AND     11,201
+# define       EQUAL   12,218
+# define       NOTEQUAL        13,237
+# define       LEQ     14,259
+# define       GEQ     15,276
+# define       LSH     16,293
+# define       RSH     17,310
+# define       UNARY   18,327
+
+cccp.y,1579
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+  struct constant 113,
+  struct name 114,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define        YYFINAL 127,
+#define        YYFLAG  128,
+#define        YYNTBASE        129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define        YYLAST  274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2110
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyresult 947,
+
+y-src/cccp.y,1107
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+  struct constant 112,2733
+  struct name 113,2789
+start 143,3226
+exp1   148,3330
+exp    156,3505
+exp    185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+c-src/fail.c,0
+
+a-src/empty.zz,0
diff --git a/test/etags/ETAGS.good_2 b/test/etags/ETAGS.good_2
new file mode 100644
index 0000000..32b58d8
--- /dev/null
+++ b/test/etags/ETAGS.good_2
@@ -0,0 +1,4842 @@
+
+Makefile,683
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,584
+ERLSRC=11,654
+FORTHSRC=12,699
+FSRC=13,749
+HTMLSRC=14,821
+LUASRC=16,950
+MAKESRC=17,993
+OBJCSRC=18,1035
+OBJCPPSRC=19,1116
+PASSRC=20,1179
+PERLSRC=21,1221
+PHPSRC=22,1291
+PSSRC=23,1363
+PROLSRC=24,1403
+PYTSRC=25,1465
+TEXSRC=26,1506
+YSRC=27,1585
+SRCS=28,1650
+NONSRCS=32,1902
+ETAGS_PROG=34,1976
+CTAGS_PROG=35,2007
+REGEX=37,2039
+xx=38,2085
+RUN=40,2134
+OPTIONS=42,2140
+ARGS=43,2192
+infiles 45,2210
+check:check47,2272
+ediff%:ediff%55,2575
+cdiff:cdiff58,2676
+ETAGS:ETAGS61,2773
+CTAGS:CTAGS64,2843
+srclist:srclist67,2921
+regexfile:regexfile71,3012
+.PRECIOUS:.PRECIOUS77,3189
+FRC:FRC79,3223
+
+ada-src/etags-test-for.ada,1969
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+   function Body_RequiredBody_Required/f3,78
+   type Type_Specific_Data Type_Specific_Data/t11,280
+   function "abs"abs/f19,504
+   type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+   function "="=/f27,722
+   type usfreelock_ptr usfreelock_ptr/t30,803
+   function p p/f33,891
+   procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+  type Private_T Private_T/t46,1220
+  package Inner1 Inner1/s48,1250
+    procedure Private_T;Private_T/p49,1270
+  package Inner2 Inner2/s52,1310
+    task Private_T;Private_T/k53,1330
+  type Public_T Public_T/t56,1365
+  procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+  procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+  function Pkg1_Func1 Pkg1_Func1/f66,1514
+  function Pkg1_Func2 Pkg1_Func2/f68,1553
+  package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+  task type Task_Type Task_Type/k75,1694
+  type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+  procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+  package body Inner1 Inner1/b96,1956
+    procedure Private_T Private_T/p97,1981
+  package body Inner2 Inner2/b103,2054
+    task body Private_T Private_T/b104,2079
+  task body Task_Type Task_Type/b112,2181
+  procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+  function Pkg1_Func1 Pkg1_Func1/f132,2445
+  function Pkg1_Func2 Pkg1_Func2/f134,2496
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function  Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+  protected Bidule Bidule/t168,2953
+  protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+  protected body Bidule Bidule/b179,3115
+  protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+   package RTE RTE/s69,2712
+   package TSL TSL/s70,2759
+   function To_void_ptr To_void_ptr/f86,3287
+   function To_TCB_Ptr To_TCB_Ptr/f89,3366
+   function 
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+   function 
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+   procedure Abort_WrapperAbort_Wrapper/p115,4302
+   procedure LL_Wrapper LL_Wrapper/p122,4526
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+   function Self Self/f160,5586
+   procedure Initialize_LockInitialize_Lock/p174,5958
+   procedure Finalize_Lock Finalize_Lock/p210,6927
+   procedure Write_Lock Write_Lock/p226,7338
+   procedure Read_Lock Read_Lock/p239,7700
+   procedure Unlock Unlock/p246,7850
+   procedure Initialize_Cond Initialize_Cond/p258,8160
+   procedure Finalize_Cond Finalize_Cond/p286,8979
+   procedure Cond_Wait Cond_Wait/p300,9303
+   procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+   procedure Cond_Signal Cond_Signal/p343,10510
+   procedure Set_PrioritySet_Priority/p355,10836
+   procedure Set_Own_Priority Set_Own_Priority/p372,11243
+   function Get_Priority Get_Priority/f385,11598
+   function Get_Own_Priority Get_Own_Priority/f398,12023
+   procedure Create_LL_TaskCreate_LL_Task/p412,12438
+      function To_Start_Addr To_Start_Addr/f426,12873
+   procedure Exit_LL_Task Exit_LL_Task/p491,14995
+   procedure Abort_Task Abort_Task/p500,15158
+   procedure Test_Abort Test_Abort/p518,15716
+   procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+   procedure Abort_WrapperAbort_Wrapper/p557,16939
+      function Address_To_Call_State Address_To_Call_State/f562,17062
+   procedure Install_Error_Handler Install_Error_Handler/p573,17351
+   procedure LL_Assert LL_Assert/p599,18146
+   procedure LL_Wrapper LL_Wrapper/p608,18299
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+   procedure Clear Clear/p640,19236
+   procedure Test_And_Set Test_And_Set/p645,19330
+   function  Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+   type Pre_Call_State Pre_Call_State/t64,3331
+   type Task_Storage_Size Task_Storage_Size/t66,3378
+   type Machine_Exceptions Machine_Exceptions/t68,3433
+   type Error_Information Error_Information/t70,3499
+   type Lock Lock/t72,3569
+   type Condition_Variable Condition_Variable/t73,3594
+   type Task_Control_Block Task_Control_Block/t81,3955
+   type TCB_Ptr TCB_Ptr/t89,4241
+   function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+   function Self Self/f100,4602
+   procedure Initialize_Lock Initialize_Lock/p103,4707
+   procedure Finalize_Lock Finalize_Lock/p107,4879
+   procedure Write_Lock Write_Lock/p111,5034
+   procedure Read_Lock Read_Lock/p118,5428
+   procedure Unlock Unlock/p128,5995
+   procedure Initialize_Cond Initialize_Cond/p135,6300
+   procedure Finalize_Cond Finalize_Cond/p138,6413
+   procedure Cond_Wait Cond_Wait/p142,6591
+   procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+   procedure Cond_Signal Cond_Signal/p164,7812
+   procedure Set_Priority Set_Priority/p169,8040
+   procedure Set_Own_Priority Set_Own_Priority/p173,8200
+   function Get_Priority Get_Priority/f177,8348
+   function Get_Own_Priority Get_Own_Priority/f181,8504
+   procedure Create_LL_TaskCreate_LL_Task/p185,8647
+   procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+   procedure Abort_Task Abort_Task/p203,9516
+   procedure Test_Abort;Test_Abort/p210,9878
+   type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+   procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+   procedure Install_Error_Handler Install_Error_Handler/p226,10741
+   procedure LL_Assert LL_Assert/p231,10983
+   type Proc Proc/t238,11240
+   type TAS_Cell TAS_Cell/t242,11328
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+   procedure Clear Clear/p260,12157
+   procedure Test_And_Set Test_And_Set/p267,12462
+   function  Is_Set Is_Set/f275,12877
+   type Lock Lock/t283,13155
+   type Condition_Variable Condition_Variable/t288,13267
+   type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+  type Private_T Private_T/t5,106
+  package Inner1 Inner1/s7,136
+    procedure Private_T;Private_T/p8,156
+  package Inner2 Inner2/s11,196
+    task Private_T;Private_T/k12,216
+  type Public_T Public_T/t15,251
+  procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+  procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+  function Pkg1_Func1 Pkg1_Func1/f25,400
+  function Pkg1_Func2 Pkg1_Func2/f27,439
+  package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+  task type Task_Type Task_Type/k34,580
+  type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+  procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+  package body Inner1 Inner1/b53,840
+    procedure Private_T Private_T/p54,865
+  package body Inner2 Inner2/b60,938
+    task body Private_T Private_T/b61,963
+  task body Task_Type Task_Type/b68,1064
+  procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+  function Pkg1_Func1 Pkg1_Func1/f88,1328
+  function Pkg1_Func2 Pkg1_Func2/f90,1379
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function  Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+  protected Bidule Bidule/t125,1964
+  protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+  protected body Bidule Bidule/b139,2181
+  protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,1432
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,538
+#define _GETOPT_H 19,801
+extern char *optarg;optarg31,1109
+extern int optind;45,1617
+extern int opterr;50,1743
+struct option73,2797
+#define        no_argument     89,3124
+#define required_argument      90,3147
+#define optional_argument      91,3175
+extern int getopt 98,3440
+extern int getopt 100,3544
+extern int getopt_long 102,3599
+extern int getopt_long_only 104,3731
+extern int _getopt_internal 109,3942
+extern int getopt 114,4140
+extern int getopt_long 115,4162
+extern int getopt_long_only 116,4189
+extern int _getopt_internal 118,4222
+
+c-src/etags.c,12175
+char pot_etags_version[pot_etags_version81,3470
+#  undef DEBUG84,3552
+#  define DEBUG 85,3567
+#  define DEBUG 87,3594
+#  define NDEBUG       88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef  WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef  DOS_NT117,4160
+# define DOS_NT118,4176
+# undef  assert        135,4482
+# define assert(136,4541
+# undef  CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define        iswhite(159,5329
+#define notinname(160,5394
+#define        begtoken(161,5469
+#define        intoken(162,5542
+#define        endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+} compressor;188,6365
+} language;199,6835
+typedef struct fdesc201,6848
+} fdesc;212,7366
+typedef struct node_st214,7376
+} node;225,7894
+} linebuffer;239,8248
+    at_language,245,8344
+    at_regexp,246,8393
+    at_filename,247,8437
+    at_stdin,248,8473
+    at_end     249,8516
+} argument;253,8698
+typedef struct regexp256,8758
+} regexp;268,9325
+static void Ada_funcs 274,9428
+static void Asm_labels 275,9460
+static void C_entries 276,9493
+static void default_C_entries 277,9536
+static void plain_C_entries 278,9576
+static void Cjava_entries 279,9614
+static void Cobol_paragraphs 280,9650
+static void Cplusplus_entries 281,9689
+static void Cstar_entries 282,9729
+static void Erlang_functions 283,9765
+static void Forth_words 284,9804
+static void Fortran_functions 285,9838
+static void HTML_labels 286,9878
+static void Lisp_functions 287,9912
+static void Lua_functions 288,9949
+static void Makefile_targets 289,9985
+static void Pascal_functions 290,10024
+static void Perl_functions 291,10063
+static void PHP_functions 292,10100
+static void PS_functions 293,10136
+static void Prolog_functions 294,10171
+static void Python_functions 295,10210
+static void Scheme_functions 296,10249
+static void TeX_commands 297,10288
+static void Texinfo_nodes 298,10323
+static void Yacc_entries 299,10359
+static void just_read_file 300,10394
+static language *get_language_from_langname 
get_language_from_langname302,10432
+static void readline 303,10492
+static long readline_internal 304,10537
+static bool nocase_tail 305,10591
+static void get_tag 306,10631
+static void analyze_regex 308,10671
+static void free_regexps 309,10707
+static void regex_tag_multiline 310,10740
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int total_size_of_entries 2067,66150
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT  2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC   2199,69242
+enum sym_type2204,69312
+  st_none,2206,69328
+  st_C_objprot,2207,69339
+  st_C_objprot, st_C_objimpl,2207,69339
+  st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+  st_C_gnumacro,2208,69382
+  st_C_ignore,2209,69399
+  st_C_ignore, st_C_attribute,2209,69399
+  st_C_javastruct,2210,69430
+  st_C_operator,2211,69449
+  st_C_class,2212,69466
+  st_C_class, st_C_template,2212,69466
+  st_C_struct,2213,69495
+  st_C_struct, st_C_extern,2213,69495
+  st_C_struct, st_C_extern, st_C_enum,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+      TOTAL_KEYWORDS 2325,73018
+      MIN_WORD_LENGTH 2326,73045
+      MAX_WORD_LENGTH 2327,73072
+      MIN_HASH_VALUE 2328,73100
+      MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+  fvnone,2408,75435
+  fdefunkey,2409,75466
+  fdefunname,2410,75512
+  foperator,2411,75556
+  fvnameseen,2412,75613
+  fstartlist,2413,75666
+  finlist,2414,75722
+  flistseen,2415,75765
+  fignore,2416,75813
+  vignore      2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+  tnone,2428,76089
+  tkeyseen,2429,76119
+  ttypeseen,2430,76160
+  tinbody,2431,76199
+  tend,2432,76238
+  tignore      2433,76279
+} typdef;2434,76320
+  snone,2443,76499
+  skeyseen,2445,76575
+  stagseen,2446,76620
+  scolonseen   2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+  dnone,2460,76942
+  dsharpseen,2461,76972
+  ddefineseen,2462,77025
+  dignorerest  2463,77070
+} definedef;2464,77112
+  onone,2472,77267
+  oprotocol,2473,77297
+  oimplementation,2474,77347
+  otagseen,2475,77395
+  oparenseen,2476,77431
+  ocatseen,2477,77486
+  oinbody,2478,77525
+  omethodsign,2479,77568
+  omethodtag,2480,77626
+  omethodcolon,2481,77666
+  omethodparm,2482,77709
+  oignore      2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+} token;2508,78626
+static void pushclass_above 2514,78784
+static void popclass_above 2515,78832
+static void write_classname 2516,78866
+} cstack;2523,79136
+#define nestlev        2525,79264
+#define instruct       2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+static bool consider_token 2592,80761
+static void make_C_tag 2593,80833
+consider_token 2613,81341
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+static void F_takeprec 3910,111965
+static void F_getit 3911,111996
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+static void L_getit 4706,130277
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static void TEX_mode 4917,135172
+static void TEX_decode_env 4918,135203
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+static size_t prolog_pr 5214,142192
+static void prolog_skip_comment 5215,142234
+static size_t prolog_atom 5216,142290
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+static int erlang_func 5374,145540
+static void erlang_attribute 5375,145581
+static int erlang_atom 5376,145620
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+static char *scan_separators scan_separators5520,148487
+static void add_regex 5521,148526
+static char *substitute substitute5522,148570
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,47
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,47
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define        ENTRY(21,865
+#define        PSEUDO(26,972
+    movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+    movl $SYS_##syscall_name, %eax;eax31,1132
+    int $0x80;32,1180
+    test %eax,eax33,1210
+    test %eax, %eax;eax33,1210
+    jl syscall_error;34,1245
+#define        XCHG_0  47,1562
+#define        XCHG_1  48,1606
+#define        XCHG_2  49,1648
+#define        XCHG_3  50,1691
+#define        XCHG_4  51,1734
+#define        XCHG_5  52,1777
+#define        r0      54,1821
+#define        r1      55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int             count_words(15,263
+static char            *get_word(get_word35,553
+void                   tab_free(59,966
+char                   **tab_fill(tab_fill70,1129
+int                    tab_delete_first(91,1638
+int                    tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,6643
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+extern void emacs_abort 47,1305
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+extern void *bss_sbrk bss_sbrk76,2335
+extern int bss_sbrk_did_unexec;77,2375
+extern char bss_sbrk_buffer[bss_sbrk_buffer78,2407
+extern void *bss_sbrk_buffer_end;bss_sbrk_buffer_end79,2438
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT        124,3934
+#define BLOCKLOG       125,3977
+#define BLOCKSIZE      126,4018
+#define BLOCKIFY(127,4052
+#define HEAP   131,4215
+#define FINAL_FREE_BLOCKS      135,4391
+  } malloc_info;167,5388
+extern char *_heapbase;_heapbase170,5449
+extern malloc_info *_heapinfo;_heapinfo173,5541
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+extern size_t _heapindex;180,5797
+extern size_t _heaplimit;183,5866
+struct list186,5939
+extern struct list _fraghead[_fraghead193,6056
+struct alignlist196,6153
+extern struct alignlist *_aligned_blocks;_aligned_blocks202,6334
+extern size_t _chunks_used;205,6401
+extern size_t _bytes_used;206,6429
+extern size_t _chunks_free;207,6456
+extern size_t _bytes_free;208,6484
+extern void *_malloc_internal _malloc_internal213,6673
+extern void *_realloc_internal _realloc_internal214,6713
+extern void _free_internal 215,6762
+extern void *_malloc_internal_nolock _malloc_internal_nolock216,6799
+extern void *_realloc_internal_nolock _realloc_internal_nolock217,6846
+extern void _free_internal_nolock 218,6902
+extern pthread_mutex_t _malloc_mutex,221,6966
+extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;221,6966
+extern int _malloc_thread_enabled_p;222,7027
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+extern void *malloc_find_object_address malloc_find_object_address252,7865
+extern void *(*__morecore)__morecore256,8021
+extern void *__default_morecore __default_morecore259,8105
+extern void (*__after_morecore_hook)__after_morecore_hook263,8269
+extern size_t __malloc_extra_blocks;267,8442
+extern int __malloc_initialized;270,8552
+extern int __malloc_initialize 272,8646
+extern void (*__malloc_initialize_hook)__malloc_initialize_hook275,8723
+extern void (*__free_hook)__free_hook276,8771
+extern void *(*__malloc_hook)__malloc_hook277,8811
+extern void *(*__realloc_hook)__realloc_hook278,8856
+extern void *(*__memalign_hook)__memalign_hook279,8913
+enum mcheck_status283,9092
+    MCHECK_DISABLED 285,9115
+    MCHECK_OK,286,9187
+    MCHECK_FREE,287,9226
+    MCHECK_HEAD,288,9270
+    MCHECK_TAIL        289,9334
+extern int mcheck 296,9701
+extern enum mcheck_status mprobe 301,9952
+extern void mtrace 304,10055
+extern void muntrace 305,10082
+struct mstats308,10153
+extern struct mstats mstats 318,10518
+extern void memory_warnings 321,10625
+void *(*__malloc_hook)__malloc_hook352,11743
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+void (*__malloc_initialize_hook)__malloc_initialize_hook383,12398
+void (*__after_morecore_hook)__after_morecore_hook384,12439
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+extern void *_malloc _malloc956,29033
+extern void _free 957,29064
+extern void *_realloc _realloc958,29092
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+void (*__free_hook)__free_hook1001,30259
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+void *(*__realloc_hook)__realloc_hook1310,39898
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define        __sbrk  1513,46042
+extern void *__sbrk __sbrk1518,46247
+__default_morecore 1525,46511
+void *(*__memalign_hook)__memalign_hook1554,47456
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+extern void *valloc valloc1695,51140
+extern int getpagesize 1700,51278
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+extern void *malloc malloc1722,51609
+extern void *realloc realloc1723,51644
+extern void *calloc calloc1724,51691
+extern void free 1725,51740
+extern void *aligned_alloc aligned_alloc1727,51796
+extern int posix_memalign 1729,51890
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+char *gget_current_dir_name gget_current_dir_name1808,53753
+hybrid_get_current_dir_name 1811,53797
+static void (*old_free_hook)old_free_hook1846,54921
+static void *(*old_malloc_hook)old_malloc_hook1847,54963
+static void *(*old_realloc_hook)old_realloc_hook1848,55010
+static void (*abortfunc)abortfunc1851,55124
+#define MAGICWORD      1854,55206
+#define MAGICFREE      1855,55261
+#define MAGICBYTE      1856,55316
+#define MALLOCFLOOD    1857,55348
+#define FREEFLOOD      1858,55382
+struct hdr1860,55415
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,4576
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+extern reg_syntax_t re_syntax_options;167,7170
+extern Lisp_Object re_match_object;172,7344
+extern size_t re_max_failures;176,7454
+#define RE_SYNTAX_EMACS        183,7684
+#define RE_SYNTAX_AWK  186,7780
+#define RE_SYNTAX_GNU_AWK      193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP        206,8549
+#define RE_SYNTAX_POSIX_EGREP  212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON        221,9072
+#define RE_SYNTAX_POSIX_BASIC  225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC  231,9508
+#define RE_SYNTAX_POSIX_EXTENDED       234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED       242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+  REG_ENOSYS 297,11859
+  REG_NOERROR 300,11941
+  REG_NOMATCH,301,11976
+  REG_BADPAT,305,12123
+  REG_ECOLLATE,306,12162
+  REG_ECTYPE,307,12203
+  REG_EESCAPE,308,12255
+  REG_ESUBREG,309,12298
+  REG_EBRACK,310,12345
+  REG_EPAREN,311,12391
+  REG_EBRACE,312,12436
+  REG_BADBR,313,12472
+  REG_ERANGE,314,12519
+  REG_ESPACE,315,12560
+  REG_BADRPT,316,12601
+  REG_EEND,319,12693
+  REG_ESIZE,320,12728
+  REG_ERPAREN,321,12790
+  REG_ERANGEX  322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+# define RE_NREGS 440,16942
+} regmatch_t;451,17317
+extern reg_syntax_t re_set_syntax 457,17512
+extern const char *re_compile_pattern re_compile_pattern462,17776
+extern int re_compile_fastmap 469,18058
+extern regoff_t re_search 477,18466
+extern regoff_t re_search_2 485,18781
+extern regoff_t re_match 495,19177
+extern regoff_t re_match_2 501,19407
+extern void re_set_registers 520,20197
+extern char *re_comp re_comp528,20469
+extern int re_exec 529,20506
+#  define _Restrict_ 540,20886
+#  define _Restrict_ 542,20979
+#  define _Restrict_544,21018
+#  define _Restrict_arr_ 555,21418
+#  define _Restrict_arr_557,21461
+extern reg_errcode_t regcomp 562,21530
+extern reg_errcode_t regexec 566,21656
+extern size_t regerror 571,21850
+extern void regfree 574,21956
+#  define CHAR_CLASS_MAX_LENGTH 593,22470
+#  define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+              RECC_ALNUM,610,22984
+              RECC_ALNUM, RECC_ALPHA,610,22984
+              RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+              RECC_GRAPH,611,23027
+              RECC_GRAPH, RECC_PRINT,611,23027
+              RECC_LOWER,612,23059
+              RECC_LOWER, RECC_UPPER,612,23059
+              RECC_PUNCT,613,23091
+              RECC_PUNCT, RECC_CNTRL,613,23091
+              RECC_DIGIT,614,23123
+              RECC_DIGIT, RECC_XDIGIT,614,23123
+              RECC_BLANK,615,23156
+              RECC_BLANK, RECC_SPACE,615,23156
+              RECC_MULTIBYTE,616,23188
+              RECC_MULTIBYTE, RECC_NONASCII,616,23188
+              RECC_ASCII,617,23227
+              RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+extern char re_iswctype 620,23276
+extern re_wctype_t re_wctype 621,23329
+typedef int re_wchar_t;623,23387
+extern void re_set_whitespace_regexp 625,23412
+
+c-src/emacs/src/keyboard.c,15493
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF        119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard 
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+static void recursive_edit_unwind 313,11088
+static Lisp_Object command_loop 314,11144
+static void echo_now 316,11185
+static ptrdiff_t echo_length 317,11214
+unsigned timers_run;320,11296
+struct timespec 
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW  346,12046
+#define READABLE_EVENTS_FILTER_EVENTS  347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES     348,12142
+static void (*keyboard_init_hook)keyboard_init_hook351,12264
+static bool get_input_pending 353,12307
+static bool readable_events 354,12344
+static Lisp_Object read_char_x_menu_prompt 355,12379
+static Lisp_Object read_char_minibuf_menu_prompt 357,12502
+static Lisp_Object make_lispy_event 358,12571
+static Lisp_Object make_lispy_movement 359,12631
+static Lisp_Object modify_event_symbol 363,12840
+static Lisp_Object make_lispy_switch_frame 366,13050
+static Lisp_Object make_lispy_focus_in 367,13108
+static Lisp_Object make_lispy_focus_out 369,13188
+static bool help_char_p 371,13275
+static void save_getcjmp 372,13314
+static void restore_getcjmp 373,13354
+static Lisp_Object apply_modifiers 374,13397
+static void clear_event 375,13452
+static void restore_kboard_configuration 376,13500
+static void deliver_input_available_signal 378,13568
+static void handle_interrupt 380,13631
+static _Noreturn void quit_throw_to_read_char 381,13668
+static void process_special_events 382,13722
+static void timer_start_idle 383,13765
+static void timer_stop_idle 384,13802
+static void timer_resume_idle 385,13838
+static void deliver_user_signal 386,13876
+static char *find_user_signal_name find_user_signal_name387,13915
+static void store_user_signal_events 388,13957
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function", 
Fcommand_error_default_function,command-error-default-function1043,32030
+static Lisp_Object command_loop_2 1086,33637
+static Lisp_Object top_level_1 1087,33686
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit", 
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit", 
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+static int read_key_sequence 1282,38799
+static void adjust_point_for_property 1284,38917
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object kbd_buffer_get_event 2152,65484
+static void record_char 2154,65596
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING   2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const 
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const 
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const 
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static void menu_bar_item 7362,218341
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+static void init_tool_bar_items 7978,236664
+static void process_tool_bar_item 7979,236711
+static bool parse_tool_bar_item 7981,236801
+static void append_tool_bar_item 7982,236861
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+
+c-src/emacs/src/lisp.h,33973
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+#  define EMACS_INT_MAX 93,3079
+#  define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+#  define EMACS_INT_MAX 98,3265
+#  define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+#  define EMACS_INT_MAX 105,3553
+#  define pI 106,3587
+enum {  BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+verify 131,4450
+    BITS_PER_CHAR 136,4570
+    BITS_PER_SHORT 137,4605
+    BITS_PER_LONG 138,4657
+    BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+extern _Noreturn void die 204,7206
+extern bool suppress_checking EXTERNALLY_VISIBLE;206,7268
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+    VALBITS 246,8742
+    INTTYPEBITS 249,8838
+    FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+#  define check_cons_list(405,15097
+#  define make_number(408,15176
+#  define XFASTINT(409,15224
+#  define XINT(410,15266
+#  define XSYMBOL(411,15300
+#  define XTYPE(412,15340
+#  define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+    Lisp_Symbol 454,16851
+    Lisp_Misc 458,16993
+    Lisp_Int0 461,17067
+    Lisp_Int1 462,17086
+    Lisp_String 466,17264
+    Lisp_Vectorlike 472,17543
+    Lisp_Cons 475,17632
+    Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+    Lisp_Misc_Free 487,18040
+    Lisp_Misc_Marker,488,18069
+    Lisp_Misc_Overlay,489,18091
+    Lisp_Misc_Save_Value,490,18114
+    Lisp_Misc_Finalizer,491,18140
+    Lisp_Misc_Float,494,18275
+    Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+    Lisp_Fwd_Int,504,18566
+    Lisp_Fwd_Bool,505,18619
+    Lisp_Fwd_Obj,506,18670
+    Lisp_Fwd_Buffer_Obj,507,18729
+    Lisp_Fwd_Kboard_Obj        508,18800
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+INLINE bool BOOL_VECTOR_P 588,22350
+INLINE bool BUFFER_OBJFWDP 589,22391
+INLINE bool BUFFERP 590,22438
+INLINE bool CHAR_TABLE_P 591,22473
+INLINE Lisp_Object CHAR_TABLE_REF_ASCII 592,22513
+INLINE bool 593,22579
+INLINE bool 594,22614
+INLINE bool functionp 595,22650
+INLINE bool 596,22687
+INLINE bool 597,22725
+INLINE bool 598,22762
+INLINE bool 599,22797
+INLINE bool OVERLAYP 600,22831
+INLINE bool PROCESSP 601,22867
+INLINE bool PSEUDOVECTORP 602,22903
+INLINE bool SAVE_VALUEP 603,22949
+INLINE bool FINALIZERP 604,22988
+INLINE void set_sub_char_table_contents 605,23026
+INLINE bool STRINGP 607,23116
+INLINE bool SUB_CHAR_TABLE_P 608,23151
+INLINE bool SUBRP 609,23195
+INLINE bool 610,23228
+INLINE bool 611,23265
+INLINE bool WINDOWP 612,23306
+INLINE bool TERMINALP 613,23341
+INLINE struct Lisp_Save_Value *XSAVE_VALUE XSAVE_VALUE614,23378
+INLINE struct Lisp_Finalizer *XFINALIZER XFINALIZER615,23436
+INLINE struct Lisp_Symbol *(XSYMBOL)616,23492
+INLINE void 617,23544
+extern Lisp_Object char_table_ref 620,23616
+extern void char_table_set 621,23670
+extern _Noreturn Lisp_Object wrong_type_argument 624,23757
+extern _Noreturn void wrong_choice 625,23834
+extern bool might_dump;628,23925
+extern bool initialized;631,24061
+extern double extract_float 634,24117
+enum symbol_interned639,24199
+  SYMBOL_UNINTERNED 641,24222
+  SYMBOL_INTERNED 642,24247
+  SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+  SYMBOL_PLAINVAL 648,24338
+  SYMBOL_VARALIAS 649,24362
+  SYMBOL_LOCALIZED 650,24386
+  SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+  ENUM_BF 663,24793
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY        712,26446
+#define DEFUN_ARGS_UNEVALLED   713,26498
+#define DEFUN_ARGS_0   714,26541
+#define DEFUN_ARGS_1   715,26569
+#define DEFUN_ARGS_2   716,26604
+#define DEFUN_ARGS_3   717,26652
+#define DEFUN_ARGS_4   718,26713
+#define DEFUN_ARGS_5   719,26787
+#define DEFUN_ARGS_6   721,26880
+#define DEFUN_ARGS_7   723,26986
+#define DEFUN_ARGS_8   725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+  PVEC_NORMAL_VECTOR,782,29585
+  PVEC_FREE,783,29607
+  PVEC_PROCESS,784,29620
+  PVEC_FRAME,785,29636
+  PVEC_WINDOW,786,29650
+  PVEC_BOOL_VECTOR,787,29665
+  PVEC_BUFFER,788,29685
+  PVEC_HASH_TABLE,789,29700
+  PVEC_TERMINAL,790,29719
+  PVEC_WINDOW_CONFIGURATION,791,29736
+  PVEC_SUBR,792,29765
+  PVEC_OTHER,793,29778
+  PVEC_COMPILED,795,29856
+  PVEC_CHAR_TABLE,796,29873
+  PVEC_SUB_CHAR_TABLE,797,29892
+  PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+    PSEUDOVECTOR_SIZE_BITS 808,30382
+    PSEUDOVECTOR_SIZE_MASK 809,30415
+    PSEUDOVECTOR_REST_BITS 813,30625
+    PSEUDOVECTOR_REST_MASK 814,30658
+    PSEUDOVECTOR_AREA_BITS 818,30823
+    PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+extern ptrdiff_t string_bytes 1313,44337
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+struct Lisp_Vector1369,46482
+    ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+    header_size 1471,49047
+    bool_header_size 1472,49106
+    word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+    CHARTAB_SIZE_BITS_0 1567,52516
+    CHARTAB_SIZE_BITS_1 1568,52545
+    CHARTAB_SIZE_BITS_2 1569,52574
+    CHARTAB_SIZE_BITS_3 1570,52603
+extern const int chartab_size[chartab_size1573,52637
+struct Lisp_Char_Table1575,52672
+struct Lisp_Sub_Char_Table1606,53752
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+enum char_table_specials1692,56798
+    CHAR_TABLE_STANDARD_SLOTS 1697,56993
+    SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+verify 1714,57596
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+struct Lisp_Hash_Table1823,60555
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any   1971,64806
+  ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+  ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+    ENUM_BF 2034,67346
+    SAVE_UNUSED,2047,67641
+    SAVE_INTEGER,2048,67658
+    SAVE_FUNCPOINTER,2049,67676
+    SAVE_POINTER,2050,67698
+    SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+    SAVE_TYPE_INT_INT 2066,68096
+    SAVE_TYPE_INT_INT_INT2067,68169
+    SAVE_TYPE_OBJ_OBJ 2069,68259
+    SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+    SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+    SAVE_TYPE_PTR_INT 2073,68506
+    SAVE_TYPE_PTR_OBJ 2074,68579
+    SAVE_TYPE_PTR_PTR 2075,68651
+    SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+    SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+    ENUM_BF 2112,69900
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+struct Lisp_Free2201,72581
+    ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+struct Lisp_Boolfwd2284,74411
+struct Lisp_Objfwd2294,74702
+struct Lisp_Buffer_Objfwd2302,74934
+struct Lisp_Buffer_Local_Value2334,76470
+struct Lisp_Kboard_Objfwd2362,77729
+union Lisp_Fwd2368,77838
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+XFLOAT_DATA 2401,78434
+    IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+    COMPILED_ARGLIST 2431,79389
+    COMPILED_BYTECODE 2432,79415
+    COMPILED_CONSTANTS 2433,79442
+    COMPILED_STACK_DEPTH 2434,79470
+    COMPILED_DOC_STRING 2435,79500
+    COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+    CHAR_ALT 2445,79850
+    CHAR_SUPER 2446,79876
+    CHAR_HYPER 2447,79904
+    CHAR_SHIFT 2448,79932
+    CHAR_CTL 2449,79960
+    CHAR_META 2450,79986
+    CHAR_MODIFIER_MASK 2452,80014
+    CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+extern void defsubr 2829,89358
+enum maxargs2831,89401
+    MANY 2833,89418
+    UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+extern void defvar_lisp 2846,89959
+extern void defvar_lisp_nopro 2847,90036
+extern void defvar_bool 2848,90119
+extern void defvar_int 2849,90190
+extern void defvar_kboard 2850,90264
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+  SPECPDL_UNWIND,2944,93822
+  SPECPDL_UNWIND_PTR,2945,93891
+  SPECPDL_UNWIND_INT,2946,93942
+  SPECPDL_UNWIND_VOID,2947,93990
+  SPECPDL_BACKTRACE,2948,94044
+  SPECPDL_LET,2949,94102
+  SPECPDL_LET_LOCAL,2951,94232
+  SPECPDL_LET_DEFAULT  2952,94289
+union specbinding2955,94361
+    ENUM_BF 2957,94383
+      ENUM_BF 2959,94440
+      ENUM_BF 2964,94570
+      ENUM_BF 2969,94693
+      ENUM_BF 2974,94811
+      ENUM_BF 2978,94916
+      ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+#define PUSH_HANDLER(3053,97443
+extern Lisp_Object memory_signal_data;3075,98149
+extern char *stack_bottom;stack_bottom3079,98282
+extern void process_pending_signals 3097,99099
+extern bool volatile pending_signals;3098,99143
+extern void process_quit_flag 3100,99182
+#define QUIT   3101,99220
+#define QUITP 3112,99470
+extern Lisp_Object Vascii_downcase_table;3114,99531
+extern Lisp_Object Vascii_canon_table;3115,99573
+extern struct gcpro *gcprolist;gcprolist3130,100280
+struct gcpro3132,100313
+#define GC_USE_GCPROS_AS_BEFORE        3171,101294
+#define GC_MAKE_GCPROS_NOOPS   3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS     3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES    3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+extern int gcpro_level;3261,105037
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO        3353,109913
+#define RETURN_UNGCPRO(3363,110180
+void staticpro 3375,110453
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+extern Lisp_Object indirect_function 3495,113196
+extern Lisp_Object find_symbol_value 3496,113248
+enum Arith_Comparison 3497,113300
+  ARITH_EQUAL,3498,113324
+  ARITH_NOTEQUAL,3499,113339
+  ARITH_LESS,3500,113357
+  ARITH_GRTR,3501,113371
+  ARITH_LESS_OR_EQUAL,3502,113385
+  ARITH_GRTR_OR_EQUAL3503,113408
+extern Lisp_Object arithcompare 3505,113433
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+extern intmax_t cons_to_signed 3533,114837
+extern uintmax_t cons_to_unsigned 3534,114903
+extern struct Lisp_Symbol *indirect_variable indirect_variable3536,114964
+extern _Noreturn void args_out_of_range 3537,115033
+extern _Noreturn void args_out_of_range_3 3538,115101
+extern Lisp_Object do_symval_forwarding 3540,115192
+extern void set_internal 3541,115252
+extern void syms_of_data 3542,115324
+extern void swap_in_global_binding 3543,115357
+extern void syms_of_cmds 3546,115441
+extern void keys_of_cmds 3547,115474
+extern Lisp_Object detect_coding_system 3550,115536
+extern void init_coding 3552,115689
+extern void init_coding_once 3553,115721
+extern void syms_of_coding 3554,115758
+extern ptrdiff_t chars_in_text 3557,115825
+extern ptrdiff_t multibyte_chars_in_text 3558,115892
+extern void syms_of_character 3559,115969
+extern void init_charset 3562,116037
+extern void init_charset_once 3563,116070
+extern void syms_of_charset 3564,116108
+extern void init_syntax_once 3569,116228
+extern void syms_of_syntax 3570,116265
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+extern Lisp_Object listn 3740,123863
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_uninit_bool_vector 3763,124407
+extern Lisp_Object bool_vector_fill 3764,124463
+extern _Noreturn void string_overflow 3765,124527
+extern Lisp_Object make_string 3766,124573
+extern Lisp_Object make_formatted_string 3767,124631
+extern Lisp_Object make_multibyte_string 3779,124985
+extern Lisp_Object make_event_array 3780,125064
+extern Lisp_Object make_uninit_string 3781,125128
+extern Lisp_Object make_uninit_multibyte_string 3782,125179
+extern Lisp_Object make_string_from_bytes 3783,125251
+extern Lisp_Object make_specified_string 3784,125331
+extern Lisp_Object make_pure_string 3786,125423
+extern Lisp_Object make_pure_c_string 3787,125503
+build_pure_c_string 3792,125659
+build_string 3801,125864
+extern Lisp_Object pure_cons 3806,125942
+extern void make_byte_code 3807,125999
+extern struct Lisp_Vector *allocate_vector allocate_vector3808,126050
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+extern struct Lisp_Vector *allocate_pseudovector 
allocate_pseudovector3844,126963
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+extern bool gc_in_progress;3863,127735
+extern bool abort_on_gc;3864,127763
+extern Lisp_Object make_float 3865,127788
+extern void display_malloc_warning 3866,127828
+extern ptrdiff_t inhibit_garbage_collection 3867,127871
+extern Lisp_Object make_save_int_int_int 3868,127923
+extern Lisp_Object make_save_obj_obj_obj_obj 3869,127999
+extern Lisp_Object make_save_ptr 3871,128109
+extern Lisp_Object make_save_ptr_int 3872,128152
+extern Lisp_Object make_save_ptr_ptr 3873,128210
+extern Lisp_Object make_save_funcptr_ptr_obj 3874,128265
+extern Lisp_Object make_save_memory 3876,128361
+extern void free_save_value 3877,128425
+extern Lisp_Object build_overlay 3878,128468
+extern void free_marker 3879,128542
+extern void free_cons 3880,128581
+extern void init_alloc_once 3881,128625
+extern void init_alloc 3882,128661
+extern void syms_of_alloc 3883,128692
+extern struct buffer * allocate_buffer 3884,128726
+extern int valid_lisp_object_p 3885,128773
+extern int relocatable_string_data_p 3886,128819
+extern void check_cons_list 3888,128898
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+extern int openp 3957,131673
+extern Lisp_Object string_to_number 3959,131783
+extern void map_obarray 3960,131846
+extern void dir_warning 3962,131960
+extern void init_obarray 3963,132013
+extern void init_lread 3964,132046
+extern void syms_of_lread 3965,132077
+intern 3968,132131
+intern_c_string 3974,132219
+extern EMACS_INT lisp_eval_depth;3980,132332
+extern Lisp_Object Vautoload_queue;3981,132366
+extern Lisp_Object Vrun_hooks;3982,132402
+extern Lisp_Object Vsignaling_function;3983,132433
+extern Lisp_Object inhibit_lisp_code;3984,132473
+extern struct handler *handlerlist;handlerlist3985,132511
+extern void run_hook 3994,132753
+extern void run_hook_with_args_2 3995,132789
+extern Lisp_Object run_hook_with_args 3996,132863
+extern _Noreturn void xsignal 3999,133022
+extern _Noreturn void xsignal0 4000,133080
+extern _Noreturn void xsignal1 4001,133126
+extern _Noreturn void xsignal2 4002,133185
+extern _Noreturn void xsignal3 4003,133257
+extern _Noreturn void signal_error 4005,133346
+extern Lisp_Object eval_sub 4006,133410
+extern Lisp_Object apply1 4007,133458
+extern Lisp_Object call0 4008,133512
+extern Lisp_Object call1 4009,133552
+extern Lisp_Object call2 4010,133605
+extern Lisp_Object call3 4011,133671
+extern Lisp_Object call4 4012,133750
+extern Lisp_Object call5 4013,133842
+extern Lisp_Object call6 4014,133947
+extern Lisp_Object call7 4015,134065
+extern Lisp_Object internal_catch 4016,134196
+extern Lisp_Object internal_lisp_condition_case 4017,134289
+extern Lisp_Object internal_condition_case 4018,134378
+extern Lisp_Object internal_condition_case_1 4019,134491
+extern Lisp_Object internal_condition_case_2 4020,134626
+extern Lisp_Object internal_condition_case_n4021,134787
+extern void specbind 4024,134983
+extern void record_unwind_protect 4025,135032
+extern void record_unwind_protect_ptr 4026,135105
+extern void record_unwind_protect_int 4027,135172
+extern void record_unwind_protect_void 4028,135233
+extern void record_unwind_protect_nothing 4029,135291
+extern void clear_unwind_protect 4030,135341
+extern void set_unwind_protect 4031,135387
+extern void set_unwind_protect_ptr 4032,135468
+extern Lisp_Object unbind_to 4033,135543
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+extern ptrdiff_t fast_c_string_match_ignore_case 4141,140236
+extern ptrdiff_t fast_looking_at 4143,140333
+extern ptrdiff_t find_newline 4145,140472
+extern ptrdiff_t scan_newline 4147,140601
+extern ptrdiff_t scan_newline_from_point 4149,140704
+extern ptrdiff_t find_newline_no_quit 4150,140784
+extern ptrdiff_t find_before_next_newline 4152,140881
+extern void syms_of_search 4154,140979
+extern void clear_regexp_cache 4155,141014
+extern Lisp_Object Vminibuffer_list;4159,141084
+extern Lisp_Object last_minibuf_string;4160,141121
+extern Lisp_Object get_minibuffer 4161,141161
+extern void init_minibuf_once 4162,141208
+extern void syms_of_minibuf 4163,141246
+extern void syms_of_callint 4167,141313
+extern void syms_of_casefiddle 4171,141383
+extern void keys_of_casefiddle 4172,141422
+extern void init_casetab_once 4176,141492
+extern void syms_of_casetab 4177,141530
+extern Lisp_Object echo_message_buffer;4181,141598
+extern struct kboard *echo_kboard;echo_kboard4182,141638
+extern void cancel_echoing 4183,141673
+extern Lisp_Object last_undo_boundary;4184,141708
+extern bool input_pending;4185,141747
+extern sigjmp_buf return_to_command_loop;4187,141810
+extern Lisp_Object menu_bar_items 4189,141859
+extern Lisp_Object tool_bar_items 4190,141908
+extern void discard_mouse_events 4191,141964
+void handle_input_available_signal 4193,142025
+extern Lisp_Object pending_funcalls;4195,142074
+extern bool detect_input_pending 4196,142111
+extern bool detect_input_pending_ignore_squeezables 4197,142152
+extern bool detect_input_pending_run_timers 4198,142212
+extern void safe_run_hooks 4199,142264
+extern void cmd_error_internal 4200,142306
+extern Lisp_Object command_loop_1 4201,142366
+extern Lisp_Object read_menu_command 4202,142408
+extern Lisp_Object recursive_edit_1 4203,142453
+extern void record_auto_save 4204,142497
+extern void force_auto_save_soon 4205,142534
+extern void init_keyboard 4206,142575
+extern void syms_of_keyboard 4207,142609
+extern void keys_of_keyboard 4208,142646
+extern ptrdiff_t current_column 4211,142712
+extern void invalidate_current_column 4212,142752
+extern bool indented_beyond_p 4213,142798
+extern void syms_of_indent 4214,142863
+extern void store_frame_param 4217,142926
+extern void store_in_alist 4218,143000
+extern Lisp_Object do_switch_frame 4219,143070
+extern Lisp_Object get_frame_param 4220,143143
+extern void frames_discard_buffer 4221,143209
+extern void syms_of_frame 4222,143258
+extern char **initial_argv;initial_argv4225,143320
+extern int initial_argc;4226,143348
+extern bool display_arg;4228,143423
+extern Lisp_Object decode_env_path 4230,143455
+extern Lisp_Object empty_unibyte_string,4231,143526
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;4231,143526
+extern _Noreturn void terminate_due_to_signal 4232,143591
+extern Lisp_Object Vlibrary_cache;4234,143666
+void fixup_locale 4237,143727
+void synchronize_system_messages_locale 4238,143753
+void synchronize_system_time_locale 4239,143801
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+extern void shut_down_emacs 4245,144003
+extern bool noninteractive;4248,144129
+extern bool no_site_lisp;4251,144221
+extern int daemon_pipe[daemon_pipe4256,144389
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+extern void *w32_daemon_event;w32_daemon_event4260,144524
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+extern bool fatal_error_in_progress;4266,144721
+extern bool inhibit_window_system;4269,144827
+extern bool running_asynch_code;4271,144920
+extern void kill_buffer_processes 4274,144983
+extern int wait_reading_process_output 4275,145032
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern void add_timer_wait_descriptor 4286,145555
+extern void add_keyboard_wait_descriptor 4288,145607
+extern void delete_keyboard_wait_descriptor 4289,145655
+extern void add_gpm_wait_descriptor 4291,145722
+extern void delete_gpm_wait_descriptor 4292,145765
+extern void init_process_emacs 4294,145818
+extern void syms_of_process 4295,145857
+extern void setup_process_coding_systems 4296,145893
+extern int child_setup 4302,146013
+extern void init_callproc_1 4303,146081
+extern void init_callproc 4304,146117
+extern void set_initial_environment 4305,146151
+extern void syms_of_callproc 4306,146195
+extern Lisp_Object read_doc_string 4309,146258
+extern Lisp_Object get_doc_string 4310,146308
+extern void syms_of_doc 4311,146369
+extern int read_bytecode_char 4312,146401
+extern void syms_of_bytecode 4315,146470
+extern struct byte_stack *byte_stack_list;byte_stack_list4316,146507
+extern void mark_byte_stack 4318,146570
+extern void unmark_byte_stack 4320,146613
+extern Lisp_Object exec_byte_code 4321,146651
+extern void init_macros 4325,146801
+extern void syms_of_macros 4326,146833
+extern void truncate_undo_list 4329,146895
+extern void record_insert 4330,146945
+extern void record_delete 4331,146995
+extern void record_first_change 4332,147053
+extern void record_change 4333,147093
+extern void record_property_change 4334,147143
+extern void syms_of_undo 4337,147285
+extern void report_interval_modification 4340,147349
+extern void syms_of_menu 4343,147445
+extern void syms_of_xmenu 4346,147506
+extern char *get_current_dir_name get_current_dir_name4356,147708
+extern void stuff_char 4358,147757
+extern void init_foreground_group 4359,147790
+extern void sys_subshell 4360,147832
+extern void sys_suspend 4361,147865
+extern void discard_tty_input 4362,147897
+extern void init_sys_modes 4363,147935
+extern void reset_sys_modes 4364,147991
+extern void init_all_sys_modes 4365,148048
+extern void reset_all_sys_modes 4366,148087
+extern void child_setup_tty 4367,148127
+extern void setup_pty 4368,148162
+extern int set_window_size 4369,148191
+extern EMACS_INT get_random 4370,148235
+extern void seed_random 4371,148271
+extern void init_random 4372,148316
+extern void emacs_backtrace 4373,148348
+extern _Noreturn void emacs_abort 4374,148383
+extern void xputenv 4527,152697
+extern char *egetenv_internal egetenv_internal4529,152734
+egetenv 4532,152806
+extern void init_system_name 4539,153009
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA        4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+union Aligned_String4676,157349
+    USE_STACK_CONS 4689,157704
+    USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+extern const char *verify_ascii verify_ascii4730,159453
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define        SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/fail.c,30
+void (*prt_call(prt_call1,0
+
+c-src/h.h,1962
+   ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+void Asm_labels 7,127
+typedef struct tpcmd8,147
+#define ggg 10,170
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+} foobar2;20,307
+    DEVICE_SWP,23,333
+    DEVICE_LAST24,349
+} bsp_DevId;25,365
+  struct constant_args 27,394
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+} ghi1;36,534
+typedef union abc 37,542
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage 
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+} an_extern_linkage;56,1054
+typedef struct pollfd   pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+  } womboid 63,1206
+typedef union rtunion_def64,1220
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+  Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+extern void ab(102,1948
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int    (*oldhup)oldhup107,2014
+request (*oldhup)oldhup108,2031
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous      117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+
+cp-src/c.C,2567
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+        void execute(CMultiChannelCSC19_3D::execute11,493
+static void my_function1(24,984
+int main 25,1026
+double base 26,1088
+operator += operator +=29,1174
+class TestRecord;31,1233
+typedef struct s1 32,1251
+} t1;34,1287
+struct s2 35,1293
+typedef struct s2 t2;38,1324
+class A 39,1346
+  enum { rosso,A::rosso40,1356
+  enum { rosso, giallo,A::giallo40,1356
+  enum { rosso, giallo, verde A::verde40,1356
+  const A& operator+(A::operator+41,1396
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+class AU 53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A { class B { int f(A::B::f56,1791
+class A 57,1826
+  int get_data(A::get_data58,1836
+  A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+     void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct A { A(A::A73,2004
+struct B 74,2022
+struct B { B(B::B74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+class test 86,2156
+  int f(test::f87,2169
+  int ff(test::ff89,2231
+  int g(test::g90,2254
+class  AST_Root 92,2278
+class  AST_Root;96,2327
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+     void f(::f115,2733
+struct A 117,2753
+    ~A(A::~A118,2764
+A::~A(120,2777
+struct B 122,2789
+    ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+    enum {dog,Boo::dog130,2880
+    enum {dog, cat}Boo::cat130,2880
+    foo(Boo::foo133,2954
+    Boo(Boo::Boo137,2995
+    Boo(Boo::Boo138,3052
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int 
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,1538
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2;45,1087
+operator += operator +=48,1145
+operator -= operator -=51,1242
+operator * operator *54,1339
+operator / operator /57,1428
+operator * operator *60,1517
+operator + operator +63,1605
+operator - operator -66,1707
+product 69,1808
+operator - operator -72,1907
+class MDiagArray2 78,2022
+  MDiagArray2 MDiagArray2::MDiagArray282,2077
+  MDiagArray2 MDiagArray2::MDiagArray286,2154
+  MDiagArray2 MDiagArray2::MDiagArray287,2198
+  MDiagArray2 MDiagArray2::MDiagArray288,2254
+  MDiagArray2 MDiagArray2::MDiagArray289,2329
+  MDiagArray2 MDiagArray2::MDiagArray290,2387
+  MDiagArray2 MDiagArray2::MDiagArray291,2450
+  ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+  MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+      DiagArray2<T>::operator = MDiagArray2::operator =97,2603
+  operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+  operator += MDiagArray2::operator +=116,2966
+  operator -= MDiagArray2::operator -=119,3057
+  friend MDiagArray2<T> operator * MDiagArray2::operator *123,3174
+  friend MDiagArray2<T> operator / MDiagArray2::operator /124,3253
+  friend MDiagArray2<T> operator * MDiagArray2::operator *128,3384
+  operator + MDiagArray2::operator +133,3544
+  operator - MDiagArray2::operator -136,3640
+  friend MDiagArray2<T> operator - MDiagArray2::operator -141,3803
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Range.h,965
+#define octave_Range_h 24,765
+class istream;30,840
+class ostream;31,855
+class Matrix;32,870
+Range35,891
+  Range Range::Range39,909
+  Range Range::Range42,995
+  Range Range::Range46,1130
+  Range Range::Range50,1248
+  double base Range::base54,1376
+  double limit Range::limit55,1425
+  double inc Range::inc56,1475
+  int nelem Range::nelem57,1523
+  bool all_elements_are_ints Range::all_elements_are_ints59,1571
+  Matrix matrix_value Range::matrix_value61,1615
+  double min Range::min63,1652
+  double max Range::max64,1679
+  void sort Range::sort66,1707
+  void set_base Range::set_base68,1728
+  void set_limit Range::set_limit69,1774
+  void set_inc Range::set_inc70,1821
+  friend ostream& operator << Range::operator <<72,1867
+  friend istream& operator >> Range::operator >>73,1928
+  void print_range Range::print_range75,1984
+  int nelem_internal Range::nelem_internal85,2099
+extern Range operator - operator -88,2138
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,791
+#define __COLORS9,401
+enum COLORS 11,419
+    BLACK,COLORS::BLACK12,433
+    BLUE,COLORS::BLUE13,471
+    GREEN,COLORS::GREEN14,481
+    CYAN,COLORS::CYAN15,492
+    RED,COLORS::RED16,502
+    MAGENTA,COLORS::MAGENTA17,511
+    BROWN,COLORS::BROWN18,524
+    LIGHTGRAY,COLORS::LIGHTGRAY19,535
+    DARKGRAY,COLORS::DARKGRAY20,550
+    LIGHTBLUE,COLORS::LIGHTBLUE21,589
+    LIGHTGREEN,COLORS::LIGHTGREEN22,604
+    LIGHTCYAN,COLORS::LIGHTCYAN23,620
+    LIGHTRED,COLORS::LIGHTRED24,635
+    LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+    YELLOW,COLORS::YELLOW26,667
+    WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+void goto_xy(35,835
+void hide_cursor(36,883
+void cursor_position(37,907
+void clear_screen(38,935
+void write_xyc(39,960
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,331
+class site:site5,235
+    int total_surrounding(site::total_surrounding8,303
+    site(site::site10,344
+    ~site(site::~site11,397
+    char read(site::read12,410
+    void set(site::set13,444
+    void clear(site::clear14,478
+    void compute_next_state(site::compute_next_state15,514
+    void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,1152
+extern void init_registry(10,452
+extern void step_everybody(11,485
+class generic_object13,520
+    generic_object(generic_object::generic_object17,582
+    ~generic_object(generic_object::~generic_object19,724
+    virtual void compute_next_state(generic_object::compute_next_state21,842
+    virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+    location(location::location43,1642
+    ~location(location::~location44,1661
+class irregular_location:irregular_location47,1686
+    irregular_location(irregular_location::irregular_location51,1762
+    ~irregular_location(irregular_location::~irregular_location53,1854
+class discrete_location:discrete_location56,1889
+    void clear_neighbors(discrete_location::clear_neighbors60,2004
+    discrete_location(discrete_location::discrete_location62,2044
+    ~discrete_location(discrete_location::~discrete_location65,2154
+    void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+    agent(agent::agent79,2578
+    ~agent(agent::~agent80,2591
+    void move(agent::move81,2605
+
+cp-src/fail.C,386
+struct A 7,263
+          struct B A::B8,274
+                  struct C A::B::C9,289
+                          C(A::B::C::C11,318
+                          operator int(A::B::C::operator int12,342
+                  typedef C T;A::B::T14,389
+          typedef B T2;A::T216,414
+class String;20,437
+class A 23,453
+       class B A::B24,463
+               class C A::B::C25,474
+               int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+       class D 41,622
+               D(D::D43,659
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5188
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias 
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defvar etags-case-fold-search)855,33906
+(defvar etags-syntax-table)856,33938
+(defvar local-find-tag-hook)857,33966
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+f-src/entry.for,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+       ENTRY  MSGSEL 193,4382
+     & intensity1(375,8135
+       character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+   9   field   >field136,582
+   5   field   >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+&nbsp;8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the 
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and 
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or 
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1156
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+       @-$($72,3064
+       @-$($73,3113
+       @-$($74,3177
+       @-$($75,3223
+       @-$($76,3291
+       @-$($77,3383
+       @$(81,3466
+       @$(82,3514
+       @$(83,3577
+       @$(84,3622
+       @$(85,3689
+       @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+       @env CHECKEROPTS=92,3922
+       @$(98,4094
+       @$(106,4250
+       @$(110,4374
+       @$(114,4500
+       @for i in $(140,5315
+       @for i in $(SRCS); do echo $$i;140,5315
+       $(160,6053
+       $(163,6114
+       $(166,6177
+       $(169,6228
+       $(172,6317
+       sdiff --suppress-common-lines --width=width186,6614
+       sdiff --suppress-common-lines --width=width189,6703
+       sdiff --suppress-common-lines --width=width192,6791
+       sdiff --suppress-common-lines --width=width195,6880
+       TEXTAGS=204,7122
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7122
+       ${RUN} etags12 --members -o $@ --regex=regex207,7239
+       ${RUN} ./ctags -o $@ --regex=regex213,7388
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+       TEXTAGS=219,7583
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7583
+       ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,505
+#define        PTY_TEMPLATE 20,494
+#define        PTY_LENGTH 21,528
+static void showError(23,551
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+    andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS       36,1101
+#define TYPESTOSTAT    37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION        34,1116
+#   define DEBUG 37,1155
+#define LISTCONTENTS   39,1181
+#define OPENBUTTON     47,1352
+#define LISTCONTENTSBUTTON     48,1449
+#define LISTDESCRIPTIONBUTTON  49,1562
+#define STATE_UNINSTALLED      52,1687
+#define STATE_INSTALLED        53,1807
+#define STATE_COMPRESSD        54,1948
+#define SIZEFORMAT     57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type 
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING        368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2152
+  define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+  define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+  define("LCE_WS"LCE_WS11,194
+  define("LCE_COMMENT"LCE_COMMENT13,244
+  define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+  define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+  define("LCE_MSGID"LCE_MSGID19,430
+  define("LCE_MSGSTR"LCE_MSGSTR21,488
+  define("LCE_TEXT"LCE_TEXT23,541
+  define("STATE_ABORT"STATE_ABORT25,567
+  define("STATE_OK"STATE_OK26,595
+  define("STATE_LOOP"STATE_LOOP27,620
+  class POEntryAD 29,648
+      function validate(31,683
+      function checkQuotation(59,1384
+  class CommentAD 70,1639
+      function CommentAD(73,1693
+      function validate(83,1944
+  class POEntry 105,2410
+      function POEntry(119,2711
+      function lineCount(135,3255
+      function serializeToVars(141,3365
+      function write(151,3800
+  class POReader 163,4178
+      function gettext(177,4457
+      function parseFromVars(189,4705
+      function serializeToVars(215,5331
+      function POReader(229,5613
+      function read(243,5983
+      function write(259,6307
+      function isComment(277,6645
+      function comment(284,6822
+      function msgid(304,7247
+      function msgstr(320,7574
+      function start(340,8232
+      function createPOEntries(360,8644
+      function stripLine(394,9472
+      function printClassification(421,10056
+      function classifyLine(432,10301
+  function getTextDomains(471,11094
+  class PORManager 498,11756
+      function PORManager(502,11822
+      function addPOReader(507,11896
+      function &getPOReader(getPOReader512,11992
+      function getDomainNames(517,12081
+  function &loadPORManager(loadPORManager523,12174
+  function fileJoin(536,12436
+      function lce_bindtextdomain(557,12839
+      function lce_textdomain(614,14530
+      function lce_gettext(620,14641
+      function lce_dgettext(626,14767
+      function lce(634,14966
+      function lce_bindtextdomain(651,15488
+      function lce_textdomain(656,15592
+      function lce_gettext(661,15674
+      function lce_dgettext(666,15755
+      function lce(670,15855
+  function lce_geteditcode(676,15898
+
+php-src/ptest.php,46
+define("TEST"TEST1,0
+test 4,26
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+         my $entry entry218,5621
+         my $entry entry234,6077
+             my $entry entry245,6351
+         my $entry entry252,6536
+         my $entry entry268,7010
+             my $entry entry276,7204
+         my $entry entry281,7328
+      my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+  my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+       local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+       local($prog,$_,@list)($prog,$_,@list39,868
+       
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+    def __init__(18,374
+    def __repr__(24,590
+    def __str__(34,871
+class Server:Server37,934
+    def __init__(38,948
+    def dump(73,2198
+    def __repr__(125,3896
+    def __str__(128,3945
+class User:User131,4014
+    def __init__(132,4026
+    def __repr__(172,5445
+    def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+    def bind(234,7525
+    def focus_set(236,7584
+    def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+    def __init__(269,8808
+    def handleList(303,10042
+    def handleNew(306,10094
+    def editItem(314,10426
+    def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+    def PostControls(376,12403
+    def GatherControls(421,13530
+class ServerEdit(512,16264
+    def __init__(513,16289
+    def post(525,16629
+    def gather(543,17191
+    def nosave(547,17304
+    def save(551,17408
+    def refreshPort(556,17509
+    def createWidgets(561,17663
+    def edituser(631,20708
+class UserEdit(645,20921
+    def __init__(646,20944
+    def post(658,21283
+    def gather(676,21841
+    def nosave(680,21950
+    def save(684,22052
+    def createWidgets(689,22151
+class Configure(760,24879
+    def __init__(761,24916
+    def MakeDispose(772,25211
+    def MakeSitelist(786,25706
+    def editsite(794,25949
+    def save(797,26022
+    def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+  \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+   \def\subtitlefont{\subtitlefont765,24968
+   \def\authorfont{\authorfont767,25052
+   \def\title{\title773,25262
+   \def\titlezzz##1{\titlezzz774,25297
+   \def\subtitle{\subtitle782,25612
+   \def\subtitlezzz##1{\subtitlezzz783,25653
+   \def\author{\author786,25771
+   \def\authorzzz##1{\authorzzz787,25808
+   \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+  \def\thearg{\thearg1145,37720
+  \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0  %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+  \def\indexbackslash{\indexbackslash1480,48406
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+  \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+  address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+  address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+     address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno  \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+  {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+  {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+  {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+      \def\secentry ##1##2##3##4{\secentry2066,68220
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+    {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+  \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,1836
+void (*fa)fa131,
+void 132,
+my_printf 135,
+void fatala 138,
+void fatalb 139,
+max 141,
+struct bar 143,
+__attribute__ ((always_inline)) max 147,
+extern int old_var 149,
+struct foo150,
+char stack[stack155,
+struct S 156,
+} wait_status_ptr_t 161,
+Some_Class  A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S  __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+     f1 183,
+void f2 184,
+__attribute__((noreturn)) void d0 185,
+  __attribute__((format(printf, 1, 2))) d1 186,
+  d2 187,
+int x 188,
+struct foo 189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal", 
Fx_get_selection_internal,x-get-selection-internal206,
+       Fx_get_selection_internal,x-get-selection-internal212,
+      Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+  aaa;249,
+  bbb;251,
+struct sss1 252,
+struct sss2253,
+  struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+  **b;b262,
+caccacacca 263,
+a 267,
+  typedef struct aa 269,
+  typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+  typedef  int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,1061
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+int yylex 57,1317
+void yyerror 59,1347
+void yyerror 61,1376
+VOIDSTAR parse_hash;63,1400
+extern VOIDSTAR hash_find(64,1421
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+YYSTYPE make_list 75,1716
+YYSTYPE make_list 77,1760
+char *instr;instr80,1790
+int parse_error 81,1803
+extern struct obstack tmp_mem;82,1824
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+extern struct node *yylval;yylval305,6233
+unsigned char parse_cell_or_range 308,6278
+unsigned char parse_cell_or_range 310,6342
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define       NE      6,114
+# define       LE      7,130
+# define       GE      8,146
+# define       NEG     9,162
+# define       L_CELL  10,179
+# define       L_RANGE 11,199
+# define       L_VAR   12,220
+# define       L_CONST 13,239
+# define       L_FN0   14,260
+# define       L_FN1   15,279
+# define       L_FN2   16,298
+# define       L_FN3   17,317
+# define       L_FN4   18,336
+# define       L_FNN   19,355
+# define       L_FN1R  20,374
+# define       L_FN2R  21,394
+# define       L_FN3R  22,414
+# define       L_FN4R  23,434
+# define       L_FNNR  24,454
+# define       L_LE    25,474
+# define       L_NE    26,492
+# define       L_GE    27,510
+
+parse.y,1464
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+int yylex 57,
+void yyerror 59,
+void yyerror 61,
+VOIDSTAR parse_hash;63,
+extern VOIDSTAR hash_find(64,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+YYSTYPE make_list 75,
+YYSTYPE make_list 77,
+char *instr;instr80,
+int parse_error 81,
+extern struct obstack tmp_mem;82,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define        YYFINAL 93,
+#define        YYFLAG  94,
+#define        YYNTBASE        95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define        YYLAST  266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+extern struct node *yylval;yylval305,
+unsigned char parse_cell_or_range 308,
+unsigned char parse_cell_or_range 310,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2180
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+int yyparse 365,
+int yyparse 367,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  YYDPRINTF 917,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyerror 946,
+  yyresult 947,
+
+y-src/atest.y,9
+exp    2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define       INT     6,113
+# define       CHAR    7,130
+# define       NAME    8,148
+# define       ERROR   9,166
+# define       OR      10,185
+# define       AND     11,201
+# define       EQUAL   12,218
+# define       NOTEQUAL        13,237
+# define       LEQ     14,259
+# define       GEQ     15,276
+# define       LSH     16,293
+# define       RSH     17,310
+# define       UNARY   18,327
+
+cccp.y,2005
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int yylex 66,
+void yyerror 67,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+extern unsigned char is_idstart[is_idstart76,
+extern unsigned char is_idstart[], is_idchar[is_idchar76,
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[is_hor_space76,
+extern char *xmalloc xmalloc78,
+extern int pedantic;81,
+extern int traditional;84,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+static void integer_overflow 106,
+static long left_shift 107,
+static long right_shift 108,
+  struct constant 113,
+  struct name 114,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define        YYFINAL 127,
+#define        YYFLAG  128,
+#define        YYNTBASE        129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define        YYLAST  274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+extern int yydebug;919,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2180
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+int yyparse 365,
+int yyparse 367,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  YYDPRINTF 917,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyerror 946,
+  yyresult 947,
+
+y-src/cccp.y,1582
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int yylex 66,1712
+void yyerror 67,1726
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+extern unsigned char is_idstart[is_idstart76,1944
+extern unsigned char is_idstart[], is_idchar[is_idchar76,1944
+extern unsigned char is_idstart[], is_idchar[], 
is_hor_space[is_hor_space76,1944
+extern char *xmalloc xmalloc78,2009
+extern int pedantic;81,2062
+extern int traditional;84,2114
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+static void integer_overflow 106,2632
+static long left_shift 107,2665
+static long right_shift 108,2692
+  struct constant 112,2733
+  struct name 113,2789
+start 143,3226
+exp1   148,3330
+exp    156,3505
+exp    185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+extern int yydebug;919,21416
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+a-src/empty.zz,0
diff --git a/test/etags/ETAGS.good_3 b/test/etags/ETAGS.good_3
new file mode 100644
index 0000000..644ffe4
--- /dev/null
+++ b/test/etags/ETAGS.good_3
@@ -0,0 +1,4611 @@
+
+Makefile,683
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,584
+ERLSRC=11,654
+FORTHSRC=12,699
+FSRC=13,749
+HTMLSRC=14,821
+LUASRC=16,950
+MAKESRC=17,993
+OBJCSRC=18,1035
+OBJCPPSRC=19,1116
+PASSRC=20,1179
+PERLSRC=21,1221
+PHPSRC=22,1291
+PSSRC=23,1363
+PROLSRC=24,1403
+PYTSRC=25,1465
+TEXSRC=26,1506
+YSRC=27,1585
+SRCS=28,1650
+NONSRCS=32,1902
+ETAGS_PROG=34,1976
+CTAGS_PROG=35,2007
+REGEX=37,2039
+xx=38,2085
+RUN=40,2134
+OPTIONS=42,2140
+ARGS=43,2192
+infiles 45,2210
+check:check47,2272
+ediff%:ediff%55,2575
+cdiff:cdiff58,2676
+ETAGS:ETAGS61,2773
+CTAGS:CTAGS64,2843
+srclist:srclist67,2921
+regexfile:regexfile71,3012
+.PRECIOUS:.PRECIOUS77,3189
+FRC:FRC79,3223
+
+ada-src/etags-test-for.ada,1969
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+   function Body_RequiredBody_Required/f3,78
+   type Type_Specific_Data Type_Specific_Data/t11,280
+   function "abs"abs/f19,504
+   type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+   function "="=/f27,722
+   type usfreelock_ptr usfreelock_ptr/t30,803
+   function p p/f33,891
+   procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+  type Private_T Private_T/t46,1220
+  package Inner1 Inner1/s48,1250
+    procedure Private_T;Private_T/p49,1270
+  package Inner2 Inner2/s52,1310
+    task Private_T;Private_T/k53,1330
+  type Public_T Public_T/t56,1365
+  procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+  procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+  function Pkg1_Func1 Pkg1_Func1/f66,1514
+  function Pkg1_Func2 Pkg1_Func2/f68,1553
+  package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+  task type Task_Type Task_Type/k75,1694
+  type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+  procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+  package body Inner1 Inner1/b96,1956
+    procedure Private_T Private_T/p97,1981
+  package body Inner2 Inner2/b103,2054
+    task body Private_T Private_T/b104,2079
+  task body Task_Type Task_Type/b112,2181
+  procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+  function Pkg1_Func1 Pkg1_Func1/f132,2445
+  function Pkg1_Func2 Pkg1_Func2/f134,2496
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function  Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+  protected Bidule Bidule/t168,2953
+  protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+  protected body Bidule Bidule/b179,3115
+  protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+   package RTE RTE/s69,2712
+   package TSL TSL/s70,2759
+   function To_void_ptr To_void_ptr/f86,3287
+   function To_TCB_Ptr To_TCB_Ptr/f89,3366
+   function 
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+   function 
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+   procedure Abort_WrapperAbort_Wrapper/p115,4302
+   procedure LL_Wrapper LL_Wrapper/p122,4526
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+   function Self Self/f160,5586
+   procedure Initialize_LockInitialize_Lock/p174,5958
+   procedure Finalize_Lock Finalize_Lock/p210,6927
+   procedure Write_Lock Write_Lock/p226,7338
+   procedure Read_Lock Read_Lock/p239,7700
+   procedure Unlock Unlock/p246,7850
+   procedure Initialize_Cond Initialize_Cond/p258,8160
+   procedure Finalize_Cond Finalize_Cond/p286,8979
+   procedure Cond_Wait Cond_Wait/p300,9303
+   procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+   procedure Cond_Signal Cond_Signal/p343,10510
+   procedure Set_PrioritySet_Priority/p355,10836
+   procedure Set_Own_Priority Set_Own_Priority/p372,11243
+   function Get_Priority Get_Priority/f385,11598
+   function Get_Own_Priority Get_Own_Priority/f398,12023
+   procedure Create_LL_TaskCreate_LL_Task/p412,12438
+      function To_Start_Addr To_Start_Addr/f426,12873
+   procedure Exit_LL_Task Exit_LL_Task/p491,14995
+   procedure Abort_Task Abort_Task/p500,15158
+   procedure Test_Abort Test_Abort/p518,15716
+   procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+   procedure Abort_WrapperAbort_Wrapper/p557,16939
+      function Address_To_Call_State Address_To_Call_State/f562,17062
+   procedure Install_Error_Handler Install_Error_Handler/p573,17351
+   procedure LL_Assert LL_Assert/p599,18146
+   procedure LL_Wrapper LL_Wrapper/p608,18299
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+   procedure Clear Clear/p640,19236
+   procedure Test_And_Set Test_And_Set/p645,19330
+   function  Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+   type Pre_Call_State Pre_Call_State/t64,3331
+   type Task_Storage_Size Task_Storage_Size/t66,3378
+   type Machine_Exceptions Machine_Exceptions/t68,3433
+   type Error_Information Error_Information/t70,3499
+   type Lock Lock/t72,3569
+   type Condition_Variable Condition_Variable/t73,3594
+   type Task_Control_Block Task_Control_Block/t81,3955
+   type TCB_Ptr TCB_Ptr/t89,4241
+   function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+   function Self Self/f100,4602
+   procedure Initialize_Lock Initialize_Lock/p103,4707
+   procedure Finalize_Lock Finalize_Lock/p107,4879
+   procedure Write_Lock Write_Lock/p111,5034
+   procedure Read_Lock Read_Lock/p118,5428
+   procedure Unlock Unlock/p128,5995
+   procedure Initialize_Cond Initialize_Cond/p135,6300
+   procedure Finalize_Cond Finalize_Cond/p138,6413
+   procedure Cond_Wait Cond_Wait/p142,6591
+   procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+   procedure Cond_Signal Cond_Signal/p164,7812
+   procedure Set_Priority Set_Priority/p169,8040
+   procedure Set_Own_Priority Set_Own_Priority/p173,8200
+   function Get_Priority Get_Priority/f177,8348
+   function Get_Own_Priority Get_Own_Priority/f181,8504
+   procedure Create_LL_TaskCreate_LL_Task/p185,8647
+   procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+   procedure Abort_Task Abort_Task/p203,9516
+   procedure Test_Abort;Test_Abort/p210,9878
+   type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+   procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+   procedure Install_Error_Handler Install_Error_Handler/p226,10741
+   procedure LL_Assert LL_Assert/p231,10983
+   type Proc Proc/t238,11240
+   type TAS_Cell TAS_Cell/t242,11328
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+   procedure Clear Clear/p260,12157
+   procedure Test_And_Set Test_And_Set/p267,12462
+   function  Is_Set Is_Set/f275,12877
+   type Lock Lock/t283,13155
+   type Condition_Variable Condition_Variable/t288,13267
+   type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+  type Private_T Private_T/t5,106
+  package Inner1 Inner1/s7,136
+    procedure Private_T;Private_T/p8,156
+  package Inner2 Inner2/s11,196
+    task Private_T;Private_T/k12,216
+  type Public_T Public_T/t15,251
+  procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+  procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+  function Pkg1_Func1 Pkg1_Func1/f25,400
+  function Pkg1_Func2 Pkg1_Func2/f27,439
+  package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+  task type Task_Type Task_Type/k34,580
+  type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+  procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+  package body Inner1 Inner1/b53,840
+    procedure Private_T Private_T/p54,865
+  package body Inner2 Inner2/b60,938
+    task body Private_T Private_T/b61,963
+  task body Task_Type Task_Type/b68,1064
+  procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+  function Pkg1_Func1 Pkg1_Func1/f88,1328
+  function Pkg1_Func2 Pkg1_Func2/f90,1379
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function  Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+  protected Bidule Bidule/t125,1964
+  protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+  protected body Bidule Bidule/b139,2181
+  protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,1432
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,275
+#define _GETOPT_H 19,801
+struct option73,2797
+  const char *name;name76,2826
+  char *name;name78,2852
+  int has_arg;82,3009
+  int *flag;flag83,3024
+  int val;84,3037
+#define        no_argument     89,3124
+#define required_argument      90,3147
+#define optional_argument      91,3175
+
+c-src/etags.c,12045
+char pot_etags_version[pot_etags_version81,3470
+#  undef DEBUG84,3552
+#  define DEBUG 85,3567
+#  define DEBUG 87,3594
+#  define NDEBUG       88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef  WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef  DOS_NT117,4160
+# define DOS_NT118,4176
+# undef  assert        135,4482
+# define assert(136,4541
+# undef  CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define        iswhite(159,5329
+#define notinname(160,5394
+#define        begtoken(161,5469
+#define        intoken(162,5542
+#define        endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+  const char *suffix;suffix186,6219
+  const char *command;command187,6294
+} compressor;188,6365
+  const char *name;name192,6397
+  const char *help;help193,6449
+  Lang_function *function;function194,6508
+  const char **suffixes;suffixes195,6556
+  const char **filenames;filenames196,6633
+  const char **interpreters;interpreters197,6702
+  bool metasource;198,6771
+} language;199,6835
+typedef struct fdesc201,6848
+  struct fdesc *next;next203,6871
+  char *infname;infname204,6920
+  char *infabsname;infabsname205,6973
+  char *infabsdir;infabsdir206,7038
+  char *taggedfname;taggedfname207,7091
+  language *lang;lang208,7149
+  char *prop;prop209,7191
+  bool usecharno;210,7249
+  bool written;211,7311
+} fdesc;212,7366
+typedef struct node_st214,7376
+  struct node_st *left,left216,7428
+  struct node_st *left, *right;right216,7428
+  fdesc *fdp;fdp217,7486
+  char *name;name218,7548
+  char *regex;regex219,7580
+  bool valid;220,7617
+  bool is_func;221,7670
+  bool been_warned;222,7733
+  int lno;223,7801
+  long cno;224,7842
+} node;225,7894
+  long size;236,8208
+  int len;237,8221
+  char *buffer;buffer238,8232
+} linebuffer;239,8248
+    at_language,245,8344
+    at_regexp,246,8393
+    at_filename,247,8437
+    at_stdin,248,8473
+    at_end     249,8516
+  } arg_type;250,8557
+  language *lang;lang251,8593
+  char *what;what252,8656
+} argument;253,8698
+typedef struct regexp256,8758
+  struct regexp *p_next;p_next258,8782
+  language *lang;lang259,8837
+  char *pattern;pattern260,8897
+  char *name;name261,8940
+  struct re_pattern_buffer *pat;pat262,8971
+  struct re_registers regs;263,9031
+  bool error_signaled;264,9078
+  bool force_explicit_name;265,9141
+  bool ignore_case;266,9206
+  bool multi_line;267,9259
+} regexp;268,9325
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT  2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC   2199,69242
+enum sym_type2204,69312
+  st_none,2206,69328
+  st_C_objprot,2207,69339
+  st_C_objprot, st_C_objimpl,2207,69339
+  st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+  st_C_gnumacro,2208,69382
+  st_C_ignore,2209,69399
+  st_C_ignore, st_C_attribute,2209,69399
+  st_C_javastruct,2210,69430
+  st_C_operator,2211,69449
+  st_C_class,2212,69466
+  st_C_class, st_C_template,2212,69466
+  st_C_struct,2213,69495
+  st_C_struct, st_C_extern,2213,69495
+  st_C_struct, st_C_extern, st_C_enum,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+struct C_stab_entry { const char *name;name2271,71278
+struct C_stab_entry { const char *name; int c_ext;2271,71278
+struct C_stab_entry { const char *name; int c_ext; enum sym_type 
type;2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+      TOTAL_KEYWORDS 2325,73018
+      MIN_WORD_LENGTH 2326,73045
+      MAX_WORD_LENGTH 2327,73072
+      MIN_HASH_VALUE 2328,73100
+      MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+  fvnone,2408,75435
+  fdefunkey,2409,75466
+  fdefunname,2410,75512
+  foperator,2411,75556
+  fvnameseen,2412,75613
+  fstartlist,2413,75666
+  finlist,2414,75722
+  flistseen,2415,75765
+  fignore,2416,75813
+  vignore      2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+  tnone,2428,76089
+  tkeyseen,2429,76119
+  ttypeseen,2430,76160
+  tinbody,2431,76199
+  tend,2432,76238
+  tignore      2433,76279
+} typdef;2434,76320
+  snone,2443,76499
+  skeyseen,2445,76575
+  stagseen,2446,76620
+  scolonseen   2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+  dnone,2460,76942
+  dsharpseen,2461,76972
+  ddefineseen,2462,77025
+  dignorerest  2463,77070
+} definedef;2464,77112
+  onone,2472,77267
+  oprotocol,2473,77297
+  oimplementation,2474,77347
+  otagseen,2475,77395
+  oparenseen,2476,77431
+  ocatseen,2477,77486
+  oinbody,2478,77525
+  omethodsign,2479,77568
+  omethodtag,2480,77626
+  omethodcolon,2481,77666
+  omethodparm,2482,77709
+  oignore      2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+  char *line;line2493,77964
+  int offset;2494,78014
+  int length;2495,78067
+  bool valid;2502,78352
+  bool named;2505,78487
+  int lineno;2506,78528
+  long linepos;2507,78576
+} token;2508,78626
+  char **cname;cname2519,78950
+  int *bracelev;bracelev2520,78993
+  int nl;2521,79042
+  int size;2522,79096
+} cstack;2523,79136
+#define nestlev        2525,79264
+#define instruct       2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+consider_token 2613,81341
+  long linepos;2922,88499
+  linebuffer lb;2923,88515
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,99
+    size_t n;28,961
+    void EXFUN((*fn[fn29,975
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,99
+    size_t n;28,961
+    void EXFUN((*fn[fn29,975
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define        ENTRY(21,865
+#define        PSEUDO(26,972
+    movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+    movl $SYS_##syscall_name, %eax;eax31,1132
+    int $0x80;32,1180
+    test %eax,eax33,1210
+    test %eax, %eax;eax33,1210
+    jl syscall_error;34,1245
+#define        XCHG_0  47,1562
+#define        XCHG_1  48,1606
+#define        XCHG_2  49,1648
+#define        XCHG_3  50,1691
+#define        XCHG_4  51,1734
+#define        XCHG_5  52,1777
+#define        r0      54,1821
+#define        r1      55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int             count_words(15,263
+static char            *get_word(get_word35,553
+void                   tab_free(59,966
+char                   **tab_fill(tab_fill70,1129
+int                    tab_delete_first(91,1638
+int                    tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,4207
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT        124,3934
+#define BLOCKLOG       125,3977
+#define BLOCKSIZE      126,4018
+#define BLOCKIFY(127,4052
+#define HEAP   131,4215
+#define FINAL_FREE_BLOCKS      135,4391
+       int type;145,4676
+               size_t nfree;150,4720
+               size_t first;151,4777
+             } frag;152,4834
+           ptrdiff_t size;156,5055
+         } info;157,5076
+      } busy;158,5087
+       size_t size;163,5215
+       size_t next;164,5272
+       size_t prev;165,5321
+      } free;166,5374
+  } malloc_info;167,5388
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+struct list186,5939
+    struct list *next;next188,5955
+    struct list *prev;prev189,5978
+struct alignlist196,6153
+    struct alignlist *next;next198,6174
+    void *aligned;aligned199,6202
+    void *exact;exact200,6270
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+enum mcheck_status283,9092
+    MCHECK_DISABLED 285,9115
+    MCHECK_OK,286,9187
+    MCHECK_FREE,287,9226
+    MCHECK_HEAD,288,9270
+    MCHECK_TAIL        289,9334
+struct mstats308,10153
+    size_t bytes_total;310,10171
+    size_t chunks_used;311,10225
+    size_t bytes_used;312,10285
+    size_t chunks_free;313,10351
+    size_t bytes_free;314,10406
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define        __sbrk  1513,46042
+__default_morecore 1525,46511
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+hybrid_get_current_dir_name 1811,53797
+#define MAGICWORD      1854,55206
+#define MAGICFREE      1855,55261
+#define MAGICBYTE      1856,55316
+#define MALLOCFLOOD    1857,55348
+#define FREEFLOOD      1858,55382
+struct hdr1860,55415
+    size_t size;1862,55430
+    size_t magic;1863,55484
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,4485
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+#define RE_SYNTAX_EMACS        183,7684
+#define RE_SYNTAX_AWK  186,7780
+#define RE_SYNTAX_GNU_AWK      193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP        206,8549
+#define RE_SYNTAX_POSIX_EGREP  212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON        221,9072
+#define RE_SYNTAX_POSIX_BASIC  225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC  231,9508
+#define RE_SYNTAX_POSIX_EXTENDED       234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED       242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+  REG_ENOSYS 297,11859
+  REG_NOERROR 300,11941
+  REG_NOMATCH,301,11976
+  REG_BADPAT,305,12123
+  REG_ECOLLATE,306,12162
+  REG_ECTYPE,307,12203
+  REG_EESCAPE,308,12255
+  REG_ESUBREG,309,12298
+  REG_EBRACK,310,12345
+  REG_EPAREN,311,12391
+  REG_EBRACE,312,12436
+  REG_BADBR,313,12472
+  REG_ERANGE,314,12519
+  REG_ESPACE,315,12560
+  REG_BADRPT,316,12601
+  REG_EEND,319,12693
+  REG_ESIZE,320,12728
+  REG_ERPAREN,321,12790
+  REG_ERANGEX  322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+  unsigned char *buffer;buffer341,13538
+  size_t allocated;344,13614
+  size_t used;347,13686
+  reg_syntax_t syntax;350,13769
+  char *fastmap;fastmap355,13975
+  RE_TRANSLATE_TYPE translate;361,14241
+  size_t re_nsub;364,14329
+  unsigned can_be_null 370,14624
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+  unsigned regs_allocated 379,14963
+  unsigned fastmap_accurate 383,15136
+  unsigned no_sub 387,15267
+  unsigned not_bol 391,15398
+  unsigned not_eol 394,15475
+  unsigned used_syntax 398,15655
+  unsigned multibyte 403,15805
+  unsigned target_multibyte 407,15941
+  int charset_unibyte;410,16032
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+  unsigned num_regs;430,16674
+  regoff_t *start;start431,16695
+  regoff_t *end;end432,16714
+# define RE_NREGS 440,16942
+  regoff_t rm_so;449,17159
+  regoff_t rm_eo;450,17239
+} regmatch_t;451,17317
+#  define _Restrict_ 540,20886
+#  define _Restrict_ 542,20979
+#  define _Restrict_544,21018
+#  define _Restrict_arr_ 555,21418
+#  define _Restrict_arr_557,21461
+#  define CHAR_CLASS_MAX_LENGTH 593,22470
+#  define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+              RECC_ALNUM,610,22984
+              RECC_ALNUM, RECC_ALPHA,610,22984
+              RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+              RECC_GRAPH,611,23027
+              RECC_GRAPH, RECC_PRINT,611,23027
+              RECC_LOWER,612,23059
+              RECC_LOWER, RECC_UPPER,612,23059
+              RECC_PUNCT,613,23091
+              RECC_PUNCT, RECC_CNTRL,613,23091
+              RECC_DIGIT,614,23123
+              RECC_DIGIT, RECC_XDIGIT,614,23123
+              RECC_BLANK,615,23156
+              RECC_BLANK, RECC_SPACE,615,23156
+              RECC_MULTIBYTE,616,23188
+              RECC_MULTIBYTE, RECC_NONASCII,616,23188
+              RECC_ASCII,617,23227
+              RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+typedef int re_wchar_t;623,23387
+
+c-src/emacs/src/keyboard.c,13949
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF        119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard 
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+unsigned timers_run;320,11296
+struct timespec 
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW  346,12046
+#define READABLE_EVENTS_FILTER_EVENTS  347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES     348,12142
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+  KBOARD *kboard;kboard860,27087
+  struct kboard_stack *next;next861,27105
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function", 
Fcommand_error_default_function,command-error-default-function1043,32030
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit", 
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit", 
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING   2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const 
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const 
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const 
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+  int sig;7238,215915
+  char *name;name7241,215956
+  int npending;7244,216007
+  struct user_signal_info *next;next7246,216024
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+  Lisp_Object parent;8745,259107
+  Lisp_Object map;8748,259224
+  int start,8753,259446
+  int start, end;8753,259446
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+  short var;11023,332716
+  short kind;11024,332729
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+
+c-src/emacs/src/lisp.h,25767
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+#  define EMACS_INT_MAX 93,3079
+#  define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+#  define EMACS_INT_MAX 98,3265
+#  define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+#  define EMACS_INT_MAX 105,3553
+#  define pI 106,3587
+enum {  BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+    BITS_PER_CHAR 136,4570
+    BITS_PER_SHORT 137,4605
+    BITS_PER_LONG 138,4657
+    BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+    VALBITS 246,8742
+    INTTYPEBITS 249,8838
+    FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+#  define check_cons_list(405,15097
+#  define make_number(408,15176
+#  define XFASTINT(409,15224
+#  define XINT(410,15266
+#  define XSYMBOL(411,15300
+#  define XTYPE(412,15340
+#  define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+    Lisp_Symbol 454,16851
+    Lisp_Misc 458,16993
+    Lisp_Int0 461,17067
+    Lisp_Int1 462,17086
+    Lisp_String 466,17264
+    Lisp_Vectorlike 472,17543
+    Lisp_Cons 475,17632
+    Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+    Lisp_Misc_Free 487,18040
+    Lisp_Misc_Marker,488,18069
+    Lisp_Misc_Overlay,489,18091
+    Lisp_Misc_Save_Value,490,18114
+    Lisp_Misc_Finalizer,491,18140
+    Lisp_Misc_Float,494,18275
+    Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+    Lisp_Fwd_Int,504,18566
+    Lisp_Fwd_Bool,505,18619
+    Lisp_Fwd_Obj,506,18670
+    Lisp_Fwd_Buffer_Obj,507,18729
+    Lisp_Fwd_Kboard_Obj        508,18800
+typedef struct { EMACS_INT i;567,21781
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+enum symbol_interned639,24199
+  SYMBOL_UNINTERNED 641,24222
+  SYMBOL_INTERNED 642,24247
+  SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+  SYMBOL_PLAINVAL 648,24338
+  SYMBOL_VARALIAS 649,24362
+  SYMBOL_LOCALIZED 650,24386
+  SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+  bool_bf gcmarkbit 656,24458
+  ENUM_BF 663,24793
+    Lisp_Object value;687,25631
+    struct Lisp_Symbol *alias;alias688,25654
+    struct Lisp_Buffer_Local_Value *blv;blv689,25685
+    union Lisp_Fwd *fwd;fwd690,25726
+  } val;691,25751
+  Lisp_Object function;694,25823
+  Lisp_Object plist;697,25885
+  struct Lisp_Symbol *next;next700,25974
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY        712,26446
+#define DEFUN_ARGS_UNEVALLED   713,26498
+#define DEFUN_ARGS_0   714,26541
+#define DEFUN_ARGS_1   715,26569
+#define DEFUN_ARGS_2   716,26604
+#define DEFUN_ARGS_3   717,26652
+#define DEFUN_ARGS_4   718,26713
+#define DEFUN_ARGS_5   719,26787
+#define DEFUN_ARGS_6   721,26880
+#define DEFUN_ARGS_7   723,26986
+#define DEFUN_ARGS_8   725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+  PVEC_NORMAL_VECTOR,782,29585
+  PVEC_FREE,783,29607
+  PVEC_PROCESS,784,29620
+  PVEC_FRAME,785,29636
+  PVEC_WINDOW,786,29650
+  PVEC_BOOL_VECTOR,787,29665
+  PVEC_BUFFER,788,29685
+  PVEC_HASH_TABLE,789,29700
+  PVEC_TERMINAL,790,29719
+  PVEC_WINDOW_CONFIGURATION,791,29736
+  PVEC_SUBR,792,29765
+  PVEC_OTHER,793,29778
+  PVEC_COMPILED,795,29856
+  PVEC_CHAR_TABLE,796,29873
+  PVEC_SUB_CHAR_TABLE,797,29892
+  PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+    PSEUDOVECTOR_SIZE_BITS 808,30382
+    PSEUDOVECTOR_SIZE_MASK 809,30415
+    PSEUDOVECTOR_REST_BITS 813,30625
+    PSEUDOVECTOR_REST_MASK 814,30658
+    PSEUDOVECTOR_AREA_BITS 818,30823
+    PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+      Lisp_Object cdr;1159,40162
+      struct Lisp_Cons *chain;chain1162,40236
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+    ptrdiff_t size;1364,46383
+struct Lisp_Vector1369,46482
+    struct vectorlike_header header;1371,46505
+    Lisp_Object contents[contents1372,46542
+    ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+    struct vectorlike_header header;1388,47012
+    EMACS_INT size;1390,47086
+    bits_word data[data1395,47319
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+    header_size 1471,49047
+    bool_header_size 1472,49106
+    word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+    CHARTAB_SIZE_BITS_0 1567,52516
+    CHARTAB_SIZE_BITS_1 1568,52545
+    CHARTAB_SIZE_BITS_2 1569,52574
+    CHARTAB_SIZE_BITS_3 1570,52603
+struct Lisp_Char_Table1575,52672
+    struct vectorlike_header header;1581,52928
+    Lisp_Object defalt;1585,53078
+    Lisp_Object parent;1590,53280
+    Lisp_Object purpose;1594,53398
+    Lisp_Object ascii;1598,53564
+    Lisp_Object contents[contents1600,53588
+    Lisp_Object extras[extras1603,53699
+struct Lisp_Sub_Char_Table1606,53752
+    struct vectorlike_header header;1610,53918
+    int depth;1618,54341
+    int min_char;1621,54417
+    Lisp_Object contents[contents1624,54492
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+    struct vectorlike_header header;1672,55807
+      Lisp_Object (*a0)a01674,55856
+      Lisp_Object (*a1)a11675,55888
+      Lisp_Object (*a2)a21676,55927
+      Lisp_Object (*a3)a31677,55979
+      Lisp_Object (*a4)a41678,56044
+      Lisp_Object (*a5)a51679,56122
+      Lisp_Object (*a6)a61680,56213
+      Lisp_Object (*a7)a71681,56317
+      Lisp_Object (*a8)a81682,56434
+      Lisp_Object (*aUNEVALLED)aUNEVALLED1683,56564
+      Lisp_Object (*aMANY)aMANY1684,56616
+    } function;1685,56671
+    short min_args,1686,56687
+    short min_args, max_args;1686,56687
+    const char *symbol_name;symbol_name1687,56717
+    const char *intspec;intspec1688,56746
+    const char *doc;doc1689,56771
+enum char_table_specials1692,56798
+    CHAR_TABLE_STANDARD_SLOTS 1697,56993
+    SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+  Lisp_Object name;1808,60139
+  Lisp_Object user_hash_function;1811,60206
+  Lisp_Object user_cmp_function;1814,60297
+  bool (*cmpfn)cmpfn1817,60372
+  EMACS_UINT (*hashfn)hashfn1820,60486
+struct Lisp_Hash_Table1823,60555
+  struct vectorlike_header header;1826,60649
+  Lisp_Object weak;1830,60783
+  Lisp_Object rehash_size;1835,61007
+  Lisp_Object rehash_threshold;1839,61129
+  Lisp_Object hash;1843,61260
+  Lisp_Object next;1848,61490
+  Lisp_Object next_free;1851,61560
+  Lisp_Object index;1856,61771
+  ptrdiff_t count;1863,62041
+  Lisp_Object key_and_value;1868,62240
+  struct hash_table_test test;1871,62314
+  struct Lisp_Hash_Table *next_weak;next_weak1875,62457
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any   1971,64806
+  ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+  ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+    ENUM_BF 2034,67346
+    SAVE_UNUSED,2047,67641
+    SAVE_INTEGER,2048,67658
+    SAVE_FUNCPOINTER,2049,67676
+    SAVE_POINTER,2050,67698
+    SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+    SAVE_TYPE_INT_INT 2066,68096
+    SAVE_TYPE_INT_INT_INT2067,68169
+    SAVE_TYPE_OBJ_OBJ 2069,68259
+    SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+    SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+    SAVE_TYPE_PTR_INT 2073,68506
+    SAVE_TYPE_PTR_OBJ 2074,68579
+    SAVE_TYPE_PTR_PTR 2075,68651
+    SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+    SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+    ENUM_BF 2112,69900
+      void *pointer;pointer2125,70555
+      voidfuncptr funcpointer;2126,70576
+      ptrdiff_t integer;2127,70607
+      Lisp_Object object;2128,70632
+    } data[data2129,70658
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+    struct Lisp_Misc_Any base;2188,72132
+    struct Lisp_Finalizer *prev;prev2191,72220
+    struct Lisp_Finalizer *next;next2192,72253
+    Lisp_Object function;2197,72490
+struct Lisp_Free2201,72581
+    ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+    struct Lisp_Misc_Any u_any;2214,72902
+    struct Lisp_Free u_free;2215,72973
+    struct Lisp_Marker u_marker;2216,73002
+    struct Lisp_Overlay u_overlay;2217,73035
+    struct Lisp_Save_Value u_save_value;2218,73070
+    struct Lisp_Finalizer u_finalizer;2219,73111
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+    enum Lisp_Fwd_Type type;2276,74140
+    EMACS_INT *intvar;intvar2277,74190
+struct Lisp_Boolfwd2284,74411
+    enum Lisp_Fwd_Type type;2286,74435
+    bool *boolvar;boolvar2287,74486
+struct Lisp_Objfwd2294,74702
+    enum Lisp_Fwd_Type type;2296,74725
+    Lisp_Object *objvar;objvar2297,74775
+struct Lisp_Buffer_Objfwd2302,74934
+    enum Lisp_Fwd_Type type;2304,74964
+    int offset;2305,75021
+    Lisp_Object predicate;2307,75113
+struct Lisp_Buffer_Local_Value2334,76470
+    bool_bf local_if_set 2338,76615
+    bool_bf frame_local 2341,76797
+    bool_bf found 2344,76939
+    union Lisp_Fwd *fwd;fwd2346,77041
+    Lisp_Object where;2348,77184
+    Lisp_Object defcell;2351,77310
+    Lisp_Object valcell;2357,77614
+struct Lisp_Kboard_Objfwd2362,77729
+    enum Lisp_Fwd_Type type;2364,77759
+    int offset;2365,77816
+union Lisp_Fwd2368,77838
+    struct Lisp_Intfwd u_intfwd;2370,77857
+    struct Lisp_Boolfwd u_boolfwd;2371,77890
+    struct Lisp_Objfwd u_objfwd;2372,77925
+    struct Lisp_Buffer_Objfwd u_buffer_objfwd;2373,77958
+    struct Lisp_Kboard_Objfwd u_kboard_objfwd;2374,78005
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+      double data;2395,78354
+      struct Lisp_Float *chain;chain2396,78373
+    } u;2397,78405
+XFLOAT_DATA 2401,78434
+    IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+    COMPILED_ARGLIST 2431,79389
+    COMPILED_BYTECODE 2432,79415
+    COMPILED_CONSTANTS 2433,79442
+    COMPILED_STACK_DEPTH 2434,79470
+    COMPILED_DOC_STRING 2435,79500
+    COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+    CHAR_ALT 2445,79850
+    CHAR_SUPER 2446,79876
+    CHAR_HYPER 2447,79904
+    CHAR_SHIFT 2448,79932
+    CHAR_CTL 2449,79960
+    CHAR_META 2450,79986
+    CHAR_MODIFIER_MASK 2452,80014
+    CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+enum maxargs2831,89401
+    MANY 2833,89418
+    UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+  SPECPDL_UNWIND,2944,93822
+  SPECPDL_UNWIND_PTR,2945,93891
+  SPECPDL_UNWIND_INT,2946,93942
+  SPECPDL_UNWIND_VOID,2947,93990
+  SPECPDL_BACKTRACE,2948,94044
+  SPECPDL_LET,2949,94102
+  SPECPDL_LET_LOCAL,2951,94232
+  SPECPDL_LET_DEFAULT  2952,94289
+union specbinding2955,94361
+    ENUM_BF 2957,94383
+      ENUM_BF 2959,94440
+      ENUM_BF 2964,94570
+      ENUM_BF 2969,94693
+      ENUM_BF 2974,94811
+      ENUM_BF 2978,94916
+      ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+  enum handlertype type;3025,96471
+  Lisp_Object tag_or_ch;3026,96496
+  Lisp_Object val;3027,96521
+  struct handler *next;next3028,96540
+  struct handler *nextfree;nextfree3029,96564
+  Lisp_Object *bytecode_top;bytecode_top3036,96922
+  int bytecode_dest;3037,96951
+  struct gcpro *gcpro;gcpro3042,97188
+  sys_jmp_buf jmp;3044,97218
+  EMACS_INT lisp_eval_depth;3045,97237
+  ptrdiff_t pdlcount;3046,97266
+  int poll_suppress_count;3047,97288
+  int interrupt_input_blocked;3048,97315
+  struct byte_stack *byte_stack;byte_stack3049,97346
+#define PUSH_HANDLER(3053,97443
+#define QUIT   3101,99220
+#define QUITP 3112,99470
+struct gcpro3132,100313
+  struct gcpro *next;next3134,100328
+  volatile Lisp_Object *var;var3137,100397
+  ptrdiff_t nvars;3140,100479
+  const char *name;name3144,100564
+  int lineno;3147,100620
+  int idx;3150,100681
+  int level;3153,100717
+#define GC_USE_GCPROS_AS_BEFORE        3171,101294
+#define GC_MAKE_GCPROS_NOOPS   3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS     3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES    3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO        3353,109913
+#define RETURN_UNGCPRO(3363,110180
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+enum Arith_Comparison 3497,113300
+  ARITH_EQUAL,3498,113324
+  ARITH_NOTEQUAL,3499,113339
+  ARITH_LESS,3500,113357
+  ARITH_GRTR,3501,113371
+  ARITH_LESS_OR_EQUAL,3502,113385
+  ARITH_GRTR_OR_EQUAL3503,113408
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_formatted_string 3767,124631
+build_pure_c_string 3792,125659
+build_string 3801,125864
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+intern 3968,132131
+intern_c_string 3974,132219
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern _Noreturn void emacs_abort 4374,148383
+egetenv 4532,152806
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA        4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+  struct Lisp_Cons s;4672,157290
+  double d;4673,157312
+  double d; intmax_t i;4673,157312
+  double d; intmax_t i; void *p;p4673,157312
+union Aligned_String4676,157349
+  struct Lisp_String s;4678,157372
+  double d;4679,157396
+  double d; intmax_t i;4679,157396
+  double d; intmax_t i; void *p;p4679,157396
+    USE_STACK_CONS 4689,157704
+    USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define        SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/h.h,2394
+   ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+typedef struct tpcmd8,147
+#define ggg 10,170
+  } arg;13,198
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+    fu   int (*funcptr)funcptr17,242
+    long foo;18,279
+    char bar;19,293
+} foobar2;20,307
+    DEVICE_SWP,23,333
+    DEVICE_LAST24,349
+} bsp_DevId;25,365
+  struct constant_args 27,394
+    unsigned int burst;28,419
+  } constant;29,443
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+  int def;35,523
+} ghi1;36,534
+typedef union abc 37,542
+  int def;38,562
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage 
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+               kind;46,733
+               is_explicit;49,812
+  a_byte_boolean is_curly_brace_form;54,1009
+} an_extern_linkage;56,1054
+typedef struct pollfd   pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+    int rtint;60,1149
+    char *rtstr;rtstr61,1164
+    struct rtx_def *rtx;rtx62,1181
+  } womboid 63,1206
+typedef union rtunion_def64,1220
+  int rtint;68,1250
+  char *rtstr;rtstr69,1263
+  struct rtx_def *rtxp;rtxp70,1278
+  struct rtx_def rtxnp;71,1302
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+  Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous      117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+struct re_pattern_buffer { unsigned char *buffer;buffer119,2277
+
+cp-src/c.C,3287
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+        ipc3dLinkControlSetup setup;CMultiChannelCSC19_3D::setup5,190
+        ipc3dCSC19<CMultiChannelCSC19_3D::ipc3dCSC196,227
+        
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl>
 mcCSC;CMultiChannelCSC19_3D::mcCSC6,227
+        advTimer cscInitTime;CMultiChannelCSC19_3D::cscInitTime7,388
+        advTimer 
cscSegmentationTime;CMultiChannelCSC19_3D::cscSegmentationTime8,418
+        advTimer outputTime;CMultiChannelCSC19_3D::outputTime9,456
+        void execute(CMultiChannelCSC19_3D::execute11,493
+int main 25,1026
+double base 26,1088
+typedef struct s1 32,1251
+   int counter;s1::counter33,1271
+} t1;34,1287
+struct s2 35,1293
+   int counter;s2::counter36,1305
+typedef struct s2 t2;38,1324
+class A 39,1346
+  enum { rosso,A::rosso40,1356
+  enum { rosso, giallo,A::giallo40,1356
+  enum { rosso, giallo, verde A::verde40,1356
+  enum { rosso, giallo, verde } colori;A::colori40,1356
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+template <class C, int n> class AT { C t[AT::t52,1668
+class AU 53,1716
+class AU { T x;AU::x53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A 57,1826
+  A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+     void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct B 74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+  int x;foo::x80,2115
+class test 86,2156
+  int f(test::f87,2169
+  int ff(test::ff89,2231
+  int g(test::g90,2254
+class  AST_Root 92,2278
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+     void f(::f115,2733
+struct A 117,2753
+A::~A(120,2777
+struct B 122,2789
+    ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;::teats127,2842
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+    enum {dog,Boo::dog130,2880
+    enum {dog, cat}Boo::cat130,2880
+    enum {dog, cat} animals;Boo::animals130,2880
+    struct {int treats;Boo::treats131,2909
+    struct {int treats;} cow;Boo::cow131,2909
+    int i,Boo::i132,2939
+    int i,a,Boo::a132,2939
+    int i,a,b;Boo::b132,2939
+    foo(Boo::foo133,2954
+    Boo(Boo::Boo137,2995
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int 
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,709
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2 78,2022
+  MDiagArray2 MDiagArray2::MDiagArray282,2077
+  MDiagArray2 MDiagArray2::MDiagArray286,2154
+  MDiagArray2 MDiagArray2::MDiagArray287,2198
+  MDiagArray2 MDiagArray2::MDiagArray288,2254
+  MDiagArray2 MDiagArray2::MDiagArray289,2329
+  MDiagArray2 MDiagArray2::MDiagArray290,2387
+  MDiagArray2 MDiagArray2::MDiagArray291,2450
+  ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+  MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+  operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Range.h,595
+#define octave_Range_h 24,765
+Range35,891
+  Range Range::Range39,909
+  Range Range::Range42,995
+  Range Range::Range46,1130
+  Range Range::Range50,1248
+  double base Range::base54,1376
+  double limit Range::limit55,1425
+  double inc Range::inc56,1475
+  int nelem Range::nelem57,1523
+  void set_base Range::set_base68,1728
+  void set_limit Range::set_limit69,1774
+  void set_inc Range::set_inc70,1821
+  double rng_base;Range::rng_base79,2023
+  double rng_limit;Range::rng_limit80,2042
+  double rng_inc;Range::rng_inc81,2062
+  int rng_nelem;Range::rng_nelem83,2081
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,667
+#define __COLORS9,401
+enum COLORS 11,419
+    BLACK,COLORS::BLACK12,433
+    BLUE,COLORS::BLUE13,471
+    GREEN,COLORS::GREEN14,481
+    CYAN,COLORS::CYAN15,492
+    RED,COLORS::RED16,502
+    MAGENTA,COLORS::MAGENTA17,511
+    BROWN,COLORS::BROWN18,524
+    LIGHTGRAY,COLORS::LIGHTGRAY19,535
+    DARKGRAY,COLORS::DARKGRAY20,550
+    LIGHTBLUE,COLORS::LIGHTBLUE21,589
+    LIGHTGREEN,COLORS::LIGHTGREEN22,604
+    LIGHTCYAN,COLORS::LIGHTCYAN23,620
+    LIGHTRED,COLORS::LIGHTRED24,635
+    LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+    YELLOW,COLORS::YELLOW26,667
+    WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,396
+class site:site5,235
+    char x,site::x7,269
+    char x, y,site::y7,269
+    char x, y, alive,site::alive7,269
+    char x, y, alive, next_alive;site::next_alive7,269
+    site(site::site10,344
+    char read(site::read12,410
+    void set(site::set13,444
+    void clear(site::clear14,478
+    void compute_next_state(site::compute_next_state15,514
+    void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,1057
+class generic_object13,520
+    int where_in_registry;generic_object::where_in_registry15,547
+    virtual void compute_next_state(generic_object::compute_next_state21,842
+    virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+    location(location::location43,1642
+class irregular_location:irregular_location47,1686
+    double x,irregular_location::x49,1734
+    double x, y,irregular_location::y49,1734
+    double x, y, z;irregular_location::z49,1734
+    irregular_location(irregular_location::irregular_location51,1762
+class discrete_location:discrete_location56,1889
+    int x,discrete_location::x58,1936
+    int x, y,discrete_location::y58,1936
+    int x, y, z;discrete_location::z58,1936
+    class location *neighbors[discrete_location::neighbors59,1953
+    discrete_location(discrete_location::discrete_location62,2044
+    void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+    location *where;agent::where77,2549
+
+cp-src/fail.C,417
+struct A 7,263
+          struct B A::B8,274
+                  struct C A::B::C9,289
+                          int x;A::B::C::x10,305
+                          C(A::B::C::C11,318
+                          operator int(A::B::C::operator int12,342
+                  typedef C T;A::B::T14,389
+          typedef B T2;A::T216,414
+class A 23,453
+       class B A::B24,463
+               class C A::B::C25,474
+               int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+       class D 41,622
+               D(D::D43,659
+               int x;D::x44,694
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5069
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias 
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+f-src/entry.for,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+       ENTRY  MSGSEL 193,4382
+     & intensity1(375,8135
+       character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+   9   field   >field136,582
+   5   field   >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+&nbsp;8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the 
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and 
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or 
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1133
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+       @-$($72,3064
+       @-$($73,3113
+       @-$($74,3177
+       @-$($75,3223
+       @-$($76,3291
+       @-$($77,3383
+       @$(81,3466
+       @$(82,3514
+       @$(83,3577
+       @$(84,3622
+       @$(85,3689
+       @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+       @env CHECKEROPTS=92,3922
+       @$(98,4094
+       @$(106,4250
+       @$(110,4374
+       @$(114,4500
+       @for i in $(SRCS); do echo $$i;140,5315
+       $(160,6053
+       $(163,6114
+       $(166,6177
+       $(169,6228
+       $(172,6317
+       sdiff --suppress-common-lines --width=width186,6614
+       sdiff --suppress-common-lines --width=width189,6703
+       sdiff --suppress-common-lines --width=width192,6791
+       sdiff --suppress-common-lines --width=width195,6880
+       TEXTAGS=204,7122
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7122
+       ${RUN} etags12 --members -o $@ --regex=regex207,7239
+       ${RUN} ./ctags -o $@ --regex=regex213,7388
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+       TEXTAGS=219,7583
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7583
+       ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,475
+#define        PTY_TEMPLATE 20,494
+#define        PTY_LENGTH 21,528
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+    andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS       36,1101
+#define TYPESTOSTAT    37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION        34,1116
+#   define DEBUG 37,1155
+#define LISTCONTENTS   39,1181
+#define OPENBUTTON     47,1352
+#define LISTCONTENTSBUTTON     48,1449
+#define LISTDESCRIPTIONBUTTON  49,1562
+#define STATE_UNINSTALLED      52,1687
+#define STATE_INSTALLED        53,1807
+#define STATE_COMPRESSD        54,1948
+#define SIZEFORMAT     57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type 
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING        368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2864
+  define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+  define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+  define("LCE_WS"LCE_WS11,194
+  define("LCE_COMMENT"LCE_COMMENT13,244
+  define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+  define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+  define("LCE_MSGID"LCE_MSGID19,430
+  define("LCE_MSGSTR"LCE_MSGSTR21,488
+  define("LCE_TEXT"LCE_TEXT23,541
+  define("STATE_ABORT"STATE_ABORT25,567
+  define("STATE_OK"STATE_OK26,595
+  define("STATE_LOOP"STATE_LOOP27,620
+  class POEntryAD 29,648
+      function validate(31,683
+      function checkQuotation(59,1384
+  class CommentAD 70,1639
+      var $prefix;72,1674
+      function CommentAD(73,1693
+      function validate(83,1944
+  class POEntry 105,2410
+      var $msgid;107,2454
+      var $msgstr;108,2472
+      var $user_comment;109,2491
+      var $sys_comment;110,2516
+      var $unk_comment;111,2540
+      var $msgid_lc 113,2565
+      var $msgstr_lc 114,2590
+      var $user_comment_lc 115,2616
+      var $sys_comment_lc 116,2648
+      var $unk_comment_lc 117,2679
+      function POEntry(119,2711
+      function lineCount(135,3255
+      function serializeToVars(141,3365
+      function write(151,3800
+  class POReader 163,4178
+      var $msgid;165,4223
+      var $msgstr;166,4241
+      var $user_comment;167,4260
+      var $sys_comment;168,4285
+      var $unk_comment;169,4309
+      var $state;170,4333
+      var $ignore_ws;171,4351
+      var $po_entries;172,4373
+      var $poe_num;173,4396
+      var $filename;174,4416
+      var $domain;175,4437
+      function gettext(177,4457
+      function parseFromVars(189,4705
+      function serializeToVars(215,5331
+      function POReader(229,5613
+      function read(243,5983
+      function write(259,6307
+      function isComment(277,6645
+      function comment(284,6822
+      function msgid(304,7247
+      function msgstr(320,7574
+      function start(340,8232
+      function createPOEntries(360,8644
+      function stripLine(394,9472
+      function printClassification(421,10056
+      function classifyLine(432,10301
+  function getTextDomains(471,11094
+  class PORManager 498,11756
+      var      $por_a;500,11803
+      function PORManager(502,11822
+      function addPOReader(507,11896
+      function &getPOReader(getPOReader512,11992
+      function getDomainNames(517,12081
+  function &loadPORManager(loadPORManager523,12174
+  function fileJoin(536,12436
+      function lce_bindtextdomain(557,12839
+      function lce_textdomain(614,14530
+      function lce_gettext(620,14641
+      function lce_dgettext(626,14767
+      function lce(634,14966
+      function lce_bindtextdomain(651,15488
+      function lce_textdomain(656,15592
+      function lce_gettext(661,15674
+      function lce_dgettext(666,15755
+      function lce(670,15855
+  function lce_geteditcode(676,15898
+
+php-src/ptest.php,135
+define("TEST"TEST1,0
+test 4,26
+       var $member;8,71
+       var $memassign=9,85
+       var $memassign_space 10,110
+       var $test12,176
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+         my $entry entry218,5621
+         my $entry entry234,6077
+             my $entry entry245,6351
+         my $entry entry252,6536
+         my $entry entry268,7010
+             my $entry entry276,7204
+         my $entry entry281,7328
+      my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+  my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+       local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+       local($prog,$_,@list)($prog,$_,@list39,868
+       
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+    def __init__(18,374
+    def __repr__(24,590
+    def __str__(34,871
+class Server:Server37,934
+    def __init__(38,948
+    def dump(73,2198
+    def __repr__(125,3896
+    def __str__(128,3945
+class User:User131,4014
+    def __init__(132,4026
+    def __repr__(172,5445
+    def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+    def bind(234,7525
+    def focus_set(236,7584
+    def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+    def __init__(269,8808
+    def handleList(303,10042
+    def handleNew(306,10094
+    def editItem(314,10426
+    def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+    def PostControls(376,12403
+    def GatherControls(421,13530
+class ServerEdit(512,16264
+    def __init__(513,16289
+    def post(525,16629
+    def gather(543,17191
+    def nosave(547,17304
+    def save(551,17408
+    def refreshPort(556,17509
+    def createWidgets(561,17663
+    def edituser(631,20708
+class UserEdit(645,20921
+    def __init__(646,20944
+    def post(658,21283
+    def gather(676,21841
+    def nosave(680,21950
+    def save(684,22052
+    def createWidgets(689,22151
+class Configure(760,24879
+    def __init__(761,24916
+    def MakeDispose(772,25211
+    def MakeSitelist(786,25706
+    def editsite(794,25949
+    def save(797,26022
+    def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+  \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+   \def\subtitlefont{\subtitlefont765,24968
+   \def\authorfont{\authorfont767,25052
+   \def\title{\title773,25262
+   \def\titlezzz##1{\titlezzz774,25297
+   \def\subtitle{\subtitle782,25612
+   \def\subtitlezzz##1{\subtitlezzz783,25653
+   \def\author{\author786,25771
+   \def\authorzzz##1{\authorzzz787,25808
+   \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+  \def\thearg{\thearg1145,37720
+  \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0  %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+  \def\indexbackslash{\indexbackslash1480,48406
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+  \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+  address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+  address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+     address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno  \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+  {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+  {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+  {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+      \def\secentry ##1##2##3##4{\secentry2066,68220
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+    {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+  \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,1963
+my_printf 135,
+void fatala 138,
+max 141,
+struct bar 143,
+  char z;144,
+  struct foo f;145,
+__attribute__ ((always_inline)) max 147,
+struct foo150,
+  char a;152,
+  int x[x153,
+char stack[stack155,
+struct S 156,
+struct S { short f[f156,
+  int *__ip;__ip159,
+  union wait *__up;__up160,
+} wait_status_ptr_t 161,
+Some_Class  A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S  __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+  U16 next;174,
+  U16 prev;175,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+  int x;179,
+  char a,180,
+  char a, b,180,
+  char a, b, c,180,
+  char a, b, c, d;180,
+     f1 183,
+void f2 184,
+int x 188,
+struct foo 189,
+struct foo { int x[x189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal", 
Fx_get_selection_internal,x-get-selection-internal206,
+       Fx_get_selection_internal,x-get-selection-internal212,
+      Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+  aaa;249,
+  bbb;251,
+struct sss1 252,
+struct sss2253,
+  struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+  **b;b262,
+caccacacca 263,
+a 267,
+  typedef struct aa 269,
+  typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+  typedef  int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,738
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+VOIDSTAR parse_hash;63,1400
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+char *instr;instr80,1790
+int parse_error 81,1803
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define       NE      6,114
+# define       LE      7,130
+# define       GE      8,146
+# define       NEG     9,162
+# define       L_CELL  10,179
+# define       L_RANGE 11,199
+# define       L_VAR   12,220
+# define       L_CONST 13,239
+# define       L_FN0   14,260
+# define       L_FN1   15,279
+# define       L_FN2   16,298
+# define       L_FN3   17,317
+# define       L_FN4   18,336
+# define       L_FNN   19,355
+# define       L_FN1R  20,374
+# define       L_FN2R  21,394
+# define       L_FN3R  22,414
+# define       L_FN4R  23,434
+# define       L_FNNR  24,454
+# define       L_LE    25,474
+# define       L_NE    26,492
+# define       L_GE    27,510
+
+parse.y,1181
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+VOIDSTAR parse_hash;63,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+char *instr;instr80,
+int parse_error 81,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define        YYFINAL 93,
+#define        YYFLAG  94,
+#define        YYNTBASE        95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define        YYLAST  266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2168
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+  short yyss;85,
+  YYSTYPE yyvs;86,
+  YYLTYPE yyls;88,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyresult 947,
+
+y-src/atest.y,9
+exp    2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define       INT     6,113
+# define       CHAR    7,130
+# define       NAME    8,148
+# define       ERROR   9,166
+# define       OR      10,185
+# define       AND     11,201
+# define       EQUAL   12,218
+# define       NOTEQUAL        13,237
+# define       LEQ     14,259
+# define       GEQ     15,276
+# define       LSH     16,293
+# define       RSH     17,310
+# define       UNARY   18,327
+
+cccp.y,2106
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+  struct arglist *next;next42,
+  U_CHAR *name;name43,
+  int length;44,
+  int argno;45,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+  struct constant 113,
+  struct constant {long value;113,
+  struct constant {long value; int unsignedp;113,
+  struct constant {long value; int unsignedp;} integer;113,
+  struct name 114,
+  struct name {U_CHAR *address;address114,
+  struct name {U_CHAR *address; int length;114,
+  struct name {U_CHAR *address; int length;} name;114,
+  struct arglist *keywords;keywords115,
+  int voidval;116,
+  char *sval;sval117,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define        YYFINAL 127,
+#define        YYFLAG  128,
+#define        YYNTBASE        129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define        YYLAST  274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+  char *operator;operator438,
+  int token;439,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2168
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+  short yyss;85,
+  YYSTYPE yyvs;86,
+  YYLTYPE yyls;88,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyresult 947,
+
+y-src/cccp.y,1696
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+  struct arglist *next;next42,1318
+  U_CHAR *name;name43,1342
+  int length;44,1358
+  int argno;45,1372
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+  struct constant 112,2733
+  struct constant {long value;112,2733
+  struct constant {long value; int unsignedp;112,2733
+  struct constant {long value; int unsignedp;} integer;112,2733
+  struct name 113,2789
+  struct name {U_CHAR *address;address113,2789
+  struct name {U_CHAR *address; int length;113,2789
+  struct name {U_CHAR *address; int length;} name;113,2789
+  struct arglist *keywords;keywords114,2840
+  int voidval;115,2868
+  char *sval;sval116,2883
+start 143,3226
+exp1   148,3330
+exp    156,3505
+exp    185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+  char *operator;operator438,11053
+  int token;439,11071
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+c-src/fail.c,0
+
+a-src/empty.zz,0
diff --git a/test/etags/ETAGS.good_4 b/test/etags/ETAGS.good_4
new file mode 100644
index 0000000..5d31c36
--- /dev/null
+++ b/test/etags/ETAGS.good_4
@@ -0,0 +1,4380 @@
+
+Makefile,683
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,584
+ERLSRC=11,654
+FORTHSRC=12,699
+FSRC=13,749
+HTMLSRC=14,821
+LUASRC=16,950
+MAKESRC=17,993
+OBJCSRC=18,1035
+OBJCPPSRC=19,1116
+PASSRC=20,1179
+PERLSRC=21,1221
+PHPSRC=22,1291
+PSSRC=23,1363
+PROLSRC=24,1403
+PYTSRC=25,1465
+TEXSRC=26,1506
+YSRC=27,1585
+SRCS=28,1650
+NONSRCS=32,1902
+ETAGS_PROG=34,1976
+CTAGS_PROG=35,2007
+REGEX=37,2039
+xx=38,2085
+RUN=40,2134
+OPTIONS=42,2140
+ARGS=43,2192
+infiles 45,2210
+check:check47,2272
+ediff%:ediff%55,2575
+cdiff:cdiff58,2676
+ETAGS:ETAGS61,2773
+CTAGS:CTAGS64,2843
+srclist:srclist67,2921
+regexfile:regexfile71,3012
+.PRECIOUS:.PRECIOUS77,3189
+FRC:FRC79,3223
+
+ada-src/etags-test-for.ada,1969
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+   function Body_RequiredBody_Required/f3,78
+   type Type_Specific_Data Type_Specific_Data/t11,280
+   function "abs"abs/f19,504
+   type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+   function "="=/f27,722
+   type usfreelock_ptr usfreelock_ptr/t30,803
+   function p p/f33,891
+   procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+  type Private_T Private_T/t46,1220
+  package Inner1 Inner1/s48,1250
+    procedure Private_T;Private_T/p49,1270
+  package Inner2 Inner2/s52,1310
+    task Private_T;Private_T/k53,1330
+  type Public_T Public_T/t56,1365
+  procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+  procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+  function Pkg1_Func1 Pkg1_Func1/f66,1514
+  function Pkg1_Func2 Pkg1_Func2/f68,1553
+  package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+  task type Task_Type Task_Type/k75,1694
+  type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+  procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+  package body Inner1 Inner1/b96,1956
+    procedure Private_T Private_T/p97,1981
+  package body Inner2 Inner2/b103,2054
+    task body Private_T Private_T/b104,2079
+  task body Task_Type Task_Type/b112,2181
+  procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+  function Pkg1_Func1 Pkg1_Func1/f132,2445
+  function Pkg1_Func2 Pkg1_Func2/f134,2496
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function  Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+  protected Bidule Bidule/t168,2953
+  protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+  protected body Bidule Bidule/b179,3115
+  protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+   package RTE RTE/s69,2712
+   package TSL TSL/s70,2759
+   function To_void_ptr To_void_ptr/f86,3287
+   function To_TCB_Ptr To_TCB_Ptr/f89,3366
+   function 
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+   function 
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+   procedure Abort_WrapperAbort_Wrapper/p115,4302
+   procedure LL_Wrapper LL_Wrapper/p122,4526
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+   function Self Self/f160,5586
+   procedure Initialize_LockInitialize_Lock/p174,5958
+   procedure Finalize_Lock Finalize_Lock/p210,6927
+   procedure Write_Lock Write_Lock/p226,7338
+   procedure Read_Lock Read_Lock/p239,7700
+   procedure Unlock Unlock/p246,7850
+   procedure Initialize_Cond Initialize_Cond/p258,8160
+   procedure Finalize_Cond Finalize_Cond/p286,8979
+   procedure Cond_Wait Cond_Wait/p300,9303
+   procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+   procedure Cond_Signal Cond_Signal/p343,10510
+   procedure Set_PrioritySet_Priority/p355,10836
+   procedure Set_Own_Priority Set_Own_Priority/p372,11243
+   function Get_Priority Get_Priority/f385,11598
+   function Get_Own_Priority Get_Own_Priority/f398,12023
+   procedure Create_LL_TaskCreate_LL_Task/p412,12438
+      function To_Start_Addr To_Start_Addr/f426,12873
+   procedure Exit_LL_Task Exit_LL_Task/p491,14995
+   procedure Abort_Task Abort_Task/p500,15158
+   procedure Test_Abort Test_Abort/p518,15716
+   procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+   procedure Abort_WrapperAbort_Wrapper/p557,16939
+      function Address_To_Call_State Address_To_Call_State/f562,17062
+   procedure Install_Error_Handler Install_Error_Handler/p573,17351
+   procedure LL_Assert LL_Assert/p599,18146
+   procedure LL_Wrapper LL_Wrapper/p608,18299
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+   procedure Clear Clear/p640,19236
+   procedure Test_And_Set Test_And_Set/p645,19330
+   function  Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+   type Pre_Call_State Pre_Call_State/t64,3331
+   type Task_Storage_Size Task_Storage_Size/t66,3378
+   type Machine_Exceptions Machine_Exceptions/t68,3433
+   type Error_Information Error_Information/t70,3499
+   type Lock Lock/t72,3569
+   type Condition_Variable Condition_Variable/t73,3594
+   type Task_Control_Block Task_Control_Block/t81,3955
+   type TCB_Ptr TCB_Ptr/t89,4241
+   function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+   function Self Self/f100,4602
+   procedure Initialize_Lock Initialize_Lock/p103,4707
+   procedure Finalize_Lock Finalize_Lock/p107,4879
+   procedure Write_Lock Write_Lock/p111,5034
+   procedure Read_Lock Read_Lock/p118,5428
+   procedure Unlock Unlock/p128,5995
+   procedure Initialize_Cond Initialize_Cond/p135,6300
+   procedure Finalize_Cond Finalize_Cond/p138,6413
+   procedure Cond_Wait Cond_Wait/p142,6591
+   procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+   procedure Cond_Signal Cond_Signal/p164,7812
+   procedure Set_Priority Set_Priority/p169,8040
+   procedure Set_Own_Priority Set_Own_Priority/p173,8200
+   function Get_Priority Get_Priority/f177,8348
+   function Get_Own_Priority Get_Own_Priority/f181,8504
+   procedure Create_LL_TaskCreate_LL_Task/p185,8647
+   procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+   procedure Abort_Task Abort_Task/p203,9516
+   procedure Test_Abort;Test_Abort/p210,9878
+   type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+   procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+   procedure Install_Error_Handler Install_Error_Handler/p226,10741
+   procedure LL_Assert LL_Assert/p231,10983
+   type Proc Proc/t238,11240
+   type TAS_Cell TAS_Cell/t242,11328
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+   procedure Clear Clear/p260,12157
+   procedure Test_And_Set Test_And_Set/p267,12462
+   function  Is_Set Is_Set/f275,12877
+   type Lock Lock/t283,13155
+   type Condition_Variable Condition_Variable/t288,13267
+   type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+  type Private_T Private_T/t5,106
+  package Inner1 Inner1/s7,136
+    procedure Private_T;Private_T/p8,156
+  package Inner2 Inner2/s11,196
+    task Private_T;Private_T/k12,216
+  type Public_T Public_T/t15,251
+  procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+  procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+  function Pkg1_Func1 Pkg1_Func1/f25,400
+  function Pkg1_Func2 Pkg1_Func2/f27,439
+  package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+  task type Task_Type Task_Type/k34,580
+  type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+  procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+  package body Inner1 Inner1/b53,840
+    procedure Private_T Private_T/p54,865
+  package body Inner2 Inner2/b60,938
+    task body Private_T Private_T/b61,963
+  task body Task_Type Task_Type/b68,1064
+  procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+  function Pkg1_Func1 Pkg1_Func1/f88,1328
+  function Pkg1_Func2 Pkg1_Func2/f90,1379
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function  Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+  protected Bidule Bidule/t125,1964
+  protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+  protected body Bidule Bidule/b139,2181
+  protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,2634
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+  DEFVAR_LISP ("abbrev-table-name-list"541,16079
+  DEFVAR_LISP ("global-abbrev-table"547,16341
+  DEFVAR_LISP ("fundamental-mode-abbrev-table"554,16663
+  DEFVAR_LISP ("last-abbrev"560,17005
+  DEFVAR_LISP ("last-abbrev-text"563,17128
+  DEFVAR_INT ("last-abbrev-location"567,17286
+  DEFVAR_LISP ("abbrev-start-location"574,17485
+  DEFVAR_LISP ("abbrev-start-location-buffer"580,17762
+  DEFVAR_PER_BUFFER ("local-abbrev-table"585,18026
+  DEFVAR_BOOL ("abbrevs-changed"588,18169
+  DEFVAR_BOOL ("abbrev-all-caps"593,18372
+  DEFVAR_LISP ("pre-abbrev-expand-hook"597,18528
+  DEFVAR_LISP ("abbrev-table-name-list",\1541,16079
+  DEFVAR_LISP ("global-abbrev-table",\1547,16341
+  DEFVAR_LISP ("fundamental-mode-abbrev-table",\1554,16663
+  DEFVAR_LISP ("last-abbrev",\1560,17005
+  DEFVAR_LISP ("last-abbrev-text",\1563,17128
+  DEFVAR_INT ("last-abbrev-location",\1567,17286
+  DEFVAR_LISP ("abbrev-start-location",\1574,17485
+  DEFVAR_LISP ("abbrev-start-location-buffer",\1580,17762
+  DEFVAR_PER_BUFFER ("local-abbrev-table",\1585,18026
+  DEFVAR_BOOL ("abbrevs-changed",\1588,18169
+  DEFVAR_BOOL ("abbrev-all-caps",\1593,18372
+  DEFVAR_LISP ("pre-abbrev-expand-hook",\1597,18528
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,147
+#define _GETOPT_H 19,801
+struct option73,2797
+#define        no_argument     89,3124
+#define required_argument      90,3147
+#define optional_argument      91,3175
+
+c-src/etags.c,10045
+char pot_etags_version[pot_etags_version81,3470
+#  undef DEBUG84,3552
+#  define DEBUG 85,3567
+#  define DEBUG 87,3594
+#  define NDEBUG       88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef  WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef  DOS_NT117,4160
+# define DOS_NT118,4176
+# undef  assert        135,4482
+# define assert(136,4541
+# undef  CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define        iswhite(159,5329
+#define notinname(160,5394
+#define        begtoken(161,5469
+#define        intoken(162,5542
+#define        endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+} compressor;188,6365
+} language;199,6835
+typedef struct fdesc201,6848
+} fdesc;212,7366
+typedef struct node_st214,7376
+} node;225,7894
+} linebuffer;239,8248
+    at_language,245,8344
+    at_regexp,246,8393
+    at_filename,247,8437
+    at_stdin,248,8473
+    at_end     249,8516
+} argument;253,8698
+typedef struct regexp256,8758
+} regexp;268,9325
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT  2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC   2199,69242
+enum sym_type2204,69312
+  st_none,2206,69328
+  st_C_objprot,2207,69339
+  st_C_objprot, st_C_objimpl,2207,69339
+  st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+  st_C_gnumacro,2208,69382
+  st_C_ignore,2209,69399
+  st_C_ignore, st_C_attribute,2209,69399
+  st_C_javastruct,2210,69430
+  st_C_operator,2211,69449
+  st_C_class,2212,69466
+  st_C_class, st_C_template,2212,69466
+  st_C_struct,2213,69495
+  st_C_struct, st_C_extern,2213,69495
+  st_C_struct, st_C_extern, st_C_enum,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+      TOTAL_KEYWORDS 2325,73018
+      MIN_WORD_LENGTH 2326,73045
+      MAX_WORD_LENGTH 2327,73072
+      MIN_HASH_VALUE 2328,73100
+      MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+  fvnone,2408,75435
+  fdefunkey,2409,75466
+  fdefunname,2410,75512
+  foperator,2411,75556
+  fvnameseen,2412,75613
+  fstartlist,2413,75666
+  finlist,2414,75722
+  flistseen,2415,75765
+  fignore,2416,75813
+  vignore      2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+  tnone,2428,76089
+  tkeyseen,2429,76119
+  ttypeseen,2430,76160
+  tinbody,2431,76199
+  tend,2432,76238
+  tignore      2433,76279
+} typdef;2434,76320
+  snone,2443,76499
+  skeyseen,2445,76575
+  stagseen,2446,76620
+  scolonseen   2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+  dnone,2460,76942
+  dsharpseen,2461,76972
+  ddefineseen,2462,77025
+  dignorerest  2463,77070
+} definedef;2464,77112
+  onone,2472,77267
+  oprotocol,2473,77297
+  oimplementation,2474,77347
+  otagseen,2475,77395
+  oparenseen,2476,77431
+  ocatseen,2477,77486
+  oinbody,2478,77525
+  omethodsign,2479,77568
+  omethodtag,2480,77626
+  omethodcolon,2481,77666
+  omethodparm,2482,77709
+  oignore      2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+} token;2508,78626
+} cstack;2523,79136
+#define nestlev        2525,79264
+#define instruct       2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+consider_token 2613,81341
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,47
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,47
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define        ENTRY(21,865
+#define        PSEUDO(26,972
+    movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+    movl $SYS_##syscall_name, %eax;eax31,1132
+    int $0x80;32,1180
+    test %eax,eax33,1210
+    test %eax, %eax;eax33,1210
+    jl syscall_error;34,1245
+#define        XCHG_0  47,1562
+#define        XCHG_1  48,1606
+#define        XCHG_2  49,1648
+#define        XCHG_3  50,1691
+#define        XCHG_4  51,1734
+#define        XCHG_5  52,1777
+#define        r0      54,1821
+#define        r1      55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int             count_words(15,263
+static char            *get_word(get_word35,553
+void                   tab_free(59,966
+char                   **tab_fill(tab_fill70,1129
+int                    tab_delete_first(91,1638
+int                    tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,3539
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT        124,3934
+#define BLOCKLOG       125,3977
+#define BLOCKSIZE      126,4018
+#define BLOCKIFY(127,4052
+#define HEAP   131,4215
+#define FINAL_FREE_BLOCKS      135,4391
+  } malloc_info;167,5388
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+struct list186,5939
+struct alignlist196,6153
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+enum mcheck_status283,9092
+    MCHECK_DISABLED 285,9115
+    MCHECK_OK,286,9187
+    MCHECK_FREE,287,9226
+    MCHECK_HEAD,288,9270
+    MCHECK_TAIL        289,9334
+struct mstats308,10153
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define        __sbrk  1513,46042
+__default_morecore 1525,46511
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+hybrid_get_current_dir_name 1811,53797
+#define MAGICWORD      1854,55206
+#define MAGICFREE      1855,55261
+#define MAGICBYTE      1856,55316
+#define MALLOCFLOOD    1857,55348
+#define FREEFLOOD      1858,55382
+struct hdr1860,55415
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,3761
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+#define RE_SYNTAX_EMACS        183,7684
+#define RE_SYNTAX_AWK  186,7780
+#define RE_SYNTAX_GNU_AWK      193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP        206,8549
+#define RE_SYNTAX_POSIX_EGREP  212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON        221,9072
+#define RE_SYNTAX_POSIX_BASIC  225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC  231,9508
+#define RE_SYNTAX_POSIX_EXTENDED       234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED       242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+  REG_ENOSYS 297,11859
+  REG_NOERROR 300,11941
+  REG_NOMATCH,301,11976
+  REG_BADPAT,305,12123
+  REG_ECOLLATE,306,12162
+  REG_ECTYPE,307,12203
+  REG_EESCAPE,308,12255
+  REG_ESUBREG,309,12298
+  REG_EBRACK,310,12345
+  REG_EPAREN,311,12391
+  REG_EBRACE,312,12436
+  REG_BADBR,313,12472
+  REG_ERANGE,314,12519
+  REG_ESPACE,315,12560
+  REG_BADRPT,316,12601
+  REG_EEND,319,12693
+  REG_ESIZE,320,12728
+  REG_ERPAREN,321,12790
+  REG_ERANGEX  322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+# define RE_NREGS 440,16942
+} regmatch_t;451,17317
+#  define _Restrict_ 540,20886
+#  define _Restrict_ 542,20979
+#  define _Restrict_544,21018
+#  define _Restrict_arr_ 555,21418
+#  define _Restrict_arr_557,21461
+#  define CHAR_CLASS_MAX_LENGTH 593,22470
+#  define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+              RECC_ALNUM,610,22984
+              RECC_ALNUM, RECC_ALPHA,610,22984
+              RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+              RECC_GRAPH,611,23027
+              RECC_GRAPH, RECC_PRINT,611,23027
+              RECC_LOWER,612,23059
+              RECC_LOWER, RECC_UPPER,612,23059
+              RECC_PUNCT,613,23091
+              RECC_PUNCT, RECC_CNTRL,613,23091
+              RECC_DIGIT,614,23123
+              RECC_DIGIT, RECC_XDIGIT,614,23123
+              RECC_BLANK,615,23156
+              RECC_BLANK, RECC_SPACE,615,23156
+              RECC_MULTIBYTE,616,23188
+              RECC_MULTIBYTE, RECC_NONASCII,616,23188
+              RECC_ASCII,617,23227
+              RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+typedef int re_wchar_t;623,23387
+
+c-src/emacs/src/keyboard.c,20957
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF        119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard 
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+unsigned timers_run;320,11296
+struct timespec 
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW  346,12046
+#define READABLE_EVENTS_FILTER_EVENTS  347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES     348,12142
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function", 
Fcommand_error_default_function,command-error-default-function1043,32030
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit", 
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit", 
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING   2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const 
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const 
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const 
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+  DEFVAR_LISP ("internal--top-level-message"11058,333972
+  DEFVAR_LISP ("last-command-event"11312,342173
+  DEFVAR_LISP ("last-nonmenu-event"11315,342297
+  DEFVAR_LISP ("last-input-event"11321,342636
+  DEFVAR_LISP ("unread-command-events"11324,342730
+  DEFVAR_LISP ("unread-post-input-method-events"11332,343190
+  DEFVAR_LISP ("unread-input-method-events"11338,343529
+  DEFVAR_LISP ("meta-prefix-char"11346,343898
+  DEFVAR_KBOARD ("last-command"11351,344106
+  DEFVAR_KBOARD ("real-last-command"11368,344787
+  DEFVAR_KBOARD ("last-repeatable-command"11372,344973
+  DEFVAR_LISP ("this-command"11378,345261
+  DEFVAR_LISP ("real-this-command"11384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680
+  DEFVAR_LISP ("this-original-command"11396,346123
+  DEFVAR_INT ("auto-save-interval"11403,346520
+  DEFVAR_LISP ("auto-save-timeout"11408,346734
+  DEFVAR_LISP ("echo-keystrokes"11415,347079
+  DEFVAR_INT ("polling-period"11421,347350
+  DEFVAR_LISP ("double-click-time"11428,347693
+  DEFVAR_INT ("double-click-fuzz"11435,348029
+  DEFVAR_INT ("num-input-keys"11446,348519
+  DEFVAR_INT ("num-nonmacro-input-events"11452,348794
+  DEFVAR_LISP ("last-event-frame"11457,349032
+  DEFVAR_LISP ("tty-erase-char"11463,349311
+  DEFVAR_LISP ("help-char"11466,349434
+  DEFVAR_LISP ("help-event-list"11472,349717
+  DEFVAR_LISP ("help-form"11477,349928
+  DEFVAR_LISP ("prefix-help-command"11483,350176
+  DEFVAR_LISP ("top-level"11489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table"11495,350675
+  DEFVAR_BOOL ("cannot-suspend"11511,351488
+  DEFVAR_BOOL ("menu-prompting"11516,351715
+  DEFVAR_LISP ("menu-prompt-more-char"11526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers"11531,352391
+  DEFVAR_LISP ("deactivate-mark"11545,353117
+  DEFVAR_LISP ("pre-command-hook"11553,353486
+  DEFVAR_LISP ("post-command-hook"11560,353841
+  DEFVAR_LISP ("echo-area-clear-hook"11568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419
+  DEFVAR_LISP ("menu-bar-final-items"11578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230
+  DEFVAR_LISP ("overriding-local-map"11598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103
+  DEFVAR_LISP ("special-event-map"11613,356442
+  DEFVAR_LISP ("track-mouse"11617,356630
+  DEFVAR_KBOARD ("system-key-alist"11620,356757
+  DEFVAR_KBOARD ("local-function-key-map"11629,357138
+  DEFVAR_KBOARD ("input-decode-map"11658,358597
+  DEFVAR_LISP ("function-key-map"11675,359385
+  DEFVAR_LISP ("key-translation-map"11683,359801
+  DEFVAR_LISP ("deferred-action-list"11689,360145
+  DEFVAR_LISP ("deferred-action-function"11694,360393
+  DEFVAR_LISP ("delayed-warnings-list"11700,360692
+  DEFVAR_LISP ("timer-list"11708,361100
+  DEFVAR_LISP ("timer-idle-list"11712,361252
+  DEFVAR_LISP ("input-method-function"11716,361415
+  DEFVAR_LISP ("input-method-previous-message"11737,362384
+  DEFVAR_LISP ("show-help-function"11744,362745
+  DEFVAR_LISP ("disable-point-adjustment"11749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment"11761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout"11770,363893
+  DEFVAR_LISP ("throw-on-input"11775,364171
+  DEFVAR_LISP ("command-error-function"11781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909
+  DEFVAR_LISP ("select-active-regions"11798,365236
+  DEFVAR_LISP ("saved-region-selection"11807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013
+  DEFVAR_LISP ("debug-on-event"11825,366554
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+  DEFVAR_LISP ("internal--top-level-message",\111058,333972
+  DEFVAR_LISP ("last-command-event",\111312,342173
+  DEFVAR_LISP ("last-nonmenu-event",\111315,342297
+  DEFVAR_LISP ("last-input-event",\111321,342636
+  DEFVAR_LISP ("unread-command-events",\111324,342730
+  DEFVAR_LISP ("unread-post-input-method-events",\111332,343190
+  DEFVAR_LISP ("unread-input-method-events",\111338,343529
+  DEFVAR_LISP ("meta-prefix-char",\111346,343898
+  DEFVAR_KBOARD ("last-command",\111351,344106
+  DEFVAR_KBOARD ("real-last-command",\111368,344787
+  DEFVAR_KBOARD ("last-repeatable-command",\111372,344973
+  DEFVAR_LISP ("this-command",\111378,345261
+  DEFVAR_LISP ("real-this-command",\111384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680
+  DEFVAR_LISP ("this-original-command",\111396,346123
+  DEFVAR_INT ("auto-save-interval",\111403,346520
+  DEFVAR_LISP ("auto-save-timeout",\111408,346734
+  DEFVAR_LISP ("echo-keystrokes",\111415,347079
+  DEFVAR_INT ("polling-period",\111421,347350
+  DEFVAR_LISP ("double-click-time",\111428,347693
+  DEFVAR_INT ("double-click-fuzz",\111435,348029
+  DEFVAR_INT ("num-input-keys",\111446,348519
+  DEFVAR_INT ("num-nonmacro-input-events",\111452,348794
+  DEFVAR_LISP ("last-event-frame",\111457,349032
+  DEFVAR_LISP ("tty-erase-char",\111463,349311
+  DEFVAR_LISP ("help-char",\111466,349434
+  DEFVAR_LISP ("help-event-list",\111472,349717
+  DEFVAR_LISP ("help-form",\111477,349928
+  DEFVAR_LISP ("prefix-help-command",\111483,350176
+  DEFVAR_LISP ("top-level",\111489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675
+  DEFVAR_BOOL ("cannot-suspend",\111511,351488
+  DEFVAR_BOOL ("menu-prompting",\111516,351715
+  DEFVAR_LISP ("menu-prompt-more-char",\111526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391
+  DEFVAR_LISP ("deactivate-mark",\111545,353117
+  DEFVAR_LISP ("pre-command-hook",\111553,353486
+  DEFVAR_LISP ("post-command-hook",\111560,353841
+  DEFVAR_LISP ("echo-area-clear-hook",\111568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419
+  DEFVAR_LISP ("menu-bar-final-items",\111578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230
+  DEFVAR_LISP ("overriding-local-map",\111598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103
+  DEFVAR_LISP ("special-event-map",\111613,356442
+  DEFVAR_LISP ("track-mouse",\111617,356630
+  DEFVAR_KBOARD ("system-key-alist",\111620,356757
+  DEFVAR_KBOARD ("local-function-key-map",\111629,357138
+  DEFVAR_KBOARD ("input-decode-map",\111658,358597
+  DEFVAR_LISP ("function-key-map",\111675,359385
+  DEFVAR_LISP ("key-translation-map",\111683,359801
+  DEFVAR_LISP ("deferred-action-list",\111689,360145
+  DEFVAR_LISP ("deferred-action-function",\111694,360393
+  DEFVAR_LISP ("delayed-warnings-list",\111700,360692
+  DEFVAR_LISP ("timer-list",\111708,361100
+  DEFVAR_LISP ("timer-idle-list",\111712,361252
+  DEFVAR_LISP ("input-method-function",\111716,361415
+  DEFVAR_LISP ("input-method-previous-message",\111737,362384
+  DEFVAR_LISP ("show-help-function",\111744,362745
+  DEFVAR_LISP ("disable-point-adjustment",\111749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893
+  DEFVAR_LISP ("throw-on-input",\111775,364171
+  DEFVAR_LISP ("command-error-function",\111781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909
+  DEFVAR_LISP ("select-active-regions",\111798,365236
+  DEFVAR_LISP ("saved-region-selection",\111807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013
+  DEFVAR_LISP ("debug-on-event",\111825,366554
+
+c-src/emacs/src/lisp.h,20567
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+#  define EMACS_INT_MAX 93,3079
+#  define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+#  define EMACS_INT_MAX 98,3265
+#  define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+#  define EMACS_INT_MAX 105,3553
+#  define pI 106,3587
+enum {  BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+    BITS_PER_CHAR 136,4570
+    BITS_PER_SHORT 137,4605
+    BITS_PER_LONG 138,4657
+    BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+    VALBITS 246,8742
+    INTTYPEBITS 249,8838
+    FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+#  define check_cons_list(405,15097
+#  define make_number(408,15176
+#  define XFASTINT(409,15224
+#  define XINT(410,15266
+#  define XSYMBOL(411,15300
+#  define XTYPE(412,15340
+#  define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+    Lisp_Symbol 454,16851
+    Lisp_Misc 458,16993
+    Lisp_Int0 461,17067
+    Lisp_Int1 462,17086
+    Lisp_String 466,17264
+    Lisp_Vectorlike 472,17543
+    Lisp_Cons 475,17632
+    Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+    Lisp_Misc_Free 487,18040
+    Lisp_Misc_Marker,488,18069
+    Lisp_Misc_Overlay,489,18091
+    Lisp_Misc_Save_Value,490,18114
+    Lisp_Misc_Finalizer,491,18140
+    Lisp_Misc_Float,494,18275
+    Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+    Lisp_Fwd_Int,504,18566
+    Lisp_Fwd_Bool,505,18619
+    Lisp_Fwd_Obj,506,18670
+    Lisp_Fwd_Buffer_Obj,507,18729
+    Lisp_Fwd_Kboard_Obj        508,18800
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+enum symbol_interned639,24199
+  SYMBOL_UNINTERNED 641,24222
+  SYMBOL_INTERNED 642,24247
+  SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+  SYMBOL_PLAINVAL 648,24338
+  SYMBOL_VARALIAS 649,24362
+  SYMBOL_LOCALIZED 650,24386
+  SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+  ENUM_BF 663,24793
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY        712,26446
+#define DEFUN_ARGS_UNEVALLED   713,26498
+#define DEFUN_ARGS_0   714,26541
+#define DEFUN_ARGS_1   715,26569
+#define DEFUN_ARGS_2   716,26604
+#define DEFUN_ARGS_3   717,26652
+#define DEFUN_ARGS_4   718,26713
+#define DEFUN_ARGS_5   719,26787
+#define DEFUN_ARGS_6   721,26880
+#define DEFUN_ARGS_7   723,26986
+#define DEFUN_ARGS_8   725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+  PVEC_NORMAL_VECTOR,782,29585
+  PVEC_FREE,783,29607
+  PVEC_PROCESS,784,29620
+  PVEC_FRAME,785,29636
+  PVEC_WINDOW,786,29650
+  PVEC_BOOL_VECTOR,787,29665
+  PVEC_BUFFER,788,29685
+  PVEC_HASH_TABLE,789,29700
+  PVEC_TERMINAL,790,29719
+  PVEC_WINDOW_CONFIGURATION,791,29736
+  PVEC_SUBR,792,29765
+  PVEC_OTHER,793,29778
+  PVEC_COMPILED,795,29856
+  PVEC_CHAR_TABLE,796,29873
+  PVEC_SUB_CHAR_TABLE,797,29892
+  PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+    PSEUDOVECTOR_SIZE_BITS 808,30382
+    PSEUDOVECTOR_SIZE_MASK 809,30415
+    PSEUDOVECTOR_REST_BITS 813,30625
+    PSEUDOVECTOR_REST_MASK 814,30658
+    PSEUDOVECTOR_AREA_BITS 818,30823
+    PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+struct Lisp_Vector1369,46482
+    ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+    header_size 1471,49047
+    bool_header_size 1472,49106
+    word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+    CHARTAB_SIZE_BITS_0 1567,52516
+    CHARTAB_SIZE_BITS_1 1568,52545
+    CHARTAB_SIZE_BITS_2 1569,52574
+    CHARTAB_SIZE_BITS_3 1570,52603
+struct Lisp_Char_Table1575,52672
+struct Lisp_Sub_Char_Table1606,53752
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+enum char_table_specials1692,56798
+    CHAR_TABLE_STANDARD_SLOTS 1697,56993
+    SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+struct Lisp_Hash_Table1823,60555
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any   1971,64806
+  ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+  ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+    ENUM_BF 2034,67346
+    SAVE_UNUSED,2047,67641
+    SAVE_INTEGER,2048,67658
+    SAVE_FUNCPOINTER,2049,67676
+    SAVE_POINTER,2050,67698
+    SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+    SAVE_TYPE_INT_INT 2066,68096
+    SAVE_TYPE_INT_INT_INT2067,68169
+    SAVE_TYPE_OBJ_OBJ 2069,68259
+    SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+    SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+    SAVE_TYPE_PTR_INT 2073,68506
+    SAVE_TYPE_PTR_OBJ 2074,68579
+    SAVE_TYPE_PTR_PTR 2075,68651
+    SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+    SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+    ENUM_BF 2112,69900
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+struct Lisp_Free2201,72581
+    ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+struct Lisp_Boolfwd2284,74411
+struct Lisp_Objfwd2294,74702
+struct Lisp_Buffer_Objfwd2302,74934
+struct Lisp_Buffer_Local_Value2334,76470
+struct Lisp_Kboard_Objfwd2362,77729
+union Lisp_Fwd2368,77838
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+XFLOAT_DATA 2401,78434
+    IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+    COMPILED_ARGLIST 2431,79389
+    COMPILED_BYTECODE 2432,79415
+    COMPILED_CONSTANTS 2433,79442
+    COMPILED_STACK_DEPTH 2434,79470
+    COMPILED_DOC_STRING 2435,79500
+    COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+    CHAR_ALT 2445,79850
+    CHAR_SUPER 2446,79876
+    CHAR_HYPER 2447,79904
+    CHAR_SHIFT 2448,79932
+    CHAR_CTL 2449,79960
+    CHAR_META 2450,79986
+    CHAR_MODIFIER_MASK 2452,80014
+    CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+enum maxargs2831,89401
+    MANY 2833,89418
+    UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+  SPECPDL_UNWIND,2944,93822
+  SPECPDL_UNWIND_PTR,2945,93891
+  SPECPDL_UNWIND_INT,2946,93942
+  SPECPDL_UNWIND_VOID,2947,93990
+  SPECPDL_BACKTRACE,2948,94044
+  SPECPDL_LET,2949,94102
+  SPECPDL_LET_LOCAL,2951,94232
+  SPECPDL_LET_DEFAULT  2952,94289
+union specbinding2955,94361
+    ENUM_BF 2957,94383
+      ENUM_BF 2959,94440
+      ENUM_BF 2964,94570
+      ENUM_BF 2969,94693
+      ENUM_BF 2974,94811
+      ENUM_BF 2978,94916
+      ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+#define PUSH_HANDLER(3053,97443
+#define QUIT   3101,99220
+#define QUITP 3112,99470
+struct gcpro3132,100313
+#define GC_USE_GCPROS_AS_BEFORE        3171,101294
+#define GC_MAKE_GCPROS_NOOPS   3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS     3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES    3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO        3353,109913
+#define RETURN_UNGCPRO(3363,110180
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+enum Arith_Comparison 3497,113300
+  ARITH_EQUAL,3498,113324
+  ARITH_NOTEQUAL,3499,113339
+  ARITH_LESS,3500,113357
+  ARITH_GRTR,3501,113371
+  ARITH_LESS_OR_EQUAL,3502,113385
+  ARITH_GRTR_OR_EQUAL3503,113408
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_formatted_string 3767,124631
+build_pure_c_string 3792,125659
+build_string 3801,125864
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+intern 3968,132131
+intern_c_string 3974,132219
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern _Noreturn void emacs_abort 4374,148383
+egetenv 4532,152806
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA        4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+union Aligned_String4676,157349
+    USE_STACK_CONS 4689,157704
+    USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define        SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/h.h,1850
+   ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+typedef struct tpcmd8,147
+#define ggg 10,170
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+} foobar2;20,307
+    DEVICE_SWP,23,333
+    DEVICE_LAST24,349
+} bsp_DevId;25,365
+  struct constant_args 27,394
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+} ghi1;36,534
+typedef union abc 37,542
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage 
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+} an_extern_linkage;56,1054
+typedef struct pollfd   pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+  } womboid 63,1206
+typedef union rtunion_def64,1220
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+  Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous      117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+
+cp-src/c.C,2225
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+        void execute(CMultiChannelCSC19_3D::execute11,493
+int main 25,1026
+double base 26,1088
+typedef struct s1 32,1251
+} t1;34,1287
+struct s2 35,1293
+typedef struct s2 t2;38,1324
+class A 39,1346
+  enum { rosso,A::rosso40,1356
+  enum { rosso, giallo,A::giallo40,1356
+  enum { rosso, giallo, verde A::verde40,1356
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+class AU 53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A 57,1826
+  A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+     void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct B 74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+class test 86,2156
+  int f(test::f87,2169
+  int ff(test::ff89,2231
+  int g(test::g90,2254
+class  AST_Root 92,2278
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+     void f(::f115,2733
+struct A 117,2753
+A::~A(120,2777
+struct B 122,2789
+    ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+    enum {dog,Boo::dog130,2880
+    enum {dog, cat}Boo::cat130,2880
+    foo(Boo::foo133,2954
+    Boo(Boo::Boo137,2995
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int 
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,709
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2 78,2022
+  MDiagArray2 MDiagArray2::MDiagArray282,2077
+  MDiagArray2 MDiagArray2::MDiagArray286,2154
+  MDiagArray2 MDiagArray2::MDiagArray287,2198
+  MDiagArray2 MDiagArray2::MDiagArray288,2254
+  MDiagArray2 MDiagArray2::MDiagArray289,2329
+  MDiagArray2 MDiagArray2::MDiagArray290,2387
+  MDiagArray2 MDiagArray2::MDiagArray291,2450
+  ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+  MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+  operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Range.h,424
+#define octave_Range_h 24,765
+Range35,891
+  Range Range::Range39,909
+  Range Range::Range42,995
+  Range Range::Range46,1130
+  Range Range::Range50,1248
+  double base Range::base54,1376
+  double limit Range::limit55,1425
+  double inc Range::inc56,1475
+  int nelem Range::nelem57,1523
+  void set_base Range::set_base68,1728
+  void set_limit Range::set_limit69,1774
+  void set_inc Range::set_inc70,1821
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,667
+#define __COLORS9,401
+enum COLORS 11,419
+    BLACK,COLORS::BLACK12,433
+    BLUE,COLORS::BLUE13,471
+    GREEN,COLORS::GREEN14,481
+    CYAN,COLORS::CYAN15,492
+    RED,COLORS::RED16,502
+    MAGENTA,COLORS::MAGENTA17,511
+    BROWN,COLORS::BROWN18,524
+    LIGHTGRAY,COLORS::LIGHTGRAY19,535
+    DARKGRAY,COLORS::DARKGRAY20,550
+    LIGHTBLUE,COLORS::LIGHTBLUE21,589
+    LIGHTGREEN,COLORS::LIGHTGREEN22,604
+    LIGHTCYAN,COLORS::LIGHTCYAN23,620
+    LIGHTRED,COLORS::LIGHTRED24,635
+    LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+    YELLOW,COLORS::YELLOW26,667
+    WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,244
+class site:site5,235
+    site(site::site10,344
+    char read(site::read12,410
+    void set(site::set13,444
+    void clear(site::clear14,478
+    void compute_next_state(site::compute_next_state15,514
+    void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,609
+class generic_object13,520
+    virtual void compute_next_state(generic_object::compute_next_state21,842
+    virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+    location(location::location43,1642
+class irregular_location:irregular_location47,1686
+    irregular_location(irregular_location::irregular_location51,1762
+class discrete_location:discrete_location56,1889
+    discrete_location(discrete_location::discrete_location62,2044
+    void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+
+cp-src/fail.C,365
+struct A 7,263
+          struct B A::B8,274
+                  struct C A::B::C9,289
+                          C(A::B::C::C11,318
+                          operator int(A::B::C::operator int12,342
+                  typedef C T;A::B::T14,389
+          typedef B T2;A::T216,414
+class A 23,453
+       class B A::B24,463
+               class C A::B::C25,474
+               int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+       class D 41,622
+               D(D::D43,659
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5069
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias 
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+f-src/entry.for,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+       ENTRY  MSGSEL 193,4382
+     & intensity1(375,8135
+       character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+   9   field   >field136,582
+   5   field   >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+&nbsp;8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the 
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and 
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or 
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1133
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+       @-$($72,3064
+       @-$($73,3113
+       @-$($74,3177
+       @-$($75,3223
+       @-$($76,3291
+       @-$($77,3383
+       @$(81,3466
+       @$(82,3514
+       @$(83,3577
+       @$(84,3622
+       @$(85,3689
+       @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+       @env CHECKEROPTS=92,3922
+       @$(98,4094
+       @$(106,4250
+       @$(110,4374
+       @$(114,4500
+       @for i in $(SRCS); do echo $$i;140,5315
+       $(160,6053
+       $(163,6114
+       $(166,6177
+       $(169,6228
+       $(172,6317
+       sdiff --suppress-common-lines --width=width186,6614
+       sdiff --suppress-common-lines --width=width189,6703
+       sdiff --suppress-common-lines --width=width192,6791
+       sdiff --suppress-common-lines --width=width195,6880
+       TEXTAGS=204,7122
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7122
+       ${RUN} etags12 --members -o $@ --regex=regex207,7239
+       ${RUN} ./ctags -o $@ --regex=regex213,7388
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+       TEXTAGS=219,7583
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7583
+       ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,475
+#define        PTY_TEMPLATE 20,494
+#define        PTY_LENGTH 21,528
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+    andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS       36,1101
+#define TYPESTOSTAT    37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION        34,1116
+#   define DEBUG 37,1155
+#define LISTCONTENTS   39,1181
+#define OPENBUTTON     47,1352
+#define LISTCONTENTSBUTTON     48,1449
+#define LISTDESCRIPTIONBUTTON  49,1562
+#define STATE_UNINSTALLED      52,1687
+#define STATE_INSTALLED        53,1807
+#define STATE_COMPRESSD        54,1948
+#define SIZEFORMAT     57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type 
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING        368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2152
+  define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+  define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+  define("LCE_WS"LCE_WS11,194
+  define("LCE_COMMENT"LCE_COMMENT13,244
+  define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+  define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+  define("LCE_MSGID"LCE_MSGID19,430
+  define("LCE_MSGSTR"LCE_MSGSTR21,488
+  define("LCE_TEXT"LCE_TEXT23,541
+  define("STATE_ABORT"STATE_ABORT25,567
+  define("STATE_OK"STATE_OK26,595
+  define("STATE_LOOP"STATE_LOOP27,620
+  class POEntryAD 29,648
+      function validate(31,683
+      function checkQuotation(59,1384
+  class CommentAD 70,1639
+      function CommentAD(73,1693
+      function validate(83,1944
+  class POEntry 105,2410
+      function POEntry(119,2711
+      function lineCount(135,3255
+      function serializeToVars(141,3365
+      function write(151,3800
+  class POReader 163,4178
+      function gettext(177,4457
+      function parseFromVars(189,4705
+      function serializeToVars(215,5331
+      function POReader(229,5613
+      function read(243,5983
+      function write(259,6307
+      function isComment(277,6645
+      function comment(284,6822
+      function msgid(304,7247
+      function msgstr(320,7574
+      function start(340,8232
+      function createPOEntries(360,8644
+      function stripLine(394,9472
+      function printClassification(421,10056
+      function classifyLine(432,10301
+  function getTextDomains(471,11094
+  class PORManager 498,11756
+      function PORManager(502,11822
+      function addPOReader(507,11896
+      function &getPOReader(getPOReader512,11992
+      function getDomainNames(517,12081
+  function &loadPORManager(loadPORManager523,12174
+  function fileJoin(536,12436
+      function lce_bindtextdomain(557,12839
+      function lce_textdomain(614,14530
+      function lce_gettext(620,14641
+      function lce_dgettext(626,14767
+      function lce(634,14966
+      function lce_bindtextdomain(651,15488
+      function lce_textdomain(656,15592
+      function lce_gettext(661,15674
+      function lce_dgettext(666,15755
+      function lce(670,15855
+  function lce_geteditcode(676,15898
+
+php-src/ptest.php,46
+define("TEST"TEST1,0
+test 4,26
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+         my $entry entry218,5621
+         my $entry entry234,6077
+             my $entry entry245,6351
+         my $entry entry252,6536
+         my $entry entry268,7010
+             my $entry entry276,7204
+         my $entry entry281,7328
+      my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+  my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+       local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+       local($prog,$_,@list)($prog,$_,@list39,868
+       
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+    def __init__(18,374
+    def __repr__(24,590
+    def __str__(34,871
+class Server:Server37,934
+    def __init__(38,948
+    def dump(73,2198
+    def __repr__(125,3896
+    def __str__(128,3945
+class User:User131,4014
+    def __init__(132,4026
+    def __repr__(172,5445
+    def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+    def bind(234,7525
+    def focus_set(236,7584
+    def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+    def __init__(269,8808
+    def handleList(303,10042
+    def handleNew(306,10094
+    def editItem(314,10426
+    def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+    def PostControls(376,12403
+    def GatherControls(421,13530
+class ServerEdit(512,16264
+    def __init__(513,16289
+    def post(525,16629
+    def gather(543,17191
+    def nosave(547,17304
+    def save(551,17408
+    def refreshPort(556,17509
+    def createWidgets(561,17663
+    def edituser(631,20708
+class UserEdit(645,20921
+    def __init__(646,20944
+    def post(658,21283
+    def gather(676,21841
+    def nosave(680,21950
+    def save(684,22052
+    def createWidgets(689,22151
+class Configure(760,24879
+    def __init__(761,24916
+    def MakeDispose(772,25211
+    def MakeSitelist(786,25706
+    def editsite(794,25949
+    def save(797,26022
+    def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+  \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+   \def\subtitlefont{\subtitlefont765,24968
+   \def\authorfont{\authorfont767,25052
+   \def\title{\title773,25262
+   \def\titlezzz##1{\titlezzz774,25297
+   \def\subtitle{\subtitle782,25612
+   \def\subtitlezzz##1{\subtitlezzz783,25653
+   \def\author{\author786,25771
+   \def\authorzzz##1{\authorzzz787,25808
+   \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+  \def\thearg{\thearg1145,37720
+  \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0  %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+  \def\indexbackslash{\indexbackslash1480,48406
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+  \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+  address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+  address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+     address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno  \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+  {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+  {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+  {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+      \def\secentry ##1##2##3##4{\secentry2066,68220
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+    {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+  \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,1663
+my_printf 135,
+void fatala 138,
+max 141,
+struct bar 143,
+__attribute__ ((always_inline)) max 147,
+struct foo150,
+char stack[stack155,
+struct S 156,
+} wait_status_ptr_t 161,
+Some_Class  A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S  __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+     f1 183,
+void f2 184,
+int x 188,
+struct foo 189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal", 
Fx_get_selection_internal,x-get-selection-internal206,
+       Fx_get_selection_internal,x-get-selection-internal212,
+      Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+  aaa;249,
+  bbb;251,
+struct sss1 252,
+struct sss2253,
+  struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+  **b;b262,
+caccacacca 263,
+a 267,
+  typedef struct aa 269,
+  typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+  typedef  int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,738
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+VOIDSTAR parse_hash;63,1400
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+char *instr;instr80,1790
+int parse_error 81,1803
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define       NE      6,114
+# define       LE      7,130
+# define       GE      8,146
+# define       NEG     9,162
+# define       L_CELL  10,179
+# define       L_RANGE 11,199
+# define       L_VAR   12,220
+# define       L_CONST 13,239
+# define       L_FN0   14,260
+# define       L_FN1   15,279
+# define       L_FN2   16,298
+# define       L_FN3   17,317
+# define       L_FN4   18,336
+# define       L_FNN   19,355
+# define       L_FN1R  20,374
+# define       L_FN2R  21,394
+# define       L_FN3R  22,414
+# define       L_FN4R  23,434
+# define       L_FNNR  24,454
+# define       L_LE    25,474
+# define       L_NE    26,492
+# define       L_GE    27,510
+
+parse.y,1181
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+VOIDSTAR parse_hash;63,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+char *instr;instr80,
+int parse_error 81,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define        YYFINAL 93,
+#define        YYFLAG  94,
+#define        YYNTBASE        95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define        YYLAST  266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2110
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyresult 947,
+
+y-src/atest.y,9
+exp    2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define       INT     6,113
+# define       CHAR    7,130
+# define       NAME    8,148
+# define       ERROR   9,166
+# define       OR      10,185
+# define       AND     11,201
+# define       EQUAL   12,218
+# define       NOTEQUAL        13,237
+# define       LEQ     14,259
+# define       GEQ     15,276
+# define       LSH     16,293
+# define       RSH     17,310
+# define       UNARY   18,327
+
+cccp.y,1579
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+  struct constant 113,
+  struct name 114,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define        YYFINAL 127,
+#define        YYFLAG  128,
+#define        YYNTBASE        129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define        YYLAST  274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2110
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyresult 947,
+
+y-src/cccp.y,1107
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+  struct constant 112,2733
+  struct name 113,2789
+start 143,3226
+exp1   148,3330
+exp    156,3505
+exp    185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+c-src/fail.c,0
+
+a-src/empty.zz,0
diff --git a/test/etags/ETAGS.good_5 b/test/etags/ETAGS.good_5
new file mode 100644
index 0000000..c7357d0
--- /dev/null
+++ b/test/etags/ETAGS.good_5
@@ -0,0 +1,5401 @@
+
+Makefile,683
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,584
+ERLSRC=11,654
+FORTHSRC=12,699
+FSRC=13,749
+HTMLSRC=14,821
+LUASRC=16,950
+MAKESRC=17,993
+OBJCSRC=18,1035
+OBJCPPSRC=19,1116
+PASSRC=20,1179
+PERLSRC=21,1221
+PHPSRC=22,1291
+PSSRC=23,1363
+PROLSRC=24,1403
+PYTSRC=25,1465
+TEXSRC=26,1506
+YSRC=27,1585
+SRCS=28,1650
+NONSRCS=32,1902
+ETAGS_PROG=34,1976
+CTAGS_PROG=35,2007
+REGEX=37,2039
+xx=38,2085
+RUN=40,2134
+OPTIONS=42,2140
+ARGS=43,2192
+infiles 45,2210
+check:check47,2272
+ediff%:ediff%55,2575
+cdiff:cdiff58,2676
+ETAGS:ETAGS61,2773
+CTAGS:CTAGS64,2843
+srclist:srclist67,2921
+regexfile:regexfile71,3012
+.PRECIOUS:.PRECIOUS77,3189
+FRC:FRC79,3223
+
+ada-src/etags-test-for.ada,1969
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+   function Body_RequiredBody_Required/f3,78
+   type Type_Specific_Data Type_Specific_Data/t11,280
+   function "abs"abs/f19,504
+   type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+   function "="=/f27,722
+   type usfreelock_ptr usfreelock_ptr/t30,803
+   function p p/f33,891
+   procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+  type Private_T Private_T/t46,1220
+  package Inner1 Inner1/s48,1250
+    procedure Private_T;Private_T/p49,1270
+  package Inner2 Inner2/s52,1310
+    task Private_T;Private_T/k53,1330
+  type Public_T Public_T/t56,1365
+  procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+  procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+  function Pkg1_Func1 Pkg1_Func1/f66,1514
+  function Pkg1_Func2 Pkg1_Func2/f68,1553
+  package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+  task type Task_Type Task_Type/k75,1694
+  type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+  procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+  package body Inner1 Inner1/b96,1956
+    procedure Private_T Private_T/p97,1981
+  package body Inner2 Inner2/b103,2054
+    task body Private_T Private_T/b104,2079
+  task body Task_Type Task_Type/b112,2181
+  procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+  function Pkg1_Func1 Pkg1_Func1/f132,2445
+  function Pkg1_Func2 Pkg1_Func2/f134,2496
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function  Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+  protected Bidule Bidule/t168,2953
+  protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+  protected body Bidule Bidule/b179,3115
+  protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+   package RTE RTE/s69,2712
+   package TSL TSL/s70,2759
+   function To_void_ptr To_void_ptr/f86,3287
+   function To_TCB_Ptr To_TCB_Ptr/f89,3366
+   function 
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+   function 
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+   procedure Abort_WrapperAbort_Wrapper/p115,4302
+   procedure LL_Wrapper LL_Wrapper/p122,4526
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+   function Self Self/f160,5586
+   procedure Initialize_LockInitialize_Lock/p174,5958
+   procedure Finalize_Lock Finalize_Lock/p210,6927
+   procedure Write_Lock Write_Lock/p226,7338
+   procedure Read_Lock Read_Lock/p239,7700
+   procedure Unlock Unlock/p246,7850
+   procedure Initialize_Cond Initialize_Cond/p258,8160
+   procedure Finalize_Cond Finalize_Cond/p286,8979
+   procedure Cond_Wait Cond_Wait/p300,9303
+   procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+   procedure Cond_Signal Cond_Signal/p343,10510
+   procedure Set_PrioritySet_Priority/p355,10836
+   procedure Set_Own_Priority Set_Own_Priority/p372,11243
+   function Get_Priority Get_Priority/f385,11598
+   function Get_Own_Priority Get_Own_Priority/f398,12023
+   procedure Create_LL_TaskCreate_LL_Task/p412,12438
+      function To_Start_Addr To_Start_Addr/f426,12873
+   procedure Exit_LL_Task Exit_LL_Task/p491,14995
+   procedure Abort_Task Abort_Task/p500,15158
+   procedure Test_Abort Test_Abort/p518,15716
+   procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+   procedure Abort_WrapperAbort_Wrapper/p557,16939
+      function Address_To_Call_State Address_To_Call_State/f562,17062
+   procedure Install_Error_Handler Install_Error_Handler/p573,17351
+   procedure LL_Assert LL_Assert/p599,18146
+   procedure LL_Wrapper LL_Wrapper/p608,18299
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+   procedure Clear Clear/p640,19236
+   procedure Test_And_Set Test_And_Set/p645,19330
+   function  Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+   type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+   type Pre_Call_State Pre_Call_State/t64,3331
+   type Task_Storage_Size Task_Storage_Size/t66,3378
+   type Machine_Exceptions Machine_Exceptions/t68,3433
+   type Error_Information Error_Information/t70,3499
+   type Lock Lock/t72,3569
+   type Condition_Variable Condition_Variable/t73,3594
+   type Task_Control_Block Task_Control_Block/t81,3955
+   type TCB_Ptr TCB_Ptr/t89,4241
+   function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+   procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+   function Self Self/f100,4602
+   procedure Initialize_Lock Initialize_Lock/p103,4707
+   procedure Finalize_Lock Finalize_Lock/p107,4879
+   procedure Write_Lock Write_Lock/p111,5034
+   procedure Read_Lock Read_Lock/p118,5428
+   procedure Unlock Unlock/p128,5995
+   procedure Initialize_Cond Initialize_Cond/p135,6300
+   procedure Finalize_Cond Finalize_Cond/p138,6413
+   procedure Cond_Wait Cond_Wait/p142,6591
+   procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+   procedure Cond_Signal Cond_Signal/p164,7812
+   procedure Set_Priority Set_Priority/p169,8040
+   procedure Set_Own_Priority Set_Own_Priority/p173,8200
+   function Get_Priority Get_Priority/f177,8348
+   function Get_Own_Priority Get_Own_Priority/f181,8504
+   procedure Create_LL_TaskCreate_LL_Task/p185,8647
+   procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+   procedure Abort_Task Abort_Task/p203,9516
+   procedure Test_Abort;Test_Abort/p210,9878
+   type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+   procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+   procedure Install_Error_Handler Install_Error_Handler/p226,10741
+   procedure LL_Assert LL_Assert/p231,10983
+   type Proc Proc/t238,11240
+   type TAS_Cell TAS_Cell/t242,11328
+   procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+   procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+   procedure Clear Clear/p260,12157
+   procedure Test_And_Set Test_And_Set/p267,12462
+   function  Is_Set Is_Set/f275,12877
+   type Lock Lock/t283,13155
+   type Condition_Variable Condition_Variable/t288,13267
+   type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+  type Private_T Private_T/t5,106
+  package Inner1 Inner1/s7,136
+    procedure Private_T;Private_T/p8,156
+  package Inner2 Inner2/s11,196
+    task Private_T;Private_T/k12,216
+  type Public_T Public_T/t15,251
+  procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+  procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+  function Pkg1_Func1 Pkg1_Func1/f25,400
+  function Pkg1_Func2 Pkg1_Func2/f27,439
+  package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+    procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+  task type Task_Type Task_Type/k34,580
+  type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+  procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+  package body Inner1 Inner1/b53,840
+    procedure Private_T Private_T/p54,865
+  package body Inner2 Inner2/b60,938
+    task body Private_T Private_T/b61,963
+  task body Task_Type Task_Type/b68,1064
+  procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+  function Pkg1_Func1 Pkg1_Func1/f88,1328
+  function Pkg1_Func2 Pkg1_Func2/f90,1379
+  package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+  procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function  Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+  protected Bidule Bidule/t125,1964
+  protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+  protected body Bidule Bidule/b139,2181
+  protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,2634
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev", 
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description", 
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table", 
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+  DEFVAR_LISP ("abbrev-table-name-list"541,16079
+  DEFVAR_LISP ("global-abbrev-table"547,16341
+  DEFVAR_LISP ("fundamental-mode-abbrev-table"554,16663
+  DEFVAR_LISP ("last-abbrev"560,17005
+  DEFVAR_LISP ("last-abbrev-text"563,17128
+  DEFVAR_INT ("last-abbrev-location"567,17286
+  DEFVAR_LISP ("abbrev-start-location"574,17485
+  DEFVAR_LISP ("abbrev-start-location-buffer"580,17762
+  DEFVAR_PER_BUFFER ("local-abbrev-table"585,18026
+  DEFVAR_BOOL ("abbrevs-changed"588,18169
+  DEFVAR_BOOL ("abbrev-all-caps"593,18372
+  DEFVAR_LISP ("pre-abbrev-expand-hook"597,18528
+  DEFVAR_LISP ("abbrev-table-name-list",\1541,16079
+  DEFVAR_LISP ("global-abbrev-table",\1547,16341
+  DEFVAR_LISP ("fundamental-mode-abbrev-table",\1554,16663
+  DEFVAR_LISP ("last-abbrev",\1560,17005
+  DEFVAR_LISP ("last-abbrev-text",\1563,17128
+  DEFVAR_INT ("last-abbrev-location",\1567,17286
+  DEFVAR_LISP ("abbrev-start-location",\1574,17485
+  DEFVAR_LISP ("abbrev-start-location-buffer",\1580,17762
+  DEFVAR_PER_BUFFER ("local-abbrev-table",\1585,18026
+  DEFVAR_BOOL ("abbrevs-changed",\1588,18169
+  DEFVAR_BOOL ("abbrev-all-caps",\1593,18372
+  DEFVAR_LISP ("pre-abbrev-expand-hook",\1597,18528
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,666
+#define _GETOPT_H 19,801
+extern char *optarg;optarg31,1109
+extern int optind;45,1617
+extern int opterr;50,1743
+struct option73,2797
+  const char *name;name76,2826
+  char *name;name78,2852
+  int has_arg;82,3009
+  int *flag;flag83,3024
+  int val;84,3037
+#define        no_argument     89,3124
+#define required_argument      90,3147
+#define optional_argument      91,3175
+extern int getopt 98,3440
+extern int getopt 100,3544
+extern int getopt_long 102,3599
+extern int getopt_long_only 104,3731
+extern int _getopt_internal 109,3942
+extern int getopt 114,4140
+extern int getopt_long 115,4162
+extern int getopt_long_only 116,4189
+extern int _getopt_internal 118,4222
+
+c-src/etags.c,14175
+char pot_etags_version[pot_etags_version81,3470
+#  undef DEBUG84,3552
+#  define DEBUG 85,3567
+#  define DEBUG 87,3594
+#  define NDEBUG       88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef  WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef  DOS_NT117,4160
+# define DOS_NT118,4176
+# undef  assert        135,4482
+# define assert(136,4541
+# undef  CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define        iswhite(159,5329
+#define notinname(160,5394
+#define        begtoken(161,5469
+#define        intoken(162,5542
+#define        endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+  const char *suffix;suffix186,6219
+  const char *command;command187,6294
+} compressor;188,6365
+  const char *name;name192,6397
+  const char *help;help193,6449
+  Lang_function *function;function194,6508
+  const char **suffixes;suffixes195,6556
+  const char **filenames;filenames196,6633
+  const char **interpreters;interpreters197,6702
+  bool metasource;198,6771
+} language;199,6835
+typedef struct fdesc201,6848
+  struct fdesc *next;next203,6871
+  char *infname;infname204,6920
+  char *infabsname;infabsname205,6973
+  char *infabsdir;infabsdir206,7038
+  char *taggedfname;taggedfname207,7091
+  language *lang;lang208,7149
+  char *prop;prop209,7191
+  bool usecharno;210,7249
+  bool written;211,7311
+} fdesc;212,7366
+typedef struct node_st214,7376
+  struct node_st *left,left216,7428
+  struct node_st *left, *right;right216,7428
+  fdesc *fdp;fdp217,7486
+  char *name;name218,7548
+  char *regex;regex219,7580
+  bool valid;220,7617
+  bool is_func;221,7670
+  bool been_warned;222,7733
+  int lno;223,7801
+  long cno;224,7842
+} node;225,7894
+  long size;236,8208
+  int len;237,8221
+  char *buffer;buffer238,8232
+} linebuffer;239,8248
+    at_language,245,8344
+    at_regexp,246,8393
+    at_filename,247,8437
+    at_stdin,248,8473
+    at_end     249,8516
+  } arg_type;250,8557
+  language *lang;lang251,8593
+  char *what;what252,8656
+} argument;253,8698
+typedef struct regexp256,8758
+  struct regexp *p_next;p_next258,8782
+  language *lang;lang259,8837
+  char *pattern;pattern260,8897
+  char *name;name261,8940
+  struct re_pattern_buffer *pat;pat262,8971
+  struct re_registers regs;263,9031
+  bool error_signaled;264,9078
+  bool force_explicit_name;265,9141
+  bool ignore_case;266,9206
+  bool multi_line;267,9259
+} regexp;268,9325
+static void Ada_funcs 274,9428
+static void Asm_labels 275,9460
+static void C_entries 276,9493
+static void default_C_entries 277,9536
+static void plain_C_entries 278,9576
+static void Cjava_entries 279,9614
+static void Cobol_paragraphs 280,9650
+static void Cplusplus_entries 281,9689
+static void Cstar_entries 282,9729
+static void Erlang_functions 283,9765
+static void Forth_words 284,9804
+static void Fortran_functions 285,9838
+static void HTML_labels 286,9878
+static void Lisp_functions 287,9912
+static void Lua_functions 288,9949
+static void Makefile_targets 289,9985
+static void Pascal_functions 290,10024
+static void Perl_functions 291,10063
+static void PHP_functions 292,10100
+static void PS_functions 293,10136
+static void Prolog_functions 294,10171
+static void Python_functions 295,10210
+static void Scheme_functions 296,10249
+static void TeX_commands 297,10288
+static void Texinfo_nodes 298,10323
+static void Yacc_entries 299,10359
+static void just_read_file 300,10394
+static language *get_language_from_langname 
get_language_from_langname302,10432
+static void readline 303,10492
+static long readline_internal 304,10537
+static bool nocase_tail 305,10591
+static void get_tag 306,10631
+static void analyze_regex 308,10671
+static void free_regexps 309,10707
+static void regex_tag_multiline 310,10740
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int total_size_of_entries 2067,66150
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT  2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC   2199,69242
+enum sym_type2204,69312
+  st_none,2206,69328
+  st_C_objprot,2207,69339
+  st_C_objprot, st_C_objimpl,2207,69339
+  st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+  st_C_gnumacro,2208,69382
+  st_C_ignore,2209,69399
+  st_C_ignore, st_C_attribute,2209,69399
+  st_C_javastruct,2210,69430
+  st_C_operator,2211,69449
+  st_C_class,2212,69466
+  st_C_class, st_C_template,2212,69466
+  st_C_struct,2213,69495
+  st_C_struct, st_C_extern,2213,69495
+  st_C_struct, st_C_extern, st_C_enum,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+  st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+struct C_stab_entry { const char *name;name2271,71278
+struct C_stab_entry { const char *name; int c_ext;2271,71278
+struct C_stab_entry { const char *name; int c_ext; enum sym_type 
type;2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+      TOTAL_KEYWORDS 2325,73018
+      MIN_WORD_LENGTH 2326,73045
+      MAX_WORD_LENGTH 2327,73072
+      MIN_HASH_VALUE 2328,73100
+      MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+  fvnone,2408,75435
+  fdefunkey,2409,75466
+  fdefunname,2410,75512
+  foperator,2411,75556
+  fvnameseen,2412,75613
+  fstartlist,2413,75666
+  finlist,2414,75722
+  flistseen,2415,75765
+  fignore,2416,75813
+  vignore      2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+  tnone,2428,76089
+  tkeyseen,2429,76119
+  ttypeseen,2430,76160
+  tinbody,2431,76199
+  tend,2432,76238
+  tignore      2433,76279
+} typdef;2434,76320
+  snone,2443,76499
+  skeyseen,2445,76575
+  stagseen,2446,76620
+  scolonseen   2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+  dnone,2460,76942
+  dsharpseen,2461,76972
+  ddefineseen,2462,77025
+  dignorerest  2463,77070
+} definedef;2464,77112
+  onone,2472,77267
+  oprotocol,2473,77297
+  oimplementation,2474,77347
+  otagseen,2475,77395
+  oparenseen,2476,77431
+  ocatseen,2477,77486
+  oinbody,2478,77525
+  omethodsign,2479,77568
+  omethodtag,2480,77626
+  omethodcolon,2481,77666
+  omethodparm,2482,77709
+  oignore      2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+  char *line;line2493,77964
+  int offset;2494,78014
+  int length;2495,78067
+  bool valid;2502,78352
+  bool named;2505,78487
+  int lineno;2506,78528
+  long linepos;2507,78576
+} token;2508,78626
+static void pushclass_above 2514,78784
+static void popclass_above 2515,78832
+static void write_classname 2516,78866
+  char **cname;cname2519,78950
+  int *bracelev;bracelev2520,78993
+  int nl;2521,79042
+  int size;2522,79096
+} cstack;2523,79136
+#define nestlev        2525,79264
+#define instruct       2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+static bool consider_token 2592,80761
+static void make_C_tag 2593,80833
+consider_token 2613,81341
+  long linepos;2922,88499
+  linebuffer lb;2923,88515
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+static void F_takeprec 3910,111965
+static void F_getit 3911,111996
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+static void L_getit 4706,130277
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static void TEX_mode 4917,135172
+static void TEX_decode_env 4918,135203
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+static size_t prolog_pr 5214,142192
+static void prolog_skip_comment 5215,142234
+static size_t prolog_atom 5216,142290
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+static int erlang_func 5374,145540
+static void erlang_attribute 5375,145581
+static int erlang_atom 5376,145620
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+static char *scan_separators scan_separators5520,148487
+static void add_regex 5521,148526
+static char *substitute substitute5522,148570
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,99
+    size_t n;28,961
+    void EXFUN((*fn[fn29,975
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,99
+    size_t n;28,961
+    void EXFUN((*fn[fn29,975
+  } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define        ENTRY(21,865
+#define        PSEUDO(26,972
+    movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+    movl $SYS_##syscall_name, %eax;eax31,1132
+    int $0x80;32,1180
+    test %eax,eax33,1210
+    test %eax, %eax;eax33,1210
+    jl syscall_error;34,1245
+#define        XCHG_0  47,1562
+#define        XCHG_1  48,1606
+#define        XCHG_2  49,1648
+#define        XCHG_3  50,1691
+#define        XCHG_4  51,1734
+#define        XCHG_5  52,1777
+#define        r0      54,1821
+#define        r1      55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int             count_words(15,263
+static char            *get_word(get_word35,553
+void                   tab_free(59,966
+char                   **tab_fill(tab_fill70,1129
+int                    tab_delete_first(91,1638
+int                    tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,7311
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+extern void emacs_abort 47,1305
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+extern void *bss_sbrk bss_sbrk76,2335
+extern int bss_sbrk_did_unexec;77,2375
+extern char bss_sbrk_buffer[bss_sbrk_buffer78,2407
+extern void *bss_sbrk_buffer_end;bss_sbrk_buffer_end79,2438
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT        124,3934
+#define BLOCKLOG       125,3977
+#define BLOCKSIZE      126,4018
+#define BLOCKIFY(127,4052
+#define HEAP   131,4215
+#define FINAL_FREE_BLOCKS      135,4391
+       int type;145,4676
+               size_t nfree;150,4720
+               size_t first;151,4777
+             } frag;152,4834
+           ptrdiff_t size;156,5055
+         } info;157,5076
+      } busy;158,5087
+       size_t size;163,5215
+       size_t next;164,5272
+       size_t prev;165,5321
+      } free;166,5374
+  } malloc_info;167,5388
+extern char *_heapbase;_heapbase170,5449
+extern malloc_info *_heapinfo;_heapinfo173,5541
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+extern size_t _heapindex;180,5797
+extern size_t _heaplimit;183,5866
+struct list186,5939
+    struct list *next;next188,5955
+    struct list *prev;prev189,5978
+extern struct list _fraghead[_fraghead193,6056
+struct alignlist196,6153
+    struct alignlist *next;next198,6174
+    void *aligned;aligned199,6202
+    void *exact;exact200,6270
+extern struct alignlist *_aligned_blocks;_aligned_blocks202,6334
+extern size_t _chunks_used;205,6401
+extern size_t _bytes_used;206,6429
+extern size_t _chunks_free;207,6456
+extern size_t _bytes_free;208,6484
+extern void *_malloc_internal _malloc_internal213,6673
+extern void *_realloc_internal _realloc_internal214,6713
+extern void _free_internal 215,6762
+extern void *_malloc_internal_nolock _malloc_internal_nolock216,6799
+extern void *_realloc_internal_nolock _realloc_internal_nolock217,6846
+extern void _free_internal_nolock 218,6902
+extern pthread_mutex_t _malloc_mutex,221,6966
+extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;221,6966
+extern int _malloc_thread_enabled_p;222,7027
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+extern void *malloc_find_object_address malloc_find_object_address252,7865
+extern void *(*__morecore)__morecore256,8021
+extern void *__default_morecore __default_morecore259,8105
+extern void (*__after_morecore_hook)__after_morecore_hook263,8269
+extern size_t __malloc_extra_blocks;267,8442
+extern int __malloc_initialized;270,8552
+extern int __malloc_initialize 272,8646
+extern void (*__malloc_initialize_hook)__malloc_initialize_hook275,8723
+extern void (*__free_hook)__free_hook276,8771
+extern void *(*__malloc_hook)__malloc_hook277,8811
+extern void *(*__realloc_hook)__realloc_hook278,8856
+extern void *(*__memalign_hook)__memalign_hook279,8913
+enum mcheck_status283,9092
+    MCHECK_DISABLED 285,9115
+    MCHECK_OK,286,9187
+    MCHECK_FREE,287,9226
+    MCHECK_HEAD,288,9270
+    MCHECK_TAIL        289,9334
+extern int mcheck 296,9701
+extern enum mcheck_status mprobe 301,9952
+extern void mtrace 304,10055
+extern void muntrace 305,10082
+struct mstats308,10153
+    size_t bytes_total;310,10171
+    size_t chunks_used;311,10225
+    size_t bytes_used;312,10285
+    size_t chunks_free;313,10351
+    size_t bytes_free;314,10406
+extern struct mstats mstats 318,10518
+extern void memory_warnings 321,10625
+void *(*__malloc_hook)__malloc_hook352,11743
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+void (*__malloc_initialize_hook)__malloc_initialize_hook383,12398
+void (*__after_morecore_hook)__after_morecore_hook384,12439
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+extern void *_malloc _malloc956,29033
+extern void _free 957,29064
+extern void *_realloc _realloc958,29092
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+void (*__free_hook)__free_hook1001,30259
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+void *(*__realloc_hook)__realloc_hook1310,39898
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define        __sbrk  1513,46042
+extern void *__sbrk __sbrk1518,46247
+__default_morecore 1525,46511
+void *(*__memalign_hook)__memalign_hook1554,47456
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+extern void *valloc valloc1695,51140
+extern int getpagesize 1700,51278
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+extern void *malloc malloc1722,51609
+extern void *realloc realloc1723,51644
+extern void *calloc calloc1724,51691
+extern void free 1725,51740
+extern void *aligned_alloc aligned_alloc1727,51796
+extern int posix_memalign 1729,51890
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+char *gget_current_dir_name gget_current_dir_name1808,53753
+hybrid_get_current_dir_name 1811,53797
+static void (*old_free_hook)old_free_hook1846,54921
+static void *(*old_malloc_hook)old_malloc_hook1847,54963
+static void *(*old_realloc_hook)old_realloc_hook1848,55010
+static void (*abortfunc)abortfunc1851,55124
+#define MAGICWORD      1854,55206
+#define MAGICFREE      1855,55261
+#define MAGICBYTE      1856,55316
+#define MALLOCFLOOD    1857,55348
+#define FREEFLOOD      1858,55382
+struct hdr1860,55415
+    size_t size;1862,55430
+    size_t magic;1863,55484
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,5300
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+extern reg_syntax_t re_syntax_options;167,7170
+extern Lisp_Object re_match_object;172,7344
+extern size_t re_max_failures;176,7454
+#define RE_SYNTAX_EMACS        183,7684
+#define RE_SYNTAX_AWK  186,7780
+#define RE_SYNTAX_GNU_AWK      193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP        206,8549
+#define RE_SYNTAX_POSIX_EGREP  212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON        221,9072
+#define RE_SYNTAX_POSIX_BASIC  225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC  231,9508
+#define RE_SYNTAX_POSIX_EXTENDED       234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED       242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+  REG_ENOSYS 297,11859
+  REG_NOERROR 300,11941
+  REG_NOMATCH,301,11976
+  REG_BADPAT,305,12123
+  REG_ECOLLATE,306,12162
+  REG_ECTYPE,307,12203
+  REG_EESCAPE,308,12255
+  REG_ESUBREG,309,12298
+  REG_EBRACK,310,12345
+  REG_EPAREN,311,12391
+  REG_EBRACE,312,12436
+  REG_BADBR,313,12472
+  REG_ERANGE,314,12519
+  REG_ESPACE,315,12560
+  REG_BADRPT,316,12601
+  REG_EEND,319,12693
+  REG_ESIZE,320,12728
+  REG_ERPAREN,321,12790
+  REG_ERANGEX  322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+  unsigned char *buffer;buffer341,13538
+  size_t allocated;344,13614
+  size_t used;347,13686
+  reg_syntax_t syntax;350,13769
+  char *fastmap;fastmap355,13975
+  RE_TRANSLATE_TYPE translate;361,14241
+  size_t re_nsub;364,14329
+  unsigned can_be_null 370,14624
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+  unsigned regs_allocated 379,14963
+  unsigned fastmap_accurate 383,15136
+  unsigned no_sub 387,15267
+  unsigned not_bol 391,15398
+  unsigned not_eol 394,15475
+  unsigned used_syntax 398,15655
+  unsigned multibyte 403,15805
+  unsigned target_multibyte 407,15941
+  int charset_unibyte;410,16032
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+  unsigned num_regs;430,16674
+  regoff_t *start;start431,16695
+  regoff_t *end;end432,16714
+# define RE_NREGS 440,16942
+  regoff_t rm_so;449,17159
+  regoff_t rm_eo;450,17239
+} regmatch_t;451,17317
+extern reg_syntax_t re_set_syntax 457,17512
+extern const char *re_compile_pattern re_compile_pattern462,17776
+extern int re_compile_fastmap 469,18058
+extern regoff_t re_search 477,18466
+extern regoff_t re_search_2 485,18781
+extern regoff_t re_match 495,19177
+extern regoff_t re_match_2 501,19407
+extern void re_set_registers 520,20197
+extern char *re_comp re_comp528,20469
+extern int re_exec 529,20506
+#  define _Restrict_ 540,20886
+#  define _Restrict_ 542,20979
+#  define _Restrict_544,21018
+#  define _Restrict_arr_ 555,21418
+#  define _Restrict_arr_557,21461
+extern reg_errcode_t regcomp 562,21530
+extern reg_errcode_t regexec 566,21656
+extern size_t regerror 571,21850
+extern void regfree 574,21956
+#  define CHAR_CLASS_MAX_LENGTH 593,22470
+#  define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+              RECC_ALNUM,610,22984
+              RECC_ALNUM, RECC_ALPHA,610,22984
+              RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+              RECC_GRAPH,611,23027
+              RECC_GRAPH, RECC_PRINT,611,23027
+              RECC_LOWER,612,23059
+              RECC_LOWER, RECC_UPPER,612,23059
+              RECC_PUNCT,613,23091
+              RECC_PUNCT, RECC_CNTRL,613,23091
+              RECC_DIGIT,614,23123
+              RECC_DIGIT, RECC_XDIGIT,614,23123
+              RECC_BLANK,615,23156
+              RECC_BLANK, RECC_SPACE,615,23156
+              RECC_MULTIBYTE,616,23188
+              RECC_MULTIBYTE, RECC_NONASCII,616,23188
+              RECC_ASCII,617,23227
+              RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+extern char re_iswctype 620,23276
+extern re_wctype_t re_wctype 621,23329
+typedef int re_wchar_t;623,23387
+extern void re_set_whitespace_regexp 625,23412
+
+c-src/emacs/src/keyboard.c,23269
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF        119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard 
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+static void recursive_edit_unwind 313,11088
+static Lisp_Object command_loop 314,11144
+static void echo_now 316,11185
+static ptrdiff_t echo_length 317,11214
+unsigned timers_run;320,11296
+struct timespec 
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW  346,12046
+#define READABLE_EVENTS_FILTER_EVENTS  347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES     348,12142
+static void (*keyboard_init_hook)keyboard_init_hook351,12264
+static bool get_input_pending 353,12307
+static bool readable_events 354,12344
+static Lisp_Object read_char_x_menu_prompt 355,12379
+static Lisp_Object read_char_minibuf_menu_prompt 357,12502
+static Lisp_Object make_lispy_event 358,12571
+static Lisp_Object make_lispy_movement 359,12631
+static Lisp_Object modify_event_symbol 363,12840
+static Lisp_Object make_lispy_switch_frame 366,13050
+static Lisp_Object make_lispy_focus_in 367,13108
+static Lisp_Object make_lispy_focus_out 369,13188
+static bool help_char_p 371,13275
+static void save_getcjmp 372,13314
+static void restore_getcjmp 373,13354
+static Lisp_Object apply_modifiers 374,13397
+static void clear_event 375,13452
+static void restore_kboard_configuration 376,13500
+static void deliver_input_available_signal 378,13568
+static void handle_interrupt 380,13631
+static _Noreturn void quit_throw_to_read_char 381,13668
+static void process_special_events 382,13722
+static void timer_start_idle 383,13765
+static void timer_stop_idle 384,13802
+static void timer_resume_idle 385,13838
+static void deliver_user_signal 386,13876
+static char *find_user_signal_name find_user_signal_name387,13915
+static void store_user_signal_events 388,13957
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+  KBOARD *kboard;kboard860,27087
+  struct kboard_stack *next;next861,27105
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function", 
Fcommand_error_default_function,command-error-default-function1043,32030
+static Lisp_Object command_loop_2 1086,33637
+static Lisp_Object top_level_1 1087,33686
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit", 
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit", 
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+static int read_key_sequence 1282,38799
+static void adjust_point_for_property 1284,38917
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object kbd_buffer_get_event 2152,65484
+static void record_char 2154,65596
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING   2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const 
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const 
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const 
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", 
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list", 
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+  int sig;7238,215915
+  char *name;name7241,215956
+  int npending;7244,216007
+  struct user_signal_info *next;next7246,216024
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static void menu_bar_item 7362,218341
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+static void init_tool_bar_items 7978,236664
+static void process_tool_bar_item 7979,236711
+static bool parse_tool_bar_item 7981,236801
+static void append_tool_bar_item 7982,236861
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+  Lisp_Object parent;8745,259107
+  Lisp_Object map;8748,259224
+  int start,8753,259446
+  int start, end;8753,259446
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector", 
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector", 
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys", 
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys", 
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths", 
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys", 
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode", 
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control", 
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode", 
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode", 
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+  short var;11023,332716
+  short kind;11024,332729
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+  DEFVAR_LISP ("internal--top-level-message"11058,333972
+  DEFVAR_LISP ("last-command-event"11312,342173
+  DEFVAR_LISP ("last-nonmenu-event"11315,342297
+  DEFVAR_LISP ("last-input-event"11321,342636
+  DEFVAR_LISP ("unread-command-events"11324,342730
+  DEFVAR_LISP ("unread-post-input-method-events"11332,343190
+  DEFVAR_LISP ("unread-input-method-events"11338,343529
+  DEFVAR_LISP ("meta-prefix-char"11346,343898
+  DEFVAR_KBOARD ("last-command"11351,344106
+  DEFVAR_KBOARD ("real-last-command"11368,344787
+  DEFVAR_KBOARD ("last-repeatable-command"11372,344973
+  DEFVAR_LISP ("this-command"11378,345261
+  DEFVAR_LISP ("real-this-command"11384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680
+  DEFVAR_LISP ("this-original-command"11396,346123
+  DEFVAR_INT ("auto-save-interval"11403,346520
+  DEFVAR_LISP ("auto-save-timeout"11408,346734
+  DEFVAR_LISP ("echo-keystrokes"11415,347079
+  DEFVAR_INT ("polling-period"11421,347350
+  DEFVAR_LISP ("double-click-time"11428,347693
+  DEFVAR_INT ("double-click-fuzz"11435,348029
+  DEFVAR_INT ("num-input-keys"11446,348519
+  DEFVAR_INT ("num-nonmacro-input-events"11452,348794
+  DEFVAR_LISP ("last-event-frame"11457,349032
+  DEFVAR_LISP ("tty-erase-char"11463,349311
+  DEFVAR_LISP ("help-char"11466,349434
+  DEFVAR_LISP ("help-event-list"11472,349717
+  DEFVAR_LISP ("help-form"11477,349928
+  DEFVAR_LISP ("prefix-help-command"11483,350176
+  DEFVAR_LISP ("top-level"11489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table"11495,350675
+  DEFVAR_BOOL ("cannot-suspend"11511,351488
+  DEFVAR_BOOL ("menu-prompting"11516,351715
+  DEFVAR_LISP ("menu-prompt-more-char"11526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers"11531,352391
+  DEFVAR_LISP ("deactivate-mark"11545,353117
+  DEFVAR_LISP ("pre-command-hook"11553,353486
+  DEFVAR_LISP ("post-command-hook"11560,353841
+  DEFVAR_LISP ("echo-area-clear-hook"11568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419
+  DEFVAR_LISP ("menu-bar-final-items"11578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230
+  DEFVAR_LISP ("overriding-local-map"11598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103
+  DEFVAR_LISP ("special-event-map"11613,356442
+  DEFVAR_LISP ("track-mouse"11617,356630
+  DEFVAR_KBOARD ("system-key-alist"11620,356757
+  DEFVAR_KBOARD ("local-function-key-map"11629,357138
+  DEFVAR_KBOARD ("input-decode-map"11658,358597
+  DEFVAR_LISP ("function-key-map"11675,359385
+  DEFVAR_LISP ("key-translation-map"11683,359801
+  DEFVAR_LISP ("deferred-action-list"11689,360145
+  DEFVAR_LISP ("deferred-action-function"11694,360393
+  DEFVAR_LISP ("delayed-warnings-list"11700,360692
+  DEFVAR_LISP ("timer-list"11708,361100
+  DEFVAR_LISP ("timer-idle-list"11712,361252
+  DEFVAR_LISP ("input-method-function"11716,361415
+  DEFVAR_LISP ("input-method-previous-message"11737,362384
+  DEFVAR_LISP ("show-help-function"11744,362745
+  DEFVAR_LISP ("disable-point-adjustment"11749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment"11761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout"11770,363893
+  DEFVAR_LISP ("throw-on-input"11775,364171
+  DEFVAR_LISP ("command-error-function"11781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909
+  DEFVAR_LISP ("select-active-regions"11798,365236
+  DEFVAR_LISP ("saved-region-selection"11807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013
+  DEFVAR_LISP ("debug-on-event"11825,366554
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+  DEFVAR_LISP ("internal--top-level-message",\111058,333972
+  DEFVAR_LISP ("last-command-event",\111312,342173
+  DEFVAR_LISP ("last-nonmenu-event",\111315,342297
+  DEFVAR_LISP ("last-input-event",\111321,342636
+  DEFVAR_LISP ("unread-command-events",\111324,342730
+  DEFVAR_LISP ("unread-post-input-method-events",\111332,343190
+  DEFVAR_LISP ("unread-input-method-events",\111338,343529
+  DEFVAR_LISP ("meta-prefix-char",\111346,343898
+  DEFVAR_KBOARD ("last-command",\111351,344106
+  DEFVAR_KBOARD ("real-last-command",\111368,344787
+  DEFVAR_KBOARD ("last-repeatable-command",\111372,344973
+  DEFVAR_LISP ("this-command",\111378,345261
+  DEFVAR_LISP ("real-this-command",\111384,345498
+  DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680
+  DEFVAR_LISP ("this-original-command",\111396,346123
+  DEFVAR_INT ("auto-save-interval",\111403,346520
+  DEFVAR_LISP ("auto-save-timeout",\111408,346734
+  DEFVAR_LISP ("echo-keystrokes",\111415,347079
+  DEFVAR_INT ("polling-period",\111421,347350
+  DEFVAR_LISP ("double-click-time",\111428,347693
+  DEFVAR_INT ("double-click-fuzz",\111435,348029
+  DEFVAR_INT ("num-input-keys",\111446,348519
+  DEFVAR_INT ("num-nonmacro-input-events",\111452,348794
+  DEFVAR_LISP ("last-event-frame",\111457,349032
+  DEFVAR_LISP ("tty-erase-char",\111463,349311
+  DEFVAR_LISP ("help-char",\111466,349434
+  DEFVAR_LISP ("help-event-list",\111472,349717
+  DEFVAR_LISP ("help-form",\111477,349928
+  DEFVAR_LISP ("prefix-help-command",\111483,350176
+  DEFVAR_LISP ("top-level",\111489,350454
+  DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675
+  DEFVAR_BOOL ("cannot-suspend",\111511,351488
+  DEFVAR_BOOL ("menu-prompting",\111516,351715
+  DEFVAR_LISP ("menu-prompt-more-char",\111526,352145
+  DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391
+  DEFVAR_LISP ("deactivate-mark",\111545,353117
+  DEFVAR_LISP ("pre-command-hook",\111553,353486
+  DEFVAR_LISP ("post-command-hook",\111560,353841
+  DEFVAR_LISP ("echo-area-clear-hook",\111568,354204
+  DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419
+  DEFVAR_LISP ("menu-bar-final-items",\111578,354622
+  DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872
+  DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230
+  DEFVAR_LISP ("overriding-local-map",\111598,355652
+  DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103
+  DEFVAR_LISP ("special-event-map",\111613,356442
+  DEFVAR_LISP ("track-mouse",\111617,356630
+  DEFVAR_KBOARD ("system-key-alist",\111620,356757
+  DEFVAR_KBOARD ("local-function-key-map",\111629,357138
+  DEFVAR_KBOARD ("input-decode-map",\111658,358597
+  DEFVAR_LISP ("function-key-map",\111675,359385
+  DEFVAR_LISP ("key-translation-map",\111683,359801
+  DEFVAR_LISP ("deferred-action-list",\111689,360145
+  DEFVAR_LISP ("deferred-action-function",\111694,360393
+  DEFVAR_LISP ("delayed-warnings-list",\111700,360692
+  DEFVAR_LISP ("timer-list",\111708,361100
+  DEFVAR_LISP ("timer-idle-list",\111712,361252
+  DEFVAR_LISP ("input-method-function",\111716,361415
+  DEFVAR_LISP ("input-method-previous-message",\111737,362384
+  DEFVAR_LISP ("show-help-function",\111744,362745
+  DEFVAR_LISP ("disable-point-adjustment",\111749,362977
+  DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527
+  DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893
+  DEFVAR_LISP ("throw-on-input",\111775,364171
+  DEFVAR_LISP ("command-error-function",\111781,364422
+  DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909
+  DEFVAR_LISP ("select-active-regions",\111798,365236
+  DEFVAR_LISP ("saved-region-selection",\111807,365628
+  DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013
+  DEFVAR_LISP ("debug-on-event",\111825,366554
+
+c-src/emacs/src/lisp.h,39173
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+#  define EMACS_INT_MAX 93,3079
+#  define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+#  define EMACS_INT_MAX 98,3265
+#  define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+#  define EMACS_INT_MAX 105,3553
+#  define pI 106,3587
+enum {  BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+verify 131,4450
+    BITS_PER_CHAR 136,4570
+    BITS_PER_SHORT 137,4605
+    BITS_PER_LONG 138,4657
+    BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+extern _Noreturn void die 204,7206
+extern bool suppress_checking EXTERNALLY_VISIBLE;206,7268
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+    VALBITS 246,8742
+    INTTYPEBITS 249,8838
+    FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+#  define check_cons_list(405,15097
+#  define make_number(408,15176
+#  define XFASTINT(409,15224
+#  define XINT(410,15266
+#  define XSYMBOL(411,15300
+#  define XTYPE(412,15340
+#  define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+    Lisp_Symbol 454,16851
+    Lisp_Misc 458,16993
+    Lisp_Int0 461,17067
+    Lisp_Int1 462,17086
+    Lisp_String 466,17264
+    Lisp_Vectorlike 472,17543
+    Lisp_Cons 475,17632
+    Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+    Lisp_Misc_Free 487,18040
+    Lisp_Misc_Marker,488,18069
+    Lisp_Misc_Overlay,489,18091
+    Lisp_Misc_Save_Value,490,18114
+    Lisp_Misc_Finalizer,491,18140
+    Lisp_Misc_Float,494,18275
+    Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+    Lisp_Fwd_Int,504,18566
+    Lisp_Fwd_Bool,505,18619
+    Lisp_Fwd_Obj,506,18670
+    Lisp_Fwd_Buffer_Obj,507,18729
+    Lisp_Fwd_Kboard_Obj        508,18800
+typedef struct { EMACS_INT i;567,21781
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+INLINE bool BOOL_VECTOR_P 588,22350
+INLINE bool BUFFER_OBJFWDP 589,22391
+INLINE bool BUFFERP 590,22438
+INLINE bool CHAR_TABLE_P 591,22473
+INLINE Lisp_Object CHAR_TABLE_REF_ASCII 592,22513
+INLINE bool 593,22579
+INLINE bool 594,22614
+INLINE bool functionp 595,22650
+INLINE bool 596,22687
+INLINE bool 597,22725
+INLINE bool 598,22762
+INLINE bool 599,22797
+INLINE bool OVERLAYP 600,22831
+INLINE bool PROCESSP 601,22867
+INLINE bool PSEUDOVECTORP 602,22903
+INLINE bool SAVE_VALUEP 603,22949
+INLINE bool FINALIZERP 604,22988
+INLINE void set_sub_char_table_contents 605,23026
+INLINE bool STRINGP 607,23116
+INLINE bool SUB_CHAR_TABLE_P 608,23151
+INLINE bool SUBRP 609,23195
+INLINE bool 610,23228
+INLINE bool 611,23265
+INLINE bool WINDOWP 612,23306
+INLINE bool TERMINALP 613,23341
+INLINE struct Lisp_Save_Value *XSAVE_VALUE XSAVE_VALUE614,23378
+INLINE struct Lisp_Finalizer *XFINALIZER XFINALIZER615,23436
+INLINE struct Lisp_Symbol *(XSYMBOL)616,23492
+INLINE void 617,23544
+extern Lisp_Object char_table_ref 620,23616
+extern void char_table_set 621,23670
+extern _Noreturn Lisp_Object wrong_type_argument 624,23757
+extern _Noreturn void wrong_choice 625,23834
+extern bool might_dump;628,23925
+extern bool initialized;631,24061
+extern double extract_float 634,24117
+enum symbol_interned639,24199
+  SYMBOL_UNINTERNED 641,24222
+  SYMBOL_INTERNED 642,24247
+  SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+  SYMBOL_PLAINVAL 648,24338
+  SYMBOL_VARALIAS 649,24362
+  SYMBOL_LOCALIZED 650,24386
+  SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+  bool_bf gcmarkbit 656,24458
+  ENUM_BF 663,24793
+    Lisp_Object value;687,25631
+    struct Lisp_Symbol *alias;alias688,25654
+    struct Lisp_Buffer_Local_Value *blv;blv689,25685
+    union Lisp_Fwd *fwd;fwd690,25726
+  } val;691,25751
+  Lisp_Object function;694,25823
+  Lisp_Object plist;697,25885
+  struct Lisp_Symbol *next;next700,25974
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY        712,26446
+#define DEFUN_ARGS_UNEVALLED   713,26498
+#define DEFUN_ARGS_0   714,26541
+#define DEFUN_ARGS_1   715,26569
+#define DEFUN_ARGS_2   716,26604
+#define DEFUN_ARGS_3   717,26652
+#define DEFUN_ARGS_4   718,26713
+#define DEFUN_ARGS_5   719,26787
+#define DEFUN_ARGS_6   721,26880
+#define DEFUN_ARGS_7   723,26986
+#define DEFUN_ARGS_8   725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+  PVEC_NORMAL_VECTOR,782,29585
+  PVEC_FREE,783,29607
+  PVEC_PROCESS,784,29620
+  PVEC_FRAME,785,29636
+  PVEC_WINDOW,786,29650
+  PVEC_BOOL_VECTOR,787,29665
+  PVEC_BUFFER,788,29685
+  PVEC_HASH_TABLE,789,29700
+  PVEC_TERMINAL,790,29719
+  PVEC_WINDOW_CONFIGURATION,791,29736
+  PVEC_SUBR,792,29765
+  PVEC_OTHER,793,29778
+  PVEC_COMPILED,795,29856
+  PVEC_CHAR_TABLE,796,29873
+  PVEC_SUB_CHAR_TABLE,797,29892
+  PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+    PSEUDOVECTOR_SIZE_BITS 808,30382
+    PSEUDOVECTOR_SIZE_MASK 809,30415
+    PSEUDOVECTOR_REST_BITS 813,30625
+    PSEUDOVECTOR_REST_MASK 814,30658
+    PSEUDOVECTOR_AREA_BITS 818,30823
+    PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+      Lisp_Object cdr;1159,40162
+      struct Lisp_Cons *chain;chain1162,40236
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+extern ptrdiff_t string_bytes 1313,44337
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+    ptrdiff_t size;1364,46383
+struct Lisp_Vector1369,46482
+    struct vectorlike_header header;1371,46505
+    Lisp_Object contents[contents1372,46542
+    ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+    struct vectorlike_header header;1388,47012
+    EMACS_INT size;1390,47086
+    bits_word data[data1395,47319
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+    header_size 1471,49047
+    bool_header_size 1472,49106
+    word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+    CHARTAB_SIZE_BITS_0 1567,52516
+    CHARTAB_SIZE_BITS_1 1568,52545
+    CHARTAB_SIZE_BITS_2 1569,52574
+    CHARTAB_SIZE_BITS_3 1570,52603
+extern const int chartab_size[chartab_size1573,52637
+struct Lisp_Char_Table1575,52672
+    struct vectorlike_header header;1581,52928
+    Lisp_Object defalt;1585,53078
+    Lisp_Object parent;1590,53280
+    Lisp_Object purpose;1594,53398
+    Lisp_Object ascii;1598,53564
+    Lisp_Object contents[contents1600,53588
+    Lisp_Object extras[extras1603,53699
+struct Lisp_Sub_Char_Table1606,53752
+    struct vectorlike_header header;1610,53918
+    int depth;1618,54341
+    int min_char;1621,54417
+    Lisp_Object contents[contents1624,54492
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+    struct vectorlike_header header;1672,55807
+      Lisp_Object (*a0)a01674,55856
+      Lisp_Object (*a1)a11675,55888
+      Lisp_Object (*a2)a21676,55927
+      Lisp_Object (*a3)a31677,55979
+      Lisp_Object (*a4)a41678,56044
+      Lisp_Object (*a5)a51679,56122
+      Lisp_Object (*a6)a61680,56213
+      Lisp_Object (*a7)a71681,56317
+      Lisp_Object (*a8)a81682,56434
+      Lisp_Object (*aUNEVALLED)aUNEVALLED1683,56564
+      Lisp_Object (*aMANY)aMANY1684,56616
+    } function;1685,56671
+    short min_args,1686,56687
+    short min_args, max_args;1686,56687
+    const char *symbol_name;symbol_name1687,56717
+    const char *intspec;intspec1688,56746
+    const char *doc;doc1689,56771
+enum char_table_specials1692,56798
+    CHAR_TABLE_STANDARD_SLOTS 1697,56993
+    SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+verify 1714,57596
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+  Lisp_Object name;1808,60139
+  Lisp_Object user_hash_function;1811,60206
+  Lisp_Object user_cmp_function;1814,60297
+  bool (*cmpfn)cmpfn1817,60372
+  EMACS_UINT (*hashfn)hashfn1820,60486
+struct Lisp_Hash_Table1823,60555
+  struct vectorlike_header header;1826,60649
+  Lisp_Object weak;1830,60783
+  Lisp_Object rehash_size;1835,61007
+  Lisp_Object rehash_threshold;1839,61129
+  Lisp_Object hash;1843,61260
+  Lisp_Object next;1848,61490
+  Lisp_Object next_free;1851,61560
+  Lisp_Object index;1856,61771
+  ptrdiff_t count;1863,62041
+  Lisp_Object key_and_value;1868,62240
+  struct hash_table_test test;1871,62314
+  struct Lisp_Hash_Table *next_weak;next_weak1875,62457
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any   1971,64806
+  ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+  ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+    ENUM_BF 2034,67346
+    SAVE_UNUSED,2047,67641
+    SAVE_INTEGER,2048,67658
+    SAVE_FUNCPOINTER,2049,67676
+    SAVE_POINTER,2050,67698
+    SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+    SAVE_TYPE_INT_INT 2066,68096
+    SAVE_TYPE_INT_INT_INT2067,68169
+    SAVE_TYPE_OBJ_OBJ 2069,68259
+    SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+    SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+    SAVE_TYPE_PTR_INT 2073,68506
+    SAVE_TYPE_PTR_OBJ 2074,68579
+    SAVE_TYPE_PTR_PTR 2075,68651
+    SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+    SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+    ENUM_BF 2112,69900
+      void *pointer;pointer2125,70555
+      voidfuncptr funcpointer;2126,70576
+      ptrdiff_t integer;2127,70607
+      Lisp_Object object;2128,70632
+    } data[data2129,70658
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+    struct Lisp_Misc_Any base;2188,72132
+    struct Lisp_Finalizer *prev;prev2191,72220
+    struct Lisp_Finalizer *next;next2192,72253
+    Lisp_Object function;2197,72490
+struct Lisp_Free2201,72581
+    ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+    struct Lisp_Misc_Any u_any;2214,72902
+    struct Lisp_Free u_free;2215,72973
+    struct Lisp_Marker u_marker;2216,73002
+    struct Lisp_Overlay u_overlay;2217,73035
+    struct Lisp_Save_Value u_save_value;2218,73070
+    struct Lisp_Finalizer u_finalizer;2219,73111
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+    enum Lisp_Fwd_Type type;2276,74140
+    EMACS_INT *intvar;intvar2277,74190
+struct Lisp_Boolfwd2284,74411
+    enum Lisp_Fwd_Type type;2286,74435
+    bool *boolvar;boolvar2287,74486
+struct Lisp_Objfwd2294,74702
+    enum Lisp_Fwd_Type type;2296,74725
+    Lisp_Object *objvar;objvar2297,74775
+struct Lisp_Buffer_Objfwd2302,74934
+    enum Lisp_Fwd_Type type;2304,74964
+    int offset;2305,75021
+    Lisp_Object predicate;2307,75113
+struct Lisp_Buffer_Local_Value2334,76470
+    bool_bf local_if_set 2338,76615
+    bool_bf frame_local 2341,76797
+    bool_bf found 2344,76939
+    union Lisp_Fwd *fwd;fwd2346,77041
+    Lisp_Object where;2348,77184
+    Lisp_Object defcell;2351,77310
+    Lisp_Object valcell;2357,77614
+struct Lisp_Kboard_Objfwd2362,77729
+    enum Lisp_Fwd_Type type;2364,77759
+    int offset;2365,77816
+union Lisp_Fwd2368,77838
+    struct Lisp_Intfwd u_intfwd;2370,77857
+    struct Lisp_Boolfwd u_boolfwd;2371,77890
+    struct Lisp_Objfwd u_objfwd;2372,77925
+    struct Lisp_Buffer_Objfwd u_buffer_objfwd;2373,77958
+    struct Lisp_Kboard_Objfwd u_kboard_objfwd;2374,78005
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+      double data;2395,78354
+      struct Lisp_Float *chain;chain2396,78373
+    } u;2397,78405
+XFLOAT_DATA 2401,78434
+    IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+    COMPILED_ARGLIST 2431,79389
+    COMPILED_BYTECODE 2432,79415
+    COMPILED_CONSTANTS 2433,79442
+    COMPILED_STACK_DEPTH 2434,79470
+    COMPILED_DOC_STRING 2435,79500
+    COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+    CHAR_ALT 2445,79850
+    CHAR_SUPER 2446,79876
+    CHAR_HYPER 2447,79904
+    CHAR_SHIFT 2448,79932
+    CHAR_CTL 2449,79960
+    CHAR_META 2450,79986
+    CHAR_MODIFIER_MASK 2452,80014
+    CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+extern void defsubr 2829,89358
+enum maxargs2831,89401
+    MANY 2833,89418
+    UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+extern void defvar_lisp 2846,89959
+extern void defvar_lisp_nopro 2847,90036
+extern void defvar_bool 2848,90119
+extern void defvar_int 2849,90190
+extern void defvar_kboard 2850,90264
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+  SPECPDL_UNWIND,2944,93822
+  SPECPDL_UNWIND_PTR,2945,93891
+  SPECPDL_UNWIND_INT,2946,93942
+  SPECPDL_UNWIND_VOID,2947,93990
+  SPECPDL_BACKTRACE,2948,94044
+  SPECPDL_LET,2949,94102
+  SPECPDL_LET_LOCAL,2951,94232
+  SPECPDL_LET_DEFAULT  2952,94289
+union specbinding2955,94361
+    ENUM_BF 2957,94383
+      ENUM_BF 2959,94440
+      ENUM_BF 2964,94570
+      ENUM_BF 2969,94693
+      ENUM_BF 2974,94811
+      ENUM_BF 2978,94916
+      ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+  enum handlertype type;3025,96471
+  Lisp_Object tag_or_ch;3026,96496
+  Lisp_Object val;3027,96521
+  struct handler *next;next3028,96540
+  struct handler *nextfree;nextfree3029,96564
+  Lisp_Object *bytecode_top;bytecode_top3036,96922
+  int bytecode_dest;3037,96951
+  struct gcpro *gcpro;gcpro3042,97188
+  sys_jmp_buf jmp;3044,97218
+  EMACS_INT lisp_eval_depth;3045,97237
+  ptrdiff_t pdlcount;3046,97266
+  int poll_suppress_count;3047,97288
+  int interrupt_input_blocked;3048,97315
+  struct byte_stack *byte_stack;byte_stack3049,97346
+#define PUSH_HANDLER(3053,97443
+extern Lisp_Object memory_signal_data;3075,98149
+extern char *stack_bottom;stack_bottom3079,98282
+extern void process_pending_signals 3097,99099
+extern bool volatile pending_signals;3098,99143
+extern void process_quit_flag 3100,99182
+#define QUIT   3101,99220
+#define QUITP 3112,99470
+extern Lisp_Object Vascii_downcase_table;3114,99531
+extern Lisp_Object Vascii_canon_table;3115,99573
+extern struct gcpro *gcprolist;gcprolist3130,100280
+struct gcpro3132,100313
+  struct gcpro *next;next3134,100328
+  volatile Lisp_Object *var;var3137,100397
+  ptrdiff_t nvars;3140,100479
+  const char *name;name3144,100564
+  int lineno;3147,100620
+  int idx;3150,100681
+  int level;3153,100717
+#define GC_USE_GCPROS_AS_BEFORE        3171,101294
+#define GC_MAKE_GCPROS_NOOPS   3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS     3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES    3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+extern int gcpro_level;3261,105037
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO        3353,109913
+#define RETURN_UNGCPRO(3363,110180
+void staticpro 3375,110453
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+extern Lisp_Object indirect_function 3495,113196
+extern Lisp_Object find_symbol_value 3496,113248
+enum Arith_Comparison 3497,113300
+  ARITH_EQUAL,3498,113324
+  ARITH_NOTEQUAL,3499,113339
+  ARITH_LESS,3500,113357
+  ARITH_GRTR,3501,113371
+  ARITH_LESS_OR_EQUAL,3502,113385
+  ARITH_GRTR_OR_EQUAL3503,113408
+extern Lisp_Object arithcompare 3505,113433
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+extern intmax_t cons_to_signed 3533,114837
+extern uintmax_t cons_to_unsigned 3534,114903
+extern struct Lisp_Symbol *indirect_variable indirect_variable3536,114964
+extern _Noreturn void args_out_of_range 3537,115033
+extern _Noreturn void args_out_of_range_3 3538,115101
+extern Lisp_Object do_symval_forwarding 3540,115192
+extern void set_internal 3541,115252
+extern void syms_of_data 3542,115324
+extern void swap_in_global_binding 3543,115357
+extern void syms_of_cmds 3546,115441
+extern void keys_of_cmds 3547,115474
+extern Lisp_Object detect_coding_system 3550,115536
+extern void init_coding 3552,115689
+extern void init_coding_once 3553,115721
+extern void syms_of_coding 3554,115758
+extern ptrdiff_t chars_in_text 3557,115825
+extern ptrdiff_t multibyte_chars_in_text 3558,115892
+extern void syms_of_character 3559,115969
+extern void init_charset 3562,116037
+extern void init_charset_once 3563,116070
+extern void syms_of_charset 3564,116108
+extern void init_syntax_once 3569,116228
+extern void syms_of_syntax 3570,116265
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+extern Lisp_Object listn 3740,123863
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_uninit_bool_vector 3763,124407
+extern Lisp_Object bool_vector_fill 3764,124463
+extern _Noreturn void string_overflow 3765,124527
+extern Lisp_Object make_string 3766,124573
+extern Lisp_Object make_formatted_string 3767,124631
+extern Lisp_Object make_multibyte_string 3779,124985
+extern Lisp_Object make_event_array 3780,125064
+extern Lisp_Object make_uninit_string 3781,125128
+extern Lisp_Object make_uninit_multibyte_string 3782,125179
+extern Lisp_Object make_string_from_bytes 3783,125251
+extern Lisp_Object make_specified_string 3784,125331
+extern Lisp_Object make_pure_string 3786,125423
+extern Lisp_Object make_pure_c_string 3787,125503
+build_pure_c_string 3792,125659
+build_string 3801,125864
+extern Lisp_Object pure_cons 3806,125942
+extern void make_byte_code 3807,125999
+extern struct Lisp_Vector *allocate_vector allocate_vector3808,126050
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+extern struct Lisp_Vector *allocate_pseudovector 
allocate_pseudovector3844,126963
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+extern bool gc_in_progress;3863,127735
+extern bool abort_on_gc;3864,127763
+extern Lisp_Object make_float 3865,127788
+extern void display_malloc_warning 3866,127828
+extern ptrdiff_t inhibit_garbage_collection 3867,127871
+extern Lisp_Object make_save_int_int_int 3868,127923
+extern Lisp_Object make_save_obj_obj_obj_obj 3869,127999
+extern Lisp_Object make_save_ptr 3871,128109
+extern Lisp_Object make_save_ptr_int 3872,128152
+extern Lisp_Object make_save_ptr_ptr 3873,128210
+extern Lisp_Object make_save_funcptr_ptr_obj 3874,128265
+extern Lisp_Object make_save_memory 3876,128361
+extern void free_save_value 3877,128425
+extern Lisp_Object build_overlay 3878,128468
+extern void free_marker 3879,128542
+extern void free_cons 3880,128581
+extern void init_alloc_once 3881,128625
+extern void init_alloc 3882,128661
+extern void syms_of_alloc 3883,128692
+extern struct buffer * allocate_buffer 3884,128726
+extern int valid_lisp_object_p 3885,128773
+extern int relocatable_string_data_p 3886,128819
+extern void check_cons_list 3888,128898
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+extern int openp 3957,131673
+extern Lisp_Object string_to_number 3959,131783
+extern void map_obarray 3960,131846
+extern void dir_warning 3962,131960
+extern void init_obarray 3963,132013
+extern void init_lread 3964,132046
+extern void syms_of_lread 3965,132077
+intern 3968,132131
+intern_c_string 3974,132219
+extern EMACS_INT lisp_eval_depth;3980,132332
+extern Lisp_Object Vautoload_queue;3981,132366
+extern Lisp_Object Vrun_hooks;3982,132402
+extern Lisp_Object Vsignaling_function;3983,132433
+extern Lisp_Object inhibit_lisp_code;3984,132473
+extern struct handler *handlerlist;handlerlist3985,132511
+extern void run_hook 3994,132753
+extern void run_hook_with_args_2 3995,132789
+extern Lisp_Object run_hook_with_args 3996,132863
+extern _Noreturn void xsignal 3999,133022
+extern _Noreturn void xsignal0 4000,133080
+extern _Noreturn void xsignal1 4001,133126
+extern _Noreturn void xsignal2 4002,133185
+extern _Noreturn void xsignal3 4003,133257
+extern _Noreturn void signal_error 4005,133346
+extern Lisp_Object eval_sub 4006,133410
+extern Lisp_Object apply1 4007,133458
+extern Lisp_Object call0 4008,133512
+extern Lisp_Object call1 4009,133552
+extern Lisp_Object call2 4010,133605
+extern Lisp_Object call3 4011,133671
+extern Lisp_Object call4 4012,133750
+extern Lisp_Object call5 4013,133842
+extern Lisp_Object call6 4014,133947
+extern Lisp_Object call7 4015,134065
+extern Lisp_Object internal_catch 4016,134196
+extern Lisp_Object internal_lisp_condition_case 4017,134289
+extern Lisp_Object internal_condition_case 4018,134378
+extern Lisp_Object internal_condition_case_1 4019,134491
+extern Lisp_Object internal_condition_case_2 4020,134626
+extern Lisp_Object internal_condition_case_n4021,134787
+extern void specbind 4024,134983
+extern void record_unwind_protect 4025,135032
+extern void record_unwind_protect_ptr 4026,135105
+extern void record_unwind_protect_int 4027,135172
+extern void record_unwind_protect_void 4028,135233
+extern void record_unwind_protect_nothing 4029,135291
+extern void clear_unwind_protect 4030,135341
+extern void set_unwind_protect 4031,135387
+extern void set_unwind_protect_ptr 4032,135468
+extern Lisp_Object unbind_to 4033,135543
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+extern ptrdiff_t fast_c_string_match_ignore_case 4141,140236
+extern ptrdiff_t fast_looking_at 4143,140333
+extern ptrdiff_t find_newline 4145,140472
+extern ptrdiff_t scan_newline 4147,140601
+extern ptrdiff_t scan_newline_from_point 4149,140704
+extern ptrdiff_t find_newline_no_quit 4150,140784
+extern ptrdiff_t find_before_next_newline 4152,140881
+extern void syms_of_search 4154,140979
+extern void clear_regexp_cache 4155,141014
+extern Lisp_Object Vminibuffer_list;4159,141084
+extern Lisp_Object last_minibuf_string;4160,141121
+extern Lisp_Object get_minibuffer 4161,141161
+extern void init_minibuf_once 4162,141208
+extern void syms_of_minibuf 4163,141246
+extern void syms_of_callint 4167,141313
+extern void syms_of_casefiddle 4171,141383
+extern void keys_of_casefiddle 4172,141422
+extern void init_casetab_once 4176,141492
+extern void syms_of_casetab 4177,141530
+extern Lisp_Object echo_message_buffer;4181,141598
+extern struct kboard *echo_kboard;echo_kboard4182,141638
+extern void cancel_echoing 4183,141673
+extern Lisp_Object last_undo_boundary;4184,141708
+extern bool input_pending;4185,141747
+extern sigjmp_buf return_to_command_loop;4187,141810
+extern Lisp_Object menu_bar_items 4189,141859
+extern Lisp_Object tool_bar_items 4190,141908
+extern void discard_mouse_events 4191,141964
+void handle_input_available_signal 4193,142025
+extern Lisp_Object pending_funcalls;4195,142074
+extern bool detect_input_pending 4196,142111
+extern bool detect_input_pending_ignore_squeezables 4197,142152
+extern bool detect_input_pending_run_timers 4198,142212
+extern void safe_run_hooks 4199,142264
+extern void cmd_error_internal 4200,142306
+extern Lisp_Object command_loop_1 4201,142366
+extern Lisp_Object read_menu_command 4202,142408
+extern Lisp_Object recursive_edit_1 4203,142453
+extern void record_auto_save 4204,142497
+extern void force_auto_save_soon 4205,142534
+extern void init_keyboard 4206,142575
+extern void syms_of_keyboard 4207,142609
+extern void keys_of_keyboard 4208,142646
+extern ptrdiff_t current_column 4211,142712
+extern void invalidate_current_column 4212,142752
+extern bool indented_beyond_p 4213,142798
+extern void syms_of_indent 4214,142863
+extern void store_frame_param 4217,142926
+extern void store_in_alist 4218,143000
+extern Lisp_Object do_switch_frame 4219,143070
+extern Lisp_Object get_frame_param 4220,143143
+extern void frames_discard_buffer 4221,143209
+extern void syms_of_frame 4222,143258
+extern char **initial_argv;initial_argv4225,143320
+extern int initial_argc;4226,143348
+extern bool display_arg;4228,143423
+extern Lisp_Object decode_env_path 4230,143455
+extern Lisp_Object empty_unibyte_string,4231,143526
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;4231,143526
+extern _Noreturn void terminate_due_to_signal 4232,143591
+extern Lisp_Object Vlibrary_cache;4234,143666
+void fixup_locale 4237,143727
+void synchronize_system_messages_locale 4238,143753
+void synchronize_system_time_locale 4239,143801
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+extern void shut_down_emacs 4245,144003
+extern bool noninteractive;4248,144129
+extern bool no_site_lisp;4251,144221
+extern int daemon_pipe[daemon_pipe4256,144389
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+extern void *w32_daemon_event;w32_daemon_event4260,144524
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+extern bool fatal_error_in_progress;4266,144721
+extern bool inhibit_window_system;4269,144827
+extern bool running_asynch_code;4271,144920
+extern void kill_buffer_processes 4274,144983
+extern int wait_reading_process_output 4275,145032
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern void add_timer_wait_descriptor 4286,145555
+extern void add_keyboard_wait_descriptor 4288,145607
+extern void delete_keyboard_wait_descriptor 4289,145655
+extern void add_gpm_wait_descriptor 4291,145722
+extern void delete_gpm_wait_descriptor 4292,145765
+extern void init_process_emacs 4294,145818
+extern void syms_of_process 4295,145857
+extern void setup_process_coding_systems 4296,145893
+extern int child_setup 4302,146013
+extern void init_callproc_1 4303,146081
+extern void init_callproc 4304,146117
+extern void set_initial_environment 4305,146151
+extern void syms_of_callproc 4306,146195
+extern Lisp_Object read_doc_string 4309,146258
+extern Lisp_Object get_doc_string 4310,146308
+extern void syms_of_doc 4311,146369
+extern int read_bytecode_char 4312,146401
+extern void syms_of_bytecode 4315,146470
+extern struct byte_stack *byte_stack_list;byte_stack_list4316,146507
+extern void mark_byte_stack 4318,146570
+extern void unmark_byte_stack 4320,146613
+extern Lisp_Object exec_byte_code 4321,146651
+extern void init_macros 4325,146801
+extern void syms_of_macros 4326,146833
+extern void truncate_undo_list 4329,146895
+extern void record_insert 4330,146945
+extern void record_delete 4331,146995
+extern void record_first_change 4332,147053
+extern void record_change 4333,147093
+extern void record_property_change 4334,147143
+extern void syms_of_undo 4337,147285
+extern void report_interval_modification 4340,147349
+extern void syms_of_menu 4343,147445
+extern void syms_of_xmenu 4346,147506
+extern char *get_current_dir_name get_current_dir_name4356,147708
+extern void stuff_char 4358,147757
+extern void init_foreground_group 4359,147790
+extern void sys_subshell 4360,147832
+extern void sys_suspend 4361,147865
+extern void discard_tty_input 4362,147897
+extern void init_sys_modes 4363,147935
+extern void reset_sys_modes 4364,147991
+extern void init_all_sys_modes 4365,148048
+extern void reset_all_sys_modes 4366,148087
+extern void child_setup_tty 4367,148127
+extern void setup_pty 4368,148162
+extern int set_window_size 4369,148191
+extern EMACS_INT get_random 4370,148235
+extern void seed_random 4371,148271
+extern void init_random 4372,148316
+extern void emacs_backtrace 4373,148348
+extern _Noreturn void emacs_abort 4374,148383
+extern void xputenv 4527,152697
+extern char *egetenv_internal egetenv_internal4529,152734
+egetenv 4532,152806
+extern void init_system_name 4539,153009
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA        4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+  struct Lisp_Cons s;4672,157290
+  double d;4673,157312
+  double d; intmax_t i;4673,157312
+  double d; intmax_t i; void *p;p4673,157312
+union Aligned_String4676,157349
+  struct Lisp_String s;4678,157372
+  double d;4679,157396
+  double d; intmax_t i;4679,157396
+  double d; intmax_t i; void *p;p4679,157396
+    USE_STACK_CONS 4689,157704
+    USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+extern const char *verify_ascii verify_ascii4730,159453
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define        SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/fail.c,30
+void (*prt_call(prt_call1,0
+
+c-src/h.h,2506
+   ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+void Asm_labels 7,127
+typedef struct tpcmd8,147
+#define ggg 10,170
+  } arg;13,198
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+    fu   int (*funcptr)funcptr17,242
+    long foo;18,279
+    char bar;19,293
+} foobar2;20,307
+    DEVICE_SWP,23,333
+    DEVICE_LAST24,349
+} bsp_DevId;25,365
+  struct constant_args 27,394
+    unsigned int burst;28,419
+  } constant;29,443
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+  int def;35,523
+} ghi1;36,534
+typedef union abc 37,542
+  int def;38,562
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage 
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+               kind;46,733
+               is_explicit;49,812
+  a_byte_boolean is_curly_brace_form;54,1009
+} an_extern_linkage;56,1054
+typedef struct pollfd   pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+    int rtint;60,1149
+    char *rtstr;rtstr61,1164
+    struct rtx_def *rtx;rtx62,1181
+  } womboid 63,1206
+typedef union rtunion_def64,1220
+  int rtint;68,1250
+  char *rtstr;rtstr69,1263
+  struct rtx_def *rtxp;rtxp70,1278
+  struct rtx_def rtxnp;71,1302
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+  Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+extern void ab(102,1948
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int    (*oldhup)oldhup107,2014
+request (*oldhup)oldhup108,2031
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous      117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+struct re_pattern_buffer { unsigned char *buffer;buffer119,2277
+
+cp-src/c.C,3629
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+        ipc3dLinkControlSetup setup;CMultiChannelCSC19_3D::setup5,190
+        ipc3dCSC19<CMultiChannelCSC19_3D::ipc3dCSC196,227
+        
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl>
 mcCSC;CMultiChannelCSC19_3D::mcCSC6,227
+        advTimer cscInitTime;CMultiChannelCSC19_3D::cscInitTime7,388
+        advTimer 
cscSegmentationTime;CMultiChannelCSC19_3D::cscSegmentationTime8,418
+        advTimer outputTime;CMultiChannelCSC19_3D::outputTime9,456
+        void execute(CMultiChannelCSC19_3D::execute11,493
+static void my_function1(24,984
+int main 25,1026
+double base 26,1088
+operator += operator +=29,1174
+class TestRecord;31,1233
+typedef struct s1 32,1251
+   int counter;s1::counter33,1271
+} t1;34,1287
+struct s2 35,1293
+   int counter;s2::counter36,1305
+typedef struct s2 t2;38,1324
+class A 39,1346
+  enum { rosso,A::rosso40,1356
+  enum { rosso, giallo,A::giallo40,1356
+  enum { rosso, giallo, verde A::verde40,1356
+  enum { rosso, giallo, verde } colori;A::colori40,1356
+  const A& operator+(A::operator+41,1396
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+template <class C, int n> class AT { C t[AT::t52,1668
+class AU 53,1716
+class AU { T x;AU::x53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A { class B { int f(A::B::f56,1791
+class A 57,1826
+  int get_data(A::get_data58,1836
+  A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+     void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct A { A(A::A73,2004
+struct B 74,2022
+struct B { B(B::B74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+  int x;foo::x80,2115
+class test 86,2156
+  int f(test::f87,2169
+  int ff(test::ff89,2231
+  int g(test::g90,2254
+class  AST_Root 92,2278
+class  AST_Root;96,2327
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+     void f(::f115,2733
+struct A 117,2753
+    ~A(A::~A118,2764
+A::~A(120,2777
+struct B 122,2789
+    ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;::teats127,2842
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+    enum {dog,Boo::dog130,2880
+    enum {dog, cat}Boo::cat130,2880
+    enum {dog, cat} animals;Boo::animals130,2880
+    struct {int treats;Boo::treats131,2909
+    struct {int treats;} cow;Boo::cow131,2909
+    int i,Boo::i132,2939
+    int i,a,Boo::a132,2939
+    int i,a,b;Boo::b132,2939
+    foo(Boo::foo133,2954
+    Boo(Boo::Boo137,2995
+    Boo(Boo::Boo138,3052
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int 
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,1538
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2;45,1087
+operator += operator +=48,1145
+operator -= operator -=51,1242
+operator * operator *54,1339
+operator / operator /57,1428
+operator * operator *60,1517
+operator + operator +63,1605
+operator - operator -66,1707
+product 69,1808
+operator - operator -72,1907
+class MDiagArray2 78,2022
+  MDiagArray2 MDiagArray2::MDiagArray282,2077
+  MDiagArray2 MDiagArray2::MDiagArray286,2154
+  MDiagArray2 MDiagArray2::MDiagArray287,2198
+  MDiagArray2 MDiagArray2::MDiagArray288,2254
+  MDiagArray2 MDiagArray2::MDiagArray289,2329
+  MDiagArray2 MDiagArray2::MDiagArray290,2387
+  MDiagArray2 MDiagArray2::MDiagArray291,2450
+  ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+  MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+      DiagArray2<T>::operator = MDiagArray2::operator =97,2603
+  operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+  operator += MDiagArray2::operator +=116,2966
+  operator -= MDiagArray2::operator -=119,3057
+  friend MDiagArray2<T> operator * MDiagArray2::operator *123,3174
+  friend MDiagArray2<T> operator / MDiagArray2::operator /124,3253
+  friend MDiagArray2<T> operator * MDiagArray2::operator *128,3384
+  operator + MDiagArray2::operator +133,3544
+  operator - MDiagArray2::operator -136,3640
+  friend MDiagArray2<T> operator - MDiagArray2::operator -141,3803
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Range.h,1136
+#define octave_Range_h 24,765
+class istream;30,840
+class ostream;31,855
+class Matrix;32,870
+Range35,891
+  Range Range::Range39,909
+  Range Range::Range42,995
+  Range Range::Range46,1130
+  Range Range::Range50,1248
+  double base Range::base54,1376
+  double limit Range::limit55,1425
+  double inc Range::inc56,1475
+  int nelem Range::nelem57,1523
+  bool all_elements_are_ints Range::all_elements_are_ints59,1571
+  Matrix matrix_value Range::matrix_value61,1615
+  double min Range::min63,1652
+  double max Range::max64,1679
+  void sort Range::sort66,1707
+  void set_base Range::set_base68,1728
+  void set_limit Range::set_limit69,1774
+  void set_inc Range::set_inc70,1821
+  friend ostream& operator << Range::operator <<72,1867
+  friend istream& operator >> Range::operator >>73,1928
+  void print_range Range::print_range75,1984
+  double rng_base;Range::rng_base79,2023
+  double rng_limit;Range::rng_limit80,2042
+  double rng_inc;Range::rng_inc81,2062
+  int rng_nelem;Range::rng_nelem83,2081
+  int nelem_internal Range::nelem_internal85,2099
+extern Range operator - operator -88,2138
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,791
+#define __COLORS9,401
+enum COLORS 11,419
+    BLACK,COLORS::BLACK12,433
+    BLUE,COLORS::BLUE13,471
+    GREEN,COLORS::GREEN14,481
+    CYAN,COLORS::CYAN15,492
+    RED,COLORS::RED16,502
+    MAGENTA,COLORS::MAGENTA17,511
+    BROWN,COLORS::BROWN18,524
+    LIGHTGRAY,COLORS::LIGHTGRAY19,535
+    DARKGRAY,COLORS::DARKGRAY20,550
+    LIGHTBLUE,COLORS::LIGHTBLUE21,589
+    LIGHTGREEN,COLORS::LIGHTGREEN22,604
+    LIGHTCYAN,COLORS::LIGHTCYAN23,620
+    LIGHTRED,COLORS::LIGHTRED24,635
+    LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+    YELLOW,COLORS::YELLOW26,667
+    WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+void goto_xy(35,835
+void hide_cursor(36,883
+void cursor_position(37,907
+void clear_screen(38,935
+void write_xyc(39,960
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,483
+class site:site5,235
+    char x,site::x7,269
+    char x, y,site::y7,269
+    char x, y, alive,site::alive7,269
+    char x, y, alive, next_alive;site::next_alive7,269
+    int total_surrounding(site::total_surrounding8,303
+    site(site::site10,344
+    ~site(site::~site11,397
+    char read(site::read12,410
+    void set(site::set13,444
+    void clear(site::clear14,478
+    void compute_next_state(site::compute_next_state15,514
+    void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,1600
+extern void init_registry(10,452
+extern void step_everybody(11,485
+class generic_object13,520
+    int where_in_registry;generic_object::where_in_registry15,547
+    generic_object(generic_object::generic_object17,582
+    ~generic_object(generic_object::~generic_object19,724
+    virtual void compute_next_state(generic_object::compute_next_state21,842
+    virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+    location(location::location43,1642
+    ~location(location::~location44,1661
+class irregular_location:irregular_location47,1686
+    double x,irregular_location::x49,1734
+    double x, y,irregular_location::y49,1734
+    double x, y, z;irregular_location::z49,1734
+    irregular_location(irregular_location::irregular_location51,1762
+    ~irregular_location(irregular_location::~irregular_location53,1854
+class discrete_location:discrete_location56,1889
+    int x,discrete_location::x58,1936
+    int x, y,discrete_location::y58,1936
+    int x, y, z;discrete_location::z58,1936
+    class location *neighbors[discrete_location::neighbors59,1953
+    void clear_neighbors(discrete_location::clear_neighbors60,2004
+    discrete_location(discrete_location::discrete_location62,2044
+    ~discrete_location(discrete_location::~discrete_location65,2154
+    void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+    location *where;agent::where77,2549
+    agent(agent::agent79,2578
+    ~agent(agent::~agent80,2591
+    void move(agent::move81,2605
+
+cp-src/fail.C,438
+struct A 7,263
+          struct B A::B8,274
+                  struct C A::B::C9,289
+                          int x;A::B::C::x10,305
+                          C(A::B::C::C11,318
+                          operator int(A::B::C::operator int12,342
+                  typedef C T;A::B::T14,389
+          typedef B T2;A::T216,414
+class String;20,437
+class A 23,453
+       class B A::B24,463
+               class C A::B::C25,474
+               int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+       class D 41,622
+               D(D::D43,659
+               int x;D::x44,694
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5188
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias 
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defvar etags-case-fold-search)855,33906
+(defvar etags-syntax-table)856,33938
+(defvar local-find-tag-hook)857,33966
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+f-src/entry.for,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+      LOGICAL FUNCTION PRTPKG 3,75
+       ENTRY  SETPRT 194,3866
+       ENTRY  MSGSEL 395,8478
+     & intensity1(577,12231
+       character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+       ENTRY  MSGSEL 193,4382
+     & intensity1(375,8135
+       character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+   9   field   >field136,582
+   5   field   >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+&nbsp;8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the 
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and 
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or 
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1156
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+       @-$($72,3064
+       @-$($73,3113
+       @-$($74,3177
+       @-$($75,3223
+       @-$($76,3291
+       @-$($77,3383
+       @$(81,3466
+       @$(82,3514
+       @$(83,3577
+       @$(84,3622
+       @$(85,3689
+       @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+       @env CHECKEROPTS=92,3922
+       @$(98,4094
+       @$(106,4250
+       @$(110,4374
+       @$(114,4500
+       @for i in $(140,5315
+       @for i in $(SRCS); do echo $$i;140,5315
+       $(160,6053
+       $(163,6114
+       $(166,6177
+       $(169,6228
+       $(172,6317
+       sdiff --suppress-common-lines --width=width186,6614
+       sdiff --suppress-common-lines --width=width189,6703
+       sdiff --suppress-common-lines --width=width192,6791
+       sdiff --suppress-common-lines --width=width195,6880
+       TEXTAGS=204,7122
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7122
+       ${RUN} etags12 --members -o $@ --regex=regex207,7239
+       ${RUN} ./ctags -o $@ --regex=regex213,7388
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+       TEXTAGS=219,7583
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7583
+       ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,505
+#define        PTY_TEMPLATE 20,494
+#define        PTY_LENGTH 21,528
+static void showError(23,551
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+    andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS       36,1101
+#define TYPESTOSTAT    37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION        34,1116
+#   define DEBUG 37,1155
+#define LISTCONTENTS   39,1181
+#define OPENBUTTON     47,1352
+#define LISTCONTENTSBUTTON     48,1449
+#define LISTDESCRIPTIONBUTTON  49,1562
+#define STATE_UNINSTALLED      52,1687
+#define STATE_INSTALLED        53,1807
+#define STATE_COMPRESSD        54,1948
+#define SIZEFORMAT     57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type 
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING        368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2864
+  define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+  define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+  define("LCE_WS"LCE_WS11,194
+  define("LCE_COMMENT"LCE_COMMENT13,244
+  define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+  define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+  define("LCE_MSGID"LCE_MSGID19,430
+  define("LCE_MSGSTR"LCE_MSGSTR21,488
+  define("LCE_TEXT"LCE_TEXT23,541
+  define("STATE_ABORT"STATE_ABORT25,567
+  define("STATE_OK"STATE_OK26,595
+  define("STATE_LOOP"STATE_LOOP27,620
+  class POEntryAD 29,648
+      function validate(31,683
+      function checkQuotation(59,1384
+  class CommentAD 70,1639
+      var $prefix;72,1674
+      function CommentAD(73,1693
+      function validate(83,1944
+  class POEntry 105,2410
+      var $msgid;107,2454
+      var $msgstr;108,2472
+      var $user_comment;109,2491
+      var $sys_comment;110,2516
+      var $unk_comment;111,2540
+      var $msgid_lc 113,2565
+      var $msgstr_lc 114,2590
+      var $user_comment_lc 115,2616
+      var $sys_comment_lc 116,2648
+      var $unk_comment_lc 117,2679
+      function POEntry(119,2711
+      function lineCount(135,3255
+      function serializeToVars(141,3365
+      function write(151,3800
+  class POReader 163,4178
+      var $msgid;165,4223
+      var $msgstr;166,4241
+      var $user_comment;167,4260
+      var $sys_comment;168,4285
+      var $unk_comment;169,4309
+      var $state;170,4333
+      var $ignore_ws;171,4351
+      var $po_entries;172,4373
+      var $poe_num;173,4396
+      var $filename;174,4416
+      var $domain;175,4437
+      function gettext(177,4457
+      function parseFromVars(189,4705
+      function serializeToVars(215,5331
+      function POReader(229,5613
+      function read(243,5983
+      function write(259,6307
+      function isComment(277,6645
+      function comment(284,6822
+      function msgid(304,7247
+      function msgstr(320,7574
+      function start(340,8232
+      function createPOEntries(360,8644
+      function stripLine(394,9472
+      function printClassification(421,10056
+      function classifyLine(432,10301
+  function getTextDomains(471,11094
+  class PORManager 498,11756
+      var      $por_a;500,11803
+      function PORManager(502,11822
+      function addPOReader(507,11896
+      function &getPOReader(getPOReader512,11992
+      function getDomainNames(517,12081
+  function &loadPORManager(loadPORManager523,12174
+  function fileJoin(536,12436
+      function lce_bindtextdomain(557,12839
+      function lce_textdomain(614,14530
+      function lce_gettext(620,14641
+      function lce_dgettext(626,14767
+      function lce(634,14966
+      function lce_bindtextdomain(651,15488
+      function lce_textdomain(656,15592
+      function lce_gettext(661,15674
+      function lce_dgettext(666,15755
+      function lce(670,15855
+  function lce_geteditcode(676,15898
+
+php-src/ptest.php,135
+define("TEST"TEST1,0
+test 4,26
+       var $member;8,71
+       var $memassign=9,85
+       var $memassign_space 10,110
+       var $test12,176
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+         my $entry entry218,5621
+         my $entry entry234,6077
+             my $entry entry245,6351
+         my $entry entry252,6536
+         my $entry entry268,7010
+             my $entry entry276,7204
+         my $entry entry281,7328
+      my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+  my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+       local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+       local($prog,$_,@list)($prog,$_,@list39,868
+       
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+    def __init__(18,374
+    def __repr__(24,590
+    def __str__(34,871
+class Server:Server37,934
+    def __init__(38,948
+    def dump(73,2198
+    def __repr__(125,3896
+    def __str__(128,3945
+class User:User131,4014
+    def __init__(132,4026
+    def __repr__(172,5445
+    def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+    def bind(234,7525
+    def focus_set(236,7584
+    def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+    def __init__(269,8808
+    def handleList(303,10042
+    def handleNew(306,10094
+    def editItem(314,10426
+    def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+    def PostControls(376,12403
+    def GatherControls(421,13530
+class ServerEdit(512,16264
+    def __init__(513,16289
+    def post(525,16629
+    def gather(543,17191
+    def nosave(547,17304
+    def save(551,17408
+    def refreshPort(556,17509
+    def createWidgets(561,17663
+    def edituser(631,20708
+class UserEdit(645,20921
+    def __init__(646,20944
+    def post(658,21283
+    def gather(676,21841
+    def nosave(680,21950
+    def save(684,22052
+    def createWidgets(689,22151
+class Configure(760,24879
+    def __init__(761,24916
+    def MakeDispose(772,25211
+    def MakeSitelist(786,25706
+    def editsite(794,25949
+    def save(797,26022
+    def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+  \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+   \def\subtitlefont{\subtitlefont765,24968
+   \def\authorfont{\authorfont767,25052
+   \def\title{\title773,25262
+   \def\titlezzz##1{\titlezzz774,25297
+   \def\subtitle{\subtitle782,25612
+   \def\subtitlezzz##1{\subtitlezzz783,25653
+   \def\author{\author786,25771
+   \def\authorzzz##1{\authorzzz787,25808
+   \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+  \def\thearg{\thearg1145,37720
+  \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0  %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this 
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+  \def\indexbackslash{\indexbackslash1480,48406
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+  \null\nobreak\indexdotfill % Have leaders before the page 
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+  \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+  address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+  address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+     address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno  \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter: 
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+  {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+  {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+  {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+   \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+      \def\secentry ##1##2##3##4{\secentry2066,68220
+      \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+      \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+      \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+      \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+      \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+    {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for 
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by 
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno 
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno 
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno 
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+  \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,2136
+void (*fa)fa131,
+void 132,
+my_printf 135,
+void fatala 138,
+void fatalb 139,
+max 141,
+struct bar 143,
+  char z;144,
+  struct foo f;145,
+__attribute__ ((always_inline)) max 147,
+extern int old_var 149,
+struct foo150,
+  char a;152,
+  int x[x153,
+char stack[stack155,
+struct S 156,
+struct S { short f[f156,
+  int *__ip;__ip159,
+  union wait *__up;__up160,
+} wait_status_ptr_t 161,
+Some_Class  A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S  __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+  U16 next;174,
+  U16 prev;175,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+  int x;179,
+  char a,180,
+  char a, b,180,
+  char a, b, c,180,
+  char a, b, c, d;180,
+     f1 183,
+void f2 184,
+__attribute__((noreturn)) void d0 185,
+  __attribute__((format(printf, 1, 2))) d1 186,
+  d2 187,
+int x 188,
+struct foo 189,
+struct foo { int x[x189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal", 
Fx_get_selection_internal,x-get-selection-internal206,
+       Fx_get_selection_internal,x-get-selection-internal212,
+      Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+  aaa;249,
+  bbb;251,
+struct sss1 252,
+struct sss2253,
+  struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+  **b;b262,
+caccacacca 263,
+a 267,
+  typedef struct aa 269,
+  typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+  typedef  int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,1061
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+int yylex 57,1317
+void yyerror 59,1347
+void yyerror 61,1376
+VOIDSTAR parse_hash;63,1400
+extern VOIDSTAR hash_find(64,1421
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+YYSTYPE make_list 75,1716
+YYSTYPE make_list 77,1760
+char *instr;instr80,1790
+int parse_error 81,1803
+extern struct obstack tmp_mem;82,1824
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+extern struct node *yylval;yylval305,6233
+unsigned char parse_cell_or_range 308,6278
+unsigned char parse_cell_or_range 310,6342
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define       NE      6,114
+# define       LE      7,130
+# define       GE      8,146
+# define       NEG     9,162
+# define       L_CELL  10,179
+# define       L_RANGE 11,199
+# define       L_VAR   12,220
+# define       L_CONST 13,239
+# define       L_FN0   14,260
+# define       L_FN1   15,279
+# define       L_FN2   16,298
+# define       L_FN3   17,317
+# define       L_FN4   18,336
+# define       L_FNN   19,355
+# define       L_FN1R  20,374
+# define       L_FN2R  21,394
+# define       L_FN3R  22,414
+# define       L_FN4R  23,434
+# define       L_FNNR  24,454
+# define       L_LE    25,474
+# define       L_NE    26,492
+# define       L_GE    27,510
+
+parse.y,1464
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+int yylex 57,
+void yyerror 59,
+void yyerror 61,
+VOIDSTAR parse_hash;63,
+extern VOIDSTAR hash_find(64,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+YYSTYPE make_list 75,
+YYSTYPE make_list 77,
+char *instr;instr80,
+int parse_error 81,
+extern struct obstack tmp_mem;82,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define        YYFINAL 93,
+#define        YYFLAG  94,
+#define        YYNTBASE        95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define        YYLAST  266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+extern struct node *yylval;yylval305,
+unsigned char parse_cell_or_range 308,
+unsigned char parse_cell_or_range 310,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2238
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+  short yyss;85,
+  YYSTYPE yyvs;86,
+  YYLTYPE yyls;88,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+int yyparse 365,
+int yyparse 367,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  YYDPRINTF 917,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyerror 946,
+  yyresult 947,
+
+y-src/atest.y,9
+exp    2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define       INT     6,113
+# define       CHAR    7,130
+# define       NAME    8,148
+# define       ERROR   9,166
+# define       OR      10,185
+# define       AND     11,201
+# define       EQUAL   12,218
+# define       NOTEQUAL        13,237
+# define       LEQ     14,259
+# define       GEQ     15,276
+# define       LSH     16,293
+# define       RSH     17,310
+# define       UNARY   18,327
+
+cccp.y,2532
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+  struct arglist *next;next42,
+  U_CHAR *name;name43,
+  int length;44,
+  int argno;45,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int yylex 66,
+void yyerror 67,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+extern unsigned char is_idstart[is_idstart76,
+extern unsigned char is_idstart[], is_idchar[is_idchar76,
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[is_hor_space76,
+extern char *xmalloc xmalloc78,
+extern int pedantic;81,
+extern int traditional;84,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+static void integer_overflow 106,
+static long left_shift 107,
+static long right_shift 108,
+  struct constant 113,
+  struct constant {long value;113,
+  struct constant {long value; int unsignedp;113,
+  struct constant {long value; int unsignedp;} integer;113,
+  struct name 114,
+  struct name {U_CHAR *address;address114,
+  struct name {U_CHAR *address; int length;114,
+  struct name {U_CHAR *address; int length;} name;114,
+  struct arglist *keywords;keywords115,
+  int voidval;116,
+  char *sval;sval117,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define        YYFINAL 127,
+#define        YYFLAG  128,
+#define        YYNTBASE        129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define        YYLAST  274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+  char *operator;operator438,
+  int token;439,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+extern int yydebug;919,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2238
+# define YYSTD(40,
+# define YYSTD(42,
+#  define YYSTACK_ALLOC 50,
+#  define YYSIZE_T 51,
+#    define YYSTACK_ALLOC 55,
+#    define YYSIZE_T 56,
+#     define YYSTACK_ALLOC 59,
+#  define YYSTACK_FREE(67,
+#   define YYSIZE_T 71,
+#    define YYSIZE_T 75,
+#  define YYSTACK_ALLOC 78,
+#  define YYSTACK_FREE 79,
+union yyalloc83,
+  short yyss;85,
+  YYSTYPE yyvs;86,
+  YYLTYPE yyls;88,
+# define YYSTACK_GAP_MAX 93,
+#  define YYSTACK_BYTES(98,
+#  define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+#  define YYSIZE_T 136,
+#   define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok        148,
+#define yyclearin      149,
+#define YYEMPTY        150,
+#define YYEOF  151,
+#define YYACCEPT       152,
+#define YYABORT 153,
+#define YYERROR        154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR       177,
+#define YYERRCODE      178,
+# define YYLLOC_DEFAULT(189,
+#   define YYLEX       200,
+#   define YYLEX       202,
+#   define YYLEX       206,
+#   define YYLEX       208,
+# define YYLEX 212,
+#  define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+#  define yymemcpy 264,
+yymemcpy 271,
+#   define yystrlen 293,
+yystrlen 298,
+#   define yystpcpy 316,
+yystpcpy 322,
+#  define YYPARSE_PARAM_ARG 351,
+#  define YYPARSE_PARAM_DECL352,
+#  define YYPARSE_PARAM_ARG 354,
+#  define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+int yyparse 365,
+int yyparse 367,
+#define YY_DECL_NON_LSP_VARIABLES      374,
+# define YY_DECL_VARIABLES     385,
+# define YY_DECL_VARIABLES     391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+  *++yyvsp yyvsp746,
+  *++yylsp yylsp748,
+  yyn 755,
+  yystate 757,
+    yystate 761,
+  goto yynewstate;763,
+  goto yyerrlab1;823,
+  yyerrstatus 846,
+  goto yyerrhandle;848,
+  yyn 861,
+  yystate 875,
+  yyn 895,
+  yyn 903,
+  YYDPRINTF 917,
+  *++yyvsp yyvsp919,
+  *++yylsp yylsp921,
+  yystate 924,
+  goto yynewstate;925,
+  yyresult 932,
+  goto yyreturn;933,
+  yyresult 939,
+  goto yyreturn;940,
+  yyerror 946,
+  yyresult 947,
+
+y-src/cccp.y,2171
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+  struct arglist *next;next42,1318
+  U_CHAR *name;name43,1342
+  int length;44,1358
+  int argno;45,1372
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int yylex 66,1712
+void yyerror 67,1726
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+extern unsigned char is_idstart[is_idstart76,1944
+extern unsigned char is_idstart[], is_idchar[is_idchar76,1944
+extern unsigned char is_idstart[], is_idchar[], 
is_hor_space[is_hor_space76,1944
+extern char *xmalloc xmalloc78,2009
+extern int pedantic;81,2062
+extern int traditional;84,2114
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+static void integer_overflow 106,2632
+static long left_shift 107,2665
+static long right_shift 108,2692
+  struct constant 112,2733
+  struct constant {long value;112,2733
+  struct constant {long value; int unsignedp;112,2733
+  struct constant {long value; int unsignedp;} integer;112,2733
+  struct name 113,2789
+  struct name {U_CHAR *address;address113,2789
+  struct name {U_CHAR *address; int length;113,2789
+  struct name {U_CHAR *address; int length;} name;113,2789
+  struct arglist *keywords;keywords114,2840
+  int voidval;115,2868
+  char *sval;sval116,2883
+start 143,3226
+exp1   148,3330
+exp    156,3505
+exp    185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+  char *operator;operator438,11053
+  int token;439,11071
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+extern int yydebug;919,21416
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+a-src/empty.zz,0
diff --git a/test/etags/Makefile b/test/etags/Makefile
new file mode 100644
index 0000000..a0914e4
--- /dev/null
+++ b/test/etags/Makefile
@@ -0,0 +1,79 @@
+ADASRC=$(addprefix ./ada-src/,etags-test-for.ada 2ataspri.adb 2ataspri.ads 
waroquiers.ada)
+ASRC=$(addprefix ./a-src/,empty.zz empty.zz.gz)
+CSRC=$(addprefix ./c-src/,abbrev.c .//c.c torture.c getopt.h etags.c\
+ exit.c exit.strange_suffix sysdep.h tab.c dostorture.c\
+ emacs/src/gmalloc.c emacs/src/regex.h emacs/src/keyboard.c emacs/src/lisp.h\
+ machsyscalls.c machsyscalls.h fail.c a/b/b.c) ../etags/c-src/h.h
+CPSRC=$(addprefix ./cp-src/,c.C burton.cpp burton.cpp\
+ functions.cpp MDiagArray2.h Range.h\
+ screen.cpp screen.hpp conway.cpp conway.hpp clheir.cpp.gz clheir.hpp.gz 
fail.C)
+ELSRC=$(addprefix ./el-src/,TAGTEST.EL emacs/lisp/progmodes/etags.el)
+ERLSRC=$(addprefix ./erl-src/,gs_dialog.erl)
+FORTHSRC=$(addprefix ./forth-src/,test-forth.fth)
+FSRC=$(addprefix ./f-src/,entry.for entry.strange_suffix entry.strange)
+HTMLSRC=$(addprefix ./html-src/,softwarelibero.html index.shtml algrthms.html 
software.html)
+#JAVASRC=$(addprefix ./java-src/, )
+LUASRC=$(addprefix ./lua-src/,allegro.lua)
+MAKESRC=$(addprefix ./make-src/,Makefile)
+OBJCSRC=$(addprefix ./objc-src/,Subprocess.h Subprocess.m PackInsp.h 
PackInsp.m)
+OBJCPPSRC=$(addprefix ./objcpp-src/,SimpleCalc.H SimpleCalc.M)
+PASSRC=$(addprefix ./pas-src/,common.pas)
+PERLSRC=$(addprefix ./perl-src/,htlmify-cystic yagrip.pl kai-test.pl)
+PHPSRC=$(addprefix ./php-src/,lce_functions.php ptest.php sendmail.php)
+PSSRC=$(addprefix ./ps-src/,rfc1245.ps)
+PROLSRC=$(addprefix ./prol-src/,ordsets.prolog natded.prolog)
+PYTSRC=$(addprefix ./pyt-src/,server.py)
+TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex)
+YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y)
+SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
+     ${FORTHSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC} ${OBJCSRC}\
+     ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC} ${PROLSRC} ${PYTSRC}\
+     ${TEXSRC} ${YSRC}
+NONSRCS=./f-src/entry.strange ./erl-src/lists.erl ./cp-src/clheir.hpp.gz
+
+ETAGS_PROG=../../lib-src/etags
+CTAGS_PROG=../../lib-src/ctags
+
+REGEX=/[ \t]*DEFVAR_[A-Z_ \t\n(]+"\([^"]+\)"/
+xx="this line is here because of a fontlock bug
+
+RUN=
+
+OPTIONS=--members --declarations address@hidden
+ARGS=- < srclist
+
+infiles = $(filter-out ${NONSRCS},${SRCS}) srclist regexfile
+
+check:
+       @$(MAKE) OPTIONS='--no-members' ediff_1
+       @$(MAKE) OPTIONS='--declarations --no-members' ediff_2
+       @$(MAKE) OPTIONS='--members' ediff_3
+       @$(MAKE) OPTIONS='address@hidden --no-members' ediff_4
+       @$(MAKE) OPTIONS='nonexistent --members --declarations address@hidden' 
ediff_5
+       @$(MAKE) cdiff
+
+ediff%: ETAGS.good% ETAGS ${infiles}
+       diff -u --suppress-common-lines --width=80 ETAGS.good$* ETAGS
+
+cdiff: CTAGS.good CTAGS ${infiles}
+       diff -u --suppress-common-lines --width=80 CTAGS.good CTAGS
+
+ETAGS: FRC ${infiles}
+       ${RUN} ${ETAGS_PROG} ${OPTIONS} -o $@ ${ARGS}
+
+CTAGS: FRC ${infiles}
+       ${RUN} ${CTAGS_PROG} -o $@ address@hidden ${ARGS}
+
+srclist: Makefile
+       @for i in $(SRCS); do echo $$i; done > srclist
+       @echo "srclist remade"
+
+regexfile: Makefile
+       @echo ' -- This is for GNU Emacs source files' > regexfile
+       @echo '${REGEX}' >> regexfile
+       @echo '{c}${REGEX}\\1/m' >> regexfile
+       @echo "regexfile remade"
+
+.PRECIOUS: ETAGS.good CTAGS.good
+
+FRC:;
diff --git a/test/etags/a-src/empty.zz b/test/etags/a-src/empty.zz
new file mode 100644
index 0000000..e69de29
diff --git a/test/etags/a-src/empty.zz.gz b/test/etags/a-src/empty.zz.gz
new file mode 100644
index 0000000..e69de29
diff --git a/test/etags/ada-src/2ataspri.adb b/test/etags/ada-src/2ataspri.adb
new file mode 100644
index 0000000..43ca983
--- /dev/null
+++ b/test/etags/ada-src/2ataspri.adb
@@ -0,0 +1,665 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                 GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS               --
+--                                                                          --
+--                S Y S T E M . T A S K _ P R I M I T I V E S               --
+--                                                                          --
+--                                  B o d y                                 --
+--                                                                          --
+--                             $Revision: 1.1 $                             --
+--                                                                          --
+--     Copyright (C) 1991,1992,1993,1994,1996 Florida State University      --
+--                                                                          --
+-- GNARL is free software; you can redistribute it  and/or modify it  under --
+-- terms  of  the  GNU  Library General Public License  as published by the --
+-- Free Software  Foundation;  either version 2, or (at  your  option)  any --
+-- later  version.  GNARL is distributed  in the hope that  it will be use- --
+-- ful, but but WITHOUT ANY WARRANTY;  without even the implied warranty of --
+-- MERCHANTABILITY  or  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Gen- --
+-- eral Library Public License  for more details.  You should have received --
+-- a  copy of the GNU Library General Public License along with GNARL;  see --
+-- file COPYING.LIB.  If not,  write to the  Free Software Foundation,  675 --
+-- Mass Ave, Cambridge, MA 02139, USA.                                      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with GNAT.IO;
+with Interfaces.C.POSIX_timers;
+
+with Interfaces.C.POSIX_Error;
+use  Interfaces.C.POSIX_Error;
+
+with Interfaces.C.POSIX_RTE;
+use  Interfaces.C.POSIX_RTE;
+
+with Interfaces.C.Pthreads;
+use  Interfaces.C.Pthreads;
+
+with Interfaces.C;
+use  Interfaces.C;
+
+with System.Tasking;
+use  System.Tasking;
+
+with System.Storage_Elements;
+use  System.Storage_Elements;
+
+with System.Compiler_Exceptions;
+use  System.Compiler_Exceptions;
+
+with System.Task_Specific_Data;
+use  System.Task_Specific_Data;
+
+with System.Secondary_Stack;
+use  System.Secondary_Stack;
+
+with System.Tasking_Soft_Links;
+
+with System.Task_Clock;
+use  System.Task_Clock;
+
+with Unchecked_Conversion;
+with Interfaces.C.System_Constants;
+
+package body System.Task_Primitives is
+
+   use Interfaces.C.Pthreads;
+   use Interfaces.C.System_Constants;
+
+   package RTE renames Interfaces.C.POSIX_RTE;
+   package TSL renames System.Tasking_Soft_Links;
+
+   Test_And_Set_Mutex : Lock;
+
+   Abort_Signal : constant := 6;
+
+   Abort_Handler : Abort_Handler_Pointer;
+
+   ATCB_Key : aliased pthread_key_t;
+
+   Unblocked_Signal_Mask : aliased RTE.Signal_Set;
+   --  The set of signals that should be unblocked in a task.
+   --  This is in general the signals that can be generated synchronously,
+   --  and which should therefore be converted into Ada exceptions.
+   --  It also includes the Abort_Signal, to allow asynchronous abortion.
+
+   function To_void_ptr is new
+     Unchecked_Conversion (TCB_Ptr, void_ptr);
+
+   function To_TCB_Ptr is new
+     Unchecked_Conversion (void_ptr, TCB_Ptr);
+
+   function pthread_mutexattr_setprotocol
+     (attr : access pthread_attr_t; priority : integer) return int;
+   pragma Import (C,
+                  pthread_mutexattr_setprotocol,
+                  "pthread_mutexattr_setprotocol",
+                  "pthread_mutexattr_setprotocol");
+
+   function pthread_mutexattr_setprio_ceiling
+     (attr : access pthread_attr_t; priority : int) return int;
+   pragma Import (C,
+                  pthread_mutexattr_setprio_ceiling,
+                  "pthread_mutexattr_setprio_ceiling",
+                  "pthread_mutexattr_setprio_ceiling");
+
+   pthread_mutexattr_default : pthread_mutexattr_t;
+   pragma Import (C, pthread_mutexattr_default,
+                  "pthread_mutexattr_default",
+                  "pthread_mutexattr_default");
+
+   -----------------------
+   -- Local Subprograms --
+   -----------------------
+
+   procedure Abort_Wrapper
+     (signo   : Integer;
+      info    : RTE.siginfo_ptr;
+      context : System.Address);
+   --  This is a signal handler procedure which calls the user-specified
+   --  abort handler procedure.
+
+   procedure LL_Wrapper (T : TCB_Ptr);
+   --  A wrapper procedure that is called from a new low-level task.
+   --  It performs initializations for the new task and calls the
+   --  user-specified startup procedure.
+
+   -------------------------
+   -- Initialize_LL_Tasks --
+   -------------------------
+
+   procedure Initialize_LL_Tasks (T : TCB_Ptr) is
+      Result : int;
+   begin
+      T.LL_Entry_Point := null;
+      T.Thread := pthread_self;
+
+      Result := pthread_key_create (ATCB_Key'Access, null);
+
+      if Result = FUNC_ERR then
+         raise Storage_Error;               --  Insufficient resources.
+      end if;
+
+      T.Thread := pthread_self;
+
+      Result := pthread_setspecific (ATCB_Key, To_void_ptr (T));
+
+      if Result = FUNC_ERR then
+         GNAT.IO.Put_Line ("Get specific failed");
+         raise Storage_Error;               --  Insufficient resources.
+      end if;
+      pragma Assert (Result /= FUNC_ERR,
+         "GNULLI failure---pthread_setspecific");
+
+   end Initialize_LL_Tasks;
+
+   ----------
+   -- Self --
+   ----------
+
+   function Self return TCB_Ptr is
+      Temp   : aliased void_ptr;
+      Result : int;
+   begin
+      Result := pthread_getspecific (ATCB_Key, Temp'Access);
+      pragma Assert (Result /= FUNC_ERR,
+          "GNULLI failure---pthread_getspecific");
+      return To_TCB_Ptr (Temp);
+   end Self;
+
+   ---------------------
+   -- Initialize_Lock --
+   ---------------------
+
+   procedure Initialize_Lock
+     (Prio : System.Any_Priority;
+      L    : in out Lock)
+   is
+
+      Attributes : aliased pthread_mutexattr_t;
+      Result     : int;
+      MUTEX_NONRECURSIVE_NP : constant := 2;
+
+   begin
+      Result := pthread_mutexattr_init (Attributes'Access);
+      if Result = FUNC_ERR then
+         raise STORAGE_ERROR;  --  should be ENOMEM
+      end if;
+
+      Result := pthread_mutexattr_setkind
+        (Attributes'Access, MUTEX_NONRECURSIVE_NP);
+      if Result = FUNC_ERR then
+         raise STORAGE_ERROR;  --  should be ENOMEM
+      end if;
+
+      Result := pthread_mutex_init (L.mutex'Access, Attributes);
+
+      if Result = FUNC_ERR then
+         Result := pthread_mutexattr_destroy (Attributes'Access);
+         raise STORAGE_ERROR;  --  should be ENOMEM ???
+      end if;
+
+      Result := pthread_mutexattr_destroy (Attributes'Access);
+
+   end Initialize_Lock;
+
+   -------------------
+   -- Finalize_Lock --
+   -------------------
+
+   procedure Finalize_Lock (L : in out Lock) is
+      Result : int;
+   begin
+      Result := pthread_mutex_destroy (L.mutex'Access);
+      pragma Assert
+         (Result /= FUNC_ERR, "GNULLI failure---pthread_mutex_destroy");
+   end Finalize_Lock;
+
+   ----------------
+   -- Write_Lock --
+   ----------------
+
+   --
+   --  The current pthreads implementation does not check for Ceiling
+   --  violations.
+   --
+   procedure Write_Lock (L : in out Lock; Ceiling_Violation : out Boolean) is
+      Result : int;
+   begin
+      Ceiling_Violation := False;
+      Result := pthread_mutex_lock (L.mutex'Access);
+      pragma Assert
+        (Result /= FUNC_ERR, "GNULLI FUNC_ERR---pthread_mutex_lock");
+   end Write_Lock;
+
+   ---------------
+   -- Read_Lock --
+   ---------------
+
+   procedure Read_Lock (L : in out Lock; Ceiling_Violation : out Boolean)
+      renames Write_Lock;
+
+   ------------
+   -- Unlock --
+   ------------
+
+   procedure Unlock (L : in out Lock) is
+      Result : int;
+   begin
+      Result := pthread_mutex_unlock (L.mutex'Access);
+      pragma Assert
+         (Result /= FUNC_ERR, "GNULLI FUNC_ERR---pthread_mutex_unlock");
+   end Unlock;
+
+   ---------------------
+   -- Initialize_Cond --
+   ---------------------
+
+   procedure Initialize_Cond (Cond : in out Condition_Variable) is
+      Attributes : aliased Pthreads.pthread_condattr_t;
+      Result     : int;
+   begin
+      Result := pthread_condattr_init (Attributes'Access);
+
+      if Result = FUNC_ERR then
+         raise STORAGE_ERROR;  --  should be ENOMEM ???
+      end if;
+
+      --  Result := pthread_cond_init (Cond.CV'Access, Attributes'Access);
+      Result := pthread_cond_init (Cond.CV'Access, Attributes);
+
+
+      if Result = FUNC_ERR then
+         raise STORAGE_ERROR;  --  should be ENOMEM  ???
+      end if;
+
+      Result := pthread_condattr_destroy (Attributes'Access);
+      pragma Assert
+         (Result /= FUNC_ERR, "GNULLI FUNC_ERR---pthread_condattr_destroy");
+
+   end Initialize_Cond;
+
+   -------------------
+   -- Finalize_Cond --
+   -------------------
+
+   procedure Finalize_Cond (Cond : in out Condition_Variable) is
+      Result : int;
+
+   begin
+      Result := pthread_cond_destroy (Cond.CV'Access);
+      pragma Assert
+         (Result /= FUNC_ERR, "GNULLI failure---pthread_cond_destroy");
+   end Finalize_Cond;
+
+
+   ---------------
+   -- Cond_Wait --
+   ---------------
+
+   procedure Cond_Wait (Cond : in out Condition_Variable; L : in out Lock) is
+      Result : int;
+   begin
+      Result := pthread_cond_wait (Cond.CV'Access, L.mutex'Access);
+      pragma Assert
+        (Result /= FUNC_ERR, "GNULLI failure---pthread_cond_wait");
+   end Cond_Wait;
+
+   ---------------------
+   -- Cond_Timed_Wait --
+   ---------------------
+
+   procedure Cond_Timed_Wait
+     (Cond      : in out Condition_Variable;
+      L         : in out Lock;
+      Abs_Time  : System.Task_Clock.Stimespec;
+      Timed_Out : out Boolean) is
+
+      Result : int;
+      TV     : aliased timespec;
+
+      use POSIX_Error;
+
+   begin
+      Timed_Out := False;  --  Assume success until we know otherwise
+
+      TV.tv_sec := int (Interfaces.C.POSIX_timers.time_t
+        (Task_Clock.Stimespec_Seconds (Abs_Time)));
+
+      TV.tv_nsec := long (Interfaces.C.POSIX_timers.Nanoseconds
+        (Task_Clock.Stimespec_NSeconds (Abs_Time)));
+
+      Result := pthread_cond_timedwait
+        (Cond.CV'Access, L.mutex'Access, TV'Access);
+      pragma Assert
+         (Result /= FUNC_ERR, "GNULLI failure---pthread_cond_timedwait");
+
+   end Cond_Timed_Wait;
+
+   -----------------
+   -- Cond_Signal --
+   -----------------
+
+   procedure Cond_Signal (Cond : in out Condition_Variable) is
+      Result : int;
+   begin
+      Result :=  pthread_cond_signal (Cond.CV'Access);
+      pragma Assert
+         (Result /= FUNC_ERR, "GNULLI failure---pthread_cond_signal");
+   end Cond_Signal;
+
+   ------------------
+   -- Set_Priority --
+   ------------------
+
+   procedure Set_Priority
+     (T : TCB_Ptr;
+      Prio : System.Any_Priority) is
+
+      Result : int;
+      Thread : Pthreads.pthread_t renames T.Thread;
+
+   begin
+      Result := pthread_setprio (Thread, int (Prio));
+      pragma Assert
+         (Result /= FUNC_ERR, "GNULLI failure---pthread_setprio");
+   end Set_Priority;
+
+   ----------------------
+   -- Set_Own_Priority --
+   ----------------------
+
+   procedure Set_Own_Priority (Prio : System.Any_Priority) is
+   begin
+      null;
+      --  ENOSYS Result :=
+      --     pthread_setprio (pthread_self, int (Prio));
+      --  pragma Assert
+      --     (Result /= FUNC_ERR, "GNULLI failure---pthread_setprio");
+   end Set_Own_Priority;
+
+   ------------------
+   -- Get_Priority --
+   ------------------
+
+   function Get_Priority (T : TCB_Ptr) return System.Any_Priority is
+      Priority : aliased int := 0;
+   begin
+      --  ENOSYS Result := pthread_getprio (T.Thread, Priority'Access);
+      --  pragma Assert
+      --     (Result /= FUNC_ERR, "GNULLI failure---pthread_getprio");
+      return System.Priority (Priority);
+   end Get_Priority;
+
+   -----------------------
+   --  Get_Own_Priority --
+   -----------------------
+
+   function Get_Own_Priority return System.Any_Priority is
+      Result : int;
+      Priority : aliased int := 0;
+   begin
+      Result := pthread_getprio (pthread_self, Priority'Access);
+      pragma Assert
+         (Result /= FUNC_ERR, "GNULLI failure---pthread_getprio");
+      return System.Priority (Priority);
+   end Get_Own_Priority;
+
+   --------------------
+   -- Create_LL_Task --
+   --------------------
+
+   procedure Create_LL_Task
+     (Priority       : System.Any_Priority;
+      Stack_Size     : Task_Storage_Size;
+      Task_Info      : System.Task_Info.Task_Info_Type;
+      LL_Entry_Point : LL_Task_Procedure_Access;
+      Arg            : System.Address;
+      T              : TCB_Ptr) is
+
+      use Pthreads;
+
+      Attributes : aliased pthread_attr_t;
+      Result     : int;
+      L_Priority : System.Any_Priority := Priority;
+
+      function To_Start_Addr is new
+        Unchecked_Conversion (System.Address, start_addr);
+
+   begin
+      T.LL_Entry_Point := LL_Entry_Point;
+      T.LL_Arg := Arg;
+      T.Stack_Size := Stack_Size;
+
+      Result := pthread_attr_init (Attributes'Access);
+      pragma Assert (Result /= FUNC_ERR, "GNULLI failure---pthread_attr_init");
+
+--      Result := pthread_attr_setdetachstate (Attributes'Access, 1);
+--      pragma Assert
+--        (Result /= FUNC_ERR, "GNULLI failure---pthread_setdetachstate");
+
+      Result := pthread_attr_setstacksize
+        (Attributes'Access, size_t (Stack_Size));
+      pragma Assert
+        (Result /= FUNC_ERR, "GNULLI failure---pthread_setstacksize");
+
+      Result := pthread_attr_setinheritsched
+        (Attributes'Access, PTHREAD_DEFAULT_SCHED);
+      pragma Assert
+        (Result /= FUNC_ERR, "GNULLI failure---pthread_setinheritsched");
+
+      Result := pthread_attr_setsched
+        (Attributes'Access, SCHED_FIFO);
+      pragma Assert
+        (Result /= FUNC_ERR, "GNULLI failure---pthread_setinheritsched");
+
+      --  The following priority adjustment is a kludge to get around needing
+      --  root privileges to run at higher than 18 for FIFO or 19 for OTHER.
+
+      if (L_Priority > 18) then
+         L_Priority := 18;
+      elsif (L_Priority < 14) then
+         L_Priority := 14;
+      end if;
+
+      Result := pthread_attr_setprio
+        (Attributes'Access, int (L_Priority));
+      pragma Assert
+        (Result /= FUNC_ERR, "GNULLI failure---pthread_attr_setprio");
+
+      Result := pthread_create
+        (T.Thread'Access,
+         Attributes,
+         To_Start_Addr (LL_Wrapper'Address),
+         T.all'Address);
+      if Result = FUNC_ERR then
+         GNAT.IO.Put_Line ("pthread create failed");
+         raise Storage_Error;
+      end if;
+      pragma Assert (Result /= FUNC_ERR, "GNULLI failure---pthread_create");
+
+      Result := pthread_attr_destroy (Attributes'Access);
+      pragma Assert
+        (Result /= FUNC_ERR, "GNULLI failure---pthread_attr_destroy");
+
+   end Create_LL_Task;
+
+   -----------------
+   -- Exit_LL_Task --
+   ------------------
+
+   procedure Exit_LL_Task is
+   begin
+      pthread_exit (System.Null_Address);
+   end Exit_LL_Task;
+
+   ----------------
+   -- Abort_Task --
+   ----------------
+
+   procedure Abort_Task (T : TCB_Ptr) is
+      Result     : int;
+   begin
+--      Result := pthread_kill (T.Thread);
+--      pragma Assert
+--         (Result /= FUNC_ERR, "GNULLI failure---pthread_kill");
+      null;
+   end Abort_Task;
+
+   ----------------
+   -- Test_Abort --
+   ----------------
+
+   --  This procedure does nothing.  It is intended for systems without
+   --  asynchronous abortion, where the runtime system would have to
+   --  synchronously poll for pending abortions.  This should be done
+   --  at least at every synchronization point.
+
+   procedure Test_Abort is
+   begin
+      null;
+   end Test_Abort;
+
+   ---------------------------
+   -- Install_Abort_Handler --
+   ---------------------------
+
+   procedure Install_Abort_Handler (Handler : Abort_Handler_Pointer) is
+      act     : aliased RTE.struct_sigaction;
+      old_act : aliased RTE.struct_sigaction;
+      Result  : POSIX_Error.Return_Code;
+      SA_SIGINFO : constant := 64;
+
+      use type POSIX_Error.Return_Code;
+
+   begin
+      Abort_Handler := Handler;
+
+      act.sa_flags := SA_SIGINFO;
+      act.sa_handler := Abort_Wrapper'Address;
+      RTE.sigemptyset (act.sa_mask'Access, Result);
+      pragma Assert (Result /= FUNC_ERR, "GNULLI failure---sigemptyset");
+
+      RTE.sigaction (Abort_Signal, act'Access, old_act'Access, Result);
+      pragma Assert (Result /= FUNC_ERR, "GNULLI failure---sigaction");
+   end Install_Abort_Handler;
+
+   -------------------
+   -- Abort_Wrapper --
+   -------------------
+
+   --  This is the handler called by the OS when an abort signal is
+   --  received; it in turn calls the handler installed by the client.
+   --  This procedure serves to isolate the client from the
+   --  implementation-specific calling conventions of asynchronous
+   --  handlers.
+
+   procedure Abort_Wrapper
+     (signo   : Integer;
+      info    : RTE.siginfo_ptr;
+      context : System.Address)
+   is
+      function Address_To_Call_State is new
+        Unchecked_Conversion (System.Address, Pre_Call_State);
+
+   begin
+      Abort_Handler (Address_To_Call_State (context));
+   end Abort_Wrapper;
+
+   ---------------------------
+   -- Install_Error_Handler --
+   ---------------------------
+
+   procedure Install_Error_Handler (Handler : System.Address) is
+
+      Temp : Address;
+
+      use Pthreads;
+
+   begin
+      --  Set up the soft links to tasking services used in the absence of
+      --  tasking.  These replace tasking-free defaults.
+
+      Temp := TSL.Get_Jmpbuf_Address.all;
+      --  pthread_set_jumpbuf_address (Temp);
+
+      Temp := TSL.Get_Sec_Stack_Addr.all;
+      --  pthread_set_sec_stack_addr  (Temp);
+
+      --  TSL.Get_Jmpbuf_Address := pthread_get_jumpbuf_address'Access;
+      --  TSL.Set_Jmpbuf_Address := pthread_set_jumpbuf_address'Access;
+      --  TSL.Get_Gnat_Exception := pthread_get_exception'Access;
+      --  TSL.Set_Gnat_Exception := pthread_set_exception'Access;
+   end Install_Error_Handler;
+
+   ---------------
+   -- LL_Assert --
+   ---------------
+
+   procedure LL_Assert (B : Boolean; M : String) is
+   begin
+      null;
+   end LL_Assert;
+
+   ----------------
+   -- LL_Wrapper --
+   ----------------
+
+   procedure LL_Wrapper (T : TCB_Ptr) is
+      Result  : POSIX_Error.Return_Code;
+      Result1 : int;
+      Exc_Stack : String (1 .. 256);
+      Exc_Base  : Address := Exc_Stack (Exc_Stack'Last)'Address + 1;
+      Old_Set : aliased RTE.Signal_Set;
+   begin
+      Result1 := pthread_setspecific (ATCB_Key, T.all'Address);
+
+      RTE.sigprocmask (
+        RTE.SIG_UNBLOCK, Unblocked_Signal_Mask'Access, Old_Set'Access, Result);
+      pragma Assert (
+        Result /= Failure, "GNULLI failure---sigprocmask");
+
+      --  Note that the following call may not return!
+      T.LL_Entry_Point (T.LL_Arg);
+   end LL_Wrapper;
+
+   --------------------------
+   -- Test and Set support --
+   --------------------------
+
+   procedure Initialize_TAS_Cell (Cell : out TAS_Cell) is
+   begin
+      Cell.Value := 0;
+   end Initialize_TAS_Cell;
+
+   procedure Finalize_TAS_Cell (Cell : in out TAS_Cell) is
+   begin
+      null;
+   end Finalize_TAS_Cell;
+
+   procedure Clear (Cell : in out TAS_Cell) is
+   begin
+      Cell.Value := 1;
+   end Clear;
+
+   procedure Test_And_Set (Cell : in out TAS_Cell; Result : out Boolean) is
+      Error   : Boolean;
+   begin
+      Write_Lock (Test_And_Set_Mutex, Error);
+
+      if Cell.Value = 1 then
+         Result := False;
+      else
+         Result :=  True;
+         Cell.Value := 1;
+      end if;
+      Unlock (Test_And_Set_Mutex);
+   end Test_And_Set;
+
+   function  Is_Set (Cell : in TAS_Cell) return Boolean is
+   begin
+      return Cell.Value = 1;
+   end Is_Set;
+begin
+   Initialize_Lock (System.Any_Priority'Last, Test_And_Set_Mutex);
+end System.Task_Primitives;
diff --git a/test/etags/ada-src/2ataspri.ads b/test/etags/ada-src/2ataspri.ads
new file mode 100644
index 0000000..01c7860
--- /dev/null
+++ b/test/etags/ada-src/2ataspri.ads
@@ -0,0 +1,298 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                 GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS               --
+--                                                                          --
+--                S Y S T E M . T A S K _ P R I M I T I V E S               --
+--                                                                          --
+--                                  S p e c                                 --
+--                                                                          --
+--                             $Revision: 1.1 $                             --
+--                                                                          --
+--   Copyright (C) 1991,1992,1993,1994,1995,1996 Florida State University   --
+--                                                                          --
+-- GNARL is free software; you can  redistribute it  and/or modify it under --
+-- terms of the  GNU General Public License as published  by the Free Soft- --
+-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
+-- sion. GNARL is distributed in the hope that it will be useful, but WITH- --
+-- OUT 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  distributed with GNARL; see file COPYING.  If not, write --
+-- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
+-- MA 02111-1307, USA.                                                      --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+-- GNARL was developed by the GNARL team at Florida State University. It is --
+-- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
+-- State University (http://www.gnat.com).                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Interfaces.C;
+--  Used for Size_t;
+
+with Interfaces.C.Pthreads;
+--  Used for, size_t,
+--            pthread_mutex_t,
+--            pthread_cond_t,
+--            pthread_t
+
+with Interfaces.C.POSIX_RTE;
+--  Used for, Signal,
+--            siginfo_ptr,
+
+with System.Task_Clock;
+--  Used for, Stimespec
+
+with Unchecked_Conversion;
+
+pragma Elaborate_All (Interfaces.C.Pthreads);
+
+with System.Task_Info;
+package System.Task_Primitives is
+
+   --  Low level Task size and state definition
+
+   type LL_Task_Procedure_Access is access procedure (Arg : System.Address);
+
+   type Pre_Call_State is new System.Address;
+
+   type Task_Storage_Size is new Interfaces.C.size_t;
+
+   type Machine_Exceptions is new Interfaces.C.POSIX_RTE.Signal;
+
+   type Error_Information is new Interfaces.C.POSIX_RTE.siginfo_ptr;
+
+   type Lock is private;
+   type Condition_Variable is private;
+
+   --  The above types should both be limited. They are not due to a hack in
+   --  ATCB allocation which allocates a block of the correct size and then
+   --  assigns an initialized ATCB to it. This won't work with limited types.
+   --  When allocation is done with new, these can become limited once again.
+   --  ???
+
+   type Task_Control_Block is record
+      LL_Entry_Point : LL_Task_Procedure_Access;
+      LL_Arg         : System.Address;
+      Thread         : aliased Interfaces.C.Pthreads.pthread_t;
+      Stack_Size     : Task_Storage_Size;
+      Stack_Limit    : System.Address;
+   end record;
+
+   type TCB_Ptr is access all Task_Control_Block;
+
+   --  Task ATCB related and variables.
+
+   function Address_To_TCB_Ptr is new
+     Unchecked_Conversion (System.Address, TCB_Ptr);
+
+   procedure Initialize_LL_Tasks (T : TCB_Ptr);
+   --  Initialize GNULLI. T points to the Task Control Block that should
+   --  be initialized for use by the environment task.
+
+   function Self return TCB_Ptr;
+   --  Return a pointer to the Task Control Block of the calling task.
+
+   procedure Initialize_Lock (Prio : System.Any_Priority; L : in out Lock);
+   --  Initialize a lock object. Prio is the ceiling priority associated
+   --  with the lock.
+
+   procedure Finalize_Lock (L : in out Lock);
+   --  Finalize a lock object, freeing any resources allocated by the
+   --  corresponding Initialize_Lock.
+
+   procedure Write_Lock (L : in out Lock; Ceiling_Violation : out Boolean);
+   pragma Inline (Write_Lock);
+   --  Lock a lock object for write access to a critical section. After
+   --  this operation returns, the calling task owns the lock, and
+   --  no other Write_Lock or Read_Lock operation on the same object will
+   --  return the owner executes an Unlock operation on the same object.
+
+   procedure Read_Lock (L : in out Lock; Ceiling_Violation : out Boolean);
+   pragma Inline (Read_Lock);
+   --  Lock a lock object for read access to a critical section. After
+   --  this operation returns, the calling task owns the lock, and
+   --  no other Write_Lock operation on the same object will return until
+   --  the owner(s) execute Unlock operation(s) on the same object.
+   --  A Read_Lock to an owned lock object may return while the lock is
+   --  still owned, though an implementation may also implement
+   --  Read_Lock to have the same semantics.
+
+   procedure Unlock (L : in out Lock);
+   pragma Inline (Unlock);
+   --  Unlock a locked lock object. The results are undefined if the
+   --  calling task does not own the lock. Lock/Unlock operations must
+   --  be nested, that is, the argument to Unlock must be the object
+   --  most recently locked.
+
+   procedure Initialize_Cond (Cond : in out Condition_Variable);
+   --  Initialize a condition variable object.
+
+   procedure Finalize_Cond (Cond : in out Condition_Variable);
+   --  Finalize a condition variable object, recovering any resources
+   --  allocated for it by Initialize_Cond.
+
+   procedure Cond_Wait (Cond : in out Condition_Variable; L : in out Lock);
+   pragma Inline (Cond_Wait);
+   --  Wait on a condition variable. The mutex object L is unlocked
+   --  atomically, such that another task that is able to lock the mutex
+   --  can be assured that the wait has actually commenced, and that
+   --  a Cond_Signal operation will cause the waiting task to become
+   --  eligible for execution once again. Before Cond_Wait returns,
+   --  the waiting task will again lock the mutex. The waiting task may become
+   --  eligible for execution at any time, but will become eligible for
+   --  execution when a Cond_Signal operation is performed on the
+   --  same condition variable object. The effect of more than one
+   --  task waiting on the same condition variable is unspecified.
+
+   procedure Cond_Timed_Wait
+     (Cond      : in out Condition_Variable;
+      L         : in out Lock; Abs_Time : System.Task_Clock.Stimespec;
+      Timed_Out : out Boolean);
+   pragma Inline (Cond_Timed_Wait);
+   --  Wait on a condition variable, as for Cond_Wait, above. In addition,
+   --  the waiting task will become eligible for execution again
+   --  when the absolute time specified by Timed_Out arrives.
+
+   procedure Cond_Signal (Cond : in out Condition_Variable);
+   pragma Inline (Cond_Signal);
+   --  Wake up a task waiting on the condition variable object specified
+   --  by Cond, making it eligible for execution once again.
+
+   procedure Set_Priority (T : TCB_Ptr; Prio : System.Any_Priority);
+   pragma Inline (Set_Priority);
+   --  Set the priority of the task specified by T to P.
+
+   procedure Set_Own_Priority (Prio : System.Any_Priority);
+   pragma Inline (Set_Own_Priority);
+   --  Set the priority of the calling task to P.
+
+   function Get_Priority (T : TCB_Ptr) return System.Any_Priority;
+   pragma Inline (Get_Priority);
+   --  Return the priority of the task specified by T.
+
+   function Get_Own_Priority return System.Any_Priority;
+   pragma Inline (Get_Own_Priority);
+   --  Return the priority of the calling task.
+
+   procedure Create_LL_Task
+     (Priority       : System.Any_Priority;
+      Stack_Size     : Task_Storage_Size;
+      Task_Info      : System.Task_Info.Task_Info_Type;
+      LL_Entry_Point : LL_Task_Procedure_Access;
+      Arg            : System.Address;
+      T              : TCB_Ptr);
+   --  Create a new low-level task with priority Priority. A new thread
+   --  of control is created with a stack size of at least Stack_Size,
+   --  and the procedure LL_Entry_Point is called with the argument Arg
+   --  from this new thread of control. The Task Control Block pointed
+   --  to by T is initialized to refer to this new task.
+
+   procedure Exit_LL_Task;
+   --  Exit a low-level task. The resources allocated for the task
+   --  by Create_LL_Task are recovered. The task no longer executes, and
+   --  the effects of further operations on task are unspecified.
+
+   procedure Abort_Task (T : TCB_Ptr);
+   --  Abort the task specified by T (the target task). This causes
+   --  the target task to asynchronously execute the handler procedure
+   --  installed by the target task using Install_Abort_Handler. The
+   --  effect of this operation is unspecified if there is no abort
+   --  handler procedure for the target task.
+
+   procedure Test_Abort;
+   --  ??? Obsolete?  This is intended to allow implementation of
+   --      abortion and ATC in the absence of an asynchronous Abort_Task,
+   --      but I think that we decided that GNARL can handle this on
+   --      its own by making sure that there is an Undefer_Abortion at
+   --      every abortion synchronization point.
+
+   type Abort_Handler_Pointer is access procedure (Context : Pre_Call_State);
+
+   procedure Install_Abort_Handler (Handler : Abort_Handler_Pointer);
+   --  Install an abort handler procedure. This procedure is called
+   --  asynchronously by the calling task whenever a call to Abort_Task
+   --  specifies the calling task as the target. If the abort handler
+   --  procedure is asynchronously executed during a GNULLI operation
+   --  and then calls some other GNULLI operation, the effect is unspecified.
+
+   procedure Install_Error_Handler (Handler : System.Address);
+   --  Install an error handler for the calling task. The handler will
+   --  be called synchronously if an error is encountered during the
+   --  execution of the calling task.
+
+   procedure LL_Assert (B : Boolean; M : String);
+   --  If B is False, print the string M to the console and halt the
+   --  program.
+
+   Task_Wrapper_Frame : constant Integer := 72;
+   --  This is the size of the frame for the Pthread_Wrapper procedure.
+
+   type Proc is access procedure (Addr : System.Address);
+
+
+   --  Test and Set support
+   type TAS_Cell is private;
+   --  On some systems we can not assume that an arbitrary memory location
+   --  can be used in an atomic test and set instruction (e.g. on some
+   --  multiprocessor machines, only memory regions are cache interlocked).
+   --  TAS_Cell is private to facilitate adaption to a variety of
+   --  implementations.
+
+   procedure Initialize_TAS_Cell (Cell :    out TAS_Cell);
+   pragma Inline (Initialize_TAS_Cell);
+   --  Initialize a Test And Set Cell.  On some targets this will allocate
+   --  a system-level lock object from a special pool.  For most systems,
+   --  this is a nop.
+
+   procedure Finalize_TAS_Cell   (Cell : in out TAS_Cell);
+   pragma Inline (Finalize_TAS_Cell);
+   --  Finalize a Test and Set cell, freeing any resources allocated by the
+   --  corresponding Initialize_TAS_Cell.
+
+   procedure Clear        (Cell : in out TAS_Cell);
+   pragma Inline (Clear);
+   --  Set the state of the named TAS_Cell such that a subsequent call to
+   --  Is_Set will return False.  This operation must be atomic with
+   --  respect to the Is_Set and Test_And_Set operations for the same
+   --  cell.
+
+   procedure Test_And_Set (Cell : in out TAS_Cell; Result : out Boolean);
+   pragma Inline (Test_And_Set);
+   --  Modify the state of the named TAS_Cell such that a subsequent call
+   --  to Is_Set will return True.  Result is set to True if Is_Set
+   --  was False prior to the call, False otherwise.  This operation must
+   --  be atomic with respect to the Clear and Is_Set operations for the
+   --  same cell.
+
+   function  Is_Set       (Cell : in     TAS_Cell) return Boolean;
+   pragma Inline (Is_Set);
+   --  Returns the current value of the named TAS_Cell.  This operation
+   --  must be atomic with respect to the Clear and Test_And_Set operations
+   --  for the same cell.
+
+private
+
+   type Lock is
+      record
+         mutex : aliased Interfaces.C.Pthreads.pthread_mutex_t;
+      end record;
+
+   type Condition_Variable is
+      record
+         CV : aliased Interfaces.C.Pthreads.pthread_cond_t;
+      end record;
+
+   type TAS_Cell is
+      record
+         Value : aliased Interfaces.C.unsigned := 0;
+      end record;
+
+end System.Task_Primitives;
diff --git a/test/etags/ada-src/etags-test-for.ada 
b/test/etags/ada-src/etags-test-for.ada
new file mode 100644
index 0000000..09e5a1e
--- /dev/null
+++ b/test/etags/ada-src/etags-test-for.ada
@@ -0,0 +1,193 @@
+   type LL_Task_Procedure_Access is access procedure (Arg : System.Address);
+
+   function Body_Required
+      (N : Node_Id) return Boolean is
+   begin
+      pragma Assert (False
+          or else NT (N).Nkind = N_Compilation_Unit);
+      return Flag13 (N);
+   end Body_Required;
+
+   type Type_Specific_Data is record
+      Idepth        : Natural;
+      Expanded_Name : Cstring_Ptr;
+      External_Tag  : Cstring_Ptr;
+      HT_Link       : Tag;
+      Ancestor_Tags : Tag_Table (Natural);
+   end record;
+
+   function "abs"   (Right : Complex) return Real'Base renames Modulus;
+
+   type Barrier_Function_Pointer is access
+     function
+       (O : System.Address;
+        E : Protected_Entry_Index)
+        return Boolean;
+
+   function "=" (L, R : System.Address) return Boolean
+     renames System."=";
+
+   type usfreelock_ptr is access
+     procedure (lock : ulock_t; arena : usptr_t_ptr);
+
+   function p pragma Import (C,
+                  "pthread_mutexattr_setprio_ceiling",
+                  "pthread_mutexattr_setprio_ceiling");
+   pragma Import ()
+   procedure LL_Wrapper (T : TCB_Ptr);
+
+function p ("p");
+
+-- This file is an Ada file containing test data
+-- for etags (Ada83 and Ada95 support).
+
+package Pkg1 is
+
+  type Private_T is private;
+
+  package Inner1 is
+    procedure Private_T;
+  end Inner1;
+
+  package Inner2 is
+    task Private_T;
+  end Inner2;
+
+  type Public_T is
+    record
+      A : Integer;
+      B : Integer;
+    end record;
+
+  procedure Pkg1_Proc1;
+
+  procedure Pkg1_Proc2 (I : Integer);
+
+  function Pkg1_Func1 return Boolean;
+
+  function Pkg1_Func2 (Ijk : Integer; Z : Integer) return Natural;
+
+
+  package Pkg1_Pkg1 is
+    procedure Pkg1_Pkg1_Proc1;
+  end Pkg1_Pkg1;
+
+  task type Task_Type is
+    entry Entry1;
+    entry Entry2 (I : Integer);
+  end;
+
+private
+
+  type Private_T is
+    record
+      Z : Integer;
+      W : Boolean;
+    end record;
+end Pkg1;
+
+package body Pkg1 is
+
+  procedure Pkg1_Proc1 is
+  begin
+    null;
+  end;
+
+  package body Inner1 is
+    procedure Private_T is
+    begin
+      null;
+    end;
+  end Inner1;
+
+  package body Inner2 is
+    task body Private_T is
+    begin
+      loop
+        null;
+      end loop;
+    end;
+  end Inner2;
+
+  task body Task_Type is
+  begin
+    select
+      accept Entry1 do
+        null;
+      end;
+    or
+      accept Entry2 (I : Integer) do
+        null;
+      end;
+    end select;
+  end;
+
+
+  procedure Pkg1_Proc2 (I : Integer) is
+  begin
+    null;
+  end Pkg1_Proc2;
+
+
+  function Pkg1_Func1 return Boolean is separate;
+
+  function Pkg1_Func2 (Ijk : Integer; Z : Integer) return Natural is
+  begin
+    return 1;
+  end;
+
+
+  package body Pkg1_Pkg1 is separate;
+
+
+end Pkg1;
+
+separate (Pkg1)
+package body Pkg1_Pkg1 is
+  procedure Pkg1_Pkg1_Proc1 is
+  begin
+    null;
+  end;
+end Pkg1_Pkg1;
+
+
+separate (Pkg1)
+function  Pkg1_Func1 return Boolean is
+begin
+  return False;
+end;
+
+
+-- from now on, this is Ada 95 specific.
+package Truc is
+  I : Integer;
+end Truc;
+
+package Truc.Bidule is
+
+  protected Bidule is
+    entry Basar;
+  end Bidule;
+
+  protected type Machin_T is
+    entry Truc;
+  end Machin_T;
+
+end Truc.Bidule;
+
+package body Truc.Bidule is
+  protected body Bidule is
+    entry Basar is
+    begin
+      null;
+    end;
+  end Bidule;
+
+  protected Machin_T is
+    entry Truc is
+    begin
+      null;
+    end;
+  end Machin_T;
+
+end Truc.Bidule;
diff --git a/test/etags/ada-src/waroquiers.ada 
b/test/etags/ada-src/waroquiers.ada
new file mode 100644
index 0000000..3161209
--- /dev/null
+++ b/test/etags/ada-src/waroquiers.ada
@@ -0,0 +1,153 @@
+-- This file is an Ada file containing test data
+-- for etags (Ada83 and Ada95 support).
+package Pkg1 is
+
+  type Private_T is private;
+
+  package Inner1 is
+    procedure Private_T;
+  end Inner1;
+
+  package Inner2 is
+    task Private_T;
+  end Inner2;
+
+  type Public_T is
+    record
+      A : Integer;
+      B : Integer;
+    end record;
+
+  procedure Pkg1_Proc1;
+
+  procedure Pkg1_Proc2 (I : Integer);
+
+  function Pkg1_Func1 return Boolean;
+
+  function Pkg1_Func2 (Ijk : Integer; Z : Integer) return Natural;
+
+
+  package Pkg1_Pkg1 is
+    procedure Pkg1_Pkg1_Proc1;
+  end Pkg1_Pkg1;
+
+  task type Task_Type is
+    entry Entry1;
+    entry Entry2 (I : Integer);
+  end;
+private
+
+  type Private_T is
+    record
+      Z : Integer;
+      W : Boolean;
+    end record;
+end Pkg1;
+package body Pkg1 is
+
+  procedure Pkg1_Proc1 is
+  begin
+    null;
+  end;
+
+  package body Inner1 is
+    procedure Private_T is
+    begin
+      null;
+    end;
+  end Inner1;
+
+  package body Inner2 is
+    task body Private_T is
+    begin
+      loop
+        null;
+      end loop;
+    end;
+  end Inner2;
+  task body Task_Type is
+  begin
+    select
+      accept Entry1 do
+        null;
+      end;
+    or
+      accept Entry2 (I : Integer) do
+        null;
+      end;
+    end select;
+  end;
+
+
+  procedure Pkg1_Proc2 (I : Integer) is
+  begin
+    null;
+  end Pkg1_Proc2;
+
+
+  function Pkg1_Func1 return Boolean is separate;
+
+  function Pkg1_Func2 (Ijk : Integer; Z : Integer) return Natural is
+  begin
+    return 1;
+  end;
+
+
+  package body Pkg1_Pkg1 is separate;
+
+end Pkg1;
+separate (Pkg1)
+package body Pkg1_Pkg1 is
+  procedure Pkg1_Pkg1_Proc1 is
+  begin
+    null;
+  end;
+end Pkg1_Pkg1;
+separate (Pkg1)
+function  Pkg1_Func1 return Boolean is
+begin
+  return False;
+end;
+-- from now on, this is Ada 95 specific.
+package Truc is
+  I : Integer;
+end Truc;
+with Pkg1;
+package Truc.Bidule is
+  use type Pkg1.Public_T;
+  use Pkg1;
+  use
+    type Pkg1.Public_T;
+  use -- comment
+    type -- comment
+    Pkg1.Public_T;
+
+  protected Bidule is
+    entry Basar;
+  private
+    Ok : Boolean;
+  end Bidule;
+
+  protected type Machin_T is
+    entry Truc;
+  private
+    Ok : Boolean;
+  end Machin_T;
+
+end Truc.Bidule;
+package body Truc.Bidule is
+  protected body Bidule is
+    entry Basar when Ok is
+    begin
+      null;
+    end;
+  end Bidule;
+
+  protected body Machin_T is
+    entry Truc when Ok is
+    begin
+      null;
+    end;
+  end Machin_T;
+
+end Truc.Bidule;
diff --git a/test/etags/c-src/a/b/b.c b/test/etags/c-src/a/b/b.c
new file mode 100644
index 0000000..ee3c97c
--- /dev/null
+++ b/test/etags/c-src/a/b/b.c
@@ -0,0 +1,5 @@
+#define this that
+
+#line 33 "../c/c.web"
+
+#define questo quello
diff --git a/test/etags/c-src/abbrev.c b/test/etags/c-src/abbrev.c
new file mode 100644
index 0000000..f30986d
--- /dev/null
+++ b/test/etags/c-src/abbrev.c
@@ -0,0 +1,616 @@
+/* Primitives for word-abbrev mode.
+   Copyright (C) 1985, 1986, 1993, 1996, 1998 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 2, 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; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+
+#include <config.h>
+#include <stdio.h>
+#include "lisp.h"
+#include "commands.h"
+#include "buffer.h"
+#include "window.h"
+#include "charset.h"
+#include "syntax.h"
+
+/* An abbrev table is an obarray.
+ Each defined abbrev is represented by a symbol in that obarray
+ whose print name is the abbreviation.
+ The symbol's value is a string which is the expansion.
+ If its function definition is non-nil, it is called
+  after the expansion is done.
+ The plist slot of the abbrev symbol is its usage count. */
+
+/* List of all abbrev-table name symbols:
+ symbols whose values are abbrev tables.  */
+
+Lisp_Object Vabbrev_table_name_list;
+
+/* The table of global abbrevs.  These are in effect
+ in any buffer in which abbrev mode is turned on. */
+
+Lisp_Object Vglobal_abbrev_table;
+
+/* The local abbrev table used by default (in Fundamental Mode buffers) */
+
+Lisp_Object Vfundamental_mode_abbrev_table;
+
+/* Set nonzero when an abbrev definition is changed */
+
+int abbrevs_changed;
+
+int abbrev_all_caps;
+
+/* Non-nil => use this location as the start of abbrev to expand
+ (rather than taking the word before point as the abbrev) */
+
+Lisp_Object Vabbrev_start_location;
+
+/* Buffer that Vabbrev_start_location applies to */
+Lisp_Object Vabbrev_start_location_buffer;
+
+/* The symbol representing the abbrev most recently expanded */
+
+Lisp_Object Vlast_abbrev;
+
+/* A string for the actual text of the abbrev most recently expanded.
+   This has more info than Vlast_abbrev since case is significant.  */
+
+Lisp_Object Vlast_abbrev_text;
+
+/* Character address of start of last abbrev expanded */
+
+int last_abbrev_point;
+
+/* Hook to run before expanding any abbrev.  */
+
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;
+
+DEFUN ("make-abbrev-table", Fmake_abbrev_table, Smake_abbrev_table, 0, 0, 0,
+  "Create a new, empty abbrev table object.")
+  ()
+{
+  return Fmake_vector (make_number (59), make_number (0));
+}
+
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table, Sclear_abbrev_table, 1, 1, 0,
+  "Undefine all abbrevs in abbrev table TABLE, leaving it empty.")
+  (table)
+     Lisp_Object table;
+{
+  int i, size;
+
+  CHECK_VECTOR (table, 0);
+  size = XVECTOR (table)->size;
+  abbrevs_changed = 1;
+  for (i = 0; i < size; i++)
+    XVECTOR (table)->contents[i] = make_number (0);
+  return Qnil;
+}
+
+DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_abbrev, 3, 5, 0,
+  "Define an abbrev in TABLE named NAME, to expand to EXPANSION and call 
HOOK.\n\
+NAME must be a string.\n\
+EXPANSION should usually be a string.\n\
+To undefine an abbrev, define it with EXPANSION = nil.\n\
+If HOOK is non-nil, it should be a function of no arguments;\n\
+it is called after EXPANSION is inserted.\n\
+If EXPANSION is not a string, the abbrev is a special one,\n\
+ which does not expand in the usual way but only runs HOOK.\n\
+COUNT, if specified, initializes the abbrev's usage-count\n\
+which is incremented each time the abbrev is used.")
+  (table, name, expansion, hook, count)
+     Lisp_Object table, name, expansion, hook, count;
+{
+  Lisp_Object sym, oexp, ohook, tem;
+  CHECK_VECTOR (table, 0);
+  CHECK_STRING (name, 1);
+
+  if (NILP (count))
+    count = make_number (0);
+  else
+    CHECK_NUMBER (count, 0);
+
+  sym = Fintern (name, table);
+
+  oexp = XSYMBOL (sym)->value;
+  ohook = XSYMBOL (sym)->function;
+  if (!((EQ (oexp, expansion)
+        || (STRINGP (oexp) && STRINGP (expansion)
+            && (tem = Fstring_equal (oexp, expansion), !NILP (tem))))
+       &&
+       (EQ (ohook, hook)
+        || (tem = Fequal (ohook, hook), !NILP (tem)))))
+    abbrevs_changed = 1;
+
+  Fset (sym, expansion);
+  Ffset (sym, hook);
+  Fsetplist (sym, count);
+
+  return name;
+}
+
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev, Sdefine_global_abbrev, 
2, 2,
+  "sDefine global abbrev: \nsExpansion for %s: ",
+  "Define ABBREV as a global abbreviation for EXPANSION.")
+  (abbrev, expansion)
+     Lisp_Object abbrev, expansion;
+{
+  Fdefine_abbrev (Vglobal_abbrev_table, Fdowncase (abbrev),
+                 expansion, Qnil, make_number (0));
+  return abbrev;
+}
+
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, Sdefine_mode_abbrev, 2, 2,
+  "sDefine mode abbrev: \nsExpansion for %s: ",
+  "Define ABBREV as a mode-specific abbreviation for EXPANSION.")
+  (abbrev, expansion)
+     Lisp_Object abbrev, expansion;
+{
+  if (NILP (current_buffer->abbrev_table))
+    error ("Major mode has no abbrev table");
+
+  Fdefine_abbrev (current_buffer->abbrev_table, Fdowncase (abbrev),
+                 expansion, Qnil, make_number (0));
+  return abbrev;
+}
+
+DEFUN ("abbrev-symbol", Fabbrev_symbol, Sabbrev_symbol, 1, 2, 0,
+  "Return the symbol representing abbrev named ABBREV.\n\
+This symbol's name is ABBREV, but it is not the canonical symbol of that 
name;\n\
+it is interned in an abbrev-table rather than the normal obarray.\n\
+The value is nil if that abbrev is not defined.\n\
+Optional second arg TABLE is abbrev table to look it up in.\n\
+The default is to try buffer's mode-specific abbrev table, then global table.")
+  (abbrev, table)
+     Lisp_Object abbrev, table;
+{
+  Lisp_Object sym;
+  CHECK_STRING (abbrev, 0);
+  if (!NILP (table))
+    sym = Fintern_soft (abbrev, table);
+  else
+    {
+      sym = Qnil;
+      if (!NILP (current_buffer->abbrev_table))
+       sym = Fintern_soft (abbrev, current_buffer->abbrev_table);
+      if (NILP (XSYMBOL (sym)->value))
+       sym = Qnil;
+      if (NILP (sym))
+       sym = Fintern_soft (abbrev, Vglobal_abbrev_table);
+    }
+  if (NILP (XSYMBOL (sym)->value)) return Qnil;
+  return sym;
+}
+
+DEFUN ("abbrev-expansion", Fabbrev_expansion, Sabbrev_expansion, 1, 2, 0,
+  "Return the string that ABBREV expands into in the current buffer.\n\
+Optionally specify an abbrev table as second arg;\n\
+then ABBREV is looked up in that table only.")
+  (abbrev, table)
+     Lisp_Object abbrev, table;
+{
+  Lisp_Object sym;
+  sym = Fabbrev_symbol (abbrev, table);
+  if (NILP (sym)) return sym;
+  return Fsymbol_value (sym);
+}
+
+/* Expand the word before point, if it is an abbrev.
+  Returns 1 if an expansion is done. */
+
+DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_abbrev, 0, 0, "",
+  "Expand the abbrev before point, if there is an abbrev there.\n\
+Effective when explicitly called even when `abbrev-mode' is nil.\n\
+Returns the abbrev symbol, if expansion took place.")
+  ()
+{
+  register char *buffer, *p;
+  int wordstart, wordend;
+  register int wordstart_byte, wordend_byte, idx;
+  int whitecnt;
+  int uccount = 0, lccount = 0;
+  register Lisp_Object sym;
+  Lisp_Object expansion, hook, tem;
+  Lisp_Object value;
+
+  value = Qnil;
+
+  if (!NILP (Vrun_hooks))
+    call1 (Vrun_hooks, Qpre_abbrev_expand_hook);
+
+  wordstart = 0;
+  if (!(BUFFERP (Vabbrev_start_location_buffer)
+       && XBUFFER (Vabbrev_start_location_buffer) == current_buffer))
+    Vabbrev_start_location = Qnil;
+  if (!NILP (Vabbrev_start_location))
+    {
+      tem = Vabbrev_start_location;
+      CHECK_NUMBER_COERCE_MARKER (tem, 0);
+      wordstart = XINT (tem);
+      Vabbrev_start_location = Qnil;
+      if (wordstart < BEGV || wordstart > ZV)
+       wordstart = 0;
+      if (wordstart && wordstart != ZV)
+       {
+         wordstart_byte = CHAR_TO_BYTE (wordstart);
+         if (FETCH_BYTE (wordstart_byte) == '-')
+           del_range (wordstart, wordstart + 1);
+       }
+    }
+  if (!wordstart)
+    wordstart = scan_words (PT, -1);
+
+  if (!wordstart)
+    return value;
+
+  wordstart_byte = CHAR_TO_BYTE (wordstart);
+  wordend = scan_words (wordstart, 1);
+  if (!wordend)
+    return value;
+
+  if (wordend > PT)
+    wordend = PT;
+
+  wordend_byte = CHAR_TO_BYTE (wordend);
+  whitecnt = PT - wordend;
+  if (wordend <= wordstart)
+    return value;
+
+  p = buffer = (char *) alloca (wordend_byte - wordstart_byte);
+
+  for (idx = wordstart_byte; idx < wordend_byte; idx++)
+    {
+      /* ??? This loop needs to go by characters!  */
+      register int c = FETCH_BYTE (idx);
+      if (UPPERCASEP (c))
+       c = DOWNCASE (c), uccount++;
+      else if (! NOCASEP (c))
+       lccount++;
+      *p++ = c;
+    }
+
+  if (VECTORP (current_buffer->abbrev_table))
+    sym = oblookup (current_buffer->abbrev_table, buffer,
+                   wordend - wordstart, wordend_byte - wordstart_byte);
+  else
+    XSETFASTINT (sym, 0);
+  if (INTEGERP (sym) || NILP (XSYMBOL (sym)->value))
+    sym = oblookup (Vglobal_abbrev_table, buffer,
+                   wordend - wordstart, wordend_byte - wordstart_byte);
+  if (INTEGERP (sym) || NILP (XSYMBOL (sym)->value))
+    return value;
+
+  if (INTERACTIVE && !EQ (minibuf_window, selected_window))
+    {
+      /* Add an undo boundary, in case we are doing this for
+        a self-inserting command which has avoided making one so far.  */
+      SET_PT (wordend);
+      Fundo_boundary ();
+    }
+
+  Vlast_abbrev_text
+    = Fbuffer_substring (make_number (wordstart), make_number (wordend));
+
+  /* Now sym is the abbrev symbol.  */
+  Vlast_abbrev = sym;
+  value = sym;
+  last_abbrev_point = wordstart;
+
+  if (INTEGERP (XSYMBOL (sym)->plist))
+    XSETINT (XSYMBOL (sym)->plist,
+            XINT (XSYMBOL (sym)->plist) + 1);  /* Increment use count */
+
+  /* If this abbrev has an expansion, delete the abbrev
+     and insert the expansion.  */
+  expansion = XSYMBOL (sym)->value;
+  if (STRINGP (expansion))
+    {
+      SET_PT (wordstart);
+
+      del_range_both (wordstart, wordstart_byte, wordend, wordend_byte, 1);
+
+      insert_from_string (expansion, 0, 0, XSTRING (expansion)->size,
+                         STRING_BYTES (XSTRING (expansion)), 1);
+      SET_PT (PT + whitecnt);
+
+      if (uccount && !lccount)
+       {
+         /* Abbrev was all caps */
+         /* If expansion is multiple words, normally capitalize each word */
+         /* This used to be if (!... && ... >= ...) Fcapitalize; else Fupcase
+            but Megatest 68000 compiler can't handle that */
+         if (!abbrev_all_caps)
+           if (scan_words (PT, -1) > scan_words (wordstart, 1))
+             {
+               Fupcase_initials_region (make_number (wordstart),
+                                        make_number (PT));
+               goto caped;
+             }
+         /* If expansion is one word, or if user says so, upcase it all. */
+         Fupcase_region (make_number (wordstart), make_number (PT));
+       caped: ;
+       }
+      else if (uccount)
+       {
+         /* Abbrev included some caps.  Cap first initial of expansion */
+         int pos = wordstart_byte;
+
+         /* Find the initial.  */
+         while (pos < PT_BYTE
+                && SYNTAX (*BUF_BYTE_ADDRESS (current_buffer, pos)) != Sword)
+           pos++;
+
+         /* Change just that.  */
+         pos = BYTE_TO_CHAR (pos);
+         Fupcase_initials_region (make_number (pos), make_number (pos + 1));
+       }
+    }
+
+  hook = XSYMBOL (sym)->function;
+  if (!NILP (hook))
+    {
+      Lisp_Object expanded, prop;
+
+      /* If the abbrev has a hook function, run it.  */
+      expanded = call0 (hook);
+
+      /* In addition, if the hook function is a symbol with a a
+        non-nil `no-self-insert' property, let the value it returned
+        specify whether we consider that an expansion took place.  If
+        it returns nil, no expansion has been done.  */
+
+      if (SYMBOLP (hook)
+         && NILP (expanded)
+         && (prop = Fget (hook, intern ("no-self-insert")),
+             !NILP (prop)))
+       value = Qnil;
+    }
+
+  return value;
+}
+
+DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexpand_abbrev, 0, 0, "",
+  "Undo the expansion of the last abbrev that expanded.\n\
+This differs from ordinary undo in that other editing done since then\n\
+is not undone.")
+  ()
+{
+  int opoint = PT;
+  int adjust = 0;
+  if (last_abbrev_point < BEGV
+      || last_abbrev_point > ZV)
+    return Qnil;
+  SET_PT (last_abbrev_point);
+  if (STRINGP (Vlast_abbrev_text))
+    {
+      /* This isn't correct if Vlast_abbrev->function was used
+         to do the expansion */
+      Lisp_Object val;
+      int zv_before;
+
+      val = XSYMBOL (Vlast_abbrev)->value;
+      if (!STRINGP (val))
+       error ("value of abbrev-symbol must be a string");
+      zv_before = ZV;
+      del_range_byte (PT_BYTE, PT_BYTE + STRING_BYTES (XSTRING (val)), 1);
+      /* Don't inherit properties here; just copy from old contents.  */
+      insert_from_string (Vlast_abbrev_text, 0, 0,
+                         XSTRING (Vlast_abbrev_text)->size,
+                         STRING_BYTES (XSTRING (Vlast_abbrev_text)), 0);
+      Vlast_abbrev_text = Qnil;
+      /* Total number of characters deleted.  */
+      adjust = ZV - zv_before;
+    }
+  SET_PT (last_abbrev_point < opoint ? opoint + adjust : opoint);
+  return Qnil;
+}
+
+static void
+write_abbrev (sym, stream)
+     Lisp_Object sym, stream;
+{
+  Lisp_Object name;
+  if (NILP (XSYMBOL (sym)->value))
+    return;
+  insert ("    (", 5);
+  XSETSTRING (name, XSYMBOL (sym)->name);
+  Fprin1 (name, stream);
+  insert (" ", 1);
+  Fprin1 (XSYMBOL (sym)->value, stream);
+  insert (" ", 1);
+  Fprin1 (XSYMBOL (sym)->function, stream);
+  insert (" ", 1);
+  Fprin1 (XSYMBOL (sym)->plist, stream);
+  insert (")\n", 2);
+}
+
+static void
+describe_abbrev (sym, stream)
+     Lisp_Object sym, stream;
+{
+  Lisp_Object one;
+
+  if (NILP (XSYMBOL (sym)->value))
+    return;
+  one = make_number (1);
+  Fprin1 (Fsymbol_name (sym), stream);
+  Findent_to (make_number (15), one);
+  Fprin1 (XSYMBOL (sym)->plist, stream);
+  Findent_to (make_number (20), one);
+  Fprin1 (XSYMBOL (sym)->value, stream);
+  if (!NILP (XSYMBOL (sym)->function))
+    {
+      Findent_to (make_number (45), one);
+      Fprin1 (XSYMBOL (sym)->function, stream);
+    }
+  Fterpri (stream);
+}
+
+DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,
+  Sinsert_abbrev_table_description, 1, 2, 0,
+  "Insert before point a full description of abbrev table named NAME.\n\
+NAME is a symbol whose value is an abbrev table.\n\
+If optional 2nd arg READABLE is non-nil, a human-readable description\n\
+is inserted.  Otherwise the description is an expression,\n\
+a call to `define-abbrev-table', which would\n\
+define the abbrev table NAME exactly as it is currently defined.")
+  (name, readable)
+     Lisp_Object name, readable;
+{
+  Lisp_Object table;
+  Lisp_Object stream;
+
+  CHECK_SYMBOL (name, 0);
+  table = Fsymbol_value (name);
+  CHECK_VECTOR (table, 0);
+
+  XSETBUFFER (stream, current_buffer);
+
+  if (!NILP (readable))
+    {
+      insert_string ("(");
+      Fprin1 (name, stream);
+      insert_string (")\n\n");
+      map_obarray (table, describe_abbrev, stream);
+      insert_string ("\n\n");
+    }
+  else
+    {
+      insert_string ("(define-abbrev-table '");
+      Fprin1 (name, stream);
+      insert_string (" '(\n");
+      map_obarray (table, write_abbrev, stream);
+      insert_string ("    ))\n\n");
+    }
+
+  return Qnil;
+}
+
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table, Sdefine_abbrev_table,
+       2, 2, 0,
+  "Define TABLENAME (a symbol) as an abbrev table name.\n\
+Define abbrevs in it according to DEFINITIONS, which is a list of elements\n\
+of the form (ABBREVNAME EXPANSION HOOK USECOUNT).")
+  (tablename, definitions)
+     Lisp_Object tablename, definitions;
+{
+  Lisp_Object name, exp, hook, count;
+  Lisp_Object table, elt;
+
+  CHECK_SYMBOL (tablename, 0);
+  table = Fboundp (tablename);
+  if (NILP (table) || (table = Fsymbol_value (tablename), NILP (table)))
+    {
+      table = Fmake_abbrev_table ();
+      Fset (tablename, table);
+      Vabbrev_table_name_list = Fcons (tablename, Vabbrev_table_name_list);
+    }
+  CHECK_VECTOR (table, 0);
+
+  for (; !NILP (definitions); definitions = Fcdr (definitions))
+    {
+      elt = Fcar (definitions);
+      name  = Fcar (elt);      elt = Fcdr (elt);
+      exp   = Fcar (elt);      elt = Fcdr (elt);
+      hook  = Fcar (elt);      elt = Fcdr (elt);
+      count = Fcar (elt);
+      Fdefine_abbrev (table, name, exp, hook, count);
+    }
+  return Qnil;
+}
+
+void
+syms_of_abbrev ()
+{
+  DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_table_name_list,
+    "List of symbols whose values are abbrev tables.");
+  Vabbrev_table_name_list = Fcons (intern ("fundamental-mode-abbrev-table"),
+                                  Fcons (intern ("global-abbrev-table"),
+                                         Qnil));
+
+  DEFVAR_LISP ("global-abbrev-table", &Vglobal_abbrev_table,
+    "The abbrev table whose abbrevs affect all buffers.\n\
+Each buffer may also have a local abbrev table.\n\
+If it does, the local table overrides the global one\n\
+for any particular abbrev defined in both.");
+  Vglobal_abbrev_table = Fmake_abbrev_table ();
+
+  DEFVAR_LISP ("fundamental-mode-abbrev-table", 
&Vfundamental_mode_abbrev_table,
+    "The abbrev table of mode-specific abbrevs for Fundamental Mode.");
+  Vfundamental_mode_abbrev_table = Fmake_abbrev_table ();
+  current_buffer->abbrev_table = Vfundamental_mode_abbrev_table;
+  buffer_defaults.abbrev_table = Vfundamental_mode_abbrev_table;
+
+  DEFVAR_LISP ("last-abbrev", &Vlast_abbrev,
+    "The abbrev-symbol of the last abbrev expanded.  See `abbrev-symbol'.");
+
+  DEFVAR_LISP ("last-abbrev-text", &Vlast_abbrev_text,
+    "The exact text of the last abbrev expanded.\n\
+nil if the abbrev has already been unexpanded.");
+
+  DEFVAR_INT ("last-abbrev-location", &last_abbrev_point,
+    "The location of the start of the last abbrev expanded.");
+
+  Vlast_abbrev = Qnil;
+  Vlast_abbrev_text = Qnil;
+  last_abbrev_point = 0;
+
+  DEFVAR_LISP ("abbrev-start-location", &Vabbrev_start_location,
+    "Buffer position for `expand-abbrev' to use as the start of the abbrev.\n\
+nil means use the word before point as the abbrev.\n\
+Calling `expand-abbrev' sets this to nil.");
+  Vabbrev_start_location = Qnil;
+
+  DEFVAR_LISP ("abbrev-start-location-buffer", &Vabbrev_start_location_buffer,
+    "Buffer that `abbrev-start-location' has been set for.\n\
+Trying to expand an abbrev in any other buffer clears 
`abbrev-start-location'.");
+  Vabbrev_start_location_buffer = Qnil;
+
+  DEFVAR_PER_BUFFER ("local-abbrev-table", &current_buffer->abbrev_table, Qnil,
+    "Local (mode-specific) abbrev table of current buffer.");
+
+  DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed,
+    "Set non-nil by defining or altering any word abbrevs.\n\
+This causes `save-some-buffers' to offer to save the abbrevs.");
+  abbrevs_changed = 0;
+
+  DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps,
+    "*Set non-nil means expand multi-word abbrevs all caps if abbrev was so.");
+  abbrev_all_caps = 0;
+
+  DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abbrev_expand_hook,
+    "Function or functions to be called before abbrev expansion is done.\n\
+This is the first thing that `expand-abbrev' does, and so this may change\n\
+the current abbrev table before abbrev lookup happens.");
+  Vpre_abbrev_expand_hook = Qnil;
+  Qpre_abbrev_expand_hook = intern ("pre-abbrev-expand-hook");
+  staticpro (&Qpre_abbrev_expand_hook);
+
+  defsubr (&Smake_abbrev_table);
+  defsubr (&Sclear_abbrev_table);
+  defsubr (&Sdefine_abbrev);
+  defsubr (&Sdefine_global_abbrev);
+  defsubr (&Sdefine_mode_abbrev);
+  defsubr (&Sabbrev_expansion);
+  defsubr (&Sabbrev_symbol);
+  defsubr (&Sexpand_abbrev);
+  defsubr (&Sunexpand_abbrev);
+  defsubr (&Sinsert_abbrev_table_description);
+  defsubr (&Sdefine_abbrev_table);
+}
diff --git a/test/etags/c-src/c.c b/test/etags/c-src/c.c
new file mode 100644
index 0000000..77c8929
--- /dev/null
+++ b/test/etags/c-src/c.c
@@ -0,0 +1,169 @@
+T f(){if(x){}
+}T i;
+
+// The next two functions must be kept together
+void bar() {while(0) {}}
+int foobar() {;}
+
+struct interface *
+interface_locate(void)
+{ return 0; }
+
+#line 123 "c.c"
+// 7.4: string literal in #line directive shall be a character string
+//      literal.
+//E t_6_062.cpp(21): warning: ill formed #line directive: 123 L"wide"
+#line 123                                      L"wide.c"
+#line 123 L"wide.c"
+#line 123L"wide.c"
+
+
+void (*fa) (void);
+void (__attribute__((noreturn)) *fb) (void);
+
+extern int
+my_printf (void *my_object, const char *my_format, ...)
+     __attribute__ ((format (printf, 2, 3)));
+
+void fatala () __attribute__ ((noreturn));
+void fatalb ();
+
+max (int a, int b)
+{ if (a > b) return a; else return b; }
+struct bar {
+  char z;
+  struct foo f;
+};
+__attribute__ ((always_inline)) max (int a, int b)
+{ if (a > b) return a; else return b }
+extern int old_var __attribute__ ((deprecated));
+struct foo
+{
+  char a;
+  int x[2] __attribute__ ((packed));
+};
+char stack[10000] __attribute__ ((section ("STACK"))) = { 0 };
+struct S { short f[3]; } __attribute__ ((aligned (8)));
+typedef union
+{
+  int *__ip;
+  union wait *__up;
+} wait_status_ptr_t __attribute__ ((__transparent_union__));
+Some_Class  A  __attribute__ ((init_priority (2000)));
+typedef T1 T3 __attribute__ ((deprecated));
+T3 z __attribute__ ((deprecated));
+typedef int more_aligned_int __attribute__ ((aligned (8)));
+struct S  __attribute__ ((vector_size (16))) foo;
+int foo __attribute__ ((vector_size (16)));
+char *__attribute__((aligned(8))) *f;
+int i __attribute__ ((visibility ("hidden")));
+extern void foobar (void) __attribute__ ((section ("bar")));
+
+typedef struct cacheLRUEntry_s
+{
+  U16 next;
+  U16 prev;
+}
+__attribute__ ((packed)) cacheLRUEntry_t;
+struct foo {
+  int x;
+  char a, b, c, d;
+} __attribute__((packed));
+void __attribute__ ((visibility ("protected")))
+     f1 () { /* Do something. */; }
+void f2 () { /* Do something. */; }
+__attribute__((noreturn)) void d0 (void),
+  __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
+  d2 (void);
+int x __attribute__ ((aligned (16))) = 0;
+struct foo { int x[2] __attribute__ ((aligned (8))); };
+short array[3] __attribute__ ((aligned));
+
+asm("  section 10");
+int f
+       () {}
+
+DEAFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0,
+  "name.")
+     (name, defalt)
+     Lisp_Object name, defalt;
+{
+  unsigned char *nm;
+}
+XDEFUN ("x-get-selection-internal", Fx_get_selection_internal,
+       Sx_get_selection_internal, 2, 2, 0, "")
+{}
+DEFUN ("x-get-selection-internal", Fx_get_selection_internal,
+       Sx_get_selection_internal, 2, 2, 0, "")
+{}
+/* The next two are not tagged correctly.  To prevent this, the code in
+   Emacs should contain the two first args of DEFUN on the same line. */
+DEFUN ("x-get-selection-internal",
+       Fx_get_selection_internal, Sx_get_selection_internal, 2, 2, 0, "")
+{}
+DEFUN
+     ("y-get-selection-internal",
+      Fy_get_selection_internal, Sy_get_selection_internal, 2, 2, 0, "")
+{}
+defun_func1()
+{}
+DEFUN_func2()
+{}
+typedef int bool;
+bool funcboo ()
+{}
+static void (*lang_func) () = NULL;
+struct my_struct {
+};
+typedef struct my_struct my_typedef;
+int bla ()
+{
+  PrkList ExistingOperations =
+      ProcedureOperationSelections(PrkNull, CalledFromDomain);
+}
+a()
+ b c;
+{}
+int func1
+  (a,b,c,d) {};
+static struct cca_control init_control = { 0 };
+static tpcmd rbtp [RB_TPSZ];
+static byte ring1 [(RBUFNO + 1) + 8];
+static byte ring2 [(RBUFNO + 1) * sizeof (struct le_md) + 8];
+request request (a, b)
+{
+}
+int func2 (a,b
+         c,d) {};
+int wrongfunc
+  aaa;
+struct wrongstruct
+  bbb;
+struct sss1 {};
+struct sss2
+{
+  struct ss3
+    {
+    };
+};
+struct a b;
+struct aa *b;
+struct aaa
+  **b;
+caccacacca (a,b,c,d,e,f,g)
+     struct aa *b;
+{
+}
+a ()
+{
+  typedef struct aa {} aaa;
+}
+static void inita () {}
+node *lasta = NULL;
+b ()
+{
+  typedef  int bb;
+}
+static void initb () {}
+node *lastb = NULL;
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;
diff --git a/test/etags/c-src/dostorture.c b/test/etags/c-src/dostorture.c
new file mode 100644
index 0000000..5190734
--- /dev/null
+++ b/test/etags/c-src/dostorture.c
@@ -0,0 +1,107 @@
+/* Date: Thu, 05 Aug 1993 20:28:03 +0200
+   From: "Tom R.Hageman" <address@hidden>
+   Subject: more etags torture;-) [etags 7.3 patch#3]
+   To: address@hidden
+
+   Hi,
+
+   This test file illustrates some more problems with etags (7.3):
+
+
+   1. parentheses are confusing,
+   2. preprocessor directives can disrupt other state machines. */
+
+/* A small torture test for etags. */
+
+/* The classic parenthesis nightmare, based on signal(). */
+void
+(*tag1 (sig, handler)) ()
+  int sig;
+  void (*handler) ();
+{
+  (*handler)(sig);
+  return handler;
+}
+
+#define notag2 void
+/* The classic, with user-defined return type. */
+notag2
+(*tag2 (sig, handler)) ()
+  int sig;
+  void (*handler) ();
+{
+  (*handler)(sig);
+  return handler;
+}
+
+/* The classic, in ANSI C style. */
+void
+(*tag3 (int sig, void (*handler) (int))) (int)
+{
+  (*handler)(sig);
+  return handler;
+}
+
+#define notag4 void
+/* The classic, with user-defined return type, in ANSI C style. */
+notag4
+(*tag4 (int sig, void (*handler) (int))) (int)
+{
+  (*handler)(sig);
+  return handler;
+}
+
+
+/* A less tortuous example. */
+void
+tag5 (handler, arg)
+void (*handler)();
+void *arg;
+{
+  (*handler)(arg);
+}
+
+/* A less tortuous example, in ANSI C style. */
+void
+tag6 (void (*handler) (void *), void *arg)
+{
+  (*handler)(arg);
+}
+
+
+/* Interfering preprocessing torture */
+
+int pp1(
+#if (__STDC__)
+       int
+#endif
+       bar)
+#if (!__STDC__)
+     int bar;
+#endif
+{
+  return bar;
+}
+
+int
+pp2
+#if __STDC__
+  (int bar)
+#else
+  (bar)
+    int bar;
+#endif
+{
+  return bar;
+}
+
+int
+#if __STDC__
+pp3(int bar)
+#else
+pp3(bar)
+  int bar;
+#endif
+{
+  return bar;
+}
diff --git a/test/etags/c-src/emacs/src/gmalloc.c 
b/test/etags/c-src/emacs/src/gmalloc.c
new file mode 100644
index 0000000..a88f4ab
--- /dev/null
+++ b/test/etags/c-src/emacs/src/gmalloc.c
@@ -0,0 +1,2040 @@
+/* Declarations for `malloc' and friends.
+   Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2015 Free
+   Software Foundation, Inc.
+                 Written May 1989 by Mike Haertel.
+
+This library 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 2 of the
+License, or (at your option) any later version.
+
+This library 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 library.  If not, see <http://www.gnu.org/licenses/>.
+
+   The author may be reached (Email) at the address address@hidden,
+   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
+
+#include <config.h>
+
+#if defined HAVE_PTHREAD && !defined HYBRID_MALLOC
+#define USE_PTHREAD
+#endif
+
+#include <string.h>
+#include <limits.h>
+#include <stdint.h>
+
+#ifdef HYBRID_GET_CURRENT_DIR_NAME
+#undef get_current_dir_name
+#endif
+
+#include <unistd.h>
+
+#ifdef USE_PTHREAD
+#include <pthread.h>
+#endif
+
+#ifdef WINDOWSNT
+#include <w32heap.h>   /* for sbrk */
+#endif
+
+#ifdef emacs
+extern void emacs_abort (void);
+#endif
+
+/* If HYBRID_MALLOC is defined, then temacs will use malloc,
+   realloc... as defined in this file (and renamed gmalloc,
+   grealloc... via the macros that follow).  The dumped emacs,
+   however, will use the system malloc, realloc....  In other source
+   files, malloc, realloc... are renamed hybrid_malloc,
+   hybrid_realloc... via macros in conf_post.h.  hybrid_malloc and
+   friends are wrapper functions defined later in this file.
+   aligned_alloc is defined as a macro only in alloc.c.
+
+   As of this writing (August 2014), Cygwin is the only platform on
+   which HYBRID_MACRO is defined.  Any other platform that wants to
+   define it will have to define the macros DUMPED and
+   ALLOCATED_BEFORE_DUMPING, defined below for Cygwin.  */
+#ifdef HYBRID_MALLOC
+#undef malloc
+#undef realloc
+#undef calloc
+#undef free
+#define malloc gmalloc
+#define realloc grealloc
+#define calloc gcalloc
+#define aligned_alloc galigned_alloc
+#define free gfree
+#endif  /* HYBRID_MALLOC */
+
+#ifdef CYGWIN
+extern void *bss_sbrk (ptrdiff_t size);
+extern int bss_sbrk_did_unexec;
+extern char bss_sbrk_buffer[];
+extern void *bss_sbrk_buffer_end;
+#define DUMPED bss_sbrk_did_unexec
+#define ALLOCATED_BEFORE_DUMPING(P) \
+  ((P) < bss_sbrk_buffer_end && (P) >= (void *) bss_sbrk_buffer)
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <stddef.h>
+
+
+/* Allocate SIZE bytes of memory.  */
+extern void *malloc (size_t size) ATTRIBUTE_MALLOC_SIZE ((1));
+/* Re-allocate the previously allocated block
+   in ptr, making the new block SIZE bytes long.  */
+extern void *realloc (void *ptr, size_t size) ATTRIBUTE_ALLOC_SIZE ((2));
+/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
+extern void *calloc (size_t nmemb, size_t size) ATTRIBUTE_MALLOC_SIZE ((1,2));
+/* Free a block allocated by `malloc', `realloc' or `calloc'.  */
+extern void free (void *ptr);
+
+/* Allocate SIZE bytes allocated to ALIGNMENT bytes.  */
+#ifdef MSDOS
+extern void *aligned_alloc (size_t, size_t);
+extern void *memalign (size_t, size_t);
+extern int posix_memalign (void **, size_t, size_t);
+#endif
+
+#ifdef USE_PTHREAD
+/* Set up mutexes and make malloc etc. thread-safe.  */
+extern void malloc_enable_thread (void);
+#endif
+
+#ifdef emacs
+extern void emacs_abort (void);
+#endif
+
+/* The allocator divides the heap into blocks of fixed size; large
+   requests receive one or more whole blocks, and small requests
+   receive a fragment of a block.  Fragment sizes are powers of two,
+   and all fragments of a block are the same size.  When all the
+   fragments in a block have been freed, the block itself is freed.  */
+#define INT_BIT                (CHAR_BIT * sizeof (int))
+#define BLOCKLOG       (INT_BIT > 16 ? 12 : 9)
+#define BLOCKSIZE      (1 << BLOCKLOG)
+#define BLOCKIFY(SIZE) (((SIZE) + BLOCKSIZE - 1) / BLOCKSIZE)
+
+/* Determine the amount of memory spanned by the initial heap table
+   (not an absolute limit).  */
+#define HEAP           (INT_BIT > 16 ? 4194304 : 65536)
+
+/* Number of contiguous free blocks allowed to build up at the end of
+   memory before they will be returned to the system.  */
+#define FINAL_FREE_BLOCKS      8
+
+/* Data structure giving per-block information.  */
+typedef union
+  {
+    /* Heap information for a busy block.  */
+    struct
+      {
+       /* Zero for a large (multiblock) object, or positive giving the
+          logarithm to the base two of the fragment size.  */
+       int type;
+       union
+         {
+           struct
+             {
+               size_t nfree; /* Free frags in a fragmented block.  */
+               size_t first; /* First free fragment of the block.  */
+             } frag;
+           /* For a large object, in its first block, this has the number
+              of blocks in the object.  In the other blocks, this has a
+              negative number which says how far back the first block is.  */
+           ptrdiff_t size;
+         } info;
+      } busy;
+    /* Heap information for a free block
+       (that may be the first of a free cluster).  */
+    struct
+      {
+       size_t size;    /* Size (in blocks) of a free cluster.  */
+       size_t next;    /* Index of next free cluster.  */
+       size_t prev;    /* Index of previous free cluster.  */
+      } free;
+  } malloc_info;
+
+/* Pointer to first block of the heap.  */
+extern char *_heapbase;
+
+/* Table indexed by block number giving per-block information.  */
+extern malloc_info *_heapinfo;
+
+/* Address to block number and vice versa.  */
+#define BLOCK(A)       (((char *) (A) - _heapbase) / BLOCKSIZE + 1)
+#define ADDRESS(B)     ((void *) (((B) - 1) * BLOCKSIZE + _heapbase))
+
+/* Current search index for the heap table.  */
+extern size_t _heapindex;
+
+/* Limit of valid info table indices.  */
+extern size_t _heaplimit;
+
+/* Doubly linked lists of free fragments.  */
+struct list
+  {
+    struct list *next;
+    struct list *prev;
+  };
+
+/* Free list headers for each fragment size.  */
+extern struct list _fraghead[];
+
+/* List of blocks allocated with aligned_alloc and friends.  */
+struct alignlist
+  {
+    struct alignlist *next;
+    void *aligned;             /* The address that aligned_alloc returned.  */
+    void *exact;               /* The address that malloc returned.  */
+  };
+extern struct alignlist *_aligned_blocks;
+
+/* Instrumentation.  */
+extern size_t _chunks_used;
+extern size_t _bytes_used;
+extern size_t _chunks_free;
+extern size_t _bytes_free;
+
+/* Internal versions of `malloc', `realloc', and `free'
+   used when these functions need to call each other.
+   They are the same but don't call the hooks.  */
+extern void *_malloc_internal (size_t);
+extern void *_realloc_internal (void *, size_t);
+extern void _free_internal (void *);
+extern void *_malloc_internal_nolock (size_t);
+extern void *_realloc_internal_nolock (void *, size_t);
+extern void _free_internal_nolock (void *);
+
+#ifdef USE_PTHREAD
+extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;
+extern int _malloc_thread_enabled_p;
+#define LOCK()                                 \
+  do {                                         \
+    if (_malloc_thread_enabled_p)              \
+      pthread_mutex_lock (&_malloc_mutex);     \
+  } while (0)
+#define UNLOCK()                               \
+  do {                                         \
+    if (_malloc_thread_enabled_p)              \
+      pthread_mutex_unlock (&_malloc_mutex);   \
+  } while (0)
+#define LOCK_ALIGNED_BLOCKS()                          \
+  do {                                                 \
+    if (_malloc_thread_enabled_p)                      \
+      pthread_mutex_lock (&_aligned_blocks_mutex);     \
+  } while (0)
+#define UNLOCK_ALIGNED_BLOCKS()                                \
+  do {                                                 \
+    if (_malloc_thread_enabled_p)                      \
+      pthread_mutex_unlock (&_aligned_blocks_mutex);   \
+  } while (0)
+#else
+#define LOCK()
+#define UNLOCK()
+#define LOCK_ALIGNED_BLOCKS()
+#define UNLOCK_ALIGNED_BLOCKS()
+#endif
+
+/* Given an address in the middle of a malloc'd object,
+   return the address of the beginning of the object.  */
+extern void *malloc_find_object_address (void *ptr);
+
+/* Underlying allocation function; successive calls should
+   return contiguous pieces of memory.  */
+extern void *(*__morecore) (ptrdiff_t size);
+
+/* Default value of `__morecore'.  */
+extern void *__default_morecore (ptrdiff_t size);
+
+/* If not NULL, this function is called after each time
+   `__morecore' is called to increase the data size.  */
+extern void (*__after_morecore_hook) (void);
+
+/* Number of extra blocks to get each time we ask for more core.
+   This reduces the frequency of calling `(*__morecore)'.  */
+extern size_t __malloc_extra_blocks;
+
+/* Nonzero if `malloc' has been called and done its initialization.  */
+extern int __malloc_initialized;
+/* Function called to initialize malloc data structures.  */
+extern int __malloc_initialize (void);
+
+/* Hooks for debugging versions.  */
+extern void (*__malloc_initialize_hook) (void);
+extern void (*__free_hook) (void *ptr);
+extern void *(*__malloc_hook) (size_t size);
+extern void *(*__realloc_hook) (void *ptr, size_t size);
+extern void *(*__memalign_hook) (size_t size, size_t alignment);
+
+/* Return values for `mprobe': these are the kinds of inconsistencies that
+   `mcheck' enables detection of.  */
+enum mcheck_status
+  {
+    MCHECK_DISABLED = -1,      /* Consistency checking is not turned on.  */
+    MCHECK_OK,                 /* Block is fine.  */
+    MCHECK_FREE,               /* Block freed twice.  */
+    MCHECK_HEAD,               /* Memory before the block was clobbered.  */
+    MCHECK_TAIL                        /* Memory after the block was 
clobbered.  */
+  };
+
+/* Activate a standard collection of debugging hooks.  This must be called
+   before `malloc' is ever called.  ABORTFUNC is called with an error code
+   (see enum above) when an inconsistency is detected.  If ABORTFUNC is
+   null, the standard function prints on stderr and then calls `abort'.  */
+extern int mcheck (void (*abortfunc) (enum mcheck_status));
+
+/* Check for aberrations in a particular malloc'd block.  You must have
+   called `mcheck' already.  These are the same checks that `mcheck' does
+   when you free or reallocate a block.  */
+extern enum mcheck_status mprobe (void *ptr);
+
+/* Activate a standard collection of tracing hooks.  */
+extern void mtrace (void);
+extern void muntrace (void);
+
+/* Statistics available to the user.  */
+struct mstats
+  {
+    size_t bytes_total;        /* Total size of the heap. */
+    size_t chunks_used;        /* Chunks allocated by the user. */
+    size_t bytes_used; /* Byte total of user-allocated chunks. */
+    size_t chunks_free;        /* Chunks in the free list. */
+    size_t bytes_free; /* Byte total of chunks in the free list. */
+  };
+
+/* Pick up the current statistics. */
+extern struct mstats mstats (void);
+
+/* Call WARNFUN with a warning message when memory usage is high.  */
+extern void memory_warnings (void *start, void (*warnfun) (const char *));
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Memory allocator `malloc'.
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+                 Written May 1989 by Mike Haertel.
+
+This library 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 2 of the
+License, or (at your option) any later version.
+
+This library 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 library.  If not, see <http://www.gnu.org/licenses/>.
+
+   The author may be reached (Email) at the address address@hidden,
+   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
+
+#include <errno.h>
+
+void *(*__morecore) (ptrdiff_t size) = __default_morecore;
+
+/* Debugging hook for `malloc'.  */
+void *(*__malloc_hook) (size_t size);
+
+/* Pointer to the base of the first block.  */
+char *_heapbase;
+
+/* Block information table.  Allocated with align/__free (not malloc/free).  */
+malloc_info *_heapinfo;
+
+/* Number of info entries.  */
+static size_t heapsize;
+
+/* Search index in the info table.  */
+size_t _heapindex;
+
+/* Limit of valid info table indices.  */
+size_t _heaplimit;
+
+/* Free lists for each fragment size.  */
+struct list _fraghead[BLOCKLOG];
+
+/* Instrumentation.  */
+size_t _chunks_used;
+size_t _bytes_used;
+size_t _chunks_free;
+size_t _bytes_free;
+
+/* Are you experienced?  */
+int __malloc_initialized;
+
+size_t __malloc_extra_blocks;
+
+void (*__malloc_initialize_hook) (void);
+void (*__after_morecore_hook) (void);
+
+#if defined GC_MALLOC_CHECK && defined GC_PROTECT_MALLOC_STATE
+
+/* Some code for hunting a bug writing into _heapinfo.
+
+   Call this macro with argument PROT non-zero to protect internal
+   malloc state against writing to it, call it with a zero argument to
+   make it readable and writable.
+
+   Note that this only works if BLOCKSIZE == page size, which is
+   the case on the i386.  */
+
+#include <sys/types.h>
+#include <sys/mman.h>
+
+static int state_protected_p;
+static size_t last_state_size;
+static malloc_info *last_heapinfo;
+
+void
+protect_malloc_state (int protect_p)
+{
+  /* If _heapinfo has been relocated, make sure its old location
+     isn't left read-only; it will be reused by malloc.  */
+  if (_heapinfo != last_heapinfo
+      && last_heapinfo
+      && state_protected_p)
+    mprotect (last_heapinfo, last_state_size, PROT_READ | PROT_WRITE);
+
+  last_state_size = _heaplimit * sizeof *_heapinfo;
+  last_heapinfo   = _heapinfo;
+
+  if (protect_p != state_protected_p)
+    {
+      state_protected_p = protect_p;
+      if (mprotect (_heapinfo, last_state_size,
+                   protect_p ? PROT_READ : PROT_READ | PROT_WRITE) != 0)
+       abort ();
+    }
+}
+
+#define PROTECT_MALLOC_STATE(PROT) protect_malloc_state (PROT)
+
+#else
+#define PROTECT_MALLOC_STATE(PROT)     /* empty */
+#endif
+
+
+/* Aligned allocation.  */
+static void *
+align (size_t size)
+{
+  void *result;
+  ptrdiff_t adj;
+
+  /* align accepts an unsigned argument, but __morecore accepts a
+     signed one.  This could lead to trouble if SIZE overflows the
+     ptrdiff_t type accepted by __morecore.  We just punt in that
+     case, since they are requesting a ludicrous amount anyway.  */
+  if (PTRDIFF_MAX < size)
+    result = 0;
+  else
+    result = (*__morecore) (size);
+  adj = (uintptr_t) result % BLOCKSIZE;
+  if (adj != 0)
+    {
+      adj = BLOCKSIZE - adj;
+      (*__morecore) (adj);
+      result = (char *) result + adj;
+    }
+
+  if (__after_morecore_hook)
+    (*__after_morecore_hook) ();
+
+  return result;
+}
+
+/* Get SIZE bytes, if we can get them starting at END.
+   Return the address of the space we got.
+   If we cannot get space at END, fail and return 0.  */
+static void *
+get_contiguous_space (ptrdiff_t size, void *position)
+{
+  void *before;
+  void *after;
+
+  before = (*__morecore) (0);
+  /* If we can tell in advance that the break is at the wrong place,
+     fail now.  */
+  if (before != position)
+    return 0;
+
+  /* Allocate SIZE bytes and get the address of them.  */
+  after = (*__morecore) (size);
+  if (!after)
+    return 0;
+
+  /* It was not contiguous--reject it.  */
+  if (after != position)
+    {
+      (*__morecore) (- size);
+      return 0;
+    }
+
+  return after;
+}
+
+
+/* This is called when `_heapinfo' and `heapsize' have just
+   been set to describe a new info table.  Set up the table
+   to describe itself and account for it in the statistics.  */
+static void
+register_heapinfo (void)
+{
+  size_t block, blocks;
+
+  block = BLOCK (_heapinfo);
+  blocks = BLOCKIFY (heapsize * sizeof (malloc_info));
+
+  /* Account for the _heapinfo block itself in the statistics.  */
+  _bytes_used += blocks * BLOCKSIZE;
+  ++_chunks_used;
+
+  /* Describe the heapinfo block itself in the heapinfo.  */
+  _heapinfo[block].busy.type = 0;
+  _heapinfo[block].busy.info.size = blocks;
+  /* Leave back-pointers for malloc_find_address.  */
+  while (--blocks > 0)
+    _heapinfo[block + blocks].busy.info.size = -blocks;
+}
+
+#ifdef USE_PTHREAD
+pthread_mutex_t _malloc_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t _aligned_blocks_mutex = PTHREAD_MUTEX_INITIALIZER;
+int _malloc_thread_enabled_p;
+
+static void
+malloc_atfork_handler_prepare (void)
+{
+  LOCK ();
+  LOCK_ALIGNED_BLOCKS ();
+}
+
+static void
+malloc_atfork_handler_parent (void)
+{
+  UNLOCK_ALIGNED_BLOCKS ();
+  UNLOCK ();
+}
+
+static void
+malloc_atfork_handler_child (void)
+{
+  UNLOCK_ALIGNED_BLOCKS ();
+  UNLOCK ();
+}
+
+/* Set up mutexes and make malloc etc. thread-safe.  */
+void
+malloc_enable_thread (void)
+{
+  if (_malloc_thread_enabled_p)
+    return;
+
+  /* Some pthread implementations call malloc for statically
+     initialized mutexes when they are used first.  To avoid such a
+     situation, we initialize mutexes here while their use is
+     disabled in malloc etc.  */
+  pthread_mutex_init (&_malloc_mutex, NULL);
+  pthread_mutex_init (&_aligned_blocks_mutex, NULL);
+  pthread_atfork (malloc_atfork_handler_prepare,
+                 malloc_atfork_handler_parent,
+                 malloc_atfork_handler_child);
+  _malloc_thread_enabled_p = 1;
+}
+#endif /* USE_PTHREAD */
+
+static void
+malloc_initialize_1 (void)
+{
+#ifdef GC_MCHECK
+  mcheck (NULL);
+#endif
+
+  if (__malloc_initialize_hook)
+    (*__malloc_initialize_hook) ();
+
+  heapsize = HEAP / BLOCKSIZE;
+  _heapinfo = align (heapsize * sizeof (malloc_info));
+  if (_heapinfo == NULL)
+    return;
+  memset (_heapinfo, 0, heapsize * sizeof (malloc_info));
+  _heapinfo[0].free.size = 0;
+  _heapinfo[0].free.next = _heapinfo[0].free.prev = 0;
+  _heapindex = 0;
+  _heapbase = (char *) _heapinfo;
+  _heaplimit = BLOCK (_heapbase + heapsize * sizeof (malloc_info));
+
+  register_heapinfo ();
+
+  __malloc_initialized = 1;
+  PROTECT_MALLOC_STATE (1);
+  return;
+}
+
+/* Set everything up and remember that we have.
+   main will call malloc which calls this function.  That is before any threads
+   or signal handlers has been set up, so we don't need thread protection.  */
+int
+__malloc_initialize (void)
+{
+  if (__malloc_initialized)
+    return 0;
+
+  malloc_initialize_1 ();
+
+  return __malloc_initialized;
+}
+
+static int morecore_recursing;
+
+/* Get neatly aligned memory, initializing or
+   growing the heap info table as necessary. */
+static void *
+morecore_nolock (size_t size)
+{
+  void *result;
+  malloc_info *newinfo, *oldinfo;
+  size_t newsize;
+
+  if (morecore_recursing)
+    /* Avoid recursion.  The caller will know how to handle a null return.  */
+    return NULL;
+
+  result = align (size);
+  if (result == NULL)
+    return NULL;
+
+  PROTECT_MALLOC_STATE (0);
+
+  /* Check if we need to grow the info table.  */
+  if ((size_t) BLOCK ((char *) result + size) > heapsize)
+    {
+      /* Calculate the new _heapinfo table size.  We do not account for the
+        added blocks in the table itself, as we hope to place them in
+        existing free space, which is already covered by part of the
+        existing table.  */
+      newsize = heapsize;
+      do
+       newsize *= 2;
+      while ((size_t) BLOCK ((char *) result + size) > newsize);
+
+      /* We must not reuse existing core for the new info table when called
+        from realloc in the case of growing a large block, because the
+        block being grown is momentarily marked as free.  In this case
+        _heaplimit is zero so we know not to reuse space for internal
+        allocation.  */
+      if (_heaplimit != 0)
+       {
+         /* First try to allocate the new info table in core we already
+            have, in the usual way using realloc.  If realloc cannot
+            extend it in place or relocate it to existing sufficient core,
+            we will get called again, and the code above will notice the
+            `morecore_recursing' flag and return null.  */
+         int save = errno;     /* Don't want to clobber errno with ENOMEM.  */
+         morecore_recursing = 1;
+         newinfo = _realloc_internal_nolock (_heapinfo,
+                                             newsize * sizeof (malloc_info));
+         morecore_recursing = 0;
+         if (newinfo == NULL)
+           errno = save;
+         else
+           {
+             /* We found some space in core, and realloc has put the old
+                table's blocks on the free list.  Now zero the new part
+                of the table and install the new table location.  */
+             memset (&newinfo[heapsize], 0,
+                     (newsize - heapsize) * sizeof (malloc_info));
+             _heapinfo = newinfo;
+             heapsize = newsize;
+             goto got_heap;
+           }
+       }
+
+      /* Allocate new space for the malloc info table.  */
+      while (1)
+       {
+         newinfo = align (newsize * sizeof (malloc_info));
+
+         /* Did it fail?  */
+         if (newinfo == NULL)
+           {
+             (*__morecore) (-size);
+             return NULL;
+           }
+
+         /* Is it big enough to record status for its own space?
+            If so, we win.  */
+         if ((size_t) BLOCK ((char *) newinfo
+                             + newsize * sizeof (malloc_info))
+             < newsize)
+           break;
+
+         /* Must try again.  First give back most of what we just got.  */
+         (*__morecore) (- newsize * sizeof (malloc_info));
+         newsize *= 2;
+       }
+
+      /* Copy the old table to the beginning of the new,
+        and zero the rest of the new table.  */
+      memcpy (newinfo, _heapinfo, heapsize * sizeof (malloc_info));
+      memset (&newinfo[heapsize], 0,
+             (newsize - heapsize) * sizeof (malloc_info));
+      oldinfo = _heapinfo;
+      _heapinfo = newinfo;
+      heapsize = newsize;
+
+      register_heapinfo ();
+
+      /* Reset _heaplimit so _free_internal never decides
+        it can relocate or resize the info table.  */
+      _heaplimit = 0;
+      _free_internal_nolock (oldinfo);
+      PROTECT_MALLOC_STATE (0);
+
+      /* The new heap limit includes the new table just allocated.  */
+      _heaplimit = BLOCK ((char *) newinfo + heapsize * sizeof (malloc_info));
+      return result;
+    }
+
+ got_heap:
+  _heaplimit = BLOCK ((char *) result + size);
+  return result;
+}
+
+/* Allocate memory from the heap.  */
+void *
+_malloc_internal_nolock (size_t size)
+{
+  void *result;
+  size_t block, blocks, lastblocks, start;
+  register size_t i;
+  struct list *next;
+
+  /* ANSI C allows `malloc (0)' to either return NULL, or to return a
+     valid address you can realloc and free (though not dereference).
+
+     It turns out that some extant code (sunrpc, at least Ultrix's version)
+     expects `malloc (0)' to return non-NULL and breaks otherwise.
+     Be compatible.  */
+
+#if    0
+  if (size == 0)
+    return NULL;
+#endif
+
+  PROTECT_MALLOC_STATE (0);
+
+  if (size < sizeof (struct list))
+    size = sizeof (struct list);
+
+  /* Determine the allocation policy based on the request size.  */
+  if (size <= BLOCKSIZE / 2)
+    {
+      /* Small allocation to receive a fragment of a block.
+        Determine the logarithm to base two of the fragment size. */
+      register size_t log = 1;
+      --size;
+      while ((size /= 2) != 0)
+       ++log;
+
+      /* Look in the fragment lists for a
+        free fragment of the desired size. */
+      next = _fraghead[log].next;
+      if (next != NULL)
+       {
+         /* There are free fragments of this size.
+            Pop a fragment out of the fragment list and return it.
+            Update the block's nfree and first counters. */
+         result = next;
+         next->prev->next = next->next;
+         if (next->next != NULL)
+           next->next->prev = next->prev;
+         block = BLOCK (result);
+         if (--_heapinfo[block].busy.info.frag.nfree != 0)
+           _heapinfo[block].busy.info.frag.first =
+             (uintptr_t) next->next % BLOCKSIZE >> log;
+
+         /* Update the statistics.  */
+         ++_chunks_used;
+         _bytes_used += 1 << log;
+         --_chunks_free;
+         _bytes_free -= 1 << log;
+       }
+      else
+       {
+         /* No free fragments of the desired size, so get a new block
+            and break it into fragments, returning the first.  */
+#ifdef GC_MALLOC_CHECK
+         result = _malloc_internal_nolock (BLOCKSIZE);
+         PROTECT_MALLOC_STATE (0);
+#elif defined (USE_PTHREAD)
+         result = _malloc_internal_nolock (BLOCKSIZE);
+#else
+         result = malloc (BLOCKSIZE);
+#endif
+         if (result == NULL)
+           {
+             PROTECT_MALLOC_STATE (1);
+             goto out;
+           }
+
+         /* Link all fragments but the first into the free list.  */
+         next = (struct list *) ((char *) result + (1 << log));
+         next->next = NULL;
+         next->prev = &_fraghead[log];
+         _fraghead[log].next = next;
+
+         for (i = 2; i < (size_t) (BLOCKSIZE >> log); ++i)
+           {
+             next = (struct list *) ((char *) result + (i << log));
+             next->next = _fraghead[log].next;
+             next->prev = &_fraghead[log];
+             next->prev->next = next;
+             next->next->prev = next;
+           }
+
+         /* Initialize the nfree and first counters for this block.  */
+         block = BLOCK (result);
+         _heapinfo[block].busy.type = log;
+         _heapinfo[block].busy.info.frag.nfree = i - 1;
+         _heapinfo[block].busy.info.frag.first = i - 1;
+
+         _chunks_free += (BLOCKSIZE >> log) - 1;
+         _bytes_free += BLOCKSIZE - (1 << log);
+         _bytes_used -= BLOCKSIZE - (1 << log);
+       }
+    }
+  else
+    {
+      /* Large allocation to receive one or more blocks.
+        Search the free list in a circle starting at the last place visited.
+        If we loop completely around without finding a large enough
+        space we will have to get more memory from the system.  */
+      blocks = BLOCKIFY (size);
+      start = block = _heapindex;
+      while (_heapinfo[block].free.size < blocks)
+       {
+         block = _heapinfo[block].free.next;
+         if (block == start)
+           {
+             /* Need to get more from the system.  Get a little extra.  */
+             size_t wantblocks = blocks + __malloc_extra_blocks;
+             block = _heapinfo[0].free.prev;
+             lastblocks = _heapinfo[block].free.size;
+             /* Check to see if the new core will be contiguous with the
+                final free block; if so we don't need to get as much.  */
+             if (_heaplimit != 0 && block + lastblocks == _heaplimit &&
+                 /* We can't do this if we will have to make the heap info
+                     table bigger to accommodate the new space.  */
+                 block + wantblocks <= heapsize &&
+                 get_contiguous_space ((wantblocks - lastblocks) * BLOCKSIZE,
+                                       ADDRESS (block + lastblocks)))
+               {
+                 /* We got it contiguously.  Which block we are extending
+                    (the `final free block' referred to above) might have
+                    changed, if it got combined with a freed info table.  */
+                 block = _heapinfo[0].free.prev;
+                 _heapinfo[block].free.size += (wantblocks - lastblocks);
+                 _bytes_free += (wantblocks - lastblocks) * BLOCKSIZE;
+                 _heaplimit += wantblocks - lastblocks;
+                 continue;
+               }
+             result = morecore_nolock (wantblocks * BLOCKSIZE);
+             if (result == NULL)
+               goto out;
+             block = BLOCK (result);
+             /* Put the new block at the end of the free list.  */
+             _heapinfo[block].free.size = wantblocks;
+             _heapinfo[block].free.prev = _heapinfo[0].free.prev;
+             _heapinfo[block].free.next = 0;
+             _heapinfo[0].free.prev = block;
+             _heapinfo[_heapinfo[block].free.prev].free.next = block;
+             ++_chunks_free;
+             /* Now loop to use some of that block for this allocation.  */
+           }
+       }
+
+      /* At this point we have found a suitable free list entry.
+        Figure out how to remove what we need from the list. */
+      result = ADDRESS (block);
+      if (_heapinfo[block].free.size > blocks)
+       {
+         /* The block we found has a bit left over,
+            so relink the tail end back into the free list. */
+         _heapinfo[block + blocks].free.size
+           = _heapinfo[block].free.size - blocks;
+         _heapinfo[block + blocks].free.next
+           = _heapinfo[block].free.next;
+         _heapinfo[block + blocks].free.prev
+           = _heapinfo[block].free.prev;
+         _heapinfo[_heapinfo[block].free.prev].free.next
+           = _heapinfo[_heapinfo[block].free.next].free.prev
+           = _heapindex = block + blocks;
+       }
+      else
+       {
+         /* The block exactly matches our requirements,
+            so just remove it from the list. */
+         _heapinfo[_heapinfo[block].free.next].free.prev
+           = _heapinfo[block].free.prev;
+         _heapinfo[_heapinfo[block].free.prev].free.next
+           = _heapindex = _heapinfo[block].free.next;
+         --_chunks_free;
+       }
+
+      _heapinfo[block].busy.type = 0;
+      _heapinfo[block].busy.info.size = blocks;
+      ++_chunks_used;
+      _bytes_used += blocks * BLOCKSIZE;
+      _bytes_free -= blocks * BLOCKSIZE;
+
+      /* Mark all the blocks of the object just allocated except for the
+        first with a negative number so you can find the first block by
+        adding that adjustment.  */
+      while (--blocks > 0)
+       _heapinfo[block + blocks].busy.info.size = -blocks;
+    }
+
+  PROTECT_MALLOC_STATE (1);
+ out:
+  return result;
+}
+
+void *
+_malloc_internal (size_t size)
+{
+  void *result;
+
+  LOCK ();
+  result = _malloc_internal_nolock (size);
+  UNLOCK ();
+
+  return result;
+}
+
+void *
+malloc (size_t size)
+{
+  void *(*hook) (size_t);
+
+  if (!__malloc_initialized && !__malloc_initialize ())
+    return NULL;
+
+  /* Copy the value of __malloc_hook to an automatic variable in case
+     __malloc_hook is modified in another thread between its
+     NULL-check and the use.
+
+     Note: Strictly speaking, this is not a right solution.  We should
+     use mutexes to access non-read-only variables that are shared
+     among multiple threads.  We just leave it for compatibility with
+     glibc malloc (i.e., assignments to __malloc_hook) for now.  */
+  hook = __malloc_hook;
+  return (hook != NULL ? *hook : _malloc_internal) (size);
+}
+
+#ifndef _LIBC
+
+/* On some ANSI C systems, some libc functions call _malloc, _free
+   and _realloc.  Make them use the GNU functions.  */
+
+extern void *_malloc (size_t);
+extern void _free (void *);
+extern void *_realloc (void *, size_t);
+
+void *
+_malloc (size_t size)
+{
+  return malloc (size);
+}
+
+void
+_free (void *ptr)
+{
+  free (ptr);
+}
+
+void *
+_realloc (void *ptr, size_t size)
+{
+  return realloc (ptr, size);
+}
+
+#endif
+/* Free a block of memory allocated by `malloc'.
+   Copyright 1990, 1991, 1992, 1994, 1995 Free Software Foundation, Inc.
+                 Written May 1989 by Mike Haertel.
+
+This library 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 2 of the
+License, or (at your option) any later version.
+
+This library 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 library.  If not, see <http://www.gnu.org/licenses/>.
+
+   The author may be reached (Email) at the address address@hidden,
+   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
+
+
+/* Debugging hook for free.  */
+void (*__free_hook) (void *__ptr);
+
+/* List of blocks allocated by aligned_alloc.  */
+struct alignlist *_aligned_blocks = NULL;
+
+/* Return memory to the heap.
+   Like `_free_internal' but don't lock mutex.  */
+void
+_free_internal_nolock (void *ptr)
+{
+  int type;
+  size_t block, blocks;
+  register size_t i;
+  struct list *prev, *next;
+  void *curbrk;
+  const size_t lesscore_threshold
+    /* Threshold of free space at which we will return some to the system.  */
+    = FINAL_FREE_BLOCKS + 2 * __malloc_extra_blocks;
+
+  register struct alignlist *l;
+
+  if (ptr == NULL)
+    return;
+
+  PROTECT_MALLOC_STATE (0);
+
+  LOCK_ALIGNED_BLOCKS ();
+  for (l = _aligned_blocks; l != NULL; l = l->next)
+    if (l->aligned == ptr)
+      {
+       l->aligned = NULL;      /* Mark the slot in the list as free.  */
+       ptr = l->exact;
+       break;
+      }
+  UNLOCK_ALIGNED_BLOCKS ();
+
+  block = BLOCK (ptr);
+
+  type = _heapinfo[block].busy.type;
+  switch (type)
+    {
+    case 0:
+      /* Get as many statistics as early as we can.  */
+      --_chunks_used;
+      _bytes_used -= _heapinfo[block].busy.info.size * BLOCKSIZE;
+      _bytes_free += _heapinfo[block].busy.info.size * BLOCKSIZE;
+
+      /* Find the free cluster previous to this one in the free list.
+        Start searching at the last block referenced; this may benefit
+        programs with locality of allocation.  */
+      i = _heapindex;
+      if (i > block)
+       while (i > block)
+         i = _heapinfo[i].free.prev;
+      else
+       {
+         do
+           i = _heapinfo[i].free.next;
+         while (i > 0 && i < block);
+         i = _heapinfo[i].free.prev;
+       }
+
+      /* Determine how to link this block into the free list.  */
+      if (block == i + _heapinfo[i].free.size)
+       {
+         /* Coalesce this block with its predecessor.  */
+         _heapinfo[i].free.size += _heapinfo[block].busy.info.size;
+         block = i;
+       }
+      else
+       {
+         /* Really link this block back into the free list.  */
+         _heapinfo[block].free.size = _heapinfo[block].busy.info.size;
+         _heapinfo[block].free.next = _heapinfo[i].free.next;
+         _heapinfo[block].free.prev = i;
+         _heapinfo[i].free.next = block;
+         _heapinfo[_heapinfo[block].free.next].free.prev = block;
+         ++_chunks_free;
+       }
+
+      /* Now that the block is linked in, see if we can coalesce it
+        with its successor (by deleting its successor from the list
+        and adding in its size).  */
+      if (block + _heapinfo[block].free.size == _heapinfo[block].free.next)
+       {
+         _heapinfo[block].free.size
+           += _heapinfo[_heapinfo[block].free.next].free.size;
+         _heapinfo[block].free.next
+           = _heapinfo[_heapinfo[block].free.next].free.next;
+         _heapinfo[_heapinfo[block].free.next].free.prev = block;
+         --_chunks_free;
+       }
+
+      /* How many trailing free blocks are there now?  */
+      blocks = _heapinfo[block].free.size;
+
+      /* Where is the current end of accessible core?  */
+      curbrk = (*__morecore) (0);
+
+      if (_heaplimit != 0 && curbrk == ADDRESS (_heaplimit))
+       {
+         /* The end of the malloc heap is at the end of accessible core.
+            It's possible that moving _heapinfo will allow us to
+            return some space to the system.  */
+
+         size_t info_block = BLOCK (_heapinfo);
+         size_t info_blocks = _heapinfo[info_block].busy.info.size;
+         size_t prev_block = _heapinfo[block].free.prev;
+         size_t prev_blocks = _heapinfo[prev_block].free.size;
+         size_t next_block = _heapinfo[block].free.next;
+         size_t next_blocks = _heapinfo[next_block].free.size;
+
+         if (/* Win if this block being freed is last in core, the info table
+                is just before it, the previous free block is just before the
+                info table, and the two free blocks together form a useful
+                amount to return to the system.  */
+             (block + blocks == _heaplimit &&
+              info_block + info_blocks == block &&
+              prev_block != 0 && prev_block + prev_blocks == info_block &&
+              blocks + prev_blocks >= lesscore_threshold) ||
+             /* Nope, not the case.  We can also win if this block being
+                freed is just before the info table, and the table extends
+                to the end of core or is followed only by a free block,
+                and the total free space is worth returning to the system.  */
+             (block + blocks == info_block &&
+              ((info_block + info_blocks == _heaplimit &&
+                blocks >= lesscore_threshold) ||
+               (info_block + info_blocks == next_block &&
+                next_block + next_blocks == _heaplimit &&
+                blocks + next_blocks >= lesscore_threshold)))
+             )
+           {
+             malloc_info *newinfo;
+             size_t oldlimit = _heaplimit;
+
+             /* Free the old info table, clearing _heaplimit to avoid
+                recursion into this code.  We don't want to return the
+                table's blocks to the system before we have copied them to
+                the new location.  */
+             _heaplimit = 0;
+             _free_internal_nolock (_heapinfo);
+             _heaplimit = oldlimit;
+
+             /* Tell malloc to search from the beginning of the heap for
+                free blocks, so it doesn't reuse the ones just freed.  */
+             _heapindex = 0;
+
+             /* Allocate new space for the info table and move its data.  */
+             newinfo = _malloc_internal_nolock (info_blocks * BLOCKSIZE);
+             PROTECT_MALLOC_STATE (0);
+             memmove (newinfo, _heapinfo, info_blocks * BLOCKSIZE);
+             _heapinfo = newinfo;
+
+             /* We should now have coalesced the free block with the
+                blocks freed from the old info table.  Examine the entire
+                trailing free block to decide below whether to return some
+                to the system.  */
+             block = _heapinfo[0].free.prev;
+             blocks = _heapinfo[block].free.size;
+           }
+
+         /* Now see if we can return stuff to the system.  */
+         if (block + blocks == _heaplimit && blocks >= lesscore_threshold)
+           {
+             register size_t bytes = blocks * BLOCKSIZE;
+             _heaplimit -= blocks;
+             (*__morecore) (-bytes);
+             _heapinfo[_heapinfo[block].free.prev].free.next
+               = _heapinfo[block].free.next;
+             _heapinfo[_heapinfo[block].free.next].free.prev
+               = _heapinfo[block].free.prev;
+             block = _heapinfo[block].free.prev;
+             --_chunks_free;
+             _bytes_free -= bytes;
+           }
+       }
+
+      /* Set the next search to begin at this block.  */
+      _heapindex = block;
+      break;
+
+    default:
+      /* Do some of the statistics.  */
+      --_chunks_used;
+      _bytes_used -= 1 << type;
+      ++_chunks_free;
+      _bytes_free += 1 << type;
+
+      /* Get the address of the first free fragment in this block.  */
+      prev = (struct list *) ((char *) ADDRESS (block) +
+                             (_heapinfo[block].busy.info.frag.first << type));
+
+      if (_heapinfo[block].busy.info.frag.nfree == (BLOCKSIZE >> type) - 1)
+       {
+         /* If all fragments of this block are free, remove them
+            from the fragment list and free the whole block.  */
+         next = prev;
+         for (i = 1; i < (size_t) (BLOCKSIZE >> type); ++i)
+           next = next->next;
+         prev->prev->next = next;
+         if (next != NULL)
+           next->prev = prev->prev;
+         _heapinfo[block].busy.type = 0;
+         _heapinfo[block].busy.info.size = 1;
+
+         /* Keep the statistics accurate.  */
+         ++_chunks_used;
+         _bytes_used += BLOCKSIZE;
+         _chunks_free -= BLOCKSIZE >> type;
+         _bytes_free -= BLOCKSIZE;
+
+#if defined (GC_MALLOC_CHECK) || defined (USE_PTHREAD)
+         _free_internal_nolock (ADDRESS (block));
+#else
+         free (ADDRESS (block));
+#endif
+       }
+      else if (_heapinfo[block].busy.info.frag.nfree != 0)
+       {
+         /* If some fragments of this block are free, link this
+            fragment into the fragment list after the first free
+            fragment of this block. */
+         next = ptr;
+         next->next = prev->next;
+         next->prev = prev;
+         prev->next = next;
+         if (next->next != NULL)
+           next->next->prev = next;
+         ++_heapinfo[block].busy.info.frag.nfree;
+       }
+      else
+       {
+         /* No fragments of this block are free, so link this
+            fragment into the fragment list and announce that
+            it is the first free fragment of this block. */
+         prev = ptr;
+         _heapinfo[block].busy.info.frag.nfree = 1;
+         _heapinfo[block].busy.info.frag.first =
+           (uintptr_t) ptr % BLOCKSIZE >> type;
+         prev->next = _fraghead[type].next;
+         prev->prev = &_fraghead[type];
+         prev->prev->next = prev;
+         if (prev->next != NULL)
+           prev->next->prev = prev;
+       }
+      break;
+    }
+
+  PROTECT_MALLOC_STATE (1);
+}
+
+/* Return memory to the heap.
+   Like `free' but don't call a __free_hook if there is one.  */
+void
+_free_internal (void *ptr)
+{
+  LOCK ();
+  _free_internal_nolock (ptr);
+  UNLOCK ();
+}
+
+/* Return memory to the heap.  */
+
+void
+free (void *ptr)
+{
+  void (*hook) (void *) = __free_hook;
+
+  if (hook != NULL)
+    (*hook) (ptr);
+  else
+    _free_internal (ptr);
+}
+
+/* Define the `cfree' alias for `free'.  */
+#ifdef weak_alias
+weak_alias (free, cfree)
+#else
+void
+cfree (void *ptr)
+{
+  free (ptr);
+}
+#endif
+/* Change the size of a block allocated by `malloc'.
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+                    Written May 1989 by Mike Haertel.
+
+This library 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 2 of the
+License, or (at your option) any later version.
+
+This library 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 library.  If not, see <http://www.gnu.org/licenses/>.
+
+   The author may be reached (Email) at the address address@hidden,
+   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
+
+#ifndef min
+#define min(a, b) ((a) < (b) ? (a) : (b))
+#endif
+
+/* Debugging hook for realloc.  */
+void *(*__realloc_hook) (void *ptr, size_t size);
+
+/* Resize the given region to the new size, returning a pointer
+   to the (possibly moved) region.  This is optimized for speed;
+   some benchmarks seem to indicate that greater compactness is
+   achieved by unconditionally allocating and copying to a
+   new region.  This module has incestuous knowledge of the
+   internals of both free and malloc. */
+void *
+_realloc_internal_nolock (void *ptr, size_t size)
+{
+  void *result;
+  int type;
+  size_t block, blocks, oldlimit;
+
+  if (size == 0)
+    {
+      _free_internal_nolock (ptr);
+      return _malloc_internal_nolock (0);
+    }
+  else if (ptr == NULL)
+    return _malloc_internal_nolock (size);
+
+  block = BLOCK (ptr);
+
+  PROTECT_MALLOC_STATE (0);
+
+  type = _heapinfo[block].busy.type;
+  switch (type)
+    {
+    case 0:
+      /* Maybe reallocate a large block to a small fragment.  */
+      if (size <= BLOCKSIZE / 2)
+       {
+         result = _malloc_internal_nolock (size);
+         if (result != NULL)
+           {
+             memcpy (result, ptr, size);
+             _free_internal_nolock (ptr);
+             goto out;
+           }
+       }
+
+      /* The new size is a large allocation as well;
+        see if we can hold it in place. */
+      blocks = BLOCKIFY (size);
+      if (blocks < _heapinfo[block].busy.info.size)
+       {
+         /* The new size is smaller; return
+            excess memory to the free list. */
+         _heapinfo[block + blocks].busy.type = 0;
+         _heapinfo[block + blocks].busy.info.size
+           = _heapinfo[block].busy.info.size - blocks;
+         _heapinfo[block].busy.info.size = blocks;
+         /* We have just created a new chunk by splitting a chunk in two.
+            Now we will free this chunk; increment the statistics counter
+            so it doesn't become wrong when _free_internal decrements it.  */
+         ++_chunks_used;
+         _free_internal_nolock (ADDRESS (block + blocks));
+         result = ptr;
+       }
+      else if (blocks == _heapinfo[block].busy.info.size)
+       /* No size change necessary.  */
+       result = ptr;
+      else
+       {
+         /* Won't fit, so allocate a new region that will.
+            Free the old region first in case there is sufficient
+            adjacent free space to grow without moving. */
+         blocks = _heapinfo[block].busy.info.size;
+         /* Prevent free from actually returning memory to the system.  */
+         oldlimit = _heaplimit;
+         _heaplimit = 0;
+         _free_internal_nolock (ptr);
+         result = _malloc_internal_nolock (size);
+         PROTECT_MALLOC_STATE (0);
+         if (_heaplimit == 0)
+           _heaplimit = oldlimit;
+         if (result == NULL)
+           {
+             /* Now we're really in trouble.  We have to unfree
+                the thing we just freed.  Unfortunately it might
+                have been coalesced with its neighbors.  */
+             if (_heapindex == block)
+               (void) _malloc_internal_nolock (blocks * BLOCKSIZE);
+             else
+               {
+                 void *previous
+                   = _malloc_internal_nolock ((block - _heapindex) * 
BLOCKSIZE);
+                 (void) _malloc_internal_nolock (blocks * BLOCKSIZE);
+                 _free_internal_nolock (previous);
+               }
+             goto out;
+           }
+         if (ptr != result)
+           memmove (result, ptr, blocks * BLOCKSIZE);
+       }
+      break;
+
+    default:
+      /* Old size is a fragment; type is logarithm
+        to base two of the fragment size.  */
+      if (size > (size_t) (1 << (type - 1)) &&
+         size <= (size_t) (1 << type))
+       /* The new size is the same kind of fragment.  */
+       result = ptr;
+      else
+       {
+         /* The new size is different; allocate a new space,
+            and copy the lesser of the new size and the old. */
+         result = _malloc_internal_nolock (size);
+         if (result == NULL)
+           goto out;
+         memcpy (result, ptr, min (size, (size_t) 1 << type));
+         _free_internal_nolock (ptr);
+       }
+      break;
+    }
+
+  PROTECT_MALLOC_STATE (1);
+ out:
+  return result;
+}
+
+void *
+_realloc_internal (void *ptr, size_t size)
+{
+  void *result;
+
+  LOCK ();
+  result = _realloc_internal_nolock (ptr, size);
+  UNLOCK ();
+
+  return result;
+}
+
+void *
+realloc (void *ptr, size_t size)
+{
+  void *(*hook) (void *, size_t);
+
+  if (!__malloc_initialized && !__malloc_initialize ())
+    return NULL;
+
+  hook = __realloc_hook;
+  return (hook != NULL ? *hook : _realloc_internal) (ptr, size);
+}
+/* Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc.
+
+This library 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 2 of the
+License, or (at your option) any later version.
+
+This library 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 library.  If not, see <http://www.gnu.org/licenses/>.
+
+   The author may be reached (Email) at the address address@hidden,
+   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
+
+/* Allocate an array of NMEMB elements each SIZE bytes long.
+   The entire array is initialized to zeros.  */
+void *
+calloc (size_t nmemb, size_t size)
+{
+  void *result;
+  size_t bytes = nmemb * size;
+
+  if (size != 0 && bytes / size != nmemb)
+    {
+      errno = ENOMEM;
+      return NULL;
+    }
+
+  result = malloc (bytes);
+  if (result)
+    return memset (result, 0, bytes);
+  return result;
+}
+/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library 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 2, or (at your option)
+any later version.
+
+The GNU C Library 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 the GNU C Library.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* uClibc defines __GNU_LIBRARY__, but it is not completely
+   compatible.  */
+#if !defined (__GNU_LIBRARY__) || defined (__UCLIBC__)
+#define        __sbrk  sbrk
+#else /* __GNU_LIBRARY__ && ! defined (__UCLIBC__) */
+/* It is best not to declare this and cast its result on foreign operating
+   systems with potentially hostile include files.  */
+
+extern void *__sbrk (ptrdiff_t increment);
+#endif /* __GNU_LIBRARY__ && ! defined (__UCLIBC__) */
+
+/* Allocate INCREMENT more bytes of data space,
+   and return the start of data space, or NULL on errors.
+   If INCREMENT is negative, shrink data space.  */
+void *
+__default_morecore (ptrdiff_t increment)
+{
+  void *result;
+#if defined (CYGWIN)
+  if (!DUMPED)
+    {
+      return bss_sbrk (increment);
+    }
+#endif
+  result = (void *) __sbrk (increment);
+  if (result == (void *) -1)
+    return NULL;
+  return result;
+}
+/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
+
+This library 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 2 of the
+License, or (at your option) any later version.
+
+This library 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 library.  If not, see <http://www.gnu.org/licenses/>.  
*/
+
+void *(*__memalign_hook) (size_t size, size_t alignment);
+
+void *
+aligned_alloc (size_t alignment, size_t size)
+{
+  void *result;
+  size_t adj, lastadj;
+  void *(*hook) (size_t, size_t) = __memalign_hook;
+
+  if (hook)
+    return (*hook) (alignment, size);
+
+  /* Allocate a block with enough extra space to pad the block with up to
+     (ALIGNMENT - 1) bytes if necessary.  */
+  if (- size < alignment)
+    {
+      errno = ENOMEM;
+      return NULL;
+    }
+  result = malloc (size + alignment - 1);
+  if (result == NULL)
+    return NULL;
+
+  /* Figure out how much we will need to pad this particular block
+     to achieve the required alignment.  */
+  adj = alignment - (uintptr_t) result % alignment;
+  if (adj == alignment)
+    adj = 0;
+
+  if (adj != alignment - 1)
+    {
+      do
+       {
+         /* Reallocate the block with only as much excess as it
+            needs.  */
+         free (result);
+         result = malloc (size + adj);
+         if (result == NULL)   /* Impossible unless interrupted.  */
+           return NULL;
+
+         lastadj = adj;
+         adj = alignment - (uintptr_t) result % alignment;
+         if (adj == alignment)
+           adj = 0;
+         /* It's conceivable we might have been so unlucky as to get
+            a different block with weaker alignment.  If so, this
+            block is too short to contain SIZE after alignment
+            correction.  So we must try again and get another block,
+            slightly larger.  */
+       } while (adj > lastadj);
+    }
+
+  if (adj != 0)
+    {
+      /* Record this block in the list of aligned blocks, so that `free'
+        can identify the pointer it is passed, which will be in the middle
+        of an allocated block.  */
+
+      struct alignlist *l;
+      LOCK_ALIGNED_BLOCKS ();
+      for (l = _aligned_blocks; l != NULL; l = l->next)
+       if (l->aligned == NULL)
+         /* This slot is free.  Use it.  */
+         break;
+      if (l == NULL)
+       {
+         l = malloc (sizeof *l);
+         if (l != NULL)
+           {
+             l->next = _aligned_blocks;
+             _aligned_blocks = l;
+           }
+       }
+      if (l != NULL)
+       {
+         l->exact = result;
+         result = l->aligned = (char *) result + adj;
+       }
+      UNLOCK_ALIGNED_BLOCKS ();
+      if (l == NULL)
+       {
+         free (result);
+         result = NULL;
+       }
+    }
+
+  return result;
+}
+
+/* An obsolete alias for aligned_alloc, for any old libraries that use
+   this alias.  */
+
+void *
+memalign (size_t alignment, size_t size)
+{
+  return aligned_alloc (alignment, size);
+}
+
+/* If HYBRID_MALLOC is defined, we may want to use the system
+   posix_memalign below.  */
+#ifndef HYBRID_MALLOC
+int
+posix_memalign (void **memptr, size_t alignment, size_t size)
+{
+  void *mem;
+
+  if (alignment == 0
+      || alignment % sizeof (void *) != 0
+      || (alignment & (alignment - 1)) != 0)
+    return EINVAL;
+
+  mem = aligned_alloc (alignment, size);
+  if (mem == NULL)
+    return ENOMEM;
+
+  *memptr = mem;
+
+  return 0;
+}
+#endif
+
+/* Allocate memory on a page boundary.
+   Copyright (C) 1991, 92, 93, 94, 96 Free Software Foundation, Inc.
+
+This library 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 2 of the
+License, or (at your option) any later version.
+
+This library 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 library.  If not, see <http://www.gnu.org/licenses/>.
+
+   The author may be reached (Email) at the address address@hidden,
+   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
+
+/* Allocate SIZE bytes on a page boundary.  */
+extern void *valloc (size_t);
+
+#if defined _SC_PAGESIZE || !defined HAVE_GETPAGESIZE
+# include "getpagesize.h"
+#elif !defined getpagesize
+extern int getpagesize (void);
+#endif
+
+static size_t pagesize;
+
+void *
+valloc (size_t size)
+{
+  if (pagesize == 0)
+    pagesize = getpagesize ();
+
+  return aligned_alloc (pagesize, size);
+}
+
+#ifdef HYBRID_MALLOC
+#undef malloc
+#undef realloc
+#undef calloc
+#undef aligned_alloc
+#undef free
+
+/* Declare system malloc and friends.  */
+extern void *malloc (size_t size);
+extern void *realloc (void *ptr, size_t size);
+extern void *calloc (size_t nmemb, size_t size);
+extern void free (void *ptr);
+#ifdef HAVE_ALIGNED_ALLOC
+extern void *aligned_alloc (size_t alignment, size_t size);
+#elif defined HAVE_POSIX_MEMALIGN
+extern int posix_memalign (void **memptr, size_t alignment, size_t size);
+#endif
+
+/* See the comments near the beginning of this file for explanations
+   of the following functions. */
+
+void *
+hybrid_malloc (size_t size)
+{
+  if (DUMPED)
+    return malloc (size);
+  return gmalloc (size);
+}
+
+void *
+hybrid_calloc (size_t nmemb, size_t size)
+{
+  if (DUMPED)
+    return calloc (nmemb, size);
+  return gcalloc (nmemb, size);
+}
+
+void
+hybrid_free (void *ptr)
+{
+  if (!DUMPED)
+    gfree (ptr);
+  else if (!ALLOCATED_BEFORE_DUMPING (ptr))
+    free (ptr);
+  /* Otherwise the dumped emacs is trying to free something allocated
+     before dumping; do nothing.  */
+  return;
+}
+
+#if defined HAVE_ALIGNED_ALLOC || defined HAVE_POSIX_MEMALIGN
+void *
+hybrid_aligned_alloc (size_t alignment, size_t size)
+{
+  if (!DUMPED)
+    return galigned_alloc (alignment, size);
+  /* The following is copied from alloc.c */
+#ifdef HAVE_ALIGNED_ALLOC
+  return aligned_alloc (alignment, size);
+#else  /* HAVE_POSIX_MEMALIGN */
+  void *p;
+  return posix_memalign (&p, alignment, size) == 0 ? p : 0;
+#endif
+}
+#endif
+  
+void *
+hybrid_realloc (void *ptr, size_t size)
+{
+  void *result;
+  int type;
+  size_t block, oldsize;
+
+  if (!DUMPED)
+    return grealloc (ptr, size);
+  if (!ALLOCATED_BEFORE_DUMPING (ptr))
+    return realloc (ptr, size);
+
+  /* The dumped emacs is trying to realloc storage allocated before
+   dumping.  We just malloc new space and copy the data.  */
+  if (size == 0 || ptr == NULL)
+    return malloc (size);
+  block = ((char *) ptr - _heapbase) / BLOCKSIZE + 1;
+  type = _heapinfo[block].busy.type;
+  oldsize =
+    type == 0 ? _heapinfo[block].busy.info.size * BLOCKSIZE
+    : (size_t) 1 << type;
+  result = malloc (size);
+  if (result)
+    return memcpy (result, ptr, min (oldsize, size));
+  return result;
+}
+
+#ifdef HYBRID_GET_CURRENT_DIR_NAME
+/* Defined in sysdep.c.  */
+char *gget_current_dir_name (void);
+
+char *
+hybrid_get_current_dir_name (void)
+{
+  if (DUMPED)
+    return get_current_dir_name ();
+  return gget_current_dir_name ();
+}
+#endif
+
+#endif /* HYBRID_MALLOC */
+
+#ifdef GC_MCHECK
+
+/* Standard debugging hooks for `malloc'.
+   Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+   Written May 1989 by Mike Haertel.
+
+This library 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 2 of the
+License, or (at your option) any later version.
+
+This library 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 library.  If not, see <http://www.gnu.org/licenses/>.
+
+   The author may be reached (Email) at the address address@hidden,
+   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
+
+#include <stdio.h>
+
+/* Old hook values.  */
+static void (*old_free_hook) (void *ptr);
+static void *(*old_malloc_hook) (size_t size);
+static void *(*old_realloc_hook) (void *ptr, size_t size);
+
+/* Function to call when something awful happens.  */
+static void (*abortfunc) (enum mcheck_status);
+
+/* Arbitrary magical numbers.  */
+#define MAGICWORD      (SIZE_MAX / 11 ^ SIZE_MAX / 13 << 3)
+#define MAGICFREE      (SIZE_MAX / 17 ^ SIZE_MAX / 19 << 4)
+#define MAGICBYTE      ((char) 0xd7)
+#define MALLOCFLOOD    ((char) 0x93)
+#define FREEFLOOD      ((char) 0x95)
+
+struct hdr
+  {
+    size_t size;       /* Exact size requested by user.  */
+    size_t magic;      /* Magic number to check header integrity.  */
+  };
+
+static enum mcheck_status
+checkhdr (const struct hdr *hdr)
+{
+  enum mcheck_status status;
+  switch (hdr->magic)
+    {
+    default:
+      status = MCHECK_HEAD;
+      break;
+    case MAGICFREE:
+      status = MCHECK_FREE;
+      break;
+    case MAGICWORD:
+      if (((char *) &hdr[1])[hdr->size] != MAGICBYTE)
+       status = MCHECK_TAIL;
+      else
+       status = MCHECK_OK;
+      break;
+    }
+  if (status != MCHECK_OK)
+    (*abortfunc) (status);
+  return status;
+}
+
+static void
+freehook (void *ptr)
+{
+  struct hdr *hdr;
+
+  if (ptr)
+    {
+      struct alignlist *l;
+
+      /* If the block was allocated by aligned_alloc, its real pointer
+        to free is recorded in _aligned_blocks; find that.  */
+      PROTECT_MALLOC_STATE (0);
+      LOCK_ALIGNED_BLOCKS ();
+      for (l = _aligned_blocks; l != NULL; l = l->next)
+       if (l->aligned == ptr)
+         {
+           l->aligned = NULL;  /* Mark the slot in the list as free.  */
+           ptr = l->exact;
+           break;
+         }
+      UNLOCK_ALIGNED_BLOCKS ();
+      PROTECT_MALLOC_STATE (1);
+
+      hdr = ((struct hdr *) ptr) - 1;
+      checkhdr (hdr);
+      hdr->magic = MAGICFREE;
+      memset (ptr, FREEFLOOD, hdr->size);
+    }
+  else
+    hdr = NULL;
+
+  __free_hook = old_free_hook;
+  free (hdr);
+  __free_hook = freehook;
+}
+
+static void *
+mallochook (size_t size)
+{
+  struct hdr *hdr;
+
+  __malloc_hook = old_malloc_hook;
+  hdr = malloc (sizeof *hdr + size + 1);
+  __malloc_hook = mallochook;
+  if (hdr == NULL)
+    return NULL;
+
+  hdr->size = size;
+  hdr->magic = MAGICWORD;
+  ((char *) &hdr[1])[size] = MAGICBYTE;
+  return memset (hdr + 1, MALLOCFLOOD, size);
+}
+
+static void *
+reallochook (void *ptr, size_t size)
+{
+  struct hdr *hdr = NULL;
+  size_t osize = 0;
+
+  if (ptr)
+    {
+      hdr = ((struct hdr *) ptr) - 1;
+      osize = hdr->size;
+
+      checkhdr (hdr);
+      if (size < osize)
+       memset ((char *) ptr + size, FREEFLOOD, osize - size);
+    }
+
+  __free_hook = old_free_hook;
+  __malloc_hook = old_malloc_hook;
+  __realloc_hook = old_realloc_hook;
+  hdr = realloc (hdr, sizeof *hdr + size + 1);
+  __free_hook = freehook;
+  __malloc_hook = mallochook;
+  __realloc_hook = reallochook;
+  if (hdr == NULL)
+    return NULL;
+
+  hdr->size = size;
+  hdr->magic = MAGICWORD;
+  ((char *) &hdr[1])[size] = MAGICBYTE;
+  if (size > osize)
+    memset ((char *) (hdr + 1) + osize, MALLOCFLOOD, size - osize);
+  return hdr + 1;
+}
+
+static void
+mabort (enum mcheck_status status)
+{
+  const char *msg;
+  switch (status)
+    {
+    case MCHECK_OK:
+      msg = "memory is consistent, library is buggy";
+      break;
+    case MCHECK_HEAD:
+      msg = "memory clobbered before allocated block";
+      break;
+    case MCHECK_TAIL:
+      msg = "memory clobbered past end of allocated block";
+      break;
+    case MCHECK_FREE:
+      msg = "block freed twice";
+      break;
+    default:
+      msg = "bogus mcheck_status, library is buggy";
+      break;
+    }
+#ifdef __GNU_LIBRARY__
+  __libc_fatal (msg);
+#else
+  fprintf (stderr, "mcheck: %s\n", msg);
+  fflush (stderr);
+# ifdef emacs
+  emacs_abort ();
+# else
+  abort ();
+# endif
+#endif
+}
+
+static int mcheck_used = 0;
+
+int
+mcheck (void (*func) (enum mcheck_status))
+{
+  abortfunc = (func != NULL) ? func : &mabort;
+
+  /* These hooks may not be safely inserted if malloc is already in use.  */
+  if (!__malloc_initialized && !mcheck_used)
+    {
+      old_free_hook = __free_hook;
+      __free_hook = freehook;
+      old_malloc_hook = __malloc_hook;
+      __malloc_hook = mallochook;
+      old_realloc_hook = __realloc_hook;
+      __realloc_hook = reallochook;
+      mcheck_used = 1;
+    }
+
+  return mcheck_used ? 0 : -1;
+}
+
+enum mcheck_status
+mprobe (void *ptr)
+{
+  return mcheck_used ? checkhdr (ptr) : MCHECK_DISABLED;
+}
+
+#endif /* GC_MCHECK */
diff --git a/src/keyboard.c b/test/etags/c-src/emacs/src/keyboard.c
similarity index 99%
copy from src/keyboard.c
copy to test/etags/c-src/emacs/src/keyboard.c
index bd79f90..77f7fb9 100644
--- a/src/keyboard.c
+++ b/test/etags/c-src/emacs/src/keyboard.c
@@ -391,47 +391,47 @@ static void store_user_signal_events (void);
 static void
 kset_echo_string (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (echo_string) = val;
+  kb->echo_string_ = val;
 }
 static void
 kset_kbd_queue (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (kbd_queue) = val;
+  kb->kbd_queue_ = val;
 }
 static void
 kset_keyboard_translate_table (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vkeyboard_translate_table) = val;
+  kb->Vkeyboard_translate_table_ = val;
 }
 static void
 kset_last_prefix_arg (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vlast_prefix_arg) = val;
+  kb->Vlast_prefix_arg_ = val;
 }
 static void
 kset_last_repeatable_command (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vlast_repeatable_command) = val;
+  kb->Vlast_repeatable_command_ = val;
 }
 static void
 kset_local_function_key_map (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vlocal_function_key_map) = val;
+  kb->Vlocal_function_key_map_ = val;
 }
 static void
 kset_overriding_terminal_local_map (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Voverriding_terminal_local_map) = val;
+  kb->Voverriding_terminal_local_map_ = val;
 }
 static void
 kset_real_last_command (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (Vreal_last_command) = val;
+  kb->Vreal_last_command_ = val;
 }
 static void
 kset_system_key_syms (struct kboard *kb, Lisp_Object val)
 {
-  kb->INTERNAL_FIELD (system_key_syms) = val;
+  kb->system_key_syms_ = val;
 }
 
 
@@ -8707,12 +8707,10 @@ read_char_minibuf_menu_prompt (int commandflag,
       while (BUFFERP (obj));
       kset_defining_kbd_macro (current_kboard, orig_defn_macro);
 
-      if (!INTEGERP (obj) || XINT (obj) == -2)
-        return obj;
-
-      if (! EQ (obj, menu_prompt_more_char)
-         && (!INTEGERP (menu_prompt_more_char)
-             || ! EQ (obj, make_number (Ctl (XINT (menu_prompt_more_char))))))
+      if (!INTEGERP (obj) || XINT (obj) == -2
+         || (! EQ (obj, menu_prompt_more_char)
+             && (!INTEGERP (menu_prompt_more_char)
+                 || ! EQ (obj, make_number (Ctl (XINT 
(menu_prompt_more_char)))))))
        {
          if (!NILP (KVAR (current_kboard, defining_kbd_macro)))
            store_kbd_macro_char (obj);
diff --git a/src/lisp.h b/test/etags/c-src/emacs/src/lisp.h
similarity index 99%
copy from src/lisp.h
copy to test/etags/c-src/emacs/src/lisp.h
index 55c4c66..6d34ce3 100644
--- a/src/lisp.h
+++ b/test/etags/c-src/emacs/src/lisp.h
@@ -1144,10 +1144,6 @@ LISP_MACRO_DEFUN_VOID (CHECK_TYPE,
                       (int ok, Lisp_Object predicate, Lisp_Object x),
                       (ok, predicate, x))
 
-/* Deprecated and will be removed soon.  */
-
-#define INTERNAL_FIELD(field) field ## _
-
 /* See the macros in intervals.h.  */
 
 typedef struct interval *INTERVAL;
diff --git a/test/etags/c-src/emacs/src/regex.h 
b/test/etags/c-src/emacs/src/regex.h
new file mode 100644
index 0000000..3dfecf0
--- /dev/null
+++ b/test/etags/c-src/emacs/src/regex.h
@@ -0,0 +1,630 @@
+/* Definitions for data structures and routines for the regular
+   expression library, version 0.12.
+
+   Copyright (C) 1985, 1989-1993, 1995, 2000-2015 Free Software
+   Foundation, Inc.
+
+   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, 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/>.  */
+
+#ifndef _REGEX_H
+#define _REGEX_H 1
+
+/* Allow the use in C++ code.  */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* POSIX says that <sys/types.h> must be included (by the caller) before
+   <regex.h>.  */
+
+#if !defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE && defined VMS
+/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
+   should be there.  */
+# include <stddef.h>
+#endif
+
+/* The following bits are used to determine the regexp syntax we
+   recognize.  The set/not-set meanings where historically chosen so
+   that Emacs syntax had the value 0.
+   The bits are given in alphabetical order, and
+   the definitions shifted by one from the previous bit; thus, when we
+   add or remove a bit, only one other definition need change.  */
+typedef unsigned long reg_syntax_t;
+
+/* If this bit is not set, then \ inside a bracket expression is literal.
+   If set, then such a \ quotes the following character.  */
+#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
+
+/* If this bit is not set, then + and ? are operators, and \+ and \? are
+     literals.
+   If set, then \+ and \? are operators and + and ? are literals.  */
+#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
+
+/* If this bit is set, then character classes are supported.  They are:
+     [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],
+     [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
+   If not set, then character classes are not supported.  */
+#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
+
+/* If this bit is set, then ^ and $ are always anchors (outside bracket
+     expressions, of course).
+   If this bit is not set, then it depends:
+        ^  is an anchor if it is at the beginning of a regular
+           expression or after an open-group or an alternation operator;
+        $  is an anchor if it is at the end of a regular expression, or
+           before a close-group or an alternation operator.
+
+   This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
+   POSIX draft 11.2 says that * etc. in leading positions is undefined.
+   We already implemented a previous draft which made those constructs
+   invalid, though, so we haven't changed the code back.  */
+#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
+
+/* If this bit is set, then special characters are always special
+     regardless of where they are in the pattern.
+   If this bit is not set, then special characters are special only in
+     some contexts; otherwise they are ordinary.  Specifically,
+     * + ? and intervals are only special when not after the beginning,
+     open-group, or alternation operator.  */
+#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
+
+/* If this bit is set, then *, +, ?, and { cannot be first in an re or
+     immediately after an alternation or begin-group operator.  */
+#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
+
+/* If this bit is set, then . matches newline.
+   If not set, then it doesn't.  */
+#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
+
+/* If this bit is set, then . doesn't match NUL.
+   If not set, then it does.  */
+#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
+
+/* If this bit is set, nonmatching lists [^...] do not match newline.
+   If not set, they do.  */
+#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
+
+/* If this bit is set, either \{...\} or {...} defines an
+     interval, depending on RE_NO_BK_BRACES.
+   If not set, \{, \}, {, and } are literals.  */
+#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
+
+/* If this bit is set, +, ? and | aren't recognized as operators.
+   If not set, they are.  */
+#define RE_LIMITED_OPS (RE_INTERVALS << 1)
+
+/* If this bit is set, newline is an alternation operator.
+   If not set, newline is literal.  */
+#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
+
+/* If this bit is set, then `{...}' defines an interval, and \{ and \}
+     are literals.
+  If not set, then `\{...\}' defines an interval.  */
+#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
+
+/* If this bit is set, (...) defines a group, and \( and \) are literals.
+   If not set, \(...\) defines a group, and ( and ) are literals.  */
+#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
+
+/* If this bit is set, then \<digit> matches <digit>.
+   If not set, then \<digit> is a back-reference.  */
+#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
+
+/* If this bit is set, then | is an alternation operator, and \| is literal.
+   If not set, then \| is an alternation operator, and | is literal.  */
+#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
+
+/* If this bit is set, then an ending range point collating higher
+     than the starting range point, as in [z-a], is invalid.
+   If not set, then when ending range point collates higher than the
+     starting range point, the range is ignored.  */
+#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
+
+/* If this bit is set, then an unmatched ) is ordinary.
+   If not set, then an unmatched ) is invalid.  */
+#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
+
+/* If this bit is set, succeed as soon as we match the whole pattern,
+   without further backtracking.  */
+#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
+
+/* If this bit is set, do not process the GNU regex operators.
+   If not set, then the GNU regex operators are recognized. */
+#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
+
+/* If this bit is set, then *?, +? and ?? match non greedily. */
+#define RE_FRUGAL (RE_NO_GNU_OPS << 1)
+
+/* If this bit is set, then (?:...) is treated as a shy group.  */
+#define RE_SHY_GROUPS (RE_FRUGAL << 1)
+
+/* If this bit is set, ^ and $ only match at beg/end of buffer.  */
+#define RE_NO_NEWLINE_ANCHOR (RE_SHY_GROUPS << 1)
+
+/* If this bit is set, turn on internal regex debugging.
+   If not set, and debugging was on, turn it off.
+   This only works if regex.c is compiled -DDEBUG.
+   We define this bit always, so that all that's needed to turn on
+   debugging is to recompile regex.c; the calling code can always have
+   this bit set, and it won't affect anything in the normal case. */
+#define RE_DEBUG (RE_NO_NEWLINE_ANCHOR << 1)
+
+/* This global variable defines the particular regexp syntax to use (for
+   some interfaces).  When a regexp is compiled, the syntax used is
+   stored in the pattern buffer, so changing this does not affect
+   already-compiled regexps.  */
+extern reg_syntax_t re_syntax_options;
+
+#ifdef emacs
+/* In Emacs, this is the string or buffer in which we
+   are matching.  It is used for looking up syntax properties.  */
+extern Lisp_Object re_match_object;
+#endif
+
+/* Roughly the maximum number of failure points on the stack.  */
+extern size_t re_max_failures;
+
+
+/* Define combinations of the above bits for the standard possibilities.
+   (The [[[ comments delimit what gets put into the Texinfo file, so
+   don't delete them!)  */
+/* [[[begin syntaxes]]] */
+#define RE_SYNTAX_EMACS                                                        
\
+  (RE_CHAR_CLASSES | RE_INTERVALS | RE_SHY_GROUPS | RE_FRUGAL)
+
+#define RE_SYNTAX_AWK                                                  \
+  (RE_BACKSLASH_ESCAPE_IN_LISTS   | RE_DOT_NOT_NULL                    \
+   | RE_NO_BK_PARENS              | RE_NO_BK_REFS                      \
+   | RE_NO_BK_VBAR                | RE_NO_EMPTY_RANGES                 \
+   | RE_DOT_NEWLINE              | RE_CONTEXT_INDEP_ANCHORS            \
+   | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS)
+
+#define RE_SYNTAX_GNU_AWK                                              \
+  ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG)        
\
+   & ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS))
+
+#define RE_SYNTAX_POSIX_AWK                                            \
+  (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS             \
+   | RE_INTERVALS          | RE_NO_GNU_OPS)
+
+#define RE_SYNTAX_GREP                                                 \
+  (RE_BK_PLUS_QM              | RE_CHAR_CLASSES                                
\
+   | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS                           \
+   | RE_NEWLINE_ALT)
+
+#define RE_SYNTAX_EGREP                                                        
\
+  (RE_CHAR_CLASSES        | RE_CONTEXT_INDEP_ANCHORS                   \
+   | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE                   \
+   | RE_NEWLINE_ALT       | RE_NO_BK_PARENS                            \
+   | RE_NO_BK_VBAR)
+
+#define RE_SYNTAX_POSIX_EGREP                                          \
+  (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
+
+/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff.  */
+#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
+
+#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
+
+/* Syntax bits common to both basic and extended POSIX regex syntax.  */
+#define _RE_SYNTAX_POSIX_COMMON                                                
\
+  (RE_CHAR_CLASSES | RE_DOT_NEWLINE      | RE_DOT_NOT_NULL             \
+   | RE_INTERVALS  | RE_NO_EMPTY_RANGES)
+
+#define RE_SYNTAX_POSIX_BASIC                                          \
+  (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
+
+/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
+   RE_LIMITED_OPS, i.e., \? \+ \| are not recognized.  Actually, this
+   isn't minimal, since other operators, such as \`, aren't disabled.  */
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC                                  \
+  (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
+
+#define RE_SYNTAX_POSIX_EXTENDED                                       \
+  (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS                 \
+   | RE_CONTEXT_INDEP_OPS   | RE_NO_BK_BRACES                          \
+   | RE_NO_BK_PARENS        | RE_NO_BK_VBAR                            \
+   | RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD)
+
+/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is
+   removed and RE_NO_BK_REFS is added.  */
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED                               \
+  (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS                 \
+   | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES                          \
+   | RE_NO_BK_PARENS        | RE_NO_BK_REFS                            \
+   | RE_NO_BK_VBAR         | RE_UNMATCHED_RIGHT_PAREN_ORD)
+/* [[[end syntaxes]]] */
+
+/* Maximum number of duplicates an interval can allow.  Some systems
+   (erroneously) define this in other header files, but we want our
+   value, so remove any previous define.  */
+#ifdef RE_DUP_MAX
+# undef RE_DUP_MAX
+#endif
+/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows.  */
+#define RE_DUP_MAX (0x7fff)
+
+
+/* POSIX `cflags' bits (i.e., information for `regcomp').  */
+
+/* If this bit is set, then use extended regular expression syntax.
+   If not set, then use basic regular expression syntax.  */
+#define REG_EXTENDED 1
+
+/* If this bit is set, then ignore case when matching.
+   If not set, then case is significant.  */
+#define REG_ICASE (REG_EXTENDED << 1)
+
+/* If this bit is set, then anchors do not match at newline
+     characters in the string.
+   If not set, then anchors do match at newlines.  */
+#define REG_NEWLINE (REG_ICASE << 1)
+
+/* If this bit is set, then report only success or fail in regexec.
+   If not set, then returns differ between not matching and errors.  */
+#define REG_NOSUB (REG_NEWLINE << 1)
+
+
+/* POSIX `eflags' bits (i.e., information for regexec).  */
+
+/* If this bit is set, then the beginning-of-line operator doesn't match
+     the beginning of the string (presumably because it's not the
+     beginning of a line).
+   If not set, then the beginning-of-line operator does match the
+     beginning of the string.  */
+#define REG_NOTBOL 1
+
+/* Like REG_NOTBOL, except for the end-of-line.  */
+#define REG_NOTEOL (1 << 1)
+
+
+/* If any error codes are removed, changed, or added, update the
+   `re_error_msg' table in regex.c.  */
+typedef enum
+{
+#ifdef _XOPEN_SOURCE
+  REG_ENOSYS = -1,     /* This will never happen for this implementation.  */
+#endif
+
+  REG_NOERROR = 0,     /* Success.  */
+  REG_NOMATCH,         /* Didn't find a match (for regexec).  */
+
+  /* POSIX regcomp return error codes.  (In the order listed in the
+     standard.)  */
+  REG_BADPAT,          /* Invalid pattern.  */
+  REG_ECOLLATE,                /* Not implemented.  */
+  REG_ECTYPE,          /* Invalid character class name.  */
+  REG_EESCAPE,         /* Trailing backslash.  */
+  REG_ESUBREG,         /* Invalid back reference.  */
+  REG_EBRACK,          /* Unmatched left bracket.  */
+  REG_EPAREN,          /* Parenthesis imbalance.  */
+  REG_EBRACE,          /* Unmatched \{.  */
+  REG_BADBR,           /* Invalid contents of \{\}.  */
+  REG_ERANGE,          /* Invalid range end.  */
+  REG_ESPACE,          /* Ran out of memory.  */
+  REG_BADRPT,          /* No preceding re for repetition op.  */
+
+  /* Error codes we've added.  */
+  REG_EEND,            /* Premature end.  */
+  REG_ESIZE,           /* Compiled pattern bigger than 2^16 bytes.  */
+  REG_ERPAREN,         /* Unmatched ) or \); not returned from regcomp.  */
+  REG_ERANGEX          /* Range striding over charsets.  */
+} reg_errcode_t;
+
+/* This data structure represents a compiled pattern.  Before calling
+   the pattern compiler, the fields `buffer', `allocated', `fastmap',
+   `translate', and `no_sub' can be set.  After the pattern has been
+   compiled, the `re_nsub' field is available.  All other fields are
+   private to the regex routines.  */
+
+#ifndef RE_TRANSLATE_TYPE
+# define RE_TRANSLATE_TYPE char *
+#endif
+
+struct re_pattern_buffer
+{
+/* [[[begin pattern_buffer]]] */
+       /* Space that holds the compiled pattern.  It is declared as
+          `unsigned char *' because its elements are
+           sometimes used as array indexes.  */
+  unsigned char *buffer;
+
+       /* Number of bytes to which `buffer' points.  */
+  size_t allocated;
+
+       /* Number of bytes actually used in `buffer'.  */
+  size_t used;
+
+        /* Syntax setting with which the pattern was compiled.  */
+  reg_syntax_t syntax;
+
+        /* Pointer to a fastmap, if any, otherwise zero.  re_search uses
+           the fastmap, if there is one, to skip over impossible
+           starting points for matches.  */
+  char *fastmap;
+
+        /* Either a translate table to apply to all characters before
+           comparing them, or zero for no translation.  The translation
+           is applied to a pattern when it is compiled and to a string
+           when it is matched.  */
+  RE_TRANSLATE_TYPE translate;
+
+       /* Number of subexpressions found by the compiler.  */
+  size_t re_nsub;
+
+        /* Zero if this pattern cannot match the empty string, one else.
+           Well, in truth it's used only in `re_search_2', to see
+           whether or not we should use the fastmap, so we don't set
+           this absolutely perfectly; see `re_compile_fastmap'.  */
+  unsigned can_be_null : 1;
+
+        /* If REGS_UNALLOCATED, allocate space in the `regs' structure
+             for `max (RE_NREGS, re_nsub + 1)' groups.
+           If REGS_REALLOCATE, reallocate space if necessary.
+           If REGS_FIXED, use what's there.  */
+#define REGS_UNALLOCATED 0
+#define REGS_REALLOCATE 1
+#define REGS_FIXED 2
+  unsigned regs_allocated : 2;
+
+        /* Set to zero when `regex_compile' compiles a pattern; set to one
+           by `re_compile_fastmap' if it updates the fastmap.  */
+  unsigned fastmap_accurate : 1;
+
+        /* If set, `re_match_2' does not return information about
+           subexpressions.  */
+  unsigned no_sub : 1;
+
+        /* If set, a beginning-of-line anchor doesn't match at the
+           beginning of the string.  */
+  unsigned not_bol : 1;
+
+        /* Similarly for an end-of-line anchor.  */
+  unsigned not_eol : 1;
+
+  /* If true, the compilation of the pattern had to look up the syntax table,
+     so the compiled pattern is only valid for the current syntax table.  */
+  unsigned used_syntax : 1;
+
+#ifdef emacs
+  /* If true, multi-byte form in the regexp pattern should be
+     recognized as a multibyte character.  */
+  unsigned multibyte : 1;
+
+  /* If true, multi-byte form in the target of match should be
+     recognized as a multibyte character.  */
+  unsigned target_multibyte : 1;
+
+  /* Charset of unibyte characters at compiling time. */
+  int charset_unibyte;
+#endif
+
+/* [[[end pattern_buffer]]] */
+};
+
+typedef struct re_pattern_buffer regex_t;
+
+/* Type for byte offsets within the string.  POSIX mandates this to be an int,
+   but the Open Group has signaled its intention to change the requirement to
+   be that regoff_t be at least as wide as ptrdiff_t and ssize_t.  Current
+   gnulib sources also use ssize_t, and we need this for supporting buffers and
+   strings > 2GB on 64-bit hosts.  */
+typedef ssize_t regoff_t;
+
+
+/* This is the structure we store register match data in.  See
+   regex.texinfo for a full description of what registers match.  */
+struct re_registers
+{
+  unsigned num_regs;
+  regoff_t *start;
+  regoff_t *end;
+};
+
+
+/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
+   `re_match_2' returns information about at least this many registers
+   the first time a `regs' structure is passed.  */
+#ifndef RE_NREGS
+# define RE_NREGS 30
+#endif
+
+
+/* POSIX specification for registers.  Aside from the different names than
+   `re_registers', POSIX uses an array of structures, instead of a
+   structure of arrays.  */
+typedef struct
+{
+  regoff_t rm_so;  /* Byte offset from string's start to substring's start.  */
+  regoff_t rm_eo;  /* Byte offset from string's start to substring's end.  */
+} regmatch_t;
+
+/* Declarations for routines.  */
+
+/* Sets the current default syntax to SYNTAX, and return the old syntax.
+   You can also simply assign to the `re_syntax_options' variable.  */
+extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
+
+/* Compile the regular expression PATTERN, with length LENGTH
+   and syntax given by the global `re_syntax_options', into the buffer
+   BUFFER.  Return NULL if successful, and an error string if not.  */
+extern const char *re_compile_pattern (const char *__pattern, size_t __length,
+                                      struct re_pattern_buffer *__buffer);
+
+
+/* Compile a fastmap for the compiled pattern in BUFFER; used to
+   accelerate searches.  Return 0 if successful and -2 if was an
+   internal error.  */
+extern int re_compile_fastmap (struct re_pattern_buffer *__buffer);
+
+
+/* Search in the string STRING (with length LENGTH) for the pattern
+   compiled into BUFFER.  Start searching at position START, for RANGE
+   characters.  Return the starting position of the match, -1 for no
+   match, or -2 for an internal error.  Also return register
+   information in REGS (if REGS and BUFFER->no_sub are nonzero).  */
+extern regoff_t re_search (struct re_pattern_buffer *__buffer,
+                          const char *__string, size_t __length,
+                          ssize_t __start, ssize_t __range,
+                          struct re_registers *__regs);
+
+
+/* Like `re_search', but search in the concatenation of STRING1 and
+   STRING2.  Also, stop searching at index START + STOP.  */
+extern regoff_t re_search_2 (struct re_pattern_buffer *__buffer,
+                            const char *__string1, size_t __length1,
+                            const char *__string2, size_t __length2,
+                            ssize_t __start, ssize_t __range,
+                            struct re_registers *__regs,
+                            ssize_t __stop);
+
+
+/* Like `re_search', but return how many characters in STRING the regexp
+   in BUFFER matched, starting at position START.  */
+extern regoff_t re_match (struct re_pattern_buffer *__buffer,
+                         const char *__string, size_t __length,
+                         ssize_t __start, struct re_registers *__regs);
+
+
+/* Relates to `re_match' as `re_search_2' relates to `re_search'.  */
+extern regoff_t re_match_2 (struct re_pattern_buffer *__buffer,
+                           const char *__string1, size_t __length1,
+                           const char *__string2, size_t __length2,
+                           ssize_t __start, struct re_registers *__regs,
+                           ssize_t __stop);
+
+
+/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
+   ENDS.  Subsequent matches using BUFFER and REGS will use this memory
+   for recording register information.  STARTS and ENDS must be
+   allocated with malloc, and must each be at least `NUM_REGS * sizeof
+   (regoff_t)' bytes long.
+
+   If NUM_REGS == 0, then subsequent matches should allocate their own
+   register data.
+
+   Unless this function is called, the first search or match using
+   PATTERN_BUFFER will allocate its own register data, without
+   freeing the old data.  */
+extern void re_set_registers (struct re_pattern_buffer *__buffer,
+                             struct re_registers *__regs,
+                             unsigned __num_regs,
+                             regoff_t *__starts, regoff_t *__ends);
+
+#if defined _REGEX_RE_COMP || defined _LIBC
+# ifndef _CRAY
+/* 4.2 bsd compatibility.  */
+extern char *re_comp (const char *);
+extern int re_exec (const char *);
+# endif
+#endif
+
+/* GCC 2.95 and later have "__restrict"; C99 compilers have
+   "restrict", and "configure" may have defined "restrict".
+   Other compilers use __restrict, __restrict__, and _Restrict, and
+   'configure' might #define 'restrict' to those words, so pick a
+   different name.  */
+#ifndef _Restrict_
+# if 199901L <= __STDC_VERSION__
+#  define _Restrict_ restrict
+# elif 2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)
+#  define _Restrict_ __restrict
+# else
+#  define _Restrict_
+# endif
+#endif
+/* gcc 3.1 and up support the [restrict] syntax.  Don't trust
+   sys/cdefs.h's definition of __restrict_arr, though, as it
+   mishandles gcc -ansi -pedantic.  */
+#ifndef _Restrict_arr_
+# if ((199901L <= __STDC_VERSION__                                     \
+       || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__))    \
+          && !defined __STRICT_ANSI__))                                        
\
+      && !defined __GNUG__)
+#  define _Restrict_arr_ _Restrict_
+# else
+#  define _Restrict_arr_
+# endif
+#endif
+
+/* POSIX compatibility.  */
+extern reg_errcode_t regcomp (regex_t *_Restrict_ __preg,
+                             const char *_Restrict_ __pattern,
+                             int __cflags);
+
+extern reg_errcode_t regexec (const regex_t *_Restrict_ __preg,
+                             const char *_Restrict_ __string, size_t __nmatch,
+                             regmatch_t __pmatch[_Restrict_arr_],
+                             int __eflags);
+
+extern size_t regerror (int __errcode, const regex_t * __preg,
+                       char *__errbuf, size_t __errbuf_size);
+
+extern void regfree (regex_t *__preg);
+
+
+#ifdef __cplusplus
+}
+#endif /* C++ */
+
+/* For platform which support the ISO C amendment 1 functionality we
+   support user defined character classes.  */
+#if WIDE_CHAR_SUPPORT
+/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.  */
+# include <wchar.h>
+# include <wctype.h>
+#endif
+
+#if WIDE_CHAR_SUPPORT
+/* The GNU C library provides support for user-defined character classes
+   and the functions from ISO C amendment 1.  */
+# ifdef CHARCLASS_NAME_MAX
+#  define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX
+# else
+/* This shouldn't happen but some implementation might still have this
+   problem.  Use a reasonable default value.  */
+#  define CHAR_CLASS_MAX_LENGTH 256
+# endif
+typedef wctype_t re_wctype_t;
+typedef wchar_t re_wchar_t;
+# define re_wctype wctype
+# define re_iswctype iswctype
+# define re_wctype_to_bit(cc) 0
+#else
+# define CHAR_CLASS_MAX_LENGTH  9 /* Namely, `multibyte'.  */
+# define btowc(c) c
+
+/* Character classes.  */
+typedef enum { RECC_ERROR = 0,
+              RECC_ALNUM, RECC_ALPHA, RECC_WORD,
+              RECC_GRAPH, RECC_PRINT,
+              RECC_LOWER, RECC_UPPER,
+              RECC_PUNCT, RECC_CNTRL,
+              RECC_DIGIT, RECC_XDIGIT,
+              RECC_BLANK, RECC_SPACE,
+              RECC_MULTIBYTE, RECC_NONASCII,
+              RECC_ASCII, RECC_UNIBYTE
+} re_wctype_t;
+
+extern char re_iswctype (int ch,    re_wctype_t cc);
+extern re_wctype_t re_wctype (const unsigned char* str);
+
+typedef int re_wchar_t;
+
+extern void re_set_whitespace_regexp (const char *regexp);
+
+#endif /* not WIDE_CHAR_SUPPORT */
+
+#endif /* regex.h */
+
diff --git a/lib-src/etags.c b/test/etags/c-src/etags.c
similarity index 99%
copy from lib-src/etags.c
copy to test/etags/c-src/etags.c
index b1361db..f243821 100644
--- a/lib-src/etags.c
+++ b/test/etags/c-src/etags.c
@@ -2862,7 +2862,10 @@ consider_token (char *str, int len, int c, int *c_extp,
      case st_none:
        if (constantypedefs
           && structdef == snone
-          && structtype == st_C_enum && bracelev > structbracelev)
+          && structtype == st_C_enum && bracelev > structbracelev
+          /* Don't tag tokens in expressions that assign values to enum
+             constants.  */
+          && fvdef != vignore)
         return true;           /* enum constant */
        switch (fvdef)
         {
@@ -3176,7 +3179,19 @@ C_entries (int c_ext, FILE *inf)
                      cpptoken = false;
                  }
              if (cpptoken)
-               definedef = dsharpseen;
+               {
+                 definedef = dsharpseen;
+                 /* This is needed for tagging enum values: when there are
+                    preprocessor conditionals inside the enum, we need to
+                    reset the value of fvdef so that the next enum value is
+                    tagged even though the one before it did not end in a
+                    comma.  */
+                 if (fvdef == vignore && instruct && parlev == 0)
+                   {
+                     if (strneq (cp, "#if", 3) || strneq (cp, "#el", 3))
+                       fvdef = fvnone;
+                   }
+               }
            } /* if (definedef == dnone) */
          continue;
        case '[':
@@ -3507,7 +3522,10 @@ C_entries (int c_ext, FILE *inf)
            case fstartlist:
            case finlist:
            case fignore:
+             break;
            case vignore:
+             if (instruct && parlev == 0)
+               fvdef = fvnone;
              break;
            case fdefunname:
              fvdef = fignore;
diff --git a/test/etags/c-src/exit.c b/test/etags/c-src/exit.c
new file mode 100644
index 0000000..b8cd22b
--- /dev/null
+++ b/test/etags/c-src/exit.c
@@ -0,0 +1,77 @@
+/* Copyright (C) 1991 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <ansidecl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "exit.h"
+
+#ifdef HAVE_GNU_LD
+CONST struct
+  {
+    size_t n;
+    void EXFUN((*fn[1]), (NOARGS));
+  } __libc_atexit;
+#endif
+
+/* Call all functions registered with `atexit' and `on_exit',
+   in the reverse of the order in which they were registered
+   perform stdio cleanup, and terminate program execution with STATUS.  */
+__NORETURN
+void
+DEFUN(exit, (status), int status)
+{
+  register CONST struct exit_function_list *l;
+
+  for (l = __exit_funcs; l != NULL; l = l->next)
+    {
+      register size_t i = l->idx;
+      while (i-- > 0)
+       {
+         CONST struct exit_function *CONST f = &l->fns[i];
+         switch (f->flavor)
+           {
+           case ef_free:
+             break;
+           case ef_on:
+             (*f->func.on.fn)(status, f->func.on.arg);
+             break;
+           case ef_at:
+             (*f->func.at)();
+             break;
+           }
+       }
+    }
+
+#ifdef HAVE_GNU_LD
+  {
+    void EXFUN((*CONST *fn), (NOARGS));
+    for (fn = __libc_atexit.fn; *fn != NULL; ++fn)
+      (**fn) ();
+  }
+#else
+  {
+    extern void EXFUN(_cleanup, (NOARGS));
+    _cleanup();
+  }
+#endif
+
+  _exit(status);
+}
+
diff --git a/test/etags/c-src/exit.strange_suffix 
b/test/etags/c-src/exit.strange_suffix
new file mode 100644
index 0000000..b8cd22b
--- /dev/null
+++ b/test/etags/c-src/exit.strange_suffix
@@ -0,0 +1,77 @@
+/* Copyright (C) 1991 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <ansidecl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "exit.h"
+
+#ifdef HAVE_GNU_LD
+CONST struct
+  {
+    size_t n;
+    void EXFUN((*fn[1]), (NOARGS));
+  } __libc_atexit;
+#endif
+
+/* Call all functions registered with `atexit' and `on_exit',
+   in the reverse of the order in which they were registered
+   perform stdio cleanup, and terminate program execution with STATUS.  */
+__NORETURN
+void
+DEFUN(exit, (status), int status)
+{
+  register CONST struct exit_function_list *l;
+
+  for (l = __exit_funcs; l != NULL; l = l->next)
+    {
+      register size_t i = l->idx;
+      while (i-- > 0)
+       {
+         CONST struct exit_function *CONST f = &l->fns[i];
+         switch (f->flavor)
+           {
+           case ef_free:
+             break;
+           case ef_on:
+             (*f->func.on.fn)(status, f->func.on.arg);
+             break;
+           case ef_at:
+             (*f->func.at)();
+             break;
+           }
+       }
+    }
+
+#ifdef HAVE_GNU_LD
+  {
+    void EXFUN((*CONST *fn), (NOARGS));
+    for (fn = __libc_atexit.fn; *fn != NULL; ++fn)
+      (**fn) ();
+  }
+#else
+  {
+    extern void EXFUN(_cleanup, (NOARGS));
+    _cleanup();
+  }
+#endif
+
+  _exit(status);
+}
+
diff --git a/test/etags/c-src/fail.c b/test/etags/c-src/fail.c
new file mode 100644
index 0000000..3248278
--- /dev/null
+++ b/test/etags/c-src/fail.c
@@ -0,0 +1 @@
+void (*prt_call())();
diff --git a/test/etags/c-src/getopt.h b/test/etags/c-src/getopt.h
new file mode 100644
index 0000000..93a5cf7
--- /dev/null
+++ b/test/etags/c-src/getopt.h
@@ -0,0 +1,125 @@
+/* Declarations for getopt.
+   Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
+
+   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 2, 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, write to the Free Software
+   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#ifndef _GETOPT_H
+#define _GETOPT_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns EOF, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument         (or 0) if the option does not take an argument,
+   required_argument   (or 1) if the option requires an argument,
+   optional_argument   (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+#if    __STDC__
+  const char *name;
+#else
+  char *name;
+#endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+#define        no_argument             0
+#define required_argument      1
+#define optional_argument      2
+
+#if __STDC__
+#if defined(__GNU_LIBRARY__)
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int argc, char *const *argv, const char *shortopts);
+#else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+#endif /* not __GNU_LIBRARY__ */
+extern int getopt_long (int argc, char *const *argv, const char *shortopts,
+                       const struct option *longopts, int *longind);
+extern int getopt_long_only (int argc, char *const *argv,
+                            const char *shortopts,
+                            const struct option *longopts, int *longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int argc, char *const *argv,
+                            const char *shortopts,
+                            const struct option *longopts, int *longind,
+                            int long_only);
+#else /* not __STDC__ */
+extern int getopt ();
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+#endif /* not __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GETOPT_H */
diff --git a/test/etags/c-src/h.h b/test/etags/c-src/h.h
new file mode 100644
index 0000000..f86c00d
--- /dev/null
+++ b/test/etags/c-src/h.h
@@ -0,0 +1,119 @@
+typedef enum
+{
+   ELEM_I/**< Comment Element i
+              Second comment line. */
+} Fails_t;
+typedef void Lang_function ();
+void Asm_labels ();
+typedef struct tpcmd
+{
+#define ggg hhh
+  union
+  {
+  } arg;
+}
+tpcmd;
+typedef struct foobar2_ {
+    fu   int (*funcptr) (void *ptr);
+    long foo;
+    char bar;
+} foobar2;
+typedef enum
+{
+    DEVICE_SWP,
+    DEVICE_LAST
+} bsp_DevId;
+typedef union {
+  struct constant_args {
+    unsigned int burst;
+  } constant;
+} args;
+typedef int *regset;
+typedef int INT;
+typedef union abc
+{
+  int def;
+} ghi1;
+typedef union abc {
+  int def;
+} ghi2;
+typedef struct a {
+} b;
+#define c() d
+typedef struct an_extern_linkage *an_extern_linkage_ptr;
+typedef struct an_extern_linkage {
+  a_name_linkage_kind
+               kind;
+                       /* The kind of external linkage ("C++" or "C"). */
+  a_byte_boolean
+               is_explicit;
+                       /* TRUE if the external linkage requirement is
+                          explicitly specified in the source; FALSE for the
+                          default set for the translation unit as a whole. */
+#ifdef CL_CHANGES
+  a_byte_boolean is_curly_brace_form;
+#endif
+} an_extern_linkage;
+typedef struct pollfd   pfdset[FD_SETSIZE];
+typedef union rtunion_def
+  {
+    int rtint;
+    char *rtstr;
+    struct rtx_def *rtx;
+  } womboid ;
+typedef union rtunion_def
+
+{
+
+  int rtint;
+  char *rtstr;
+  struct rtx_def *rtxp;
+  struct rtx_def rtxnp;
+
+}
+
+womboid
+
+;
+
+
+/* Leave the next two lines in that order.  They exercise an old bug. */
+enum {dog, cat} animals;
+typedef void (_CALLBACK_ *signal_handler)(int);
+typedef void (_CALLBACK_ *signal_handler1)(int);
+/* comment */ #define ANSIC
+ #define ANSIC
+ #else
+typedef void (proc) ();
+typedef void OperatorFun(int opId);
+typedef int f(int a,
+              int b);
+struct my_struct {
+};
+typedef struct my_struct my_typedef;
+typedef RETSIGTYPE (*signal_handler_t) (int);
+#if 0
+  Date 04 May 87 235311 PDT (Mon)
+  Date: 04 May 87 23:53:11 PDT (Mon)
+#endif
+typedef unsigned char unchar;
+typedef int X, Y, Z;
+typedef mio mao;
+extern void ab();
+typedef struct a { } b;
+typedef struct b
+{
+} c;
+int    (*oldhup)();
+request (*oldhup) ();
+int extvar;
+#define tag1
+#define aaaaaa \
+bbbbbb
+#define bbbbbb\
+cccccc
+#define cccccccccc
+#define enter_critical_section         do { int pri = spl7();
+#define exit_critical_to_previous      splarg (pri); } while (0)
+#define UNDEFINED
+struct re_pattern_buffer { unsigned char *buffer; };
diff --git a/test/etags/c-src/machsyscalls.c b/test/etags/c-src/machsyscalls.c
new file mode 100644
index 0000000..44930c3
--- /dev/null
+++ b/test/etags/c-src/machsyscalls.c
@@ -0,0 +1,10 @@
+/* Aliases for basic Mach system calls:
+   mach_task_self -> __mach_task_self, etc.  */
+
+#include <gnu-stabs.h>
+
+#define        SYSCALL(name, number, type, args, typed_args) \
+  function_alias (name, __##name, type, args, \
+                 name typed_args)
+
+#include "mach_syscalls.h"
diff --git a/test/etags/c-src/machsyscalls.h b/test/etags/c-src/machsyscalls.h
new file mode 100644
index 0000000..8b33dc4
--- /dev/null
+++ b/test/etags/c-src/machsyscalls.h
@@ -0,0 +1,31 @@
+SYSCALL (mach_msg_trap, -25,
+        mach_msg_return_t,
+        (msg, option, send_size,
+         rcv_size, rcv_name, timeout, notify),
+        (mach_msg_header_t *msg,
+         mach_msg_option_t option,
+         mach_msg_size_t send_size,
+         mach_msg_size_t rcv_size,
+         mach_port_t rcv_name,
+         mach_msg_timeout_t timeout,
+         mach_port_t notify))
+
+SYSCALL (mach_reply_port, -26,
+        mach_port_t,
+        (),
+        (void))
+
+SYSCALL (mach_thread_self, -27,
+        mach_port_t,
+        (),
+        (void))
+
+SYSCALL (mach_task_self, -28,
+        mach_port_t,
+        (),
+        (void))
+
+SYSCALL (mach_host_self, -29,
+        mach_port_t,
+        (),
+        (void))
diff --git a/test/etags/c-src/sysdep.h b/test/etags/c-src/sysdep.h
new file mode 100644
index 0000000..298a0e4
--- /dev/null
+++ b/test/etags/c-src/sysdep.h
@@ -0,0 +1,57 @@
+/* Copyright (C) 1992, 1993 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdeps/unix/sysdep.h>
+
+#define        ENTRY(name)                                                     
      \
+  .globl _##name;                                                            \
+  .align 2;                                                                  \
+  _##name##:
+
+#define        PSEUDO(name, syscall_name, args)                                
      \
+  .text;                                                                     \
+  .globl syscall_error;                                                        
      \
+  ENTRY (name)                                                               \
+    XCHG_##args
+    movl $SYS_##syscall_name, %eax;                                          \
+    int $0x80;                                                               \
+    test %eax, %eax;                                                         \
+    jl syscall_error;                                                        \
+    XCHG_##args
+
+/* Linux takes system call arguments in registers:
+       1: %ebx
+       2: %ecx
+       3: %edx
+       4: %esi
+       5: %edi
+   We put the arguments into registers from the stack,
+   and save the registers, by using the 386 `xchg' instruction
+   to swap the values in both directions.  */
+
+#define        XCHG_0  /* No arguments to frob.  */
+#define        XCHG_1  xchg 8(%esp), %ebx; XCHG_0
+#define        XCHG_2  xchg 12(%esp), %ecx; XCHG_1
+#define        XCHG_3  xchg 16(%esp), %edx; XCHG_2
+#define        XCHG_4  xchg 20(%esp), %esi; XCHG_3
+#define        XCHG_5  xchg 24(%esp), %edi; XCHG_3
+
+#define        r0              %eax    /* Normal return-value register.  */
+#define        r1              %edx    /* Secondary return-value register.  */
+#define scratch        %ecx    /* Call-clobbered register for random use.  */
+#define MOVE(x,y)      movl x, y
diff --git a/test/etags/c-src/tab.c b/test/etags/c-src/tab.c
new file mode 100644
index 0000000..b25d55c
--- /dev/null
+++ b/test/etags/c-src/tab.c
@@ -0,0 +1,112 @@
+/*
+** tab.c for  in
+**
+** Made by Pierric
+** Login   <address@hidden>
+**
+** Started on  Thu Jan 24 18:36:47 2002 Pierric
+** Last update Mon Sep 23 18:02:02 2002 Pierric
+*/
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include "my_malloc.h"
+
+static int             count_words(char *str, char delim)
+{
+  int                   count;
+
+  count = 0;
+  while (*str)
+    {
+      if (*str != delim)
+       {
+         count++;
+         if (!strchr(str + 1, delim))
+           return (count);
+         str = strchr(str + 1, delim);
+       }
+      else
+       str++;
+    }
+  return (count);
+}
+
+static char            *get_word(char **str, char delim)
+{
+  char                 *tmp;
+  char                 *new;
+
+  while (**str == delim)
+    (*str)++;
+  if (**str == 0)
+    return (NULL);
+  tmp = strchr(*str, delim);
+  if (!tmp)
+    {
+      new = strdup(*str);
+      while (**str)
+       (*str)++;
+      return (new);
+    }
+  my_malloc(new, tmp - *str + 1);
+  new[tmp - *str] = '\0';
+  strncpy(new, *str, tmp - *str);
+  *str = tmp;
+  return (new);
+}
+
+void                   tab_free(char **tab)
+{
+  int                   index;
+
+  if (!tab)
+    return;
+  for (index = 0; tab[index]; index++)
+    free(tab[index]);
+  free(tab);
+}
+
+char                   **tab_fill(char *str, char delim)
+{
+  int                   count;
+  char                  **tab;
+  int                   index;
+
+  if (!str)
+    return (NULL);
+  count = count_words(str, delim);
+  if (!count)
+    return (NULL);
+  my_malloc(tab, (count + 1) * sizeof(char *));
+  for (index = 0; (tab[index] = get_word(&str, delim)); index++)
+    ;
+  return (tab);
+}
+
+/*
+**             Deletes the first element of a wordtab, shifting the other
+**     elements. The size of the malloced area stays the same, though
+*/
+int                    tab_delete_first(char **tab)
+{
+  int                   i;
+
+  if (!tab[0])
+    return (-1);
+  free(tab[0]);
+  for (i = 0; tab[i]; i++)
+    tab[i] = tab[i + 1];
+  return (0);
+}
+
+int                    tab_count_words(char **tab)
+{
+  int                   count;
+
+  if (!tab)
+    return (0);
+  for (count = 0; tab[count]; count++)
+    ;
+  return (count);
+}
diff --git a/test/etags/c-src/torture.c b/test/etags/c-src/torture.c
new file mode 100644
index 0000000..77c3763
--- /dev/null
+++ b/test/etags/c-src/torture.c
@@ -0,0 +1,107 @@
+/* Date: Thu, 05 Aug 1993 20:28:03 +0200
+   From: "Tom R.Hageman" <address@hidden>
+   Subject: more etags torture;-) [etags 7.3 patch#3]
+   To: address@hidden
+
+   Hi,
+
+   This test file illustrates some more problems with etags (7.3):
+ 
+
+   1. parentheses are confusing,
+   2. preprocessor directives can disrupt other state machines. */
+
+/* A small torture test for etags. */
+
+/* The classic parenthesis nightmare, based on signal(). */
+void
+(*tag1 (sig, handler)) ()
+  int sig;
+  void (*handler) ();
+{
+  (*handler)(sig);
+  return handler;
+}
+
+#define notag2 void
+/* The classic, with user-defined return type. */
+notag2
+(*tag2 (sig, handler)) ()
+  int sig;
+  void (*handler) ();
+{
+  (*handler)(sig);
+  return handler;
+}
+
+/* The classic, in ANSI C style. */
+void
+(*tag3 (int sig, void (*handler) (int))) (int)
+{
+  (*handler)(sig);
+  return handler;
+}
+
+#define notag4 void
+/* The classic, with user-defined return type, in ANSI C style. */
+notag4
+(*tag4 (int sig, void (*handler) (int))) (int)
+{
+  (*handler)(sig);
+  return handler;
+}
+
+
+/* A less tortuous example. */
+void
+tag5 (handler, arg)
+void (*handler)();
+void *arg;
+{
+  (*handler)(arg);
+}
+
+/* A less tortuous example, in ANSI C style. */
+void
+tag6 (void (*handler) (void *), void *arg)
+{
+  (*handler)(arg);
+}
+
+
+/* Interfering preprocessing torture */
+
+int pp1(
+#if (__STDC__)
+       int
+#endif
+       bar)
+#if (!__STDC__)
+     int bar;
+#endif
+{
+  return bar;
+}
+
+int
+pp2
+#if __STDC__
+  (int bar)
+#else
+  (bar)
+    int bar;
+#endif
+{
+  return bar;
+}
+
+int
+#if __STDC__
+pp3(int bar)
+#else
+pp3(bar)
+  int bar;
+#endif
+{
+  return bar;
+}
diff --git a/test/etags/cp-src/MDiagArray2.h b/test/etags/cp-src/MDiagArray2.h
new file mode 100644
index 0000000..78ee5e1
--- /dev/null
+++ b/test/etags/cp-src/MDiagArray2.h
@@ -0,0 +1,163 @@
+// Template array classes with like-type math ops
+/*
+
+Copyright (C) 1996 John W. Eaton
+
+This file is part of Octave.
+
+Octave 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 2, or (at your option) any
+later version.
+
+Octave 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 Octave; see the file COPYING.  If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+*/
+
+#if defined (__GNUG__)
+#pragma interface
+#endif
+
+#if !defined (octave_MDiagArray2_h)
+#define octave_MDiagArray2_h 1
+
+#include "DiagArray2.h"
+#include "MArray2.h"
+
+#if defined (LTGT)
+#undef LTGT
+#endif
+
+#if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL)
+#define LTGT
+#else
+
+#define LTGT <>
+
+template <class T>
+class MDiagArray2;
+
+template <typename T> MDiagArray2<T>&
+operator += (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+template <typename T> MDiagArray2<T>&
+operator -= (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+template <typename T> MDiagArray2<T> 
+operator * (const MDiagArray2<T>& a, const T& s);
+
+template <typename T> MDiagArray2<T> 
+operator / (const MDiagArray2<T>& a, const T& s);
+
+template <typename T> MDiagArray2<T> 
+operator * (const T& s, const MDiagArray2<T>& a);
+
+template <typename T> MDiagArray2<T>
+operator + (const MDiagArray2<T>& a, const MDiagArray2<T>& b); 
+
+template <typename T> MDiagArray2<T>
+operator - (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+template <typename T> MDiagArray2<T>
+product (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+template <typename T> MDiagArray2<T> 
+operator - (const MDiagArray2<T>& a);
+#endif
+
+// Two dimensional diagonal array with math ops.
+
+template <class T>
+class MDiagArray2 : public DiagArray2<T>
+{
+protected:
+
+  MDiagArray2 (T *d, int r, int c) : DiagArray2<T> (d, r, c) { }
+
+public:
+  
+  MDiagArray2 (void) : DiagArray2<T> () { }
+  MDiagArray2 (int r, int c) : DiagArray2<T> (r, c) { }
+  MDiagArray2 (int r, int c, const T& val) : DiagArray2<T> (r, c, val) { }
+  MDiagArray2 (const Array<T>& a) : DiagArray2<T> (a) { }
+  MDiagArray2 (const DiagArray2<T>& a) : DiagArray2<T> (a) { }
+  MDiagArray2 (const MDiagArray2<T>& a) : DiagArray2<T> (a) { }
+
+  ~MDiagArray2 (void) { }
+
+  MDiagArray2<T>& operator = (const MDiagArray2<T>& a)
+    {
+      DiagArray2<T>::operator = (a);
+      return *this;
+    }
+
+  operator MArray2<T> () const
+    {
+      MArray2<T> retval (nr, nc,  T (0));
+
+      int len = nr < nc ? nr : nc;
+
+      for (int i = 0; i < len; i++)
+       retval.xelem (i, i) = xelem (i, i);
+
+      return retval;
+    }
+
+  // element by element MDiagArray2 by MDiagArray2 ops
+
+  friend MDiagArray2<T>&
+  operator += LTGT (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+  friend MDiagArray2<T>&
+  operator -= LTGT (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+  // element by element MDiagArray2 by scalar ops
+
+  friend MDiagArray2<T> operator * LTGT (const MDiagArray2<T>& a, const T& s);
+  friend MDiagArray2<T> operator / LTGT (const MDiagArray2<T>& a, const T& s);
+
+  // element by element scalar by MDiagArray2 ops
+
+  friend MDiagArray2<T> operator * LTGT (const T& s, const MDiagArray2<T>& a);
+
+  // element by element MDiagArray2 by MDiagArray2 ops
+
+  friend MDiagArray2<T>
+  operator + LTGT (const MDiagArray2<T>& a, const MDiagArray2<T>& b); 
+
+  friend MDiagArray2<T>
+  operator - LTGT (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+  friend MDiagArray2<T>
+  product LTGT (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+  friend MDiagArray2<T> operator - LTGT (const MDiagArray2<T>& a);
+};
+
+#undef LTGT
+
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(T) \
+  template MDiagArray2<T>& operator += (MDiagArray2<T>& a, const 
MDiagArray2<T>& b); \
+  template MDiagArray2<T>& operator -= (MDiagArray2<T>& a, const 
MDiagArray2<T>& b); \
+  template MDiagArray2<T> operator * (const MDiagArray2<T>& a, const T& s); \
+  template MDiagArray2<T> operator / (const MDiagArray2<T>& a, const T& s); \
+  template MDiagArray2<T> operator * (const T& s, const MDiagArray2<T>& a); \
+  template MDiagArray2<T> operator + (const MDiagArray2<T>& a, const 
MDiagArray2<T>& b); \
+  template MDiagArray2<T> operator - (const MDiagArray2<T>& a, const 
MDiagArray2<T>& b); \
+  template MDiagArray2<T> product (const MDiagArray2<T>& a, const 
MDiagArray2<T>& b); \
+  template MDiagArray2<T> operator - (const MDiagArray2<T>& a);
+
+#endif
+
+/*
+;;; Local Variables: ***
+;;; mode: C++ ***
+;;; End: ***
+*/
diff --git a/test/etags/cp-src/Range.h b/test/etags/cp-src/Range.h
new file mode 100644
index 0000000..b8cbab4
--- /dev/null
+++ b/test/etags/cp-src/Range.h
@@ -0,0 +1,96 @@
+/*
+
+Copyright (C) 1996 John W. Eaton
+
+This file is part of Octave.
+
+Octave 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 2, or (at your option) any
+later version.
+
+Octave 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 Octave; see the file COPYING.  If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+*/
+
+#if !defined (octave_Range_h)
+#define octave_Range_h 1
+
+#if defined (__GNUG__)
+#pragma interface
+#endif
+
+class istream;
+class ostream;
+class Matrix;
+
+class
+Range
+{
+ public:
+
+  Range (void)
+    : rng_base (-1), rng_limit (-1), rng_inc (-1), rng_nelem (-1) { }
+
+  Range (const Range& r)
+    : rng_base (r.rng_base), rng_limit (r.rng_limit), rng_inc (r.rng_inc),
+      rng_nelem (r.rng_nelem) { }
+
+  Range (double b, double l)
+    : rng_base (b), rng_limit (l), rng_inc (1),
+      rng_nelem (nelem_internal ()) { }
+
+  Range (double b, double l, double i)
+    : rng_base (b), rng_limit (l), rng_inc (i),
+      rng_nelem (nelem_internal ()) { }
+
+  double base (void) const { return rng_base;  }
+  double limit (void) const { return rng_limit; }
+  double inc (void) const { return rng_inc;   }
+  int nelem (void) const { return rng_nelem; }
+
+  bool all_elements_are_ints (void) const;
+
+  Matrix matrix_value (void) const;
+
+  double min (void) const;
+  double max (void) const;
+
+  void sort (void);
+
+  void set_base (double b) { rng_base = b;  }
+  void set_limit (double l) { rng_limit = l; }
+  void set_inc (double i) { rng_inc = i;   }
+
+  friend ostream& operator << (ostream& os, const Range& r);
+  friend istream& operator >> (istream& is, Range& r);
+
+  void print_range (void);
+
+ private:
+
+  double rng_base;
+  double rng_limit;
+  double rng_inc;
+
+  int rng_nelem;
+
+  int nelem_internal (void) const;
+};
+
+extern Range operator - (const Range& r);
+
+#endif
+
+/*
+;;; Local Variables: ***
+;;; mode: C++ ***
+;;; End: ***
+*/
diff --git a/test/etags/cp-src/burton.cpp b/test/etags/cp-src/burton.cpp
new file mode 100644
index 0000000..d86ad75
--- /dev/null
+++ b/test/etags/cp-src/burton.cpp
@@ -0,0 +1,14 @@
+::dummy::dummy test::dummy1(void)
+{
+  return ::dummy::dummy;
+}
+
+::dummy::dummy test::dummy2(::CORBA::Long dummy)
+{
+  return ::dummy::dummy;
+}
+
+::dummy::dummy test::dummy3(char* name, ::CORBA::Long dummy)
+{
+  return ::dummy::dummy;
+}
diff --git a/test/etags/cp-src/c.C b/test/etags/cp-src/c.C
new file mode 100644
index 0000000..2c5f7e0
--- /dev/null
+++ b/test/etags/cp-src/c.C
@@ -0,0 +1,156 @@
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels, typename ipc3dLinkControl, typename ipc3dLinkControlSetup>
+class CMultiChannelCSC19_3D
+{
+private:
+        ipc3dLinkControlSetup setup;
+        
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl>
 mcCSC;
+        advTimer cscInitTime;
+        advTimer cscSegmentationTime;
+        advTimer outputTime;
+public:
+        void execute(CPluginCSCState& p, int w, int h, int d, const 
ipcMultiChannel<ipc3dChannelType,numOfChannels>* orgImage, 
ipcMultiChannel<ipc3dChannelType,numOfChannels>* regionImage, unsigned int* 
mapImage, ipc3dBlockCompressedLabelImage* compressedMapImage=NULL)
+        {
+                if (orgImage!=NULL)
+                {
+                                  //do something
+                }
+        }
+
+class foo {
+  int const_func() const;
+  int b;
+  int non_const_func2(void);
+};
+static void my_function1(int var1) const;
+int main (void) { my_function0(0); my_function1(1); return; }
+double base (void) const { return rng_base;  }
+
+template <typename T> MDiagArray2<T>&
+operator += (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+class TestRecord;
+typedef struct s1 {
+   int counter;
+} t1;
+struct s2 {
+   int counter;
+};
+typedef struct s2 t2;
+class A {
+  enum { rosso, giallo, verde } colori;
+  const A& operator+(const A&);
+};
+const A& A::operator+(const A&) { }
+void operator+(int, int) {}
+void operator -(int, int) {}
+void operator int(int, int) {}
+
+A<int>* f() {}
+int f(A<int> x) {}
+int A<int>::f(A<int>* x) {}
+A<float,B<int> > A<B<float>,int>::f(A<int>* x) {}
+template <class C, int n> class AT { C t[n]; };
+class AU { T x; };
+class B<int> { void f() {} };
+const A::B::T& abt = abc;
+class A { class B { int f(); }; };
+class A {
+  int get_data() const;
+  A operator+(A& a) {};
+};
+is_muldiv_operation(pc)
+{
+}
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+domain foo {
+     void f() {}
+};
+
+void A::A() {}
+struct A { A(); }
+struct B { B(); };
+void B::B() {}
+void BE_Node::BE_Node() {}
+class BE_Node {};
+
+struct foo {
+  int x;
+};
+
+#ifdef __cplusplus
+}
+#endif
+class test {
+  int f(){return 0;};          // first comment
+                               // second comment
+  int ff(){return 1;};
+  int g(){return 2;};
+}
+class  AST_Root : public virtual AST_Module
+{
+};
+
+class  AST_Root;                       // The root of an AST 112,3888
+// etags finds
+
+AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeType nt, UTL_ScopedName *n,
+                                    UTL_StrList *p)
+                : AST_Decl(nt, n, p)
+{
+}
+
+// and
+
+AST_Array::AST_Array(UTL_ScopedName *n, unsigned long nd, UTL_ExprList *ds)
+        : pd_n_dims(nd), pd_base_type(NULL),
+          AST_Decl(AST_Decl::NT_array, n, NULL)
+{
+}
+
+// as definitions of AST_Decl.
+class {
+     void f() {}
+};
+struct A {
+    ~A();
+};
+A::~A() {}
+
+struct B {
+    ~B() {};
+};
+
+enum {dog, cat} animals;
+struct {int teats;} cow;
+
+class Boo {
+    enum {dog, cat} animals;
+    struct {int treats;} cow;
+    int i,a,b;
+    foo() {
+        cout << "hi";
+    }
+
+    Boo(int _i, int _a, int _b) : i(_i), a(_a), b(_b) {}
+    Boo(Boo);
+};
+
+Boo::Boo(Boo) :
+    i(i),
+    a(a),
+    b(b)
+{}
+
+/* extern "C" grot: */
+extern "C" {
+typedef int should_see_this_one_enclosed_in_extern_C;
+}
+
+/* Typedefs: */
+typedef int (*should_see_this_function_pointer) (
+       void *but_not_this_argument);
+
+typedef int should_see_this_array_type[but_not_this_subscript];
diff --git a/test/etags/cp-src/clheir.cpp.gz b/test/etags/cp-src/clheir.cpp.gz
new file mode 100644
index 0000000..38b08a8
Binary files /dev/null and b/test/etags/cp-src/clheir.cpp.gz differ
diff --git a/test/etags/cp-src/clheir.hpp b/test/etags/cp-src/clheir.hpp
new file mode 100644
index 0000000..a924563
--- /dev/null
+++ b/test/etags/cp-src/clheir.hpp
@@ -0,0 +1,82 @@
+/* ======================================================================= */
+/*                                 CLHEIR.H                                */
+/* ======================================================================= */
+
+// CLASS HEIRARCHY
+// Locations or Agents are both of type generic_object. Generic_objects may
+// have states, and are responsible for updating their states appropriately
+// when their step() functions are executed.
+
+extern void init_registry(void);
+extern void step_everybody(void);
+
+class generic_object
+    {
+    int where_in_registry;
+public:
+    generic_object();  // enter generic_object into ObjectRegistry
+    // We never copy generic_objects, so we don't need a copy constructor.
+    ~generic_object(void);  // delete from ObjectRegistry
+    // Simulation steps, accomodate different kinds of time
+    virtual void compute_next_state(void) { }
+    virtual void step(void) { }
+    };
+
+// =======================================================================
+
+// Locations can be regular (like a field of squares or hexagons) or
+// irregular. Regular locations have 2-D or 3-D positions represented
+// by integers. Locations are never copied; no need for copy constructors.
+
+const int max_num_directions = 6; // handles both cubes and hexagons
+
+class location: public generic_object
+    {
+    // Any kind of location needs a physical position, but for a regular
+    // location, this may be implicit, and for an irregular location, it
+    // should be custom-defined.
+
+    // Any kind of location needs a private list of neighbors, but for a
+    // regular location, this may be implicit.
+
+public:
+    location() { }
+    ~location();
+    };
+
+class irregular_location: public location
+    {
+    double x, y, z;
+public:
+    irregular_location(double xi, double yi, double zi)
+        { x = xi; y = yi; z = zi; }
+    ~irregular_location();
+    };
+
+class discrete_location: public location
+    {
+    int x, y, z;
+    class location *neighbors[max_num_directions];
+    void clear_neighbors(void);
+public:
+    discrete_location(int xi, int yi, int zi):
+        x(xi), y(yi), z(zi)
+            { clear_neighbors(); }
+    ~discrete_location(void);
+    void assign_neighbor(int direction, location *x)
+        { neighbors[direction] = x; }
+    };
+
+// =======================================================================
+
+// Agents are generic_objects with locations, who can move. Examples in
+// Pacman would be the protagonist, the monsters, and the monsters' ghosts.
+
+class agent: public generic_object
+    {
+    location *where;
+public:
+    agent();
+    ~agent();
+    void move(int);
+    };
diff --git a/test/etags/cp-src/conway.cpp b/test/etags/cp-src/conway.cpp
new file mode 100644
index 0000000..1e60014
--- /dev/null
+++ b/test/etags/cp-src/conway.cpp
@@ -0,0 +1,95 @@
+/* ======================================================================= */
+/*                                CONWAY.CPP                               */
+/* ======================================================================= */
+
+#include "assert.h"
+#include "iostream.h"
+#include "conio.h"
+#include "clheir.h"
+#include "screen.h"
+#include "conway.h"
+
+#define max(x,y)  ((x > y) ? x : y)
+#define min(x,y)  ((x > y) ? y : x)
+
+const int num_rows = min(50, NUM_ROWS);
+const int num_columns = 40;
+
+class site *field_of_play[num_rows][num_columns];
+
+int site::total_surrounding(void)
+    {
+    int i, j, imin, imax, jmin, jmax, total;
+
+    total = 0;
+    imin = max(0, x - 1);
+    imax = min(num_rows - 1, x + 1);
+    jmin = max(0, y - 1);
+    jmax = min(num_columns - 1, y + 1);
+
+    for (i = imin; i <= imax; i++)
+        for (j = jmin; j <= jmax; j++)
+            if (field_of_play[i][j]->read()) total++;
+    if (alive) total--;
+    return total;
+    }
+
+void display(void)
+    {
+    int i, j;
+
+    for (i = 0; i < num_rows; i++)
+        for (j = 0; j < num_columns; j++)
+            {
+            if (field_of_play[i][j]->read()) write_xyc(2*j, i, 'X');
+            else write_xyc(2*j, i, '.');
+            }
+    hide_cursor();
+    }
+
+void glider(int x, int y)
+    {
+    field_of_play[x - 1][y + 0]->set();
+    field_of_play[x - 1][y + 1]->set();
+    field_of_play[x + 0][y - 1]->set();
+    field_of_play[x + 0][y + 0]->set();
+    field_of_play[x + 1][y + 1]->set();
+    }
+
+void traffic_light(int x, int y)
+    {
+    field_of_play[x - 1][y]->set();
+    field_of_play[x + 0][y]->set();
+    field_of_play[x + 1][y]->set();
+    }
+
+
+void main(void)
+    {
+    int i, j, c;
+
+    init_registry();
+
+    for (i = 0; i < num_rows; i++)
+        for (j = 0; j < num_columns; j++)
+            field_of_play[i][j] = new site(i, j);
+
+start_over:
+    traffic_light(num_rows/2 - 8, num_columns/2 - 8);
+    glider(num_rows/2 + 8, num_columns/2 + 8);
+
+    clear_screen();
+    while (1)
+        {
+        display();
+        if ((c = getch()) == 'q') { clear_screen(); return; }
+        if (c == 'i')
+            {
+            for (i = 0; i < num_rows; i++)
+                for (j = 0; j < num_columns; j++)
+                    field_of_play[i][j]->clear();
+            goto start_over;
+            }
+        step_everybody();
+        }
+    }
diff --git a/test/etags/cp-src/conway.hpp b/test/etags/cp-src/conway.hpp
new file mode 100644
index 0000000..9fbb251
--- /dev/null
+++ b/test/etags/cp-src/conway.hpp
@@ -0,0 +1,23 @@
+/* ======================================================================= */
+/*                                 CONWAY.H                                */
+/* ======================================================================= */
+
+class site: public location
+    {
+    char x, y, alive, next_alive;
+    int total_surrounding(void);
+public:
+    site(int xi, int yi): x(xi), y(yi), alive(0) { }
+    ~site();
+    char read() { return alive; }
+    void set(void) { alive = 1; }
+    void clear(void) { alive = 0; }
+    void compute_next_state(void)
+        {
+        int n = total_surrounding();
+        next_alive = alive;
+        if (n < 2 || n > 3) next_alive = 0;
+        else if (n > 2) next_alive = 1;
+        }
+    void step(void) { alive = next_alive; }
+    };
diff --git a/test/etags/cp-src/fail.C b/test/etags/cp-src/fail.C
new file mode 100644
index 0000000..c602ed2
--- /dev/null
+++ b/test/etags/cp-src/fail.C
@@ -0,0 +1,52 @@
+/* Examples provided by Sam Kendall <address@hidden>, Jan 1997 */
+
+// check use of references with nested/local classes
+
+// This example causes etags 13 to abort when compiled with -DDEBUG.
+// Etags 13 cannot deal with nested structures after the first level.
+struct A {
+          struct B {
+                  struct C {
+                          int x;
+                          C(int i) {x = i;}
+                          operator int() const {return x;}
+                  };
+                  typedef C T;
+          };
+          typedef B T2;
+};
+
+
+class String;
+
+
+class A {
+       class B {
+               class C {};
+               int f() { return 5; }
+       };
+};
+
+
+int A::B::f() { return 2; }
+
+
+A::B::C abc(-37);
+
+
+main()
+{
+       if (abc != -37 || abt != -37) return 1;
+
+       class D : public A::B::C {
+       public:
+               D() : ::A::T2::T(97), x(1066) {}
+               int x;
+       } &d = D();
+
+       if (d.x != 1066 || d.A::T2::T::x != 97) return 2;
+       return 0;
+}
+
+
+template <class T>
diff --git a/test/etags/cp-src/functions.cpp b/test/etags/cp-src/functions.cpp
new file mode 100644
index 0000000..fb546ed
--- /dev/null
+++ b/test/etags/cp-src/functions.cpp
@@ -0,0 +1,239 @@
+#include "main.hpp"
+#pragma ident  "@(#)functions.cpp      1.0     98/11/12 (c) Rupak Rathore"
+
+// Constructor default argument initialises to today's values
+void Date::setDate ( int d , int m , int y ){
+       time_t t;
+       struct tm * ptm;
+       t = time ( NULL ) ;
+       if ( date != NULL )
+               delete date;
+       date = NULL;
+       if ( d == 0 && m == 0 && y == 0 ) // explicity called or default 
constructor hence leave it.
+               return;
+       if ( d < 0 && m < 0 && d < 0 ) // Special instruction to intialise to 
today's value
+               d=m=y=0;
+       date = new tm;
+       ptm=localtime ( &t ) ;
+       *date=(*ptm);
+       if ( d )
+               date->tm_mday = d;
+       if ( m )
+               date->tm_mon = m - 1; // Months are counted from January
+       if ( y > 1900 ) // Complete year specified so take into account
+               y -= 1900;
+       if ( y )
+               date->tm_year = y;
+       date->tm_sec=date->tm_min=date->tm_hour=0;
+       t = mktime ( date ) ;
+}
+
+// Addition operation ::: Warning ::: A combination of addition and 
substraction does not give a proper result
+void Date::plus ( int days , int month , int year ){
+       if ( ! set () )
+               return;
+       date->tm_mday += days ;
+       date->tm_mon += month ;
+       date->tm_year += year ;
+       mktime ( date );
+}
+
+//Substraction operation ::: Warning ::: A combination of addition and 
substraction does not give a proper result
+void Date::minus ( int days , int month , int year ){
+       if ( ! set () )
+               return;
+       date->tm_mday -= days ;
+       date->tm_mon -= month ;
+       date->tm_year -= year ;
+       mktime ( date );
+}
+
+
+void Date::shift ( void ){//Shift this date to previous working days (useful 
for benchmarks)
+       if ( ! set() )
+               return ;
+       while(isHoliday(*this)||isweekend()){
+               date->tm_mday -= 1 ;
+               mktime ( date );
+       }
+}
+
+// Assignment
+Date & Date::operator = ( Date d ){
+       if ( d.set() )
+               setDate ( d.date->tm_mday, d.date->tm_mon + 1, d.date->tm_year 
);
+       return(*this);
+}
+
+// Add number of days
+Date & Date::operator += ( int days ){
+       if ( set () ){
+               date->tm_mday += days ;
+               mktime ( date );
+       }
+       return(*this);
+}
+
+// Substract number of days
+Date & Date::operator -= ( int days ){
+       if ( set () ){
+               date->tm_mday -= days ;
+               mktime ( date );
+       }
+       return(*this);
+}
+
+// Advance one day
+Date & Date::operator ++ ( void ){
+       if ( set () ){
+               date->tm_mday += 1 ;
+               mktime ( date );
+       }
+       return(*this);
+}
+
+// Backwards one day
+Date & Date::operator -- ( void ){
+       if ( set () ){
+               date->tm_mday -= 1 ;
+               mktime ( date );
+       }
+       return(*this);
+}
+
+int Date::operator - ( Date d ){
+       long l;
+       if (( ! set() ) || (! d.set()))
+               return(0);
+       l=(mktime(date)-mktime(d.date))/(3600*24);
+       return((int)l);
+}
+
+int Date::operator < ( Date d ) {
+       return ( unidate() < d.unidate() );
+}
+
+int Date::operator > ( Date d ) {
+       return ( unidate() > d.unidate() );
+}
+
+int Date::operator == ( Date d ) {
+       return ( unidate() == d.unidate() );
+}
+
+ostream& operator <<  ( ostream &c, Date d ) {
+       if ( ! d.set() )
+               c << "Null";
+       else
+               c << d.date->tm_mday << ":" << d.date->tm_mon + 1 << ":" << 
d.date->tm_year + 1900 ;
+       return ( c );
+}
+
+// Modified to read date in yyyymmdd format.
+istream& operator >> ( istream &i, Date & dd ){
+       int d,m,y,tmp;
+       i >> tmp;
+       d=tmp%100;
+       tmp/=100;
+       m=tmp%100;
+       tmp/=100;
+       y=tmp;
+       dd.setDate(d,m,y);
+       return(i);
+}
+/*
+istream& operator >>  ( istream &i, Date &dd ) {
+       char input[11];
+       int d,m,y;
+       cout << "Enter the date ( dd-mm-yyyy ) : ";
+       i >> input ;
+       d = ( input[0] - '0' ) * 10 + ( input[1] - '0' );
+       m = ( input[3] - '0' ) * 10 + ( input[4] - '0' );
+       y = ( input[6] - '0' ) * 1000 + ( input[7] - '0' ) * 100 + ( input[8] - 
'0' ) * 10 + ( input[9] - '0' );
+       dd.setDate ( d, m, y );
+       return ( i );
+}
+*/
+
+// Check whether given year is leap or not
+bool isLeap ( int year ){
+       return ( (year%100==0) ? (year%400==0) : (year%4==0) );
+}
+
+bool isHoliday ( Date d ){
+       long int ld;
+       ld = ( d.year()*100 + d.month() )*100 + d.day();
+       for ( int i=0; i<no_of_vacations;i++)
+               if ( ld == vacation[i] )
+                       return(true);
+       return(false);
+}
+
+// Sort the given array in ascending order
+void asort(int *a, int num){
+       int i,k,mini,tmp;
+       for ( k=1; k<num; k++ ){
+               mini=k-1;
+               for ( i=k; i<num; i++ )
+                       if ( a[mini] > a[i] ) {
+                               tmp=a[i];
+                               a[i]=a[mini];
+                               a[mini]=tmp;
+                       }
+       }
+}
+
+void ReadVacation ( char *filename ) {
+       // cerr << filename;
+       ifstream vacfile(filename);
+       if ( ! vacfile.good() )
+               d_error("ReadVacation","Unable to find the vacation and 
holidays file");
+       // cerr << filename ;
+       d_silent("ReadVacation","vacation file successfully opened.");
+       no_of_vacations = 0;
+       while ( !vacfile.eof() )
+               vacfile >> vacation[no_of_vacations++];
+       --no_of_vacations;
+       d_silent("ReadVacation","Finished Reading file");
+       vacfile.close();
+}
+
+void Debug ( int lineno, int level, char* func , char* mesg ) // error_level, 
function, message
+{
+       if ( debug_level <= level )
+               cerr << PROGNAME << ": " << func << ": " << lineno << ": " << 
debug_string[level] << ": " << mesg << endl;
+       if ( level == ERROR ){
+               cerr << PROGNAME << ": Exiting because of fatal error." <<endl ;
+               exit(2);
+       }
+}
+
+int WorkingDays(Date a, Date b){
+       Date tmp;
+       int wdays=0,days=0;
+       if ( (! a.set()) || (! b.set()) )
+               return(0);
+       days=b-a+1; // Inclusive
+       tmp=a;
+       for ( int i=0;i<days;i++){
+               if((!isHoliday(tmp))&&(!tmp.isweekend()))
+                       wdays++;
+               tmp++;
+       }
+       return(wdays);
+}
+
+Date StartDay(Date a,int days){//Function to calculate the apropriate start 
day to finish in days working days
+       Date tmp;
+       int wdays=0;
+       if ( ! a.set() )
+               return (a);
+       tmp=a;
+       while(wdays<days){
+               if((!isHoliday(tmp))&&(!tmp.isweekend()))
+                       wdays++;
+               tmp--;
+       }
+       tmp++;
+       return(tmp);
+}
diff --git a/test/etags/cp-src/screen.cpp b/test/etags/cp-src/screen.cpp
new file mode 100644
index 0000000..1958a19
--- /dev/null
+++ b/test/etags/cp-src/screen.cpp
@@ -0,0 +1,62 @@
+/* ======================================================================= */
+/*                                SCREEN.CPP                               */
+/* ======================================================================= */
+
+#include "stdio.h"
+#include "stdlib.h"
+#include "dos.h"
+
+#include "screen.h"
+
+/* ----------------------------------------------------------------------- */
+/*              Cursor Position and Screen Buffering Functions             */
+/* ----------------------------------------------------------------------- */
+
+unsigned char cursor_x, cursor_y;
+static union REGS regs;
+
+void goto_xy(unsigned char x, unsigned char y)
+    {
+    regs.h.ah = 2;
+    regs.h.bh = 0;
+    regs.h.dh = y;
+    regs.h.dl = x;
+    int86(0x10, &regs, &regs);
+    }
+
+void hide_cursor(void)
+    {
+    goto_xy(0, NUM_ROWS);
+    }
+
+void cursor_position(void)
+    {
+    regs.h.ah = 3;
+    regs.h.bh = 0;
+    int86(0x10, &regs, &regs);
+    cursor_x = regs.h.dl;
+    cursor_y = regs.h.dh;
+    }
+
+void clear_screen(void)
+    {
+    unsigned int i, j;
+    char far *p;
+
+    p = SCREEN_START;
+    for (i = 0; i < NUM_ROWS; i++)
+        for (j = 0; j < 80; j++)
+            {
+            *p++ = ' ';
+            *p++ = LIGHTGRAY;
+            }
+    }
+
+void write_xyc(int x, int y, char c)
+    {
+    char far *p;
+
+    p = SCREEN_FP(x, y);
+    *p++ = c;
+    *p = LIGHTGRAY;
+    }
diff --git a/test/etags/cp-src/screen.hpp b/test/etags/cp-src/screen.hpp
new file mode 100644
index 0000000..a7099a3
--- /dev/null
+++ b/test/etags/cp-src/screen.hpp
@@ -0,0 +1,39 @@
+/* ======================================================================= */
+/*                                 SCREEN.H                                */
+/* ======================================================================= */
+
+// This stuff is entirely non-portable MSDOS-ish code. Note the hardware
+// address below, for the standard location of the EGA video buffer.
+
+#if !defined(__COLORS)
+#define __COLORS
+
+enum COLORS {
+    BLACK,          /* dark colors */
+    BLUE,
+    GREEN,
+    CYAN,
+    RED,
+    MAGENTA,
+    BROWN,
+    LIGHTGRAY,
+    DARKGRAY,       /* light colors */
+    LIGHTBLUE,
+    LIGHTGREEN,
+    LIGHTCYAN,
+    LIGHTRED,
+    LIGHTMAGENTA,
+    YELLOW,
+    WHITE
+};
+#endif
+
+#define SCREEN_FP(x,y) \
+    ((char far *) (0xB8000000L | ((unsigned) (160 * (y) + 2 * (x)))))
+#define SCREEN_START   SCREEN_FP(0, 0)
+
+void goto_xy(unsigned char x, unsigned char y);
+void hide_cursor(void);
+void cursor_position(void);
+void clear_screen(void);
+void write_xyc(int x, int y, char c);
diff --git a/test/etags/el-src/TAGTEST.EL b/test/etags/el-src/TAGTEST.EL
new file mode 100644
index 0000000..acf0baf
--- /dev/null
+++ b/test/etags/el-src/TAGTEST.EL
@@ -0,0 +1,31 @@
+(foo::defmumble bletch beuarghh)
+;;; Ctags test file for lisp mode.
+
+;; from emacs/lisp/delsel.el:76:
+(defalias 'pending-delete-mode 'delete-selection-mode)
+
+;; compare with:
+(defalias (quote explicitly-quoted-pending-delete-mode) 'delete-selection-mode)
+
+;;
+;; Output from original ctags:
+;;
+;'pending-delete-mode  tagstest.el     /^(defalias 'pending-delete-mode 
'delete-selection-m/
+;(quote        tagstest.el     /^(defalias (quote 
explicitly-quoted-pending-delete-/
+;;
+;; Output from ctags with my patch in L-getit():
+;;
+;pending-delete-mode   tagstest.el     /^(defalias 'pending-delete-mode 
'delete-selection-m/
+;explicitly-quoted-pending-delete-mode tagstest.el     /^(defalias (quote 
explicitly-quoted-pending-delete-/
+;; Output from original etags:
+;;
+;tagstest.el,61
+;(defalias 'pending-delete-mode 4,68
+;(defalias (quote 7,141
+;;
+;; Output from patched etags:
+;;
+;tagstest.el,99
+;(defalias 'pending-delete-mode 4,68
+;(defalias (quote explicitly-quoted-pending-delete-mode)7,141
+;;
diff --git a/lisp/progmodes/etags.el 
b/test/etags/el-src/emacs/lisp/progmodes/etags.el
similarity index 99%
copy from lisp/progmodes/etags.el
copy to test/etags/el-src/emacs/lisp/progmodes/etags.el
index b470352..6acafdb 100644
--- a/lisp/progmodes/etags.el
+++ b/test/etags/el-src/emacs/lisp/progmodes/etags.el
@@ -2073,10 +2073,24 @@ for \\[find-tag] (which see)."
 ;; we hit the limit rarely.
 (defconst etags--xref-limit 1000)
 
+(defvar etags-xref-find-definitions-tag-order '(tag-exact-match-p
+                                                tag-implicit-name-match-p
+                                                tag-symbol-match-p)
+  "Tag order used in `etags-xref-find' to look for definitions.")
+
 ;;;###autoload
 (defun etags-xref-find (action id)
   (pcase action
     (`definitions (etags--xref-find-definitions id))
+    (`references
+     (let ((dirs (if tags-table-list
+                     (mapcar #'file-name-directory tags-table-list)
+                   ;; If no tags files are loaded, prompt for the dir.
+                   (list (read-directory-name "In directory: " nil nil t)))))
+       (cl-mapcan
+        (lambda (dir)
+          (xref-collect-references id dir))
+        dirs)))
     (`apropos (etags--xref-find-definitions id t))))
 
 (defun etags--xref-find-definitions (pattern &optional regexp?)
@@ -2094,7 +2108,7 @@ for \\[find-tag] (which see)."
       (while (visit-tags-table-buffer (not first-time))
         (setq first-time nil)
         (dolist (order-fun (cond (regexp? find-tag-regexp-tag-order)
-                                 (t find-tag-tag-order)))
+                                 (t etags-xref-find-definitions-tag-order)))
           (goto-char (point-min))
           (while (and (funcall search-fun pattern nil t)
                       (< (hash-table-count marks) etags--xref-limit))
@@ -2129,6 +2143,10 @@ for \\[find-tag] (which see)."
         (etags-goto-tag-location tag-info)
         (point-marker)))))
 
+(cl-defmethod xref-location-line ((l xref-etags-location))
+  (with-slots (tag-info) l
+    (nth 1 tag-info)))
+
 
 (provide 'etags)
 
diff --git a/test/etags/erl-src/gs_dialog.erl b/test/etags/erl-src/gs_dialog.erl
new file mode 100644
index 0000000..c04ee8b
--- /dev/null
+++ b/test/etags/erl-src/gs_dialog.erl
@@ -0,0 +1,271 @@
+-module(gs_dialog). % behaviour
+-define(VERSION, '2001.1101').
+-vsn(?VERSION).
+-author('address@hidden').
+-copyright('Copyright (c)2001 Cat`s Eye Technologies. All rights reserved.').
+
+%%% Redistribution and use in source and binary forms, with or without
+%%% modification, are permitted provided that the following conditions
+%%% are met:
+%%%
+%%%   Redistributions of source code must retain the above copyright
+%%%   notice, this list of conditions and the following disclaimer.
+%%%
+%%%   Redistributions in binary form must reproduce the above copyright
+%%%   notice, this list of conditions and the following disclaimer in
+%%%   the documentation and/or other materials provided with the
+%%%   distribution.
+%%%
+%%%   Neither the name of Cat's Eye Technologies nor the names of its
+%%%   contributors may be used to endorse or promote products derived
+%%%   from this software without specific prior written permission.
+%%%
+%%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+%%% CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+%%% INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+%%% MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+%%% DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
+%%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+%%% OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+%%% PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+%%% OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+%%% ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+%%% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+%%% OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+%%% POSSIBILITY OF SUCH DAMAGE. 
+
+-export([behaviour_info/1,
+         show/4,
+        test/0]).
+
+%%% BEGIN gs_dialog.erl %%%
+
+%%% This module specifies a common behaviour for "modal" dialog boxes
+%%% using GS.
+
+%%--------------------------------------------------------------------
+%% behaviour_info(callbacks) -> ListOfFunctionArityTuples
+%% Used by R8 to check the implementation modules for consistency
+%% with the behaviour specification, what callbacks this module needs.
+
+behaviour_info(callbacks) ->
+  [
+
+    %%----------------------------------------------------------------
+    %% Module:buttons() -> ListOfAtoms
+    %% Should return the labels used on the main (non-extra) buttons
+    %% of the dialog box.
+    %% e.g. ['OK', 'Cancel'].
+
+    {buttons, 0},
+
+    %%----------------------------------------------------------------
+    %% Module:icon() -> FileNameString | {Text, FgColour, BgColour}
+    %% Should return the the icon displayed in the dialog box.
+    %% This should either be the fully qualified filename of a 32x32 GIF
+    %% file (e.g. in the application's priv dir,) or a 3-tuple
+    %% describing a simple "circle" icon to be rendered by GS itself.
+    %% The latter option was added because some versions of Erlang for
+    %% Windows use a Tk emulation package which is not always on the
+    %% ball when it comes to correct image transparency and colour.
+    %% e.g. filename:join(code:priv_dir(?MODULE), "notify.gif")
+
+    {icon, 0},
+
+    %%----------------------------------------------------------------
+    %% Module:controls(Parent, ArgList) -> {GSControl | nil, NewArgList}
+    %% Used by the implementation to provide extra controls in the dialog
+    %% box, if any.  If not, nil should be returned instead of the control.
+    %% If many controls are added, it is recommended they are placed in a
+    %% frame, with the frame returned as the control.
+    %% The control need not have positioning information, as it will be
+    %% assigned a pack_xy option when it is placed into the Parent frame.
+    %% The list of arguments may be modified by this callback.
+    %% e.g. {nil, Args}
+
+    {controls, 2},
+
+    %%----------------------------------------------------------------
+    %% Module:on_key(ExtraControl, KeyAtom, ArgList) ->
+    %%   {button, ButtonNameAtom} | nil
+    %% Called when a key is pressed in the dialog box.  The return value
+    %% specified whether it is linked to pressing a button, or whether it
+    %% it is ignored and passed on to a further handler (if any.)
+    
+    {on_key, 3},
+
+    %%----------------------------------------------------------------
+    %% Module:on_button(ExtraControl, ButtonNameAtom, ArgList) -> Result
+    %% Called when one of the main (non-extra) buttons are pressed in
+    %% the dialog box.  Since this closes the dialog box, the implementation
+    %% module is expected to provide a final result term with this function.
+
+    {on_button, 3}, 
+
+    %%----------------------------------------------------------------
+    %% Module:on_event(ExtraControl, Event, ArgList) -> Result
+    %% Allows the implementation module to handle other GS events,
+    %% e.g. those generated by the extra controls specified.
+ 
+    {on_event, 3}
+  ].
+
+%%% Public Interface
+
+%%--------------------------------------------------------------------
+%% show(ModuleNameAtom, TitleString, MessageString, ArgList) -> Result
+%% Display a generic modal dialog box, customized by the
+%% callback functions in Module.  This should be called by
+%% the 'show' function in the Module in question.
+%% The argument list is passed back to the callback functions in the
+%% module, for retaining information pertinent to the callback module;
+%% the behaviour itself does not inspect or care about this list.
+
+show(Module, Title, Message, Args) ->
+  Screen = gs:start(),
+  Buttons = Module:buttons(),
+  NumButtons = length(Buttons),
+  application:load(?MODULE),
+  {ok, Font} = application:get_env(?MODULE, font),
+  {ok, {ScreenWidth, ScreenHeight}} =
+    application:get_env(?MODULE, screen_size),
+  {ok, {DialogWidth, DialogHeight}} =
+    application:get_env(?MODULE, dialog_size),
+  Window = gs:create(window, Screen,
+    [{width, DialogWidth}, {height, DialogHeight},
+     {x, (ScreenWidth - DialogWidth) div 2},
+     {y, (ScreenHeight - DialogHeight) div 2},
+     {title, Title},
+     {configure, true}, {keypress, true}]),
+  Frame = gs:create(frame, Window,
+    [{bw, 0},
+     {packer_x, lists:duplicate(NumButtons, {stretch, 1})},
+     {packer_y, [{stretch, 1},{stretch, 2},{stretch, 1}]}]),
+  case Module:icon() of
+    nil ->
+      Label = gs:create(label, Frame,
+        [{label, {text, Message}}, {font, Font}, {justify, center},
+         {pack_xy, {{1, NumButtons}, 1}}]);
+    {Text, Fg, Bg} ->
+      InnerFrame = gs:create(frame, Frame,
+        [{pack_xy, {{1, NumButtons}, 1}}, {bw, 0},
+        {packer_x, [{stretch, 1}, {fixed, 32}, {stretch, 8}]},
+        {packer_y, [{stretch, 1}, {fixed, 32}, {stretch, 1}]}]),
+      IconCanvas = gs:create(canvas, InnerFrame,
+        [{pack_xy, {2, 2}}]),
+      IconCircle = gs:create(oval, IconCanvas,
+        [{coords, [{0, 0}, {31, 31}]}, {fg, black}, {fill, Bg}]),
+      IconFont = {screen, bold, 24},
+      {ITW,ITH} = gs:read(IconCanvas, {font_wh, {IconFont, Text}}),
+      ITX = 16 - ITW div 2,
+      ITY = 16 - ITH div 2,
+      IconText = gs:create(text, IconCanvas,
+        [{coords, [{ITX, ITY}]}, {fg, Fg}, {text, Text}, {font, IconFont}]),
+      Label = gs:create(label, InnerFrame,
+        [{label, {text, Message}}, {font, Font}, {justify, center},
+         {pack_xy, {3, {1,3}}}]);
+    FileName when list(FileName) ->
+      InnerFrame = gs:create(frame, Frame,
+        [{pack_xy, {{1, NumButtons}, 1}}, {bw, 0},
+        {packer_x, [{stretch, 1}, {fixed, 32}, {stretch, 8}]},
+        {packer_y, [{stretch, 1}, {fixed, 32}, {stretch, 1}]}]),
+      IconCanvas = gs:create(canvas, InnerFrame,
+        [{pack_xy, {2, 2}}]),
+      Icon = gs:create(image, IconCanvas, [{coords, [{0, 0}]},
+                                           {load_gif, FileName}]),
+      Label = gs:create(label, InnerFrame,
+        [{label, {text, Message}}, {font, Font}, {justify, center},
+         {pack_xy, {3, {1,3}}}])
+  end,
+  {Extra, NewArgs} = Module:controls(Frame, Args),
+  case Extra of
+    nil -> gs:config(Frame, {packer_y, [{stretch, 2},{fixed, 0},{stretch, 
1}]});
+    _   -> gs:config(Extra, {pack_xy, {{1, NumButtons}, 2}})
+  end,
+  lists:foldl(fun(X, A) ->
+       I = gs:create(frame, Frame, [{packer_x, [{stretch, 1}, {fixed, 80}, 
{stretch, 1}]}, 
+                                    {packer_y, [{stretch, 1}, {fixed, 24}, 
{stretch, 1}]}, 
+                                    {pack_xy, {A, 3}}]),
+       gs:create(button, I, [{label, {text, atom_to_list(X)}}, {font, Font},
+                             {data, {button, X}},
+                             {pack_xy, {2, 2}}]),
+       A + 1
+       end, 1, Buttons),
+  gs:config(Frame, [{width, DialogWidth}, {height, DialogHeight}]),
+  {MessageWidth, MessageHeight} = gs:read(Frame, {font_wh, {Font, Message}}),
+  case MessageWidth of
+    N1 when N1 > trunc(DialogWidth * 0.8) ->
+        NewDialogWidth = trunc(MessageWidth * 1.2),
+        gs:config(Window,
+          [{width, NewDialogWidth},
+          {x, (ScreenWidth - NewDialogWidth) div 2}]);
+    _ -> ok
+  end,
+  case MessageHeight of
+    N2 when N2 > trunc(DialogHeight * 0.666) ->
+        NewDialogHeight = trunc(MessageHeight * 1.666),
+        gs:config(Window,
+          [{height, NewDialogHeight},
+          {y, (ScreenHeight - NewDialogHeight) div 2}]);
+    _ -> ok
+  end,
+  gs:config(Window, {map, true}),
+  dialog_loop(Module, Window, Frame, Extra, NewArgs).
+
+%%--------------------------------------------------------------------
+%% dialog_loop(Module, Window, Frame, Extra, Args) -> Result
+%% Called by show/4, handles generic events in a dialog box.
+
+dialog_loop(Module, Window, Frame, Extra, Args) ->
+  receive
+    {gs, Window, destroy, Data, EventArgs} ->
+       Module:on_button(Extra, 'Cancel', Args);
+    {gs, Window, configure, Data, [W,H | Rest]} ->
+       gs:config(Frame, [{width, W}, {height, H}]),
+       dialog_loop(Module, Window, Frame, Extra, Args);
+    {gs, Window, keypress, Data, [KeyCode | Rest]} ->
+       case Module:on_key(Extra, KeyCode, Args) of
+         {button, ButtonType} ->
+           Return = Module:on_button(Extra, ButtonType, Args),
+           gs:destroy(Window),
+           Return;
+        _ -> dialog_loop(Module, Window, Frame, Extra, Args)
+       end;
+    {gs, Button, click, {button, ButtonType}, EventArgs} ->
+       Return = Module:on_button(Extra, ButtonType, Args),
+       gs:destroy(Window),
+       Return;
+    Other -> % io:fwrite("~w~n", [Other]),
+      case Module:on_event(Extra, Other, Args) of
+         {button, ButtonType} ->
+           Return = Module:on_button(Extra, ButtonType, Args),
+           gs:destroy(Window),
+           Return;
+        _ -> dialog_loop(Module, Window, Frame, Extra, Args)
+      end
+  end.
+
+%%--------------------------------------------------------------------
+%% test() -> ResultTuple.
+%% Tests some of the common dialog boxes implemented with this behaviour.
+
+test() ->
+  A = gs_dialog_notify:show("Notification", "This is a notification dialog."),
+  B = gs_dialog_confirm:show("Confirmation",
+      "Are you sure you want to\ntake some sort of drastic action?"),
+  C = gs_dialog_question:show("Question", "Save your barcodes first?"),
+  D = gs_dialog_entry:show("Text Entry",
+      "Enter the address of this order:", "555 Twenty-third St."),
+  E = gs_dialog_list:show("Select One", "Select a game to play.",
+      ["Chess", "Checkers", "Othello", "Go", "Backgammon", "Kali", "Sink"]),
+  F = gs_dialog_color:show("Choose Colour", "Pick your favourite colour.",
+      {255, 0, 128}),
+  G = gs_dialog_notify:show("Lengthy Notification",
+      "This is an extremely long message with no line breaks.  "
+      "The dialog box should expand to display the entire message."),
+  H = gs_dialog_notify:show("Lengthy Notification",
+      "This is an extremely\nlong message with\nmany lines.\n\n"
+      "The dialog box\nshould\nexpand\nto\ndisplay\nthe\nentire\nmessage."),
+  {A,B,C,D,E,F,G,H}.
+
+%%% END of gs_dialog.erl %%%
diff --git a/test/etags/f-src/entry.for b/test/etags/f-src/entry.for
new file mode 100644
index 0000000..52b8a24
--- /dev/null
+++ b/test/etags/f-src/entry.for
@@ -0,0 +1,581 @@
+C$Procedure      PRTPKG ( Declare Arguments for Error Message Routines )
+ 
+      LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL, TRACE, DFAULT, TYPE )
+ 
+C$ Abstract
+C
+C      Declare the arguments for the error message selection entry
+C      points.  DO NOT CALL THIS ROUTINE.
+C
+C$ Required_Reading
+C
+C      ERROR
+C
+C$ Keywords
+C
+C      ERROR
+C
+C$ Declarations
+ 
+       LOGICAL               SHORT
+       LOGICAL               EXPL
+       LOGICAL               LONG
+       LOGICAL               TRACE
+       LOGICAL               DFAULT
+       CHARACTER*(*)         TYPE
+ 
+       INTEGER               FILEN
+       PARAMETER           ( FILEN = 128 )
+ 
+ 
+C$ Brief_I/O
+C
+C      VARIABLE  I/O  ENTRY
+C      --------  ---  --------------------------------------------------
+C
+C      SHORT      I   SETPRT
+C      EXPL       I   SETPRT
+C      LONG       I   SETPRT
+C      TRACE      I   SETPRT
+C      DFAULT     I   SETPRT
+C      TYPE       I   MSGSEL
+C      FILEN      P   MSGSEL
+C
+C$ Detailed_Input
+C
+C      See the ENTRY points for discussions of their arguments.
+C
+C$ Detailed_Output
+C
+C      See the ENTRY points for discussions of their arguments.
+C
+C$ Parameters
+C
+C      See the ENTRY points for discussions of their parameters.
+C
+C$ Exceptions
+C
+C      This routine signals an error IF IT IS CALLED.
+C
+C$ Files
+C
+C      None.
+C
+C$ Particulars
+C
+C      DO NOT CALL THIS ROUTINE.
+C
+C      The entry points declared in this routine are:
+C
+C      SETPRT
+C      MSGSEL
+C
+C      There is no reason to call this subroutine.
+C      The purpose of this subroutine is to make the
+C      declarations required by the various entry points.
+C      This routine has no run-time function.
+C
+C$ Examples
+C
+C      None.  DO NOT CALL THIS ROUTINE.
+C
+C$ Restrictions
+C
+C      DO NOT CALL THIS ROUTINE.
+C
+C$ Literature_References
+C
+C      None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C-
+C         Comment section for permuted index source lines was added
+C         following the header.
+C
+C
+C-&
+ 
+C$ Index_Entries
+C
+C     None.
+C
+C-&
+ 
+ 
+ 
+C$ Revisions
+C
+C
+C-     Beta Version 1.0.1, 08-FEB-1989
+C
+C         PRTPKG, though it performs no run-time function, must
+C         still return a value, in order to comply with the Fortran
+C         standard.  So, now it does.
+C
+C-     Beta Version 1.0.1, 08-FEB-1989
+C
+C         Warnings added to discourage use of this routine.
+C         Parameter declarations moved to "Declarations" section.
+C         Two local declarations moved to the correct location.
+C-&
+ 
+ 
+ 
+C
+C     SPICELIB functions
+C
+ 
+      LOGICAL               SETPRT
+      LOGICAL               MSGSEL
+ 
+C
+C     Local variables:
+C
+      CHARACTER*(FILEN)     DEVICE
+ 
+      CHARACTER*(10)        LTYPE
+      CHARACTER*(10)        LOCTYP
+ 
+C
+C     Saved variables:
+C
+      LOGICAL               SVSHRT
+      LOGICAL               SVEXPL
+      LOGICAL               SVLONG
+      LOGICAL               SVTRAC
+      LOGICAL               SVDFLT
+ 
+      SAVE                  SVSHRT
+      SAVE                  SVEXPL
+      SAVE                  SVLONG
+      SAVE                  SVTRAC
+      SAVE                  SVDFLT
+ 
+C
+C     Initial values:
+C
+      DATA     SVSHRT   / .TRUE. /
+      DATA     SVEXPL   / .TRUE. /
+      DATA     SVLONG   / .TRUE. /
+      DATA     SVTRAC   / .TRUE. /
+      DATA     SVDFLT   / .TRUE. /
+ 
+C
+C     Executable Code:
+C
+ 
+      CALL GETDEV ( DEVICE )
+ 
+      CALL WRLINE ( DEVICE,
+     .              'PRTPKG:  You have called an entry point which' //
+     .              ' has no run-time function; this may indicate'  //
+     .              ' a program bug.  Please check the PRTPKG'      //
+     .              ' documentation.  ' )
+ 
+      CALL WRLINE ( DEVICE, 'SPICE(BOGUSENTRY)' )
+ 
+      PRTPKG = .FALSE.
+ 
+      RETURN
+ 
+ 
+ 
+ 
+ 
+ 
+C$Procedure      SETPRT ( Store Error Message Types to be Output )
+ 
+C      ENTRY  BOGUS (X, Y, Z)
+
+       ENTRY  SETPRT ( SHORT, EXPL, LONG, TRACE, DFAULT )
+ 
+C$ Abstract
+C
+C      Store (a representation of) the selection of types of error
+C      messages to be output.  DO NOT CALL THIS ROUTINE.
+C
+C$ Required_Reading
+C
+C      ERROR
+C
+C$ Keywords
+C
+C      ERROR
+C
+C$ Declarations
+C
+C      LOGICAL               SHORT
+C      LOGICAL               EXPL
+C      LOGICAL               LONG
+C      LOGICAL               TRACE
+C      LOGICAL               DFAULT
+C
+C$ Brief_I/O
+C
+C      VARIABLE  I/O  DESCRIPTION
+C      --------  ---  --------------------------------------------------
+C
+C      SHORT      I   Select output of short error message?
+C      EXPL       I   Select output of explanation of short message?
+C      LONG       I   Select output of long error message?
+C      TRACE      I   Select output of traceback?
+C      DFAULT     I   Select output of default message?
+C
+C$ Detailed_Input
+C
+C      SHORT    indicates whether the short error message is selected
+C               as one of the error messages to be output when an error
+C               is detected.  A value of .TRUE. indicates that the
+C               short error message IS selected.
+C
+C      EXPL     indicates whether the explanatory text for the short
+C               error message is selected as one of the error messages
+C               to be output when an error is detected.  A value of
+C               .TRUE. indicates that the explanatory text for the
+C               short error message IS selected.
+C
+C      LONG     indicates whether the long error message is selected
+C               as one of the error messages to be output when an error
+C               is detected.  A value of .TRUE. indicates that the
+C               long error message IS selected.
+C
+C      TRACE    indicates whether the traceback is selected
+C               as one of the error messages to be output when an error
+C               is detected.  A value of .TRUE. indicates that the
+C               traceback IS selected.
+C
+C      DFAULT   indicates whether the default message is selected
+C               as one of the error messages to be output when an error
+C               is detected.  A value of .TRUE. indicates that the
+C               default message IS selected.
+C
+C
+C$ Detailed_Output
+C
+C      None.
+C
+C$ Parameters
+C
+C      None.
+C
+C$ Exceptions
+C
+C      None.
+C
+C$ Files
+C
+C      None.
+C
+C$ Particulars
+C
+C      DO NOT CALL THIS ROUTINE.
+C
+C      The effect of this routine is an ENVIRONMENTAL one.  This
+C      routine performs no output;  it stores the error message
+C      selection provided as input.
+C
+C      Note that the actual output of error messages depends not
+C      only on the selection made using this routine, but also
+C      on the selection of the error output device (see ERRDEV)
+C      and the choice of error response action (see ERRACT). If
+C      the action is not 'IGNORE' (possible choices are
+C      'IGNORE', 'ABORT', 'DEFAULT', 'REPORT', and 'RETURN'),
+C      the selected error messages will be written to the chosen
+C      output device when an error is detected.
+C
+C$ Examples
+C
+C      1.  In this example, the short and long messages are selected.
+C
+C      C
+C      C     Select short and long error messages for output
+C      C     (We don't examine the status returned because no
+C      C     errors are detected by SETPRT):
+C      C
+C
+C            STATUS = SETPRT ( .TRUE., .FALSE., .TRUE., .FALSE.,
+C           .                  .FALSE.                          )
+C
+C
+C
+C$ Restrictions
+C
+C      DO NOT CALL THIS ROUTINE.
+C
+C$ Literature_References
+C
+C      None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C-
+C
+C-&
+ 
+C$ Index_Entries
+C
+C     None.
+C
+C-&
+ 
+ 
+C$ Revisions
+C
+C-
+C         Warnings added to discourage use of this routine in
+C         non-error-handling code.  Parameters section added.
+C
+C-&
+ 
+ 
+ 
+C
+C     Executable Code:
+C
+ 
+ 
+      IF   (  SHORT  )    THEN
+         SVSHRT = .TRUE.
+      ELSE
+         SVSHRT = .FALSE.
+      END IF
+ 
+ 
+ 
+      IF   (  EXPL   )    THEN
+         SVEXPL = .TRUE.
+      ELSE
+         SVEXPL = .FALSE.
+      END IF
+ 
+ 
+ 
+      IF   (  LONG   )    THEN
+         SVLONG = .TRUE.
+      ELSE
+         SVLONG = .FALSE.
+      END IF
+ 
+ 
+ 
+      IF   (  TRACE  )    THEN
+         SVTRAC = .TRUE.
+      ELSE
+         SVTRAC = .FALSE.
+      END IF
+ 
+      IF   (  DFAULT  )    THEN
+         SVDFLT = .TRUE.
+      ELSE
+         SVDFLT = .FALSE.
+      END IF
+ 
+ 
+C
+C     We assign a value to SETPRT, but this value is
+C     not meaningful...
+C
+      SETPRT = .TRUE.
+ 
+ 
+      RETURN
+ 
+ 
+ 
+ 
+C$Procedure      MSGSEL  ( Is This Message Type Selected for Output? )
+ 
+       ENTRY  MSGSEL ( TYPE )
+ 
+C$ Abstract
+C
+C      Indicate whether the specified message type has been selected
+C      for output.
+C
+C$ Required_Reading
+C
+C      ERROR
+C
+C$ Keywords
+C
+C      ERROR
+C
+C$ Declarations
+C
+C      TYPE
+C
+C$ Brief_I/O
+C
+C      VARIABLE  I/O  DESCRIPTION
+C      --------  ---  --------------------------------------------------
+C
+C      TYPE       I   Type of message whose selection status is queried.
+C      FILEN      P   Maximum length of a file name.
+C
+C      The function takes the value .TRUE. if the message type indicated
+C      by TYPE has been selected for output to the error output device.
+C
+C
+C$ Detailed_Input
+C
+C      TYPE   Refers to a type of error message.  Possible values
+C             are 'SHORT', 'EXPLAIN', 'LONG', 'DEFAULT',
+C             and 'TRACEBACK'.
+C
+C$ Detailed_Output
+C
+C      The function takes the value .TRUE. if the message type indicated
+C      by TYPE has been selected for output to the error output device.
+C
+C$ Parameters
+C
+C      FILEN  is the maximum length of a file name.
+C
+C$ Exceptions
+C
+C      Additionally, invalid values of TYPE are detected.
+C
+C      The short error message set in this case is:
+C      'SPICE(INVALIDMSGTYPE)'
+C
+C      The handling of this error is a special case; to avoid recursion
+C      problems, SIGERR is not called when the error is detected.
+C      Instead, the short and long error messages are output directly.
+C
+C
+C$ Files
+C
+C      None.
+C
+C$ Particulars
+C
+C      This routine is part of the SPICELIB error handling mechanism.
+C
+C      Note that even though a given type of message may have been
+C      selected for output, the output device and error response
+C      action must also have been selected appropriately.
+C      Use ERRDEV to choose the output device for error messages.
+C      Use ERRACT to choose the error response action.  Any action
+C      other than 'IGNORE' will result in error messages being
+C      written to the error output device when errors are detected.
+C      See ERRACT for details.
+C
+C$ Examples
+C
+C
+C      1.  We want to know if the short message has been selected
+C          for output:
+C
+C          C
+C          C     Test whether the short message has been selected:
+C          C
+C
+C                SELECT = MSGSEL ( 'SHORT' )
+C
+C
+C$ Restrictions
+C
+C      None.
+C
+C$ Literature_References
+C
+C      None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C
+C-&
+ 
+C$ Index_Entries
+C
+C     None.
+C
+C-&
+ 
+ 
+C$ Revisions
+C
+C
+C         Parameters section added; parameter declaration added
+C         to brief I/O section as well.
+C
+C-&
+ 
+ 
+ 
+C
+C     Executable Code:
+C
+ 
+      CALL LJUST ( TYPE,  LTYPE )
+      CALL UCASE ( LTYPE, LTYPE )
+ 
+ 
+      IF ( LTYPE  .EQ. 'SHORT' ) THEN
+ 
+         MSGSEL = SVSHRT
+ 
+      ELSE IF ( LTYPE  .EQ. 'EXPLAIN' ) THEN
+ 
+         MSGSEL = SVEXPL
+ 
+      ELSE IF ( LTYPE  .EQ. 'LONG' ) THEN
+ 
+         MSGSEL = SVLONG
+ 
+      ELSE IF ( LTYPE  .EQ. 'TRACEBACK' ) THEN
+ 
+         MSGSEL = SVTRAC
+ 
+      ELSE IF ( LTYPE  .EQ. 'DEFAULT' ) THEN
+ 
+         MSGSEL = SVDFLT
+ 
+      ELSE
+ 
+C
+C        Bad value of type!  We have a special case here; to
+C        avoid recursion, we output the messages directly,
+C        rather than call SIGERR.
+C
+ 
+         CALL GETDEV ( DEVICE )
+ 
+         CALL WRLINE ( DEVICE,  'SPICE(INVALIDMSGTYPE)' )
+ 
+         CALL WRLINE ( DEVICE, ' ' )
+ 
+         LOCTYP = TYPE
+ 
+C
+C        Note:  What looks like a typo below isn't; there's
+C        a line break after the substring 'specified' of
+C        the "word" 'specifiedwas'.
+C
+ 
+         CALL WRLINE ( DEVICE,
+ 
+     .   'MSGSEL:  An invalid error message type was supplied as'     //
+     .   ' input; the type specifiedwas:  ' // LOCTYP
+ 
+     .                )
+ 
+ 
+      END IF
+ 
+       subroutine 
+     & intensity1(efv,fv,svin,svquad,sfpv,maxp,value,jndex,k,kj,jmod,isup)
+
+       character*(*) function foo()
+
+      END
diff --git a/test/etags/f-src/entry.strange.gz 
b/test/etags/f-src/entry.strange.gz
new file mode 100644
index 0000000..5f22edc
Binary files /dev/null and b/test/etags/f-src/entry.strange.gz differ
diff --git a/test/etags/f-src/entry.strange_suffix 
b/test/etags/f-src/entry.strange_suffix
new file mode 100644
index 0000000..52b8a24
--- /dev/null
+++ b/test/etags/f-src/entry.strange_suffix
@@ -0,0 +1,581 @@
+C$Procedure      PRTPKG ( Declare Arguments for Error Message Routines )
+ 
+      LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL, TRACE, DFAULT, TYPE )
+ 
+C$ Abstract
+C
+C      Declare the arguments for the error message selection entry
+C      points.  DO NOT CALL THIS ROUTINE.
+C
+C$ Required_Reading
+C
+C      ERROR
+C
+C$ Keywords
+C
+C      ERROR
+C
+C$ Declarations
+ 
+       LOGICAL               SHORT
+       LOGICAL               EXPL
+       LOGICAL               LONG
+       LOGICAL               TRACE
+       LOGICAL               DFAULT
+       CHARACTER*(*)         TYPE
+ 
+       INTEGER               FILEN
+       PARAMETER           ( FILEN = 128 )
+ 
+ 
+C$ Brief_I/O
+C
+C      VARIABLE  I/O  ENTRY
+C      --------  ---  --------------------------------------------------
+C
+C      SHORT      I   SETPRT
+C      EXPL       I   SETPRT
+C      LONG       I   SETPRT
+C      TRACE      I   SETPRT
+C      DFAULT     I   SETPRT
+C      TYPE       I   MSGSEL
+C      FILEN      P   MSGSEL
+C
+C$ Detailed_Input
+C
+C      See the ENTRY points for discussions of their arguments.
+C
+C$ Detailed_Output
+C
+C      See the ENTRY points for discussions of their arguments.
+C
+C$ Parameters
+C
+C      See the ENTRY points for discussions of their parameters.
+C
+C$ Exceptions
+C
+C      This routine signals an error IF IT IS CALLED.
+C
+C$ Files
+C
+C      None.
+C
+C$ Particulars
+C
+C      DO NOT CALL THIS ROUTINE.
+C
+C      The entry points declared in this routine are:
+C
+C      SETPRT
+C      MSGSEL
+C
+C      There is no reason to call this subroutine.
+C      The purpose of this subroutine is to make the
+C      declarations required by the various entry points.
+C      This routine has no run-time function.
+C
+C$ Examples
+C
+C      None.  DO NOT CALL THIS ROUTINE.
+C
+C$ Restrictions
+C
+C      DO NOT CALL THIS ROUTINE.
+C
+C$ Literature_References
+C
+C      None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C-
+C         Comment section for permuted index source lines was added
+C         following the header.
+C
+C
+C-&
+ 
+C$ Index_Entries
+C
+C     None.
+C
+C-&
+ 
+ 
+ 
+C$ Revisions
+C
+C
+C-     Beta Version 1.0.1, 08-FEB-1989
+C
+C         PRTPKG, though it performs no run-time function, must
+C         still return a value, in order to comply with the Fortran
+C         standard.  So, now it does.
+C
+C-     Beta Version 1.0.1, 08-FEB-1989
+C
+C         Warnings added to discourage use of this routine.
+C         Parameter declarations moved to "Declarations" section.
+C         Two local declarations moved to the correct location.
+C-&
+ 
+ 
+ 
+C
+C     SPICELIB functions
+C
+ 
+      LOGICAL               SETPRT
+      LOGICAL               MSGSEL
+ 
+C
+C     Local variables:
+C
+      CHARACTER*(FILEN)     DEVICE
+ 
+      CHARACTER*(10)        LTYPE
+      CHARACTER*(10)        LOCTYP
+ 
+C
+C     Saved variables:
+C
+      LOGICAL               SVSHRT
+      LOGICAL               SVEXPL
+      LOGICAL               SVLONG
+      LOGICAL               SVTRAC
+      LOGICAL               SVDFLT
+ 
+      SAVE                  SVSHRT
+      SAVE                  SVEXPL
+      SAVE                  SVLONG
+      SAVE                  SVTRAC
+      SAVE                  SVDFLT
+ 
+C
+C     Initial values:
+C
+      DATA     SVSHRT   / .TRUE. /
+      DATA     SVEXPL   / .TRUE. /
+      DATA     SVLONG   / .TRUE. /
+      DATA     SVTRAC   / .TRUE. /
+      DATA     SVDFLT   / .TRUE. /
+ 
+C
+C     Executable Code:
+C
+ 
+      CALL GETDEV ( DEVICE )
+ 
+      CALL WRLINE ( DEVICE,
+     .              'PRTPKG:  You have called an entry point which' //
+     .              ' has no run-time function; this may indicate'  //
+     .              ' a program bug.  Please check the PRTPKG'      //
+     .              ' documentation.  ' )
+ 
+      CALL WRLINE ( DEVICE, 'SPICE(BOGUSENTRY)' )
+ 
+      PRTPKG = .FALSE.
+ 
+      RETURN
+ 
+ 
+ 
+ 
+ 
+ 
+C$Procedure      SETPRT ( Store Error Message Types to be Output )
+ 
+C      ENTRY  BOGUS (X, Y, Z)
+
+       ENTRY  SETPRT ( SHORT, EXPL, LONG, TRACE, DFAULT )
+ 
+C$ Abstract
+C
+C      Store (a representation of) the selection of types of error
+C      messages to be output.  DO NOT CALL THIS ROUTINE.
+C
+C$ Required_Reading
+C
+C      ERROR
+C
+C$ Keywords
+C
+C      ERROR
+C
+C$ Declarations
+C
+C      LOGICAL               SHORT
+C      LOGICAL               EXPL
+C      LOGICAL               LONG
+C      LOGICAL               TRACE
+C      LOGICAL               DFAULT
+C
+C$ Brief_I/O
+C
+C      VARIABLE  I/O  DESCRIPTION
+C      --------  ---  --------------------------------------------------
+C
+C      SHORT      I   Select output of short error message?
+C      EXPL       I   Select output of explanation of short message?
+C      LONG       I   Select output of long error message?
+C      TRACE      I   Select output of traceback?
+C      DFAULT     I   Select output of default message?
+C
+C$ Detailed_Input
+C
+C      SHORT    indicates whether the short error message is selected
+C               as one of the error messages to be output when an error
+C               is detected.  A value of .TRUE. indicates that the
+C               short error message IS selected.
+C
+C      EXPL     indicates whether the explanatory text for the short
+C               error message is selected as one of the error messages
+C               to be output when an error is detected.  A value of
+C               .TRUE. indicates that the explanatory text for the
+C               short error message IS selected.
+C
+C      LONG     indicates whether the long error message is selected
+C               as one of the error messages to be output when an error
+C               is detected.  A value of .TRUE. indicates that the
+C               long error message IS selected.
+C
+C      TRACE    indicates whether the traceback is selected
+C               as one of the error messages to be output when an error
+C               is detected.  A value of .TRUE. indicates that the
+C               traceback IS selected.
+C
+C      DFAULT   indicates whether the default message is selected
+C               as one of the error messages to be output when an error
+C               is detected.  A value of .TRUE. indicates that the
+C               default message IS selected.
+C
+C
+C$ Detailed_Output
+C
+C      None.
+C
+C$ Parameters
+C
+C      None.
+C
+C$ Exceptions
+C
+C      None.
+C
+C$ Files
+C
+C      None.
+C
+C$ Particulars
+C
+C      DO NOT CALL THIS ROUTINE.
+C
+C      The effect of this routine is an ENVIRONMENTAL one.  This
+C      routine performs no output;  it stores the error message
+C      selection provided as input.
+C
+C      Note that the actual output of error messages depends not
+C      only on the selection made using this routine, but also
+C      on the selection of the error output device (see ERRDEV)
+C      and the choice of error response action (see ERRACT). If
+C      the action is not 'IGNORE' (possible choices are
+C      'IGNORE', 'ABORT', 'DEFAULT', 'REPORT', and 'RETURN'),
+C      the selected error messages will be written to the chosen
+C      output device when an error is detected.
+C
+C$ Examples
+C
+C      1.  In this example, the short and long messages are selected.
+C
+C      C
+C      C     Select short and long error messages for output
+C      C     (We don't examine the status returned because no
+C      C     errors are detected by SETPRT):
+C      C
+C
+C            STATUS = SETPRT ( .TRUE., .FALSE., .TRUE., .FALSE.,
+C           .                  .FALSE.                          )
+C
+C
+C
+C$ Restrictions
+C
+C      DO NOT CALL THIS ROUTINE.
+C
+C$ Literature_References
+C
+C      None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C-
+C
+C-&
+ 
+C$ Index_Entries
+C
+C     None.
+C
+C-&
+ 
+ 
+C$ Revisions
+C
+C-
+C         Warnings added to discourage use of this routine in
+C         non-error-handling code.  Parameters section added.
+C
+C-&
+ 
+ 
+ 
+C
+C     Executable Code:
+C
+ 
+ 
+      IF   (  SHORT  )    THEN
+         SVSHRT = .TRUE.
+      ELSE
+         SVSHRT = .FALSE.
+      END IF
+ 
+ 
+ 
+      IF   (  EXPL   )    THEN
+         SVEXPL = .TRUE.
+      ELSE
+         SVEXPL = .FALSE.
+      END IF
+ 
+ 
+ 
+      IF   (  LONG   )    THEN
+         SVLONG = .TRUE.
+      ELSE
+         SVLONG = .FALSE.
+      END IF
+ 
+ 
+ 
+      IF   (  TRACE  )    THEN
+         SVTRAC = .TRUE.
+      ELSE
+         SVTRAC = .FALSE.
+      END IF
+ 
+      IF   (  DFAULT  )    THEN
+         SVDFLT = .TRUE.
+      ELSE
+         SVDFLT = .FALSE.
+      END IF
+ 
+ 
+C
+C     We assign a value to SETPRT, but this value is
+C     not meaningful...
+C
+      SETPRT = .TRUE.
+ 
+ 
+      RETURN
+ 
+ 
+ 
+ 
+C$Procedure      MSGSEL  ( Is This Message Type Selected for Output? )
+ 
+       ENTRY  MSGSEL ( TYPE )
+ 
+C$ Abstract
+C
+C      Indicate whether the specified message type has been selected
+C      for output.
+C
+C$ Required_Reading
+C
+C      ERROR
+C
+C$ Keywords
+C
+C      ERROR
+C
+C$ Declarations
+C
+C      TYPE
+C
+C$ Brief_I/O
+C
+C      VARIABLE  I/O  DESCRIPTION
+C      --------  ---  --------------------------------------------------
+C
+C      TYPE       I   Type of message whose selection status is queried.
+C      FILEN      P   Maximum length of a file name.
+C
+C      The function takes the value .TRUE. if the message type indicated
+C      by TYPE has been selected for output to the error output device.
+C
+C
+C$ Detailed_Input
+C
+C      TYPE   Refers to a type of error message.  Possible values
+C             are 'SHORT', 'EXPLAIN', 'LONG', 'DEFAULT',
+C             and 'TRACEBACK'.
+C
+C$ Detailed_Output
+C
+C      The function takes the value .TRUE. if the message type indicated
+C      by TYPE has been selected for output to the error output device.
+C
+C$ Parameters
+C
+C      FILEN  is the maximum length of a file name.
+C
+C$ Exceptions
+C
+C      Additionally, invalid values of TYPE are detected.
+C
+C      The short error message set in this case is:
+C      'SPICE(INVALIDMSGTYPE)'
+C
+C      The handling of this error is a special case; to avoid recursion
+C      problems, SIGERR is not called when the error is detected.
+C      Instead, the short and long error messages are output directly.
+C
+C
+C$ Files
+C
+C      None.
+C
+C$ Particulars
+C
+C      This routine is part of the SPICELIB error handling mechanism.
+C
+C      Note that even though a given type of message may have been
+C      selected for output, the output device and error response
+C      action must also have been selected appropriately.
+C      Use ERRDEV to choose the output device for error messages.
+C      Use ERRACT to choose the error response action.  Any action
+C      other than 'IGNORE' will result in error messages being
+C      written to the error output device when errors are detected.
+C      See ERRACT for details.
+C
+C$ Examples
+C
+C
+C      1.  We want to know if the short message has been selected
+C          for output:
+C
+C          C
+C          C     Test whether the short message has been selected:
+C          C
+C
+C                SELECT = MSGSEL ( 'SHORT' )
+C
+C
+C$ Restrictions
+C
+C      None.
+C
+C$ Literature_References
+C
+C      None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C
+C-&
+ 
+C$ Index_Entries
+C
+C     None.
+C
+C-&
+ 
+ 
+C$ Revisions
+C
+C
+C         Parameters section added; parameter declaration added
+C         to brief I/O section as well.
+C
+C-&
+ 
+ 
+ 
+C
+C     Executable Code:
+C
+ 
+      CALL LJUST ( TYPE,  LTYPE )
+      CALL UCASE ( LTYPE, LTYPE )
+ 
+ 
+      IF ( LTYPE  .EQ. 'SHORT' ) THEN
+ 
+         MSGSEL = SVSHRT
+ 
+      ELSE IF ( LTYPE  .EQ. 'EXPLAIN' ) THEN
+ 
+         MSGSEL = SVEXPL
+ 
+      ELSE IF ( LTYPE  .EQ. 'LONG' ) THEN
+ 
+         MSGSEL = SVLONG
+ 
+      ELSE IF ( LTYPE  .EQ. 'TRACEBACK' ) THEN
+ 
+         MSGSEL = SVTRAC
+ 
+      ELSE IF ( LTYPE  .EQ. 'DEFAULT' ) THEN
+ 
+         MSGSEL = SVDFLT
+ 
+      ELSE
+ 
+C
+C        Bad value of type!  We have a special case here; to
+C        avoid recursion, we output the messages directly,
+C        rather than call SIGERR.
+C
+ 
+         CALL GETDEV ( DEVICE )
+ 
+         CALL WRLINE ( DEVICE,  'SPICE(INVALIDMSGTYPE)' )
+ 
+         CALL WRLINE ( DEVICE, ' ' )
+ 
+         LOCTYP = TYPE
+ 
+C
+C        Note:  What looks like a typo below isn't; there's
+C        a line break after the substring 'specified' of
+C        the "word" 'specifiedwas'.
+C
+ 
+         CALL WRLINE ( DEVICE,
+ 
+     .   'MSGSEL:  An invalid error message type was supplied as'     //
+     .   ' input; the type specifiedwas:  ' // LOCTYP
+ 
+     .                )
+ 
+ 
+      END IF
+ 
+       subroutine 
+     & intensity1(efv,fv,svin,svquad,sfpv,maxp,value,jndex,k,kj,jmod,isup)
+
+       character*(*) function foo()
+
+      END
diff --git a/test/etags/forth-src/test-forth.fth 
b/test/etags/forth-src/test-forth.fth
new file mode 100644
index 0000000..ce4069d
--- /dev/null
+++ b/test/etags/forth-src/test-forth.fth
@@ -0,0 +1,53 @@
+\
+\ This is a file that tests Forth tags
+\
+\ You should get:
+\      a-forth-word            (twice)
+\      a-forth-constant!
+\      a-forth-value?
+\      :a-forth-dictionary-entry
+\      #a-defer-word
+\      (another-forth-word)
+\      (a-forth-constant
+\      #some-storage
+\      assemby-code-word
+
+
+\ This is a forth comment
+
+( Another forth comment )
+
+: a-forth-word ( a b c -- a*b+c )  + * ;
+
+99 constant a-forth-constant!
+55 value a-forth-value?
+create :a-forth-dictionary-entry
+0 c, 9 c, 5 c, 7 c, 999999 ,
+
+defer #a-defer-word
+
+: (another-forth-word) ( -- )
+    ." Hello world"
+;
+
+' (another-forth-word) to #a-defer-word
+
+struct
+   9   field   >field1
+   5   field   >field2
+constant (a-forth-constant
+
+
+2000 buffer: #some-storage
+
+code assemby-code-word ( dunno what it does )
+    g1 g2 mov          \ Move from here to there
+    sc2 h# 13 sc2 sllx \ shift stuff 'round
+c;
+
+\ And for the heck of it, redefine a-forth-word.
+
+: a-forth-word ( a b c -- )
+    a-forth-word dup 200 > abort" Eek.  The number is too big"
+    ." Result is " . cr
+;
diff --git a/test/etags/html-src/algrthms.html 
b/test/etags/html-src/algrthms.html
new file mode 100644
index 0000000..322dafa
--- /dev/null
+++ b/test/etags/html-src/algrthms.html
@@ -0,0 +1,519 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="Author" content="Chip Fleming">
+   <meta name="GENERATOR" content="Mozilla/4.7 [en] (Win95; U) [Netscape]">
+   <title>Tutorial on Convolutional Coding with Viterbi Decoding--Description 
of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and 
Quantizing Algorithms</title>
+</head>
+<body>
+<a NAME="algorithms"></a><b><font face="Arial"><font size=+1>Description
+of the Algorithms&nbsp; (Part 1)</font></font></b>
+<p>&nbsp;The steps involved in simulating a communication channel using
+convolutional encoding and Viterbi decoding are as follows:
+<ul>
+<li>
+<a href="#genalgorithm">Generate the data</a> to be transmitted through
+the channel-result is binary data bits</li>
+
+<li>
+<a href="#conalgorithm">Convolutionally encode</a> the data-result is channel
+symbols</li>
+
+<li>
+<a href="#mapping">Map the one/zero channel symbols</a> onto an antipodal
+baseband signal, producing transmitted channel symbols</li>
+
+<li>
+<a href="#addnoise">Add noise</a> to the transmitted channel symbols-result
+is received channel symbols</li>
+
+<li>
+<a href="#quantizing">Quantize</a> the received channel levels-one bit
+quantization is called hard-decision, and two to n bit quantization is
+called soft-decision (n is usually three or four)</li>
+
+<li>
+<a href="algrthms2.html">Perform Viterbi decoding</a> on the quantized
+received channel symbols-result is again binary data bits</li>
+
+<li>
+Compare the decoded data bits to the transmitted data bits and count the
+number of errors.</li>
+</ul>
+<i>Many of you will notice that I left out the steps of modulating the
+channel symbols onto a transmitted carrier, and then demodulating the received
+carrier to recover the channel symbols. You're right, but we can accurately
+model the effects of AWGN even though we bypass those steps.</i>
+<p><a NAME="genalgorithm"></a><b><i><font face="Arial">Generating the 
Data</font></i></b>
+<p>Generating the data to be transmitted through the channel can be 
accomplished
+quite simply by using a random number generator. One that produces a uniform
+distribution of numbers on the interval 0 to a maximum value is provided
+in C: <tt>rand ()</tt>. Using this function, we can say that any value
+less than half of the maximum value is a zero; any value greater than or
+equal to half of the maximum value is a one.
+<p><a NAME="conalgorithm"></a><b><i><font face="Arial">Convolutionally
+Encoding the Data</font></i></b>
+<p>Convolutionally encoding the data is accomplished using a shift register
+and associated combinatorial logic that performs modulo-two addition. (A
+shift register is merely a chain of flip-flops wherein the output of the
+nth flip-flop is tied to the input of the (n+1)th flip-flop. Every time
+the active edge of the clock occurs, the input to the flip-flop is clocked
+through to the output, and thus the data are shifted over one stage.) The
+combinatorial logic is often in the form of cascaded exclusive-or gates.
+As a reminder, exclusive-or gates are two-input, one-output gates often
+represented by the logic symbol shown below,
+<center>
+<p><img SRC="figs/xor_gate.gif" ALT="exclusive-or gate symbol" height=64 
width=93></center>
+
+<p>that implement the following truth-table:
+<br>&nbsp;
+<br>&nbsp;
+<center><table BORDER CELLPADDING=7 WIDTH="218" >
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><b><tt>Input A</tt></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><b><tt>Input B</tt></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><b><tt>Output</tt></b>
+<p><b><tt>(A xor B)</tt></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><tt>0</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><tt>0</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><tt>0</tt></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><tt>0</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><tt>1</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><tt>1</tt></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><tt>1</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><tt>0</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><tt>1</tt></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><tt>1</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><tt>1</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><tt>0</tt></center>
+</td>
+</tr>
+</table></center>
+
+<p>The exclusive-or gate performs modulo-two addition of its inputs. When
+you cascade q two-input exclusive-or gates, with the output of the first
+one feeding one of the inputs of the second one, the output of the second
+one feeding one of the inputs of the third one, etc., the output of the
+last one in the chain is the modulo-two sum of the q + 1 inputs.
+<p>Another way to illustrate the modulo-two adder, and the way that is
+most commonly used in textbooks, is as a circle with a + symbol inside,
+thus:
+<center>
+<p><img SRC="figs/ringsum.gif" ALT="modulo-two adder symbol" height=48 
width=48></center>
+
+<p>Now that we have the two basic components of the convolutional encoder
+(flip-flops comprising the shift register and exclusive-or gates comprising
+the associated modulo-two adders) defined, let's look at a picture of a
+convolutional encoder for a rate 1/2, K = 3, m = 2 code:
+<br>&nbsp;
+<br>&nbsp;
+<br>
+<center>
+<p><img SRC="figs/ce_7_5_a.gif" ALT="rate 1/2 K = 3 (7, 5) convolutional 
encoder" height=232 width=600></center>
+
+<p>In this encoder, data bits are provided at a rate of k bits per second.
+Channel symbols are output at a rate of n = 2k symbols per second. The
+input bit is stable during the encoder cycle. The encoder cycle starts
+when an input clock edge occurs. When the input clock edge occurs, the
+output of the left-hand flip-flop is clocked into the right-hand flip-flop,
+the previous input bit is clocked into the left-hand flip-flop, and a new
+input bit becomes available. Then the outputs of the upper and lower modulo-two
+adders become stable. The output selector (SEL A/B block) cycles through
+two states-in the first state, it selects and outputs the output of the
+upper modulo-two adder; in the second state, it selects and outputs the
+output of the lower modulo-two adder.
+<p>The encoder shown above encodes the K = 3, (7, 5) convolutional code.
+The octal numbers 7 and 5 represent the code generator polynomials, which
+when read in binary (111<sub>2</sub> and 101<sub>2</sub>) correspond to
+the shift register connections to the upper and lower modulo-two adders,
+respectively. This code has been determined to be the "best" code for rate
+1/2, K = 3. It is the code I will use for the remaining discussion and
+examples, for reasons that will become readily apparent when we get into
+the Viterbi decoder algorithm.
+<p>Let's look at an example input data stream, and the corresponding output
+data stream:
+<p>Let the input sequence be 010111001010001<sub>2</sub>.
+<p>Assume that the outputs of both of the flip-flops in the shift register
+are initially cleared, i.e. their outputs are zeroes. The first clock cycle
+makes the first input bit, a zero, available to the encoder. The flip-flop
+outputs are both zeroes. The inputs to the modulo-two adders are all zeroes,
+so the output of the encoder is 00<sub>2</sub>.
+<p>The second clock cycle makes the second input bit available to the encoder.
+The left-hand flip-flop clocks in the previous bit, which was a zero, and
+the right-hand flip-flop clocks in the zero output by the left-hand flip-flop.
+The inputs to the top modulo-two adder are 100<sub>2</sub>, so the output
+is a one. The inputs to the bottom modulo-two adder are 10<sub>2</sub>,
+so the output is also a one. So the encoder outputs 11<sub>2</sub> for
+the channel symbols.
+<p>The third clock cycle makes the third input bit, a zero, available to
+the encoder. The left-hand flip-flop clocks in the previous bit, which
+was a one, and the right-hand flip-flop clocks in the zero from two bit-times
+ago. The inputs to the top modulo-two adder are 010<sub>2</sub>, so the
+output is a one. The inputs to the bottom modulo-two adder are 00<sub>2</sub>,
+so the output is zero. So the encoder outputs 10<sub>2</sub> for the channel
+symbols.
+<p>And so on. The timing diagram shown below illustrates the process:
+<br>&nbsp;
+<br>&nbsp;
+<br>
+<center>
+<p><img SRC="figs/ce_td.gif" ALT="timing diagram for rate 1/2 convolutional 
encoder" height=322 width=600></center>
+
+<p><br>
+<br>
+<br>
+<p>After all of the inputs have been presented to the encoder, the output
+sequence will be:
+<p>00 11 10 00 01 10 01 11 11 10 00 10 11 00 11<sub>2</sub>.
+<p>Notice that I have paired the encoder outputs-the first bit in each
+pair is the output of the upper modulo-two adder; the second bit in each
+pair is the output of the lower modulo-two adder.
+<p>You can see from the structure of the rate 1/2 K = 3 convolutional encoder
+and from the example given above that each input bit has an effect on three
+successive pairs of output symbols. That is an extremely important point
+and that is what gives the convolutional code its error-correcting power.
+The reason why will become evident when we get into the Viterbi decoder
+algorithm.
+<p>Now if we are only going to send the 15 data bits given above, in order
+for the last bit to affect three pairs of output symbols, we need to output
+two more pairs of symbols. This is accomplished in our example encoder
+by clocking the convolutional encoder flip-flops two ( = m) more times,
+while holding the input at zero. This is called "flushing" the encoder,
+and results in two more pairs of output symbols. The final binary output
+of the encoder is thus 00 11 10 00 01 10 01 11 11 10 00 10 11 00 11 10
+11<sub>2</sub>. If we don't perform the flushing operation, the last m
+bits of the message have less error-correction capability than the first
+through (m - 1)th bits had. This is a pretty important thing to remember
+if you're going to use this FEC technique in a burst-mode environment.
+So's the step of clearing the shift register at the beginning of each burst.
+The encoder must start in a known state and end in a known state for the
+decoder to be able to reconstruct the input data sequence properly.
+<p>Now, let's look at the encoder from another perspective. You can think
+of the encoder as a simple state machine. The example encoder has two bits
+of memory, so there are four possible states. Let's give the left-hand
+flip-flop a binary weight of 2<sup>1</sup>, and the right-hand flip-flop
+a binary weight of 2<sup>0</sup>. Initially, the encoder is in the all-zeroes
+state. If the first input bit is a zero, the encoder stays in the all zeroes
+state at the next clock edge. But if the input bit is a one, the encoder
+transitions to the 10<sub>2</sub> state at the next clock edge. Then, if
+the next input bit is zero, the encoder transitions to the 01<sub>2</sub>
+state, otherwise, it transitions to the 11<sub>2</sub> state. The following
+table gives the next state given the current state and the input, with
+the states given in binary:
+<br>&nbsp;
+<br>&nbsp;
+<center><table BORDER CELLSPACING=2 CELLPADDING=7 WIDTH="282" >
+<tr>
+<td VALIGN=TOP WIDTH="33%"><font face="Arial"><font 
size=-1>&nbsp;</font></font></td>
+
+<td VALIGN=TOP COLSPAN="2" WIDTH="67%">
+<center><a NAME="statetable"></a><b><font face="Arial"><font size=-1>Next
+State, if&nbsp;</font></font></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Current 
State</font></font></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Input = 
0:</font></font></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Input = 
1:</font></font></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+</tr>
+</table></center>
+
+<br>&nbsp;
+<p>The above table is often called a state transition table. We'll refer
+to it as the <tt>next state</tt> table.<tt> </tt>Now let us look at a table
+that lists the channel output symbols, given the current state and the
+input data, which we'll refer to as the <tt>output</tt> table:
+<br>&nbsp;
+<br>&nbsp;
+<center><table BORDER CELLSPACING=2 CELLPADDING=7 WIDTH="282" >
+<tr>
+<td VALIGN=TOP WIDTH="33%"></td>
+
+<td VALIGN=TOP COLSPAN="2" WIDTH="67%">
+<center><a NAME="outputtable"></a><b><font face="Arial"><font size=-1>Output
+Symbols, if</font></font></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Current 
State</font></font></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Input = 
0:</font></font></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Input = 
1:</font></font></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+</tr>
+</table></center>
+
+<br>&nbsp;
+<p>You should now see that with these two tables, you can completely describe
+the behavior of the example rate 1/2, K = 3 convolutional encoder. Note
+that both of these tables have 2<sup>(K - 1)</sup> rows, and 2<sup>k</sup>
+columns, where K is the constraint length and k is the number of bits input
+to the encoder for each cycle. These two tables will come in handy when
+we start discussing the Viterbi decoder algorithm.
+<p><a NAME="mapping"></a><b><i><font face="Arial">Mapping the Channel Symbols
+to Signal Levels</font></i></b>
+<p>Mapping the one/zero output of the convolutional encoder onto an antipodal
+baseband signaling scheme is simply a matter of translating zeroes to +1s
+and ones to -1s. This can be accomplished by performing the operation y
+= 1 - 2x on each convolutional encoder output symbol.
+<p><a NAME="addnoise"></a><b><i><font face="Arial">Adding Noise to the
+Transmitted Symbols</font></i></b>
+<p>Adding noise to the transmitted channel symbols produced by the 
convolutional
+encoder involves generating Gaussian random numbers, scaling the numbers
+according to the desired energy per symbol to noise density ratio, 
E<sub>s</sub>/N<sub>0</sub>,
+and adding the scaled Gaussian random numbers to the channel symbol values.
+<p>For the uncoded channel, E<sub>s</sub>/N<sub>0 </sub>= 
E<sub>b</sub>/N<sub>0</sub>,
+since there is one channel symbol per bit.&nbsp; However, for the coded
+channel, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub> + 
10log<sub>10</sub>(k/n).&nbsp;
+For example, for rate 1/2 coding, E<sub>s</sub>/N<sub>0 </sub>= 
E<sub>b</sub>/N<sub>0</sub>
++ 10log<sub>10</sub>(1/2) = E<sub>b</sub>/N<sub>0</sub> - 3.01 dB.&nbsp;
+Similarly, for rate 2/3 coding, E<sub>s</sub>/N<sub>0 </sub>= 
E<sub>b</sub>/N<sub>0</sub>
++ 10log<sub>10</sub>(2/3) = E<sub>b</sub>/N<sub>0</sub> - 1.76 dB.
+<p>The Gaussian random number generator is the only interesting part of
+this task. C only provides a uniform random number generator, <tt>rand()</tt>.
+In order to obtain Gaussian random numbers, we take advantage of relationships
+between uniform, Rayleigh, and Gaussian distributions:
+<p>Given a uniform random variable U, a Rayleigh random variable R can
+be obtained by:
+<p><img SRC="figs/eqn01.gif" ALT="equation for Rayleigh random deviate given 
uniform random deviate" height=30 width=297 align=ABSCENTER>
+<p>where&nbsp;<img SRC="figs/eqn02.gif" height=24 width=24 align=ABSCENTER>is
+the variance of the Rayleigh random variable, and given R and a second
+uniform random variable V, two Gaussian random variables G and H can be
+obtained by
+<p><i>G</i> = <i>R</i> cos <i>U</i> and <i>H</i> = <i>R</i> sin <i>V</i>.
+<p>In the AWGN channel, the signal is corrupted by additive noise, n(t),
+which has the power spectrum <i>No</i>/2 watts/Hz. The variance&nbsp;<img 
SRC="figs/eqn02.gif" ALT="variance" height=24 width=24 align=ABSBOTTOM>of
+this noise is equal to&nbsp;<img SRC="figs/eqn03.gif" ALT="noise density div 
by two" height=22 width=38 align=TEXTTOP>.
+If we set the energy per symbol <i>E<sub>s</sub></i> equal to 1, 
then&nbsp;<img SRC="figs/eqn04.gif" ALT="equation relating variance to SNR" 
height=28 width=110 align=ABSBOTTOM>.
+So&nbsp;<img SRC="figs/eqn05.gif" ALT="equation for AWGN st dev given SNR" 
height=28 width=139 align=ABSCENTER>.
+<p><a NAME="quantizing"></a><b><i><font face="Arial">Quantizing the Received
+Channel Symbols</font></i></b>
+<p>An ideal Viterbi decoder would work with infinite precision, or at least
+with floating-point numbers. In practical systems, we quantize the received
+channel symbols with one or a few bits of precision in order to reduce
+the complexity of the Viterbi decoder, not to mention the circuits that
+precede it. If the received channel symbols are quantized to one-bit precision
+(&lt; 0V = 1, <u>></u> 0V = 0), the result is called hard-decision data.
+If the received channel symbols are quantized with more than one bit of
+precision, the result is called soft-decision data. A Viterbi decoder with
+soft decision data inputs quantized to three or four bits of precision
+can perform about 2 dB better than one working with hard-decision inputs.
+The usual quantization precision is three bits. More bits provide little
+additional improvement.
+<p>The selection of the quantizing levels is an important design decision
+because it can have a significant effect on the performance of the link.
+The following is a very brief explanation of one way to set those levels.
+Let's assume our received signal levels in the absence of noise are -1V
+= 1, +1V = 0. With noise, our received signal has mean +/- 1 and standard
+deviation&nbsp;<img SRC="figs/eqn05.gif" ALT="equation for AWGN st dev given 
SNR" height=28 width=139 align=ABSCENTER>.
+Let's use a uniform, three-bit quantizer having the input/output relationship
+shown in the figure below, where D is a decision level that we will calculate
+shortly:
+<center>
+<p><img SRC="figs/quantize.gif" ALT="8-level quantizer function plot" 
height=342 width=384></center>
+
+<p>The decision level, D, can be calculated according to the formula&nbsp;<img 
SRC="figs/eqn06.gif" ALT="equation for quantizer decision level" height=28 
width=228 align=ABSCENTER>,
+where E<sub>s</sub>/N<sub>0</sub> is the energy per symbol to noise density
+ratio<i>. (The above figure was redrawn from Figure 2 of Advanced Hardware
+Architecture's ANRS07-0795, "Soft Decision Thresholds and Effects on Viterbi
+Performance". See the </i><a href="fecbiblio.html">bibliography</a><i>&nbsp;
+for a link to their web pages.)</i>
+<p>Click <a href="algrthms2.html">here</a> to proceed to the description
+of the Viterbi decoding algorithm itself...
+<p>Or click on one of the links below to go to the beginning of that section:
+<p>&nbsp;<a href="tutorial.html">Introduction</a>
+<br>&nbsp;<a href="algrthms2.html">Description of the Algorithms&nbsp;
+(Part 2)</a>
+<br>&nbsp;<a href="examples.html">Simulation Source Code Examples</a>
+<br>&nbsp;<a href="simrslts.html">Example Simulation Results</a>
+<br>&nbsp;<a href="fecbiblio.html">Bibliography</a>
+<br>&nbsp;<a href="tutorial.html#specapps">About Spectrum Applications...</a>
+<br>&nbsp;
+<br>&nbsp;
+<br>
+<br>
+<center>
+<p><img SRC="figs/stripe.gif" height=6 width=600></center>
+
+</body>
+</html>
diff --git a/test/etags/html-src/index.shtml b/test/etags/html-src/index.shtml
new file mode 100644
index 0000000..24f269f
--- /dev/null
+++ b/test/etags/html-src/index.shtml
@@ -0,0 +1,70 @@
+<!--#set var="chiavi" value="
+     prima pagina principale, home page, assoli,
+     free software, open source, italia, italy, italiano" -->
+<!--#include virtual="/inc/h.shtml"-->
+<!--#include virtual="/inc/menu-generico.html"-->
+<!--#include virtual="/inc/content-begin.html"-->
+
+<H3>&nbsp;</H3>        <!-- un po' di spazio in cima -->
+
+<!--
+     La rubrica "in evidenza" va commentata se non c'� niente di serio
+     da mettere in evidenza
+ -->
+<H2>
+  In evidenza
+</H2>
+
+<ul>
+
+  <li>Assieme alla <A HREF="http://www.linux.it/";>Italian Linux
+  Society</A> sollecitiamo una <A
+  HREF="/misc/raccoltafirme.shtml">raccolta di firme</A> per
+  sostenere il <a href="/altri/cortiana.shtml">disegno di legge</a> sul
+  software libero dal titolo "<i>Norme in materia di pluralismo
+  informatico sulla adozione e la diffusione del software libero e sulla
+  portabilit� dei documenti informatici nella Pubblica
+  Amministrazione</i>" (XIV Legislatura Atto Senato n. 1188).<P>
+
+</ul>
+
+<H2>
+  Comunicati e iniziative
+</H2>
+
+<ul>
+
+  <p></p><li>
+    Combattiamo il "bollino SIAE".  Nel <A HREF="/news/">notiziario</A>
+    tutte le nostre iniziative in proposito.  Insieme al <a
+    href="http://www.lugroma.org";>LUG Roma</a> abbiamo scritto il <A
+    HREF="/bollino/">Bollino-HOWTO</A>, istruzioni passo passo su come
+    ottenere l'esenzione dal bollilno SIAE per la distribuzione di
+    software libero a titolo oneroso o gratuito.  <A
+    HREF="/altri/semenzato-pieroni.shtml">Qui</A> il disegno di legge
+    Semenzato Pieroni sul diritto d'autore.  E non � finita.
+
+  <p></p><li>
+    <a href="/altri/adeos.shtml">Salutiamo</a> l'arrivo di ADEOS, kernel
+    real-time per Linux libero da brevetti
+
+  <p></p><li>
+    <a href="/news/news020315_01.shtml">Comunicato</a> stampa di FSF Europa
+    ed Assoli in appoggio al disegno di legge per l'uso del software libero
+    nella pubblica amministrazione
+
+  <p></p><li>
+    <a href="/docs/pirateria.shtml">Posizione dell'Associazione</a> sulle
+    attuali campagna anti-"pirateria"</a>
+
+</ul>
+
+<H2>
+  Ultime notizie dall'associazione
+</H2>
+<P>
+<!--#include virtual="/news/notizie.shtml"-->
+</P>
+
+<!--#include virtual="inc/content-end.html"-->
+<!--#include virtual="inc/f.shtml"-->
diff --git a/test/etags/html-src/software.html 
b/test/etags/html-src/software.html
new file mode 100644
index 0000000..4d174c6
--- /dev/null
+++ b/test/etags/html-src/software.html
@@ -0,0 +1,241 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" 
"http://www.w3.org/TR/REC-html40";>
+<HTML LANG="en">
+<HEAD>
+  <STYLE TYPE="text/css"><!--
+    BODY { font-size: 12pt; }
+    P    { text-indent: 0; text-align: justify }
+    DD   { text-indent: 0; text-align: justify }
+  --></STYLE>
+  <TITLE>Francesco Potort� Software Page</TITLE>
+  <LINK  REV="made" HREF="mailto:address@hidden";>
+  <META NAME="description" CONTENT="Home page of Francesco Potort�.">
+  <META NAME="keywords"
+        CONTENT="Potorti Potort� Potorti' Potorti`
+                satellites MTG fracas simulator LEO MEO GEO
+                GNU emacs etags checkiso debian-bug">
+  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+</HEAD><BODY>
+
+<CENTER>
+    [<A HREFLANG="en" HREF="/home.html">home</A>]
+    | [<A HREFLANG="en" HREF="/foda/foda.html">FODA/IBEA</A>]
+    | [<A HREFLANG="en" HREF="/galileo/index.html">GaliLEO</A>]
+    | [<A HREFLANG="en" HREF="#fracas">fracas</A>]
+    | [<A HREFLANG="en" HREF="#leasqr">leasqr</A>]<BR>
+    [<A HREFLANG="en" HREF="#etags">etags</A>]
+    | [<A HREFLANG="en" HREF="#checkiso">checkiso</A>]
+    | [<A HREFLANG="en" HREF="#cgrep">cgrep</A>]
+    | [<A HREFLANG="en" HREF="#debian-bug">debian-bug</A>]
+</CENTER>
+
+<HR> <!---------------------------------------------------------------->
+
+<H4 ID="simulation">
+    <IMG SRC="/pictures/cnr-4.png" ALIGN="right"
+         ALT="CNR logo (png 3k)">
+    Software that I wrote for supporting my research activity
+</H4>
+
+
+<H5 ID="mtg">
+  MTG
+</H5>
+
+<P> The <A
+    
HREF="/curriculum/pot-abstracts.html#R05:MTG-RealTimeSystems97"><CITE>M</CITE>ulti-Application
+    <cite>t</CITE>raffic <cite>g</CITE>enerator</A> was written in 1990 to run 
on
+    a proprietary Motorola Delta SysV Unix running on 68030.  It is a
+    programmable packet traffic generator for Ethernet with a
+    <CITE>curses</CITE>-based frontend and a backend that I wrote.  MTG was
+    used to develop, test and evaluate the <A 
HREF="/foda/foda.html">FODA/IBEA</A>
+    satellite access protocol.
+
+<P> The backend of MTG
+    was a Unix device driver which took control of the timer and Lance
+    interrupts, after having programmed them at the unmaskable level.  Since I
+    had no access to the kernel sources, after having studied <CITE>Writing a
+    Unix device driver</CITE> by Egan Teixeira I had to get really well
+    acquainted with the Motorola C compiler and then to disassemble a couple of
+    kernel routines.  For anyone interested in historical programming, <A
+    HREF="ftp://fly.cnuce.cnr.it/pub/software/unix/mtg.tgz";
+    TYPE="application/octet-stream">here</A> is the code.
+
+
+<H5 ID="fracas">
+  Fracas
+</H5>
+
+<P> The <A
+    
HREF="/curriculum/pot-abstracts.html#R12:Fracas-TelCommSystems99"><CITE>Fra</CITE>med
+    <CITE>C</CITE>hannel <CITE>A</CITE>ccess <CITE>S</CITE>imulator</A> was
+    written around 1995 to study MAC protocols to access a geostationary
+    satellite channel.  It is a little more general than that, though, and can
+    be used to simulate any framed multiple access scheme.  It is a very fast,
+    extensible, non-user friendly C program that has been used for several
+    protocol studies:
+    <UL>
+    <LI> <A 
HREF="/curriculum/pot-abstracts.html#R03:FODAIBEAvsDistributed-IJSC96">
+         <i>Comparison between distributed and centralised demand
+        assignment TDMA satellite access schemes</i></A>
+
+    <LI><A HREF="/curriculum/pot-abstracts.html#R07:FODAIBEAvsCFRA-IJSC97">
+        <i>Delay analysis for interlan traffic using two suitable TDMA
+       satellite access schemes</i></A>
+
+    <LI><A HREF="/curriculum/pot-abstracts.html#R17:VnL-IJSC00">
+        <i>A multi-level satellite channel allocation algorithm for
+       real-time VBR data</i></A>
+    </UL>
+
+<P> Everyone is welcome to download the <A
+    HREF="ftp://fly.cnuce.cnr.it/pub/software/C/fracas.tgz";
+    TYPE="application/octet-stream">complete sources</A> and a <A
+    HREF="ftp://fly.cnuce.cnr.it/pub/software/C/fracas-man-0.0.pdf";
+    TYPE="application/pdf">draft manual</A>.  There is also a short <A
+    
HREF="ftp://fly.cnuce.cnr.it/pub/data/docs/Fracas-slides.pdf";>presentation</A>
+    (10 slides, 340KB).  I will be happy to assist those who would like to
+    adapt Fracas to their purposes.
+
+
+<H5 ID="galileo">
+  GaliLEO
+</H5>
+
+<P> A simulator for Low Earth Orbit satellite constellations that I contributed
+    to design and implement in Java. This is work in progress, of which I made
+    a short <A
+    
HREF="ftp://fly.cnuce.cnr.it/pub/data/docs/GaliLEO-slides.pdf";>presentation</A>
+    (10 slides, 500KB).  GaliLEO has <A HREF="http://galileo.tesa.prd.fr/";>its
+    own page</A> and a <A HREF="/galileo/index.html">local mirror</A>.
+
+
+
+<H5 ID="leasqr">
+  Leasqr
+</H5>
+
+<P> This is a package for <A HREF="http://www.octave.org/";>Octave</A>, a
+high-level language which uses a language very similar to that of Matlab.
+Leasqr uses the Levenberg-Marquardt algorithm for doing nonlinear regression.
+I found leasqr on the web, but it did not run on Octave (it was made for
+Matlab) and so I adapted it and <A
+HREF="ftp://fly.cnuce.cnr.it/pub/software/octave/leasqr/";>published</A> it.
+Since then, the original authors Richard I. Shrager, A.Jutan, Ray Muzic, and
+Sean Brennan agreed to put it under the <A
+HREF="http://www.gnu.org/licenses/gpl.html";>GPL</A>.  Matthias Jueschke tested
+the program using a non-linear optimisation <A
+HREF="http://www.itl.nist.gov/div898/strd/nls/nls_main.shtml";>test suite</A>,
+and was satisfied with the results.
+
+<P>The most current version of the leasqr is part of the optimization package
+at <a href="http://octave.sf.net";>octave-forge</a>. You should refer to the
+files leasqr.m, leasqrdemo.m and dfdp.m <a
+href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/octave/octave-forge/main/optim/";>therein</a>.
+The names of the individual files may change in the future.  Please let me know
+if that happens so I can update this page.
+
+<HR> <!---------------------------------------------------------------->
+
+<H4 ID="gnu">
+    <IMG SRC="/pictures/gnu-head-3.png" ALIGN="right"
+         ALT="small GNU Head (png 3k)">
+    Free software that I wrote for the GNU project or for my personal or work
+    interest
+</H4>
+
+
+<H5 ID="etags">
+  Etags
+</H5>
+
+<P> On behalf of the <A HREF="http://www.gnu.org/fsf/fsf.html";>Free
+    Software Foundation (FSF)</A> I currently volunteer to maintain
+    <CITE>etags</CITE>, a program that can be compiled either as a replacement
+    of the classic <CITE>ctags</CITE> Unix program or as <CITE>etags</CITE>,
+    whose output file format is used by Emacs.  The latest (unofficial) version
+    of etags is available for <A HREF="ftp://fly.cnuce.cnr.it/pub/etags.c.gz";
+    TYPE="application/octet-stream">download</A> (30&nbsp;KB).
+
+
+<H5 ID="checkiso">
+  checkiso
+</H5>
+
+<P> A Unix <A HREF="ftp://fly.cnuce.cnr.it/pub/software/unix/checkiso";
+    TYPE="application/octet-stream">shell script</A> for checking a CD against
+    the iso image from which it has been burned.  The comparison is made using
+    an MD5 signature built from the original image or from a known good CD.
+    Shows the location of the first read error detected.  Can extract a disk Id
+    from the image or the CD itself and build a local database of Ids for
+    future checking of archived CDs.  The Id contains the image length, the MD5
+    signature and the Volume ID of the disk, so it can automatically recognise
+    the CD to check.  Contains a small internal database of <A
+    HREF="http://www.debian.org/";>Debian</A> <A
+    HREF="http://cdimage.debian.org/";>CD images</A>.
+
+
+<H5 ID="cgrep">
+  cgrep
+</H5>
+
+<P> A Unix <A HREF="ftp://fly.cnuce.cnr.it/pub/software/unix/cgrep";
+    TYPE="application/octet-stream">shell script</A> that wraps around grep to
+    make it understand files compressed with gzip or bzip2.  You just use it
+    like grep.  If you rename it cegrep or cfgrep it will wrap around egrep or
+    fgrep, respectively.  Instead of renaming it, you can use a symbolic or
+    hard link.
+
+
+<H5 ID="debian-bug">
+  debian-bug.el
+</H5>
+
+<P> An Emacs add-on script in emacs lisp which simplifies
+    the task of submitting a bug report to the <A
+    HREF="http://www.debian.org/Bugs/";>Debian bug tracking system</A>.  Part of
+    the <A
+    
HREF="http://packages.debian.org/testing/utils/debbugs-el.html";>debbugs-el</A>
+    Debian package.  I handed the package over to Peter Galbraith, who is
+    maintaining it much more actively than I was.  You can download its <A
+    HREF="http://people.debian.org/~psg/debian-bug.el";
+    TYPE="application/octet-stream">latest version</A>.
+
+
+<H5 ID="tcpdump">
+  tcpdump
+</H5>
+
+<P> A Unix <A HREF="ftp://fly.cnuce.cnr.it/pub/software/unix/pottcpdump-1.3";
+    TYPE="application/octet-stream">shell wrapper</A> around
+    <CITE>tcpdump</CITE> which optionally displays the contents of the packets.
+
+
+<HR> <!---------------------------------------------------------------->
+
+<H4 ID="links">
+    Links to interesting software
+</H4>
+
+
+<DL>
+ <DT>The Error Correcting Codes (ECC) Page
+  <DD><A
+  HREF="http://www.csl.sony.co.jp/person/morelos/ecc/codes.html";>This</A> is a
+  really good list of free (in various senses) programs for coding and
+  decoding.  I keep a <A HREF="codes.html">mirror</A> of this page.
+
+ <DT>Forward error correcting codes by Phil Karn
+  <DD>Phil Karn's optimised really <A HREF="http://www.ka9q.net/code/fec/";>free
+  codes</A>.
+
+</DL>
+
+</BODY>
+
+<!--
+Local variables:
+fill-column: 79
+end:
+-->
+
+</HTML>
diff --git a/test/etags/html-src/softwarelibero.html 
b/test/etags/html-src/softwarelibero.html
new file mode 100644
index 0000000..7aa74c5
--- /dev/null
+++ b/test/etags/html-src/softwarelibero.html
@@ -0,0 +1,313 @@
+<DIV LANG="it" ALIGN="justify">
+
+<H2>
+  Cos'� il software libero?
+</H2>
+
+<P>
+  Il concetto di software libero discende naturalmente da quello di
+  libert� di scambio di idee e di informazioni.  Negli ambienti
+  scientifici, quest'ultimo principio � tenuto in alta considerazione
+  per la fecondit� che ha dimostrato; ad esso infatti � generalmente
+  attribuita molta parte dell'eccezionale ed imprevedibile crescita del
+  sapere negli ultimi tre secoli.
+</P>
+<P>
+  La libert� di scambio di idee non � tuttavia una questione puramente
+  pratica: essa � anche alla base dei concetti di libert� di pensiero e
+  di espressione.  Analogamente alle idee, il software � immateriale, e
+  pu� essere riprodotto e trasmesso facilmente.  In modo simile a quanto
+  avviene per le idee, parte essenziale del processo che sostiene la
+  crescita e l'evoluzione del software � la sua libera diffusione.  Ed
+  ogni giorno di pi�, come le idee, il software permea il tessuto
+  sociale e lo influenza, produce effetti etici, economici, politici e
+  in un senso pi� generale culturali.
+</P>
+<P>
+  Fu Richard M. Stallman, nei primi anni Ottanta, a formalizzare per la
+  prima volta il concetto di software libero.  La <A TITLE="definizione
+  di software libero secondo FSF"
+  href="http://www.it.gnu.org/philosophy/free-sw.it.html";>definizione</A>
+  di Stallman, che da subito assurse al ruolo di definizione per
+  eccellenza di software libero, assume la forma di quattro principi di
+  libert�:
+</P>
+<P>
+<DL>
+  <DT>Libert� 0, o libert� fondamentale:
+    <DD>La libert� di eseguire il programma per qualunque scopo, senza
+    vincoli sul suo utilizzo.
+
+  <DT>Libert� 1:
+    <DD>La libert� di studiare il funzionamento del programma, e
+    di adattarlo alle proprie esigenze.
+
+  <DT>Libert� 2:
+    <DD>La libert� di redistribuire copie del programma.
+
+  <DT>Libert� 3:
+    <DD>La libert� di migliorare il programma, e di distribuirne
+    i miglioramenti.
+</DL>
+</P>
+<P>
+  Il software distribuito con una licenza che rispetti questi principi �
+  detto <Q><EM>software libero</EM></Q> (in inglese <Q><EM>free
+  software</EM></Q>).  Nel 1984 Richard M. Stallman <A TITLE="storia
+  del progetto GNU"
+  HREF="http://www.it.gnu.org/gnu/thegnuproject.it.html";>diede vita al
+  progetto GNU</A>, con lo scopo di tradurre in pratica il concetto di
+  software libero, e cre� la <Q>Free Software Foundation</Q> per
+  dare supporto logistico, legale ed economico al progetto GNU.
+</P>
+
+<H3><A NAME="licenze">
+  Licenze d'uso di un programma
+</A></H3>
+
+<P>
+  La <EM>licenza d'uso</EM> � un documento legale generalmente
+  distribuito assieme a ogni programma. Essa, appoggiandosi alle norme
+  sul diritto d'autore, specifica diritti e doveri di chi riceve tale
+  programma.
+</P>
+<P>
+  Gran parte delle licenze comunemente usate sono <EM>proprietarie</EM>,
+  cio� non libere, in quanto non garantiscono le quattro libert�. Quasi
+  sempre tali licenze non consentono infatti la libera copia del
+  programma, n� la sua modifica.  Spesso, se il programma � installato
+  sul computer di casa, la licenza impedisce persino di installarlo sul
+  proprio portatile (per utilizzare il programma fuori casa); se il
+  programma � utilizzato in uno studio professionale, non consente di
+  tenerlo installato su un computer di riserva, nel caso che quello
+  principale si guasti.
+</P>
+<P>
+  La licenza del progetto GNU, la <EM>Licenza Pubblica Generica GNU (<A
+  TITLE="traduzione della licenza GNU GPL"
+  HREF="http://softwarelibero.it/gnudoc/gpl.it.txt";>GNU GPL</A>)</EM>,
+  al contrario, concede all'utente del programma tutte e quattro le
+  libert� suddette.  Inoltre si occupa anche di proteggerle: chi
+  modifichi un programma protetto da GPL e lo distribuisca con tali
+  modifiche, deve distribuirlo sotto licenza GPL.  � grazie a questo
+  tipo di protezione che la GPL � attualmente la licenza pi� usata per
+  il software libero.
+</P>
+<P>
+  Con un gioco di parole, il nome dato a questo tipo di protezione
+  � <EM>permesso d'autore</EM> (in inglese <A TITLE="definizione di
+  copyleft (inglese)" LANG="en"
+  HREF="http://www.it.gnu.org/copyleft/copyleft.html";><EM>copyleft</EM></A>):
+  � il criterio che prevede che le modifiche ad un programma possano
+  essere distribuite solo con la stessa licenza del programma originale.
+  Le licenze proprietarie usano le norme sul diritto d'autore (copyright
+  in inglese) per togliere libert� agli utenti di un programma; il
+  permesso d'autore usa le stesse norme per garantire quelle libert� e
+  per proteggerle.
+</P>
+<P>
+  La GNU GPL non � unica nel suo genere.  Diverse <A TITLE="lista di
+  licenze libere e non"
+  HREF="http://www.it.gnu.org/licenses/license-list.it.html";>altre
+  licenze</A> garantiscono le quattro libert� e si possono pertanto
+  qualificare come licenze per il software libero.  Fra queste, merita
+  una speciale menzione per la sua diffusione la <A TITLE="la licenza
+  BSD (in inglese)" LANG="en"
+  HREF="http://www.freebsd.org/copyright/license.html";>licenza BSD</A>,
+  la cui principale differenza dalla GPL � che, non essendo basata sul
+  permesso d'autore, non ha fra i propri obiettivi quello di proteggere
+  la libert� del software cui � applicata.  Chi infatti modifichi un
+  programma protetto da BSD, pu� distribuirlo con le modifiche usando
+  qualunque licenza.
+</P>
+<P>
+  Sia BSD che GPL hanno pro e contro.  La licenza GPL riflette l'idea
+  della cooperazione: se io concedo ad altri la libert� di modificare e
+  redistribuire il mio programma, costoro sono tenuti a concedere le
+  stesse libert� sulle loro modifiche.  Il problema � che alcuni vedono
+  questo vincolo come un'imposizione ingenerosa, se non addirittura una
+  restrizione insopportabile.  La licenza BSD riflette l'idea del dono
+  liberale: chiunque pu� fare ci� che meglio crede del mio programma.
+  Il problema � che questo significa che chiunque pu� redistribuire
+  anche in forma chiusa con una licenza proprietaria un programma BSD
+  modificato, impedendo cos� ai propri acquirenti di modificarlo e
+  redistribuirlo a loro volta.
+</P>
+
+<H3><A NAME="miti">
+  Sfatiamo alcuni miti
+</A></H3>
+
+<P>
+<DL>
+
+  <DT>Il software libero � gratuito
+
+    <DD>� falso: la libert� del software non ha nulla a che vedere con
+    il suo prezzo.  Bench� gran parte del software libero pi� diffuso
+    sia distribuito gratuitamente, ci sono programmatori che vivono
+    della vendita e della manutenzione dei programmi liberi da loro
+    creati.
+
+  <DT>Il software gratuito � libero
+
+    <DD>� falso.  Molti programmi proprietari vengono distribuiti
+    gratuitamente.
+
+  <DT>Il software libero � privo di copyright
+
+    <DD>� falso.  Bench� si possa rinunciare al copyright su un proprio
+    programma e renderlo cos� di pubblico dominio, la gran parte del
+    software libero � distribuito con una licenza.  Per esempio, sono
+    licenze di copyright la licenza BSD e la GNU GPL, anche se per
+    qualificare quest'ultima spesso si parla di permesso d'autore
+    (copyleft).
+
+  <DT>L'introduzione del software libero nella scuola e nella pubblica
+  amministrazione, ma anche nei paesi poveri, ridurrebbe i costi
+  relativi al software
+
+    <DD>Potrebbe essere vero, ma una seria valutazione dei costi � molto
+    difficile.  Qualunque tipo di software, se usato in ambito non
+    domestico, ha dei costi di manutenzione che sono solitamente
+    maggiori del suo prezzo di acquisto.  I motivi per sostenere l'uso
+    del software libero, specie in ambiti pubblici, riguardano anzitutto
+    la libert�, non il prezzo.
+
+<!-- Discorso inadatto ad un documento introduttivo
+  <DT>Chi scrive un programma libero lo deve pubblicare su Internet
+
+    <DD>� una falsa argomentazione spesso usata per scoraggiare
+    un'azienda dall'uso di una licenza libera per i suoi programmi.
+    Sia gli autori che gli acquirenti di un programma libero hanno il
+    diritto di distribuirlo a titolo oneroso o gratuito, ma non hanno
+    alcun obbligo in tal senso.
+-->
+
+</DL>
+</P>
+
+<H3><A NAME="oss">
+  Il movimento open source
+</A></H3>
+
+<P>
+  Nel 1998 Bruce Perens, Eric Raymond e altre personalit� nel campo del
+  software libero si convinsero che i principi di libert� associati ad
+  esso fossero malvisti nel mondo degli affari, a causa della loro
+  carica ideologica.  Decisero perci� di evitare accuratamente ogni
+  riferimento a considerazioni politiche o di principio, e di lanciare
+  una campagna di promozione del software libero che ne mettesse in luce
+  i numerosi <A TITLE="un discorso di Robert Chassell di FSF"
+  HREF="http://softwarelibero.it/altri/economia-sl.shtml";>vantaggi
+  pratici</A>, come la facilit� di adattamento, l'affidabilit�, la
+  sicurezza, la conformit� agli standard, l'indipendenza dai singoli
+  fornitori.  A tal fine scrissero la <Q><A TITLE="la definizione di
+  Open Source (in inglese)" LANG="en"
+  HREF="http://www.opensource.org/docs/definition.html";>Open Source
+  Definition</A></Q>, il documento fondamentale del movimento <A
+  TITLE="il sito di Open Source Initiative (OSI), in inglese" LANG="en"
+  HREF="http://opensource.org/";><EM>open source</EM></A>.
+</P>
+<P>
+  Il movimento open source fu un successo, e contribu� a sdoganare il
+  concetto di software libero in campo aziendale, dove era guardato con
+  sospetto o condiscendenza.  Un esempio di questo successo �
+  l'atteggiamento dell'IBM, l'azienda che ha fatto di gran lunga i
+  maggiori investimenti nel campo del software libero, la quale parla
+  esclusivamente di open source, mai di software libero.
+</P>
+<P>
+  La voluta neutralit� del movimento open source verso gli aspetti
+  etici e politici del software libero � la caratteristica sostanziale
+  che lo distingue dalla filosofia del software libero, che al contrario
+  pone l'accento sulle motivazioni ideali.  Parlare di software libero
+  piuttosto che di open source � una questione politica piuttosto che
+  pratica; i due movimenti concordano infatti sulle licenze considerate
+  accettabili, ed hanno obiettivi e mezzi comuni.
+</P>
+
+<H3><A NAME="impatto">
+  Impatto pratico del software libero
+</A></H3>
+
+<P>
+  La <A TITLE="usi commerciali del software libero, di Alessandro
+  Rubini"
+  
HREF="http://www.it.gnu.org/philosophy/software-libre-commercial-viability.it.html";>rilevanza
+  economica</A> del software libero � ancora molto ridotta, ma � in
+  fortissima crescita ormai da alcuni anni, e tutto consente di supporre
+  che tale crescita <A TITLE="prospettive del software libero, gruppo di
+  studio dell'UE"
+  HREF="http://eu.conecta.it/paper/Economics_open_source.html";>continui
+  nel prossimo futuro</A>, anche grazie ai <A TITLE="vantaggi del
+  software libero, gruppo di studio UE"
+  HREF="http://eu.conecta.it/paper/Advantages_open_source_soft.html";>vantaggi
+  tecnici ed economici</A> del software libero.
+</P>
+<P>
+  Ad oggi, il software libero � ampiamente diffuso in ambito accademico,
+  industriale e fra gli appassionati di calcolatori, soprattutto grazie
+  ai sistemi GNU/Linux.  Questi sistemi liberi sono disponibili a costi
+  molto bassi, ben inferiori a quelli di analoghi sistemi proprietari.
+  Tuttavia, a causa delle loro caratteristiche, il loro uso richiede una
+  buona cultura di base nel campo del software.
+</P>
+<P>
+  In ambito accademico viene molto apprezzata la possibilit� di
+  personalizzare ogni parte del sistema, visto che i programmi liberi
+  sono liberamente modificabili (libert� numero uno).  In ambito
+  industriale, si apprezza l'affidabilit� dei sistemi liberi, dovuta al
+  fatto che quando un utente corregge un errore in un programma
+  solitamente rende disponibile la correzione agli altri utenti (libert�
+  numero tre).  Gli appassionati di calcolatori apprezzano lo spirito di
+  condivisione esistente fra gli utenti di software libero.
+</P>
+<P>
+  Ma le implicazioni dell'uso del software libero non sono soltanto
+  tecniche ed economiche, perch� il software da tempo ormai � avviato ad
+  occupare un ruolo di primo piano nella nostra vita quotidiana, ed �
+  destinato a cambiare in maniera profonda la societ�.
+</P>
+<P>
+  � per queste ragioni che la nostra libert� futura dipender� anche
+  dalla capacit� di ognuno di noi di controllare il software.  � per
+  queste ragioni che ai tradizionali principi di libert� sessuale, di
+  culto, di movimento, di espressione deve essere affiancata la libert�
+  del software.  � per queste ragioni che la nostra libert� futura
+  dipender� anche dall'uso di software libero.
+</P>
+
+<P>
+  <EM>scritto da <A TITLE="address@hidden"
+  HREF="mailto:address@hidden";>Francesco Potort�</A> per l'<A
+  TITLE="il sito dell'Associazione Software Libero"
+  HREF="http://softwarelibero.it/";>Associazione Software
+  Libero</A></EM>
+</P>
+<HR NOSHADE>
+<P>
+  Copyright &copy; 2002 Francesco Potort�
+  <BR>
+  Ultima versione ipertestuale disponibile su <A TITLE="versione
+  stampabile"
+  
HREF="http://softwarelibero.it/documentazione/softwarelibero.html";>&lt;http://softwarelibero.it/documentazione/softwarelibero.html></A>
+</P>
+<P>
+  La copia letterale e integrale e la distribuzione sono permesse con
+  qualsiasi mezzo, a condizione che questa nota sia riprodotta.
+</P>
+
+<!--
+Local variables:
+fill-column: 72
+time-stamp-active: t
+time-stamp-time-zone: "GMT"
+time-stamp-format: "%:y-%02m-%02d"
+time-stamp-line-limit: 30
+time-stamp-start: "ultima\\s-+modifica\\s-+�\\s-+del\\s-+"
+time-stamp-end: "\\."
+End:
+-->
+
+</DIV>
diff --git a/test/etags/lua-src/allegro.lua b/test/etags/lua-src/allegro.lua
new file mode 100644
index 0000000..c316b6f
--- /dev/null
+++ b/test/etags/lua-src/allegro.lua
@@ -0,0 +1,282 @@
+-- ase -- allegro-sprite-editor: the ultimate sprites factory
+-- Copyright (C) 2001-2004 by David A. Capello
+--
+-- Read "LEGAL.txt" for more information.
+
+-- internal routine
+local function get_layer_by_name (sprite, layer, name)
+  if layer.readable == false then
+    return nil;
+  end
+
+  if layer.name and strcmp (layer.name, name) == 0 then
+    return layer;
+  end
+
+  if layer_is_set (layer) then
+    local it, sub;
+
+    it = layer.layers;
+    while it do
+      sub = get_layer_by_name (sprite, it, name)
+      if sub then
+       return sub;
+      end
+      it = it.next
+    end
+  end
+
+  return nil;
+end
+
+-- internal routine
+local function count_layers (layer)
+  local count;
+
+  if layer.parent.type == GFXOBJ_SPRITE then
+    count = 0;
+  else
+    count = 1;
+  end
+
+  if layer_is_set (layer) then
+    local it = layer.layers;
+    while it do
+      count = count + count_layers (it);
+      it = it.next;
+    end
+  end
+
+  return count;
+end
+
+-- Layer *GetLayerByName (const char *name);
+function GetLayerByName (name)
+  local sprite = current_sprite;
+
+  if sprite and name then
+    return get_layer_by_name (sprite, sprite.set, name);
+  else
+    return nil;
+  end
+end
+
+-- const char *GetUniqueLayerName (void);
+function GetUniqueLayerName ()
+  local sprite = current_sprite;
+
+  if sprite then
+    return _("Layer") .. " " .. count_layers (sprite.set);
+  else
+    return nil;
+  end
+end
+
+-- void SelectLayer (Layer *layer);
+function SelectLayer (layer)
+  if current_sprite then
+    sprite_set_layer (current_sprite, layer);
+  end
+end
+
+-- Layer *NewLayer (const char *name, int x, int y, int w, int h);
+-- creates a new layer with the "name" in the current sprite (in the
+-- current frame) with the specified position and size (if w=h=0 the
+-- routine will use the sprite dimension)
+function NewLayer (name, x, y, w, h)
+  local sprite = current_sprite;
+  local layer = nil;
+  local image, frame, index;
+
+  if sprite and name then
+    if not w or w == 0 then w = sprite.w; end
+    if not h or h == 0 then h = sprite.h; end
+ 
+    -- new image
+    image = image_new (sprite.imgtype, w, h);
+    if not image then
+      return nil;
+    end
+
+    -- new layer
+    layer = layer_image_new (sprite.imgtype, w, h);
+    if not layer then
+      image_free (image);
+      return nil;
+    end
+
+    -- clear with mask color
+    image_clear (image, 0);
+
+    -- configure layer name and blend mode
+    layer_set_name (layer, name);
+    layer_set_blend_mode (layer, BLEND_MODE_NORMAL);
+
+    -- add image in the layer stock
+    index = stock_add_image (layer.stock, image);
+
+    -- create frame (XXX in the current frpos? --dacap)
+    frame = frame_new (sprite.frpos, index, x, y, 255);
+
+    -- add frame
+    layer_add_frame (layer, frame);
+
+    -- undo stuff
+    if undo_is_enabled (sprite.undo) then
+      undo_open (sprite.undo);
+      undo_add_layer (sprite.undo, sprite.set, layer);
+      undo_set_layer (sprite.undo, sprite);
+      undo_close (sprite.undo);
+    end
+
+    -- add the layer in the sprite set
+    layer_add_layer (sprite.set, layer);
+
+    -- select the new layer
+    sprite_set_layer (sprite, layer);
+  end
+
+  return layer;
+end
+
+-- Layer *NewLayerSet (const char *name);
+-- creates a new layer set with the "name" in the current sprite
+function NewLayerSet (name)
+  local sprite = current_sprite;
+  local layer = nil;
+
+  if sprite and name then
+    -- new layer
+    layer = layer_set_new ();
+    if not layer then
+      return nil;
+    end
+
+    -- configure layer name and blend mode
+    layer_set_name (layer, name);
+
+    -- add the layer in the sprite set
+    layer_add_layer (sprite.set, layer);
+
+    -- select the new layer
+    sprite_set_layer (sprite, layer);
+  end
+
+  return layer;
+end
+
+-- void RemoveLayer (void);
+-- removes the current selected layer
+function RemoveLayer ()
+  local sprite = current_sprite;
+
+  if sprite and sprite.layer then
+    local layer = sprite.layer;
+    local parent = layer.parent;
+    local layer_select;
+
+    -- select: previous layer, or next layer, or parent (if it is not
+    -- the main layer of sprite set)
+    if layer.prev then
+      layer_select = layer.prev;
+    elseif layer.next then
+      layer_select = layer.next;
+    elseif parent != sprite.set then
+      layer_select = parent;
+    else
+      layer_select = nil;
+    end
+
+    -- undo stuff
+    if undo_is_enabled (sprite.undo) then
+      undo_open (sprite.undo);
+      undo_set_layer (sprite.undo, sprite);
+      undo_remove_layer (sprite.undo, layer);
+      undo_close (sprite.undo);
+    end
+
+    -- select other layer
+    sprite_set_layer (sprite, layer_select);
+
+    -- remove the layer
+    layer_remove_layer (parent, layer);
+
+    -- destroy the layer
+    layer_free (layer);
+  end
+end
+
+-- void MoveLayerTop (void);
+-- moves the current layer in the top of the main set
+function MoveLayerTop ()
+  if current_sprite and current_sprite.layer then
+    local layer = current_sprite.layer;
+
+    layer_remove_layer (layer.parent, layer);
+
+    layer_add_layer (current_sprite.set, layer);
+  end
+end
+
+-- void MoveLayerBottom (void);
+-- moves the current layer in the bottom of the main set
+function MoveLayerBottom ()
+  if current_sprite and current_sprite.layer then
+    local layer = current_sprite.layer;
+
+    layer_remove_layer (layer.parent, layer);
+
+    layer_add_layer (current_sprite.set, layer);
+    layer_move_layer (current_sprite.set, layer, nil);
+  end
+end
+
+-- void MoveLayerBefore (Layer *this_one);
+-- moves the current layer above the layer "this_one"
+function MoveLayerBefore (this_one)
+  if current_sprite and current_sprite.layer then
+    local layer = current_sprite.layer;
+    local layer_dest;
+
+    if not this_one then
+      layer_dest = current_sprite.set;
+    else
+      layer_dest = this_one;
+    end
+
+    if layer_dest then
+      layer_remove_layer (layer.parent, layer);
+      layer_add_layer (layer_dest.parent, layer);
+      layer_move_layer (layer_dest.parent, layer, layer_dest);
+    end
+  end
+end
+
+-- void MoveLayerAfter (Layer *this_one);
+-- moves the current layer below the layer "this_one" (if that layer
+-- is a set, the layer is put in the top of the layer set)
+function MoveLayerAfter (this_one)
+  if current_sprite and current_sprite.layer then
+    local layer = current_sprite.layer;
+    local layer_dest;
+
+    if not this_one then
+      layer_dest = current_sprite.set;
+    else
+      layer_dest = this_one;
+    end
+
+    if layer_dest then
+      layer_remove_layer (layer.parent, layer);
+
+      -- insert in the first position of the set
+      if layer_is_set (layer_dest) then
+       layer_add_layer (layer_dest, layer);
+      -- insert below the layer
+      else
+       layer_add_layer (layer_dest.parent, layer);
+       layer_move_layer (layer_dest.parent, layer, layer_dest.prev);
+      end
+    end
+  end
+end
diff --git a/test/etags/make-src/Makefile b/test/etags/make-src/Makefile
new file mode 100644
index 0000000..daf605d
--- /dev/null
+++ b/test/etags/make-src/Makefile
@@ -0,0 +1,226 @@
+LATEST=17
address@hidden address@hidden address@hidden address@hidden
+
+ADASRC=etags-test-for.ada 2ataspri.adb 2ataspri.ads waroquiers.ada
+ASRC=empty.zz empty.zz.gz
+CSRC=abbrev.c ../etags/h.h .//c.c torture.c getopt.h etags.c\
+ exit.c exit.strange_suffix sysdep.h tab.c\
+ emacs/src/gmalloc.c emacs/src/regex.h emacs/src/keyboard.c dostorture.c\
+ machsyscalls.c machsyscalls.h fail.c a/b/b.c
+CPSRC=c.C abstract.C abstract.H cfront.H burton.cpp burton.cpp\
+ functions.cpp MDiagArray2.h Pctest.h Range.h\
+ screen.cpp screen.hpp conway.cpp conway.hpp clheir.cpp.gz clheir.hpp.gz fail.C
+ELSRC=TAGTEST.EL emacs/lisp/progmodes/etags.el
+ERLSRC=gs_dialog.erl lines.erl lists.erl
+FORTHSRC=test-forth.fth
+FSRC=entry.for entry.strange_suffix entry.strange
+HTMLSRC=softwarelibero.html index.shtml algrthms.html software.html
+JAVASRC=AWTEMul.java KeyEve.java SMan.java SysCol.java TG.java 
+LUASRC=allegro.lua
+MAKESRC=Makefile
+OBJCSRC=Subprocess.h Subprocess.m PackInsp.h PackInsp.m
+OBJCPPSRC=SimpleCalc.H SimpleCalc.M
+PASSRC=common.pas
+PERLSRC=htlmify-cystic yagrip.pl kai-test.pl mirror.pl
+PHPSRC=lce_functions.php ptest.php sendmail.php
+PSSRC=rfc1245.ps
+PROLSRC=ordsets.prolog natded.prolog
+PYTSRC=server.py
+TEXSRC=testenv.tex gzip.texi texinfo.tex nonewline.tex
+YSRC=parse.y parse.c atest.y cccp.c cccp.y
+SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
+     ${FORTHSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC} ${OBJCSRC}\
+     ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC} ${PROLSRC} ${PYTSRC}\
+     ${TEXSRC} ${YSRC}
+NONSRCS=entry.strange lists.erl clheir.hpp.gz
+
+VHDLFLAGS=--language=none --regex='/[ \t]*\(ARCHITECTURE\|CONFIGURATION\) +[^ 
]* +OF/' --regex='/[ \t]*\(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\( 
BODY\)?\|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/'
+COBOLFLAGS=--language=none --regex='/.......[a-zA-Z0-9-]+\./'
+POSTSCRIPTFLAGS=--language=none --regex='#/[^ \t{]+#'
+TCLFLAGS=--lang=none --regex='/proc[ \t]+\([^ \t]+\)/\1/'
+
+GETOPTOBJS= #getopt.o getopt1.o
+RXINCLUDE=-Iemacs/src
+REGEXOBJS=regex.o
+
+CHECKOBJS=chkmalloc.o chkxm.o
+CHECKFLAGS=-DDEBUG -Wno-unused-function
+OBJS=${GETOPTOBJS} ${REGEXOBJS} ${CHECKOBJS}
+CPPFLAGS=${CHECKFLAGS} -DSTDC_HEADERS -DHAVE_GETCWD ${RXINCLUDE} -I.
+LDFLAGS=#-static -lc_p
+WARNINGS=-pedantic -Wall -Wpointer-arith -Winline -Wmissing-prototypes 
-Wmissing-declarations -Wunused -Wformat -Wno-switch -Wsign-compare 
-Wpointer-arith -Wshadow -Wstrict-prototypes
+CFLAGS=${WARNINGS} -ansi -g3 # -pg -O
+#CC=gcc-3.0
+#TARGET_ARCH=
+FASTCFLAGS=-O3 -finline-functions -ffast-math -funroll-loops
+FASTCFLAGSWARN=${WARNINGS} -Werror ${FASTCFLAGS}
+
+FILTER=grep -v '\.[Cchefy][lor]*,[1-9][0-9]*' || true
+REGEX=/[ \t]*DEFVAR_[A-Z_ \t\n(]+"\([^"]+\)"/
+xx="this line is here because of a fontlock bug
+
+MAKE:=$(MAKE) --no-print-directory
+RUN=time --quiet --format '%U + %S: %E'
+RUN=
+OPTIONS=--members --declarations address@hidden
+ARGS=- < srclist
+
+infiles = $(filter-out ${NONSRCS},${SRCS}) srclist regexfile
+
+quiettest:
+       @rm -f /tmp/[0-9][0-9][0-9][0-9][0-9][0-9]malloc
+       @-$(MAKE) OPTIONS='--no-members' ${LATEST}ediff
+       @-$(MAKE) OPTIONS='--declarations --no-members' ${LATEST}ediff
+       @-$(MAKE) OPTIONS='--members' ${LATEST}ediff
+       @-$(MAKE) OPTIONS='address@hidden --no-members' ${LATEST}ediff
+       @-$(MAKE) OPTIONS='nonexistent --members --declarations address@hidden' 
${LATEST}ediff
+       @-$(MAKE) ${LATEST}cdiff
+
+test:
+       @rm -f /tmp/[0-9][0-9][0-9][0-9][0-9][0-9]malloc
+       @$(MAKE) OPTIONS='--no-members' ${LATEST}ediff
+       @$(MAKE) OPTIONS='--declarations --no-members' ${LATEST}ediff
+       @$(MAKE) OPTIONS='--members' ${LATEST}ediff
+       @$(MAKE) OPTIONS='address@hidden --no-members' ${LATEST}ediff
+       @$(MAKE) OPTIONS='nonexistent --members --declarations address@hidden' 
${LATEST}ediff
+       @$(MAKE) ${LATEST}cdiff
+
+${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0
+
+checker:
+       @rm -f /tmp/[0-9][0-9][0-9][0-9][0-9][0-9]malloc ${REGEXOBJS}
+       @env CHECKEROPTS="--trace --profile --Wfree-null" \
+       $(MAKE) CFLAGS= CHECKOBJS= CHECKFLAGS= CC=checkergcc ${LATEST}ediff
+       rm -f $REGEXOBJS
+
+standalone:
+       rm -f etags ctags
+       @$(MAKE) etags "CPPFLAGS=-UVERSION"
+       @$(MAKE) ctags "CPPFLAGS=-UVERSION"
+
+prof: ETAGS
+       prof -xgs etags
+
+fastetags:
+       rm -f etags ${GETOPTOBJS} ${REGEXOBJS}
+       @$(MAKE) CHECKOBJS= CHECKFLAGS= etags "CFLAGS=-ansi ${FASTCFLAGSWARN}"
+
+fastctags:
+       rm -f ctags ${GETOPTOBJS} ${REGEXOBJS}
+       @$(MAKE) CHECKOBJS= CHECKFLAGS= ctags "CFLAGS=-ansi ${FASTCFLAGSWARN}"
+
+staticetags:
+       rm -f etags ${GETOPTOBJS} ${REGEXOBJS}
+       @$(MAKE) etags CHECKOBJS= CHECKFLAGS= REGEXOBJS= GETOPTOBJS= RXINCLUDE= 
"CFLAGS=${FASTCFLAGSWARN} -static"
+
+rsynctofly:
+       rsync --exclude "*~" --exclude core --exclude etags -zauRv . 
fly:gnu/etags/
+
+rsyncfromfly:
+       rsync --exclude "*~" --exclude core --exclude etags -zauRv 
fly:gnu/etags/ ../..
+
+web ftp publish:
+       @-echo -e \\ttesting with debugging enabled...; $(MAKE) quiettest
+       @-echo -e \\ttesting standalone...; $(MAKE) standalone quiettest
+       @-echo -e \\ttesting fast versions...; $(MAKE) fastetags fastctags 
quiettest
+       @$(MAKE) /home/www/pub/etags.c.gz
+       @$(MAKE) /home/www/pub/software/unix/etags.tar.gz
+
+release distrib: web
+       cat xemacs-mail | /usr/sbin/sendmail -f address@hidden ${RELEASELIST}
+       mv etags etags${LATEST}
+       mv ctags ctags${LATEST}
+
+tags: TAGS
+
+clean:
+       rm -f ${OBJS} etags ETAGS
+
+srclist: Makefile
+       @for i in $(SRCS); do echo $$i; done > srclist
+       @echo srclist remade
+
+regexfile: Makefile
+       @echo ' -- This is for GNU Emacs source files' > regexfile
+       @echo '${REGEX}' >> regexfile
+       @echo '{c}${REGEX}\\1/m' >> regexfile
+       @echo regexfile remade
+
+/home/www/pub/etags.c.gz: etags.c
+       co -kv etags.c
+       gzip --best -c etags.c > $@
+
+#/home/www/pub/software/unix/etags.tar.gz: Makefile staticetags etags.1.man 
ETAGS.EBNF ETAGS.README
+#      tar -hzcf $@ COPYING ChangeLog ETAGS.EBNF etags.c etags.1 etags.1.man 
etags
+
+/home/www/pub/software/unix/etags.tar.gz: Makefile etags.1.man ETAGS.EBNF 
ETAGS.README maintaining.texi
+       tar -hzcf $@ COPYING ChangeLog ETAGS.EBNF ETAGS.README etags.c etags.1 
etags.1.man maintaining.texi
+
+regex.o: emacs/src/regex.c
+       $(CC) ${FASTCFLAGS} -c $?
+
+getopt.o: emacs/lib-src/getopt.c
+       $(CC) ${FASTCFLAGS} -c $?
+
+getopt1.o: emacs/lib-src/getopt1.c
+       $(CC) ${FASTCFLAGS} -c $?
+
+etags: etags.c ${OBJS}
+       $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o etags etags.c ${OBJS}
+
+ctags: etags.c ${OBJS}
+       $(CC) $(CFLAGS) $(CPPFLAGS) -DCTAGS $(LDFLAGS) -o ctags etags.c ${OBJS}
+
+man manpage: etags.1.man
+
+etags.1.man: etags.1
+       nroff -man -Tman etags.1 > $@
+
+maintaining.info: maintaining.texi
+       makeinfo --force --no-split maintaining.texi
+
+TAGS: etags.c
+       etags etags.c
+
+%ediff: ETAGS% ETAGS ${infiles}
+       sdiff --suppress-common-lines --width=103 ETAGS$* ETAGS
+
+oediff: OTAGS ETAGS ${infiles}
+       sdiff --suppress-common-lines --width=103 OTAGS ETAGS
+
+%cdiff: CTAGS% CTAGS ${infiles}
+       sdiff --suppress-common-lines --width=103 CTAGS$* CTAGS
+
+xdiff: ETAGS EXTAGS ${infiles}
+       sdiff --suppress-common-lines --width=103 ETAGS EXTAGS
+
+ETAGS: FRC etags ${infiles}
+       ${RUN} ./etags ${OPTIONS} -o $@ ${ARGS}
+
+ETAGS%: FRC etags% ${infiles}
+       ${RUN} etags$* ${OPTIONS} -o $@ ${ARGS}
+
+ETAGS13 ETAGS14 ETAGS15: etags% ${infiles}
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* address@hidden -o 
$@ ${ARGS}
+
+ETAGS12: etags12 ${infiles}
+       ${RUN} etags12 --members -o $@ --regex='${REGEX}' ${ARGS}
+
+OTAGS: oetags ${SRCS} srclist
+       ${RUN} ./oetags -o $@ -t ${ARGS}
+
+CTAGS: ctags ${infiles}
+       ${RUN} ./ctags -o $@ address@hidden ${ARGS}
+
+CTAGS%: ctags% ${infiles}
+       ${RUN} ctags$* -wtTd --globals --members -o $@ address@hidden ${ARGS}
+
+CTAGS13 CTAGS14 CTAGS15: ctags% ${infiles}
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex='${REGEX}' ${ARGS}
+
+EXTAGS: extags ${infiles} Makefile
+       ${RUN} ./extags -e --regex-c='${REGEX}' --c++-types=+x --c-types=+x 
--if0=yes --line-directives=yes -o $@ -L - < srclist
+
+.PRECIOUS: ETAGS CTAGS ETAGS16 CTAGS16 ETAGS17 CTAGS17
+
+FRC:;
diff --git a/test/etags/objc-src/PackInsp.h b/test/etags/objc-src/PackInsp.h
new file mode 100644
index 0000000..0e3643c
--- /dev/null
+++ b/test/etags/objc-src/PackInsp.h
@@ -0,0 +1,120 @@
+/*+++*
+ *  title:     PackageInspector.h
+ *  abstract:  interface definitions for WM PackageInspector 
+ *  author:    T.R.Hageman, Groningen, The Netherlands
+ *  created:   November 1994
+ *  modified:  (see RCS Log at end)
+ *  copyleft:
+ *
+ *             Copyright (C) 1994,1995  Tom R. Hageman.
+ *
+ *     This 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 2 of the License, or
+ *     (at your option) any later version.
+ *
+ *     This software 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 software; if not, write to the Free Software
+ *     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *  description:
+ *
+ *---*/
+
+#import <appkit/appkit.h>
+#import <apps/Workspace.h>
+
+#include <sys/stat.h>
+
+#import "Subprocess.h"
+
+#define NUMSTATS       4
+#define TYPESTOSTAT    "bom", "info", "sizes", "tiff"
+
address@hidden PackageInspector:WMInspector
+{
+       // Outlets
+    id packageArchesField;
+    id packageDescriptionText;
+    id packageIconButton;
+    id packageLocationField;
+    id packageSizesField;
+    id packageStatusField;
+    id packageTitleField;
+    id packageVersionField;
+
+    id  inspectorVersionField;
+    id infoPanel;
+    id infoVersionField;
+
+       // other variables.
+       NXBundle *bundle;               // class bundle.
+       NXBundle *package;              // package bundle.
+       struct stat stats[NUMSTATS];    // for lazy inspection.
+       enum { listContents, listDescription } revertButtonState;
+
+       Subprocess *archProcess;        // To determine architectures.
+}
+
+// Actions.
+-showInfo:sender;
+
+-open:sender;
+
+// The workhorses
+-(BOOL)shouldLoad;
+-load;
+-toggleDescription;
+
+// Load helper methods
+-loadKeyValuesFrom:(const char *)type inTable:(HashTable *)table;
+-loadContentsOf:(const char *)type inTable:(HashTable *)table;
+-loadImage;
+
+// Support methods
+-(const char *)getPath:(char *)path forType:(const char *)type;
+-setRevertButtonTitle;
+-(const char *)formatSize:(const char *)size inBuf:(char *)buf;
+
+// Determine architectures, in separate subprocess.
+-(void)getArchs;
+// Subprocess [TRH-enhanced] delegate methods:
+// Subprocess delegate methods:
+-subprocess:(Subprocess *)sender output:(char *)buffer;
+-subprocessDone:(Subprocess *)sender;
+
address@hidden // PackageInspector
+
+/*======================================================================
+ * PackageInspector.h,v
+ * Revision 1.7  1995/08/17 22:18:24  tom
+ * (-open:): new method.
+ *
+ * Revision 1.6  1995/07/30 16:59:51  tom
+ * import Subprocess.h; (archProcess): new ivar;
+ * (-getArchs,-subprocess:output:,-subprocessDone:): new methods;
+ * added for asynchronous arch-determination.
+ *
+ * Revision 1.5  1995/07/29 02:59:55  tom
+ * (NUMSTATS,TYPESTOSTAT): new defines, (stats[NUMSTATS]): new ivar, replaces
+ * bomstat, infostat, t ogeneralize lazy-load code.
+ *
+ * Revision 1.4  1995/04/02  02:39:05  tom
+ * (package): NXBundle instead of (const char *). so that localized info files
+ *  are found. (this loses out if *.pkg is a symbolic link, though.)
+ *
+ * Revision 1.3  1994/12/07  00:00:36  tom
+ * add GNU copleft comment.
+ *
+ * Revision 1.2  1994/11/25  20:18:56  tom
+ * (package ivar): use (char*) instead of (NXBundle*) to workaround symlink 
problems
+ *
+ * Revision 1.1  1994/11/24  22:39:56  tom
+ * Initial revision
+ *
+ *======================================================================*/
diff --git a/test/etags/objc-src/PackInsp.m b/test/etags/objc-src/PackInsp.m
new file mode 100644
index 0000000..41cc876
--- /dev/null
+++ b/test/etags/objc-src/PackInsp.m
@@ -0,0 +1,505 @@
+/*+++*
+ *  title:     PackageInspector.m
+ *  abstract:  NEXTSTEP Workspace Manager Inspector for Installer ".pkg" files.
+ *  author:    T.R.Hageman, Groningen, The Netherlands
+ *  created:   November 1994
+ *  modified:  (see RCS Log at end)
+ *  copyleft:
+ *
+ *             Copyright (C) 1994,1995  Tom R. Hageman.
+ *
+ *     This 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 2 of the License, or
+ *     (at your option) any later version.
+ *
+ *     This software 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 software; if not, write to the Free Software
+ *     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *  description:
+ *
+ *---*/
+
+#ifdef RCS_ID
+static const char RCSid[] =
+"PackageInspector.m,v 1.8 1995/09/01 21:46:27";
+#endif
+
+#define VERSION        "0.951"
+
+#ifndef DEBUG
+#   define DEBUG 0
+#endif
+#define LISTCONTENTS   0       // List Contents not yet implemented
+
+#import "PackageInspector.h"
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+// Localized strings
+#define OPENBUTTON             NXLocalizedStringFromTableInBundle(NULL, 
bundle, "Open", NULL, button label)
+#define LISTCONTENTSBUTTON     NXLocalizedStringFromTableInBundle(NULL, 
bundle, "List Contents", NULL, button label)
+#define LISTDESCRIPTIONBUTTON  NXLocalizedStringFromTableInBundle(NULL, 
bundle, "Description", NULL, button label)
+
+// States
+#define STATE_UNINSTALLED      NXLocalizedStringFromTableInBundle(NULL, 
bundle, "Uninstalled", NULL, original package state)
+#define STATE_INSTALLED                
NXLocalizedStringFromTableInBundle(NULL, bundle, "installed", "Installed", 
package has been uncompressed unto disk)
+#define STATE_COMPRESSD                
NXLocalizedStringFromTableInBundle(NULL, bundle, "compressed", "Compressed", 
installed package has been recompressed)
+
+// so InfoView.strings can be ripped off from Installer.app
+#define SIZEFORMAT             NXLocalizedStringFromTableInBundle("InfoView", 
bundle, "%s installed, %s compressed", NULL, Short indication to user about the 
size of a package once installed and the size when compressed)
+#define KBYTES                 NXLocalizedStringFromTableInBundle("InfoView", 
bundle, "KB", NULL, Kilobytes -- package size)
+#define MBYTES                 NXLocalizedStringFromTableInBundle("InfoView", 
bundle, "MB", NULL, MegaBytes -- package size)
+
+#define LOCALIZE(s)            NXLoadLocalizedStringFromTableInBundle(NULL, 
bundle, s, NULL)
+#define LOCALIZE_ARCH(s)       
NXLoadLocalizedStringFromTableInBundle("Architectures", bundle, s, NULL)
+
+
address@hidden PackageInspector
+
++new
+{
+       static PackageInspector *instance;
+       
+       if (instance == nil) {
+               char path[MAXPATHLEN+1];
+               const char *nibname = [self name];
+
+               instance = [super new];
+
+               instance->bundle = [NXBundle bundleForClass:self];
+
+               if ([instance->bundle getPath:path forResource:nibname 
ofType:"nib"] &&
+                   [NXApp loadNibFile:path owner:instance]) {
+                       [instance->inspectorVersionField 
setStringValue:VERSION];
+                       [instance->packageDescriptionText 
setVertResizable:YES]; // ??Necessary??
+               }
+               else {
+                       fprintf(stderr, "Couldn't load %s.nib\n", nibname);
+                       [instance free];
+                       instance = nil;
+               }
+       }
+       return instance;
+}
+
+-showInfo:sender
+{
+       if (infoPanel == nil) {
+               char path[MAXPATHLEN+1];
+
+               if ([bundle getPath:path forResource:"Info" ofType:"nib"] &&
+                   [NXApp loadNibFile:path owner:self]) {
+                       [infoVersionField setStringValue:[inspectorVersionField 
stringValue]];
+               }
+       }
+       [infoPanel makeKeyAndOrderFront:sender];
+       return self;
+}
+
+-revert:sender
+{
+       [super revert:sender];
+
+       if ([self selectionCount] != 1) {
+               return nil;
+       }
+       if (sender == [self revertButton]) {
+               [self toggleDescription];
+       }
+       else {
+               char path[MAXPATHLEN+1];
+
+               [package free];
+               [self selectionPathsInto:path separator:'\0'];
+               if (!(package = [[NXBundle allocFromZone:[self zone]] 
initForDirectory:path])) {
+                       return nil;
+               }
+               if ([self shouldLoad]) {
+                       [self load];
+                       revertButtonState = listContents;
+               }
+       }
+       [[[self okButton] setTitle:OPENBUTTON] setEnabled:YES];
+       [self setRevertButtonTitle];
+
+       return self;
+}
+
+-ok:sender
+{
+       [self perform:@selector(open:) with:sender afterDelay:0 
cancelPrevious:NO];
+       [super ok:sender];
+       return self;
+}
+
+-load
+{
+       char buf[256], size[2][20];
+       HashTable *table = [[HashTable alloc] initKeyDesc:"*" valueDesc:"*"];
+
+       [self getArchs];
+       // Collect information about the package in a hashtable.
+       [self loadKeyValuesFrom:"info" inTable:table];
+       [self loadKeyValuesFrom:"sizes" inTable:table];
+       [self loadContentsOf:"location" inTable:table];
+       [self loadContentsOf:"status" inTable:table];
+
+       // Convenience macro.
+#define LOOKUP(key, notfound)  ([table isKey:key] ? [table valueForKey:key] : \
+                                (notfound))
+#if 0
+       // Set the various controls.
+       sprintf(buf, "<<not yet implemented>>");
+       // Well then, how *DOES* Installer determine this??? 
+       [packageArchesField setStringValue:buf];
+#endif
+       [packageDescriptionText setText:LOOKUP("Description", "")];
+       [packageLocationField setStringValue:
+        LOOKUP("location", LOOKUP("DefaultLocation", "???"))];
+
+       [self formatSize:[table valueForKey:"InstalledSize"] inBuf:size[0]];
+       [self formatSize:[table valueForKey:"CompressedSize"] inBuf:size[1]];
+       sprintf(buf, SIZEFORMAT, size[0], size[1]);
+       [packageSizesField setStringValue:buf];
+
+       [packageStatusField setStringValue:LOCALIZE(LOOKUP("status", 
"Uninstalled"))];
+       [packageTitleField setStringValue:LOOKUP("Title", "???")];
+       [packageVersionField setStringValue:LOOKUP("Version", "???")];
+#undef LOOKUP
+       // Is this how one frees the contents of a hashtable?
+       [table freeKeys:free values:free];
+       [table free];
+
+       [self loadImage];
+
+       return self;
+}
+
+-loadKeyValuesFrom:(const char *)type inTable:(HashTable *)table
+{
+       char path[MAXPATHLEN+1];
+       NXStream *stream;
+
+       if (stream = NXMapFile([self getPath:path forType:type], NX_READONLY)) {
+               int c;
+
+#if DEBUG & 1
+               fprintf(stderr, "loadKeyValuesFrom:%s\n", path);
+#endif
+               while ((c = NXGetc(stream)) >= 0) {
+                       // Buffer sizes should be enough, according to doc.
+                       char key[1024+1], value[1024+1];
+                       char *p;
+
+                       if (NXIsSpace(c)) continue;
+                       if (c == '#') {
+                               while ((c = NXGetc(stream)) >= 0 && c != '\n') ;
+                               continue;
+                       }
+                       // Found key; collect it.
+                       p = key;
+                       do {
+                               if (p < &key[sizeof key-1]) *p++ = c;
+                       } while ((c = NXGetc(stream)) >= 0 && !NXIsSpace(c));
+                       *p = '\0';
+
+                       // Skip over spaces and tabs.
+                       while (c == ' ' || c == '\t') c = NXGetc(stream);
+
+                       // Value is rest of line, up to newline.
+                       p = value;
+                       do {
+                               if (p < &value[sizeof value-1]) *p++ = c;
+                       } while ((c = NXGetc(stream)) >= 0 && c != '\n');
+                       *p = '\0';
+
+                       // Insert key/value pair in hashtable.
+#if DEBUG & 1
+                       fprintf(stderr, "key:%s value:%s\n", key, value);
+#endif
+                       [table insertKey:NXCopyStringBuffer(key)
+                        value:NXCopyStringBuffer(value)];
+               }
+
+               NXCloseMemory(stream, NX_FREEBUFFER);
+       }
+       return self;
+
+}
+
+-loadContentsOf:(const char *)type inTable:(HashTable *)table
+{
+       char path[MAXPATHLEN+1];
+       NXStream *stream;
+
+       if (stream = NXMapFile([self getPath:path forType:type], NX_READONLY)) {
+               char line[1024+1];
+               int n = NXRead(stream, line, sizeof line);
+
+               if (n > 0 && line[n-1] == '\n') line[n-1] = '\0';       // 
remove trailing newline.
+
+               NXCloseMemory(stream, NX_FREEBUFFER);
+
+               [table insertKey:NXCopyStringBuffer(type)
+                value:NXCopyStringBuffer(line)];
+       }
+       return self;
+}
+
+-loadImage
+{
+       char path[MAXPATHLEN+1];
+       NXImage *image;
+
+       // Remove old image from the button.
+       if (image = [packageIconButton image]) {
+               [packageIconButton setImage:nil];
+               [image free];
+       }
+       // Get the image (if any) from the package
+       image = [[NXImage allocFromZone:[self zone]] initFromFile:[self 
getPath:path forType:"tiff"]];
+       [packageIconButton setImage:image];
+
+       return self;
+}
+
+
+#define STAT_EQ(s1, s2)        ((s1)->st_ino == (s2)->st_ino && \
+                        (s1)->st_dev == (s2)->st_dev && \
+                        (s1)->st_mtime == (s2)->st_mtime && \
+                        (s1)->st_size == (s2)->st_size)
+
+-(BOOL)shouldLoad
+{
+       char path[MAXPATHLEN+1];
+       struct stat newstats[NUMSTATS];
+       static const char * const typesToStat[NUMSTATS] = { TYPESTOSTAT };
+       BOOL result = NO;
+       int i;
+
+       for (i = 0;  i < NUMSTATS;  i++) {
+               memset(&newstats[i], 0, sizeof(struct stat));
+               if (!(stat([self getPath:path forType:typesToStat[i]], 
&newstats[i]) == 0 &&
+                     STAT_EQ(&newstats[i], &stats[i]))) {
+                       result = YES;
+                       ///break; // NOT!!! must stat all for accurate cache.
+               }
+               stats[i] = newstats[i];
+       }
+
+       return result;
+}
+
+-toggleDescription
+{
+       switch (revertButtonState) {
+       case listContents:
+               // TODO: swap views?
+               revertButtonState = listDescription;
+               break;
+       case listDescription:
+               revertButtonState = listContents;
+               break;
+       }
+       return [self setRevertButtonTitle];
+}
+
+
+// Support methods
+-(const char *)getPath:(char *)buf forType:(const char *)type
+{
+       char name[MAXPATHLEN+1];
+
+       // Get package name, sans extension.
+       *strrchr(strcpy(name, strrchr([package directory], '/')+1), '.') = '\0';
+
+       // Now get the full pathname.
+       [package getPath:buf forResource:name ofType:type];
+#if DEBUG & 2
+       fprintf(stderr, "PackageInspector: type=\"%s\" name=\"%s\" 
path=\"%s\"\n",
+               type, name, buf);
+#endif
+       return buf;
+}
+
+-setRevertButtonTitle
+{
+#if LISTCONTENTS
+       [[[self revertButton]
+         setTitle:LOCALIZE(revertButtonState == listContents ?
+                           "List Contents" : "Description")]
+        setEnabled:YES];
+#endif
+       return self;
+}
+
+-(const char *)formatSize:(const char *)size inBuf:(char *)buf
+{
+       // [TRH] this is very simplistic (but seems consistent with 
Installer.app)
+       if (!size) {
+               strcpy(buf, "???");
+       }
+       else {
+               int len = strlen(size);
+               if (len < 4) {
+                       sprintf(buf, "%s%s", size, KBYTES);
+               }
+               else if (len < 6) {
+                       sprintf(buf, "%.*s.%.*s%s",
+                               (len-3), size, 3-(len-3), size+(len-3), 
MBYTES); 
+               }
+               else {
+                       sprintf(buf, "%.*s%s", (len-3), size, MBYTES);
+               }
+       }
+       return buf;
+}
+
+// Determine architectures, in separate subprocess.
+
+#define WORKING        " ..."  // `I'm still busy' indicator.
+
+-(void)getArchs
+{
+       char command[2*MAXPATHLEN+10+1];
+
+       if (archProcess) [archProcess terminate:self];
+
+       [packageArchesField setStringValue:WORKING];
+
+       [bundle getPath:command forResource:"archbom" ofType:NULL];
+       strcat(command, " ");
+       [self getPath:&command[strlen(command)] forType:"bom"];
+       archProcess = [[Subprocess allocFromZone:[self zone]] init:command
+                      withDelegate:self andPtySupport:NO andStdErr:NO];
+}
+
+-(void)addArchs:(const char *)string
+{
+       char result[1024];      // Should be big enough...
+       const char *s;
+       char *d;
+
+       strcpy(result, [packageArchesField stringValue]);
+       if ((d = strstr(result, WORKING)) != NULL) {
+               *d = '\0';
+       }
+       else {
+               d = result + strlen(result);
+       }
+       if ((s = string)) {
+               do {
+                       char name[100];
+                       char *t = name;
+
+                       while (*s && !NXIsAlNum(*s)) {
+                               if (*s == '\n') {
+                                       *d++ = ' ', s++;
+                               }
+                               else {
+                                       *d++ = *s++;
+                               }
+                       }
+                       while (NXIsAlNum(*s)) *t++ = *s++;
+                       *t = '\0';
+                       if (t > name) {
+#if DEBUG & 4
+                               fprintf(stderr, "addArchs:\"%s\" localized: 
\"%s\"\n", name, LOCALIZE_ARCH(name));
+#endif
+                               strcpy(d, LOCALIZE_ARCH(name));
+                               d += strlen(d);
+                       }
+               } while (*s);
+
+               strcpy(d, WORKING);
+       }
+       [packageArchesField setStringValue:result];
+       [window displayIfNeeded]; // necessary??
+}
+
+-subprocess:(Subprocess *)sender output:(char *)buffer
+{
+       if (sender == archProcess) {
+               [self addArchs:buffer];
+       }
+       return self;
+}
+
+-subprocessDone:(Subprocess *)sender
+{
+       if (sender == archProcess) {
+               archProcess = nil;
+               [self addArchs:NULL];
+       }
+       [sender free];
+       return self;
+}
+
+static void openInWorkspace(const char *filename)
+{
+       // Indirect approach to circumvent Workspace deadlock/timeout.
+       char command[14+3*MAXPATHLEN+1];
+       const char *s;
+       char *d = command;
+
+       for (s = "exec open '"; *s; ) *d++ = *s++;
+       // Escape single quote characters.
+       for (s = filename; *s; ) {
+               if ((*d++ = *s++) == '\'') {
+                       *d++ = '\\', *d++ = '\'', *d++ = '\'';
+               }
+       }
+       for (s = "'&"; *d++ = *s++; ) ;
+       system(command);
+}
+
+-open:sender
+{
+       openInWorkspace([package directory]);
+       return self;
+}
+
address@hidden
+
+/*======================================================================
+ * PackageInspector.m,v
+ * Revision 1.8  1995/09/01 21:46:27  tom
+ * Circumvent open deadlock/timeout (when Installer.app is not yet launched);
+ * (openInWorkspace): new private function; (-open:): new method.
+ *
+ * Revision 1.7  1995/07/30 22:20:26  tom
+ * (LOCALIZE_ARCH): new macro; (-addArchs:): new method;
+ * (-subprocess:output:,-subprocessDone:) use it.
+ *
+ * Revision 1.6  1995/07/30 16:59:51  tom
+ * import Subprocess.h; (archProcess): new ivar;
+ * (-getArchs,-subprocess:output:,-subprocessDone:): new methods;
+ * added for asynchronous arch-determination.
+ *
+ * Revision 1.5  1995/07/29 19:13:35  tom
+ * (+new): avoid reassignment of self;
+ *  make packageDescriptionText vertically resizable;
+ * (-shouldLoad): rewritten to generalized array-driven approach.
+ *
+ * Revision 1.4  1995/04/02 02:39:01  tom
+ * (package): NXBundle instead of (const char *). so that localized info files
+ *  are found. (this loses out if *.pkg is a symbolic link, though.)
+ *
+ * Revision 1.3  1994/12/07 00:00:36  tom
+ * (RCSid): add spaces.
+ *
+ * Revision 1.2  1994/11/25 21:27:18  tom
+ * (package ivar): use (char*) instead of (NXBundle*) to workaround symlink 
problems
+ *
+ * Revision 1.1  1994/11/25 16:13:12  tom
+ * Initial revision
+ *
+ *======================================================================*/
diff --git a/test/etags/objc-src/Subprocess.h b/test/etags/objc-src/Subprocess.h
new file mode 100644
index 0000000..7e586a1
--- /dev/null
+++ b/test/etags/objc-src/Subprocess.h
@@ -0,0 +1,81 @@
+/*
+       Subprocess.h    (v10)
+       by Charles L. Oei
+       pty support by Joe Freeman
+       with encouragement from Kristofer Younger
+       Subprocess Example, Release 2.0
+       NeXT Computer, Inc.
+
+       You may freely copy, distribute and reuse the code in this example.
+       NeXT disclaims any warranty of any kind, expressed or implied, as to
+       its fitness for any particular use.
+
+       Hacked up for use in PackageInspector by Tom Hageman.
+*/
+
+#import <objc/Object.h>
+#import <stdio.h>
+
+/*
+    This subprocess object sends/receives data to/from any UNIX
+    subprocess asynchronously (via vfork/pipe).
+    Its delegate, if any, will receive the following messages:
+
+       - subprocessDone;
+           // sent when the subprocess exits
+    
+       - subprocessOutput:(char *)buffer;
+           // sent whenever there is data on the standard output pipe;
+           // buffer is only valid until next call
+       
+       - subprocessError:(const char *)errorString;
+           // sent when an error occurs;
+           // if it ever happens, it's usually only at startup time
+
+       // [TRH] and this is how these should have been done in the first 
place...
+       - subprocessDone:(SubProcess *)sender;
+       - subprocess:(SubProcess *)sender output:(char *)buffer;        
+*/
+
+// Hack to uniquize classname (to avoid dynload errors.)
+#define Subprocess SubprocessForPackageInspector
+
+#define BUFFERSIZE 2048
+
address@hidden Subprocess:Object
+{
+    FILE *fpToChild;
+    int fromChild;
+    int childPid;
+    id delegate;
+    int masterPty;     // file descriptor for master/slave pty
+    int slavePty;
+    int bufferCount;
+    char outputBuffer[BUFFERSIZE];
+}
+
+- init:(const char *)subprocessString;
+    // a cover for the below withDelegate:nil, andPtySupport:NO, andStdErr:YES
+
+- init:(const char *)subprocessString
+    withDelegate:theDelegate
+    andPtySupport:(BOOL)wantsPty
+    andStdErr:(BOOL)wantsStdErr;
+    // optional requests for pseudo terminal support and
+    // redirecting the standard error stream thru standard output
+
+- send:(const char *)string withNewline:(BOOL)wantNewline;
+    // send the string optionally followed by a new line
+- send:(const char *)string;
+    // sends the string followed by a new line
+    // shorthand for above withNewline:YES
+- terminateInput;
+    // sends an end-of-file (EOF) to the subprocess
+    // (and closes input pipe to child)
+- terminate:sender;
+    // forces the subprocess to terminate (w/ SIGTERM)
+
+- setDelegate:anObject;
+- delegate;
+
address@hidden
diff --git a/test/etags/objc-src/Subprocess.m b/test/etags/objc-src/Subprocess.m
new file mode 100644
index 0000000..2d8d586
--- /dev/null
+++ b/test/etags/objc-src/Subprocess.m
@@ -0,0 +1,343 @@
+/*
+       Subprocess.m    (v10)
+       by Charles L. Oei
+       pty support by Joe Freeman
+       Subprocess Example, Release 2.0
+       NeXT Computer, Inc. 
+
+       You may freely copy, distribute and reuse the code in this example.
+       NeXT disclaims any warranty of any kind, expressed or implied, as to
+       its fitness for any particular use.
+*/
+
+#import "Subprocess.h"
+// #import <sgtty.h>   // needed to compile under Release 1.0
+#import <appkit/nextstd.h>
+#import <appkit/Application.h>
+#import <appkit/Panel.h>
+#import <sys/wait.h>
+
+#define        PTY_TEMPLATE "/dev/pty??"
+#define        PTY_LENGTH 11
+
+static void showError();
+
+
+/*==========================================================
+ *
+ * Private Instance Methods
+ *
+ *==========================================================*/
+
address@hidden Subprocess(Private)
+- childDidExit;
+- fdHandler:(int)theFd;
address@hidden
+
address@hidden Subprocess(Private)
+
+- childDidExit
+    // cleanup after a child process exits
+{
+    if (childPid)
+    {
+       union wait exitstatus;
+       int waitresult;
+
+       DPSRemoveFD(fromChild);
+       close(fromChild);
+       fclose(fpToChild);
+       // Cleanup zombie processes. (blocking wait is too dangerous here...)
+       waitresult = wait4(childPid, &exitstatus, WNOHANG, NULL);
+       if (waitresult != childPid) {
+               /* XXX should handle this gracefully, e.g, timed entry. */
+       }
+       childPid=0;     // specify that child is dead
+       if (delegate)
+       {    
+           if ([delegate respondsTo:@selector(subprocessDone:)])
+               [delegate perform:@selector(subprocessDone:) with:self];
+           else if ([delegate respondsTo:@selector(subprocessDone)])
+               [delegate perform:@selector(subprocessDone)];
+       }
+    }
+    return self;
+}
+
+- fdHandler:(int)theFd
+    // DPS handler for output from subprocess
+{
+    if ((bufferCount = read(theFd, outputBuffer, BUFFERSIZE-1)) <= 0)
+    {
+       [self childDidExit];
+       return self;
+    }
+    outputBuffer[bufferCount] = '\0';
+    if (delegate)
+    {
+        if ([delegate respondsTo:@selector(subprocess:output:)])
+           [delegate perform:@selector(subprocess:output:)
+                 with:self with:(void *)&outputBuffer];
+        else if ([delegate respondsTo:@selector(subprocessOutput:)])
+           [delegate perform:@selector(subprocessOutput:)
+                 with:(void *)&outputBuffer];
+    }
+    return self;
+}
+
address@hidden
+
+
+/*==========================================================
+ *
+ * Private Utility Routines
+ *
+ *==========================================================*/
+ 
+static void
+showError (const char *errorString, id theDelegate)
+    // ensure errors never get dropped on the floor
+{
+    if (theDelegate && [theDelegate respondsTo:@selector(subprocessError:)])
+       [theDelegate
+           perform:@selector(subprocessError:)
+           with:(void *)errorString];
+    else if (NXApp)    // no delegate, but we're running w/in an App
+       NXRunAlertPanel(0, errorString, 0, 0, 0);
+    else
+       perror(errorString);
+}
+
+static void
+fdHandler (int theFd, id self)
+    // DPS handler for output from subprocess
+{
+    [self fdHandler:theFd];
+}
+
+static void
+getptys (int *master, int *slave)
+    // attempt to setup the ptys
+{
+    char device[PTY_LENGTH];
+    char *block, *num;
+    char *blockLoc; // specifies the location of block for the device string
+    char *numLoc; // specifies the pty name with the digit ptyxD
+    char *msLoc; // specifies the master (ptyxx) or slave (ttyxx)
+    
+    struct sgttyb setp =
+       {B9600, B9600, (char)0x7f, (char)0x15, (CRMOD|ANYP)};
+    struct tchars setc =
+       {CINTR, CQUIT, CSTART, CSTOP, CEOF, CBRK};
+    struct ltchars sltc =
+       {CSUSP, CDSUSP, CRPRNT, CFLUSH, CWERASE, CLNEXT};
+    int        lset =
+       (LCRTBS|LCRTERA|LCRTKIL|LCTLECH|LPENDIN|LDECCTQ);
+    int        setd = NTTYDISC;
+    
+    strcpy(device, PTY_TEMPLATE); // string constants are not writable
+    blockLoc = &device[ strlen("/dev/pty") ];
+    numLoc = &device[ strlen("/dev/pty?") ];
+    msLoc = &device[ strlen("/dev/") ];
+    for (block = "pqrs"; *block; block++)
+    {
+       *blockLoc = *block;
+       for (num = "0123456789abcdef"; *num; num++)
+       {
+           *numLoc = *num;
+           *master = open(device, O_RDWR);
+           if (*master >= 0)
+           {
+               *msLoc = 't';
+               *slave = open(device, O_RDWR);
+               if (*slave >= 0)
+               {
+                   (void) ioctl(*slave, TIOCSETP, (char *)&setp);
+                   (void) ioctl(*slave, TIOCSETC, (char *)&setc);
+                   (void) ioctl(*slave, TIOCSETD, (char *)&setd);
+                   (void) ioctl(*slave, TIOCSLTC, (char *)&sltc);
+                   (void) ioctl(*slave, TIOCLSET, (char *)&lset);
+                   return;
+               } else {
+                   // close the master and reset the device
+                   // name so that the master opens it properly
+                   *msLoc = 'p';
+                   close(*master);
+               }
+           }
+       } /* hunting through a bank of ptys */
+    } /* hunting through blocks of ptys in all the right places */
+    *master = -1;
+    *slave = -1;
+}
+
+
address@hidden Subprocess
+
+/*==========================================================
+ *
+ * Public Instance Methods
+ *
+ *==========================================================*/
+
+- init:(const char *)subprocessString
+    // a cover for the below withDelegate:nil, andPtySupport:NO, andStdErr:YES
+{
+    return
+       [self
+           init:subprocessString
+           withDelegate:nil
+           andPtySupport:NO
+           andStdErr:YES];
+}
+
+- init:(const char *)subprocessString
+    withDelegate:theDelegate
+    andPtySupport:(BOOL)wantsPty
+    andStdErr:(BOOL)wantsStdErr
+    // initializes an instance of Subprocess and corresponding UNIX process
+{
+    int pipeTo[2];             // for non-Pty support
+    int pipeFrom[2];
+    int        tty, numFds, fd;        // for temporary use
+    int processGroup;
+    int pidChild;              // needed because childPid does not exist
+                               // until Subprocess is instantiated
+
+    if (wantsPty)
+    {
+       tty = open("/dev/tty", O_RDWR);
+       getptys(&masterPty,&slavePty);
+       if (masterPty <= 0 || slavePty <= 0)
+       {
+           showError("Error grabbing ptys for subprocess.", theDelegate);
+           return self;
+       }
+       // remove the controlling tty if launched from a shell,
+       // but not Workspace;
+       // so that we have job control over the parent application in shell
+       // and so that subprocesses can be restarted in Workspace
+       if  ((tty<0) && ((tty = open("/dev/tty", 2))>=0))
+       {
+           ioctl(tty, TIOCNOTTY, 0);
+           close(tty);
+       }
+    }
+    else
+    {
+       if (pipe(pipeTo) < 0 || pipe(pipeFrom) < 0)
+       {
+           showError("Error starting UNIX pipes to subprocess.", theDelegate);
+           return self;
+       }
+    }
+    
+    switch (pidChild = vfork())
+    {
+    case -1:   // error
+       showError("Error starting UNIX vfork of subprocess.", theDelegate);
+       return self;
+
+    case 0:    // child
+       if (wantsPty)
+       {
+           dup2(slavePty, 0);
+           dup2(slavePty, 1);
+           if (wantsStdErr)
+               dup2(slavePty, 2);
+       }
+       else
+       {
+           dup2(pipeTo[0], 0);
+           dup2(pipeFrom[1], 1);
+           if (wantsStdErr)
+               dup2(pipeFrom[1], 2);
+       }
+       
+       numFds = getdtablesize();
+       for (fd=3; fd<numFds; fd++)
+           close(fd);
+
+       processGroup = getpid();
+       ioctl(0, TIOCSPGRP, (char *)&processGroup);
+       setpgrp (0, processGroup);
+       
+       // we exec a /bin/sh so that cmds are easier to specify for the user
+       execl("/bin/sh", "sh", "-c", subprocessString, 0);
+       perror("vfork (child)"); // should never gets here tho
+       exit(1);
+
+    default:   // parent
+       [self setDelegate:theDelegate];
+       childPid = pidChild;
+
+       if (wantsPty)
+       {
+           close(slavePty);
+           
+           fpToChild = fdopen(masterPty, "w");
+           fromChild = masterPty;
+       }
+       else
+       {
+           close(pipeTo[0]);
+           close(pipeFrom[1]);
+    
+           fpToChild = fdopen(pipeTo[1], "w");
+           fromChild = pipeFrom[0];
+       }
+
+       setbuf(fpToChild, NULL);
+       DPSAddFD(
+           fromChild,
+           (DPSFDProc)fdHandler,
+           (id)self,
+           NX_MODALRESPTHRESHOLD+1);
+       return self;
+    }
+}
+
+- send:(const char *)string withNewline:(BOOL)wantNewline
+{
+    fputs(string, fpToChild);
+    if (wantNewline)
+        fputc('\n', fpToChild);
+    return self;
+}
+
+- send:(const char *)string
+{
+    [self send:string withNewline:YES];
+    return self;
+}
+
+- terminateInput
+    // effectively sends an EOF to the child process stdin
+{
+    fclose(fpToChild);
+    return self;
+}
+
+- terminate:sender
+{
+    if (childPid)
+    {
+       //kill(childPid+1, SIGTERM);
+       killpg(childPid, SIGTERM);
+       [self childDidExit];
+    }
+    return self;
+}
+
+- setDelegate:anObject
+{
+    delegate = anObject;
+    return self;
+}
+
+- delegate
+{
+    return delegate;
+}
+
address@hidden
diff --git a/test/etags/objcpp-src/SimpleCalc.H 
b/test/etags/objcpp-src/SimpleCalc.H
new file mode 100644
index 0000000..121ae6b
--- /dev/null
+++ b/test/etags/objcpp-src/SimpleCalc.H
@@ -0,0 +1,49 @@
+//
+//     SimpleCalc -- Randy Nelson -- NeXT Developer Training
+//     A general class that serves as a liaison between a calculator interface
+//     and a calculator engine.
+//
+//  You may freely copy, distribute and reuse the code in this example.
+//  NeXT disclaims any warranty of any kind, expressed or implied, as to
+//  its fitness for any particular use.
+//
+//     Created 8-8-90
+//
+#import <objc/Object.h>
+
address@hidden SimpleCalc:Object
+{
+    // outlets...the front-end.
+    id                         display;
+    id                 enterKey;
+    id                 minusKey;
+    id                 infoManager;
+    id                 myNXStringTable;
+
+    // C++ object's can be a-part-of Objective-C objects.
+    class CalcEngine   *cplus_object;  
+
+    // record each previous user action
+    SEL                        previousAction;
+}
+
+// actions.
+
+- numberKeys:sender;
+- decimalKey:sender;
+- operationKeys:sender;
+- equalsKey:sender;
+- clearKey:sender;
+- clearAllKey:sender;
+- infoPanel:sender;
+- helpPanel:sender;
+
+// delegate methods.
+
+- windowWillClose:sender;
+- appDidInit:sender;
+
+- registerAction:(SEL)action;
+- appendToDisplay:(const char *)theString;
+
address@hidden
diff --git a/test/etags/objcpp-src/SimpleCalc.M 
b/test/etags/objcpp-src/SimpleCalc.M
new file mode 100644
index 0000000..34846a7
--- /dev/null
+++ b/test/etags/objcpp-src/SimpleCalc.M
@@ -0,0 +1,207 @@
+//     SimpleCalc -- Randy Nelson -- NeXT Developer Training
+//     A general class that serves as a liaison between a calculator interface
+//     and a calculator engine.
+//
+//     You may freely copy, distribute and reuse the code in this example.
+//     NeXT disclaims any warranty of any kind, expressed or implied, as to
+//     its fitness for any particular use.
+//
+//     Created 8-22-90
+//
+//     C++ "linkage" directive - tells the C++ compiler that the following 
+//     interface files contain Objective-C code.
+
+extern "Objective-C"           
+{                              
+#import <appkit/Application.h>
+#import <appkit/Panel.h>
+#import <appkit/TextField.h>
+#import <appkit/Button.h>
+}
+
+extern "C"
+{
+#import <appkit/publicWraps.h>
+#import <objc/error.h>
+#import <objc/NXStringTable.h>
+#import <strings.h>
+}
+
+//     The C++ "linkage" directive serves two purposes (when importing
+//     interface files that contain straight ANSI-C/Objective-C code). It:
+//
+//     (a) allows you to link with libraries that have not been compiled with
+//     the C++ compiler. Since libraries on the NeXT computer are compiled 
+//     with the Objective-C compiler (cc, not cc++), you must use the C++ 
+//     linkage directive when importing interface files that represent NeXT 
+//     libraries (or any library that is not compiled with cc++). 
+//
+//     (b) tells the compiler to ignore C++ keywords that will result in
+//     syntax errors when importing ANSI-C/Objective-C interface files. 
+//     The linkage directive essentially tells the C++ compiler to treat 
+//     keywords (such as "new", "delete", etc.) as normal identifiers.
+
+#import "SimpleCalc.h"
+#import "CalcEngine.h"
+#import "InfoManager.h"
+
address@hidden SimpleCalc
+
+// Initialize an instance of the SimpleCalc class.  One instance variable of
+// that class is the C++ calculator engine.
+- init
+{
+    cplus_object = new CalcEngine; // new is a keyword in C++.
+    previousAction = 0; 
+    return self;
+}
+
+// Append a new digit entered by the user to the text field display.
+- appendToDisplay:(const char *)theDigit
+{
+    char *copyOfDisplay = NXCopyStringBuffer([display stringValue]);
+
+    [display setStringValue: strcat(copyOfDisplay, theDigit)];
+
+    return self;
+}
+
+// We need to keep a history of one action to make decisions about the display.
+- registerAction:(SEL)action
+{
+    previousAction = action;
+    return self;
+}
+
+// The user has pushed the decimal key on the calculator.
+- decimalKey:sender
+{
+    if (previousAction == @selector(operationKeys:))
+       [display setStringValue:"."];
+    else {
+       if (strchr([display stringValue], '.'))
+           NXBeep();
+       else 
+           [self appendToDisplay:"."];
+    }
+    return [self registerAction:_cmd];
+}
+
+// One of the number keys was selected by the user.
+- numberKeys:sender
+{      
+    char aDigit[2];
+    int digit = [sender selectedTag];
+
+    sprintf(aDigit, "%d", digit);
+
+    if (previousAction == @selector(operationKeys:) ||
+       previousAction == @selector(equalsKey:))
+    {
+       [display setStringValue:aDigit];
+    } else {
+       if ([display doubleValue] == 0 && !strchr([display stringValue], '.'))
+           [display setStringValue:aDigit];
+       else
+           [self appendToDisplay:aDigit];
+    }
+    return [self registerAction:_cmd];
+}
+
+// The user pressed the equals key on the calculator interface.
+- equalsKey:sender
+{
+    if (previousAction == 0) 
+       NXBeep();
+    else {
+       NX_DURING
+           [display setDoubleValue:
+               cplus_object->equalsKey([display doubleValue])];
+       NX_HANDLER
+           NXRunAlertPanel(
+               [myNXStringTable valueForStringKey:"operationFailed"], 
+               [myNXStringTable valueForStringKey:NXLocalHandler.data1],
+               [myNXStringTable valueForStringKey:"OK"], NULL, NULL);
+       NX_ENDHANDLER
+    }
+    return [self registerAction:_cmd];
+}
+
+// The user pressed one of the operation keys.
+- operationKeys:sender
+{
+    if (previousAction == 0) 
+       NXBeep();
+    else if (previousAction == @selector(operationKeys:)) 
+       cplus_object->setOperation([sender selectedTag]);
+    else {
+       NX_DURING
+           [display setDoubleValue:
+               cplus_object->operationKeys([sender selectedTag],
+                                           [display doubleValue])];
+       NX_HANDLER
+           NXRunAlertPanel(
+               [myNXStringTable valueForStringKey:"operationFailed"], 
+               [myNXStringTable valueForStringKey:NXLocalHandler.data1],
+               [myNXStringTable valueForStringKey:"OK"], NULL, NULL);
+       NX_ENDHANDLER
+    }
+    return [self registerAction:_cmd];
+}
+
+// User pressed the Clear key.
+- clearKey:sender
+{
+    [display setStringValue:"0"];
+    return self;
+}
+
+// User pressed the Clear All key.
+- clearAllKey:sender
+{
+    cplus_object->clear();
+    [self registerAction:0];
+    return [self clearKey:sender];
+}
+
+// Called just after the application initializes and starts up.
+- appDidInit:sender
+{      
+    // Set the Enter key on the keypad to be equivalent to the = key.
+    [[display window] addToEventMask:NX_SYMBOLSET];
+    [enterKey setKeyEquivalent:3];
+    [[display window] makeKeyAndOrderFront:self];
+    return self;
+}
+
+// Called just before the window closes.
+- windowWillClose:sender
+{
+    return [NXApp terminate:self];
+}
+
+// Brings up the Info panel.   Not done on startup because it's in a separate
+// interface file.  Saves startup time for the user if we do this when they ask
+// for it, and not before.
+- infoPanel:sender
+{
+    if(infoManager == nil){
+       infoManager = [[InfoManager alloc] init];
+    }
+    [infoManager orderInfoPanelFront:sender];
+    return self;       
+}
+
+// Brings up the Help panel.   Not done on startup because it's in a separate
+// interface file.  Saves startup time for the user if we do this when they ask
+// for it, and not before.
+- helpPanel:sender
+{
+    if(infoManager == nil){
+       infoManager = [[InfoManager alloc] init];
+    }
+    [infoManager orderHelpPanelFront:sender];
+    return self;       
+}
+
address@hidden
diff --git a/test/etags/pas-src/common.pas b/test/etags/pas-src/common.pas
new file mode 100644
index 0000000..ec8e80c
--- /dev/null
+++ b/test/etags/pas-src/common.pas
@@ -0,0 +1,1545 @@
+#include "common.i"
+#include "common.h"
+
+type
+  NSPoolP = ^NSPoolRec;
+  NSPoolRec = record
+    Data: NameStringPointer;
+    Next: NSPoolP;
+  end;
+
+var
+  GlobalNSPool: record
+    Avail, Empty: NSPoolP;
+  end;
+
+var
+  AvailString : TextString;
+  NameList : BinNodePointer;  
+  AvailNameList : BinNodePointer;  
+
+
+
+(*------------------------------------------------------------------*) 
+(*                    InitializeStringPackage                       *) 
+(*------------------------------------------------------------------*) 
+procedure InitializeStringPackage;
+begin (* InitializeStringPackage *) 
+  AvailString := nil;
+end; (* InitializeStringPackage *) 
+
+(*------------------------------------------------------------------*) 
+(*                    newtextstring                                 *) 
+(*------------------------------------------------------------------*) 
+function newtextstring; (*: TextString;*)
+var
+  Temp : TextString;
+begin (* newtextstring *) 
+  if AvailString = nil then
+    new (Temp)
+  else begin
+    Temp := AvailString;
+    AvailString := Temp^.Next;
+  end;
+  Temp^.String.Length := 0;
+  Temp^.Next := nil;
+  newtextstring := Temp;
+end; (* newtextstring *) 
+
+(*------------------------------------------------------------------*) 
+(*                    disposetextstring                             *) 
+(*------------------------------------------------------------------*) 
+procedure disposetextstring;(*(
+  var S : TextString);*)
+var
+  Temp : TextString;
+  Temp2 : TextString;
+begin (* disposetextstring *) 
+  if S <> nil then begin
+    Temp := S;
+(*
+    while Temp^.Next <> nil do
+      Temp := Temp^.Next;
+    Temp^.Next := AvailString;
+    AvailString := S;
+*)
+    S := nil;
+    repeat
+      Temp2 := Temp^.Next;
+      dispose(Temp);
+      Temp := Temp2;
+    until Temp = nil;
+   end;
+end; (* disposetextstring *) 
+
+(*------------------------------------------------------------------*) 
+(*                    ConcatT                                       *) 
+(*------------------------------------------------------------------*) 
+function ConcatT;(*(
+  ToString : TextString;
+  S        : TextString) : TextString;*)
+var
+  Index : integer;
+begin (* ConcatT *) 
+  ConcatT := ToString;
+  if ToString = nil then
+    writeln (output, 'Error in ConcatT, ToString is nil')
+  else
+    if S = nil then
+      writeln (output, 'Error in ConcatT, S is nil')
+    else
+      if S^.Next <> nil then
+        writeln (output,
+          'Error in ConcatT, S contains several linked TextStrings')
+      else begin
+        while ToString^.Next <> nil do
+          ToString := ToString^.Next;
+        if ToString^.String.Length+S^.String.Length > NameStringLength then 
begin
+          ToString^.Next := newtextstring;
+          ToString := ToString^.Next;
+        end;
+        with ToString^, String do begin
+          for Index := 1 to S^.String.Length do
+            Value[Length+Index] := S^.String.Value[Index];
+          Length := Length+S^.String.Length;
+        end;
+      end;
+end; (* ConcatT *) 
+
+(*------------------------------------------------------------------*) 
+(*                    AppendTextString                              *) 
+(*------------------------------------------------------------------*) 
+function AppendTextString;(*(
+  ToString : TextString;
+  S        : TextString) : TextString;*)
+begin (* AppendTextString *) 
+  AppendTextString := ToString;
+  if ToString = nil then
+    writeln (output, 'Error in AppendTextString, ToString is nil')
+  else
+    if S = nil then
+      writeln (output, 'Error in AppendTextString, S is nil')
+    else begin
+      while ToString^.Next <> nil do
+        ToString := ToString^.Next;
+      ToString^.Next := S;
+    end;
+end; (* AppendTextString *) 
+
+(*------------------------------------------------------------------*) 
+(*                    CopyTextString                                *) 
+(*------------------------------------------------------------------*) 
+function CopyTextString;(*(
+  S : TextString
+  ) : TextString;*)
+var
+  Temp : TextString;
+begin   (* CopyTextString *) 
+  if S <> nil then begin
+    Temp := newtextstring;
+    Temp^.String := S^.String;
+    Temp^.Next := CopyTextString(S^.Next);
+    CopyTextString := Temp;
+  end
+  else
+    CopyTextString := nil;
+end;    (* CopyTextString *) 
+
+(*------------------------------------------------------------------*)
+(*                    CONVERT_CHARSTRING_TO_VALUE                   *)
+(*------------------------------------------------------------------*)
+procedure CONVERT_CHARSTRING_TO_VALUE;(*(
+      S : NameString;
+  var V : NameString);*)
+var
+  Pos : integer;
+  VPos : integer;
+  Ch : char;
+begin (* CONVERT_CHARSTRING_TO_VALUE *)
+  VPos := 0;
+  for Pos := 2 to S.Length - 1 do begin
+    Ch := S.Value[Pos];
+    if not ((Ch = '''') and (Pos > 2) and (S.Value[Pos - 1] = '''')) then
+      VPos := VPos + 1;
+    V.Value[VPos] := Ch;
+  end;
+  V.Length := VPos;
+end; (* CONVERT_CHARSTRING_TO_VALUE *)
+
+(*------------------------------------------------------------------*)
+(*                    append_string                                 *)
+(*------------------------------------------------------------------*)
+procedure append_string;(*(
+  var Txt    : TextString;
+  var String : NameString);*)
+var
+  Temp : TextString;
+begin (* append_string *)
+  Temp := newtextstring;
+  Temp^.String := String;
+  if Txt = nil then
+    Txt := Temp
+  else
+    Txt := AppendTextString(Txt, Temp);
+end; (* append_string *)
+
+function To_Upper;(*(ch:char) : char;*)
+begin
+  if ch in ['a'..'z'] then
+    To_Upper := chr(ord(ch) + ord('A')-ord('a'))
+  else
+    To_Upper := ch;
+end;
+
+function To_Lower;(*(ch:char) : char;*)
+begin
+  if ch in ['A'..'Z'] then
+    To_Lower := chr(ord(ch) - ord('A') + ord('a'))
+  else
+    To_Lower := ch;
+end;
+
+(*----------------------------------------------------------------------*)
+(*              Operations on NameString                                *)
+(*----------------------------------------------------------------------*)
+
+(*------------------------------------------------------------------*)
+(*                    EmptyNmStr                                    *)
+(*------------------------------------------------------------------*)
+function EmptyNmStr(* : NameString*);
+var
+  Nm : NameString;
+begin   (* EmptyNmStr *)
+  Nm.Length := 0;
+  EmptyNmStr := Nm;
+end;    (* EmptyNmStr *)
+
+
+(* returns a namestring containing one character, the inparameter Ch *)
+function chartonmstr; (*(
+  Ch : Char) : NameString; *)
+var
+  String : NameString;
+begin
+  String.Value[1] := Ch;
+  String.Length := 1;
+  chartonmstr := String;
+end;
+
+(* returns a namestring containing the inparameter Str in lowercase letters *)
+function LowerCaseNmStr; (*(
+  Str : NameString) : NameString; *)
+var
+  i : integer;
+begin (* LowerCaseNmStr *)
+  with Str do
+    for i := 1 to Length do
+      Value[i] := To_Lower(Value[i]);
+  LowerCaseNmStr := Str;
+end; (* LowerCaseNmStr *)
+
+(* returns a namestring containing inparameter S1 concatenated with inpar. S2 
*)
+function concatenatenamestrings; (*(
+  S1 : NameString;
+  S2 : NameString) : NameString; *)
+var
+  Temp : NameString;
+  Pos : integer;
+begin (* concatenatenamestrings *)
+  Temp := S1;
+  with Temp do begin
+    Pos := 0;
+    while Pos < S2.Length do begin
+      Pos := Pos + 1;
+      if Length < NameStringLength then begin
+        Length := Length + 1;
+        Value[Length] := S2.Value[Pos];
+      end;
+    end; (* while *)
+  end; (* with *)
+  concatenatenamestrings := Temp;
+end; (* concatenatenamestrings *)
+
+procedure writenamestring;(*(
+  var TextFile : text;
+  var Name     : NameString);*)
+var
+  Pos : integer;
+begin
+  with Name do
+    for Pos := 1 to Length do
+      write(TextFile, Value[Pos]);
+end;
+
+(*------------------------------------------------------------------*)
+(*                    IsControlChar                                 *)
+(*------------------------------------------------------------------*)
+function IsControlChar; (*(
+  Ch : char) : boolean; *)
+begin (* IsControlChar *)
+  IsControlChar := ord(Ch) in [0..32, 127];
+end; (* IsControlChar *)
+
+function namestringequal;(*(var Name1,Name2 : NameString) : Boolean;*)
+var i : Integer;
+    equal : Boolean;
+begin
+  if Name1.Length = Name2.Length then begin
+    equal := true;
+    i := 1;
+    while (i <= Name1.Length) and equal do begin
+       equal := To_Upper(Name1.Value[i]) = To_Upper(Name2.Value[i]);
+       i := i + 1;
+    end;
+    namestringequal := equal;
+  end 
+  else
+    namestringequal := false;
+end;
+
+(* Character strings are case sensitive *)
+
+function NameStringLess;(*(var Name1,Name2 : NameString) : Boolean;*)
+var i, minlength : Integer;
+    equal : Boolean;
+    C1, C2 : char;
+    Charstring : boolean;
+begin
+  C1 := ' ';
+  C2 := ' ';
+  if Name1.Length < Name2.Length then
+    minlength := Name1.Length 
+  else
+    minlength := Name2.Length;
+  if MinLength > 0 then
+    Charstring := (Name1.Value[1] = '''') or (Name2.Value[1] = '''')
+  else
+    Charstring := false;
+(*   Charstring := true; force case sensitive *)
+  i := 1;
+  equal := true;
+  if i <= minlength then
+    while (i <= minlength) and equal do begin
+      if Charstring then begin
+        C1 := Name1.Value[i];
+        C2 := Name2.Value[i];
+      end
+      else begin
+        C1 := To_Upper(Name1.Value[i]);
+        C2 := To_Upper(Name2.Value[i]);
+      end;
+      equal := C1 = C2;
+      i := i + 1;
+    end; (* while *)
+  if equal then
+    NameStringLess := Name1.Length < Name2.Length
+  else 
+    NameStringLess := C1 < C2;
+end;
+
+(*------------------------------------------------------------------*)
+(*                    IsControlCharName                             *)
+(*------------------------------------------------------------------*)
+function IsControlCharName(
+  Str : NameString;
+  Pos : integer) : boolean;
+begin (* IsControlCharName *)
+  with Str do begin
+    if Pos <= Length then
+      IsControlCharName := IsControlChar(Value[Pos])
+    else
+      IsControlCharName := false;
+  end;
+end; (* IsControlCharName *)
+
+(*------------------------------------------------------------------*)
+(*                    SubString                                     *)
+(*------------------------------------------------------------------*)
+function SubString; (*(
+  Str : NameString;
+  Start : integer;
+  Len : integer) : NameString; *)
+var
+  i : integer;
+begin (* SubString *)
+  with Str do begin
+    if Len > 0 then
+      for i := Start to Start + Len - 1 do
+        Value[i- Start + 1] := Value[i]
+    else if Len < 0 then
+      Len := 0;
+    Length := Len;
+  end;
+  SubString := Str;
+end; (* SubString *)
+
+(*------------------------------------------------------------------*)
+(*                    SkipChars                                     *)
+(*------------------------------------------------------------------*)
+function SkipChars; (*(
+  Str : NameString;
+  Start : integer;
+  Len : integer) : NameString; *)
+var
+  i : integer;
+begin (* SkipChars *)
+  with Str do begin
+    for i := Start to Length - Len do
+      Value[i] := Value[i + Len];
+    Length := Length - Len;
+  end;
+  SkipChars := Str;
+end; (* SkipChars *)
+
+(*------------------------------------------------------------------*)
+(*                    RemoveUnderlineControl                        *)
+(*------------------------------------------------------------------*)
+function RemoveUnderlineControl; (*(
+      Str : NameString) : NameString; *)
+var
+  Len : integer;
+  i : integer;
+  Start : integer;
+begin (* RemoveUnderlineControl *)
+  with Str do begin
+    i := 1;
+    while i <= Length do begin
+      if Value[i] = '_' then begin
+        Len := 0;
+        Start := i;
+        while IsControlCharName(Str, i + 1 + Len) do
+          Len := Len + 1;
+        if Len > 0 then
+          Str := SkipChars(Str, Start, Len + 1)
+        else
+          i := i + 1;
+      end
+      else
+        i := i + 1;
+    end; (* while *)
+  end; (* with *)
+  RemoveUnderlineControl := Str;
+end; (* RemoveUnderlineControl *)
+
+(*------------------------------------------------------------------*)
+(*                    First100Chars                                 *)
+(*------------------------------------------------------------------*)
+procedure First100Chars; (*(
+      Txt : TextString;
+  var Str : NameString;
+  var Truncated : boolean); *)
+var
+  Len : integer;
+  i : integer;
+begin (* First100Chars *)
+  Str.Length := 0;
+  if Txt <> nil then begin
+    Str := Txt^.String;
+    Txt := Txt^.Next;
+  end;
+  while (Txt <> nil) and (Str.Length < NameStringLength) do
+    with Txt^, String do begin
+      Str.Length := Str.Length + 1;
+      Str.Value[Str.Length] := ' ';
+      if Str.Length + Length <= NameStringLength then
+        Len := Str.Length + Length
+      else
+        Len := NameStringLength;
+      for i := Str.Length + 1 to Len do
+        Str.Value[i] := Value[i - Str.Length];
+      Str.Length := Len;
+      Txt := Txt^.Next;
+    end; (* while with *)
+  Truncated := Txt <> nil;
+end; (* First100Chars *)
+
+
+(*------------------------------------------------------------------*)
+(*                    SkipSpaces                                    *)
+(*------------------------------------------------------------------*)
+(* changes I to contain the first index in Str (starting at I) that *)
+(* is not a space                                                   *)
+procedure SkipSpaces; (* (Str : NameString; var I : Integer);*)
+var Stop : boolean;
+begin   (* SkipSpaces *)
+  Stop := false;
+  while (I < Str.Length) and not Stop do
+    if Str.Value[I] <> ' ' then
+      Stop := true
+    else
+      I := I+1; 
+end;    (* SkipSpaces *)
+
+
+(*------------------------------------------------------------------*)
+(*                    SkipBlanks                                    *)
+(*------------------------------------------------------------------*)
+function SkipBlanks; (*(
+  TextLine: NameString) : NameString; *)
+var
+  i : integer;
+  j : integer;
+  SpaceFound : boolean;
+begin (* SkipBlanks *)
+  with TextLine do begin
+    SpaceFound := true;
+    i := 1;
+    while SpaceFound and (i <= Length) do begin
+      SpaceFound := (Value[i] in [' ', chr(9)]);
+      if SpaceFound then
+        i := i + 1;
+    end; (* while *)
+    i := i - 1;
+    if i > 0 then
+      for j := 1 to Length - i do
+        if j <= Length - i then
+          Value[j] := Value[j + i];
+    Length := Length - i;
+  end; (* with *)
+  SkipBlanks := TextLine;
+end; (* SkipBlanks *)
+
+(*------------------------------------------------------------------*)
+(*                    stripname                                     *)
+(*------------------------------------------------------------------*)
+function stripname; (* (
+  TextLine: NameString) : NameString; *)
+var
+  SpaceFound : boolean;
+begin (* stripname *)
+  TextLine := SkipBlanks(TextLine);
+  with TextLine do begin
+    SpaceFound := true;
+    while SpaceFound and (Length > 0) do begin
+      SpaceFound := (Value[Length ] in [' ', chr(9)]);
+      if SpaceFound then
+        Length := Length - 1;
+    end; (* while *)
+  end; (* with *)
+  stripname := TextLine;
+end; (* stripname *)
+
+function Locate; (*(
+ Str : NameString;
+ Chars : SetOfChar) : integer; *)
+var
+  Pos : integer;
+  Found : boolean;
+begin (* Locate *)
+  Found := false;
+  Pos := 0;
+  with Str do
+    while not Found and (Pos < Length) do begin
+      Pos := Pos + 1;
+      Found := Value[Pos] in Chars;
+    end;
+  Locate := Pos;
+end; (* Locate *)
+
+
+(*------------------------------------------------------------------*)
+(*                    NameHasChar                                   *)
+(*------------------------------------------------------------------*)
+function NameHasChar; (* (TheName : NameString; TheChar : char) : boolean;*)
+var i : integer;
+    found : boolean;
+    
+begin   (* NameHasChar *)
+  found := false;
+  i := 0;
+  while not found and (i < TheName.Length) do begin
+    i := i+1;
+    found := TheName.Value[i] = TheChar;
+  end;
+  NameHasChar := found;
+end;    (* NameHasChar *)
+
+
+(*------------------------------------------------------------------*)
+(*                    integertonmstr                                *)
+(*------------------------------------------------------------------*)
+function integertonmstr; (* (TheInteger : integer) : NameString; *)
+var Nm : NameString;
+    Index,
+    Size,
+    TempNumber : integer;
+begin   (* integertonmstr *)
+  Size := 1;
+  TempNumber := TheInteger;
+  while TempNumber div 10 > 0 do begin
+    Size := Size + 1;
+    TempNumber := TempNumber div 10;
+  end;
+  Nm.Length := Size;
+  TempNumber := TheInteger;
+  for Index := Size downto 1 do begin
+    Nm.Value[Index] := chr(TempNumber mod 10 + ord('0'));
+    TempNumber := TempNumber div 10;
+  end;
+  integertonmstr := Nm;
+end;    (* integertonmstr *)
+
+(*------------------------------------------------------------------*)
+(*                    NmStrToInteger                                *)
+(*------------------------------------------------------------------*)
+function NmStrToInteger; (* (Str : NameString) : integer; *)
+var
+  Index : integer;
+  Numb : integer;
+  Max : integer;
+begin   (* NmStrToInteger *)
+ Max := (maxint div 10) - 10;
+ Numb := 0;
+  for Index := 1 to Str.Length do begin
+    if (Numb <= Max) and (Str.Value[Index] in ['0'..'9']) then
+      Numb := 10 * Numb + ord(Str.Value[Index]) - ord('0');
+  end;
+  NmStrToInteger := Numb;
+end;    (* NmStrToInteger *)
+
+function AddNullToNmStr; (*(
+  Nm : NameString) : NameString; *)
+begin (* AddNullToNmStr *)
+  with Nm do
+    if Length < NameStringLength then
+      Value[Length + 1] := chr(0)
+    else
+      Value[Length] := chr(0);
+  AddNullToNmStr := Nm;
+end; (* AddNullToNmStr *)
+
+function ValToNmStr; (*(
+  Nm : NameString) : NameString; *)
+begin (* ValToNmStr *)
+  with Nm do begin
+    length := 0;
+    while value[length + 1] <> chr(0) do
+      length := length + 1;
+  end;
+  ValToNmStr := Nm;
+end; (* ValToNmStr *)
+
+(*------------------------------------------------------------------*)
+(*                    ChangeFileType                                *)
+(*------------------------------------------------------------------*)
+function ChangeFileType; (*(FileName : NameString;
+  NewType : NameString) : NameString;*)
+var
+  Pos : integer;
+  Found : boolean;
+begin (* ChangeFileType *)
+  with Filename do begin
+    Pos := FileName.Length;
+    Found := false;
+    while not Found and (Pos > 0) do begin
+      Found := Value[Pos] = '.';
+      Pos := Pos - 1;
+    end;
+    if Found then
+      Length := Pos;
+  end; (* with *)
+  ChangeFileType := concatenatenamestrings(FileName, NewType);
+end; (* ChangeFileType*)
+
+(*------------------------------------------------------------------*)
+(*                    StripPath                                     *)
+(*------------------------------------------------------------------*)
+function StripPath; (*(
+      Str : NameString) : NameString; *)
+var
+  i : integer;
+  Len : integer;
+  Found : boolean;
+begin (* StripPath *)
+  with Str do begin
+    i := Length;
+    Found := false;
+    while not Found and (i > 0) do begin
+      Found := Value[i] in  ['/', '\'];
+      if not Found  then
+        i := i - 1;
+    end; (* while *)
+    if Found then begin
+      Len := Length - i + 1;
+      if i < Length then begin
+        i := i + 1;
+        Len := Len - 1;
+      end;
+      StripPath := SubString(Str, i, Len);
+    end
+    else
+      StripPath := Str;
+  end; (* with *)
+end; (* StripPath *)
+
+function ReprOfChar; (*( ch : char) : NameString;*)
+var
+  Repr : NameString;
+begin
+  if (ch >= ' ') and (ch <= '~') then
+    Repr := chartonmstr(ch)
+  else
+    Repr := concatenatenamestrings(concatenatenamestrings(chartonmstr('<'),
+              integertonmstr(ord(ch))), chartonmstr('>'));
+  ReprOfChar := Repr;
+end; (* ReprOfChar *)
+
+(*------------------------------------------------------------------*) 
+(*                    ExtractCommentInfo                            *) 
+(*------------------------------------------------------------------*) 
+(* check if Comment contains graphic reference or include directive *)
+(* /*#<graphref>*/ or /*#<include-dir>*/                            *)
+(*    <graphref>    =G pagename xcoord ycoord                       *)
+(*                   T pagename xcoord ycoord                       *)
+(*                   M diagramtype diagramname pagename xcoord ycoord *)
+(*                   D databankname                                 *)
+(*    <include-dir> =INCLUDE 'filename'                             *)
+(* InfoType will contain the type of the comment                    *)
+(* Info will contain <graphref> or the filename in <include-dir> if *)
+(* the Comment isn't an ordinary comment                            *)
+(* /*#E*/ do not count this line                                    *)
+(* /*#S*/ substructure generated from graphic short hand            *)
+procedure ExtractCommentInfo; (*(
+  var Comment, 
+      Info     : NameString; 
+  var InfoType : TypeOfComment); *)
+
+const
+  CommentMarkLength = 2;
+  IncludeMarkLength = 7;  (* = INCLUDE *) 
+  GRRefLen = 6;
+var StartIndex,
+    Index : integer;
+begin   (* ExtractCommentInfo *) 
+  Info.Length := 0;
+  with Comment do begin
+    InfoType := Ordinary;
+    StartIndex := CommentMarkLength + 1;
+    if Length > StartIndex then
+      if Value[StartIndex] = '#' then
+        if Value[StartIndex+1] in ['I','i', 'S'] then begin
+          if (Value[StartIndex+1] = 'S') and (Length = StartIndex+1+2) then
+            InfoType := SubstrShortHand
+          else if (Value[StartIndex+1] = 'S') and
+            (Length > StartIndex + GRRefLen) then begin
+              if Value[StartIndex+2] = 'D' then
+                if Value[StartIndex+3] = 'T' then
+                  if Value[StartIndex+4] = 'R' then
+                    if Value[StartIndex+5] = 'E' then
+                      if Value[StartIndex+6] = 'F' then
+                        InfoType := GRRef;
+            end
+          else begin
+            if Length > StartIndex + IncludeMarkLength then
+              if Value[StartIndex+2] in ['N','n'] then
+                if Value[StartIndex+3] in ['C','c'] then
+                  if Value[StartIndex+4] in ['L','l'] then
+                   if Value[StartIndex+5] in ['U','u'] then
+                     if Value[StartIndex+6] in ['D','d'] then
+                       if Value[StartIndex+7] in ['E','e'] then
+                         InfoType := IncludeClause;
+          end;
+        end;
+
+    if InfoType = IncludeClause then begin
+      InfoType := Ordinary;
+      StartIndex := StartIndex + IncludeMarkLength + 1;
+      if StartIndex+3 <= Length-2 then (* excluding the comment-end '*/' *) 
begin
+        if Value[StartIndex] = ' ' then begin
+          while (StartIndex <= Length-2) and (Value[StartIndex] = ' ') do 
+            StartIndex := StartIndex + 1;           (* Skip the spaces *)
+          if Value[StartIndex] = '''' then begin
+            Index := StartIndex+1;
+            while (Index <= Length-2) and (Value[Index] <> '''') do begin
+              Info.Value[Index-StartIndex] := Value[Index];
+              Index := Index + 1;
+            end;
+            if Value[Index] = '''' then begin
+              Info.Length := Index - StartIndex - 1;
+              Index := Index + 1;
+              while (Index <= Length-2) and (Value[Index] = ' ') do 
+                Index := Index + 1;           (* Skip the ending spaces *)
+              if Index = Length-1 then
+                InfoType := IncludeClause;  (* => a correct include directive 
*)
+            end;
+          end;
+        end;
+      end;
+    end
+    else if InfoType = SubstrShortHand then
+      Info := chartonmstr('S')
+    else if InfoType = GRRef then begin
+      if (Value[Length] = '/') and (Value[Length - 1] = '*') then
+        Info := SubString(Comment, StartIndex, Length - StartIndex + 1 - 2)
+      else (* truncated *)
+        Info := SubString(Comment, StartIndex, Length - StartIndex + 1);
+    end;
+  end;
+end;    (* ExtractCommentInfo *) 
+
+(*---------------------------------------------------------------------------*)
+(* inserts a node in a binary tree sorted after value. If node 
+   is in tree Found returns true.  *)
+
+procedure INSERT_TREE_NODE;(*( 
+            New_node: BinNodePointer;  node to insert 
+            var Node: BinNodePointer;  tree to insert in 
+            var FoundNode : BinNodePointer; 
+            var Found : boolean;       return status of operation 
+            var Higher: boolean);   returned true if the subtree height has 
+                                       increased *)
+
+var
+
+  Node_1,                    (* helpvariable to rotate nodes *)
+  Node_2: BinNodePointer; (* helpvariable to rotate nodes *)
+
+begin
+
+  if Node = nil then
+  begin  (* Value is not in tree, insert *)
+    Node:= New_node;
+    FoundNode := Node;
+    Higher:=  true;
+  end
+  else
+
+       (* New_node^.Value < Node^.Value *)
+    if NameStringLess(New_node^.NameP^, Node^.NameP^) then
+    begin  (* New Value is lower than actual Value *)
+      INSERT_TREE_NODE( New_node, Node^.left, FoundNode, Found, Higher);
+
+      if Higher then  (* left bransch has grown higher *)
+      case Node^.bal of
+
+        1: begin
+             Node^.bal:= 0;
+             Higher:= false;
+           end;
+
+        0: begin
+             Node^.bal:= -1;
+           end;
+
+       -1: begin  (* rebalance *)
+             Node_1:= Node^.left;
+
+             if Node_1^.bal = -1 then
+             begin  (* single LL rotation *)
+               Node^.left:= Node_1^.right;
+               Node_1^.right:= Node;
+               Node^.bal:= 0;
+               Node:= Node_1;
+             end
+             else
+
+             begin  (* double LR rotation *)
+               Node_2:= Node_1^.right;
+               Node_1^.right:= Node_2^.left;
+               Node_2^.left:= Node_1;
+               Node^.left:= Node_2^.right;
+               Node_2^.right:= Node;
+
+               if Node_2^.bal = -1 then
+                 Node^.bal:= 1
+               else
+                 Node^.bal:= 0;
+
+               if Node_2^.bal = 1 then
+                 Node_1^.bal:= -1
+               else
+                 Node_1^.bal:= 0;
+               Node:= Node_2;
+             end;
+             Node^.bal:= 0;
+             Higher:= false;
+           end;
+      end; (* end case Node^.bal of *)
+    end
+    else
+
+         (* New_node^.value > Node^.value *)
+      if NameStringLess(Node^.NameP^, New_Node^.NameP^) then
+      begin  (* New value is higher than actual value *)
+        INSERT_TREE_NODE( New_node, Node^.right, FoundNode, Found, Higher);
+
+        if Higher then  (* Right bransch has grown higher *)
+        case Node^.bal of
+
+         -1: begin
+               Node^.bal:= 0;
+               Higher:= false;
+             end;
+
+          0: begin
+               Node^.bal:= 1;
+             end;
+
+          1: begin  (* Rebalance *)
+               Node_1:= Node^.right;
+
+               if Node_1^.bal = 1 then
+               begin  (* single RR rotation *)
+                 Node^.right:= Node_1^.left;
+                 Node_1^.left:= Node;
+                 Node^.bal:= 0;
+                 Node:= Node_1;
+               end
+               else
+               begin  (* double RL rotation *)
+                 Node_2:= Node_1^.left;
+                 Node_1^.left:= Node_2^.right;
+                 Node_2^.right:= Node_1;
+                 Node^.right:= Node_2^.left;
+                 Node_2^.left:= Node;
+
+                 if Node_2^.bal = 1 then
+                   Node^.bal:= -1
+                 else
+                   Node^.bal:= 0;
+
+                 if Node_2^.bal = -1 then
+                   Node_1^.bal:= 1
+                 else
+                   Node_1^.bal:= 0;
+                 Node:= Node_2;
+               end;
+               Node^.bal:= 0;
+               Higher:= false;
+             end;
+        end; (* end case Node^.bal of *)
+      end
+      else
+      begin  (* New value is equal to actual value *)
+        Found := true;
+        FoundNode := Node;
+        Higher:= false;
+      end;
+end;  (* end INSERT_TREE_NODE *)
+
+function GetNameList; (* : BinNodePointer;*)
+begin
+  GetNameList := NameList;
+end;
+
+procedure DisposeANameList( 
+  var NodeP : BinNodePointer);
+begin (* DisposeANameList *)
+  if NodeP <> nil then begin
+    DisposeANameList(NodeP^.Left);
+    DisposeANameList(NodeP^.Right);
+    NodeP^.Left := AvailNameList;
+    NodeP^.Right := nil;
+    AvailNameList := NodeP;
+    NodeP := nil;
+  end;
+end; (* DisposeANameList *)
+
+procedure DisposeNameList;
+begin
+  DisposeANameList(NameList);
+end;
+
+function GetNewNameListNode;(*(
+  var Name  : NameString) : BinNodePointer;*)
+var
+  NodeP : BinNodePointer;
+begin (* GetNewNameListNode *)
+  if AvailNameList = nil then begin
+    new(NodeP);
+    with NodeP^ do begin
+      Left := nil;
+      Right := nil;
+      Bal := 0;
+      new(NameP);
+      Namep^ := Name;
+    end;
+  end
+  else begin
+    NodeP := AvailNameList;
+    AvailNameList := NodeP^.Left;
+    with NodeP^ do begin
+      Left := nil;
+      Bal := 0;
+      Namep^ := Name;
+    end;
+  end;
+  GetNewNameListNode := NodeP;
+end; (* GetNewNameListNode *)
+
+(*---------------------------------------------------------------------------*)
+
+function insertname;(*(
+      Name  : NameString;
+  var Found : boolean) : NameStringPointer;*)
+var
+  Higher : boolean;
+  NodeP  : BinNodePointer;
+  FoundNode : BinNodePointer;
+begin (* insertname *)
+  NodeP := GetNewNameListNode(Name);
+  Found := false;
+  INSERT_TREE_NODE(NodeP, NameList, FoundNode, Found, Higher);
+  insertname := FoundNode^.NameP;
+  if Found then
+    DisposeANameList(NodeP);
+end; (* insertname *)
+
+procedure InitNameList;
+begin
+  NameList := nil;
+  AvailNameList := nil;
+end;
+
+(********************************************************************) 
+(*                      NameString - Dynamic Memory Allocation      *) 
+(********************************************************************) 
+
+procedure InitNameStringPool;
+begin
+  GlobalNSPool.Avail := nil;
+  GlobalNSPool.Empty := nil;
+end;
+
+procedure NewNameString; (* (var NSP: NameStringPointer );*)
+(*var Temp: NSPoolP;*)
+begin
+(*
+  if GlobalNSPool.Avail=nil then
+    new( NSP )
+  else begin
+    Temp := GlobalNSPool.Avail;
+    GlobalNSPool.Avail := Temp^.Next;
+    Temp^.Next := GlobalNSPool.Empty;
+    GlobalNSPool.Empty := Temp;
+    NSP := Temp^.Data;
+  end;
+*)
+  new(NSP);
+  NSP^.Length := 0;
+end;
+
+procedure ReleaseNameString; (* (var NSP: NameStringPointer );*)
+(*var Temp: NSPoolP;*)
+begin
+  if NSP <> nil then begin
+(*
+    if GlobalNSPool.Empty=nil then begin
+      new(Temp);
+      Temp^.Next := GlobalNSPool.Avail;
+      GlobalNSPool.Avail := Temp;
+    end
+    else begin
+      Temp := GlobalNSPool.Empty;
+      GlobalNSPool.Empty := Temp^.Next;
+      Temp^.Next := GlobalNSPool.Avail;
+      GlobalNSPool.Avail := Temp;
+    end;
+    Temp^.Data := NSP;
+*)
+    dispose(NSP);
+    NSP := nil;
+  end;
+end;
+
+procedure SDTrefStringToRec (* (
+  var S : SDTrefString;
+  var R : SDTrefRec;
+  var Error : integer) *) ;
+
+(* Converts SDTrefString S to a record R (SDTrefRec). If an error is
+   detected Error is on exit the position in S where the error where
+   detected. If correct Error is 0. *)
+
+label 99;
+var
+  Len : integer;
+  ErrorFound, EndFound : Boolean;
+
+procedure SDTrefSkipSpaces;
+var Found : Boolean;
+begin
+  Found := false;
+  while not Found and (Len <= S.Length) do
+    if (S.Value[Len] = ' ') or (S.Value[Len] = chr(9)) then
+      Len := Len+1
+    else
+      Found := true;
+end;
+
+function SDTrefIsEnd : Boolean;
+begin
+  SDTrefIsEnd := false;
+  if S.Value[Len] = ')' then
+  begin
+    Len := Len+1;
+    SDTrefSkipSpaces;
+    if Len > S.Length then
+      SDTrefIsEnd := true;
+  end;
+end;
+
+function SDTrefGetInteger : integer;
+var
+  Temp : NameString;
+  Found : Boolean;
+begin
+  Temp.Length := 0;
+  Found := false;
+  while not Found and (Temp.Length <= NameStringLength) and
+                      (Len <= S.Length) do
+    if S.Value[Len] in ['0'..'9'] then
+    begin
+      Temp.Length := Temp.Length+1;
+      Temp.Value[Temp.Length] := S.Value[Len];
+      Len := Len+1;
+    end
+    else
+      Found := true;
+  if Temp.Length > 0 then
+    SDTrefGetInteger := NmStrToInteger(Temp)
+  else
+    SDTrefGetInteger := SDTrefUndefInt;
+end;
+
+begin
+  ErrorFound := true;
+  R.IsSDTGR := true;
+  R.FileName.Length := 0;
+  R.PageName.Length := 0;
+  R.ObjectId := SDTrefUndefInt;
+  R.XCoord := SDTrefUndefInt;
+  R.YCoord := SDTrefUndefInt;
+  R.LineNumber := SDTrefUndefInt;
+  R.Column := SDTrefUndefInt;
+
+  Len := 1;
+  if S.Length = 0 then goto 99;
+  if S.Value[1] <> '#' then goto 99;
+  Len := 2;
+  if S.Value[2] <> 'S' then goto 99;
+  Len := 3;
+  if S.Value[3] <> 'D' then goto 99;
+  Len := 4;
+  if S.Value[4] <> 'T' then goto 99;
+  Len := 5;
+  if S.Value[5] <> 'R' then goto 99;
+  Len := 6;
+  if S.Value[6] <> 'E' then goto 99;
+  Len := 7;
+  if S.Value[7] <> 'F' then goto 99;
+  Len := 8;
+  if S.Value[8] <> '(' then goto 99;
+  Len := 9;
+
+  if S.Value[9] = 'S' then
+  begin
+    Len := 10;
+    if S.Value[10] <> 'D' then goto 99;
+    Len := 11;
+    if S.Value[11] <> 'L' then goto 99;
+    Len := 12; SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* First comma *)
+    if S.Value[Len] <> ',' then goto 99;
+    Len := Len+1; SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* FileName *)
+    EndFound := false;
+    while not EndFound and (Len <= S.Length) do
+      if S.Value[Len] in [',', ')', '(', ' ', chr(9)] then
+        EndFound := true
+      else
+      begin
+        R.FileName.Length := R.FileName.Length+1;
+        if R.FileName.Length > S.Length then goto 99;
+        R.FileName.Value[R.FileName.Length] := S.Value[Len];
+        Len := Len+1;
+        if Len > S.Length then goto 99;
+      end;
+    SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* PageName *)
+    if S.Value[Len] = '(' then
+    begin
+      Len := Len+1; SDTrefSkipSpaces;
+      if Len > S.Length then goto 99;
+      EndFound := false;
+      while not EndFound and (Len <= S.Length) do
+        if S.Value[Len] in [',', ')', '(', ' ', chr(9)] then
+          EndFound := true
+        else
+        begin
+          R.PageName.Length := R.PageName.Length+1;
+          if R.PageName.Length > NameStringLength then goto 99;
+          R.PageName.Value[R.PageName.Length] := S.Value[Len];
+          Len := Len+1;
+          if Len > S.Length then goto 99;
+        end;
+      SDTrefSkipSpaces;
+      if Len > S.Length then goto 99;
+      if S.Value[Len] <> ')' then goto 99;
+      Len := Len+1; SDTrefSkipSpaces;
+      if Len > S.Length then goto 99;
+    end;
+    if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+    if S.Value[Len] <> ',' then goto 99;
+    Len := Len+1; SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* ObjectId *)
+    R.ObjectId := SDTrefGetInteger;
+    SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* Object_Coordinates *)
+    if S.Value[Len] = '(' then
+    begin
+      Len := Len+1; SDTrefSkipSpaces;
+      if Len > S.Length then goto 99;
+      R.XCoord := SDTrefGetInteger;
+      SDTrefSkipSpaces;
+      if Len > S.Length then goto 99;
+      if S.Value[Len] <> ',' then goto 99;
+      Len := Len+1; SDTrefSkipSpaces;
+      if Len > S.Length then goto 99;
+      R.YCoord := SDTrefGetInteger;
+      SDTrefSkipSpaces;
+      if Len > S.Length then goto 99;
+      if S.Value[Len] <> ')' then goto 99;
+      Len := Len+1; SDTrefSkipSpaces;
+      if Len > S.Length then goto 99;
+    end;
+    if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+    if S.Value[Len] <> ',' then goto 99;
+    Len := Len+1; SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* LineNumber *)
+    R.LineNumber := SDTrefGetInteger;
+    SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+    if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+    if S.Value[Len] <> ',' then goto 99;
+    Len := Len+1; SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* Column *)
+    R.Column := SDTrefGetInteger;
+    SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+    if SDTrefIsEnd then ErrorFound := false;
+  end
+
+  else if S.Value[9] = 'T' then
+  begin
+    Len := 10;
+    R.IsSDTGR := false;
+    if S.Value[10] <> 'E' then goto 99;
+    Len := 11; 
+    if S.Value[11] <> 'X' then goto 99;
+    Len := 12;
+    if S.Value[12] <> 'T' then goto 99;
+    Len := 13; SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* First comma *)
+    if S.Value[Len] <> ',' then goto 99;
+    Len := Len+1; SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* FileName *)
+    EndFound := false;
+    while not EndFound and (Len <= S.Length) do
+      if S.Value[Len] in [',', ')', '(', ' ', chr(9)] then
+        EndFound := true
+      else
+      begin
+        R.FileName.Length := R.FileName.Length+1;
+        if R.FileName.Length > S.Length then goto 99;
+        R.FileName.Value[R.FileName.Length] := S.Value[Len];
+        Len := Len+1;
+        if Len > S.Length then goto 99;
+      end;
+    SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+    if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+    if S.Value[Len] <> ',' then goto 99;
+    Len := Len+1; SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* LineNumber *)
+    R.LineNumber := SDTrefGetInteger;
+    SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+    if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+    if S.Value[Len] <> ',' then goto 99;
+    Len := Len+1; SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+
+    (* Column *)
+    R.Column := SDTrefGetInteger;
+    SDTrefSkipSpaces;
+    if Len > S.Length then goto 99;
+    if SDTrefIsEnd then ErrorFound := false;
+  end;
+
+99:
+  if ErrorFound then
+    Error := Len
+  else
+    Error := 0;
+end;
+
+
+procedure SDTrefRecToString  (* (
+  var R : SDTrefRec;
+  var S : SDTrefString) *) ;
+
+(* Converts SDTrefRec R to a string S (SDTrefString). If an error is
+   detected (string is not long enough) S.Length becomes 0 on exit *)
+
+label 99;
+var
+  Len, I : integer;
+  Temp : NameString;
+begin
+  S.Value[1] := '#';
+  S.Value[2] := 'S';
+  S.Value[3] := 'D';
+  S.Value[4] := 'T';
+  S.Value[5] := 'R';
+  S.Value[6] := 'E';
+  S.Value[7] := 'F';
+  S.Value[8] := '(';
+  S.Length := 8;
+  if R.IsSDTGR then
+  begin
+    Temp.Value[1] := 'S';
+    Temp.Value[2] := 'D';
+    Temp.Value[3] := 'L';
+    Temp.Value[4] := ',';
+    Temp.Length := 4;
+    S := Concatenatenamestrings(S, Temp);
+    Len := S.Length;
+    (* FileName *)
+    for I := 1 to R.FileName.Length do
+    begin
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := R.FileName.Value[I];
+    end;
+
+    (* PageName *)
+    if R.PageName.Length > 0 then
+    begin
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := '(';
+      for I := 1 to R.PageName.Length do
+      begin
+        Len := Len+1;
+        if Len > SDTrefStringLength then goto 99;
+        S.Value[Len] := R.PageName.Value[I];
+      end;
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := ')';
+    end;
+
+    (* ObjectId *)
+    if R.ObjectId <> SDTrefUndefInt then
+    begin
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := ',';
+      Temp := integertonmstr(R.ObjectId);
+      for I := 1 to Temp.Length do
+      begin
+        Len := Len+1;
+        if Len > SDTrefStringLength then goto 99;
+        S.Value[Len] := Temp.Value[I];
+      end;
+    end;
+
+    (* Object_Coordinates *)
+    if R.XCoord <> SDTrefUndefInt then
+    begin
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := '(';
+      Temp := integertonmstr(R.XCoord);
+      for I := 1 to Temp.Length do
+      begin
+        Len := Len+1;
+        if Len > SDTrefStringLength then goto 99;
+        S.Value[Len] := Temp.Value[I];
+      end;
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := ',';
+      Temp := integertonmstr(R.YCoord);
+      for I := 1 to Temp.Length do
+      begin
+        Len := Len+1;
+        if Len > SDTrefStringLength then goto 99;
+        S.Value[Len] := Temp.Value[I];
+      end;
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := ')';
+    end;
+
+    (* LineNumber *)
+    if R.LineNumber <> SDTrefUndefInt then
+    begin
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := ',';
+      Temp := integertonmstr(R.LineNumber);
+      for I := 1 to Temp.Length do
+      begin
+        Len := Len+1;
+        if Len > SDTrefStringLength then goto 99;
+        S.Value[Len] := Temp.Value[I];
+      end;
+    end;
+
+    (* Column *)
+    if R.Column <> SDTrefUndefInt then
+    begin
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := ',';
+      Temp := integertonmstr(R.Column);
+      for I := 1 to Temp.Length do
+      begin
+        Len := Len+1;
+        if Len > SDTrefStringLength then goto 99;
+        S.Value[Len] := Temp.Value[I];
+      end;
+    end;
+
+    Len := Len+1;
+    if Len > SDTrefStringLength then goto 99;
+    S.Value[Len] := ')';
+  end
+
+  else  (* if PR *)
+
+  begin
+    Temp.Value[1] := 'T';
+    Temp.Value[2] := 'E';
+    Temp.Value[3] := 'X';
+    Temp.Value[4] := 'T';
+    Temp.Value[5] := ',';
+    Temp.Length := 5;
+    S := Concatenatenamestrings(S, Temp);
+    Len := S.Length;
+    (* FileName *)
+    for I := 1 to R.FileName.Length do
+    begin
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := R.FileName.Value[I];
+    end;
+
+    (* LineNumber *)
+    if R.LineNumber <> SDTrefUndefInt then
+    begin
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := ',';
+      Temp := integertonmstr(R.LineNumber);
+      for I := 1 to Temp.Length do
+      begin
+        Len := Len+1;
+        if Len > SDTrefStringLength then goto 99;
+        S.Value[Len] := Temp.Value[I];
+      end;
+    end;
+
+    (* Column *)
+    if R.Column <> SDTrefUndefInt then
+    begin
+      Len := Len+1;
+      if Len > SDTrefStringLength then goto 99;
+      S.Value[Len] := ',';
+      Temp := integertonmstr(R.Column);
+      for I := 1 to Temp.Length do
+      begin
+        Len := Len+1;
+        if Len > SDTrefStringLength then goto 99;
+        S.Value[Len] := Temp.Value[I];
+      end;
+    end;
+
+    Len := Len+1;
+    if Len > SDTrefStringLength then goto 99;
+    S.Value[Len] := ')';
+  end;
+
+99:
+  if Len > SDTrefStringLength then
+    S.Length := 0
+  else
+    S.Length := Len;
+end;
+
+function NmStrToErrStr;(*(
+  NmStr : NameString) : ErrorString;*)
+var
+  ErrStr : ErrorString;
+  i : integer;
+begin
+  for i := 1 to NmStr.Length do
+    ErrStr.Value[i] := NmStr.Value[i];
+  ErrStr.Length := NmStr.Length;
+  NmStrToErrStr := ErrStr;
+end;
+
+function ErrStrToNmStr;(*(
+  ErrStr : ErrorString) : NameString;*)
+var
+  NmStr : NameString;
+  i : integer;
+  n : integer;
+begin
+  if ErrStr.Length < NameStringLength then
+    n := ErrStr.Length
+  else
+    n := NameStringLength;
+  for i := 1 to n do
+    NmStr.Value[i] := ErrStr.Value[i];
+  NmStr.Length := n;
+  ErrStrToNmStr := NmStr;
+end;
+
+(*------------------------------------------------------------------*)
+(*                   GetTextRef                                     *)
+(*------------------------------------------------------------------*)
+function GetTextRef;(*(
+  FNm : NameString;
+  Ln : integer;
+  Col : integer) : NameString;*)
+var
+  Ref : SDTrefRec;
+  S : NameString;
+begin(* GetTextRef *)
+  Ref.IsSDTGR := false;
+  Ref.FileName := FNm;
+  Ref.LineNumber := Ln;
+  Ref.Column := Col;
+  SDTrefRecToString(Ref, S);
+  GetTextRef := S;
+end; (* GetTextRef *)
+
+ (* module COMMON *)
diff --git a/test/etags/perl-src/htlmify-cystic 
b/test/etags/perl-src/htlmify-cystic
new file mode 100644
index 0000000..de150a7
--- /dev/null
+++ b/test/etags/perl-src/htlmify-cystic
@@ -0,0 +1,382 @@
+#! /uns/bin/perl -w
+
+# htmlify-cystic-l-faq:  turn text version of cystic-l faq into html
+# run like this:   htmlify-cystic-l-faq < cystic-l-faq-all
+
+# Ron Trueworthy should put the date on the FAQ.
+
+use English;
+use Carp;
+use strict;
+
+my @section_name;
+my @appendix_name;
+
+my @section_toc;
+my @appendix_toc;
+
+my $new_tag = "[NEW]";
+
+if (! -d "faq")
+{ die "Can't find faq directory"; }
+
+# Initially undefined
+my $appendix;
+my $section;
+my $subsection;
+my $subsubsection;
+
+my $this_file_toc = "";
+my %file_tocs;
+
+my @output_files = ();
+my $file_index = 0;
+
+my $output_file;
+
+my $line;
+while (defined($line = <>))
+{
+  ### Message headers
+  if ($line =~ /^From /)
+    { while ($line ne "\n")
+       { $line = <>; } }
+
+  if ($line =~ /^See PART ONE of this FAQ for/)
+    { while (defined($line = <>) && ($line ne "\n"))
+       { }
+      next; }
+
+  if ($line =~ /^\s*[-+]+$/)
+    { next; }
+
+  ### File headers
+  if ($line =~ /^\s*CYSTIC-L Frequently Asked Questions - PART (.*)\n$/)
+    { # print "part $1\n";
+      if ($1 ne "ONE")
+       { next; }
+      if ($output_file)
+       { die "output_file shouldn't have been set yet: $output_file"; }
+      $output_file = "faq/index.html";
+      open(OUTPUT, ">$output_file") || die "Couldn't open $output_file";
+      select OUTPUT;
+      print "<HEAD>
+<TITLE>CYSTIC-L FAQ Table of Contents
+</TITLE>
+</HEAD>
+<BODY>
+<H1>CYSTIC-L Frequently Asked Questions</H1>
+<h2>Knowledge Is Power</h2>
+";
+      next; }
+
+  if ($line =~ /^\s*~ Knowledge Is Power ~$/)
+    { next; }
+
+  ### Table of contents
+  if ($line =~ /^\s*~ FAQ Table of Contents ~$/)
+      { read_toc();
+       print "<hr><a href=\"../\">Info-Zone</a> <a 
href=\"../../\">CF-WEB</a>\n";
+       close(OUTPUT);
+       next;
+      }
+
+  if ($line =~ /^PART /)
+    { next; }
+
+  if ($line =~ s/^>?APPENDIX ([A-Z])\.\s*//)
+    { if (!defined($appendix))
+       { if ($1 ne "A")
+           { die "First appendix is $1"; } }
+      elsif ($1 ne chr(ord($appendix)+1))
+       { die "Appendix $1 follows Appendix $appendix"; }
+
+      file_end();
+      close(OUTPUT);
+      $appendix = $1;
+      $section = undef;
+      $subsection = undef;
+      $subsubsection = undef;
+      $output_file = section_url_base();
+      open(OUTPUT, "> faq/$output_file") || die "Can't open faq/$output_file";
+      select OUTPUT;
+
+      chomp($line);
+      print "<title>$line</title>\n<h1>$line</h1>\n";
+      if (defined($file_tocs{$output_file}) && $file_tocs{$output_file})
+       { print "Contents: $file_tocs{$output_file}\n"; }
+      next; }
+
+  if (($line =~ /^>?([0-9]+)\.\s+/) && (!defined($section) || ($1 == 
$section+1)))
+    { $line =~ s/^>?([0-9]+)\.\s+//;
+      if (!defined($appendix))
+       { # should do some more here
+         if (defined($section))
+           { file_end(); }
+         close(OUTPUT); }
+      $section = $1;
+      $subsection = undef;
+      $subsubsection = undef;
+      $output_file = section_url_base();
+      if (!defined($appendix))
+       { open(OUTPUT, "> faq/$output_file") || die "Can't open 
faq/$output_file";
+         select OUTPUT;
+         chomp($line);
+         print "<title>$line</title>\n<h1>$line</h1>\n";
+         if (defined($file_tocs{$output_file}) && $file_tocs{$output_file})
+           { print "Contents: $file_tocs{$output_file}\n"; }
+         next; }
+    }
+
+  if ($line =~ s/^>?o\s+//)
+    { $line =~ s/^>//;         # sometimes the > follows the itemization
+      if (!defined($subsection))
+       { $subsection = 1; }
+      else
+       { $subsection++; }
+      $subsubsection = undef;
+      print "<h2>", section_name($line), "</h2>\n";
+      next; }
+
+  if ($line =~ s/^>?-\s+//)
+    { $line =~ s/^>//;         # sometimes the > follows the itemization
+      if (!defined($subsubsection))
+       { $subsubsection = 1; }
+      else
+       { $subsubsection++; }
+      print "<h3>", section_name($line), "</h3>\n";
+      next; }
+
+  ### A paragraph of ordinary text
+  if ($line !~ /^\s*$/)
+    { print "<p>$line";
+      while (defined($line = <>) && ($line ne "\n"))
+       { print $line; }
+      print "</p>\n";
+    }
+
+}
+file_end();
+
+my $subsection_marker;
+
+my $new;
+
+sub read_toc ()
+{ # These variables are initially undefined
+  if (defined($appendix)
+      || defined($section)
+      || defined($subsection)
+      || defined($subsubsection))
+    { die "some value should have been undefined when calling read_toc: 
`$appendix' `$section' `$subsection' `$subsubsection'"; }
+
+  while (defined($line = <>) && $line)
+    { if ($line =~ /^\s*$/)
+       { next; }
+      if ($line =~ /^\s*\((Portions updated since.*)>\)\n/)
+       { print "$1$new_tag<p>\n";
+         next; }
+      if ($line =~ /^PART (.*)$/)
+       #       { if ($MATCH eq "ONE")
+       #           { print ... }
+       { next; }
+      if ($line eq "APPENDICES\n")
+       { next; }
+      if ($line =~ /^\s*INDEX/)
+       { next; }
+
+      if ($line =~ /^\s*[-+]+$/)
+       { finish_appendices();
+         if (defined($appendix)
+             || defined($section)
+             || defined($subsection)
+             || defined($subsubsection))
+           { die "some value should have been undefined when exiting read_toc: 
`$appendix' `$section' `$subsection' `$subsubsection'"; }
+         return; }
+
+      $new = ($line =~ s/>//);
+
+      # # Not sure if this is the right place to do this.
+      # if (($line !~ /^\s*([-o]|[0-9A-Z]+\.|APPENDIX [A-Z]\.)/)
+      #          && ($line !~ /[ .]*[0-9]+$/))
+      #        { die "What line? $line"; }
+      while (!($line =~ s/[ .]*[0-9]+$//))
+       { $line .= <>; }
+      chomp($line);
+
+      if ($line =~ s/^\s*APPENDIX ([A-Z])\.\s*//)
+       { finish_sections();
+         if (!defined($appendix))
+           { if ($1 ne "A")
+               { die "First appendix is $1"; }
+             print "Appendices\n";
+             print "<ol type=\"A\" start=\"$1\">\n"; }
+         elsif ($1 ne chr(ord($appendix)+1))
+           { die "Appendix $1 follows Appendix $appendix"; }
+         $appendix = $1;
+         $appendix_name[ord($appendix)-ord('A')+1] = $line;
+         my $entry = toc_line($line);
+         print $entry;
+         push(@output_files,section_url_base());
+         next; }
+
+      if ($line =~ s/^\s*([0-9]+)\.\s*//)
+       { finish_subsections();
+         if (!defined($section))
+           { my $entry = "<ol start=$1>\n";
+             print $entry;
+             if (defined($appendix))
+               { $this_file_toc .= $entry; } }
+         elsif ($1 != $section+1)
+           { die "Section $1 follows section $section"; }
+         $section = $1;
+         $section_name[$section] = $line;
+         my $entry = "  " . toc_line($line);
+         print $entry;
+         if (defined($appendix))
+           { $this_file_toc .= $entry; }
+         else
+           { push(@output_files,section_url_base()); }
+         next; }
+
+      if ($line =~ s/^\s*o\s+//)
+       { if (!defined($subsection))
+           { $subsection = 1;
+             my $entry = "  <ul>\n";
+             print $entry;
+             $this_file_toc .= $entry;
+             $subsection_marker = "ul"; }
+         else
+           { finish_subsubsections();
+             $subsection++; }
+         my $entry = "    " . toc_line($line);
+         print $entry;
+         $this_file_toc .= $entry;
+         next; }
+
+      if ($line =~ s/^\s*([A-Z])\.\s+//)
+       { finish_subsubsections();
+         if (!defined($subsection))
+           { my $entry = "  <ol type=\"A\" start=\"$1\">\n";
+             print $entry;
+             $this_file_toc .= $entry;
+             $subsection_marker = "ol"; }
+         else
+           { if ($1 ne chr(ord($subsection)+1))
+               { die "Subsection $1 follows subsection $subsection"; } }
+         $subsection = $1;
+         my $entry = "      " . toc_line($line);
+         print $entry;
+         $this_file_toc .= $entry;
+         next; }
+
+      if ($line =~ s/^\s*-\s+//)
+       { if (!defined($subsubsection))
+           { $subsubsection = 1;
+             my $entry = "    <ul>\n";
+             print $entry;
+             $this_file_toc .= $entry; }
+         else
+           { $subsubsection++; }
+         my $entry = "        " . toc_line($line);
+         print $entry;
+         $this_file_toc .= $entry;
+         next; }
+
+      # Itemized line without leading "o" (grrr).
+       if (!defined($subsection))
+         { my $entry = "  <ul>\n";
+           print $entry;
+           $this_file_toc .= $entry;
+           $subsection = 1;
+           $subsection_marker = "ul"; }
+       else
+         { $subsection++; }
+       $line =~ s/^\s*//;
+      my $entry = "      " . toc_line($line);
+      $this_file_toc .= $entry;
+      print $entry;
+    }
+}
+
+sub finish_subsubsections ()
+{ if (defined($subsubsection))
+    { my $entry = "      </ul>\n";
+      print $entry;
+      $this_file_toc .= $entry;
+      $subsubsection = undef; } }
+
+sub finish_subsections ()
+{ finish_subsubsections();
+  if (defined($subsection))
+    { my $entry = "    </$subsection_marker>\n";
+      print $entry;
+      $this_file_toc .= $entry;
+      $subsection = undef;
+      if (!defined($appendix))
+       { $file_tocs{section_url_base()} = $this_file_toc;
+         $this_file_toc = ""; } } }
+
+sub finish_sections ()
+{ finish_subsections();
+  if (defined($section))
+    { my $entry = "  </ol>\n";
+      print $entry;
+      if (defined($appendix))
+       { $this_file_toc .= $entry;
+         $file_tocs{section_url_base()} = $this_file_toc;
+         $this_file_toc = ""; }
+      $section = undef; } }
+
+sub finish_appendices ()
+{ finish_sections();
+  if (defined($appendix))
+    { print "</ol>\n";
+      $appendix = undef; } }
+
+sub section_url_base ()
+{ if (!defined($appendix) && !defined($section))
+    { die "undefined appendix and section"; }
+  return (defined($appendix) ? "app-$appendix.html" : "sec-$section.html"); }
+
+sub section_url_name ()
+{ my $sans_subsubsection
+    = (defined($appendix)
+       ? (defined($section)
+         ? "sec-$section" . (defined($subsection)
+                               ? "-$subsection" : "")
+         : "")
+       : (defined($subsection) ? "ssec-$subsection" : ""));
+  if (defined($subsubsection))
+    { $sans_subsubsection . "-$subsubsection"; }
+  else
+    { $sans_subsubsection; } }
+
+sub section_url ()
+{ my $base = section_url_base();
+  my $name = section_url_name();
+  if ($name)
+    { return $base . "\#" . $name; }
+  else
+    { return $base; } }
+
+
+sub section_href ($)
+{ my ($text) = @_;
+  return "<a href=\"" . section_url() . "\">$text</a>"; }
+
+sub section_name ($)
+{ my ($text) = @_;
+  return "<a name=\"" . section_url_name() . "\">$text</a>"; }
+
+sub toc_line ($)
+{ return " <LI>" . section_href($line) . ($new ? " $new_tag" : "") . "\n"; }
+
+sub file_end ()
+{ print "\n\n<hr>\n"
+    . (($file_index < $#output_files)
+       ? "<a href=\"$output_files[$file_index+1]\">Next</a> " : "")
+      . (($file_index > 0)
+        ? "<a href=\"$output_files[$file_index-1]\">Previous</a> " : "")
+       . "<a href=\"./\">FAQ</a> <a href=\"../\">Info-Zone</a> <a 
href=\"../../\">CF-WEB</a>\n";
+  $file_index++; }
diff --git a/test/etags/perl-src/kai-test.pl b/test/etags/perl-src/kai-test.pl
new file mode 100644
index 0000000..51b6672
--- /dev/null
+++ b/test/etags/perl-src/kai-test.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+sub f1 {
+        print "f1\n";
+}
+
+sub main::f2 {
+        print "f2\n";
+}
+
+package Foo;
+
+sub f3 {
+        print "f3\n";
+}
+
+sub Bar::f4 {
+        print "f4\n";
+}
+
+package Bar;
+
+sub f5 {
+        print "f5\n";
+}
+
+package Foo::Bar;
+
+sub f6 {
+        print "f6\n";
+}
+
+package main;
+
+sub f7 {
+        print "f7\n";
+}
+
+exit 0;
+# end of Perl code
diff --git a/test/etags/perl-src/yagrip.pl b/test/etags/perl-src/yagrip.pl
new file mode 100644
index 0000000..be9f09c
--- /dev/null
+++ b/test/etags/perl-src/yagrip.pl
@@ -0,0 +1,54 @@
+#Yet Another Getopt Routine In Perl
+# address@hidden, 89/11/1
+#usage:
+#&getopt("f:bar") ||
+#      die &usage("script","f:bar","oo","[files ...]");
+#
+sub getopt {
+       local($_,$flag,$opt,$f,$r,@temp) = @_;
+       @temp = split(/(.):/);
+       while ($#temp >= $[) {
+               $flag .= shift(@temp);
+               $opt .= shift(@temp);
+       }
+       while ($_ = $ARGV[0], /^-(.)(.*)/ && shift(@ARGV)) {
+               ($f,$r) = ($1,$2);
+               last if $f eq '-';
+               if (index($flag,$f) >= $[) {
+                       eval "\$opt_$f++;";
+                       $r =~ /^(.)(.*)/,redo if $r ne '';
+               }elsif (index($opt,$f) >= $[) {
+                       $r = $r eq '' ? shift(@ARGV) : $r;
+                       eval "\$opt_$f = \$r;";
+               }else{
+                       print STDERR "Unrecognized switch \"-$f\".\n";
+                       return 0;
+               }
+       }
+       return 1;
+}
+
+#usage: usage:
+# &usage(progname,arglist,@names,@last);
+#ex:
+# &usage("script","f:bar","oo","[file ...]");
+#would return
+# "usage: script [-f oo] [-bar] [file ...]"
+#
+sub usage {
+       local($prog,$_,@list) = @_;
+       local($string,$flag,@string,@temp,@last) = ();
+       @temp = split(/(.):/);
+       push(@string,"usage:",$prog);
+       while ($#temp >= $[) {
+               if (($flag = shift(@temp)) ne '') {
+                       push(@string,"[-$flag]");
+               }
+               if (($flag = shift(@temp)) ne '') {
+                       push(@string,sprintf("[-%s %s]",$flag,shift(@list)));
+               }
+       }
+       push(@string,@list) if $#list >= $[;
+       return join(' ',@string) . "\n";
+}
+1;
diff --git a/test/etags/php-src/lce_functions.php 
b/test/etags/php-src/lce_functions.php
new file mode 100644
index 0000000..6573813
--- /dev/null
+++ b/test/etags/php-src/lce_functions.php
@@ -0,0 +1,699 @@
+<?php
+if(!defined("LCE_FUNCTIONS"))
+{
+  define("LCE_FUNCTIONS", 1);
+  include("base.php");
+  include("lce_config.php");
+
+  // Unknown line class
+  define("LCE_UNKNOWN", 0);
+  // pure whitespace
+  define("LCE_WS", 1);
+  // a unqualified comment
+  define("LCE_COMMENT", 2);
+  // a user/translator comment
+  define("LCE_COMMENT_USER", 3);
+  // a tool-generated comment
+  define("LCE_COMMENT_TOOL", 4);
+  // A line containing a MSGID
+  define("LCE_MSGID", 5);
+  // A line containing a MSGSTR
+  define("LCE_MSGSTR", 6);
+  // A quoted text string
+  define("LCE_TEXT", 7);
+
+  define("STATE_ABORT", 0);
+  define("STATE_OK", 1);
+  define("STATE_LOOP", 2);
+
+  class POEntryAD extends AD
+    {
+      function validate($value)
+     {
+       //        print '"<pre>' . $value . '"<br></pre>';
+       $result =  AD::validate(trim($value));
+       //return $result;
+       if($result[0])
+        {
+          $lines = explode("\n", ereg_replace("\r", "", $result[1]));
+          //$lines = explode("\n", $result[1]);
+          /*         print "<pre>";
+          print_r($lines);
+          print "</pre>";*/
+          $res = array();
+          for($i = 0; $i < count($lines); $i++)
+            {
+              if(trim($lines[$i]) != "")
+                $res[] = $lines[$i];
+            }
+          $result[1] = join("\n", $res);
+          /*         print "<pre>";
+          print_r($result[1]);
+          print "</pre>";*/
+
+          $result[0] = $this->checkQuotation($result[1]);
+        }
+       return $result;
+     }
+
+      function checkQuotation($str)
+     {
+       $rex = "\\\\n|\\\\t|\\\\r|\\\\\"";
+       $str = ereg_replace($rex, "", $str);
+       $str = ereg_replace("\\\\\\\\", "", $str);
+       return !(strstr($str, "\"")
+               || strstr($str, "\\"));
+     }
+    }
+
+
+  class CommentAD extends AD
+    {
+      var $prefix;
+      function CommentAD(
+                     $name,                    // the name of the variable
+                     $not_null = 0,
+                     $type = "",       // as returned by gettype
+                     $prefix = "# ")
+     {
+       $this->prefix = $prefix;
+       AD::AD($name, $not_null, $type);
+     }
+
+      function validate($value)
+     {
+       $res = AD::validate($value);
+       return $res;
+       if($res[0] && $res[1] != "")
+        {
+          $mod_lines = array();
+          $lines = explode("\n", $res[1]);
+
+          for($i = 0; $i < count($lines); $i++)
+            {
+              $line = $lines[$i];
+              if(substr($line, 0, 1) != "#")
+                  $line = $this->prefix . $line;
+              $mod_lines[] = $line;
+            }
+          $res[1] = join("\n", $mod_lines);
+        }
+       return $res;
+     }
+    }
+
+  class POEntry extends HtmlValidator
+    {
+      var $msgid;
+      var $msgstr;
+      var $user_comment;
+      var $sys_comment;
+      var $unk_comment;
+
+      var $msgid_lc = 0;
+      var $msgstr_lc = 0;
+      var $user_comment_lc = 0;
+      var $sys_comment_lc = 0;
+      var $unk_comment_lc = 0;
+
+      function POEntry()
+     {
+       $this->atts = array(
+                          new AD("msgid"),
+                          new POEntryAD("msgstr", REQUIRED_ATTRIBUTE),
+                          new CommentAD("user_comment"),
+                          new POEntryAD("sys_comment"),
+                          new POEntryAD("unk_comment"),
+                          new AD("msgid_lc", NOT_REQUIRED_ATTRIBUTE, 0),
+                          new AD("msgstr_lc", NOT_REQUIRED_ATTRIBUTE, 0),
+                          new AD("user_comment_lc", NOT_REQUIRED_ATTRIBUTE, 0),
+                          new AD("sys_comment_lc", NOT_REQUIRED_ATTRIBUTE, 0),
+                          new AD("unk_comment_lc", NOT_REQUIRED_ATTRIBUTE, 0)
+                          );
+     }
+
+      function lineCount($entry)
+     {
+       $lc = count(explode("\n", $entry));
+       return $lc;
+     }
+
+      function serializeToVars($prefix)
+     {
+       $this->user_comment_lc = $this->lineCount($this->user_comment);
+       $this->unk_comment_lc = $this->lineCount($this->sys_comment);
+       $this->sys_comment_lc = $this->lineCount($this->unk_comment);
+       $this->msgid_lc = $this->lineCount($this->msgid);
+       $this->msgstr_lc = $this->lineCount($this->msgstr);
+       return HtmlValidator::serializeToVars($prefix);
+     }
+
+      function write()
+     {
+       $content = "";
+       $content .= $this->user_comment . "\n";
+       $content .= $this->unk_comment . "\n";
+       $content .= $this->sys_comment . "\n";
+       $content .= "msgid \"" . $this->msgid . "\"\n";
+       $content .= 'msgstr "' . join("\"\n\"", explode("\n", $this->msgstr)) . 
"\"" . "\n\n";
+       return $content;
+     }
+    }
+
+  class POReader extends HTMLValidator
+    {
+      var $msgid;
+      var $msgstr;
+      var $user_comment;
+      var $sys_comment;
+      var $unk_comment;
+      var $state;
+      var $ignore_ws;
+      var $po_entries;
+      var $poe_num;
+      var $filename;
+      var $domain;
+
+      function gettext($msgid)
+     {
+       if(isset($this->po_entries[$msgid]))
+        {
+          $po = $this->po_entries[$msgid];
+          return StripCSlashes(join("", explode("\n", $po->msgstr)));
+          //return $po->msgstr;
+        }
+       return $msgid;
+     }
+
+
+      function parseFromVars($prefix)
+     {
+       $res = HtmlValidator::parseFromVars($prefix);
+       if($res[0])
+        {
+          $poe_res = true;
+          $this->po_entries = array();
+          for($i = 0; $i < $this->poe_num; $i++)
+            {
+              $poe = new POEntry;
+              $res = $poe->parseFromVars($prefix . "_POE$i");
+              if($res[0])
+                {
+                  $msgid = $prefix . "_POE" . $i . "_MSGID";
+                  $msgid = $$msgid;
+                  $this->po_entries[$prefix . "_POE" . $i . "_MSGID"] = 
$res[1];
+                }
+              else
+                $poe_res = false;
+            }
+        }
+       if(!$poe_res)
+        $GLOBALS[$prefix . "_ERR"] = 1;
+       return array($poe_res, $this);
+     }
+
+      function serializeToVars($prefix)
+     {
+       HtmlValidator::serializeToVars($prefix);
+       reset($this->po_entries);
+       $i = 0;
+       while($poe = each($this->po_entries))
+        {
+          $poe = $poe[1];
+          $poe->serializeToVars($prefix . "_POE$i");
+          $i++;
+        }
+     }
+
+
+      function POReader($domain, $filename)
+     {
+       $this->domain = $domain;
+       $this->filename = $filename;
+       $this->ignore_ws = true;
+       $this->po_entries = array();
+       $this->atts = array(
+                          new AD("domain", REQUIRED_ATTRIBUTE),
+                          new AD("filename", REQUIRED_ATTRIBUTE),
+                          new AD("poe_num", REQUIRED_ATTRIBUTE, 0)
+                          );
+     }
+
+
+      function read()
+     {
+       if($fh = fopen($this->filename, "r"))
+        {
+          $this->lines = array();
+          while (!feof ($fh))
+            {
+              $line = fgets($fh, 4096);
+              $this->lines[] = $line;
+            }
+          fclose($fh);
+        }
+       $this->createPOEntries();
+       $this->poe_num = count($this->po_entries);
+     }
+
+      function write($save="yes")
+     {
+       reset($this->po_entries);
+       $content = "";
+       while($poe = each($this->po_entries))
+        {
+          $poe = $poe[1];
+          $content .= $poe->write();
+        }
+
+       if(($fh = fopen($this->filename, "w"))
+         && $save == "yes")
+        {
+          fwrite($fh, $content);
+          }
+       return $content;
+     }
+
+      function isComment($class)
+     {
+       if($class == LCE_COMMENT || $class == LCE_COMMENT_USER || $class == 
LCE_COMMENT_TOOL)
+        return true;
+       return false;
+     }
+
+      function comment($line, $class)
+     {
+       if($this->isComment($class))
+        {
+          if($class == LCE_COMMENT_USER)
+            $this->user_comment .= $line;
+          else if($class == LCE_COMMENT_TOOL)
+            $this->sys_comment .= $line;
+          else
+            $this->unk_comment .= $line;
+          return STATE_OK;
+        }
+       if($class == LCE_MSGID)
+        {
+          $this->state = "msgid";
+          return STATE_LOOP;
+        }
+       return STATE_ABORT;
+     }
+
+      function msgid($line, $class)
+     {
+       if($class == LCE_MSGID || $class == LCE_TEXT)
+        {
+          $line = $this->stripLine($line, LCE_MSGID);
+          $this->msgid .= $line;
+          return STATE_OK;
+        }
+       if($class == LCE_MSGSTR)
+        {
+          $this->state = "msgstr";
+          return STATE_LOOP;
+        }
+       return STATE_ABORT;
+     }
+
+      function msgstr($line, $class)
+     {
+       if($class == LCE_MSGSTR || $class == LCE_TEXT)
+        {
+          $line = $this->stripLine($line, $class);
+          $this->msgstr .= $line;
+          return STATE_OK;
+        }
+       // We have a different state, so we have to create a POEntry
+       $poe = new POEntry;
+       $poe->user_comment = trim($this->user_comment);
+       $poe->sys_comment = trim($this->sys_comment);
+       $poe->unk_comment = trim($this->unk_comment);
+       $poe->msgid = trim($this->msgid);
+       $poe->msgstr = trim($this->msgstr);
+       $this->po_entries[trim($this->msgid)] = $poe;
+       $this->state = "start";
+       return STATE_LOOP;
+     }
+
+      function start($line, $class)
+     {
+       $this->user_comment = "";
+       $this->sys_comment = "";
+       $this->unk_comment = "";
+       $this->msgid = "";
+       $this->msgstr = "";
+       if($this->isComment($class))
+        {
+          $this->state = "comment";
+          return STATE_LOOP;
+        }
+       if($class == LCE_MSGID)
+        {
+          $this->state = "msgid";
+          return STATE_LOOP;
+        }
+       return STATE_OK;
+     }
+
+      function createPOEntries()
+     {
+       $this->msgid = "";
+       $this->msgstr = "";
+       $this->user_comment = "";
+       $this->sys_comment = "";
+       $this->state = "start";
+
+       reset($this->lines);
+       for($i = 0; $i < count($this->lines); $i++)
+        {
+          $line = $this->lines[$i];
+          $class = $this->classifyLine($line);
+          if($class != LCE_WS || !$this->ignore_ws)
+            {
+              $state_ret = STATE_LOOP;
+              while($state_ret == STATE_LOOP)
+                {
+                  $state = $this->state;
+                  //print "$this->state $class:$line <br>";
+                  $state_ret = $this->$state($line, $class);
+                }
+              //print "state_ret = $state_ret <br>";
+            }
+          if($state_ret == STATE_ABORT)
+            break;
+        }
+       // Get the last entry
+       if($state_ret != STATE_ABORT)
+        {
+          $this->msgstr("", LCE_UNKNOWN);
+        }
+     }
+
+      function stripLine($line, $class)
+     {
+       switch($class)
+        {
+        case LCE_TEXT:
+          ereg('^"(.*)"', $line, $regs);
+          $line = $regs[1] . "\n";
+          break;
+        case LCE_MSGID:
+          if(substr($line, strlen("msgid")) == "msgid")
+            {
+              $line = substr($line, strlen("msgid") + 1);
+            }
+          ereg('"(.*)"', $line, $regs);
+          $line = $regs[1];
+          break;
+        case LCE_MSGSTR:
+          // TODO: Check if ^ can be removed
+          $line = substr($line, strlen("msgstr") + 1);
+          ereg('^"(.*)"', $line, $regs);
+          $line = $regs[1] . "\n";
+          break;
+
+        }
+       return $line;
+     }
+
+      function printClassification()
+     {
+       reset($this->lines);
+       for($i = 0; $i < count($this->lines); $i++)
+        {
+          $line = $this->lines[$i];
+          $class = $this->classifyLine($line);
+          print "#$i: $class $line<br>";
+        }
+     }
+
+      function classifyLine($line)
+     {
+       if(ereg("^[ \n\r\t]*$", $line))
+        return LCE_WS;
+       if(ereg("^#.*\$", $line))
+        {
+          if(ereg("^[,:-~].*", substr($line, 1)))
+            {
+              return LCE_COMMENT_TOOL;
+            }
+          if(ereg("^[ \n\r\t].*", substr($line, 1)))
+            {
+              return LCE_COMMENT_USER;
+            }
+          return LCE_COMMENT;
+        }
+       if(ereg("^msgid (.*)\$", $line, $regs))
+        {
+          $line = $regs[1];
+          if($this->classifyLine($line) == LCE_TEXT)
+            return LCE_MSGID;
+        }
+       if(ereg("^msgstr (.*)\$", $line, $regs))
+        {
+          $line = $regs[1];
+          if($this->classifyLine($line) == LCE_TEXT)
+            return LCE_MSGSTR;
+        }
+       if(ereg('^".*"', $line))
+        {
+                            // TODO: Check correct escapes
+          return LCE_TEXT;
+        }
+
+       return LCE_UNKNOWN;
+     }
+    }
+
+
+  function getTextDomains($lines)
+    {
+      $default_domain = "";
+      $domains = array();
+      while($gl = each($GLOBALS))
+     {
+       $gname = $gl[0];
+       global $$gname;
+     }
+      for($i = 0; $i < count($lines); $i++)
+     {
+       if(ereg("bindtextdomain\(([^,]+),([^\)]+)\)", $lines[$i], $regs))
+        {
+                            //print "Line:" .  $lines[$i] . " <br>";
+          $name = $regs[1];
+          $ev = "\$directory = ". $regs[2] . ";";
+          print $ev;
+          eval($ev);
+          $domains[] = array($name, $directory);
+        }
+       if(ereg("textdomain\(([^\)]+)\)", $lines[$i], $regs))
+        $default_domain = $regs[1];
+     }
+      return array($default_domain, $domains);
+    }
+
+
+  class PORManager extends HtmlValidator
+    {
+      var      $por_a;
+
+      function PORManager()
+     {
+       $this->por_a = array();
+     }
+
+      function addPOReader($d_name, &$por)
+     {
+       $this->por_a[$d_name] = &$por;
+     }
+
+      function &getPOReader($domain)
+     {
+       return $this->por_a[$domain];
+     }
+
+      function getDomainNames()
+     {
+       return array_keys($this->por_a);
+     }
+    }
+
+  function &loadPORManager()
+    {
+      global $LCE_PORMAN;
+      if(!isset($LCE_PORMAN))
+     {
+       $LCE_PORMAN = new PORManager();
+     }
+      return $LCE_PORMAN;
+    }
+
+
+  // More or less intelligent filename joining
+  // As available in PYTHONs os.path
+  function fileJoin()
+    {
+      $numargs = func_num_args();
+      $args = func_get_args();
+      for($i = 0; $i < $numargs - 1; $i++)
+     {
+       if(substr($args[$i], -1) != "/")
+        $args[$i] = $args[$i] . "/";
+       if($i > 0)
+        {
+          if(substr($args[$i],0 , 1) == "/")
+            $args[$i] = substr($args[$i], 1);
+        }
+
+     }
+      return join("", $args);
+    }
+
+  if(defined("LCE_TESTSERVER"))
+    {
+
+      function lce_bindtextdomain($d_name, $d_path)
+     {
+       global $LANG, $LC_MESSAGES, $LC_ALL, $LCE_LANG;
+       global $LCE_ERR;
+       global $LCE_PO_SUFFIX;
+       global $LCE_MANAGER;
+
+       $path_orig = $d_path;
+       // This is not complete and reflects
+       // my not very far going understanding of the
+       // different $LC_x thingies.
+       if(isset($LC_MESSAGES))
+        {
+                            //print "LC_MESSAGES<br>";
+          $lang_suffix = $LC_MESSAGES;
+        }
+       else if(isset($LC_ALL))
+        {
+                            //print "LC_ALL<br>";
+          $lang_suffix = $LC_ALL;
+        }
+       else if(isset($LANG))
+        {
+                            //print "LANG<br>";
+          $lang_suffix = $LANG;
+        }
+       else
+        {
+                            //print "LCE_LANG<br>";
+          $lang_suffix = $LCE_LANG;
+        }
+
+       //print "LangSuffix: $lang_suffix \n";
+       //print "D_Path: " . fileJoin($d_path, $lang_suffix, "LC_MESSAGES", 
$d_name . $LCE_PO_SUFFIX) . "<br>";
+       // First try: the whole lang_suffix
+
+       if(file_exists(fileJoin($d_path, $lang_suffix, "LC_MESSAGES", $d_name . 
$LCE_PO_SUFFIX)))
+        $d_path = fileJoin($d_path, $lang_suffix, "LC_MESSAGES", $d_name . 
$LCE_PO_SUFFIX);
+       else
+        {
+          $lang_suffix = substr($lang_suffix, 0, 2);
+          if(file_exists(fileJoin($d_path, $lang_suffix, "LC_MESSAGES", 
$d_name. $LCE_PO_SUFFIX)))
+            $d_path = fileJoin(fileJoin($d_path, $lang_suffix, "LC_MESSAGES", 
$d_name . $LCE_PO_SUFFIX));
+          else
+            {
+              $LCE_ERR = "No PO-file found";
+              return false;
+            }
+        }
+       //print "D_Path: $d_path \n";
+       $por = new POReader($d_name, $d_path, $path_orig);
+       $por->read();
+       $porman =& loadPORManager();
+       $porman->addPOReader($d_name, $por);
+       return true;
+     }
+
+      function lce_textdomain($domain)
+     {
+       global $LCE_DOMAIN;
+       $LCE_DOMAIN = $domain;
+     }
+
+      function lce_gettext($msgid)
+     {
+       global $LCE_DOMAIN;
+       return lce_dgettext($LCE_DOMAIN, $msgid);
+     }
+
+      function lce_dgettext($domain, $msgid)
+     {
+       $porman =& loadPORManager();
+       if($por = &$porman->getPOReader($domain))
+        return $por->gettext($msgid);
+       return $msgid;
+     }
+
+      function lce()
+     {
+       global $LCE_LCEDITLOC;
+       $porman =& loadPORManager();
+       $domains = $porman->getDomainNames();
+       for($i = 0; $i < count($domains); $i++)
+        {
+          $por =& $porman->getPOReader($domains[$i]);
+          $domain = "domain=" . urlencode($por->domain);
+          $filename = "filename=" . urlencode($por->filename);
+          $url = $LCE_LCEDITLOC . "?" . $domain . "&" . $filename;
+          print "<a target=\"_blank\" href=\"" . $url . "\">Domain: 
$por->domain</a><br>";
+        }
+     }
+    }
+  else
+    {
+      function lce_bindtextdomain($domain, $path)
+     {
+       bindtextdomain($domain, $path);
+     }
+
+      function lce_textdomain($domain)
+     {
+       textdomain($domain);
+     }
+
+      function lce_gettext($msgid)
+     {
+       return gettext($msgid);
+     }
+
+      function lce_dgettext($domain, $msgid)
+     {
+       return dgettext($domain, $msgid);
+     }
+      function lce()
+     {
+     }
+    }
+
+
+  function lce_geteditcode($type, $name, $text, $rows=2)
+    {
+      global $LCE_EDIT_LEVEL;
+      $level_map = array("msgid" => 4,
+                     "sys_comment" => 3,
+                     "user_comment" => 2,
+                     "msgstr" => 1
+                     );
+      if($level_map[$type] > $LCE_EDIT_LEVEL)
+     {
+       return "<input type=\"hidden\" name=\"" . $name . "\" value=\"" . $text 
. "\"><pre>\n" . $text . "\n</pre>";
+     }
+      else
+     {
+       return "<textarea name=\"" . $name . "\" rows=\"" . $rows . "\" 
cols=\"60\">" . $text . "</textarea>";
+     }
+    }
+}
+/*
+  ;;; Local Variables: ***
+  ;;; mode:C ***
+  ;;; End: ***
+*/
+?>
diff --git a/test/etags/php-src/ptest.php b/test/etags/php-src/ptest.php
new file mode 100644
index 0000000..9893839
--- /dev/null
+++ b/test/etags/php-src/ptest.php
@@ -0,0 +1,18 @@
+define("TEST", 0);
+
+class
+test 
+extends base
+{
+       // use --member to tag
+       var $member;
+       var $memassign="hallo";
+       var $memassign_space ="hallo";
+       // Syntactical wrong, but tagged
+       var $test
+}
+
+function 
+foo()
+{
+}
diff --git a/test/etags/php-src/sendmail.php b/test/etags/php-src/sendmail.php
new file mode 100644
index 0000000..1d15e4a
--- /dev/null
+++ b/test/etags/php-src/sendmail.php
@@ -0,0 +1,527 @@
+<?php
+
+/*
+  Classe creata da Santoro Diego.
+  Per aiuti nella programmazione in PHP, PERL, C e ECMAScript contattatemi
+  e-Mail address@hidden oppure address@hidden
+  La classe ? ancora in fase beta.
+*/
+
+final class sendMail {
+
+  const eMailAddressErrorMessage="L' e-Mail indicata non rispetta un formato 
valido.";
+  const defaultSubject="this is the subject.";
+  const defaultTextMessage="this is text message.";
+  const defaultHtmlMessage="this is html message.";
+  const defaultHeaderMessage="this is a multi-part message in MIME format.";
+
+  private static $messageProperties=array(
+    "charset" => array(
+        "modifiable" => true,
+        "values" => array(
+            "iso-8859-1",
+            "iso-8859-15",
+            "utf-8",
+            "utf-16"
+        )
+    ),
+    "content-transfer-encoding" => array(
+        "modifiable" => true,
+        "values" => array(
+            "7bit",
+            "8bit",
+            "quoted-printable"
+        )
+    )
+  );
+
+  private $attachmentProperties=array(
+    "content-type" => array(
+        "modifiable" => false,
+         "values" => array(
+            "application/octet-stream"
+        )
+    ),
+    "content-transfer-encoding" => array(
+        "modifiable" => false,
+        "values" => array(
+            "base64"
+        )
+    ),
+    "content-disposition" => array(
+        "modifiable" => true,
+        "values" => array(
+            "attachment",
+            "inline"
+        )
+    )
+  );
+
+  private static $relatedProperties=array(
+    "content-transfer-encoding" => array(
+        "modifiable" => false,
+        "values" => array(
+            "base64"
+        )
+    )
+  );
+
+  private $html;
+  private $text;
+
+  private $related;
+  private $attachments;
+
+  public static function valid_eMailAddress($eMailAddress) {
+   if(ereg("^[^@ address@hidden@ ]+\.[^@ ]+$", $eMailAddress))
+    return true;
+   else
+    return false;
+  }
+
+  public static function validContentId($contentId) {
+   if(ereg("^[a-zA-Z0-9]+$", $contentId))
+    return true;
+   else
+    return false;
+  }
+
+  public static function validContentKey($contentKey) {
+   if(ereg("^[a-zA-Z0-9]+$", $contentKey))
+    return true;
+   else
+    return false;
+  }
+
+  public static function mime_content_type($filename) {
+   $mime=array(
+    '.3dmf' => 'x-world/x-3dmf',
+    '.a' => 'application/octet-stream',
+    '.aab' => 'application/x-authorware-bin',
+    '.xwd' => 'image/x-xwd',
+    '.xyz' => 'chemical/x-pdb',
+    '.z' => 'application/x-compressed',
+    '.zip' => 'application/x-zip-compressed',
+    '.zoo' => 'application/octet-stream',
+    '.zsh' => 'text/x-script.zsh',
+    '.css' => 'text/css'
+   );
+   return $mime[strrchr($filename, '.')];
+  }
+
+  private $from;
+  private $to;
+  private $subject;
+
+  private $finalized;
+
+  private $headerMessage;
+  private $bodyMessage;
+
+  private $boundaries;
+
+  public function __construct($from, $to, $subject=self::defaultSubject) {
+
+   // set from
+   if(!self::valid_eMailAddress($from))
+    die(self::eMailAddressErrorMessage);
+   else
+    $this->from=$from;
+
+   // set to
+   if(!self::valid_eMailAddress($to))
+    die(self::eMailAddressErrorMessage);
+   else
+    $this->to=$to;
+
+   // set subject
+   $this->subject=$subject;
+
+   // set text
+   $this->text=array(
+    "message" => self::defaultTextMessage,
+    "properties" => array(
+        "charset" => self::$messageProperties["charset"]["values"][0],
+        "content-transfer-encoding" => 
self::$messageProperties["content-transfer-encoding"]["values"][0]
+    )
+   );
+
+   // set html
+   $this->html=array(
+    "message" => self::defaultHtmlMessage,
+    "properties" => array(
+        "charset" => self::$messageProperties["charset"]["values"][0],
+        "content-transfer-encoding" => 
self::$messageProperties["content-transfer-encoding"]["values"][1]
+    )
+   );
+
+   // set related and attachments
+   $this->related=array();
+   $this->attachments=array();
+
+   // set finalizater counter
+   $this->finalized=false;
+
+   $this->headerMessage="";
+   $this->bodyMessage="";
+
+   $this->boundaries=array(
+    "multipart/alternative" => md5(uniqid(microtime())),
+    "multipart/related" => md5(uniqid(microtime())),
+    "multipart/mixed" => md5(uniqid(microtime()))
+   );
+
+  }
+
+  public function setTo($to, &$errorString) {
+   if(self::valid_eMailAddress($to)) {
+    $this->to=$to;
+    return true;
+   } else {
+    $errorString=eMailAddressErrorMessage;
+    return false;
+   }
+  }
+
+  public function setFrom($from, &$errorString) {
+   if(self::valid_eMailAddress($from)) {
+    $this->from=$from;
+    return true;
+   } else {
+    $errorString=eMailAddressErrorMessage;
+    return false;
+   }
+  }
+
+  public function setSubject($subject=self::defaultSubject) {
+   $this->subject=$subject;
+  }
+
+  public function setTextMessage($textMessage=self::defaultTextMessage) {
+   $this->text["message"]=$textMessage;
+  }
+
+  public function setTextMessageProperty($key, $value, &$errorString) {
+
+   $key=strtolower($key);
+   $value=strtolower($value);
+
+   if(isset(self::$messageProperties[$key])) {
+    if(in_array($value, self::$messageProperties[$key]["values"])) {
+     if(self::$messageProperties[$key]["modifiable"]) {
+       $this->text["properties"][$key]=$value;
+       return true;
+     } else {
+      $errorString="Il valore della propriet? indicata non ? modificabile.";
+      return false;
+     }
+    } else {
+     $errorString="Il valore indicato per questa propriet? non ? valido.";
+     return false;
+    }
+   } else {
+    $errorString="Non esiste questa propriet? per i messaggi html.";
+    return false;
+   }
+  }
+
+  public function setHtmlMessage($htmlMessage=self::defaultHtmlMessage) {
+   $this->html["message"]=$htmlMessage;
+  }
+
+  public function setHtmlMessageProperty($key, $value, &$errorString) {
+
+   $key=strtolower($key);
+   $value=strtolower($value);
+
+   if(isset(self::$messageProperties[$key])) {
+    if(in_array($value, self::$messageProperties[$key]["values"])) {
+     if(self::$messageProperties[$key]["modifiable"]) {
+      $this->html["properties"][$key]=$value;
+      return true;
+     } else {
+      $errorString="Il valore della propriet? indicata non ? modificabile.";
+      return false;
+     }
+    } else {
+     $errorString="Il valore indicato per questa propriet? non ? valido.";
+     return false;
+    }
+   } else {
+    $errorString="Non esiste questa propriet? per i messaggi html.";
+    return false;
+   }
+  }
+
+  public function addRelated($fileName, $relatedKey, $contentId, 
&$errorString) {
+   if(is_file($fileName)) {
+    if($fileHandle=fopen($fileName, "r")) {
+     if(self::validContentId($contentId)) {
+      if(!isset($this->related[$relatedKey])) {
+       if(self::validContentKey($relatedKey)) {
+        $this->related[$relatedKey]=array(
+    "fileName" => basename($fileName),
+    "properties" => array(
+        "content-type" => self::mime_content_type($fileName),
+        "content-transfer-encoding" => 
self::$relatedProperties["content-transfer-encoding"]["values"][0],
+        "content-id" => $contentId
+    ),
+    "source" => base64_encode(
+        fread($fileHandle, filesize($fileName))
+    )
+        );
+        return true;
+       } else {
+        $errorString="L' id specificato non ? valido.";
+        return false;
+       }
+      } else {
+       $errorString="La chiave specificata ? gi? associata ad un altro 
related.";
+       return false;
+      }
+     } else {
+      $errorString="La chiave specificata per il related non ? valida.";
+      return false;
+     }
+    } else {
+     $errorString="Non ? possibile aprire il file indicato.";
+     return false;
+    }
+   } else {
+    $errorString="Il nome del file indicato non ? valido.";
+    return false;
+   }
+  }
+
+  public function setRelatedProperty($relatedKey, $key, $value, &$errorString) 
{
+
+   $key=strtolower($key);
+   $value=strtolower($value);
+  
+   if(isset(self::$relatedProperties[$key])) {
+    if(in_array($value, self::$relatedProperties[$key]["values"])) {
+     if(self::$relatedProperties[$key]["modifiable"]) {
+      if(isset($this->related[$relatedKey])) {
+       $this->related[$relatedKey]["properties"][$key]=$value;
+       return true;
+      } else {
+       $errorString="Il related indicato non esiste.";
+       return false;
+      }
+     } else {
+      $errorString="Il valore della propriet? indicata non ? modificabile.";
+      return false;
+     }
+    } else {
+     $errorString="Il valore indicato per questa propriet? non ? valido.";
+     return false;
+    }
+   } else {
+    $errorString="Non esiste questa propriet? per i related.";
+    return false;
+   }
+  }
+
+  public function addAttachment($fileName, $attachmentKey, &$errorString) {
+   if(is_file($fileName)) {
+    if($fileHandle=fopen($fileName, "r")) {
+     if(self::validContentKey($attachmentKey)) {
+      if(!isset($this->attachments[$attachmentKey])) {
+       $this->attachments[$attachmentKey]=array(
+    "fileName" => basename($fileName),
+    "properties" => array(
+        "content-type" => 
self::$attachmentProperties["content-type"]["values"][0],
+        "content-disposition" => 
self::$attachmentProperties["content-disposition"]["values"][0],
+        "content-transfer-encoding" => 
self::$attachmentProperties["content-transfer-encoding"]["values"][0]
+    ),
+    "source" => base64_encode(
+        fread($fileHandle, filesize($fileName))
+    )
+       );
+       return true;
+      } else {
+       $errorString="La chiave specificata ? gi? associata ad un altro 
allegato.";
+       return false;
+      }
+     } else {
+      $errorString="La chiave specificata per l'allegato non ? valida.";
+      return false;
+     }
+    } else {
+     $errorString="Non ? possibile aprire il file indicato.";
+     return false;
+    }
+   } else {
+    $errorString="Il nome del file indicato non ? valido.";
+    return false;
+   }
+  }
+
+  public function setAttachmentProperty($attachmentKey, $key, $value, 
&$errorString) {
+
+   $key=strtolower($key);
+   $value=strtolower($value);
+
+   if(isset(self::$attachmentProperties[$key])) {
+    if(in_array($value, self::$attachmentProperties[$key]["values"])) {
+     if(self::$attachmentProperties[$key]["modifiable"]) {
+      if(isset($this->attachments[$attachmentKey])) {
+       $this->attachments[$attachmentKey]["properties"][$key]=$value;
+       return true;
+      } else {
+       $errorString="L'allegato indicato non esiste.";
+       return false;
+      }
+     } else {
+      $errorString="Il valore della propriet? indicata non ? modificabile.";
+      return false;
+     }
+    } else {
+     $errorString="Il valore indicato per questa propriet? non ? valido.";
+     return false;
+    }
+   } else {
+    $errorString="Non esiste questa propriet? per gli allegati.";
+    return false;
+   }
+  }
+
+  public function finalize(&$errorString) {
+   if(!$this->finalized) {
+    $this->headerMessage="from: ".($this->from)."\n";
+    $this->headerMessage.="to: ".($this->to)."\n";
+    $this->headerMessage.="subject: ".($this->subject)."\n";
+    $this->headerMessage.="mime-version: 1.0\n";
+
+    if(($countAttachments=count($this->attachments))>0) {
+     $this->headerMessage.="content-type: multipart/mixed; 
boundary=\"".($this->boundaries["multipart/mixed"])."\"\n\n";
+     $this->headerMessage.=self::defaultHeaderMessage;
+     $this->headerMessage.="\n\n";
+
+     $this->bodyMessage="--".($this->boundaries["multipart/mixed"])."\n";
+
+     if(($countRelated=count($this->related))>0) {
+      $this->bodyMessage.="content-type: multipart/related; 
type=\"multipart/alternative\"; 
boundary=\"".($this->boundaries["multipart/related"])."\"\n\n";
+
+      $this->bodyMessage.="--".($this->boundaries["multipart/related"])."\n";
+
+      $this->bodyMessage.="content-type: multipart/alternative; 
boundary=\"".($this->boundaries["multipart/alternative"])."\"\n\n";
+      
$this->createMultipartAlternativeMessage($this->boundaries["multipart/alternative"]);
+      
$this->bodyMessage.="--".($this->boundaries["multipart/alternative"])."--\n\n";
+
+      // aggiungere i related e chiudere
+
+      $relatedCounter=0;
+      while(list($key,)=each($this->related)) {
+       $relatedCounter++;
+      
+       $this->bodyMessage.="--".$this->boundaries["multipart/related"]."\n";
+       $this->createMultipartRelatedMessage($key);
+       if($relatedCounter!=$countRelated) 
$this->bodyMessage.="--".($this->boundaries["multipart/related"])."\n";
+       else 
$this->bodyMessage.="--".($this->boundaries["multipart/related"])."--\n\n";
+      }
+     } else {
+      $this->bodyMessage.="content-type: multipart/alternative; 
boundary=\"".($this->boundaries["multipart/alternative"])."\"\n\n";
+      $this->createMultipartAlternativeMessage();
+      
$this->bodyMessage.="--".($this->boundaries["multipart/alternative"])."--\n\n";
+     }
+
+     $attachmentsCounter=0;
+     while(list($key,)=each($this->attachments)) {
+      $attachmentsCounter++;
+      $this->bodyMessage.="--".($this->boundaries["multipart/mixed"])."\n";
+      $this->createMultipartMixedMessage($key);
+      if($attachmentsCounter!=$countAttachments) 
$this->bodyMessage.="--".($this->boundaries["multipart/mixed"])."\n";
+      else 
$this->bodyMessage.="--".($this->boundaries["multipart/mixed"])."--\n\n";
+     }
+    } else {
+     if(($countRelated=count($this->related))>0) {
+      $this->headerMessage.="content-type: multipart/related; 
type=\"multipart/alternative\"; 
boundary=\"".($this->boundaries["multipart/related"])."\"\n\n";
+      $this->headerMessage.=self::defaultHeaderMessage;
+      $this->headerMessage.="\n\n";
+
+      $this->bodyMessage="--".($this->boundaries["multipart/related"])."\n";
+      $this->bodyMessage.="content-type: multipart/alternative; 
boundary=\"".($this->boundaries["multipart/alternative"])."\"\n\n";
+      $this->createMultipartAlternativeMessage();
+      
$this->bodyMessage.="--".($this->boundaries["multipart/alternative"])."--\n\n";
+
+      $relatedCounter=0;
+      while(list($key,)=each($this->related)) {
+       $relatedCounter++;
+       $this->bodyMessage.="--".$this->boundaries["multipart/related"]."\n";
+       $this->createMultipartRelatedMessage($key);
+       if($relatedCounter!=$countRelated) 
$this->bodyMessage.="--".($this->boundaries["multipart/related"])."\n";
+       else 
$this->bodyMessage.="--".($this->boundaries["multipart/related"])."--\n\n";
+      }
+     } else {
+      $this->headerMessage.="content-type: multipart/alternative; 
boundary=\"".($this->boundaries["multipart/alternative"])."\"\n\n";
+      $this->headerMessage.=self::defaultHeaderMessage;
+      $this->headerMessage.="\n\n";
+
+      $this->createMultipartAlternativeMessage();
+      
$this->bodyMessage.="--".($this->boundaries["multipart/alternative"])."--";
+
+     }
+    }
+    $this->finalized=true;
+    return true;
+   } else {
+    $errorString="Al momento non ? possibile finalizzare.";
+    return false;
+   }
+  }
+
+  private function createMultipartAlternativeMessage() {
+   $multipartAlternativeBoundary=$this->boundaries["multipart/alternative"];
+   $this->bodyMessage.="--$multipartAlternativeBoundary\n";
+   $this->bodyMessage.="content-type: text/plain; 
charset=\"".($this->text["properties"]["charset"])."\"\n";
+   $this->bodyMessage.="content-transfer-encoding: 
".($this->text["properties"]["content-transfer-encoding"])."\n\n";
+   $this->bodyMessage.=$this->text["message"];
+   $this->bodyMessage.="\n\n";
+   $this->bodyMessage.="--$multipartAlternativeBoundary\n";
+   $this->bodyMessage.="content-type: text/html; 
charset=\"".($this->html["properties"]["charset"])."\"\n";
+   $this->bodyMessage.="content-transfer-encoding: 
".($this->html["properties"]["content-transfer-encoding"])."\n\n";
+   $this->bodyMessage.=$this->html["message"];
+   $this->bodyMessage.="\n\n";
+  }
+
+  private function createMultipartRelatedMessage($key) {
+   $obj=$this->related[$key];
+   $this->bodyMessage.="content-type: 
".($obj["properties"]["content-type"])."; name=\"".($obj["fileName"])."\"\n";
+   $this->bodyMessage.="content-transfer-encoding: 
".($obj["properties"]["content-transfer-encoding"])."\n";
+   $this->bodyMessage.="content-id: 
<".($obj["properties"]["content-id"]).">\n\n";
+   $this->bodyMessage.=$obj["source"];
+   $this->bodyMessage.="\n\n";
+  }
+
+  private function createMultipartMixedMessage($key) {
+   $obj=$this->attachments[$key];
+   $this->bodyMessage.="content-type: 
".($obj["properties"]["content-type"])."; name=\"".($obj["fileName"])."\"\n";
+   $this->bodyMessage.="content-transfer-encoding: 
".($obj["properties"]["content-transfer-encoding"])."\n";
+   $this->bodyMessage.="content-disposition: 
".($obj["properties"]["content-disposition"])."; 
filename=\"".($obj["fileName"])."\"\n\n";
+   $this->bodyMessage.=$obj["source"];
+   $this->bodyMessage.="\n\n";
+  }
+
+  public function getSource(&$errorString) {
+   if($this->finalized) {
+    return ($this->headerMessage).($this->bodyMessage);
+   } else {
+    $errorString="Ancora non ? avvenuta la finalizzazione.";
+    return false;
+   }
+  }
+
+  public function sendMail(&$errorString) {
+   if($this->finalized) {
+    mail($this->to, $this->subject, $this->bodyMessage, $this->headerMessage);
+    $this->finalized=false;
+    return true;
+   } else {
+    $errorString="Ancora non ? avvenuta la finalizzazione.";
+    return false;
+   }
+  }
+}
+
+?>
diff --git a/test/etags/prol-src/natded.prolog 
b/test/etags/prol-src/natded.prolog
new file mode 100644
index 0000000..f0ee6b4
--- /dev/null
+++ b/test/etags/prol-src/natded.prolog
@@ -0,0 +1,1545 @@
+% $Id: natded.pl,v 1.7 2001/04/26 12:22:56 geertk Exp geertk $
+% NATURAL DEDUCTION CG PARSER WITH SEMANTICS
+% ========================================================================= 
+% Bob CARPENTER
+% Computational Linguistics Program, Department of Philosophy
+% Carnegie Mellon University, Pittsburgh, PA  15213
+% Net: address@hidden  
+% Voice: (412) 268-8043      Fax: (412) 268-1440
+
+% Copyright 1995, Bob Carpenter
+
+% Written: 12 March 1993
+% Revised: 4 February 1994
+% Further Revised: 2 May 1994
+% Revised for CGI: 16 November 1995
+% Revised for Lambek notation: ? Novemeber 1995
+% Revised again: 30 November 1995
+
+
+% Library Includes
+% ========================================================================= 
+
+:- use_module(library(system)).
+% :- use_module(library(random)).
+
+
+% Data Types
+% ========================================================================= 
+
+% <lambda_term> ::=  <lambda_var>
+%                 |  <lambda_con>
+%                 |  <lambda_term>@<lambda_term>
+%                 |  <lambda_var>^<lambda_term>
+
+% <lambda_var> ::= var(<prolog_var>)
+
+% <lambda_con> ::= con(<prolog_atom>)
+
+% <tree> ::= tree(<rule>,<cat>,<list(<tree>)>)
+%          | ass(<syn>,<var>,<index>)
+%          | leaf(<word>)
+
+% <rule> ::= <prolog_atom>
+
+% <cat> ::= <syn> : <lambda_term>
+
+% <syn> ::= <basic_syn>
+%         | <syn> / <syn>  |  <syn> \ <syn> 
+%         | scop(<syn>,<syn>) 
+%         | <syn> - <syn>
+
+% <basic_syn> ::= bas(<prolog_term>)
+
+% <grammar> ::= <sequence(<lex_entry>)> 
+%               <sequence(<empty_category>)>
+%               <sequence(<grammar_rule>)>
+
+% <lex_entry> ::=  <word> ==> <cat>.
+
+% <empty_category> ::= empty <cat>.
+
+% <grammar_rule> ::= <cat> ===> <list(<cat>)> if <prolog_goal>.
+
+% <index> ::= <integer>
+
+% <word> ::= <prolog_atom>
+
+% <chart_edge> ::= edge(<int>, <int>, <cat>)
+
+% Operator Declarations
+% ========================================================================= 
+
+  :-op(150,yfx,@).      % function application
+% :-op(200,xfy,^).      % lambda abstraction
+% :-op(400,yfx,/).      % forward slash
+  :-op(350,yfx,\).      % backward slash
+  :-op(500,xfx,:).      % category constructor
+  :-op(600,xfx,==>).    % lexical rewriting
+  :-op(600,xfx,===>).   % grammar rule
+  :-op(600,fx,empty).   % empty categories
+  :- op(600,xfx,macro). % lexical macros
+  :- op(600,xfx,means). % meaning postulates
+  :-op(1200,xfx,if).    % conditions on rule schemes
+
+:- dynamic edge/3.
+:- dynamic emptyedge/1.
+:- dynamic active/3.
+
+
+
+
+% Lambda Calculus
+% ========================================================================= 
+
+% expandmng(+M:<term>, -MExp:<term>)
+% ----------------------------------------------------------------------
+% MExp is the result of recursively replacing constants with their
+% definitions in M; disallows non-determinism
+% ----------------------------------------------------------------------
+expandmng(var(V),var(V)).
+expandmng(con(C),MExp):-
+  con(C) means M, !,
+  expandmng(M,MExp).
+expandmng(con(C),con(C)).
+expandmng(V^M,V^MExp):-
+  expandmng(M,MExp).
+expandmng(address@hidden,address@hidden):-
+  expandmng(M,MExp),
+  expandmng(N,NExp).
+
+
+% normalize(+M:<term>, -MNorm:<term>)
+% ----------------------------------------------------------------------
+% MNorm is the normal form of M; all bound variables renamed
+% ----------------------------------------------------------------------
+normalize(M,MNorm):-
+  fresh_vars(M,MFr),
+  normalize_fresh(MFr,MNorm).
+
+% fresh_vars(+M:<term>, -MFr:<term>)
+% ----------------------------------------------------------------------
+% MFr is the result of renaming all bound variables
+% in M to fresh instances, using alpha-reduction
+% ----------------------------------------------------------------------
+fresh_vars(var(V),var(V)).
+fresh_vars(con(C),con(C)).
+fresh_vars(address@hidden,address@hidden):-
+  fresh_vars(M,MFr),
+  fresh_vars(N,NFr).
+fresh_vars(X^M,var(Y)^MFr):-
+  subst(M,X,var(Y),M2),
+  fresh_vars(M2,MFr).
+
+% substitute(+M:<term>, +X:<var>, +N:<term>, -L:<term>)
+% ----------------------------------------------------------------------
+% L = M[X |--> N]
+% ----------------------------------------------------------------------
+subst(var(Y),var(X),M,N):-
+  ( X == Y
+    -> N=M
+  ; N = var(Y)
+  ).
+subst(con(C),_,_,con(C)).
+subst(address@hidden,X,N,address@hidden):-
+  subst(M,X,N,M2),
+  subst(L,X,N,L2).
+subst(Y^M,X,N,Y^M2):-
+  ( Y == X
+    -> M2 = M
+  ; subst(M,X,N,M2)
+  ).
+
+% normalize_fresh(+M:<term>, -N:<term>)
+% ----------------------------------------------------------------------
+% M is normalized to N 
+% -- all bound variables are made fresh
+% -- cut corresponds to leftmost normalization
+% ----------------------------------------------------------------------
+normalize_fresh(M,N):-
+  reduce_subterm(M,L),
+  !, normalize_fresh(L,N).
+normalize_fresh(M,M).
+
+% reduce_subterm(+M:<term>, -N:<term>)
+% ----------------------------------------------------------------------
+% N is the result of performing one beta- or 
+% eta-reduction on some subterm of M;
+% -- reduces leftmost subterm first, but provides 
+%    all reductions on backtracking
+% ----------------------------------------------------------------------
+reduce_subterm(M,M2):-
+  reduce(M,M2).
+reduce_subterm(address@hidden,address@hidden):-
+  reduce_subterm(M,M2).
+reduce_subterm(address@hidden,address@hidden):-
+  reduce_subterm(N,N2).
+reduce_subterm(X^M,X^N):-
+  reduce_subterm(M,N).
+
+% reduce(+M:<term>, -N:<term>)
+% ----------------------------------------------------------------------
+% reduces M to N using beta- or eta-reduction
+% -- assumes no variable clashes
+% ----------------------------------------------------------------------
+reduce((X^M)@N,L):-     % beta reduction
+  subst(M,X,N,L).
+reduce(X^(address@hidden),M):-     % eta reduction
+  X == Y,
+  \+ ( free_var(M,Z),
+       Z == X ).
+
+% free_var(+M:<term>, -X:<var>)
+% ----------------------------------------------------------------------
+% X is free in M
+% ----------------------------------------------------------------------
+free_var(var(V),var(V)).
+free_var(address@hidden,X):-
+  ( free_var(M,X)
+  ; free_var(N,X)
+  ).
+free_var(X^M,Y):-
+  free_var(M,Y),
+  Y \== X.
+
+% free_for(+N:<term>, +X:<var>, +M:<term>)
+% ----------------------------------------------------------------------
+% M is free for X in N
+% ----------------------------------------------------------------------
+free_for(var(_),_,_).
+free_for(con(_),_,_).
+free_for(address@hidden,X,M):-
+  free_for(L,X,M),
+  free_for(K,X,M).
+free_for(Y^L,X,M):-
+  free_for(L,X,M),
+  ( \+ free_var(L,X)
+  ; \+ free_var(M,Y)
+  ).
+
+
+% Right-Left, Bottom-Up Dynamic Chart Parser (after ALE)
+% =========================================================================
+
+% Lexical Compiler
+% ----------------------------------------------------------------------
+
+% compile_lex(+File:<file>)
+% ----------------------------------------------------------------------
+% compiles lexical entries into file 
+% ----------------------------------------------------------------------
+compile_lex(File):-
+  tell(File),
+  write('% Lexical Entries'), nl,
+  write('% ---------------'), nl, nl,
+  lex(W,Syn,Sem),
+  numbervars(lexentry(W,Syn,Sem),0,_),
+  write('lexentry(\''), write(W), write('\','),
+  write(Syn),write(','), write(Sem), write(').'), nl,
+  fail.
+compile_lex(File):-
+  told,
+  compile(File).
+
+% consult_lex  
+% ----------------------------------------------------------------------
+% consults lexicon in place
+% ----------------------------------------------------------------------
+consult_lex:-
+  retractall(lexentry(_,_,_)),
+  lex(W,Syn,Sem),
+  assert(lexentry(W,Syn,Sem)),
+  fail.
+consult_lex.
+
+% lex(?W:<word>, ?Syn:<syn>, ?Sem:<lambda_term>)
+% ----------------------------------------------------------------------
+% word W has syntactic category Syn and smenantic term Sem
+% ----------------------------------------------------------------------
+lex(W,SynOut,Sem):-
+  W ==> Syn : Sem,
+  expandsyn(Syn,SynOut).
+
+% expandsyn(+SynIn:<syn>, ?SynOut:<syn>)
+% ----------------------------------------------------------------------
+% the category SynIn is macro expanded recursively to SynOut 
+% ----------------------------------------------------------------------
+expandsyn(Syn,Syn):-
+  var(Syn), !.
+expandsyn(SynIn,SynOut):-
+  macro(SynIn,SynMid),   % cut means unique macro expansion
+  !, expandsyn(SynMid,SynOut).
+expandsyn(Syn1/Syn2,Syn1Out/Syn2Out):-
+  !, expandsyn(Syn1,Syn1Out), 
+  expandsyn(Syn2,Syn2Out).
+expandsyn(Syn1\Syn2,Syn1Out\Syn2Out):-
+  !, expandsyn(Syn1,Syn1Out), 
+  expandsyn(Syn2,Syn2Out).
+expandsyn(Syn1-Syn2,Syn1Out-Syn2Out):-
+  !, expandsyn(Syn1,Syn1Out), 
+  expandsyn(Syn2,Syn2Out).
+expandsyn(q(Syn1,Syn2,Syn3),q(Syn1Out,Syn2Out,Syn3Out)):-
+  !, expandsyn(Syn1,Syn1Out), 
+  expandsyn(Syn2,Syn2Out),
+  expandsyn(Syn3,Syn3Out).
+expandsyn(Syn,Syn):-
+  bas_syn(Syn).
+
+% bas_syn(?Syn:<syn>)
+% ----------------------------------------------------------------------
+% Syn is a basic syntactic category
+% ----------------------------------------------------------------------
+bas_syn(n(_)).
+bas_syn(np(_,_)).
+bas_syn(s(_)).
+bas_syn(coor).
+bas_syn(sc(_)).
+bas_syn(ex(_)).
+
+
+
+
+% Empty Edge Compilation
+% ----------------------------------------------------------------------
+
+% compile_empty
+% ----------------------------------------------------------------------
+% compiles empty categories, asserting all active and inactive edges
+% they can produce by themselves; always succeeds
+% ----------------------------------------------------------------------
+compile_empty:-
+  retractall(emptyedge(_)), retractall(active(_,_,_)),
+  empty SynIn:Sem,
+  expandsyn(SynIn,Syn),
+  complete(cat(Syn,Sem,[],[],empty(Syn,Sem))).
+compile_empty:-
+  bagof(C,emptyedge(C),Cs),
+  length(Cs,N),  
+  nl, write(N), write(' complete empty edges'), nl,
+  bagof(D-Ds,G^active(Ds,D,G),Es),
+  length(Es,M),  
+  write(M), write(' active rules with empty starts'), nl.
+
+% complete_cat(Cat:+<cat>)
+% ----------------------------------------------------------------------
+% Cat is asserted as empty, and all current active edges are tested to
+% see if Cat can extend them; fails for looping
+% ----------------------------------------------------------------------
+complete(Cat):-
+  assert(emptyedge(Cat)),
+  ( (CatM ===> [Cat|Cats] if Goal)
+  ; active(CatM,[Cat|Cats],Goal)
+  ),
+  add_active(Cats,CatM,Goal).
+
+% add_active(Cats:+<list(<cat>)>, +Cat:<cat>, +Goal:<goal>)
+% ----------------------------------------------------------------------
+% the active edge Cat --> . Cats is asserted, and any extensions
+% computed and themselves asserted;  fails for looping
+% ----------------------------------------------------------------------
+add_active([],Cat,Goal):-
+  call(Goal),
+  assert(emptyedge(Cat)),
+  complete(Cat).
+add_active([Cat|Cats],CatM,Goal):-
+  assert(active([Cat|Cats],CatM,Goal)),
+  emptyedge(Cat),
+  add_active(Cats,CatM,Goal).
+
+% parse(Ws:+<list(<word>)>, Cat:?<cat>)
+% ----------------------------------------------------------------------
+% Cat can be derived from Ws
+% ----------------------------------------------------------------------
+parse(Ws,Cat):-
+  derived_analyses(Ws,WsMid),
+  retractall(edge(_,_,_)),
+  reverse(WsMid,[],WsRev),
+  build(WsRev,0,Length),
+  edge(Length,0,Cat).
+
+% derived_analyses(WsIn:+<list(<word>)>, WsOut:-<list(<word>)>)
+% ----------------------------------------------------------------------
+% computes subderivations of WsIn
+% ----------------------------------------------------------------------
+derived_analyses([],[]).
+derived_analyses([der(Ws)|Ws2],[der(Ws,Ass,Syn,Sem)|DerWs2]):-
+  !, parse(Ws,cat(Syn,Sem,Ass,[],_)),
+  \+ member(abs(_,_,_),Ass),
+  derived_analyses(Ws2,DerWs2).
+derived_analyses([W|Ws],[W|DerWs]):-
+  derived_analyses(Ws,DerWs).
+
+% build(Ws:+<list(<word>)>, Right:+<int>, Left:-<int>)
+% ----------------------------------------------------------------------
+% finishes building chart with Ws as remaing word, starting from
+% right position Right and finishing on left position Left
+%      -- counts backwards, so Left > Right
+% ----------------------------------------------------------------------
+build([],Left,Left).
+build([W|Ws],Right,FinalLeft):-
+  RightPlus1 is Right+1,
+  ( buildact(W,Right,RightPlus1)
+  ; build(Ws,RightPlus1,FinalLeft)
+  ).
+
+% build_act(+W:<inputword>, +Left:<int>, +Right:<int>)
+% ----------------------------------------------------------------------
+% take action basedon whether input W is:
+%       [SynCat]     assume hypothetical category with syntax SynCat
+%       der(WsSub,Ass,Syn,Sem)  add derived result
+%       W            treat as input word
+% ----------------------------------------------------------------------
+buildact([SynIn],Right,RightPlus1):-
+  mapsyn(SynIn,Syn),   % add unspecified features
+  !,     add_edge(RightPlus1,Right,cat(Syn,var(X),[abs(Syn,var(X),N)],[],
+                                  ass(Syn,var(X),N))).
+buildact(der(WsSub,Ass,Syn,Sem),Right,RightPlus1):-
+  !,  add_edge(RightPlus1,Right,cat(Syn,Sem,Ass,[],
+                                  tree(der,Syn:Sem,[ders(WsSub)]))).
+buildact(W,Right,RightPlus1):-
+  lexentry(W,Syn,Sem),
+  add_edge(RightPlus1,Right,cat(Syn,Sem,[l],[],tree(lex,Syn:Sem,[leaf(W)]))).
+buildact(W,_,_):-
+    \+ (W ==> _), 
+    nl, write('Input not recognized: '), write(W), write('<br>').
+
+% mapsyn(+SynCat:<syncat>, -SynCatOut:<syncat)
+% ----------------------------------------------------------------------
+% SynCatOut is result of adding default features to subcategories of
+% SynCat if any are missing;  allows [SynCat] to specify cats without 
+% features for input;  ones with features will be passed along
+% ----------------------------------------------------------------------
+mapsyn(A/B,AM/BM):-
+  mapsyn(A,AM), mapsyn(B,BM).
+mapsyn(A\B,AM\BM):-
+  mapsyn(A,AM), mapsyn(B,BM).
+mapsyn(A-B,AM-BM):-
+  mapsyn(A,AM), mapsyn(B,BM).
+mapsyn(scop(A,B),scop(AM,BM)):-
+  mapsyn(A,AM), mapsyn(B,BM).
+mapsyn(q(A,B,C),q(AM,BM,CM)):-
+  mapsyn(A,AM), mapsyn(B,BM), mapsyn(C,CM).
+mapsyn(s,s(_)).
+mapsyn(n,n(ind(sng))).
+mapsyn(np,np(ind(sng),nm(_))).
+mapsyn(np(X,Y),np(X,Y)).
+mapsyn(n(X),n(X)).
+mapsyn(s(X),s(X)).
+
+% add_edge(Left:+<int>, Right:+<int>, Cat:+<cat>)
+% ----------------------------------------------------------------------
+% asserts edge into chart and then tries to extend it in all possible ways
+%     -- always fails to force backgracking
+% ----------------------------------------------------------------------
+add_edge(Left,Right,Cat):-
+  asserta(edge(Left,Right,Cat)),
+  ( (MotherCat ===> [Cat|Cats] if Goal)
+  ; active([Cat|Cats],MotherCat,Goal)
+  ),
+  findcats(Cats,Right,NewRight),
+  call(Goal),
+  add_edge(Left,NewRight,MotherCat).
+
+% findcats(Left:+<int>, Cats:+<cats>, Right:-<int>)
+% ----------------------------------------------------------------------
+% Cats is a list of categories spanning Left to Right
+% ----------------------------------------------------------------------
+findcats([],Left,Left).
+findcats([Cat|Cats],Left,Right):-
+  ( edge(Left,Mid,Cat),
+    findcats(Cats,Mid,Right)
+  ; emptyedge(Cat),
+    findcats(Cats,Left,Right)
+  ).
+
+% edge(Left:?<nat>, Right:?<nat>, Cat:?<cat>)                     (dynamic)
+% ----------------------------------------------------------------------
+% There is an edge with category Cat from Left to Right;
+% ----------------------------------------------------------------------
+
+% normalize_tree(+TreeIn:<tree>, -TreeOut:<tree>)
+% ----------------------------------------------------------------------
+% TreeOut is isomorphic to TreeIn, with normalized semantics at
+% every node
+% ----------------------------------------------------------------------
+normalize_tree(tree(Rule,Syn:Sem,Trees),
+               tree(Rule,Syn:SemNorm,TreesNorm)):-
+  normalize_fresh(Sem,SemNorm),
+  normalize_trees(Trees,TreesNorm).
+normalize_tree(ass(Syn,Var,Index),ass(Syn,Var,Index)).
+normalize_tree(leaf(Word),leaf(Word)).
+normalize_tree(ders(Word),ders(Word)).
+normalize_tree(empty(Syn,Sem),empty(Syn,SemNorm)):-
+  normalize_fresh(Sem,SemNorm).
+
+normalize_trees([],[]).
+normalize_trees([T|Ts],[TNorm|TsNorm]):-
+  normalize_tree(T,TNorm),
+  normalize_trees(Ts,TsNorm).
+
+
+% expandmng_tree(+TreeIn:<tree>, -TreeOut:<tree>)
+% ----------------------------------------------------------------------
+% TreeOut is isomorphic to TreeIn, with expanded semantics
+% every node
+% ----------------------------------------------------------------------
+expandmng_tree(tree(Rule,Syn:Sem,Trees),
+               tree(Rule,Syn:SemNorm,TreesNorm)):-
+  expandmng(Sem,SemNorm),
+  expandmng_trees(Trees,TreesNorm).
+expandmng_tree(ass(Syn,Var,Index),ass(Syn,Var,Index)).
+expandmng_tree(leaf(Word),leaf(Word)).
+expandmng_tree(ders(Word),ders(Word)).
+expandmng_tree(empty(Syn,Sem),empty(Syn,SemNorm)):-
+  expandmng(Sem,SemNorm).
+
+expandmng_trees([],[]).
+expandmng_trees([T|Ts],[TExp|TsExp]):-
+  expandmng_tree(T,TExp),
+  expandmng_trees(Ts,TsExp).
+
+
+% Grammar Rules
+% ========================================================================= 
+
+% C:<-cat> ===> Cs:<+list(<cat>)>
+% ----------------------------------------------------------------------
+% C can be composed of Cs; may be conditions
+
+% / elimination
+% -------------
+cat(A, address@hidden, Ass3, Qs3, tree(fe,A:address@hidden,[T1,T2]))
+===>
+[ cat(A/B, Alpha, Ass1, Qs1, T1),
+  cat(B, Beta, Ass2, Qs2, T2)
+] if
+     append(Ass1,Ass2,Ass3),
+     append(Qs1,Qs2,Qs3).
+
+% \ elimination
+% -------------
+cat(A, address@hidden, Ass3, Qs3, tree(be,A:address@hidden,[T1,T2]))
+===>
+[ cat(B, Beta, Ass1, Qs1, T1),
+  cat(B\A, Alpha, Ass2, Qs2, T2)
+] if
+     append(Ass1,Ass2,Ass3),
+     append(Qs1,Qs2,Qs3).
+
+% \ introduction
+% --------------
+cat(B\A, X^Alpha, Ass, Qs, tree(bi(N),B\A:X^Alpha,[T1]))
+===>
+[  cat(A, Alpha, [abs(B,X,N)|Ass], Qs, T1)
+] if
+    \+ T1 = tree(be,_,[_,ass(_,_,N)]),   % normal
+    at_least_one_member(l,Ass),  % non-empty condition
+     \+ ( subtree(tree(AssumeM,_,Ts),T1),      % properly nested
+          member(TMid,Ts), 
+          subtree(ass(_,_,'$VAR'(J)),TMid), 
+          J == N,
+          hypothetical_mem(AssumeM,Ass,Qs) ).
+
+% / introduction
+% --------------
+cat(A/B, X^Alpha, Ass2, Qs, tree(fi(N),A/B:X^Alpha,[T1]))
+===>
+[ cat(A,Alpha,Ass1,Qs,T1)
+] if
+     \+ T1 = tree(fe,_,[_,ass(_,_,N)]),    % normal
+     at_least_one_member(l,Ass1), % non-empty condition
+     select_last(Ass1,abs(B,X,N),Ass2),
+     \+ ( subtree(tree(AssumeM,_,Ts),T1),   % properly nested
+          member(TMid,Ts), 
+          subtree(ass(_,_,'$VAR'(J)),TMid), 
+          J == N,
+          hypothetical_mem(AssumeM,Ass1,Qs) ).
+
+% - introduction
+% --------------
+cat(A-B, X^Alpha, Ass2, Qs, tree(gi(N),(A-B):X^Alpha,[T1]))
+===>
+[ cat(A, Alpha, Ass1, Qs, T1)
+] if
+     at_least_one_member(l,Ass1),  % non-empty condition
+     select(abs(B,X,N),Ass1,Ass2),
+     \+ ( subtree(tree(AssumeM,_,Ts),T1),  % normalized?
+          member(TMid,Ts), 
+          subtree(ass(_,_,'$VAR'(J)),TMid), 
+          J == N,
+          hypothetical_mem(AssumeM,Ass1,Qs) ).
+
+
+% q quantifier pushing (q-elimination part 1)
+% ----------------------------------------------------------------------
+cat(C, var(X), Ass, [gq(B,A,Q,var(X),N)|Qs],
+          tree(qqpush(N),C:var(X),[T1]))
+===>
+[ cat(q(C,B,A), Q, Ass, Qs, T1)
+] if
+  \+ T1 = tree(qqi,_,_).     % normal
+
+% q quantifier popping (q-elimination part 2)
+% ----------------------------------------------------------------------
+cat(A, Q@(X^Alpha), Ass, Qs2, tree(qqpop(N),A:Q@(X^Alpha),[T1]))
+===>
+[ cat(B,Alpha,Ass,Qs1,T1)
+] if
+     select(gq(B,A,Q,X,N),Qs1,Qs2),
+     \+ ( subtree(tree(AssumeM,_,Ts),T1),
+          member(TMid,Ts), 
+          subtree(tree(qqpush(J),_,_),TMid), 
+          J == N,
+          hypothetical_mem(AssumeM,Ass,Qs1) ).
+
+% q quantifier introduction [restricted to q(np,s,s)]
+% ----------------------------------------------------------------------
+% restricted to A = s(_), B=np case for termination
+cat(q(np(ind(Num),Case),s(VF),s(VF)), var(P)^(var(P)@Alpha), Ass, Qs1,
+    tree(qqi,q(np(ind(Num),Case),s(VF),s(VF)):var(P)^var(P)@Alpha,[T1]))
+===>
+[ cat(np(ind(Num),Case),Alpha,Ass,Qs1,T1) 
+] if 
+  true.
+
+% coordination elimination
+% ----------------------------------------------------------------------
+cat(C, Sem, [], [], tree(coel,C:Sem,[T1,T2,T3]))
+===>
+[ cat(C, Sem1, Ass1, [], T1),
+  cat(coor, Alpha, Ass2, [],T2),
+  cat(C, Sem2, Ass3, [], T3)
+] if
+     \+ member(abs(_,_,_),Ass1),        % coordination condition
+     \+ member(abs(_,_,_),Ass2),
+     \+ member(abs(_,_,_),Ass3),
+     \+ T1 = tree(coel,_,_),
+     \+ T2 = tree(coel,_,_),
+     make_coor(C,Alpha,Sem1,Sem2,Sem).
+
+% non-boolean coordination
+% ----------------------------------------------------------------------
+%cat(np(pl,-), con(union)@address@hidden, [], [],
+%    tree(nbc,np(pl,-):con(union)@address@hidden,[T1,T2,T3]))
+%===>
+%[ cat(NP1, Alpha1, Ass1, [], T1),
+%  cat(coor, nbc, Ass2, [],T2),
+%  cat(NP3, Alpha3, Ass3, [], T3)
+% ]:-  
+%      \+ member(abs(_,_,_),Ass1),        % coordination condition
+%      \+ member(abs(_,_,_),Ass2),
+%      \+ member(abs(_,_,_),Ass3),
+%      make_nb_coor(NP1,Alpha1,Alpha1P),
+%      make_nb_coor(NP3,Alpha3,Alpha3P).
+% 
+% make_nb_coor(np,Alpha,con(singleton)@Alpha).
+% make_nb_coor(np(pl,+),Alpha,con(singleton)@Alpha).
+% make_nb_coor(np(pl,-),Alpha,Alpha).
+
+
+% subtree(-TSub:<tree>, +T:<tree>)
+% ----------------------------------------------------------------------
+% TSub is a subtree of T
+% ----------------------------------------------------------------------
+subtree(T,T).
+subtree(T,tree(_,_,Ts)):-
+  member(T2,Ts),
+  subtree(T,T2).
+
+% hypothetical_mem(Rule,Assumptions,Qs)
+% ----------------------------------------------------------------------
+% Rule is a member of the assumptions
+% ----------------------------------------------------------------------
+hypothetical_mem(fi(N),Ass,_):-
+  member(abs(_,_,M),Ass), N == M.
+hypothetical_mem(bi(N),Ass,_):-
+  member(abs(_,_,M),Ass), N == M.
+hypothetical_mem(gi(N),Ass,_):-
+  member(abs(_,_,M),Ass), N == M.
+hypothetical_mem(qqpush(N),_,Qs):-
+  member(gq(_,_,_,_,M),Qs), N == M.
+
+% make_coor(Cat,CoorSem,Sem1,Sem2,SemOut)
+% ----------------------------------------------------------------------
+% generalized coordination semantics CoorSem is applied to
+% Sem1 and Sem2 of type Cat, with result SemOut
+% ----------------------------------------------------------------------
+make_coor(s(_),Alpha,Sem1,Sem2,address@hidden@Sem2).
+make_coor(n(_),Alpha,Sem1,Sem2,var(X)^Alpha@(address@hidden(X))@(address@hidden(X))).
+make_coor(A/_,Alpha,Sem1,Sem2,var(X)^Sem):-
+  make_coor(A,Alpha,address@hidden(X),address@hidden(X),Sem).
+make_coor(_\A,Alpha,Sem1,Sem2,var(X)^Sem):-
+  make_coor(A,Alpha,address@hidden(X),address@hidden(X),Sem).
+make_coor(A-_,Alpha,Sem1,Sem2,var(X)^Sem):-
+  make_coor(A,Alpha,address@hidden(X),address@hidden(X),Sem).
+make_coor(q(_,_,A),Alpha,Sem1,Sem2,var(X)^Sem):-
+  make_coor(A,Alpha,address@hidden(X),address@hidden(X),Sem).
+
+
+% General CGI Handling
+% ========================================================================= 
+
+% start_up
+% ----------------------------------------------------------------------
+% executed when saved state is restarted;
+% tokenizes, parses and sends off input for handling;
+% halts on termination
+% ----------------------------------------------------------------------
+start_up:-
+%    getenv('QUERY_STRING', Arg),
+    prolog_flag(argv,[Arg]),
+
+                            %           write('<p>'), write(Arg), nl, ttyflush,
+  ( tokenizeatom(Arg,TokenList)
+        %                               ,write('<p>'), write(TokenList), 
ttyflush
+  ; write('Input '), write(Arg), write(' could not be tokenized'), ttyflush, 
halt
+  ),
+  ( parse_cgi(TokenList,KeyVals)
+         %                              , write('<p>'), write(KeyVals), 
ttyflush
+  ; write('Tokens '), write(TokenList), write(' could not be parsed'), halt
+  ),
+  ( action(KeyVals)
+  ; told, write('Action '), write(KeyVals), write(' could not be executed')
+  ),
+  halt.
+
+% tokenizeatom(+Input:<atom>, -Tokens:<list(<token>)>)  
+% ----------------------------------------------------------------------
+% breaks input Input into list of tokens;  
+% ----------------------------------------------------------------------
+tokenizeatom(Atom,Ws):-
+  name(Atom,Cs),
+  tokenize(Cs,Xs-Xs,Ws).
+ 
+% tokenize(+Chars:<list(<char>)>, +CharsSoFar:<d_list(<char>)>,
+%          -Tokens:<list(<token>)>)
+% ----------------------------------------------------------------------
+% Tokens is the list of tokens retrieved from Chars; ChrsSoFar 
+% accumulates prefixes of atoms being recognized
+% ----------------------------------------------------------------------
+tokenize([C1,C2,C3|Cs],Xs-Ys,TsResult):-     % special symbol
+  name('%',[C1]),
+  specialsymbol(C2,C3,SpecialSymbol),
+  !, 
+  ( Xs = []
+    -> TsResult = [SpecialSymbol|TsOut]
+  ; Ys = [],
+    name(CsAtom,Xs),
+    TsResult = [CsAtom,SpecialSymbol|TsOut]
+  ), 
+  tokenize(Cs,Zs-Zs,TsOut).
+tokenize([C|Cs],Xs-Ys,TsResult):-           % one-character operator
+  isoperator(C),
+  !, name(OpToken,[C]),
+  ( Xs = []
+    -> TsResult = [OpToken|Ts]
+  ; Ys = [],
+    name(CsAtom,Xs),
+    TsResult = [CsAtom,OpToken|Ts]
+  ),
+  tokenize(Cs,Zs-Zs,Ts).
+tokenize([C|Cs],Xs-[C|Ys],Ts):-             % more of string
+  tokenize(Cs,Xs-Ys,Ts).
+tokenize([],Xs-_,[]):-                      % no more input; nothing accum.
+  Xs = [], !.
+tokenize([],Xs-[],[CsAtom]):-               % no more input; stringg accum.
+  name(CsAtom,Xs).
+
+% isoperator(+Char:<char>)
+% ----------------------------------------------------------------------
+% Char is the name of an operator character
+% ----------------------------------------------------------------------
+isoperator(Char):-
+  name(Op,[Char]),
+  isoptab(Op).
+
+isoptab('%').
+isoptab('+').
+isoptab('&').
+isoptab('=').
+
+% specialsymbol(+C1:<char>, +C2:<char>, -S:<token>)
+% ----------------------------------------------------------------------
+% C1 and C2 are the names of characters completing a % special symbol
+% ----------------------------------------------------------------------
+specialsymbol(C1,C2,S):-
+  name(N1,[C1]), name(N2,[C2]),
+  ( sstab(N1,N2,S), !
+  ; S = spec(N1,N2)
+  ).
+
+sstab(2,'C',',').
+sstab(2,'F','/').
+sstab(2,8,'(').
+sstab(2,9,')').
+sstab(5,'B','[').
+sstab(5,'C','\\').
+sstab(5,'D',']').
+sstab(3,'D','=').
+sstab(3,'E','>').
+
+
+% parse_cgi(+TokenList:<list(<token>)>, -KeyVals:<list(<keyval>)>)
+% ----------------------------------------------------------------------
+% KeyVals is Key/Val list resulting from parsing TokenList using
+% the compiled DCG to perform a top-down parse
+% ----------------------------------------------------------------------
+parse_cgi(TokenList,KeyVals):-
+    keyvalseq(KeyVals,TokenList,[]).
+
+% Grammar for Parser
+% ----------------------------------------------------------------------
+keyvalseq([KeyVal|KeyVals]) --> 
+   keyval(KeyVal), andkeyvalseq(KeyVals). 
+keyvalseq([]) --> [].
+
+andkeyvalseq(KeyVals) --> ['&'], keyvalseq(KeyVals).
+andkeyvalseq([]) --> [].
+
+keyval(key(Key,Val)) --> [Key,'='], valseq(Val).
+
+% valseq(rec(Ws,Cat)) --> valseq(Ws), as(Cat).
+
+% as('$ANY') --> [].
+% as(Cat) --> optplus, ['=','>'], optplus, val(Cat).
+
+% valseq([]) --> [].   % subsumed by plusvalseq([]) --> []
+valseq([Val|Vals]) --> val(Val), plusvalseq(Vals).
+valseq(Vals) --> plusvalseq(Vals).
+
+plusvalseq([]) --> [].
+plusvalseq(Vals) --> ['+'], valseq(Vals).
+
+optplus --> [].
+optplus --> ['+'].
+
+val(X) --> ['['], valseq(X), [']'].
+val(der(X)) --> [der,'('], valseq(X), [')'].
+val(X) --> atomval(X).
+val(X/Y) --> atomval(X), ['/'], atomval(Y).
+val(Y\X) --> atomval(Y), ['\\'], atomval(X).
+val(X-Y) --> atomval(Y), ['-'], atomval(X).
+val(Term) --> atom(Fun), ['('], argvals(Args), [')'],   {Term =.. [Fun|Args]}.
+
+argvals([]) --> [].
+argvals([Arg|Args]) -->
+  val(Arg), commaargvals(Args).
+
+commaargvals(Args) -->
+  [','], argvals(Args).
+commaargvals([]) -->
+  [].
+
+atomval(X) --> atom(X).
+atomval(X) --> ['('], val(X), [')'].
+
+atom(X) --> [X], {atomic(X)}.
+
+
+% Specific CGI Query Handling
+% ========================================================================= 
+
+% action(+KeyVals:<list(<keyval>)>)
+% ----------------------------------------------------------------------
+% take an action based on list of KeyVals
+% ----------------------------------------------------------------------
+action(KeyVals):-
+    retractall(keyvalscgi(_)),
+    assert(keyvalscgi(KeyVals)),
+    member(key(inputfrom,[InputFrom]),KeyVals),
+    ( InputFrom = 'Typing'
+      -> member(key(parsestringone,Ws),KeyVals)
+    ; InputFrom = 'Corpus' 
+      -> member(key(parsestringtwo,Ws),KeyVals)
+    ), 
+%                                 write('<p>'), write(Ws), nl,
+    nl, write('P<font size=-1>ARSE</font> R<font size=-1>ESULTS FOR:</font> 
<cite>'),
+    writelist(Ws),
+    write('</cite><br><br>'), nl,
+    member(key(outputform,[OutForm]),KeyVals),
+    member(key(outputsyn,OutSynSym),KeyVals),
+    outsyn(OutSynSym,OutSyn),
+    act(OutForm,OutSyn,Ws).
+  
+keyvalcgi(Key,Val):-
+keyvalscgi(KeyVals),
+  member(key(Key,Val),KeyVals).  
+
+outsyn(['Any'],_).
+outsyn(['Finite','S'],s(fin)).
+outsyn(['Noun','Phrase'],np(_,_)).
+
+% act(+Form:<form>, ?Syn:<syn>, +Ws:<list(<word>)>)
+% ----------------------------------------------------------------------
+% the input Ws is parsed and output in form Form;
+% ----------------------------------------------------------------------
+act(OutForm,OutSyn,Ws):-
+    findall(Tree, ( parse(Ws,cat(OutSyn,_,Ass,[],Tree)),
+                   \+ member(abs(_,_,_),Ass) ),     Trees),  % all parses
+    ( Trees = [],
+      !, write('<BR> No Parses Found')                       % none found
+    ; ( keyvalcgi(expandmng,['Yes']),
+        !, expandmng_trees(Trees,Trees2)
+      ; Trees2 = Trees
+      ),
+      ( keyvalcgi(normalize,['Yes']),
+        !, normalize_trees(Trees2,Trees3)
+      ; Trees3 = Trees2
+      ),
+        write('parse('),
+        write_term(Ws,[quoted(true)]),
+        write(',Cat).<br>'), nl,
+      actout(OutForm,Trees3)
+   ).
+
+
+
+% actout(+Form:<form>, +Ts:<list(<tree>)>)
+% ----------------------------------------------------------------------
+% return output for list of trees Ts in form Form
+% ----------------------------------------------------------------------
+actout('Text',Trees):-
+  write('<PRE>'), nl,  
+  texttreelist(Trees),
+  nl, write('</PRE>').
+actout('Prawitz',Ts):-
+  htmltreelist(Ts).  
+actout('Fitch',Ts):-
+  fitchtreelist(Ts).
+
+
+
+texttreelist([]).
+texttreelist([T|Ts]):-
+  pp_tree(T),
+  nl, write('<BR>'), nl,
+  texttreelist(Ts).
+
+htmltreelist([]).
+htmltreelist([T|Ts]):-
+  pp_html_table_tree(T),
+  nl, write('<BR>'), nl,
+  htmltreelist(Ts).  
+
+fitchtreelist([]).
+fitchtreelist([T|Ts]):-
+  pp_html_table_fitch_tree(T),
+  nl, write('<BR>'), nl,
+  fitchtreelist(Ts).
+
+
+% PRETTY PRINTING ROUTINES
+% ======================================================================
+
+% pp_html_table_tree(+Tree:<tree>)
+% ----------------------------------------------------------------------
+% Tree is output as an HTML table;  first numbered
+% ----------------------------------------------------------------------
+pp_html_table_tree(T):-
+  numbervars(T),
+%   nl, 
+%   write_term(T,[quoted(true)]), 
+%   nl, write('<P>'),
+  pp_html_tree(T).
+
+% pp_html_tree(+Tree:<tree>)
+% ----------------------------------------------------------------------
+% Tree is output as an HTML table;  assume numbered
+% ----------------------------------------------------------------------
+pp_html_tree(ass(Syn,V,'$VAR'(N))):-
+  write('['), pp_cat(Syn:V), write(']<sup>'), write(N), write('</sup>').
+pp_html_tree(leaf(Word)):-
+  pp_word(Word).
+pp_html_tree(ders(Words)):-
+  pp_word_list(Words).
+pp_html_tree(empty(Syn,Sem)):-
+  nl, write('<TABLE BORDER=1>'), nl,
+  write('<TR VALIGN=bottom>
+         <TD ALIGN=CENTER>-</TD>
+         <TD ROWSPAN=2 ALIGN=CENTER>Nil</TD>
+         </TR>'), 
+  nl,
+  write('<TR VALIGN=bottom>
+         <TD ALIGN=CENTER>'), 
+  pp_cat(Syn:Sem), 
+  write('</TD></TR>'),
+  nl,
+  write('</TABLE>').
+pp_html_tree(tree(Rule,Root,SubTrees)):-
+  nl, write('<TABLE BORDER=1>'), nl,
+  write('<TR VALIGN=bottom>'), nl,
+  pp_html_trees(SubTrees,0,N),
+  nl, 
+  ( Rule = lex 
+    -> true
+  ; write('<TD ROWSPAN=2 ALIGN=CENTER>'), pp_rule(Rule), write('</TD>')
+  ),
+  write('</TR>'),
+  write('<TR VALIGN=bottom><TD ALIGN=CENTER COLSPAN='), write(N), write('>'), 
+  pp_cat(Root),
+  write('</TD></TR>'),
+  nl, write('</TABLE>').
+
+% pp_html_trees(+Trees: <list(<tree>)>,+N:<int>,-M:<int>)
+% ----------------------------------------------------------------------
+% prints the trees in Trees, where (M-N) is the length of the list (N
+% acts as an accumulator, initialized to 0
+% ----------------------------------------------------------------------
+pp_html_trees([T|Ts],N,M):-
+  write('<TD ALIGN=center>'), pp_html_tree(T),
+  write('</TD>'),
+  K is N+1,
+  pp_html_trees(Ts,K,M).
+pp_html_trees([],N,N).
+
+% pp_html_table_fitch_tree(+T:<tree>)
+% ----------------------------------------------------------------------
+% T is numbered and output as a table Fitch-style
+% ----------------------------------------------------------------------
+pp_html_table_fitch_tree(T):-
+  numbervars(T),
+  nl, write('<TABLE BORDER=1>'), 
+  pp_html_fitch_tree(T,1,_,_,_,[],_),
+  nl, write('</TABLE>').
+
+% pp_html_fitch_tree(+Tree:<tree>, +Start:<int>, -Next:<int>, -Me:<int>,
+%                    +Exp:<exp>, 
+%                    +AssIn:<list(<assgn>)>, -AssOut:<list(<assgn>)>)
+% ----------------------------------------------------------------------
+% the rows of the table for Tree are printed;
+% Start is where the numbering begins; Next is the next available number
+% after last one used; Me is the row representing the output of the 
+% derivation;  Exp is the expression corresponding to Tree;
+% AssIn are existing assignments coming in and AssOut are assignments 
+% going out (an <assgn> is a pair ass(M,X) where M is a row number on the
+% table and X is the abstracted variable)
+% ----------------------------------------------------------------------
+pp_html_fitch_tree(tree(der,Root,[ders(Words)]),M,N,M,Exp,Ass,Ass):-
+  !, nl, write('<TR><TD>'), 
+  write(M), write('</TD><TD>'), 
+  map_word(Words,Exp), pp_exp(Exp), 
+  write('-'), pp_cat(Root), 
+  write('</TD><TD>'), write('Der'), write('</TD></TR>'), nl,
+  N is M+1.
+pp_html_fitch_tree(tree(lex,Root,[leaf(Word)]),M,N,M,Word,Ass,Ass):-
+  !, nl, write('<TR><TD>'), 
+  write(M), write('</TD><TD>'), pp_exp(Word), write('-'), pp_cat(Root), 
+  write('</TD><TD>'), write('Lex'), write('</TD></TR>'), nl,
+  N is M+1.
+pp_html_fitch_tree(tree(fe,Root,[T1,T2]),M,N,L,Exp1+Exp2,AssIn,AssOut):-
+  !, pp_html_fitch_tree(T1,M,K,Source1,Exp1,AssIn,AssMid),
+  pp_html_fitch_tree(T2,K,L,Source2,Exp2,AssMid,AssOut),
+  nl, write('<TR><TD>'), 
+  write(L), write('</TD><TD>'), pp_exp(Exp1+Exp2), write('-'), pp_cat(Root), 
+  write('</TD><TD>'), write('E/ '), write((Source1,Source2)), 
write('</TD></TR>'), nl, 
+  N is L + 1.
+pp_html_fitch_tree(tree(be,Root,[T1,T2]),M,N,L,Exp1+Exp2,AssIn,AssOut):-
+  !, pp_html_fitch_tree(T1,M,K,Source1,Exp1,AssIn,AssMid),
+  pp_html_fitch_tree(T2,K,L,Source2,Exp2,AssMid,AssOut),
+  nl, write('<TR><TD>'), 
+  write(L), write('</TD><TD>'), pp_exp(Exp1+Exp2), write('-'), pp_cat(Root), 
+  write('</TD><TD>'), write('E\\ '), write((Source1,Source2)), 
write('</TD></TR>'), nl,
+  N is L + 1.
+pp_html_fitch_tree(tree(qqi,Root,[T]),M,Next,Me,Exp,AssIn,AssOut):-
+  !, pp_html_fitch_tree(T,M,Me,Source,Exp,AssIn,AssOut),
+  nl, write('<TR><TD>'), 
+  write(Me), write('</TD><TD>'), pp_exp(Exp), write('-'), pp_cat(Root), 
+  write('</TD><TD>'), write('q I '), write(Source), write('</TD></TR>'), nl,
+  Next is Me+1.
+pp_html_fitch_tree(tree(coel,Root,[T1,T2,T3]),M,N,L,Exp1+Exp2+Exp3,AssIn,AssOut):-
+  !, pp_html_fitch_tree(T1,M,K,Source1,Exp1,AssIn,AssMid),
+  pp_html_fitch_tree(T2,K,L1,Source2,Exp2,AssMid,AssMid2),
+  pp_html_fitch_tree(T3,L1,L,Source3,Exp3,AssMid2,AssOut),
+  nl, write('<TR><TD>'), 
+  write(L), write('</TD><TD>'), pp_exp(Exp1+Exp2+Exp3), write('-'), 
pp_cat(Root), 
+  write('</TD><TD>'), write('E co '), write((Source1,Source2,Source3)), 
write('</TD></TR>'), nl,
+  N is L + 1.
+pp_html_fitch_tree(tree(fi(_),(C1/C2):(var(X)^Sem),[T]),M,Q,N,ExpNew,AssIn,AssOut):-
+    K is M+1,
+    write('<TR><TD COLSPAN=3><TABLE BORDER=1>'),
+    write('<TR><TD>'), write(M), write('</TD><TD>'),
+    X = '$VAR'(Num), 
+  cat_atoms(Num,'</sub>',ExpMid),
+  cat_atoms('e<sub>',ExpMid,ExpNum),
+    pp_exp(ExpNum),  write(' - '),
+    pp_cat(C2:var(X)), write('</TD><TD>'), write('Assume</TD></TR>'),
+    pp_html_fitch_tree(T,K,N,L, Exp, [ass(M,X)|AssIn],AssOut),
+    write('<TR><TD>'), write(N), write('</TD><TD>'),
+    removeexp(ExpNum,Exp,ExpNew),
+    pp_exp(ExpNew), write(' - '), pp_cat(C1/C2:var(X)^Sem), write('</TD><TD>'),
+    write('/I '), write((M,L)), write('</TD></TR>'),
+    write('</TD></TR></TABLE>'),
+    Q is N+1.
+pp_html_fitch_tree(tree(bi(_),(C2\C1):(var(X)^Sem),[T]),M,Q,N,ExpNew,AssIn,AssOut):-
+    K is M+1,
+    write('<TR><TD COLSPAN=3><TABLE BORDER=1>'),
+    write('<TR><TD>'), write(M), write('</TD><TD>'),
+    X = '$VAR'(Num), 
+  cat_atoms(Num,'</sub>',ExpMid),
+  cat_atoms('e<sub>',ExpMid,ExpNum),
+    pp_exp(ExpNum),  write(' - '),
+    pp_cat(C2:var(X)), write('</TD><TD>'), write('Assume</TD></TR>'),
+    pp_html_fitch_tree(T,K,N,L, Exp, [ass(M,X)|AssIn],AssOut),
+    write('<TR><TD>'), write(N), write('</TD><TD>'),
+    removeexp(ExpNum,Exp,ExpNew),
+    pp_exp(ExpNew), write(' - '), pp_cat(C2\C1:var(X)^Sem), write('</TD><TD>'),
+    write('/I '), write((M,L)), write('</TD></TR>'),
+    write('</TD></TR></TABLE>'),
+    Q is N+1.
+pp_html_fitch_tree(tree(gi(_),(C1-C2):var(X)^Sem,[T]),M,Q,N,ExpNew,AssIn,AssOut):-
+  K is M+1,
+    write('<TR><TD COLSPAN=3><TABLE BORDER=1>'),
+    write('<TR><TD>'), write(M), write('</TD><TD>'),
+    X = '$VAR'(Num), 
+  cat_atoms(Num,'</sub>',ExpMid),
+  cat_atoms('e<sub>',ExpMid,ExpNum),
+    pp_exp(ExpNum),  write(' - '),
+    pp_cat(C2:var(X)), write('</TD><TD>'), write('Assume</TD></TR>'),
+    pp_html_fitch_tree(T,K,N,L,Exp, [ass(M,X)|AssIn],AssOut),
+    write('<TR><TD>'), write(N), write('</TD><TD>'),
+    splitexp(ExpNum,Exp,ExpNew),
+    pp_exp(ExpNew), write(' - '),
+    pp_cat((C1-C2):var(X)^Sem), write('</TD><TD>'), 
+    write('I- '), write((M,L)), write('</TD></TR>'),
+    write('</TD></TR></TABLE>'),
+    Q is N+1.
+% pp_html_fitch_tree(tree(qqpop(N),A:(Q@(X^Alpha)),[T1]),M,N,K,Exp,Ass,Ass):-
+%   !, replace_qtree(qqpush(N),T1,T1Mid,T1Extract),
+%   pp_html_fitch_tree(T1Extract,M,L,J,_,_,_),
+%   pp_html_fitch_tree(T1Mid,L,P,I,_,_,_),
+%   write('<TR><TD>'), write(P), write('</TD><TD>'),
+%   pp_exp(Exp), write(' - '), 
+%   pp_cat(A:(Q@(X^Alpha))), write('</TD><TD>'),
+%   write(' '). 
+pp_html_fitch_tree(empty(Syn,Sem),M,N,M,[],Ass,Ass):-
+  !, nl, write('<TR><TD>'), 
+  write(M), write('</TD><TD>'), write('NIL'), write(' '), pp_cat(Syn:Sem), 
+  write('</TD><TD>'), write('Empty'), write('</TD></TR>'), nl,
+  N is M+1.
+pp_html_fitch_tree(ass(_Syn,var(Var),_),N,N,M,Exp,Ass,Ass):-
+  member(ass(M,Var),Ass),
+  Var = '$VAR'(Num),
+  cat_atoms(Num,'</sub>',ExpMid),
+  cat_atoms('e<sub>',ExpMid,Exp).
+
+% removexp(+ExpRem:<exp>,+Exp:<exp>,-ExpOut:<exp>)
+% ----------------------------------------------------------------------
+% he expression ExpRem is removed from Exp with result ExpOut
+% ----------------------------------------------------------------------
+removeexp(E,E,'NIL'):-!.
+removeexp(E,E+E2,E2):-!.
+removeexp(E,E2+E,E2):-!.
+removeexp(E,E2+E3,E2New+E3New):-
+  !, removeexp(E,E2,E2New),
+  removeexp(E,E3,E3New).
+removeexp(_,E2,E2).
+
+% splitexp(+ExpRem:<exp>, +Exp:<exp>, -ExpOut:<exp>)
+% ----------------------------------------------------------------------
+% ExpRem is removed from Exp with ExpOut left over;  the extraction
+% site is represented as a split point
+% ----------------------------------------------------------------------
+splitexp(E,E,('NIL','NIL')):-!.
+splitexp(E,E+E2,('NIL',E2)):-!.
+splitexp(E,E2+E,(E2,'NIL')):-!.
+splitexp(E,E1+E2,(E3,E4+E2)):-
+  splitexp(E,E1,(E3,E4)), !.
+splitexp(E,E1+E2,(E1+E3,E4)):-
+  splitexp(E,E2,(E3,E4)).
+
+% pp_exp(+Exp:<exp>)
+% ----------------------------------------------------------------------
+% the expression Exp is output;  concatenations are represented as
+% spaces and split points by (_,_) and empty by '0'
+% ----------------------------------------------------------------------
+pp_exp('NIL'):-
+  !, write(0).
+pp_exp(A+'NIL'):-
+  !, pp_exp(A).
+pp_exp(B+'NIL'):-
+  !, pp_exp(B).
+pp_exp(A+B):-
+  !, pp_exp(A), write(' '), pp_exp(B).
+pp_exp((A,B)):-
+  !, write('('), pp_exp(A), write(', '), pp_exp(B), write(')').
+pp_exp(A):-
+  pp_word(A).
+
+map_word([[_]|Ws],Exp):-
+  !, map_word(Ws,Exp).
+map_word([W|Ws],Exp):-
+  map_word(Ws,W,Exp).
+map_word([],'NIL').
+
+map_word(Ws,[_],W):-
+ !, map_word(Ws,W).
+map_word([],W,W).
+map_word([W|Ws],W1,W1+Exp):-
+  map_word(Ws,W,Exp).
+
+pp_exps([]).
+pp_exps([Exp|Exps]):-
+  pp_exp(Exp), write('+'), pp_exp(Exps).
+
+% pp_tree(+T:<tree>)
+% ----------------------------------------------------------------------
+% tree T is output in indented list notation; first number
+% ----------------------------------------------------------------------
+pp_tree(T):-
+  numbervars(T),
+  pp_tree(T,0).
+
+% pp_tree(+T:<tree>, +Col:<int>)
+% ----------------------------------------------------------------------
+% print tree T beginning at column Col
+% ----------------------------------------------------------------------
+pp_tree(empty(Syn,Sem),Col):-
+  nl, tab(Col), pp_cat(Syn:Sem), write(' via empty').
+pp_tree(ass(Syn,V,'$VAR'(N)),Column):-
+  nl, tab(Column), write('['), pp_cat(Syn:V), write(']'), 
+  write('<SUP>'), write(N), write('</SUP>').
+pp_tree(leaf(Word),Column):-
+  nl, tab(Column), pp_word(Word).
+pp_tree(ders(Words),Column):-
+  nl, tab(Column), pp_word_list(Words).
+pp_tree(tree(Rule,Root,SubTrees),Column):-
+  nl, tab(Column),
+  pp_cat(Root),
+  write(' via '), pp_rule(Rule),
+  NewColumn is Column + 2,
+  pp_trees(SubTrees,NewColumn).
+
+% pp_trees(+Ts:<list(<tree>)>, +Col:<int>)
+% ----------------------------------------------------------------------
+% print tree list Ts beginning at column Col
+% ----------------------------------------------------------------------
+pp_trees([T|Ts],Column):-
+  pp_tree(T,Column),
+  pp_trees(Ts,Column).
+pp_trees([],_).
+
+% pp_word_list(+Ws:<list(<word>)>)
+% ----------------------------------------------------------------------
+% the list of words Ws is output, ignoring non-atoms
+% ----------------------------------------------------------------------
+pp_word_list([]).
+pp_word_list([W|Ws]):-
+  atom(W), !, pp_word(W), pp_word_list_rest(Ws).
+pp_word_list([_|Ws]):-
+  pp_word_list(Ws).
+
+pp_word(W):-
+  write('<I>'), write(W), write('</I>').
+
+% pp_word_list_rest(+Ws:<list(<word>)>)
+% ----------------------------------------------------------------------
+% word list Ws is output with an initial blank if Ws is non-empty
+% ----------------------------------------------------------------------
+pp_word_list_rest([]).
+pp_word_list_rest([W|Ws]):-
+  atom(W), !, write(' '), pp_word(W), pp_word_list_rest(Ws).
+pp_word_list_rest([_|Ws]):-
+  pp_word_list_rest(Ws).
+
+% pp_cat(Cat:<cat>)
+% ----------------------------------------------------------------------
+% pretty print category Cat
+% ----------------------------------------------------------------------
+pp_cat(Syn:Sem):-
+  pp_lam(Sem), write(' : '), pp_syn(Syn).
+
+% pp_syn(SynCat:<syncat>)
+% ----------------------------------------------------------------------
+% pretty print syntactic category
+% ----------------------------------------------------------------------
+pp_syn(A/B):-
+  !, pp_syn(A), write('/'), pp_syn_paren(B).
+pp_syn(A-B):-
+  !, pp_syn(A), write('-'), pp_syn_paren(B).
+pp_syn(B\A):-
+  !, pp_syn_paren(B), write('\\'), pp_syn_back(A).
+pp_syn(q(A,B,B)):-
+  !, pp_syn(scop(A,B)).
+pp_syn(q(A,B,C)):-
+  !, write('q('), pp_syn(A), write(','), pp_syn(B), write(','), 
+  pp_syn(C), write(')'). 
+pp_syn(scop(A,B)):-
+  !, pp_syn(A), write('^^'), pp_syn(B).
+pp_syn(C):-
+  pp_bas_cat(C).
+
+% pp_syn_paren(SynCat:<syncat>)
+% ----------------------------------------------------------------------
+% pretty print syntactic category with enclosing parens if it
+% is functional (used for arguments)
+% ----------------------------------------------------------------------
+pp_syn_paren(A/B):-
+  !, pp_paren(A/B).
+pp_syn_paren(A-B):-
+  !, pp_paren(A-B).
+pp_syn_paren(B\A):-
+  !, pp_paren(B\A).
+pp_syn_paren(q(A,B,B)):-
+  !, pp_paren(q(A,B,B)).
+pp_syn_paren(q(A,B,C)):-
+  !, pp_syn(q(A,B,C)).
+pp_syn_paren(C):-
+  pp_bas_cat(C).
+
+% pp_paren(+C:<cat>)
+% ----------------------------------------------------------------------
+% category Cat is pretty printed with surrounding parens
+% ----------------------------------------------------------------------
+pp_paren(C):-
+  write('('), pp_syn(C), write(')').
+
+% pp_syn_back(+Cat:<cat>)
+% ----------------------------------------------------------------------
+% Cat is pretty printed as the result of a backward functor
+% ----------------------------------------------------------------------
+pp_syn_back(A/B):-
+  !, pp_syn_paren(A/B).
+pp_syn_back(A-B):-
+  !, pp_syn_paren(A-B).
+pp_syn_back(A):-
+  pp_syn(A).
+
+% pp_bas_cat(+BasCat:<bascat>)
+% ----------------------------------------------------------------------
+% the basic category BasCat is pretty printed
+% ----------------------------------------------------------------------
+pp_bas_cat(Cat):-
+  writecat(Cat,Atom,Subs,Sups),
+  write(Atom),
+  writesubs(Subs),
+  writesups(Sups).
+  
+% writecat(+BasCat:<bascat>,-Root:<atom>,-Subs:<list>,-Sups:<list>)
+% ----------------------------------------------------------------------
+% basic category BasCat is printed as Root with superscripts Sups
+% and subscripts Subs
+% ----------------------------------------------------------------------
+writecat(np(ind(sng),nm(_)),np,[],[]):-!.
+writecat(np(ind(sng),pp(C)),np,[C],[]):-!.
+writecat(np(ind(plu),nm(_)),np,[p],[]):-!.
+writecat(np(ind(plu),pp(C)),np,[p,C],[]):-!.
+writecat(np(ind(_),nm(_)),np,[],[]):-!.
+writecat(np(set,nm(_)),np,[p],['*']):-!.
+writecat(np(set,pp(C)),np,[p,C],['*']):-!.
+writecat(np(_,_),np,[],[]):-!.
+writecat(s(fin),s,[],[]):-!.
+writecat(s('$VAR'(_)),s,[],[]):-!.
+writecat(s(V),s,[V],[]):-!.
+writecat(n(ind(plu)),n,[p],[]):-!.
+writecat(n(set),n,[p],['*']):-!.
+writecat(n(ind(sng)),n,[],[]):-!.
+writecat(n(_),n,[],[]):-!.
+writecat(sc(th(fin)),sc,[th,fin],[]):-!.
+writecat(sc(th(bse)),sc,[th,bse],[]):-!.
+writecat(sc(wh),sc,[wh],[]):-!.
+writecat(sc(if),sc,[if],[]):-!.
+writecat(sc(_),sc,[],[]):-!.
+writecat(ex(it),ex,[it],[]):-!.
+writecat(ex(th(_)),ex,[th],[]):-!.
+writecat(ex(_),ex,[],[]):-!.
+writecat(C,C,[],[]).
+
+% writesubs(+List:<list>)
+% ----------------------------------------------------------------------
+% List is output as a subscript
+% ----------------------------------------------------------------------
+writesubs([]).
+writesubs([X|Xs]):-
+  write('<SUB>'),
+  writelistsubs(Xs,X),
+  write('</SUB>').
+
+% writesups(+List:<list>)
+% ----------------------------------------------------------------------
+% List is output as a superscript
+% ----------------------------------------------------------------------
+writesups([]).
+writesups([X|Xs]):-
+  write('<SUP>'),
+  writelistsubs(Xs,X),
+  write('</SUP>').
+
+% writelistsubs(+Xs:<list>, +X:<term>)
+% ----------------------------------------------------------------------
+% Xs is written as a list with commas as separators
+% ----------------------------------------------------------------------
+writelistsubs([],X):-
+ write(X).
+writelistsubs([X|Xs],Y):-
+  write(Y), write(' ,'), writelistsubs(Xs,X).
+
+% pp_lam(+Term:<lambdaterm>)
+% ----------------------------------------------------------------------
+% lambda term Term is pretty printed
+% ----------------------------------------------------------------------
+pp_lam(Var^Alpha):-
+  !, pp_lam(Var), write('<B>. </B>'), pp_lam(Alpha). 
+pp_lam(con(and)@address@hidden):-
+  !, pp_lam_paren(Alpha), write(' &amp '), pp_lam_paren(Beta).
+pp_lam(con(or)@address@hidden):-
+  !, pp_lam_paren(Alpha), write(' <b>or</b> '), pp_lam_paren(Beta).
+pp_lam(con(not)@Alpha):-
+  !, write(' &#172 '), write('('), pp_lam_paren(Alpha), write(')').
+pp_lam(address@hidden):-
+  !, pp_lam_bracket(Alpha),
+  write('('),
+  pp_lam(Beta),
+  write(')').
+pp_lam(var('$VAR'(N))):-
+  !, write('<I>'), write(x), write('<SUB>'), write(N), write('</SUB></I>').
+pp_lam(con(Con)):-
+  write('<B>'), write(Con), write('</B>').
+
+pp_lam_bracket(A^B):-
+  !, write('('), pp_lam(A^B), write(')').
+pp_lam_bracket(A):-
+  pp_lam(A).
+
+% pp_lam_paren(+Term:<lambdaterm>)
+% ----------------------------------------------------------------------
+% lambda term Term is pretty printed
+% ----------------------------------------------------------------------
+pp_lam_paren(Var^Alpha):-
+  !, pp_lam(Var), write('<B>. </B>'), pp_lam(Alpha). 
+pp_lam_paren(con(and)@address@hidden):-
+  !, write('('), pp_lam_paren(Alpha), write(' &amp '), pp_lam_paren(Beta), 
write(')').
+pp_lam_paren(con(or)@address@hidden):-
+  !, write('('), pp_lam_paren(Alpha), write(' <b>or</b> '), 
pp_lam_paren(Beta), write(')').
+pp_lam_paren(con(not)@Alpha):-
+  !, write(' &#172 '), write('('), pp_lam_paren(Alpha), write(')').
+pp_lam_paren(address@hidden):-
+  !, pp_lam(Alpha),
+  write('('),
+  pp_lam(Beta),
+  write(')').
+pp_lam_paren(var('$VAR'(N))):-
+  !, write('<I>'), write(x), write('<SUB>'), write(N), write('</SUB></I>').
+pp_lam_paren(con(Con)):-
+  write('<B>'), write(Con), write('</B>').
+
+% pp_rule(+Rule:<rulename>)
+% ----------------------------------------------------------------------
+% rule Rule is pretty printed
+% ----------------------------------------------------------------------
+pp_rule(fe):-write('/E').
+pp_rule(be):-write('\\E').
+pp_rule(fi('$VAR'(N))):-write('/I<sup>'), write(N), write('</sup>').
+pp_rule(bi('$VAR'(N))):-write('\\I<sup>'), write(N), write('</sup>').
+pp_rule(gi('$VAR'(N))):-write('-I<sup>'), write(N), write('</sup>').
+pp_rule(qqpush('$VAR'(N))):-write('qE<sup>'), write(N), write('</sup>').
+pp_rule(qqpop('$VAR'(N))):-write(N).
+pp_rule(qqi):-write(qI).
+pp_rule(coel):-write('coE').
+pp_rule(lex):-write('L').
+pp_rule(der):-write('D').
+pp_rule(nbc):-write('NBC').
+pp_rule(qi):-write('qI').
+
+
+% Standard Utilities
+% ======================================================================
+
+member(X,[X|_]).
+member(X,[_|Xs]):-
+  member(X,Xs).
+
+append_list([],[]).
+append_list([Xs|Xss],Ys):-
+  append(Xs,Zs,Ys),
+  append_list(Xss,Zs).
+
+append([],Xs,Xs).
+append([X|Xs],Ys,[X|Zs]):-
+  append(Xs,Ys,Zs).
+
+at_least_one_member(X,[X|_]):-!.
+at_least_one_member(X,[_|Xs]):-
+  at_least_one_member(X,Xs).
+
+numbervars(X):-
+  numbervars(X,0,_).
+
+reverse([],Ws,Ws).
+reverse([W|Ws],WsAcc,WsRev):-
+  reverse(Ws,[W|WsAcc],WsRev).
+
+select(X,[X|Xs],Xs).
+select(X,[Y|Xs],[Y|Zs]):-
+  select(X,Xs,Zs).
+
+select_last([X],X,[]).
+select_last([X|Xs],Y,[X|Zs]):-
+  select_last(Xs,Y,Zs).
+
+cat_atoms(A1,A2,A3):-
+  name(A1,L1),
+  name(A2,L2),
+  append(L1,L2,L3),
+  name(A3,L3).
+
+writelist([der(Ws)|Ws2]):-
+  !, writelist(Ws), write(' '), writelist(Ws2).
+writelist([W|Ws]):-
+  write(W), write(' '),
+  writelist(Ws).
+writelist([]).
+
+write_lex_cat(File):-
+  tell(File),
+  write('<HTML><HEAD><TITLE>Natural Deduction CG 
Parser</TITLE></HEAD><BODY><b> L<FONT SIZE = -1>EXICON</FONT> </b><br><br><FONT 
SIZE=-1>'), nl, nl,
+  setof(lexe(W,Syn:Sem),lexentry(W,Syn,Sem),Ws),
+  !,   writebreaklex(Ws),
+  nl, write('</FONT></HEAD></HTML>'), nl,
+  told.
+       
+writebreaklex([]).
+writebreaklex([W|Ws]):-
+  writebreaklex(Ws,W).
+
+writebreaklex([],lexe(W,Cat)):-
+  write(W), write(' ==> '), 
+  pp_cat(Cat), nl.
+writebreaklex([W2|Ws],lexe(W,Cat)):-
+  write(W), write(' ==> '), 
+  pp_cat(Cat), 
+  write(' <BR> '), nl,
+  writebreaklex(Ws,W2).
+
+write_lex(File):-
+  tell(File),
+  write('<HTML><HEAD><TITLE>Natural Deduction CG 
Parser</TITLE></HEAD><BODY><b> L<FONT SIZE = -1>EXICON</FONT> </b><br><FONT 
SIZE=-1><BR>'), nl,
+  setof(W,C^(W==>C),Ws),
+  !,   writebreak(Ws),
+  nl, write('</FONT></HEAD></HTML>'), nl,
+  told.
+
+writebreak([]).
+writebreak([W|Ws]):-
+  writebreak(Ws,W).
+
+writebreak([],W):-
+  write(W), nl.
+writebreak([W2|Ws],W):-
+  write(W), write(' <BR> '), nl,
+  writebreak(Ws,W2).
+
+tt:-
+  consult(natded), consult(lexicon), consult_lex, compile_empty.
+
+mt:-
+  consult(natded), consult(lexicon), consult_lex, compile_empty, save(test3), 
start_up.
+
+cmt:-
+  compile(natded), compile(lexicon), compile_lex('compilelex.pl'), 
compile_empty, save(test3), start_up.
+
+
+%%% Local Variables:
+%%% mode: prolog
+%%% prolog-indent-width: 2
+%%% tab-width: 2
+%%% End:
diff --git a/test/etags/prol-src/ordsets.prolog 
b/test/etags/prol-src/ordsets.prolog
new file mode 100644
index 0000000..7192129
--- /dev/null
+++ b/test/etags/prol-src/ordsets.prolog
@@ -0,0 +1,337 @@
+/* Copyright(C) 1988, Swedish Institute of Computer Science */
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%   File   : ORDSETS.PL                                                        
      %
+%   Author : Lena Flood                                                        
      %
+%   Updated: 9 September 1988                                                %
+%   Purpose: Ordered set manipulation utilities                                
      %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+:- module(ordsets, [
+       is_ordset/1,
+       list_to_ord_set/2,
+       ord_add_element/3,
+       ord_del_element/3,
+       ord_disjoint/2,
+       ord_intersect/2,
+       ord_intersection/3,
+       ord_intersection/4,
+       ord_intersection/2,
+       ord_member/2,
+       ord_seteq/2,
+       ord_setproduct/3,
+       ord_subset/2,
+       ord_subtract/3,
+       ord_symdiff/3,
+       ord_union/3,
+       ord_union/4,
+       ord_union/2
+                  ]).
+
+%   Adapted from shared code written by Richard A O'Keefe. 
+
+%   In this package, sets are represented by ordered lists with no
+%   duplicates.         Thus {c,r,a,f,t} would be [a,c,f,r,t].  The ordering
+%   is defined by the @< family of term comparison predicates, which
+%   is the ordering used by sort/2 and setof/3.
+
+%   The benefit of the ordered representation is that the elementary
+%   set operations can be done in time proportional to the Sum of the
+%   argument sizes rather than their Product.  
+
+
+
+%   is_ordset(+Set)
+%   is true when Set is an ordered set.
+
+is_ordset(X) :- var(X), !, fail.
+is_ordset([]).
+is_ordset([Head|Tail]) :-
+       is_ordset(Tail, Head).
+
+is_ordset(X, _) :- var(X), !, fail.
+is_ordset([], _).
+is_ordset([Head|Tail], Left) :-
+       Left @< Head,
+       is_ordset(Tail, Head).
+
+
+%   list_to_ord_set(+List, ?Set)
+%   is true when Set is the ordered representation of the set represented
+%   by the unordered representation List.  
+
+list_to_ord_set(List, Set) :-
+       sort(List, Set).
+
+
+%   ord_add_element(+Set1, +Element -Set2)
+%   is true when Set2 is Set1 with Element inserted in it, preserving
+%   the order.
+
+ord_add_element([], Element, [Element]).
+ord_add_element([Head|Tail], Element, Set) :-
+       compare(Order, Head, Element),
+       ord_add_element(Order, Head, Tail, Element, Set).
+
+ord_add_element(<, Head, Tail, Element, [Head|Set]) :-
+       ord_add_element(Tail, Element, Set).
+ord_add_element(=, Head, Tail, _, [Head|Tail]).
+ord_add_element(>, Head, Tail, Element, [Element,Head|Tail]).
+
+
+%   ord_del_element(+Set1, +Element, ?Set2)
+%   is true when Set2 is Set1 but with Element removed.
+
+ord_del_element([], _, []).
+ord_del_element([Head|Tail], Element, Set) :-
+       compare(Order, Head, Element),
+       ord_del_element(Order, Head, Tail, Element, Set).
+
+ord_del_element(<, Head, Tail, Element, [Head|Set]) :-
+       ord_del_element(Tail, Element, Set).
+ord_del_element(=, _, Tail, _, Tail).
+ord_del_element(>, Head, Tail, _, [Head|Tail]).
+
+
+
+%   ord_disjoint(+Set1, +Set2)
+%   is true when the two ordered sets have no element in common.  
+
+ord_disjoint(Set1, Set2) :-
+       \+ ord_intersect(Set1, Set2).
+
+
+
+%   ord_intersect(+Set1, +Set2)
+%   is true when the two ordered sets have at least one element in common.
+
+ord_intersect([Head1|Tail1], [Head2|Tail2]) :-
+       compare(Order, Head1, Head2),
+       ord_intersect(Order, Head1, Tail1, Head2, Tail2).
+
+ord_intersect(<, _, [Head1|Tail1], Head2, Tail2) :-
+       compare(Order, Head1, Head2),
+       ord_intersect(Order, Head1, Tail1, Head2, Tail2).
+ord_intersect(=, _, _, _, _).
+ord_intersect(>, Head1, Tail1, _, [Head2|Tail2]) :-
+       compare(Order, Head1, Head2),
+       ord_intersect(Order, Head1, Tail1, Head2, Tail2).
+
+
+
+%   ord_intersection(+Set1, +Set2, ?Intersection)
+%   is true when Intersection is the intersecton of Set1
+%   and Set2, provided that Set1 and Set2 are ordered sets.
+
+ord_intersection([], _, []).
+ord_intersection([Head1|Tail1], Set2, Intersection) :-
+       ord_intersection3(Set2, Head1, Tail1, Intersection).
+
+ord_intersection3(<, _, Set1, Head2, Tail2, Intersection) :-
+       ord_intersection3(Set1, Head2, Tail2, Intersection).
+ord_intersection3(=, Head, Tail1, _, Tail2, [Head|Intersection]) :-
+       ord_intersection(Tail1, Tail2, Intersection).
+ord_intersection3(>, Head1, Tail1, _, Set2, Intersection) :-
+       ord_intersection3(Set2, Head1, Tail1, Intersection).
+
+% could be a disjunction, but is used in three places
+ord_intersection3([], _, _, []).
+ord_intersection3([Head2|Tail2], Head1, Tail1, Intersection) :-
+       compare(Order, Head1, Head2),
+       ord_intersection3(Order, Head1, Tail1, Head2, Tail2, Intersection).
+
+
+
+%   ord_intersection(+Set1, +Set2, ?Intersection, ?Difference)
+%   is true when Intersection is the intersection of Set1 and Set2, 
+%   and Differens is Set2 \ Set1 (like in ord_union/4),
+%    provided that Set1 and Set2 are ordered sets.
+
+ord_intersection([], Set2, [], Set2).
+ord_intersection([Head1|Tail1], Set2, Intersection, Difference) :-
+       ord_intersection4(Set2, Head1, Tail1, Intersection, Difference).
+
+ord_intersection4(<, _, Set1, Head2, Tail2, Intersection, Difference) :-
+       (   Set1 = [], Intersection = [], Difference = [Head2|Tail2]
+       ;   Set1 = [Head1|Tail1],
+           compare(Order, Head1, Head2),
+           ord_intersection4(Order, Head1, Tail1, Head2, Tail2, Intersection, 
Difference)
+       ).
+ord_intersection4(=, Head, Tail1, _, Tail2, [Head|Intersection], Difference) :-
+       ord_intersection(Tail1, Tail2, Intersection, Difference).
+ord_intersection4(>, Head1, Tail1, Head2, Set2, Intersection, 
[Head2|Difference]) :-
+       ord_intersection4(Set2, Head1, Tail1, Intersection, Difference).
+
+ord_intersection4([], _, _, [], []).
+ord_intersection4([Head2|Tail2], Head1, Tail1, Intersection, Difference) :-
+       compare(Order, Head1, Head2),
+       ord_intersection4(Order, Head1, Tail1, Head2, Tail2, Intersection, 
Difference).
+
+
+
+%   ord_intersection(+Sets, ?Intersection)
+%   is true when Intersection is the ordered set representation of the
+%   intersection of all the sets in Sets.
+
+ord_intersection(Sets, Intersection) :- 
+       length(Sets, NumberOfSets),
+       NumberOfSets > 0,
+       ord_intersection2(NumberOfSets, Sets, Intersection, []).
+
+ord_intersection2(1, [Set|Sets], Set0, Sets0) :- !,
+       Set = Set0,
+       Sets = Sets0.
+ord_intersection2(2, [Set,Set2|Sets], Intersection, Sets0) :- !,
+       Sets = Sets0,
+       ord_intersection2(Set, Set2, Intersection).
+ord_intersection2(N, Sets0, Intersection, Sets) :-
+%      N > 2,
+       A is N>>1,
+       Z is N-A,
+       ord_intersection2(A, Sets0, X, Sets1),
+       ord_intersection2(Z, Sets1, Y, Sets),
+       ord_intersection(X, Y, Intersection).
+
+
+
+%   ord_member(+Elt, +Set)
+%   is true when Elt is a member of Set.  Suggested by Mark Johnson.
+
+ord_member(X, [E|Es]) :-
+        compare(C, X, E),
+        ord_member(C, X, Es).
+
+ord_member(=, _X, _Es).
+ord_member(>, X, [E|Es]) :-
+        compare(C, X, E),
+        ord_member(C, X, Es).
+
+
+
+%   ord_seteq(+Set1, +Set2)
+%   is true when the two arguments represent the same set.  Since they
+%   are assumed to be ordered representations, they must be identical.
+
+
+ord_seteq(Set1, Set2) :-
+       Set1 == Set2.
+
+
+%   ord_setproduct(+Set1, +Set2, ?SetProduct)
+%   is true when SetProduct is the cartesian product of Set1 and Set2. The
+%   product is represented as pairs Elem1-Elem2, where Elem1 is an element
+%   from Set1 and Elem2 is an element from Set2.
+
+ord_setproduct([], _, []).
+ord_setproduct([Head|Tail], Set, SetProduct)  :-
+       ord_setproduct(Set, Head, SetProduct, Rest),
+       ord_setproduct(Tail, Set, Rest).
+
+ord_setproduct([], _, Set, Set).
+ord_setproduct([Head|Tail], X, [X-Head|TailX], Tl) :-
+       ord_setproduct(Tail, X, TailX, Tl).
+
+
+
+%   ord_subset(+Set1, +Set2)
+%   is true when every element of the ordered set Set1 appears in the
+%   ordered set Set2.
+
+ord_subset([], _).
+ord_subset([Head1|Tail1], [Head2|Tail2]) :-
+       compare(Order, Head1, Head2),
+       ord_subset(Order, Head1, Tail1, Tail2).
+
+ord_subset(=, _, Tail1, Tail2) :-
+       ord_subset(Tail1, Tail2).
+ord_subset(>, Head1, Tail1, [Head2|Tail2]) :-
+       compare(Order, Head1, Head2),
+       ord_subset(Order, Head1, Tail1, Tail2).
+
+
+
+%   ord_subtract(+Set1, +Set2, ?Difference)
+%   is true when Difference contains all and only the elements of Set1
+%   which are not also in Set2, i.e. Set1 \ Set2.
+
+ord_subtract(Set1, Set2, Union) :-
+       prolog:subtract(Set1, Set2, Union).
+
+
+
+%   ord_symdiff(+Set1, +Set2, ?Difference)
+%   is true when Difference is the symmetric difference of Set1 and Set2.
+
+ord_symdiff([], Set2, Set2).
+ord_symdiff([Head1|Tail1], Set2, Symdiff) :-
+       ord_symdiff(Set2, Head1, Tail1, Symdiff).
+
+ord_symdiff(<, Head1, Set1, Head2, Tail2, [Head1|Symdiff]) :-
+       ord_symdiff(Set1, Head2, Tail2, Symdiff).
+ord_symdiff(=, _, Tail1, _, Tail2, Symdiff) :-
+       ord_symdiff(Tail1, Tail2, Symdiff).
+ord_symdiff(>, Head1, Tail1, Head2, Set2, [Head2|Symdiff]) :-
+       ord_symdiff(Set2, Head1, Tail1, Symdiff).
+
+% could be a disjunction, but is used in three places
+ord_symdiff([], Head1, Tail1, [Head1|Tail1]).
+ord_symdiff([Head2|Tail2], Head1, Tail1, Symdiff) :-
+       compare(Order, Head1, Head2),
+       ord_symdiff(Order, Head1, Tail1, Head2, Tail2, Symdiff).
+
+
+
+%   ord_union(+Set1, +Set2, ?Union)
+%   is true when Union is the union of Set1 and Set2.  Note that when
+%   something occurs in both sets, we want to retain only one copy.
+
+ord_union(Set1, Set2, Union) :-
+       prolog:merge(Set1, Set2, Union).
+
+
+
+%   ord_union(+Set1, +Set2, ?Union, ?New)
+%   is true when Union is the union of Set1 and Set2, and New is
+%   Set2 \ Set1.  This is useful if you
+%   are accumulating members of a set and you want to process new
+%   elements as they are added to the set.
+
+ord_union([], Set2, Set2, Set2).
+ord_union([Head1|Tail1], Set2, Union, Difference) :-
+       ord_union4(Set2, Head1, Tail1, Union, Difference).
+
+ord_union4(<, Head, Set1, Head2, Tail2, [Head|Union], Difference) :-
+       (   Set1 = [], Union = [Head2|Tail2], Difference = [Head2|Tail2]
+       ;   Set1 = [Head1|Tail1],
+           compare(Order, Head1, Head2),
+           ord_union4(Order, Head1, Tail1, Head2, Tail2, Union, Difference)
+       ).
+ord_union4(=, Head, Tail1, _, Tail2, [Head|Union], Difference) :-
+       ord_union(Tail1, Tail2, Union, Difference).
+ord_union4(>, Head1, Tail1, Head2, Set2, [Head2|Union], [Head2|Difference]) :-
+       ord_union4(Set2, Head1, Tail1, Union, Difference).
+
+ord_union4([], Head1, Tail1, [Head1|Tail1], []).
+ord_union4([Head2|Tail2], Head1, Tail1, Union, Difference) :-
+       compare(Order, Head1, Head2),
+       ord_union4(Order, Head1, Tail1, Head2, Tail2, Union, Difference).
+
+
+
+%   ord_union(+Sets, ?Union) 
+%   is true when Union is the union of all the sets in Sets. 
+
+ord_union([], Union) :- !, Union = [].
+ord_union(Sets, Union) :-
+       length(Sets, NumberOfSets),
+       ord_union_all(NumberOfSets, Sets, Union, []).
+
+ord_union_all(1, [Set|Sets], Set, Sets) :- !.
+ord_union_all(2, [Set,Set2|Sets], Union, Sets) :- !,
+       ord_union(Set, Set2, Union).
+ord_union_all(N, Sets0, Union, Sets) :-
+       A is N>>1,
+       Z is N-A,
+       ord_union_all(A, Sets0, X, Sets1),
+       ord_union_all(Z, Sets1, Y, Sets),
+       ord_union(X, Y, Union).
diff --git a/test/etags/ps-src/rfc1245.ps b/test/etags/ps-src/rfc1245.ps
new file mode 100644
index 0000000..ad2244f
--- /dev/null
+++ b/test/etags/ps-src/rfc1245.ps
@@ -0,0 +1,2085 @@
+%!
+%%BoundingBox: (atend)
+%%Pages: (atend)
+%%DocumentFonts: (atend)
+%%EndComments
+%
+% FrameMaker PostScript Prolog 2.0, for use with FrameMaker 2.0
+% Copyright (c) 1986,87,89 by Frame Technology, Inc.  All rights reserved.
+%
+% Known Problems:
+%      Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
+/FMversion (2.0) def 
+% Set up Color vs. Black-and-White
+       /FMPrintInColor systemdict /colorimage known def
+% Uncomment this line to force b&w on color printer
+%   /FMPrintInColor false def
+/FrameDict 190 dict def 
+systemdict /errordict known not {/errordict 10 dict def
+               errordict /rangecheck {stop} put} if
+% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
+FrameDict /tmprangecheck errordict /rangecheck get put 
+errordict /rangecheck {FrameDict /bug true put} put 
+FrameDict /bug false put 
+mark 
+% Some PS machines read past the CR, so keep the following 3 lines together!
+currentfile 5 string readline
+00
+0000000000
+cleartomark 
+errordict /rangecheck FrameDict /tmprangecheck get put 
+FrameDict /bug get { 
+       /readline {
+               /gstring exch def
+               /gfile exch def
+               /gindex 0 def
+               {
+                       gfile read pop 
+                       dup 10 eq {exit} if 
+                       dup 13 eq {exit} if 
+                       gstring exch gindex exch put 
+                       /gindex gindex 1 add def 
+               } loop
+               pop 
+               gstring 0 gindex getinterval true 
+               } def
+       } if
+/FMVERSION {
+       FMversion ne {
+               /Times-Roman findfont 18 scalefont setfont
+               100 100 moveto
+               (FrameMaker version does not match postscript_prolog!)
+               dup =
+               show showpage
+               } if
+       } def 
+/FMLOCAL {
+       FrameDict begin
+       0 def 
+       end 
+       } def 
+       /gstring FMLOCAL
+       /gfile FMLOCAL
+       /gindex FMLOCAL
+       /orgxfer FMLOCAL
+       /orgproc FMLOCAL
+       /organgle FMLOCAL
+       /orgfreq FMLOCAL
+       /yscale FMLOCAL
+       /xscale FMLOCAL
+       /manualfeed FMLOCAL
+       /paperheight FMLOCAL
+       /paperwidth FMLOCAL
+/FMDOCUMENT { 
+       array /FMfonts exch def 
+       /#copies exch def
+       FrameDict begin
+       0 ne dup {setmanualfeed} if
+       /manualfeed exch def
+       /paperheight exch def
+       /paperwidth exch def
+       setpapername
+       manualfeed {true} {papersize} ifelse 
+       {manualpapersize} {false} ifelse 
+       {desperatepapersize} if
+       /yscale exch def
+       /xscale exch def
+       currenttransfer cvlit /orgxfer exch def
+       currentscreen cvlit /orgproc exch def
+       /organgle exch def /orgfreq exch def
+       end 
+       } def 
+       /pagesave FMLOCAL
+       /orgmatrix FMLOCAL
+       /landscape FMLOCAL
+/FMBEGINPAGE { 
+       FrameDict begin 
+       /pagesave save def
+       3.86 setmiterlimit
+       /landscape exch 0 ne def
+       landscape { 
+               90 rotate 0 exch neg translate pop 
+               }
+               {pop pop}
+               ifelse
+       xscale yscale scale
+       /orgmatrix matrix def
+       gsave 
+       } def 
+/FMENDPAGE {
+       grestore 
+       pagesave restore
+       end 
+       showpage
+       } def 
+/FMDEFINEFONT { 
+       FrameDict begin
+       findfont 
+       ReEncode 
+       2 index exch 
+       definefont exch 
+       scalefont 
+       FMfonts 3 1 roll 
+       put
+       end 
+       } bind def
+/FMNORMALIZEGRAPHICS { 
+       newpath
+       0.0 0.0 moveto
+       1 setlinewidth
+       0 setlinecap
+       0 0 0 sethsbcolor
+       0 setgray 
+       } bind def
+       /fx FMLOCAL
+       /fy FMLOCAL
+       /fh FMLOCAL
+       /fw FMLOCAL
+       /llx FMLOCAL
+       /lly FMLOCAL
+       /urx FMLOCAL
+       /ury FMLOCAL
+/FMBEGINEPSF { 
+       end 
+       /FMEPSF save def 
+       /showpage {} def 
+       FMNORMALIZEGRAPHICS 
+       [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall 
+       fx fy translate 
+       rotate
+       fw urx llx sub div fh ury lly sub div scale 
+       llx neg lly neg translate 
+       } bind def
+/FMENDEPSF {
+       FMEPSF restore
+       FrameDict begin 
+       } bind def
+FrameDict begin 
+/setmanualfeed {
+%%BeginFeature *ManualFeed True
+        statusdict /manualfeed true put
+%%EndFeature
+       } def
+/max {2 copy lt {exch} if pop} bind def
+/min {2 copy gt {exch} if pop} bind def
+/inch {72 mul} def
+/pagedimen { 
+       paperheight sub abs 16 lt exch 
+       paperwidth sub abs 16 lt and
+       {/papername exch def} {pop} ifelse
+       } def
+       /papersizedict FMLOCAL
+/setpapername { 
+       /papersizedict 14 dict def 
+       papersizedict begin
+       /papername /unknown def 
+               /Letter 8.5 inch 11.0 inch pagedimen
+               /LetterSmall 7.68 inch 10.16 inch pagedimen
+               /Tabloid 11.0 inch 17.0 inch pagedimen
+               /Ledger 17.0 inch 11.0 inch pagedimen
+               /Legal 8.5 inch 14.0 inch pagedimen
+               /Statement 5.5 inch 8.5 inch pagedimen
+               /Executive 7.5 inch 10.0 inch pagedimen
+               /A3 11.69 inch 16.5 inch pagedimen
+               /A4 8.26 inch 11.69 inch pagedimen
+               /A4Small 7.47 inch 10.85 inch pagedimen
+               /B4 10.125 inch 14.33 inch pagedimen
+               /B5 7.16 inch 10.125 inch pagedimen
+       end
+       } def
+/papersize {
+       papersizedict begin
+               /Letter {lettertray} def
+               /LetterSmall {lettertray lettersmall} def
+               /Tabloid {11x17tray} def
+               /Ledger {ledgertray} def
+               /Legal {legaltray} def
+               /Statement {statementtray} def
+               /Executive {executivetray} def
+               /A3 {a3tray} def
+               /A4 {a4tray} def
+               /A4Small {a4tray a4small} def
+               /B4 {b4tray} def
+               /B5 {b5tray} def
+               /unknown {unknown} def
+       papersizedict dup papername known {papername} {/unknown} ifelse get
+       end
+       /FMdicttop countdictstack 1 add def
+       statusdict begin stopped end 
+       countdictstack -1 FMdicttop {pop end} for
+       } def
+/manualpapersize {
+       papersizedict begin
+               /Letter {letter} def
+               /LetterSmall {lettersmall} def
+               /Tabloid {11x17} def
+               /Ledger {ledger} def
+               /Legal {legal} def
+               /Statement {statement} def
+               /Executive {executive} def
+               /A3 {a3} def
+               /A4 {a4} def
+               /A4Small {a4small} def
+               /B4 {b4} def
+               /B5 {b5} def
+               /unknown {unknown} def
+       papersizedict dup papername known {papername} {/unknown} ifelse get
+       end
+       stopped 
+       } def
+/desperatepapersize {
+       statusdict /setpageparams known
+               {
+               paperwidth paperheight 0 1 
+               statusdict begin
+               {setpageparams} stopped pop 
+               end
+               } if
+       } def
+/savematrix {
+       orgmatrix currentmatrix pop
+       } bind def
+/restorematrix {
+       orgmatrix setmatrix
+       } bind def
+/dmatrix matrix def
+/dpi    72 0 dmatrix defaultmatrix dtransform
+    dup mul exch   dup mul add   sqrt def
+/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
+/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
+/DiacriticEncoding [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
+/numbersign /dollar /percent /ampersand /quotesingle /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon
+/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
+/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
+/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
+/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
+/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
+/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
+/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
+/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
+/udieresis /dagger /.notdef /cent /sterling /section /bullet
+/paragraph /germandbls /registered /copyright /trademark /acute
+/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
+/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
+/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
+/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
+/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
+/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
+/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
+/periodcentered /quotesinglbase /quotedblbase /perthousand
+/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
+/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
+/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
+/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
+] def
+/ReEncode { 
+       dup 
+       length 
+       dict begin 
+       {
+       1 index /FID ne 
+               {def} 
+               {pop pop} ifelse 
+       } forall
+       Encoding StandardEncoding eq 
+       {
+               /Encoding DiacriticEncoding def
+       }if
+       currentdict 
+       end 
+       } bind def
+/graymode true def
+       /bwidth FMLOCAL
+       /bpside FMLOCAL
+       /bstring FMLOCAL
+       /onbits FMLOCAL
+       /offbits FMLOCAL
+       /xindex FMLOCAL
+       /yindex FMLOCAL
+       /x FMLOCAL
+       /y FMLOCAL
+/setpattern {
+        /bwidth  exch def
+        /bpside  exch def
+        /bstring exch def
+        /onbits 0 def  /offbits 0 def
+        freq sangle landscape {90 add} if 
+               {/y exch def
+                /x exch def
+                /xindex x 1 add 2 div bpside mul cvi def
+                /yindex y 1 add 2 div bpside mul cvi def
+                bstring yindex bwidth mul xindex 8 idiv add get
+                1 7 xindex 8 mod sub bitshift and 0 ne
+                {/onbits  onbits  1 add def 1}
+                {/offbits offbits 1 add def 0}
+                ifelse
+               }
+               setscreen
+        {} settransfer
+        offbits offbits onbits add div FMsetgray
+       /graymode false def
+       } bind def
+/grayness {
+       FMsetgray
+       graymode not {
+               /graymode true def
+               orgxfer cvx settransfer
+               orgfreq organgle orgproc cvx setscreen
+               } if
+       } bind def
+       /HUE FMLOCAL
+       /SAT FMLOCAL
+       /BRIGHT FMLOCAL
+       /Colors FMLOCAL
+FMPrintInColor 
+       
+       {
+       /HUE 0 def
+       /SAT 0 def
+       /BRIGHT 0 def
+       % array of arrays Hue and Sat values for the separations [HUE BRIGHT]
+       /Colors   
+       [[0    0  ]    % black
+        [0    0  ]    % white
+        [0.00 1.0]    % red
+        [0.37 1.0]    % green
+        [0.60 1.0]    % blue
+        [0.50 1.0]    % cyan
+        [0.83 1.0]    % magenta
+        [0.16 1.0]    % comment / yellow
+        ] def
+      
+       /BEGINBITMAPCOLOR { 
+               BITMAPCOLOR} def
+       /BEGINBITMAPCOLORc { 
+               BITMAPCOLORc} def
+       /K { 
+               Colors exch get dup
+               0 get /HUE exch store 
+               1 get /BRIGHT exch store
+                 HUE 0 eq BRIGHT 0 eq and
+                       {1.0 SAT sub setgray}
+                       {HUE SAT BRIGHT sethsbcolor} 
+                 ifelse
+               } def
+       /FMsetgray { 
+               /SAT exch 1.0 exch sub store 
+                 HUE 0 eq BRIGHT 0 eq and
+                       {1.0 SAT sub setgray}
+                       {HUE SAT BRIGHT sethsbcolor} 
+                 ifelse
+               } bind def
+       }
+       
+       {
+       /BEGINBITMAPCOLOR { 
+               BITMAPGRAY} def
+       /BEGINBITMAPCOLORc { 
+               BITMAPGRAYc} def
+       /FMsetgray {setgray} bind def
+       /K { 
+               pop
+               } def
+       }
+ifelse
+/normalize {
+       transform round exch round exch itransform
+       } bind def
+/dnormalize {
+       dtransform round exch round exch idtransform
+       } bind def
+/lnormalize { 
+       0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
+       } bind def
+/H { 
+       lnormalize setlinewidth
+       } bind def
+/Z {
+       setlinecap
+       } bind def
+/X { 
+       fillprocs exch get exec
+       } bind def
+/V { 
+       gsave eofill grestore
+       } bind def
+/N { 
+       stroke
+       } bind def
+/M {newpath moveto} bind def
+/E {lineto} bind def
+/D {curveto} bind def
+/O {closepath} bind def
+       /n FMLOCAL
+/L { 
+       /n exch def
+       newpath
+       normalize
+       moveto 
+       2 1 n {pop normalize lineto} for
+       } bind def
+/Y { 
+       L 
+       closepath
+       } bind def
+       /x1 FMLOCAL
+       /x2 FMLOCAL
+       /y1 FMLOCAL
+       /y2 FMLOCAL
+       /rad FMLOCAL
+/R { 
+       /y2 exch def
+       /x2 exch def
+       /y1 exch def
+       /x1 exch def
+       x1 y1
+       x2 y1
+       x2 y2
+       x1 y2
+       4 Y 
+       } bind def
+/RR { 
+       /rad exch def
+       normalize
+       /y2 exch def
+       /x2 exch def
+       normalize
+       /y1 exch def
+       /x1 exch def
+       newpath
+       x1 y1 rad add moveto
+       x1 y2 x2 y2 rad arcto
+       x2 y2 x2 y1 rad arcto
+       x2 y1 x1 y1 rad arcto
+       x1 y1 x1 y2 rad arcto
+       closepath
+       16 {pop} repeat
+       } bind def
+/C { 
+       grestore
+       gsave
+       R 
+       clip
+       } bind def
+/U { 
+       grestore
+       gsave
+       } bind def
+/F { 
+       FMfonts exch get
+       setfont
+       } bind def
+/T { 
+       moveto show
+       } bind def
+/RF { 
+       rotate
+       0 ne {-1 1 scale} if
+       } bind def
+/TF { 
+       gsave
+       moveto 
+       RF
+       show
+       grestore
+       } bind def
+/P { 
+       moveto
+       0 32 3 2 roll widthshow
+       } bind def
+/PF { 
+       gsave
+       moveto 
+       RF
+       0 32 3 2 roll widthshow
+       grestore
+       } bind def
+/S { 
+       moveto
+       0 exch ashow
+       } bind def
+/SF { 
+       gsave
+       moveto
+       RF
+       0 exch ashow
+       grestore
+       } bind def
+/B { 
+       moveto
+       0 32 4 2 roll 0 exch awidthshow
+       } bind def
+/BF { 
+       gsave
+       moveto
+       RF
+       0 32 4 2 roll 0 exch awidthshow
+       grestore
+       } bind def
+       /x FMLOCAL
+       /y FMLOCAL
+       /dx FMLOCAL
+       /dy FMLOCAL
+       /dl FMLOCAL
+       /t FMLOCAL
+       /t2 FMLOCAL
+       /Cos FMLOCAL
+       /Sin FMLOCAL
+       /r FMLOCAL
+/W { 
+       dnormalize
+       /dy exch def
+       /dx exch def
+       normalize
+       /y  exch def
+       /x  exch def
+       /dl dx dx mul dy dy mul add sqrt def
+       dl 0.0 gt {
+               /t currentlinewidth def
+               savematrix
+               /Cos dx dl div def
+               /Sin dy dl div def
+               /r [Cos Sin Sin neg Cos 0.0 0.0] def
+               /t2 t 2.5 mul 3.5 max def
+               newpath
+               x y translate
+               r concat
+               0.0 0.0 moveto
+               dl t 2.7 mul sub 0.0 rlineto
+               stroke
+               restorematrix
+               x dx add y dy add translate
+               r concat
+               t 0.67 mul setlinewidth
+               t 1.61 mul neg  0.0 translate
+               0.0 0.0 moveto
+               t2 1.7 mul neg  t2 2.0 div     moveto
+               0.0 0.0 lineto
+               t2 1.7 mul neg  t2 2.0 div neg lineto
+               stroke
+               t setlinewidth
+               restorematrix
+               } if
+       } bind def
+/G { 
+       gsave
+       newpath
+       normalize translate 0.0 0.0 moveto 
+       dnormalize scale 
+       0.0 0.0 1.0 5 3 roll arc 
+       closepath fill
+       grestore
+       } bind def
+/A { 
+       gsave
+       savematrix
+       newpath
+       2 index 2 div add exch 3 index 2 div sub exch 
+       normalize 2 index 2 div sub exch 3 index 2 div add exch 
+       translate 
+       scale 
+       0.0 0.0 1.0 5 3 roll arc 
+       restorematrix
+       stroke
+       grestore
+       } bind def
+       /x FMLOCAL
+       /y FMLOCAL
+       /w FMLOCAL
+       /h FMLOCAL
+       /xx FMLOCAL
+       /yy FMLOCAL
+       /ww FMLOCAL
+       /hh FMLOCAL
+       /FMsaveobject FMLOCAL
+       /FMoptop FMLOCAL
+       /FMdicttop FMLOCAL
+/BEGINPRINTCODE { 
+       /FMdicttop countdictstack 1 add def 
+       /FMoptop count 4 sub def 
+       /FMsaveobject save def
+       userdict begin 
+       /showpage {} def 
+       FMNORMALIZEGRAPHICS 
+       3 index neg 3 index neg translate
+       } bind def
+/ENDPRINTCODE {
+       count -1 FMoptop {pop pop} for 
+       countdictstack -1 FMdicttop {pop end} for 
+       FMsaveobject restore 
+       } bind def
+/gn { 
+       0 
+       {       46 mul 
+               cf read pop 
+               32 sub 
+               dup 46 lt {exit} if 
+               46 sub add 
+               } loop
+       add 
+       } bind def
+       /str FMLOCAL
+/cfs { 
+       /str sl string def 
+       0 1 sl 1 sub {str exch val put} for 
+       str def 
+       } bind def
+/ic [ 
+       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+       0
+       {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
+       {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
+       {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
+       {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
+       {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
+       {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
+       {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
+       {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
+       {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
+       ] def
+       /sl FMLOCAL
+       /val FMLOCAL
+       /ws FMLOCAL
+       /im FMLOCAL
+       /bs FMLOCAL
+       /cs FMLOCAL
+       /len FMLOCAL
+       /pos FMLOCAL
+/ms { 
+       /sl exch def 
+       /val 255 def 
+       /ws cfs 
+       /im cfs 
+       /val 0 def 
+       /bs cfs 
+       /cs cfs 
+       } bind def
+400 ms 
+/ip { 
+       is 
+       0 
+       cf cs readline pop 
+       {       ic exch get exec 
+               add 
+               } forall 
+       pop 
+       
+       } bind def
+/wh { 
+       /len exch def 
+       /pos exch def 
+       ws 0 len getinterval im pos len getinterval copy pop
+       pos len 
+       } bind def
+/bl { 
+       /len exch def 
+       /pos exch def 
+       bs 0 len getinterval im pos len getinterval copy pop
+       pos len 
+       } bind def
+/s1 1 string def
+/fl { 
+       /len exch def 
+       /pos exch def 
+       /val cf s1 readhexstring pop 0 get def
+       pos 1 pos len add 1 sub {im exch val put} for
+       pos len 
+       } bind def
+/hx { 
+       3 copy getinterval 
+       cf exch readhexstring pop pop 
+       } bind def
+       /h FMLOCAL
+       /w FMLOCAL
+       /d FMLOCAL
+       /lb FMLOCAL
+       /bitmapsave FMLOCAL
+       /is FMLOCAL
+       /cf FMLOCAL
+/wbytes { 
+       dup 
+       8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
+       } bind def
+/BEGINBITMAPBWc { 
+       1 {} COMMONBITMAPc
+       } bind def
+/BEGINBITMAPGRAYc { 
+       8 {} COMMONBITMAPc
+       } bind def
+/BEGINBITMAP2BITc { 
+       2 {} COMMONBITMAPc
+       } bind def
+/COMMONBITMAPc { 
+       /r exch def
+       /d exch def
+       gsave
+       translate rotate scale /h exch def /w exch def
+       /lb w d wbytes def 
+       sl lb lt {lb ms} if 
+       /bitmapsave save def 
+       r                    
+       /is im 0 lb getinterval def 
+       ws 0 lb getinterval is copy pop 
+       /cf currentfile def 
+       w h d [w 0 0 h neg 0 h] 
+       {ip} image 
+       bitmapsave restore 
+       grestore
+       } bind def
+/BEGINBITMAPBW { 
+       1 {} COMMONBITMAP
+       } bind def
+/BEGINBITMAPGRAY { 
+       8 {} COMMONBITMAP
+       } bind def
+/BEGINBITMAP2BIT { 
+       2 {} COMMONBITMAP
+       } bind def
+/COMMONBITMAP { 
+       /r exch def
+       /d exch def
+       gsave
+       translate rotate scale /h exch def /w exch def
+       /bitmapsave save def 
+       r                    
+       /is w d wbytes string def
+       /cf currentfile def 
+       w h d [w 0 0 h neg 0 h] 
+       {cf is readhexstring pop} image
+       bitmapsave restore 
+       grestore
+       } bind def
+       /proc1 FMLOCAL
+       /proc2 FMLOCAL
+       /newproc FMLOCAL
+/Fmcc {
+    /proc2 exch cvlit def
+    /proc1 exch cvlit def
+    /newproc proc1 length proc2 length add array def
+    newproc 0 proc1 putinterval
+    newproc proc1 length proc2 putinterval
+    newproc cvx
+} bind def
+/ngrayt 256 array def
+/nredt 256 array def
+/nbluet 256 array def
+/ngreent 256 array def
+       /gryt FMLOCAL
+       /blut FMLOCAL
+       /grnt FMLOCAL
+       /redt FMLOCAL
+       /indx FMLOCAL
+       /cynu FMLOCAL
+       /magu FMLOCAL
+       /yelu FMLOCAL
+       /k FMLOCAL
+       /u FMLOCAL
+/colorsetup {
+       currentcolortransfer
+       /gryt exch def
+       /blut exch def
+       /grnt exch def
+       /redt exch def
+       0 1 255 {
+               /indx exch def
+               /cynu 1 red indx get 255 div sub def
+               /magu 1 green indx get 255 div sub def
+               /yelu 1 blue indx get 255 div sub def
+               /k cynu magu min yelu min def
+               /u k currentundercolorremoval exec def
+               nredt indx 1 0 cynu u sub max sub redt exec put
+               ngreent indx 1 0 magu u sub max sub grnt exec put
+               nbluet indx 1 0 yelu u sub max sub blut exec put
+               ngrayt indx 1 k currentblackgeneration exec sub gryt exec put
+       } for
+       {255 mul cvi nredt exch get}
+       {255 mul cvi ngreent exch get}
+       {255 mul cvi nbluet exch get}
+       {255 mul cvi ngrayt exch get}
+       setcolortransfer
+       {pop 0} setundercolorremoval
+       {} setblackgeneration
+       } bind def
+       /tran FMLOCAL
+/fakecolorsetup {
+       /tran 256 string def
+       0 1 255 {/indx exch def 
+               tran indx
+               red indx get 77 mul
+               green indx get 151 mul
+               blue indx get 28 mul
+               add add 256 idiv put} for
+       currenttransfer
+       {255 mul cvi tran exch get 255.0 div}
+       exch Fmcc settransfer
+} bind def
+/BITMAPCOLOR { 
+       /d 8 def
+       gsave
+       translate rotate scale /h exch def /w exch def
+       /bitmapsave save def 
+       colorsetup
+       /is w d wbytes string def
+       /cf currentfile def 
+       w h d [w 0 0 h neg 0 h] 
+       {cf is readhexstring pop} {is} {is} true 3 colorimage 
+       bitmapsave restore 
+       grestore
+       } bind def
+/BITMAPCOLORc { 
+       /d 8 def
+       gsave
+       translate rotate scale /h exch def /w exch def
+       /lb w d wbytes def 
+       sl lb lt {lb ms} if 
+       /bitmapsave save def 
+       colorsetup
+       /is im 0 lb getinterval def 
+       ws 0 lb getinterval is copy pop 
+       /cf currentfile def 
+       w h d [w 0 0 h neg 0 h] 
+       {ip} {is} {is} true 3 colorimage
+       bitmapsave restore 
+       grestore
+       } bind def
+/BITMAPGRAY { 
+       8 {fakecolorsetup} COMMONBITMAP
+       } bind def
+/BITMAPGRAYc { 
+       8 {fakecolorsetup} COMMONBITMAPc
+       } bind def
+/ENDBITMAP {
+       } bind def
+end 
+%%EndProlog
+%%BeginSetup
+(2.0) FMVERSION
+1 1 612 792 0 1 7 FMDOCUMENT
+/fillprocs 32 array def
+fillprocs 0 { 0.000000 grayness } put
+fillprocs 1 { 0.100000 grayness } put
+fillprocs 2 { 0.300000 grayness } put
+fillprocs 3 { 0.500000 grayness } put
+fillprocs 4 { 0.700000 grayness } put
+fillprocs 5 { 0.900000 grayness } put
+fillprocs 6 { 0.970000 grayness } put
+fillprocs 7 { 1.000000 grayness } put
+fillprocs 8 {<0f87c3e1f0783c1e> 8 1 setpattern } put
+fillprocs 9 {<0f1e3c78f0e1c387> 8 1 setpattern } put
+fillprocs 10 {<cccccccccccccccc> 8 1 setpattern } put
+fillprocs 11 {<ffff0000ffff0000> 8 1 setpattern } put
+fillprocs 12 {<8142241818244281> 8 1 setpattern } put
+fillprocs 13 {<8040201008040201> 8 1 setpattern } put
+fillprocs 14 {<03060c183060c081> 8 1 setpattern } put
+fillprocs 15 {} put
+fillprocs 16 { 1.000000 grayness } put
+fillprocs 17 { 0.900000 grayness } put
+fillprocs 18 { 0.700000 grayness } put
+fillprocs 19 { 0.500000 grayness } put
+fillprocs 20 { 0.300000 grayness } put
+fillprocs 21 { 0.100000 grayness } put
+fillprocs 22 { 0.030000 grayness } put
+fillprocs 23 { 0.000000 grayness } put
+fillprocs 24 {<f0783c1e0f87c3e1> 8 1 setpattern } put
+fillprocs 25 {<f0e1c3870f1e3c78> 8 1 setpattern } put
+fillprocs 26 {<3333333333333333> 8 1 setpattern } put
+fillprocs 27 {<0000ffff0000ffff> 8 1 setpattern } put
+fillprocs 28 {<7ebddbe7e7dbbd7e> 8 1 setpattern } put
+fillprocs 29 {<7fbfdfeff7fbfdfe> 8 1 setpattern } put
+fillprocs 30 {<fcf9f3e7cf9f3f7e> 8 1 setpattern } put
+fillprocs 31 {} put
+%%EndSetup
+0 12 /Times-Roman FMDEFINEFONT
+1 24 /Times-Roman FMDEFINEFONT
+2 16 /Times-Bold FMDEFINEFONT
+%%Page: "1" 1
+%%BeginPaperSize: Letter
+%%EndPaperSize
+612 792 0 FMBEGINPAGE
+72 675 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(Network Working Group) 72 712 T
+(J. Moy, Editor) 470.7 712 T
+(Request for Comments: 1245) 72 698 T
+(Proteon, Inc.) 478.38 698 T
+(July 1991) 493.02 684 T
+72 72 540 83.95 R
+7 X
+V
+0 X
+([Moy]) 72 75.95 T
+([Page 1]) 499.7 75.95 T
+72 117 540 603 R
+7 X
+V
+1 F
+0 X
+(OSPF protocol analysis) 192.72 587 T
+2 F
+(Status of this Memo) 72 514.33 T
+0 F
+-0.23 (This memo provides information for the Internet community) 72 487 P
+-0.23 (. It does not specify any Internet stan-) 360.42 487 P
+(dard. Distribution of this memo is unlimited.) 72 473 T
+2 F
+(Abstract) 72 447 T
+0 F
+-0.11 (This is the \336rst of two reports on the OSPF protocol. These reports 
are required by the IAB/IESG ) 72 421 P
+(in order for an Internet routing protocol to advance to Draft Standard 
Status. OSPF is a TCP/IP ) 72 407 T
+-0.28 (routing protocol, designed to be used internal to an Autonomous System 
\050in other words, OSPF is ) 72 393 P
+(an Interior Gateway Protocol\051.) 72 379 T
+-0.09 (V) 72 353 P
+-0.09 (ersion 1 of the OSPF protocol was published in RFC 1) 79.33 353 P
+-0.09 (131. Since then OSPF version 2 has been ) 339.85 353 P
+-0.22 (developed. V) 72 339 P
+-0.22 (ersion 2 has been documented in RFC 1247. The changes between version 1 
and ver-) 134.4 339 P
+-0 (sion 2 of the OSPF protocol are explained in Appendix F of RFC 1247. It is 
OSPF V) 72 325 P
+-0 (ersion 2 that ) 477.72 325 P
+(is the subject of this report.) 72 311 T
+(This report attempts to summarize the key features of OSPF V2. It also 
attempts to analyze how ) 72 285 T
+(the protocol will perform and scale in the Internet.) 72 271 T
+(Please send comments to address@hidden) 72 245 T
+(.umd.edu.) 258.27 245 T
+FMENDPAGE
+%%EndPage: "1" 2
+1 10 /Times-Roman FMDEFINEFONT
+%%Page: "2" 2
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 2]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(T) 72 673.33 T
+(able of Contents) 81.19 673.33 T
+0 F
+(1.0) 72 650 T
+(Introduction) 108 650 T
+(..............................................................................................................)
 167.91 650 T
+(3) 498 650 T
+1 F
+(1.1) 108 635.33 T
+(Acknowledgments) 144 635.33 T
+(...............................................................................................................)
 219.88 635.33 T
+(3) 499 635.33 T
+0 F
+(2.0) 72 616 T
+(Key features of the OSPF protocol) 108 616 T
+(..........................................................................) 
275.85 616 T
+(4) 498 616 T
+(3.0) 72 596 T
+(Cost of the protocol) 108 596 T
+(..................................................................................................)
 203.89 596 T
+(7) 498 596 T
+1 F
+(3.1) 108 581.33 T
+( Operational data) 144 581.33 T
+(.................................................................................................................)
 214.88 581.33 T
+(7) 499 581.33 T
+(3.2) 108 567.33 T
+(Link bandwidth) 144 567.33 T
+(...................................................................................................................)
 209.88 567.33 T
+(9) 499 567.33 T
+(3.3) 108 553.33 T
+(Router memory) 144 553.33 T
+(....................................................................................................................)
 207.39 553.33 T
+(9) 499 553.33 T
+(3.4) 108 539.33 T
+(Router CPU) 144 539.33 T
+(.......................................................................................................................)
 194.89 539.33 T
+(10) 494.01 539.33 T
+(3.5) 108 525.33 T
+(Role of Designated Router) 144 525.33 T
+(................................................................................................)
 252.36 525.33 T
+(1) 494.38 525.33 T
+(1) 499 525.33 T
+(3.6) 108 511.33 T
+(Summary) 144 511.33 T
+(...........................................................................................................................)
 184.9 511.33 T
+(1) 494.38 511.33 T
+(1) 499 511.33 T
+0 F
+(4.0) 72 492 T
+(Suitable environments) 108 492 T
+(............................................................................................)
 215.88 492 T
+(13) 492.01 492 T
+(5.0) 72 472 T
+(Unsuitable environments) 108 472 T
+(.......................................................................................)
 230.87 472 T
+(13) 492.01 472 T
+(6.0) 72 452 T
+(Reference Documents) 108 452 T
+(............................................................................................)
 215.88 452 T
+(14) 492.01 452 T
+FMENDPAGE
+%%EndPage: "2" 3
+3 14 /Times-Bold FMDEFINEFONT
+%%Page: "3" 3
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 3]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(1.0  Intr) 72 673.33 T
+(oduction) 127.23 673.33 T
+0 F
+-0.02 (This document addresses, for OSPF V2, the requirements set forth by the 
IAB/IESG for an Inter-) 72 646 P
+-0.19 (net routing protocol to advance to Draft Standard state. This 
requirements are brie\337y summarized ) 72 632 P
+(below) 72 618 T
+(. The remaining sections of this report document how OSPF V2 satis\336es 
these require-) 100.53 618 T
+(ments:) 72 604 T
+(\245) 72 584 T
+(What are the key features and algorithms of the protocol?) 85.54 584 T
+(\245) 72 564 T
+(How much link bandwidth, router memory and router CPU cycles does the 
protocol consume ) 85.54 564 T
+(under normal conditions?) 85.54 550 T
+(\245) 72 530 T
+(For these metrics, how does the usage scale as the routing environment grows? 
This should ) 85.54 530 T
+(include topologies at least an order of magnitude lar) 85.54 516 T
+(ger than the current environment.) 335.14 516 T
+(\245) 72 496 T
+(What are the limits of the protocol for these metrics? \050i.e., when will 
the routing protocol ) 85.54 496 T
+(break?\051 ) 85.54 482 T
+(\245) 72 462 T
+(For what environments is the protocol well suited, and for what is it not 
suitable? ) 85.54 462 T
+3 F
+(1.1  Acknowledgments) 72 428.67 T
+0 F
+-0.03 (The OSPF protocol has been developed by the OSPF W) 72 402 P
+-0.03 (orking Group of the Internet Engineering ) 339.64 402 P
+(T) 72 388 T
+(ask Force. ) 78.49 388 T
+FMENDPAGE
+%%EndPage: "3" 4
+4 12 /Times-Bold FMDEFINEFONT
+%%Page: "4" 4
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 4]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(2.0  Key featur) 72 673.33 T
+(es of the OSPF pr) 172.97 673.33 T
+(otocol) 293.49 673.33 T
+0 F
+(This section summarizes the key features of the OSPF protocol. OSPF is an) 72 
646 T
+4 F
+( Internal gateway ) 434.78 646 T
+-0.2 (pr) 72 632 P
+-0.2 (otocol) 83.78 632 P
+0 F
+-0.2 (; it is designed to be used internal to a single Autonomous System. OSPF 
uses) 114.42 632 P
+4 F
+-0.2 ( link-state ) 486.43 632 P
+-0.36 (or SPF-based) 72 618 P
+0 F
+-0.36 ( technology \050as compared to the distance-vector or Bellman-Ford 
technology found ) 140.6 618 P
+-0.48 (in routing protocols such as RIP\051. Individual ) 72 604 P
+4 F
+-0.48 (link state advertisements \050LSAs\051) 285.2 604 P
+0 F
+-0.48 ( describe pieces of ) 449.99 604 P
+-0.13 (the OSPF routing domain \050Autonomous System\051. These LSAs are 
\337ooded throughout the routing ) 72 590 P
+(domain, forming the ) 72 576 T
+4 F
+(link state database) 173.27 576 T
+0 F
+(. Each router has an identical link state database; syn-) 268.56 576 T
+(chronization of link state databases is maintained via a ) 72 562 T
+4 F
+(r) 336.81 562 T
+(eliable \337ooding algorithm) 341.92 562 T
+0 F
+(. From this ) 473.2 562 T
+(link state database, each router builds a routing table by calculating a 
shortest-path tree, with the ) 72 548 T
+(root of the tree being the calculating router itself. This calculation is 
commonly referred to as the ) 72 534 T
+4 F
+(Dijkstra pr) 72 520 T
+(ocedur) 129.41 520 T
+(e) 164.51 520 T
+0 F
+(.) 169.83 520 T
+(Link state advertisements are small. Each advertisement describes a small 
pieces of the OSPF ) 72 494 T
+(routing domain, namely either: the neighborhood of a single router) 72 480 T
+(, the neighborhood of a single ) 391.97 480 T
+(transit network, a single inter) 72 466 T
+(-area route \050see below\051 or a single external route.) 212 466 T
+(The other key features of the OSPF protocol are:) 72 440 T
+(\245) 72 420 T
+4 F
+-0.31 (Adjacency bringup) 85.54 420 P
+0 F
+-0.31 (. ) 183.51 420 P
+4 F
+-0.31 (Certain pairs of OSPF r) 189.2 420 P
+-0.31 (outers become \322adjacent\323) 311.01 420 P
+0 F
+-0.31 (. As an adjacency is ) 442.96 420 P
+(formed, the two routers synchronize their link state databases by ) 85.54 406 
T
+4 F
+(exchanging database sum-) 397.64 406 T
+(maries) 85.54 392 T
+0 F
+( in the form of OSPF Database Exchange packets. Adjacent routers then 
maintain syn-) 120.17 392 T
+(chronization of their link state databases through the ) 85.54 378 T
+4 F
+(r) 340.02 378 T
+(eliable \337ooding algorithm) 345.13 378 T
+0 F
+(. Routers ) 476.41 378 T
+-0.27 (connected by serial lines always become adjacent. On multi-access 
networks \050e.g., ethernets or ) 85.54 364 P
+(X.25 PDNs\051, all routers attached to the network become adjacent to both 
the Designated ) 85.54 350 T
+(Router and the Backup Designated router) 85.54 336 T
+(.) 283.73 336 T
+(\245) 72 316 T
+4 F
+-0.02 (Designated r) 85.54 316 P
+-0.02 (outer) 150.26 316 P
+-0.02 (.) 176.46 316 P
+0 F
+-0.02 ( A Designated Router is elected on all multi-access networks \050e.g., 
ether-) 179.46 316 P
+(nets or X.25 PDNs\051. The network\325) 85.54 302 T
+(s Designated Router ) 250.42 302 T
+4 F
+(originates the network LSA) 350.69 302 T
+0 F
+( describ-) 492.27 302 T
+(ing the network\325) 85.54 288 T
+(s local environment. It also plays a ) 164.15 288 T
+4 F
+(special r) 334.04 288 T
+(ole in the \337ooding algorithm) 376.8 288 T
+0 F
+(, ) 521.4 288 T
+(since all routers on the network are synchronizing their link state databases 
by sending and ) 85.54 274 T
+(receiving LSAs to/from the Designated Router during the \337ooding process.) 
85.54 260 T
+(\245) 72 240 T
+4 F
+-0.46 (Backup Designated Router) 85.54 240 P
+0 F
+-0.46 (. A Backup Designated Router is elected on multi-access networks ) 
221.87 240 P
+(to speed/ease the transition of Designated Routers when the current 
Designated Router disap-) 85.54 226 T
+(pears. In that event, the Backup DR takes over) 85.54 212 T
+(, and does not need to go through the adjacency ) 308.22 212 T
+-0.13 (bringup process on the LAN \050since it already had done this in its 
Backup capacity\051. Also, even ) 85.54 198 P
+(before the disappearance of the Designated Router is noticed, the Backup DR 
will enable the ) 85.54 184 T
+(reliable \337ooding algorithm to proceed in the DR\325) 85.54 170 T
+(s absence.) 320.39 170 T
+FMENDPAGE
+%%EndPage: "4" 5
+%%Page: "5" 5
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 5]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+0 X
+(\245) 72 676 T
+4 F
+(Non-br) 85.54 676 T
+(oadcast multi-access network support.) 122.63 676 T
+0 F
+( OSPF treats these networks \050e.g., X.25 ) 318.51 676 T
+-0.01 (PDNs\051 pretty much as if they were LANs \050i.e., a DR is elected, 
and a network LSA is gener-) 85.54 662 P
+-0.29 (ated\051. Additional con\336guration information is needed however for 
routers attached to these net-) 85.54 648 P
+(work to initially \336nd each other) 85.54 634 T
+(.) 236.45 634 T
+(\245) 72 614 T
+4 F
+(OSPF ar) 85.54 614 T
+(eas) 130.29 614 T
+0 F
+(. OSPF allows the Autonomous Systems to be broken up into regions call areas. 
) 146.28 614 T
+(This is useful for several reasons. First, it provides an extra level of ) 
85.54 600 T
+4 F
+(r) 411.64 600 T
+(outing pr) 416.75 600 T
+(otection) 464.18 600 T
+0 F
+(: rout-) 504.81 600 T
+-0.29 (ing within an area is protected from all information external to the 
area. Second, by splitting an ) 85.54 586 P
+-0.3 (Autonomous System into areas the ) 85.54 572 P
+4 F
+-0.3 (cost of the Dijkstra pr) 254.27 572 P
+-0.3 (ocedur) 365.44 572 P
+-0.3 (e ) 400.53 572 P
+0 F
+-0.3 (\050in terms of CPU cycles\051 is ) 408.55 572 P
+(reduced.) 85.54 558 T
+(\245) 72 538 T
+4 F
+(Flexible import of external r) 85.54 538 T
+(outing information.) 230.55 538 T
+0 F
+( In OSPF) 330.5 538 T
+(, ) 374.19 538 T
+4 F
+(each external r) 380.19 538 T
+(oute) 456.58 538 T
+0 F
+( is imported ) 478.56 538 T
+(into the Autonomous System in ) 85.54 524 T
+4 F
+(a separate LSA) 240.47 524 T
+0 F
+(. This reduces the amount of \337ooding traf) 319.08 524 T
+(\336c ) 518.07 524 T
+(\050since external routes change often, and you want to only \337ood the 
changes\051. It also enables ) 85.54 510 T
+4 F
+-0.43 (partial r) 85.54 496 P
+-0.43 (outing table updates) 127.86 496 P
+0 F
+-0.43 ( when only a single external route changes. OSPF external LSAs ) 230.96 
496 P
+(also provide the following features. A ) 85.54 482 T
+4 F
+(forwarding addr) 270.4 482 T
+(ess) 355.81 482 T
+0 F
+( can be included in the external ) 370.46 482 T
+(LSA, eliminating extra-hops at the edge of the Autonomous System. There are 
two levels of ) 85.54 468 T
+(external metrics that can be speci\336ed, ) 85.54 454 T
+4 F
+(type 1) 269.06 454 T
+0 F
+( and ) 300.04 454 T
+4 F
+(type 2) 323.35 454 T
+0 F
+(. Also, external routes can be tagged ) 354.33 454 T
+(with a 32-bit number \050the ) 85.54 440 T
+4 F
+(external r) 211.12 440 T
+(oute tag) 261.19 440 T
+0 F
+(; commonly used as an AS number of the route\325) 302.16 440 T
+(s ) 531.68 440 T
+(origin\051, simplifying external route management in a transit Autonomous 
System.) 85.54 426 T
+(\245) 72 406 T
+4 F
+(Four level r) 85.54 406 T
+(outing hierar) 145.27 406 T
+(chy) 212.69 406 T
+0 F
+(. OSPF has a four level routing hierarchy) 229.9 406 T
+(, or trust model: ) 426.32 406 T
+4 F
+(intra-) 505.94 406 T
+(ar) 85.54 392 T
+(ea) 96.64 392 T
+0 F
+(, ) 107.96 392 T
+4 F
+(inter) 113.96 392 T
+(-ar) 138.16 392 T
+(ea) 153.26 392 T
+0 F
+(, ) 164.59 392 T
+4 F
+(external type 1) 170.58 392 T
+0 F
+( and ) 246.52 392 T
+4 F
+(external type 2) 269.84 392 T
+0 F
+( routes. This enables multiple levels of ) 345.78 392 T
+(routing protection, and simpli\336es routing management in an Autonomous 
System.) 85.54 378 T
+(\245) 72 358 T
+4 F
+(V) 85.54 358 T
+(irtual links) 93.75 358 T
+0 F
+(. By allowing the con\336guration of virtual links, OSPF ) 150.07 358 T
+4 F
+(r) 410.94 358 T
+(emoves topological ) 416.05 358 T
+(r) 85.54 344 T
+(estrictions) 90.64 344 T
+0 F
+( on area layout in an Autonomous System.) 143.27 344 T
+(\245) 72 324 T
+4 F
+-0.32 (Authentication of r) 85.54 324 P
+-0.32 (outing pr) 182.62 324 P
+-0.32 (otocol exchanges) 229.74 324 P
+0 F
+-0.32 (. Every time an OSPF router receives a routing ) 315.03 324 P
+(protocol packet, it authenticates the packet before processing it further) 
85.54 310 T
+(.) 422.61 310 T
+(\245) 72 290 T
+4 F
+-0.03 (Flexible r) 85.54 290 P
+-0.03 (outing metric.) 134.26 290 P
+0 F
+-0.03 ( In OSPF) 206.18 290 P
+-0.03 (, metric are assigned to outbound router interfaces. The cost ) 249.82 
290 P
+(of a path is then the sum of the path\325) 85.54 276 T
+(s component interfaces. The routing metric itself can be ) 260.42 276 T
+(assigned by the system administrator to indicate any combination of network 
characteristics ) 85.54 262 T
+(\050e.g., delay) 85.54 248 T
+(, bandwidth, dollar cost, etc.\051.) 138.04 248 T
+(\245) 72 228 T
+4 F
+-0.09 (Equal-cost multipath.) 85.54 228 P
+0 F
+-0.09 ( When multiple best cost routes to a destination exist, OSPF \336nds 
them ) 196.73 228 P
+(and they can be then used to load share traf) 85.54 214 T
+(\336c to the destination.) 292.82 214 T
+(\245) 72 194 T
+4 F
+(T) 85.54 194 T
+(OS-based r) 93.32 194 T
+(outing.) 150.74 194 T
+0 F
+( Separate sets of routes can be calculated for each IP type of service. For ) 
186.4 194 T
+(example, low delay traf) 85.54 180 T
+(\336c could be routed on one path, while high bandwidth traf) 198.56 180 T
+(\336c is routed ) 477.16 180 T
+-0.39 (on another) 85.54 166 P
+-0.39 (. This is done by \050optionally\051 assigning, to each outgoing router 
interface, one metric ) 135.44 166 P
+(for each IP T) 85.54 152 T
+(OS.) 148.26 152 T
+(\245) 72 132 T
+4 F
+(V) 85.54 132 T
+(ariable-length subnet support.) 93.09 132 T
+0 F
+( OSPF includes support for variable-length subnet masks by ) 248.02 132 T
+(carrying a network mask with each advertised destination.) 85.54 118 T
+FMENDPAGE
+%%EndPage: "5" 6
+%%Page: "6" 6
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 6]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+0 X
+(\245) 72 676 T
+4 F
+-0.08 (Stub ar) 85.54 676 P
+-0.08 (ea support. ) 123.56 676 P
+0 F
+-0.08 (T) 183.69 676 P
+-0.08 (o support routers having insuf) 190.18 676 P
+-0.08 (\336cient memory) 333.53 676 P
+-0.08 (, areas can be con\336gured as ) 405.63 676 P
+(stubs. External LSAs \050often making up the bulk of the Autonomous 
System\051 are not \337ooded ) 85.54 662 T
+(into/throughout stub areas. Routing to external destinations in stub areas is 
based solely on ) 85.54 648 T
+(default.) 85.54 634 T
+FMENDPAGE
+%%EndPage: "6" 7
+%%Page: "7" 7
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 7]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(3.0  Cost of the pr) 72 673.33 T
+(otocol) 193.4 673.33 T
+0 F
+-0.1 (This section attempts to analyze how the OSPF protocol will perform and 
scale in the Internet. In ) 72 646 P
+(this analysis, we will concentrate on the following four areas:) 72 632 T
+(\245) 72 612 T
+4 F
+(Link bandwidth) 85.54 612 T
+0 F
+(. In OSPF) 168.53 612 T
+(, a reliable \337ooding mechanism is used to ensure that router link ) 215.22 
612 T
+(state databases are remained synchronized. Individual components of the link 
state databases ) 85.54 598 T
+-0.17 (\050the LSAs\051 are refreshed infrequently \050every 30 minutes\051, 
at least in the absence of topological ) 85.54 584 P
+(changes. Still, as the size of the database increases, the amount of link 
bandwidth used by the ) 85.54 570 T
+(\337ooding procedure also increases.) 85.54 556 T
+(\245) 72 536 T
+4 F
+-0.03 (Router memory) 85.54 536 P
+0 F
+-0.03 (. The size of an OSPF link state database can get quite lar) 166.32 536 
P
+-0.03 (ge, especially in the ) 441.86 536 P
+(presence of many external LSAs. This imposes requirements on the amount of 
router memory ) 85.54 522 T
+(available.) 85.54 508 T
+(\245) 72 488 T
+4 F
+(CPU usage) 85.54 488 T
+0 F
+(. In OSPF) 141.83 488 T
+(, this is dominated by the length of time it takes to run the shortest path ) 
188.52 488 T
+(calculation \050Dijkstra procedure\051. This is a function of the number of 
routers in the OSPF sys-) 85.54 474 T
+(tem.) 85.54 460 T
+(\245) 72 440 T
+4 F
+(Role of the Designated Router) 85.54 440 T
+(.) 238.32 440 T
+0 F
+( The Designated router receives and sends more packets on a ) 241.32 440 T
+-0.46 (multi-access networks than the other routers connected to the network. 
Also, there is some time ) 85.54 426 P
+(involved in cutting over to a new Designated Router after the old one fails 
\050especially when ) 85.54 412 T
+(both the Backup Designated Router and the Designated Router fail at the same 
time\051. For this ) 85.54 398 T
+-0.27 (reason, it is possible that you may want to limit the number of routers 
connected to a single net-) 85.54 384 P
+(work.) 85.54 370 T
+(The remaining section will analyze these areas, estimating how much resources 
the OSPF proto-) 72 344 T
+-0.05 (col will consume, both now and in the future. T) 72 330 P
+-0.05 (o aid in this analysis, the next section will present ) 298.93 330 P
+(some data that have been collected in actual OSPF \336eld deployments.) 72 
316 T
+3 F
+(3.1   Operational data) 72 282.67 T
+0 F
+-0.44 (The OSPF protocol has been deployed in a number of places in the 
Internet. For a summary of this ) 72 256 P
+(deployment, see [1]. Some statistics have been gathered from this operational 
experience, via ) 72 242 T
+-0.03 (local network management facilities. Some of these statistics are 
presented in the following table:) 72 228 P
+FMENDPAGE
+%%EndPage: "7" 8
+5 10 /Times-Bold FMDEFINEFONT
+%%Page: "8" 8
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 8]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+72 666.01 540 674 C
+72 671.98 540 671.98 2 L
+0.5 H
+0 Z
+0 X
+0 K
+N
+0 0 612 792 C
+5 F
+0 X
+0 K
+(T) 72 677.33 T
+(ABLE 1. Pertinent operational statistics) 77.93 677.33 T
+(Statistic) 72 655.34 T
+(BARRNet) 216 655.34 T
+(NSI) 324 655.34 T
+(OARnet) 432 655.34 T
+1 F
+(Data gathering \050duration\051) 72 638.34 T
+(99 hours) 216 638.34 T
+(277 hours) 324 638.34 T
+(28 hours) 432 638.34 T
+(Dijkstra frequency) 72 622.34 T
+(50 minutes) 216 622.34 T
+(25 minutes) 324 622.34 T
+(13 minutes) 432 622.34 T
+(External incremental frequency) 72 606.34 T
+(1.2 minutes) 216 606.34 T
+(.98 minutes) 324 606.34 T
+(not gathered) 432 606.34 T
+(Database turnover) 72 590.34 T
+(29.7 minutes) 216 590.34 T
+(30.9 minutes) 324 590.34 T
+(28.2 minutes) 432 590.34 T
+(LSAs per packet) 72 574.34 T
+(3.38) 216 574.34 T
+(3.16) 324 574.34 T
+(2.99) 432 574.34 T
+(Flooding retransmits) 72 558.34 T
+(1.3%) 216 558.34 T
+(1.4%) 324 558.34 T
+(.7%) 432 558.34 T
+0 F
+(The \336rst line in the above table show the length of time that statistics 
were gathered on the three ) 72 533.01 T
+(networks. A brief description of the other statistics follows:) 72 519.01 T
+(\245) 72 499.01 T
+4 F
+(Dijkstra fr) 85.54 499.01 T
+(equency) 140.27 499.01 T
+(. ) 181.59 499.01 T
+0 F
+(In OSPF) 187.59 499.01 T
+(, the Dijkstra calculation involves only those routers and transit ) 228.28 
499.01 T
+-0.14 (networks belonging to the AS. The Dijkstra is run only when something 
in the system changes ) 85.54 485.01 P
+(\050like a serial line between two routers goes down\051. Note that in these 
operational systems, the ) 85.54 471.01 T
+(Dijkstra process runs only infrequently \050the most frequent being every 13 
minutes\051.) 85.54 457.01 T
+(\245) 72 437.01 T
+4 F
+(External incr) 85.54 437.01 T
+(emental fr) 153.61 437.01 T
+(equency) 206.35 437.01 T
+0 F
+(. In OSPF) 247.54 437.01 T
+(, when an external route changes only its entry in ) 294.23 437.01 T
+-0.13 (the routing table is recalculated. These are called external 
incremental updates. Note that these ) 85.54 423.01 P
+(happen much more frequently than the Dijkstra procedure. \050in other words, 
incremental ) 85.54 409.01 T
+(updates are saving quite a bit of processor time\051.) 85.54 395.01 T
+(\245) 72 375.01 T
+4 F
+-0.45 (Database turnover) 85.54 375.01 P
+-0.45 (.) 179.58 375.01 P
+0 F
+-0.45 ( In OSPF) 182.58 375.01 P
+-0.45 (, link state advertisements are refreshed at a minimum of every 30 ) 
225.36 375.01 P
+(minutes. New advertisement instances are sent out more frequently when some 
part of the ) 85.54 361.01 T
+-0.2 (topology changes. The table shows that, even taking topological changes 
into account, on aver-) 85.54 347.01 P
+(age an advertisement is updated close to only every 30 minutes. This 
statistic will be used in ) 85.54 333.01 T
+(the link bandwidth calculations below) 85.54 319.01 T
+(. Note that NSI actually shows advertisements updated ) 267.31 319.01 T
+(every 30.7 \050> 30\051 minutes. This probably means that at one time earlier 
in the measurement ) 85.54 305.01 T
+(period, NSI had a smaller link state database that it did at the end.) 85.54 
291.01 T
+(\245) 72 271.01 T
+4 F
+-0.39 (LSAs per packet.) 85.54 271.01 P
+0 F
+-0.39 ( In OSPF) 173.04 271.01 P
+-0.39 (, multiple LSAs can be included in either Link State Update or Link ) 
215.95 271.01 P
+-0.35 (State Acknowledgment packets.The table shows that, on average, around 3 
LSAs are carried in ) 85.54 257.01 P
+(a single packet. This statistic is used when calculating the header overhead 
in the link band-) 85.54 243.01 T
+(width calculation below) 85.54 229.01 T
+(. This statistic was derived by diving the number of LSAs \337ooded by ) 
200.01 229.01 T
+(the number of \050non-hello\051 multicasts sent.) 85.54 215.01 T
+(\245) 72 195.01 T
+4 F
+(Flooding r) 85.54 195.01 T
+(etransmits.) 138.97 195.01 T
+0 F
+( This counts both retransmission of LS Update packets and Link State ) 195.92 
195.01 T
+(Acknowledgment packets, as a percentage of the original multicast \337ooded 
packets. The table ) 85.54 181.01 T
+(shows that \337ooding is working well, and that retransmits can be ignored in 
the link bandwidth ) 85.54 167.01 T
+(calculation below) 85.54 153.01 T
+(.) 169.69 153.01 T
+FMENDPAGE
+%%EndPage: "8" 9
+%%Page: "9" 9
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 9]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+3 F
+0 X
+(3.2  Link bandwidth) 72 674.67 T
+0 F
+-0.02 (In this section we attempt to calculate how much link bandwidth is 
consumed by the OSPF \337ood-) 72 648 P
+(ing process. The amount of link bandwidth consumed increases linearly with 
the number of ) 72 634 T
+(advertisements present in the OSPF database.W) 72 620 T
+(e assume that the majority of advertisements in ) 300.88 620 T
+(the database will be AS external LSAs \050operationally this is true, see 
[1]\051.) 72 606 T
+(From the statistics presented in Section 3.1, any particular advertisement is 
\337ooded \050on average\051 ) 72 580 T
+(every 30 minutes. In addition, three advertisements \336t in a single packet. 
\050This packet could be ) 72 566 T
+(either a Link State Update packet or a Link State Acknowledgment packet; in 
this analysis we ) 72 552 T
+(select the Link State Update packet, which is the lar) 72 538 T
+(ger\051. An AS external LSA is 36 bytes long. ) 320.93 538 T
+(Adding one third of a packet header \050IP header plus OSPF Update packet\051 
yields 52 bytes. T) 72 524 T
+(rans-) 515.59 524 T
+(mitting this amount of data every 30 minutes gives an average rate of 23/100 
bits/second.) 72 510 T
+-0.05 (If you want to limit your routing traf) 72 484 P
+-0.05 (\336c to 5% of the link\325) 247.03 484 P
+-0.05 (s total bandwidth, you get the following ) 345.75 484 P
+(maximums for database size:) 72 470 T
+72 434.01 540 442 C
+72 439.98 540 439.98 2 L
+0.5 H
+0 Z
+0 X
+0 K
+N
+0 0 612 792 C
+5 F
+0 X
+0 K
+(T) 72 445.33 T
+(ABLE 2. Database size as a function of link speed \0505% utilization\051) 
77.93 445.33 T
+(Speed) 180 423.34 T
+(# external advertisements) 288 423.34 T
+1 F
+(9.6 Kb) 180 406.34 T
+(2087) 288 406.34 T
+(56 Kb) 180 390.34 T
+(12,174) 288 390.34 T
+0 F
+-0.46 (Higher line speeds have not been included, because other factors will 
then limit database size \050like ) 72 365.01 P
+-0.12 (router memory\051 before line speed becomes a factor) 72 351.01 P
+-0.12 (. Note that in the above calculation, the size of ) 315.32 351.01 P
+-0.06 (the data link header was not taken into account. Also, note that while 
the OSPF database is likely ) 72 337.01 P
+(to be mostly external LSAs, other LSAs have a size also. As a ballpark 
estimate, router links and ) 72 323.01 T
+-0.01 (network links are generally three times as lar) 72 309.01 P
+-0.01 (ge as an AS external link, with summary link adver-) 287.18 309.01 P
+(tisements being the same size as external link LSAs.) 72 295.01 T
+(OSPF consumes considerably less link bandwidth than RIP) 72 269.01 T
+(. This has been shown experimentally ) 355.51 269.01 T
+(in the NSI network. See Jef) 72 255.01 T
+(frey Bur) 203.69 255.01 T
+(gan\325) 243.77 255.01 T
+(s \322NASA Sciences Internet\323 report in [3].) 264.42 255.01 T
+3 F
+(3.3  Router memory) 72 221.67 T
+0 F
+-0.1 (Memory requirements in OSPF are dominated by the size of the link state 
database. As in the pre-) 72 195.01 P
+(vious section, it is probably safe to assume that most of the advertisements 
in the database are ) 72 181.01 T
+(external LSAs. While an external LSA is 36 bytes long, it is generally stored 
by an OSPF imple-) 72 167.01 T
+-0.34 (mentation together with some support data. So a good estimate of router 
memory consumed by an ) 72 153.01 P
+(external LSA is probably 64 bytes. So a database having 10,000 external LSAs 
will consume ) 72 139.01 T
+(640K bytes of router memory) 72 125.01 T
+(. OSPF de\336nitely requires more memory than RIP) 213.79 125.01 T
+(.) 452.98 125.01 T
+FMENDPAGE
+%%EndPage: "9" 10
+%%Page: "10" 10
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 10]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+0 X
+-0.35 (Using the Proteon P4200 implementation as an example, the P4200 has 
2Mbytes of memory) 72 676 P
+-0.35 (. This ) 510.38 676 P
+-0.02 (is shared between instruction, data and packet buf) 72 662 P
+-0.02 (fer memory) 310.78 662 P
+-0.02 (. The P4200 has enough memory to ) 366.26 662 P
+(store 10, 000 external LSAs, and still have enough packet buf) 72 648 T
+(fer memory available to run a rea-) 367.58 648 T
+(sonable number of interfaces.) 72 634 T
+(Also, note that while the OSPF database is likely to be mostly external LSAs, 
other LSAs have a ) 72 608 T
+-0.06 (size also. As a ballpark estimate, router links and network links 
consume generally three times as ) 72 594 P
+(much memory as an AS external link, with summary link advertisements being 
the same size as ) 72 580 T
+(external link LSAs.) 72 566 T
+3 F
+(3.4  Router CPU) 72 532.67 T
+0 F
+(Assume that, as the size of the OSPF routing domain grows, the number of 
interfaces per router ) 72 506 T
+(stays bounded. Then the Dijkstra calculation is of order \050n * log 
\050n\051\051, where n is the number of ) 72 492 T
+(routers in the routing domain. \050This is the complexity of the Dijkstra 
algorithm in a sparse net-) 72 478 T
+(work\051. Of course, it is implementation speci\336c as to how expensive the 
Dijkstra really is.) 72 464 T
+(W) 72 438 T
+(e have no experimental numbers for the cost of the Dijkstra calculation in a 
real OSPF imple-) 82.36 438 T
+(mentation. However) 72 424 T
+(, Steve Deering presented results for the Dijkstra calculation in the 
\322MOSPF ) 169.45 424 T
+(meeting report\323 in [3]. Steve\325) 72 410 T
+(s calculation was done on a DEC 5000 \05010 mips processor\051, using ) 212.9 
410 T
+(the Stanford internet as a model. His graphs are based on numbers of 
networks, not number of ) 72 396 T
+(routers. However) 72 382 T
+(, if we extrapolate that the ratio of routers to networks remains the same, 
the ) 154.78 382 T
+(time to run Dijkstra for 200 routers in Steve\325) 72 368 T
+(s implementation was around 15 milliseconds.) 285.87 368 T
+-0.46 (This seems a reasonable cost, particularly when you notice that the 
Dijkstra calculation is run very ) 72 342 P
+(infrequently in operational deployments. In the three networks presented in 
Section 3.1, Dijkstra ) 72 328 T
+-0.35 (was run on average only every 13 to 50 minutes. Since the Dijkstra is 
run so infrequently) 72 314 P
+-0.35 (, it seems ) 493.06 314 P
+-0.02 (likely that OSPF overall consumes less CPU than RIP \050because of 
RIP\325) 72 300 P
+-0.02 (s frequent updates, requir-) 413.95 300 P
+(ing routing table lookups\051.) 72 286 T
+(As another example, the routing algorithm in MILNET is SPF-based. MILNET\325) 
72 260 T
+(s current size is ) 456.42 260 T
+-0.02 (230 nodes, and the routing calculation still consumes less than 5% of 
the MILNET switches\325 pro-) 72 246 P
+(cessor bandwidth [4]. Because the routing algorithm in the MILNET adapts to 
network load, it ) 72 232 T
+(runs the Dijkstra process quite frequently \050on the order of seconds as 
compared to OSPF\325) 72 218 T
+(s min-) 499.7 218 T
+(utes\051. However) 72 204 T
+(, it should be noted that the routing algorithm in MILNET incrementally 
updates ) 144.79 204 T
+(the SPF-tree, while OSPF rebuilds it from scratch at each Dijkstra 
calculation) 72 190 T
+(OSPF\325) 72 164 T
+(s Area capability provides a way to reduce Dijkstra overhead, if it becomes a 
burden. The ) 104 164 T
+-0 (routing domain can be split into areas. The extent of the Dijkstra 
calculation \050and its complexity\051 ) 72 150 P
+(is limited to a single area at a time.) 72 136 T
+FMENDPAGE
+%%EndPage: "10" 11
+%%Page: "11" 11
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 11]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+3 F
+0 X
+(3.5  Role of Designated Router) 72 674.67 T
+0 F
+(This section explores the number of routers that can be attached to a single 
network. As the num-) 72 648 T
+-0.36 (ber of routers attached to a network grows, so does the amount of OSPF 
routing traf) 72 634 P
+-0.36 (\336c seen on the ) 469.48 634 P
+(network. Some of this is Hello traf) 72 620 T
+(\336c, which is generally multicast by each router every 10 sec-) 238.01 620 T
+-0.07 (onds. This burden is borne by all routers attached to the network. 
However) 72 606 P
+-0.07 (, because of its special ) 429.77 606 P
+-0.08 (role in the \337ooding process, the Designated router ends up sending 
more Link State Updates than ) 72 592 P
+(the other routers on the network. Also, the Designated Router receives Link 
State Acknowledg-) 72 578 T
+-0.15 (ments from all attached routers, while the other routers just receive 
them from the DR. \050Although ) 72 564 P
+(it is important to note that the rate of Link State Acknowledgments will 
generally be limited to ) 72 550 T
+(one per second from each router) 72 536 T
+(, because acknowledgments are generally delayed.\051) 226.38 536 T
+-0.22 (So, if the amount of protocol traf) 72 510 P
+-0.22 (\336c on the LAN becomes a limiting factor) 228.71 510 P
+-0.22 (, the limit is likely to be ) 424.24 510 P
+(detected in the Designated Router \336rst. However) 72 496 T
+(, such a limit is not expected to be reached in ) 305.68 496 T
+(practice. The amount of routing protocol traf) 72 482 T
+(\336c generated by OSPF has been shown to be small ) 286.62 482 T
+-0.11 (\050see Section 3.2\051. Also, if need be OSPF\325) 72 468 P
+-0.11 (s hello timers can be con\336gured to reduce the amount of ) 268.43 468 
P
+(protocol traf) 72 454 T
+(\336c on the network. Note that more than 50 routers have been simulated 
attached to a ) 131.4 454 T
+(single LAN \050see [1]\051. Also, in interoperability testing 13 routers have 
been attached to a single ) 72 440 T
+(ethernet with no problems encountered.) 72 426 T
+-0.02 (Another factor in the number of routers attached to a single network is 
the cutover time when the ) 72 400 P
+-0.17 (Designated Router fails. OSPF has a Backup Designated Router so that 
the cutover does not have ) 72 386 P
+-0.31 (to wait for the new DR to synchronize \050the adjacency bring-up 
process mentioned earlier\051 with all ) 72 372 P
+-0.43 (the other routers on the LAN; as a Backup DR it had already 
synchronized. However) 72 358 P
+-0.43 (, in those rare ) 473.46 358 P
+-0.33 (cases when both DR and Backup DR crash at the same time, the new DR 
will have to synchronize ) 72 344 P
+(\050via the adjacency bring-up process\051 with all other routers before 
becoming functional. Field ) 72 330 T
+-0.44 (experience show that this synchronization process takes place in a 
timely fashion \050see the OARnet ) 72 316 P
+(report in [1]\051. However) 72 302 T
+(, this may be an issue in systems that have many routers attached to a sin-) 
183.42 302 T
+(gle network.) 72 288 T
+-0.15 (In the unlikely event that the number of routers attached to a LAN 
becomes a problem, either due ) 72 262 P
+(to the amount of routing protocol traf) 72 248 T
+(\336c or the cutover time, the LAN can be split into separate ) 251 248 T
+(pieces \050similar to splitting up the AS into separate areas\051.) 72 234 T
+3 F
+(3.6  Summary) 72 200.67 T
+0 F
+(In summary) 72 174 T
+(, it seems like the most likely limitation to the size of an OSPF system is 
available ) 128.85 174 T
+-0.4 (router memory) 72 160 P
+-0.4 (. W) 142.43 160 P
+-0.4 (e have given as 10,000 as the number of external LSAs that can be 
supported by ) 158.39 160 P
+(the memory available in one con\336guration of a particular implementation 
\050the Proteon P4200\051. ) 72 146 T
+-0.09 (Other implementations may vary; nowadays routers are being built with 
more and more memory) 72 132 P
+-0.09 (. ) 534.09 132 P
+FMENDPAGE
+%%EndPage: "11" 12
+%%Page: "12" 12
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 12]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+0 X
+(Note that 10,000 routes is considerably lar) 72 676 T
+(ger than the lar) 275.31 676 T
+(gest \336eld implementation \050BARRNet; ) 347.37 676 T
+(which at 1816 external LSAs is still very lar) 72 662 T
+(ge\051.) 283.65 662 T
+(Note that there may be ways to reduce database size in a routing domain. 
First, the domain can ) 72 636 T
+-0.19 (make use of default routing, reducing the number of external routes 
that need to be imported. Sec-) 72 622 P
+(ondly) 72 608 T
+(, an EGP can be used that will transport its own information through the AS 
instead of rely-) 98.54 608 T
+-0.21 (ing on the IGP \050OSPF in this case\051 to do transfer the information 
for it \050the EGP\051. Thirdly) 72 594 P
+-0.21 (, routers ) 498.11 594 P
+(having insuf) 72 580 T
+(\336cient memory may be able to be assigned to stub areas \050whose databases 
are drasti-) 131.41 580 T
+(cally smaller\051. Lastly) 72 566 T
+(, if the Internet went away from a \337at address space the amount of 
external ) 172.82 566 T
+(information imported into an OSPF domain could be reduced drastically) 72 552 
T
+(.) 418.67 552 T
+(While not as likely) 72 526 T
+(, there could be other issues that would limit the size of an OSPF routing ) 
162.17 526 T
+(domain. If there are slow lines \050like 9600 baud\051, the size of the 
database will be limited \050see Sec-) 72 512 T
+(tion 3.2\051. Dijkstra may get to be expensive when there are hundreds of 
routers in the OSPF ) 72 498 T
+(domain; although at this point the domain can be split into areas. Finally) 
72 484 T
+(, when there are many ) 418.69 484 T
+(routers attached to a single network, there may be undue burden imposed upon 
the Designated ) 72 470 T
+(Router; although at that point a LAN can be split into separate LANs.) 72 456 
T
+FMENDPAGE
+%%EndPage: "12" 13
+%%Page: "13" 13
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 13]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(4.0  Suitable envir) 72 673.33 T
+(onments) 195.21 673.33 T
+0 F
+-0.14 (Suitable environments for the OSPF protocol range from lar) 72 646 P
+-0.14 (ge to small. OSPF is particular suited ) 359.11 646 P
+(for transit Autonomous Systems for the following reasons. OSPF can 
accommodate a lar) 72 632 T
+(ge num-) 497.84 632 T
+(ber of external routes. In OSPF the import of external information is very 
\337exible, having provi-) 72 618 T
+-0.39 (sions for a forwarding address, two levels of external metrics, and the 
ability to tag external routes ) 72 604 P
+-0.29 (with their AS number for easy management. Also OSPF\325) 72 590 P
+-0.29 (s ability to do partial updates when exter-) 343.17 590 P
+(nal information changes is very useful on these networks.) 72 576 T
+(OSPF is also suited for smaller) 72 550 T
+(, either stand alone or stub Autonomous Systems, because of its ) 220.44 550 T
+(wide array of features: fast conver) 72 536 T
+(gence, equal-cost-multipath, T) 235.96 536 T
+(OS routing, areas, etc.) 382.3 536 T
+2 F
+(5.0  Unsuitable envir) 72 469.33 T
+(onments) 212.98 469.33 T
+0 F
+-0.22 (OSPF has a very limited ability to express policy) 72 442 P
+-0.22 (. Basically) 304.62 442 P
+-0.22 (, its only policy mechanisms are in the ) 354.25 442 P
+(establishment of a four level routing hierarchy: intra-area, inter) 72 428 T
+(-area, type 1 and type 2 external ) 374.52 428 T
+(routes. A system wanting more sophisticated policies would have to be split 
up into separate ) 72 414 T
+(ASes, running a policy-based EGP between them.) 72 400 T
+FMENDPAGE
+%%EndPage: "13" 14
+%%Page: "14" 14
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 14]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(6.0  Refer) 72 673.33 T
+(ence Documents) 137.87 673.33 T
+0 F
+(The following documents have been referenced by this report:) 72 646 T
+([1]) 72 626 T
+(Moy) 108 626 T
+(, J., \322Experience with the OSPF protocol\323, RFC 1246, July 1991.) 129.88 
626 T
+([2]) 72 608 T
+(Moy) 108 608 T
+(, J., \322OSPF V) 129.88 608 T
+(ersion 2\323, RFC 1247, July 1991.) 193.85 608 T
+([3]) 72 590 T
+(Corporation for National Research Initiatives, \322Proceedings of the 
Eighteenth Internet ) 108 590 T
+(Engineering T) 108 576 T
+(ask Force\323, University of British Columbia, July 30-August 3, 1990.) 
176.11 576 T
+FMENDPAGE
+%%EndPage: "14" 15
+%%Page: "15" 15
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 15]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(Security Considerations) 72 673.33 T
+0 F
+(Security issues are not discussed in this memo.) 72 646 T
+2 F
+(Author) 72 617.33 T
+(\325) 122.04 617.33 T
+(s Addr) 126.77 617.33 T
+(ess) 173.13 617.33 T
+0 F
+(John Moy) 72 590 T
+(Proteon Inc.) 72 576 T
+(2 T) 72 562 T
+(echnology Drive) 87.48 562 T
+(W) 72 548 T
+(estborough, MA 01581) 82.36 548 T
+(Phone: \050508\051 898-2800) 72 522 T
+(Email: address@hidden) 72 508 T
+FMENDPAGE
+%%EndPage: "15" 16
+%%Trailer
+%%BoundingBox: 0 0 612 792
+%%Pages: 15 1
+%%DocumentFonts: Times-Roman
+%%+ Times-Bold
diff --git a/test/etags/pyt-src/server.py b/test/etags/pyt-src/server.py
new file mode 100644
index 0000000..68aa29a
--- /dev/null
+++ b/test/etags/pyt-src/server.py
@@ -0,0 +1,819 @@
+#!/usr/bin/python
+#
+# NOTE: THIS PROGRAM DOES NOT WORK!
+# It is intended as a regression test source for the Python support in etags.
+# If you want a working version, you'll find it in the fetchmail distribution.
+#
+
+from Tkinter import *
+from Dialog import *
+import sys
+import time
+import os
+
+#
+# Define the data structures the GUIs will be tossing around
+#
+class Controls:
+    def __init__(self):
+       self.foreground = FALSE;        # Run in background
+       self.daemon = 300               # Default to 5-minute timeout
+       self.syslog = FALSE             # Use syslogd for logging?
+       self.logfile = None             # No logfile, initially
+
+    def __repr__(self):
+       str = "";
+       if self.syslog:
+          str = str + ("set syslog\n")
+       elif self.logfile:
+           str = str + ("set logfile \"%s\"\n" % (self.logfile,));
+       if not self.foreground and self.daemon:
+           str = str + ("set daemon %s\n" % (self.daemon,))
+       return str + "\n"
+
+    def __str__(self):
+       return "[Server: " + repr(self) + "]"
+
+class Server:
+    def __init__(self):
+       self.pollname = None            # Poll label
+       self.via = None                 # True name of host
+       self.active = TRUE              # Poll status
+       self.interval = 0               # Skip interval
+       self.protocol = 'auto'          # Default to auto protocol
+       self.port = 0                   # Port number to use
+       self.uidl = FALSE               # Don't use RFC1725 UIDLs by default
+       self.auth = "password"          # Default to password authentication
+       self.timeout = 300              # 5-minute timeout
+       self.envelope = "Received"      # Envelope-address header
+       self.aka = []                   # List of DNS aka names
+       self.dns = TRUE                 # Enable DNS lookup on multidrop
+       self.localdomains = []          # Domains to be considered local
+       self.interface = None           # IP address and range
+       self.monitor = None             # IP address and range
+       self.userlist = []              # List of user entries for site
+       self.typemap = (
+           ('pollname',  'String'),
+           ('via',       'String'),
+           ('active',    'Boolean'),
+           ('interval',  'Int'),
+           ('protocol',  'String'),
+           ('interval',  'Int'),
+           ('port',      'Int'),
+           ('uidl',      'Boolean'),
+           ('auth',      'String'),
+           ('timeout',   'Int'),
+           ('envelope',  'String'),
+           # leave aka out
+           ('dns',       'Boolean'),
+           # leave localdomains out
+           ('interface', 'String'),
+           ('monitor',   'String'))
+
+    def dump(self, folded):
+       str = ""
+       if self.active:   str = str + "poll"
+       else:             str = str + "skip"
+       str = str + (" " + self.pollname)
+       if self.via != self.pollname:
+           str = str + " via " + self.via
+       if self.protocol != ServerDefaults.protocol:
+           str = str + " with proto " + self.protocol 
+       if self.port != defaultports[self.protocol]:
+           str = str + " port " + `self.port`
+       if self.timeout != ServerDefaults.timeout:
+           str = str + " timeout " + `self.timeout`
+       if self.interval != ServerDefaults.interval: 
+           str = str + " interval " + `self.interval` 
+       if self.envelope != ServerDefaults.envelope:
+           str = str + " envelope " + self.envelope
+       if self.auth != ServerDefaults.auth:
+           str = str + " auth " + self.auth
+       if self.dns != ServerDefaults.dns or self.uidl != ServerDefaults.uidl:
+           str = str + " and options"
+       if self.dns != ServerDefaults.dns:
+           str = str + flag2str(self.dns, 'dns')
+       if self.uidl != ServerDefaults.uidl:
+           str = str + flag2str(self.uidl, 'uidl')
+       if folded:        str = str + "\n\t"
+       else:             str = str + " "
+
+       if self.aka:
+            str = str + "aka"
+            for x in self.aka:
+               str = str + " " + x
+       if self.aka and self.localdomains: str = str + " "
+       if self.localdomains:
+            str = str + ("localdomains")
+            for x in self.localdomains:
+               str = str + " " + x
+        if (self.aka or self.localdomains):
+           if folded:
+               str = str + "\n\t"
+           else:
+               str = str + " "
+
+       if self.interface: str = str + " interface " + self.interface
+       if self.monitor: str = str + " monitor " + self.monitor
+       if (self.interface or self.monitor):
+           if folded:
+               str = str + "\n"
+
+       if str[-1] == "\t": str = str[0:-1]
+       return str;
+
+    def __repr__(self):
+       return self.dump(TRUE)
+
+    def __str__(self):
+       return "[Server: " + self.dump(FALSE) + "]"
+
+class User:
+    def __init__(self):
+       self.username = ""              # Remote username
+       self.localnames = None          # Local names
+       self.password = ""              # Password for mail account access
+       self.smpthost = 'localhost'     # Host to forward to
+       self.mda = ""                   # Mail Delivery Agent
+       self.preconnect = ""            # Connection setup
+       self.postconnect = ""           # Connection wrapup
+       self.keep = FALSE               # Keep messages
+       self.flush = FALSE              # Flush messages
+       self.fetchall = FALSE           # Fetch old messages
+       self.rewrite = TRUE             # Rewrite message headers
+       self.forcecr = FALSE            # Force LF -> CR/LF
+       self.stripcr = FALSE            # Strip CR
+       self.pass8bits = FALSE          # Force BODY=7BIT
+       self.dropstatus = FALSE         # Force BODY=7BIT
+       self.limit = 0                  # Message size limit
+       self.fetchlimit = 0             # Max messages fetched per batch
+       self.batchlimit = 0             # Max message forwarded per batch
+       self.typemap = (
+           ('username',    'String')
+           ('folder',      'String')
+           # leave out localnames
+           ('password',    'String')
+           ('smtphost',    'String')
+           ('preconnect',  'String')
+           ('postconnect', 'String')
+           ('mda',         'String')
+           ('keep',        'Boolean')
+           ('flush',       'Boolean')
+           ('fetchall',    'Boolean')
+           ('rewrite',     'Boolean')
+           ('forcecr',     'Boolean')
+           ('stripcr',     'Boolean')
+           ('pass8bits',   'Boolean')
+           ('dropstatus',  'Boolean')
+           ('limit',       'Int')
+           ('fetchlimit',  'Int')
+           ('batchlimit',  'Int'))
+
+    def __repr__(self):
+       str = ""
+       str = str + "user " + self.user;
+       if self.password: str = str + "with password " + self.password
+       if self.localnames:
+            str = str + "localnames"
+            for x in self.localnames:
+               str = str + " " + x
+       if (self.keep or self.flush or self.fetchall or self.rewrite or
+          self.forcecr or self.stripcr or self.pass8bits or self.dropstatus):
+           str = str + " options"
+       if self.keep != UserDefaults.keep:
+           str = str + flag2str(self.keep, 'keep')
+       if self.flush != UserDefaults.flush:
+           str = str + flag2str(self.flush, 'flush')
+       if self.fetchall != UserDefaults.fetchall:
+           str = str + flag2str(self.fetchall, 'fetchall')
+       if self.rewrite != UserDefaults.rewrite:
+           str = str + flag2str(self.rewrite, 'rewrite')
+       if self.forcecr != UserDefaults.forcecr:
+           str = str + flag2str(self.forcecr, 'forcecr')
+       if self.stripcr != UserDefaults.stripcr:
+           str = str + flag2str(self.stripcr, 'stripcr')
+       if self.pass8bits != UserDefaults.pass8bits:
+           str = str + flag2str(self.pass8bits, 'pass8bits')
+       if self.dropstatus != UserDefaults.dropstatus:
+           str = str + flag2str(self.dropstatus, 'dropstatus')
+       if self.limit != UserDefaults.limit:
+           str = str + " limit " + `self.limit`
+       if self.fetchlimit != UserDefaults.fetchlimit:
+           str = str + " fetchlimit " + `self.fetchlimit`
+       if self.batchlimit != UserDefaults.batchlimit:
+           str = str + " batchlimit " + `self.batchlimit`
+
+    def __str__(self):
+       return "[User: " + repr(self) + "]"
+    
+#
+# Helper code
+#
+
+defaultports = {"auto":0,
+               "POP2":109, 
+               "POP3":110, "APOP":110, "KPOP":1109, "IMAP":143,
+               "IMAP-K4":143,
+               "ETRN":25}
+
+protolist = ("auto", "POP2", "POP3", "APOP", "KPOP", "IMAP", "IMAP-K4", "ETRN")
+
+authlist = ("password", "kerberos")
+
+def flag2str(value, string):
+# make a string representation of a .fetchmailrc flag or negated flag
+    str = ""
+    if value != None:
+       str = str + (" ")
+       if value == FALSE: str = str + ("no ")
+       str = str + string;
+    return str
+
+class LabeledEntry(Frame):
+# widget consisting of entry field with caption to left
+    def bind(self, key, action):
+       self.E.bind(key, action)
+    def focus_set(self):
+       self.E.focus_set()
+    def __init__(self, Master, text, textvar, width):
+       Frame.__init__(self, Master)
+       self.L = Label(self, {'text':text, 'width':width, 'anchor':'w'})
+       self.E = Entry(self, {'textvar':textvar})
+       self.L.pack({'side':'left'})
+       self.E.pack({'side':'left', 'expand':'1', 'fill':'x'})
+
+def ButtonBar(frame, legend, ref, alternatives, command):
+# horizontal bar of radio buttons, caption to left, picking from a string list
+    bar = Frame(frame)
+    Label(bar, text=legend).pack(side=LEFT)
+    for alt in alternatives:
+       Radiobutton(bar,
+               {'text':alt, 'variable':ref, 'value':alt, 
'command':command}).pack(side=LEFT)
+    bar.pack(side=TOP);
+    return bar
+
+def helpwin(helpdict):
+# help message window with a self-destruct button
+    helpwin = Toplevel()
+    helpwin.title(helpdict['title']) 
+    helpwin.iconname(helpdict['title'])
+    Label(helpwin, text=helpdict['banner']).pack()
+    textwin = Message(helpwin, text=helpdict['text'], width=600)
+    textwin.pack()
+    Button(helpwin, text='Done', 
+          command=lambda x=helpwin: Widget.destroy(x),
+          relief=SUNKEN, bd=2).pack()
+
+class ListEdit(Frame):
+# edit a list of values (duplicates not allowed) with a supplied editor hook 
+    def __init__(self, newlegend, list, editor, master):
+       self.editor = editor
+       self.list = list
+
+       # Set up a widget to accept new sites
+       self.newval = StringVar(master)
+       newwin = LabeledEntry(master, newlegend, self.newval, '16')
+       newwin.bind('<Double-1>', self.handleNew)
+       newwin.bind('<Return>', self.handleNew)
+       newwin.pack(side=TOP, fill=X, anchor=E)
+
+       # Create the sitelist for site-configuration selection
+       listframe = Frame(master)
+       scroll = Scrollbar(listframe)
+       listwidget = Listbox(listframe, height=0, selectmode='browse')
+       if list:
+           for dnsname in list:
+               listwidget.insert('end', dnsname)
+       listframe.pack(side=TOP, expand=YES, fill=BOTH)
+       listwidget.config(yscrollcommand=scroll.set, relief=SUNKEN)
+       listwidget.pack(side=LEFT, expand=YES, fill=BOTH)
+       scroll.config(command=listwidget.yview, relief=SUNKEN)
+       scroll.pack(side=RIGHT, fill=BOTH)
+       listwidget.config(selectmode=SINGLE, setgrid=TRUE)
+       listwidget.bind('<Double-1>', self.handleList);
+       listwidget.bind('<Return>', self.handleList);
+       self.listwidget = listwidget
+
+       bf = Frame(master);
+       if self.editor:
+           Button(bf, text='Edit',   command=self.editItem).pack(side=LEFT)
+       Button(bf, text='Delete', command=self.deleteItem).pack(side=RIGHT)
+       bf.pack(fill=X)
+
+    def handleList(self, event):
+       self.editItem();
+
+    def handleNew(self, event):
+       item = self.newval.get()
+       entire = self.listwidget.get(0, self.listwidget.index('end'));
+       if item and (not entire) or (not item in self.listwidget.get(0, 
self.listwidget.index('end'))):
+           self.listwidget.insert('end', item)
+           if self.list != None: self.list.append(item)
+       self.newval.set('')
+
+    def editItem(self):
+       index = self.listwidget.curselection()[0]
+       if index and self.editor:
+           label = self.listwidget.get(index);
+           apply(self.editor, (label,))
+
+    def deleteItem(self):
+       index = self.listwidget.curselection()[0]
+       if index:
+           self.listwidget.delete(index)
+           if self.list != None: del self.list[index]
+
+def ConfirmQuit(frame, context):
+    ans = Dialog(frame, 
+                title = 'Quit?',
+                text = 'Really quit ' + context + ' without saving?',
+                bitmap = 'question',
+                strings = ('Yes', 'No'),
+                default = 1)
+    return ans.num == 0
+#
+# First, code to set the global fetchmail run controls.
+#
+
+confighelp = {
+    'title' : 'Fetchmail configurator help',
+    'banner': 'Configurator help',
+    'text' : """
+In the `Configurator Controls' panel, you can:
+
+Press `Save' to save the new fetchmail configuration you have created.
+Press `Quit' to exit without saving.
+Press `Help' to bring up this help message.
+
+In the `Configurator Controls' panel, you can set the following options that
+control how fetchmail runs:
+
+Poll interval
+        Number of seconds to wait between polls in the background.
+        Ignored if the `Run in Foreground?' option is on.
+
+Logfile
+        If empty, emit progress and error messages to stderr.
+        Otherwise this gives the name of the files to write to.
+        This field is ignored if the "Log to syslog?" option is on.
+
+In the `Remote Mail Configurations' panel, you can:
+
+1. Enter the name of a new remote mail server you want fetchmail to query.
+
+To do this, simply enter a label for the poll configuration in the
+`New Server:' box.  The label should be a DNS name of the server (unless
+you are using ssh or some other tunneling method and will fill in the `via'
+option on the site configuration screen).
+
+2. Change the configuration of an existing site.
+
+To do this, find the site's label in the listbox and double-click it.
+This will take you to a site configuration dialogue.
+"""}
+
+class ControlEdit(Frame):
+    def PostControls(self):
+       self.foreground = BooleanVar(self)
+       self.foreground.set(self.controls.foreground)
+       self.daemon = StringVar(self)
+       self.daemon.set(`self.controls.daemon`)
+       self.syslog = BooleanVar(self)
+       self.syslog.set(self.controls.syslog);
+       self.logfile = StringVar(self)
+       if self.controls.logfile: self.logfile.set(self.controls.logfile);
+
+       gf = Frame(self, relief=RAISED, bd = 5)
+
+       Label(gf,
+               text='Fetchmail Run Controls', 
+               bd=2).pack(side=TOP, pady=10)
+
+       df = Frame(gf, relief=RAISED, bd=2)
+
+       # Run in foreground?
+       Checkbutton(df,
+               {'text':'Run in foreground?',
+               'variable':self.foreground,
+               'relief':GROOVE}).pack(side=LEFT,anchor=W)
+
+       # Set the poll interval
+       de = LabeledEntry(df, '     Poll interval:', self.daemon, '14')
+       de.pack(side=RIGHT, anchor=E)
+
+       df.pack();
+
+       sf = Frame(gf, relief=RAISED, bd=2)
+
+       # Use syslog for logging?
+       Checkbutton(sf,
+               {'text':'Log to syslog?',
+               'variable':self.syslog,
+               'relief':GROOVE}).pack(side=LEFT, anchor=W)
+
+       # Set the logfile
+       log = LabeledEntry(sf, '     Logfile:', self.logfile, '14')
+       log.pack(side=RIGHT, anchor=E)
+
+       sf.pack(fill=X)
+       gf.pack(fill=X)
+
+    def GatherControls(self):
+       self.controls.daemon = self.daemon.get()
+       self.controls.foreground = self.foreground.get()
+       self.controls.logfile = self.logfile.get()
+       self.controls.syslog = self.syslog.get()
+
+#
+# Server editing stuff.
+#
+serverhelp = {
+    'title' : 'Server options help',
+    'banner': 'Server Options',
+    'text' : """
+The server options screen controls fetchmail 
+options that apply to one of your mailservers.
+
+Once you have a mailserver configuration set
+up as you like it, you can select `Save' to
+store it in the server list maintained in
+the main configuration window.
+
+If you wish to discard changes to a server 
+configuration, select `Quit'.
+"""}
+
+controlhelp = {
+    'title' : 'Run Control help',
+    'banner': 'Run Controls',
+    'text' : """
+If the `Poll normally' checkbox is on, the host is polled as part of
+the normal operation of fetchmail when it is run with no arguments.
+If it is off, fetchmail will only query this host when it is given as
+a command-line argument.
+
+The `True name of server' box should specify the actual DNS name
+to query. By default this is the same as the poll name.
+
+Normally each host described in the file is queried once each 
+poll cycle. If `Cycles to skip between polls' is greater than 0,
+that's the number of poll cycles that are skipped between the
+times this post is actually polled.
+
+The `Server timeout' is the number of seconds fetchmail will wait
+for a reply from the mailserver before concluding it is hung and
+giving up.
+"""}
+
+protohelp = {
+    'title' : 'Protocol and Port help',
+    'banner': 'Protocol and Port',
+    'text' : """
+These options control the remote-mail protocol
+and TCP/IP service port used to query this
+server.
+
+The `Protocol' button bar offers you a choice of
+all the different protocols available.  The `auto'
+protocol is a special mode that probes the host
+ports for POP3 and IMAP to see if either is
+available.
+
+Normally the TCP/IP service port to use is 
+dictated by the protocol choice.  The `Port'
+field lets you set a non-standard port.
+"""}
+
+sechelp = {
+    'title' : 'Security option help',
+    'banner': 'Security',
+    'text' : """
+These options control the security procedure used
+to protect mail transfer
+
+Normally the mail fetch is validated using an 
+ordinary password logon.  If your server speaks
+MIT Kerberos IV it is possible to pre-authenticate
+the exxchange with a Kerberos ticket.
+
+The `interface' and `monitor' options are available
+only for Linux systems.  See the fetchmail manual page
+for details on these.
+"""}
+
+multihelp = {
+    'title' : 'Multidrop option help',
+    'banner': 'Multidrop',
+    'text' : """
+These options are only useful with multidrop mode.
+See the manual page for extended discussion.
+"""}
+
+class ServerEdit(Frame):
+    def __init__(self, host, sitelist, master=None):
+       Frame.__init__(self, master)
+       Pack.config(self)
+       self.master.title('Fetchmail host ' + host);
+       self.master.iconname('Fetchmail host ' + host);
+       self.server = Server()
+       self.server.pollname = host
+       self.server.via = host
+       self.sitelist = sitelist
+       self.post()
+       self.createWidgets(host)
+
+    def post(self):
+       # we can't abstract this away, execs would happen in the wrong scope
+       for x in self.server.typemap:
+           target = "self." + x[0]
+           source = "self.server." + x[0]
+           if x[1] == 'Boolean':
+               exec target + " = BooleanVar(self)"
+               if eval(source):
+                   exec target + ".set(" + source + ")"
+           elif x[1] == 'String':
+               exec target + " = StringVar(self)"
+               if eval(source):
+                   exec target + ".set(" + source + ")"
+           elif x[1] == 'Int':
+               exec target + " = IntVar(self)"
+               if eval(source):
+                   exec target + ".set(" + source + ")"
+
+    def gather(self):
+       for x in self.server.typemap:
+           setattr(self.server, x[0], getattr(self, x[0]).get())
+
+    def nosave(self):
+       if ConfirmQuit(self, 'server option editing'):
+           Widget.destroy(self.master)
+
+    def save(self):
+       self.gather()
+       self.sitelist.append(self.server) 
+       Widget.destroy(self.master)
+
+    def refreshPort(self):
+       proto = self.protocol.get()
+       self.port.set(defaultports[proto])
+       if not proto in ("POP3", "APOP", "KPOP"): self.uidl = FALSE
+
+    def createWidgets(self, host):
+       topwin = Frame(self, relief=RAISED, bd=5)
+       Label(topwin, text="Server options for " + host).pack(side=TOP,pady=10)
+       Button(topwin, text='Save', fg='blue',
+               command=self.save).pack(side=LEFT)
+       Button(topwin, text='Quit', fg='blue',
+               command=self.nosave).pack(side=LEFT)
+       Button(topwin, text='Help', fg='blue',
+              command=lambda: helpwin(serverhelp)).pack(side=RIGHT)
+       topwin.pack(fill=X)
+
+       ctlwin = Frame(self, relief=RAISED, bd=5)
+       Label(ctlwin, text="Run Controls").pack(side=TOP)
+       Checkbutton(ctlwin, text='Poll ' + host + ' normally?', 
variable=self.active).pack(side=TOP)
+       LabeledEntry(ctlwin, 'True name of ' + host + ':',
+                     self.via, '30').pack(side=TOP, fill=X)
+       LabeledEntry(ctlwin, 'Cycles to skip between polls:',
+                     self.interval, '30').pack(side=TOP, fill=X)
+       LabeledEntry(ctlwin, 'Server timeout (seconds):',
+                     self.timeout, '30').pack(side=TOP, fill=X)
+       Button(ctlwin, text='Help', fg='blue',
+              command=lambda: helpwin(controlhelp)).pack(side=RIGHT)
+       ctlwin.pack(fill=X)
+
+       protwin = Frame(self, relief=RAISED, bd=5)
+       Label(protwin, text="Protocol and Port").pack(side=TOP)
+       pb = ButtonBar(protwin, 'Protocol:', self.protocol, protolist, 
self.refreshPort) 
+       LabeledEntry(protwin, 'TCP/IP service port to query:',
+                     self.port, '30').pack(side=TOP, fill=X)
+       Checkbutton(protwin,
+               text="Track seen POP3 messages with client-side UIDL list?",
+               variable=self.uidl).pack(side=TOP)   
+       Button(protwin, text='Help', fg='blue',
+              command=lambda: helpwin(protohelp)).pack(side=RIGHT)
+       protwin.pack(fill=X)
+
+       secwin = Frame(self, relief=RAISED, bd=5)
+       Label(secwin, text="Security").pack(side=TOP)
+       ButtonBar(secwin, 'Authorization mode:',
+                 self.auth, authlist, None).pack(side=TOP)
+
+       if os.popen("uname").readlines()[0] == 'Linux\n':
+           LabeledEntry(secwin, 'Interface to check before polling:',
+                        self.interface, '30').pack(side=TOP, fill=X)
+           LabeledEntry(secwin, 'IP addresses to watch for activity:',
+                        self.monitor, '30').pack(side=TOP, fill=X)
+
+       Button(secwin, text='Help', fg='blue',
+              command=lambda: helpwin(sechelp)).pack(side=RIGHT)
+       secwin.pack(fill=X)
+
+       mdropwin = Frame(self, relief=RAISED, bd=5)
+       Label(mdropwin, text="Multidrop options").pack(side=TOP)
+       LabeledEntry(mdropwin, 'Envelope address header:',
+                     self.envelope, '30').pack(side=TOP, fill=X)
+       Checkbutton(mdropwin, text="Enable multidrop DNS lookup?",
+                   variable=self.dns).pack(side=TOP)
+       Label(mdropwin, text="DNS aliases").pack(side=TOP)
+       ListEdit("New site alias: ", self.server.aka, None, mdropwin)
+       Label(mdropwin, text="Domains to be considered local").pack(side=TOP)
+       ListEdit("New local domain: ", self.server.localdomains, None,mdropwin)
+       Button(mdropwin, text='Help', fg='blue',
+              command=lambda: helpwin(multihelp)).pack(side=RIGHT)
+       mdropwin.pack(fill=X)
+
+       userwin = Frame(self, relief=RAISED, bd=5)
+       Label(userwin, text="User entries for " + host).pack(side=TOP)
+       ListEdit("New user: ", None, self.edituser, userwin)
+       userwin.pack(fill=X)
+
+    def edituser(self, user):
+       UserEdit(user, self.server.userlist, Toplevel())
+
+#
+# User editing stuff
+#
+
+userhelp = {
+    'title' : 'User option help',
+    'banner': 'User options',
+    'text' : """
+FIXME
+"""}
+
+class UserEdit(Frame):
+    def __init__(self, user, userlist, master=None):
+       Frame.__init__(self, master)
+       Pack.config(self)
+       self.master.title('Fetchmail user ' + user);
+       self.master.iconname('Fetchmail user ' + user);
+       self.user = User()
+       self.user.remote = user
+       self.user.localnames = [user]
+       self.userlist = userlist
+       self.post()
+       self.createWidgets(user)
+
+    def post(self):
+       # we can't abstract this away, execs would happen in the wrong scope
+       for x in self.user.typemap:
+           target = "self." + x[0]
+           source = "self.user." + x[0]
+           if x[1] == 'Boolean':
+               exec target + " = BooleanVar(self)"
+               if eval(source):
+                   exec target + ".set(" + source + ")"
+           elif x[1] == 'String':
+               exec target + " = StringVar(self)"
+               if eval(source):
+                   exec target + ".set(" + source + ")"
+           elif x[1] == 'Int':
+               exec target + " = IntVar(self)"
+               if eval(source):
+                   exec target + ".set(" + source + ")"
+
+    def gather(self):
+       for x in self.user.typemap:
+           setattr(self.user, x[0], getattr(self, x[0]).get())
+
+    def nosave(self):
+       if ConfirmQuit(self, 'user option editing'):
+           Widget.destroy(self.master)
+
+    def save(self):
+       self.gather()
+       self.userlist.append(self.user) 
+       Widget.destroy(self.master)
+
+    def createWidgets(self):
+       topwin = Frame(self, relief=RAISED, bd=5)
+       Label(topwin, 
+             text="User options for " + 
self.user.remote).pack(side=TOP,pady=10)
+       Button(topwin, text='Save', fg='blue',
+               command=self.save).pack(side=LEFT)
+       Button(topwin, text='Quit', fg='blue',
+               command=self.nosave).pack(side=LEFT)
+       Button(topwin, text='Help', fg='blue',
+              command=lambda: helpwin(userhelp)).pack(side=RIGHT)
+       topwin.pack(fill=X)
+
+       secwin = Frame(self, relief=RAISED, bd=5)
+       Label(secwin, text="Authentication").pack(side=TOP)
+       LabeledEntry(mdropwin, 'Password:',
+                     self.password, '30').pack(side=TOP, fill=X)
+       LabeledEntry(mdropwin, 'Remote folder:',
+                    self.folder, '30').pack(side=TOP, fill=X)
+       secwin.pack(fill=X)
+
+       names = Frame(self, relief=RAISED, bd=5)
+       Label(names, text="Local names").pack(side=TOP)
+       ListEdit("New local name: ", self.localnames, None, names)
+       names.pack(fill=X)
+
+       targwin = Frame(self, relief=RAISED, bd=5)
+       Label(targwin, text="Forwarding Options").pack(side=TOP)
+       LabeledEntry(targwin, 'System to forward to:',
+                    self.smtphost, '30').pack(side=TOP, fill=X)
+       LabeledEntry(targwin, 'Connection setup command:',
+                    self.preconnect, '30').pack(side=TOP, fill=X)
+       LabeledEntry(targwin, 'Connection wrapup command:',
+                    self.postconnect, '30').pack(side=TOP, fill=X)
+       LabeledEntry(targwin, 'Local delivery agent:',
+                    self.mda, '30').pack(side=TOP, fill=X)
+       targwin.pack(fill=X)
+
+       optwin = Frame(self, relief=RAISED, bd=5)
+       Checkbutton(optwin, "Suppress deletion of messages after reading",
+                   self.keep)
+       Checkbutton(optwin, "Flush seen messages before retrieval", 
+                   self.flush)
+       Checkbutton(optwin, "Fetch old messages as well as new",
+                   self.fetchall)
+       Checkbutton(optwin, "Rewrite To/Cc/Bcc messages to enable reply", 
+                   self.rewrite)
+       Checkbutton(optwin, "Force CR/LF at end of each line",
+                   self.forcecr)
+       Checkbutton(optwin, "Strip CR from end of eacgh line",
+                   self.stripcr)
+       Checkbutton(optwin, "Pass 8 bits even theough SMTP says 7BIT",
+                   self.pass8bits)
+       Checkbutton(optwin, "Drop Status lines from forwarded messages", 
+                   self.dropstatus)
+       optwin.pack(fill=X)
+
+       limwin = Frame(self, relief=RAISED, bd=5)
+       Label(limwin, text="Resource Limits").pack(side=TOP)
+       LabeledEntry(limwin, 'Message size limit:',
+                     self.limit, '30').pack(side=TOP, fill=X)
+       LabeledEntry(limwin, 'Maximum messages to fetch each poll:',
+                     self.fetchlimit, '30').pack(side=TOP, fill=X)
+       LabeledEntry(limwin, 'Maximum messages to forward each poll:',
+                     self.batchlimit, '30').pack(side=TOP, fill=X)
+       limwin.pack(fill=X)
+
+#
+# Configure drives the configuration dialogue.  It may call multiple
+# instances of ServerEdit to do its job.
+#
+
+class Configure(Frame, ControlEdit):
+    def __init__(self, master=None):
+       Frame.__init__(self, master)
+       self.master.title('fetchmail configurator');
+       self.master.iconname('fetchmail configurator');
+       Pack.config(self)
+       self.MakeDispose()
+       self.controls = Controls()
+       self.PostControls()
+       self.MakeSitelist(master)
+       self.sites = []
+
+    def MakeDispose(self):
+       # Set the disposal of the given configuration
+       dispose = Frame(self, relief=RAISED, bd=5);
+       Label(dispose,
+               text='Configurator Controls', 
+               bd=2).pack(side=TOP, pady=10)
+       Button(dispose, text='Save', fg='blue',
+               command=self.save).pack(side=LEFT)
+       Button(dispose, text='Quit', fg='blue',
+               command=self.nosave).pack(side=LEFT)
+       Button(dispose, text='Help', fg='blue',
+              command=lambda: helpwin(confighelp)).pack(side=RIGHT)
+       dispose.pack(side=TOP, fill=X);
+
+    def MakeSitelist(self, master):
+       lf = Frame(master, relief=RAISED, bd=5)
+       Label(lf,
+             text='Remote Mail Server Configurations', 
+             bd=2).pack(side=TOP, pady=10)
+       ListEdit('New Server:', None, self.editsite, lf)
+       lf.pack(fill=X)
+
+    def editsite(self, site):
+       ServerEdit(site, self.sites, Toplevel())
+
+    def save(self):
+       self.GatherControls()
+       sys.stdout.write("# Configuration created %s\n" % 
time.ctime(time.time()))
+       sys.stdout.write(`self.controls`)
+       for site in self.sites:
+           sys.stdout.write(`site`)
+           for user in self.sites.userlist:
+               sys.stdout.write(`user`)
+       self.quit()
+
+    def nosave(self):
+       if ConfirmQuit(self, "configuration editor"):
+           self.quit()
+
+if __name__ == '__main__': 
+    ServerDefaults = Server()
+    UserDefaults = User()
+    Configure().mainloop()
+
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# mode:python
+# End:
diff --git a/test/etags/tex-src/gzip.texi b/test/etags/tex-src/gzip.texi
new file mode 100644
index 0000000..07be371
--- /dev/null
+++ b/test/etags/tex-src/gzip.texi
@@ -0,0 +1,479 @@
+\input texinfo @c -*-texinfo-*-
address@hidden %**start of header
address@hidden gzip.info
address@hidden Gzip User's Manual
address@hidden
address@hidden odd
address@hidden %**end of header
+
address@hidden
+This file documents the the GNU @code{gzip} command for compressing files.
+
+Copyright (C) 1992-1993 Jean-loup Gailly
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
address@hidden
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
address@hidden ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
address@hidden ifinfo
+
address@hidden
address@hidden gzip
address@hidden The data compression program
address@hidden Edition 1.2.4, for Gzip Version 1.2.4
address@hidden July 1993
address@hidden by Jean-loup Gailly
+
address@hidden
address@hidden 0pt plus 1filll
+Copyright @copyright{} 1992-1993 Jean-loup Gailly
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
address@hidden titlepage
+
address@hidden Top, , , (dir)
+
address@hidden
+This file documents the @code{gzip} command to compress files.
address@hidden ifinfo
+
address@hidden
+* Copying::            How you can copy and share @code{gzip}.
+* Overview::           Preliminary information.
+* Sample::             Sample output from @code{gzip}.
+* Invoking gzip::      How to run @code{gzip}.
+* Advanced usage::     Concatenated files.
+* Environment::                The @code{GZIP} environment variable
+* Tapes::               Using @code{gzip} on tapes.
+* Problems::           Reporting bugs.
+* Concept Index::      Index of concepts.
address@hidden menu
+
address@hidden Copying, Overview, , Top
address@hidden gpl.texinfo
+
address@hidden Overview, Sample, Copying, Top
address@hidden Overview
address@hidden overview
+
address@hidden reduces the size of the named files using Lempel-Ziv coding
+(LZ77).  Whenever possible, each file is replaced by one with the
+extension @samp{.gz}, while keeping the same ownership modes, access and
+modification times.  (The default extension is @samp{-gz} for VMS,
address@hidden for MSDOS, OS/2 FAT and Atari.)  If no files are specified or
+if a file name is "-", the standard input is compressed to the standard
+output. @code{gzip} will only attempt to compress regular files.  In
+particular, it will ignore symbolic links.
+
+If the new file name is too long for its file system, @code{gzip}
+truncates it.  @code{gzip} attempts to truncate only the parts of the
+file name longer than 3 characters.  (A part is delimited by dots.) If
+the name consists of small parts only, the longest parts are truncated.
+For example, if file names are limited to 14 characters, gzip.msdos.exe
+is compressed to gzi.msd.exe.gz.  Names are not truncated on systems
+which do not have a limit on file name length.
+
+By default, @code{gzip} keeps the original file name and timestamp in
+the compressed file. These are used when decompressing the file with the
address@hidden option. This is useful when the compressed file name was
+truncated or when the time stamp was not preserved after a file
+transfer.
+
+Compressed files can be restored to their original form using @samp{gzip -d}
+or @code{gunzip} or @code{zcat}.  If the original name saved in the
+compressed file is not suitable for its file system, a new name is
+constructed from the original one to make it legal.
+
address@hidden takes a list of files on its command line and replaces
+each file whose name ends with @samp{.gz}, @samp{.z}, @samp{.Z},
address@hidden, @samp{-z} or @samp{_z} and which begins with the correct
+magic number with an uncompressed file without the original extension.
address@hidden also recognizes the special extensions @samp{.tgz} and
address@hidden as shorthands for @samp{.tar.gz} and @samp{.tar.Z}
+respectively. When compressing, @code{gzip} uses the @samp{.tgz}
+extension if necessary instead of truncating a file with a @samp{.tar}
+extension.
+
address@hidden can currently decompress files created by @code{gzip},
address@hidden, @code{compress} or @code{pack}. The detection of the input
+format is automatic.  When using the first two formats, @code{gunzip}
+checks a 32 bit CRC (cyclic redundancy check). For @code{pack},
address@hidden checks the uncompressed length. The @code{compress} format
+was not designed to allow consistency checks. However @code{gunzip} is
+sometimes able to detect a bad @samp{.Z} file. If you get an error when
+uncompressing a @samp{.Z} file, do not assume that the @samp{.Z} file is
+correct simply because the standard @code{uncompress} does not complain.
+This generally means that the standard @code{uncompress} does not check
+its input, and happily generates garbage output.  The SCO @samp{compress
+-H} format (@code{lzh} compression method) does not include a CRC but
+also allows some consistency checks.
+
+Files created by @code{zip} can be uncompressed by @code{gzip} only if
+they have a single member compressed with the 'deflation' method. This
+feature is only intended to help conversion of @code{tar.zip} files to
+the @code{tar.gz} format. To extract @code{zip} files with several
+members, use @code{unzip} instead of @code{gunzip}.
+
address@hidden is identical to @samp{gunzip -c}.  @code{zcat}
+uncompresses either a list of files on the command line or its standard
+input and writes the uncompressed data on standard output.  @code{zcat}
+will uncompress files that have the correct magic number whether they
+have a @samp{.gz} suffix or not.
+
address@hidden uses the Lempel-Ziv algorithm used in @code{zip} and PKZIP.
+The amount of compression obtained depends on the size of the input and
+the distribution of common substrings.  Typically, text such as source
+code or English is reduced by 60-70%.  Compression is generally much
+better than that achieved by LZW (as used in @code{compress}), Huffman
+coding (as used in @code{pack}), or adaptive Huffman coding
+(@code{compact}).
+
+Compression is always performed, even if the compressed file is slightly
+larger than the original. The worst case expansion is a few bytes for
+the @code{gzip} file header, plus 5 bytes every 32K block, or an expansion
+ratio of 0.015% for large files. Note that the actual number of used
+disk blocks almost never increases. @code{gzip} preserves the mode,
+ownership and timestamps of files when compressing or decompressing.
+
address@hidden Sample, Invoking gzip, Overview, Top
address@hidden Sample Output
address@hidden sample
+
+Here are some realistic examples of running @code{gzip}.
+
+This is the output of the command @samp{gzip -h}:
+
address@hidden
+gzip 1.2.4 (18 Aug 93)
+usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
+ -c --stdout      write on standard output, keep original files unchanged
+ -d --decompress  decompress
+ -f --force       force overwrite of output file and compress links
+ -h --help        give this help
+ -l --list        list compressed file contents
+ -L --license     display software license
+ -n --no-name     do not save or restore the original name and time stamp
+ -N --name        save or restore the original name and time stamp
+ -q --quiet       suppress all warnings
+ -r --recursive   operate recursively on directories
+ -S .suf  --suffix .suf     use suffix .suf on compressed files
+ -t --test        test compressed file integrity
+ -v --verbose     verbose mode
+ -V --version     display version number
+ -1 --fast        compress faster
+ -9 --best        compress better
+ file...          files to (de)compress. If none given, use standard input.
address@hidden example
+
+This is the output of the command @samp{gzip -v texinfo.tex}:
+
address@hidden
+texinfo.tex:             71.6% -- replaced with texinfo.tex.gz
address@hidden example
+
+The following command will find all @code{gzip} files in the current
+directory and subdirectories, and extract them in place without
+destroying the original:
+
address@hidden
+find . -name '*.gz' -print | sed 's/^\(.*\)[.]gz$/gunzip < "&" > "\1"/' | sh
address@hidden example
+
address@hidden Invoking gzip, Advanced usage, Sample, Top
address@hidden Invoking @code{gzip}
address@hidden invoking
address@hidden options
+
+The format for running the @code{gzip} program is:
+
address@hidden
+gzip @var{option} @dots{}
address@hidden example
+
address@hidden supports the following options:
+
address@hidden @samp
address@hidden --stdout
address@hidden --to-stdout
address@hidden -c
+Write output on standard output; keep original files unchanged.
+If there are several input files, the output consists of a sequence of
+independently compressed members. To obtain better compression,
+concatenate all input files before compressing them.
+
address@hidden --decompress
address@hidden --uncompress
address@hidden -d
+Decompress.
+
address@hidden --force
address@hidden -f
+Force compression or decompression even if the file has multiple links
+or the corresponding file already exists, or if the compressed data
+is read from or written to a terminal. If the input data is not in
+a format recognized by @code{gzip}, and if the option --stdout is also
+given, copy the input data without change to the standard ouput: let
address@hidden behave as @code{cat}. If @samp{-f} is not given, and
+when not running in the background, @code{gzip} prompts to verify
+whether an existing file should be overwritten.
+
address@hidden --help
address@hidden -h
+Print an informative help message describing the options then quit.
+
address@hidden --list
address@hidden -l
+For each compressed file, list the following fields:
+
address@hidden
+compressed size: size of the compressed file
+uncompressed size: size of the uncompressed file
+ratio: compression ratio (0.0% if unknown)
+uncompressed_name: name of the uncompressed file
address@hidden example
+
+The uncompressed size is given as @samp{-1} for files not in @code{gzip}
+format, such as compressed @samp{.Z} files. To get the uncompressed size for
+such a file, you can use:
+
address@hidden
+zcat file.Z | wc -c
address@hidden example
+
+In combination with the --verbose option, the following fields are also
+displayed:
+
address@hidden
+method: compression method (deflate,compress,lzh,pack)
+crc: the 32-bit CRC of the uncompressed data
+date & time: time stamp for the uncompressed file
address@hidden example
+
+The crc is given as ffffffff for a file not in gzip format.
+
+With --verbose, the size totals and compression ratio for all files
+is also displayed, unless some sizes are unknown. With --quiet,
+the title and totals lines are not displayed.
+
address@hidden --license
address@hidden -L
+Display the @code{gzip} license then quit.
+
address@hidden --no-name
address@hidden -n
+When compressing, do not save the original file name and time stamp by
+default. (The original name is always saved if the name had to be
+truncated.) When decompressing, do not restore the original file name
+if present (remove only the @code{gzip}
+suffix from the compressed file name) and do not restore the original
+time stamp if present (copy it from the compressed file). This option
+is the default when decompressing.
+
address@hidden --name
address@hidden -N
+When compressing, always save the original file name and time stamp; this
+is the default. When decompressing, restore the original file name and
+time stamp if present. This option is useful on systems which have
+a limit on file name length or when the time stamp has been lost after
+a file transfer.
+
address@hidden --quiet
address@hidden -q
+Suppress all warning messages.
+
address@hidden --recursive
address@hidden -r
+Travel the directory structure recursively. If any of the file names
+specified on the command line are directories, @code{gzip} will descend
+into the directory and compress all the files it finds there (or
+decompress them in the case of @code{gunzip}).
+
address@hidden --suffix @var{suf}
address@hidden -S @var{suf}
+Use suffix @address@hidden instead of @samp{.gz}. Any suffix can be
+given, but suffixes other than @samp{.z} and @samp{.gz} should be
+avoided to avoid confusion when files are transferred to other systems.
+A null suffix forces gunzip to try decompression on all given files
+regardless of suffix, as in:
+
address@hidden
+gunzip -S "" *        (*.* for MSDOS)
address@hidden example
+
+Previous versions of gzip used the @samp{.z} suffix. This was changed to
+avoid a conflict with @code{pack}.
+
address@hidden --test
address@hidden -t
+Test. Check the compressed file integrity.
+
address@hidden --verbose
address@hidden -v
+Verbose. Display the name and percentage reduction for each file compressed.
+
address@hidden --version
address@hidden -V
+Version. Display the version number and compilation options, then quit.
+
address@hidden --fast
address@hidden --best
address@hidden address@hidden
+Regulate the speed of compression using the specified digit @var{n},
+where @samp{-1} or @samp{--fast} indicates the fastest compression
+method (less compression) and @samp{--best} or @samp{-9} indicates the
+slowest compression method (optimal compression).  The default
+compression level is @samp{-6} (that is, biased towards high compression at
+expense of speed).
address@hidden table
+
address@hidden Advanced usage, Environment, Invoking gzip, Top
address@hidden Advanced usage
address@hidden concatenated files
+
+Multiple compressed files can be concatenated. In this case,
address@hidden will extract all members at once. If one member is
+damaged, other members might still be recovered after removal of the
+damaged member. Better compression can be usually obtained if all
+members are decompressed and then recompressed in a single step.
+
+This is an example of concatenating @code{gzip} files:
+
address@hidden
+gzip -c file1  > foo.gz
+gzip -c file2 >> foo.gz
address@hidden example
+
+Then
+
address@hidden
+gunzip -c foo
address@hidden example
+
+is equivalent to
+
address@hidden
+cat file1 file2
address@hidden example
+
+In case of damage to one member of a @samp{.gz} file, other members can
+still be recovered (if the damaged member is removed). However,
+you can get better compression by compressing all members at once:
+
address@hidden
+cat file1 file2 | gzip > foo.gz
address@hidden example
+
+compresses better than
+
address@hidden
+gzip -c file1 file2 > foo.gz
address@hidden example
+
+If you want to recompress concatenated files to get better compression, do:
+
address@hidden
+zcat old.gz | gzip > new.gz
address@hidden example
+
+If a compressed file consists of several members, the uncompressed
+size and CRC reported by the @samp{--list} option applies to the last member
+only. If you need the uncompressed size for all members, you can use:
+
address@hidden
+zcat file.gz | wc -c
address@hidden example
+
+If you wish to create a single archive file with multiple members so
+that members can later be extracted independently, use an archiver such
+as @code{tar} or @code{zip}. GNU @code{tar} supports the @samp{-z}
+option to invoke @code{gzip} transparently. @code{gzip} is designed as a
+complement to @code{tar}, not as a replacement.
+
address@hidden Environment, Tapes, Advanced usage, Top
address@hidden Environment
address@hidden Environment
+
+The environment variable @code{GZIP} can hold a set of default options for
address@hidden  These options are interpreted first and can be overwritten by
+explicit command line parameters.  For example:
+
address@hidden
+for sh:    GZIP="-8v --name"; export GZIP
+for csh:   setenv GZIP "-8v --name"
+for MSDOS: set GZIP=-8v --name
address@hidden example
+
+On Vax/VMS, the name of the environment variable is @code{GZIP_OPT}, to
+avoid a conflict with the symbol set for invocation of the program.
+
address@hidden Tapes, Problems, Environment, Top
address@hidden Using @code{gzip} on tapes
address@hidden tapes
+
+When writing compressed data to a tape, it is generally necessary to pad
+the output with zeroes up to a block boundary. When the data is read and
+the whole block is passed to @code{gunzip} for decompression,
address@hidden detects that there is extra trailing garbage after the
+compressed data and emits a warning by default. You have to use the
address@hidden option to suppress the warning. This option can be set in the
address@hidden environment variable, as in:
+
address@hidden
+for sh:    GZIP="-q"  tar -xfz --block-compress /dev/rst0
+for csh:   (setenv GZIP "-q"; tar -xfz --block-compress /dev/rst0)
address@hidden example
+
+In the above example, @code{gzip} is invoked implicitly by the @samp{-z}
+option of GNU @code{tar}.  Make sure that the same block size (@samp{-b}
+option of @code{tar}) is used for reading and writing compressed data on
+tapes.  (This example assumes you are using the GNU version of
address@hidden)
+
address@hidden Problems, Concept Index, Tapes, Top
address@hidden Reporting Bugs
address@hidden bugs
+
+If you find a bug in @code{gzip}, please send electronic mail to
address@hidden@samp{jloup@@chorus.fr}} or, if this fails, to
address@hidden@samp{bug-gnu-utils@@prep.ai.mit.edu}}.  Include the version 
number,
+which you can find by running @address@hidden -V}}.  Also include in your
+message the hardware and operating system, the compiler used to compile
address@hidden,
+a description of the bug behavior, and the input to @code{gzip} that triggered
+the address@hidden
+
address@hidden Concept Index, , Problems, Top
address@hidden Concept Index
+
address@hidden cp
+
address@hidden
address@hidden
diff --git a/test/etags/tex-src/nonewline.tex b/test/etags/tex-src/nonewline.tex
new file mode 100644
index 0000000..8cc01ce
--- /dev/null
+++ b/test/etags/tex-src/nonewline.tex
@@ -0,0 +1 @@
+% This comment does not end with newline
\ No newline at end of file
diff --git a/test/etags/tex-src/testenv.tex b/test/etags/tex-src/testenv.tex
new file mode 100644
index 0000000..efb83cb
--- /dev/null
+++ b/test/etags/tex-src/testenv.tex
@@ -0,0 +1,15 @@
+\documentclass[11pt]{report}
+\usepackage{verbatim,amsmath,amssymb,morehelp}
+
+\newcommand{\nm}[2]{\nomenclature{#1}{#2}}
+
+
+\begin{document}
+\section{blah}
+
+MAKE PICTURE
+
+To develop notation, we examine a few particular cases. 
+
+
+\end{document}
diff --git a/test/etags/tex-src/texinfo.tex b/test/etags/tex-src/texinfo.tex
new file mode 100644
index 0000000..203dca7
--- /dev/null
+++ b/test/etags/tex-src/texinfo.tex
@@ -0,0 +1,3350 @@
+%% TeX macros to handle texinfo files
+
+%   Copyright (C) 1985, 1986, 1988, 1990, 1991 Free Software Foundation, Inc.
+
+%This texinfo.tex file is free software; you can redistribute it and/or
+%modify it under the terms of the GNU General Public License as
+%published by the Free Software Foundation; either version 2, or (at
+%your option) any later version.
+
+%This texinfo.tex file 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 texinfo.tex file; see the file COPYING.  If not, write
+%to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
+%USA.
+
+
+%In other words, you are welcome to use, share and improve this program.
+%You are forbidden to forbid anyone else to use, share and improve
+%what you give them.   Help stamp out software-hoarding!
+
+\def\texinfoversion{2.73}
+\message{Loading texinfo package [Version \texinfoversion]:}
+\message{}
+
+% Print the version number if in a .fmt file.
+\everyjob{\message{[Texinfo version \texinfoversion]}\message{}}
+
+% Save some parts of plain tex whose names we will redefine.
+
+\let\ptexlbrace=\{
+\let\ptexrbrace=\}
+\let\ptexdots=\dots
+\let\ptexdot=\.
+\let\ptexstar=\*
+\let\ptexend=\end
+\let\ptexbullet=\bullet
+\let\ptexb=\b
+\let\ptexc=\c
+\let\ptexi=\i
+\let\ptext=\t
+\let\ptexl=\l
+\let\ptexL=\L
+
+\def\tie{\penalty 10000\ }     % Save plain tex definition of ~.
+
+\message{Basics,}
+\chardef\other=12
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+\hyphenation{ap-pen-dix}
+\hyphenation{mini-buf-fer mini-buf-fers}
+\hyphenation{eshell}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen \bindingoffset  \bindingoffset=0pt
+\newdimen \normaloffset   \normaloffset=\hoffset
+\newdimen\pagewidth \newdimen\pageheight
+\pagewidth=\hsize \pageheight=\vsize
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal.  We don't just call \tracingall here,
+% since that produces some useless output on the terminal.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{\tracingcommands2 \tracingstats2 
+   \tracingpages1 \tracingoutput1 \tracinglostchars1 
+   \tracingmacros2 \tracingparagraphs1 \tracingrestores1 
+   \showboxbreadth\maxdimen\showboxdepth\maxdimen
+}%
+
+%---------------------Begin change-----------------------
+%
+%%%% For @cropmarks command.
+% Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\cornerlong \newdimen\cornerthick
+\newdimen \topandbottommargin
+\newdimen \outerhsize \newdimen \outervsize
+\cornerlong=1pc\cornerthick=.3pt       % These set size of cropmarks
+\outerhsize=7in
+%\outervsize=9.5in
+% Alternative @smallbook page size is 9.25in
+\outervsize=9.25in
+\topandbottommargin=.75in
+%
+%---------------------End change-----------------------
+
+% \onepageout takes a vbox as an argument.  Note that \pagecontents
+% does insertions itself, but you have to call it yourself.
+\chardef\PAGE=255  \output={\onepageout{\pagecontents\PAGE}}
+\def\onepageout#1{\hoffset=\normaloffset
+\ifodd\pageno  \advance\hoffset by \bindingoffset
+\else \advance\hoffset by -\bindingoffset\fi
+{\escapechar=`\\\relax % makes sure backslash is used in output files.
+\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}%
+{\let\hsize=\pagewidth \makefootline}}}%
+\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
+
+%%%% For @cropmarks command %%%%
+
+% Here is a modification of the main output routine for Near East Publications
+% This provides right-angle cropmarks at all four corners.
+% The contents of the page are centerlined into the cropmarks,
+% and any desired binding offset is added as an \hskip on either
+% site of the centerlined box.  (P. A. MacKay, 12 November, 1986)
+%
+\def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up
+                \shipout
+                \vbox to \outervsize{\hsize=\outerhsize
+                 \vbox{\line{\ewtop\hfill\ewtop}}
+                 \nointerlineskip
+                 \line{\vbox{\moveleft\cornerthick\nstop}
+                       \hfill
+                       \vbox{\moveright\cornerthick\nstop}}
+                 \vskip \topandbottommargin
+                 \centerline{\ifodd\pageno\hskip\bindingoffset\fi
+                       \vbox{
+                       {\let\hsize=\pagewidth \makeheadline}
+                       \pagebody{#1}
+                       {\let\hsize=\pagewidth \makefootline}}
+                       \ifodd\pageno\else\hskip\bindingoffset\fi}
+                \vskip \topandbottommargin plus1fill minus1fill
+                 \boxmaxdepth\cornerthick
+                 \line{\vbox{\moveleft\cornerthick\nsbot}
+                       \hfill
+                       \vbox{\moveright\cornerthick\nsbot}}
+                 \nointerlineskip
+                 \vbox{\line{\ewbot\hfill\ewbot}}
+       }
+  \advancepageno 
+  \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
+%
+% Do @cropmarks to get crop marks
+\def\cropmarks{\let\onepageout=\croppageout }
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
address@hidden \unvbox#1
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
address@hidden \kern-\dimen@ \vfil \fi}
+}
+
+%
+% Here are the rules for the cropmarks.  Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1.
+% The argument can be delimited with [...] or with "..." or braces
+% or it can be a whole line.
+% #1 should be a macro which expects
+% an ordinary undelimited TeX argument.
+
+\def\parsearg #1{\let\next=#1\begingroup\obeylines\futurelet\temp\parseargx}
+
+\def\parseargx{%
+\ifx \obeyedspace\temp \aftergroup\parseargdiscardspace \else%
+\aftergroup \parseargline %
+\fi \endgroup}
+
+{\obeyspaces %
+\gdef\parseargdiscardspace {\begingroup\obeylines\futurelet\temp\parseargx}}
+
+\gdef\obeyedspace{\ }
+
+\def\parseargline{\begingroup \obeylines \parsearglinex}
+{\obeylines %
+\gdef\parsearglinex #1^^M{\endgroup \next {#1}}}
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+%% These are used to keep @begin/@end levels from running away
+%% Call \inENV within environments (after a \begingroup)
+\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
+\def\ENVcheck{%
+\ifENV\errmessage{Still within an environment.  Type Return to continue.}
+\endgroup\fi} % This is not perfect, but it should reduce lossage
+
+% @begin foo  is the same as @foo, for now.
+\newhelp\EMsimple{Type <Return> to continue}
+
+\outer\def\begin{\parsearg\beginxxx}
+
+\def\beginxxx #1{%
+\expandafter\ifx\csname #1\endcsname\relax
+{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
+\csname #1\endcsname\fi}
+
+%% @end foo executes the definition of \Efoo.
+%% foo can be delimited by doublequotes or brackets.
+
+\def\end{\parsearg\endxxx}
+
+\def\endxxx #1{%
+\expandafter\ifx\csname E#1\endcsname\relax
+\expandafter\ifx\csname #1\endcsname\relax
+\errmessage{Undefined command @end #1}\else
+\errorE{#1}\fi\fi
+\csname E#1\endcsname}
+\def\errorE#1{
+{\errhelp=\EMsimple address@hidden #1 not within #1 environment}}}
+
+% Single-spacing is done by various environments.
+
+\newskip\singlespaceskip \singlespaceskip = \baselineskip
+\def\singlespace{%
+{\advance \baselineskip by -\singlespaceskip
+\kern \baselineskip}%
+\baselineskip=\singlespaceskip
+}
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
address@hidden \char '100}}
+
+% Define @` and @' to be the same as ` and '
+% but suppressing ligatures.
+\def\`{{`}}
+\def\'{{'}}
+
+% Used to generate quoted braces.
+
+\def\mylbrace {{\tt \char '173}}
+\def\myrbrace {{\tt \char '175}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=3000 }
+
+% @w prevents a word break.  Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line.  According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0).  If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+% 
+\def\group{\begingroup
+  \ifnum\catcode13=\active \else
+    \errhelp = \groupinvalidhelp
+    address@hidden invalid in context where filling is enabled}%
+  \fi
+  \def\Egroup{\egroup\endgroup}%
+  \vtop\bgroup
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing address@hidden can only ...'.
+% 
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil  \mil=0.001in
+
+\def\need{\parsearg\needx}
+
+% Old definition--didn't work.
+%\def\needx #1{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\penalty 10000
+%\prevdepth=-1000pt
+%}}
+
+\def\needx#1{%
+  % Go into vertical mode, so we don't make a big box in the middle of a
+  % paragraph.
+  \par
+  %
+  % Don't add any leading before our big empty box, but allow a page
+  % break, since the best break might be right here.
+  \allowbreak
+  \nointerlineskip
+  \vtop to #1\mil{\vfil}%
+  % 
+  % TeX does not even consider page breaks if a penalty added to the
+  % main vertical list is 10000 or more.  But in order to see if the
+  % empty box we just added fits on the page, we must make it consider
+  % page breaks.  On the other hand, we don't want to actually break the
+  % page after the empty box.  So we use a penalty of 9999.
+  % 
+  % There is an extremely small chance that TeX will actually break the
+  % page at this \penalty, if there are no other feasible breakpoints in
+  % sight.  (If the user is using lots of big @group commands, which
+  % almost-but-not-quite fill up a page, TeX will have a hard time doing
+  % good page breaking, for example.)  However, I could not construct an
+  % example where a page broke at this \penalty; if it happens in a real
+  % document, then we can reconsider our strategy.
+  \penalty9999
+  %
+  % Back up by the size of the box, whether we did a page break or not.
+  \kern -#1\mil
+  %
+  % Do not allow a page break right after this kern.
+  \nobreak
+}
+
+% @br   forces paragraph break
+
+\let\br = \par
+
+% @dots{}  output some dots
+
+\def\dots{$\ldots$}
+
+% @page    forces the start of a new page
+
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\def\exdent{\parsearg\exdentyyy}
+\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
+
+% This defn is used inside nofill environments such as @example.
+\def\nofillexdent{\parsearg\nofillexdentyyy}
+\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
+\leftline{\hskip\leftskip{\rm#1}}}}
+
+%\hbox{{\rm#1}}\hfil\break}}
+
+% @include file    insert text of that file as input.
+
+\def\include{\parsearg\includezzz}
+\def\includezzz #1{{\def\thisfile{#1}\input #1
+}}
+
+\def\thisfile{}
+
+% @center line   outputs that line, centered
+
+\def\center{\parsearg\centerzzz}
+\def\centerzzz #1{{\advance\hsize by -\leftskip
+\advance\hsize by -\rightskip
+\centerline{#1}}}
+
+% @sp n   outputs n lines of vertical space
+
+\def\sp{\parsearg\spxxx}
+\def\spxxx #1{\par \vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore  is another way to write a comment
+
+\def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other%
+\parsearg \commentxxx}
+
+\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 }
+
+\let\c=\comment
+
+% Prevent errors for section commands.
+% Used in @ignore and in failing conditionals.
+\def\ignoresections{%
+\let\chapter=\relax
+\let\unnumbered=\relax
+\let\top=\relax
+\let\unnumberedsec=\relax
+\let\unnumberedsection=\relax
+\let\unnumberedsubsec=\relax
+\let\unnumberedsubsection=\relax
+\let\unnumberedsubsubsec=\relax
+\let\unnumberedsubsubsection=\relax
+\let\section=\relax
+\let\subsec=\relax
+\let\subsubsec=\relax
+\let\subsection=\relax
+\let\subsubsection=\relax
+\let\appendix=\relax
+\let\appendixsec=\relax
+\let\appendixsection=\relax
+\let\appendixsubsec=\relax
+\let\appendixsubsection=\relax
+\let\appendixsubsubsec=\relax
+\let\appendixsubsubsection=\relax
+\let\contents=\relax
+\let\smallbook=\relax
+\let\titlepage=\relax
+}
+
+\def\ignore{\begingroup\ignoresections
+% Make sure that spaces turn into tokens that match what \ignorexxx wants.
+\catcode32=10
+\ignorexxx}
+\long\def\ignorexxx #1\end ignore{\endgroup\ignorespaces}
+
+\def\direntry{\begingroup\direntryxxx}
+\long\def\direntryxxx #1\end direntry{\endgroup\ignorespaces}
+
+% Conditionals to test whether a flag is set.
+
+\def\ifset{\begingroup\ignoresections\parsearg\ifsetxxx}
+
+\def\ifsetxxx #1{\endgroup
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\ifsetfail
+\else \let\temp=\relax \fi
+\temp}
+\def\Eifset{}
+\def\ifsetfail{\begingroup\ignoresections\ifsetfailxxx}
+\long\def\ifsetfailxxx #1\end ifset{\endgroup\ignorespaces}
+
+\def\ifclear{\begingroup\ignoresections\parsearg\ifclearxxx}
+
+\def\ifclearxxx #1{\endgroup
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\relax
+\else \let\temp=\ifclearfail \fi
+\temp}
+\def\Eifclear{}
+\def\ifclearfail{\begingroup\ignoresections\ifclearfailxxx}
+\long\def\ifclearfailxxx #1\end ifclear{\endgroup\ignorespaces}
+
+% @set foo     to set the flag named foo.
+% @clear foo   to clear the flag named foo.
+\def\set{\parsearg\setxxx}
+\def\setxxx #1{
+\expandafter\let\csname IF#1\endcsname=\set}
+
+\def\clear{\parsearg\clearxxx}
+\def\clearxxx #1{
+\expandafter\let\csname IF#1\endcsname=\relax}
+
+% Some texinfo constructs that are trivial in tex
+
+\def\iftex{}
+\def\Eiftex{}
+\def\ifinfo{\begingroup\ignoresections\ifinfoxxx}
+\long\def\ifinfoxxx #1\end ifinfo{\endgroup\ignorespaces}
+
+\long\def\menu #1\end menu{}
+\def\asis#1{#1}
+
+% @math means output in math mode.
+% We don't use $'s directly in the definition of \math because control
+% sequences like \math are expanded when the toc file is written.  Then,
+% we read the toc file back, the $'s will be normal characters (as they
+% should be, according to the definition of Texinfo).  So we must use a
+% control sequence to switch into and out of math mode.
+% 
+% This isn't quite enough for @math to work properly in indices, but it
+% seems unlikely it will ever be needed there.
+% 
+\let\implicitmath = $
+\def\math#1{\implicitmath #1\implicitmath}
+
+\def\node{\ENVcheck\parsearg\nodezzz}
+\def\nodezzz#1{\nodexxx [#1,]}
+\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
+\let\lastnode=\relax
+
+\def\donoderef{\ifx\lastnode\relax\else
+\expandafter\expandafter\expandafter\setref{\lastnode}\fi
+\let\lastnode=\relax}
+
+\def\unnumbnoderef{\ifx\lastnode\relax\else
+\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi
+\let\lastnode=\relax}
+
+\def\appendixnoderef{\ifx\lastnode\relax\else
+\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi
+\let\lastnode=\relax}
+
+\let\refill=\relax
+  
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+   \readauxfile
+   \opencontents
+   \openindices
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
+   \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
+   \comment % Ignore the actual filename.
+}
+
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{See Info file \file{\losespace#3{}},
+  node \samp{\losespace#1{}}}
+\def\losespace #1{#1}
+
+\message{fonts,}
+
+% Font-change commands.
+
+% Texinfo supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf analogous to plain's \rm, etc.
+\newfam\sffam
+\def\sf{\fam=\sffam \tensf}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+%% Try out Computer Modern fonts at \magstephalf
+\let\mainmagstep=\magstephalf
+
+\ifx\bigger\relax
+\let\mainmagstep=\magstep1
+\font\textrm=cmr12
+\font\texttt=cmtt12
+\else
+\font\textrm=cmr10 scaled \mainmagstep
+\font\texttt=cmtt10 scaled \mainmagstep
+\fi
+% Instead of cmb10, you many want to use cmbx10.
+% cmbx10 is a prettier font on its own, but cmb10
+% looks better when embedded in a line with cmr10.
+\font\textbf=cmb10 scaled \mainmagstep 
+\font\textit=cmti10 scaled \mainmagstep
+\font\textsl=cmsl10 scaled \mainmagstep
+\font\textsf=cmss10 scaled \mainmagstep
+\font\textsc=cmcsc10 scaled \mainmagstep
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+
+% A few fonts for @defun, etc.
+\font\defbf=cmbx10 scaled \magstep1 %was 1314
+\font\deftt=cmtt10 scaled \magstep1
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
+
+% Fonts for indices and small examples.
+% We actually use the slanted font rather than the italic, 
+% because texinfo normally uses the slanted fonts for that.
+% Do not make many font distinctions in general in the index, since they
+% aren't very useful.
+\font\ninett=cmtt9
+\font\indrm=cmr9
+\font\indit=cmsl9
+\let\indsl=\indit
+\let\indtt=\ninett
+\let\indsf=\indrm
+\let\indbf=\indrm
+\let\indsc=\indrm
+\font\indi=cmmi9
+\font\indsy=cmsy9
+
+% Fonts for headings
+\font\chaprm=cmbx12 scaled \magstep2
+\font\chapit=cmti12 scaled \magstep2
+\font\chapsl=cmsl12 scaled \magstep2
+\font\chaptt=cmtt12 scaled \magstep2
+\font\chapsf=cmss12 scaled \magstep2
+\let\chapbf=\chaprm
+\font\chapsc=cmcsc10 scaled\magstep3
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+
+\font\secrm=cmbx12 scaled \magstep1
+\font\secit=cmti12 scaled \magstep1
+\font\secsl=cmsl12 scaled \magstep1
+\font\sectt=cmtt12 scaled \magstep1
+\font\secsf=cmss12 scaled \magstep1
+\font\secbf=cmbx12 scaled \magstep1
+\font\secsc=cmcsc10 scaled\magstep2
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+
+% \font\ssecrm=cmbx10 scaled \magstep1    % This size an font looked bad.
+% \font\ssecit=cmti10 scaled \magstep1    % The letters were too crowded.
+% \font\ssecsl=cmsl10 scaled \magstep1
+% \font\ssectt=cmtt10 scaled \magstep1
+% \font\ssecsf=cmss10 scaled \magstep1
+
+%\font\ssecrm=cmb10 scaled 1315        % Note the use of cmb rather than cmbx.
+%\font\ssecit=cmti10 scaled 1315       % Also, the size is a little larger than
+%\font\ssecsl=cmsl10 scaled 1315       % being scaled magstep1.
+%\font\ssectt=cmtt10 scaled 1315
+%\font\ssecsf=cmss10 scaled 1315
+
+%\let\ssecbf=\ssecrm
+
+\font\ssecrm=cmbx12 scaled \magstephalf
+\font\ssecit=cmti12 scaled \magstephalf
+\font\ssecsl=cmsl12 scaled \magstephalf
+\font\ssectt=cmtt12 scaled \magstephalf
+\font\ssecsf=cmss12 scaled \magstephalf
+\font\ssecbf=cmbx12 scaled \magstephalf
+\font\ssecsc=cmcsc10 scaled \magstep1 
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled \magstep1
+% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
+% but that is not a standard magnification.
+
+% Fonts for title page:
+\font\titlerm = cmbx12 scaled \magstep3
+\let\authorrm = \secrm
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families.  Since
+% texinfo doesn't allow for producing subscripts and superscripts, we
+% don't bother to reset \scriptfont and \scriptscriptfont (which would
+% also require loading a lot more fonts).
+% 
+\def\resetmathfonts{%
+  \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy
+  \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf
+  \textfont\ttfam = \tentt \textfont\sffam = \tensf
+}
+
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE.  We do this so that font changes will continue to work
+% in math mode, where it is the current \fam that is relevant in most
+% cases, not the current.  Plain TeX does, for example,
+% \def\bf{\fam=\bffam \tenbf}  By redefining \tenbf, we obviate the need
+% to redefine \bf itself.  
+\def\textfonts{%
+  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \resetmathfonts}
+\def\chapfonts{%
+  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl 
+  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \resetmathfonts}
+\def\secfonts{%
+  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+  \resetmathfonts}
+\def\subsecfonts{%
+  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+  \resetmathfonts}
+\def\indexfonts{%
+  \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
+  \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
+  \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy
+  \resetmathfonts}
+
+% Set up the default fonts, so we can use them for creating boxes.
+% 
+\textfonts
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Fonts for short table of contents.
+\font\shortcontrm=cmr12
+\font\shortcontbf=cmbx12
+\font\shortcontsl=cmsl12
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
+\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\var=\smartitalic
+\let\dfn=\smartitalic
+\let\emph=\smartitalic
+\let\cite=\smartitalic
+
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+\def\t#1{{\tt \exhyphenpenalty=10000\rawbackslash \frenchspacing #1}\null}
+\let\ttfont = \t
+%\def\samp #1{`{\tt \rawbackslash \frenchspacing #1}'\null}
+\def\samp #1{`\tclose{#1}'\null}
+\def\key #1{{\tt \exhyphenpenalty=10000\uppercase{#1}}\null}
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+\let\file=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\newdimen\tclosesave
+\newdimen\tcloserm
+\def\tclose#1{{\rm \tcloserm=\fontdimen2\font \tt \tclosesave=\fontdimen2\font
+\fontdimen2\font=\tcloserm
+% prevent breaking lines at hyphens.
+\exhyphenpenalty=10000
+\def\ {{\fontdimen2\font=\tclosesave{} }}%
+ \rawbackslash \frenchspacing #1\fontdimen2\font=\tclosesave}\null}
+\let\code=\tclose
+%\let\exp=\tclose  %Was temporary
+
+% @kbd is like @code, except that if the argument is just one @key command, 
+% then @kbd has no effect.
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else\tclose{\look}\fi
+\else\tclose{\look}\fi}
+
+% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of
+% @dmn{}pt.
+% 
+\def\dmn#1{\thinspace #1}
+
+\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
+
+\def\l#1{{\li #1}\null}                % 
+
+\def\r#1{{\rm #1}}             % roman font
+% Use of \lowercase was suggested.
+\def\sc#1{{\smallcaps#1}}      % smallcaps font
+\def\ii#1{{\it #1}}            % italic font
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page.  Must do @settitle before @titlepage.
+\def\titlefont#1{{\titlerm #1}}
+
+\newtoks\realeverypar
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+\def\titlepage{\begingroup \parindent=0pt \textfonts
+   \let\subtitlerm=\tenrm
+% I deinstalled the following change because \cmr12 is undefined.
+% This change was not in the ChangeLog anyway.  --rms.
+%   \let\subtitlerm=\cmr12
+   \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
+   %
+   \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
+   %
+   % Leave some space at the very top of the page.
+   \vglue\titlepagetopglue
+   %
+   % Now you can print the title using @title.
+   \def\title{\parsearg\titlezzz}%
+   \def\titlezzz##1{\leftline{\titlefont{##1}}
+                   % print a rule at the page bottom also.
+                   \finishedtitlepagefalse
+                   \vskip4pt \hrule height 4pt \vskip4pt}%
+   % No rule at page bottom unless we print one at the top with @title.
+   \finishedtitlepagetrue
+   %
+   % Now you can put text using @subtitle.
+   \def\subtitle{\parsearg\subtitlezzz}%
+   \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
+   %
+   % @author should come last, but may come many times.
+   \def\author{\parsearg\authorzzz}%
+   \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
+      {\authorfont \leftline{##1}}}%
+   %  
+   % Most title ``pages'' are actually two pages long, with space
+   % at the top of the second.  We don't want the ragged left on the second.
+   \let\oldpage = \page
+   \def\page{%
+      \iffinishedtitlepage\else
+        \finishtitlepage
+      \fi
+      \oldpage
+      \let\page = \oldpage
+      \hbox{}}%
+%   \def\page{\oldpage \hbox{}}
+}
+
+\def\Etitlepage{%
+   \iffinishedtitlepage\else
+      \finishtitlepage
+   \fi
+   % It is important to do the page break before ending the group,
+   % because the headline and footline are only empty inside the group.
+   % If we use the new definition of \page, we always get a blank page
+   % after the title page, which we certainly don't want.
+   \oldpage
+   \endgroup
+   \HEADINGSon
+}
+
+\def\finishtitlepage{%
+   \vskip4pt \hrule height 2pt
+   \vskip\titlepagebottomglue
+   \finishedtitlepagetrue
+}
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks \evenheadline    % Token sequence for heading line of even pages
+\newtoks \oddheadline     % Token sequence for heading line of odd pages
+\newtoks \evenfootline    % Token sequence for footing line of even pages
+\newtoks \oddfootline     % Token sequence for footing line of odd pages
+
+% Now make Tex use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+                            \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+                            \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what  @headings on  does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\everyheading{\parsearg\everyheadingxxx}
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\everyfooting{\parsearg\everyfootingxxx}
+
address@hidden %
+
+\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
+\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
+\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\everyheadingxxx #1{\everyheadingyyy #1@|@|@|@|\finish}
+\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
+\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
+\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
+\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\everyfootingxxx #1{\everyfootingyyy #1@|@|@|@|\finish}
+\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
+\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+%
+}% unbind the catcode of @.
+
+% @headings double     turns headings on for double-sided printing.
+% @headings single     turns headings on for single-sided printing.
+% @headings off                turns them off.
+% @headings on         same as @headings double, retained for compatibility.
+% @headings after      turns on double-sided headings after this page.
+% @headings doubleafter        turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{
+%\pagealignmacro
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{
+%\pagealignmacro
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+
+% Subroutines used in generating headings
+% Produces Day Month Year style of output.
+\def\today{\number\day\space
+\ifcase\month\or
+January\or February\or March\or April\or May\or June\or
+July\or August\or September\or October\or November\or December\fi
+\space\number\year}
+
+% Use this if you want the Month Day, Year style of output.
+%\def\today{\ifcase\month\or
+%January\or February\or March\or April\or May\or June\or
+%July\or August\or September\or October\or November\or December\fi
+%\space\number\day, \number\year}
+
+% @settitle line...  specifies the title of the document, for headings
+% It generates no output of its own
+
+\def\thistitle{No Title}
+\def\settitle{\parsearg\settitlezzz}
+\def\settitlezzz #1{\gdef\thistitle{#1}}
+
+\message{tables,}
+
+% @tabs -- simple alignment
+
+% These don't work.  For one thing, \+ is defined as outer.
+% So these macros cannot even be defined.
+
+%\def\tabs{\parsearg\tabszzz}
+%\def\tabszzz #1{\settabs\+#1\cr}
+%\def\tabline{\parsearg\tablinezzz}
+%\def\tablinezzz #1{\+#1\cr}
+%\def\&{&}
+
+% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent  \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin  \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\par \parsearg\itemzzz}
+
+\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
+\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \par \parsearg\xitemzzz}
+
+\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
+\def\internalBkitemx{\par \parsearg\kitemzzz}
+
+\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
+                 \itemzzz {#1}}
+
+\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
+                 \itemzzz {#1}}
+
+\def\itemzzz #1{\begingroup %
+  \advance\hsize by -\rightskip
+  \advance\hsize by -\tableindent
+  \setbox0=\hbox{\itemfont{#1}}%
+  \itemindex{#1}%
+  \nobreak % This prevents a break before @itemx.
+  %
+  % Be sure we are not still in the middle of a paragraph.
+  \parskip=0in
+  \par
+  %
+  % If the item text does not fit in the space we have, put it on a line
+  % by itself, and do not allow a page break either before or after that
+  % line.  We do not start a paragraph here because then if the next
+  % command is, e.g., @kindex, the whatsit would get put into the
+  % horizontal list on a line by itself, resulting in extra blank space.
+  \ifdim \wd0>\itemmax
+    \setbox0=\hbox{\hskip \leftskip \hskip -\tableindent \unhbox0}\box0
+    \nobreak
+  \else
+    % The item text fits into the space.  Start a paragraph, so that the
+    % following text (if any) will end up on the same line.  Since that
+    % text will be indented by \tableindent, we make the item text be in
+    % a zero-width box.
+    \noindent
+    \rlap{\hskip -\tableindent\box0}%
+  \fi
+  \endgroup
+}
+
address@hidden while not in a table}}
address@hidden while not in a table}}
address@hidden while not in a table}}
address@hidden while not in a table}}
address@hidden while not in a table}}
address@hidden while not in a table}}
+
+%% Contains a kludge to get @end[description] to work
+\def\description{\tablez{\dontindex}{1}{}{}{}{}}
+
+\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
+{\obeylines\obeyspaces%
+\gdef\tablex #1^^M{%
+\tabley\dontindex#1        \endtabley}}
+
+\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
+{\obeylines\obeyspaces%
+\gdef\ftablex #1^^M{%
+\tabley\fnitemindex#1        \endtabley
+\def\Eftable{\endgraf\endgroup\afterenvbreak}%
+\let\Etable=\relax}}
+
+\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
+{\obeylines\obeyspaces%
+\gdef\vtablex #1^^M{%
+\tabley\vritemindex#1        \endtabley
+\def\Evtable{\endgraf\endgroup\afterenvbreak}%
+\let\Etable=\relax}}
+
+\def\dontindex #1{}
+\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
+\def\vritemindex #1{\doind {vr}{\code{#1}}}%
+
+{\obeyspaces %
+\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
+\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
+
+\def\tablez #1#2#3#4#5#6{%
+\aboveenvbreak %
+\begingroup %
+\def\Edescription{\Etable}% Neccessary kludge.
+\let\itemindex=#1%
+\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
+\ifnum 0#4>0 \tableindent=#4\mil \fi %
+\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
+\def\itemfont{#2}%
+\itemmax=\tableindent %
+\advance \itemmax by -\itemmargin %
+\advance \leftskip by \tableindent %
+\exdentamount=\tableindent
+\parindent = 0pt
+\parskip = \smallskipamount
+\ifdim \parskip=0pt \parskip=2pt \fi%
+\def\Etable{\endgraf\endgroup\afterenvbreak}%
+\let\item = \internalBitem %
+\let\itemx = \internalBitemx %
+\let\kitem = \internalBkitem %
+\let\kitemx = \internalBkitemx %
+\let\xitem = \internalBxitem %
+\let\xitemx = \internalBxitemx %
+}
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\def\itemize{\parsearg\itemizezzz}
+
+\def\itemizezzz #1{%
+  \begingroup % ended by the @end itemsize
+  \itemizey {#1}{\Eitemize}
+}
+
+\def\itemizey #1#2{%
+\aboveenvbreak %
+\itemmax=\itemindent %
+\advance \itemmax by -\itemmargin %
+\advance \leftskip by \itemindent %
+\exdentamount=\itemindent
+\parindent = 0pt %
+\parskip = \smallskipamount %
+\ifdim \parskip=0pt \parskip=2pt \fi%
+\def#2{\endgraf\endgroup\afterenvbreak}%
+\def\itemcontents{#1}%
+\let\item=\itemizeitem}
+
+\def\bullet{$\ptexbullet$}
+\def\minus{$-$}
+
+% Set sfcode to normal for the chars that usually have another value.
+% These are `.?!:;,'
+\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
+  \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+% 
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list.  No
+% argument is the same as `1'.
+% 
+\def\enumerate{\parsearg\enumeratezzz}
+\def\enumeratezzz #1{\enumeratey #1  \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+  \begingroup % ended by the @end enumerate
+  %
+  % If we were given no argument, pretend we were given `1'.
+  \def\thearg{#1}%
+  \ifx\thearg\empty \def\thearg{1}\fi
+  %
+  % Detect if the argument is a single token.  If so, it might be a
+  % letter.  Otherwise, the only valid thing it can be is a number.
+  % (We will always have one token, because of the test we just made.
+  % This is a good thing, since \splitoff doesn't work given nothing at
+  % all -- the first parameter is undelimited.)
+  \expandafter\splitoff\thearg\endmark
+  \ifx\rest\empty
+    % Only one token in the argument.  It could still be anything.
+    % A ``lowercase letter'' is one whose \lccode is nonzero.
+    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+    %   not equal to itself.
+    % Otherwise, we assume it's a number.
+    % 
+    % We need the \relax at the end of the \ifnum lines to stop TeX from
+    % continuing to look for a <number>.
+    % 
+    \ifnum\lccode\expandafter`\thearg=0\relax 
+      \numericenumerate % a number (we hope)
+    \else
+      % It's a letter.
+      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+        \lowercaseenumerate % lowercase letter
+      \else
+        \uppercaseenumerate % uppercase letter
+      \fi
+    \fi
+  \else
+    % Multiple tokens in the argument.  We hope it's a number.
+    \numericenumerate
+  \fi
+}
+
+% An @enumerate whose labels are integers.  The starting integer is
+% given in \thearg.
+% 
+\def\numericenumerate{%
+  \itemno = \thearg
+  \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more lowercase letters in @enumerate; get a bigger
+                  alphabet}%
+    \fi
+    \char\lccode\itemno
+  }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more uppercase letters in @enumerate; get a bigger
+                  alphabet}
+    \fi
+    \char\uccode\itemno
+  }%
+}
+
+% Call itemizey, adding a period to the first argument and supplying the
+% common last two arguments.  Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+% 
+\def\startenumeration#1{%
+  \advance\itemno by -1
+  \itemizey{#1.}\Eenumerate\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+% 
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+% Definition of @item while inside @itemize.
+
+\def\itemizeitem{%
+\advance\itemno by 1
+{\let\par=\endgraf \smallbreak}%
+\ifhmode \errmessage{\in hmode at itemizeitem}\fi
+{\parskip=0in \hskip 0pt
+\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
+\vadjust{\penalty 1200}}%
+\flushcr}
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within \newindex.
address@hidden
address@hidden@@n}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that        accumulates this index.  The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+
+\def\newindex #1{
+\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
+\openout \csname#1indfile\endcsname \jobname.#1        % Open the file
+\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
+\noexpand\doindex {#1}}
+}
+
+% @defindex foo  ==  \newindex{foo}
+
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+
+\def\newcodeindex #1{
+\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
+\openout \csname#1indfile\endcsname \jobname.#1        % Open the file
+\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
+\noexpand\docodeindex {#1}}
+}
+
+\def\defcodeindex{\parsearg\newcodeindex}
+
+% @synindex foo bar    makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+\def\synindex #1 #2 {%
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo
+\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
+\noexpand\doindex {#2}}%
+}
+
+% @syncodeindex foo bar   similar, but put all entries made for index foo
+% inside @code.
+\def\syncodeindex #1 #2 {%
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo
+\expandafter\xdef\csname#1index\endcsname{%    % Define \xxxindex
+\noexpand\docodeindex {#2}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+%  and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+\def\indexdummies{%
+\def\_{{\realbackslash _}}%
+\def\w{\realbackslash w }%
+\def\bf{\realbackslash bf }%
+\def\rm{\realbackslash rm }%
+\def\sl{\realbackslash sl }%
+\def\sf{\realbackslash sf}%
+\def\tt{\realbackslash tt}%
+\def\gtr{\realbackslash gtr}%
+\def\less{\realbackslash less}%
+\def\hat{\realbackslash hat}%
+\def\char{\realbackslash char}%
+\def\TeX{\realbackslash TeX}%
+\def\dots{\realbackslash dots }%
+\def\copyright{\realbackslash copyright }%
+\def\tclose##1{\realbackslash tclose {##1}}%
+\def\code##1{\realbackslash code {##1}}%
+\def\samp##1{\realbackslash samp {##1}}%
+\def\t##1{\realbackslash r {##1}}%
+\def\r##1{\realbackslash r {##1}}%
+\def\i##1{\realbackslash i {##1}}%
+\def\b##1{\realbackslash b {##1}}%
+\def\cite##1{\realbackslash cite {##1}}%
+\def\key##1{\realbackslash key {##1}}%
+\def\file##1{\realbackslash file {##1}}%
+\def\var##1{\realbackslash var {##1}}%
+\def\kbd##1{\realbackslash kbd {##1}}%
+}
+
+% \indexnofonts no-ops all font-change commands.
+% This is used when outputting the strings to sort the index by.
+\def\indexdummyfont#1{#1}
+\def\indexdummytex{TeX}
+\def\indexdummydots{...}
+
+\def\indexnofonts{%
+\let\w=\indexdummyfont
+\let\t=\indexdummyfont
+\let\r=\indexdummyfont
+\let\i=\indexdummyfont
+\let\b=\indexdummyfont
+\let\emph=\indexdummyfont
+\let\strong=\indexdummyfont
+\let\cite=\indexdummyfont
+\let\sc=\indexdummyfont
+%Don't no-op \tt, since it isn't a user-level command
+% and is used in the definitions of the active chars like <, >, |...
+%\let\tt=\indexdummyfont
+\let\tclose=\indexdummyfont
+\let\code=\indexdummyfont
+\let\file=\indexdummyfont
+\let\samp=\indexdummyfont
+\let\kbd=\indexdummyfont
+\let\key=\indexdummyfont
+\let\var=\indexdummyfont
+\let\TeX=\indexdummytex
+\let\dots=\indexdummydots
+}
+
+% To define \realbackslash, we must make \ not be an escape.
+% We must first make another character (@) an escape
+% so we do not become unable to do a definition.
+
address@hidden \catcode`\\=\other
address@hidden@realbackslash{\}}
+
+\let\indexbackslash=0  %overridden during \printindex.
+
+\def\doind #1#2{%
+{\count10=\lastpenalty %
+{\indexdummies % Must do this here, since \bf, etc expand at this stage
+\escapechar=`\\%
+{\let\folio=0% Expand all macros now EXCEPT \folio
+\def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
+% so it will be output as is; and it will print as backslash in the indx.
+%
+% Now process the index-string once, with all font commands turned off,
+% to get the string to sort the index by.
+{\indexnofonts
+\xdef\temp1{#2}%
+}%
+% Now produce the complete index entry.  We process the index-string again,
+% this time with font commands expanded, to get what to print in the index.
+\edef\temp{%
+\write \csname#1indfile\endcsname{%
+\realbackslash entry {\temp1}{\folio}{#2}}}%
+\temp }%
+}\penalty\count10}}
+
+\def\dosubind #1#2#3{%
+{\count10=\lastpenalty %
+{\indexdummies % Must do this here, since \bf, etc expand at this stage
+\escapechar=`\\%
+{\let\folio=0%
+\def\rawbackslashxx{\indexbackslash}%
+%
+% Now process the index-string once, with all font commands turned off,
+% to get the string to sort the index by.
+{\indexnofonts
+\xdef\temp1{#2 #3}%
+}%
+% Now produce the complete index entry.  We process the index-string again,
+% this time with font commands expanded, to get what to print in the index.
+\edef\temp{%
+\write \csname#1indfile\endcsname{%
+\realbackslash entry {\temp1}{\folio}{#2}{#3}}}%
+\temp }%
+}\penalty\count10}}
+
+% The index entry written in the file actually looks like
+%  \entry {sortstring}{page}{topic}
+% or
+%  \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+%  \initial {c}
+%     before the first topic whose initial is c
+%  \entry {topic}{pagelist}
+%     for a topic that is used without subtopics
+%  \primary {topic}
+%     for the beginning of a topic that is used with subtopics
+%  \secondary {subtopic}{pagelist}
+%     for each subtopic.
+
+% Define the user-accessible indexing commands 
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% This is what you call to cause a particular index to get printed.
+% Write
+% @unnumbered Function Index
+% @printindex fn
+
+\def\printindex{\parsearg\doprintindex}
+
+\def\doprintindex#1{%
+  \tex
+  \dobreak \chapheadingskip {10000}
+  \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
+  \catcode`\$=\other\catcode`\_=\other
+  \catcode`\~=\other
+  %
+  % The following don't help, since the chars were translated
+  % when the raw index was written, and their fonts were discarded
+  % due to \indexnofonts.
+  %\catcode`\"=\active
+  %\catcode`\^=\active
+  %\catcode`\_=\active
+  %\catcode`\|=\active
+  %\catcode`\<=\active
+  %\catcode`\>=\active
+  % %
+  \def\indexbackslash{\rawbackslashxx}
+  \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt
+  \begindoublecolumns
+  %
+  % See if the index file exists and is nonempty.
+  \openin 1 \jobname.#1s
+  \ifeof 1 
+    % \enddoublecolumns gets confused if there is no text in the index,
+    % and it loses the chapter title and the aux file entries for the
+    % index.  The easiest way to prevent this problem is to make sure
+    % there is some text.
+    (Index is nonexistent)
+    \else
+    %
+    % If the index file exists but is empty, then \openin leaves \ifeof
+    % false.  We have to make TeX try to read something from the file, so
+    % it can discover if there is anything in it.
+    \read 1 to \temp
+    \ifeof 1
+      (Index is empty)
+    \else
+      \input \jobname.#1s
+    \fi
+  \fi
+  \closein 1
+  \enddoublecolumns
+  \Etex
+}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+% Same as \bigskipamount except no shrink.
+% \balancecolumns gets confused if there is any shrink.
+\newskip\initialskipamount \initialskipamount 12pt plus4pt
+
+\def\initial #1{%
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+\ifdim\lastskip<\initialskipamount
+\removelastskip \penalty-200 \vskip \initialskipamount\fi
+\line{\secbf#1\hfill}\kern 2pt\penalty10000}}
+
+\def\entry #1#2{\begingroup
+  \parfillskip=0in \parskip=0in \parindent=0in
+  %
+  % \hangindent is only relevant when the page number and the entry text
+  % don't fit on one line.  In that case, bob suggests starting the dots
+  % pretty far over on the line.
+  % \hangafter is reset to 1 at the start of each paragraph.
+  \hangindent=.75\hsize
+  \noindent
+  %
+  % Don't break the text of the index entry.
+  \hbox{#1}%
+  %
+  % If we must, put the page number on a line of its own, and fill out
+  % this line with blank space.  (The \hfil is overwhelmed with the
+  % fill leaders glue in \indexdotfill if the page number does fit.)
+  \hfil\penalty50
+  \null\nobreak\indexdotfill % Have leaders before the page number.
+  %
+  % The `\ ' here is removed by the implicit \unskip that TeX does as
+  % part of (the primitive) \par.  Without, a spurious underfull \hbox ensues.
+  \ #2% The page number ends the paragraph.
+  \par
+\endgroup}
+
+% Like \dotfill except takes at least 1 em.
+\def\indexdotfill{\cleaders
+  \hbox{$\mathsurround=0pt \mkern1.5mu . \mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+
+\def\secondary #1#2{
+{\parfillskip=0in \parskip=0in
+\hangindent =1in \hangafter=1
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
+}}
+
+%% Define two-column mode, which is used in indexes.
+%% Adapted from the TeXBook, page 416
+\catcode address@hidden
+
+\newbox\partialpage
+
+\newdimen\doublecolumnhsize  \doublecolumnhsize = 3.11in
+\newdimen\doublecolumnvsize  \doublecolumnvsize = 19.1in
+\newdimen\availdimen@
+
+\def\begindoublecolumns{\begingroup
+  \output={\global\setbox\partialpage=
+    \vbox{\unvbox255\kern -\topskip \kern \baselineskip}}\eject
+  \output={\doublecolumnout}%
+  \hsize=\doublecolumnhsize \vsize=\doublecolumnvsize}
+\def\enddoublecolumns{\output={\balancecolumns}\eject
+  \endgroup \pagegoal=\vsize}
+
+\def\doublecolumnout{\splittopskip=\topskip \splitmaxdepth=\maxdepth
+  address@hidden \advance\dimen@ by-\ht\partialpage
+  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+  \onepageout\pagesofar \unvbox255 \penalty\outputpenalty}
+\def\pagesofar{\unvbox\partialpage %
+  \hsize=\doublecolumnhsize % have to restore this since output routine
+%            changes it to set cropmarks (P. A. MacKay, 12 Nov. 1986)
+  \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
+\def\balancecolumns{%
+% Unset the glue.
+  \setbox255=\vbox{\unvbox255}
+  address@hidden
+  \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by2
+  address@hidden \advance\availdimen@ by-\ht\partialpage
+% If the remaining data is too big for one page,
+% output one page normally, then work with what remains.
+  \ifdim \dimen@>\availdimen@
+   {
+     \splittopskip=\topskip \splitmaxdepth=\maxdepth
+     address@hidden \advance\dimen@ by-\ht\partialpage
+     \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+     \onepageout\pagesofar
+   }
+% Recompute size of what remains, in case we just output some of it.
+  address@hidden
+  \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by2
+  \fi
+  \setbox0=\vbox{\unvbox255}
+  \splittopskip=\topskip
+  {\vbadness=10000 \loop \global\setbox3=\copy0
+    \global\setbox1=\vsplit3 to\dimen@
+    \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat}
+  \setbox0=\vbox address@hidden  \setbox2=\vbox address@hidden
+  \pagesofar}
+
+\catcode address@hidden
+\message{sectioning,}
+% Define chapters, sections, etc.
+
+\newcount \chapno
+\newcount \secno        \secno=0
+\newcount \subsecno     \subsecno=0
+\newcount \subsubsecno  \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount \appendixno  \appendixno = `\@
+\def\appendixletter{\char\the\appendixno}
+
+\newwrite \contentsfile
+% This is called from \setfilename.
+\def\opencontents{\openout \contentsfile = \jobname.toc}
+
+% Each @chapter defines this as the name of the chapter.
+% page headings and footings can use it.  @section does likewise
+
+\def\thischapter{} \def\thissection{}
+\def\seccheck#1{\if \pageno<0 %
address@hidden not allowed after generating table of contents}\fi
+%
+}
+
+\def\chapternofonts{%
+\let\rawbackslash=\relax%
+\let\frenchspacing=\relax%
+\def\result{\realbackslash result}
+\def\equiv{\realbackslash equiv}
+\def\expansion{\realbackslash expansion}
+\def\print{\realbackslash print}
+\def\TeX{\realbackslash TeX}
+\def\dots{\realbackslash dots}
+\def\copyright{\realbackslash copyright}
+\def\tt{\realbackslash tt}
+\def\bf{\realbackslash bf }
+\def\w{\realbackslash w}
+\def\less{\realbackslash less}
+\def\gtr{\realbackslash gtr}
+\def\hat{\realbackslash hat}
+\def\char{\realbackslash char}
+\def\tclose##1{\realbackslash tclose {##1}}
+\def\code##1{\realbackslash code {##1}}
+\def\samp##1{\realbackslash samp {##1}}
+\def\r##1{\realbackslash r {##1}}
+\def\b##1{\realbackslash b {##1}}
+\def\key##1{\realbackslash key {##1}}
+\def\file##1{\realbackslash file {##1}}
+\def\kbd##1{\realbackslash kbd {##1}}
+% These are redefined because @smartitalic wouldn't work inside xdef.
+\def\i##1{\realbackslash i {##1}}
+\def\cite##1{\realbackslash cite {##1}}
+\def\var##1{\realbackslash var {##1}}
+\def\emph##1{\realbackslash emph {##1}}
+\def\dfn##1{\realbackslash dfn {##1}}
+}
+
+\def\thischaptername{No Chapter Title}
+\outer\def\chapter{\parsearg\chapterzzz}
+\def\chapterzzz #1{\seccheck{chapter}%
+\secno=0 \subsecno=0 \subsubsecno=0
+\global\advance \chapno by 1 \message{Chapter \the\chapno}%
+\chapmacro {#1}{\the\chapno}%
+\gdef\thissection{#1}%
+\gdef\thischaptername{#1}%
+% We don't substitute the actual chapter name into \thischapter
+% because we don't want its macros evaluated now.
+\xdef\thischapter{Chapter \the\chapno: \noexpand\thischaptername}%
+{\chapternofonts%
+\edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp  %
+\donoderef %
+\global\let\section = \numberedsec
+\global\let\subsection = \numberedsubsec
+\global\let\subsubsection = \numberedsubsubsec
+}}
+
+\outer\def\appendix{\parsearg\appendixzzz}
+\def\appendixzzz #1{\seccheck{appendix}%
+\secno=0 \subsecno=0 \subsubsecno=0
+\global\advance \appendixno by 1 \message{Appendix \appendixletter}%
+\chapmacro {#1}{Appendix \appendixletter}%
+\gdef\thissection{#1}%
+\gdef\thischaptername{#1}%
+\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}%
+{\chapternofonts%
+\edef\temp{{\realbackslash chapentry 
+  {#1}{Appendix \appendixletter}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp  %
+\appendixnoderef %
+\global\let\section = \appendixsec
+\global\let\subsection = \appendixsubsec
+\global\let\subsubsection = \appendixsubsubsec
+}}
+
+\outer\def\top{\parsearg\unnumberedzzz}
+\outer\def\unnumbered{\parsearg\unnumberedzzz}
+\def\unnumberedzzz #1{\seccheck{unnumbered}%
+\secno=0 \subsecno=0 \subsubsecno=0 \message{(#1)}
+\unnumbchapmacro {#1}%
+\gdef\thischapter{#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbchapentry {#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp  %
+\unnumbnoderef %
+\global\let\section = \unnumberedsec
+\global\let\subsection = \unnumberedsubsec
+\global\let\subsubsection = \unnumberedsubsubsec
+}}
+
+\outer\def\numberedsec{\parsearg\seczzz}
+\def\seczzz #1{\seccheck{section}%
+\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
+\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash secentry %
+{#1}{\the\chapno}{\the\secno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\penalty 10000 %
+}}
+
+\outer\def\appendixsection{\parsearg\appendixsectionzzz}
+\outer\def\appendixsec{\parsearg\appendixsectionzzz}
+\def\appendixsectionzzz #1{\seccheck{appendixsection}%
+\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash secentry %
+{#1}{\appendixletter}{\the\secno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\unnumberedsec{\parsearg\unnumberedseczzz}
+\def\unnumberedseczzz #1{\seccheck{unnumberedsec}%
+\plainsecheading {#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbsecentry{#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\numberedsubsec{\parsearg\numberedsubseczzz}
+\def\numberedsubseczzz #1{\seccheck{subsection}%
+\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
+\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsecentry %
+{#1}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\penalty 10000 %
+}}
+
+\outer\def\appendixsubsec{\parsearg\appendixsubseczzz}
+\def\appendixsubseczzz #1{\seccheck{appendixsubsec}%
+\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
+\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsecentry %
+{#1}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\unnumberedsubsec{\parsearg\unnumberedsubseczzz}
+\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}%
+\plainsecheading {#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\numberedsubsubsec{\parsearg\numberedsubsubseczzz}
+\def\numberedsubsubseczzz #1{\seccheck{subsubsection}%
+\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
+\subsubsecheading {#1}
+  {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsubsecentry %
+  {#1}
+  {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}
+  {\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\penalty 10000 %
+}}
+
+\outer\def\appendixsubsubsec{\parsearg\appendixsubsubseczzz}
+\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}%
+\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
+\subsubsecheading {#1}
+  {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsubsecentry{#1}%
+  {\appendixletter}
+  {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
+\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}%
+\plainsecheading {#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\penalty 10000 %
+}}
+
+% These are variants which are not "outer", so they can appear in @ifinfo.
+% Actually, they should now be obsolete; ordinary section commands should work.
+\def\infotop{\parsearg\unnumberedzzz}
+\def\infounnumbered{\parsearg\unnumberedzzz}
+\def\infounnumberedsec{\parsearg\unnumberedseczzz}
+\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
+\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
+
+\def\infoappendix{\parsearg\appendixzzz}
+\def\infoappendixsec{\parsearg\appendixseczzz}
+\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
+\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
+
+\def\infochapter{\parsearg\chapterzzz}
+\def\infosection{\parsearg\sectionzzz}
+\def\infosubsection{\parsearg\subsectionzzz}
+\def\infosubsubsection{\parsearg\subsubsectionzzz}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\global\let\section = \numberedsec
+\global\let\subsection = \numberedsubsec
+\global\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and
+% such:
+%      1) We use \vbox rather than the earlier \line to permit
+%         overlong headings to fold.
+%      2) \hyphenpenalty is set to 10000 because hyphenation in a
+%         heading is obnoxious; this forbids it.
+%       3) Likewise, headings look best if no \parindent is used, and
+%          if justification is not attempted.  Hence \raggedright.
+
+
+\def\majorheading{\parsearg\majorheadingzzz}
+\def\majorheadingzzz #1{%
+{\advance\chapheadingskip by 10pt \chapbreak }%
+{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                  \parindent=0pt\raggedright
+                  \rm #1\hfill}}\bigskip \par\penalty 200}
+
+\def\chapheading{\parsearg\chapheadingzzz}
+\def\chapheadingzzz #1{\chapbreak %
+{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                  \parindent=0pt\raggedright
+                  \rm #1\hfill}}\bigskip \par\penalty 200}
+
+\def\heading{\parsearg\secheadingi}
+
+\def\subheading{\parsearg\subsecheadingi}
+
+\def\subsubheading{\parsearg\subsubsecheadingi}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+\def\CHAPFplain{
+\global\let\chapmacro=\chfplain
+\global\let\unnumbchapmacro=\unnchfplain}
+
+\def\chfplain #1#2{%
+  \pchapsepmacro
+  {%
+    \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                     \parindent=0pt\raggedright
+                     \rm #2\enspace #1}%
+  }%
+  \bigskip
+  \penalty5000
+}
+
+\def\unnchfplain #1{%
+\pchapsepmacro %
+{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                  \parindent=0pt\raggedright
+                  \rm #1\hfill}}\bigskip \par\penalty 10000 %
+}
+\CHAPFplain % The default
+
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt\raggedright
+                       \rm #1\hfill}}\bigskip \par\penalty 10000 %
+}
+
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+
+\def\CHAPFopen{
+\global\let\chapmacro=\chfopen
+\global\let\unnumbchapmacro=\unnchfopen}
+
+% Parameter controlling skip before section headings.
+
+\newskip \subsecheadingskip  \subsecheadingskip = 17pt plus 8pt minus 4pt
+\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
+
+\newskip \secheadingskip  \secheadingskip = 21pt plus 8pt minus 4pt
+\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
+
+% @paragraphindent  is defined for the Info formatting commands only.
+\let\paragraphindent=\comment
+
+% Section fonts are the base font at magstep2, which produces
+% a size a bit more than 14 points in the default situation.   
+
+\def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}}
+\def\plainsecheading #1{\secheadingi {#1}}
+\def\secheadingi #1{{\advance \secheadingskip by \parskip %
+\secheadingbreak}%
+{\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                 \parindent=0pt\raggedright
+                 \rm #1\hfill}}%
+\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
+
+
+% Subsection fonts are the base font at magstep1, 
+% which produces a size of 12 points.
+
+\def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}}
+\def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip %
+\subsecheadingbreak}%
+{\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                     \parindent=0pt\raggedright
+                     \rm #1\hfill}}%
+\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
+
+\def\subsubsecfonts{\subsecfonts} % Maybe this should change:
+                                 % Perhaps make sssec fonts scaled
+                                 % magstep half
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}}
+\def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip %
+\subsecheadingbreak}%
+{\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt\raggedright
+                       \rm #1\hfill}}%
+\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000}
+
+
+\message{toc printing,}
+
+% Finish up the main text and prepare to read what we've written
+% to \contentsfile.
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\def\startcontents#1{%
+   \pagealignmacro
+   \immediate\closeout \contentsfile
+   \ifnum \pageno>0
+      \pageno = -1             % Request roman numbered pages.
+   \fi
+   % Don't need to put `Contents' or `Short Contents' in the headline. 
+   % It is abundantly clear what they are.
+   \unnumbchapmacro{#1}\def\thischapter{}%
+   \begingroup                 % Set up to handle contents files properly.
+      \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  address@hidden
+      \raggedbottom             % Worry more about breakpoints than the bottom.
+      \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+}
+
+  
+% Normal (long) toc.
+\outer\def\contents{%
+   \startcontents{Table of Contents}%
+      \input \jobname.toc
+   \endgroup
+   \vfill \eject
+}
+
+% And just the chapters.
+\outer\def\summarycontents{%
+   \startcontents{Short Contents}%
+      %
+      \let\chapentry = \shortchapentry
+      \let\unnumbchapentry = \shortunnumberedentry
+      % We want a true roman here for the page numbers.
+      \secfonts
+      \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
+      \rm
+      \advance\baselineskip by 1pt % Open it up a little.
+      \def\secentry ##1##2##3##4{}
+      \def\unnumbsecentry ##1##2{}
+      \def\subsecentry ##1##2##3##4##5{}
+      \def\unnumbsubsecentry ##1##2{}
+      \def\subsubsecentry ##1##2##3##4##5##6{}
+      \def\unnumbsubsubsecentry ##1##2{}
+      \input \jobname.toc
+   \endgroup
+   \vfill \eject
+}
+\let\shortcontents = \summarycontents
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapter-level things, for both the long and short contents.
+\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
+
+% See comments in \dochapentry re vbox and related settings
+\def\shortchapentry#1#2#3{%
+   \vbox{\hyphenpenalty=10000\tolerance=5000
+    \parindent=0pt\strut\raggedright
+    {#2\labelspace #1}\dotfill\doshortpageno{#3}}%
+}
+
+\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
+\def\shortunnumberedentry#1#2{%
+   \vbox{\hyphenpenalty=10000\tolerance=5000
+    \parindent=0pt\strut\raggedright
+    #1\dotfill\doshortpageno{#2}}%
+}
+
+% Sections.
+\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
+\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
+
+% Subsections.
+\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
+\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
+
+% And subsubsections.
+\def\subsubsecentry#1#2#3#4#5#6{%
+  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
+\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
+
+
+% This parameter controls the indentation of the various levels.
+\newdimen\tocindent \tocindent = 3pc
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the 
+% page number.
+%
+% If the toc has to be broken over pages, we would want to be at chapters 
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+   \penalty-300 \vskip\baselineskip
+   % This \vbox (and similar ones in dosecentry etc.) used to be a
+   % \line; changed to permit linebreaks for long headings.  See
+   % comments above \majorheading.  Here we also use \strut to
+   % keep the top end of the vbox from jamming up against the previous
+   % entry in the table of contents.
+   \vbox{\chapentryfonts
+     \hyphenpenalty=10000\tolerance=5000 % this line and next introduced
+     \parindent=0pt\strut\raggedright    % with \line -> \vbox change
+     #1\dotfill
+     \dopageno{#2}}%
+   \nobreak\vskip .25\baselineskip
+}
+
+\def\dosecentry#1#2{%
+   \vbox{\secentryfonts \leftskip=\tocindent
+    \hyphenpenalty=10000\tolerance=5000
+    \parindent=0pt\strut\raggedright #1\dotfill
+    \dopageno{#2}}%
+}
+
+\def\dosubsecentry#1#2{%
+   \vbox{\subsecentryfonts \leftskip=2\tocindent
+    \hyphenpenalty=10000\tolerance=5000
+    \parindent=0pt\strut\raggedright #1\dotfill
+    \dopageno{#2}}%
+}
+
+\def\dosubsubsecentry#1#2{%
+   \vbox{\subsubsecentryfonts \leftskip=3\tocindent
+    \hyphenpenalty=10000\tolerance=5000
+    \parindent=0pt\strut\raggedright #1\dotfill
+    \dopageno{#2}}%
+}
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\let\subsecentryfonts = \textfonts
+\let\subsubsecentryfonts = \textfonts
+
+
+\message{environments,}
+
+% Since these characters are used in examples, it should be an even number of 
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+% Furthermore, these definitions must come after we define our fonts.
+\newbox\dblarrowbox    \newbox\longdblarrowbox
+\newbox\pushcharbox    \newbox\bullbox
+\newbox\equivbox       \newbox\errorbox
+
+\let\ptexequiv = \equiv
+
+%{\tentt
+%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
+%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
+%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
+%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
+% Adapted from the manmac format (p.420 of TeXbook)
+%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width 
.85ex
+%                                      depth .1ex\hfil}
+%}
+
+\def\point{$\star$}
+
+\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+
+\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% Adapted from the TeXbook's \boxit.
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
+
+\global\setbox\errorbox=\hbox to \dimen0{\hfil
+   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+   \advance\hsize by -2\dimen2 % Rules.
+   \vbox{
+      \hrule height\dimen2
+      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
+         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+         \kern3pt\vrule width\dimen2}% Space to right.
+      \hrule height\dimen2}
+    \hfil}
+
+% The @error{} command.
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @tex ... @end tex    escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\def\tex{\begingroup
+\catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+\catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
+\catcode `\%=14
+\catcode 43=12
+\catcode`\"=12
+\catcode`\==12
+\catcode`\|=12
+\catcode`\<=12
+\catcode`\>=12
+\escapechar=`\\
+%
+\let\{=\ptexlbrace
+\let\}=\ptexrbrace
+\let\.=\ptexdot
+\let\*=\ptexstar
+\let\dots=\ptexdots
address@hidden@}%
+\let\bullet=\ptexbullet
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl
+\let\L=\ptexL
+%
+\let\Etex=\endgroup}
+
+% Define @lisp ... @endlisp.
+% @lisp does a \begingroup so it can rebind things,
+% including the definition of @endlisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^M gets inside @lisp
+% phr: changed space to \null, to avoid overfull hbox problems.
+{\obeyspaces%
+\gdef\lisppar{\null\endgraf}}
+
+% Cause \obeyspaces to make each Space cause a word-separation
+% rather than the default which is that it acts punctuation.
+% This is because space in tt font looks funny.
+{\obeyspaces %
+\gdef\sepspaces{\def {\ }}}
+
+\newskip\aboveenvskipamount \aboveenvskipamount= 0pt
+\def\aboveenvbreak{{\advance\aboveenvskipamount by \parskip
+\endgraf \ifdim\lastskip<\aboveenvskipamount
+\removelastskip \penalty-50 \vskip\aboveenvskipamount \fi}}
+
+\def\afterenvbreak{\endgraf \ifdim\lastskip<\aboveenvskipamount
+\removelastskip \penalty-50 \vskip\aboveenvskipamount \fi}
+
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins.
+\let\nonarrowing=\relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \cartouche: draw rectangle w/rounded corners around argument
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+       \ctl\leaders\hrule height\circthick\hfil\ctr
+       \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+       \cbl\leaders\hrule height\circthick\hfil\cbr
+       \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\long\def\cartouche{%
+\begingroup
+       \lskip=\leftskip \rskip=\rightskip
+       \leftskip=0pt\rightskip=0pt %we want these *outside*.
+       \cartinner=\hsize \advance\cartinner by-\lskip 
+                         \advance\cartinner by-\rskip
+       \cartouter=\hsize
+       \advance\cartouter by 18pt % allow for 3pt kerns on either
+%                                   side, and for 6pt waste from
+%                                   each corner char
+       \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+       % Flag to tell @lisp, etc., not to narrow margin.
+       \let\nonarrowing=\comment
+       \vbox\bgroup
+               \baselineskip=0pt\parskip=0pt\lineskip=0pt
+               \carttop
+               \hbox\bgroup
+                       \hskip\lskip
+                       \vrule\kern3pt
+                       \vbox\bgroup
+                               \hsize=\cartinner
+                               \kern3pt
+                               \begingroup
+                                       \baselineskip=\normbskip
+                                       \lineskip=\normlskip
+                                       \parskip=\normpskip
+                                       \vskip -\parskip
+\def\Ecartouche{%
+                               \endgroup
+                               \kern3pt
+                       \egroup
+                       \kern3pt\vrule
+                       \hskip\rskip
+               \egroup
+               \cartbot
+       \egroup
+\endgroup
+}}     
+
+\def\lisp{\aboveenvbreak
+\begingroup\inENV % This group ends at the end of the @lisp body
+\hfuzz=12truept % Don't be fussy
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% Single space lines
+\singlespace %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+\let\par=\lisppar
+\def\Elisp{\endgroup\afterenvbreak}%
+\parskip=0pt
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
+\advance \leftskip by \lispnarrowing
+\exdentamount=\lispnarrowing
+\let\exdent=\nofillexdent
+\let\nonarrowing=\relax
+\fi
+\parindent=0pt
+\obeyspaces \obeylines \tt \rawbackslash
+\def\next##1{}\next}
+
+
+\let\example=\lisp
+\def\Eexample{\Elisp}
+
+\let\smallexample=\lisp
+\def\Esmallexample{\Elisp}
+
+% Macro for 9 pt. examples, necessary to print with 5" lines.
+% From address@hidden  This is not really used unless the
+% @smallbook command is given.
+
+\def\smalllispx{\aboveenvbreak\begingroup\inENV
+%                      This group ends at the end of the @lisp body
+\hfuzz=12truept % Don't be fussy
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% Single space lines
+\singlespace %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+\let\par=\lisppar
+\def\Esmalllisp{\endgroup\afterenvbreak}%
+%%%% Smaller baseline skip for small examples.
+\baselineskip 10pt
+\parskip=0pt
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
+\advance \leftskip by \lispnarrowing
+\exdentamount=\lispnarrowing
+\let\exdent=\nofillexdent
+\let\nonarrowing=\relax
+\fi
+\parindent=0pt
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslash
+\def\next##1{}\next}
+
+% This is @display; same as @lisp except use roman font.
+
+\def\display{\begingroup\inENV %This group ends at the end of the @display body
+\aboveenvbreak
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% Single space lines
+\singlespace %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+\let\par=\lisppar
+\def\Edisplay{\endgroup\afterenvbreak}%
+\parskip=0pt
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
+\advance \leftskip by \lispnarrowing
+\exdentamount=\lispnarrowing
+\let\exdent=\nofillexdent
+\let\nonarrowing=\relax
+\fi
+\parindent=0pt
+\obeyspaces \obeylines
+\def\next##1{}\next}
+
+% This is @format; same as @lisp except use roman font and don't narrow margins
+
+\def\format{\begingroup\inENV %This group ends at the end of the @format body
+\aboveenvbreak
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+\singlespace %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+\let\par=\lisppar
+\def\Eformat{\endgroup\afterenvbreak}
+\parskip=0pt \parindent=0pt
+\obeyspaces \obeylines
+\def\next##1{}\next}
+
+% @flushleft and @flushright
+
+\def\flushleft{%
+\begingroup\inENV %This group ends at the end of the @format body
+\aboveenvbreak
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+% This also causes @ to work when the directive name
+% is terminated by end of line.
+\let\par=\lisppar
+\def\Eflushleft{\endgroup\afterenvbreak}%
+\parskip=0pt \parindent=0pt
+\obeyspaces \obeylines
+\def\next##1{}\next}
+
+\def\flushright{%
+\begingroup\inENV %This group ends at the end of the @format body
+\aboveenvbreak
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+% This also causes @ to work when the directive name
+% is terminated by end of line.
+\let\par=\lisppar
+\def\Eflushright{\endgroup\afterenvbreak}%
+\parskip=0pt \parindent=0pt
+\advance \leftskip by 0pt plus 1fill
+\obeyspaces \obeylines
+\def\next##1{}\next}
+
+% @quotation - narrow the margins.
+
+\def\quotation{%
+\begingroup\inENV %This group ends at the end of the @quotation body
+{\parskip=0pt  % because we will skip by \parskip too, later
+\aboveenvbreak}%
+\singlespace
+\parindent=0pt
+\def\Equotation{\par\endgroup\afterenvbreak}%
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
+\advance \leftskip by \lispnarrowing
+\advance \rightskip by \lispnarrowing
+\exdentamount=\lispnarrowing
+\let\nonarrowing=\relax
+\fi}
+
+\message{defuns,}
+% Define formatter for defuns
+% First, allow user to change definition object font (\df) internally
+\def\setdeffont #1 {\csname DEF#1\endcsname}
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deftypemargin \deftypemargin=12pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+
+\newcount\parencount
+% define \functionparens, which makes ( and ) and & do special things.
+% \functionparens affects the group it is contained in.
+\def\activeparens{%
+\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active
+\catcode`\[=\active \catcode`\]=\active}
+{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
+\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+
+% Definitions of (, ) and & used in args for functions.
+% This is the definition of ( outside of all parentheses.
+\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %
+\global\advance\parencount by 1 }
+%
+% This is the definition of ( when already inside a level of parens.
+\gdef\opnested{\char`\(\global\advance\parencount by 1 }
+%
+\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
+% also in that case restore the outer-level definition of (.
+\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
+\global\advance \parencount by -1 }
+% If we encounter &foo, then turn on ()-hacking afterwards
+\gdef\amprm#1 {{\rm\&#1}\let(=\oprm \let)=\clrm\ }
+%
+\gdef\normalparens{\boldbrax\let&=\ampnr}
+} % End of definition inside \activeparens
+%% These parens (in \boldbrax) actually are a little bolder than the
+%% contained text.  This is especially needed for [ and ]
+\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\&}
+\def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}}
+
+% First, defname, which formats the header line itself.
+% #1 should be the function name.
+% #2 should be the type of definition, such as "Function".
+
+\def\defname #1#2{%
+% Get the values of \leftskip and \rightskip as they were
+% outside the @def...
+\dimen2=\leftskip
+\advance\dimen2 by -\defbodyindent
+\dimen3=\rightskip
+\advance\dimen3 by -\defbodyindent
+\noindent        %
+\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
+\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
+\parshape 2 0in \dimen0 \defargsindent \dimen1     %
+% Now output arg 2 ("Function" or some such)
+% ending at \deftypemargin from the right margin,
+% but stuck inside a box of width 0 so it does not interfere with linebreaking
+{% Adjust \hsize to exclude the ambient margins,
+% so that \rightline will obey them.
+\advance \hsize by -\dimen2 \advance \hsize by -\dimen3
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}%
+% Make all lines underfull and no complaints:
+\tolerance=10000 \hbadness=10000    
+\advance\leftskip by -\defbodyindent
+\exdentamount=\defbodyindent
+{\df #1}\enskip        % Generate function name
+}
+
+% Actually process the body of a definition
+% #1 should be the terminating control sequence, such as \Edefun.
+% #2 should be the "another name" control sequence, such as \defunx.
+% #3 should be the control sequence that actually processes the header,
+%    such as \defunheader.
+
+\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup %
+\catcode 61=\active %
+\obeylines\activeparens\spacesplit#3}
+
+\def\defmethparsebody #1#2#3#4 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
+
+\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 ##2 {\def#4{##1}%
+\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
+
+% These parsing functions are similar to the preceding ones
+% except that they do not make parens into active characters.
+% These are used for "variables" since they have no arguments.
+
+\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2{\begingroup\obeylines\spacesplit#3}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup %
+\catcode 61=\active %
+\obeylines\spacesplit#3}
+
+\def\defvrparsebody #1#2#3#4 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\spacesplit{#3{#4}}}
+
+\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 ##2 {\def#4{##1}%
+\begingroup\obeylines\spacesplit{#3{##2}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\spacesplit{#3{#5}}}
+
+% Split up #2 at the first space token.
+% call #1 with two arguments:
+%  the first is all of #2 before the space token,
+%  the second is all of #2 after that space token.
+% If #2 contains no space token, all of it is passed as the first arg
+% and the second is passed as empty.
+
+{\obeylines
+\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
+\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
+\ifx\relax #3%
+#1{#2}{}\else #1{#2}{#3#4}\fi}}
+
+% So much for the things common to all kinds of definitions.
+
+% Define @defun.
+
+% First, define the processing that is wanted for arguments of \defun
+% Use this to expand the args and terminate the paragraph they make up
+
+\def\defunargs #1{\functionparens \sl
+% Expand, preventing hyphenation at `-' chars.
+% Note that groups don't affect changes in \hyphenchar.
+\hyphenchar\tensl=0
+#1%
+\hyphenchar\tensl=45
+\ifnum\parencount=0 \else \errmessage{unbalanced parens in @def arguments}\fi%
+\interlinepenalty=10000
+\advance\rightskip by 0pt plus 1fil
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
+}
+
+\def\deftypefunargs #1{%
+% Expand, preventing hyphenation at `-' chars.
+% Note that groups don't affect changes in \hyphenchar.
+\functionparens
+\code{#1}%
+\interlinepenalty=10000
+\advance\rightskip by 0pt plus 1fil
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
+}
+
+% Do complete processing of one @defun or @defunx line already parsed.
+
+% @deffn Command forward-char nchars
+
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
+
+\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
+\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @defun == @deffn Function
+
+\def\defun{\defparsebody\Edefun\defunx\defunheader}
+
+\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+\begingroup\defname {#1}{Function}%
+\defunargs {#2}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @deftypefun int foobar (int @var{foo}, float @var{bar})
+
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
+
+% #1 is the data type.  #2 is the name and args.
+\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
+% #1 is the data type, #2 the name, #3 the args.
+\def\deftypefunheaderx #1#2 #3\relax{%
+\doind {fn}{\code{#2}}% Make entry in function index
+\begingroup\defname {\code{#1} #2}{Function}%
+\deftypefunargs {#3}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
+
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
+
+% #1 is the classification.  #2 is the data type.  #3 is the name and args.
+\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
+% #1 is the classification, #2 the data type, #3 the name, #4 the args.
+\def\deftypefnheaderx #1#2#3 #4\relax{%
+\doind {fn}{\code{#3}}% Make entry in function index
+\begingroup\defname {\code{#2} #3}{#1}%
+\deftypefunargs {#4}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @defmac == @deffn Macro
+
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
+
+\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+\begingroup\defname {#1}{Macro}%
+\defunargs {#2}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @defspec == @deffn Special Form
+
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
+
+\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+\begingroup\defname {#1}{Special Form}%
+\defunargs {#2}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% This definition is run if you use @defunx
+% anywhere other than immediately after a @defun or @defunx.
+
+\def\deffnx #1 address@hidden in invalid context}}
+\def\defunx #1 address@hidden in invalid context}}
+\def\defmacx #1 address@hidden in invalid context}}
+\def\defspecx #1 address@hidden in invalid context}}
+\def\deftypefnx #1 address@hidden in invalid context}}
+\def\deftypeunx #1 address@hidden in invalid context}}
+
+% @defmethod, and so on
+
+% @defop {Funny Method} foo-class frobnicate argument
+
+\def\defop #1 {\def\defoptype{#1}%
+\defopparsebody\Edefop\defopx\defopheader\defoptype}
+
+\def\defopheader #1#2#3{%
+\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index
+\begingroup\defname {#2}{\defoptype{} on #1}%
+\defunargs {#3}\endgroup %
+}
+
+% @defmethod == @defop Method
+
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
+
+\def\defmethodheader #1#2#3{%
+\dosubind {fn}{\code{#2}}{on #1}% entry in function index
+\begingroup\defname {#2}{Method on #1}%
+\defunargs {#3}\endgroup %
+}
+
+% @defcv {Class Option} foo-class foo-flag
+
+\def\defcv #1 {\def\defcvtype{#1}%
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
+
+\def\defcvarheader #1#2#3{%
+\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
+\begingroup\defname {#2}{\defcvtype{} of #1}%
+\defvarargs {#3}\endgroup %
+}
+
+% @defivar == @defcv {Instance Variable}
+
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
+
+\def\defivarheader #1#2#3{%
+\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
+\begingroup\defname {#2}{Instance Variable of #1}%
+\defvarargs {#3}\endgroup %
+}
+
+% These definitions are run if you use @defmethodx, etc.,
+% anywhere other than immediately after a @defmethod, etc.
+
+\def\defopx #1 address@hidden in invalid context}}
+\def\defmethodx #1 address@hidden in invalid context}}
+\def\defcvx #1 address@hidden in invalid context}}
+\def\defivarx #1 address@hidden in invalid context}}
+
+% Now @defvar
+
+% First, define the processing that is wanted for arguments of @defvar.
+% This is actually simple: just print them in roman.
+% This must expand the args and terminate the paragraph they make up
+\def\defvarargs #1{\normalparens #1%
+\interlinepenalty=10000
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000}
+
+% @defvr Counter foo-count
+
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
+
+\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
+\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
+
+% @defvar == @defvr Variable
+
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
+
+\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
+\begingroup\defname {#1}{Variable}%
+\defvarargs {#2}\endgroup %
+}
+
+% @defopt == @defvr {User Option}
+
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
+
+\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
+\begingroup\defname {#1}{User Option}%
+\defvarargs {#2}\endgroup %
+}
+
+% @deftypevar int foobar
+
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
+
+% #1 is the data type.  #2 is the name.
+\def\deftypevarheader #1#2{%
+\doind {vr}{\code{#2}}% Make entry in variables index
+\begingroup\defname {\code{#1} #2}{Variable}%
+\interlinepenalty=10000
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000
+\endgroup}
+
+% @deftypevr {Global Flag} int enable
+
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
+
+\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}%
+\begingroup\defname {\code{#2} #3}{#1}
+\interlinepenalty=10000
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000
+\endgroup}
+
+% This definition is run if you use @defvarx
+% anywhere other than immediately after a @defvar or @defvarx.
+
+\def\defvrx #1 address@hidden in invalid context}}
+\def\defvarx #1 address@hidden in invalid context}}
+\def\defoptx #1 address@hidden in invalid context}}
+\def\deftypevarx #1 address@hidden in invalid context}}
+\def\deftypevrx #1 address@hidden in invalid context}}
+
+% Now define @deftp
+% Args are printed in bold, a slight difference from @defvar.
+
+\def\deftpargs #1{\bf \defvarargs{#1}}
+
+% @deftp Class window height width ...
+
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}
+
+\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
+\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
+
+% This definition is run if you use @deftpx, etc
+% anywhere other than immediately after a @deftp, etc.
+
+\def\deftpx #1 address@hidden in invalid context}}
+
+\message{cross reference,}
+% Define cross-reference macros
+\newwrite \auxfile
+
+\newif\ifhavexrefs  % True if xref values are known.
+\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
+
+% \setref{foo} defines a cross-reference point named foo.
+
+\def\setref#1{%
+%\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-pg}{Ypagenumber}%
+\dosetq{#1-snt}{Ysectionnumberandtype}}
+
+\def\unnumbsetref#1{%
+%\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-pg}{Ypagenumber}%
+\dosetq{#1-snt}{Ynothing}}
+
+\def\appendixsetref#1{%
+%\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-pg}{Ypagenumber}%
+\dosetq{#1-snt}{Yappendixletterandtype}}
+
+% \xref, \pxref, and \ref generate cross-references to specified points.
+% For \xrefX, #1 is the node name, #2 the name of the Info
+% cross-reference, #3 the printed node name, #4 the name of the Info
+% file, #5 the name of the printed manual.  All but the node name can be
+% omitted.
+% 
+\def\pxref#1{see \xrefX[#1,,,,,,,]}
+\def\xref#1{See \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup%
+\def\printedmanual{\ignorespaces #5}%
+\def\printednodename{\ignorespaces #3}%
+%
+\setbox1=\hbox{\printedmanual}%
+\setbox0=\hbox{\printednodename}%
+\ifdim \wd0=0pt%
+\def\printednodename{\ignorespaces #1}%
+%%% Uncommment the following line to make the actual chapter or section title
+%%% appear inside the square brackets.
+%\def\printednodename{#1-title}%
+\fi%
+%
+%
+% If we use \unhbox0 and \unhbox1 to print the node names, TeX does
+% not insert empty discretionaries after hyphens, which means that it
+% will not find a line break at a hyphen in a node names.  Since some
+% manuals are best written with fairly long node names, containing
+% hyphens, this is a loss.  Therefore, we simply give the text of
+% the node name again, so it is as if TeX is seeing it for the first
+% time.
+\ifdim \wd1>0pt
+section ``\printednodename'' in \cite{\printedmanual}%
+\else%
+\turnoffactive%
+\refx{#1-snt}{} [\printednodename], page\tie\refx{#1-pg}{}%
+\fi
+\endgroup}
+
+% \dosetq is the interface for calls from other macros
+
+% Use \turnoffactive so that punctuation chars such as underscore
+% work in node names.
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive%
+\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}%
+\next}}
+
+% \internalsetq {foo}{page} expands into
+% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
+% When the aux file is read, ' is the escape character
+
+\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
+
+% Things to be expanded by \internalsetq
+
+\def\Ypagenumber{\folio}
+
+\def\Ytitle{\thischapter}
+
+\def\Ynothing{}
+
+\def\Ysectionnumberandtype{%
+\ifnum\secno=0 Chapter\xreftie\the\chapno %
+\else \ifnum \subsecno=0 Section\xreftie\the\chapno.\the\secno %
+\else \ifnum \subsubsecno=0 %
+Section\xreftie\the\chapno.\the\secno.\the\subsecno %
+\else %
+Section\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
+\fi \fi \fi }
+
+\def\Yappendixletterandtype{%
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{}%
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %
+\else \ifnum \subsubsecno=0 %
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
+\else %
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
+\fi \fi \fi }
+
+\gdef\xreftie{'tie}
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+% 
+\ifx\inputlineno\thisisundefined
+  \let\linenumber = \empty % Non-3.0.
+\else
+  \def\linenumber{\the\inputlineno:\space}
+\fi
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+
+\def\refx#1#2{%
+  \expandafter\ifx\csname X#1\endcsname\relax
+    % If not defined, say something at least.
+    $\langle$un\-de\-fined$\rangle$%
+    \ifhavexrefs
+      \message{\linenumber Undefined cross reference `#1'.}%
+    \else
+      \ifwarnedxrefs\else
+        \global\warnedxrefstrue
+        \message{Cross reference values unknown; you must run TeX again.}%
+      \fi
+    \fi
+  \else
+    % It's defined, so just use it.
+    \csname X#1\endcsname
+  \fi
+  #2% Output the suffix in any case.
+}
+
+% Read the last existing aux file, if any.  No error if none exists.
+
+% This is the macro invoked by entries in the aux file.
+\def\xrdef #1#2{
+{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {#2}}}
+
+\def\readauxfile{%
+\begingroup
+\catcode address@hidden
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\^^C=\other
+\catcode `\^^D=\other
+\catcode `\^^E=\other
+\catcode `\^^F=\other
+\catcode `\^^G=\other
+\catcode `\^^H=\other
+\catcode `\=\other
+\catcode `\^^L=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode 26=\other
+\catcode `\^^[=\other
+\catcode `\^^\=\other
+\catcode `\^^]=\other
+\catcode `\^^^=\other
+\catcode `\^^_=\other
+\catcode address@hidden
+\catcode `\^=\other
+\catcode `\~=\other
+\catcode `\[=\other
+\catcode `\]=\other
+\catcode`\"=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode `\$=\other
+\catcode `\#=\other
+\catcode `\&=\other
+% the aux file uses ' as the escape.
+% Turn off \ as an escape so we do not lose on
+% entries which were dumped with control sequences in their names.
+% For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
+% Reference to such entries still does not work the way one would wish,
+% but at least they do not bomb out when the aux file is read in.
+\catcode `\{=1 \catcode `\}=2
+\catcode `\%=\other
+\catcode `\'=0
+\catcode `\\=\other
+\openin 1 \jobname.aux
+\ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue
+\fi
+% Open the new aux file.  Tex will close it automatically at exit.
+\openout \auxfile=\jobname.aux
+\endgroup}
+
+
+% Footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed.
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only..
+\let\footnotestyle=\comment
+
+\let\ptexfootnote=\footnote
+
+{\catcode address@hidden
+\long\gdef\footnote #1{\global\advance \footnoteno by address@hidden
+\unskip
+\edef\thisfootno{$^{\the\footnoteno}$}%
address@hidden
address@hidden/\fi
address@hidden \footnotezzz{#1}}
+% \parsearg\footnotezzz}
+
+\long\gdef\footnotezzz #1{\insert\footins{
+\interlinepenalty\interfootnotelinepenalty
+\splittopskip\ht\strutbox % top baseline for broken footnotes
+\splitmaxdepth\dp\strutbox address@hidden
address@hidden address@hidden address@hidden address@hidden
+\footstrut\parindent=\defaultparindent\hang\textindent{\thisfootno}#1\strut}}
+
+}%end \catcode address@hidden
+
+% End of control word definitions.
+
+\message{and turning on texinfo input format.}
+
+\def\openindices{%
+   \newindex{cp}%
+   \newcodeindex{fn}%
+   \newcodeindex{vr}%
+   \newcodeindex{tp}%
+   \newcodeindex{ky}%
+   \newcodeindex{pg}%
+}
+
+% Set some numeric style parameters, for 8.5 x 11 format.
+
+%\hsize = 6.5in
+\newdimen\defaultparindent \defaultparindent = 15pt
+\parindent = \defaultparindent
+\parskip 18pt plus 1pt
+\baselineskip 15pt
+\advance\topskip by 1.2cm
+
+% Prevent underfull vbox error messages.
+\vbadness=10000
+
+% Following George Bush, just get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything.  We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize.  This makes it come to about 9pt for the 8.5x11 format.
+% 
+\ifx\emergencystretch\thisisundefined \else
+  \emergencystretch = \hsize
+  \divide\emergencystretch by 45
+\fi
+
+% Use @smallbook to reset parameters for 7x9.5 format  (or else 7x9.25)
+\def\smallbook{
+\global\lispnarrowing = 0.3in
+\global\baselineskip 12pt
+\advance\topskip by -1cm
+\global\parskip 3pt plus 1pt
+\global\hsize = 5in
+\global\doublecolumnhsize=2.4in \global\doublecolumnvsize=15.0in
+\global\vsize=7.5in
+\global\tolerance=700
+\global\hfuzz=1pt
+\global\contentsrightmargin=0pt
+
+\global\pagewidth=\hsize
+\global\pageheight=\vsize
+
+\global\let\smalllisp=\smalllispx
+\global\let\smallexample=\smalllispx
+\global\def\Esmallexample{\Esmalllisp}
+}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{
+\global\tolerance=700
+\global\hfuzz=1pt
+\global\baselineskip=12pt
+\global\parskip 15pt plus 1pt
+
+\global\vsize= 53\baselineskip
+\advance\vsize by \topskip
+%\global\hsize=   5.85in     % A4 wide 10pt
+\global\hsize=  6.5in
+\global\outerhsize=\hsize
+\global\advance\outerhsize by 0.5in
+\global\outervsize=\vsize
+\global\advance\outervsize by 0.6in
+\global\doublecolumnhsize=\hsize
+\global\divide\doublecolumnhsize by 2
+\global\advance\doublecolumnhsize by -0.1in
+\global\doublecolumnvsize=\vsize
+\global\multiply\doublecolumnvsize by 2
+\global\advance\doublecolumnvsize by 0.1in
+
+\global\pagewidth=\hsize
+\global\pageheight=\vsize
+}
+
+%% For a final copy, take out the rectangles
+%% that mark overfull boxes (in case you have decided
+%% that the text looks ok even though it passes the margin).
+\def\finalout{\overfullrule=0pt}
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+
+% This macro is used to make a character print one way in ttfont
+% where it can probably just be output, 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\the\font=0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt \char '042}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt \char '176}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+% Subroutine for the previous macro.
+\def\_{\lvvmode \kern.06em \vbox{\hrule width.3em height.1ex}}
+
+% \lvvmode is equivalent in function to \leavevmode.
+% Using \leavevmode runs into trouble when written out to
+% an index file due to the expansion of \leavevmode into ``\unhbox
+% address@hidden'' ---which looks to TeX like ``\unhbox \voidb\x'' due to our
+% magic tricks with @.
+\def\lvvmode{\vbox to 0pt{}}
+
+\catcode`\|=\active
+\def|{{\tt \char '174}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+%\catcode 27=\active
+%\def^^[{$\diamondsuit$}
+
+% Used sometimes to turn off (effectively) the active characters
+% even after parsing them.
+\def\turnoffactive{\let"=\normaldoublequote
+\let~=\normaltilde
+\let^=\normalcaret
+\let_=\normalunderscore
+\let|=\normalverticalbar
+\let<=\normalless
+\let>=\normalgreater
+\let+=\normalplus}
+
+% Set up an active definition for =, but don't enable it most of the time.
+{\catcode`\==\active
+\global\def={{\tt \char 61}}}
+
address@hidden
+
+% \rawbackslashxx output one backslash character in current font
+\global\chardef\rawbackslashxx=`\\
+%{\catcode`\\=\other
address@hidden@rawbackslashxx{\}}
+
+% \rawbackslash redefines \ as input to do \rawbackslashxx.
+{\catcode`\\=\active
address@hidden@address@hidden@rawbackslashxx }}
+
+% \normalbackslash outputs one backslash in fixed width font.
+\def\normalbackslash{{\tt\rawbackslashxx}}
+
+% Say @foo, not \foo, in error messages.
+\escapechar=`\@
+
+% \catcode 17=0   % Define control-q
+\catcode`\\=\active
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing 
+% a backslash.
+%
address@hidden@eatinput input address@hidden
address@hidden@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\{ in the file would cause an error. This macro tries to fix 
+% that, assuming it is called before the first `\' could plausibly occur.
+% 
address@hidden@address@hidden@eatinput @let\ = @normalbackslash @fi}
+
+%% These look ok in all fonts, so just make them not special.  The @rm below
+%% makes sure that the current font starts out as the newly loaded cmr10
address@hidden@address@hidden @address@hidden@other @catcode`@&address@hidden 
@address@hidden@other
+
address@hidden
address@hidden
+
address@hidden Local variables:
address@hidden page-delimiter: "^\\\\message"
address@hidden End:
diff --git a/test/etags/y-src/atest.y b/test/etags/y-src/atest.y
new file mode 100644
index 0000000..81087b8
--- /dev/null
+++ b/test/etags/y-src/atest.y
@@ -0,0 +1,5 @@
+%%
+exp    :       exp '*' exp
+                       { $$.value = $1.value ? $3.value : $5.value;
+                         $$.unsignedp = $3.unsignedp || $5.unsignedp; }
+       ;
diff --git a/test/etags/y-src/cccp.c b/test/etags/y-src/cccp.c
new file mode 100644
index 0000000..6996705
--- /dev/null
+++ b/test/etags/y-src/cccp.c
@@ -0,0 +1,2202 @@
+/* A Bison parser, made from cccp.y
+   by GNU bison 1.32.  */
+
+#define YYBISON 1  /* Identify Bison output.  */
+
+# define       INT     257
+# define       CHAR    258
+# define       NAME    259
+# define       ERROR   260
+# define       OR      261
+# define       AND     262
+# define       EQUAL   263
+# define       NOTEQUAL        264
+# define       LEQ     265
+# define       GEQ     266
+# define       LSH     267
+# define       RSH     268
+# define       UNARY   269
+
+#line 26 "cccp.y"
+
+#include "config.h"
+#include <setjmp.h>
+/* #define YYDEBUG 1 */
+
+#ifdef MULTIBYTE_CHARS
+#include <stdlib.h>
+#include <locale.h>
+#endif
+
+#include <stdio.h>
+
+typedef unsigned char U_CHAR;
+
+/* This is used for communicating lists of keywords with cccp.c.  */
+struct arglist {
+  struct arglist *next;
+  U_CHAR *name;
+  int length;
+  int argno;
+};
+
+/* Define a generic NULL if one hasn't already been defined.  */
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef GENERIC_PTR
+#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
+#define GENERIC_PTR void *
+#else
+#define GENERIC_PTR char *
+#endif
+#endif
+
+#ifndef NULL_PTR
+#define NULL_PTR ((GENERIC_PTR)0)
+#endif
+
+int yylex ();
+void yyerror ();
+int expression_value;
+
+static jmp_buf parse_return_error;
+
+/* Nonzero means count most punctuation as part of a name.  */
+static int keyword_parsing = 0;
+
+/* some external tables of character types */
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[];
+
+extern char *xmalloc ();
+
+/* Flag for -pedantic.  */
+extern int pedantic;
+
+/* Flag for -traditional.  */
+extern int traditional;
+
+#ifndef CHAR_TYPE_SIZE
+#define CHAR_TYPE_SIZE BITS_PER_UNIT
+#endif
+
+#ifndef INT_TYPE_SIZE
+#define INT_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef LONG_TYPE_SIZE
+#define LONG_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
+#endif
+
+/* Yield nonzero if adding two numbers with A's and B's signs can yield a
+   number with SUM's sign, where A, B, and SUM are all C integers.  */
+#define possible_sum_sign(a, b, sum) ((((a) ^ (b)) | ~ ((a) ^ (sum))) < 0)
+
+static void integer_overflow ();
+static long left_shift ();
+static long right_shift ();
+
+#line 111 "cccp.y"
+#ifndef YYSTYPE
+typedef union {
+  struct constant {long value; int unsignedp;} integer;
+  struct name {U_CHAR *address; int length;} name;
+  struct arglist *keywords;
+  int voidval;
+  char *sval;
+} yystype;
+# define YYSTYPE yystype
+#endif
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+
+
+#define        YYFINAL         73
+#define        YYFLAG          -32768
+#define        YYNTBASE        34
+
+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
+#define YYTRANSLATE(x) ((unsigned)(x) <= 269 ? yytranslate[x] : 39)
+
+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
+static const char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,    29,     2,    31,     2,    27,    14,     2,
+      32,    33,    25,    23,     9,    24,     2,    26,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     8,     2,
+      17,     2,    18,     7,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    13,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    12,     2,    30,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     3,     4,     5,
+       6,    10,    11,    15,    16,    19,    20,    21,    22,    28
+};
+
+#if YYDEBUG
+static const short yyprhs[] =
+{
+       0,     0,     2,     4,     8,    11,    14,    17,    20,    23,
+      24,    31,    35,    39,    43,    47,    51,    55,    59,    63,
+      67,    71,    75,    79,    83,    87,    91,    95,    99,   103,
+     107,   113,   115,   117,   119,   120,   125
+};
+static const short yyrhs[] =
+{
+      35,     0,    36,     0,    35,     9,    36,     0,    24,    36,
+       0,    29,    36,     0,    23,    36,     0,    30,    36,     0,
+      31,     5,     0,     0,    31,     5,    37,    32,    38,    33,
+       0,    32,    35,    33,     0,    36,    25,    36,     0,    36,
+      26,    36,     0,    36,    27,    36,     0,    36,    23,    36,
+       0,    36,    24,    36,     0,    36,    21,    36,     0,    36,
+      22,    36,     0,    36,    15,    36,     0,    36,    16,    36,
+       0,    36,    19,    36,     0,    36,    20,    36,     0,    36,
+      17,    36,     0,    36,    18,    36,     0,    36,    14,    36,
+       0,    36,    13,    36,     0,    36,    12,    36,     0,    36,
+      11,    36,     0,    36,    10,    36,     0,    36,     7,    36,
+       8,    36,     0,     3,     0,     4,     0,     5,     0,     0,
+      32,    38,    33,    38,     0,     5,    38,     0
+};
+
+#endif
+
+#if YYDEBUG
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const short yyrline[] =
+{
+       0,   143,   148,   149,   156,   161,   164,   166,   169,   173,
+     173,   180,   185,   197,   212,   223,   230,   237,   243,   249,
+     252,   255,   261,   267,   273,   279,   282,   285,   288,   291,
+     294,   297,   299,   301,   306,   308,   321
+};
+#endif
+
+
+#if (YYDEBUG) || defined YYERROR_VERBOSE
+
+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
+static const char *const yytname[] =
+{
+  "$", "error", "$undefined.", "INT", "CHAR", "NAME", "ERROR", "'?'", "':'", 
+  "','", "OR", "AND", "'|'", "'^'", "'&'", "EQUAL", "NOTEQUAL", "'<'", 
+  "'>'", "LEQ", "GEQ", "LSH", "RSH", "'+'", "'-'", "'*'", "'/'", "'%'", 
+  "UNARY", "'!'", "'~'", "'#'", "'('", "')'", "start", "exp1", "exp", 
+  "@1", "keywords", NULL
+};
+#endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const short yyr1[] =
+{
+       0,    34,    35,    35,    36,    36,    36,    36,    36,    37,
+      36,    36,    36,    36,    36,    36,    36,    36,    36,    36,
+      36,    36,    36,    36,    36,    36,    36,    36,    36,    36,
+      36,    36,    36,    36,    38,    38,    38
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const short yyr2[] =
+{
+       0,     1,     1,     3,     2,     2,     2,     2,     2,     0,
+       6,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       5,     1,     1,     1,     0,     4,     2
+};
+
+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
+   doesn't specify something else to do.  Zero means the default is an
+   error. */
+static const short yydefact[] =
+{
+       0,    31,    32,    33,     0,     0,     0,     0,     0,     0,
+       1,     2,     6,     4,     5,     7,     8,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    11,
+       3,     0,    29,    28,    27,    26,    25,    19,    20,    23,
+      24,    21,    22,    17,    18,    15,    16,    12,    13,    14,
+      34,     0,    34,    34,     0,    30,    36,     0,    10,    34,
+      35,     0,     0,     0
+};
+
+static const short yydefgoto[] =
+{
+      71,    10,    11,    38,    64
+};
+
+static const short yypact[] =
+{
+      31,-32768,-32768,-32768,    31,    31,    31,    31,     4,    31,
+       3,    80,-32768,-32768,-32768,-32768,     6,    32,    31,    31,
+      31,    31,    31,    31,    31,    31,    31,    31,    31,    31,
+      31,    31,    31,    31,    31,    31,    31,    31,     7,-32768,
+      80,    59,    97,   113,   128,   142,   155,    25,    25,   162,
+     162,   162,   162,   167,   167,   -19,   -19,-32768,-32768,-32768,
+       5,    31,     5,     5,   -20,    80,-32768,    20,-32768,     5,
+  -32768,    40,    56,-32768
+};
+
+static const short yypgoto[] =
+{
+  -32768,    49,    -4,-32768,   -58
+};
+
+
+#define        YYLAST          194
+
+
+static const short yytable[] =
+{
+      12,    13,    14,    15,    66,    67,    35,    36,    37,    16,
+      62,    70,    18,    68,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,     1,     2,     3,    63,    -9,    60,
+      72,    18,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    69,     4,     5,    73,    65,    17,     0,
+       6,     7,     8,     9,     0,    39,    19,    61,     0,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    19,     0,     0,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    31,    32,    33,    34,    35,    36,    37,
+      33,    34,    35,    36,    37
+};
+
+static const short yycheck[] =
+{
+       4,     5,     6,     7,    62,    63,    25,    26,    27,     5,
+       5,    69,     9,    33,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,     3,     4,     5,    32,    32,    32,
+       0,     9,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    33,    23,    24,     0,    61,     9,    -1,
+      29,    30,    31,    32,    -1,    33,     7,     8,    -1,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,     7,    -1,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    21,    22,    23,    24,    25,    26,    27,
+      23,    24,    25,    26,    27
+};
+/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
+#line 3 "/usr/share/bison/bison.simple"
+
+/* Skeleton output parser for bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
+
+   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 2, 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* This is the parser code that is written into each bison parser when
+   the %semantic_parser declaration is not specified in the grammar.
+   It was written by Richard Stallman by simplifying the hairy parser
+   used when %semantic_parser is specified.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+#ifdef __cplusplus
+# define YYSTD(x) std::x
+#else
+# define YYSTD(x) x
+#endif
+
+#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# if YYSTACK_USE_ALLOCA
+#  define YYSTACK_ALLOC alloca
+#  define YYSIZE_T YYSTD (size_t)
+# else
+#  ifndef YYSTACK_USE_ALLOCA
+#   if defined (alloca) || defined (_ALLOCA_H)
+#    define YYSTACK_ALLOC alloca
+#    define YYSIZE_T YYSTD (size_t)
+#   else
+#    ifdef __GNUC__
+#     define YYSTACK_ALLOC __builtin_alloca
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  ifdef __cplusplus
+#   include <cstdlib> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T std::size_t
+#  else
+#   ifdef __STDC__
+#    include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#    define YYSIZE_T size_t
+#   endif
+#  endif
+#  define YYSTACK_ALLOC YYSTD (malloc)
+#  define YYSTACK_FREE YYSTD (free)
+# endif
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short yyss;
+  YYSTYPE yyvs;
+# if YYLSP_NEEDED
+  YYLTYPE yyls;
+# endif
+};
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# if YYLSP_NEEDED
+#  define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE))     \
+      + 2 * YYSTACK_GAP_MAX)
+# else
+#  define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short) + sizeof (YYSTYPE))                                
\
+      + YYSTACK_GAP_MAX)
+# endif
+
+/* Relocate the TYPE STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Type, Stack)                                 \
+    do                                                                 \
+      {                                                                        
\
+       YYSIZE_T yynewbytes;                                            \
+       yymemcpy ((char *) yyptr, (char *) (Stack),                     \
+                 yysize * (YYSIZE_T) sizeof (Type));                   \
+       Stack = &yyptr->Stack;                                          \
+       yynewbytes = yystacksize * sizeof (Type) + YYSTACK_GAP_MAX;     \
+       yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                        
\
+    while (0)
+
+#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
+
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# ifdef __cplusplus
+#  include <cstddef> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T std::size_t
+# else
+#  ifdef __STDC__
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
+#  endif
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                -2
+#define YYEOF          0
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT        goto yyabortlab
+#define YYERROR                goto yyerrlab1
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+#define YYFAIL         goto yyerrlab
+#define YYRECOVERING()  (!!yyerrstatus)
+#define YYBACKUP(Token, Value)                                 \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
+      yychar1 = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK;                                              \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    {                                                          \
+      yyerror ("syntax error: cannot back up");                        \
+      YYERROR;                                                 \
+    }                                                          \
+while (0)
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).
+
+   When YYLLOC_DEFAULT is run, CURRENT is set the location of the
+   first token.  By default, to implement support for ranges, extend
+   its range to the last symbol.  */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)               \
+   Current.last_line   = Rhs[N].last_line;     \
+   Current.last_column = Rhs[N].last_column;
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#if YYPURE
+# if YYLSP_NEEDED
+#  ifdef YYLEX_PARAM
+#   define YYLEX               yylex (&yylval, &yylloc, YYLEX_PARAM)
+#  else
+#   define YYLEX               yylex (&yylval, &yylloc)
+#  endif
+# else /* !YYLSP_NEEDED */
+#  ifdef YYLEX_PARAM
+#   define YYLEX               yylex (&yylval, YYLEX_PARAM)
+#  else
+#   define YYLEX               yylex (&yylval)
+#  endif
+# endif /* !YYLSP_NEEDED */
+#else /* !YYPURE */
+# define YYLEX                 yylex ()
+#endif /* !YYPURE */
+
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  ifdef __cplusplus
+#   include <cstdio>  /* INFRINGES ON USER NAME SPACE */
+#  else
+#   include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYFPRINTF YYSTD (fprintf)
+# endif
+
+# define YYDPRINTF(Args)                       \
+do {                                           \
+  if (yydebug)                                 \
+    YYFPRINTF Args;                            \
+} while (0)
+/* Nonzero means print parse trace. [The following comment makes no
+   sense to me.  Could someone clarify it?  --akim] Since this is
+   uninitialized, it does not stop multiple parsers from coexisting.
+   */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+#endif /* !YYDEBUG */
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef        YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#if YYMAXDEPTH == 0
+# undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+#if ! defined (yyoverflow) && ! defined (yymemcpy)
+# if __GNUC__ > 1              /* GNU C and GNU C++ define this.  */
+#  define yymemcpy __builtin_memcpy
+# else                         /* not GNU C or C++ */
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void
+#  if defined (__STDC__) || defined (__cplusplus)
+yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T yycount)
+#  else
+yymemcpy (yyto, yyfrom, yycount)
+     char *yyto;
+     const char *yyfrom;
+     YYSIZE_T yycount;
+#  endif
+{
+  register const char *yyf = yyfrom;
+  register char *yyt = yyto;
+  register YYSIZE_T yyi = yycount;
+
+  while (yyi-- != 0)
+    *yyt++ = *yyf++;
+}
+# endif
+#endif
+
+#ifdef YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  register const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  register char *yyd = yydest;
+  register const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+#endif
+
+#line 341 "/usr/share/bison/bison.simple"
+
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+   into yyparse.  The argument should have type void *.
+   It should actually point to an object.
+   Grammar actions can access the variable by casting it
+   to the proper pointer type.  */
+
+#ifdef YYPARSE_PARAM
+# ifdef __cplusplus
+#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL
+# else /* !__cplusplus */
+#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+# endif /* !__cplusplus */
+#else /* !YYPARSE_PARAM */
+# define YYPARSE_PARAM_ARG
+# define YYPARSE_PARAM_DECL
+#endif /* !YYPARSE_PARAM */
+
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+# ifdef YYPARSE_PARAM
+int yyparse (void *);
+# else
+int yyparse (void);
+# endif
+#endif
+
+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
+   variables are global, or local to YYPARSE.  */
+
+#define YY_DECL_NON_LSP_VARIABLES                      \
+/* The lookahead symbol.  */                           \
+int yychar;                                            \
+                                                       \
+/* The semantic value of the lookahead symbol. */      \
+YYSTYPE yylval;                                                \
+                                                       \
+/* Number of parse errors so far.  */                  \
+int yynerrs;
+
+#if YYLSP_NEEDED
+# define YY_DECL_VARIABLES                     \
+YY_DECL_NON_LSP_VARIABLES                      \
+                                               \
+/* Location data for the lookahead symbol.  */ \
+YYLTYPE yylloc;
+#else
+# define YY_DECL_VARIABLES                     \
+YY_DECL_NON_LSP_VARIABLES
+#endif
+
+
+/* If nonreentrant, generate the variables here. */
+
+#if !YYPURE
+YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
+int
+yyparse (YYPARSE_PARAM_ARG)
+     YYPARSE_PARAM_DECL
+{
+  /* If reentrant, generate the variables here. */
+#if YYPURE
+  YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
+  register int yystate;
+  register int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yychar1 = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack. */
+  short        yyssa[YYINITDEPTH];
+  short *yyss = yyssa;
+  register short *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  register YYSTYPE *yyvsp;
+
+#if YYLSP_NEEDED
+  /* The location stack.  */
+  YYLTYPE yylsa[YYINITDEPTH];
+  YYLTYPE *yyls = yylsa;
+  YYLTYPE *yylsp;
+#endif
+
+#if YYLSP_NEEDED
+# define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#else
+# define YYPOPSTACK   (yyvsp--, yyssp--)
+#endif
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+#if YYLSP_NEEDED
+  YYLTYPE yyloc;
+#endif
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule. */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+#if YYLSP_NEEDED
+  yylsp = yyls;
+#endif
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyssp >= yyss + yystacksize - 1)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+       /* Give user a chance to reallocate the stack. Use copies of
+          these so that the &'s don't force the real ones into
+          memory.  */
+       YYSTYPE *yyvs1 = yyvs;
+       short *yyss1 = yyss;
+
+       /* Each stack pointer address is followed by the size of the
+          data in use in that stack, in bytes.  */
+# if YYLSP_NEEDED
+       YYLTYPE *yyls1 = yyls;
+       /* This used to be a conditional around just the two extra args,
+          but that might be undefined if yyoverflow is a macro.  */
+       yyoverflow ("parser stack overflow",
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+                   &yyls1, yysize * sizeof (*yylsp),
+                   &yystacksize);
+       yyls = yyls1;
+# else
+       yyoverflow ("parser stack overflow",
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+                   &yystacksize);
+# endif
+       yyss = yyss1;
+       yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+      /* Extend the stack our own way.  */
+      if (yystacksize >= YYMAXDEPTH)
+       goto yyoverflowlab;
+      yystacksize *= 2;
+      if (yystacksize > YYMAXDEPTH)
+       yystacksize = YYMAXDEPTH;
+
+      {
+       short *yyss1 = yyss;
+       union yyalloc *yyptr =
+         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+       if (! yyptr)
+         goto yyoverflowlab;
+       YYSTACK_RELOCATE (short, yyss);
+       YYSTACK_RELOCATE (YYSTYPE, yyvs);
+# if YYLSP_NEEDED
+       YYSTACK_RELOCATE (YYLTYPE, yyls);
+# endif
+# undef YYSTACK_RELOCATE
+       if (yyss1 != yyssa)
+         YYSTACK_FREE (yyss1);
+      }
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+#if YYLSP_NEEDED
+      yylsp = yyls + yysize - 1;
+#endif
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+                 (unsigned long int) yystacksize));
+
+      if (yyssp >= yyss + yystacksize - 1)
+       YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a lookahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to lookahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yydefault;
+
+  /* Not known => get a lookahead token if don't already have one.  */
+
+  /* yychar is either YYEMPTY or YYEOF
+     or a valid token in external form.  */
+
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  /* Convert token to internal form (in yychar1) for indexing tables with */
+
+  if (yychar <= 0)             /* This means end of input. */
+    {
+      yychar1 = 0;
+      yychar = YYEOF;          /* Don't call YYLEX any more */
+
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yychar1 = YYTRANSLATE (yychar);
+
+#if YYDEBUG
+     /* We have to keep this `#if YYDEBUG', since we use variables
+       which are defined only if `YYDEBUG' is set.  */
+      if (yydebug)
+       {
+         YYFPRINTF (stderr, "Next token is %d (%s",
+                    yychar, yytname[yychar1]);
+         /* Give the individual parser a way to print the precise
+            meaning of a token, for further debugging info.  */
+# ifdef YYPRINT
+         YYPRINT (stderr, yychar, yylval);
+# endif
+         YYFPRINTF (stderr, ")\n");
+       }
+#endif
+    }
+
+  yyn += yychar1;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+    goto yydefault;
+
+  yyn = yytable[yyn];
+
+  /* yyn is what to do for this token type in this state.
+     Negative => reduce, -yyn is rule number.
+     Positive => shift, yyn is new state.
+       New state is final state => don't bother to shift,
+       just return success.
+     0, or most negative number => error.  */
+
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+       goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrlab;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the lookahead token.  */
+  YYDPRINTF ((stderr, "Shifting token %d (%s), ",
+             yychar, yytname[yychar1]));
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+#if YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to the semantic value of
+     the lookahead token.  This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+#if YYLSP_NEEDED
+  /* Similarly for the default location.  Let the user run additional
+     commands if for instance locations are ranges.  */
+  yyloc = yylsp[1-yylen];
+  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+#endif
+
+#if YYDEBUG
+  /* We have to keep this `#if YYDEBUG', since we use variables which
+     are defined only if `YYDEBUG' is set.  */
+  if (yydebug)
+    {
+      int yyi;
+
+      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
+                yyn, yyrline[yyn]);
+
+      /* Print the symbols being reduced, and their result.  */
+      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
+       YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+    }
+#endif
+
+  switch (yyn) {
+
+case 1:
+#line 144 "cccp.y"
+{ expression_value = yyvsp[0].integer.value; }
+    break;
+case 3:
+#line 150 "cccp.y"
+{ if (pedantic)
+                           pedwarn ("comma operator in operand of `#if'");
+                         yyval.integer = yyvsp[0].integer; }
+    break;
+case 4:
+#line 157 "cccp.y"
+{ yyval.integer.value = - yyvsp[0].integer.value;
+                         if ((yyval.integer.value & yyvsp[0].integer.value) < 
0 && ! yyvsp[0].integer.unsignedp)
+                           integer_overflow ();
+                         yyval.integer.unsignedp = yyvsp[0].integer.unsignedp; 
}
+    break;
+case 5:
+#line 162 "cccp.y"
+{ yyval.integer.value = ! yyvsp[0].integer.value;
+                         yyval.integer.unsignedp = 0; }
+    break;
+case 6:
+#line 165 "cccp.y"
+{ yyval.integer = yyvsp[0].integer; }
+    break;
+case 7:
+#line 167 "cccp.y"
+{ yyval.integer.value = ~ yyvsp[0].integer.value;
+                         yyval.integer.unsignedp = yyvsp[0].integer.unsignedp; 
}
+    break;
+case 8:
+#line 170 "cccp.y"
+{ yyval.integer.value = check_assertion (yyvsp[0].name.address, 
yyvsp[0].name.length,
+                                                     0, NULL_PTR);
+                         yyval.integer.unsignedp = 0; }
+    break;
+case 9:
+#line 174 "cccp.y"
+{ keyword_parsing = 1; }
+    break;
+case 10:
+#line 176 "cccp.y"
+{ yyval.integer.value = check_assertion (yyvsp[-4].name.address, 
yyvsp[-4].name.length,
+                                                     1, yyvsp[-1].keywords);
+                         keyword_parsing = 0;
+                         yyval.integer.unsignedp = 0; }
+    break;
+case 11:
+#line 181 "cccp.y"
+{ yyval.integer = yyvsp[-1].integer; }
+    break;
+case 12:
+#line 186 "cccp.y"
+{ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp || 
yyvsp[0].integer.unsignedp;
+                         if (yyval.integer.unsignedp)
+                           yyval.integer.value = (unsigned long) 
yyvsp[-2].integer.value * yyvsp[0].integer.value;
+                         else
+                           {
+                             yyval.integer.value = yyvsp[-2].integer.value * 
yyvsp[0].integer.value;
+                             if (yyvsp[-2].integer.value
+                                 && (yyval.integer.value / 
yyvsp[-2].integer.value != yyvsp[0].integer.value
+                                     || (yyval.integer.value & 
yyvsp[-2].integer.value & yyvsp[0].integer.value) < 0))
+                               integer_overflow ();
+                           } }
+    break;
+case 13:
+#line 198 "cccp.y"
+{ if (yyvsp[0].integer.value == 0)
+                           {
+                             error ("division by zero in #if");
+                             yyvsp[0].integer.value = 1;
+                           }
+                         yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp 
|| yyvsp[0].integer.unsignedp;
+                         if (yyval.integer.unsignedp)
+                           yyval.integer.value = (unsigned long) 
yyvsp[-2].integer.value / yyvsp[0].integer.value;
+                         else
+                           {
+                             yyval.integer.value = yyvsp[-2].integer.value / 
yyvsp[0].integer.value;
+                             if ((yyval.integer.value & 
yyvsp[-2].integer.value & yyvsp[0].integer.value) < 0)
+                               integer_overflow ();
+                           } }
+    break;
+case 14:
+#line 213 "cccp.y"
+{ if (yyvsp[0].integer.value == 0)
+                           {
+                             error ("division by zero in #if");
+                             yyvsp[0].integer.value = 1;
+                           }
+                         yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp 
|| yyvsp[0].integer.unsignedp;
+                         if (yyval.integer.unsignedp)
+                           yyval.integer.value = (unsigned long) 
yyvsp[-2].integer.value % yyvsp[0].integer.value;
+                         else
+                           yyval.integer.value = yyvsp[-2].integer.value % 
yyvsp[0].integer.value; }
+    break;
+case 15:
+#line 224 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value + yyvsp[0].integer.value;
+                         yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp 
|| yyvsp[0].integer.unsignedp;
+                         if (! yyval.integer.unsignedp
+                             && ! possible_sum_sign (yyvsp[-2].integer.value, 
yyvsp[0].integer.value,
+                                                     yyval.integer.value))
+                           integer_overflow (); }
+    break;
+case 16:
+#line 231 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value - yyvsp[0].integer.value;
+                         yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp 
|| yyvsp[0].integer.unsignedp;
+                         if (! yyval.integer.unsignedp
+                             && ! possible_sum_sign (yyval.integer.value, 
yyvsp[0].integer.value,
+                                                     yyvsp[-2].integer.value))
+                           integer_overflow (); }
+    break;
+case 17:
+#line 238 "cccp.y"
+{ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp;
+                         if (yyvsp[0].integer.value < 0 && ! 
yyvsp[0].integer.unsignedp)
+                           yyval.integer.value = right_shift 
(&yyvsp[-2].integer, -yyvsp[0].integer.value);
+                         else
+                           yyval.integer.value = left_shift 
(&yyvsp[-2].integer, yyvsp[0].integer.value); }
+    break;
+case 18:
+#line 244 "cccp.y"
+{ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp;
+                         if (yyvsp[0].integer.value < 0 && ! 
yyvsp[0].integer.unsignedp)
+                           yyval.integer.value = left_shift 
(&yyvsp[-2].integer, -yyvsp[0].integer.value);
+                         else
+                           yyval.integer.value = right_shift 
(&yyvsp[-2].integer, yyvsp[0].integer.value); }
+    break;
+case 19:
+#line 250 "cccp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value == yyvsp[0].integer.value);
+                         yyval.integer.unsignedp = 0; }
+    break;
+case 20:
+#line 253 "cccp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value != yyvsp[0].integer.value);
+                         yyval.integer.unsignedp = 0; }
+    break;
+case 21:
+#line 256 "cccp.y"
+{ yyval.integer.unsignedp = 0;
+                         if (yyvsp[-2].integer.unsignedp || 
yyvsp[0].integer.unsignedp)
+                           yyval.integer.value = (unsigned long) 
yyvsp[-2].integer.value <= yyvsp[0].integer.value;
+                         else
+                           yyval.integer.value = yyvsp[-2].integer.value <= 
yyvsp[0].integer.value; }
+    break;
+case 22:
+#line 262 "cccp.y"
+{ yyval.integer.unsignedp = 0;
+                         if (yyvsp[-2].integer.unsignedp || 
yyvsp[0].integer.unsignedp)
+                           yyval.integer.value = (unsigned long) 
yyvsp[-2].integer.value >= yyvsp[0].integer.value;
+                         else
+                           yyval.integer.value = yyvsp[-2].integer.value >= 
yyvsp[0].integer.value; }
+    break;
+case 23:
+#line 268 "cccp.y"
+{ yyval.integer.unsignedp = 0;
+                         if (yyvsp[-2].integer.unsignedp || 
yyvsp[0].integer.unsignedp)
+                           yyval.integer.value = (unsigned long) 
yyvsp[-2].integer.value < yyvsp[0].integer.value;
+                         else
+                           yyval.integer.value = yyvsp[-2].integer.value < 
yyvsp[0].integer.value; }
+    break;
+case 24:
+#line 274 "cccp.y"
+{ yyval.integer.unsignedp = 0;
+                         if (yyvsp[-2].integer.unsignedp || 
yyvsp[0].integer.unsignedp)
+                           yyval.integer.value = (unsigned long) 
yyvsp[-2].integer.value > yyvsp[0].integer.value;
+                         else
+                           yyval.integer.value = yyvsp[-2].integer.value > 
yyvsp[0].integer.value; }
+    break;
+case 25:
+#line 280 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value & yyvsp[0].integer.value;
+                         yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp 
|| yyvsp[0].integer.unsignedp; }
+    break;
+case 26:
+#line 283 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value ^ yyvsp[0].integer.value;
+                         yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp 
|| yyvsp[0].integer.unsignedp; }
+    break;
+case 27:
+#line 286 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value | yyvsp[0].integer.value;
+                         yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp 
|| yyvsp[0].integer.unsignedp; }
+    break;
+case 28:
+#line 289 "cccp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value && yyvsp[0].integer.value);
+                         yyval.integer.unsignedp = 0; }
+    break;
+case 29:
+#line 292 "cccp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value || yyvsp[0].integer.value);
+                         yyval.integer.unsignedp = 0; }
+    break;
+case 30:
+#line 295 "cccp.y"
+{ yyval.integer.value = yyvsp[-4].integer.value ? yyvsp[-2].integer.value : 
yyvsp[0].integer.value;
+                         yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp 
|| yyvsp[0].integer.unsignedp; }
+    break;
+case 31:
+#line 298 "cccp.y"
+{ yyval.integer = yylval.integer; }
+    break;
+case 32:
+#line 300 "cccp.y"
+{ yyval.integer = yylval.integer; }
+    break;
+case 33:
+#line 302 "cccp.y"
+{ yyval.integer.value = 0;
+                         yyval.integer.unsignedp = 0; }
+    break;
+case 34:
+#line 307 "cccp.y"
+{ yyval.keywords = 0; }
+    break;
+case 35:
+#line 309 "cccp.y"
+{ struct arglist *temp;
+                         yyval.keywords = (struct arglist *) xmalloc (sizeof 
(struct arglist));
+                         yyval.keywords->next = yyvsp[-2].keywords;
+                         yyval.keywords->name = (U_CHAR *) "(";
+                         yyval.keywords->length = 1;
+                         temp = yyval.keywords;
+                         while (temp != 0 && temp->next != 0)
+                           temp = temp->next;
+                         temp->next = (struct arglist *) xmalloc (sizeof 
(struct arglist));
+                         temp->next->next = yyvsp[0].keywords;
+                         temp->next->name = (U_CHAR *) ")";
+                         temp->next->length = 1; }
+    break;
+case 36:
+#line 322 "cccp.y"
+{ yyval.keywords = (struct arglist *) xmalloc (sizeof (struct arglist));
+                         yyval.keywords->name = yyvsp[-1].name.address;
+                         yyval.keywords->length = yyvsp[-1].name.length;
+                         yyval.keywords->next = yyvsp[0].keywords; }
+    break;
+}
+
+#line 727 "/usr/share/bison/bison.simple"
+
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+#if YYLSP_NEEDED
+  yylsp -= yylen;
+#endif
+
+#if YYDEBUG
+  if (yydebug)
+    {
+      short *yyssp1 = yyss - 1;
+      YYFPRINTF (stderr, "state stack now");
+      while (yyssp1 != yyssp)
+       YYFPRINTF (stderr, " %d", *++yyssp1);
+      YYFPRINTF (stderr, "\n");
+    }
+#endif
+
+  *++yyvsp = yyval;
+#if YYLSP_NEEDED
+  *++yylsp = yyloc;
+#endif
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTBASE];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (yyn > YYFLAG && yyn < YYLAST)
+       {
+         YYSIZE_T yysize = 0;
+         char *yymsg;
+         int yyx, yycount;
+
+         yycount = 0;
+         /* Start YYX at -YYN if negative to avoid negative indexes in
+            YYCHECK.  */
+         for (yyx = yyn < 0 ? -yyn : 0;
+              yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+           if (yycheck[yyx + yyn] == yyx)
+             yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+         yysize += yystrlen ("parse error, unexpected ") + 1;
+         yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
+         yymsg = (char *) YYSTACK_ALLOC (yysize);
+         if (yymsg != 0)
+           {
+             char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
+             yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
+
+             if (yycount < 5)
+               {
+                 yycount = 0;
+                 for (yyx = yyn < 0 ? -yyn : 0;
+                      yyx < (int) (sizeof (yytname) / sizeof (char *));
+                      yyx++)
+                   if (yycheck[yyx + yyn] == yyx)
+                     {
+                       const char *yyq = ! yycount ? ", expecting " : " or ";
+                       yyp = yystpcpy (yyp, yyq);
+                       yyp = yystpcpy (yyp, yytname[yyx]);
+                       yycount++;
+                     }
+               }
+             yyerror (yymsg);
+             YYSTACK_FREE (yymsg);
+           }
+         else
+           yyerror ("parse error; also virtual memory exhausted");
+       }
+      else
+#endif /* defined (YYERROR_VERBOSE) */
+       yyerror ("parse error");
+    }
+  goto yyerrlab1;
+
+
+/*--------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action |
+`--------------------------------------------------*/
+yyerrlab1:
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse lookahead token after an
+        error, discard it.  */
+
+      /* return failure if at end of input */
+      if (yychar == YYEOF)
+       YYABORT;
+      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
+                 yychar, yytname[yychar1]));
+      yychar = YYEMPTY;
+    }
+
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
+
+  yyerrstatus = 3;             /* Each real token shifted decrements this */
+
+  goto yyerrhandle;
+
+
+/*-------------------------------------------------------------------.
+| yyerrdefault -- current state does not do anything special for the |
+| error token.                                                       |
+`-------------------------------------------------------------------*/
+yyerrdefault:
+#if 0
+  /* This is wrong; only states that explicitly want error tokens
+     should shift them.  */
+
+  /* If its default is to accept any token, ok.  Otherwise pop it.  */
+  yyn = yydefact[yystate];
+  if (yyn)
+    goto yydefault;
+#endif
+
+
+/*---------------------------------------------------------------.
+| yyerrpop -- pop the current state because it cannot handle the |
+| error token                                                    |
+`---------------------------------------------------------------*/
+yyerrpop:
+  if (yyssp == yyss)
+    YYABORT;
+  yyvsp--;
+  yystate = *--yyssp;
+#if YYLSP_NEEDED
+  yylsp--;
+#endif
+
+#if YYDEBUG
+  if (yydebug)
+    {
+      short *yyssp1 = yyss - 1;
+      YYFPRINTF (stderr, "Error: state stack now");
+      while (yyssp1 != yyssp)
+       YYFPRINTF (stderr, " %d", *++yyssp1);
+      YYFPRINTF (stderr, "\n");
+    }
+#endif
+
+/*--------------.
+| yyerrhandle.  |
+`--------------*/
+yyerrhandle:
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yyerrdefault;
+
+  yyn += YYTERROR;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+    goto yyerrdefault;
+
+  yyn = yytable[yyn];
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+       goto yyerrpop;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrpop;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  YYDPRINTF ((stderr, "Shifting error token, "));
+
+  *++yyvsp = yylval;
+#if YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+/*---------------------------------------------.
+| yyoverflowab -- parser overflow comes here.  |
+`---------------------------------------------*/
+yyoverflowlab:
+  yyerror ("parser stack overflow");
+  yyresult = 2;
+  /* Fall through.  */
+
+yyreturn:
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+#line 327 "cccp.y"
+
+
+/* During parsing of a C expression, the pointer to the next character
+   is in this variable.  */
+
+static char *lexptr;
+
+/* Take care of parsing a number (anything that starts with a digit).
+   Set yylval and return the token type; update lexptr.
+   LEN is the number of characters in it.  */
+
+/* maybe needs to actually deal with floating point numbers */
+
+int
+parse_number (olen)
+     int olen;
+{
+  register char *p = lexptr;
+  register int c;
+  register unsigned long n = 0, nd, ULONG_MAX_over_base;
+  register int base = 10;
+  register int len = olen;
+  register int overflow = 0;
+  register int digit, largest_digit = 0;
+  int spec_long = 0;
+
+  for (c = 0; c < len; c++)
+    if (p[c] == '.') {
+      /* It's a float since it contains a point.  */
+      yyerror ("floating point numbers not allowed in #if expressions");
+      return ERROR;
+    }
+
+  yylval.integer.unsignedp = 0;
+
+  if (len >= 3 && (!strncmp (p, "0x", 2) || !strncmp (p, "0X", 2))) {
+    p += 2;
+    base = 16;
+    len -= 2;
+  }
+  else if (*p == '0')
+    base = 8;
+
+  ULONG_MAX_over_base = (unsigned long) -1 / base;
+
+  for (; len > 0; len--) {
+    c = *p++;
+
+    if (c >= '0' && c <= '9')
+      digit = c - '0';
+    else if (base == 16 && c >= 'a' && c <= 'f')
+      digit = c - 'a' + 10;
+    else if (base == 16 && c >= 'A' && c <= 'F')
+      digit = c - 'A' + 10;
+    else {
+      /* `l' means long, and `u' means unsigned.  */
+      while (1) {
+       if (c == 'l' || c == 'L')
+         {
+           if (spec_long)
+             yyerror ("two `l's in integer constant");
+           spec_long = 1;
+         }
+       else if (c == 'u' || c == 'U')
+         {
+           if (yylval.integer.unsignedp)
+             yyerror ("two `u's in integer constant");
+           yylval.integer.unsignedp = 1;
+         }
+       else
+         break;
+
+       if (--len == 0)
+         break;
+       c = *p++;
+      }
+      /* Don't look for any more digits after the suffixes.  */
+      break;
+    }
+    if (largest_digit < digit)
+      largest_digit = digit;
+    nd = n * base + digit;
+    overflow |= ULONG_MAX_over_base < n | nd < n;
+    n = nd;
+  }
+
+  if (len != 0) {
+    yyerror ("Invalid number in #if expression");
+    return ERROR;
+  }
+
+  if (base <= largest_digit)
+    warning ("integer constant contains digits beyond the radix");
+
+  if (overflow)
+    warning ("integer constant out of range");
+
+  /* If too big to be signed, consider it unsigned.  */
+  if ((long) n < 0 && ! yylval.integer.unsignedp)
+    {
+      if (base == 10)
+       warning ("integer constant is so large that it is unsigned");
+      yylval.integer.unsignedp = 1;
+    }
+
+  lexptr = p;
+  yylval.integer.value = n;
+  return INT;
+}
+
+struct token {
+  char *operator;
+  int token;
+};
+
+static struct token tokentab2[] = {
+  {"&&", AND},
+  {"||", OR},
+  {"<<", LSH},
+  {">>", RSH},
+  {"==", EQUAL},
+  {"!=", NOTEQUAL},
+  {"<=", LEQ},
+  {">=", GEQ},
+  {"++", ERROR},
+  {"--", ERROR},
+  {NULL, ERROR}
+};
+
+/* Read one token, getting characters through lexptr.  */
+
+int
+yylex ()
+{
+  register int c;
+  register int namelen;
+  register unsigned char *tokstart;
+  register struct token *toktab;
+  int wide_flag;
+
+ retry:
+
+  tokstart = (unsigned char *) lexptr;
+  c = *tokstart;
+  /* See if it is a special token of length 2.  */
+  if (! keyword_parsing)
+    for (toktab = tokentab2; toktab->operator != NULL; toktab++)
+      if (c == *toktab->operator && tokstart[1] == toktab->operator[1]) {
+       lexptr += 2;
+       if (toktab->token == ERROR)
+         {
+           char *buf = (char *) alloca (40);
+           sprintf (buf, "`%s' not allowed in operand of `#if'", 
toktab->operator);
+           yyerror (buf);
+         }
+       return toktab->token;
+      }
+
+  switch (c) {
+  case 0:
+    return 0;
+    
+  case ' ':
+  case '\t':
+  case '\r':
+  case '\n':
+    lexptr++;
+    goto retry;
+    
+  case 'L':
+    /* Capital L may start a wide-string or wide-character constant.  */
+    if (lexptr[1] == '\'')
+      {
+       lexptr++;
+       wide_flag = 1;
+       goto char_constant;
+      }
+    if (lexptr[1] == '"')
+      {
+       lexptr++;
+       wide_flag = 1;
+       goto string_constant;
+      }
+    break;
+
+  case '\'':
+    wide_flag = 0;
+  char_constant:
+    lexptr++;
+    if (keyword_parsing) {
+      char *start_ptr = lexptr - 1;
+      while (1) {
+       c = *lexptr++;
+       if (c == '\\')
+         c = parse_escape (&lexptr);
+       else if (c == '\'')
+         break;
+      }
+      yylval.name.address = tokstart;
+      yylval.name.length = lexptr - start_ptr;
+      return NAME;
+    }
+
+    /* This code for reading a character constant
+       handles multicharacter constants and wide characters.
+       It is mostly copied from c-lex.c.  */
+    {
+      register int result = 0;
+      register num_chars = 0;
+      unsigned width = CHAR_TYPE_SIZE;
+      int max_chars;
+      char *token_buffer;
+
+      if (wide_flag)
+       {
+         width = WCHAR_TYPE_SIZE;
+#ifdef MULTIBYTE_CHARS
+         max_chars = MB_CUR_MAX;
+#else
+         max_chars = 1;
+#endif
+       }
+      else
+       max_chars = LONG_TYPE_SIZE / width;
+
+      token_buffer = (char *) alloca (max_chars + 1);
+
+      while (1)
+       {
+         c = *lexptr++;
+
+         if (c == '\'' || c == EOF)
+           break;
+
+         if (c == '\\')
+           {
+             c = parse_escape (&lexptr);
+             if (width < HOST_BITS_PER_INT
+                 && (unsigned) c >= (1 << width))
+               pedwarn ("escape sequence out of range for character");
+           }
+
+         num_chars++;
+
+         /* Merge character into result; ignore excess chars.  */
+         if (num_chars < max_chars + 1)
+           {
+             if (width < HOST_BITS_PER_INT)
+               result = (result << width) | (c & ((1 << width) - 1));
+             else
+               result = c;
+             token_buffer[num_chars - 1] = c;
+           }
+       }
+
+      token_buffer[num_chars] = 0;
+
+      if (c != '\'')
+       error ("malformatted character constant");
+      else if (num_chars == 0)
+       error ("empty character constant");
+      else if (num_chars > max_chars)
+       {
+         num_chars = max_chars;
+         error ("character constant too long");
+       }
+      else if (num_chars != 1 && ! traditional)
+       warning ("multi-character character constant");
+
+      /* If char type is signed, sign-extend the constant.  */
+      if (! wide_flag)
+       {
+         int num_bits = num_chars * width;
+
+         if (lookup ("__CHAR_UNSIGNED__", sizeof ("__CHAR_UNSIGNED__")-1, -1)
+             || ((result >> (num_bits - 1)) & 1) == 0)
+           yylval.integer.value
+             = result & ((unsigned long) ~0 >> (HOST_BITS_PER_LONG - 
num_bits));
+         else
+           yylval.integer.value
+             = result | ~((unsigned long) ~0 >> (HOST_BITS_PER_LONG - 
num_bits));
+       }
+      else
+       {
+#ifdef MULTIBYTE_CHARS
+         /* Set the initial shift state and convert the next sequence.  */
+         result = 0;
+         /* In all locales L'\0' is zero and mbtowc will return zero,
+            so don't use it.  */
+         if (num_chars > 1
+             || (num_chars == 1 && token_buffer[0] != '\0'))
+           {
+             wchar_t wc;
+             (void) mbtowc (NULL_PTR, NULL_PTR, 0);
+             if (mbtowc (& wc, token_buffer, num_chars) == num_chars)
+               result = wc;
+             else
+               warning ("Ignoring invalid multibyte character");
+           }
+#endif
+         yylval.integer.value = result;
+       }
+    }
+
+    /* This is always a signed type.  */
+    yylval.integer.unsignedp = 0;
+    
+    return CHAR;
+
+    /* some of these chars are invalid in constant expressions;
+       maybe do something about them later */
+  case '/':
+  case '+':
+  case '-':
+  case '*':
+  case '%':
+  case '|':
+  case '&':
+  case '^':
+  case '~':
+  case '!':
+  case '@':
+  case '<':
+  case '>':
+  case '[':
+  case ']':
+  case '.':
+  case '?':
+  case ':':
+  case '=':
+  case '{':
+  case '}':
+  case ',':
+  case '#':
+    if (keyword_parsing)
+      break;
+  case '(':
+  case ')':
+    lexptr++;
+    return c;
+
+  case '"':
+  string_constant:
+    if (keyword_parsing) {
+      char *start_ptr = lexptr;
+      lexptr++;
+      while (1) {
+       c = *lexptr++;
+       if (c == '\\')
+         c = parse_escape (&lexptr);
+       else if (c == '"')
+         break;
+      }
+      yylval.name.address = tokstart;
+      yylval.name.length = lexptr - start_ptr;
+      return NAME;
+    }
+    yyerror ("string constants not allowed in #if expressions");
+    return ERROR;
+  }
+
+  if (c >= '0' && c <= '9' && !keyword_parsing) {
+    /* It's a number */
+    for (namelen = 0;
+        c = tokstart[namelen], is_idchar[c] || c == '.'; 
+        namelen++)
+      ;
+    return parse_number (namelen);
+  }
+
+  /* It is a name.  See how long it is.  */
+
+  if (keyword_parsing) {
+    for (namelen = 0;; namelen++) {
+      if (is_hor_space[tokstart[namelen]])
+       break;
+      if (tokstart[namelen] == '(' || tokstart[namelen] == ')')
+       break;
+      if (tokstart[namelen] == '"' || tokstart[namelen] == '\'')
+       break;
+    }
+  } else {
+    if (!is_idstart[c]) {
+      yyerror ("Invalid token in expression");
+      return ERROR;
+    }
+
+    for (namelen = 0; is_idchar[tokstart[namelen]]; namelen++)
+      ;
+  }
+  
+  lexptr += namelen;
+  yylval.name.address = tokstart;
+  yylval.name.length = namelen;
+  return NAME;
+}
+
+
+/* Parse a C escape sequence.  STRING_PTR points to a variable
+   containing a pointer to the string to parse.  That pointer
+   is updated past the characters we use.  The value of the
+   escape sequence is returned.
+
+   A negative value means the sequence \ newline was seen,
+   which is supposed to be equivalent to nothing at all.
+
+   If \ is followed by a null character, we return a negative
+   value and leave the string pointer pointing at the null character.
+
+   If \ is followed by 000, we return 0 and leave the string pointer
+   after the zeros.  A value of 0 does not mean end of string.  */
+
+int
+parse_escape (string_ptr)
+     char **string_ptr;
+{
+  register int c = *(*string_ptr)++;
+  switch (c)
+    {
+    case 'a':
+      return TARGET_BELL;
+    case 'b':
+      return TARGET_BS;
+    case 'e':
+    case 'E':
+      if (pedantic)
+       pedwarn ("non-ANSI-standard escape sequence, `\\%c'", c);
+      return 033;
+    case 'f':
+      return TARGET_FF;
+    case 'n':
+      return TARGET_NEWLINE;
+    case 'r':
+      return TARGET_CR;
+    case 't':
+      return TARGET_TAB;
+    case 'v':
+      return TARGET_VT;
+    case '\n':
+      return -2;
+    case 0:
+      (*string_ptr)--;
+      return 0;
+      
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+      {
+       register int i = c - '0';
+       register int count = 0;
+       while (++count < 3)
+         {
+           c = *(*string_ptr)++;
+           if (c >= '0' && c <= '7')
+             i = (i << 3) + c - '0';
+           else
+             {
+               (*string_ptr)--;
+               break;
+             }
+         }
+       if ((i & ~((1 << CHAR_TYPE_SIZE) - 1)) != 0)
+         {
+           i &= (1 << CHAR_TYPE_SIZE) - 1;
+           warning ("octal character constant does not fit in a byte");
+         }
+       return i;
+      }
+    case 'x':
+      {
+       register unsigned i = 0, overflow = 0, digits_found = 0, digit;
+       for (;;)
+         {
+           c = *(*string_ptr)++;
+           if (c >= '0' && c <= '9')
+             digit = c - '0';
+           else if (c >= 'a' && c <= 'f')
+             digit = c - 'a' + 10;
+           else if (c >= 'A' && c <= 'F')
+             digit = c - 'A' + 10;
+           else
+             {
+               (*string_ptr)--;
+               break;
+             }
+           overflow |= i ^ (i << 4 >> 4);
+           i = (i << 4) + digit;
+           digits_found = 1;
+         }
+       if (!digits_found)
+         yyerror ("\\x used with no following hex digits");
+       if (overflow | (i & ~((1 << BITS_PER_UNIT) - 1)))
+         {
+           i &= (1 << BITS_PER_UNIT) - 1;
+           warning ("hex character constant does not fit in a byte");
+         }
+       return i;
+      }
+    default:
+      return c;
+    }
+}
+
+void
+yyerror (s)
+     char *s;
+{
+  error (s);
+  longjmp (parse_return_error, 1);
+}
+
+static void
+integer_overflow ()
+{
+  if (pedantic)
+    pedwarn ("integer overflow in preprocessor expression");
+}
+
+static long
+left_shift (a, b)
+     struct constant *a;
+     unsigned long b;
+{
+  if (b >= HOST_BITS_PER_LONG)
+    {
+      if (! a->unsignedp && a->value != 0)
+       integer_overflow ();
+      return 0;
+    }
+  else if (a->unsignedp)
+    return (unsigned long) a->value << b;
+  else
+    {
+      long l = a->value << b;
+      if (l >> b != a->value)
+       integer_overflow ();
+      return l;
+    }
+}
+
+static long
+right_shift (a, b)
+     struct constant *a;
+     unsigned long b;
+{
+  if (b >= HOST_BITS_PER_LONG)
+    return a->unsignedp ? 0 : a->value >> (HOST_BITS_PER_LONG - 1);
+  else if (a->unsignedp)
+    return (unsigned long) a->value >> b;
+  else
+    return a->value >> b;
+}
+
+/* This page contains the entry point to this file.  */
+
+/* Parse STRING as an expression, and complain if this fails
+   to use up all of the contents of STRING.  */
+/* We do not support C comments.  They should be removed before
+   this function is called.  */
+
+int
+parse_c_expression (string)
+     char *string;
+{
+  lexptr = string;
+  
+  if (lexptr == 0 || *lexptr == 0) {
+    error ("empty #if expression");
+    return 0;                  /* don't include the #if group */
+  }
+
+  /* if there is some sort of scanning error, just return 0 and assume
+     the parsing routine has printed an error message somewhere.
+     there is surely a better thing to do than this.     */
+  if (setjmp (parse_return_error))
+    return 0;
+
+  if (yyparse ())
+    return 0;                  /* actually this is never reached
+                                  the way things stand. */
+  if (*lexptr)
+    error ("Junk after end of expression.");
+
+  return expression_value;     /* set by yyparse () */
+}
+
+#ifdef TEST_EXP_READER
+extern int yydebug;
+
+/* Main program for testing purposes.  */
+int
+main ()
+{
+  int n, c;
+  char buf[1024];
+
+/*
+  yydebug = 1;
+*/
+  initialize_random_junk ();
+
+  for (;;) {
+    printf ("enter expression: ");
+    n = 0;
+    while ((buf[n] = getchar ()) != '\n' && buf[n] != EOF)
+      n++;
+    if (buf[n] == EOF)
+      break;
+    buf[n] = '\0';
+    printf ("parser returned %d\n", parse_c_expression (buf));
+  }
+
+  return 0;
+}
+
+/* table to tell if char can be part of a C identifier. */
+unsigned char is_idchar[256];
+/* table to tell if char can be first char of a c identifier. */
+unsigned char is_idstart[256];
+/* table to tell if c is horizontal space.  isspace () thinks that
+   newline is space; this is not a good idea for this program. */
+char is_hor_space[256];
+
+/*
+ * initialize random junk in the hash table and maybe other places
+ */
+initialize_random_junk ()
+{
+  register int i;
+
+  /*
+   * Set up is_idchar and is_idstart tables.  These should be
+   * faster than saying (is_alpha (c) || c == '_'), etc.
+   * Must do set up these things before calling any routines tthat
+   * refer to them.
+   */
+  for (i = 'a'; i <= 'z'; i++) {
+    ++is_idchar[i - 'a' + 'A'];
+    ++is_idchar[i];
+    ++is_idstart[i - 'a' + 'A'];
+    ++is_idstart[i];
+  }
+  for (i = '0'; i <= '9'; i++)
+    ++is_idchar[i];
+  ++is_idchar['_'];
+  ++is_idstart['_'];
+#if DOLLARS_IN_IDENTIFIERS
+  ++is_idchar['$'];
+  ++is_idstart['$'];
+#endif
+
+  /* horizontal space table */
+  ++is_hor_space[' '];
+  ++is_hor_space['\t'];
+}
+
+error (msg)
+{
+  printf ("error: %s\n", msg);
+}
+
+warning (msg)
+{
+  printf ("warning: %s\n", msg);
+}
+
+struct hashnode *
+lookup (name, len, hash)
+     char *name;
+     int len;
+     int hash;
+{
+  return (DEFAULT_SIGNED_CHAR) ? 0 : ((struct hashnode *) -1);
+}
+#endif
diff --git a/test/etags/y-src/cccp.y b/test/etags/y-src/cccp.y
new file mode 100644
index 0000000..1cd2111
--- /dev/null
+++ b/test/etags/y-src/cccp.y
@@ -0,0 +1,1006 @@
+/* Parse C expressions for CCCP.
+   Copyright (C) 1987, 1992 Free Software Foundation.
+
+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 2, 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, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ In other words, you are welcome to use, share and improve this program.
+ You are forbidden to forbid anyone else to use, share and improve
+ what you give them.   Help stamp out software-hoarding!
+
+ Adapted from expread.y of GDB by Paul Rubin, July 1986.  */
+
+/* Parse a C expression from text in a string  */
+   
+%{
+#include "config.h"
+#include <setjmp.h>
+/* #define YYDEBUG 1 */
+
+#ifdef MULTIBYTE_CHARS
+#include <stdlib.h>
+#include <locale.h>
+#endif
+
+#include <stdio.h>
+
+typedef unsigned char U_CHAR;
+
+/* This is used for communicating lists of keywords with cccp.c.  */
+struct arglist {
+  struct arglist *next;
+  U_CHAR *name;
+  int length;
+  int argno;
+};
+
+/* Define a generic NULL if one hasn't already been defined.  */
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef GENERIC_PTR
+#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
+#define GENERIC_PTR void *
+#else
+#define GENERIC_PTR char *
+#endif
+#endif
+
+#ifndef NULL_PTR
+#define NULL_PTR ((GENERIC_PTR)0)
+#endif
+
+int yylex ();
+void yyerror ();
+int expression_value;
+
+static jmp_buf parse_return_error;
+
+/* Nonzero means count most punctuation as part of a name.  */
+static int keyword_parsing = 0;
+
+/* some external tables of character types */
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[];
+
+extern char *xmalloc ();
+
+/* Flag for -pedantic.  */
+extern int pedantic;
+
+/* Flag for -traditional.  */
+extern int traditional;
+
+#ifndef CHAR_TYPE_SIZE
+#define CHAR_TYPE_SIZE BITS_PER_UNIT
+#endif
+
+#ifndef INT_TYPE_SIZE
+#define INT_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef LONG_TYPE_SIZE
+#define LONG_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
+#endif
+
+/* Yield nonzero if adding two numbers with A's and B's signs can yield a
+   number with SUM's sign, where A, B, and SUM are all C integers.  */
+#define possible_sum_sign(a, b, sum) ((((a) ^ (b)) | ~ ((a) ^ (sum))) < 0)
+
+static void integer_overflow ();
+static long left_shift ();
+static long right_shift ();
+%}
+
+%union {
+  struct constant {long value; int unsignedp;} integer;
+  struct name {U_CHAR *address; int length;} name;
+  struct arglist *keywords;
+  int voidval;
+  char *sval;
+}
+
+%type <integer> exp exp1 start
+%type <keywords> keywords
+%token <integer> INT CHAR
+%token <name> NAME
+%token <integer> ERROR
+
+%right '?' ':'
+%left ','
+%left OR
+%left AND
+%left '|'
+%left '^'
+%left '&'
+%left EQUAL NOTEQUAL
+%left '<' '>' LEQ GEQ
+%left LSH RSH
+%left '+' '-'
+%left '*' '/' '%'
+%right UNARY
+
+/* %expect 40 */
+
+%%
+
+start   :      exp1
+               { expression_value = $1.value; }
+       ;
+
+/* Expressions, including the comma operator.  */
+exp1   :       exp
+       |       exp1 ',' exp
+                       { if (pedantic)
+                           pedwarn ("comma operator in operand of `#if'");
+                         $$ = $3; }
+       ;
+
+/* Expressions, not including the comma operator.  */
+exp    :       '-' exp    %prec UNARY
+                       { $$.value = - $2.value;
+                         if (($$.value & $2.value) < 0 && ! $2.unsignedp)
+                           integer_overflow ();
+                         $$.unsignedp = $2.unsignedp; }
+       |       '!' exp    %prec UNARY
+                       { $$.value = ! $2.value;
+                         $$.unsignedp = 0; }
+       |       '+' exp    %prec UNARY
+                       { $$ = $2; }
+       |       '~' exp    %prec UNARY
+                       { $$.value = ~ $2.value;
+                         $$.unsignedp = $2.unsignedp; }
+       |       '#' NAME
+                       { $$.value = check_assertion ($2.address, $2.length,
+                                                     0, NULL_PTR);
+                         $$.unsignedp = 0; }
+       |       '#' NAME
+                       { keyword_parsing = 1; }
+               '(' keywords ')'
+                       { $$.value = check_assertion ($2.address, $2.length,
+                                                     1, $5);
+                         keyword_parsing = 0;
+                         $$.unsignedp = 0; }
+       |       '(' exp1 ')'
+                       { $$ = $2; }
+       ;
+
+/* Binary operators in order of decreasing precedence.  */
+exp    :       exp '*' exp
+                       { $$.unsignedp = $1.unsignedp || $3.unsignedp;
+                         if ($$.unsignedp)
+                           $$.value = (unsigned long) $1.value * $3.value;
+                         else
+                           {
+                             $$.value = $1.value * $3.value;
+                             if ($1.value
+                                 && ($$.value / $1.value != $3.value
+                                     || ($$.value & $1.value & $3.value) < 0))
+                               integer_overflow ();
+                           } }
+       |       exp '/' exp
+                       { if ($3.value == 0)
+                           {
+                             error ("division by zero in #if");
+                             $3.value = 1;
+                           }
+                         $$.unsignedp = $1.unsignedp || $3.unsignedp;
+                         if ($$.unsignedp)
+                           $$.value = (unsigned long) $1.value / $3.value;
+                         else
+                           {
+                             $$.value = $1.value / $3.value;
+                             if (($$.value & $1.value & $3.value) < 0)
+                               integer_overflow ();
+                           } }
+       |       exp '%' exp
+                       { if ($3.value == 0)
+                           {
+                             error ("division by zero in #if");
+                             $3.value = 1;
+                           }
+                         $$.unsignedp = $1.unsignedp || $3.unsignedp;
+                         if ($$.unsignedp)
+                           $$.value = (unsigned long) $1.value % $3.value;
+                         else
+                           $$.value = $1.value % $3.value; }
+       |       exp '+' exp
+                       { $$.value = $1.value + $3.value;
+                         $$.unsignedp = $1.unsignedp || $3.unsignedp;
+                         if (! $$.unsignedp
+                             && ! possible_sum_sign ($1.value, $3.value,
+                                                     $$.value))
+                           integer_overflow (); }
+       |       exp '-' exp
+                       { $$.value = $1.value - $3.value;
+                         $$.unsignedp = $1.unsignedp || $3.unsignedp;
+                         if (! $$.unsignedp
+                             && ! possible_sum_sign ($$.value, $3.value,
+                                                     $1.value))
+                           integer_overflow (); }
+       |       exp LSH exp
+                       { $$.unsignedp = $1.unsignedp;
+                         if ($3.value < 0 && ! $3.unsignedp)
+                           $$.value = right_shift (&$1, -$3.value);
+                         else
+                           $$.value = left_shift (&$1, $3.value); }
+       |       exp RSH exp
+                       { $$.unsignedp = $1.unsignedp;
+                         if ($3.value < 0 && ! $3.unsignedp)
+                           $$.value = left_shift (&$1, -$3.value);
+                         else
+                           $$.value = right_shift (&$1, $3.value); }
+       |       exp EQUAL exp
+                       { $$.value = ($1.value == $3.value);
+                         $$.unsignedp = 0; }
+       |       exp NOTEQUAL exp
+                       { $$.value = ($1.value != $3.value);
+                         $$.unsignedp = 0; }
+       |       exp LEQ exp
+                       { $$.unsignedp = 0;
+                         if ($1.unsignedp || $3.unsignedp)
+                           $$.value = (unsigned long) $1.value <= $3.value;
+                         else
+                           $$.value = $1.value <= $3.value; }
+       |       exp GEQ exp
+                       { $$.unsignedp = 0;
+                         if ($1.unsignedp || $3.unsignedp)
+                           $$.value = (unsigned long) $1.value >= $3.value;
+                         else
+                           $$.value = $1.value >= $3.value; }
+       |       exp '<' exp
+                       { $$.unsignedp = 0;
+                         if ($1.unsignedp || $3.unsignedp)
+                           $$.value = (unsigned long) $1.value < $3.value;
+                         else
+                           $$.value = $1.value < $3.value; }
+       |       exp '>' exp
+                       { $$.unsignedp = 0;
+                         if ($1.unsignedp || $3.unsignedp)
+                           $$.value = (unsigned long) $1.value > $3.value;
+                         else
+                           $$.value = $1.value > $3.value; }
+       |       exp '&' exp
+                       { $$.value = $1.value & $3.value;
+                         $$.unsignedp = $1.unsignedp || $3.unsignedp; }
+       |       exp '^' exp
+                       { $$.value = $1.value ^ $3.value;
+                         $$.unsignedp = $1.unsignedp || $3.unsignedp; }
+       |       exp '|' exp
+                       { $$.value = $1.value | $3.value;
+                         $$.unsignedp = $1.unsignedp || $3.unsignedp; }
+       |       exp AND exp
+                       { $$.value = ($1.value && $3.value);
+                         $$.unsignedp = 0; }
+       |       exp OR exp
+                       { $$.value = ($1.value || $3.value);
+                         $$.unsignedp = 0; }
+       |       exp '?' exp ':' exp
+                       { $$.value = $1.value ? $3.value : $5.value;
+                         $$.unsignedp = $3.unsignedp || $5.unsignedp; }
+       |       INT
+                       { $$ = yylval.integer; }
+       |       CHAR
+                       { $$ = yylval.integer; }
+       |       NAME
+                       { $$.value = 0;
+                         $$.unsignedp = 0; }
+       ;
+
+keywords :
+                       { $$ = 0; } 
+       |       '(' keywords ')' keywords
+                       { struct arglist *temp;
+                         $$ = (struct arglist *) xmalloc (sizeof (struct 
arglist));
+                         $$->next = $2;
+                         $$->name = (U_CHAR *) "(";
+                         $$->length = 1;
+                         temp = $$;
+                         while (temp != 0 && temp->next != 0)
+                           temp = temp->next;
+                         temp->next = (struct arglist *) xmalloc (sizeof 
(struct arglist));
+                         temp->next->next = $4;
+                         temp->next->name = (U_CHAR *) ")";
+                         temp->next->length = 1; }
+       |       NAME keywords
+                       { $$ = (struct arglist *) xmalloc (sizeof (struct 
arglist));
+                         $$->name = $1.address;
+                         $$->length = $1.length;
+                         $$->next = $2; } 
+       ;
+%%
+
+/* During parsing of a C expression, the pointer to the next character
+   is in this variable.  */
+
+static char *lexptr;
+
+/* Take care of parsing a number (anything that starts with a digit).
+   Set yylval and return the token type; update lexptr.
+   LEN is the number of characters in it.  */
+
+/* maybe needs to actually deal with floating point numbers */
+
+int
+parse_number (olen)
+     int olen;
+{
+  register char *p = lexptr;
+  register int c;
+  register unsigned long n = 0, nd, ULONG_MAX_over_base;
+  register int base = 10;
+  register int len = olen;
+  register int overflow = 0;
+  register int digit, largest_digit = 0;
+  int spec_long = 0;
+
+  for (c = 0; c < len; c++)
+    if (p[c] == '.') {
+      /* It's a float since it contains a point.  */
+      yyerror ("floating point numbers not allowed in #if expressions");
+      return ERROR;
+    }
+
+  yylval.integer.unsignedp = 0;
+
+  if (len >= 3 && (!strncmp (p, "0x", 2) || !strncmp (p, "0X", 2))) {
+    p += 2;
+    base = 16;
+    len -= 2;
+  }
+  else if (*p == '0')
+    base = 8;
+
+  ULONG_MAX_over_base = (unsigned long) -1 / base;
+
+  for (; len > 0; len--) {
+    c = *p++;
+
+    if (c >= '0' && c <= '9')
+      digit = c - '0';
+    else if (base == 16 && c >= 'a' && c <= 'f')
+      digit = c - 'a' + 10;
+    else if (base == 16 && c >= 'A' && c <= 'F')
+      digit = c - 'A' + 10;
+    else {
+      /* `l' means long, and `u' means unsigned.  */
+      while (1) {
+       if (c == 'l' || c == 'L')
+         {
+           if (spec_long)
+             yyerror ("two `l's in integer constant");
+           spec_long = 1;
+         }
+       else if (c == 'u' || c == 'U')
+         {
+           if (yylval.integer.unsignedp)
+             yyerror ("two `u's in integer constant");
+           yylval.integer.unsignedp = 1;
+         }
+       else
+         break;
+
+       if (--len == 0)
+         break;
+       c = *p++;
+      }
+      /* Don't look for any more digits after the suffixes.  */
+      break;
+    }
+    if (largest_digit < digit)
+      largest_digit = digit;
+    nd = n * base + digit;
+    overflow |= ULONG_MAX_over_base < n | nd < n;
+    n = nd;
+  }
+
+  if (len != 0) {
+    yyerror ("Invalid number in #if expression");
+    return ERROR;
+  }
+
+  if (base <= largest_digit)
+    warning ("integer constant contains digits beyond the radix");
+
+  if (overflow)
+    warning ("integer constant out of range");
+
+  /* If too big to be signed, consider it unsigned.  */
+  if ((long) n < 0 && ! yylval.integer.unsignedp)
+    {
+      if (base == 10)
+       warning ("integer constant is so large that it is unsigned");
+      yylval.integer.unsignedp = 1;
+    }
+
+  lexptr = p;
+  yylval.integer.value = n;
+  return INT;
+}
+
+struct token {
+  char *operator;
+  int token;
+};
+
+static struct token tokentab2[] = {
+  {"&&", AND},
+  {"||", OR},
+  {"<<", LSH},
+  {">>", RSH},
+  {"==", EQUAL},
+  {"!=", NOTEQUAL},
+  {"<=", LEQ},
+  {">=", GEQ},
+  {"++", ERROR},
+  {"--", ERROR},
+  {NULL, ERROR}
+};
+
+/* Read one token, getting characters through lexptr.  */
+
+int
+yylex ()
+{
+  register int c;
+  register int namelen;
+  register unsigned char *tokstart;
+  register struct token *toktab;
+  int wide_flag;
+
+ retry:
+
+  tokstart = (unsigned char *) lexptr;
+  c = *tokstart;
+  /* See if it is a special token of length 2.  */
+  if (! keyword_parsing)
+    for (toktab = tokentab2; toktab->operator != NULL; toktab++)
+      if (c == *toktab->operator && tokstart[1] == toktab->operator[1]) {
+       lexptr += 2;
+       if (toktab->token == ERROR)
+         {
+           char *buf = (char *) alloca (40);
+           sprintf (buf, "`%s' not allowed in operand of `#if'", 
toktab->operator);
+           yyerror (buf);
+         }
+       return toktab->token;
+      }
+
+  switch (c) {
+  case 0:
+    return 0;
+    
+  case ' ':
+  case '\t':
+  case '\r':
+  case '\n':
+    lexptr++;
+    goto retry;
+    
+  case 'L':
+    /* Capital L may start a wide-string or wide-character constant.  */
+    if (lexptr[1] == '\'')
+      {
+       lexptr++;
+       wide_flag = 1;
+       goto char_constant;
+      }
+    if (lexptr[1] == '"')
+      {
+       lexptr++;
+       wide_flag = 1;
+       goto string_constant;
+      }
+    break;
+
+  case '\'':
+    wide_flag = 0;
+  char_constant:
+    lexptr++;
+    if (keyword_parsing) {
+      char *start_ptr = lexptr - 1;
+      while (1) {
+       c = *lexptr++;
+       if (c == '\\')
+         c = parse_escape (&lexptr);
+       else if (c == '\'')
+         break;
+      }
+      yylval.name.address = tokstart;
+      yylval.name.length = lexptr - start_ptr;
+      return NAME;
+    }
+
+    /* This code for reading a character constant
+       handles multicharacter constants and wide characters.
+       It is mostly copied from c-lex.c.  */
+    {
+      register int result = 0;
+      register num_chars = 0;
+      unsigned width = CHAR_TYPE_SIZE;
+      int max_chars;
+      char *token_buffer;
+
+      if (wide_flag)
+       {
+         width = WCHAR_TYPE_SIZE;
+#ifdef MULTIBYTE_CHARS
+         max_chars = MB_CUR_MAX;
+#else
+         max_chars = 1;
+#endif
+       }
+      else
+       max_chars = LONG_TYPE_SIZE / width;
+
+      token_buffer = (char *) alloca (max_chars + 1);
+
+      while (1)
+       {
+         c = *lexptr++;
+
+         if (c == '\'' || c == EOF)
+           break;
+
+         if (c == '\\')
+           {
+             c = parse_escape (&lexptr);
+             if (width < HOST_BITS_PER_INT
+                 && (unsigned) c >= (1 << width))
+               pedwarn ("escape sequence out of range for character");
+           }
+
+         num_chars++;
+
+         /* Merge character into result; ignore excess chars.  */
+         if (num_chars < max_chars + 1)
+           {
+             if (width < HOST_BITS_PER_INT)
+               result = (result << width) | (c & ((1 << width) - 1));
+             else
+               result = c;
+             token_buffer[num_chars - 1] = c;
+           }
+       }
+
+      token_buffer[num_chars] = 0;
+
+      if (c != '\'')
+       error ("malformatted character constant");
+      else if (num_chars == 0)
+       error ("empty character constant");
+      else if (num_chars > max_chars)
+       {
+         num_chars = max_chars;
+         error ("character constant too long");
+       }
+      else if (num_chars != 1 && ! traditional)
+       warning ("multi-character character constant");
+
+      /* If char type is signed, sign-extend the constant.  */
+      if (! wide_flag)
+       {
+         int num_bits = num_chars * width;
+
+         if (lookup ("__CHAR_UNSIGNED__", sizeof ("__CHAR_UNSIGNED__")-1, -1)
+             || ((result >> (num_bits - 1)) & 1) == 0)
+           yylval.integer.value
+             = result & ((unsigned long) ~0 >> (HOST_BITS_PER_LONG - 
num_bits));
+         else
+           yylval.integer.value
+             = result | ~((unsigned long) ~0 >> (HOST_BITS_PER_LONG - 
num_bits));
+       }
+      else
+       {
+#ifdef MULTIBYTE_CHARS
+         /* Set the initial shift state and convert the next sequence.  */
+         result = 0;
+         /* In all locales L'\0' is zero and mbtowc will return zero,
+            so don't use it.  */
+         if (num_chars > 1
+             || (num_chars == 1 && token_buffer[0] != '\0'))
+           {
+             wchar_t wc;
+             (void) mbtowc (NULL_PTR, NULL_PTR, 0);
+             if (mbtowc (& wc, token_buffer, num_chars) == num_chars)
+               result = wc;
+             else
+               warning ("Ignoring invalid multibyte character");
+           }
+#endif
+         yylval.integer.value = result;
+       }
+    }
+
+    /* This is always a signed type.  */
+    yylval.integer.unsignedp = 0;
+    
+    return CHAR;
+
+    /* some of these chars are invalid in constant expressions;
+       maybe do something about them later */
+  case '/':
+  case '+':
+  case '-':
+  case '*':
+  case '%':
+  case '|':
+  case '&':
+  case '^':
+  case '~':
+  case '!':
+  case '@':
+  case '<':
+  case '>':
+  case '[':
+  case ']':
+  case '.':
+  case '?':
+  case ':':
+  case '=':
+  case '{':
+  case '}':
+  case ',':
+  case '#':
+    if (keyword_parsing)
+      break;
+  case '(':
+  case ')':
+    lexptr++;
+    return c;
+
+  case '"':
+  string_constant:
+    if (keyword_parsing) {
+      char *start_ptr = lexptr;
+      lexptr++;
+      while (1) {
+       c = *lexptr++;
+       if (c == '\\')
+         c = parse_escape (&lexptr);
+       else if (c == '"')
+         break;
+      }
+      yylval.name.address = tokstart;
+      yylval.name.length = lexptr - start_ptr;
+      return NAME;
+    }
+    yyerror ("string constants not allowed in #if expressions");
+    return ERROR;
+  }
+
+  if (c >= '0' && c <= '9' && !keyword_parsing) {
+    /* It's a number */
+    for (namelen = 0;
+        c = tokstart[namelen], is_idchar[c] || c == '.'; 
+        namelen++)
+      ;
+    return parse_number (namelen);
+  }
+
+  /* It is a name.  See how long it is.  */
+
+  if (keyword_parsing) {
+    for (namelen = 0;; namelen++) {
+      if (is_hor_space[tokstart[namelen]])
+       break;
+      if (tokstart[namelen] == '(' || tokstart[namelen] == ')')
+       break;
+      if (tokstart[namelen] == '"' || tokstart[namelen] == '\'')
+       break;
+    }
+  } else {
+    if (!is_idstart[c]) {
+      yyerror ("Invalid token in expression");
+      return ERROR;
+    }
+
+    for (namelen = 0; is_idchar[tokstart[namelen]]; namelen++)
+      ;
+  }
+  
+  lexptr += namelen;
+  yylval.name.address = tokstart;
+  yylval.name.length = namelen;
+  return NAME;
+}
+
+
+/* Parse a C escape sequence.  STRING_PTR points to a variable
+   containing a pointer to the string to parse.  That pointer
+   is updated past the characters we use.  The value of the
+   escape sequence is returned.
+
+   A negative value means the sequence \ newline was seen,
+   which is supposed to be equivalent to nothing at all.
+
+   If \ is followed by a null character, we return a negative
+   value and leave the string pointer pointing at the null character.
+
+   If \ is followed by 000, we return 0 and leave the string pointer
+   after the zeros.  A value of 0 does not mean end of string.  */
+
+int
+parse_escape (string_ptr)
+     char **string_ptr;
+{
+  register int c = *(*string_ptr)++;
+  switch (c)
+    {
+    case 'a':
+      return TARGET_BELL;
+    case 'b':
+      return TARGET_BS;
+    case 'e':
+    case 'E':
+      if (pedantic)
+       pedwarn ("non-ANSI-standard escape sequence, `\\%c'", c);
+      return 033;
+    case 'f':
+      return TARGET_FF;
+    case 'n':
+      return TARGET_NEWLINE;
+    case 'r':
+      return TARGET_CR;
+    case 't':
+      return TARGET_TAB;
+    case 'v':
+      return TARGET_VT;
+    case '\n':
+      return -2;
+    case 0:
+      (*string_ptr)--;
+      return 0;
+      
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+      {
+       register int i = c - '0';
+       register int count = 0;
+       while (++count < 3)
+         {
+           c = *(*string_ptr)++;
+           if (c >= '0' && c <= '7')
+             i = (i << 3) + c - '0';
+           else
+             {
+               (*string_ptr)--;
+               break;
+             }
+         }
+       if ((i & ~((1 << CHAR_TYPE_SIZE) - 1)) != 0)
+         {
+           i &= (1 << CHAR_TYPE_SIZE) - 1;
+           warning ("octal character constant does not fit in a byte");
+         }
+       return i;
+      }
+    case 'x':
+      {
+       register unsigned i = 0, overflow = 0, digits_found = 0, digit;
+       for (;;)
+         {
+           c = *(*string_ptr)++;
+           if (c >= '0' && c <= '9')
+             digit = c - '0';
+           else if (c >= 'a' && c <= 'f')
+             digit = c - 'a' + 10;
+           else if (c >= 'A' && c <= 'F')
+             digit = c - 'A' + 10;
+           else
+             {
+               (*string_ptr)--;
+               break;
+             }
+           overflow |= i ^ (i << 4 >> 4);
+           i = (i << 4) + digit;
+           digits_found = 1;
+         }
+       if (!digits_found)
+         yyerror ("\\x used with no following hex digits");
+       if (overflow | (i & ~((1 << BITS_PER_UNIT) - 1)))
+         {
+           i &= (1 << BITS_PER_UNIT) - 1;
+           warning ("hex character constant does not fit in a byte");
+         }
+       return i;
+      }
+    default:
+      return c;
+    }
+}
+
+void
+yyerror (s)
+     char *s;
+{
+  error (s);
+  longjmp (parse_return_error, 1);
+}
+
+static void
+integer_overflow ()
+{
+  if (pedantic)
+    pedwarn ("integer overflow in preprocessor expression");
+}
+
+static long
+left_shift (a, b)
+     struct constant *a;
+     unsigned long b;
+{
+  if (b >= HOST_BITS_PER_LONG)
+    {
+      if (! a->unsignedp && a->value != 0)
+       integer_overflow ();
+      return 0;
+    }
+  else if (a->unsignedp)
+    return (unsigned long) a->value << b;
+  else
+    {
+      long l = a->value << b;
+      if (l >> b != a->value)
+       integer_overflow ();
+      return l;
+    }
+}
+
+static long
+right_shift (a, b)
+     struct constant *a;
+     unsigned long b;
+{
+  if (b >= HOST_BITS_PER_LONG)
+    return a->unsignedp ? 0 : a->value >> (HOST_BITS_PER_LONG - 1);
+  else if (a->unsignedp)
+    return (unsigned long) a->value >> b;
+  else
+    return a->value >> b;
+}
+
+/* This page contains the entry point to this file.  */
+
+/* Parse STRING as an expression, and complain if this fails
+   to use up all of the contents of STRING.  */
+/* We do not support C comments.  They should be removed before
+   this function is called.  */
+
+int
+parse_c_expression (string)
+     char *string;
+{
+  lexptr = string;
+  
+  if (lexptr == 0 || *lexptr == 0) {
+    error ("empty #if expression");
+    return 0;                  /* don't include the #if group */
+  }
+
+  /* if there is some sort of scanning error, just return 0 and assume
+     the parsing routine has printed an error message somewhere.
+     there is surely a better thing to do than this.     */
+  if (setjmp (parse_return_error))
+    return 0;
+
+  if (yyparse ())
+    return 0;                  /* actually this is never reached
+                                  the way things stand. */
+  if (*lexptr)
+    error ("Junk after end of expression.");
+
+  return expression_value;     /* set by yyparse () */
+}
+
+#ifdef TEST_EXP_READER
+extern int yydebug;
+
+/* Main program for testing purposes.  */
+int
+main ()
+{
+  int n, c;
+  char buf[1024];
+
+/*
+  yydebug = 1;
+*/
+  initialize_random_junk ();
+
+  for (;;) {
+    printf ("enter expression: ");
+    n = 0;
+    while ((buf[n] = getchar ()) != '\n' && buf[n] != EOF)
+      n++;
+    if (buf[n] == EOF)
+      break;
+    buf[n] = '\0';
+    printf ("parser returned %d\n", parse_c_expression (buf));
+  }
+
+  return 0;
+}
+
+/* table to tell if char can be part of a C identifier. */
+unsigned char is_idchar[256];
+/* table to tell if char can be first char of a c identifier. */
+unsigned char is_idstart[256];
+/* table to tell if c is horizontal space.  isspace () thinks that
+   newline is space; this is not a good idea for this program. */
+char is_hor_space[256];
+
+/*
+ * initialize random junk in the hash table and maybe other places
+ */
+initialize_random_junk ()
+{
+  register int i;
+
+  /*
+   * Set up is_idchar and is_idstart tables.  These should be
+   * faster than saying (is_alpha (c) || c == '_'), etc.
+   * Must do set up these things before calling any routines tthat
+   * refer to them.
+   */
+  for (i = 'a'; i <= 'z'; i++) {
+    ++is_idchar[i - 'a' + 'A'];
+    ++is_idchar[i];
+    ++is_idstart[i - 'a' + 'A'];
+    ++is_idstart[i];
+  }
+  for (i = '0'; i <= '9'; i++)
+    ++is_idchar[i];
+  ++is_idchar['_'];
+  ++is_idstart['_'];
+#if DOLLARS_IN_IDENTIFIERS
+  ++is_idchar['$'];
+  ++is_idstart['$'];
+#endif
+
+  /* horizontal space table */
+  ++is_hor_space[' '];
+  ++is_hor_space['\t'];
+}
+
+error (msg)
+{
+  printf ("error: %s\n", msg);
+}
+
+warning (msg)
+{
+  printf ("warning: %s\n", msg);
+}
+
+struct hashnode *
+lookup (name, len, hash)
+     char *name;
+     int len;
+     int hash;
+{
+  return (DEFAULT_SIGNED_CHAR) ? 0 : ((struct hashnode *) -1);
+}
+#endif
diff --git a/test/etags/y-src/parse.c b/test/etags/y-src/parse.c
new file mode 100644
index 0000000..7b1eedc
--- /dev/null
+++ b/test/etags/y-src/parse.c
@@ -0,0 +1,2236 @@
+/* A Bison parser, made from parse.y
+   by GNU bison 1.32.  */
+
+#define YYBISON 1  /* Identify Bison output.  */
+
+# define       NE      257
+# define       LE      258
+# define       GE      259
+# define       NEG     260
+# define       L_CELL  261
+# define       L_RANGE 262
+# define       L_VAR   263
+# define       L_CONST 264
+# define       L_FN0   265
+# define       L_FN1   266
+# define       L_FN2   267
+# define       L_FN3   268
+# define       L_FN4   269
+# define       L_FNN   270
+# define       L_FN1R  271
+# define       L_FN2R  272
+# define       L_FN3R  273
+# define       L_FN4R  274
+# define       L_FNNR  275
+# define       L_LE    276
+# define       L_NE    277
+# define       L_GE    278
+
+#line 1 "parse.y"
+
+/*     Copyright (C) 1990, 1992, 1993 Free Software Foundation, Inc.
+
+This file is part of Oleo, the GNU Spreadsheet.
+
+Oleo 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 2, or (at your option)
+any later version.
+
+Oleo 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 Oleo; see the file COPYING.  If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+#line 41 "parse.y"
+
+#include "funcdef.h"
+
+#include <ctype.h>
+
+#define obstack_chunk_alloc ck_malloc
+#define obstack_chunk_free free
+#include "obstack.h"
+#include "sysdef.h"
+
+#include "global.h"
+#include "errors.h"
+#include "node.h"
+#include "eval.h"
+#include "ref.h"
+
+int yylex ();
+#ifdef __STDC__
+void yyerror (char *);
+#else
+void yyerror ();
+#endif
+VOIDSTAR parse_hash;
+extern VOIDSTAR hash_find();
+
+/* This table contains a list of the infix single-char functions */
+unsigned char fnin[] = {
+       SUM, DIFF, DIV, PROD, MOD, /* AND, OR, */ POW, EQUAL, IF, CONCAT, 0
+};
+
+#define YYSTYPE _y_y_s_t_y_p_e
+typedef struct node *YYSTYPE;
+YYSTYPE parse_return;
+#ifdef __STDC__
+YYSTYPE make_list (YYSTYPE, YYSTYPE);
+#else
+YYSTYPE make_list ();
+#endif
+
+char *instr;
+int parse_error = 0;
+extern struct obstack tmp_mem;
+
+#ifndef YYSTYPE
+#define YYSTYPE int
+#endif
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+
+
+#define        YYFINAL         131
+#define        YYFLAG          -32768
+#define        YYNTBASE        41
+
+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
+#define YYTRANSLATE(x) ((unsigned)(x) <= 278 ? yytranslate[x] : 47)
+
+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
+static const char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,    19,     2,     2,     2,    16,     5,     2,
+      38,    39,    14,    12,    40,    13,     2,    15,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     4,     2,
+       8,     6,    10,     3,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    17,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     7,     9,    11,
+      18,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37
+};
+
+#if YYDEBUG
+static const short yyprhs[] =
+{
+       0,     0,     2,     4,     6,     8,    12,    17,    24,    33,
+      44,    49,    54,    59,    66,    73,    82,    91,   100,   109,
+     114,   120,   124,   128,   132,   136,   140,   144,   148,   152,
+     156,   160,   164,   168,   172,   175,   178,   182,   186,   189,
+     191,   195,   197,   199,   201,   205,   207
+};
+static const short yyrhs[] =
+{
+      42,     0,     1,     0,    23,     0,    46,     0,    24,    38,
+      39,     0,    25,    38,    42,    39,     0,    26,    38,    42,
+      40,    42,    39,     0,    27,    38,    42,    40,    42,    40,
+      42,    39,     0,    28,    38,    42,    40,    42,    40,    42,
+      40,    42,    39,     0,    29,    38,    43,    39,     0,    30,
+      38,    21,    39,     0,    30,    38,    22,    39,     0,    31,
+      38,    21,    40,    42,    39,     0,    31,    38,    22,    40,
+      42,    39,     0,    31,    38,    21,    40,    42,    40,    42,
+      39,     0,    31,    38,    22,    40,    42,    40,    42,    39,
+       0,    32,    38,    21,    40,    42,    40,    42,    39,     0,
+      32,    38,    22,    40,    42,    40,    42,    39,     0,    34,
+      38,    45,    39,     0,    42,     3,    42,     4,    42,     0,
+      42,     5,    42,     0,    42,     8,    42,     0,    42,     9,
+      42,     0,    42,     6,    42,     0,    42,     7,    42,     0,
+      42,    10,    42,     0,    42,    11,    42,     0,    42,    12,
+      42,     0,    42,    13,    42,     0,    42,    14,    42,     0,
+      42,    15,    42,     0,    42,    16,    42,     0,    42,    17,
+      42,     0,    13,    42,     0,    19,    42,     0,    38,    42,
+      39,     0,    38,    42,     1,     0,    38,     1,     0,    42,
+       0,    43,    40,    42,     0,    21,     0,    42,     0,    44,
+       0,    45,    40,    44,     0,    20,     0,    22,     0
+};
+
+#endif
+
+#if YYDEBUG
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const short yyrline[] =
+{
+       0,    86,    88,    94,    95,    96,    98,   102,   106,   110,
+     114,   118,   121,   125,   129,   135,   142,   150,   154,   159,
+     163,   174,   178,   182,   186,   190,   194,   198,   202,   206,
+     210,   214,   218,   222,   226,   241,   245,   247,   255,   262,
+     264,   268,   269,   272,   274,   278,   280
+};
+#endif
+
+
+#if (YYDEBUG) || defined YYERROR_VERBOSE
+
+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
+static const char *const yytname[] =
+{
+  "$", "error", "$undefined.", "'?'", "':'", "'&'", "'='", "NE", "'<'", 
+  "LE", "'>'", "GE", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "NEG", 
+  "'!'", "L_CELL", "L_RANGE", "L_VAR", "L_CONST", "L_FN0", "L_FN1", 
+  "L_FN2", "L_FN3", "L_FN4", "L_FNN", "L_FN1R", "L_FN2R", "L_FN3R", 
+  "L_FN4R", "L_FNNR", "L_LE", "L_NE", "L_GE", "'('", "')'", "','", "line", 
+  "exp", "exp_list", "range_exp", "range_exp_list", "cell", NULL
+};
+#endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const short yyr1[] =
+{
+       0,    41,    41,    42,    42,    42,    42,    42,    42,    42,
+      42,    42,    42,    42,    42,    42,    42,    42,    42,    42,
+      42,    42,    42,    42,    42,    42,    42,    42,    42,    42,
+      42,    42,    42,    42,    42,    42,    42,    42,    42,    43,
+      43,    44,    44,    45,    45,    46,    46
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const short yyr2[] =
+{
+       0,     1,     1,     1,     1,     3,     4,     6,     8,    10,
+       4,     4,     4,     6,     6,     8,     8,     8,     8,     4,
+       5,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     2,     2,     3,     3,     2,     1,
+       3,     1,     1,     1,     3,     1,     1
+};
+
+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
+   doesn't specify something else to do.  Zero means the default is an
+   error. */
+static const short yydefact[] =
+{
+       0,     2,     0,     0,    45,    46,     3,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     1,     4,
+      34,    35,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     5,     0,
+       0,     0,     0,    39,     0,     0,     0,     0,     0,     0,
+       0,    41,    42,    43,     0,    37,    36,     0,    21,    24,
+      25,    22,    23,    26,    27,    28,    29,    30,    31,    32,
+      33,     6,     0,     0,     0,    10,     0,    11,    12,     0,
+       0,     0,     0,    19,     0,     0,     0,     0,     0,    40,
+       0,     0,     0,     0,    44,    20,     7,     0,     0,    13,
+       0,    14,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     8,     0,    15,    16,    17,    18,     0,     9,     0,
+       0,     0
+};
+
+static const short yydefgoto[] =
+{
+     129,    62,    54,    63,    64,    19
+};
+
+static const short yypact[] =
+{
+     104,-32768,   486,   486,-32768,-32768,-32768,   -37,   -22,   -16,
+      10,    12,    14,    29,    43,    47,    50,   124,   537,-32768,
+  -32768,-32768,    59,   486,   486,   486,   486,   486,     7,     9,
+      11,   464,-32768,    48,   486,   486,   486,   486,   486,   486,
+     486,   486,   486,   486,   486,   486,   486,   486,-32768,   332,
+     173,   209,   224,   537,    54,    60,    61,    64,    66,    69,
+      71,-32768,   537,-32768,    57,-32768,-32768,   522,    -2,   193,
+     193,   547,   547,   547,   547,     4,     4,    84,    84,    84,
+      84,-32768,   486,   486,   486,-32768,   486,-32768,-32768,   486,
+     486,   486,   486,-32768,   464,   486,   353,   245,   260,   537,
+      63,   158,   281,   296,-32768,   537,-32768,   486,   486,-32768,
+     486,-32768,   486,   486,   486,   369,   317,   388,   404,   423,
+     439,-32768,   486,-32768,-32768,-32768,-32768,   458,-32768,   115,
+     116,-32768
+};
+
+static const short yypgoto[] =
+{
+  -32768,     0,-32768,    24,-32768,-32768
+};
+
+
+#define        YYLAST          564
+
+
+static const short yytable[] =
+{
+      18,    22,    20,    21,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    23,    33,    44,    45,
+      46,    47,    24,    49,    50,    51,    52,    53,    55,    56,
+      57,    58,    59,    60,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    25,    65,
+      26,    34,    27,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    34,    28,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    29,    96,    97,    98,    30,    99,    66,    31,   100,
+     101,   102,   103,    85,    86,   105,    93,    94,    48,    87,
+      88,    47,   109,   110,    89,     1,    90,   115,   116,    91,
+     117,    92,   118,   119,   120,   130,   131,     2,   104,     0,
+       0,     0,   127,     3,     4,    32,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,     2,    16,     0,
+       0,     0,    17,     3,     4,     0,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,     0,    16,     0,
+       0,    34,    17,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    34,     0,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,     0,     0,     0,     0,     0,     0,   111,   112,-32768,
+  -32768,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,     0,    34,    82,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    34,     0,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,     0,     0,     0,     0,     0,     0,    34,    83,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    34,    84,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,     0,     0,
+       0,     0,     0,     0,    34,   107,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    34,
+     108,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
+      34,   113,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    34,   114,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+       0,     0,     0,     0,     0,     0,    34,   122,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    81,    34,     0,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
+       0,    34,   106,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,     0,    34,   121,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,     0,     0,     0,     0,    34,   123,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,     0,    34,   124,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
+       0,    34,   125,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,     0,     2,   126,     0,
+       0,     0,     0,     3,     4,    61,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,   128,    16,     2,
+       0,     0,    17,     0,     0,     3,     4,     0,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,     0,
+      16,     0,     0,     0,    17,    34,    95,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      34,     0,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,-32768,-32768,-32768,-32768,    42,
+      43,    44,    45,    46,    47
+};
+
+static const short yycheck[] =
+{
+       0,    38,     2,     3,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    38,    17,    14,    15,
+      16,    17,    38,    23,    24,    25,    26,    27,    21,    22,
+      21,    22,    21,    22,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    38,     1,
+      38,     3,    38,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,     3,    38,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    38,    82,    83,    84,    38,    86,    39,    38,    89,
+      90,    91,    92,    39,    40,    95,    39,    40,    39,    39,
+      39,    17,    39,    40,    40,     1,    40,   107,   108,    40,
+     110,    40,   112,   113,   114,     0,     0,    13,    94,    -1,
+      -1,    -1,   122,    19,    20,     1,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    13,    34,    -1,
+      -1,    -1,    38,    19,    20,    -1,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    -1,    34,    -1,
+      -1,     3,    38,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,     3,    -1,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    -1,     3,    40,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,     3,    -1,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    -1,    -1,    -1,    -1,    -1,    -1,     3,    40,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,     3,    40,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    -1,    -1,
+      -1,    -1,    -1,    -1,     3,    40,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,     3,
+      40,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    -1,    -1,    -1,    -1,    -1,    -1,
+       3,    40,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,     3,    40,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      -1,    -1,    -1,    -1,    -1,    -1,     3,    40,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    39,     3,    -1,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,
+      -1,     3,    39,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    -1,     3,    39,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    -1,    -1,    -1,    -1,     3,    39,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    -1,     3,    39,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,
+      -1,     3,    39,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    -1,    13,    39,    -1,
+      -1,    -1,    -1,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    39,    34,    13,
+      -1,    -1,    38,    -1,    -1,    19,    20,    -1,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      34,    -1,    -1,    -1,    38,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+       3,    -1,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17
+};
+/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
+#line 3 "/usr/share/bison/bison.simple"
+
+/* Skeleton output parser for bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
+
+   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 2, 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* This is the parser code that is written into each bison parser when
+   the %semantic_parser declaration is not specified in the grammar.
+   It was written by Richard Stallman by simplifying the hairy parser
+   used when %semantic_parser is specified.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+#ifdef __cplusplus
+# define YYSTD(x) std::x
+#else
+# define YYSTD(x) x
+#endif
+
+#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# if YYSTACK_USE_ALLOCA
+#  define YYSTACK_ALLOC alloca
+#  define YYSIZE_T YYSTD (size_t)
+# else
+#  ifndef YYSTACK_USE_ALLOCA
+#   if defined (alloca) || defined (_ALLOCA_H)
+#    define YYSTACK_ALLOC alloca
+#    define YYSIZE_T YYSTD (size_t)
+#   else
+#    ifdef __GNUC__
+#     define YYSTACK_ALLOC __builtin_alloca
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  ifdef __cplusplus
+#   include <cstdlib> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T std::size_t
+#  else
+#   ifdef __STDC__
+#    include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#    define YYSIZE_T size_t
+#   endif
+#  endif
+#  define YYSTACK_ALLOC YYSTD (malloc)
+#  define YYSTACK_FREE YYSTD (free)
+# endif
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short yyss;
+  YYSTYPE yyvs;
+# if YYLSP_NEEDED
+  YYLTYPE yyls;
+# endif
+};
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# if YYLSP_NEEDED
+#  define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE))     \
+      + 2 * YYSTACK_GAP_MAX)
+# else
+#  define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short) + sizeof (YYSTYPE))                                
\
+      + YYSTACK_GAP_MAX)
+# endif
+
+/* Relocate the TYPE STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Type, Stack)                                 \
+    do                                                                 \
+      {                                                                        
\
+       YYSIZE_T yynewbytes;                                            \
+       yymemcpy ((char *) yyptr, (char *) (Stack),                     \
+                 yysize * (YYSIZE_T) sizeof (Type));                   \
+       Stack = &yyptr->Stack;                                          \
+       yynewbytes = yystacksize * sizeof (Type) + YYSTACK_GAP_MAX;     \
+       yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                        
\
+    while (0)
+
+#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
+
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# ifdef __cplusplus
+#  include <cstddef> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T std::size_t
+# else
+#  ifdef __STDC__
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
+#  endif
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                -2
+#define YYEOF          0
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT        goto yyabortlab
+#define YYERROR                goto yyerrlab1
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+#define YYFAIL         goto yyerrlab
+#define YYRECOVERING()  (!!yyerrstatus)
+#define YYBACKUP(Token, Value)                                 \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
+      yychar1 = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK;                                              \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    {                                                          \
+      yyerror ("syntax error: cannot back up");                        \
+      YYERROR;                                                 \
+    }                                                          \
+while (0)
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).
+
+   When YYLLOC_DEFAULT is run, CURRENT is set the location of the
+   first token.  By default, to implement support for ranges, extend
+   its range to the last symbol.  */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)               \
+   Current.last_line   = Rhs[N].last_line;     \
+   Current.last_column = Rhs[N].last_column;
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#if YYPURE
+# if YYLSP_NEEDED
+#  ifdef YYLEX_PARAM
+#   define YYLEX               yylex (&yylval, &yylloc, YYLEX_PARAM)
+#  else
+#   define YYLEX               yylex (&yylval, &yylloc)
+#  endif
+# else /* !YYLSP_NEEDED */
+#  ifdef YYLEX_PARAM
+#   define YYLEX               yylex (&yylval, YYLEX_PARAM)
+#  else
+#   define YYLEX               yylex (&yylval)
+#  endif
+# endif /* !YYLSP_NEEDED */
+#else /* !YYPURE */
+# define YYLEX                 yylex ()
+#endif /* !YYPURE */
+
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  ifdef __cplusplus
+#   include <cstdio>  /* INFRINGES ON USER NAME SPACE */
+#  else
+#   include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYFPRINTF YYSTD (fprintf)
+# endif
+
+# define YYDPRINTF(Args)                       \
+do {                                           \
+  if (yydebug)                                 \
+    YYFPRINTF Args;                            \
+} while (0)
+/* Nonzero means print parse trace. [The following comment makes no
+   sense to me.  Could someone clarify it?  --akim] Since this is
+   uninitialized, it does not stop multiple parsers from coexisting.
+   */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+#endif /* !YYDEBUG */
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef        YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#if YYMAXDEPTH == 0
+# undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+#if ! defined (yyoverflow) && ! defined (yymemcpy)
+# if __GNUC__ > 1              /* GNU C and GNU C++ define this.  */
+#  define yymemcpy __builtin_memcpy
+# else                         /* not GNU C or C++ */
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void
+#  if defined (__STDC__) || defined (__cplusplus)
+yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T yycount)
+#  else
+yymemcpy (yyto, yyfrom, yycount)
+     char *yyto;
+     const char *yyfrom;
+     YYSIZE_T yycount;
+#  endif
+{
+  register const char *yyf = yyfrom;
+  register char *yyt = yyto;
+  register YYSIZE_T yyi = yycount;
+
+  while (yyi-- != 0)
+    *yyt++ = *yyf++;
+}
+# endif
+#endif
+
+#ifdef YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  register const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  register char *yyd = yydest;
+  register const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+#endif
+
+#line 341 "/usr/share/bison/bison.simple"
+
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+   into yyparse.  The argument should have type void *.
+   It should actually point to an object.
+   Grammar actions can access the variable by casting it
+   to the proper pointer type.  */
+
+#ifdef YYPARSE_PARAM
+# ifdef __cplusplus
+#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL
+# else /* !__cplusplus */
+#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+# endif /* !__cplusplus */
+#else /* !YYPARSE_PARAM */
+# define YYPARSE_PARAM_ARG
+# define YYPARSE_PARAM_DECL
+#endif /* !YYPARSE_PARAM */
+
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+# ifdef YYPARSE_PARAM
+int yyparse (void *);
+# else
+int yyparse (void);
+# endif
+#endif
+
+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
+   variables are global, or local to YYPARSE.  */
+
+#define YY_DECL_NON_LSP_VARIABLES                      \
+/* The lookahead symbol.  */                           \
+int yychar;                                            \
+                                                       \
+/* The semantic value of the lookahead symbol. */      \
+YYSTYPE yylval;                                                \
+                                                       \
+/* Number of parse errors so far.  */                  \
+int yynerrs;
+
+#if YYLSP_NEEDED
+# define YY_DECL_VARIABLES                     \
+YY_DECL_NON_LSP_VARIABLES                      \
+                                               \
+/* Location data for the lookahead symbol.  */ \
+YYLTYPE yylloc;
+#else
+# define YY_DECL_VARIABLES                     \
+YY_DECL_NON_LSP_VARIABLES
+#endif
+
+
+/* If nonreentrant, generate the variables here. */
+
+#if !YYPURE
+YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
+int
+yyparse (YYPARSE_PARAM_ARG)
+     YYPARSE_PARAM_DECL
+{
+  /* If reentrant, generate the variables here. */
+#if YYPURE
+  YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
+  register int yystate;
+  register int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yychar1 = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack. */
+  short        yyssa[YYINITDEPTH];
+  short *yyss = yyssa;
+  register short *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  register YYSTYPE *yyvsp;
+
+#if YYLSP_NEEDED
+  /* The location stack.  */
+  YYLTYPE yylsa[YYINITDEPTH];
+  YYLTYPE *yyls = yylsa;
+  YYLTYPE *yylsp;
+#endif
+
+#if YYLSP_NEEDED
+# define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#else
+# define YYPOPSTACK   (yyvsp--, yyssp--)
+#endif
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+#if YYLSP_NEEDED
+  YYLTYPE yyloc;
+#endif
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule. */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+#if YYLSP_NEEDED
+  yylsp = yyls;
+#endif
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyssp >= yyss + yystacksize - 1)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+       /* Give user a chance to reallocate the stack. Use copies of
+          these so that the &'s don't force the real ones into
+          memory.  */
+       YYSTYPE *yyvs1 = yyvs;
+       short *yyss1 = yyss;
+
+       /* Each stack pointer address is followed by the size of the
+          data in use in that stack, in bytes.  */
+# if YYLSP_NEEDED
+       YYLTYPE *yyls1 = yyls;
+       /* This used to be a conditional around just the two extra args,
+          but that might be undefined if yyoverflow is a macro.  */
+       yyoverflow ("parser stack overflow",
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+                   &yyls1, yysize * sizeof (*yylsp),
+                   &yystacksize);
+       yyls = yyls1;
+# else
+       yyoverflow ("parser stack overflow",
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+                   &yystacksize);
+# endif
+       yyss = yyss1;
+       yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+      /* Extend the stack our own way.  */
+      if (yystacksize >= YYMAXDEPTH)
+       goto yyoverflowlab;
+      yystacksize *= 2;
+      if (yystacksize > YYMAXDEPTH)
+       yystacksize = YYMAXDEPTH;
+
+      {
+       short *yyss1 = yyss;
+       union yyalloc *yyptr =
+         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+       if (! yyptr)
+         goto yyoverflowlab;
+       YYSTACK_RELOCATE (short, yyss);
+       YYSTACK_RELOCATE (YYSTYPE, yyvs);
+# if YYLSP_NEEDED
+       YYSTACK_RELOCATE (YYLTYPE, yyls);
+# endif
+# undef YYSTACK_RELOCATE
+       if (yyss1 != yyssa)
+         YYSTACK_FREE (yyss1);
+      }
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+#if YYLSP_NEEDED
+      yylsp = yyls + yysize - 1;
+#endif
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+                 (unsigned long int) yystacksize));
+
+      if (yyssp >= yyss + yystacksize - 1)
+       YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a lookahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to lookahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yydefault;
+
+  /* Not known => get a lookahead token if don't already have one.  */
+
+  /* yychar is either YYEMPTY or YYEOF
+     or a valid token in external form.  */
+
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  /* Convert token to internal form (in yychar1) for indexing tables with */
+
+  if (yychar <= 0)             /* This means end of input. */
+    {
+      yychar1 = 0;
+      yychar = YYEOF;          /* Don't call YYLEX any more */
+
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yychar1 = YYTRANSLATE (yychar);
+
+#if YYDEBUG
+     /* We have to keep this `#if YYDEBUG', since we use variables
+       which are defined only if `YYDEBUG' is set.  */
+      if (yydebug)
+       {
+         YYFPRINTF (stderr, "Next token is %d (%s",
+                    yychar, yytname[yychar1]);
+         /* Give the individual parser a way to print the precise
+            meaning of a token, for further debugging info.  */
+# ifdef YYPRINT
+         YYPRINT (stderr, yychar, yylval);
+# endif
+         YYFPRINTF (stderr, ")\n");
+       }
+#endif
+    }
+
+  yyn += yychar1;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+    goto yydefault;
+
+  yyn = yytable[yyn];
+
+  /* yyn is what to do for this token type in this state.
+     Negative => reduce, -yyn is rule number.
+     Positive => shift, yyn is new state.
+       New state is final state => don't bother to shift,
+       just return success.
+     0, or most negative number => error.  */
+
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+       goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrlab;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the lookahead token.  */
+  YYDPRINTF ((stderr, "Shifting token %d (%s), ",
+             yychar, yytname[yychar1]));
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+#if YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to the semantic value of
+     the lookahead token.  This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+#if YYLSP_NEEDED
+  /* Similarly for the default location.  Let the user run additional
+     commands if for instance locations are ranges.  */
+  yyloc = yylsp[1-yylen];
+  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+#endif
+
+#if YYDEBUG
+  /* We have to keep this `#if YYDEBUG', since we use variables which
+     are defined only if `YYDEBUG' is set.  */
+  if (yydebug)
+    {
+      int yyi;
+
+      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
+                yyn, yyrline[yyn]);
+
+      /* Print the symbols being reduced, and their result.  */
+      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
+       YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+    }
+#endif
+
+  switch (yyn) {
+
+case 1:
+#line 87 "parse.y"
+{ parse_return=yyvsp[0]; }
+    break;
+case 2:
+#line 88 "parse.y"
+{
+               if(!parse_error)
+                       parse_error=PARSE_ERR;
+               parse_return=0; }
+    break;
+case 5:
+#line 96 "parse.y"
+{
+               yyval=yyvsp[-2]; }
+    break;
+case 6:
+#line 98 "parse.y"
+{
+               (yyvsp[-3])->n_x.v_subs[0]=yyvsp[-1];
+               (yyvsp[-3])->n_x.v_subs[1]=(struct node *)0;
+               yyval=yyvsp[-3]; }
+    break;
+case 7:
+#line 102 "parse.y"
+{
+               (yyvsp[-5])->n_x.v_subs[0]=yyvsp[-3];
+               (yyvsp[-5])->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-5]; }
+    break;
+case 8:
+#line 106 "parse.y"
+{
+               (yyvsp[-7])->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+               (yyvsp[-7])->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-7];}
+    break;
+case 9:
+#line 110 "parse.y"
+{
+               (yyvsp[-9])->n_x.v_subs[0]=make_list(yyvsp[-7],yyvsp[-5]);
+               (yyvsp[-9])->n_x.v_subs[1]=make_list(yyvsp[-3],yyvsp[-1]);
+               yyval=yyvsp[-9];}
+    break;
+case 10:
+#line 114 "parse.y"
+{
+               (yyvsp[-3])->n_x.v_subs[0]=(struct node *)0;
+               (yyvsp[-3])->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-3]; }
+    break;
+case 11:
+#line 118 "parse.y"
+{
+               yyvsp[-3]->n_x.v_subs[0]=yyvsp[-1];
+               yyval=yyvsp[-3]; }
+    break;
+case 12:
+#line 121 "parse.y"
+{
+               yyvsp[-3]->n_x.v_subs[0]=yyvsp[-1];
+               yyval=yyvsp[-3]; }
+    break;
+case 13:
+#line 125 "parse.y"
+{
+               yyvsp[-5]->n_x.v_subs[0]=yyvsp[-3];
+               yyvsp[-5]->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-5]; }
+    break;
+case 14:
+#line 129 "parse.y"
+{
+               yyvsp[-5]->n_x.v_subs[0]=yyvsp[-3];
+               yyvsp[-5]->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-5]; }
+    break;
+case 15:
+#line 135 "parse.y"
+{
+               if(yyvsp[-7]->comp_value!=F_INDEX)
+                       parse_error=PARSE_ERR;
+               yyvsp[-7]->comp_value=F_INDEX2;
+               yyvsp[-7]->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+               yyvsp[-7]->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-7]; }
+    break;
+case 16:
+#line 142 "parse.y"
+{
+               if(yyvsp[-7]->comp_value!=F_INDEX)
+                       parse_error=PARSE_ERR;
+               yyvsp[-7]->comp_value=F_INDEX2;
+               yyvsp[-7]->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+               yyvsp[-7]->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-7]; }
+    break;
+case 17:
+#line 150 "parse.y"
+{
+               (yyvsp[-7])->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+               (yyvsp[-7])->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-7];}
+    break;
+case 18:
+#line 154 "parse.y"
+{
+               (yyvsp[-7])->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+               (yyvsp[-7])->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-7];}
+    break;
+case 19:
+#line 159 "parse.y"
+{
+               (yyvsp[-3])->n_x.v_subs[0]=(struct node *)0;
+               (yyvsp[-3])->n_x.v_subs[1]=yyvsp[-1];
+               yyval=yyvsp[-3]; }
+    break;
+case 20:
+#line 163 "parse.y"
+{
+               yyvsp[-3]->comp_value=IF;
+               yyvsp[-3]->n_x.v_subs[0]=yyvsp[-1];
+               yyvsp[-3]->n_x.v_subs[1]=yyvsp[0];
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-4];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[-2];
+               yyval=yyvsp[-3]; }
+    break;
+case 21:
+#line 174 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 22:
+#line 178 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 23:
+#line 182 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 24:
+#line 186 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 25:
+#line 190 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 26:
+#line 194 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 27:
+#line 198 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 28:
+#line 202 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 29:
+#line 206 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 30:
+#line 210 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 31:
+#line 214 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 32:
+#line 218 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 33:
+#line 222 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+               yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+               yyval = yyvsp[-1]; }
+    break;
+case 34:
+#line 226 "parse.y"
+{
+               if(yyvsp[0]->comp_value==CONST_FLT) {
+                       yyvsp[0]->n_x.v_float= -(yyvsp[0]->n_x.v_float);
+                       /* free($1); */
+                       yyval=yyvsp[0];
+               } else if(yyvsp[0]->comp_value==CONST_INT) {
+                       yyvsp[0]->n_x.v_int= -(yyvsp[0]->n_x.v_int);
+                       /* free($1); */
+                       yyval=yyvsp[0];
+               } else {
+                       yyvsp[-1]->comp_value = NEGATE;
+                       yyvsp[-1]->n_x.v_subs[0]=yyvsp[0];
+                       yyvsp[-1]->n_x.v_subs[1]=(struct node *)0;
+                       yyval = yyvsp[-1];
+               } }
+    break;
+case 35:
+#line 241 "parse.y"
+{
+               yyvsp[-1]->n_x.v_subs[0]=yyvsp[0];
+               yyvsp[-1]->n_x.v_subs[1]=(struct node *)0;
+               yyval = yyvsp[-1]; }
+    break;
+case 36:
+#line 246 "parse.y"
+{ yyval = yyvsp[-1]; }
+    break;
+case 37:
+#line 247 "parse.y"
+{
+               if(!parse_error)
+                       parse_error=NO_CLOSE;
+               }
+    break;
+case 38:
+#line 255 "parse.y"
+{
+               if(!parse_error)
+                       parse_error=NO_CLOSE;
+               }
+    break;
+case 39:
+#line 263 "parse.y"
+{ yyval = make_list(yyvsp[0], 0); }
+    break;
+case 40:
+#line 265 "parse.y"
+{ yyval = make_list(yyvsp[0], yyvsp[-2]); }
+    break;
+case 43:
+#line 273 "parse.y"
+{ yyval=make_list(yyvsp[0], 0); }
+    break;
+case 44:
+#line 275 "parse.y"
+{ yyval=make_list(yyvsp[0],yyvsp[-2]); }
+    break;
+case 45:
+#line 279 "parse.y"
+{ yyval=yyvsp[0]; }
+    break;
+}
+
+#line 727 "/usr/share/bison/bison.simple"
+
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+#if YYLSP_NEEDED
+  yylsp -= yylen;
+#endif
+
+#if YYDEBUG
+  if (yydebug)
+    {
+      short *yyssp1 = yyss - 1;
+      YYFPRINTF (stderr, "state stack now");
+      while (yyssp1 != yyssp)
+       YYFPRINTF (stderr, " %d", *++yyssp1);
+      YYFPRINTF (stderr, "\n");
+    }
+#endif
+
+  *++yyvsp = yyval;
+#if YYLSP_NEEDED
+  *++yylsp = yyloc;
+#endif
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTBASE];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (yyn > YYFLAG && yyn < YYLAST)
+       {
+         YYSIZE_T yysize = 0;
+         char *yymsg;
+         int yyx, yycount;
+
+         yycount = 0;
+         /* Start YYX at -YYN if negative to avoid negative indexes in
+            YYCHECK.  */
+         for (yyx = yyn < 0 ? -yyn : 0;
+              yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+           if (yycheck[yyx + yyn] == yyx)
+             yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+         yysize += yystrlen ("parse error, unexpected ") + 1;
+         yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
+         yymsg = (char *) YYSTACK_ALLOC (yysize);
+         if (yymsg != 0)
+           {
+             char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
+             yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
+
+             if (yycount < 5)
+               {
+                 yycount = 0;
+                 for (yyx = yyn < 0 ? -yyn : 0;
+                      yyx < (int) (sizeof (yytname) / sizeof (char *));
+                      yyx++)
+                   if (yycheck[yyx + yyn] == yyx)
+                     {
+                       const char *yyq = ! yycount ? ", expecting " : " or ";
+                       yyp = yystpcpy (yyp, yyq);
+                       yyp = yystpcpy (yyp, yytname[yyx]);
+                       yycount++;
+                     }
+               }
+             yyerror (yymsg);
+             YYSTACK_FREE (yymsg);
+           }
+         else
+           yyerror ("parse error; also virtual memory exhausted");
+       }
+      else
+#endif /* defined (YYERROR_VERBOSE) */
+       yyerror ("parse error");
+    }
+  goto yyerrlab1;
+
+
+/*--------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action |
+`--------------------------------------------------*/
+yyerrlab1:
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse lookahead token after an
+        error, discard it.  */
+
+      /* return failure if at end of input */
+      if (yychar == YYEOF)
+       YYABORT;
+      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
+                 yychar, yytname[yychar1]));
+      yychar = YYEMPTY;
+    }
+
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
+
+  yyerrstatus = 3;             /* Each real token shifted decrements this */
+
+  goto yyerrhandle;
+
+
+/*-------------------------------------------------------------------.
+| yyerrdefault -- current state does not do anything special for the |
+| error token.                                                       |
+`-------------------------------------------------------------------*/
+yyerrdefault:
+#if 0
+  /* This is wrong; only states that explicitly want error tokens
+     should shift them.  */
+
+  /* If its default is to accept any token, ok.  Otherwise pop it.  */
+  yyn = yydefact[yystate];
+  if (yyn)
+    goto yydefault;
+#endif
+
+
+/*---------------------------------------------------------------.
+| yyerrpop -- pop the current state because it cannot handle the |
+| error token                                                    |
+`---------------------------------------------------------------*/
+yyerrpop:
+  if (yyssp == yyss)
+    YYABORT;
+  yyvsp--;
+  yystate = *--yyssp;
+#if YYLSP_NEEDED
+  yylsp--;
+#endif
+
+#if YYDEBUG
+  if (yydebug)
+    {
+      short *yyssp1 = yyss - 1;
+      YYFPRINTF (stderr, "Error: state stack now");
+      while (yyssp1 != yyssp)
+       YYFPRINTF (stderr, " %d", *++yyssp1);
+      YYFPRINTF (stderr, "\n");
+    }
+#endif
+
+/*--------------.
+| yyerrhandle.  |
+`--------------*/
+yyerrhandle:
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yyerrdefault;
+
+  yyn += YYTERROR;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+    goto yyerrdefault;
+
+  yyn = yytable[yyn];
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+       goto yyerrpop;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrpop;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  YYDPRINTF ((stderr, "Shifting error token, "));
+
+  *++yyvsp = yylval;
+#if YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+/*---------------------------------------------.
+| yyoverflowab -- parser overflow comes here.  |
+`---------------------------------------------*/
+yyoverflowlab:
+  yyerror ("parser stack overflow");
+  yyresult = 2;
+  /* Fall through.  */
+
+yyreturn:
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+#line 282 "parse.y"
+
+
+void
+yyerror FUN1(char *, s)
+{
+       if(!parse_error)
+               parse_error=PARSE_ERR;
+}
+
+YYSTYPE
+make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)
+{
+       YYSTYPE ret;
+
+       ret=(YYSTYPE)obstack_alloc(&tmp_mem,sizeof(*ret));
+       ret->comp_value = 0;
+       ret->n_x.v_subs[0]=car;
+       ret->n_x.v_subs[1]=cdr;
+       return ret;
+}
+
+#define ERROR -1
+
+extern struct node *yylval;
+
+#ifdef __STDC__
+unsigned char parse_cell_or_range (char **,struct rng *);
+#else
+unsigned char parse_cell_or_range ();
+#endif
+
+int
+yylex FUN0()
+{
+       int ch;
+       struct node *new;
+       int isflt;
+       char *begin;
+       char *tmp_str;
+       unsigned char byte_value;
+       int n;
+
+       /* unsigned char *ptr; */
+       int nn;
+       struct function *fp;
+       int tmp_ch;
+
+#ifdef TEST
+       if(!instr)
+               return ERROR;
+#endif
+       while(isspace(*instr))
+               instr++;
+       ch = *instr++;
+       if(ch=='(' || ch==',' || ch==')')
+               return ch;
+
+       new=(struct node *)obstack_alloc(&tmp_mem,sizeof(struct node));
+       new->add_byte=0;
+       new->sub_value=0;
+       switch(ch) {
+       case 0:
+               return 0;
+
+       case '0': case '1': case '2': case '3': case '4': case '5': case '6':
+       case '7': case '8': case '9': case '.':
+               isflt = (ch=='.');
+
+               begin=instr-1;
+               tmp_str=instr;
+
+               while(isdigit(*tmp_str) || (!isflt && *tmp_str=='.' && ++isflt))
+                       tmp_str++;
+               if(*tmp_str=='e' || *tmp_str=='E') {
+                       isflt=1;
+                       tmp_str++;
+                       if(*tmp_str=='-' || *tmp_str=='+')
+                               tmp_str++;
+                       while(isdigit(*tmp_str))
+                               tmp_str++;
+               }
+               if(isflt) {
+                       new->n_x.v_float=astof((char **)(&begin));
+                       byte_value=CONST_FLT;
+               } else {
+                       new->n_x.v_int=astol((char **)(&begin));
+                       if(begin!=tmp_str) {
+                               begin=instr-1;
+                               new->n_x.v_float=astof((char **)(&begin));
+                               byte_value=CONST_FLT;
+                       } else
+                               byte_value=CONST_INT;
+               }
+               ch=L_CONST;
+               instr=begin;
+               break;
+
+       case '"':
+               begin=instr;
+               while(*instr && *instr!='"') {
+                       if(*instr=='\\' && instr[1])
+                               instr++;
+                       instr++;
+               }
+               if(!*instr) {
+                       parse_error=NO_QUOTE;
+                       return ERROR;
+               }
+               tmp_str=new->n_x.v_string=(char *)ck_malloc(1+instr-begin);
+               while(begin!=instr) {
+                       unsigned char n;
+
+                       if(*begin=='\\') {
+                               begin++;
+                               if(begin[0]>='0' && begin[0]<='7') {
+                                       if(begin[1]>='0' && begin[1]<='7') {
+                                               if(begin[2]>='0' && 
begin[2]<='7') {
+                                                       n=(begin[2]-'0') + (010 
* (begin[1]-'0')) + ( 0100 * (begin[0]-'0'));
+                                                       begin+=3;
+                                               } else {
+                                                       n=(begin[1]-'0') + (010 
* (begin[0]-'0'));
+                                                       begin+=2;
+                                               }
+                                       } else {
+                                               n=begin[0]-'0';
+                                               begin++;
+                                       }
+                               } else
+                                       n= *begin++;
+                               *tmp_str++= n;
+                       } else
+                               *tmp_str++= *begin++;
+               }
+               *tmp_str='\0';
+               instr++;
+               byte_value=CONST_STR;
+               ch=L_CONST;
+               break;
+
+       case '+':       case '-':
+
+       case '*':       case '/':       case '%':       case '&':
+       /* case '|': */ case '^':       case '=':
+
+       case '?':
+       {
+               unsigned char *ptr;
+
+               for(ptr= fnin;*ptr;ptr++)
+                       if(the_funs[*ptr].fn_str[0]==ch)
+                               break;
+#ifdef TEST
+               if(!*ptr)
+                       panic("Can't find fnin[] entry for '%c'",ch);
+#endif
+               byte_value= *ptr;
+       }
+               break;
+
+       case ':':
+               byte_value=IF;
+               break;
+
+       case '!':
+       case '<':
+       case '>':
+               if(*instr!='=') {
+                       byte_value = (ch=='<') ? LESS : (ch=='>') ? GREATER : 
NOT;
+                       break;
+               }
+               instr++;
+               byte_value = (ch=='<') ? LESSEQ : (ch=='>') ? GREATEQ : 
NOTEQUAL;
+               ch = (ch=='<') ? LE : (ch=='>') ? GE : NE;
+               break;
+
+       case '\'':
+       case ';':
+       case '[':
+       case '\\':
+       case ']':
+       case '`':
+       case '{':
+       case '}':
+       case '~':
+       bad_chr:
+               parse_error=BAD_CHAR;
+               return ERROR;
+
+       case '#':
+               begin=instr-1;
+               while(*instr && (isalnum(*instr) || *instr=='_'))
+                       instr++;
+               ch= *instr;
+               *instr=0;
+               if(!stricmp(begin,tname))
+                       byte_value=F_TRUE;
+               else if(!stricmp(begin,fname))
+                       byte_value=F_FALSE;
+               else if(!stricmp(begin,iname) && (begin[4]==0 || 
!stricmp(begin+4,"inity")))
+                       byte_value=CONST_INF;
+               else if(!stricmp(begin,mname) ||
+                       !stricmp(begin,"#ninf"))
+                       byte_value=CONST_NINF;
+               else if(!stricmp(begin,nname) ||
+                       !stricmp(begin,"#nan"))
+                       byte_value=CONST_NAN;
+               else {
+                       for(n=1;n<=ERR_MAX;n++)
+                               if(!stricmp(begin,ename[n]))
+                                       break;
+                       if(n>ERR_MAX)
+                               n=BAD_CHAR;
+                       new->n_x.v_int=n;
+                       byte_value=CONST_ERR;
+               }
+               *instr=ch;
+               ch=L_CONST;
+               break;
+
+       default:
+               if(!a0 && (ch=='@' || ch=='$'))
+                  goto bad_chr;
+
+               if(a0 && ch=='@') {
+                       begin=instr;
+                       while(*instr && (isalpha(*instr) || isdigit(*instr) || 
*instr=='_'))
+                               instr++;
+                       n=instr-begin;
+               } else {
+                       begin=instr-1;
+                       
byte_value=parse_cell_or_range(&begin,&(new->n_x.v_rng));
+                       if(byte_value) {
+                               if((byte_value& ~0x3)==R_CELL)
+                                       ch=L_CELL;
+                               else
+                                       ch=L_RANGE;
+                               instr=begin;
+                               break;
+                       }
+
+                       while(*instr && (isalpha(*instr) || isdigit(*instr) || 
*instr=='_'))
+                               instr++;
+
+                       n=instr-begin;
+                       while(isspace(*instr))
+                               instr++;
+
+                       if(*instr!='(') {
+                               ch=L_VAR;
+                               byte_value=VAR;
+                               new->n_x.v_var=find_or_make_var(begin,n);
+                               break;
+                       }
+               }
+               tmp_ch=begin[n];
+               begin[n]='\0';
+               fp=hash_find(parse_hash,begin);
+               begin[n]=tmp_ch;
+               byte_value= ERROR;
+               if(!fp) {
+                       parse_error=BAD_FUNC;
+                       return ERROR;
+               }
+
+               if(fp>=the_funs && fp<=&the_funs[USR1])
+                       byte_value=fp-the_funs;
+               else {
+                       for(nn=0;nn<n_usr_funs;nn++) {
+                               if(fp>=&usr_funs[nn][0] && 
fp<=&usr_funs[nn][usr_n_funs[nn]]) {
+                                       byte_value=USR1+nn;
+                                       new->sub_value=fp-&usr_funs[nn][0];
+                                       break;
+                               }
+                       }
+#ifdef TEST
+                       if(nn==n_usr_funs) {
+                               io_error_msg("Couln't turn fp into a ##");
+                               parse_error=BAD_FUNC;
+                               return ERROR;
+                       }
+#endif
+               }
+
+               if(fp->fn_argn&X_J)
+                       ch= byte_value==F_IF ? L_FN3 : L_FN2;
+               else if(fp->fn_argt[0]=='R' || fp->fn_argt[0]=='E')
+                       ch=L_FN1R-1+fp->fn_argn-X_A0;
+               else
+                       ch=L_FN0 + fp->fn_argn-X_A0;
+
+               break;
+       }
+       /* new->node_type=ch; */
+       new->comp_value=byte_value;
+       yylval=new;
+       return ch;
+}
+
+/* Return value is
+       0 if it doesn't look like a cell or a range,
+       R_CELL if it is a cell (ptr now points past the characters, lr and lc 
hold the row and col of the cell)
+       RANGE if it is a range (ptr points past the chars)
+ */
+unsigned char
+parse_cell_or_range FUN2(char **,ptr, struct rng *,retp)
+{
+       if(a0) {
+               unsigned tmpc,tmpr;
+               char *p;
+               int abz = ROWREL|COLREL;
+
+               p= *ptr;
+               tmpc=0;
+               if(*p=='$') {
+                       abz-=COLREL;
+                       p++;
+               }
+               if(!isalpha(*p))
+                       return 0;
+               tmpc=str_to_col(&p);
+               if(tmpc<MIN_COL || tmpc>MAX_COL)
+                       return 0;
+               if(*p=='$') {
+                       abz-=ROWREL;
+                       p++;
+               }
+               if(!isdigit(*p))
+                       return 0;
+               for(tmpr=0;isdigit(*p);p++)
+                       tmpr=tmpr*10 + *p - '0';
+
+               if(tmpr<MIN_ROW || tmpr>MAX_ROW)
+                       return 0;
+
+               if(*p==':' || *p=='.') {
+                       unsigned tmpc1,tmpr1;
+
+                       abz = ((abz&COLREL) ? LCREL : 0)|((abz&ROWREL) ? LRREL 
: 0)|HRREL|HCREL;
+                       p++;
+                       if(*p=='$') {
+                               abz-=HCREL;
+                               p++;
+                       }
+                       if(!isalpha(*p))
+                               return 0;
+                       tmpc1=str_to_col(&p);
+                       if(tmpc1<MIN_COL || tmpc1>MAX_COL)
+                               return 0;
+                       if(*p=='$') {
+                               abz-=HRREL;
+                               p++;
+                       }
+                       if(!isdigit(*p))
+                               return 0;
+                       for(tmpr1=0;isdigit(*p);p++)
+                               tmpr1=tmpr1*10 + *p - '0';
+                       if(tmpr1<MIN_ROW || tmpr1>MAX_ROW)
+                               return 0;
+
+                       if(tmpr<tmpr1) {
+                               retp->lr=tmpr;
+                               retp->hr=tmpr1;
+                       } else {
+                               retp->lr=tmpr1;
+                               retp->hr=tmpr;
+                       }
+                       if(tmpc<tmpc1) {
+                               retp->lc=tmpc;
+                               retp->hc=tmpc1;
+                       } else {
+                               retp->lc=tmpc1;
+                               retp->hc=tmpc;
+                       }
+                       *ptr= p;
+                       return RANGE | abz;
+               }
+               retp->lr = retp->hr = tmpr;
+               retp->lc = retp->hc = tmpc;
+               *ptr=p;
+               return R_CELL | abz;
+       } else {
+               char *p;
+               unsigned char retr;
+               unsigned char retc;
+               int ended;
+               long num;
+               CELLREF tmp;
+
+#define CK_ABS_R(x)    if((x)<MIN_ROW || (x)>MAX_ROW)  \
+                               return 0;               \
+                       else
+
+#define CK_REL_R(x)    if(   ((x)>0 && MAX_ROW-(x)<cur_row)    \
+                          || ((x)<0 && MIN_ROW-(x)>cur_row))   \
+                               return 0;                       \
+                       else
+
+#define CK_ABS_C(x)    if((x)<MIN_COL || (x)>MAX_COL)  \
+                               return 0;               \
+                       else
+
+#define CK_REL_C(x)    if(   ((x)>0 && MAX_COL-(x)<cur_col)    \
+                          || ((x)<0 && MIN_COL-(x)>cur_col))   \
+                               return 0;                       \
+                       else
+
+#define MAYBEREL(p) (*(p)=='[' && (isdigit((p)[1]) || (((p)[1]=='+' || 
(p)[1]=='-') && isdigit((p)[2]))))
+
+               p= *ptr;
+               retr=0;
+               retc=0;
+               ended=0;
+               while(ended==0) {
+                       switch(*p) {
+                       case 'r':
+                       case 'R':
+                               if(retr) {
+                                       ended++;
+                                       break;
+                               }
+                               p++;
+                               retr=R_CELL;
+                               if(isdigit(*p)) {
+                                       num=astol(&p);
+                                       CK_ABS_R(num);
+                                       retp->lr= retp->hr=num;
+                               } else if(MAYBEREL(p)) {
+                                       p++;
+                                       num=astol(&p);
+                                       CK_REL_R(num);
+                                       retp->lr= retp->hr=num+cur_row;
+                                       retr|=ROWREL;
+                                       if(*p==':') {
+                                               retr=RANGE|LRREL|HRREL;
+                                               p++;
+                                               num=astol(&p);
+                                               CK_REL_R(num);
+                                               retp->hr=num+cur_row;
+                                       }
+                                       if(*p++!=']')
+                                               return 0;
+                               } else if(retc || *p=='c' || *p=='C') {
+                                       retr|=ROWREL;
+                                       retp->lr= retp->hr=cur_row;
+                               } else
+                                       return 0;
+                               if(*p==':' && retr!=(RANGE|LRREL|HRREL)) {
+                                       retr= (retr&ROWREL) ? RANGE|LRREL : 
RANGE;
+                                       p++;
+                                       if(isdigit(*p)) {
+                                               num=astol(&p);
+                                               CK_ABS_R(num);
+                                               retp->hr=num;
+                                       } else if(MAYBEREL(p)) {
+                                               p++;
+                                               num=astol(&p);
+                                               CK_REL_R(num);
+                                               retp->hr=num+cur_row;
+                                               retr|=HRREL;
+                                               if(*p++!=']')
+                                                       return 0;
+                                       } else
+                                               return 0;
+                               }
+
+                               if(retc)
+                                       ended++;
+                               break;
+
+                       case 'c':
+                       case 'C':
+                               if(retc) {
+                                       ended++;
+                                       break;
+                               }
+                               p++;
+                               retc=R_CELL;
+                               if(isdigit(*p)) {
+                                       num=astol(&p);
+                                       CK_ABS_C(num);
+                                       retp->lc= retp->hc=num;
+                               } else if(MAYBEREL(p)) {
+                                       p++;
+                                       num=astol(&p);
+                                       CK_REL_C(num);
+                                       retp->lc= retp->hc=num+cur_col;
+                                       retc|=COLREL;
+                                       if(*p==':') {
+                                               retc=RANGE|LCREL|HCREL;
+                                               p++;
+                                               num=astol(&p);
+                                               CK_REL_C(num);
+                                               retp->hc=num+cur_col;
+                                       }
+                                       if(*p++!=']')
+                                               return 0;
+                               } else if(retr || *p=='r' || *p=='R') {
+                                       retc|=COLREL;
+                                       retp->lc= retp->hc=cur_col;
+                               } else
+                                       return 0;
+                               if(*p==':' && retc!=(RANGE|LCREL|HCREL)) {
+                                       retc= (retc&COLREL) ? RANGE|LCREL : 
RANGE;
+                                       p++;
+                                       if(isdigit(*p)) {
+                                               num=astol(&p);
+                                               CK_ABS_C(num);
+                                               retp->hc=num;
+                                       } else if(MAYBEREL(p)) {
+                                               p++;
+                                               num=astol(&p);
+                                               CK_REL_C(num);
+                                               retp->hc=num+cur_col;
+                                               retc|=HCREL;
+                                               if(*p++!=']')
+                                                       return 0;
+                                       } else
+                                               return 0;
+                               }
+
+                               if(retr)
+                                       ended++;
+                               break;
+                       default:
+                               if(retr) {
+                                       *ptr=p;
+                                       retp->lc=MIN_COL;
+                                       retp->hc=MAX_COL;
+                                       if((retr|ROWREL)==(R_CELL|ROWREL))
+                                               return (retr&ROWREL) ? 
(RANGE|LRREL|HRREL) : RANGE;
+                                       else
+                                               return retr;
+                               } else if(retc) {
+                                       *ptr=p;
+                                       retp->lr=MIN_ROW;
+                                       retp->hr=MAX_COL;
+                                       if((retc|COLREL)==(R_CELL|COLREL))
+                                               return (retc&COLREL) ? 
(RANGE|LCREL|HCREL) : RANGE;
+                                       else
+                                               return retc;
+                               }
+                               return 0;
+                       }
+               }
+               if(!retr || !retc)
+                       return 0;
+               *ptr=p;
+               if(retp->lr>retp->hr)
+                       tmp=retp->lr,retp->lr=retp->hr,retp->hr=tmp;
+               if(retp->lc>retp->hc)
+                       tmp=retp->lc,retp->lc=retp->hc,retp->hc=tmp;
+
+               if((retr|ROWREL)==(R_CELL|ROWREL)) {
+                       if((retc|COLREL)==(R_CELL|COLREL))
+                               return retr|retc;
+                       return (retr&ROWREL) ? (retc|LRREL|HRREL) : retc;
+               }
+               if((retc|COLREL)==(R_CELL|COLREL))
+                       return (retc&COLREL) ? (retr|LCREL|HCREL) : retr;
+               return retr|retc;
+       }
+}
+
+int
+str_to_col FUN1(char **,str)
+{
+       int ret;
+       char c,cc,ccc;
+#if MAX_COL>702
+       char cccc;
+#endif
+
+       ret=0;
+       c=str[0][0];
+       if(!isalpha((cc=str[0][1]))) {
+               (*str)++;
+               return MIN_COL + (isupper(c) ? c-'A' : c-'a');
+       }
+       if(!isalpha((ccc=str[0][2]))) {
+               (*str)+=2;
+               return MIN_COL+26 + (isupper(c) ? c-'A' : c-'a')*26 + 
(isupper(cc) ? cc-'A' : cc-'a');
+       }
+#if MAX_COL>702
+       if(!isalpha((cccc=str[0][3]))) {
+               (*str)+=3;
+               return MIN_COL+702 + (isupper(c) ? c-'A' : c-'a')*26*26 + 
(isupper(cc) ? cc-'A' : cc-'a')*26 + (isupper(ccc) ? ccc-'A' : ccc-'a');
+       }
+       if(!isalpha(str[0][4])) {
+               (*str)+=4;
+               return MIN_COL+18278 + (isupper(c) ? c-'A' : c-'a')*26*26*26 + 
(isupper(cc) ? cc-'A' : cc-'a')*26*26 + (isupper(ccc) ? ccc-'A' : ccc-'a')*26 + 
(isupper(cccc) ? cccc-'A' : cccc-'a');
+       }
+#endif
+       return 0;
+}
diff --git a/test/etags/y-src/parse.y b/test/etags/y-src/parse.y
new file mode 100644
index 0000000..75fd787
--- /dev/null
+++ b/test/etags/y-src/parse.y
@@ -0,0 +1,875 @@
+%{
+/*     Copyright (C) 1990, 1992, 1993 Free Software Foundation, Inc.
+
+This file is part of Oleo, the GNU Spreadsheet.
+
+Oleo 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 2, or (at your option)
+any later version.
+
+Oleo 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 Oleo; see the file COPYING.  If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+%}
+
+
+%right '?' ':'
+/* %left '|' */
+%left '&'
+%nonassoc '=' NE
+%nonassoc '<' LE '>' GE
+%left '+' '-'
+%left '*' '/' '%'
+%right '^'
+%left NEG '!'
+
+%token L_CELL L_RANGE
+%token L_VAR
+
+%token L_CONST
+%token L_FN0   L_FN1   L_FN2   L_FN3   L_FN4   L_FNN
+%token L_FN1R  L_FN2R  L_FN3R  L_FN4R  L_FNNR
+
+%token L_LE    L_NE    L_GE
+
+%{
+#include "funcdef.h"
+
+#include <ctype.h>
+
+#define obstack_chunk_alloc ck_malloc
+#define obstack_chunk_free free
+#include "obstack.h"
+#include "sysdef.h"
+
+#include "global.h"
+#include "errors.h"
+#include "node.h"
+#include "eval.h"
+#include "ref.h"
+
+int yylex ();
+#ifdef __STDC__
+void yyerror (char *);
+#else
+void yyerror ();
+#endif
+VOIDSTAR parse_hash;
+extern VOIDSTAR hash_find();
+
+/* This table contains a list of the infix single-char functions */
+unsigned char fnin[] = {
+       SUM, DIFF, DIV, PROD, MOD, /* AND, OR, */ POW, EQUAL, IF, CONCAT, 0
+};
+
+#define YYSTYPE _y_y_s_t_y_p_e
+typedef struct node *YYSTYPE;
+YYSTYPE parse_return;
+#ifdef __STDC__
+YYSTYPE make_list (YYSTYPE, YYSTYPE);
+#else
+YYSTYPE make_list ();
+#endif
+
+char *instr;
+int parse_error = 0;
+extern struct obstack tmp_mem;
+
+%}
+%%
+line:  exp
+               { parse_return=$1; }
+       | error {
+               if(!parse_error)
+                       parse_error=PARSE_ERR;
+               parse_return=0; }
+       ;
+
+exp:     L_CONST
+       | cell
+       | L_FN0 '(' ')' {
+               $$=$1; }
+       | L_FN1 '(' exp ')' {
+               ($1)->n_x.v_subs[0]=$3;
+               ($1)->n_x.v_subs[1]=(struct node *)0;
+               $$=$1; }
+       | L_FN2 '(' exp ',' exp ')' {
+               ($1)->n_x.v_subs[0]=$3;
+               ($1)->n_x.v_subs[1]=$5;
+               $$=$1; }
+       | L_FN3 '(' exp ',' exp ',' exp ')' {
+               ($1)->n_x.v_subs[0]=make_list($3,$5);
+               ($1)->n_x.v_subs[1]=$7;
+               $$=$1;}
+       | L_FN4 '(' exp ',' exp ',' exp ',' exp ')' {
+               ($1)->n_x.v_subs[0]=make_list($3,$5);
+               ($1)->n_x.v_subs[1]=make_list($7,$9);
+               $$=$1;}
+       | L_FNN '(' exp_list ')' {
+               ($1)->n_x.v_subs[0]=(struct node *)0;
+               ($1)->n_x.v_subs[1]=$3;
+               $$=$1; }
+       | L_FN1R '(' L_RANGE ')' {
+               $1->n_x.v_subs[0]=$3;
+               $$=$1; }
+       | L_FN1R '(' L_VAR ')' {
+               $1->n_x.v_subs[0]=$3;
+               $$=$1; }
+
+       | L_FN2R '(' L_RANGE ',' exp ')' {
+               $1->n_x.v_subs[0]=$3;
+               $1->n_x.v_subs[1]=$5;
+               $$=$1; }
+       | L_FN2R '(' L_VAR ',' exp ')' {
+               $1->n_x.v_subs[0]=$3;
+               $1->n_x.v_subs[1]=$5;
+               $$=$1; }
+
+       /* JF:  These should be FN2R, but I'm hacking this for SYLNK */
+       | L_FN2R '(' L_RANGE ',' exp ',' exp ')' {
+               if($1->comp_value!=F_INDEX)
+                       parse_error=PARSE_ERR;
+               $1->comp_value=F_INDEX2;
+               $1->n_x.v_subs[0]=make_list($3,$5);
+               $1->n_x.v_subs[1]=$7;
+               $$=$1; }
+       | L_FN2R '(' L_VAR ',' exp ',' exp ')' {
+               if($1->comp_value!=F_INDEX)
+                       parse_error=PARSE_ERR;
+               $1->comp_value=F_INDEX2;
+               $1->n_x.v_subs[0]=make_list($3,$5);
+               $1->n_x.v_subs[1]=$7;
+               $$=$1; }
+
+       | L_FN3R '(' L_RANGE ',' exp ',' exp ')' {
+               ($1)->n_x.v_subs[0]=make_list($3,$5);
+               ($1)->n_x.v_subs[1]=$7;
+               $$=$1;}
+       | L_FN3R '(' L_VAR ',' exp ',' exp ')' {
+               ($1)->n_x.v_subs[0]=make_list($3,$5);
+               ($1)->n_x.v_subs[1]=$7;
+               $$=$1;}
+
+       | L_FNNR '(' range_exp_list ')' {
+               ($1)->n_x.v_subs[0]=(struct node *)0;
+               ($1)->n_x.v_subs[1]=$3;
+               $$=$1; }
+       | exp '?' exp ':' exp {
+               $2->comp_value=IF;
+               $2->n_x.v_subs[0]=$4;
+               $2->n_x.v_subs[1]=$5;
+               $4->n_x.v_subs[0]=$1;
+               $4->n_x.v_subs[1]=$3;
+               $$=$2; }
+       /* | exp '|' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; } */
+       | exp '&' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp '<' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp LE exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp '=' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp NE exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp '>' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp GE exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp '+' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp '-' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp '*' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp '/' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp '%' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | exp '^' exp {
+               $2->n_x.v_subs[0]=$1;
+               $2->n_x.v_subs[1]=$3;
+               $$ = $2; }
+       | '-' exp %prec NEG {
+               if($2->comp_value==CONST_FLT) {
+                       $2->n_x.v_float= -($2->n_x.v_float);
+                       /* free($1); */
+                       $$=$2;
+               } else if($2->comp_value==CONST_INT) {
+                       $2->n_x.v_int= -($2->n_x.v_int);
+                       /* free($1); */
+                       $$=$2;
+               } else {
+                       $1->comp_value = NEGATE;
+                       $1->n_x.v_subs[0]=$2;
+                       $1->n_x.v_subs[1]=(struct node *)0;
+                       $$ = $1;
+               } }
+       | '!' exp {
+               $1->n_x.v_subs[0]=$2;
+               $1->n_x.v_subs[1]=(struct node *)0;
+               $$ = $1; }
+       | '(' exp ')'
+               { $$ = $2; }
+       | '(' exp error {
+               if(!parse_error)
+                       parse_error=NO_CLOSE;
+               }
+       /* | exp ')' error {
+               if(!parse_error)
+                       parse_error=NO_OPEN;
+               } */
+       | '(' error {
+               if(!parse_error)
+                       parse_error=NO_CLOSE;
+               }
+       ;
+
+
+exp_list: exp
+               { $$ = make_list($1, 0); }
+       | exp_list ',' exp
+               { $$ = make_list($3, $1); }
+       ;
+
+range_exp: L_RANGE
+       | exp
+       ;
+
+range_exp_list: range_exp
+               { $$=make_list($1, 0); }
+       |   range_exp_list ',' range_exp
+               { $$=make_list($3,$1); }
+       ;
+
+cell:  L_CELL
+               { $$=$1; }
+       | L_VAR
+       ;
+%%
+
+void
+yyerror FUN1(char *, s)
+{
+       if(!parse_error)
+               parse_error=PARSE_ERR;
+}
+
+YYSTYPE
+make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)
+{
+       YYSTYPE ret;
+
+       ret=(YYSTYPE)obstack_alloc(&tmp_mem,sizeof(*ret));
+       ret->comp_value = 0;
+       ret->n_x.v_subs[0]=car;
+       ret->n_x.v_subs[1]=cdr;
+       return ret;
+}
+
+#define ERROR -1
+
+extern struct node *yylval;
+
+#ifdef __STDC__
+unsigned char parse_cell_or_range (char **,struct rng *);
+#else
+unsigned char parse_cell_or_range ();
+#endif
+
+int
+yylex FUN0()
+{
+       int ch;
+       struct node *new;
+       int isflt;
+       char *begin;
+       char *tmp_str;
+       unsigned char byte_value;
+       int n;
+
+       /* unsigned char *ptr; */
+       int nn;
+       struct function *fp;
+       int tmp_ch;
+
+#ifdef TEST
+       if(!instr)
+               return ERROR;
+#endif
+       while(isspace(*instr))
+               instr++;
+       ch = *instr++;
+       if(ch=='(' || ch==',' || ch==')')
+               return ch;
+
+       new=(struct node *)obstack_alloc(&tmp_mem,sizeof(struct node));
+       new->add_byte=0;
+       new->sub_value=0;
+       switch(ch) {
+       case 0:
+               return 0;
+
+       case '0': case '1': case '2': case '3': case '4': case '5': case '6':
+       case '7': case '8': case '9': case '.':
+               isflt = (ch=='.');
+
+               begin=instr-1;
+               tmp_str=instr;
+
+               while(isdigit(*tmp_str) || (!isflt && *tmp_str=='.' && ++isflt))
+                       tmp_str++;
+               if(*tmp_str=='e' || *tmp_str=='E') {
+                       isflt=1;
+                       tmp_str++;
+                       if(*tmp_str=='-' || *tmp_str=='+')
+                               tmp_str++;
+                       while(isdigit(*tmp_str))
+                               tmp_str++;
+               }
+               if(isflt) {
+                       new->n_x.v_float=astof((char **)(&begin));
+                       byte_value=CONST_FLT;
+               } else {
+                       new->n_x.v_int=astol((char **)(&begin));
+                       if(begin!=tmp_str) {
+                               begin=instr-1;
+                               new->n_x.v_float=astof((char **)(&begin));
+                               byte_value=CONST_FLT;
+                       } else
+                               byte_value=CONST_INT;
+               }
+               ch=L_CONST;
+               instr=begin;
+               break;
+
+       case '"':
+               begin=instr;
+               while(*instr && *instr!='"') {
+                       if(*instr=='\\' && instr[1])
+                               instr++;
+                       instr++;
+               }
+               if(!*instr) {
+                       parse_error=NO_QUOTE;
+                       return ERROR;
+               }
+               tmp_str=new->n_x.v_string=(char *)ck_malloc(1+instr-begin);
+               while(begin!=instr) {
+                       unsigned char n;
+
+                       if(*begin=='\\') {
+                               begin++;
+                               if(begin[0]>='0' && begin[0]<='7') {
+                                       if(begin[1]>='0' && begin[1]<='7') {
+                                               if(begin[2]>='0' && 
begin[2]<='7') {
+                                                       n=(begin[2]-'0') + (010 
* (begin[1]-'0')) + ( 0100 * (begin[0]-'0'));
+                                                       begin+=3;
+                                               } else {
+                                                       n=(begin[1]-'0') + (010 
* (begin[0]-'0'));
+                                                       begin+=2;
+                                               }
+                                       } else {
+                                               n=begin[0]-'0';
+                                               begin++;
+                                       }
+                               } else
+                                       n= *begin++;
+                               *tmp_str++= n;
+                       } else
+                               *tmp_str++= *begin++;
+               }
+               *tmp_str='\0';
+               instr++;
+               byte_value=CONST_STR;
+               ch=L_CONST;
+               break;
+
+       case '+':       case '-':
+
+       case '*':       case '/':       case '%':       case '&':
+       /* case '|': */ case '^':       case '=':
+
+       case '?':
+       {
+               unsigned char *ptr;
+
+               for(ptr= fnin;*ptr;ptr++)
+                       if(the_funs[*ptr].fn_str[0]==ch)
+                               break;
+#ifdef TEST
+               if(!*ptr)
+                       panic("Can't find fnin[] entry for '%c'",ch);
+#endif
+               byte_value= *ptr;
+       }
+               break;
+
+       case ':':
+               byte_value=IF;
+               break;
+
+       case '!':
+       case '<':
+       case '>':
+               if(*instr!='=') {
+                       byte_value = (ch=='<') ? LESS : (ch=='>') ? GREATER : 
NOT;
+                       break;
+               }
+               instr++;
+               byte_value = (ch=='<') ? LESSEQ : (ch=='>') ? GREATEQ : 
NOTEQUAL;
+               ch = (ch=='<') ? LE : (ch=='>') ? GE : NE;
+               break;
+
+       case '\'':
+       case ';':
+       case '[':
+       case '\\':
+       case ']':
+       case '`':
+       case '{':
+       case '}':
+       case '~':
+       bad_chr:
+               parse_error=BAD_CHAR;
+               return ERROR;
+
+       case '#':
+               begin=instr-1;
+               while(*instr && (isalnum(*instr) || *instr=='_'))
+                       instr++;
+               ch= *instr;
+               *instr=0;
+               if(!stricmp(begin,tname))
+                       byte_value=F_TRUE;
+               else if(!stricmp(begin,fname))
+                       byte_value=F_FALSE;
+               else if(!stricmp(begin,iname) && (begin[4]==0 || 
!stricmp(begin+4,"inity")))
+                       byte_value=CONST_INF;
+               else if(!stricmp(begin,mname) ||
+                       !stricmp(begin,"#ninf"))
+                       byte_value=CONST_NINF;
+               else if(!stricmp(begin,nname) ||
+                       !stricmp(begin,"#nan"))
+                       byte_value=CONST_NAN;
+               else {
+                       for(n=1;n<=ERR_MAX;n++)
+                               if(!stricmp(begin,ename[n]))
+                                       break;
+                       if(n>ERR_MAX)
+                               n=BAD_CHAR;
+                       new->n_x.v_int=n;
+                       byte_value=CONST_ERR;
+               }
+               *instr=ch;
+               ch=L_CONST;
+               break;
+
+       default:
+               if(!a0 && (ch=='@' || ch=='$'))
+                  goto bad_chr;
+
+               if(a0 && ch=='@') {
+                       begin=instr;
+                       while(*instr && (isalpha(*instr) || isdigit(*instr) || 
*instr=='_'))
+                               instr++;
+                       n=instr-begin;
+               } else {
+                       begin=instr-1;
+                       
byte_value=parse_cell_or_range(&begin,&(new->n_x.v_rng));
+                       if(byte_value) {
+                               if((byte_value& ~0x3)==R_CELL)
+                                       ch=L_CELL;
+                               else
+                                       ch=L_RANGE;
+                               instr=begin;
+                               break;
+                       }
+
+                       while(*instr && (isalpha(*instr) || isdigit(*instr) || 
*instr=='_'))
+                               instr++;
+
+                       n=instr-begin;
+                       while(isspace(*instr))
+                               instr++;
+
+                       if(*instr!='(') {
+                               ch=L_VAR;
+                               byte_value=VAR;
+                               new->n_x.v_var=find_or_make_var(begin,n);
+                               break;
+                       }
+               }
+               tmp_ch=begin[n];
+               begin[n]='\0';
+               fp=hash_find(parse_hash,begin);
+               begin[n]=tmp_ch;
+               byte_value= ERROR;
+               if(!fp) {
+                       parse_error=BAD_FUNC;
+                       return ERROR;
+               }
+
+               if(fp>=the_funs && fp<=&the_funs[USR1])
+                       byte_value=fp-the_funs;
+               else {
+                       for(nn=0;nn<n_usr_funs;nn++) {
+                               if(fp>=&usr_funs[nn][0] && 
fp<=&usr_funs[nn][usr_n_funs[nn]]) {
+                                       byte_value=USR1+nn;
+                                       new->sub_value=fp-&usr_funs[nn][0];
+                                       break;
+                               }
+                       }
+#ifdef TEST
+                       if(nn==n_usr_funs) {
+                               io_error_msg("Couln't turn fp into a ##");
+                               parse_error=BAD_FUNC;
+                               return ERROR;
+                       }
+#endif
+               }
+
+               if(fp->fn_argn&X_J)
+                       ch= byte_value==F_IF ? L_FN3 : L_FN2;
+               else if(fp->fn_argt[0]=='R' || fp->fn_argt[0]=='E')
+                       ch=L_FN1R-1+fp->fn_argn-X_A0;
+               else
+                       ch=L_FN0 + fp->fn_argn-X_A0;
+
+               break;
+       }
+       /* new->node_type=ch; */
+       new->comp_value=byte_value;
+       yylval=new;
+       return ch;
+}
+
+/* Return value is
+       0 if it doesn't look like a cell or a range,
+       R_CELL if it is a cell (ptr now points past the characters, lr and lc 
hold the row and col of the cell)
+       RANGE if it is a range (ptr points past the chars)
+ */
+unsigned char
+parse_cell_or_range FUN2(char **,ptr, struct rng *,retp)
+{
+       if(a0) {
+               unsigned tmpc,tmpr;
+               char *p;
+               int abz = ROWREL|COLREL;
+
+               p= *ptr;
+               tmpc=0;
+               if(*p=='$') {
+                       abz-=COLREL;
+                       p++;
+               }
+               if(!isalpha(*p))
+                       return 0;
+               tmpc=str_to_col(&p);
+               if(tmpc<MIN_COL || tmpc>MAX_COL)
+                       return 0;
+               if(*p=='$') {
+                       abz-=ROWREL;
+                       p++;
+               }
+               if(!isdigit(*p))
+                       return 0;
+               for(tmpr=0;isdigit(*p);p++)
+                       tmpr=tmpr*10 + *p - '0';
+
+               if(tmpr<MIN_ROW || tmpr>MAX_ROW)
+                       return 0;
+
+               if(*p==':' || *p=='.') {
+                       unsigned tmpc1,tmpr1;
+
+                       abz = ((abz&COLREL) ? LCREL : 0)|((abz&ROWREL) ? LRREL 
: 0)|HRREL|HCREL;
+                       p++;
+                       if(*p=='$') {
+                               abz-=HCREL;
+                               p++;
+                       }
+                       if(!isalpha(*p))
+                               return 0;
+                       tmpc1=str_to_col(&p);
+                       if(tmpc1<MIN_COL || tmpc1>MAX_COL)
+                               return 0;
+                       if(*p=='$') {
+                               abz-=HRREL;
+                               p++;
+                       }
+                       if(!isdigit(*p))
+                               return 0;
+                       for(tmpr1=0;isdigit(*p);p++)
+                               tmpr1=tmpr1*10 + *p - '0';
+                       if(tmpr1<MIN_ROW || tmpr1>MAX_ROW)
+                               return 0;
+
+                       if(tmpr<tmpr1) {
+                               retp->lr=tmpr;
+                               retp->hr=tmpr1;
+                       } else {
+                               retp->lr=tmpr1;
+                               retp->hr=tmpr;
+                       }
+                       if(tmpc<tmpc1) {
+                               retp->lc=tmpc;
+                               retp->hc=tmpc1;
+                       } else {
+                               retp->lc=tmpc1;
+                               retp->hc=tmpc;
+                       }
+                       *ptr= p;
+                       return RANGE | abz;
+               }
+               retp->lr = retp->hr = tmpr;
+               retp->lc = retp->hc = tmpc;
+               *ptr=p;
+               return R_CELL | abz;
+       } else {
+               char *p;
+               unsigned char retr;
+               unsigned char retc;
+               int ended;
+               long num;
+               CELLREF tmp;
+
+#define CK_ABS_R(x)    if((x)<MIN_ROW || (x)>MAX_ROW)  \
+                               return 0;               \
+                       else
+
+#define CK_REL_R(x)    if(   ((x)>0 && MAX_ROW-(x)<cur_row)    \
+                          || ((x)<0 && MIN_ROW-(x)>cur_row))   \
+                               return 0;                       \
+                       else
+
+#define CK_ABS_C(x)    if((x)<MIN_COL || (x)>MAX_COL)  \
+                               return 0;               \
+                       else
+
+#define CK_REL_C(x)    if(   ((x)>0 && MAX_COL-(x)<cur_col)    \
+                          || ((x)<0 && MIN_COL-(x)>cur_col))   \
+                               return 0;                       \
+                       else
+
+#define MAYBEREL(p) (*(p)=='[' && (isdigit((p)[1]) || (((p)[1]=='+' || 
(p)[1]=='-') && isdigit((p)[2]))))
+
+               p= *ptr;
+               retr=0;
+               retc=0;
+               ended=0;
+               while(ended==0) {
+                       switch(*p) {
+                       case 'r':
+                       case 'R':
+                               if(retr) {
+                                       ended++;
+                                       break;
+                               }
+                               p++;
+                               retr=R_CELL;
+                               if(isdigit(*p)) {
+                                       num=astol(&p);
+                                       CK_ABS_R(num);
+                                       retp->lr= retp->hr=num;
+                               } else if(MAYBEREL(p)) {
+                                       p++;
+                                       num=astol(&p);
+                                       CK_REL_R(num);
+                                       retp->lr= retp->hr=num+cur_row;
+                                       retr|=ROWREL;
+                                       if(*p==':') {
+                                               retr=RANGE|LRREL|HRREL;
+                                               p++;
+                                               num=astol(&p);
+                                               CK_REL_R(num);
+                                               retp->hr=num+cur_row;
+                                       }
+                                       if(*p++!=']')
+                                               return 0;
+                               } else if(retc || *p=='c' || *p=='C') {
+                                       retr|=ROWREL;
+                                       retp->lr= retp->hr=cur_row;
+                               } else
+                                       return 0;
+                               if(*p==':' && retr!=(RANGE|LRREL|HRREL)) {
+                                       retr= (retr&ROWREL) ? RANGE|LRREL : 
RANGE;
+                                       p++;
+                                       if(isdigit(*p)) {
+                                               num=astol(&p);
+                                               CK_ABS_R(num);
+                                               retp->hr=num;
+                                       } else if(MAYBEREL(p)) {
+                                               p++;
+                                               num=astol(&p);
+                                               CK_REL_R(num);
+                                               retp->hr=num+cur_row;
+                                               retr|=HRREL;
+                                               if(*p++!=']')
+                                                       return 0;
+                                       } else
+                                               return 0;
+                               }
+
+                               if(retc)
+                                       ended++;
+                               break;
+
+                       case 'c':
+                       case 'C':
+                               if(retc) {
+                                       ended++;
+                                       break;
+                               }
+                               p++;
+                               retc=R_CELL;
+                               if(isdigit(*p)) {
+                                       num=astol(&p);
+                                       CK_ABS_C(num);
+                                       retp->lc= retp->hc=num;
+                               } else if(MAYBEREL(p)) {
+                                       p++;
+                                       num=astol(&p);
+                                       CK_REL_C(num);
+                                       retp->lc= retp->hc=num+cur_col;
+                                       retc|=COLREL;
+                                       if(*p==':') {
+                                               retc=RANGE|LCREL|HCREL;
+                                               p++;
+                                               num=astol(&p);
+                                               CK_REL_C(num);
+                                               retp->hc=num+cur_col;
+                                       }
+                                       if(*p++!=']')
+                                               return 0;
+                               } else if(retr || *p=='r' || *p=='R') {
+                                       retc|=COLREL;
+                                       retp->lc= retp->hc=cur_col;
+                               } else
+                                       return 0;
+                               if(*p==':' && retc!=(RANGE|LCREL|HCREL)) {
+                                       retc= (retc&COLREL) ? RANGE|LCREL : 
RANGE;
+                                       p++;
+                                       if(isdigit(*p)) {
+                                               num=astol(&p);
+                                               CK_ABS_C(num);
+                                               retp->hc=num;
+                                       } else if(MAYBEREL(p)) {
+                                               p++;
+                                               num=astol(&p);
+                                               CK_REL_C(num);
+                                               retp->hc=num+cur_col;
+                                               retc|=HCREL;
+                                               if(*p++!=']')
+                                                       return 0;
+                                       } else
+                                               return 0;
+                               }
+
+                               if(retr)
+                                       ended++;
+                               break;
+                       default:
+                               if(retr) {
+                                       *ptr=p;
+                                       retp->lc=MIN_COL;
+                                       retp->hc=MAX_COL;
+                                       if((retr|ROWREL)==(R_CELL|ROWREL))
+                                               return (retr&ROWREL) ? 
(RANGE|LRREL|HRREL) : RANGE;
+                                       else
+                                               return retr;
+                               } else if(retc) {
+                                       *ptr=p;
+                                       retp->lr=MIN_ROW;
+                                       retp->hr=MAX_COL;
+                                       if((retc|COLREL)==(R_CELL|COLREL))
+                                               return (retc&COLREL) ? 
(RANGE|LCREL|HCREL) : RANGE;
+                                       else
+                                               return retc;
+                               }
+                               return 0;
+                       }
+               }
+               if(!retr || !retc)
+                       return 0;
+               *ptr=p;
+               if(retp->lr>retp->hr)
+                       tmp=retp->lr,retp->lr=retp->hr,retp->hr=tmp;
+               if(retp->lc>retp->hc)
+                       tmp=retp->lc,retp->lc=retp->hc,retp->hc=tmp;
+
+               if((retr|ROWREL)==(R_CELL|ROWREL)) {
+                       if((retc|COLREL)==(R_CELL|COLREL))
+                               return retr|retc;
+                       return (retr&ROWREL) ? (retc|LRREL|HRREL) : retc;
+               }
+               if((retc|COLREL)==(R_CELL|COLREL))
+                       return (retc&COLREL) ? (retr|LCREL|HCREL) : retr;
+               return retr|retc;
+       }
+}
+
+int
+str_to_col FUN1(char **,str)
+{
+       int ret;
+       char c,cc,ccc;
+#if MAX_COL>702
+       char cccc;
+#endif
+
+       ret=0;
+       c=str[0][0];
+       if(!isalpha((cc=str[0][1]))) {
+               (*str)++;
+               return MIN_COL + (isupper(c) ? c-'A' : c-'a');
+       }
+       if(!isalpha((ccc=str[0][2]))) {
+               (*str)+=2;
+               return MIN_COL+26 + (isupper(c) ? c-'A' : c-'a')*26 + 
(isupper(cc) ? cc-'A' : cc-'a');
+       }
+#if MAX_COL>702
+       if(!isalpha((cccc=str[0][3]))) {
+               (*str)+=3;
+               return MIN_COL+702 + (isupper(c) ? c-'A' : c-'a')*26*26 + 
(isupper(cc) ? cc-'A' : cc-'a')*26 + (isupper(ccc) ? ccc-'A' : ccc-'a');
+       }
+       if(!isalpha(str[0][4])) {
+               (*str)+=4;
+               return MIN_COL+18278 + (isupper(c) ? c-'A' : c-'a')*26*26*26 + 
(isupper(cc) ? cc-'A' : cc-'a')*26*26 + (isupper(ccc) ? ccc-'A' : ccc-'a')*26 + 
(isupper(cccc) ? cccc-'A' : cccc-'a');
+       }
+#endif
+       return 0;
+}



reply via email to

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