emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] coverity 54617ad 8/9: Merge remote-tracking branch 'origin


From: John Wiegley
Subject: [Emacs-diffs] coverity 54617ad 8/9: Merge remote-tracking branch 'origin/emacs-25' into coverity
Date: Mon, 14 Dec 2015 19:38:19 +0000

branch: coverity
commit 54617ada51e49af04f0c3f609e724aafcaf0df16
Merge: 50f7079 ecaaf90
Author: John Wiegley <address@hidden>
Commit: John Wiegley <address@hidden>

    Merge remote-tracking branch 'origin/emacs-25' into coverity
---
 build-aux/gitlog-to-emacslog                       |    2 +-
 configure.ac                                       |    5 +
 doc/emacs/abbrevs.texi                             |    4 +-
 doc/emacs/ack.texi                                 |    4 +
 doc/emacs/buffers.texi                             |    5 +-
 doc/emacs/custom.texi                              |    2 +
 doc/emacs/emacs.texi                               |   12 +-
 doc/emacs/frames.texi                              |    9 +-
 doc/emacs/glossary.texi                            |   11 +
 doc/emacs/help.texi                                |    5 +-
 doc/emacs/killing.texi                             |   10 +-
 doc/emacs/m-x.texi                                 |   18 +-
 doc/emacs/maintaining.texi                         |   13 +-
 doc/emacs/mini.texi                                |   34 +-
 doc/emacs/misc.texi                                |   26 +-
 doc/emacs/package.texi                             |   33 +-
 doc/emacs/programs.texi                            |   37 +-
 doc/emacs/regs.texi                                |   10 +-
 doc/emacs/search.texi                              |  779 ++++--
 doc/lispref/buffers.texi                           |    4 +-
 doc/lispref/display.texi                           |   36 +-
 doc/lispref/elisp.texi                             |    1 +
 doc/lispref/eval.texi                              |    9 +-
 doc/lispref/files.texi                             |   32 +-
 doc/lispref/frames.texi                            |   40 +-
 doc/lispref/help.texi                              |   12 +-
 doc/lispref/loading.texi                           |   61 +-
 doc/lispref/os.texi                                |   17 +-
 doc/lispref/strings.texi                           |   13 +-
 doc/lispref/text.texi                              |  166 +-
 doc/lispref/tips.texi                              |   16 +-
 doc/lispref/windows.texi                           |   40 +-
 doc/man/etags.1                                    |    2 +-
 doc/misc/calc.texi                                 |   18 +-
 doc/misc/eudc.texi                                 |   92 +-
 doc/misc/ido.texi                                  |    3 +-
 etc/DEBUG                                          |  250 ++-
 etc/NEWS                                           |  485 +++--
 etc/tutorials/TUTORIAL.pt_BR                       |    2 +-
 lib-src/etags.c                                    |   55 +-
 lisp/apropos.el                                    |    2 +-
 lisp/calendar/cal-html.el                          |    9 +-
 lisp/calendar/diary-lib.el                         |   15 +-
 lisp/calendar/holidays.el                          |    5 +-
 lisp/calendar/icalendar.el                         |   13 +-
 lisp/cedet/mode-local.el                           |   18 -
 lisp/character-fold.el                             |  240 ++-
 lisp/emacs-lisp/bytecomp.el                        |   87 +-
 lisp/emacs-lisp/cconv.el                           |   41 +-
 lisp/emacs-lisp/checkdoc.el                        |    1 +
 lisp/emacs-lisp/cl-generic.el                      |    8 +-
 lisp/emacs-lisp/cl-macs.el                         |    2 +-
 lisp/emacs-lisp/cl-preloaded.el                    |    1 +
 lisp/emacs-lisp/eieio-compat.el                    |    1 +
 lisp/emacs-lisp/eieio-core.el                      |    2 +-
 lisp/emacs-lisp/ert.el                             |  337 ++--
 lisp/emacs-lisp/gv.el                              |    2 +
 lisp/emacs-lisp/nadvice.el                         |    8 +-
 lisp/emacs-lisp/package.el                         |  235 +-
 lisp/emacs-lisp/smie.el                            |   14 +-
 lisp/files.el                                      |   55 +-
 lisp/follow.el                                     |   55 +-
 lisp/gnus/nnml.el                                  |   17 -
 lisp/gnus/qp.el                                    |    3 +-
 lisp/help-fns.el                                   |    8 +-
 lisp/ido.el                                        |    4 +-
 lisp/ielm.el                                       |    3 +-
 lisp/international/mule-util.el                    |    3 +-
 lisp/isearch.el                                    |   97 +-
 lisp/json.el                                       |    2 +-
 lisp/ldefs-boot.el                                 | 2701 ++++++++++----------
 lisp/leim/quail/tamil-dvorak.el                    |  151 ++
 lisp/mail/rmailout.el                              |    5 +-
 lisp/menu-bar.el                                   |   34 +-
 lisp/mpc.el                                        |   17 +-
 lisp/net/eudc-export.el                            |   28 +-
 lisp/net/eudc-vars.el                              |    9 +-
 lisp/net/eudc.el                                   |   12 +
 lisp/net/eudcb-bbdb.el                             |   10 +-
 lisp/net/net-utils.el                              |   35 +-
 lisp/net/newst-treeview.el                         |   50 +-
 lisp/net/sasl-scram-rfc.el                         |    1 +
 lisp/net/tramp-sh.el                               |  117 +-
 lisp/obsolete/complete.el                          |    2 +-
 lisp/{net => obsolete}/eudcb-ph.el                 |    1 +
 lisp/progmodes/cc-awk.el                           |   19 +-
 lisp/progmodes/cc-bytecomp.el                      |   46 +-
 lisp/progmodes/cc-defs.el                          |   47 +-
 lisp/progmodes/cc-engine.el                        |    2 +-
 lisp/progmodes/cc-langs.el                         |    7 +-
 lisp/progmodes/cc-mode.el                          |    3 +-
 lisp/progmodes/compile.el                          |    2 +-
 lisp/progmodes/elisp-mode.el                       |   11 +-
 lisp/progmodes/etags.el                            |   46 +-
 lisp/progmodes/js.el                               |    1 +
 lisp/progmodes/prog-mode.el                        |   68 +-
 lisp/progmodes/xref.el                             |   11 +-
 lisp/replace.el                                    |   26 +-
 lisp/simple.el                                     |   93 +-
 lisp/subr.el                                       |   55 +-
 lisp/term.el                                       |   13 -
 lisp/textmodes/ispell.el                           |    1 +
 lisp/textmodes/reftex-auc.el                       |    2 +-
 lisp/textmodes/reftex-vars.el                      |    2 +-
 lisp/textmodes/reftex.el                           |    2 +-
 lisp/vc/vc-cvs.el                                  |    4 +-
 lisp/vc/vc-dispatcher.el                           |   20 +-
 lisp/vc/vc-git.el                                  |    4 +-
 lisp/vc/vc-hg.el                                   |    6 +-
 lisp/vc/vc-hooks.el                                |    6 +-
 lisp/vc/vc-mtn.el                                  |    4 +-
 lisp/vc/vc-rcs.el                                  |    5 +-
 lisp/vc/vc-svn.el                                  |   10 +-
 lisp/window.el                                     |    5 +-
 m4/ax_gcc_var_attribute.m4                         |    2 +-
 modules/mod-test/Makefile                          |    2 +-
 modules/mod-test/mod-test.c                        |   46 +-
 modules/mod-test/test.el                           |   28 +-
 modules/modhelp.py                                 |    2 +-
 nextstep/templates/Info.plist.in                   |    2 +
 src/ChangeLog.13                                   |    2 +-
 src/alloc.c                                        |   62 +-
 src/cmds.c                                         |    6 +-
 src/conf_post.h                                    |    1 +
 src/doc.c                                          |    3 +-
 src/doprnt.c                                       |    2 +-
 src/dynlib.c                                       |  126 +-
 src/dynlib.h                                       |    2 +
 src/emacs-module.c                                 |  800 +++---
 src/emacs-module.h                                 |   28 +-
 src/emacs.c                                        |    3 +
 src/eval.c                                         |    5 +
 src/fileio.c                                       |   11 +-
 src/fns.c                                          |   14 +-
 src/font.h                                         |   42 +
 src/frame.c                                        |   11 +-
 src/insdel.c                                       |   23 +-
 src/keyboard.c                                     |   17 +-
 src/keyboard.h                                     |   13 +
 src/lisp.h                                         |   70 +-
 src/lread.c                                        |   62 +-
 src/macfont.m                                      |   19 +-
 src/nsfns.m                                        |   13 +-
 src/nsterm.h                                       |    2 +-
 src/nsterm.m                                       |  127 +-
 src/puresize.h                                     |   20 +-
 src/syntax.c                                       |    1 +
 src/undo.c                                         |   69 +-
 src/w32.c                                          |    8 +-
 src/w32.h                                          |    6 +-
 src/w32console.c                                   |    5 -
 src/w32fns.c                                       |   15 +-
 src/w32menu.c                                      |    5 +-
 src/w32term.c                                      |   35 +-
 src/w32term.h                                      |    2 +
 src/window.c                                       |   34 +-
 src/xdisp.c                                        |  110 +-
 test/automated/abbrev-tests.el                     |   55 +
 test/automated/auto-revert-tests.el                |    4 +-
 test/automated/character-fold-tests.el             |   72 +-
 .../package/macro-problem-package-1.0/macro-aux.el |   12 +
 .../macro-problem-package-1.0/macro-problem.el     |   21 +
 .../package/macro-problem-package-2.0/macro-aux.el |   16 +
 .../macro-problem-package-2.0/macro-problem.el     |   30 +
 test/automated/icalendar-tests.el                  |   56 +
 test/automated/json-tests.el                       |  297 ++-
 test/automated/message-mode-tests.el               |    6 +-
 test/automated/package-test.el                     |   14 +
 test/automated/simple-test.el                      |   96 +-
 test/automated/subr-tests.el                       |  112 +
 test/automated/tramp-tests.el                      |   20 +-
 test/etags/CTAGS.good                              |   33 +
 test/etags/ETAGS.good_1                            |  187 +-
 test/etags/ETAGS.good_2                            |  203 +-
 test/etags/ETAGS.good_3                            |  203 +-
 test/etags/ETAGS.good_4                            |  187 +-
 test/etags/ETAGS.good_5                            |  219 +-
 test/etags/ETAGS.good_6                            |  219 +-
 test/etags/Makefile                                |    5 +-
 test/etags/lua-src/test.lua                        |   36 +
 test/etags/ruby-src/test.rb                        |   54 +
 test/etags/ruby-src/test1.ruby                     |    7 +
 test/indent/js.js                                  |   14 +
 183 files changed, 7176 insertions(+), 4213 deletions(-)

diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog
index 3d61ba1..cd93ece 100755
--- a/build-aux/gitlog-to-emacslog
+++ b/build-aux/gitlog-to-emacslog
@@ -77,7 +77,7 @@ test -d .git || {
 # Maybe we should skip all "Merge branch 'master'" messages.
 # See eg the cairo-related ones.
 ./build-aux/gitlog-to-changelog \
-    --ignore-matching="^; |^Merge branch 'master' of 
git\.(savannah|sv)\.gnu\.org:/srv/git/emacs$|^Merge remote-tracking branch 
'.*'$" \
+    --ignore-matching="^; |^Merge branch '(master|emacs-[0-9][0-9])' of 
git\.(savannah|sv)\.gnu\.org:/srv/git/emacs$|^Merge remote-tracking branch 
'.*'$" \
   --ignore-line='^; ' --format='%B' \
   "$gen_origin..$new_origin" >"ChangeLog.tmp" || exit
 
diff --git a/configure.ac b/configure.ac
index d5638bf..b2fa1ed 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3316,6 +3316,11 @@ if test "${with_modules}" != "no"; then
 
   if test "${HAVE_MODULES}" = no; then
     AC_MSG_ERROR([Dynamic modules are not supported on your system])
+  else
+    SAVE_LIBS=$LIBS
+    LIBS="$LIBS $LIBMODULES"
+    AC_CHECK_FUNCS([dlfunc])
+    LIBS=$SAVE_LIBS
   fi
 fi
 
diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi
index 23d7e28..695ffa8 100644
--- a/doc/emacs/abbrevs.texi
+++ b/doc/emacs/abbrevs.texi
@@ -407,7 +407,7 @@ you are expanding.
 in this search; if it is @code{nil}, the word and the expansion must
 match in case.  If the value is @code{case-fold-search} (the default),
 then the variable @code{case-fold-search} controls whether to ignore
-case while searching for expansions (@pxref{Search Case}).
+case while searching for expansions (@pxref{Lax Search}).
 
 @vindex dabbrev-case-replace
   Normally, dynamic abbrev expansion preserves the case pattern
@@ -421,7 +421,7 @@ the dynamic abbrev's case pattern is preserved in most 
cases; if it is
 @code{nil}, the expansion is always copied verbatim.  If the value is
 @code{case-replace} (the default), then the variable
 @code{case-replace} controls whether to copy the expansion verbatim
-(@pxref{Replacement and Case}).
+(@pxref{Replacement and Lax Matches}).
 
   However, if the expansion contains a complex mixed case pattern, and
 the dynamic abbrev matches this pattern as far as it goes, then the
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index 1c88e97..4d53456 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -64,6 +64,10 @@ point vertically fixed by scrolling the window when moving 
up and down
 in the buffer.
 
 @item
+Aurélien Aptel added dynamic module support to Emacs.  Philipp
+Stephani and others also worked on the dynamic module code.
+
address@hidden
 Joe Arceneaux wrote the original text property implementation, and
 implemented support for X11.
 
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index 5a4d1ab..ae64fef 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -703,5 +703,6 @@ C-b}.  To customize this buffer list, use the @code{bs} 
Custom group
   MSB global minor mode (``MSB'' stands for ``mouse select buffer'')
 provides a different and customizable mouse buffer menu which you may
 prefer.  It replaces the bindings of @code{mouse-buffer-menu},
-normally on @kbd{C-Down-Mouse-1}, and the menu bar buffer menu.  You
-can customize the menu in the @code{msb} Custom group.
+normally on @kbd{C-Down-Mouse-1} and @address@hidden, and the menu
+bar buffer menu.  You can customize the menu in the @code{msb} Custom
+group.
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index 8441c88..30e0401 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -403,6 +403,8 @@ customizations in your initialization file.  This is 
because saving
 customizations from such a session would wipe out all the other
 customizations you might have on your initialization file.
 
address@hidden unsaved customizations, reminder to save
address@hidden custom-prompt-customize-unsaved-options
   Please note that any customizations you have not chosen to save for
 future sessions will be lost when you terminate Emacs.  If you'd like
 to be prompted about unsaved customizations at termination time, add
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 27bb77d..d87e807 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -188,6 +188,7 @@ Advanced Features
 * Sending Mail::        Sending mail in Emacs.
 * Rmail::               Reading mail in Emacs.
 * Gnus::                A flexible mail and news reader.
+* Host Security::       Security issues on a single computer.
 * Network Security::    Managing the network security.
 * Document View::       Viewing PDF, PS and DVI files.
 * EWW::                 A web browser in Emacs.
@@ -392,18 +393,20 @@ Searching and Replacement
 * Regexps::                Syntax of regular expressions.
 * Regexp Backslash::       Regular expression constructs starting with `\'.
 * Regexp Example::         A complex regular expression explained.
-* Search Case::            To ignore case while searching, or not.
+* Lax Search::                Search ignores some distinctions between
+                                similar characters, like letter-case.
 * Replace::                Search, and replace some or all matches.
 * Other Repeating Search:: Operating on all matches for some regexp.
+* Search Customizations::  Various search customizations.
 
 Incremental Search
 
 * Basic Isearch::        Basic incremental search commands.
 * Repeat Isearch::       Searching for the same string again.
-* Error in Isearch::     When your string is not found.
-* Special Isearch::      Special input in incremental search.
 * Isearch Yank::         Commands that grab text into the search string
                            or else edit the search string.
+* Error in Isearch::     When your string is not found.
+* Special Isearch::      Special input in incremental search.
 * Not Exiting Isearch::  Prefix argument and scrolling commands.
 * Isearch Minibuffer::   Incremental search of the minibuffer history.
 
@@ -411,7 +414,8 @@ Replacement Commands
 
 * Unconditional Replace::  Replacing all matches for a string.
 * Regexp Replace::         Replacing all matches for a regexp.
-* Replacement and Case::   How replacements preserve case of letters.
+* Replacement and Lax Matches::
+                           Lax searching for text to replace.
 * Query Replace::          How to use querying.
 
 Commands for Fixing Typos
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index 95b721f..acfdfe2 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -1265,10 +1265,11 @@ Some text terminals support mouse clicks in the 
terminal window.
   In a terminal emulator which is compatible with @command{xterm}, you
 can use @kbd{M-x xterm-mouse-mode} to give Emacs control over simple
 uses of the mouse---basically, only non-modified single clicks are
-supported.  The normal @command{xterm} mouse functionality for such
-clicks is still available by holding down the @kbd{SHIFT} key when you
-press the mouse button.  Xterm Mouse mode is a global minor mode
-(@pxref{Minor Modes}).  Repeating the command turns the mode off
+supported.  Newer versions of @command{xterm} also support
+mouse-tracking.  The normal @command{xterm} mouse functionality for
+such clicks is still available by holding down the @kbd{SHIFT} key
+when you press the mouse button.  Xterm Mouse mode is a global minor
+mode (@pxref{Minor Modes}).  Repeating the command turns the mode off
 again.
 
 @findex gpm-mouse-mode
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi
index e66cd79..cc81101 100644
--- a/doc/emacs/glossary.texi
+++ b/doc/emacs/glossary.texi
@@ -175,11 +175,22 @@ corresponding Control character.  @xref{User Input,C-M-}.
 Case conversion means changing text from upper case to lower case or
 vice versa.  @xref{Case}.
 
address@hidden Case Folding
+Case folding means ignoring the differences between case variants of
+the same letter: upper-case, lower-case, and title-case.  Emacs
+performs case folding by default in text search.  @xref{Lax Search}.
+
 @item Character
 Characters form the contents of an Emacs buffer.  Also, key sequences
 (q.v.@:) are usually made up of characters (though they may include
 other input events as well).  @xref{User Input}.
 
address@hidden Character Folding
+Character folding means ignoring differences between similarly looking
+characters, such as between @code{a}, and @code{@:a} and @code{@'a}.
+Emacs performs character folding by default in text search.  @xref{Lax
+Search}.
+
 @item Character Set
 Emacs supports a number of character sets, each of which represents a
 particular alphabet or script.  @xref{International}.
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index 8b4adf9..25e783f 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -536,8 +536,9 @@ command works depend on the major mode.
 @findex view-lossage
   If something surprising happens, and you are not sure what you typed,
 use @kbd{C-h l} (@code{view-lossage}).  @kbd{C-h l} displays your last
-300 input keystrokes.  If you see commands that you don't know, you can
-use @kbd{C-h c} to find out what they do.
+300 input keystrokes and the commands they invoked.  If you see
+commands that you are not familiar with, you can use @kbd{C-h k} or
address@hidden f} to find out what they do.
 
 @kindex C-h e
 @findex view-echo-area-messages
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index d453647..f05b8cc 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -504,9 +504,9 @@ does not alter the clipboard.  However, if you change
 @code{yank-pop-change-selection} to @code{t}, then @kbd{M-y} saves the
 new yank to the clipboard.
 
address@hidden x-select-enable-clipboard
address@hidden select-enable-clipboard
   To prevent kill and yank commands from accessing the clipboard,
-change the variable @code{x-select-enable-clipboard} to @code{nil}.
+change the variable @code{select-enable-clipboard} to @code{nil}.
 
 @cindex clipboard manager
 @vindex x-select-enable-clipboard-manager
@@ -519,14 +519,14 @@ when exiting Emacs; if you wish to prevent Emacs from 
transferring
 data to the clipboard manager, change the variable
 @code{x-select-enable-clipboard-manager} to @code{nil}.
 
address@hidden x-select-enable-primary
address@hidden select-enable-primary
 @findex clipboard-kill-region
 @findex clipboard-kill-ring-save
 @findex clipboard-yank
   Prior to Emacs 24, the kill and yank commands used the primary
 selection (@pxref{Primary Selection}), not the clipboard.  If you
-prefer this behavior, change @code{x-select-enable-clipboard} to
address@hidden, @code{x-select-enable-primary} to @code{t}, and
+prefer this behavior, change @code{select-enable-clipboard} to
address@hidden, @code{select-enable-primary} to @code{t}, and
 @code{mouse-drag-copy-region} to @code{t}.  In this case, you can use
 the following commands to act explicitly on the clipboard:
 @code{clipboard-kill-region} kills the region and saves it to the
diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi
index c9ae559..795d6fe 100644
--- a/doc/emacs/m-x.texi
+++ b/doc/emacs/m-x.texi
@@ -43,6 +43,13 @@ Note that @code{forward-char} is the same command that you 
invoke with
 the key @kbd{C-f}.  The existence of a key binding does not stop you
 from running the command by name.
 
address@hidden obsolete command
+  When @kbd{M-x} completes on commands, it ignores the commands that
+are declared @dfn{obsolete}; for these, you will have to type their
+full name.  Obsolete commands are those for which newer, better
+alternatives exist, and which are slated for removal in some future
+Emacs release.
+
   To cancel the @kbd{M-x} and not run a command, type @kbd{C-g} instead
 of entering the command name.  This takes you back to command level.
 
@@ -57,7 +64,16 @@ mentions this in the echo area after running the command.  
For
 example, if you type @kbd{M-x forward-word}, the message says that you
 can run the same command by typing @kbd{M-f}.  You can turn off these
 messages by setting the variable @code{suggest-key-bindings} to
address@hidden
address@hidden  The value of @code{suggest-key-bindings} can also be a
+number, in which case Emacs will show the binding for that many
+seconds before removing it from display.  The default behavior is to
+display the binding for 2 seconds.
+
+  Commands that don't have key bindings, can still be invoked after
+typing less than their full name at the @samp{M-x} prompt.  Emacs
+mentions such shorthands in the echo area if they are significantly
+shorter than the full command name.  The setting of
address@hidden affects these hints as well.
 
   In this manual, when we speak of running a command by name, we often
 omit the @key{RET} that terminates the name.  Thus we might say
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index a571ea7..359b503 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -47,6 +47,17 @@ variable @code{vc-handled-backends} to @code{nil}
 (@pxref{Customizing VC}).
 @end ifnottex
 
address@hidden vc-refresh-state
address@hidden vc-state-refresh
+  To update the VC state information for the file visited in the
+current buffer, use the command @code{vc-refresh-state}.  This command
+is useful when you perform version control commands outside Emacs
+(e.g., from the shell prompt), or if you put the buffer's file under a
+different version control system, or remove it from version control
+entirely.  A companion command @code{vc-state-refresh} does the same,
+but does not consider switching the version control system or removal
+from VC.
+
 @menu
 * Introduction to VC::  How version control works in general.
 * VC Mode Line::        How the mode line shows version control status.
@@ -2285,7 +2296,7 @@ input.  @xref{Query Replace}, for more information on 
query replace.
   You can control the case-sensitivity of tags search commands by
 customizing the value of the variable @code{tags-case-fold-search}.  The
 default is to use the same setting as the value of
address@hidden (@pxref{Search Case}).
address@hidden (@pxref{Lax Search}).
 
   It is possible to get through all the files in the tags table with a
 single invocation of @kbd{M-x tags-query-replace}.  But often it is
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index 2493fda..869e064 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -588,13 +588,17 @@ argument into the minibuffer:
 
 @table @kbd
 @item M-p
address@hidden @key{UP}
 Move to the previous item in the minibuffer history, an earlier
 argument (@code{previous-history-element}).
 @item M-n
address@hidden @key{DOWN}
 Move to the next item in the minibuffer history
 (@code{next-history-element}).
address@hidden @key{UP}
address@hidden @key{DOWN}
+Like @kbd{M-p} and @kbd{M-n}, but move to the previous or next line of
+a multi-line item before going to the previous history item
+(@code{previous-line-or-history-element} and
address@hidden) .
 @item M-r @var{regexp} @key{RET}
 Move to an earlier item in the minibuffer history that
 matches @var{regexp} (@code{previous-matching-history-element}).
@@ -609,13 +613,13 @@ Move to a later item in the minibuffer history that 
matches
 @kindex DOWN @r{(minibuffer history)}
 @findex next-history-element
 @findex previous-history-element
-  While in the minibuffer, @kbd{M-p} or @key{UP}
-(@code{previous-history-element}) moves through the minibuffer history
-list, one item at a time.  Each @kbd{M-p} fetches an earlier item from
-the history list into the minibuffer, replacing its existing contents.
-Typing @kbd{M-n} or @key{DOWN} (@code{next-history-element}) moves
-through the minibuffer history list in the opposite direction,
-fetching later entries into the minibuffer.
+  While in the minibuffer, @kbd{M-p} (@code{previous-history-element})
+moves through the minibuffer history list, one item at a time.  Each
address@hidden fetches an earlier item from the history list into the
+minibuffer, replacing its existing contents.  Typing @kbd{M-n}
+(@code{next-history-element}) moves through the minibuffer history
+list in the opposite direction, fetching later entries into the
+minibuffer.
 
   If you type @kbd{M-n} in the minibuffer when there are no later
 entries in the minibuffer history (e.g., if you haven't previously
@@ -623,6 +627,14 @@ typed @kbd{M-p}), Emacs tries fetching from a list of 
default
 arguments: values that you are likely to enter.  You can think of this
 as moving through the ``future history''.
 
address@hidden previous-line-or-history-element
address@hidden next-line-or-history-element
+  The arrow keys @address@hidden and @address@hidden work like
address@hidden and @kbd{M-n}, but if the current history item is longer
+than a single line, they allow you to move to the previous or next
+line of the current history item before going to the previous or next
+history item.
+
   If you edit the text inserted by the @kbd{M-p} or @kbd{M-n}
 minibuffer history commands, this does not change its entry in the
 history list.  However, the edited argument does go at the end of the
@@ -642,8 +654,8 @@ expressions.  A numeric prefix argument @var{n} means to 
fetch the
 @var{n}th matching entry.  These commands are unusual, in that they
 use the minibuffer to read the regular expression argument, even
 though they are invoked from the minibuffer.  An upper-case letter in
-the regular expression makes the search case-sensitive (@pxref{Search
-Case}).
+the regular expression makes the search case-sensitive (@pxref{Lax
+Search}).
 
   You can also search through the history using an incremental search.
 @xref{Isearch Minibuffer}.
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 7fad826..41dce52 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -6,7 +6,8 @@
 @chapter Miscellaneous Commands
 
   This chapter contains several brief topics that do not fit anywhere
-else: reading Usenet news, viewing PDFs and other such documents, web
+else: reading Usenet news, host and network security,
+viewing PDFs and other such documents, web
 browsing, running shell commands and shell subprocesses, using a
 single shared Emacs for utilities that expect to run an editor as a
 subprocess, printing, sorting text, editing binary files, saving an
@@ -249,6 +250,25 @@ Search forward for articles containing a match for 
@var{regexp}.
 Exit the summary buffer and return to the group buffer.
 @end table
 
address@hidden Host Security
address@hidden Host Security
address@hidden security
+
+Emacs runs inside an operating system such as GNU/Linux, and relies on
+the operating system to check security constraints such as accesses to
+files.  The default settings for Emacs are designed for typical use;
+they may require some tailoring in environments where security is more
+of a concern, or less of a concern, than usual.  For example,
+file-local variables can be risky, and you can set the variable
address@hidden to @code{:safe} or (even more
+conservatively) to @code{nil}; conversely, if your files can all be
+trusted and the default checking for these variables is irritating,
+you can set @code{enable-local-variables} to @code{:all}.  @xref{Safe
+File Variables}.
+
address@hidden Considerations,,, elisp, The Emacs Lisp Reference
+Manual}, for more information about security considerations when using
+Emacs as part of a larger application.
 
 @node Network Security
 @section Network Security
@@ -741,6 +761,10 @@ advancing point, and any terminal input for the subshell 
comes from
 text in the buffer.  To give input to the subshell, go to the end of
 the buffer and type the input, terminated by @key{RET}.
 
+  By default, when the subshell is invoked interactively, the
address@hidden buffer is displayed in a new window.  This behavior can
+be customized via @code{display-buffer-alist} (@pxref{Window Choice}).
+
   While the subshell is waiting or running a command, you can switch
 windows or buffers and perform other editing in Emacs.  Emacs inserts
 the output from the subshell into the Shell buffer whenever it has
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index 1a6a735..5f80b0a 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -59,7 +59,12 @@ The package's version number (e.g., @samp{11.86}).
 The package's status---normally one of @samp{available} (can be
 downloaded from the package archive), @samp{installed},
 @c @samp{unsigned} (installed, but not signed; @pxref{Package Signing}),
-or @samp{built-in} (included in Emacs by default).
+or @samp{built-in} (included in Emacs by default).  The status
address@hidden means the package is not built-in and not from the
+directory specified by @code{package-user-dir} (@pxref{Package
+Files}).  External packages are treated much like built-in: they
+cannot be deleted through the package menu, and are not considered for
+upgrading.
 
 The status can also be @samp{new}.  This is equivalent to
 @samp{available}, except that it means the package became newly
@@ -106,7 +111,13 @@ line; typing @kbd{x} (see below) will delete the package.
 @xref{Package Files}, for information about what package deletion
 entails.
 
address@hidden ~
+Mark all obsolete packages for deletion
+(@code{package-menu-mark-obsolete-for-deletion}).  This marks for
+deletion all the packages whose status is @samp{obsolete}.
+
 @item u
address@hidden @key{DEL}
 Remove any installation or deletion mark previously added to the
 current line by an @kbd{i} or @kbd{d} command.
 
@@ -117,6 +128,7 @@ on the new available versions, and a deletion mark on the 
old
 installed versions.
 
 @item x
address@hidden package-menu-async
 Download and install all packages marked with @kbd{i}, and their
 dependencies; also, delete all packages marked with @kbd{d}
 (@code{package-menu-execute}).  This also removes the marks.
@@ -131,6 +143,14 @@ Filter the package list (@code{package-menu-filter}).  
This prompts
 for a keyword (e.g., @samp{games}), then shows only the packages
 that relate to that keyword.  To restore the full package list,
 type @kbd{q}.
+
address@hidden H
+Permanently hide packages that match a regexp
+(@code{package-menu-hide-package}).
+
address@hidden (
+Toggle visibility of old versions of packages and also of versions
+from lower-priority archives (@code{package-menu-toggle-hiding}).
 @end table
 
 @noindent
@@ -205,6 +225,17 @@ offer different versions of the same package, you may find 
the option
 pairs to this list, to ensure that the specified package is only ever
 downloaded from the specified archive.
 
address@hidden package-archive-priorities
address@hidden package-menu-hide-low-priority
+  Another option that is useful when you have several package archives
+enabled is @code{package-archive-priorities}.  It specifies the
+priority of each archive (higher numbers specify higher priority
+archives).  By default, archives have the priority of zero, unless
+specified otherwise by this option's value.  Packages from
+lower-priority archives will not be shown in the menu, if the same
+package is available from a higher-priority archive.  (This is
+controlled by the value of @code{package-menu-hide-low-priority}.)
+
   Once a package is downloaded and installed, it is @dfn{loaded} into
 the current Emacs session.  Loading a package is not quite the same as
 loading a Lisp library (@pxref{Lisp Libraries}); its effect varies
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index 1f2c8b1..bfc991b 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -917,6 +917,8 @@ will indent the comment to the appropriate position.
 @item @kbd{M-;}
 Insert or realign comment on current line; if the region is active,
 comment or uncomment the region instead (@code{comment-dwim}).
address@hidden @kbd{C-x C-;}
+Comment or uncomment the current line (@code{comment-line}).
 @item @kbd{C-u M-;}
 Kill comment on current line (@code{comment-kill}).
 @item @kbd{C-x ;}
@@ -971,6 +973,18 @@ are not moved.  Even when an existing comment is properly 
aligned,
 @kbd{M-;} is still useful for moving directly to the start of the
 comment text.
 
address@hidden comment-line
address@hidden C-x C-;
+  @kbd{C-x C-;} (@code{comment-line}) comments or uncomments complete
+lines.  When a region is active (@pxref{Mark}), @kbd{C-x C-;} either
+comments or uncomments the lines in the region.  If the region is not
+active, this command comments or uncomments the line point is on.
+With a positive prefix argument @var{n}, it operates on @var{n} lines
+starting with the current one; with a negative @var{n}, it affects
address@hidden preceding lines.  After invoking this command with a negative
+argument, successive invocations with a positive argument will operate
+on preceding lines as if the argument were negated.
+
 @findex comment-kill
 @kindex C-u M-;
   @kbd{C-u M-;} (@code{comment-dwim} with a prefix argument) kills any
@@ -1484,14 +1498,21 @@ with the Foldout package (@pxref{Foldout}).
 
 @findex prettify-symbols-mode
   Prettify Symbols mode is a buffer-local minor mode that replaces
-certain strings with more attractive versions for display
-purposes.  For example, in Emacs Lisp mode, it replaces the string
address@hidden with the Greek lambda character @samp{λ}.  You may wish
-to use this
-in non-programming modes as well.  You can customize the mode by
-adding more entries to @code{prettify-symbols-alist}.  There is also a
-global version, @code{global-prettify-symbols-mode}, which enables the
-mode in all buffers that support it.
+certain strings with more attractive versions for display purposes.
+For example, in Emacs Lisp mode, it replaces the string @samp{lambda}
+with the Greek lambda character @samp{λ}.  You may wish to use this in
+non-programming modes as well.  You can customize the mode by adding
+more entries to @code{prettify-symbols-alist}.  More elaborate
+customization is available via customizing
address@hidden if its default value
address@hidden is not appropriate.  There
+is also a global version, @code{global-prettify-symbols-mode}, which
+enables the mode in all buffers that support it.
+
+  The symbol at point can be shown in its original form.  This is
+controlled by the variable @code{prettify-symbols-unprettify-at-point}:
+if address@hidden, the original form of symbol at point will be
+restored for as long as point is at it.
 
 
 @node C Modes
diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi
index d8841ca..13c03f7 100644
--- a/doc/emacs/regs.texi
+++ b/doc/emacs/regs.texi
@@ -293,9 +293,11 @@ various files.
 Set the bookmark for the visited file, at point.
 
 @item C-x r m @var{bookmark} @key{RET}
address@hidden bookmark-set
 Set the bookmark named @var{bookmark} at point (@code{bookmark-set}).
 
address@hidden C-x r M @var{bookmark} @key{RET}
+Like @kbd{C-x r m}, but don't overwrite an existing bookmark.
+
 @item C-x r b @var{bookmark} @key{RET}
 @findex bookmark-jump
 Jump to the bookmark named @var{bookmark} (@code{bookmark-jump}).
@@ -320,6 +322,12 @@ name.  If you name each bookmark after the file it points 
to, then you
 can conveniently revisit any of those files with @kbd{C-x r b}, and move
 to the position of the bookmark at the same time.
 
address@hidden C-x r M
address@hidden bookmark-set-no-overwrite
+  The command @kbd{C-x r M} (@code{bookmark-set-no-overwrite}) works
+like @kbd{C-x r m}, but it signals an error if the specified bookmark
+already exists, instead of overwriting it.
+
 @kindex C-x r l
   To display a list of all your bookmarks in a separate buffer, type
 @kbd{C-x r l} (@code{list-bookmarks}).  If you switch to that buffer,
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index ae275d1..1cc7753 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -26,9 +26,11 @@ thing, but search for patterns instead of fixed strings.
 * Regexps::                   Syntax of regular expressions.
 * Regexp Backslash::          Regular expression constructs starting with `\'.
 * Regexp Example::            A complex regular expression explained.
-* Search Case::               To ignore case while searching, or not.
+* Lax Search::                Search ignores some distinctions among
+                                similar characters, like letter-case.
 * Replace::                   Search, and replace some or all matches.
 * Other Repeating Search::    Operating on all matches for some regexp.
+* Search Customizations::     Various search customizations.
 @end menu
 
 @node Incremental Search
@@ -54,10 +56,10 @@ Incremental search backward (@code{isearch-backward}).
 @menu
 * Basic Isearch::        Basic incremental search commands.
 * Repeat Isearch::       Searching for the same string again.
-* Error in Isearch::     When your string is not found.
-* Special Isearch::      Special input in incremental search.
 * Isearch Yank::         Commands that grab text into the search string
                            or else edit the search string.
+* Error in Isearch::     When your string is not found.
+* Special Isearch::      Special input in incremental search.
 * Not Exiting Isearch::  Prefix argument and scrolling commands.
 * Isearch Minibuffer::   Incremental search of the minibuffer history.
 @end menu
@@ -89,31 +91,46 @@ cursor moves to just after the first @samp{FOO}.
 @cindex isearch face
   At each step, Emacs highlights the @dfn{current match}---the buffer
 text that matches the search string---using the @code{isearch} face
-(@pxref{Faces}).  The current search string is also displayed in the
-echo area.
+(@pxref{Faces}).  @xref{Search Customizations}, for various options
+that customize this highlighting.  The current search string is also
+displayed in the echo area.
 
   If you make a mistake typing the search string, type @key{DEL}.
 Each @key{DEL} cancels the last character of the search string.
address@hidden in Isearch}, for more about dealing with unsuccessful
+search.
 
address@hidden exit incremental search
address@hidden incremental search, exiting
   When you are satisfied with the place you have reached, type
 @key{RET}.  This stops searching, leaving the cursor where the search
 brought it.  Also, any command not specially meaningful in searches
 stops the searching and is then executed.  Thus, typing @kbd{C-a}
-exits the search and then moves to the beginning of the line.
address@hidden is necessary only if the next command you want to type is a
-printing character, @key{DEL}, @key{RET}, or another character that is
-special within searches (@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s},
address@hidden, @kbd{M-y}, @kbd{M-r}, @kbd{M-c}, @kbd{M-e}, and some others
-described below).
+exits the search and then moves to the beginning of the line; typing
+one of the arrow keys exits the search and performs the respective
+movement command; etc.  @key{RET} is necessary only if the next
+command you want to type is a printing character, @key{DEL},
address@hidden, or another character that is special within searches
+(@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s}, @kbd{C-y}, @kbd{M-y},
address@hidden, @kbd{M-c}, @kbd{M-e}, and some others described below).
+You can fine-tune the commands that exit the search; see @ref{Not
+Exiting Isearch}.
 
   As a special exception, entering @key{RET} when the search string is
 empty launches nonincremental search (@pxref{Nonincremental Search}).
+(This can be customized; see @ref{Search Customizations}.)
+
+  To abandon the search and return to the place where you started,
+type @address@hidden @key{ESC} @key{ESC}} (@code{isearch-cancel}) or
address@hidden C-g} (@code{isearch-abort}).
 
   When you exit the incremental search, it adds the original value of
 point to the mark ring, without activating the mark; you can thus use
address@hidden address@hidden to return to where you were before beginning the
-search.  @xref{Mark Ring}.  It only does this if the mark was not
-already active.
address@hidden address@hidden or @kbd{C-x C-x} to return to where you were
+before beginning the search.  @xref{Mark Ring}.  (Emacs only does this
+if the mark was not already active; if the mark was active when you
+started the search, both @kbd{C-u address@hidden and @kbd{C-x C-x} will
+go to the mark.)
 
 @kindex C-r
 @findex isearch-backward
@@ -134,7 +151,6 @@ characters with @key{DEL}.  Similarly, each @kbd{C-r} in a 
backward
 incremental search repeats the backward search.
 
 @cindex lazy search highlighting
address@hidden isearch-lazy-highlight
   If you pause for a little while during incremental search, Emacs
 highlights all the other possible matches for the search string that
 are present on the screen.  This helps you anticipate where you can
@@ -142,21 +158,26 @@ get to by typing @kbd{C-s} or @kbd{C-r} to repeat the 
search.  The
 other matches are highlighted differently from the current match,
 using the customizable face @code{lazy-highlight} (@pxref{Faces}).  If
 you don't like this feature, you can disable it by setting
address@hidden to @code{nil}.
address@hidden to @code{nil}.  For other customizations
+related to highlighting matches, see @ref{Search Customizations}.
 
   After exiting a search, you can search for the same string again by
 typing just @kbd{C-s C-s}.  The first @kbd{C-s} is the key that
 invokes incremental search, and the second @kbd{C-s} means to search
-again.  Similarly, @kbd{C-r C-r} searches backward for the last
-search string.  In determining the last search string, it doesn't
-matter whether the string was searched for with @kbd{C-s} or
address@hidden
+again for the last search string.  Similarly, @kbd{C-r C-r} searches
+backward for the last search string.  In determining the last search
+string, it doesn't matter whether that string was searched for with
address@hidden or @kbd{C-r}.
 
   If you are searching forward but you realize you were looking for
 something before the starting point, type @kbd{C-r} to switch to a
 backward search, leaving the search string unchanged.  Similarly,
 @kbd{C-s} in a backward search switches to a forward search.
 
address@hidden search, wrapping around
address@hidden search, overwrapped
address@hidden wrapped search
address@hidden overwrapped search
   If a search is failing and you ask to repeat it by typing another
 @kbd{C-s}, it starts again from the beginning of the buffer.
 Repeating a failing reverse search with @kbd{C-r} starts again from
@@ -169,19 +190,86 @@ you have already seen.
 @cindex search ring
 @kindex M-n @r{(Incremental search)}
 @kindex M-p @r{(Incremental search)}
address@hidden search-ring-max
   To reuse earlier search strings, use the @dfn{search ring}.  The
 commands @kbd{M-p} and @kbd{M-n} move through the ring to pick a
 search string to reuse.  These commands leave the selected search ring
-element in the minibuffer, where you can edit it.
-
+element in the minibuffer, where you can edit it.  Type
address@hidden/@kbd{C-r} or @key{RET} to accept the string and start
+searching for it.  The number of most recently used search strings
+saved in the search ring is specified by the variable
address@hidden, 16 by default.
+
address@hidden incremental search, edit search string
address@hidden interactively edit search string
 @kindex M-e @r{(Incremental search)}
address@hidden Mouse-1 @r{in the minibuffer (Incremental Search)}
   To edit the current search string in the minibuffer without
-replacing it with items from the search ring, type @kbd{M-e}.  Type @key{RET},
address@hidden or @kbd{C-r} to finish editing the string and search for it.
+replacing it with items from the search ring, type @kbd{M-e} or click
address@hidden in the minibuffer.  Type @key{RET}, @kbd{C-s} or
address@hidden to finish editing the string and search for it.  Type
address@hidden or @address@hidden to add to the search string characters
+following point from the buffer from which you started the search.
+
address@hidden Isearch Yank
address@hidden Isearch Yanking
+
+  In many cases, you will want to use text at or near point as your
+search string.  The commands described in this subsection let you do
+that conveniently.
+
address@hidden C-w @r{(Incremental search)}
address@hidden isearch-yank-word-or-char
+  @kbd{C-w} (@code{isearch-yank-word-or-char}) appends the next
+character or word at point to the search string.  This is an easy way
+to search for another occurrence of the text at point.  (The decision
+of whether to copy a character or a word is heuristic.)
+
address@hidden M-s C-e @r{(Incremental search)}
address@hidden isearch-yank-line
+  Similarly, @kbd{M-s C-e} (@code{isearch-yank-line}) appends the rest
+of the current line to the search string.  If point is already at the
+end of a line, it appends the next line.  With a prefix argument
address@hidden, it appends the next @var{n} lines.
+
address@hidden C-y @r{(Incremental search)}
address@hidden M-y @r{(Incremental search)}
address@hidden Mouse-2 @r{in the minibuffer (Incremental search)}
address@hidden isearch-yank-kill
address@hidden isearch-yank-pop
address@hidden isearch-yank-x-selection
+  Within incremental search, @kbd{C-y} (@code{isearch-yank-kill})
+appends the current kill to the search string.  @kbd{M-y}
+(@code{isearch-yank-pop}), if called after @kbd{C-y}, replaces that
+appended text with an earlier kill, similar to the usual @kbd{M-y}
+(@code{yank-pop}) command (@pxref{Yanking}).  Clicking @kbd{Mouse-2}
+in the echo area appends the current X selection (@pxref{Primary
+Selection}) to the search string (@code{isearch-yank-x-selection}).
+
address@hidden C-M-w @r{(Incremental search)}
address@hidden C-M-y @r{(Incremental search)}
address@hidden isearch-del-char
address@hidden isearch-yank-char
+  @kbd{C-M-w} (@code{isearch-del-char}) deletes the last character
+from the search string, and @kbd{C-M-y} (@code{isearch-yank-char})
+appends the character after point to the search string.  An
+alternative method to add the character after point is to enter the
+minibuffer with @kbd{M-e} (@pxref{Repeat Isearch}) and type @kbd{C-f}
+or @address@hidden at the end of the search string in the
+minibuffer.  Each @kbd{C-f} or @address@hidden you type adds another
+character following point to the search string.
+
+  Normally, when the search is case-insensitive, text yanked into the
+search string is converted to lower case, so that the search remains
+case-insensitive (@pxref{Lax Search, case folding}).  However, if the
+value of the variable @code{search-upper-case} (@pxref{Lax Search,
+search-upper-case}) is other than @code{not-yanks}, that disables this
+down-casing.
 
 @node Error in Isearch
 @subsection Errors in Incremental Search
 
address@hidden isearch-fail face
   If your string is not found at all, the echo area says @samp{Failing
 I-Search}, and the cursor moves past the place where Emacs found as
 much of your string as it could.  Thus, if you search for @samp{FOOT},
@@ -192,12 +280,13 @@ string that failed to match is highlighted using the face
 
   At this point, there are several things you can do.  If your string
 was mistyped, you can use @key{DEL} to erase some of it and correct
-it.  If you like the place you have found, you can type @key{RET} to
-remain there.  Or you can type @kbd{C-g}, which removes from the
-search string the characters that could not be found (the @samp{T} in
address@hidden), leaving those that were found (the @samp{FOO} in
address@hidden).  A second @kbd{C-g} at that point cancels the search
-entirely, returning point to where it was when the search started.
+it, or you can type @kbd{M-e} and edit it.  If you like the place you
+have found, you can type @key{RET} to remain there.  Or you can type
address@hidden, which removes from the search string the characters that
+could not be found (the @samp{T} in @samp{FOOT}), leaving those that
+were found (the @samp{FOO} in @samp{FOOT}).  A second @kbd{C-g} at
+that point cancels the search entirely, returning point to where it
+was when the search started.
 
 @cindex quitting (in search)
 @kindex C-g @r{(Incremental search)}
@@ -216,34 +305,21 @@ search.
 @node Special Isearch
 @subsection Special Input for Incremental Search
 
-  Some of the characters you type during incremental search have
-special effects.
+  In addition to characters described in the previous subsections,
+some of the other characters you type during incremental search have
+special effects.  They are described here.
 
address@hidden lax space matching
address@hidden M-s SPC @r{(Incremental search)}
address@hidden SPC @r{(Incremental search)}
address@hidden isearch-toggle-lax-whitespace
address@hidden search-whitespace-regexp
-  By default, incremental search performs @dfn{lax space matching}:
-each space, or sequence of spaces, matches any sequence of one or more
-spaces in the text.  Hence, @samp{foo bar} matches @samp{foo bar},
address@hidden@w{  }bar}, @address@hidden   }bar}, and so on (but not
address@hidden).  More precisely, Emacs matches each sequence of space
-characters in the search string to a regular expression specified by
-the variable @code{search-whitespace-regexp}.  For example, to make
-spaces match sequences of newlines as well as spaces, set it to
address@hidden"[[:space:]\n]+"}.
-
-  To toggle lax space matching, type @kbd{M-s @key{SPC}}
-(@code{isearch-toggle-lax-whitespace}).  To disable this feature
-entirely, change @code{search-whitespace-regexp} to @code{nil}; then
-each space in the search string matches exactly one space.
-
-  If the search string you entered contains only lower-case letters,
-the search is case-insensitive; as long as an upper-case letter exists
-in the search string, the search becomes case-sensitive.  If you
-delete the upper-case character from the search string, it ceases to
-have this effect.  @xref{Search Case}.
+  To toggle lax space matching (@pxref{Lax Search, lax space
+matching}), type @kbd{M-s @key{SPC}}.
+
+  To toggle case sensitivity of the search, type @kbd{M-c} or
address@hidden c}.  @xref{Lax Search, case folding}.  If the search string
+includes upper-case letters, the search is case-sensitive by default.
+
+  To toggle whether or not the search will consider similar and
+equivalent characters as a match, type @kbd{M-s '}.  @xref{Lax Search,
+character folding}.  If the search string includes accented
+characters, that disables character folding during that search.
 
 @cindex invisible text, searching for
 @kindex M-s i @r{(Incremental search)}
@@ -251,7 +327,17 @@ have this effect.  @xref{Search Case}.
   To toggle whether or not invisible text is searched, type
 @kbd{M-s i} (@code{isearch-toggle-invisible}).  @xref{Outline Search}.
 
-  To search for a newline character, type @kbd{C-j}.
address@hidden M-r @r{(Incremental Search)}
address@hidden M-s r @r{(Incremental Search)}
address@hidden isearch-toggle-regexp
+  To toggle between non-regexp and regexp incremental search, type
address@hidden or @kbd{M-s r} (@code{isearch-toggle-regexp}).
address@hidden Search}.
+
+  To toggle symbol mode, type @kbd{M-s _}.  @xref{Symbol Search}.
+
+  To search for a newline character, type @kbd{C-j} as part of the
+search string.
 
   To search for address@hidden characters, use one of the
 following methods:
@@ -265,17 +351,21 @@ example, @kbd{C-q C-s} during incremental search adds the
 @samp{control-S} character to the search string.
 
 @item
-Type @kbd{C-x 8 @key{RET}}, followed by a Unicode name or code-point.
-This adds the specified character into the search string, similar to
-the usual @code{insert-char} command (@pxref{Inserting Text}).
+Type @kbd{C-x 8 @key{RET}}, followed by a Unicode name or code-point
+in hex.  This adds the specified character into the search string,
+similar to the usual @code{insert-char} command (@pxref{Inserting
+Text}).
 
 @item
address@hidden C-^ @r{(Incremental Search)}
address@hidden isearch-toggle-input-method
address@hidden isearch-toggle-specified-input-method
 Use an input method (@pxref{Input Methods}).  If an input method is
-enabled in the current buffer when you start the search, you can use
-it in the search string also.  While typing the search string, you can
-toggle the input method with @kbd{C-\}
-(@code{isearch-toggle-input-method}).  You can also turn on a
-non-default input method with @kbd{C-^}
+enabled in the current buffer when you start the search, the same
+method will be active in the minibuffer when you type the search
+string.  While typing the search string, you can toggle the input
+method with @kbd{C-\} (@code{isearch-toggle-input-method}).  You can
+also turn on a non-default input method with @kbd{C-^}
 (@code{isearch-toggle-specified-input-method}), which prompts for the
 name of the input method.  When an input method is active during
 incremental search, the search prompt includes the input method
@@ -286,13 +376,17 @@ I-search address@hidden:
 @end example
 
 @noindent
address@hidden isearch-toggle-input-method
address@hidden isearch-toggle-specified-input-method
 where @var{im} is the mnemonic of the active input method.  Any input
 method you enable during incremental search remains enabled in the
 current buffer afterwards.
 @end itemize
 
address@hidden M-s o @r{(Incremental Search)}
address@hidden isearch-occur
+  Typing @kbd{M-s o} in incremental search invokes
address@hidden, which runs @code{occur} with the current search
+string.  @xref{Other Repeating Search, occur}.
+
 @kindex M-% @r{(Incremental search)}
   Typing @kbd{M-%} in incremental search invokes @code{query-replace}
 or @code{query-replace-regexp} (depending on search mode) with the
@@ -302,83 +396,72 @@ prefix argument means to replace backward.  @xref{Query 
Replace}.
 @kindex M-TAB @r{(Incremental search)}
   Typing @address@hidden in incremental search invokes
 @code{isearch-complete}, which attempts to complete the search string
-using the search ring as a list of completion alternatives.
address@hidden  In many operating systems, the @address@hidden
-key sequence is captured by the window manager; you then need to
-rebind @code{isearch-complete} to another key sequence if you want to
-use it (@pxref{Rebinding}).
-
+using the search ring (the previous search strings you used) as a list
+of completion alternatives.  @xref{Completion}.  In many operating
+systems, the @address@hidden key sequence is captured by the window
+manager; you then need to rebind @code{isearch-complete} to another
+key sequence if you want to use it (@pxref{Rebinding}).
+
address@hidden M-s h r @r{(Incremental Search)}
address@hidden isearch-highlight-regexp
+  You can exit the search while leaving the matches for the last
+search string highlighted on display.  To this end, type @kbd{M-s h r}
+(@code{isearch-highlight-regexp}), which will run
address@hidden (@pxref{Highlight Interactively}) passing
+it the regexp derived from the last search string and prompting you
+for the face to use for highlighting.  To remove the highlighting,
+type @kbd{M-s h u} (@code{unhighlight-regexp}).
+
address@hidden incremental search, help on special keys
address@hidden C-h C-h @r{(Incremental Search)}
address@hidden isearch-help-map
 @vindex isearch-mode-map
-  When incremental search is active, you can type @kbd{C-h C-h} to
-access interactive help options, including a list of special key
-bindings.  These key bindings are part of the keymap
address@hidden (@pxref{Keymaps}).
-
address@hidden Isearch Yank
address@hidden Isearch Yanking
-
address@hidden C-y @r{(Incremental search)}
address@hidden M-y @r{(Incremental search)}
address@hidden isearch-yank-kill
address@hidden isearch-yank-pop
-  Within incremental search, @kbd{C-y} (@code{isearch-yank-kill})
-appends the current kill to the search string.  @kbd{M-y}
-(@code{isearch-yank-pop}), if called after @kbd{C-y}, replaces that
-appended text with an earlier kill, similar to the usual @kbd{M-y}
-(@code{yank-pop}) command (@pxref{Yanking}).  @kbd{Mouse-2} appends
-the current X selection (@pxref{Primary Selection}).
-
address@hidden C-w @r{(Incremental search)}
address@hidden isearch-yank-word-or-char
-  @kbd{C-w} (@code{isearch-yank-word-or-char}) appends the next
-character or word at point to the search string.  This is an easy way
-to search for another occurrence of the text at point.  (The decision
-of whether to copy a character or a word is heuristic.)
-
address@hidden M-s C-e @r{(Incremental search)}
address@hidden isearch-yank-line
-  Similarly, @kbd{M-s C-e} (@code{isearch-yank-line}) appends the rest
-of the current line to the search string.  If point is already at the
-end of a line, it appends the next line.  With a prefix argument
address@hidden, it appends the next @var{n} lines.
-
-  If the search is currently case-insensitive, both @kbd{C-w} and
address@hidden C-e} convert the text they copy to lower case, so that the
-search remains case-insensitive.
-
address@hidden C-M-w @r{(Incremental search)}
address@hidden C-M-y @r{(Incremental search)}
address@hidden isearch-del-char
address@hidden isearch-yank-char
-  @kbd{C-M-w} (@code{isearch-del-char}) deletes the last character
-from the search string, and @kbd{C-M-y} (@code{isearch-yank-char})
-appends the character after point to the search string.  An
-alternative method to add the character after point is to enter the
-minibuffer with @kbd{M-e} (@pxref{Repeat Isearch}) and type @kbd{C-f}
-at the end of the search string in the minibuffer.
+  When incremental search is active, you can type @kbd{C-h C-h}
+(@code{isearch-help-map}) to access interactive help options,
+including a list of special key bindings.  These key bindings are part
+of the keymap @code{isearch-mode-map} (@pxref{Keymaps}).
 
 @node Not Exiting Isearch
 @subsection Not Exiting Incremental Search
 
-This subsection describes two categories of commands which you can
-type without exiting the current incremental search, even though they
-are not themselves part of incremental search.
+This subsection describes how to control whether typing a command not
+specifically meaningful is searches exits the search before executing
+the command.  It also describes two categories of commands which you
+can type without exiting the current incremental search, even though
+they are not themselves part of incremental search.
+
address@hidden search-exit-option
+  Normally, typing a command that is not bound by the incremental
+search exits the search before executing the command.  Thus, the
+command operates on the buffer from which you invoked the search.
+However, if you customize the variable @code{search-exit-option} to
address@hidden, the characters which you type that are not interpreted by
+the incremental search are simply appended to the search string.  This
+is so you could include in the search string control characters, such
+as @kbd{C-a}, that would normally exit the search and invoke the
+command bound to them on the buffer.
 
 @table @asis
 @item Prefix Arguments
address@hidden prefix argument commands, during incremental search
 @vindex isearch-allow-prefix
-  In incremental search, when you enter a prefix argument
-(@pxref{Arguments}), by default it will apply either to the next
-action in the search or to the command that exits the search.
+  In incremental search, when you type a command that specifies a
+prefix argument (@pxref{Arguments}), by default it will apply either
+to the next action in the search or to the command that exits the
+search.  In other words, entering a prefix argument will not by itself
+terminate the search.
 
   In previous versions of Emacs, entering a prefix argument always
 terminated the search.  You can revert to this behavior by setting the
 variable @code{isearch-allow-prefix} to @code{nil}.
 
   When @code{isearch-allow-scroll} is address@hidden (see below),
-prefix arguments always have the default behavior described above.
+prefix arguments always have the default behavior described above,
+i.e., they don't terminate the search, even if
address@hidden is @code{nil}.
 
 @item Scrolling Commands
address@hidden scrolling commands, during incremental search
 @vindex isearch-allow-scroll
   Normally, scrolling commands exit incremental search.  If you change
 the variable @code{isearch-allow-scroll} to a address@hidden value,
@@ -390,12 +473,14 @@ prefix arguments to these commands in the usual way.  
This feature
 won't let you scroll the current match out of visibility, however.
 
   The @code{isearch-allow-scroll} feature also affects some other
-commands, such as @kbd{C-x 2} (@code{split-window-below}) and @kbd{C-x
-^} (@code{enlarge-window}), which don't exactly scroll but do affect
-where the text appears on the screen.  It applies to any command whose
-name has a address@hidden @code{isearch-scroll} property.  So you can
-control which commands are affected by changing these properties.
-
+commands, such as @kbd{C-x 2} (@code{split-window-below}) and
address@hidden ^} (@code{enlarge-window}), which don't exactly scroll but do
+affect where the text appears on the screen.  It applies to any
+command whose name has a address@hidden @code{isearch-scroll}
+property.  So you can control which commands are affected by changing
+these properties.
+
address@hidden prevent commands from exiting incremental search
   For example, to make @kbd{C-h l} usable within an incremental search
 in all future Emacs sessions, use @kbd{C-h c} to find what command it
 runs (@pxref{Key Help}), which is @code{view-lossage}.  Then you can
@@ -409,7 +494,8 @@ put the following line in your init file (@pxref{Init 
File}):
 This feature can be applied to any command that doesn't permanently
 change point, the buffer contents, the match data, the current buffer,
 or the selected window and frame.  The command must not itself attempt
-an incremental search.
+an incremental search.  This feature is disabled if
address@hidden is @code{nil} (which it is by default).
 @end table
 
 @node Isearch Minibuffer
@@ -455,14 +541,22 @@ This enters the minibuffer to read the search string; 
terminate the
 string with @key{RET}, and then the search takes place.  If the string
 is not found, the search command signals an error.
 
address@hidden search-forward
address@hidden search-backward
   When you type @kbd{C-s @key{RET}}, the @kbd{C-s} invokes incremental
 search as usual.  That command is specially programmed to invoke the
-command for nonincremental search, @code{search-forward}, if the
-string you specify is empty.  (Such an empty argument would otherwise
-be useless.)  @kbd{C-r @key{RET}} does likewise, invoking the command
address@hidden
+command for nonincremental search, if the string you specify is empty.
+(Such an empty argument would otherwise be useless.)  @kbd{C-r
address@hidden does likewise, invoking the nonincremental
+backward-searching command.
+
+  Nonincremental search can also be invoked form the menu bar's
address@hidden>Search} menu.
+
address@hidden search-forward
address@hidden search-backward
+  You can also use two simpler commands, @kbd{M-x search-forward} and
address@hidden search-backward}.  These commands look for the literal
+strings you specify, and don't support any of the lax-search features
+(@pxref{Lax Search}) except case folding.
 
 @node Word Search
 @section Word Search
@@ -475,11 +569,13 @@ search matches any sequence of those two words separated 
by one or
 more spaces, newlines, or other punctuation characters.  This is
 particularly useful for searching text documents, because you don't
 have to worry whether the words you are looking for are separated by
-newlines or spaces.
+newlines or spaces.  Note that major modes for programming languages
+or other specialized modes can modify the definition of a word to suit
+their syntactic needs.
 
 @table @kbd
 @item M-s w
-If incremental search is active, toggle word search mode
+  If incremental search is active, toggle word search mode
 (@code{isearch-toggle-word}); otherwise, begin an incremental forward
 word search (@code{isearch-forward-word}).
 @item M-s w @key{RET} @var{words} @key{RET}
@@ -514,6 +610,18 @@ so that the matching can proceed incrementally as you 
type.  This
 additional laxity does not apply to the lazy highlight
 (@pxref{Incremental Search}), which always matches whole words.
 
+  The word search commands don't perform character folding, and
+toggling lax whitespace matching (@pxref{Lax Search, lax space
+matching}) has no effect on them.
+
address@hidden M-s M-w
address@hidden eww-search-word
address@hidden eww-search-prefix
+  Search the Web for the text in region.  This command performs an
+Internet search for the words in region using the search engine whose
address@hidden is specified by the variable @code{eww-search-prefix}.
address@hidden, EWW, , eww, The Emacs Web Wowser Manual}.
+
 @node Symbol Search
 @section Symbol Search
 @cindex symbol search
@@ -529,6 +637,7 @@ searching source code.
 
 @table @kbd
 @item M-s _
address@hidden isearch-toggle-symbol
 If incremental search is active, toggle symbol search mode
 (@code{isearch-toggle-symbol}); otherwise, begin an incremental
 forward symbol search (@code{isearch-forward-symbol}).
@@ -561,6 +670,10 @@ search.  In nonincremental symbol searches, the beginning 
and end of
 the search string are required to match the beginning and end of a
 symbol, respectively.
 
+  The symbol search commands don't perform character folding, and
+toggling lax whitespace matching (@pxref{Lax Search, lax space
+matching}) has no effect on them.
+
 @node Regexp Search
 @section Regular Expression Search
 @cindex regexp search
@@ -595,22 +708,31 @@ for.  To search backward for a regexp, use @kbd{C-M-r}
 (@code{isearch-backward-regexp}), @kbd{C-r} with a prefix argument,
 or @kbd{M-r} within a backward incremental search.
 
address@hidden regexp-search-ring-max
   All of the special key sequences in an ordinary incremental search
-do similar things in an incremental regexp search.  For instance,
-typing @kbd{C-s} immediately after starting the search retrieves the
-last incremental search regexp used and searches forward for it.
-Incremental regexp and non-regexp searches have independent defaults.
-They also have separate search rings, which you can access with
address@hidden and @kbd{M-n}.
+(@pxref{Special Isearch}) do similar things in an incremental regexp
+search.  For instance, typing @kbd{C-s} immediately after starting the
+search retrieves the last incremental search regexp used and searches
+forward for it.  Incremental regexp and non-regexp searches have
+independent defaults.  They also have separate search rings, which you
+can access with @kbd{M-p} and @kbd{M-n}.  The maximum number of search
+regexps saved in the search ring is determined by the value of
address@hidden, 16 by default.
 
   Unlike ordinary incremental search, incremental regexp search
-do not use lax space matching by default.  To toggle this feature
+does not use lax space matching by default.  To toggle this feature
 use @kbd{M-s @key{SPC}} (@code{isearch-toggle-lax-whitespace}).
 Then any @key{SPC} typed in incremental regexp search will match
 any sequence of one or more whitespace characters.  The variable
 @code{search-whitespace-regexp} specifies the regexp for the lax
 space matching.  @xref{Special Isearch}.
 
+  Also unlike ordinary incremental search, incremental regexp search
+cannot use character folding (@pxref{Lax Search}).  (If you toggle
+character folding during incremental regexp search with @kbd{M-s '},
+the search becomes a non-regexp search and the search pattern you
+typed is interpreted as a literal string.)
+
   In some cases, adding characters to the regexp in an incremental
 regexp search can make the cursor move back and start again.  For
 example, if you have searched for @samp{foo} and you add @samp{\|bar},
@@ -629,7 +751,10 @@ starting position.  These search methods are not mirror 
images.
   Nonincremental search for a regexp is done with the commands
 @code{re-search-forward} and @code{re-search-backward}.  You can
 invoke these with @kbd{M-x}, or by way of incremental regexp search
-with @kbd{C-M-s @key{RET}} and @kbd{C-M-r @key{RET}}.
+with @kbd{C-M-s @key{RET}} and @kbd{C-M-r @key{RET}}.  When you invoke
+these commands with @kbd{M-x}, they search for the exact regexp you
+specify, and thus don't support any lax-search features (@pxref{Lax
+Search}) except case folding.
 
   If you use the incremental regexp search commands with a prefix
 argument, they perform ordinary string search, like
@@ -1030,21 +1155,67 @@ This contains two parts in succession: a character set 
matching
 period, @samp{?}, or @samp{!}, and a character set matching
 close-brackets, quotes, or parentheses, repeated zero or more times.
 
address@hidden Search Case
address@hidden Searching and Case
address@hidden Lax Search
address@hidden Lax Matching During Searching
 
-  Searches in Emacs normally ignore the case of the text they are
-searching through, if you specify the text in lower case.  Thus, if
-you specify searching for @samp{foo}, then @samp{Foo} and @samp{foo}
-also match.  Regexps, and in particular character sets, behave
-likewise: @samp{[ab]} matches @samp{a} or @samp{A} or @samp{b} or
address@hidden
address@hidden lax search
address@hidden character equivalence in search
+  Normally, you'd want search commands to disregard certain minor
+differences between the search string you type and the text being
+searched.  For example, sequences of whitespace characters of
+different length are usually perceived as equivalent; letter-case
+differences usually don't matter; etc.  This is known as
address@hidden equivalence}.
 
-  An upper-case letter anywhere in the incremental search string makes
-the search case-sensitive.  Thus, searching for @samp{Foo} does not find
address@hidden or @samp{FOO}.  This applies to regular expression search as
-well as to string search.  The effect ceases if you delete the
-upper-case letter from the search string.
+  This section describes the Emacs lax search features, and how to
+tailor them to your needs.
+
address@hidden lax space matching in search
address@hidden M-s SPC @r{(Incremental search)}
address@hidden SPC @r{(Incremental search)}
address@hidden isearch-toggle-lax-whitespace
address@hidden search-whitespace-regexp
+  By default, search commands perform @dfn{lax space matching}:
+each space, or sequence of spaces, matches any sequence of one or more
+whitespace characters in the text.  (Incremental regexp search has a
+separate default; see @ref{Regexp Search}.)  Hence, @samp{foo bar}
+matches @samp{foo bar}, @address@hidden  }bar}, @address@hidden   }bar}, and
+so on (but not @samp{foobar}).  More precisely, Emacs matches each
+sequence of space characters in the search string to a regular
+expression specified by the variable @code{search-whitespace-regexp}.
+For example, to make spaces match sequences of newlines as well as
+spaces, set it to @samp{"[[:space:]\n]+"}.  The default value of this
+variable depends on the buffer's major mode; most major modes classify
+spaces, tabs, and formfeed characters as whitespace.
+
+  If you want whitespace characters to match exactly, you can turn lax
+space matching off by typing @kbd{M-s @key{SPC}}
+(@code{isearch-toggle-lax-whitespace}) within an incremental search.
+Another @kbd{M-s @key{SPC}} turns lax space matching back on.  To
+disable lax whitespace matching for all searches, change
address@hidden to @code{nil}; then each space in the
+search string matches exactly one space.
+
address@hidden case folding in search
address@hidden case-sensitivity and search
+  Searches in Emacs by default ignore the case of the text they are
+searching through, if you specify the search string in lower case.
+Thus, if you specify searching for @samp{foo}, then @samp{Foo} and
address@hidden also match.  Regexps, and in particular character sets,
+behave likewise: @samp{[ab]} matches @samp{a} or @samp{A} or @samp{b}
+or @samp{B}.  This feature is known as @dfn{case folding}, and it is
+supported in both incremental and non-incremental search modes.
+
address@hidden search-upper-case
+  An upper-case letter anywhere in the search string makes the search
+case-sensitive.  Thus, searching for @samp{Foo} does not find
address@hidden or @samp{FOO}.  This applies to regular expression search
+as well as to literal string search.  The effect ceases if you delete
+the upper-case letter from the search string.  The variable
address@hidden controls this: if it is address@hidden (the
+default), an upper-case character in the search string make the search
+case-sensitive; setting it to @code{nil} disables this effect of
+upper-case characters.
 
 @vindex case-fold-search
   If you set the variable @code{case-fold-search} to @code{nil}, then
@@ -1055,12 +1226,14 @@ This variable applies to nonincremental searches also, 
including those
 performed by the replace commands (@pxref{Replace}) and the minibuffer
 history matching commands (@pxref{Minibuffer History}).
 
address@hidden isearch-toggle-case-fold
-  Typing @kbd{M-c} within an incremental search toggles the case
-sensitivity of that search.  The effect does not extend beyond the
-current incremental search to the next one, but it does override the
-effect of adding or removing an upper-case letter in the current
-search.
address@hidden M-c @r{(Incremental search)}
address@hidden M-s c @r{(Incremental search)}
address@hidden isearch-toggle-case-fold
+  Typing @kbd{M-c} or @kbd{M-s c} (@code{isearch-toggle-case-fold})
+within an incremental search toggles the case sensitivity of that
+search.  The effect does not extend beyond the current incremental
+search, but it does override the effect of adding or removing an
+upper-case letter in the current search.
 
   Several related variables control case-sensitivity of searching and
 matching for specific commands or activities.  For instance,
@@ -1068,6 +1241,45 @@ matching for specific commands or activities.  For 
instance,
 @code{find-tag}.  To find these variables, do @kbd{M-x
 apropos-variable @key{RET} case-fold-search @key{RET}}.
 
address@hidden character folding in search
address@hidden equivalent character sequences
+  Case folding disregards case distinctions among characters, making
+upper-case characters match lower-case variants, and vice versa.  A
+generalization of case folding is @dfn{character folding}, which
+disregards wider classes of distinctions among similar characters.
+For instance, under character folding the letter @code{a} matches all
+of its accented cousins like @code{@"a} and @code{@'a}, i.e., the
+match disregards the diacritics that distinguish these
+variants.  In addition, @code{a} matches other characters that
+resemble it, or have it as part of their graphical representation,
+such as @sc{u+249c parenthesized latin small letter a} and @sc{u+2100
+account of} (which looks like a small @code{a} over @code{c}).
+Similarly, the @acronym{ASCII} double-quote character @code{"} matches
+all the other variants of double quotes defined by the Unicode
+standard.  Finally, character folding can make a sequence of one or
+more characters match another sequence of a different length: for
+example, the sequence of two characters @code{ff} matches @sc{u+fb00
+latin small ligature ff}.  Character sequences that are not identical,
+but match under character folding are known as @dfn{equivalent
+character sequences}.
+
address@hidden M-s ' @r{(Incremental Search)}
address@hidden isearch-toggle-character-fold
+  Generally, search commands in Emacs by default perform character
+folding, thus matching equivalent character sequences.  You can
+disable this behavior by customizing the variable
address@hidden to @code{nil}.  @xref{Search
+Customizations}.  Within an incremental search, typing @kbd{M-s '}
+(@code{isearch-toggle-character-fold}) toggles character folding, but
+only for that search.  (Replace commands have a different default,
+controlled by a separate option; see @ref{Replacement and Lax
+Matches}.)
+
+  Like with case folding, typing an explicit variant of a character,
+such as @code{@"a}, as part of the search string disables character
+folding for that search.  If you delete such a character from the
+search string, this effect ceases.
+
 @node Replace
 @section Replacement Commands
 @cindex replacement
@@ -1078,7 +1290,8 @@ apropos-variable @key{RET} case-fold-search @key{RET}}.
   Emacs provides several commands for performing search-and-replace
 operations.  In addition to the simple @kbd{M-x replace-string}
 command, there is @kbd{M-%} (@code{query-replace}), which presents
-each occurrence of the pattern and asks you whether to replace it.
+each occurrence of the search pattern and asks you whether to replace
+it.
 
   The replace commands normally operate on the text from point to the
 end of the buffer.  When the region is active, they operate on it
@@ -1087,17 +1300,11 @@ instead (@pxref{Mark}).  The basic replace commands 
replace one
 is possible to perform several replacements in parallel, using the
 command @code{expand-region-abbrevs} (@pxref{Expanding Abbrevs}).
 
address@hidden replace-lax-whitespace
-  Unlike incremental search, the replacement commands do not use lax
-space matching (@pxref{Special Isearch}) by default.  To enable lax
-space matching for replacement, change the variable
address@hidden to @code{t}.  (This only affects how
-Emacs finds the text to replace, not the replacement text.)
-
 @menu
 * Unconditional Replace::   Replacing all matches for a string.
 * Regexp Replace::          Replacing all matches for a regexp.
-* Replacement and Case::    How replacements preserve case of letters.
+* Replacement and Lax Matches::
+                            Lax searching for text to replace.
 * Query Replace::           How to use querying.
 @end menu
 
@@ -1128,8 +1335,8 @@ activating the mark; use @kbd{C-u address@hidden to move 
back there.
   A prefix argument restricts replacement to matches that are
 surrounded by word boundaries.
 
-  @xref{Replacement and Case}, for details about case-sensitivity in
-replace commands.
+  @xref{Replacement and Lax Matches}, for details about
+case-sensitivity in replace commands.
 
 @node Regexp Replace
 @subsection Regexp Replacement
@@ -1137,7 +1344,7 @@ replace commands.
 
   The @kbd{M-x replace-string} command replaces exact matches for a
 single string.  The similar command @kbd{M-x replace-regexp} replaces
-any match for a specified pattern.
+any match for a specified regular expression pattern (@pxref{Regexps}).
 
 @table @kbd
 @item M-x replace-regexp @key{RET} @var{regexp} @key{RET} @var{newstring} 
@key{RET}
@@ -1218,9 +1425,28 @@ M-x replace-regexp @key{RET} 
address@hidden,address@hidden @key{RET}
 \,(format "%-72sABC%05d" \& \#) @key{RET}
 @end example
 
address@hidden Replacement and Case
address@hidden Replace Commands and Case
address@hidden Replacement and Lax Matches
address@hidden Replace Commands and Lax Matches
+
+  This subsection describes the behavior of replace commands with
+respect to lax matches (@pxref{Lax Search}) and how to customize it.
+In general, replace commands mostly default to stricter matching than
+their search counterparts.
 
address@hidden lax space matching in replace commands
address@hidden replace-lax-whitespace
+  Unlike incremental search, the replacement commands do not use lax
+space matching (@pxref{Lax Search, lax space matching}) by default.
+To enable lax space matching for replacement, change the variable
address@hidden to address@hidden  (This only affects
+how Emacs finds the text to replace, not the replacement text.)
+
address@hidden replace-regexp-lax-whitespace
+  A companion variable @code{replace-regexp-lax-whitespace} controls
+whether @code{query-replace-regexp} uses lax whitespace matching when
+searching for patterns.
+
address@hidden case folding in replace commands
   If the first argument of a replace command is all lower case, the
 command ignores case while searching for occurrences to
 replace---provided @code{case-fold-search} is address@hidden  If
@@ -1250,6 +1476,15 @@ exactly as given, with no case conversion.  Likewise, if 
either
 @code{case-replace} or @code{case-fold-search} is set to @code{nil},
 replacement is done without case conversion.
 
address@hidden character folding in replace commands
+  The replacement commands by default do not use character folding
+(@pxref{Lax Search, character folding}) when looking for the text to
+replace.  To enable character folding for matching in
address@hidden and @code{replace-string}, set the variable
address@hidden to a address@hidden value.  (This
+setting does not affect the replacement text, only how Emacs finds the
+text to replace.  It also doesn't affect @code{replace-regexp}.)
+
 @node Query Replace
 @subsection Query Replace
 @cindex query replace
@@ -1270,9 +1505,9 @@ occurrence and asks you whether to replace it.  Aside 
from querying,
 @code{query-replace} works just like @code{replace-string}
 (@pxref{Unconditional Replace}).  In particular, it preserves case
 provided @code{case-replace} is address@hidden, as it normally is
-(@pxref{Replacement and Case}).  A numeric argument means to consider
-only occurrences that are bounded by word-delimiter characters.  A
-negative prefix argument replaces backward.
+(@pxref{Replacement and Lax Matches}).  A numeric argument means to
+consider only occurrences that are bounded by word-delimiter
+characters.  A negative prefix argument replaces backward.
 
 @kindex C-M-%
 @findex query-replace-regexp
@@ -1280,18 +1515,38 @@ negative prefix argument replaces backward.
 It works like @code{replace-regexp} except that it queries
 like @code{query-replace}.
 
address@hidden query-replace-from-to-separator
+  You can reuse earlier replacements with these commands.  When
address@hidden or @code{query-replace-regexp} prompts for the
+search string, use @kbd{M-p} and @kbd{M-n} to show previous
+replacements in the form @address@hidden -> @var{to}}, where
address@hidden is the search pattern, @var{to} is its replacement, and the
+separator between them is determined by the value of the variable
address@hidden  Type @key{RET} to select the
+desired replacement.
+
 @cindex faces for highlighting query replace
 @cindex query-replace face
address@hidden lazy-highlight face
address@hidden lazy-highlight face, in replace
address@hidden query-replace-highlight
address@hidden query-replace-lazy-highlight
address@hidden query-replace-show-replacement
   These commands highlight the current match using the face
address@hidden  They highlight other matches using
address@hidden just like incremental search (@pxref{Incremental
-Search}).  By default, @code{query-replace-regexp} will show the
-substituted replacement string for the current match in the
-minibuffer.  If you want to keep special sequences @samp{\&} and
address@hidden@var{n}} unexpanded, customize
address@hidden  You can disable this highlight by setting the
+variable @code{query-replace-highlight} to @code{nil}.  They highlight
+other matches using @code{lazy-highlight} just like incremental search
+(@pxref{Incremental Search}); this can be disabled by setting
address@hidden to @code{nil}.  By default,
address@hidden will show the substituted replacement
+string for the current match in the minibuffer.  If you want to keep
+special sequences @samp{\&} and @address@hidden unexpanded, customize
 @code{query-replace-show-replacement} variable.
 
address@hidden query-replace-skip-read-only
+  The variable @code{query-replace-skip-read-only}, if set
address@hidden, will cause replacement commands to ignore matches in
+read-only text.  The default is not to ignore them.
+
   The characters you can type when you are shown a match for the string
 or regexp are:
 
@@ -1311,9 +1566,13 @@ or regexp are:
 @c WideCommands
 @table @kbd
 @item @key{SPC}
address@hidden y
 to replace the occurrence with @var{newstring}.
 
 @item @key{DEL}
address@hidden @key{Delete}
address@hidden @key{BACKSPACE}
address@hidden n
 to skip to the next occurrence without replacing this one.
 
 @item , @r{(Comma)}
@@ -1329,6 +1588,7 @@ must use @kbd{C-x @key{ESC} @key{ESC} @key{RET}} to 
restart
 (@pxref{Repetition}).
 
 @item @key{RET}
address@hidden q
 to exit without doing any more replacements.
 
 @item .@: @r{(Period)}
@@ -1338,19 +1598,6 @@ occurrences.
 @item !
 to replace all remaining occurrences without asking again.
 
address@hidden Y @r{(Upper-case)}
-to replace all remaining occurrences in all remaining buffers in
-multi-buffer replacements (like the Dired @key{Q} command that performs
-query replace on selected files).  It answers this question and all
-subsequent questions in the series with ``yes'', without further
-user interaction.
-
address@hidden N @r{(Upper-case)}
-to skip to the next buffer in multi-buffer replacements without
-replacing remaining occurrences in the current buffer.  It answers
-this question ``no'', gives up on the questions for the current buffer,
-and continues to the next buffer in the sequence.
-
 @item ^
 to go back to the position of the previous occurrence (or what used to
 be an occurrence), in case you changed it by mistake or want to
@@ -1378,19 +1625,30 @@ replacement string for any further occurrences.
 to redisplay the screen.  Then you must type another character to
 specify what to do with this occurrence.
 
address@hidden Y @r{(Upper-case)}
+to replace all remaining occurrences in all remaining buffers in
+multi-buffer replacements (like the Dired @key{Q} command that performs
+query replace on selected files).  It answers this question and all
+subsequent questions in the series with ``yes'', without further
+user interaction.
+
address@hidden N @r{(Upper-case)}
+to skip to the next buffer in multi-buffer replacements without
+replacing remaining occurrences in the current buffer.  It answers
+this question ``no'', gives up on the questions for the current buffer,
+and continues to the next buffer in the sequence.
+
 @item C-h
address@hidden ?
address@hidden @key{F1}
 to display a message summarizing these options.  Then you must type
 another character to specify what to do with this occurrence.
 @end table
 
-  Some other characters are aliases for the ones listed above: @kbd{y},
address@hidden and @kbd{q} are equivalent to @key{SPC}, @key{DEL} and
address@hidden
-
   Aside from this, any other character exits the @code{query-replace},
 and is then reread as part of a key sequence.  Thus, if you type
 @kbd{C-k}, it exits the @code{query-replace} and then kills to end of
-line.
+line.  In particular, @kbd{C-g} simply exits the @code{query-replace}.
 
   To restart a @code{query-replace} once it is exited, use @kbd{C-x
 @key{ESC} @key{ESC}}, which repeats the @code{query-replace} because it
@@ -1454,12 +1712,17 @@ a multi-file incremental search is activated 
automatically.
 
 @cindex Occur mode
 @cindex mode, Occur
address@hidden match (face name)
address@hidden list-matching-lines-default-context-lines
 @item M-x occur
 Prompt for a regexp, and display a list showing each line in the
-buffer that contains a match for it.  To limit the search to part of
-the buffer, narrow to that part (@pxref{Narrowing}).  A numeric
+buffer that contains a match for it.  The text that matched is
+highlighted using the @code{match} face.  To limit the search to part
+of the buffer, narrow to that part (@pxref{Narrowing}).  A numeric
 argument @var{n} specifies that @var{n} lines of context are to be
-displayed before and after each matching line.
+displayed before and after each matching line.  The default number of
+context lines is specified by the variable
address@hidden
 
 @kindex RET @r{(Occur mode)}
 @kindex o @r{(Occur mode)}
@@ -1526,3 +1789,89 @@ it never deletes lines that are only partially contained 
in the region
 
 If a match is split across lines, this command keeps all those lines.
 @end table
+
address@hidden Search Customizations
address@hidden Tailoring Search to Your Needs
address@hidden search customizations
+
+  This section describes miscellaneous search-related customizations
+not described elsewhere.
+
address@hidden default search mode
address@hidden search mode, default
+  The default search mode for the incremental search is specified by
+the variable @code{search-default-regexp-mode}.  It can be @code{nil},
address@hidden, or a function.  If it is @code{nil}, the default mode is to
+do literal searches without character folding, but with case folding
+and lax-whitespace matches as determined by @code{case-fold-search}
+and @code{search-whitespace-regexp}, respectively (@pxref{Lax
+Search}).  If the value is @code{t}, incremental search defaults to
+regexp searches.  The default value specifies a function that causes
+the default search mode to perform character folding in addition to
+case folding and lax-whitespace matching.
+
address@hidden search-highlight
+  The current match of an on-going incremental search is highlighted
+using the @code{isearch} face.  This highlighting can be disabled by
+setting the variable @code{search-highlight} to @code{nil}.
+
address@hidden lazy highlighting customizations
address@hidden isearch-lazy-highlight
address@hidden lazy-highlight face
+  The other matches for the search string that are visible on display
+are highlighted using the @code{lazy-highlight} face.  Setting the
+variable @code{isearch-lazy-highlight} to @code{nil} disables this
+highlighting.  Here are some other variables that customize the lazy
+highlighting:
+
address@hidden @code
address@hidden lazy-highlight-initial-delay
+Time in seconds to wait before highlighting visible matches.
+
address@hidden lazy-highlight-interval
+Time in seconds between highlighting successive matches.
+
address@hidden lazy-highlight-max-at-a-time
+The maximum number of matches to highlight before checking for input.
+A large number can take some time to highlight, so if you want to
+continue searching and type @kbd{C-s} or @kbd{C-r} during that time,
+Emacs will not respond until it finishes highlighting all those
+matches.  Thus, smaller values make Emacs more responsive.
address@hidden table
+
address@hidden search-nonincremental-instead
+  Normally, entering @key{RET} within incremental search when the
+search string is empty launches a nonincremental search.  (Actually,
+it lets you edit the search string, and the next @key{RET} does the
+search.)  However, if you customize the variable
address@hidden to @code{nil}, typing @key{RET}
+will always exit the incremental search, even if the search string is
+empty.
+
address@hidden isearch-hide-immediately
+  By default, incremental search and query-replace commands match
+invisible text, but hide any such matches as soon as the current match
+moves off the invisible text.  If you customize the variable
address@hidden to @code{nil}, any invisible text
+where matches were found stays on display until the search or the
+replace command exits.
+
address@hidden search display on slow terminals
address@hidden search-slow-speed
address@hidden search-slow-window-lines
+  Searching incrementally on slow terminals, such as displays
+connected to remote machines over slow connection, could be annoying
+due to the need to redraw large portions of the display as the search
+proceeds.  Emacs provides a special display mode for slow terminals,
+whereby search pops up a separate small window and displays the text
+surrounding the match in that window.  Small windows display faster,
+so the annoying effect of slow speed is alleviated.  The variable
address@hidden determines the baud rate threshold below
+which Emacs will use this display mode.  The variable
address@hidden controls the number of lines in the
+window Emacs pops up for displaying the search results; the default is
+1 line.  Normally, this window will pop up at the bottom of the window
+that displays the buffer where you start searching, bit if the value
+of @code{search-slow-window-lines} is negative, that means to put the
+window at the top and give it the number of lines that is the absolute
+value of that value.
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index 45a21c8..55fa5bc 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -716,7 +716,9 @@ The special commands of these modes bind 
@code{buffer-read-only} to
 
 @defvar buffer-read-only
 This buffer-local variable specifies whether the buffer is read-only.
-The buffer is read-only if this variable is address@hidden
+The buffer is read-only if this variable is address@hidden  However,
+characters that have the @code{inhibit-read-only} text property can
+still be modified.  @xref{Special Properties, inhibit-read-only}.
 @end defvar
 
 @defvar inhibit-read-only
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index ad248b1..e9354cc 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1889,12 +1889,13 @@ end of the result if it falls short of @var{width}.  It 
is also used at
 the beginning of the result if one multi-column character in
 @var{string} extends across the column @var{start-column}.
 
address@hidden truncate-string-ellipsis
 If @var{ellipsis} is address@hidden, it should be a string which will
 replace the end of @var{string} (including any padding) if it extends
 beyond @var{width}, unless the display width of @var{string} is equal
 to or less than the display width of @var{ellipsis}.  If
 @var{ellipsis} is address@hidden and not a string, it stands for
address@hidden"..."}.
+the value of the variable @code{truncate-string-ellipsis}.
 
 @example
 (truncate-string-to-width "\tab\t" 12 4)
@@ -3659,6 +3660,39 @@ tag (or @code{nil}, which stands for the default 
langsys), and each
 @end table
 @end defun
 
address@hidden font information for layout
+The following four functions return size information about fonts used
+by various faces, allowing various layout considerations in Lisp
+programs.  These functions take face remapping into consideration,
+returning information about the remapped face, if the face in question
+was remapped.  @xref{Face Remapping}.
+
address@hidden default-font-width
+This function returns the average width in pixels of the font used by
+the current buffer's default face.
address@hidden defun
+
address@hidden default-font-height
+This function returns the height in pixels of the font used by the
+current buffer's default face.
address@hidden defun
+
address@hidden window-font-width &optional window face
+This function returns the average width in pixels for the font used by
address@hidden in @var{window}.  The specified @var{window} must be a live
+window.  If @code{nil} or omitted, @var{window} defaults to the
+selected window, and @var{face} defaults to the default face in
address@hidden
address@hidden defun
+
address@hidden window-font-height &optional window face
+This function returns the height in pixels for the font used by
address@hidden in @var{window}.  The specified @var{window} must be a live
+window.  If @code{nil} or omitted, @var{window} defaults to the
+selected window, and @var{face} defaults to the default face in
address@hidden
address@hidden defun
+
 @node Fringes
 @section Fringes
 @cindex fringes
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 2d3548f..dedb0a5 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -602,6 +602,7 @@ Loading
 * Unloading::               How to unload a library that was loaded.
 * Hooks for Loading::       Providing code to be run when
                               particular libraries are loaded.
+* Dynamic Modules::         Modules provide additional Lisp primitives.
 
 Byte Compilation
 
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index 067dbd2..dfad9fb 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -780,7 +780,8 @@ to specify this function, but it is more robust to use the
 @deffn Command eval-buffer &optional buffer-or-name stream filename unibyte 
print
 This is similar to @code{eval-region}, but the arguments provide
 different optional features.  @code{eval-buffer} operates on the
-entire accessible portion of buffer @var{buffer-or-name}.
+entire accessible portion of buffer @var{buffer-or-name}
+(@pxref{Narrowing,,, emacs, The GNU Emacs Manual}).
 @var{buffer-or-name} can be a buffer, a buffer name (a string), or
 @code{nil} (or omitted), which means to use the current buffer.
 @var{stream} is used as in @code{eval-region}, unless @var{stream} is
@@ -833,9 +834,9 @@ The value of this variable is a list of the values returned 
by all the
 expressions that were read, evaluated, and printed from buffers
 (including the minibuffer) by the standard Emacs commands which do
 this.  (Note that this does @emph{not} include evaluation in
address@hidden buffers, nor evaluation using @kbd{C-j} in
address@hidden)  The elements are ordered most recent
-first.
address@hidden buffers, nor evaluation using @kbd{C-j}, @kbd{C-x C-e},
+and similar evaluation commands in @code{lisp-interaction-mode}.)  The
+elements are ordered most recent first.
 
 @example
 @group
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 9a1b2cd..918bf5b 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -2030,11 +2030,6 @@ form.
 @end example
 @end defun
 
address@hidden directory-name-p filename
-This function returns address@hidden if @var{filename} ends with a
-forward slash (@samp{/}) character.
address@hidden defun
-
 @node Directory Names
 @subsection Directory Names
 @cindex directory name
@@ -2076,6 +2071,13 @@ string (if it does not already end in one).
 @end example
 @end defun
 
address@hidden directory-name-p filename
+This function returns address@hidden if @var{filename} ends with a
+directory separator character.  This is the forward slash @samp{/} on
+Unix and GNU systems; MS-Windows and MS-DOS recognize both the forward
+slash and the backslash @samp{\} as directory separators.
address@hidden defun
+
 @defun directory-file-name dirname
 This function returns a string representing @var{dirname} in a form
 that the operating system will interpret as the name of a file (a
@@ -2632,12 +2634,20 @@ An error is signaled if @var{directory} is not the name 
of a directory
 that can be read.
 @end defun
 
address@hidden directory-files-recursively directory match &optional 
include-directories
-Return all files under @var{directory} whose file names match
address@hidden recursively.  The file names are returned depth first,
-meaning that contents of sub-directories are returned before contents
-of the directories.  If @var{include-directories} is address@hidden,
-also return directory names that have matching names.
address@hidden directory-files-recursively directory regexp &optional 
include-directories
+Return all files under @var{directory} whose names match @var{regexp}.
+This function searches the specified @var{directory} and its
+sub-directories, recursively, for files whose basenames (i.e., without
+the leading directories) match the specified @var{regexp}, and returns
+a list of the absolute file names of the matching files
+(@pxref{Relative File Names, absolute file names}).  The file names
+are returned in depth-first order, meaning that files in some
+sub-directory are returned before the files in its parent directory.
+In addition, matching files found in each subdirectory are sorted
+alphabetically by their basenames.  By default, directories whose
+names match @var{regexp} are omitted from the list, but if the
+optional argument @var{include-directories} is address@hidden, they
+are included.
 @end defun
 
 @defun directory-files-and-attributes directory &optional full-name 
match-regexp nosort id-format
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 3ae3308..80a4af2 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -557,7 +557,7 @@ The top left corner of the native frame specifies the 
@dfn{native
 position} of the frame.  (1)--(3) in the drawing above indicate that
 position for the various builds:
 
address@hidden @w
address@hidden @w{}
 @item (1) non-toolkit and terminal frames
 
 @item (2) Lucid, Motif and Windows frames
@@ -1001,18 +1001,40 @@ parameters of @var{frame} and their values.  If 
@var{frame} is
 @end defun
 
 @defun modify-frame-parameters frame alist
-This function alters the parameters of frame @var{frame} based on the
-elements of @var{alist}.  Each element of @var{alist} has the form
address@hidden(@var{parm} . @var{value})}, where @var{parm} is a symbol naming a
-parameter.  If you don't mention a parameter in @var{alist}, its value
-doesn't change.  If @var{frame} is @code{nil}, it defaults to the selected
-frame.
+This function alters the frame @var{frame} based on the elements of
address@hidden  Each element of @var{alist} has the form
address@hidden(@var{parm} . @var{value})}, where @var{parm} is a symbol naming
+a parameter.  If you don't mention a parameter in @var{alist}, its
+value doesn't change.  If @var{frame} is @code{nil}, it defaults to
+the selected frame.
+
+Some parameters are only meaningful for frames on certain kinds of
+display (@pxref{Frames}).  If @var{alist} includes parameters that are
+not meaningful for the @var{frame}'s display, this function will
+change its value in the frame's parameter list, but will otherwise
+ignore it.
+
+When @var{alist} specifies more than one parameter whose value can
+affect the new size of @var{frame}, the final size of the frame may
+differ according to the toolkit used.  For example, specifying that a
+frame should from now on have a menu and/or tool bar instead of none and
+simultaneously specifying the new height of the frame will inevitably
+lead to a recalculation of the frame's height.  Conceptually, in such
+case, this function will try to have the explicit height specification
+prevail.  It cannot be excluded, however, that the addition (or removal)
+of the menu or tool bar, when eventually performed by the toolkit, will
+defeat this intention.
+
+Sometimes, binding @code{frame-inhibit-implied-resize} (@pxref{Implied
+Frame Resizing}) to a address@hidden value around calls to this function
+may fix the problem sketched here.  Sometimes, however, exactly such
+binding may be hit by the problem.
 @end defun
 
 @defun set-frame-parameter frame parm value
 This function sets the frame parameter @var{parm} to the specified
address@hidden  If @var{frame} is @code{nil}, it defaults to the
-selected frame.
address@hidden  If @var{frame} is @code{nil}, it defaults to the selected
+frame.
 @end defun
 
 @defun modify-all-frames-parameters alist
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 387587a..685995b 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -352,16 +352,16 @@ string in Emacs Lisp.
 @defvar text-quoting-style
 @cindex curved quotes
 @cindex curly quotes
-The value of this variable specifies the style used to generate text
-quotes.  If the variable's value is @code{curve}, the style is
+The value of this variable is a symbol that specifies the style Emacs
+should use for single quotes in the wording of help and messages.
+If the variable's value is @code{curve}, the style is
 @t{‘like this’} with curved single quotes.  If the value is
 @code{straight}, the style is @t{'like this'} with straight
 apostrophes.  If the value is @code{grave}, the style is @t{`like
-this'} with grave accent and apostrophe.  The default value @code{nil}
+this'} with grave accent and apostrophe, the standard style
+before Emacs version 25.  The default value @code{nil}
 acts like @code{curve} if curved single quotes are displayable, and
-like @code{grave} otherwise.  To use the traditional @code{grave}
-style, put the line @code{(setq text-quoting-style 'grave)} into your
address@hidden/.emacs} file.
+like @code{grave} otherwise.
 @end defvar
 
 @defun substitute-command-keys string
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 82de765..e01f316 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -29,7 +29,15 @@ into a buffer and evaluated there.  (Indeed, most code is 
tested this
 way.)  Most often, the forms are function definitions and variable
 definitions.
 
-For on-demand loading of external libraries, @pxref{Dynamic Libraries}.
+  Emacs can also load compiled dynamic modules: shared libraries that
+provide additional functionality for use in Emacs Lisp programs, just
+like a package written in Emacs Lisp would.  When a dynamic module is
+loaded, Emacs calls a specially-named initialization function which
+the module needs to implement, and which exposes the additional
+functions and variables to Emacs Lisp programs.
+
+For on-demand loading of external libraries which are known in advance
+to be required by certain Emacs primitives, @pxref{Dynamic Libraries}.
 
 @menu
 * How Programs Do Loading:: The @code{load} function and others.
@@ -43,6 +51,7 @@ For on-demand loading of external libraries, @pxref{Dynamic 
Libraries}.
 * Unloading::               How to unload a library that was loaded.
 * Hooks for Loading::       Providing code to be run when
                               particular libraries are loaded.
+* Dynamic Modules::         Modules provide additional Lisp primitives.
 @end menu
 
 @node How Programs Do Loading
@@ -1076,3 +1085,53 @@ defined in another library (those meant for outside 
use), you can do
 it immediately---there is no need to wait until the library is loaded.
 If you need to call functions defined by that library, you should load
 the library, preferably with @code{require} (@pxref{Named Features}).
+
address@hidden Dynamic Modules
address@hidden Emacs Dynamic Modules
address@hidden dynamic modules
+
address@hidden FIXME: This is intentionally incomplete, as the module 
integration
address@hidden is not yet finished.  To be refined later.
+  A @dfn{dynamic Emacs module} is a shared library that provides
+additional functionality for use in Emacs Lisp programs, just like a
+package written in Emacs Lisp would.
+
+  Functions that load Emacs Lisp packages can also load dynamic
+modules.  They recognize dynamic modules by looking at their file-name
+extension, a.k.a.@: ``suffix''.  This suffix is platform-dependent.
+
address@hidden module-file-suffix
+This variable holds the system-dependent value of the file-name
+extension of the module files.  Its value is @file{.so} on Posix hosts
+and @file{.dll} on MS-Windows.
address@hidden defvar
+
address@hidden emacs_module_init
address@hidden plugin_is_GPL_compatible
+Every dynamic module should export a C-callable function named
address@hidden, which Emacs will call as part of the call to
address@hidden or @code{require} which loads the module.  It should also
+export a symbol named @code{plugin_is_GPL_compatible} to indicate that
+its code is released under the GPL or compatible license; Emacs will
+refuse to load modules that don't export such a symbol.
+
+If a module needs to call Emacs functions, it should do so through the
+API defined and documented in the header file @file{emacs-module.h}
+that is part of the Emacs distribution.
+
address@hidden user-ptr object
+Modules can create @code{user-ptr} Lisp objects that embed pointers to
+C struct's defined by the module.  This is useful for keeping around
+complex data structures created by a module, to be passed back to the
+module's functions.  User-ptr objects can also have associated
address@hidden -- functions to be run when the object is GC'ed; this
+is useful for freeing any resources allocated for the underlying data
+structure, such as memory, open file descriptors, etc.
+
address@hidden user-ptrp object
+This function returns @code{t} if its argument is a @code{user-ptr}
+object.
address@hidden defun
+
+Loadable modules in Emacs are enabled by using the
address@hidden option at configure time.
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index f3c4e29..5b89e1a 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -902,6 +902,9 @@ Hewlett-Packard HPUX operating system.
 @item irix
 Silicon Graphics Irix system.
 
address@hidden nacl
+Google Native Client (@acronym{NaCl}) sandboxing system.
+
 @item ms-dos
 Microsoft's address@hidden  Emacs compiled with DJGPP for MS-DOS binds
 @code{system-type} to @code{ms-dos} even when you run it on MS-Windows.
@@ -911,7 +914,7 @@ AT&T Unix System V.
 
 @item windows-nt
 Microsoft Windows NT, 9X and later.  The value of @code{system-type}
-is always @code{windows-nt}, e.g., even on Windows 7.
+is always @code{windows-nt}, e.g., even on Windows 10.
 
 @end table
 
@@ -2919,6 +2922,18 @@ means complete; it is intended to give you an idea of 
the security
 issues involved, rather than to be a security checklist.
 
 @table @asis
address@hidden File local variables
address@hidden file local variables
+A file that Emacs visits can contain variable settings that affects
+the buffer visiting that file; @xref{File Local Variables}.
+Similarly, a directory can specify local variable values common to all
+files in that directory; @xref{Directory Local Variables}.  Although
+Emacs takes some effort to protect against misuse of these variables,
+a security hole can be created merely by a package setting
address@hidden too optimistically, a problem that is all
+too common.  To disable this feature for both files and directories,
+set @code{enable-local-variables} to @code{nil}.
+
 @item Access control
 Although Emacs normally respects access permissions of the underlying
 operating system, in some cases it handles accesses specially.  For
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index f8685d9..8aa4539 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -465,6 +465,7 @@ Representations}.
 @code{string-equal} is another name for @code{string=}.
 @end defun
 
address@hidden locale-dependent string equivalence
 @defun string-collate-equalp string1 string2 &optional locale ignore-case
 This function returns @code{t} if @var{string1} and @var{string2} are
 equal with respect to collation rules.  A collation rule is not only
@@ -493,6 +494,7 @@ systems.
 If @var{ignore-case} is address@hidden, characters are converted to lower-case
 before comparing them.
 
address@hidden w32-collate-ignore-punctuation
 To emulate Unicode-compliant collation on MS-Windows systems,
 bind @code{w32-collate-ignore-punctuation} to a address@hidden value, since
 the codeset part of the locale cannot be @code{"UTF-8"} on MS-Windows.
@@ -518,7 +520,7 @@ optional argument @var{ignore-case} is address@hidden, the 
comparison
 ignores case differences.
 @end defun
 
address@hidden lexical comparison
address@hidden lexical comparison of strings
 @defun string< string1 string2
 @c (findex string< causes problems for permuted index!!)
 This function compares two strings a character at a time.  It
@@ -576,6 +578,7 @@ are used.
 @code{string-lessp} is another name for @code{string<}.
 @end defun
 
address@hidden locale-dependent string comparison
 @defun string-collate-lessp string1 string2 &optional locale ignore-case
 This function returns @code{t} if @var{string1} is less than
 @var{string2} in collation order.  A collation order is not only
@@ -594,15 +597,15 @@ for sorting (@pxref{Sequence Functions}):
 @end group
 @end example
 
-This behavior is system-dependent; punctuation and whitespace are
-never ignored on Cygwin, regardless of locale.
+This behavior is system-dependent; e.g., punctuation and whitespace
+are never ignored on Cygwin, regardless of locale.
 
 The optional argument @var{locale}, a string, overrides the setting of
 your current locale identifier for collation.  The value is system
 dependent; a @var{locale} @code{"en_US.UTF-8"} is applicable on POSIX
 systems, while it would be, e.g., @code{"enu_USA.1252"} on MS-Windows
-systems.  The @var{locale} @code{"POSIX"} lets @code{string-collate-lessp}
-behave like @code{string-lessp}:
+systems.  The @var{locale} value of @code{"POSIX"} or @code{"C"} lets
address@hidden behave like @code{string-lessp}:
 
 @example
 @group
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 6d9d26f..f3679a8 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -899,13 +899,25 @@ adds it to the most recent element.  It determines 
automatically (using
 @code{last-command}) whether the previous command was a kill command,
 and if so appends the killed text to the most recent entry.
 
address@hidden Command kill-region start end
-This function kills the text in the region defined by @var{start} and
address@hidden  The text is deleted but saved in the kill ring, along with
-its text properties.  The value is always @code{nil}.
address@hidden filtering killed text
+  The commands described below can filter the killed text before they
+save it in the kill ring.  They call @code{filter-buffer-substring}
+(@pxref{Buffer Contents}) to perform the filtering.  By default,
+there's no filtering, but major and minor modes and hook functions can
+set up filtering, so that text saved in the kill ring is different
+from what was in the buffer.
+
address@hidden Command kill-region start end &optional region
+This function kills the stretch of text between @var{start} and
address@hidden; but if the optional argument @var{region} is
address@hidden, it ignores @var{start} and @var{end}, and kills the
+text in the current region instead.  The text is deleted but saved in
+the kill ring, along with its text properties.  The value is always
address@hidden
 
 In an interactive call, @var{start} and @var{end} are point and
-the mark.
+the mark, and @var{region} is always address@hidden, so the command
+always kills the text in the current region.
 
 If the buffer or text is read-only, @code{kill-region} modifies the kill
 ring just the same, then signals an error without modifying the buffer.
@@ -919,18 +931,20 @@ error if the buffer or text is read-only.  Instead, it 
simply returns,
 updating the kill ring but not changing the buffer.
 @end defopt
 
address@hidden Command copy-region-as-kill start end
-This command saves the region defined by @var{start} and @var{end} on
-the kill ring (including text properties), but does not delete the text
-from the buffer.  It returns @code{nil}.
address@hidden Command copy-region-as-kill start end &optional region
+This function saves the stretch of text between @var{start} and
address@hidden on the kill ring (including text properties), but does not
+delete the text from the buffer.  However, if the optional argument
address@hidden is address@hidden, the function ignores @var{start} and
address@hidden, and saves the current region instead.  It always returns
address@hidden
+
+In an interactive call, @var{start} and @var{end} are point and
+the mark, and @var{region} is always address@hidden, so the command
+always saves the text in the current region.
 
 The command does not set @code{this-command} to @code{kill-region}, so a
 subsequent kill command does not append to the same kill ring entry.
-
address@hidden FIXME Why is it better?  Why isn't copy-region-as-kill obsolete 
then?
address@hidden Why is it used in many places in Emacs?
-In Lisp programs, it is better to use @code{kill-new} or
address@hidden instead of this command.  @xref{Low-Level Kill Ring}.
 @end deffn
 
 @node Yanking
@@ -1343,27 +1357,39 @@ This function places a boundary element in the undo 
list.  The undo
 command stops at such a boundary, and successive undo commands undo
 to earlier and earlier boundaries.  This function returns @code{nil}.
 
-The editor command loop automatically calls @code{undo-boundary} just
-before executing each key sequence, so that each undo normally undoes
-the effects of one command.  As an exception, the command
address@hidden, which produces self-inserting input
-characters (@pxref{Commands for Insertion}), may remove the boundary
-inserted by the command loop: a boundary is accepted for the first
-such character, the next 19 consecutive self-inserting input
-characters do not have boundaries, and then the 20th does; and so on
-as long as the self-inserting characters continue.  Hence, sequences
-of consecutive character insertions can be undone as a group.
-
-All buffer modifications add a boundary whenever the previous undoable
-change was made in some other buffer.  This is to ensure that
-each command makes a boundary in each buffer where it makes changes.
-
 Calling this function explicitly is useful for splitting the effects of
 a command into more than one unit.  For example, @code{query-replace}
 calls @code{undo-boundary} after each replacement, so that the user can
 undo individual replacements one by one.
+
+Mostly, however, this function is called automatically at an
+appropriate time.
address@hidden defun
+
address@hidden undo-auto-amalgamate
address@hidden amalgamating commands, and undo
+The editor command loop automatically calls @code{undo-boundary} just
+before executing each key sequence, so that each undo normally undoes
+the effects of one command.  A few exceptional commands are
address@hidden: these commands generally cause small changes to
+buffers, so with these a boundary is inserted only every 20th command,
+allowing to undo them as a group.  By default, commands
address@hidden, which produces self-inserting input
+characters (@pxref{Commands for Insertion}), and @code{delete-char}
+which deletes characters (@pxref{Deletion}) are amalgamating.
+Where a command affects the contents of several buffers, as may happen,
+for example, when a function on the @code{post-command-hook} affects a
+buffer other than the @code{current-buffer}, then @code{undo-boundary}
+will be called in each of the affected buffers.
 @end defun
 
address@hidden undo-auto-current-boundary-timer
+Some buffers, such as process buffers, can change even when no
+commands are executing.  In these cases, @code{undo-boundary} is
+normally called periodically by the timer in this variable.  Setting
+this variable to address@hidden prevents this behavior.
address@hidden defvar
+
 @defvar undo-in-progress
 This variable is normally @code{nil}, but the undo commands bind it to
 @code{t}.  This is so that various kinds of change hooks can tell when
@@ -2336,6 +2362,84 @@ already indented, it calls @code{completion-at-point} to 
complete the
 text at point (@pxref{Completion in Buffers}).
 @end defopt
 
address@hidden literate programming
address@hidden multi-mode indentation
+  Some major modes need to support embedded regions of text whose
+syntax belongs to a different major mode.  Examples include
address@hidden programming} source files that combine documentation and
+snippets of source code, Yacc/Bison programs that include snippets of
+plain C code, etc.  To correctly indent the embedded chunks, the major
+mode needs to delegate the indentation to another mode's indentation
+engine (e.g., call @code{c-indent-defun} for C code or
address@hidden for Python), while providing it with some
+context to guide the indentation.  The following facilities support
+such multi-mode indentation.
+
address@hidden prog-indentation-context
+This variable, when address@hidden, holds the indentation context for
+the sub-mode's indentation engine provided by the superior major mode.
+The value should be a list of the form @code{(@var{first-column}
address@hidden(@var{start} . @var{end})} @code{prev-chunk})}.  The members of 
the
+list have the following meaning:
+
address@hidden @var
address@hidden first-column
+The column to be used for top-level constructs.  This replaces the
+default value of the top-level column used by the sub-mode, usually
+zero.
address@hidden start
address@hidden end
+The region of the code chunk to be indented by the sub-mode.  The
+value of @var{end} can be @code{nil}, which stands for the value of
address@hidden
address@hidden prev-chunk
+If this is address@hidden, it should provide the sub-mode's
+indentation engine with a virtual context of the code chunk.  Valid
+values include:
+
address@hidden @minus
address@hidden
+A string whose contents is the text the sub-mode's indentation engine
+should consider to precede the code chunk.  The sub-mode's indentation
+engine can add text properties to that string, to be reused in
+repeated calls with the same string, thus using it as a cache.  An
+example where this is useful is code chunks that need to be indented
+as function bodies, but lack the function's preamble---the string
+could then include that missing preamble.
address@hidden
+A function.  It is expected to be called with the start position of
+the current chunk, and should return a cons cell
address@hidden@code{(@var{prev-start} . @var{prev-end})}} that specifies the
+region of the previous code chunk, or @code{nil} if there is no previous
+chunk.  This is useful in literate-programming sources, where code is
+split into chunks, and correct indentation needs to access previous
+chunks.
address@hidden itemize
address@hidden table
address@hidden defvar
+
+The following convenience functions should be used by major mode's
+indentation engine in support of invocations as sub-modes of another
+major mode.
+
address@hidden prog-first-column
+Call this function instead of using a literal value (usually, zero) of
+the column number for indenting top-level program constructs.  The
+function's value is the column number to use for top-level constructs.
+When no superior mode is in effect, this function returns zero.
address@hidden defun
+
address@hidden prog-widen
+Call this function instead of @code{widen} to remove any restrictions
+imposed by the mode's indentation engine and restore the restrictions
+recorded in @code{prog-indentation-context}.  This prevents the
+indentation engine of a sub-mode from inadvertently operating on text
+outside of the chunk it was supposed to indent, and preserves the
+restriction imposed by the superior mode.  When no superior mode is in
+effect, this function just calls @code{widen}.
address@hidden defun
+
+
 @node Region Indent
 @subsection Indenting an Entire Region
 
@@ -3256,8 +3360,8 @@ and then remove the property.  @xref{Read Only Buffers}.
 
 @item inhibit-read-only
 @kindex inhibit-read-only @r{(text property)}
-If a character has the property @code{inhibit-read-only}, and the
-buffer is read-only, editing the character in question is allowed.
+Characters that have the property @code{inhibit-read-only} can be
+edited even in read-only buffers.  @xref{Read Only Buffers}.
 
 @item invisible
 @kindex invisible @r{(text property)}
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index d9cbf47..ffce920 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -14,11 +14,17 @@ it gives advice on making effective use of the features 
described in the
 previous chapters, and describes conventions Emacs Lisp programmers
 should follow.
 
address@hidden checkdoc
address@hidden checkdoc-current-buffer
address@hidden checkdoc-file
   You can automatically check some of the conventions described below by
 running the command @kbd{M-x checkdoc RET} when visiting a Lisp file.
 It cannot check all of the conventions, and not all the warnings it
 gives necessarily correspond to problems, but it is worth examining them
-all.
+all.  Alternatively, use the command @kbd{M-x checkdoc-current-buffer RET}
+to check the conventions in the current buffer, or @code{checkdoc-file}
+when you want to check a file in batch mode, e.g., with a command run by
address@hidden@w{M-x compile RET}}.
 
 @menu
 * Coding Conventions::        Conventions for clean and robust programs.
@@ -1007,8 +1013,14 @@ of multiple files, we recommend not writing the version 
in every file,
 but only the main one.
 
 @item Keywords
address@hidden checkdoc-package-keywords-flag
address@hidden checkdoc-package-keywords
 This line lists keywords for the @code{finder-by-keyword} help command.
-Please use that command to see a list of the meaningful keywords.
+Please use that command to see a list of the meaningful keywords.  The
+command @kbd{M-x checkdoc-package-keywords RET} will find and display
+any keywords that are not in @code{finder-known-keywords}.  If you set
+the variable @code{checkdoc-package-keywords-flag} address@hidden,
+checkdoc commands will include the keyword verification in its checks.
 
 This field is how people will find your package when they're looking
 for things by topic.  To separate the keywords, you can use spaces,
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 357247e..5c7947e 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -521,9 +521,9 @@ its pixel height is the pixel height of the screen areas 
spanned by its
 children.
 @end defun
 
address@hidden window pixel height
address@hidden pixel height of a window
address@hidden total pixel height of a window
address@hidden window pixel width
address@hidden pixel width of a window
address@hidden total pixel width of a window
 
 @defun window-pixel-width &optional Lisp_Object &optional window
 This function returns the width of window @var{window} in pixels.
@@ -558,7 +558,6 @@ that of the root window on that frame.  If @var{window} is 
omitted or
 
 @cindex window body height
 @cindex body height of a window
address@hidden window body width
 The @dfn{body height} of a window is the height of its text area, which
 does not include a mode or header line, a horizontal scroll bar, or a
 bottom divider.
@@ -578,9 +577,8 @@ counted.  It also means that the height of a window's body 
can never
 exceed its total height as returned by @code{window-total-height}.
 @end defun
 
address@hidden window body width
 @cindex body width of a window
address@hidden body size of a window
address@hidden window body size
 The @dfn{body width} of a window is the width of its text area, which
 does not include the scroll bar, fringes, margins or a right divider.
 
@@ -599,6 +597,8 @@ counted.  It also means that the width of a window's body 
can never
 exceed its total width as returned by @code{window-total-width}.
 @end defun
 
address@hidden window body size
address@hidden body size of a window
 @defun window-body-size &optional window horizontal pixelwise
 This function returns the body height or body width of @var{window}.  If
 @var{horizontal} is omitted or @code{nil}, it is equivalent to calling
@@ -607,7 +607,7 @@ to calling @code{window-body-width}.  In either case, the 
optional
 argument @var{pixelwise} is passed to the function called.
 @end defun
 
-  For compatibility with previous versions of Emacs,
+For compatibility with previous versions of Emacs,
 @code{window-height} is an alias for @code{window-total-height}, and
 @code{window-width} is an alias for @code{window-body-width}.  These
 aliases are considered obsolete and will be removed in the future.
@@ -635,6 +635,22 @@ Functions for retrieving the height and/or width of window 
dividers
 (@pxref{Scroll Bars}), and display margins (@pxref{Display Margins}) are
 described in the corresponding sections.
 
+If your Lisp program needs to make layout decisions, you will find the
+following function useful:
+
address@hidden window-max-chars-per-line &optional window face
+This function returns the number of characters displayed in the
+specified @var{face} in the specified @var{window} (which must be a
+live window).  If @var{face} was remapped (@pxref{Face Remapping}),
+the information is returned for the remapped face.  If omitted or
address@hidden, @var{face} defaults to the default face, and @var{window}
+defaults to the selected window.  Unlike @code{window-body-width},
+this function accounts for the actual size of the @var{face}'s font,
+instead of working in units of frame's canonical character width.  It
+also accounts for space used by the continuation glyph, if
address@hidden lacks one or both of its fringes.
address@hidden defun
+
 @cindex fixed-size window
 @vindex window-min-height
 @vindex window-min-width
@@ -643,7 +659,7 @@ or split them (@pxref{Splitting Windows}), obey the 
variables
 @code{window-min-height} and @code{window-min-width}, which specify the
 smallest allowable window height and width.  They also obey the variable
 @code{window-size-fixed}, with which a window can be @dfn{fixed} in
-size:
+size (@pxref{Preserving Window Sizes}).
 
 @defopt window-min-height
 This option specifies the minimum total height, in lines, of any window.
@@ -4264,10 +4280,10 @@ work.
 @end defvar
 
 @defvar window-size-change-functions
-This variable holds a list of functions to be called if the size of any
-window changes for any reason.  The functions are called just once per
-redisplay, and just once for each frame on which size changes have
-occurred.
+This variable holds a list of functions to be called if the size of
+any window changes for any reason.  The functions are called at the
+beginning of a redisplay cycle, and just once for each frame on which
+size changes have occurred.
 
 Each function receives the frame as its sole argument.  There is no
 direct way to find out which windows on that frame have changed size, or
diff --git a/doc/man/etags.1 b/doc/man/etags.1
index fab8901..7cb6b6c 100644
--- a/doc/man/etags.1
+++ b/doc/man/etags.1
@@ -51,7 +51,7 @@ format understood by
 \&.  Both forms of the program understand
 the syntax of C, Objective C, C++, Java, Fortran, Ada, Cobol, Erlang,
 Forth, HTML, LaTeX, Emacs Lisp/Common Lisp, Lua, Makefile, Pascal, Perl,
-PHP, PostScript, Python, Prolog, Scheme and
+Ruby, PHP, PostScript, Python, Prolog, Scheme and
 most assembler\-like syntaxes.
 Both forms read the files specified on the command line, and write a tag
 table (defaults: \fBTAGS\fP for \fBetags\fP, \fBtags\fP for
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 8579d0f..02f9446 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -12597,7 +12597,6 @@ in this mode.  Explicit simplification commands, such 
as @kbd{=} or
 @xref{Algebraic Definitions}, for a sample use of
 No-Simplification mode.
 
-
 @kindex m N
 @pindex calc-num-simplify-mode
 The @kbd{m N} (@code{calc-num-simplify-mode}) command turns off simplification
@@ -22463,7 +22462,6 @@ Hyperbolic prefix @kbd{H} can be used similarly; the 
@kbd{H a s} will
 replace any hyperbolic functions in the formula with the appropriate
 combinations of @samp{sinh}s and @samp{cosh}s before simplifying.
 
-
 @menu
 * Basic Simplifications::
 * Algebraic Simplifications::
@@ -28032,7 +28030,7 @@ column of the Units Table.
 @noindent
 The definitions of many units have changed over the years.  For example,
 the meter was originally defined in 1791 as one ten-millionth of the
-distance from the equator to the north pole.  In order to be more
+distance from the Equator to the North Pole.  In order to be more
 precise, the definition was adjusted several times, and now a meter is
 defined as the distance that light will travel in a vacuum in
 1/299792458 of a second; consequently, the speed of light in a
@@ -28071,13 +28069,8 @@ of the various temperature scales.
 The unit of volume ``liters'' can be referred to by either the lower-case
 @code{l} or the upper-case @code{L}.
 
-The unit @code{A} stands for Amperes; the name @code{Ang} is used
address@hidden
-for \AA ngstroms.
address@hidden tex
address@hidden
-for Angstroms.
address@hidden ifnottex
+The unit @code{A} stands for amperes; the name @code{Ang} is used
+for angstroms.
 
 The unit @code{pt} stands for pints; the name @code{point} stands for
 a typographical point, defined by @samp{72 point = 1 in}.  This is
@@ -28099,7 +28092,6 @@ use the @samp{tex} prefix; the unit name for a @TeX{} 
point will be
 the unit names for pint and parsec will simply be @samp{pint} and
 @samp{parsec} instead of @samp{pt} and @samp{pc}.
 
-
 The unit @code{e} stands for the elementary (electron) unit of charge;
 because algebra command could mistake this for the special constant
 @expr{e}, Calc provides the alternate unit name @code{ech} which is
@@ -28496,7 +28488,6 @@ a frequency or a midi number to scientific pitch 
notation.  For
 example, @code{500 Hz} gets converted to
 @code{B_4 + 21.3094853649 cents} and @code{84} to @code{C_6}.
 
-
 @kindex l m
 @pindex calc-midi
 @tindex midi
@@ -28527,7 +28518,6 @@ notation @code{B_3 + 99.9962592773 cents}; with the 
default value of
 @code{1}, Calc converts @code{261.625 Hz} to @code{C_4}.
 
 
-
 @node Store and Recall, Graphics, Units, Top
 @chapter Storing and Recalling
 
@@ -29907,7 +29897,7 @@ The @kbd{C-y} command can be given a prefix, which will 
interpret the
 text being yanked with a different radix.  If the text being yanked can be
 interpreted as a binary, octal, hexadecimal, or decimal number, then a
 prefix of @kbd{2}, @kbd{8}, @kbd{6} or @kbd{0} will have Calc
-interpret the yanked text as a number in the appropriate base.  For example, 
+interpret the yanked text as a number in the appropriate base.  For example,
 if @samp{111} has just been killed and is yanked into Calc with a command
 of @kbd{C-2 C-y}, then the number @samp{7} will be put on the stack.
 If you use the plain prefix @kbd{C-u}, then you will be prompted for a
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index 33c9a0e..8d59e97 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -9,11 +9,10 @@
 @c %**end of header
 
 @copying
-This file documents EUDC v1.30b.
+This file documents EUDC version 1.40.0.
 
 EUDC is the Emacs Unified Directory Client, a common interface to
-directory servers using various protocols such as LDAP or the CCSO white
-pages directory system (PH/QI)
+directory servers and contact information.
 
 Copyright @copyright{} 1998, 2000--2015 Free Software Foundation, Inc.
 
@@ -32,7 +31,7 @@ modify this GNU manual.''
 
 @dircategory Emacs network features
 @direntry
-* EUDC: (eudc).                 Emacs client for directory servers (LDAP, PH).
+* EUDC: (eudc).                 Emacs client for directory servers (LDAP, 
BBDB).
 @end direntry
 
 @footnotestyle end
@@ -41,7 +40,7 @@ modify this GNU manual.''
 @title EUDC Manual
 @subtitle The Emacs Unified Directory Client
 @author by Oscar Figueiredo
address@hidden
address@hidden
 
 @page
 @vskip 0pt plus 1fill
@@ -83,8 +82,6 @@ Currently supported back-ends are:
 @item
 LDAP, Lightweight Directory Access Protocol
 @item
-CCSO PH/QI
address@hidden
 BBDB, Big Brother's Insidious Database
 @end itemize
 
@@ -109,7 +106,6 @@ Interface to BBDB to let you insert server records into 
your own BBDB database
 
 @menu
 * LDAP::                        What is LDAP ?
-* CCSO PH/QI::                  What is CCSO, PH, QI ?
 * BBDB::                        What is BBDB ?
 @end menu
 
@@ -141,30 +137,6 @@ EUDC requires external support to access LDAP directory 
servers
 (@pxref{LDAP Configuration})
 
 
address@hidden CCSO PH/QI
address@hidden CCSO PH/QI
-
-The Central Computing Services Office (CCSO) of the University of
-Illinois at Urbana Champaign created and freely distributed a
-directory system that was used by many organizations in the 1990s.
-The system records information about people such as their address,
-phone number, email, academic information or any other details it was
-configured to.  Nowadays this system is not widely used.
-
-The system consists of two parts: a database server traditionally called
address@hidden and a command-line client called @samp{ph}.
address@hidden
-Until 2010, the code could be downloaded from
address@hidden://www-dev.cites.uiuc.edu/ph/}.
address@hidden ignore
-
-The original command-line @samp{ph} client that came with the
address@hidden/qi} distribution provided additional features that are
-not implemented in EUDC, like the possibility to communicate with the
-server in login-mode, which made it possible to change records in the
-database.
-
-
 @node BBDB
 @section BBDB
 
@@ -175,14 +147,14 @@ and news readers.
 
 It is often used as an enhanced email address book.
 
-EUDC considers BBDB as a directory server back end just like LDAP or
-PH/QI servers, though BBDB has no client/server protocol and thus always
-resides locally on your machine.  The point in this is not to offer an
+EUDC considers BBDB as a directory server back end just like LDAP,
+though BBDB has no client/server protocol and thus always resides
+locally on your machine.  The point in this is not to offer an
 alternate way to query your BBDB database (BBDB itself provides much
-more flexible ways to do that), but rather to offer an interface to your
-local directory that is consistent with the interface to external
-directories (LDAP, PH/QI).  This is particularly interesting when
-performing queries on multiple servers.
+more flexible ways to do that), but rather to offer an interface to
+your local directory that is consistent with the interface to external
+LDAP directories.  This is particularly interesting when performing
+queries on multiple servers.
 
 EUDC also offers a means to insert results from directory queries into
 your own local BBDB (@pxref{Creating BBDB Records})
@@ -473,7 +445,7 @@ it will be ignored anyway.
 
 @defvar eudc-protocol
 The directory protocol to use to query the server.  Currently supported
-protocols in this version of EUDC are @code{ph}, @code{ldap} and @code{bbdb}.
+protocols in this version of EUDC are @code{ldap} and @code{bbdb}.
 @end defvar
 
 @deffn Command eudc-set-server
@@ -510,11 +482,8 @@ attributes are ignored.  Default is @code{t}.
 
 Directory standards may authorize different instances of the same
 attribute in a record. For instance the record of a person may contain
-several email fields containing different email addresses. When using
-a QI directory server this is difficult to distinguish from attributes
-having multi-line values such as the postal address that may contain a
-line for the street and another one for the zip code and city name. In
-both cases, EUDC will consider the attribute duplicated.
+several email fields containing different email addresses, in which
+case EUDC will consider the attribute duplicated.
 
 EUDC has several methods to deal with duplicated attributes. The
 available methods are:
@@ -956,39 +925,6 @@ convenience functions to parse phones and addresses.
 @end table
 @end defvar
 
-The default value of the PH-specific value of that variable is
address@hidden:
-
address@hidden
-((name . name)
- (net . email)
- (address . (eudc-bbdbify-address address "Address"))
- (phone . ((eudc-bbdbify-phone phone "Phone")
-           (eudc-bbdbify-phone office_phone "Office Phone"))))
address@hidden lisp
-
-This means that:
-
address@hidden @bullet
address@hidden
-the @code{name} field of the BBDB record gets its value
-from the @code{name} attribute of the directory record
address@hidden
-the @code{net} field of the BBDB record gets its value
-from the @code{email} attribute of the directory record
address@hidden
-the @code{address} field of the BBDB record is obtained by parsing the
address@hidden attribute of the directory record with the function
address@hidden
address@hidden
-two @code{phone} fields are created (when possible) in the BBDB record.
-The first one has @cite{Phone} for location and its value is obtained by
-parsing the @code{phone} attribute of the PH/QI record with the function
address@hidden  The second one has @cite{Office Phone} for location
-its value is obtained by parsing the @code{office_phone} attribute of the
-PH/QI record with the function @code{eudc-bbdbify-phone}.
address@hidden itemize
-
 @defun eudc-bbdbify-phone phone location
 This is a convenience function provided for use in
 @code{eudc-bbdb-conversion-alist}.  It parses @var{phone} into a vector
diff --git a/doc/misc/ido.texi b/doc/misc/ido.texi
index afc3238..e06d248 100644
--- a/doc/misc/ido.texi
+++ b/doc/misc/ido.texi
@@ -706,7 +706,8 @@ packages.
 @noindent
 After @kbd{C-x b} (@code{ido-switch-buffer}), the buffer at the head
 of the list can be killed by pressing @kbd{C-k}.  If the buffer needs
-saving, you will be queried before the buffer is killed.
+saving, you will be queried before the buffer is killed.  @kbd{C-S-b}
+buries the buffer at the head of the list.
 
 Likewise, after @kbd{C-x C-f}, you can delete (i.e., physically
 remove) the file at the head of the list with @kbd{C-k}.  You will
diff --git a/etc/DEBUG b/etc/DEBUG
index 4bb17e3..be6d9ec 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -3,27 +3,163 @@ Debugging GNU Emacs
 Copyright (C) 1985, 2000-2015 Free Software Foundation, Inc.
 See the end of the file for license conditions.
 
+** Preliminaries
 
-[People who debug Emacs on Windows using Microsoft debuggers should
-read the Windows-specific section near the end of this document.]
+This section can be skipped if you are already familiar with building
+Emacs with debug info, configuring and starting GDB, and simple GDB
+debugging techniques.
 
-** When you debug Emacs with GDB, you should start GDB in the directory
+*** Configuring Emacs for debugging
+
+It is best to configure and build Emacs with special options that will
+make the debugging easier.  Here's the configure-time options we
+recommend (they are in addition to any other options you might need,
+such as --prefix):
+
+  CFLAGS='-O0 -g3' ./configure --enable-checking='yes,glyphs' 
--enable-check-lisp-object-type
+
+The CFLAGS value is important: debugging optimized code can be very
+hard.  (If the problem only happens with optimized code, you may need
+to enable optimizations.  If that happens, try using -Og first,
+instead of -O2, as the former will disable some optimizations that
+make debugging some code exceptionally hard.)
+
+Modern versions of GCC support more elaborate debug info that is
+available by just using the -g3 compiler switch.  Try using -gdwarf-4
+in addition to -g3, and if that fails, try -gdwarf-3.  This is
+especially important if you have to debug optimized code.  More info
+about this is available below; search for "analyze failed assertions".
+
+The 2 --enable-* switches are optional.  They don't have any effect on
+debugging with GDB, but will compile additional code that might catch
+the problem you are debugging much earlier, in the form of assertion
+violation.  The --enable-checking option also enables additional
+functionality useful for debugging display problems; see more about
+this below under "Debugging Emacs redisplay problems".
+
+Emacs needs not be installed to be debugged, you can debug the binary
+created in the 'src' directory.
+
+*** Configuring GDB
+
+When you debug Emacs with GDB, you should start GDB in the directory
 where the Emacs executable was made (the 'src' directory in the Emacs
 source tree).  That directory has a .gdbinit file that defines various
 "user-defined" commands for debugging Emacs.  (These commands are
 described below under "Examining Lisp object values" and "Debugging
 Emacs Redisplay problems".)
 
+Starting the debugger from Emacs, via the "M-x gdb" command (described
+below), when the current buffer visits one of the Emacs C source files
+will automatically start GDB in the 'src' directory.
+
 Some GDB versions by default do not automatically load .gdbinit files
 in the directory where you invoke GDB.  With those versions of GDB,
 you will see a warning when GDB starts, like this:
 
   warning: File ".../src/.gdbinit" auto-loading has been declined by your 
`auto-load safe-path' set to "$debugdir:$datadir/auto-load".
 
-There are several ways to overcome that difficulty, they are all
-described in the node "Auto-loading safe path" in the GDB user
-manual.  If nothing else helps, type "source /path/to/.gdbinit RET" at
-the GDB prompt, to unconditionally load the GDB init file.
+The simplest way to fix this is to add the following line to your
+~/.gdbinit file:
+
+  add-auto-load-safe-path /path/to/emacs/src/.gdbinit
+
+There are other ways to overcome that difficulty, they are all
+described in the node "Auto-loading safe path" in the GDB user manual.
+If nothing else helps, type "source /path/to/.gdbinit RET" at the GDB
+prompt, to unconditionally load the GDB init file.
+
+*** Use the Emacs GDB UI front-end
+
+We recommend using the GUI front-end for GDB provided by Emacs.  With
+it, you can start GDB by typing "M-x GDB RET".  This will suggest the
+default binary to debug; if you are going to start a new Emacs
+process, change it as needed to point to the correct binary.
+Alternatively, if you want to attach the debugger to an already
+running Emacs process, change the GDB command shown in the minibuffer
+to say this:
+
+   gdb -i=mi -p PID
+
+where PID is the numerical process ID of the running Emacs process,
+displayed by system utilities such as 'top' or 'ps' on Posix hosts and
+Task Manager on MS-Windows.
+
+Once the debugger starts, open the additional windows provided by the
+GDB UI, by typing "M-x gdb-many-windows RET".  (Alternatively, click
+Gud->GDB-MI->Display Other Windows" from the menu bar.)  At this
+point, make your frame large enough (or full-screen) such that the
+windows you just opened have enough space to show the content without
+horizontal scrolling.
+
+You can later restore your window configuration with the companion
+command "M-x gdb-restore-windows RET", or by deselecting "Display
+Other Windows" from the menu bar.
+
+*** Setting initial breakpoints
+
+Before you let Emacs run, you should now set breakpoints in the code
+which you want to debug, so that Emacs stops there and lets GDB take
+control.  If the code which you want to debug is executed under some
+rare conditions, or only when a certain Emacs command is manually
+invoked, then just set your breakpoint there, let Emacs run, and
+trigger the breakpoint by invoking that command or reproducing those
+rare conditions.
+
+If you are less lucky, and the code in question is run very
+frequently, you will have to find some way of avoiding triggering your
+breakpoint when the conditions for the buggy behavior did not yet
+happen.  There's no single recipe for this, you will have to be
+creative and study the code to see what's appropriate.  Some useful
+tricks for that:
+
+  . Make your breakpoint conditional on certain buffer or string
+    position.  For example:
+
+      (gdb) break foo.c:1234 if PT >= 9876
+
+  . Set a break point in some rarely called function, then create the
+    conditions for the bug, call that rare function, and when GDB gets
+    control, set the breakpoint in the buggy code, knowing that it
+    will now be called when the bug happens.
+
+  . If the bug manifests itself as an error message, set a breakpoint
+    in Fsignal, and when it breaks, look at the backtrace to see what
+    triggers the error.
+
+Some additional techniques are described below under "Getting control
+to the debugger".
+
+You are now ready to start your debugging session.
+
+If you are starting a new Emacs session, type "run", followed by any
+command-line arguments (e.g., "-Q") into the *gud-emacs* buffer and
+press RET.
+
+If you attached the debugger to a running Emacs, type "continue" into
+the *gud-emacs* buffer and press RET.
+
+Many variables you will encounter while debugging are Lisp objects.
+These are displayed as integer values (or structures, if you used the
+"--enable-check-lisp-object-type" option at configure time) that are
+hard to interpret, especially if they represent long lists.  You can
+use the 'pp' command to display them in their Lisp form.  That command
+displays its output on the standard error stream (on GNU/Linux, you
+can redirect that to a file using "M-x redirect-debugging-output").
+This means that if you attach GDB to a running Emacs that was invoked
+from a desktop icon, chances are you will not see the output at all,
+or it will wind up in an obscure place (check the documentation of
+your desktop environment).
+
+Additional information about displaying Lisp objects can be found
+under "Examining Lisp object values" below.
+
+The rest of this document describes specific useful techniques for
+debugging Emacs; we suggest reading it in its entirety the first time
+you are about to debug Emacs, then look up your specific issues
+whenever you need.
+
+Good luck!
 
 ** When you are trying to analyze failed assertions or backtraces, it
 is essential to compile Emacs with flags suitable for debugging.
@@ -111,6 +247,12 @@ You can also use 'pp value' to print the emacs value 
directly.
 
 To see the current value of a Lisp Variable, use 'pv variable'.
 
+These commands send their output to stderr; if that is closed or
+redirected to some file you don't know, you won't see their output.
+This is particularly so for Emacs invoked on MS-Windows from the
+desktop shortcut.  On GNU/Linux, you can use the command
+'redirect-debugging-output' to redirect stderr to a file.
+
 Note: It is not a good idea to try 'pr', 'pp', or 'pv' if you know that Emacs
 is in deep trouble: its stack smashed (e.g., if it encountered SIGSEGV
 due to stack overflow), or crucial data structures, such as 'obarray',
@@ -181,7 +323,7 @@ Then Emacs hits the breakpoint:
     [...]
   }
 
-Now we can use 'pr' to print the frame parameters:
+Now we can use 'pp' to print the frame parameters:
 
   (gdb) pp $->param_alist
   ((background-mode . light) (display-type . color) [...])
@@ -400,15 +542,16 @@ Debugging with GDB in Emacs offers some advantages over 
the command line (See
 the GDB Graphical Interface node of the Emacs manual).  There are also some
 features available just for debugging Emacs:
 
-1) The command gud-pp is available on the tool bar (the 'pp' icon) and
+1) The command gud-print is available on the tool bar (the 'p' icon) and
    allows the user to print the s-expression of the variable at point,
    in the GUD buffer.
 
 2) Pressing 'p' on a component of a watch expression that is a lisp object
    in the speedbar prints its s-expression in the GUD buffer.
 
-3) The STOP button on the tool bar is adjusted so that it sends SIGTSTP
-   instead of the usual SIGINT.
+3) The STOP button on the tool bar and the Signals->STOP menu-bar menu
+   item are adjusted so that they send SIGTSTP instead of the usual
+   SIGINT.
 
 4) The command gud-pv has the global binding 'C-x C-a C-v' and prints the
    value of the lisp variable at point.
@@ -753,91 +896,6 @@ recovering the contents of Emacs buffers from a core dump 
file.  You
 might also find those commands useful for displaying the list of
 buffers in human-readable format from within the debugger.
 
-** Some suggestions for debugging on MS Windows:
-
-   (written by Marc Fleischeuers, Geoff Voelker and Andrew Innes)
-
-To debug Emacs with Microsoft Visual C++, you either start emacs from
-the debugger or attach the debugger to a running emacs process.
-
-To start emacs from the debugger, you can use the file bin/debug.bat.
-The Microsoft Developer studio will start and under Project, Settings,
-Debug, General you can set the command-line arguments and Emacs's
-startup directory.  Set breakpoints (Edit, Breakpoints) at Fsignal and
-other functions that you want to examine.  Run the program (Build,
-Start debug).  Emacs will start and the debugger will take control as
-soon as a breakpoint is hit.
-
-You can also attach the debugger to an already running Emacs process.
-To do this, start up the Microsoft Developer studio and select Build,
-Start debug, Attach to process.  Choose the Emacs process from the
-list.  Send a break to the running process (Debug, Break) and you will
-find that execution is halted somewhere in user32.dll.  Open the stack
-trace window and go up the stack to w32_msg_pump.  Now you can set
-breakpoints in Emacs (Edit, Breakpoints).  Continue the running Emacs
-process (Debug, Step out) and control will return to Emacs, until a
-breakpoint is hit.
-
-To examine the contents of a Lisp variable, you can use the function
-'debug_print'.  Right-click on a variable, select QuickWatch (it has
-an eyeglass symbol on its button in the toolbar), and in the text
-field at the top of the window, place 'debug_print(' and ')' around
-the expression.  Press 'Recalculate' and the output is sent to stderr,
-and to the debugger via the OutputDebugString routine.  The output
-sent to stderr should be displayed in the console window that was
-opened when the emacs.exe executable was started.  The output sent to
-the debugger should be displayed in the 'Debug' pane in the Output
-window.  If Emacs was started from the debugger, a console window was
-opened at Emacs' startup; this console window also shows the output of
-'debug_print'.
-
-For example, start and run Emacs in the debugger until it is waiting
-for user input.  Then click on the 'Break' button in the debugger to
-halt execution.  Emacs should halt in 'ZwUserGetMessage' waiting for
-an input event.  Use the 'Call Stack' window to select the procedure
-'w32_msp_pump' up the call stack (see below for why you have to do
-this).  Open the QuickWatch window and enter
-"debug_print(Vexec_path)".  Evaluating this expression will then print
-out the contents of the Lisp variable 'exec-path'.
-
-If QuickWatch reports that the symbol is unknown, then check the call
-stack in the 'Call Stack' window.  If the selected frame in the call
-stack is not an Emacs procedure, then the debugger won't recognize
-Emacs symbols.  Instead, select a frame that is inside an Emacs
-procedure and try using 'debug_print' again.
-
-If QuickWatch invokes debug_print but nothing happens, then check the
-thread that is selected in the debugger.  If the selected thread is
-not the last thread to run (the "current" thread), then it cannot be
-used to execute debug_print.  Use the Debug menu to select the current
-thread and try using debug_print again.  Note that the debugger halts
-execution (e.g., due to a breakpoint) in the context of the current
-thread, so this should only be a problem if you've explicitly switched
-threads.
-
-It is also possible to keep appropriately masked and typecast Lisp
-symbols in the Watch window, this is more convenient when steeping
-though the code.  For instance, on entering apply_lambda, you can
-watch (struct Lisp_Symbol *) (0xfffffff & args[0]).
-
-Optimizations often confuse the MS debugger.  For example, the
-debugger will sometimes report wrong line numbers, e.g., when it
-prints the backtrace for a crash.  It is usually best to look at the
-disassembly to determine exactly what code is being run--the
-disassembly will probably show several source lines followed by a
-block of assembler for those lines.  The actual point where Emacs
-crashes will be one of those source lines, but not necessarily the one
-that the debugger reports.
-
-Another problematic area with the MS debugger is with variables that
-are stored in registers: it will sometimes display wrong values for
-those variables.  Usually you will not be able to see any value for a
-register variable, but if it is only being stored in a register
-temporarily, you will see an old value for it.  Again, you need to
-look at the disassembly to determine which registers are being used,
-and look at those registers directly, to see the actual current values
-of these variables.
-
 
 This file is part of GNU Emacs.
 
diff --git a/etc/NEWS b/etc/NEWS
index 9793d5e..d65e9dd 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -36,6 +36,9 @@ otherwise leave it unmarked.
 This builds Emacs with Cairo drawing.  As a side effect, it provides
 support for built-in printing, when Emacs was built with GTK+.
 
+** New configure option --with-modules.
+This enables support for loading dynamic modules; see below.
+
 ---
 ** By default, Emacs no longer works on IRIX.  We expect that Emacs
 users are not affected by this, as SGI stopped supporting IRIX in
@@ -132,53 +135,22 @@ frames.
 Works for functions, variables, faces, etc.  It is bound to `C-h o' by
 default.
 
-** New user option `search-default-regexp-mode'
-specifies the default mode for I-search.
-
-** `isearch' and `query-replace' now perform character folding in matches.
-This is analogous to case folding, but instead of disregarding case
-variants, it disregards wider classes of distinctions between similar
-characters.  (Case folding is a special case of character folding.)
-This means many characters in the search string will match entire
-groups of characters instead of just themselves.
-
-For instance, the " will match all variants of double quotes (like “
-and ”), and the letter a will match all of its accented cousins, even
-those composed of multiple characters, as well as many other symbols
-like ℀, ℁, ⒜, and ⓐ.
-
-** New function `character-fold-to-regexp' can be used
-by searching commands to produce a regexp matching anything that
-character-folds into STRING.
-
-** New command `checkdoc-package-keywords' checks if the
-current package keywords are recognized.  Set the new option
-`checkdoc-package-keywords-flag' to non-nil to make
-`checkdoc-current-buffer' call this function automatically.
-
-** New function `checkdoc-file' checks for style errors.
-It's meant for use together with `compile':
-emacs -batch --eval "(checkdoc-file \"subr.el\")"
-
-** New command `comment-line' bound to `C-x C-;'.
-
++++
 ** New function `custom-prompt-customize-unsaved-options' checks for
-unsaved customizations and prompts user to customize (if found).
+unsaved customizations and prompts user to customize (if found).  It
+is intended for adding to 'kill-emacs-query-functions'.
 
 +++
 ** Network security (TLS/SSL certificate validity and the like) is
 added via the new Network Security Manager (NSM) and controlled via
 the `network-security-level' variable.
 
++++
 ** C-h l now also lists the commands that were run.
 
----
-** The new M-s M-w key binding uses eww to search the web for the
-text in the region.
-
-** M-x suggests shorthands and ignores obsolete commands for completion.
-** x-select-enable-clipboard is renamed select-enable-clipboard.
-x-select-enable-primary and renamed select-enable-primary.
++++
+** x-select-enable-clipboard is renamed select-enable-clipboard
+and x-select-enable-primary is renamed select-enable-primary.
 Additionally they both now apply to all systems (OSX, GNUstep, Windows, you
 name it), with the proviso that on some systems (e.g. Windows)
 select-enable-primary is ineffective since the system doesn't
@@ -190,11 +162,10 @@ have the equivalent of a primary selection.
 +++
 ** New macro `define-advice'.
 
++++
 ** `insert-register' now leaves point after the inserted text
 when called interactively.  A prefix argument toggles this behavior.
 
-** New var `truncate-string-ellipsis' to choose how to indicate truncation.
-
 +++
 ** The new variable `term-file-aliases' replaces some files from lisp/term.
 The function `tty-run-terminal-initialization' consults this variable
@@ -210,114 +181,86 @@ for use in Emacs bug reports.
 hiding character but the default `.' can be used by let-binding the
 variable `read-hide-char'.
 
-** The new functions `string-collate-lessp' and `string-collate-equalp'
-preserve the collation order as defined by the system's locale(1)
-environment.  For the time being this is implemented for modern POSIX
-systems and for MS-Windows, for other systems they fall back to their
-counterparts `string-lessp' and `string-equal'.
+** Emacs can now load shared/dynamic libraries (modules).
+A dynamic Emacs module is a shared library that provides additional
+functionality for use in Emacs Lisp programs, just like a package
+written in Emacs Lisp would.  The functions `load', `require',
+`load-file', etc. were extended to load such modules, as they do with
+Emacs Lisp packages.  The new variable `module-file-suffix' holds the
+system-dependent value of the file-name extension (`.so' on Posix
+hosts) of the module files.
+
+A module should export a C-callable function named
+`emacs_module_init', which Emacs will call as part of the call to
+`load' or `require' which loads the module.  It should also export a
+symbol named `plugin_is_GPL_compatible' to indicate that its code is
+released under the GPL or compatible license; Emacs will refuse to
+load modules that don't export such a symbol.
+
+If a module needs to call Emacs functions, it should do so through the
+API defined and documented in the header file `emacs-module.h'.  Note
+that any module that provides Lisp-callable functions will have to use
+Emacs functions such as `fset' and `funcall', in order to register its
+functions with the Emacs Lisp interpreter.
+
+Modules can create `user-ptr' Lisp objects that embed pointers to C
+struct's defined by the module.  This is useful for keeping around
+complex data structures created by a module, to be passed back to the
+module's functions.  User-ptr objects can also have associated
+"finalizers" -- functions to be run when the object is GC'ed; this is
+useful for freeing any resources allocated for the underlying data
+structure, such as memory, open file descriptors, etc.  A new
+predicate `user-ptrp' returns non-nil if its argument is a `user-ptr'
+object.
+
+Loadable modules in Emacs are an experimental feature, and subject to
+change in future releases.  For that reason, their support is disabled
+by default, and must be enabled by using the `--with-modules' option
+at configure time.
 
-*** The ls-lisp package uses `string-collate-lessp' to sort file names.
-If you want the old, locale-independent sorting, customize the new
-option `ls-lisp-use-string-collate' to a nil value.
-
-*** The MS-Windows specific variable `w32-collate-ignore-punctuation',
-if set to a non-nil value, causes the above 2 functions to ignore
-symbol and punctuation characters when collating strings.  This
-emulates the behavior of modern Posix platforms when the locale's
-codeset is "UTF-8" (as in "en_US.UTF-8").  This is needed because
-MS-Windows doesn't support UTF-8 as codeset in its locales.
-
-+++
-** The new function `bidi-find-overridden-directionality' allows to
-find characters whose directionality was, perhaps maliciously,
-overridden by directional override control characters.  Lisp programs
-can use this to detect potential phishing of URLs and other links that
-exploits bidirectional display reordering.
-
-+++
-** The new function `buffer-substring-with-bidi-context' allows to
-copy a portion of a buffer into a different location while preserving
-the visual appearance both of the copied text and the text at
-destination, even when the copied text includes mixed bidirectional
-text and directional control characters.
-
-** New variable `ns-use-fullscreen-animation' controls animation for
-non-native NS fullscreen.  The default is nil.  Set to t to enable
-animation when entering and leaving fullscreen.  For native OSX fullscreen
-this has no effect.
-
-** A new text property `inhibit-read-only' can be used in read-only
-buffers to allow certain parts of the text to be writable.
-
-** A new function `directory-files-recursively' returns all matching
-files (recursively) under a directory.
+---
+** New input method: `tamil-dvorak'.
 
-** The new function `directory-name-p' can be used to check whether a file
-name (as returned from, for instance, `file-name-all-completions' is
-a directory file name.  It returns non-nil if the last character in
-the name is a forward slash.
+
+* Editing Changes in Emacs 25.1
 
 +++
-** New variable `fast-but-imprecise-scrolling' inhibits
-fontification during full screen scrolling operations, giving less
-hesitant operation during auto-repeat of C-v, M-v at the cost of
-possible inaccuracies in the end position.
-
-** The function `font-info' now returns more details about a font.
-In particular, it now returns the average width of the font's
-characters, which can be used for geometry-related calculations.
-
-** A new function `default-font-width' returns the average width of a
-character in the current buffer's default font.  If the default face
-is remapped (see `face-remapping-alist'), the value for the remapped
-face is returned.  This function complements the existing function
-`default-font-height'.
-
-** New functions `window-font-height' and `window-font-width' return
-the height and average width of characters in a specified face and
-window.  If FACE is remapped (see `face-remapping-alist'), the
-function returns the information for the remapped face.
-
-** A new function `window-max-chars-per-line' returns the maximal
-number of characters that can be displayed on one line.  If a face
-and/or window are provided, these values are used for the
-calculation.  This function is different from `window-body-width' in
-that it accounts for (i) continuation glyphs, (ii) the size of the
-font, and (iii) the specified window.
+** M-x suggests shorthands and ignores obsolete commands for completion.
 
-** New possible value for `system-type': nacl.
+** Changes in undo
 
 +++
-** New variable `inhibit-message', when bound to non-nil, inhibits
-   `message' and related functions from displaying messages the Echo
-   Area.  The output is still logged to the *Messages* buffer.
+*** Successive single-char deletions are collapsed in the undo-log just like
+successive char insertions.  Which commands invoke this behavior is
+controlled by the new `undo-auto-amalgamate' function.  See the node
+"Undo" in the ELisp manual for more details.
 
 +++
-** 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.
+*** The heuristic used to insert `undo-boundary' after each command
+has changed, so that if a command causes changes in more than just the
+current buffer, Emacs now calls `undo-boundary' in every buffer
+affected by the command.
 
 +++
-** `tabulated-list-print' takes a second optional argument, update,
-which specifies an alternative printing method which is faster when
-few or no entries have changed.
-
-
-* Editing Changes in Emacs 25.1
+** New command `comment-line' bound to `C-x C-;'.
 
-** Successive single-char deletions are collapsed in the undo-log just like
-successive char insertions.
+** New and improved facilities for inserting Unicode characters
 
-** Unicode names entered via C-x 8 RET now use substring completion by default.
+---
+*** Unicode names entered via C-x 8 RET now use substring completion by 
default.
 
-** C-x 8 now has shorthands for these chars: ‐ ‑ ‒ – — ― ‘ ’ “ ” † ‡ • ′ ″
++++
+*** 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 electric-quote-mode for quoting ‘like this’ and “like this”
++++
+*** New minor mode electric-quote-mode for quoting ‘like this’ and “like this”
 as you type.  See also the new variable ‘text-quoting-style’.
 
+---
 ** New minor mode global-eldoc-mode is enabled by default.
 
+---
 ** Emacs now supports "bracketed paste mode" when running on a terminal
 that supports it.  This facility allows Emacs to understand pasted
 chunks of text as strings to be inserted, instead of interpreting each
@@ -325,6 +268,7 @@ character in the pasted text as actual user input.  This 
results in a
 paste experience similar to that under a window system, and significant
 performance improvements when pasting large amounts of text.
 
++++
 ** Emacs now supports the latest version of the UBA.
 The Emacs implementation of the Unicode Bidirectional Algorithm (UBA)
 was updated to support all the latest additions and changes introduced
@@ -333,58 +277,88 @@ This includes full support for directional isolates and 
the
 Bidirectional Parentheses Algorithm (BPA) specified by these Unicode
 standards.
 
++++
 ** You can access `mouse-buffer-menu' (C-down-mouse-1) using C-f10.
 
 +++
 ** New buffer-local `electric-pair-local-mode'.
 
++++
+** New variable `fast-but-imprecise-scrolling' inhibits
+fontification during full screen scrolling operations, giving less
+hesitant operation during auto-repeat of C-v, M-v at the cost of
+possible inaccuracies in the end position.
+
 
 * Changes in Specialized Modes and Packages in Emacs 25.1
 
+** Checkdoc
+
++++
+*** New command `checkdoc-package-keywords' checks if the
+current package keywords are recognized.  Set the new option
+`checkdoc-package-keywords-flag' to non-nil to make
+`checkdoc-current-buffer' call this function automatically.
+
++++
+*** New function `checkdoc-file' checks for style errors.
+It's meant for use together with `compile':
+emacs -batch --eval "(checkdoc-file \"subr.el\")"
+
++++
 ** New function `bookmark-set-no-overwrite' bound to C-x r M.
 It raises an error if a bookmark of that name already exists,
 unlike `bookmark-set' which silently updates an existing bookmark.
 
 ** JSON
+
 ---
 *** `json-pretty-print' and `json-pretty-print-buffer' now maintain
 the ordering of object keys by default.
+
 ---
 *** New commands `json-pretty-print-ordered' and
 `json-pretty-print-buffer-ordered' pretty prints JSON objects with
 object keys sorted alphabetically.
 
-** You can recompute the VC state of a file buffer with `M-x vc-refresh-state'
++++
 ** Prog mode has some support for multi-mode indentation.
-See `prog-indentation-context' and `prog-widen'.
+This allows better indentation support in modes that support multiple
+programming languages in the same buffer, like literate programming
+environments or ANTLR programs with embedded Python code.
+
+A major mode can provide indentation context for a sub-mode through
+the `prog-indentation-context' variable.  To support this, modes that
+provide indentation should use `prog-widen' instead of `widen' and
+`prog-first-column' instead of a literal zero.  See the node
+"Mode-Specific Indent" in the ELisp manual for more details.
 
 ** Prettify Symbols mode
+
++++
 *** Prettify Symbols mode supports custom composition predicates.  By
 overriding the default `prettify-symbols-compose-predicate', modes can
-specify in which contexts a symbol map be composed to some unicode
+specify in which contexts a symbol may be displayed as some Unicode
 character.  `prettify-symbols-default-compose-p' is the default which
 is suitable for most programming languages such as C or Lisp (but not
 (La)TeX).
 
++++
 *** Symbols can be unprettified while point is inside them.
 New variable `prettify-symbols-unprettify-at-point' configures this.
 
-** New `xterm-screen-extra-capabilities' config.
-
-** The `save-place' variable is replaced by a `save-place-mode'.
-
-** ERC
-
-*** Hide message types by network or channel.  `erc-hide-list' will
-hide all messages of the specified type, where `erc-network-hide-list'
-and `erc-channel-hide-list' will only hide the specified message types
-for the respective specified targets.
+** Enhanced xterm support
 
-** Midnight-mode
-*** `midnight-mode' is a proper minor mode.
-*** clean-buffer-*-regexps can now specify buffers via predicate functions.
+---
+*** The new variable `xterm-screen-extra-capabilities' for configuring xterm.
+This variable tells Emacs which advanced capabilities are available in
+the xterm terminal emulator used to display Emacs text-mode frames.
+The default is to check each capability, and use it if available.
+(This variable was introduced in Emacs 24.1, but was not announced in
+its NEWS.)
 
-** In xterms, killing text now also sets the CLIPBOARD/PRIMARY selection
+---
+*** 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
 by default at least in Debian, for security reasons).
@@ -393,10 +367,31 @@ Similarly, you can yank the CLIPBOARD/PRIMARY selection 
(using the OSC-52
 escape sequence) if your xterm has the feature enabled but for that you
 additionally need to add `getSelection' to `xterm-extra-capabilities'.
 
-** xterm-mouse-mode now supports mouse-tracking (if your xterm supports it).
++++
+*** `xterm-mouse-mode' now supports mouse-tracking (if your xterm supports it).
+
+---
+** The `save-place' variable is replaced by `save-place-mode'.
+
+** ERC
+
++++
+*** ERC can now hide message types by network or channel.
+`erc-hide-list' will hide all messages of the specified type, while
+`erc-network-hide-list' and `erc-channel-hide-list' will only hide the
+specified message types for the respective specified targets.
+
+** Midnight-mode
+
+---
+*** `midnight-mode' is now a proper minor mode.
+
+---
+*** clean-buffer-*-regexps can now specify buffers via predicate functions.
 
 ** 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
@@ -404,14 +399,16 @@ not from `package-user-dir', which usually means it's 
from an entry 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
+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'.
 
++++
 *** `package-menu-toggle-hiding' now toggles the hiding of packages.
 This includes the above-mentioned low-priority packages, as well as
 available packages whose version is lower than the currently installed
@@ -419,34 +416,43 @@ version (which were previously impossible to display).
 This allows users to downgrade a package if a lower version is
 available.
 
+---
 *** When filtering the package menu, keywords starting with "arc:" or
 "status:" represent package archive or status, respectively, instead
 of actual keywords.
 
+---
 *** Most functions which involve downloading information now take an
 ASYNC argument.  If it is non-nil, package.el performs the download(s)
 asynchronously.
 
+---
 *** New variable `package-menu-async' controls whether the
 package-menu uses asynchronous downloads.
 
+---
 *** `package-install-from-buffer' and `package-install-file' work on 
directories.
 This follows the same rules as installing from a .tar file, except the
 -pkg file is optional.
 
+---
 *** Packages which are dependencies of other packages cannot be deleted.
 The FORCE argument to `package-delete' overrides this.
 
+---
 *** New custom variable `package-selected-packages' tracks packages
 which were installed by the user (as opposed to installed as
 dependencies).  This variable can also be manually customized.
 
+---
 *** New command `package-install-user-selected-packages' installs all
 packages from `package-selected-packages' which are currently missing.
 
+---
 *** New command `package-autoremove' removes all packages which were
 installed strictly as dependencies but are no longer needed.
 
++++
 ** Shell
 
 When you invoke `shell' interactively, the *shell* buffer will now
@@ -473,23 +479,61 @@ If you need your objects to be named, do it by inheriting 
from `eieio-named'.
 *** `constructor' is now an obsolete alias for `make-instance'.
 
 ** ido
+
++++
 *** New command `ido-bury-buffer-at-head' bound to C-S-b
 Bury the buffer at the head of `ido-matches', analogous to how C-k
 kills the buffer at head.
+
+---
 *** A prefix argument to `ido-restrict-to-matches' will reverse its
 meaning, and the list is restricted to those elements that do not
 match the current input.
 
 ** Minibuffer
 
-*** You can use <up> and <down> keys to move point in the multi-line
-minibuffer just as in an ordinary buffer.  Only when point moves over
++++
+*** You can use <UP> and <DOWN> arrow keys to move through history by lines.
+The new commands `next-line-or-history-element' and
+`previous-line-or-history-element', bound to <UP> and <DOWN> in the
+minibuffer, allow by-line movement through minibuffer history,
+similarly to an ordinary buffer.  Only when point moves over
 the bottom/top of the minibuffer it goes to the next/previous history
-element.  The new commands bound to <up> and <down> in the minibuffer:
-`next-line-or-history-element' and `previous-line-or-history-element'.
+element.  `M-p' and `M-n' still move directly to previous/next history
+item as before.
 
 ** Search and Replace
 
++++
+*** New user option `search-default-regexp-mode'
+specifies the default mode for I-search.
+
++++
+*** `isearch' and `query-replace' can now perform character folding in matches.
+Isearch does that by default, while `query-replace' will do that if
+the new variable `replace-character-fold' is customized to a non-nil
+value.  This is analogous to case folding, but instead of disregarding
+case variants, it disregards wider classes of distinctions between
+similar characters.  (Case folding is a special case of character
+folding.)  This means many characters in the search string will match
+entire groups of characters instead of just themselves.
+
+For instance, the " will match all variants of double quotes (like “
+and ”), and the letter a will match all of its accented cousins, even
+those composed of multiple characters, as well as many other symbols
+like ℀, ℁, ⒜, and ⓐ.
+
++++
+*** New function `character-fold-to-regexp' can be used
+by searching commands to produce a regexp matching anything that
+character-folds into STRING.
+
++++
+*** The new M-s M-w key binding uses eww to search the web for the
+text in the region.  The search engine to use for this is specified by
+the customizable variable `eww-search-prefix'.
+
++++
 *** Query-replace history is enhanced.
 When query-replace reads the FROM string from the minibuffer, typing
 `M-p' will now show previous replacements as "FROM SEP TO", where FROM
@@ -732,6 +776,12 @@ Implemented for Bzr, Git, Hg.  As part of this change, the 
pre-existing
 
 *** The new command vc-region-history shows the log+diff of the active region.
 
++++
+*** You can refresh the VC state of a file buffer with `M-x vc-refresh-state'.
+This command is useful when you perform version control commands
+outside Emacs (e.g., from the shell prompt), or if you switch the VC
+back-end for the buffer's file, or remove it from version control.
+
 *** New option `vc-annotate-background-mode' controls whether
 the color range from `vc-annotate-color-map' is applied to the
 background or to the foreground.
@@ -842,6 +892,10 @@ to avoid interfering with the kill ring.
 allow overriding the regular expression that recognizes the ldapsearch
 command line's password prompt.
 
+EUDC's BBDB backend now supports BBDB 3.
+
+EUDC's PH backend (eudcb-ph.el) is obsolete.
+
 ** Eshell
 
 +++
@@ -899,6 +953,18 @@ compress many marked files into a single named archive.  
The
 compression command is determined from the new
 `dired-compress-files-alist' variable.
 
+** Tabulated List Mode
+
++++
+*** 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.
+
++++
+*** `tabulated-list-print' takes a second optional argument, update,
+which specifies an alternative printing method which is faster when
+few or no entries have changed.
+
 ** Obsolete packages
 
 ---
@@ -945,6 +1011,12 @@ support for JSX, an XML-like syntax extension to 
ECMAScript.
 
 * Incompatible Lisp Changes in Emacs 25.1
 
+---
+** `setq' and `setf' must now be called with an even number of
+arguments.  The earlier behavior of silently supplying a nil to the
+last variable when there was an odd number of arguments has been
+eliminated.
+
 ** `syntax-begin-function' is declared obsolete.
 Removed font-lock-beginning-of-syntax-function and the SYNTAX-BEGIN
 slot in font-lock-defaults.
@@ -971,6 +1043,7 @@ large portions of the Emacs display, and want to avoid 
changes in the
 pointer shape during dragging, should bind the variable `track-mouse'
 to the special value `dragging' in the body of the form.
 
+---
 ** The optional `predicate' argument of `lisp-complete-symbol' no longer
 has any effect.  (This change was made in Emacs 24.4 but was not
 advertised at the time.)
@@ -978,6 +1051,7 @@ advertised at the time.)
 ** `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.
@@ -1106,6 +1180,19 @@ of subprocess.
 process filter, sentinel, etc., through keyword arguments (similar to
 `make-network-process').
 
++++
+** A new function `directory-files-recursively' returns all matching
+files (recursively) under a directory.
+
++++
+** New variable `inhibit-message', when bound to non-nil, inhibits
+`message' and related functions from displaying messages the Echo
+Area.  The output is still logged to the *Messages* buffer.
+
++++
+** A new text property `inhibit-read-only' can be used in read-only
+buffers to allow certain parts of the text to be writable.
+
 ** `read-buffer' takes a new `predicate' argument.
 
 ** Emacs Lisp now supports generators.
@@ -1132,6 +1219,26 @@ evaluated (and should return a string) when the closure 
is built.
 ** New function `string-greaterp', which return the opposite result of
 `string-lessp'.
 
++++
+** The new functions `string-collate-lessp' and `string-collate-equalp'
+preserve the collation order as defined by the system's locale(1)
+environment.  For the time being this is implemented for modern POSIX
+systems and for MS-Windows, for other systems they fall back to their
+counterparts `string-lessp' and `string-equal'.
+
+---
+*** The ls-lisp package uses `string-collate-lessp' to sort file names.
+If you want the old, locale-independent sorting, customize the new
+option `ls-lisp-use-string-collate' to a nil value.
+
++++
+*** The MS-Windows specific variable `w32-collate-ignore-punctuation',
+if set to a non-nil value, causes the above 2 functions to ignore
+symbol and punctuation characters when collating strings.  This
+emulates the behavior of modern Posix platforms when the locale's
+codeset is "UTF-8" (as in "en_US.UTF-8").  This is needed because
+MS-Windows doesn't support UTF-8 as codeset in its locales.
+
 ** New function `alist-get', which is also a valid place (aka lvalue).
 
 ** New function `funcall-interactively', which works like `funcall'
@@ -1141,6 +1248,20 @@ called interactively.
 ** New function `function-put' to use instead of `put' for function properties.
 
 +++
+** The new function `bidi-find-overridden-directionality' allows to
+find characters whose directionality was, perhaps maliciously,
+overridden by directional override control characters.  Lisp programs
+can use this to detect potential phishing of URLs and other links that
+exploits bidirectional display reordering.
+
++++
+** The new function `buffer-substring-with-bidi-context' allows to
+copy a portion of a buffer into a different location while preserving
+the visual appearance both of the copied text and the text at
+destination, even when the copied text includes mixed bidirectional
+text and directional control characters.
+
++++
 ** New properties that can be specified with `declare':
 *** (interactive-only INSTEAD), says to use INSTEAD for non-interactive use.
 *** (pure VAL), if VAL is non-nil, indicates the function is pure.
@@ -1166,6 +1287,35 @@ name.  The variable `system-name' is now obsolete.
 ** If `pwd' is called with a prefix argument, insert the current default
 directory at point.
 
++++
+** New functions return extended information about fonts and faces.
+
++++
+*** The function `font-info' now returns more details about a font.
+In particular, it now returns the average width of the font's
+characters, which can be used for geometry-related calculations.
+
++++
+*** A new function `default-font-width' returns the average width of a
+character in the current buffer's default font.  If the default face
+is remapped (see `face-remapping-alist'), the value for the remapped
+face is returned.  This function complements the existing function
+`default-font-height'.
+
++++
+*** New functions `window-font-height' and `window-font-width' return
+the height and average width of characters in a specified face and
+window.  If FACE is remapped (see `face-remapping-alist'), the
+function returns the information for the remapped face.
+
++++
+*** A new function `window-max-chars-per-line' returns the maximal
+number of characters that can be displayed on one line.  If a face
+and/or window are provided, these values are used for the
+calculation.  This function is different from `window-body-width' in
+that it accounts for (i) continuation glyphs, (ii) the size of the
+font, and (iii) the specified window.
+
 ---
 ** New utilities in subr-x.el:
 *** New macros `if-let' and `when-let' allow defining bindings and to
@@ -1227,12 +1377,26 @@ integers.
 ** New function `set-binary-mode' allows to switch a standard stream
 of the Emacs process to binary I/O mode.
 
++++
+** The new function `directory-name-p' can be used to check whether a file
+name (as returned from, for instance, `file-name-all-completions') is
+a directory file name.  It returns non-nil if the last character in
+the name is a directory separator character (forward slash on GNU and
+Unix systems, forward- or backslash on MS-Windows and MS-DOS).
+
 ** ASCII approximations to curved quotes are put in standard-display-table
 if the terminal cannot display curved quotes.
 
 ** Standard output and error streams now transliterate characters via
 standard-display-table, and encode output using locale-coding-system.
 
++++
+** New var `truncate-string-ellipsis' to choose how to indicate truncation.
+
++++
+** New possible value for `system-type': `nacl'.
+This is used by Google's Native Client (NaCl).
+
 ** Miscellaneous name change
 
 For consistency with the usual Emacs spelling, the Lisp variable
@@ -1329,9 +1493,10 @@ is strongly dedicated to its buffer.
 ** Tearoff menus and detachable toolbars for Gtk+ has been removed.
 Those features have been deprecated in Gtk+ for a long time.
 
-** Miscellaneous
+** Etags
 
 *** etags no longer qualifies class members by default.
+
 By default, `etags' will not qualify class members for C-like
 object-oriented languages with their class names and namespaces, and
 will remove qualifications used explicitly in the code from the tag
@@ -1345,6 +1510,16 @@ using -Q might make some class members become "unknown" 
to `M-.'
 (`xref-find-definitions'); if so, you can use `C-u M-.' to specify the
 qualified names by hand.
 
+*** New language Ruby
+
+Names of modules, classes, methods, and functions are tagged.
+Overloaded operators are also tagged.
+
+*** Improved support for Lua
+
+Etags now tags functions even if the "function" keyword follows some
+whitespace at line beginning.
+
 
 * Changes in Emacs 25.1 on Non-Free Operating Systems
 
@@ -1375,6 +1550,12 @@ Pass '--without-ns' to configure to create an X11 build, 
the old default.
 ** OS X on PowerPC is no longer supported.
 
 ---
+** New variable `ns-use-fullscreen-animation' controls animation for
+non-native NS fullscreen.  The default is nil.  Set to t to enable
+animation when entering and leaving fullscreen.  For native OSX fullscreen
+this has no effect.
+
+---
 ** The new function 'w32-application-type' returns the type of an
 MS-Windows application given the name of its executable program file.
 
diff --git a/etc/tutorials/TUTORIAL.pt_BR b/etc/tutorials/TUTORIAL.pt_BR
index 619f4fc..5fd0517 100644
--- a/etc/tutorials/TUTORIAL.pt_BR
+++ b/etc/tutorials/TUTORIAL.pt_BR
@@ -847,7 +847,7 @@ saída do Emacs. Isso indica que um "recurso" do sistema 
operacional
 chamado "controle de fluxo" (flow control) esta interceptando o C-s e
 não deixando que passe pelo Emacs. Para destravar a tela, digite
 C-q. Então, leia na seção "Spontaneous Entry to Incremental Search" no
-manual do Emacs para uma dica de como lhe dar com esse "recurso".
+manual do Emacs para uma dica de como lidar com esse "recurso".
 
 Se você estiver no meio de uma pesquisa incremental e digitar <Delete>,
 você perceberá que o último caractere da pesquisa será apagado e a
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 8b980d3..3cb3968 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -364,6 +364,7 @@ static void PHP_functions (FILE *);
 static void PS_functions (FILE *);
 static void Prolog_functions (FILE *);
 static void Python_functions (FILE *);
+static void Ruby_functions (FILE *);
 static void Scheme_functions (FILE *);
 static void TeX_commands (FILE *);
 static void Texinfo_nodes (FILE *);
@@ -722,6 +723,12 @@ static const char Python_help [] =
 "In Python code, 'def' or 'class' at the beginning of a line\n\
 generate a tag.";
 
+static const char *Ruby_suffixes [] =
+  { "rb", "ruby", NULL };
+static const char Ruby_help [] =
+  "In Ruby code, 'def' or 'class' or 'module' at the beginning of\n\
+a line generate a tag.";
+
 /* Can't do the `SCM' or `scm' prefix with a version number. */
 static const char *Scheme_suffixes [] =
   { "oak", "sch", "scheme", "SCM", "scm", "SM", "sm", "ss", "t", NULL };
@@ -800,6 +807,7 @@ static language lang_names [] =
   { "proc",      no_lang_help,   plain_C_entries,   plain_C_suffixes   },
   { "prolog",    Prolog_help,    Prolog_functions,  Prolog_suffixes    },
   { "python",    Python_help,    Python_functions,  Python_suffixes    },
+  { "ruby",      Ruby_help,      Ruby_functions,    Ruby_suffixes      },
   { "scheme",    Scheme_help,    Scheme_functions,  Scheme_suffixes    },
   { "tex",       TeX_help,       TeX_commands,      TeX_suffixes       },
   { "texinfo",   Texinfo_help,   Texinfo_nodes,     Texinfo_suffixes   },
@@ -4532,6 +4540,35 @@ Python_functions (FILE *inf)
     }
 }
 
+/*
+ * Ruby support
+ * Original code by Xi Lu <address@hidden> (2015)
+ */
+static void
+Ruby_functions (FILE *inf)
+{
+  char *cp = NULL;
+
+  LOOP_ON_INPUT_LINES (inf, lb, cp)
+    {
+      cp = skip_spaces (cp);
+      if (LOOKING_AT (cp, "def")
+         || LOOKING_AT (cp, "class")
+         || LOOKING_AT (cp, "module"))
+       {
+         char *name = cp;
+
+        /* Ruby method names can end in a '='.  Also, operator overloading can
+           define operators whose names include '='.  */
+         while (!notinname (*cp) || *cp == '=')
+           cp++;
+
+         make_tag (name, cp - name, true,
+                   lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+       }
+    }
+}
+
 
 /*
  * PHP support
@@ -4948,13 +4985,29 @@ Lua_functions (FILE *inf)
 
   LOOP_ON_INPUT_LINES (inf, lb, bp)
     {
+      bp = skip_spaces (bp);
       if (bp[0] != 'f' && bp[0] != 'l')
        continue;
 
       (void)LOOKING_AT (bp, "local"); /* skip possible "local" */
 
       if (LOOKING_AT (bp, "function"))
-       get_tag (bp, NULL);
+       {
+         char *tag_name, *tp_dot, *tp_colon;
+
+         get_tag (bp, &tag_name);
+         /* If the tag ends with ".foo" or ":foo", make an additional tag for
+            "foo".  */
+         tp_dot = strrchr (tag_name, '.');
+         tp_colon = strrchr (tag_name, ':');
+         if (tp_dot || tp_colon)
+           {
+             char *p = tp_dot > tp_colon ? tp_dot : tp_colon;
+             int len_add = p - tag_name + 1;
+
+             get_tag (bp + len_add, NULL);
+           }
+       }
     }
 }
 
diff --git a/lisp/apropos.el b/lisp/apropos.el
index 6d7dc8a..77c5023 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -823,7 +823,7 @@ Returns list of symbols and documentation found."
               (lambda (symbol)
                 (setq f (apropos-safe-documentation symbol)
                       v (get symbol 'variable-documentation))
-                (if (integerp v) (setq v))
+                (if (integerp v) (setq v nil))
                 (setq f (apropos-documentation-internal f)
                       v (apropos-documentation-internal v))
                 (setq sf (apropos-score-doc f)
diff --git a/lisp/calendar/cal-html.el b/lisp/calendar/cal-html.el
index 4bddc38..8c46e3a 100644
--- a/lisp/calendar/cal-html.el
+++ b/lisp/calendar/cal-html.el
@@ -32,6 +32,7 @@
 ;;; Code:
 
 (require 'calendar)
+(require 'diary-lib)
 
 
 (defgroup calendar-html nil
@@ -358,12 +359,12 @@ of holidays, rather than diary entries."
 ;;  Monthly calendar
 ;;------------------------------------------------------------
 
-(autoload 'diary-list-entries "diary-lib")
-
 (defun cal-html-list-diary-entries (d1 d2)
   "Generate a list of all diary-entries from absolute date D1 to D2."
-  (diary-list-entries (calendar-gregorian-from-absolute d1)
-                      (1+ (- d2 d1)) t))
+  (if (with-demoted-errors "Not adding diary entries: %S"
+        (diary-check-diary-file))
+      (diary-list-entries (calendar-gregorian-from-absolute d1)
+                          (1+ (- d2 d1)) t)))
 
 (defun cal-html-insert-agenda-days (month year diary-list holiday-list)
   "Insert HTML commands for a range of days in monthly calendars.
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 93891bf..0720d82 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -909,13 +909,15 @@ This is recursive; that is, included files may include 
other files."
                         (append diary-entries-list
                                 (diary-list-entries original-date number t)))))
             (display-warning
-             :error
+             'diary
              (format-message "Can't read included diary file %s\n"
-                            diary-file)))
+                            diary-file)
+             :error))
         (display-warning
-         :error
+         'diary
          (format-message "Can't find included diary file %s\n"
-                        diary-file)))))
+                        diary-file)
+         :error))))
   (goto-char (point-min)))
 
 (defun diary-include-other-diary-files ()
@@ -1410,11 +1412,12 @@ marks.  This is intended to deal with deleted diary 
entries."
                         (eval (car (read-from-string sexp)))
                       (error
                        (display-warning
-                        :error
+                        'diary
                         (format "Bad diary sexp at line %d in %s:\n%s\n\
 Error: %s\n"
                                 (count-lines (point-min) (point))
-                                diary-file sexp err))
+                                diary-file sexp err)
+                        :error)
                        nil))))))
     (cond ((stringp result) result)
           ((and (consp result)
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el
index 307ab4d..3e7289b 100644
--- a/lisp/calendar/holidays.el
+++ b/lisp/calendar/holidays.el
@@ -346,9 +346,10 @@ The holidays are those in the list `calendar-holidays'."
                          (eval p)
                        (error
                         (display-warning
-                         :error
+                         'holidays
                          (format "Bad holiday list item: %s\nError: %s\n"
-                                 p err))
+                                 p err)
+                         :error)
                         nil))))
            (setq res (append h res))))
      'calendar-date-compare)))
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index 0c7a063..ca6669d 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -321,18 +321,29 @@ other sexp entries are enumerated in any case."
   "Return a new buffer containing the unfolded contents of a buffer.
 Folding is the iCalendar way of wrapping long lines.  In the
 created buffer all occurrences of CR LF BLANK are replaced by the
-empty string.  Argument FOLDED-ICAL-BUFFER is the unfolded input
+empty string.  Argument FOLDED-ICAL-BUFFER is the folded input
 buffer."
   (let ((unfolded-buffer (get-buffer-create " *icalendar-work*")))
     (save-current-buffer
       (set-buffer unfolded-buffer)
       (erase-buffer)
       (insert-buffer-substring folded-ical-buffer)
+      (icalendar--clean-up-line-endings)
       (goto-char (point-min))
       (while (re-search-forward "\r?\n[ \t]" nil t)
         (replace-match "" nil nil)))
     unfolded-buffer))
 
+(defun icalendar--clean-up-line-endings ()
+  "Replace DOS- and MAC-like line endings with unix line endings.
+All occurrences of (CR LF) and (LF CF) are replaced with LF in
+the current buffer.  This is necessary in buffers which contain a
+mix of different line endings."
+  (save-excursion
+    (goto-char (point-min))
+    (while (re-search-forward "\r\n\\|\n\r" nil t)
+      (replace-match "\n" nil nil))))
+
 (defsubst icalendar--rris (regexp rep string &optional fixedcase literal)
   "Replace regular expression in string.
 Pass arguments REGEXP REP STRING FIXEDCASE LITERAL to
diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el
index c1e06cb..48e73c2 100644
--- a/lisp/cedet/mode-local.el
+++ b/lisp/cedet/mode-local.el
@@ -874,24 +874,6 @@ invoked interactively."
   (when (setq mode (intern-soft mode))
     (mode-local-describe-bindings-1 mode (called-interactively-p 'any))))
 
-;; ;;; find-func support (Emacs 21.4, or perhaps 22.1)
-;; ;;
-;; (condition-case nil
-;;     ;; Try to get find-func so we can modify it.
-;;     (require 'find-func)
-;;   (error nil))
-
-;; (when (boundp 'find-function-regexp)
-;;   (unless (string-match "ine-overload" find-function-regexp)
-;;     (if (string-match "(def\\\\(" find-function-regexp)
-;;     (let ((end (match-end 0))
-;;           )
-;;       (setq find-function-regexp
-;;             (concat (substring find-function-regexp 0 end)
-;;                     "ine-overload\\|ine-mode-local-override\\|"
-;;                     "ine-child-mode\\|"
-;;                     (substring find-function-regexp end)))))))
-
 ;;; edebug support
 ;;
 (defun mode-local-setup-edebug-specs ()
diff --git a/lisp/character-fold.el b/lisp/character-fold.el
index 0e156c5..1e49fe2 100644
--- a/lisp/character-fold.el
+++ b/lisp/character-fold.el
@@ -22,65 +22,79 @@
 
 ;;; Code:
 
+(eval-and-compile (put 'character-fold-table 'char-table-extra-slots 1))
 
 (defconst character-fold-table
   (eval-when-compile
-    (let* ((equiv (make-char-table 'character-fold-table))
-           (table (unicode-property-table-internal 'decomposition))
-           (func (char-table-extra-slot table 1)))
+    (let ((equiv (make-char-table 'character-fold-table))
+          (equiv-multi (make-char-table 'character-fold-table))
+          (table (unicode-property-table-internal 'decomposition)))
+      (set-char-table-extra-slot equiv 0 equiv-multi)
+
       ;; Ensure the table is populated.
-      (map-char-table
-       (lambda (i v) (when (consp i) (funcall func (car i) v table)))
-       table)
+      (let ((func (char-table-extra-slot table 1)))
+        (map-char-table (lambda (char v)
+                          (when (consp char)
+                            (funcall func (car char) v table)))
+                        table))
 
       ;; Compile a list of all complex characters that each simple
       ;; character should match.
+      ;; In summary this loop does 3 things:
+      ;; - A complex character might be allowed to match its decomp.
+      ;; - The decomp is allowed to match the complex character.
+      ;; - A single char of the decomp might be allowed to match the
+      ;;   character.
+      ;; Some examples in the comments below.
       (map-char-table
-       (lambda (i dec)
-         (when (consp dec)
-           ;; Discard a possible formatting tag.
-           (when (symbolp (car dec))
-             (setq dec (cdr dec)))
+       (lambda (char decomp)
+         (when (consp decomp)
            ;; Skip trivial cases like ?a decomposing to (?a).
-           (unless (or (and (eq i (car dec))
-                            (not  (cdr dec))))
-             (let ((d dec)
-                   (fold-decomp t)
-                   k found)
-               (while (and d (not found))
-                 (setq k (pop d))
-                 ;; Is k a number or letter, per unicode standard?
-                 (setq found (memq (get-char-code-property k 'general-category)
-                                   '(Lu Ll Lt Lm Lo Nd Nl No))))
-               (if found
-                   ;; Check if the decomposition has more than one letter,
-                   ;; because then we don't want the first letter to match
-                   ;; the decomposition.
-                   (dolist (k d)
-                     (when (and fold-decomp
-                                (memq (get-char-code-property k 
'general-category)
-                                      '(Lu Ll Lt Lm Lo Nd Nl No)))
-                       (setq fold-decomp nil)))
-                 ;; If there's no number or letter on the
-                 ;; decomposition, take the first character in it.
-                 (setq found (car-safe dec)))
-               ;; Finally, we only fold multi-char decomposition if at
-               ;; least one of the chars is non-spacing (combining).
-               (when fold-decomp
-                 (setq fold-decomp nil)
-                 (dolist (k dec)
-                   (when (and (not fold-decomp)
-                              (> (get-char-code-property k 
'canonical-combining-class) 0))
-                     (setq fold-decomp t))))
-               ;; Add i to the list of characters that k can
-               ;; represent. Also possibly add its decomposition, so we can
-               ;; match multi-char representations like (format "a%c" 769)
-               (when (and found (not (eq i k)))
-                 (let ((chars (cons (char-to-string i) (aref equiv k))))
-                   (aset equiv k
-                         (if fold-decomp
-                             (cons (apply #'string dec) chars)
-                           chars))))))))
+           (unless (and (not (cdr decomp))
+                        (eq char (car decomp)))
+             (if (symbolp (car decomp))
+                 ;; Discard a possible formatting tag.
+                 (setq decomp (cdr decomp))
+               ;; If there's no formatting tag, ensure that char matches
+               ;; its decomp exactly.  This is because we want 'ä' to
+               ;; match 'ä', but we don't want '¹' to match '1'.
+               (aset equiv char
+                     (cons (apply #'string decomp)
+                           (aref equiv char))))
+
+             ;; Allow the entire decomp to match char.  If decomp has
+             ;; multiple characters, this is done by adding an entry
+             ;; to the alist of the first character in decomp.  This
+             ;; allows 'ff' to match 'ff', 'ä' to match 'ä', and '1' to
+             ;; match '¹'.
+             (let ((make-decomp-match-char
+                    (lambda (decomp char)
+                      (if (cdr decomp)
+                          (aset equiv-multi (car decomp)
+                                (cons (cons (apply #'string (cdr decomp))
+                                            (regexp-quote (string char)))
+                                      (aref equiv-multi (car decomp))))
+                        (aset equiv (car decomp)
+                              (cons (char-to-string char)
+                                    (aref equiv (car decomp))))))))
+               (funcall make-decomp-match-char decomp char)
+               ;; Do it again, without the non-spacing characters.
+               ;; This allows 'a' to match 'ä'.
+               (let ((simpler-decomp nil)
+                     (found-one nil))
+                 (dolist (c decomp)
+                   (if (> (get-char-code-property c 
'canonical-combining-class) 0)
+                       (setq found-one t)
+                     (push c simpler-decomp)))
+                 (when (and simpler-decomp found-one)
+                   (funcall make-decomp-match-char simpler-decomp char)
+                   ;; Finally, if the decomp only had one spacing
+                   ;; character, we allow this character to match the
+                   ;; decomp.  This is to let 'a' match 'ä'.
+                   (unless (cdr simpler-decomp)
+                     (aset equiv (car simpler-decomp)
+                           (cons (apply #'string decomp)
+                                 (aref equiv (car simpler-decomp)))))))))))
        table)
 
       ;; Add some manual entries.
@@ -93,13 +107,34 @@
 
       ;; Convert the lists of characters we compiled into regexps.
       (map-char-table
-       (lambda (i v) (let ((re (regexp-opt (cons (char-to-string i) v))))
-                  (if (consp i)
-                      (set-char-table-range equiv i re)
-                    (aset equiv i re))))
+       (lambda (char dec-list)
+         (let ((re (regexp-opt (cons (char-to-string char) dec-list))))
+           (if (consp char)
+               (set-char-table-range equiv char re)
+             (aset equiv char re))))
        equiv)
       equiv))
-  "Used for folding characters of the same group during search.")
+  "Used for folding characters of the same group during search.
+This is a char-table with the `character-fold-table' subtype.
+
+Let us refer to the character in question by char-x.
+Each entry is either nil (meaning char-x only matches literally)
+or a regexp.  This regexp should match anything that char-x can
+match by itself \(including char-x).  For instance, the default
+regexp for the ?+ character is \"[+⁺₊﬩﹢+]\".
+
+This table also has one extra slot which is also a char-table.
+Each entry in the extra slot is an alist used for multi-character
+matching (which may be nil).  The elements of the alist should
+have the form (SUFFIX . OTHER-REGEXP).  If the characters after
+char-x are equal to SUFFIX, then this combination of char-x +
+SUFFIX is allowed to match OTHER-REGEXP.  This is in addition to
+char-x being allowed to match REGEXP.
+For instance, the default alist for ?f includes:
+    \((\"fl\" . \"ffl\") (\"fi\" . \"ffi\")
+     (\"i\" . \"fi\") (\"f\" . \"ff\"))
+
+Exceptionally for the space character (32), ALIST is ignored.")
 
 (defun character-fold--make-space-string (n)
   "Return a string that matches N spaces."
@@ -109,35 +144,80 @@
                  (make-list n (or (aref character-fold-table ?\s) " ")))))
 
 ;;;###autoload
-(defun character-fold-to-regexp (string &optional _lax)
+(defun character-fold-to-regexp (string &optional _lax from)
   "Return a regexp matching anything that character-folds into STRING.
 Any character in STRING that has an entry in
 `character-fold-table' is replaced with that entry (which is a
-regexp) and other characters are `regexp-quote'd."
+regexp) and other characters are `regexp-quote'd.
+
+If the resulting regexp would be too long for Emacs to handle,
+just return the result of calling `regexp-quote' on STRING.
+
+FROM is for internal use.  It specifies an index in the STRING
+from which to start."
   (let* ((spaces 0)
-         (chars (mapcar #'identity string))
-         (out chars))
-    ;; When the user types a space, we want to match the table entry,
-    ;; but we also want the ?\s to be visible to `search-spaces-regexp'.
-    ;; See commit message for a longer description.
-    (while chars
-      (let ((c (car chars)))
-        (setcar chars
-                (cond
-                 ((eq c ?\s)
-                  (setq spaces (1+ spaces))
-                  nil)
-                 ((> spaces 0)
-                  (prog1 (concat (character-fold--make-space-string spaces)
-                                 (or (aref character-fold-table c)
-                                     (regexp-quote (string c))))
-                    (setq spaces 0)))
-                 (t (or (aref character-fold-table c)
-                        (regexp-quote (string c))))))
-        (setq chars (cdr chars))))
-    (concat (apply #'concat out)
-            (when (> spaces 0)
-              (character-fold--make-space-string spaces)))))
+         (multi-char-table (char-table-extra-slot character-fold-table 0))
+         (i (or from 0))
+         (end (length string))
+         (out nil))
+    ;; When the user types a space, we want to match the table entry
+    ;; for ?\s, which is generally a regexp like "[ ...]".  However,
+    ;; the `search-spaces-regexp' variable doesn't "see" spaces inside
+    ;; these regexp constructs, so we need to use "\\( \\|[ ...]\\)"
+    ;; instead (to manually expose a space).  Furthermore, the lax
+    ;; search engine acts on a bunch of spaces, not on individual
+    ;; spaces, so if the string contains sequential spaces like "  ", we
+    ;; need to keep them grouped together like this: "\\(  \\|[ ...][ ...]\\)".
+    (while (< i end)
+      (pcase (aref string i)
+        (`?\s (setq spaces (1+ spaces)))
+        (c (when (> spaces 0)
+             (push (character-fold--make-space-string spaces) out)
+             (setq spaces 0))
+           (let ((regexp (or (aref character-fold-table c)
+                             (regexp-quote (string c))))
+                 ;; Long string.  The regexp would probably be too long.
+                 (alist (unless (> end 50)
+                          (aref multi-char-table c))))
+             (push (let ((matched-entries nil)
+                         (max-length 0))
+                     (dolist (entry alist)
+                       (let* ((suffix (car entry))
+                              (len-suf (length suffix)))
+                         (when (eq (compare-strings suffix 0 nil
+                                                    string (1+ i) (+ i 1 
len-suf)
+                                                    nil)
+                                   t)
+                           (push (cons len-suf (cdr entry)) matched-entries)
+                           (setq max-length (max max-length len-suf)))))
+                     ;; If no suffixes matched, just go on.
+                     (if (not matched-entries)
+                         regexp
+;;; If N suffixes match, we "branch" out into N+1 executions for the
+;;; length of the longest match.  This means "fix" will match "fix" but
+;;; not "fⅸ", but it's necessary to keep the regexp size from scaling
+;;; exponentially.  See 
https://lists.gnu.org/archive/html/emacs-devel/2015-11/msg02562.html
+                       (let ((subs (substring string (1+ i) (+ i 1 
max-length))))
+                         ;; `i' is still going to inc by 1 below.
+                         (setq i (+ i max-length))
+                         (concat
+                          "\\(?:"
+                          (mapconcat (lambda (entry)
+                                       (let ((length (car entry))
+                                             (suffix-regexp (cdr entry)))
+                                         (concat suffix-regexp
+                                                 (character-fold-to-regexp 
subs nil length))))
+                                     `((0 . ,regexp) . ,matched-entries) "\\|")
+                          "\\)"))))
+                   out))))
+      (setq i (1+ i)))
+    (when (> spaces 0)
+      (push (character-fold--make-space-string spaces) out))
+    (let ((regexp (apply #'concat (nreverse out))))
+      ;; Limited by `MAX_BUF_SIZE' in `regex.c'.
+      (if (> (length regexp) 5000)
+          (regexp-quote string)
+        regexp))))
 
 
 ;;; Commands provided for completeness.
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 0247191..b5b618e 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -456,10 +456,20 @@ Return the compile-time value of FORM."
                               (byte-compile-recurse-toplevel
                                (macroexp-progn body)
                                (lambda (form)
-                                 (setf result
-                                       (byte-compile-eval
-                                        (byte-compile-top-level
-                                         (byte-compile-preprocess form))))))
+                                 ;; Insulate the following variables
+                                 ;; against changes made in the
+                                 ;; subsidiary compilation.  This
+                                 ;; prevents spurious warning
+                                 ;; messages: "not defined at runtime"
+                                 ;; etc.
+                                 (let ((byte-compile-unresolved-functions
+                                        byte-compile-unresolved-functions)
+                                       (byte-compile-new-defuns
+                                        byte-compile-new-defuns))
+                                   (setf result
+                                         (byte-compile-eval
+                                          (byte-compile-top-level
+                                           (byte-compile-preprocess form)))))))
                               (list 'quote result))))
     (eval-and-compile . ,(lambda (&rest body)
                            (byte-compile-recurse-toplevel
@@ -503,6 +513,11 @@ defined with incorrect args.")
 Used for warnings about calling a function that is defined during compilation
 but won't necessarily be defined when the compiled file is loaded.")
 
+(defvar byte-compile-new-defuns nil
+  "List of (runtime) functions defined in this compilation run.
+This variable is used to qualify `byte-compile-noruntime-functions' when
+outputting warnings about functions not being defined at runtime.")
+
 ;; Variables for lexical binding
 (defvar byte-compile--lexical-environment nil
   "The current lexical environment.")
@@ -1503,8 +1518,9 @@ extra args."
       ;; Separate the functions that will not be available at runtime
       ;; from the truly unresolved ones.
       (dolist (f byte-compile-unresolved-functions)
-       (setq f (car f))
-       (if (fboundp f) (push f noruntime) (push f unresolved)))
+        (setq f (car f))
+        (when (not (memq f byte-compile-new-defuns))
+          (if (fboundp f) (push f noruntime) (push f unresolved))))
       ;; Complain about the no-run-time functions
       (byte-compile-print-syms
        "the function `%s' might not be defined at runtime."
@@ -1961,6 +1977,8 @@ With argument ARG, insert value in current buffer after 
the form."
        ;; compiled.  A: Yes!  b-c-u-f might contain dross from a
        ;; previous byte-compile.
        (setq byte-compile-unresolved-functions nil)
+        (setq byte-compile-noruntime-functions nil)
+        (setq byte-compile-new-defuns nil)
 
        ;; Compile the forms from the input buffer.
        (while (progn
@@ -2287,8 +2305,7 @@ list that represents a doc string reference.
      ;; byte-compile-warn-about-unresolved-functions.
      (if (memq funsym byte-compile-noruntime-functions)
          (setq byte-compile-noruntime-functions
-               (delq funsym byte-compile-noruntime-functions)
-               byte-compile-noruntime-functions)
+               (delq funsym byte-compile-noruntime-functions))
        (setq byte-compile-unresolved-functions
              (delq (assq funsym byte-compile-unresolved-functions)
                    byte-compile-unresolved-functions)))))
@@ -2346,8 +2363,21 @@ list that represents a doc string reference.
 (defun byte-compile-file-form-require (form)
   (let ((args (mapcar 'eval (cdr form)))
        (hist-orig load-history)
-       hist-new)
+       hist-new prov-cons)
     (apply 'require args)
+
+    ;; Record the functions defined by the require in 
`byte-compile-new-defuns'.
+    (setq hist-new load-history)
+    (setq prov-cons (cons 'provide (car args)))
+    (while (and hist-new
+                (not (member prov-cons (car hist-new))))
+      (setq hist-new (cdr hist-new)))
+    (when hist-new
+      (dolist (x (car hist-new))
+        (when (and (consp x)
+                   (memq (car x) '(defun t)))
+          (push (cdr x) byte-compile-new-defuns))))
+
     (when (byte-compile-warning-enabled-p 'cl-functions)
       ;; Detect (require 'cl) in a way that works even if cl is already loaded.
       (if (member (car args) '("cl" cl))
@@ -2403,6 +2433,7 @@ not to take responsibility for the actual compilation of 
the code."
          (byte-compile-current-form name)) ; For warnings.
 
     (byte-compile-set-symbol-position name)
+    (push name byte-compile-new-defuns)
     ;; When a function or macro is defined, add it to the call tree so that
     ;; we can tell when functions are not used.
     (if byte-compile-generate-call-tree
@@ -3710,16 +3741,25 @@ discarding."
 (byte-defop-compiler-1 quote)
 
 (defun byte-compile-setq (form)
-  (let ((args (cdr form)))
-    (if args
-       (while args
-         (byte-compile-form (car (cdr args)))
-         (or byte-compile--for-effect (cdr (cdr args))
-             (byte-compile-out 'byte-dup 0))
-         (byte-compile-variable-set (car args))
-         (setq args (cdr (cdr args))))
-      ;; (setq), with no arguments.
-      (byte-compile-form nil byte-compile--for-effect))
+  (let* ((args (cdr form))
+         (len (length args)))
+    (if (= (logand len 1) 1)
+        (progn
+          (byte-compile-log-warning
+           (format "missing value for `%S' at end of setq" (car (last args)))
+           nil :error)
+          (byte-compile-form
+           `(signal 'wrong-number-of-arguments '(setq ,len))
+           byte-compile--for-effect))
+      (if args
+          (while args
+            (byte-compile-form (car (cdr args)))
+            (or byte-compile--for-effect (cdr (cdr args))
+                (byte-compile-out 'byte-dup 0))
+            (byte-compile-variable-set (car args))
+            (setq args (cdr (cdr args))))
+        ;; (setq), with no arguments.
+        (byte-compile-form nil byte-compile--for-effect)))
     (setq byte-compile--for-effect nil)))
 
 (defun byte-compile-setq-default (form)
@@ -3973,8 +4013,13 @@ that suppresses all warnings during execution of BODY."
     (setq byte-compile--for-effect nil)))
 
 (defun byte-compile-funcall (form)
-  (mapc 'byte-compile-form (cdr form))
-  (byte-compile-out 'byte-call (length (cdr (cdr form)))))
+  (if (cdr form)
+      (progn
+        (mapc 'byte-compile-form (cdr form))
+        (byte-compile-out 'byte-call (length (cdr (cdr form)))))
+    (byte-compile-log-warning "`funcall' called with no arguments" nil :error)
+    (byte-compile-form '(signal 'wrong-number-of-arguments '(funcall 0))
+                       byte-compile--for-effect)))
 
 
 ;; let binding
diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el
index efa9a3d..355913a 100644
--- a/lisp/emacs-lisp/cconv.el
+++ b/lisp/emacs-lisp/cconv.el
@@ -473,25 +473,28 @@ places where they originally did not directly appear."
         :fun-body ,(cconv--convert-function () body env form)))
 
     (`(setq . ,forms)                   ; setq special form
-     (let ((prognlist ()))
-       (while forms
-         (let* ((sym (pop forms))
-                (sym-new (or (cdr (assq sym env)) sym))
-                (value (cconv-convert (pop forms) env extend)))
-           (push (pcase sym-new
-                   ((pred symbolp) `(setq ,sym-new ,value))
-                   (`(car-safe ,iexp) `(setcar ,iexp ,value))
-                   ;; This "should never happen", but for variables which are
-                   ;; mutated+captured+unused, we may end up trying to `setq'
-                   ;; on a closed-over variable, so just drop the setq.
-                   (_ ;; (byte-compile-report-error
-                    ;;  (format "Internal error in cconv of (setq %s ..)"
-                    ;;          sym-new))
-                    value))
-                 prognlist)))
-       (if (cdr prognlist)
-           `(progn . ,(nreverse prognlist))
-         (car prognlist))))
+     (if (= (logand (length forms) 1) 1)
+         ;; With an odd number of args, let bytecomp.el handle the error.
+         form
+       (let ((prognlist ()))
+         (while forms
+           (let* ((sym (pop forms))
+                  (sym-new (or (cdr (assq sym env)) sym))
+                  (value (cconv-convert (pop forms) env extend)))
+             (push (pcase sym-new
+                     ((pred symbolp) `(setq ,sym-new ,value))
+                     (`(car-safe ,iexp) `(setcar ,iexp ,value))
+                     ;; This "should never happen", but for variables which are
+                     ;; mutated+captured+unused, we may end up trying to `setq'
+                     ;; on a closed-over variable, so just drop the setq.
+                     (_ ;; (byte-compile-report-error
+                      ;;  (format "Internal error in cconv of (setq %s ..)"
+                      ;;          sym-new))
+                      value))
+                   prognlist)))
+         (if (cdr prognlist)
+             `(progn . ,(nreverse prognlist))
+           (car prognlist)))))
 
     (`(,(and (or `funcall `apply) callsym) ,fun . ,args)
      ;; These are not special forms but we treat them separately for the needs
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index bf1a21a..88d5f32 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -270,6 +270,7 @@ made in the style guide relating to order."
 (defcustom checkdoc-package-keywords-flag nil
   "Non-nil means warn if this file's package keywords are not recognized.
 Currently, all recognized keywords must be on `finder-known-keywords'."
+  :version "25.1"
   :type 'boolean)
 
 (define-obsolete-variable-alias 'checkdoc-style-hooks
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index 9e6102c..78f580c 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -797,10 +797,10 @@ methods.")
 
 ;;; Define some pre-defined generic functions, used internally.
 
-(define-error 'cl-no-method "No method for %S")
-(define-error 'cl-no-next-method "No next method for %S" 'cl-no-method)
-(define-error 'cl-no-primary-method "No primary method for %S" 'cl-no-method)
-(define-error 'cl-no-applicable-method "No applicable method for %S"
+(define-error 'cl-no-method "No method")
+(define-error 'cl-no-next-method "No next method" 'cl-no-method)
+(define-error 'cl-no-primary-method "No primary method" 'cl-no-method)
+(define-error 'cl-no-applicable-method "No applicable method"
   'cl-no-method)
 
 (cl-defgeneric cl-no-next-method (generic method &rest args)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 09d2d3f..c8aad3a 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -2885,7 +2885,7 @@ Of course, we really can't know that for sure, so it's 
just a heuristic."
 (put 'real 'cl-deftype-satisfies #'numberp)
 (put 'fixnum 'cl-deftype-satisfies #'integerp)
 (put 'base-char 'cl-deftype-satisfies #'characterp)
-(put 'character 'cl-deftype-satisfies #'integerp)
+(put 'character 'cl-deftype-satisfies #'natnump)
 
 
 ;;;###autoload
diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el
index 03480b2..4fc271b 100644
--- a/lisp/emacs-lisp/cl-preloaded.el
+++ b/lisp/emacs-lisp/cl-preloaded.el
@@ -3,6 +3,7 @@
 ;; Copyright (C) 2015  Free Software Foundation, Inc
 
 ;; Author: Stefan Monnier <address@hidden>
+;; Package: emacs
 
 ;; This file is part of GNU Emacs.
 
diff --git a/lisp/emacs-lisp/eieio-compat.el b/lisp/emacs-lisp/eieio-compat.el
index 06e65b9..641d657 100644
--- a/lisp/emacs-lisp/eieio-compat.el
+++ b/lisp/emacs-lisp/eieio-compat.el
@@ -4,6 +4,7 @@
 
 ;; Author: Eric M. Ludlam <address@hidden>
 ;; Keywords: OO, lisp
+;; Package: eieio
 
 ;; This file is part of GNU Emacs.
 
diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el
index dcaaab6..f524c17 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -1101,7 +1101,7 @@ method invocation orders of the involved classes."
   (list eieio--generic-subclass-generalizer))
 
 
-;;;### (autoloads nil "eieio-compat" "eieio-compat.el" 
"11dd361fd4c1c625de90a39977936236")
+;;;### (autoloads nil "eieio-compat" "eieio-compat.el" 
"52d481d50642de76b077ba0bafdd2cd4")
 ;;; Generated autoloads from eieio-compat.el
 
 (autoload 'eieio--defalias "eieio-compat" "\
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index d572d54..02ae41b 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -374,9 +374,9 @@ Returns nil."
 Determines whether CONDITION matches TYPE and EXCLUDE-SUBTYPES,
 and aborts the current test as failed if it doesn't."
   (let ((signaled-conditions (get (car condition) 'error-conditions))
-        (handled-conditions (cl-etypecase type
-                              (list type)
-                              (symbol (list type)))))
+        (handled-conditions (pcase-exhaustive type
+                              ((pred listp) type)
+                              ((pred symbolp) (list type)))))
     (cl-assert signaled-conditions)
     (unless (cl-intersection signaled-conditions handled-conditions)
       (ert-fail (append
@@ -466,18 +466,18 @@ Errors during evaluation are caught and handled like nil."
 
 (defun ert--explain-format-atom (x)
   "Format the atom X for `ert--explain-equal'."
-  (cl-typecase x
-    (character (list x (format "#x%x" x) (format "?%c" x)))
-    (fixnum (list x (format "#x%x" x)))
-    (t x)))
+  (pcase x
+    ((pred characterp) (list x (format "#x%x" x) (format "?%c" x)))
+    ((pred integerp) (list x (format "#x%x" x)))
+    (_ x)))
 
 (defun ert--explain-equal-rec (a b)
   "Return a programmer-readable explanation of why A and B are not `equal'.
 Returns nil if they are."
   (if (not (equal (type-of a) (type-of b)))
       `(different-types ,a ,b)
-    (cl-etypecase a
-      (cons
+    (pcase-exhaustive a
+      ((pred consp)
        (let ((a-proper-p (ert--proper-list-p a))
              (b-proper-p (ert--proper-list-p b)))
          (if (not (eql (not a-proper-p) (not b-proper-p)))
@@ -502,24 +502,26 @@ Returns nil if they are."
                        `(cdr ,cdr-x)
                      (cl-assert (equal a b) t)
                      nil))))))))
-      (array (if (not (equal (length a) (length b)))
-                 `(arrays-of-different-length ,(length a) ,(length b)
-                                              ,a ,b
-                                              ,@(unless (char-table-p a)
-                                                  `(first-mismatch-at
-                                                    ,(cl-mismatch a b :test 
'equal))))
-               (cl-loop for i from 0
-                        for ai across a
-                        for bi across b
-                        for xi = (ert--explain-equal-rec ai bi)
-                        do (when xi (cl-return `(array-elt ,i ,xi)))
-                        finally (cl-assert (equal a b) t))))
-      (atom (if (not (equal a b))
-                (if (and (symbolp a) (symbolp b) (string= a b))
-                    `(different-symbols-with-the-same-name ,a ,b)
-                  `(different-atoms ,(ert--explain-format-atom a)
-                                    ,(ert--explain-format-atom b)))
-              nil)))))
+      ((pred arrayp)
+       (if (not (equal (length a) (length b)))
+           `(arrays-of-different-length ,(length a) ,(length b)
+                                        ,a ,b
+                                        ,@(unless (char-table-p a)
+                                            `(first-mismatch-at
+                                              ,(cl-mismatch a b :test 
'equal))))
+         (cl-loop for i from 0
+                  for ai across a
+                  for bi across b
+                  for xi = (ert--explain-equal-rec ai bi)
+                  do (when xi (cl-return `(array-elt ,i ,xi)))
+                  finally (cl-assert (equal a b) t))))
+      ((pred atom)
+       (if (not (equal a b))
+           (if (and (symbolp a) (symbolp b) (string= a b))
+               `(different-symbols-with-the-same-name ,a ,b)
+             `(different-atoms ,(ert--explain-format-atom a)
+                               ,(ert--explain-format-atom b)))
+         nil)))))
 
 (defun ert--explain-equal (a b)
   "Explainer function for `equal'."
@@ -694,23 +696,20 @@ and is displayed in front of the value of MESSAGE-FORM."
         (print-level 8)
         (print-length 50))
     (dolist (frame backtrace)
-      (cl-ecase (car frame)
-        ((nil)
+      (pcase-exhaustive frame
+        (`(nil ,special-operator . ,arg-forms)
          ;; Special operator.
-         (cl-destructuring-bind (special-operator &rest arg-forms)
-             (cdr frame)
-           (insert
-            (format "  %S\n" (cons special-operator arg-forms)))))
-        ((t)
+         (insert
+          (format "  %S\n" (cons special-operator arg-forms))))
+        (`(t ,fn . ,args)
          ;; Function call.
-         (cl-destructuring-bind (fn &rest args) (cdr frame)
-           (insert (format "  %S(" fn))
-           (cl-loop for firstp = t then nil
-                    for arg in args do
-                    (unless firstp
-                      (insert " "))
-                    (insert (format "%S" arg)))
-           (insert ")\n")))))))
+         (insert (format "  %S(" fn))
+         (cl-loop for firstp = t then nil
+                  for arg in args do
+                  (unless firstp
+                    (insert " "))
+                  (insert (format "%S" arg)))
+         (insert ")\n"))))))
 
 ;; A container for the state of the execution of a single test and
 ;; environment data needed during its execution.
@@ -894,33 +893,32 @@ t -- Always matches.
                            RESULT."
   ;; It would be easy to add `member' and `eql' types etc., but I
   ;; haven't bothered yet.
-  (cl-etypecase result-type
-    ((member nil) nil)
-    ((member t) t)
-    ((member :failed) (ert-test-failed-p result))
-    ((member :passed) (ert-test-passed-p result))
-    ((member :skipped) (ert-test-skipped-p result))
-    (cons
-     (cl-destructuring-bind (operator &rest operands) result-type
-       (cl-ecase operator
-         (and
-          (cl-case (length operands)
-            (0 t)
-            (t
-             (and (ert-test-result-type-p result (car operands))
-                  (ert-test-result-type-p result `(and ,@(cdr operands)))))))
-         (or
-          (cl-case (length operands)
-            (0 nil)
-            (t
-             (or (ert-test-result-type-p result (car operands))
-                 (ert-test-result-type-p result `(or ,@(cdr operands)))))))
-         (not
-          (cl-assert (eql (length operands) 1))
-          (not (ert-test-result-type-p result (car operands))))
-         (satisfies
-          (cl-assert (eql (length operands) 1))
-          (funcall (car operands) result)))))))
+  (pcase-exhaustive result-type
+    ('nil nil)
+    ('t t)
+    (:failed (ert-test-failed-p result))
+    (:passed (ert-test-passed-p result))
+    (:skipped (ert-test-skipped-p result))
+    (`(,operator . ,operands)
+     (cl-ecase operator
+       (and
+        (cl-case (length operands)
+          (0 t)
+          (t
+           (and (ert-test-result-type-p result (car operands))
+                (ert-test-result-type-p result `(and ,@(cdr operands)))))))
+       (or
+        (cl-case (length operands)
+          (0 nil)
+          (t
+           (or (ert-test-result-type-p result (car operands))
+               (ert-test-result-type-p result `(or ,@(cdr operands)))))))
+       (not
+        (cl-assert (eql (length operands) 1))
+        (not (ert-test-result-type-p result (car operands))))
+       (satisfies
+        (cl-assert (eql (length operands) 1))
+        (funcall (car operands) result))))))
 
 (defun ert-test-result-expected-p (test result)
   "Return non-nil if TEST's expected result type matches RESULT."
@@ -961,95 +959,96 @@ as (satisfies ...), strings, :new, etc. make use of 
UNIVERSE.
 Selectors that do not, such as (member ...), just return the
 set implied by them without checking whether it is really
 contained in UNIVERSE."
-  ;; This code needs to match the etypecase in
+  ;; This code needs to match the cases in
   ;; `ert-insert-human-readable-selector'.
-  (cl-etypecase selector
-    ((member nil) nil)
-    ((member t) (cl-etypecase universe
-                  (list universe)
-                  ((member t) (ert-select-tests "" universe))))
-    ((member :new) (ert-select-tests
-                    `(satisfies ,(lambda (test)
-                                   (null (ert-test-most-recent-result test))))
-                    universe))
-    ((member :failed) (ert-select-tests
-                       `(satisfies ,(lambda (test)
-                                      (ert-test-result-type-p
-                                       (ert-test-most-recent-result test)
-                                       ':failed)))
-                       universe))
-    ((member :passed) (ert-select-tests
-                       `(satisfies ,(lambda (test)
-                                      (ert-test-result-type-p
-                                       (ert-test-most-recent-result test)
-                                       ':passed)))
-                       universe))
-    ((member :expected) (ert-select-tests
-                         `(satisfies
-                           ,(lambda (test)
-                              (ert-test-result-expected-p
-                               test
-                               (ert-test-most-recent-result test))))
-                         universe))
-    ((member :unexpected) (ert-select-tests `(not :expected) universe))
-    (string
-     (cl-etypecase universe
-       ((member t) (mapcar #'ert-get-test
-                           (apropos-internal selector #'ert-test-boundp)))
-       (list (cl-remove-if-not (lambda (test)
-                                   (and (ert-test-name test)
-                                        (string-match selector
-                                                      (symbol-name
-                                                       (ert-test-name test)))))
-                                 universe))))
-    (ert-test (list selector))
-    (symbol
+  (pcase-exhaustive selector
+    ('nil nil)
+    ('t (pcase-exhaustive universe
+          ((pred listp) universe)
+          (`t (ert-select-tests "" universe))))
+    (:new (ert-select-tests
+           `(satisfies ,(lambda (test)
+                          (null (ert-test-most-recent-result test))))
+           universe))
+    (:failed (ert-select-tests
+              `(satisfies ,(lambda (test)
+                             (ert-test-result-type-p
+                              (ert-test-most-recent-result test)
+                              ':failed)))
+              universe))
+    (:passed (ert-select-tests
+              `(satisfies ,(lambda (test)
+                             (ert-test-result-type-p
+                              (ert-test-most-recent-result test)
+                              ':passed)))
+              universe))
+    (:expected (ert-select-tests
+                `(satisfies
+                  ,(lambda (test)
+                     (ert-test-result-expected-p
+                      test
+                      (ert-test-most-recent-result test))))
+                universe))
+    (:unexpected (ert-select-tests `(not :expected) universe))
+    ((pred stringp)
+     (pcase-exhaustive universe
+       (`t (mapcar #'ert-get-test
+                   (apropos-internal selector #'ert-test-boundp)))
+       ((pred listp)
+        (cl-remove-if-not (lambda (test)
+                            (and (ert-test-name test)
+                                 (string-match selector
+                                               (symbol-name
+                                                (ert-test-name test)))))
+                          universe))))
+    ((pred ert-test-p) (list selector))
+    ((pred symbolp)
      (cl-assert (ert-test-boundp selector))
      (list (ert-get-test selector)))
-    (cons
-     (cl-destructuring-bind (operator &rest operands) selector
-       (cl-ecase operator
-         (member
-          (mapcar (lambda (purported-test)
-                    (cl-etypecase purported-test
-                      (symbol (cl-assert (ert-test-boundp purported-test))
-                              (ert-get-test purported-test))
-                      (ert-test purported-test)))
-                  operands))
-         (eql
-          (cl-assert (eql (length operands) 1))
-          (ert-select-tests `(member ,@operands) universe))
-         (and
-          ;; Do these definitions of AND, NOT and OR satisfy de
-          ;; Morgan's laws?  Should they?
-          (cl-case (length operands)
-            (0 (ert-select-tests 't universe))
-            (t (ert-select-tests `(and ,@(cdr operands))
-                                 (ert-select-tests (car operands)
-                                                   universe)))))
-         (not
-          (cl-assert (eql (length operands) 1))
-          (let ((all-tests (ert-select-tests 't universe)))
-            (cl-set-difference all-tests
-                                 (ert-select-tests (car operands)
-                                                   all-tests))))
-         (or
-          (cl-case (length operands)
-            (0 (ert-select-tests 'nil universe))
-            (t (cl-union (ert-select-tests (car operands) universe)
-                           (ert-select-tests `(or ,@(cdr operands))
-                                             universe)))))
-         (tag
-          (cl-assert (eql (length operands) 1))
-          (let ((tag (car operands)))
-            (ert-select-tests `(satisfies
-                                ,(lambda (test)
-                                   (member tag (ert-test-tags test))))
-                              universe)))
-         (satisfies
-          (cl-assert (eql (length operands) 1))
-          (cl-remove-if-not (car operands)
-                              (ert-select-tests 't universe))))))))
+    (`(,operator . ,operands)
+     (cl-ecase operator
+       (member
+        (mapcar (lambda (purported-test)
+                  (pcase-exhaustive purported-test
+                    ((pred symbolp)
+                     (cl-assert (ert-test-boundp purported-test))
+                     (ert-get-test purported-test))
+                    ((pred ert-test-p) purported-test)))
+                operands))
+       (eql
+        (cl-assert (eql (length operands) 1))
+        (ert-select-tests `(member ,@operands) universe))
+       (and
+        ;; Do these definitions of AND, NOT and OR satisfy de
+        ;; Morgan's laws?  Should they?
+        (cl-case (length operands)
+          (0 (ert-select-tests 't universe))
+          (t (ert-select-tests `(and ,@(cdr operands))
+                               (ert-select-tests (car operands)
+                                                 universe)))))
+       (not
+        (cl-assert (eql (length operands) 1))
+        (let ((all-tests (ert-select-tests 't universe)))
+          (cl-set-difference all-tests
+                             (ert-select-tests (car operands)
+                                               all-tests))))
+       (or
+        (cl-case (length operands)
+          (0 (ert-select-tests 'nil universe))
+          (t (cl-union (ert-select-tests (car operands) universe)
+                       (ert-select-tests `(or ,@(cdr operands))
+                                         universe)))))
+       (tag
+        (cl-assert (eql (length operands) 1))
+        (let ((tag (car operands)))
+          (ert-select-tests `(satisfies
+                              ,(lambda (test)
+                                 (member tag (ert-test-tags test))))
+                            universe)))
+       (satisfies
+        (cl-assert (eql (length operands) 1))
+        (cl-remove-if-not (car operands)
+                          (ert-select-tests 't universe)))))))
 
 (defun ert--insert-human-readable-selector (selector)
   "Insert a human-readable presentation of SELECTOR into the current buffer."
@@ -1058,26 +1057,24 @@ contained in UNIVERSE."
   ;; `most-recent-result' slots of test case objects in (eql ...) or
   ;; (member ...) selectors.
   (cl-labels ((rec (selector)
-                ;; This code needs to match the etypecase in
+                ;; This code needs to match the cases in
                 ;; `ert-select-tests'.
-                (cl-etypecase selector
-                  ((or (member nil t
-                               :new :failed :passed
-                               :expected :unexpected)
-                       string
-                       symbol)
+                (pcase-exhaustive selector
+                  ((or
+                    ;; 'nil 't :new :failed :passed :expected :unexpected
+                    (pred stringp)
+                    (pred symbolp))
                    selector)
-                  (ert-test
+                  ((pred ert-test-p)
                    (if (ert-test-name selector)
                        (make-symbol (format "<%S>" (ert-test-name selector)))
                      (make-symbol "<unnamed test>")))
-                  (cons
-                   (cl-destructuring-bind (operator &rest operands) selector
-                     (cl-ecase operator
-                       ((member eql and not or)
-                        `(,operator ,@(mapcar #'rec operands)))
-                       ((member tag satisfies)
-                        selector)))))))
+                  (`(,operator . ,operands)
+                   (pcase operator
+                     ((or 'member 'eql 'and 'not 'or)
+                      `(,operator ,@(mapcar #'rec operands)))
+                     ((or 'tag 'satisfies)
+                      selector))))))
     (insert (format "%S" (rec selector)))))
 
 
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index 9e00190..1fea38c 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -260,6 +260,8 @@ The return value is the last VAL in the list.
 
 \(fn PLACE VAL PLACE VAL ...)"
   (declare (debug (&rest [gv-place form])))
+  (if (/= (logand (length args) 1) 0)
+      (signal 'wrong-number-of-arguments (list 'setf (length args))))
   (if (and args (null (cddr args)))
       (let ((place (pop args))
             (val (car args)))
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index 1882eb1..a1bc38c 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -289,7 +289,10 @@ is also interactive.  There are 3 cases:
   argument (the interactive spec of OLDFUN, which it can pass to
   `advice-eval-interactive-spec') and return the list of arguments to use.
 - Else, use the interactive spec of FUNCTION and ignore the one of OLDFUN."
-  (declare (debug t)) ;;(indent 2)
+  (declare
+   ;;(indent 2)
+   (debug (form [&or symbolp ("local" form) ("var" sexp) gv-place]
+           form &optional form)))
   `(advice--add-function ,where (gv-ref ,(advice--normalize-place place))
                          ,function ,props))
 
@@ -311,7 +314,8 @@ is also interactive.  There are 3 cases:
 If FUNCTION was not added to PLACE, do nothing.
 Instead of FUNCTION being the actual function, it can also be the `name'
 of the piece of advice."
-  (declare (debug t))
+  (declare (debug ([&or symbolp ("local" form) ("var" sexp) gv-place]
+                   form)))
   (gv-letplace (getter setter) (advice--normalize-place place)
     (macroexp-let2 nil new `(advice--remove-function ,getter ,function)
       `(unless (eq ,new ,getter) ,(funcall setter new)))))
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index d747bc2..f60bff4 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -5,7 +5,7 @@
 ;; Author: Tom Tromey <address@hidden>
 ;;         Daniel Hackney <address@hidden>
 ;; Created: 10 Mar 2007
-;; Version: 1.0.1
+;; Version: 1.1.0
 ;; Keywords: tools
 ;; Package-Requires: ((tabulated-list "1.0"))
 
@@ -24,14 +24,6 @@
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
-;;; Change Log:
-
-;;  2 Apr 2007 - now using ChangeLog file
-;; 15 Mar 2007 - updated documentation
-;; 14 Mar 2007 - Changed how obsolete packages are handled
-;; 13 Mar 2007 - Wrote package-install-from-buffer
-;; 12 Mar 2007 - Wrote package-menu mode
-
 ;;; Commentary:
 
 ;; The idea behind package.el is to be able to download packages and
@@ -69,6 +61,7 @@
 ;; * Download.  Fetching the package from ELPA.
 ;; * Install.  Untar the package, or write the .el file, into
 ;;   ~/.emacs.d/elpa/ directory.
+;; * Autoload generation.
 ;; * Byte compile.  Currently this phase is done during install,
 ;;   but we may change this.
 ;; * Activate.  Evaluate the autoloads for the package to make it
@@ -127,14 +120,9 @@
 ;; - "installed" instead of a blank in the status column
 ;; - tramp needs its files to be compiled in a certain order.
 ;;   how to handle this?  fix tramp?
-;; - on emacs 21 we don't kill the -autoloads.el buffer.  what about 22?
 ;; - maybe we need separate .elc directories for various emacs versions
 ;;   and also emacs-vs-xemacs.  That way conditional compilation can
 ;;   work.  But would this break anything?
-;; - should store the package's keywords in archive-contents, then
-;;   let the users filter the package-menu by keyword.  See
-;;   finder-by-keyword.  (We could also let people view the
-;;   Commentary, but it isn't clear how useful this is.)
 ;; - William Xu suggests being able to open a package file without
 ;;   installing it
 ;; - Interface with desktop.el so that restarting after an install
@@ -145,15 +133,9 @@
 ;;   private data dir, aka ".../etc".  Or, maybe data-directory
 ;;   needs to be a list (though this would be less nice)
 ;;   a few packages want this, eg sokoban
-;; - package menu needs:
-;;     ability to know which packages are built-in & thus not deletable
-;;     it can sometimes print odd results, like 0.3 available but 0.4 active
-;;        why is that?
-;; - Allow multiple versions on the server...?
-;;   [ why bother? ]
-;; - Don't install a package which will invalidate dependencies overall
-;; - Allow something like (or (>= emacs 21.0) (>= xemacs 21.5))
-;;   [ currently thinking, why bother.. KISS ]
+;; - Allow multiple versions on the server, so that if a user doesn't
+;;   meet the requirements for the most recent version they can still
+;;   install an older one.
 ;; - Allow optional package dependencies
 ;;   then if we require 'bbdb', bbdb-specific lisp in lisp/bbdb
 ;;   and just don't compile to add to load path ...?
@@ -234,7 +216,7 @@ of it available such that:
 
 This variable has three possible values:
     nil: no packages are hidden;
-    `archive': only criteria (a) is used;
+    `archive': only criterion (a) is used;
     t: both criteria are used.
 
 This variable has no effect if `package-menu--hide-packages' is
@@ -252,7 +234,7 @@ Each element has the form (ARCHIVE-ID . PRIORITY).
 
 When installing packages, the package with the highest version
 number from the archive with the highest priority is
-selected. When higher versions are available from archives with
+selected.  When higher versions are available from archives with
 lower priorities, the user has to select those manually.
 
 Archives not in this list have the priority 0.
@@ -664,8 +646,30 @@ PKG-DESC is a `package-desc' object."
 (defvar Info-directory-list)
 (declare-function info-initialize "info" ())
 
-(defun package-activate-1 (pkg-desc &optional reload)
+(defun package--load-files-for-activation (pkg-desc reload)
+  "Load files for activating a package given by PKG-DESC.
+Load the autoloads file, and ensure `load-path' is setup.  If
+RELOAD is non-nil, also load all files in the package that
+correspond to previously loaded files."
+  (let* ((loaded-files-list (when reload
+                              (package--list-loaded-files (package-desc-dir 
pkg-desc)))))
+    ;; Add to load path, add autoloads, and activate the package.
+    (package--activate-autoloads-and-load-path pkg-desc)
+    ;; Call `load' on all files in `package-desc-dir' already present in
+    ;; `load-history'.  This is done so that macros in these files are updated
+    ;; to their new definitions.  If another package is being installed which
+    ;; depends on this new definition, not doing this update would cause
+    ;; compilation errors and break the installation.
+    (with-demoted-errors "Error in package--load-files-for-activation: %s"
+      (mapc (lambda (feature) (load feature nil t))
+            ;; Skip autoloads file since we already evaluated it above.
+            (remove (file-truename (package--autoloads-file-name pkg-desc))
+                    loaded-files-list)))))
+
+(defun package-activate-1 (pkg-desc &optional reload deps)
   "Activate package given by PKG-DESC, even if it was already active.
+If DEPS is non-nil, also activate its dependencies (unless they
+are already activated).
 If RELOAD is non-nil, also `load' any files inside the package which
 correspond to previously loaded files (those returned by
 `package--list-loaded-files')."
@@ -674,20 +678,15 @@ correspond to previously loaded files (those returned by
     (unless pkg-dir
       (error "Internal error: unable to find directory for `%s'"
              (package-desc-full-name pkg-desc)))
-    (let* ((loaded-files-list (when reload
-                                (package--list-loaded-files pkg-dir))))
-      ;; Add to load path, add autoloads, and activate the package.
-      (package--activate-autoloads-and-load-path pkg-desc)
-      ;; Call `load' on all files in `pkg-dir' already present in
-      ;; `load-history'.  This is done so that macros in these files are 
updated
-      ;; to their new definitions.  If another package is being installed which
-      ;; depends on this new definition, not doing this update would cause
-      ;; compilation errors and break the installation.
-      (with-demoted-errors "Error in package-activate-1: %s"
-        (mapc (lambda (feature) (load feature nil t))
-              ;; Skip autoloads file since we already evaluated it above.
-              (remove (file-truename (package--autoloads-file-name pkg-desc))
-                      loaded-files-list))))
+    ;; Activate its dependencies recursively.
+    ;; FIXME: This doesn't check whether the activated version is the
+    ;; required version.
+    (when deps
+      (dolist (req (package-desc-reqs pkg-desc))
+        (unless (package-activate (car req))
+          (error "Unable to activate package `%s'.\nRequired package `%s-%s' 
is unavailable"
+                 name (car req) (package-version-join (cadr req))))))
+    (package--load-files-for-activation pkg-desc reload)
     ;; Add info node.
     (when (file-exists-p (expand-file-name "dir" pkg-dir))
       ;; FIXME: not the friendliest, but simple.
@@ -739,7 +738,7 @@ DIR, sorted by most recently loaded last."
 ;; one was already activated.  It also loads a features of this
 ;; package which were already loaded.
 (defun package-activate (package &optional force)
-  "Activate package PACKAGE.
+  "Activate the package named PACKAGE.
 If FORCE is true, (re-)activate it if it's already activated.
 Newer versions are always activated, regardless of FORCE."
   (let ((pkg-descs (cdr (assq package package-alist))))
@@ -759,19 +758,7 @@ Newer versions are always activated, regardless of FORCE."
      ((and (memq package package-activated-list) (not force))
       t)
      ;; Otherwise, proceed with activation.
-     (t
-      (let* ((pkg-vec (car pkg-descs))
-             (fail (catch 'dep-failure
-                     ;; Activate its dependencies recursively.
-                     (dolist (req (package-desc-reqs pkg-vec))
-                       (unless (package-activate (car req))
-                         (throw 'dep-failure req))))))
-        (if fail
-            (warn "Unable to activate package `%s'.
-Required package `%s-%s' is unavailable"
-                  package (car fail) (package-version-join (cadr fail)))
-          ;; If all goes well, activate the package itself.
-          (package-activate-1 pkg-vec force)))))))
+     (t (package-activate-1 (car pkg-descs) nil 'deps)))))
 
 
 ;;; Installation -- Local operations
@@ -842,13 +829,21 @@ untar into a directory named DIR; otherwise, signal an 
error."
     (package--make-autoloads-and-stuff pkg-desc pkg-dir)
     ;; Update package-alist.
     (let ((new-desc (package-load-descriptor pkg-dir)))
-      ;; FIXME: Check that `new-desc' matches `desc'!
+      (unless (equal (package-desc-full-name new-desc)
+                     (package-desc-full-name pkg-desc))
+        (error "The retrieved package (`%s') doesn't match what the archive 
offered (`%s')"
+               (package-desc-full-name new-desc) (package-desc-full-name 
pkg-desc)))
+      ;; Activation has to be done before compilation, so that if we're
+      ;; upgrading and macros have changed we load the new definitions
+      ;; before compiling.
+      (package-activate-1 new-desc :reload :deps)
       ;; FIXME: Compilation should be done as a separate, optional, step.
       ;; E.g. for multi-package installs, we should first install all packages
       ;; and then compile them.
-      (package--compile new-desc))
-    ;; Try to activate it.
-    (package-activate name 'force)
+      (package--compile new-desc)
+      ;; After compilation, load again any files loaded by
+      ;; `activate-1', so that we use the byte-compiled definitions.
+      (package--load-files-for-activation new-desc :reload))
     pkg-dir))
 
 (defun package-generate-description-file (pkg-desc pkg-file)
@@ -931,11 +926,12 @@ 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."
+  "Byte-compile installed package PKG-DESC.
+This assumes that `pkg-desc' has already been activated with
+`package-activate-1'."
   (let ((warning-minimum-level :error)
         (save-silently inhibit-message)
         (load-path load-path))
-    (package--activate-autoloads-and-load-path pkg-desc)
     (byte-recompile-directory (package-desc-dir pkg-desc) 0 t)))
 
 ;;;; Inferring package from current buffer
@@ -1141,48 +1137,50 @@ Point is after the headers when BODY runs.
 FILE, if provided, is added to URL.
 URL can be a local file name, which must be absolute.
 ASYNC, if non-nil, runs the request asynchronously.
-ERROR-FORM is run only if an error occurs.  If NOERROR is
-non-nil, don't propagate errors caused by the connection or by
-BODY (does not apply to errors signaled by ERROR-FORM).
+ERROR-FORM is run only if a connection error occurs.  If NOERROR
+is non-nil, don't propagate connection errors (does not apply to
+errors signaled by ERROR-FORM or by BODY).
 
 \(fn URL &key ASYNC FILE ERROR-FORM NOERROR &rest BODY)"
   (declare (indent defun) (debug t))
   (while (keywordp (car body))
     (setq body (cdr (cdr body))))
-  (macroexp-let2* nil ((url-1 url))
-    `(cl-macrolet ((wrap-errors (&rest bodyforms)
-                                (let ((err (make-symbol "err")))
-                                  `(condition-case ,err
-                                       ,(macroexp-progn bodyforms)
-                                     ,(list 'error ',error-form
-                                            (list 'unless ',noerror
-                                                  `(signal (car ,err) (cdr 
,err))))))))
+  (macroexp-let2* nil ((url-1 url)
+                       (noerror-1 noerror))
+    `(cl-macrolet ((unless-error (body-2 &rest before-body)
+                                 (let ((err (make-symbol "err")))
+                                   `(with-temp-buffer
+                                      (when (condition-case ,err
+                                                (progn ,@before-body t)
+                                              ,(list 'error ',error-form
+                                                     (list 'unless ',noerror-1
+                                                           `(signal (car ,err) 
(cdr ,err)))))
+                                        ,@body-2)))))
        (if (string-match-p "\\`https?:" ,url-1)
            (let* ((url (concat ,url-1 ,file))
                   (callback (lambda (status)
                               (let ((b (current-buffer)))
                                 (require 'url-handlers)
-                                (unwind-protect (wrap-errors
-                                                 (when-let ((er (plist-get 
status :error)))
-                                                   (error "Error retrieving: 
%s %S" url er))
-                                                 (goto-char (point-min))
-                                                 (unless 
(search-forward-regexp "^\r?\n\r?" nil 'noerror)
-                                                   (error "Error retrieving: 
%s %S" url "incomprehensible buffer"))
-                                                 (with-temp-buffer
-                                                   (url-insert-buffer-contents 
b url)
-                                                   (kill-buffer b)
-                                                   (goto-char (point-min))
-                                                   ,@body)))))))
+                                (unless-error ,body
+                                              (when-let ((er (plist-get status 
:error)))
+                                                (error "Error retrieving: %s 
%S" url er))
+                                              (with-current-buffer b
+                                                (goto-char (point-min))
+                                                (unless (search-forward-regexp 
"^\r?\n\r?" nil 'noerror)
+                                                  (error "Error retrieving: %s 
%S" url "incomprehensible buffer")))
+                                              (url-insert-buffer-contents b 
url)
+                                              (kill-buffer b)
+                                              (goto-char (point-min)))))))
              (if ,async
-                 (wrap-errors (url-retrieve url callback nil 'silent))
-               (with-current-buffer (wrap-errors (url-retrieve-synchronously 
url 'silent))
-                 (funcall callback nil))))
-         (wrap-errors (with-temp-buffer
-                        (let ((url (expand-file-name ,file ,url-1)))
-                          (unless (file-name-absolute-p url)
-                            (error "Location %s is not a url nor an absolute 
file name" url))
-                          (insert-file-contents url))
-                        ,@body))))))
+                 (unless-error nil (url-retrieve url callback nil 'silent))
+               (unless-error ,body (url-insert-file-contents url))))
+         (unless-error ,body
+                       (let ((url (expand-file-name ,file ,url-1)))
+                         (unless (file-name-absolute-p url)
+                           (error "Location %s is not a url nor an absolute 
file name" url))
+                         (insert-file-contents url)))))))
+
+(define-error 'bad-signature "Failed to verify signature")
 
 (defun package--check-signature-content (content string &optional sig-file)
   "Check signature CONTENT against STRING.
@@ -1194,7 +1192,7 @@ errors."
     (condition-case error
         (epg-verify-string context content string)
       (error (package--display-verify-error context sig-file)
-        (signal (car error) (cdr error))))
+             (signal 'bad-signature error)))
     (let (good-signatures had-fatal-error)
       ;; The .sig file may contain multiple signatures.  Success if one
       ;; of the signatures is good.
@@ -1210,10 +1208,10 @@ errors."
             (setq had-fatal-error t))))
       (when (and (null good-signatures) had-fatal-error)
         (package--display-verify-error context sig-file)
-        (error "Failed to verify signature %s" sig-file))
+        (signal 'bad-signature (list sig-file)))
       good-signatures)))
 
-(defun package--check-signature (location file &optional string async callback)
+(defun package--check-signature (location file &optional string async callback 
unwind)
   "Check signature of the current buffer.
 Download the signature file from LOCATION by appending \".sig\"
 to FILE.
@@ -1222,18 +1220,35 @@ STRING is the string to verify, it defaults to 
`buffer-string'.
 If ASYNC is non-nil, the download of the signature file is
 done asynchronously.
 
-If the signature is verified and CALLBACK was provided, CALLBACK
-is `funcall'ed with the list of good signatures as argument (the
-list can be empty).  If the signatures file is not found,
-CALLBACK is called with no arguments."
+If the signature does not verify, signal an error.
+If the signature is verified and CALLBACK was provided, `funcall'
+CALLBACK with the list of good signatures as argument (the list
+can be empty).
+If no signatures file is found, and `package-check-signature' is
+`allow-unsigned', call CALLBACK with a nil argument.
+Otherwise, an error is signaled.
+
+UNWIND, if provided, is a function to be called after everything
+else, even if an error is signaled."
   (let ((sig-file (concat file ".sig"))
         (string (or string (buffer-string))))
     (package--with-response-buffer location :file sig-file
       :async async :noerror t
-      :error-form (when callback (funcall callback nil))
-      (let ((sig (package--check-signature-content (buffer-substring (point) 
(point-max)) string sig-file)))
-        (when callback (funcall callback sig))
-        sig))))
+      ;; Connection error is assumed to mean "no sig-file".
+      :error-form (let ((allow-unsigned (eq package-check-signature 
'allow-unsigned)))
+                    (when (and callback allow-unsigned)
+                      (funcall callback nil))
+                    (when unwind (funcall unwind))
+                    (unless allow-unsigned
+                      (error "Unsigned file `%s' at %s" file location)))
+      ;; OTOH, an error here means "bad signature", which we never
+      ;; suppress.  (Bug#22089)
+      (unwind-protect
+          (let ((sig (package--check-signature-content (buffer-substring 
(point) (point-max))
+                                                       string sig-file)))
+            (when callback (funcall callback sig))
+            sig)
+        (when unwind (funcall unwind))))))
 
 ;;; Packages on Archives
 ;; The following variables store information about packages available
@@ -1496,19 +1511,12 @@ similar to an entry in `package-alist'.  Save the 
cached copy to
            location file content async
            ;; This function will be called after signature checking.
            (lambda (&optional good-sigs)
-             (unless (or good-sigs (eq package-check-signature 
'allow-unsigned))
-               ;; Even if the sig fails, this download is done, so
-               ;; remove it from the in-progress list.
-               (package--update-downloads-in-progress archive)
-               (error "Unsigned archive `%s'" name))
-             ;; Either everything worked or we don't mind not signing.
-             ;; Write out the archives file.
              (write-region content nil local-file nil 'silent)
              ;; Write out good signatures into archive-contents.signed file.
              (when good-sigs
                (write-region (mapconcat #'epg-signature-to-string good-sigs 
"\n")
-                             nil (concat local-file ".signed") nil 'silent))
-             (package--update-downloads-in-progress archive))))))))
+                             nil (concat local-file ".signed") nil 'silent)))
+           (lambda () (package--update-downloads-in-progress archive))))))))
 
 (defun package--download-and-read-archives (&optional async)
   "Download descriptions of all `package-archives' and read them.
@@ -1790,11 +1798,6 @@ if all the in-between dependencies are also in 
PACKAGE-LIST."
            location file content nil
            ;; This function will be called after signature checking.
            (lambda (&optional good-sigs)
-             (unless (or good-sigs (eq package-check-signature 
'allow-unsigned))
-               ;; Even if the sig fails, this download is done, so
-               ;; remove it from the in-progress list.
-               (error "Unsigned package: `%s'"
-                 (package-desc-name pkg-desc)))
              ;; Signature checked, unpack now.
              (with-temp-buffer (insert content)
                                (let ((save-silently t))
diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el
index 738bddd..c9c002b 100644
--- a/lisp/emacs-lisp/smie.el
+++ b/lisp/emacs-lisp/smie.el
@@ -717,9 +717,10 @@ Possible return values:
                      (goto-char pos)
                      (throw 'return
                             (list t epos
-                                  (buffer-substring-no-properties
-                                   epos
-                                   (+ epos (if (< (point) epos) -1 1))))))))
+                                  (unless (= (point) epos)
+                                    (buffer-substring-no-properties
+                                     epos
+                                     (+ epos (if (< (point) epos) -1 1)))))))))
                 (if (eq pos (point))
                     ;; We did not move, so let's abort the loop.
                     (throw 'return (list t (point))))))
@@ -809,7 +810,12 @@ Possible return values:
   nil: we skipped over an identifier, matched parentheses, ..."
   (smie-next-sexp
    (indirect-function smie-backward-token-function)
-   (indirect-function #'backward-sexp)
+   (lambda (n)
+     (if (bobp)
+         ;; Arguably backward-sexp should signal this error for us.
+         (signal 'scan-error
+                 (list "Beginning of buffer" (point) (point)))
+       (backward-sexp n)))
    (indirect-function #'smie-op-left)
    (indirect-function #'smie-op-right)
    halfsexp))
diff --git a/lisp/files.el b/lisp/files.el
index fdc27ea..e7f7151 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -740,20 +740,27 @@ The path separator is colon in GNU and GNU-like systems."
        (error "No such directory found via CDPATH environment variable"))))
 
 (defsubst directory-name-p (name)
-  "Return non-nil if NAME ends with a slash character."
-  (and (> (length name) 0)
-       (char-equal (aref name (1- (length name))) ?/)))
-
-(defun directory-files-recursively (dir match &optional include-directories)
-  "Return all files under DIR that have file names matching MATCH (a regexp).
+  "Return non-nil if NAME ends with a directory separator character."
+  (let ((len (length name))
+        (lastc ?.))
+    (if (> len 0)
+        (setq lastc (aref name (1- len))))
+    (or (= lastc ?/)
+        (and (memq system-type '(windows-nt ms-dos))
+             (= lastc ?\\)))))
+
+(defun directory-files-recursively (dir regexp &optional include-directories)
+  "Return list of all files under DIR that have file names matching REGEXP.
 This function works recursively.  Files are returned in \"depth first\"
-and alphabetical order.
-If INCLUDE-DIRECTORIES, also include directories that have matching names."
+order, and files from each directory are sorted in alphabetical order.
+Each file name appears in the returned list in its absolute form.
+Optional argument INCLUDE-DIRECTORIES non-nil means also include in the
+output directories whose names match REGEXP."
   (let ((result nil)
        (files nil)
        ;; When DIR is "/", remote file names like "/method:" could
        ;; also be offered.  We shall suppress them.
-       (tramp-mode (and tramp-mode (file-remote-p dir))))
+       (tramp-mode (and tramp-mode (file-remote-p (expand-file-name dir)))))
     (dolist (file (sort (file-name-all-completions "" dir)
                        'string<))
       (unless (member file '("./" "../"))
@@ -764,19 +771,23 @@ If INCLUDE-DIRECTORIES, also include directories that 
have matching names."
              (unless (file-symlink-p full-file)
                (setq result
                      (nconc result (directory-files-recursively
-                                    full-file match include-directories))))
+                                    full-file regexp include-directories))))
              (when (and include-directories
-                        (string-match match leaf))
+                        (string-match regexp leaf))
                (setq result (nconc result (list full-file)))))
-         (when (string-match match file)
+         (when (string-match regexp file)
            (push (expand-file-name file dir) files)))))
     (nconc result (nreverse files))))
 
+(defvar module-file-suffix)
+
 (defun load-file (file)
   "Load the Lisp file named FILE."
-  ;; This is a case where .elc makes a lot of sense.
+  ;; This is a case where .elc and .so/.dll make a lot of sense.
   (interactive (list (let ((completion-ignored-extensions
-                           (remove ".elc" completion-ignored-extensions)))
+                            (remove module-file-suffix
+                                    (remove ".elc"
+                                            completion-ignored-extensions))))
                       (read-file-name "Load file: " nil nil 'lambda))))
   (load (expand-file-name file) nil nil t))
 
@@ -1012,6 +1023,7 @@ Return nil if COMMAND is not found anywhere in 
`exec-path'."
 
 (defun load-library (library)
   "Load the Emacs Lisp library named LIBRARY.
+LIBRARY should be a string.
 This is an interface to the function `load'.  LIBRARY is searched
 for in `load-path', both with and without `load-suffixes' (as
 well as `load-file-rep-suffixes').
@@ -1019,10 +1031,11 @@ well as `load-file-rep-suffixes').
 See Info node `(emacs)Lisp Libraries' for more details.
 See `load-file' for a different interface to `load'."
   (interactive
-   (list (completing-read "Load library: "
-                         (apply-partially 'locate-file-completion-table
-                                           load-path
-                                           (get-load-suffixes)))))
+   (let (completion-ignored-extensions)
+     (list (completing-read "Load library: "
+                            (apply-partially 'locate-file-completion-table
+                                             load-path
+                                             (get-load-suffixes))))))
   (load library))
 
 (defun file-remote-p (file &optional identification connected)
@@ -3407,7 +3420,7 @@ local variables, but directory-local variables may still 
be applied."
                               (unless hack-local-variables--warned-lexical
                                 (setq hack-local-variables--warned-lexical t)
                                 (display-warning
-                                  :warning
+                                  'files
                                   (format-message
                                    "%s: `lexical-binding' at end of file 
unreliable"
                                    (file-name-nondirectory
@@ -3871,7 +3884,7 @@ This does nothing if either `enable-local-variables' or
              (if (eq (car elt) 'coding)
                   (unless hack-dir-local-variables--warned-coding
                     (setq hack-dir-local-variables--warned-coding t)
-                    (display-warning :warning
+                    (display-warning 'files
                                      "Coding cannot be specified by 
dir-locals"))
                (unless (memq (car elt) '(eval mode))
                  (setq dir-local-variables-alist
@@ -6242,7 +6255,7 @@ invokes the program specified by 
`directory-free-space-program'
 and `directory-free-space-args'.  If the system call or program
 is unsuccessful, or if DIR is a remote directory, this function
 returns nil."
-  (unless (file-remote-p dir)
+  (unless (file-remote-p (expand-file-name dir))
     ;; Try to find the number of free blocks.  Non-Posix systems don't
     ;; always have df, but might have an equivalent system call.
     (if (fboundp 'file-system-info)
diff --git a/lisp/follow.el b/lisp/follow.el
index 57ba2f6..37de923 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -865,10 +865,10 @@ Note that this handles the case when the cache has been 
set to nil."
     (let ((orig-win (selected-window))
          win-start-end)
       (dolist (w windows)
-       (select-window w)
+       (select-window w 'norecord)
        (push (cons w (cons (window-start) (follow-calc-win-end)))
              win-start-end))
-      (select-window orig-win)
+      (select-window orig-win 'norecord)
       (setq follow-windows-start-end-cache (nreverse win-start-end)))))
 
 (defsubst follow-pos-visible (pos win win-start-end)
@@ -1416,33 +1416,30 @@ non-first windows in Follow mode."
   "Redraw all windows in FRAME, when in Follow mode."
   ;; Below, we call `post-command-hook'.  Avoid an infloop.
   (unless follow-inside-post-command-hook
-    (let ((buffers '())
-         (orig-window (selected-window))
-         (orig-buffer (current-buffer))
-         (orig-frame (selected-frame))
-         windows
-         buf)
-      (select-frame frame)
-      (unwind-protect
-         (walk-windows
-          (lambda (win)
-            (setq buf (window-buffer win))
-            (unless (memq buf buffers)
-              (set-buffer buf)
-              (when follow-mode
-                (setq windows (follow-all-followers win))
-                (if (not (memq orig-window windows))
-                    (follow-redisplay windows win)
-                  ;; Make sure we're redrawing around the selected
-                  ;; window.
-                  (select-window orig-window)
-                  (follow-post-command-hook)
-                  (setq orig-window (selected-window)))
-                (setq buffers (cons buf buffers)))))
-          'no-minibuf)
-       (select-frame orig-frame)
-       (set-buffer orig-buffer)
-       (select-window orig-window)))))
+    (save-current-buffer
+      (let ((orig-frame (selected-frame)))
+        (select-frame frame)
+        (let ((picked-window (selected-window))   ; Note: May change below.
+              (seen-buffers '()))
+          (unwind-protect
+              (walk-windows
+               (lambda (win)
+                 (let ((buf (window-buffer win)))
+                   (unless (memq buf seen-buffers)
+                     (set-buffer buf)
+                     (when follow-mode
+                       (let ((windows (follow-all-followers win)))
+                         (if (not (memq picked-window windows))
+                             (follow-redisplay windows win)
+                           ;; Make sure we're redrawing around the selected
+                           ;; window.
+                           (select-window picked-window 'norecord)
+                           (follow-post-command-hook)
+                           (setq picked-window (selected-window))))
+                       (push buf seen-buffers)))))
+               'no-minibuf)
+            (select-window picked-window 'norecord)))
+        (select-frame orig-frame)))))
 
 (add-hook 'window-scroll-functions 'follow-avoid-tail-recenter t)
 
diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
index 33eae1c..a2947c0 100644
--- a/lisp/gnus/nnml.el
+++ b/lisp/gnus/nnml.el
@@ -268,23 +268,6 @@ non-nil.")
                           (max (1+ (- (cdr active) (car active))) 0)
                           (car active) (cdr active) group)))))))
 
-(deffoo nnml-retrieve-groups (groups &optional server)
-  (when nnml-get-new-mail
-    (if (nnmail-get-new-mail-per-group)
-       (dolist (group groups)
-         (nnml-request-scan group server))
-      (nnml-request-scan nil server)))
-  (with-current-buffer nntp-server-buffer
-    (erase-buffer)
-    (dolist (group groups)
-      (let* ((entry (assoc group nnml-group-alist))
-            (active (nth 1 entry)))
-       (if (consp active)
-           (insert (format "211 %d %d %d %s\n"
-                           (max (1+ (- (cdr active) (car active))) 0)
-                           (car active) (cdr active) group))))))
-  'group)
-
 (deffoo nnml-request-scan (&optional group server)
   (setq nnml-article-file-alist nil)
   (nnml-possibly-change-directory group server)
diff --git a/lisp/gnus/qp.el b/lisp/gnus/qp.el
index 6c48f0f..d7ed30d 100644
--- a/lisp/gnus/qp.el
+++ b/lisp/gnus/qp.el
@@ -143,7 +143,8 @@ encode lines starting with \"From\"."
             (and (boundp 'mm-use-ultra-safe-encoding)
                  mm-use-ultra-safe-encoding)))
        (when (or fold mm-use-ultra-safe-encoding)
-         (let ((tab-width 1))          ; HTAB is one character.
+         (let ((tab-width 1)           ; HTAB is one character.
+               (case-fold-search nil))
            (goto-char (point-min))
            (while (not (eobp))
              ;; In ultra-safe mode, encode "From " at the beginning
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 41911b8..e750f51 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -763,8 +763,12 @@ it is displayed along with the global value."
                (let ((from (point))
                      (line-beg (line-beginning-position))
                      (print-rep
-                      (let ((print-quoted t))
-                        (prin1-to-string val))))
+                      (let ((rep
+                             (let ((print-quoted t))
+                               (prin1-to-string val))))
+                        (if (and (symbolp val) (not (booleanp val)))
+                            (format-message "`%s'" rep)
+                          rep))))
                  (if (< (+ (length print-rep) (point) (- line-beg)) 68)
                      (insert print-rep)
                    (terpri)
diff --git a/lisp/ido.el b/lisp/ido.el
index a254b4f..1415b27 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -3559,7 +3559,9 @@ it is put to the start of the list."
     (let* ((len (1- (length dir)))
           (non-essential t)
           (compl
-           (or (file-name-all-completions "" dir)
+           (or ;; We do not want to be disturbed by "File does not
+                ;; exist" errors.
+                (ignore-errors (file-name-all-completions "" dir))
                ;; work around bug in ange-ftp.
                ;; /ftp:address@hidden: => nil
                ;; /ftp:address@hidden:./ => ok
diff --git a/lisp/ielm.el b/lisp/ielm.el
index b035432..2c5613a 100644
--- a/lisp/ielm.el
+++ b/lisp/ielm.el
@@ -1,5 +1,4 @@
-;;; -*- lexical-binding: t -*-
-;;; ielm.el --- interaction mode for Emacs Lisp
+;;; ielm.el --- interaction mode for Emacs Lisp  -*- lexical-binding: t -*-
 
 ;; Copyright (C) 1994, 2001-2015 Free Software Foundation, Inc.
 
diff --git a/lisp/international/mule-util.el b/lisp/international/mule-util.el
index b575c2b..c70a3ee 100644
--- a/lisp/international/mule-util.el
+++ b/lisp/international/mule-util.el
@@ -55,7 +55,8 @@
   string)
 
 (defvar truncate-string-ellipsis "..."  ;"…"
-  "String to use to indicate truncation.")
+  "String to use to indicate truncation.
+Serves as default value of ELLIPSIS argument to `truncate-string-to-width'.")
 
 ;;;###autoload
 (defun truncate-string-to-width (str end-column
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 080eb57..8c98d36 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -96,8 +96,12 @@ in Isearch mode is always downcased."
 
 (defcustom search-nonincremental-instead t
   "If non-nil, do a nonincremental search instead of exiting immediately.
-Actually, `isearch-edit-string' is called to let you enter the search
-string, and RET terminates editing and does a nonincremental search."
+This affects the behavior of `isearch-exit' and any key bound to that
+command: if this variable is nil, `isearch-exit' always exits the search;
+if the value is non-nil, and the search string is empty, `isearch-exit'
+starts a nonincremental search instead.  (Actually, `isearch-edit-string'
+is called to let you enter the search string, and RET terminates editing
+and does a nonincremental search.)"
   :type 'boolean)
 
 (defcustom search-whitespace-regexp (purecopy "\\s-+")
@@ -142,9 +146,11 @@ whenever point is in one of them."
 (defcustom isearch-hide-immediately t
   "If non-nil, re-hide an invisible match right away.
 This variable makes a difference when `search-invisible' is set to `open'.
+If non-nil, invisible matches are re-hidden as soon as the match moves
+off the invisible text surrounding the match.
 If nil then do not re-hide opened invisible text when the match moves.
 Whatever the value, all opened invisible text is hidden again after exiting
-the search."
+the search, with the exception of the last successful match, if any."
   :type 'boolean)
 
 (defcustom isearch-resume-in-command-history nil
@@ -511,8 +517,6 @@ This is like `describe-bindings', but displays only Isearch 
keys."
     (define-key map "\M-r" 'isearch-toggle-regexp)
     (define-key map "\M-e" 'isearch-edit-string)
 
-    (put 'isearch-toggle-case-fold :advertised-binding "\M-sc")
-    (put 'isearch-toggle-regexp    :advertised-binding "\M-sr")
     (put 'isearch-edit-string      :advertised-binding "\M-se")
 
     (define-key map "\M-se" 'isearch-edit-string)
@@ -770,7 +774,8 @@ as a regexp.  See the command `isearch-forward' for more 
information.
 In incremental searches, a space or spaces normally matches any
 whitespace defined by the variable `search-whitespace-regexp'.
 To search for a literal space and nothing else, enter C-q SPC.
-To toggle whitespace matching, use `isearch-toggle-lax-whitespace'."
+To toggle whitespace matching, use `isearch-toggle-lax-whitespace'.
+This command does not support character folding."
   (interactive "P\np")
   (isearch-mode t (null not-regexp) nil (not no-recursive-edit)))
 
@@ -779,7 +784,9 @@ To toggle whitespace matching, use 
`isearch-toggle-lax-whitespace'."
 With a prefix argument, do a regular string search instead.
 Like ordinary incremental search except that your input is treated
 as a sequence of words without regard to how the words are separated.
-See the command `isearch-forward' for more information."
+See the command `isearch-forward' for more information.
+This command does not support character folding, and lax space matching
+has no effect on it."
   (interactive "P\np")
   (isearch-mode t nil nil (not no-recursive-edit) (null not-word)))
 
@@ -788,7 +795,9 @@ See the command `isearch-forward' for more information."
 The prefix argument is currently unused.
 Like ordinary incremental search except that your input is treated
 as a symbol surrounded by symbol boundary constructs \\_< and \\_>.
-See the command `isearch-forward' for more information."
+See the command `isearch-forward' for more information.
+This command does not support character folding, and lax space matching
+has no effect on it."
   (interactive "P\np")
   (isearch-mode t nil nil (not no-recursive-edit) 'isearch-symbol-regexp))
 
@@ -803,7 +812,7 @@ See the command `isearch-forward' for more information."
   "Do incremental search backward for regular expression.
 With a prefix argument, do a regular string search instead.
 Like ordinary incremental search except that your input is treated
-as a regexp.  See the command `isearch-forward' for more information."
+as a regexp.  See the command `isearch-forward-regexp' for more information."
   (interactive "P\np")
   (isearch-mode nil (null not-regexp) nil (not no-recursive-edit)))
 
@@ -1207,6 +1216,14 @@ If MSG is non-nil, use variable `isearch-message', 
otherwise `isearch-string'."
          (length succ-msg)
        0))))
 
+(defvar isearch-new-regexp-function nil
+  "Holds the next `isearch-regexp-function' inside `with-isearch-suspended'.
+If this is set inside code wrapped by the macro
+`with-isearch-suspended', then the value set will be used as the
+`isearch-regexp-function' once isearch resumes.")
+(define-obsolete-variable-alias 'isearch-new-word
+  'isearch-new-regexp-function "25.1")
+
 (defmacro with-isearch-suspended (&rest body)
   "Exit Isearch mode, run BODY, and reinvoke the pending search.
 You can update the global isearch variables by setting new values to
@@ -1490,14 +1507,15 @@ Use `isearch-exit' to quit without signaling."
 ;;; Toggles for `isearch-regexp-function' and `search-default-regexp-mode'.
 (defmacro isearch-define-mode-toggle (mode key function &optional docstring 
&rest body)
   "Define a command called `isearch-toggle-MODE' and bind it to `M-s KEY'.
-The first line of the docstring is auto-generated, the remainder
-may be provided in DOCSTRING.
+The first line of the command's docstring is auto-generated, the
+remainder may be provided in DOCSTRING.
 If FUNCTION is a symbol, this command first toggles the value of
 `isearch-regexp-function' between nil and FUNCTION.  Also set the
 `isearch-message-prefix' property of FUNCTION.
 The command then executes BODY and updates the isearch prompt."
   (declare (indent defun))
-  (let ((command-name (intern (format "isearch-toggle-%s" mode))))
+  (let ((command-name (intern (format "isearch-toggle-%s" mode)))
+        (key (concat "\M-s" key)))
     `(progn
        (defun ,command-name ()
          ,(format "Toggle %s searching on or off.%s" mode
@@ -1511,17 +1529,21 @@ The command then executes BODY and updates the isearch 
prompt."
          ,@body
          (setq isearch-success t isearch-adjusted t)
          (isearch-update))
-       (define-key isearch-mode-map ,(concat "\M-s" key) #',command-name)
+       (define-key isearch-mode-map ,key #',command-name)
        ,@(when (symbolp function)
            `((put ',function 'isearch-message-prefix ,(format "%s " mode))
+             (put ',function :advertised-binding ,key)
              (cl-callf (lambda (types) (cons 'choice
                                         (cons '(const :tag ,(capitalize 
(format "%s search" mode)) ,function)
                                               (cdr types))))
                  (get 'search-default-regexp-mode 'custom-type)))))))
 
-(isearch-define-mode-toggle word "w" word-search-regexp)
-(isearch-define-mode-toggle symbol "_" isearch-symbol-regexp)
-(isearch-define-mode-toggle character-fold "'" character-fold-to-regexp)
+(isearch-define-mode-toggle word "w" word-search-regexp "\
+Turning on word search turns off regexp mode.")
+(isearch-define-mode-toggle symbol "_" isearch-symbol-regexp "\
+Turning on symbol search turns off regexp mode.")
+(isearch-define-mode-toggle character-fold "'" character-fold-to-regexp "\
+Turning on character-folding turns off regexp mode.")
 (put 'character-fold-to-regexp 'isearch-message-prefix "char-fold ")
 
 (isearch-define-mode-toggle regexp "r" nil nil
@@ -1604,7 +1626,9 @@ Optional fourth argument is repeat count--search for 
successive occurrences.
 
 Relies on the function `word-search-regexp' to convert a sequence
 of words in STRING to a regexp used to search words without regard
-to punctuation."
+to punctuation.
+This command does not support character folding, and lax space matching
+has no effect on it."
   (interactive "sWord search backward: ")
   (re-search-backward (word-search-regexp string nil) bound noerror count))
 
@@ -1619,7 +1643,9 @@ Optional fourth argument is repeat count--search for 
successive occurrences.
 
 Relies on the function `word-search-regexp' to convert a sequence
 of words in STRING to a regexp used to search words without regard
-to punctuation."
+to punctuation.
+This command does not support character folding, and lax space matching
+has no effect on it."
   (interactive "sWord search: ")
   (re-search-forward (word-search-regexp string nil) bound noerror count))
 
@@ -1638,7 +1664,9 @@ Optional fourth argument is repeat count--search for 
successive occurrences.
 
 Relies on the function `word-search-regexp' to convert a sequence
 of words in STRING to a regexp used to search words without regard
-to punctuation."
+to punctuation.
+This command does not support character folding, and lax space matching
+has no effect on it."
   (interactive "sWord search backward: ")
   (re-search-backward (word-search-regexp string t) bound noerror count))
 
@@ -1657,7 +1685,9 @@ Optional fourth argument is repeat count--search for 
successive occurrences.
 
 Relies on the function `word-search-regexp' to convert a sequence
 of words in STRING to a regexp used to search words without regard
-to punctuation."
+to punctuation.
+This command does not support character folding, and lax space matching
+has no effect on it."
   (interactive "sWord search: ")
   (re-search-forward (word-search-regexp string t) bound noerror count))
 
@@ -2629,16 +2659,23 @@ Can be changed via `isearch-search-fun-function' for 
special needs."
                                        (isearch-regexp 
isearch-regexp-lax-whitespace)
                                        (t isearch-lax-whitespace))
                                   search-whitespace-regexp)))
-      (funcall
-       (if isearch-forward #'re-search-forward #'re-search-backward)
-       (cond (isearch-regexp-function
-              (let ((lax (isearch--lax-regexp-function-p)))
-                (if (functionp isearch-regexp-function)
-                    (funcall isearch-regexp-function string lax)
-                  (word-search-regexp string lax))))
-             (isearch-regexp string)
-             (t (regexp-quote string)))
-       bound noerror count))))
+      (condition-case er
+          (funcall
+           (if isearch-forward #'re-search-forward #'re-search-backward)
+           (cond (isearch-regexp-function
+                  (let ((lax (isearch--lax-regexp-function-p)))
+                    (if (functionp isearch-regexp-function)
+                        (funcall isearch-regexp-function string lax)
+                      (word-search-regexp string lax))))
+                 (isearch-regexp string)
+                 (t (regexp-quote string)))
+           bound noerror count)
+        (search-failed
+         (signal (car er)
+                 (let ((prefix (get isearch-regexp-function 
'isearch-message-prefix)))
+                   (if (and isearch-regexp-function (stringp prefix))
+                       (list (format "%s   [using %ssearch]" string prefix))
+                     (cdr er)))))))))
 
 (defun isearch-search-string (string bound noerror)
   "Search for the first occurrence of STRING or its translation.
diff --git a/lisp/json.el b/lisp/json.el
index 0214a3e..85827b5 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -149,7 +149,7 @@ respectively.")
   (null list))
 
 (defun json-plist-p (list)
-  "Non-null if and only if LIST is a plist."
+  "Non-null if and only if LIST is a plist with keyword keys."
   (while (consp list)
     (setq list (if (and (keywordp (car list))
                         (consp (cdr list)))
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index d8f627a..3d1f6d2 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -3,7 +3,7 @@
 ;;; Code:
 
 
-;;;### (autoloads nil "5x5" "play/5x5.el" (22026 25907 631502 692000))
+;;;### (autoloads nil "5x5" "play/5x5.el" (22086 11930 122062 731000))
 ;;; 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" (22011 58553
-;;;;;;  865858 469000))
+;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (22086 11930
+;;;;;;  138062 731000))
 ;;; 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" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (22086 11930
+;;;;;;  138062 731000))
 ;;; 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" (22011 58553
-;;;;;;  869858 469000))
+;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (22086 11930
+;;;;;;  138062 731000))
 ;;; 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" (22011 58554 85858
-;;;;;;  469000))
+;;;### (autoloads nil "add-log" "vc/add-log.el" (22086 11930 366062
+;;;;;;  731000))
 ;;; 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" (22011 58553
-;;;;;;  345858 469000))
+;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (22092 27717
+;;;;;;  604268 464000))
 ;;; 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" (21998 46516 830024 649000))
+;;;### (autoloads nil "align" "align.el" (22086 11929 490062 731000))
 ;;; 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" (22015 55603 653705 321000))
+;;;### (autoloads nil "allout" "allout.el" (22086 11929 494062 731000))
 ;;; 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" (21998
-;;;;;;  46516 830024 649000))
+;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (22086
+;;;;;;  11929 490062 731000))
 ;;; 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" (22011 58553 761858
-;;;;;;  469000))
+;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (22092 27717 960268
+;;;;;;  464000))
 ;;; 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" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "animate" "play/animate.el" (22086 11930 122062
+;;;;;;  731000))
 ;;; 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" (21952 37178 110214
-;;;;;;  961000))
+;;;### (autoloads nil "ansi-color" "ansi-color.el" (22086 11929 494062
+;;;;;;  731000))
 ;;; 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" (22011
-;;;;;;  58553 873858 469000))
+;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (22086
+;;;;;;  11930 138062 731000))
 ;;; 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" (21998 46516 878024
-;;;;;;  649000))
+;;;### (autoloads nil "appt" "calendar/appt.el" (22086 11929 526062
+;;;;;;  731000))
 ;;; Generated autoloads from calendar/appt.el
 
 (autoload 'appt-add "appt" "\
@@ -1037,8 +1037,8 @@ ARG is positive, otherwise off.
 
 ;;;***
 
-;;;### (autoloads nil "apropos" "apropos.el" (21998 46516 834024
-;;;;;;  649000))
+;;;### (autoloads nil "apropos" "apropos.el" (22099 26170 362017
+;;;;;;  16000))
 ;;; 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" (22027 46774 644310
-;;;;;;  591000))
+;;;### (autoloads nil "arc-mode" "arc-mode.el" (22086 11929 494062
+;;;;;;  731000))
 ;;; Generated autoloads from arc-mode.el
 
 (autoload 'archive-mode "arc-mode" "\
@@ -1174,7 +1174,7 @@ archive.
 
 ;;;***
 
-;;;### (autoloads nil "array" "array.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "array" "array.el" (22086 11929 494062 731000))
 ;;; 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" (21906 58826
-;;;;;;  78640 200000))
+;;;### (autoloads nil "artist" "textmodes/artist.el" (22086 11930
+;;;;;;  310062 731000))
 ;;; 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" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (22086 11930
+;;;;;;  142062 731000))
 ;;; 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" (22067
-;;;;;;  17342 158157 143000))
+;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (22086
+;;;;;;  11929 774062 731000))
 ;;; Generated autoloads from gnus/auth-source.el
 
 (defvar auth-source-cache-expiry 7200 "\
@@ -1493,8 +1493,8 @@ let-binding.")
 
 ;;;***
 
-;;;### (autoloads nil "autoarg" "autoarg.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "autoarg" "autoarg.el" (22086 11929 494062
+;;;;;;  731000))
 ;;; 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" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (22086 11930
+;;;;;;  142062 731000))
 ;;; 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" (21980 16567 365544
-;;;;;;  893000))
+;;;### (autoloads nil "autoinsert" "autoinsert.el" (22086 11929 494062
+;;;;;;  731000))
 ;;; 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" (21935
-;;;;;;  28080 450075 956000))
+;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (22086
+;;;;;;  11929 634062 731000))
 ;;; 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" (22065 61995 826407
-;;;;;;  852000))
+;;;### (autoloads nil "autorevert" "autorevert.el" (22089 51528 204929
+;;;;;;  316000))
 ;;; Generated autoloads from autorevert.el
 
 (autoload 'auto-revert-mode "autorevert" "\
@@ -1745,7 +1745,7 @@ specifies in the mode line.
 
 ;;;***
 
-;;;### (autoloads nil "avoid" "avoid.el" (21955 13362 292569 401000))
+;;;### (autoloads nil "avoid" "avoid.el" (22086 11929 498062 731000))
 ;;; 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" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (22086 11930
+;;;;;;  142062 731000))
 ;;; 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" (22026 25907 487502
-;;;;;;  692000))
+;;;### (autoloads nil "battery" "battery.el" (22086 11929 498062
+;;;;;;  731000))
 ;;; 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" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (22086
+;;;;;;  11929 638062 731000))
 ;;; 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" (22011 58554
-;;;;;;  41858 469000))
+;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (22092 27718
+;;;;;;  508268 464000))
 ;;; 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"
-;;;;;;  (21670 32331 885635 586000))
+;;;;;;  (22086 11930 310062 731000))
 ;;; 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" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "binhex" "mail/binhex.el" (22086 11929 930062
+;;;;;;  731000))
 ;;; 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" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "blackbox" "play/blackbox.el" (22086 11930
+;;;;;;  122062 731000))
 ;;; Generated autoloads from play/blackbox.el
 
 (autoload 'blackbox "blackbox" "\
@@ -2123,14 +2123,15 @@ a reflection.
 
 ;;;***
 
-;;;### (autoloads nil "bookmark" "bookmark.el" (22011 58553 109858
-;;;;;;  469000))
+;;;### (autoloads nil "bookmark" "bookmark.el" (22086 11929 498062
+;;;;;;  731000))
 ;;; Generated autoloads from bookmark.el
  (define-key ctl-x-r-map "b" 'bookmark-jump)
  (define-key ctl-x-r-map "m" 'bookmark-set)
+ (define-key ctl-x-r-map "M" 'bookmark-set-no-overwrite)
  (define-key ctl-x-r-map "l" 'bookmark-bmenu-list)
 
-(defvar bookmark-map (let ((map (make-sparse-keymap))) (define-key map "x" 
'bookmark-set) (define-key map "m" 'bookmark-set) (define-key map "j" 
'bookmark-jump) (define-key map "g" 'bookmark-jump) (define-key map "o" 
'bookmark-jump-other-window) (define-key map "i" 'bookmark-insert) (define-key 
map "e" 'edit-bookmarks) (define-key map "f" 'bookmark-insert-location) 
(define-key map "r" 'bookmark-rename) (define-key map "d" 'bookmark-delete) 
(define-key map "l" 'bookmark-load) (define-key  [...]
+(defvar bookmark-map (let ((map (make-sparse-keymap))) (define-key map "x" 
'bookmark-set) (define-key map "m" 'bookmark-set) (define-key map "M" 
'bookmark-set-no-overwrite) (define-key map "j" 'bookmark-jump) (define-key map 
"g" 'bookmark-jump) (define-key map "o" 'bookmark-jump-other-window) 
(define-key map "i" 'bookmark-insert) (define-key map "e" 'edit-bookmarks) 
(define-key map "f" 'bookmark-insert-location) (define-key map "r" 
'bookmark-rename) (define-key map "d" 'bookmark-delete)  [...]
 Keymap containing bindings to bookmark functions.
 It is not bound to any key by default: to bind it
 so that you have a bookmark prefix, just use `global-set-key' and bind a
@@ -2140,7 +2141,7 @@ functions have a binding in this keymap.")
 
 (autoload 'bookmark-set "bookmark" "\
 Set a bookmark named NAME at the current location.
-If name is nil, then prompt the user.
+If NAME is nil, then prompt the user.
 
 With a prefix arg (non-nil NO-OVERWRITE), do not overwrite any
 existing bookmark that has the same name as NAME, but instead push the
@@ -2165,6 +2166,36 @@ the list of bookmarks.)
 
 \(fn &optional NAME NO-OVERWRITE)" t nil)
 
+(autoload 'bookmark-set-no-overwrite "bookmark" "\
+Set a bookmark named NAME at the current location.
+If NAME is nil, then prompt the user.
+
+If a bookmark named NAME already exists and prefix argument
+PUSH-BOOKMARK is non-nil, then push the new bookmark onto the
+bookmark alist.  Pushing it means that among bookmarks named
+NAME, this one becomes the one in effect, but the others are
+still there, in order, and become effective again if the user
+ever deletes the most recent one.
+
+Otherwise, if a bookmark named NAME already exists but PUSH-BOOKMARK
+is nil, raise an error.
+
+To yank words from the text of the buffer and use them as part of the
+bookmark name, type C-w while setting a bookmark.  Successive C-w's
+yank successive words.
+
+Typing C-u inserts (at the bookmark name prompt) the name of the last
+bookmark used in the document where the new bookmark is being set;
+this helps you use a single bookmark name to track progress through a
+large document.  If there is no prior bookmark for this document, then
+C-u inserts an appropriate name based on the buffer or file.
+
+Use \\[bookmark-delete] to remove bookmarks (you give it a name and
+it removes only the first instance of a bookmark with that name from
+the list of bookmarks.)
+
+\(fn &optional NAME PUSH-BOOKMARK)" t nil)
+
 (autoload 'bookmark-jump "bookmark" "\
 Jump to bookmark BOOKMARK (a point in some file).
 You may have a problem using this function if the value of variable
@@ -2317,8 +2348,8 @@ Incremental search of bookmarks, hiding the non-matches 
as we go.
 
 ;;;***
 
-;;;### (autoloads nil "browse-url" "net/browse-url.el" (21993 28596
-;;;;;;  198597 473000))
+;;;### (autoloads nil "browse-url" "net/browse-url.el" (22086 11929
+;;;;;;  990062 731000))
 ;;; Generated autoloads from net/browse-url.el
 
 (defvar browse-url-browser-function 'browse-url-default-browser "\
@@ -2658,7 +2689,7 @@ from `browse-url-elinks-wrapper'.
 
 ;;;***
 
-;;;### (autoloads nil "bs" "bs.el" (21998 46516 834024 649000))
+;;;### (autoloads nil "bs" "bs.el" (22086 11929 498062 731000))
 ;;; Generated autoloads from bs.el
 (push (purecopy '(bs 1 17)) package--builtin-versions)
 
@@ -2699,8 +2730,8 @@ name of buffer configuration.
 
 ;;;***
 
-;;;### (autoloads nil "bubbles" "play/bubbles.el" (22026 25907 631502
-;;;;;;  692000))
+;;;### (autoloads nil "bubbles" "play/bubbles.el" (22086 11930 122062
+;;;;;;  731000))
 ;;; Generated autoloads from play/bubbles.el
 
 (autoload 'bubbles "bubbles" "\
@@ -2722,7 +2753,7 @@ columns on its right towards the left.
 ;;;***
 
 ;;;### (autoloads nil "bug-reference" "progmodes/bug-reference.el"
-;;;;;;  (21980 16567 993544 893000))
+;;;;;;  (22086 11930 142062 731000))
 ;;; 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)))))
@@ -2742,8 +2773,8 @@ Like `bug-reference-mode', but only buttonize in comments 
and strings.
 
 ;;;***
 
-;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (22067
-;;;;;;  17342 138157 143000))
+;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (22108
+;;;;;;  15942 526032 987000))
 ;;; 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)
@@ -2863,8 +2894,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (22086
+;;;;;;  11929 526062 731000))
 ;;; Generated autoloads from calendar/cal-china.el
 
 (put 'calendar-chinese-time-zone 'risky-local-variable t)
@@ -2873,8 +2904,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21990 52406
-;;;;;;  468500 385000))
+;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (22086 11929
+;;;;;;  526062 731000))
 ;;; Generated autoloads from calendar/cal-dst.el
 
 (put 'calendar-daylight-savings-starts 'risky-local-variable t)
@@ -2885,8 +2916,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21993
-;;;;;;  28595 970597 473000))
+;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (22086
+;;;;;;  11929 526062 731000))
 ;;; Generated autoloads from calendar/cal-hebrew.el
 
 (autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\
@@ -2898,7 +2929,7 @@ from the cursor position.
 
 ;;;***
 
-;;;### (autoloads nil "calc" "calc/calc.el" (22039 37934 737599 199000))
+;;;### (autoloads nil "calc" "calc/calc.el" (22086 11929 522062 731000))
 ;;; Generated autoloads from calc/calc.el
  (define-key ctl-x-map "*" 'calc-dispatch)
 
@@ -2984,8 +3015,8 @@ See Info node `(calc)Defining Functions'.
 
 ;;;***
 
-;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (22086 11929
+;;;;;;  518062 731000))
 ;;; Generated autoloads from calc/calc-undo.el
 
 (autoload 'calc-undo "calc-undo" "\
@@ -2995,8 +3026,8 @@ See Info node `(calc)Defining Functions'.
 
 ;;;***
 
-;;;### (autoloads nil "calculator" "calculator.el" (21993 28595 966597
-;;;;;;  473000))
+;;;### (autoloads nil "calculator" "calculator.el" (22092 27717 520268
+;;;;;;  464000))
 ;;; Generated autoloads from calculator.el
 
 (autoload 'calculator "calculator" "\
@@ -3007,8 +3038,8 @@ See the documentation for `calculator-mode' for more 
information.
 
 ;;;***
 
-;;;### (autoloads nil "calendar" "calendar/calendar.el" (22042 14122
-;;;;;;  205169 136000))
+;;;### (autoloads nil "calendar" "calendar/calendar.el" (22092 27717
+;;;;;;  540268 464000))
 ;;; Generated autoloads from calendar/calendar.el
 
 (autoload 'calendar "calendar" "\
@@ -3051,8 +3082,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "canlock" "gnus/canlock.el" (21852 24381 567240
-;;;;;;  49000))
+;;;### (autoloads nil "canlock" "gnus/canlock.el" (22086 11929 774062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/canlock.el
 
 (autoload 'canlock-insert-header "canlock" "\
@@ -3069,8 +3100,8 @@ it fails.
 
 ;;;***
 
-;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (22011
-;;;;;;  58553 881858 469000))
+;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (22108
+;;;;;;  15942 570032 987000))
 ;;; Generated autoloads from progmodes/cc-engine.el
 
 (autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -3080,8 +3111,8 @@ Return the syntactic context of the current line.
 
 ;;;***
 
-;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21976 19510
-;;;;;;  84430 241000))
+;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (22086 11930
+;;;;;;  150062 731000))
 ;;; Generated autoloads from progmodes/cc-guess.el
 
 (defvar c-guess-guessed-offsets-alist nil "\
@@ -3179,8 +3210,8 @@ the absolute file name of the file if STYLE-NAME is nil.
 
 ;;;***
 
-;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (22040 58794
-;;;;;;  688259 771000))
+;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (22101 42694
+;;;;;;  157526 804000))
 ;;; Generated autoloads from progmodes/cc-mode.el
 
 (autoload 'c-initialize-cc-mode "cc-mode" "\
@@ -3338,8 +3369,8 @@ Key bindings:
 
 ;;;***
 
-;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21976
-;;;;;;  19510 104430 241000))
+;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (22086
+;;;;;;  11930 154062 731000))
 ;;; Generated autoloads from progmodes/cc-styles.el
 
 (autoload 'c-set-style "cc-styles" "\
@@ -3390,8 +3421,8 @@ and exists only for compatibility reasons.
 
 ;;;***
 
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (22011 58553
-;;;;;;  885858 469000))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (22086 11930
+;;;;;;  154062 731000))
 ;;; Generated autoloads from progmodes/cc-vars.el
 (put 'c-basic-offset 'safe-local-variable 'integerp)
 (put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -3399,8 +3430,8 @@ and exists only for compatibility reasons.
 
 ;;;***
 
-;;;### (autoloads nil "ccl" "international/ccl.el" (22064 41137 985468
-;;;;;;  395000))
+;;;### (autoloads nil "ccl" "international/ccl.el" (22086 11929 874062
+;;;;;;  731000))
 ;;; Generated autoloads from international/ccl.el
 
 (autoload 'ccl-compile "ccl" "\
@@ -3693,8 +3724,8 @@ See the documentation of `define-ccl-program' for the 
detail of CCL program.
 
 ;;;***
 
-;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (22026 25907
-;;;;;;  559502 692000))
+;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (22102 63557
+;;;;;;  288509 103000))
 ;;; Generated autoloads from emacs-lisp/cconv.el
 
 (autoload 'cconv-closure-convert "cconv" "\
@@ -3713,15 +3744,15 @@ Add the warnings that closure conversion would 
encounter.
 
 ;;;***
 
-;;;### (autoloads nil "cedet" "cedet/cedet.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "cedet" "cedet/cedet.el" (22086 11929 542062
+;;;;;;  731000))
 ;;; Generated autoloads from cedet/cedet.el
 (push (purecopy '(cedet 2 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (22011 58553
-;;;;;;  889858 469000))
+;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (22086 11930
+;;;;;;  154062 731000))
 ;;; Generated autoloads from progmodes/cfengine.el
 (push (purecopy '(cfengine 1 4)) package--builtin-versions)
 
@@ -3750,8 +3781,8 @@ Choose `cfengine2-mode' or `cfengine3-mode' by buffer 
contents.
 
 ;;;***
 
-;;;### (autoloads nil "character-fold" "character-fold.el" (22068
-;;;;;;  38191 905155 451000))
+;;;### (autoloads nil "character-fold" "character-fold.el" (22109
+;;;;;;  36809 195889 179000))
 ;;; Generated autoloads from character-fold.el
 
 (autoload 'character-fold-to-regexp "character-fold" "\
@@ -3760,19 +3791,25 @@ Any character in STRING that has an entry in
 `character-fold-table' is replaced with that entry (which is a
 regexp) and other characters are `regexp-quote'd.
 
-\(fn STRING &optional LAX)" nil nil)
+If the resulting regexp would be too long for Emacs to handle,
+just return the result of calling `regexp-quote' on STRING.
+
+FROM is for internal use.  It specifies an index in the STRING
+from which to start.
+
+\(fn STRING &optional LAX FROM)" nil nil)
 
 ;;;***
 
-;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21998 46516
-;;;;;;  978024 649000))
+;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (22092 27717
+;;;;;;  628268 464000))
 ;;; Generated autoloads from emacs-lisp/chart.el
 (push (purecopy '(chart 0 2)) package--builtin-versions)
 
 ;;;***
 
 ;;;### (autoloads nil "check-declare" "emacs-lisp/check-declare.el"
-;;;;;;  (22011 58553 361858 469000))
+;;;;;;  (22086 11929 650062 731000))
 ;;; Generated autoloads from emacs-lisp/check-declare.el
 
 (autoload 'check-declare-file "check-declare" "\
@@ -3789,8 +3826,8 @@ Returns non-nil if any false statements are found.
 
 ;;;***
 
-;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (22002
-;;;;;;  43570 516887 749000))
+;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (22104
+;;;;;;  18893 193441 487000))
 ;;; 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)
@@ -4000,8 +4037,8 @@ Find package keywords that aren't in 
`finder-known-keywords'.
 
 ;;;***
 
-;;;### (autoloads nil "china-util" "language/china-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "china-util" "language/china-util.el" (22086
+;;;;;;  11929 890062 731000))
 ;;; Generated autoloads from language/china-util.el
 
 (autoload 'decode-hz-region "china-util" "\
@@ -4038,8 +4075,8 @@ Encode the text in the current buffer to HZ.
 
 ;;;***
 
-;;;### (autoloads nil "chistory" "chistory.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "chistory" "chistory.el" (22086 11929 582062
+;;;;;;  731000))
 ;;; Generated autoloads from chistory.el
 
 (autoload 'repeat-matching-complex-command "chistory" "\
@@ -4078,8 +4115,8 @@ and runs the normal hook `command-history-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21901
-;;;;;;  9907 369083 895000))
+;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (22086
+;;;;;;  11929 654062 731000))
 ;;; Generated autoloads from emacs-lisp/cl-indent.el
 
 (autoload 'common-lisp-indent-function "cl-indent" "\
@@ -4162,8 +4199,8 @@ instead.
 
 ;;;***
 
-;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21903 51634
-;;;;;;  278370 580000))
+;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (22086 11929
+;;;;;;  654062 731000))
 ;;; Generated autoloads from emacs-lisp/cl-lib.el
 (push (purecopy '(cl-lib 1 0)) package--builtin-versions)
 
@@ -4181,8 +4218,8 @@ a future Emacs interpreter will be able to use it.")
 
 ;;;***
 
-;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (22026 25907
-;;;;;;  631502 692000))
+;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (22086 11930
+;;;;;;  158062 731000))
 ;;; Generated autoloads from progmodes/cmacexp.el
 
 (autoload 'c-macro-expand "cmacexp" "\
@@ -4202,8 +4239,8 @@ For use inside Lisp programs, see also 
`c-macro-expansion'.
 
 ;;;***
 
-;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (22011 58553 281858
-;;;;;;  469000))
+;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (22086 11929 582062
+;;;;;;  731000))
 ;;; Generated autoloads from cmuscheme.el
 
 (autoload 'run-scheme "cmuscheme" "\
@@ -4223,7 +4260,7 @@ is run).
 
 ;;;***
 
-;;;### (autoloads nil "color" "color.el" (22055 26158 710447 352000))
+;;;### (autoloads nil "color" "color.el" (22086 11929 582062 731000))
 ;;; Generated autoloads from color.el
 
 (autoload 'color-name-to-rgb "color" "\
@@ -4242,7 +4279,7 @@ If FRAME cannot display COLOR, return nil.
 
 ;;;***
 
-;;;### (autoloads nil "comint" "comint.el" (22011 58553 293858 469000))
+;;;### (autoloads nil "comint" "comint.el" (22086 11929 586062 731000))
 ;;; Generated autoloads from comint.el
 
 (defvar comint-output-filter-functions '(ansi-color-process-output 
comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -4343,8 +4380,8 @@ REGEXP-GROUP is the regular expression group in REGEXP to 
use.
 
 ;;;***
 
-;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21872 61770
-;;;;;;  310089 300000))
+;;;### (autoloads nil "compare-w" "vc/compare-w.el" (22086 11930
+;;;;;;  370062 731000))
 ;;; Generated autoloads from vc/compare-w.el
 
 (autoload 'compare-windows "compare-w" "\
@@ -4380,8 +4417,8 @@ on third call it again advances points to the next 
difference and so on.
 
 ;;;***
 
-;;;### (autoloads nil "compile" "progmodes/compile.el" (22032 64681
-;;;;;;  370838 183000))
+;;;### (autoloads nil "compile" "progmodes/compile.el" (22099 26170
+;;;;;;  422017 16000))
 ;;; Generated autoloads from progmodes/compile.el
 
 (defvar compilation-mode-hook nil "\
@@ -4562,8 +4599,8 @@ This is the value of `next-error-function' in Compilation 
buffers.
 
 ;;;***
 
-;;;### (autoloads nil "completion" "completion.el" (21804 59688 154807
-;;;;;;  989000))
+;;;### (autoloads nil "completion" "completion.el" (22086 11929 586062
+;;;;;;  731000))
 ;;; Generated autoloads from completion.el
 
 (defvar dynamic-completion-mode nil "\
@@ -4585,8 +4622,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (22026
-;;;;;;  25907 647502 692000))
+;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (22086
+;;;;;;  11930 314062 731000))
 ;;; Generated autoloads from textmodes/conf-mode.el
 
 (autoload 'conf-mode "conf-mode" "\
@@ -4741,8 +4778,8 @@ For details see `conf-mode'.  Example:
 
 ;;;***
 
-;;;### (autoloads nil "cookie1" "play/cookie1.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "cookie1" "play/cookie1.el" (22086 11930 122062
+;;;;;;  731000))
 ;;; Generated autoloads from play/cookie1.el
 
 (autoload 'cookie "cookie1" "\
@@ -4770,8 +4807,8 @@ and subsequent calls on the same file won't go to disk.
 
 ;;;***
 
-;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (22026
-;;;;;;  25907 575502 692000))
+;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (22086
+;;;;;;  11929 662062 731000))
 ;;; Generated autoloads from emacs-lisp/copyright.el
 (put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
 (put 'copyright-names-regexp 'safe-local-variable 'stringp)
@@ -4809,8 +4846,8 @@ If FIX is non-nil, run `copyright-fix-years' instead.
 
 ;;;***
 
-;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (22011
-;;;;;;  58553 893858 469000))
+;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (22086
+;;;;;;  11930 162062 731000))
 ;;; Generated autoloads from progmodes/cperl-mode.el
 (put 'cperl-indent-level 'safe-local-variable 'integerp)
 (put 'cperl-brace-offset 'safe-local-variable 'integerp)
@@ -5008,8 +5045,8 @@ Run a `perldoc' on the word around point.
 
 ;;;***
 
-;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21988 10682 33624
-;;;;;;  461000))
+;;;### (autoloads nil "cpp" "progmodes/cpp.el" (22092 27718 148268
+;;;;;;  464000))
 ;;; Generated autoloads from progmodes/cpp.el
 
 (autoload 'cpp-highlight-buffer "cpp" "\
@@ -5027,8 +5064,8 @@ Edit display information for cpp conditionals.
 
 ;;;***
 
-;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21980 16567 501544
-;;;;;;  893000))
+;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (22086 11929 662062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/crm.el
 
 (autoload 'completing-read-multiple "crm" "\
@@ -5054,8 +5091,8 @@ with empty strings removed.
 
 ;;;***
 
-;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (22038 17067
-;;;;;;  867243 731000))
+;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (22086 11930
+;;;;;;  314062 731000))
 ;;; Generated autoloads from textmodes/css-mode.el
 
 (autoload 'css-mode "css-mode" "\
@@ -5071,8 +5108,8 @@ Major mode to edit \"Sassy CSS\" files.
 
 ;;;***
 
-;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21990 52406
-;;;;;;  528500 385000))
+;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (22086 11929
+;;;;;;  690062 731000))
 ;;; Generated autoloads from emulation/cua-base.el
 
 (defvar cua-mode nil "\
@@ -5117,8 +5154,8 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v 
bindings.
 
 ;;;***
 
-;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (22087 9807
+;;;;;;  178279 951000))
 ;;; Generated autoloads from emulation/cua-rect.el
 
 (autoload 'cua-rectangle-mark-mode "cua-rect" "\
@@ -5130,7 +5167,7 @@ Activates the region if needed.  Only lasts until the 
region is deactivated.
 ;;;***
 
 ;;;### (autoloads nil "cursor-sensor" "emacs-lisp/cursor-sensor.el"
-;;;;;;  (22069 62806 562804 836000))
+;;;;;;  (22086 11929 662062 731000))
 ;;; Generated autoloads from emacs-lisp/cursor-sensor.el
 
 (autoload 'cursor-intangible-mode "cursor-sensor" "\
@@ -5150,8 +5187,8 @@ entering the area covered by the text-property property 
or leaving it.
 
 ;;;***
 
-;;;### (autoloads nil "cus-edit" "cus-edit.el" (21993 28596 22597
-;;;;;;  473000))
+;;;### (autoloads nil "cus-edit" "cus-edit.el" (22086 11929 590062
+;;;;;;  731000))
 ;;; Generated autoloads from cus-edit.el
 
 (defvar custom-browse-sort-alphabetically nil "\
@@ -5470,8 +5507,8 @@ The format is suitable for use with `easy-menu-define'.
 
 ;;;***
 
-;;;### (autoloads nil "cus-theme" "cus-theme.el" (21998 46516 910024
-;;;;;;  649000))
+;;;### (autoloads nil "cus-theme" "cus-theme.el" (22086 11929 590062
+;;;;;;  731000))
 ;;; Generated autoloads from cus-theme.el
 
 (autoload 'customize-create-theme "cus-theme" "\
@@ -5504,8 +5541,8 @@ omitted, a buffer named *Custom Themes* is used.
 
 ;;;***
 
-;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (22026 25907
-;;;;;;  671502 692000))
+;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (22086 11930
+;;;;;;  370062 731000))
 ;;; Generated autoloads from vc/cvs-status.el
 
 (autoload 'cvs-status-mode "cvs-status" "\
@@ -5515,8 +5552,8 @@ Mode used for cvs status output.
 
 ;;;***
 
-;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (22089 51528 280929
+;;;;;;  316000))
 ;;; Generated autoloads from progmodes/cwarn.el
 (push (purecopy '(cwarn 1 3 1)) package--builtin-versions)
 
@@ -5560,8 +5597,8 @@ See `cwarn-mode' for more information on Cwarn mode.
 
 ;;;***
 
-;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (22086
+;;;;;;  11929 890062 731000))
 ;;; Generated autoloads from language/cyril-util.el
 
 (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
@@ -5589,8 +5626,8 @@ If the argument is nil, we return the display table to 
its standard state.
 
 ;;;***
 
-;;;### (autoloads nil "dabbrev" "dabbrev.el" (22011 58553 321858
-;;;;;;  469000))
+;;;### (autoloads nil "dabbrev" "dabbrev.el" (22086 11929 590062
+;;;;;;  731000))
 ;;; Generated autoloads from dabbrev.el
 (put 'dabbrev-case-fold-search 'risky-local-variable t)
 (put 'dabbrev-case-replace 'risky-local-variable t)
@@ -5636,8 +5673,8 @@ See also `dabbrev-abbrev-char-regexp' and 
\\[dabbrev-completion].
 
 ;;;***
 
-;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21974 64192
-;;;;;;  556009 993000))
+;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (22086 11929
+;;;;;;  542062 731000))
 ;;; Generated autoloads from cedet/data-debug.el
 
 (autoload 'data-debug-new-buffer "data-debug" "\
@@ -5647,7 +5684,7 @@ Create a new data-debug buffer with NAME.
 
 ;;;***
 
-;;;### (autoloads nil "dbus" "net/dbus.el" (22011 58553 761858 469000))
+;;;### (autoloads nil "dbus" "net/dbus.el" (22086 11929 990062 731000))
 ;;; Generated autoloads from net/dbus.el
 
 (autoload 'dbus-handle-event "dbus" "\
@@ -5660,8 +5697,8 @@ If the HANDLER returns a `dbus-error', it is propagated 
as return message.
 
 ;;;***
 
-;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (22011 58553
-;;;;;;  897858 469000))
+;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (22086 11930
+;;;;;;  162062 731000))
 ;;; Generated autoloads from progmodes/dcl-mode.el
 
 (autoload 'dcl-mode "dcl-mode" "\
@@ -5787,8 +5824,8 @@ There is some minimal font-lock support (see vars
 
 ;;;***
 
-;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21918 44225
-;;;;;;  955204 84000))
+;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (22086 11929
+;;;;;;  662062 731000))
 ;;; Generated autoloads from emacs-lisp/debug.el
 
 (setq debugger 'debug)
@@ -5831,8 +5868,8 @@ To specify a nil argument interactively, exit with an 
empty minibuffer.
 
 ;;;***
 
-;;;### (autoloads nil "decipher" "play/decipher.el" (21948 40114
-;;;;;;  398686 453000))
+;;;### (autoloads nil "decipher" "play/decipher.el" (22086 11930
+;;;;;;  126062 731000))
 ;;; Generated autoloads from play/decipher.el
 
 (autoload 'decipher "decipher" "\
@@ -5860,8 +5897,8 @@ The most useful commands are:
 
 ;;;***
 
-;;;### (autoloads nil "delim-col" "delim-col.el" (21980 16567 477544
-;;;;;;  893000))
+;;;### (autoloads nil "delim-col" "delim-col.el" (22086 11929 590062
+;;;;;;  731000))
 ;;; Generated autoloads from delim-col.el
 (push (purecopy '(delim-col 2 1)) package--builtin-versions)
 
@@ -5886,7 +5923,7 @@ START and END delimits the corners of text rectangle.
 
 ;;;***
 
-;;;### (autoloads nil "delsel" "delsel.el" (21973 43315 242113 285000))
+;;;### (autoloads nil "delsel" "delsel.el" (22086 11929 594062 731000))
 ;;; Generated autoloads from delsel.el
 
 (defalias 'pending-delete-mode 'delete-selection-mode)
@@ -5914,8 +5951,8 @@ point regardless of any selection.
 
 ;;;***
 
-;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21978 61237
-;;;;;;  450488 269000))
+;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (22086 11929
+;;;;;;  666062 731000))
 ;;; Generated autoloads from emacs-lisp/derived.el
 
 (autoload 'define-derived-mode "derived" "\
@@ -5983,8 +6020,8 @@ the first time the mode is used.
 
 ;;;***
 
-;;;### (autoloads nil "descr-text" "descr-text.el" (21998 46516 914024
-;;;;;;  649000))
+;;;### (autoloads nil "descr-text" "descr-text.el" (22086 11929 594062
+;;;;;;  731000))
 ;;; Generated autoloads from descr-text.el
 
 (autoload 'describe-text-properties "descr-text" "\
@@ -6033,8 +6070,8 @@ This function is meant to be used as a value of
 
 ;;;***
 
-;;;### (autoloads nil "desktop" "desktop.el" (22026 25907 555502
-;;;;;;  692000))
+;;;### (autoloads nil "desktop" "desktop.el" (22092 27717 592268
+;;;;;;  464000))
 ;;; Generated autoloads from desktop.el
 
 (defvar desktop-save-mode nil "\
@@ -6122,8 +6159,8 @@ code like
 
    (defun foo-restore-desktop-buffer
    ...
-   (add-to-list 'desktop-buffer-mode-handlers
-                '(foo-mode . foo-restore-desktop-buffer))
+   (add-to-list \\='desktop-buffer-mode-handlers
+                \\='(foo-mode . foo-restore-desktop-buffer))
 
 The major mode function must either be autoloaded, or of the form
 \"foobar-mode\" and defined in library \"foobar\", so that desktop
@@ -6166,8 +6203,8 @@ code like
 
    (defun foo-desktop-restore
    ...
-   (add-to-list 'desktop-minor-mode-handlers
-                '(foo-mode . foo-desktop-restore))
+   (add-to-list \\='desktop-minor-mode-handlers
+                \\='(foo-mode . foo-desktop-restore))
 
 The minor mode function must either be autoloaded, or of the form
 \"foobar-mode\" and defined in library \"foobar\", so that desktop
@@ -6243,8 +6280,8 @@ Revert to the last loaded desktop.
 
 ;;;***
 
-;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21855 576 877944
-;;;;;;  285000))
+;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (22086 11929
+;;;;;;  774062 731000))
 ;;; Generated autoloads from gnus/deuglify.el
 
 (autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\
@@ -6276,8 +6313,8 @@ Deuglify broken Outlook (Express) articles and redisplay.
 
 ;;;***
 
-;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (22026
-;;;;;;  25907 547502 692000))
+;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (22092
+;;;;;;  27717 544268 464000))
 ;;; Generated autoloads from calendar/diary-lib.el
 
 (autoload 'diary "diary-lib" "\
@@ -6303,7 +6340,7 @@ ensure that all relevant variables are set.
 
 \(setq diary-mail-days 3
       diary-file \"/path/to/diary.file\"
-      calendar-date-style 'european
+      calendar-date-style \\='european
       diary-mail-addr \"address@hidden")
 
 \(diary-mail-entries)
@@ -6319,7 +6356,7 @@ Major mode for editing the diary file.
 
 ;;;***
 
-;;;### (autoloads nil "diff" "vc/diff.el" (21804 59688 284811 0))
+;;;### (autoloads nil "diff" "vc/diff.el" (22086 11930 370062 731000))
 ;;; Generated autoloads from vc/diff.el
 
 (defvar diff-switches (purecopy "-u") "\
@@ -6367,8 +6404,8 @@ This requires the external program `diff' to be in your 
`exec-path'.
 
 ;;;***
 
-;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (22011 58554
-;;;;;;  89858 469000))
+;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (22087 9807 430279
+;;;;;;  951000))
 ;;; Generated autoloads from vc/diff-mode.el
 
 (autoload 'diff-mode "diff-mode" "\
@@ -6400,7 +6437,7 @@ the mode if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "dig" "net/dig.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "dig" "net/dig.el" (22086 11929 990062 731000))
 ;;; Generated autoloads from net/dig.el
 
 (autoload 'dig "dig" "\
@@ -6411,7 +6448,7 @@ Optional arguments are passed to `dig-invoke'.
 
 ;;;***
 
-;;;### (autoloads nil "dired" "dired.el" (22067 17342 118157 143000))
+;;;### (autoloads nil "dired" "dired.el" (22086 11929 598062 731000))
 ;;; Generated autoloads from dired.el
 
 (defvar dired-listing-switches (purecopy "-al") "\
@@ -6537,8 +6574,8 @@ Keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "dirtrack" "dirtrack.el" (21981 37426 531399
-;;;;;;  97000))
+;;;### (autoloads nil "dirtrack" "dirtrack.el" (22086 11929 598062
+;;;;;;  731000))
 ;;; Generated autoloads from dirtrack.el
 
 (autoload 'dirtrack-mode "dirtrack" "\
@@ -6568,8 +6605,8 @@ from `default-directory'.
 
 ;;;***
 
-;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21993 28596
-;;;;;;  58597 473000))
+;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (22086 11929
+;;;;;;  666062 731000))
 ;;; Generated autoloads from emacs-lisp/disass.el
 
 (autoload 'disassemble "disass" "\
@@ -6583,8 +6620,8 @@ redefine OBJECT if it is a symbol.
 
 ;;;***
 
-;;;### (autoloads nil "disp-table" "disp-table.el" (21981 37426 535399
-;;;;;;  97000))
+;;;### (autoloads nil "disp-table" "disp-table.el" (22086 11929 598062
+;;;;;;  731000))
 ;;; Generated autoloads from disp-table.el
 
 (autoload 'make-display-table "disp-table" "\
@@ -6705,8 +6742,8 @@ in `.emacs'.
 
 ;;;***
 
-;;;### (autoloads nil "dissociate" "play/dissociate.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "dissociate" "play/dissociate.el" (22086 11930
+;;;;;;  126062 731000))
 ;;; Generated autoloads from play/dissociate.el
 
 (autoload 'dissociated-press "dissociate" "\
@@ -6722,7 +6759,7 @@ Default is 2.
 
 ;;;***
 
-;;;### (autoloads nil "dnd" "dnd.el" (22026 25907 555502 692000))
+;;;### (autoloads nil "dnd" "dnd.el" (22086 11929 598062 731000))
 ;;; 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)) "\
@@ -6742,8 +6779,8 @@ if some action was made, or nil if the URL is ignored.")
 
 ;;;***
 
-;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (22086 11930
+;;;;;;  314062 731000))
 ;;; Generated autoloads from textmodes/dns-mode.el
 
 (autoload 'dns-mode "dns-mode" "\
@@ -6766,8 +6803,8 @@ Locate SOA record and increment the serial field.
 
 ;;;***
 
-;;;### (autoloads nil "doc-view" "doc-view.el" (22058 2348 742214
-;;;;;;  951000))
+;;;### (autoloads nil "doc-view" "doc-view.el" (22086 11929 598062
+;;;;;;  731000))
 ;;; Generated autoloads from doc-view.el
 
 (autoload 'doc-view-mode-p "doc-view" "\
@@ -6813,8 +6850,8 @@ See the command `doc-view-mode' for more information on 
this mode.
 
 ;;;***
 
-;;;### (autoloads nil "doctor" "play/doctor.el" (22011 58553 865858
-;;;;;;  469000))
+;;;### (autoloads nil "doctor" "play/doctor.el" (22086 11930 126062
+;;;;;;  731000))
 ;;; Generated autoloads from play/doctor.el
 
 (autoload 'doctor "doctor" "\
@@ -6824,7 +6861,7 @@ Switch to *doctor* buffer and start giving psychotherapy.
 
 ;;;***
 
-;;;### (autoloads nil "double" "double.el" (21953 58033 239058 929000))
+;;;### (autoloads nil "double" "double.el" (22086 11929 602062 731000))
 ;;; Generated autoloads from double.el
 
 (autoload 'double-mode "double" "\
@@ -6840,8 +6877,8 @@ strings when pressed twice.  See `double-map' for details.
 
 ;;;***
 
-;;;### (autoloads nil "dunnet" "play/dunnet.el" (21980 16567 965544
-;;;;;;  893000))
+;;;### (autoloads nil "dunnet" "play/dunnet.el" (22093 48588 576393
+;;;;;;  539000))
 ;;; Generated autoloads from play/dunnet.el
 (push (purecopy '(dunnet 2 2)) package--builtin-versions)
 
@@ -6852,8 +6889,8 @@ Switch to *dungeon* buffer and start game.
 
 ;;;***
 
-;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (22011
-;;;;;;  58553 361858 469000))
+;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (22092
+;;;;;;  27717 632268 464000))
 ;;; Generated autoloads from emacs-lisp/easy-mmode.el
 
 (defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
@@ -6923,7 +6960,7 @@ BODY contains code to execute each time the mode is 
enabled or disabled.
 
 For example, you could write
   (define-minor-mode foo-mode \"If enabled, foo on you!\"
-    :lighter \" Foo\" :require 'foo :global t :group 'hassle :version \"27.5\"
+    :lighter \" Foo\" :require \\='foo :global t :group \\='hassle :version 
\"27.5\"
     ...BODY CODE...)
 
 \(fn MODE DOC &optional INIT-VALUE LIGHTER KEYMAP &rest BODY)" nil t)
@@ -6978,7 +7015,7 @@ Valid keywords and arguments are:
   :inherit   Parent keymap.
   :group     Ignored.
   :suppress  Non-nil to call `suppress-keymap' on keymap,
-             'nodigits to suppress digits as prefix arguments.
+             `nodigits' to suppress digits as prefix arguments.
 
 \(fn BS &optional NAME M ARGS)" nil nil)
 
@@ -6997,8 +7034,8 @@ CSS contains a list of syntax specifications of the form 
(CHAR . SYNTAX).
 
 ;;;***
 
-;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (22086
+;;;;;;  11929 666062 731000))
 ;;; Generated autoloads from emacs-lisp/easymenu.el
 
 (autoload 'easy-menu-define "easymenu" "\
@@ -7136,8 +7173,8 @@ To implement dynamic menus, either call this from
 
 ;;;***
 
-;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (22011 58553
-;;;;;;  897858 469000))
+;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (22086 11930
+;;;;;;  166062 731000))
 ;;; Generated autoloads from progmodes/ebnf2ps.el
 (push (purecopy '(ebnf2ps 4 4)) package--builtin-versions)
 
@@ -7402,8 +7439,8 @@ See `ebnf-style-database' documentation.
 
 ;;;***
 
-;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21998 46517
-;;;;;;  206024 649000))
+;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (22086 11930
+;;;;;;  170062 731000))
 ;;; Generated autoloads from progmodes/ebrowse.el
 
 (autoload 'ebrowse-tree-mode "ebrowse" "\
@@ -7551,8 +7588,8 @@ Display statistics for a class tree.
 
 ;;;***
 
-;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21953 58033 239058
-;;;;;;  929000))
+;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (22086 11929 602062
+;;;;;;  731000))
 ;;; Generated autoloads from ebuff-menu.el
 
 (autoload 'electric-buffer-list "ebuff-menu" "\
@@ -7584,8 +7621,8 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
 
 ;;;***
 
-;;;### (autoloads nil "echistory" "echistory.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "echistory" "echistory.el" (22086 11929 602062
+;;;;;;  731000))
 ;;; Generated autoloads from echistory.el
 
 (autoload 'Electric-command-history-redo-expression "echistory" "\
@@ -7596,8 +7633,8 @@ With prefix arg NOCONFIRM, execute current line as-is 
without editing.
 
 ;;;***
 
-;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (22086 11929
+;;;;;;  774062 731000))
 ;;; Generated autoloads from gnus/ecomplete.el
 
 (autoload 'ecomplete-setup "ecomplete" "\
@@ -7607,7 +7644,7 @@ With prefix arg NOCONFIRM, execute current line as-is 
without editing.
 
 ;;;***
 
-;;;### (autoloads nil "ede" "cedet/ede.el" (22040 58794 676259 771000))
+;;;### (autoloads nil "ede" "cedet/ede.el" (22092 27717 556268 464000))
 ;;; Generated autoloads from cedet/ede.el
 (push (purecopy '(ede 1 2)) package--builtin-versions)
 
@@ -7633,8 +7670,8 @@ an EDE controlled project.
 
 ;;;***
 
-;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (22022 28851
-;;;;;;  765037 303000))
+;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (22086 11929
+;;;;;;  670062 731000))
 ;;; Generated autoloads from emacs-lisp/edebug.el
 
 (defvar edebug-all-defs nil "\
@@ -7698,7 +7735,7 @@ Toggle edebugging of all forms.
 
 ;;;***
 
-;;;### (autoloads nil "ediff" "vc/ediff.el" (22011 58554 93858 469000))
+;;;### (autoloads nil "ediff" "vc/ediff.el" (22086 11930 378062 731000))
 ;;; Generated autoloads from vc/ediff.el
 (push (purecopy '(ediff 2 81 4)) package--builtin-versions)
 
@@ -7970,8 +8007,8 @@ With optional NODE, goes to that node.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21870 54319
-;;;;;;  247944 919000))
+;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (22086 11930
+;;;;;;  370062 731000))
 ;;; Generated autoloads from vc/ediff-help.el
 
 (autoload 'ediff-customize "ediff-help" "\
@@ -7981,8 +8018,8 @@ With optional NODE, goes to that node.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21993 28596
-;;;;;;  422597 473000))
+;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (22086 11930
+;;;;;;  374062 731000))
 ;;; Generated autoloads from vc/ediff-mult.el
 
 (autoload 'ediff-show-registry "ediff-mult" "\
@@ -7994,8 +8031,8 @@ Display Ediff's registry.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (22026 25907
-;;;;;;  671502 692000))
+;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (22086 11930
+;;;;;;  374062 731000))
 ;;; Generated autoloads from vc/ediff-util.el
 
 (autoload 'ediff-toggle-multiframe "ediff-util" "\
@@ -8014,8 +8051,8 @@ To change the default, set the variable 
`ediff-use-toolbar-p', which see.
 
 ;;;***
 
-;;;### (autoloads nil "edmacro" "edmacro.el" (21976 19509 748430
-;;;;;;  241000))
+;;;### (autoloads nil "edmacro" "edmacro.el" (22086 11929 602062
+;;;;;;  731000))
 ;;; Generated autoloads from edmacro.el
 (push (purecopy '(edmacro 2 1)) package--builtin-versions)
 
@@ -8064,8 +8101,8 @@ or nil, use a compact 80-column format.
 
 ;;;***
 
-;;;### (autoloads nil "edt" "emulation/edt.el" (22011 58553 453858
-;;;;;;  469000))
+;;;### (autoloads nil "edt" "emulation/edt.el" (22086 11929 694062
+;;;;;;  731000))
 ;;; Generated autoloads from emulation/edt.el
 
 (autoload 'edt-set-scroll-margins "edt" "\
@@ -8082,7 +8119,7 @@ Turn on EDT Emulation.
 
 ;;;***
 
-;;;### (autoloads nil "ehelp" "ehelp.el" (21953 58033 247058 929000))
+;;;### (autoloads nil "ehelp" "ehelp.el" (22086 11929 602062 731000))
 ;;; Generated autoloads from ehelp.el
 
 (autoload 'with-electric-help "ehelp" "\
@@ -8118,15 +8155,15 @@ BUFFER is put back into its original major mode.
 
 ;;;***
 
-;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21998 46624
-;;;;;;  898024 649000))
+;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (22086 11929
+;;;;;;  674062 731000))
 ;;; Generated autoloads from emacs-lisp/eieio.el
 (push (purecopy '(eieio 1 4)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (22067
-;;;;;;  17342 150157 143000))
+;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (22086
+;;;;;;  11929 670062 731000))
 ;;; Generated autoloads from emacs-lisp/eieio-core.el
 (push (purecopy '(eieio-core 1 4)) package--builtin-versions)
 
@@ -8142,8 +8179,8 @@ It creates an autoload function for CNAME's constructor.
 
 ;;;***
 
-;;;### (autoloads nil "elec-pair" "elec-pair.el" (21888 48869 288181
-;;;;;;  796000))
+;;;### (autoloads nil "elec-pair" "elec-pair.el" (22086 11929 602062
+;;;;;;  731000))
 ;;; Generated autoloads from elec-pair.el
 
 (defvar electric-pair-text-pairs '((34 . 34)) "\
@@ -8184,8 +8221,8 @@ Toggle `electric-pair-mode' only in this buffer.
 
 ;;;***
 
-;;;### (autoloads nil "elide-head" "elide-head.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "elide-head" "elide-head.el" (22086 11929 602062
+;;;;;;  731000))
 ;;; Generated autoloads from elide-head.el
 
 (autoload 'elide-head "elide-head" "\
@@ -8200,8 +8237,8 @@ This is suitable as an entry on `find-file-hook' or 
appropriate mode hooks.
 
 ;;;***
 
-;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (22030 22952
-;;;;;;  921158 467000))
+;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (22086 11929
+;;;;;;  674062 731000))
 ;;; Generated autoloads from emacs-lisp/elint.el
 
 (autoload 'elint-file "elint" "\
@@ -8236,8 +8273,8 @@ optional prefix argument REINIT is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (22086 11929 674062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/elp.el
 
 (autoload 'elp-instrument-function "elp" "\
@@ -8271,8 +8308,8 @@ displayed.
 
 ;;;***
 
-;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (22086 11929 690062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lock.el
 
 (autoload 'emacs-lock-mode "emacs-lock" "\
@@ -8299,8 +8336,8 @@ Other values are interpreted as usual.
 
 ;;;***
 
-;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (22030 22952
-;;;;;;  933158 467000))
+;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (22086 11929
+;;;;;;  934062 731000))
 ;;; Generated autoloads from mail/emacsbug.el
 
 (autoload 'report-emacs-bug "emacsbug" "\
@@ -8313,8 +8350,8 @@ Prompts for bug subject.  Leaves you in a mail buffer.
 
 ;;;***
 
-;;;### (autoloads nil "emerge" "vc/emerge.el" (21953 58033 507058
-;;;;;;  929000))
+;;;### (autoloads nil "emerge" "vc/emerge.el" (22086 11930 378062
+;;;;;;  731000))
 ;;; Generated autoloads from vc/emerge.el
 
 (autoload 'emerge-files "emerge" "\
@@ -8374,8 +8411,8 @@ Emerge two RCS revisions of a file, with another revision 
as ancestor.
 
 ;;;***
 
-;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21691 38459
-;;;;;;  74604 918000))
+;;;### (autoloads nil "enriched" "textmodes/enriched.el" (22086 11930
+;;;;;;  314062 731000))
 ;;; Generated autoloads from textmodes/enriched.el
 
 (autoload 'enriched-mode "enriched" "\
@@ -8410,7 +8447,7 @@ Commands:
 
 ;;;***
 
-;;;### (autoloads nil "epa" "epa.el" (21980 16567 517544 893000))
+;;;### (autoloads nil "epa" "epa.el" (22086 11929 698062 731000))
 ;;; Generated autoloads from epa.el
 
 (autoload 'epa-list-keys "epa" "\
@@ -8598,8 +8635,8 @@ Insert selected KEYS after the point.
 
 ;;;***
 
-;;;### (autoloads nil "epa-dired" "epa-dired.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "epa-dired" "epa-dired.el" (22086 11929 698062
+;;;;;;  731000))
 ;;; Generated autoloads from epa-dired.el
 
 (autoload 'epa-dired-do-decrypt "epa-dired" "\
@@ -8624,8 +8661,8 @@ Encrypt marked files.
 
 ;;;***
 
-;;;### (autoloads nil "epa-file" "epa-file.el" (21964 28338 113695
-;;;;;;  749000))
+;;;### (autoloads nil "epa-file" "epa-file.el" (22086 11929 698062
+;;;;;;  731000))
 ;;; Generated autoloads from epa-file.el
 
 (autoload 'epa-file-handler "epa-file" "\
@@ -8645,8 +8682,8 @@ Encrypt marked files.
 
 ;;;***
 
-;;;### (autoloads nil "epa-mail" "epa-mail.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "epa-mail" "epa-mail.el" (22086 11929 698062
+;;;;;;  731000))
 ;;; Generated autoloads from epa-mail.el
 
 (autoload 'epa-mail-mode "epa-mail" "\
@@ -8723,7 +8760,7 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "epg" "epg.el" (22011 58553 461858 469000))
+;;;### (autoloads nil "epg" "epg.el" (22092 27717 648268 464000))
 ;;; Generated autoloads from epg.el
 (push (purecopy '(epg 1 0 0)) package--builtin-versions)
 
@@ -8734,8 +8771,8 @@ Return a context object.
 
 ;;;***
 
-;;;### (autoloads nil "epg-config" "epg-config.el" (21927 33969 780642
-;;;;;;  720000))
+;;;### (autoloads nil "epg-config" "epg-config.el" (22086 11929 698062
+;;;;;;  731000))
 ;;; Generated autoloads from epg-config.el
 
 (autoload 'epg-configuration "epg-config" "\
@@ -8755,7 +8792,7 @@ Look at CONFIG and try to expand GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "erc" "erc/erc.el" (22011 58553 477858 469000))
+;;;### (autoloads nil "erc" "erc/erc.el" (22093 48588 540393 539000))
 ;;; Generated autoloads from erc/erc.el
 (push (purecopy '(erc 5 3)) package--builtin-versions)
 
@@ -8804,36 +8841,36 @@ Otherwise, connect to HOST:PORT as USER and /join 
CHANNEL.
 
 ;;;***
 
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21989
-;;;;;;  31537 763825 721000))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (22086
+;;;;;;  11929 706062 731000))
 ;;; Generated autoloads from erc/erc-autoaway.el
  (autoload 'erc-autoaway-mode "erc-autoaway")
 
 ;;;***
 
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21998 46517
-;;;;;;  30024 649000))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (22092 27717
+;;;;;;  652268 464000))
 ;;; Generated autoloads from erc/erc-button.el
  (autoload 'erc-button-mode "erc-button" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (22086 11929
+;;;;;;  706062 731000))
 ;;; Generated autoloads from erc/erc-capab.el
  (autoload 'erc-capab-identify-mode "erc-capab" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (22086 11929
+;;;;;;  706062 731000))
 ;;; Generated autoloads from erc/erc-compat.el
  (autoload 'erc-define-minor-mode "erc-compat")
 
 ;;;***
 
-;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21998 46517 30024
-;;;;;;  649000))
+;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (22086 11929 706062
+;;;;;;  731000))
 ;;; Generated autoloads from erc/erc-dcc.el
  (autoload 'erc-dcc-mode "erc-dcc")
 
@@ -8863,14 +8900,14 @@ that subcommand.
 ;;;***
 
 ;;;### (autoloads nil "erc-desktop-notifications" 
"erc/erc-desktop-notifications.el"
-;;;;;;  (21670 32330 885624 725000))
+;;;;;;  (22086 11929 706062 731000))
 ;;; Generated autoloads from erc/erc-desktop-notifications.el
 (autoload 'erc-notifications-mode "erc-desktop-notifications" "" t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21855
-;;;;;;  576 787951 155000))
+;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (22086
+;;;;;;  11929 710062 731000))
 ;;; Generated autoloads from erc/erc-ezbounce.el
 
 (autoload 'erc-cmd-ezb "erc-ezbounce" "\
@@ -8932,8 +8969,8 @@ Add EZBouncer convenience functions to ERC.
 
 ;;;***
 
-;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21989 31537 771825
-;;;;;;  721000))
+;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (22086 11929 710062
+;;;;;;  731000))
 ;;; Generated autoloads from erc/erc-fill.el
  (autoload 'erc-fill-mode "erc-fill" nil t)
 
@@ -8945,8 +8982,8 @@ You can put this on `erc-insert-modify-hook' and/or 
`erc-send-modify-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (22086 11929
+;;;;;;  710062 731000))
 ;;; Generated autoloads from erc/erc-identd.el
  (autoload 'erc-identd-mode "erc-identd")
 
@@ -8967,8 +9004,8 @@ system.
 
 ;;;***
 
-;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (22086 11929
+;;;;;;  710062 731000))
 ;;; Generated autoloads from erc/erc-imenu.el
 
 (autoload 'erc-create-imenu-index "erc-imenu" "\
@@ -8978,22 +9015,22 @@ system.
 
 ;;;***
 
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (22086 11929 710062
+;;;;;;  731000))
 ;;; Generated autoloads from erc/erc-join.el
  (autoload 'erc-autojoin-mode "erc-join" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-list" "erc/erc-list.el" (22086 11929 710062
+;;;;;;  731000))
 ;;; Generated autoloads from erc/erc-list.el
  (autoload 'erc-list-mode "erc-list")
 
 ;;;***
 
-;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-log" "erc/erc-log.el" (22086 11929 710062
+;;;;;;  731000))
 ;;; Generated autoloads from erc/erc-log.el
  (autoload 'erc-log-mode "erc-log" nil t)
 
@@ -9022,8 +9059,8 @@ You can save every individual message by putting this 
function on
 
 ;;;***
 
-;;;### (autoloads nil "erc-match" "erc/erc-match.el" (22011 58553
-;;;;;;  461858 469000))
+;;;### (autoloads nil "erc-match" "erc/erc-match.el" (22092 27717
+;;;;;;  652268 464000))
 ;;; Generated autoloads from erc/erc-match.el
  (autoload 'erc-match-mode "erc-match")
 
@@ -9069,15 +9106,15 @@ Delete dangerous-host interactively to 
`erc-dangerous-hosts'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (22086 11929 710062
+;;;;;;  731000))
 ;;; Generated autoloads from erc/erc-menu.el
  (autoload 'erc-menu-mode "erc-menu" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (22086
+;;;;;;  11929 710062 731000))
 ;;; Generated autoloads from erc/erc-netsplit.el
  (autoload 'erc-netsplit-mode "erc-netsplit")
 
@@ -9088,8 +9125,8 @@ Show who's gone.
 
 ;;;***
 
-;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (22011
-;;;;;;  58553 473858 469000))
+;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (22086
+;;;;;;  11929 710062 731000))
 ;;; Generated autoloads from erc/erc-networks.el
 
 (autoload 'erc-determine-network "erc-networks" "\
@@ -9106,8 +9143,8 @@ Interactively select a server to connect to using 
`erc-server-alist'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (22086 11929
+;;;;;;  710062 731000))
 ;;; Generated autoloads from erc/erc-notify.el
  (autoload 'erc-notify-mode "erc-notify" nil t)
 
@@ -9125,36 +9162,36 @@ with args, toggle notify status of people.
 
 ;;;***
 
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (22086 11929 710062
+;;;;;;  731000))
 ;;; Generated autoloads from erc/erc-page.el
  (autoload 'erc-page-mode "erc-page")
 
 ;;;***
 
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21855
-;;;;;;  576 787951 155000))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (22086
+;;;;;;  11929 710062 731000))
 ;;; Generated autoloads from erc/erc-pcomplete.el
  (autoload 'erc-completion-mode "erc-pcomplete" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (22086 11929
+;;;;;;  710062 731000))
 ;;; Generated autoloads from erc/erc-replace.el
  (autoload 'erc-replace-mode "erc-replace")
 
 ;;;***
 
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (22092 27717 652268
+;;;;;;  464000))
 ;;; Generated autoloads from erc/erc-ring.el
  (autoload 'erc-ring-mode "erc-ring" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-services" "erc/erc-services.el" (22011
-;;;;;;  58553 473858 469000))
+;;;### (autoloads nil "erc-services" "erc/erc-services.el" (22086
+;;;;;;  11929 710062 731000))
 ;;; Generated autoloads from erc/erc-services.el
  (autoload 'erc-services-mode "erc-services" nil t)
 
@@ -9171,15 +9208,15 @@ When called interactively, read the password using 
`read-passwd'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (22086 11929
+;;;;;;  714062 731000))
 ;;; Generated autoloads from erc/erc-sound.el
  (autoload 'erc-sound-mode "erc-sound")
 
 ;;;***
 
-;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21980
-;;;;;;  16567 521544 893000))
+;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (22086
+;;;;;;  11929 714062 731000))
 ;;; Generated autoloads from erc/erc-speedbar.el
 
 (autoload 'erc-speedbar-browser "erc-speedbar" "\
@@ -9190,22 +9227,22 @@ This will add a speedbar major display mode.
 
 ;;;***
 
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21727
-;;;;;;  11963 635339 992000))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (22086
+;;;;;;  11929 714062 731000))
 ;;; Generated autoloads from erc/erc-spelling.el
  (autoload 'erc-spelling-mode "erc-spelling" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21860 18496
-;;;;;;  27951 644000))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (22086 11929
+;;;;;;  714062 731000))
 ;;; Generated autoloads from erc/erc-stamp.el
  (autoload 'erc-timestamp-mode "erc-stamp" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21980 16567
-;;;;;;  521544 893000))
+;;;### (autoloads nil "erc-track" "erc/erc-track.el" (22092 27717
+;;;;;;  656268 464000))
 ;;; Generated autoloads from erc/erc-track.el
 
 (defvar erc-track-minor-mode nil "\
@@ -9230,8 +9267,8 @@ keybindings will not do anything useful.
 
 ;;;***
 
-;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (22086
+;;;;;;  11929 714062 731000))
 ;;; Generated autoloads from erc/erc-truncate.el
  (autoload 'erc-truncate-mode "erc-truncate" nil t)
 
@@ -9250,8 +9287,8 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (22086 11929 714062
+;;;;;;  731000))
 ;;; Generated autoloads from erc/erc-xdcc.el
  (autoload 'erc-xdcc-mode "erc-xdcc")
 
@@ -9262,8 +9299,8 @@ Add a file to `erc-xdcc-files'.
 
 ;;;***
 
-;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (22063 20273 739891
-;;;;;;  395000))
+;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (22092 27717 632268
+;;;;;;  464000))
 ;;; Generated autoloads from emacs-lisp/ert.el
 
 (autoload 'ert-deftest "ert" "\
@@ -9281,7 +9318,7 @@ Tests that are expected to fail can be marked as such
 using :expected-result.  See `ert-test-result-type-p' for a
 description of valid values for RESULT-TYPE.
 
-\(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags '(TAG...)] 
BODY...)" nil t)
+\(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags \\='(TAG...)] 
BODY...)" nil t)
 
 (function-put 'ert-deftest 'doc-string-elt '3)
 
@@ -9332,8 +9369,8 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol 
or ert-test).
 
 ;;;***
 
-;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (22011 58553
-;;;;;;  393858 469000))
+;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (22086 11929
+;;;;;;  674062 731000))
 ;;; Generated autoloads from emacs-lisp/ert-x.el
 
 (put 'ert-with-test-buffer 'lisp-indent-function 1)
@@ -9345,8 +9382,8 @@ Kill all test buffers that are still live.
 
 ;;;***
 
-;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (22065 61995
-;;;;;;  862407 852000))
+;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (22086 11929
+;;;;;;  722062 731000))
 ;;; Generated autoloads from eshell/esh-mode.el
 
 (autoload 'eshell-mode "esh-mode" "\
@@ -9356,8 +9393,8 @@ Emacs shell interactive mode.
 
 ;;;***
 
-;;;### (autoloads nil "eshell" "eshell/eshell.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "eshell" "eshell/eshell.el" (22086 11929 722062
+;;;;;;  731000))
 ;;; Generated autoloads from eshell/eshell.el
 (push (purecopy '(eshell 2 4 2)) package--builtin-versions)
 
@@ -9392,8 +9429,8 @@ corresponding to a successful execution.
 
 ;;;***
 
-;;;### (autoloads nil "etags" "progmodes/etags.el" (21998 46517 206024
-;;;;;;  649000))
+;;;### (autoloads nil "etags" "progmodes/etags.el" (22105 39773 947886
+;;;;;;  896000))
 ;;; Generated autoloads from progmodes/etags.el
 
 (defvar tags-file-name nil "\
@@ -9703,15 +9740,15 @@ for \\[find-tag] (which see).
 
 \(fn)" t nil)
 
-(autoload 'etags-xref-find "etags" "\
+(autoload 'etags--xref-backend "etags" "\
 
 
-\(fn ACTION ID)" nil nil)
+\(fn)" nil nil)
 
 ;;;***
 
-;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21862
-;;;;;;  60209 768658 443000))
+;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (22086
+;;;;;;  11929 894062 731000))
 ;;; Generated autoloads from language/ethio-util.el
 
 (autoload 'setup-ethiopic-environment-internal "ethio-util" "\
@@ -9879,7 +9916,7 @@ With ARG, insert that many delimiters.
 
 ;;;***
 
-;;;### (autoloads nil "eudc" "net/eudc.el" (22026 25907 611502 692000))
+;;;### (autoloads nil "eudc" "net/eudc.el" (22099 965 90725 479000))
 ;;; Generated autoloads from net/eudc.el
 
 (autoload 'eudc-set-server "eudc" "\
@@ -9933,8 +9970,8 @@ This does nothing except loading eudc by autoload 
side-effect.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (22026 25907 607502
-;;;;;;  692000))
+;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (22086 11929 990062
+;;;;;;  731000))
 ;;; Generated autoloads from net/eudc-bob.el
 
 (autoload 'eudc-display-generic-binary "eudc-bob" "\
@@ -9969,8 +10006,8 @@ Display a button for the JPEG DATA.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (22026 25907
-;;;;;;  607502 692000))
+;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (22099 965
+;;;;;;  74725 479000))
 ;;; Generated autoloads from net/eudc-export.el
 
 (autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
@@ -9986,8 +10023,8 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a 
record.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (22026
-;;;;;;  25907 607502 692000))
+;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (22086
+;;;;;;  11929 990062 731000))
 ;;; Generated autoloads from net/eudc-hotlist.el
 
 (autoload 'eudc-edit-hotlist "eudc-hotlist" "\
@@ -9997,8 +10034,8 @@ Edit the hotlist of directory servers in a specialized 
buffer.
 
 ;;;***
 
-;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (22086 11929 674062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/ewoc.el
 
 (autoload 'ewoc-create "ewoc" "\
@@ -10024,7 +10061,7 @@ fourth arg NOSEP non-nil inhibits this.
 
 ;;;***
 
-;;;### (autoloads nil "eww" "net/eww.el" (22063 20273 743891 395000))
+;;;### (autoloads nil "eww" "net/eww.el" (22093 48588 548393 539000))
 ;;; Generated autoloads from net/eww.el
 
 (defvar eww-suggest-uris '(eww-links-at-point url-get-url-at-point 
eww-current-url) "\
@@ -10071,8 +10108,8 @@ Display the bookmarks.
 
 ;;;***
 
-;;;### (autoloads nil "executable" "progmodes/executable.el" (21988
-;;;;;;  10682 37624 461000))
+;;;### (autoloads nil "executable" "progmodes/executable.el" (22086
+;;;;;;  11930 170062 731000))
 ;;; Generated autoloads from progmodes/executable.el
 
 (autoload 'executable-command-find-posix-p "executable" "\
@@ -10107,7 +10144,7 @@ file modes.
 
 ;;;***
 
-;;;### (autoloads nil "expand" "expand.el" (22011 58553 477858 469000))
+;;;### (autoloads nil "expand" "expand.el" (22086 11929 726062 731000))
 ;;; Generated autoloads from expand.el
 
 (autoload 'expand-add-abbrevs "expand" "\
@@ -10156,8 +10193,8 @@ This is used only in conjunction with 
`expand-add-abbrevs'.
 
 ;;;***
 
-;;;### (autoloads nil "f90" "progmodes/f90.el" (22026 25907 635502
-;;;;;;  692000))
+;;;### (autoloads nil "f90" "progmodes/f90.el" (22092 27718 152268
+;;;;;;  464000))
 ;;; Generated autoloads from progmodes/f90.el
 
 (autoload 'f90-mode "f90" "\
@@ -10224,8 +10261,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "face-remap" "face-remap.el" (21888 47150 706945
-;;;;;;  440000))
+;;;### (autoloads nil "face-remap" "face-remap.el" (22086 11929 726062
+;;;;;;  731000))
 ;;; Generated autoloads from face-remap.el
 
 (autoload 'face-remap-add-relative "face-remap" "\
@@ -10384,8 +10421,8 @@ Besides the choice of face, it is the same as 
`buffer-face-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "feedmail" "mail/feedmail.el" (22011 58553
-;;;;;;  677858 469000))
+;;;### (autoloads nil "feedmail" "mail/feedmail.el" (22092 27717
+;;;;;;  880268 464000))
 ;;; Generated autoloads from mail/feedmail.el
 (push (purecopy '(feedmail 11)) package--builtin-versions)
 
@@ -10419,7 +10456,7 @@ backup file names and the like).
 (autoload 'feedmail-queue-reminder "feedmail" "\
 Perform some kind of reminder activity about queued and draft messages.
 Called with an optional symbol argument which says what kind of event
-is triggering the reminder activity.  The default is 'on-demand, which
+is triggering the reminder activity.  The default is `on-demand', which
 is what you typically would use if you were putting this in your Emacs start-up
 or mail hook code.  Other recognized values for WHAT-EVENT (these are passed
 internally by feedmail):
@@ -10439,7 +10476,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
 
 ;;;***
 
-;;;### (autoloads nil "ffap" "ffap.el" (21993 28596 82597 473000))
+;;;### (autoloads nil "ffap" "ffap.el" (22086 11929 730062 731000))
 ;;; Generated autoloads from ffap.el
 
 (autoload 'ffap-next "ffap" "\
@@ -10502,8 +10539,8 @@ Evaluate the forms in variable `ffap-bindings'.
 
 ;;;***
 
-;;;### (autoloads nil "filecache" "filecache.el" (21740 23998 26747
-;;;;;;  125000))
+;;;### (autoloads nil "filecache" "filecache.el" (22086 11929 734062
+;;;;;;  731000))
 ;;; Generated autoloads from filecache.el
 
 (autoload 'file-cache-add-directory "filecache" "\
@@ -10560,8 +10597,8 @@ the name is considered already unique; only the second 
substitution
 
 ;;;***
 
-;;;### (autoloads nil "filenotify" "filenotify.el" (22069 62806 562804
-;;;;;;  836000))
+;;;### (autoloads nil "filenotify" "filenotify.el" (22086 11929 734062
+;;;;;;  731000))
 ;;; Generated autoloads from filenotify.el
 
 (autoload 'file-notify-handle-event "filenotify" "\
@@ -10576,7 +10613,8 @@ Otherwise, signal a `file-notify-error'.
 
 ;;;***
 
-;;;### (autoloads nil "files-x" "files-x.el" (21998 46517 38024 649000))
+;;;### (autoloads nil "files-x" "files-x.el" (22086 11929 734062
+;;;;;;  731000))
 ;;; Generated autoloads from files-x.el
 
 (autoload 'add-file-local-variable "files-x" "\
@@ -10641,8 +10679,8 @@ Copy directory-local variables to the -*- line.
 
 ;;;***
 
-;;;### (autoloads nil "filesets" "filesets.el" (22026 25907 587502
-;;;;;;  692000))
+;;;### (autoloads nil "filesets" "filesets.el" (22092 27717 792268
+;;;;;;  464000))
 ;;; Generated autoloads from filesets.el
 
 (autoload 'filesets-init "filesets" "\
@@ -10653,8 +10691,8 @@ Set up hooks, load the cache file -- if existing -- and 
build the menu.
 
 ;;;***
 
-;;;### (autoloads nil "find-cmd" "find-cmd.el" (22011 58553 489858
-;;;;;;  469000))
+;;;### (autoloads nil "find-cmd" "find-cmd.el" (22086 11929 746062
+;;;;;;  731000))
 ;;; Generated autoloads from find-cmd.el
 (push (purecopy '(find-cmd 0 6)) package--builtin-versions)
 
@@ -10674,8 +10712,8 @@ result is a string that should be ready for the command 
line.
 
 ;;;***
 
-;;;### (autoloads nil "find-dired" "find-dired.el" (22011 58553 489858
-;;;;;;  469000))
+;;;### (autoloads nil "find-dired" "find-dired.el" (22086 11929 746062
+;;;;;;  731000))
 ;;; Generated autoloads from find-dired.el
 
 (autoload 'find-dired "find-dired" "\
@@ -10715,8 +10753,8 @@ use in place of \"-ls\" as the final argument.
 
 ;;;***
 
-;;;### (autoloads nil "find-file" "find-file.el" (22011 58553 489858
-;;;;;;  469000))
+;;;### (autoloads nil "find-file" "find-file.el" (22092 27717 792268
+;;;;;;  464000))
 ;;; 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)))) "\
@@ -10806,8 +10844,8 @@ Visit the file you click on in another window.
 
 ;;;***
 
-;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (22011
-;;;;;;  58553 409858 469000))
+;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (22086
+;;;;;;  11929 678062 731000))
 ;;; Generated autoloads from emacs-lisp/find-func.el
 
 (autoload 'find-library "find-func" "\
@@ -10977,8 +11015,8 @@ Define some key bindings for the find-function family 
of functions.
 
 ;;;***
 
-;;;### (autoloads nil "find-lisp" "find-lisp.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "find-lisp" "find-lisp.el" (22086 11929 746062
+;;;;;;  731000))
 ;;; Generated autoloads from find-lisp.el
 
 (autoload 'find-lisp-find-dired "find-lisp" "\
@@ -10998,7 +11036,7 @@ Change the filter on a `find-lisp-find-dired' buffer to 
REGEXP.
 
 ;;;***
 
-;;;### (autoloads nil "finder" "finder.el" (21998 46517 46024 649000))
+;;;### (autoloads nil "finder" "finder.el" (22086 11929 750062 731000))
 ;;; Generated autoloads from finder.el
 (push (purecopy '(finder 1 0)) package--builtin-versions)
 
@@ -11020,8 +11058,8 @@ Find packages matching a given keyword.
 
 ;;;***
 
-;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (22086 11929 750062
+;;;;;;  731000))
 ;;; Generated autoloads from flow-ctrl.el
 
 (autoload 'enable-flow-control "flow-ctrl" "\
@@ -11042,8 +11080,8 @@ to get the effect of a C-q.
 
 ;;;***
 
-;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (22086 11929
+;;;;;;  774062 731000))
 ;;; Generated autoloads from gnus/flow-fill.el
 
 (autoload 'fill-flowed-encode "flow-fill" "\
@@ -11058,8 +11096,8 @@ to get the effect of a C-q.
 
 ;;;***
 
-;;;### (autoloads nil "flymake" "progmodes/flymake.el" (22011 58553
-;;;;;;  901858 469000))
+;;;### (autoloads nil "flymake" "progmodes/flymake.el" (22092 27718
+;;;;;;  156268 464000))
 ;;; Generated autoloads from progmodes/flymake.el
 (push (purecopy '(flymake 0 3)) package--builtin-versions)
 
@@ -11089,8 +11127,8 @@ Turn flymake mode off.
 
 ;;;***
 
-;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21980 16568
-;;;;;;  77544 893000))
+;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (22086 11930
+;;;;;;  314062 731000))
 ;;; Generated autoloads from textmodes/flyspell.el
 
 (autoload 'flyspell-prog-mode "flyspell" "\
@@ -11160,14 +11198,14 @@ Flyspell whole buffer.
 
 ;;;***
 
-;;;### (autoloads nil "foldout" "foldout.el" (22011 58553 513858
-;;;;;;  469000))
+;;;### (autoloads nil "foldout" "foldout.el" (22086 11929 750062
+;;;;;;  731000))
 ;;; Generated autoloads from foldout.el
 (push (purecopy '(foldout 1 10)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "follow" "follow.el" (22023 49716 552634 164000))
+;;;### (autoloads nil "follow" "follow.el" (22096 24780 228094 47000))
 ;;; Generated autoloads from follow.el
 
 (autoload 'turn-on-follow-mode "follow" "\
@@ -11261,8 +11299,8 @@ selected if the original window is the first one in the 
frame.
 
 ;;;***
 
-;;;### (autoloads nil "footnote" "mail/footnote.el" (22026 25907
-;;;;;;  595502 692000))
+;;;### (autoloads nil "footnote" "mail/footnote.el" (22086 11929
+;;;;;;  934062 731000))
 ;;; Generated autoloads from mail/footnote.el
 (push (purecopy '(footnote 0 19)) package--builtin-versions)
 
@@ -11281,7 +11319,7 @@ play around with the following keys:
 
 ;;;***
 
-;;;### (autoloads nil "forms" "forms.el" (21981 37426 535399 97000))
+;;;### (autoloads nil "forms" "forms.el" (22086 11929 754062 731000))
 ;;; Generated autoloads from forms.el
 
 (autoload 'forms-mode "forms" "\
@@ -11317,8 +11355,8 @@ Visit a file in Forms mode in other window.
 
 ;;;***
 
-;;;### (autoloads nil "fortran" "progmodes/fortran.el" (22011 58553
-;;;;;;  901858 469000))
+;;;### (autoloads nil "fortran" "progmodes/fortran.el" (22092 27718
+;;;;;;  156268 464000))
 ;;; Generated autoloads from progmodes/fortran.el
 
 (autoload 'fortran-mode "fortran" "\
@@ -11395,8 +11433,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "fortune" "play/fortune.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "fortune" "play/fortune.el" (22086 11930 126062
+;;;;;;  731000))
 ;;; Generated autoloads from play/fortune.el
 
 (autoload 'fortune-add-fortune "fortune" "\
@@ -11444,8 +11482,8 @@ and choose the directory as the fortune-file.
 
 ;;;***
 
-;;;### (autoloads nil "frameset" "frameset.el" (21799 41766 981374
-;;;;;;  972000))
+;;;### (autoloads nil "frameset" "frameset.el" (22086 11929 754062
+;;;;;;  731000))
 ;;; Generated autoloads from frameset.el
 
 (defvar frameset-session-filter-alist '((name . :never) (left . 
frameset-filter-iconified) (minibuffer . frameset-filter-minibuffer) (top . 
frameset-filter-iconified)) "\
@@ -11631,15 +11669,15 @@ Interactively, reads the register using 
`register-read-with-preview'.
 
 ;;;***
 
-;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21720 38720
-;;;;;;  956749 443000))
+;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (22086 11930
+;;;;;;  126062 731000))
 ;;; Generated autoloads from play/gamegrid.el
 (push (purecopy '(gamegrid 1 2)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (22030 22952
-;;;;;;  977158 467000))
+;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (22092 27718
+;;;;;;  172268 464000))
 ;;; Generated autoloads from progmodes/gdb-mi.el
 
 (defvar gdb-enable-debug nil "\
@@ -11716,8 +11754,8 @@ detailed description of this mode.
 
 ;;;***
 
-;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (22086 11929
+;;;;;;  678062 731000))
 ;;; Generated autoloads from emacs-lisp/generic.el
 
 (defvar generic-mode-list nil "\
@@ -11797,8 +11835,8 @@ regular expression that can be used as an element of
 
 ;;;***
 
-;;;### (autoloads nil "glasses" "progmodes/glasses.el" (22011 58553
-;;;;;;  901858 469000))
+;;;### (autoloads nil "glasses" "progmodes/glasses.el" (22086 11930
+;;;;;;  178062 731000))
 ;;; Generated autoloads from progmodes/glasses.el
 
 (autoload 'glasses-mode "glasses" "\
@@ -11812,8 +11850,8 @@ add virtual separators (like underscores) at places 
they belong to.
 
 ;;;***
 
-;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21993 28596
-;;;;;;  86597 473000))
+;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (22086 11929
+;;;;;;  778062 731000))
 ;;; Generated autoloads from gnus/gmm-utils.el
 
 (autoload 'gmm-regexp-concat "gmm-utils" "\
@@ -11867,7 +11905,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
 
 ;;;***
 
-;;;### (autoloads nil "gnus" "gnus/gnus.el" (22011 58553 561858 469000))
+;;;### (autoloads nil "gnus" "gnus/gnus.el" (22086 11929 810062 731000))
 ;;; Generated autoloads from gnus/gnus.el
 (push (purecopy '(gnus 5 13)) package--builtin-versions)
 (when (fboundp 'custom-autoload)
@@ -11917,8 +11955,8 @@ prompt the user for the name of an NNTP server to use.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21989 31537
-;;;;;;  791825 721000))
+;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (22086 11929
+;;;;;;  778062 731000))
 ;;; Generated autoloads from gnus/gnus-agent.el
 
 (autoload 'gnus-unplugged "gnus-agent" "\
@@ -12008,8 +12046,8 @@ CLEAN is obsolete and ignored.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (22011 58553
-;;;;;;  521858 469000))
+;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (22086 11929
+;;;;;;  782062 731000))
 ;;; Generated autoloads from gnus/gnus-art.el
 
 (autoload 'gnus-article-prepare-display "gnus-art" "\
@@ -12019,8 +12057,8 @@ Make the current buffer look like a nice article.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (22011
-;;;;;;  58553 521858 469000))
+;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (22086
+;;;;;;  11929 782062 731000))
 ;;; Generated autoloads from gnus/gnus-bookmark.el
 
 (autoload 'gnus-bookmark-set "gnus-bookmark" "\
@@ -12043,8 +12081,8 @@ deletion, or > if it is flagged for displaying.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (22086 11929
+;;;;;;  782062 731000))
 ;;; Generated autoloads from gnus/gnus-cache.el
 
 (autoload 'gnus-jog-cache "gnus-cache" "\
@@ -12085,8 +12123,8 @@ supported.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (22086 11929
+;;;;;;  786062 731000))
 ;;; Generated autoloads from gnus/gnus-delay.el
 
 (autoload 'gnus-delay-article "gnus-delay" "\
@@ -12121,8 +12159,8 @@ Checking delayed messages is skipped if optional arg 
NO-CHECK is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (22086 11929
+;;;;;;  786062 731000))
 ;;; Generated autoloads from gnus/gnus-diary.el
 
 (autoload 'gnus-user-format-function-d "gnus-diary" "\
@@ -12137,8 +12175,8 @@ Checking delayed messages is skipped if optional arg 
NO-CHECK is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (22086 11929
+;;;;;;  786062 731000))
 ;;; Generated autoloads from gnus/gnus-dired.el
 
 (autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
@@ -12148,8 +12186,8 @@ Convenience method to turn on gnus-dired-mode.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (22086 11929
+;;;;;;  786062 731000))
 ;;; Generated autoloads from gnus/gnus-draft.el
 
 (autoload 'gnus-draft-reminder "gnus-draft" "\
@@ -12159,8 +12197,8 @@ Reminder user if there are unsent drafts.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21989 31537
-;;;;;;  811825 721000))
+;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (22086 11929
+;;;;;;  786062 731000))
 ;;; Generated autoloads from gnus/gnus-fun.el
 
 (autoload 'gnus--random-face-with-type "gnus-fun" "\
@@ -12225,8 +12263,8 @@ Insert a random Face header from `gnus-face-directory'.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (22086
+;;;;;;  11929 786062 731000))
 ;;; Generated autoloads from gnus/gnus-gravatar.el
 
 (autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\
@@ -12243,8 +12281,8 @@ If gravatars are already displayed, remove them.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (22011 58553
-;;;;;;  529858 469000))
+;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (22086 11929
+;;;;;;  790062 731000))
 ;;; Generated autoloads from gnus/gnus-group.el
 
 (autoload 'gnus-fetch-group "gnus-group" "\
@@ -12261,8 +12299,8 @@ Pop up a frame and enter GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21972 22452
-;;;;;;  190264 357000))
+;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (22086 11929
+;;;;;;  790062 731000))
 ;;; Generated autoloads from gnus/gnus-html.el
 
 (autoload 'gnus-article-html "gnus-html" "\
@@ -12277,8 +12315,8 @@ Pop up a frame and enter GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (22086 11929
+;;;;;;  790062 731000))
 ;;; Generated autoloads from gnus/gnus-kill.el
 
 (defalias 'gnus-batch-kill 'gnus-batch-score)
@@ -12291,8 +12329,8 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f 
gnus-batch-score
 
 ;;;***
 
-;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (22086 11929 790062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/gnus-ml.el
 
 (autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\
@@ -12315,8 +12353,8 @@ Minor mode for providing mailing-list commands.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (22011 58553
-;;;;;;  529858 469000))
+;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (22092 27717
+;;;;;;  816268 464000))
 ;;; Generated autoloads from gnus/gnus-mlspl.el
 
 (autoload 'gnus-group-split-setup "gnus-mlspl" "\
@@ -12387,9 +12425,9 @@ clauses will be generated.
 If CATCH-ALL is nil, no catch-all handling is performed, regardless of
 catch-all marks in group parameters.  Otherwise, if there is no
 selected group whose SPLIT-REGEXP matches the empty string, nor is
-there a selected group whose SPLIT-SPEC is 'catch-all, this fancy
+there a selected group whose SPLIT-SPEC is `catch-all', this fancy
 split (say, a group name) will be appended to the returned SPLIT list,
-as the last element of a '| SPLIT.
+as the last element of a `|' SPLIT.
 
 For example, given the following group parameters:
 
@@ -12416,8 +12454,8 @@ Calling (gnus-group-split-fancy nil nil 
\"mail.others\") returns:
 
 ;;;***
 
-;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21725 56638
-;;;;;;  795320 63000))
+;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (22086 11929
+;;;;;;  794062 731000))
 ;;; Generated autoloads from gnus/gnus-msg.el
 
 (autoload 'gnus-msg-mail "gnus-msg" "\
@@ -12444,7 +12482,7 @@ Like `message-reply'.
 ;;;***
 
 ;;;### (autoloads nil "gnus-notifications" "gnus/gnus-notifications.el"
-;;;;;;  (21757 29489 158925 687000))
+;;;;;;  (22086 11929 794062 731000))
 ;;; Generated autoloads from gnus/gnus-notifications.el
 
 (autoload 'gnus-notifications "gnus-notifications" "\
@@ -12460,8 +12498,8 @@ This is typically a function to add in
 
 ;;;***
 
-;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (22086 11929
+;;;;;;  794062 731000))
 ;;; Generated autoloads from gnus/gnus-picon.el
 
 (autoload 'gnus-treat-from-picon "gnus-picon" "\
@@ -12484,8 +12522,8 @@ If picons are already displayed, remove them.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (22086 11929
+;;;;;;  794062 731000))
 ;;; Generated autoloads from gnus/gnus-range.el
 
 (autoload 'gnus-sorted-difference "gnus-range" "\
@@ -12552,8 +12590,8 @@ Add NUM into sorted LIST by side effect.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (22011
-;;;;;;  58553 541858 469000))
+;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (22086
+;;;;;;  11929 794062 731000))
 ;;; Generated autoloads from gnus/gnus-registry.el
 
 (autoload 'gnus-registry-initialize "gnus-registry" "\
@@ -12568,8 +12606,8 @@ Install the registry hooks.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (22011 58553
-;;;;;;  541858 469000))
+;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (22086 11929
+;;;;;;  794062 731000))
 ;;; Generated autoloads from gnus/gnus-sieve.el
 
 (autoload 'gnus-sieve-update "gnus-sieve" "\
@@ -12596,8 +12634,8 @@ See the documentation for these variables and functions 
for details.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (22086 11929
+;;;;;;  798062 731000))
 ;;; Generated autoloads from gnus/gnus-spec.el
 
 (autoload 'gnus-update-format "gnus-spec" "\
@@ -12607,8 +12645,8 @@ Update the format specification near point.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21993 28596
-;;;;;;  102597 473000))
+;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (22086 11929
+;;;;;;  798062 731000))
 ;;; Generated autoloads from gnus/gnus-start.el
 
 (autoload 'gnus-declare-backend "gnus-start" "\
@@ -12618,8 +12656,8 @@ Declare back end NAME with ABILITIES as a Gnus back end.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21993 28596
-;;;;;;  110597 473000))
+;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (22086 11929
+;;;;;;  802062 731000))
 ;;; Generated autoloads from gnus/gnus-sum.el
 
 (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
@@ -12630,8 +12668,8 @@ BOOKMARK is a bookmark name or a bookmark record.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21832 3452
-;;;;;;  581913 198000))
+;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (22086 11929
+;;;;;;  802062 731000))
 ;;; Generated autoloads from gnus/gnus-sync.el
 
 (autoload 'gnus-sync-initialize "gnus-sync" "\
@@ -12646,8 +12684,8 @@ Install the sync hooks.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (22086 11929
+;;;;;;  806062 731000))
 ;;; Generated autoloads from gnus/gnus-win.el
 
 (autoload 'gnus-add-configuration "gnus-win" "\
@@ -12657,8 +12695,8 @@ Add the window configuration CONF to 
`gnus-buffer-configuration'.
 
 ;;;***
 
-;;;### (autoloads nil "gnutls" "net/gnutls.el" (22011 58553 761858
-;;;;;;  469000))
+;;;### (autoloads nil "gnutls" "net/gnutls.el" (22086 11929 994062
+;;;;;;  731000))
 ;;; Generated autoloads from net/gnutls.el
 
 (defvar gnutls-min-prime-bits 256 "\
@@ -12674,8 +12712,8 @@ A value of nil says to use the default GnuTLS value.")
 
 ;;;***
 
-;;;### (autoloads nil "gomoku" "play/gomoku.el" (21998 46517 190024
-;;;;;;  649000))
+;;;### (autoloads nil "gomoku" "play/gomoku.el" (22086 11930 126062
+;;;;;;  731000))
 ;;; Generated autoloads from play/gomoku.el
 
 (autoload 'gomoku "gomoku" "\
@@ -12701,8 +12739,8 @@ Use \\[describe-mode] for more info.
 
 ;;;***
 
-;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (22086 11929
+;;;;;;  994062 731000))
 ;;; Generated autoloads from net/goto-addr.el
 
 (define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point 
"22.1")
@@ -12743,8 +12781,8 @@ Like `goto-address-mode', but only for comments and 
strings.
 
 ;;;***
 
-;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (22086 11929
+;;;;;;  810062 731000))
 ;;; Generated autoloads from gnus/gravatar.el
 
 (autoload 'gravatar-retrieve "gravatar" "\
@@ -12760,8 +12798,8 @@ Retrieve MAIL-ADDRESS gravatar and returns it.
 
 ;;;***
 
-;;;### (autoloads nil "grep" "progmodes/grep.el" (22061 64938 520287
-;;;;;;  963000))
+;;;### (autoloads nil "grep" "progmodes/grep.el" (22086 11930 178062
+;;;;;;  731000))
 ;;; Generated autoloads from progmodes/grep.el
 
 (defvar grep-window-height nil "\
@@ -12928,7 +12966,7 @@ file name to `*.gz', and sets `grep-highlight-matches' 
to `always'.
 
 ;;;***
 
-;;;### (autoloads nil "gs" "gs.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "gs" "gs.el" (22086 11929 854062 731000))
 ;;; Generated autoloads from gs.el
 
 (autoload 'gs-load-image "gs" "\
@@ -12941,8 +12979,8 @@ the form \"WINDOW-ID PIXMAP-ID\".  Value is non-nil if 
successful.
 
 ;;;***
 
-;;;### (autoloads nil "gud" "progmodes/gud.el" (22018 31799 115263
-;;;;;;  120000))
+;;;### (autoloads nil "gud" "progmodes/gud.el" (22092 27718 188268
+;;;;;;  464000))
 ;;; Generated autoloads from progmodes/gud.el
 
 (autoload 'gud-gdb "gud" "\
@@ -13037,8 +13075,8 @@ it if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (22011 58553 409858
-;;;;;;  469000))
+;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (22099 26170 382017
+;;;;;;  16000))
 ;;; Generated autoloads from emacs-lisp/gv.el
 
 (autoload 'gv-get "gv" "\
@@ -13133,15 +13171,15 @@ The return value is the last VAL in the list.
 Return a reference to PLACE.
 This is like the `&' operator of the C language.
 Note: this only works reliably with lexical binding mode, except for very
-simple PLACEs such as (function-symbol 'foo) which will also work in dynamic
+simple PLACEs such as (function-symbol \\='foo) which will also work in dynamic
 binding mode.
 
 \(fn PLACE)" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "handwrite" "play/handwrite.el" (22026 25907
-;;;;;;  631502 692000))
+;;;### (autoloads nil "handwrite" "play/handwrite.el" (22086 11930
+;;;;;;  130062 731000))
 ;;; Generated autoloads from play/handwrite.el
 
 (autoload 'handwrite "handwrite" "\
@@ -13158,8 +13196,8 @@ Variables: `handwrite-linespace'     (default 12)
 
 ;;;***
 
-;;;### (autoloads nil "hanoi" "play/hanoi.el" (21799 41767 31221
-;;;;;;  635000))
+;;;### (autoloads nil "hanoi" "play/hanoi.el" (22086 11930 130062
+;;;;;;  731000))
 ;;; Generated autoloads from play/hanoi.el
 
 (autoload 'hanoi "hanoi" "\
@@ -13186,8 +13224,8 @@ to be updated.
 
 ;;;***
 
-;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "hashcash" "mail/hashcash.el" (22092 27717
+;;;;;;  880268 464000))
 ;;; Generated autoloads from mail/hashcash.el
 
 (autoload 'hashcash-insert-payment "hashcash" "\
@@ -13229,8 +13267,8 @@ Prefix arg sets default accept amount temporarily.
 
 ;;;***
 
-;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (22086 11929 854062
+;;;;;;  731000))
 ;;; Generated autoloads from help-at-pt.el
 
 (autoload 'help-at-pt-string "help-at-pt" "\
@@ -13357,8 +13395,8 @@ different regions.  With numeric argument ARG, behaves 
like
 
 ;;;***
 
-;;;### (autoloads nil "help-fns" "help-fns.el" (22067 17342 162157
-;;;;;;  143000))
+;;;### (autoloads nil "help-fns" "help-fns.el" (22101 42694 89526
+;;;;;;  804000))
 ;;; Generated autoloads from help-fns.el
 
 (autoload 'describe-function "help-fns" "\
@@ -13412,6 +13450,9 @@ it is displayed along with the global value.
 (autoload 'describe-symbol "help-fns" "\
 Display the full documentation of SYMBOL.
 Will show the info of SYMBOL as a function, variable, and/or face.
+Optional arguments BUFFER and FRAME specify for which buffer and
+frame to show the information about SYMBOL; they default to the
+current buffer and the selected frame, respectively.
 
 \(fn SYMBOL &optional BUFFER FRAME)" t nil)
 
@@ -13442,8 +13483,8 @@ Produce a texinfo buffer with sorted doc-strings from 
the DOC file.
 
 ;;;***
 
-;;;### (autoloads nil "help-macro" "help-macro.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "help-macro" "help-macro.el" (22086 11929 854062
+;;;;;;  731000))
 ;;; Generated autoloads from help-macro.el
 
 (defvar three-step-help nil "\
@@ -13457,8 +13498,8 @@ gives the window that lists the options.")
 
 ;;;***
 
-;;;### (autoloads nil "help-mode" "help-mode.el" (21972 22452 270264
-;;;;;;  357000))
+;;;### (autoloads nil "help-mode" "help-mode.el" (22086 11929 854062
+;;;;;;  731000))
 ;;; Generated autoloads from help-mode.el
 
 (autoload 'help-mode "help-mode" "\
@@ -13559,8 +13600,8 @@ BOOKMARK is a bookmark name or a bookmark record.
 
 ;;;***
 
-;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (22086 11929
+;;;;;;  678062 731000))
 ;;; Generated autoloads from emacs-lisp/helper.el
 
 (autoload 'Helper-describe-bindings "helper" "\
@@ -13575,7 +13616,7 @@ Provide help for current mode.
 
 ;;;***
 
-;;;### (autoloads nil "hexl" "hexl.el" (22056 47028 723798 795000))
+;;;### (autoloads nil "hexl" "hexl.el" (22086 11929 858062 731000))
 ;;; Generated autoloads from hexl.el
 
 (autoload 'hexl-mode "hexl" "\
@@ -13601,7 +13642,7 @@ in hexl format.
 
 A sample format:
 
-  HEX ADDR: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f     ASCII-TEXT
+  HEX ADDR: 0011 2233 4455 6677 8899 aabb ccdd eeff     ASCII-TEXT
   --------  ---- ---- ---- ---- ---- ---- ---- ----  ----------------
   00000000: 5468 6973 2069 7320 6865 786c 2d6d 6f64  This is hexl-mod
   00000010: 652e 2020 4561 6368 206c 696e 6520 7265  e.  Each line re
@@ -13669,8 +13710,8 @@ This discards the buffer's undo information.
 
 ;;;***
 
-;;;### (autoloads nil "hi-lock" "hi-lock.el" (21993 28596 134597
-;;;;;;  473000))
+;;;### (autoloads nil "hi-lock" "hi-lock.el" (22092 27717 860268
+;;;;;;  464000))
 ;;; Generated autoloads from hi-lock.el
 
 (autoload 'hi-lock-mode "hi-lock" "\
@@ -13718,7 +13759,7 @@ which can be called interactively, are:
   (See `font-lock-keywords'.)  They may be edited and re-loaded with 
\\[hi-lock-find-patterns],
   any valid `font-lock-keywords' form is acceptable.  When a file is
   loaded the patterns are read if `hi-lock-file-patterns-policy' is
-  'ask and the user responds y to the prompt, or if
+  `ask' and the user responds y to the prompt, or if
   `hi-lock-file-patterns-policy' is bound to a function and that
   function returns t.
 
@@ -13837,8 +13878,8 @@ be found in variable `hi-lock-interactive-patterns'.
 
 ;;;***
 
-;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21989 31537
-;;;;;;  939825 721000))
+;;;### (autoloads nil "hideif" "progmodes/hideif.el" (22092 27718
+;;;;;;  188268 464000))
 ;;; Generated autoloads from progmodes/hideif.el
 
 (autoload 'hide-ifdef-mode "hideif" "\
@@ -13885,8 +13926,8 @@ Several variables affect how the hiding is done:
 
 ;;;***
 
-;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (22026 25907
-;;;;;;  635502 692000))
+;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (22093 48588
+;;;;;;  580393 539000))
 ;;; 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))) "\
@@ -13925,7 +13966,7 @@ if ARG is omitted or nil.
 
 When hideshow minor mode is on, the menu bar is augmented with hideshow
 commands and the hideshow commands are enabled.
-The value '(hs . t) is added to `buffer-invisibility-spec'.
+The value (hs . t) is added to `buffer-invisibility-spec'.
 
 The main commands are: `hs-hide-all', `hs-show-all', `hs-hide-block',
 `hs-show-block', `hs-hide-level' and `hs-toggle-hiding'.  There is also
@@ -13948,8 +13989,8 @@ Unconditionally turn off `hs-minor-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21980 16567 693544
-;;;;;;  893000))
+;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (22086 11929 858062
+;;;;;;  731000))
 ;;; Generated autoloads from hilit-chg.el
 
 (autoload 'highlight-changes-mode "hilit-chg" "\
@@ -14080,8 +14121,8 @@ See `highlight-changes-mode' for more information on 
Highlight-Changes mode.
 
 ;;;***
 
-;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21850 34968 457268
-;;;;;;  630000))
+;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (22086 11929 858062
+;;;;;;  731000))
 ;;; Generated autoloads from hippie-exp.el
 (push (purecopy '(hippie-exp 1 6)) package--builtin-versions)
 
@@ -14113,8 +14154,8 @@ argument VERBOSE non-nil makes the function verbose.
 
 ;;;***
 
-;;;### (autoloads nil "hl-line" "hl-line.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "hl-line" "hl-line.el" (22086 11929 858062
+;;;;;;  731000))
 ;;; Generated autoloads from hl-line.el
 
 (autoload 'hl-line-mode "hl-line" "\
@@ -14163,8 +14204,8 @@ Global-Hl-Line mode uses the functions 
`global-hl-line-unhighlight' and
 
 ;;;***
 
-;;;### (autoloads nil "holidays" "calendar/holidays.el" (22026 25907
-;;;;;;  551502 692000))
+;;;### (autoloads nil "holidays" "calendar/holidays.el" (22086 11929
+;;;;;;  534062 731000))
 ;;; 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 [...]
@@ -14274,8 +14315,8 @@ The optional LABEL is used to label the buffer created.
 
 ;;;***
 
-;;;### (autoloads nil "html2text" "gnus/html2text.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "html2text" "gnus/html2text.el" (22086 11929
+;;;;;;  810062 731000))
 ;;; Generated autoloads from gnus/html2text.el
 
 (autoload 'html2text "html2text" "\
@@ -14285,8 +14326,8 @@ Convert HTML to plain text in the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (22026 25907
-;;;;;;  591502 692000))
+;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (22092 27717
+;;;;;;  864268 464000))
 ;;; Generated autoloads from htmlfontify.el
 (push (purecopy '(htmlfontify 0 21)) package--builtin-versions)
 
@@ -14319,8 +14360,8 @@ You may also want to set `hfy-page-header' and 
`hfy-page-footer'.
 
 ;;;***
 
-;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (22086 11929 862062
+;;;;;;  731000))
 ;;; Generated autoloads from ibuf-macs.el
 
 (autoload 'define-ibuffer-column "ibuf-macs" "\
@@ -14422,8 +14463,8 @@ bound to the current value of the filter.
 
 ;;;***
 
-;;;### (autoloads nil "ibuffer" "ibuffer.el" (22032 64681 350838
-;;;;;;  183000))
+;;;### (autoloads nil "ibuffer" "ibuffer.el" (22092 27717 868268
+;;;;;;  464000))
 ;;; Generated autoloads from ibuffer.el
 
 (autoload 'ibuffer-list-buffers "ibuffer" "\
@@ -14462,8 +14503,8 @@ FORMATS is the value to use for `ibuffer-formats'.
 
 ;;;***
 
-;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (22026
-;;;;;;  25907 551502 692000))
+;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (22092
+;;;;;;  27717 556268 464000))
 ;;; Generated autoloads from calendar/icalendar.el
 (push (purecopy '(icalendar 0 19)) package--builtin-versions)
 
@@ -14516,8 +14557,8 @@ buffer `*icalendar-errors*'.
 
 ;;;***
 
-;;;### (autoloads nil "icomplete" "icomplete.el" (21980 16567 701544
-;;;;;;  893000))
+;;;### (autoloads nil "icomplete" "icomplete.el" (22086 11929 862062
+;;;;;;  731000))
 ;;; Generated autoloads from icomplete.el
 
 (defvar icomplete-mode nil "\
@@ -14556,8 +14597,8 @@ completions:
 
 ;;;***
 
-;;;### (autoloads nil "icon" "progmodes/icon.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "icon" "progmodes/icon.el" (22086 11930 186062
+;;;;;;  731000))
 ;;; Generated autoloads from progmodes/icon.el
 
 (autoload 'icon-mode "icon" "\
@@ -14597,8 +14638,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (22011
-;;;;;;  58553 905858 469000))
+;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (22086
+;;;;;;  11930 194062 731000))
 ;;; Generated autoloads from progmodes/idlw-shell.el
 
 (autoload 'idlwave-shell "idlw-shell" "\
@@ -14623,8 +14664,8 @@ See also the variable `idlwave-shell-prompt-pattern'.
 
 ;;;***
 
-;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (22011 58553
-;;;;;;  909858 469000))
+;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (22092 27718
+;;;;;;  216268 464000))
 ;;; Generated autoloads from progmodes/idlwave.el
 (push (purecopy '(idlwave 6 1 22)) package--builtin-versions)
 
@@ -14753,7 +14794,7 @@ The main features of this mode are
 
 ;;;***
 
-;;;### (autoloads nil "ido" "ido.el" (22011 58553 641858 469000))
+;;;### (autoloads nil "ido" "ido.el" (22093 48588 548393 539000))
 ;;; Generated autoloads from ido.el
 
 (defvar ido-mode nil "\
@@ -14776,8 +14817,8 @@ With ARG, turn Ido mode on if arg is positive, off 
otherwise.
 Turning on Ido mode will remap (via a minor-mode keymap) the default
 keybindings for the `find-file' and `switch-to-buffer' families of
 commands to the Ido versions of these functions.
-However, if ARG arg equals 'files, remap only commands for files, or
-if it equals 'buffers, remap only commands for buffer switching.
+However, if ARG arg equals `files', remap only commands for files, or
+if it equals `buffers', remap only commands for buffer switching.
 This function also adds a hook to the minibuffer.
 
 \(fn &optional ARG)" t nil)
@@ -15015,7 +15056,7 @@ DEF, if non-nil, is the default value.
 
 ;;;***
 
-;;;### (autoloads nil "ielm" "ielm.el" (22067 17342 170157 143000))
+;;;### (autoloads nil "ielm" "ielm.el" (22086 11929 866062 731000))
 ;;; Generated autoloads from ielm.el
 
 (autoload 'ielm "ielm" "\
@@ -15027,7 +15068,7 @@ See `inferior-emacs-lisp-mode' for details.
 
 ;;;***
 
-;;;### (autoloads nil "iimage" "iimage.el" (21990 52406 604500 385000))
+;;;### (autoloads nil "iimage" "iimage.el" (22086 11929 866062 731000))
 ;;; Generated autoloads from iimage.el
 
 (define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
@@ -15043,7 +15084,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG 
is `toggle'.
 
 ;;;***
 
-;;;### (autoloads nil "image" "image.el" (22048 52907 35535 316000))
+;;;### (autoloads nil "image" "image.el" (22092 27717 872268 464000))
 ;;; Generated autoloads from image.el
 
 (autoload 'image-type-from-data "image" "\
@@ -15236,8 +15277,8 @@ If Emacs is compiled without ImageMagick support, this 
does nothing.
 
 ;;;***
 
-;;;### (autoloads nil "image-dired" "image-dired.el" (22011 58553
-;;;;;;  641858 469000))
+;;;### (autoloads nil "image-dired" "image-dired.el" (22092 27717
+;;;;;;  872268 464000))
 ;;; Generated autoloads from image-dired.el
 (push (purecopy '(image-dired 0 4 11)) package--builtin-versions)
 
@@ -15374,8 +15415,8 @@ easy-to-use form.
 
 ;;;***
 
-;;;### (autoloads nil "image-file" "image-file.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "image-file" "image-file.el" (22086 11929 866062
+;;;;;;  731000))
 ;;; 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")) "\
@@ -15437,8 +15478,8 @@ An image file is one whose name has an extension in
 
 ;;;***
 
-;;;### (autoloads nil "image-mode" "image-mode.el" (21716 41663 456033
-;;;;;;  27000))
+;;;### (autoloads nil "image-mode" "image-mode.el" (22091 6875 287217
+;;;;;;  891000))
 ;;; Generated autoloads from image-mode.el
 
 (autoload 'image-mode "image-mode" "\
@@ -15485,7 +15526,7 @@ on these modes.
 
 ;;;***
 
-;;;### (autoloads nil "imenu" "imenu.el" (21986 55346 284512 613000))
+;;;### (autoloads nil "imenu" "imenu.el" (22092 27717 872268 464000))
 ;;; Generated autoloads from imenu.el
 
 (defvar imenu-sort-function nil "\
@@ -15623,8 +15664,8 @@ for more information.
 
 ;;;***
 
-;;;### (autoloads nil "ind-util" "language/ind-util.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ind-util" "language/ind-util.el" (22086 11929
+;;;;;;  898062 731000))
 ;;; Generated autoloads from language/ind-util.el
 
 (autoload 'indian-compose-region "ind-util" "\
@@ -15654,8 +15695,8 @@ Convert old Emacs Devanagari characters to UCS.
 
 ;;;***
 
-;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (22011 58553
-;;;;;;  909858 469000))
+;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (22086 11930
+;;;;;;  206062 731000))
 ;;; Generated autoloads from progmodes/inf-lisp.el
 
 (autoload 'inferior-lisp "inf-lisp" "\
@@ -15673,7 +15714,7 @@ of `inferior-lisp-program').  Runs the hooks from
 
 ;;;***
 
-;;;### (autoloads nil "info" "info.el" (22056 47028 727798 795000))
+;;;### (autoloads nil "info" "info.el" (22086 11929 874062 731000))
 ;;; 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 
[...]
@@ -15885,8 +15926,8 @@ completion alternatives to currently visited manuals.
 
 ;;;***
 
-;;;### (autoloads nil "info-look" "info-look.el" (22011 58553 641858
-;;;;;;  469000))
+;;;### (autoloads nil "info-look" "info-look.el" (22086 11929 870062
+;;;;;;  731000))
 ;;; Generated autoloads from info-look.el
 
 (autoload 'info-lookup-reset "info-look" "\
@@ -15933,8 +15974,8 @@ Perform completion on file preceding point.
 
 ;;;***
 
-;;;### (autoloads nil "info-xref" "info-xref.el" (22030 22952 929158
-;;;;;;  467000))
+;;;### (autoloads nil "info-xref" "info-xref.el" (22086 11929 870062
+;;;;;;  731000))
 ;;; Generated autoloads from info-xref.el
 (push (purecopy '(info-xref 3)) package--builtin-versions)
 
@@ -16017,8 +16058,8 @@ the sources handy.
 
 ;;;***
 
-;;;### (autoloads nil "informat" "informat.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "informat" "informat.el" (22086 11929 874062
+;;;;;;  731000))
 ;;; Generated autoloads from informat.el
 
 (autoload 'Info-tagify "informat" "\
@@ -16063,8 +16104,8 @@ For example, invoke \"emacs -batch -f 
batch-info-validate $info/ ~/*.info\"
 
 ;;;***
 
-;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (22086 11929
+;;;;;;  678062 731000))
 ;;; Generated autoloads from emacs-lisp/inline.el
 
 (autoload 'define-inline "inline" "\
@@ -16078,8 +16119,8 @@ For example, invoke \"emacs -batch -f 
batch-info-validate $info/ ~/*.info\"
 
 ;;;***
 
-;;;### (autoloads nil "inversion" "cedet/inversion.el" (21993 28595
-;;;;;;  998597 473000))
+;;;### (autoloads nil "inversion" "cedet/inversion.el" (22086 11929
+;;;;;;  550062 731000))
 ;;; Generated autoloads from cedet/inversion.el
 (push (purecopy '(inversion 1 3)) package--builtin-versions)
 
@@ -16091,8 +16132,8 @@ Only checks one based on which kind of Emacs is being 
run.
 
 ;;;***
 
-;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (22003
-;;;;;;  64432 624146 533000))
+;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (22086
+;;;;;;  11929 874062 731000))
 ;;; Generated autoloads from international/isearch-x.el
 
 (autoload 'isearch-toggle-specified-input-method "isearch-x" "\
@@ -16112,8 +16153,8 @@ Toggle input method in interactive search.
 
 ;;;***
 
-;;;### (autoloads nil "isearchb" "isearchb.el" (21767 65327 504606
-;;;;;;  256000))
+;;;### (autoloads nil "isearchb" "isearchb.el" (22086 11929 886062
+;;;;;;  731000))
 ;;; Generated autoloads from isearchb.el
 (push (purecopy '(isearchb 1 5)) package--builtin-versions)
 
@@ -16127,8 +16168,8 @@ accessed via isearchb.
 
 ;;;***
 
-;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (22011
-;;;;;;  58553 645858 469000))
+;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (22086
+;;;;;;  11929 874062 731000))
 ;;; Generated autoloads from international/iso-cvt.el
 
 (autoload 'iso-spanish "iso-cvt" "\
@@ -16219,15 +16260,15 @@ Add submenus to the File menu, to convert to and from 
various formats.
 ;;;***
 
 ;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;;  (21840 19142 552627 956000))
+;;;;;;  (22086 11929 874062 731000))
 ;;; 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" (22011 58554
-;;;;;;  45858 469000))
+;;;### (autoloads nil "ispell" "textmodes/ispell.el" (22086 11930
+;;;;;;  318062 731000))
 ;;; Generated autoloads from textmodes/ispell.el
 
 (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t 
exclusive))))
@@ -16460,8 +16501,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" (22011
-;;;;;;  58553 673858 469000))
+;;;### (autoloads nil "japan-util" "language/japan-util.el" (22086
+;;;;;;  11929 898062 731000))
 ;;; Generated autoloads from language/japan-util.el
 
 (autoload 'setup-japanese-environment-internal "japan-util" "\
@@ -16538,8 +16579,8 @@ If non-nil, second arg INITIAL-INPUT is a string to 
insert before reading.
 
 ;;;***
 
-;;;### (autoloads nil "jka-compr" "jka-compr.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "jka-compr" "jka-compr.el" (22086 11929 890062
+;;;;;;  731000))
 ;;; Generated autoloads from jka-compr.el
 
 (defvar jka-compr-inhibit nil "\
@@ -16562,8 +16603,8 @@ by `jka-compr-installed'.
 
 ;;;***
 
-;;;### (autoloads nil "js" "progmodes/js.el" (22069 62806 682804
-;;;;;;  836000))
+;;;### (autoloads nil "js" "progmodes/js.el" (22109 36809 299889
+;;;;;;  179000))
 ;;; Generated autoloads from progmodes/js.el
 (push (purecopy '(js 9)) package--builtin-versions)
 
@@ -16576,12 +16617,12 @@ Major mode for editing JavaScript.
 Major mode for editing JSX.
 
 To customize the indentation for this mode, set the SGML offset
-variables (`sgml-basic-offset', `sgml-attribute-offset' et al)
+variables (`sgml-basic-offset', `sgml-attribute-offset' et al.)
 locally, like so:
 
   (defun set-jsx-indentation ()
     (setq-local sgml-basic-offset js-indent-level))
-  (add-hook 'js-jsx-mode-hook #'set-jsx-indentation)
+  (add-hook \\='js-jsx-mode-hook #\\='set-jsx-indentation)
 
 \(fn)" t nil)
  (defalias 'javascript-mode 'js-mode)
@@ -16590,14 +16631,14 @@ locally, like so:
 
 ;;;***
 
-;;;### (autoloads nil "json" "json.el" (22064 41137 993468 395000))
+;;;### (autoloads nil "json" "json.el" (22101 42694 105526 804000))
 ;;; Generated autoloads from json.el
 (push (purecopy '(json 1 4)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "keypad" "emulation/keypad.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "keypad" "emulation/keypad.el" (22092 27717
+;;;;;;  636268 464000))
 ;;; Generated autoloads from emulation/keypad.el
 
 (defvar keypad-setup nil "\
@@ -16637,23 +16678,23 @@ keys are bound.
 
  Setup      Binding
  -------------------------------------------------------------
- 'prefix   Command prefix argument, i.e.  M-0 .. M-9 and M--
- 'S-cursor Bind shifted keypad keys to the shifted cursor movement keys.
- 'cursor   Bind keypad keys to the cursor movement keys.
- 'numeric  Plain numeric keypad, i.e. 0 .. 9 and .  (or DECIMAL arg)
- 'none     Removes all bindings for keypad keys in function-key-map;
-           this enables any user-defined bindings for the keypad keys
-           in the global and local keymaps.
-
-If SETUP is 'numeric and the optional fourth argument DECIMAL is non-nil,
+ `prefix'   Command prefix argument, i.e.  M-0 .. M-9 and M--
+ `S-cursor' Bind shifted keypad keys to the shifted cursor movement keys.
+ `cursor'   Bind keypad keys to the cursor movement keys.
+ `numeric'  Plain numeric keypad, i.e. 0 .. 9 and .  (or DECIMAL arg)
+ `none'     Removes all bindings for keypad keys in function-key-map;
+            this enables any user-defined bindings for the keypad keys
+            in the global and local keymaps.
+
+If SETUP is `numeric' and the optional fourth argument DECIMAL is non-nil,
 the decimal key on the keypad is mapped to DECIMAL instead of `.'
 
 \(fn SETUP &optional NUMLOCK SHIFT DECIMAL)" nil nil)
 
 ;;;***
 
-;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (22086
+;;;;;;  11929 878062 731000))
 ;;; Generated autoloads from international/kinsoku.el
 
 (autoload 'kinsoku "kinsoku" "\
@@ -16674,8 +16715,8 @@ the context of text formatting.
 
 ;;;***
 
-;;;### (autoloads nil "kkc" "international/kkc.el" (21978 61237 570488
-;;;;;;  269000))
+;;;### (autoloads nil "kkc" "international/kkc.el" (22086 11929 878062
+;;;;;;  731000))
 ;;; Generated autoloads from international/kkc.el
 
 (defvar kkc-after-update-conversion-functions nil "\
@@ -16697,7 +16738,7 @@ and the return value is the length of the conversion.
 
 ;;;***
 
-;;;### (autoloads nil "kmacro" "kmacro.el" (21990 52406 604500 385000))
+;;;### (autoloads nil "kmacro" "kmacro.el" (22086 11929 890062 731000))
 ;;; Generated autoloads from kmacro.el
  (global-set-key "\C-x(" 'kmacro-start-macro)
  (global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16809,8 +16850,8 @@ If kbd macro currently being defined end it before 
activating it.
 
 ;;;***
 
-;;;### (autoloads nil "korea-util" "language/korea-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "korea-util" "language/korea-util.el" (22086
+;;;;;;  11929 902062 731000))
 ;;; Generated autoloads from language/korea-util.el
 
 (defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv 
"HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
@@ -16824,8 +16865,8 @@ The kind of Korean keyboard for Korean input method.
 
 ;;;***
 
-;;;### (autoloads nil "lao-util" "language/lao-util.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "lao-util" "language/lao-util.el" (22086 11929
+;;;;;;  902062 731000))
 ;;; Generated autoloads from language/lao-util.el
 
 (autoload 'lao-compose-string "lao-util" "\
@@ -16862,8 +16903,8 @@ Transcribe Romanized Lao string STR to Lao character 
string.
 
 ;;;***
 
-;;;### (autoloads nil "latexenc" "international/latexenc.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "latexenc" "international/latexenc.el" (22086
+;;;;;;  11929 878062 731000))
 ;;; 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" .  [...]
@@ -16895,7 +16936,7 @@ coding system names is determined from 
`latex-inputenc-coding-alist'.
 ;;;***
 
 ;;;### (autoloads nil "latin1-disp" "international/latin1-disp.el"
-;;;;;;  (22011 58553 645858 469000))
+;;;;;;  (22086 11929 878062 731000))
 ;;; Generated autoloads from international/latin1-disp.el
 
 (defvar latin1-display nil "\
@@ -16936,8 +16977,8 @@ use either \\[customize] or the function 
`latin1-display'.")
 
 ;;;***
 
-;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (22086
+;;;;;;  11930 210062 731000))
 ;;; Generated autoloads from progmodes/ld-script.el
 
 (autoload 'ld-script-mode "ld-script" "\
@@ -16947,8 +16988,8 @@ A major mode to edit GNU ld script files
 
 ;;;***
 
-;;;### (autoloads nil "let-alist" "emacs-lisp/let-alist.el" (21890
-;;;;;;  39605 402073 663000))
+;;;### (autoloads nil "let-alist" "emacs-lisp/let-alist.el" (22092
+;;;;;;  27717 632268 464000))
 ;;; Generated autoloads from emacs-lisp/let-alist.el
 (push (purecopy '(let-alist 1 0 4)) package--builtin-versions)
 
@@ -16967,10 +17008,10 @@ For instance, the following code
 
 essentially expands to
 
-  (let ((.title (cdr (assq 'title alist)))
-        (.body  (cdr (assq 'body alist)))
-        (.site  (cdr (assq 'site alist)))
-        (.site.contents (cdr (assq 'contents (cdr (assq 'site alist))))))
+  (let ((.title (cdr (assq \\='title alist)))
+        (.body  (cdr (assq \\='body alist)))
+        (.site  (cdr (assq \\='site alist)))
+        (.site.contents (cdr (assq \\='contents (cdr (assq \\='site alist))))))
     (if (and .title .body)
         .body
       .site
@@ -16987,7 +17028,7 @@ displayed in the example above.
 
 ;;;***
 
-;;;### (autoloads nil "life" "play/life.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "life" "play/life.el" (22086 11930 130062 731000))
 ;;; Generated autoloads from play/life.el
 
 (autoload 'life "life" "\
@@ -17000,7 +17041,7 @@ generations (this defaults to 1).
 
 ;;;***
 
-;;;### (autoloads nil "linum" "linum.el" (21855 577 57945 485000))
+;;;### (autoloads nil "linum" "linum.el" (22086 11929 930062 731000))
 ;;; Generated autoloads from linum.el
 (push (purecopy '(linum 0 9 24)) package--builtin-versions)
 
@@ -17037,8 +17078,8 @@ See `linum-mode' for more information on Linum mode.
 
 ;;;***
 
-;;;### (autoloads nil "loadhist" "loadhist.el" (22011 58553 673858
-;;;;;;  469000))
+;;;### (autoloads nil "loadhist" "loadhist.el" (22086 11929 930062
+;;;;;;  731000))
 ;;; Generated autoloads from loadhist.el
 
 (autoload 'unload-feature "loadhist" "\
@@ -17069,7 +17110,7 @@ something strange, such as redefining an Emacs function.
 
 ;;;***
 
-;;;### (autoloads nil "locate" "locate.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "locate" "locate.el" (22086 11929 930062 731000))
 ;;; Generated autoloads from locate.el
 
 (defvar locate-ls-subdir-switches (purecopy "-al") "\
@@ -17121,8 +17162,8 @@ except that FILTER is not optional.
 
 ;;;***
 
-;;;### (autoloads nil "log-edit" "vc/log-edit.el" (22011 58554 93858
-;;;;;;  469000))
+;;;### (autoloads nil "log-edit" "vc/log-edit.el" (22092 27718 544268
+;;;;;;  464000))
 ;;; Generated autoloads from vc/log-edit.el
 
 (autoload 'log-edit "log-edit" "\
@@ -17153,8 +17194,8 @@ done.  Otherwise, it uses the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "log-view" "vc/log-view.el" (21947 19252 637252
-;;;;;;  749000))
+;;;### (autoloads nil "log-view" "vc/log-view.el" (22086 11930 378062
+;;;;;;  731000))
 ;;; Generated autoloads from vc/log-view.el
 
 (autoload 'log-view-mode "log-view" "\
@@ -17164,7 +17205,7 @@ Major mode for browsing CVS log output.
 
 ;;;***
 
-;;;### (autoloads nil "lpr" "lpr.el" (22011 58553 673858 469000))
+;;;### (autoloads nil "lpr" "lpr.el" (22086 11929 930062 731000))
 ;;; Generated autoloads from lpr.el
 
 (defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\
@@ -17259,8 +17300,8 @@ for further customization of the printer command.
 
 ;;;***
 
-;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21993 28596 150597
-;;;;;;  473000))
+;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (22086 11929 930062
+;;;;;;  731000))
 ;;; Generated autoloads from ls-lisp.el
 
 (defvar ls-lisp-support-shell-wildcards t "\
@@ -17271,8 +17312,8 @@ Otherwise they are treated as Emacs regexps (for 
backward compatibility).")
 
 ;;;***
 
-;;;### (autoloads nil "lunar" "calendar/lunar.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "lunar" "calendar/lunar.el" (22086 11929 534062
+;;;;;;  731000))
 ;;; Generated autoloads from calendar/lunar.el
 
 (autoload 'lunar-phases "lunar" "\
@@ -17284,8 +17325,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (22015 55603
-;;;;;;  805705 321000))
+;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (22086 11930
+;;;;;;  210062 731000))
 ;;; Generated autoloads from progmodes/m4-mode.el
 
 (autoload 'm4-mode "m4-mode" "\
@@ -17295,7 +17336,7 @@ A major mode to edit m4 macro files.
 
 ;;;***
 
-;;;### (autoloads nil "macros" "macros.el" (21887 28847 979667 16000))
+;;;### (autoloads nil "macros" "macros.el" (22086 11929 930062 731000))
 ;;; Generated autoloads from macros.el
 
 (autoload 'name-last-kbd-macro "macros" "\
@@ -17384,8 +17425,8 @@ and then select the region of un-tablified names and use
 
 ;;;***
 
-;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (22026 25907
-;;;;;;  599502 692000))
+;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (22086 11929
+;;;;;;  934062 731000))
 ;;; Generated autoloads from mail/mail-extr.el
 
 (autoload 'mail-extract-address-components "mail-extr" "\
@@ -17415,8 +17456,8 @@ Convert mail domain DOMAIN to the country it 
corresponds to.
 
 ;;;***
 
-;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (22086 11929
+;;;;;;  934062 731000))
 ;;; Generated autoloads from mail/mail-hist.el
 
 (autoload 'mail-hist-define-keys "mail-hist" "\
@@ -17445,8 +17486,8 @@ This function normally would be called when the message 
is sent.
 
 ;;;***
 
-;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21964 28338
-;;;;;;  125695 749000))
+;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (22086 11929
+;;;;;;  934062 731000))
 ;;; Generated autoloads from mail/mail-utils.el
 
 (defvar mail-use-rfc822 nil "\
@@ -17520,8 +17561,8 @@ matches may be returned from the message body.
 
 ;;;***
 
-;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21850 35149
-;;;;;;  497265 880000))
+;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (22086 11929
+;;;;;;  938062 731000))
 ;;; Generated autoloads from mail/mailabbrev.el
 
 (defvar mail-abbrevs-mode nil "\
@@ -17570,8 +17611,8 @@ double-quotes.
 
 ;;;***
 
-;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21993 28596
-;;;;;;  166597 473000))
+;;;### (autoloads nil "mailalias" "mail/mailalias.el" (22086 11929
+;;;;;;  938062 731000))
 ;;; Generated autoloads from mail/mailalias.el
 
 (defvar mail-complete-style 'angles "\
@@ -17624,8 +17665,8 @@ current header, calls `mail-complete-function' and 
passes prefix ARG if any.
 
 ;;;***
 
-;;;### (autoloads nil "mailclient" "mail/mailclient.el" (22011 58553
-;;;;;;  693858 469000))
+;;;### (autoloads nil "mailclient" "mail/mailclient.el" (22086 11929
+;;;;;;  938062 731000))
 ;;; Generated autoloads from mail/mailclient.el
 
 (autoload 'mailclient-send-it "mailclient" "\
@@ -17637,8 +17678,8 @@ The mail client is taken to be the handler of mailto 
URLs.
 
 ;;;***
 
-;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (22011
-;;;;;;  58553 913858 469000))
+;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (22086
+;;;;;;  11930 210062 731000))
 ;;; Generated autoloads from progmodes/make-mode.el
 
 (autoload 'makefile-mode "make-mode" "\
@@ -17755,8 +17796,8 @@ An adapted `makefile-mode' that knows about imake.
 
 ;;;***
 
-;;;### (autoloads nil "makesum" "makesum.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "makesum" "makesum.el" (22086 11929 954062
+;;;;;;  731000))
 ;;; Generated autoloads from makesum.el
 
 (autoload 'make-command-summary "makesum" "\
@@ -17767,7 +17808,7 @@ Previous contents of that buffer are killed first.
 
 ;;;***
 
-;;;### (autoloads nil "man" "man.el" (22026 25907 603502 692000))
+;;;### (autoloads nil "man" "man.el" (22086 11929 954062 731000))
 ;;; Generated autoloads from man.el
 
 (defalias 'manual-entry 'man)
@@ -17823,14 +17864,14 @@ Default bookmark handler for Man buffers.
 
 ;;;***
 
-;;;### (autoloads nil "map" "emacs-lisp/map.el" (22063 20273 739891
-;;;;;;  395000))
+;;;### (autoloads nil "map" "emacs-lisp/map.el" (22086 11929 678062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/map.el
 (push (purecopy '(map 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "master" "master.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "master" "master.el" (22086 11929 954062 731000))
 ;;; Generated autoloads from master.el
 (push (purecopy '(master 1 0 2)) package--builtin-versions)
 
@@ -17853,8 +17894,8 @@ yourself the value of `master-of' by calling 
`master-show-slave'.
 
 ;;;***
 
-;;;### (autoloads nil "mb-depth" "mb-depth.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mb-depth" "mb-depth.el" (22086 11929 958062
+;;;;;;  731000))
 ;;; Generated autoloads from mb-depth.el
 
 (defvar minibuffer-depth-indicate-mode nil "\
@@ -17881,14 +17922,14 @@ recursion depth in the minibuffer prompt.  This is 
only useful if
 
 ;;;***
 
-;;;### (autoloads nil "md4" "md4.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "md4" "md4.el" (22086 11929 958062 731000))
 ;;; Generated autoloads from md4.el
 (push (purecopy '(md4 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "message" "gnus/message.el" (22011 58553 581858
-;;;;;;  469000))
+;;;### (autoloads nil "message" "gnus/message.el" (22092 27717 852268
+;;;;;;  464000))
 ;;; 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)
@@ -18053,8 +18094,8 @@ which specify the range to operate on.
 
 ;;;***
 
-;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (22086
+;;;;;;  11930 210062 731000))
 ;;; Generated autoloads from progmodes/meta-mode.el
 (push (purecopy '(meta-mode 1 0)) package--builtin-versions)
 
@@ -18070,8 +18111,8 @@ Major mode for editing MetaPost sources.
 
 ;;;***
 
-;;;### (autoloads nil "metamail" "mail/metamail.el" (21980 16567
-;;;;;;  769544 893000))
+;;;### (autoloads nil "metamail" "mail/metamail.el" (22086 11929
+;;;;;;  938062 731000))
 ;;; Generated autoloads from mail/metamail.el
 
 (autoload 'metamail-interpret-header "metamail" "\
@@ -18114,8 +18155,8 @@ redisplayed as output is inserted.
 
 ;;;***
 
-;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (22011 58553 729858
-;;;;;;  469000))
+;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (22086 11929 970062
+;;;;;;  731000))
 ;;; Generated autoloads from mh-e/mh-comp.el
 
 (autoload 'mh-smail "mh-comp" "\
@@ -18205,7 +18246,7 @@ delete the draft message.
 
 ;;;***
 
-;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (22030 22952 945158 467000))
+;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (22092 27717 888268 464000))
 ;;; Generated autoloads from mh-e/mh-e.el
 (push (purecopy '(mh-e 8 6)) package--builtin-versions)
 
@@ -18222,8 +18263,8 @@ Display version information about MH-E and the MH mail 
handling system.
 
 ;;;***
 
-;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (22011 58553
-;;;;;;  749858 469000))
+;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (22086 11929
+;;;;;;  970062 731000))
 ;;; Generated autoloads from mh-e/mh-folder.el
 
 (autoload 'mh-rmail "mh-folder" "\
@@ -18304,8 +18345,8 @@ perform the operation on all messages in that region.
 
 ;;;***
 
-;;;### (autoloads nil "midnight" "midnight.el" (21822 58098 20521
-;;;;;;  61000))
+;;;### (autoloads nil "midnight" "midnight.el" (22086 11929 978062
+;;;;;;  731000))
 ;;; Generated autoloads from midnight.el
 
 (defvar midnight-mode nil "\
@@ -18345,8 +18386,8 @@ to its second argument TM.
 
 ;;;***
 
-;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (22086 11929
+;;;;;;  978062 731000))
 ;;; Generated autoloads from minibuf-eldef.el
 
 (defvar minibuffer-electric-default-mode nil "\
@@ -18375,7 +18416,7 @@ is modified to remove the default indication.
 
 ;;;***
 
-;;;### (autoloads nil "misc" "misc.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "misc" "misc.el" (22086 11929 982062 731000))
 ;;; Generated autoloads from misc.el
 
 (autoload 'butterfly "misc" "\
@@ -18403,7 +18444,8 @@ The return value is always nil.
 
 ;;;***
 
-;;;### (autoloads nil "misearch" "misearch.el" (21797 36 720489 297000))
+;;;### (autoloads nil "misearch" "misearch.el" (22086 11929 982062
+;;;;;;  731000))
 ;;; Generated autoloads from misearch.el
  (add-hook 'isearch-mode-hook 'multi-isearch-setup)
 
@@ -18491,8 +18533,8 @@ whose file names match the specified wildcard.
 
 ;;;***
 
-;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (22086
+;;;;;;  11930 210062 731000))
 ;;; Generated autoloads from progmodes/mixal-mode.el
 (push (purecopy '(mixal-mode 0 1)) package--builtin-versions)
 
@@ -18503,8 +18545,8 @@ Major mode for the mixal asm language.
 
 ;;;***
 
-;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (22086 11929
+;;;;;;  818062 731000))
 ;;; Generated autoloads from gnus/mm-encode.el
 
 (autoload 'mm-default-file-encoding "mm-encode" "\
@@ -18514,8 +18556,8 @@ Return a default encoding for FILE.
 
 ;;;***
 
-;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (22086 11929
+;;;;;;  818062 731000))
 ;;; Generated autoloads from gnus/mm-extern.el
 
 (autoload 'mm-extern-cache-contents "mm-extern" "\
@@ -18533,8 +18575,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing 
after replacing.
 
 ;;;***
 
-;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (22086 11929
+;;;;;;  818062 731000))
 ;;; Generated autoloads from gnus/mm-partial.el
 
 (autoload 'mm-inline-partial "mm-partial" "\
@@ -18547,8 +18589,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing 
after replacing.
 
 ;;;***
 
-;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (22086 11929 818062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/mm-url.el
 
 (autoload 'mm-url-insert-file-contents "mm-url" "\
@@ -18564,8 +18606,8 @@ Insert file contents of URL using `mm-url-program'.
 
 ;;;***
 
-;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (22010 37685 116774
-;;;;;;  305000))
+;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (22086 11929 818062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/mm-uu.el
 
 (autoload 'mm-uu-dissect "mm-uu" "\
@@ -18584,7 +18626,7 @@ Assume text has been decoded if DECODED is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "mml" "gnus/mml.el" (21826 49866 790514 606000))
+;;;### (autoloads nil "mml" "gnus/mml.el" (22086 11929 822062 731000))
 ;;; Generated autoloads from gnus/mml.el
 
 (autoload 'mml-to-mime "mml" "\
@@ -18609,8 +18651,8 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (22086 11929 822062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/mml1991.el
 
 (autoload 'mml1991-encrypt "mml1991" "\
@@ -18625,8 +18667,8 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (22086 11929 822062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/mml2015.el
 
 (autoload 'mml2015-decrypt "mml2015" "\
@@ -18666,16 +18708,16 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (22030 22952
-;;;;;;  905158 467000))
+;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (22096 24780
+;;;;;;  204094 47000))
 ;;; Generated autoloads from cedet/mode-local.el
 
 (put 'define-overloadable-function 'doc-string-elt 3)
 
 ;;;***
 
-;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "modula2" "progmodes/modula2.el" (22086 11930
+;;;;;;  214062 731000))
 ;;; Generated autoloads from progmodes/modula2.el
 
 (defalias 'modula-2-mode 'm2-mode)
@@ -18708,8 +18750,8 @@ followed by the first character of the construct.
 
 ;;;***
 
-;;;### (autoloads nil "morse" "play/morse.el" (22026 25907 631502
-;;;;;;  692000))
+;;;### (autoloads nil "morse" "play/morse.el" (22086 11930 130062
+;;;;;;  731000))
 ;;; Generated autoloads from play/morse.el
 
 (autoload 'morse-region "morse" "\
@@ -18734,8 +18776,8 @@ Convert NATO phonetic alphabet in region to ordinary 
ASCII text.
 
 ;;;***
 
-;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21993 28596 194597
-;;;;;;  473000))
+;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (22086 11929 982062
+;;;;;;  731000))
 ;;; Generated autoloads from mouse-drag.el
 
 (autoload 'mouse-drag-throw "mouse-drag" "\
@@ -18782,7 +18824,7 @@ To test this function, evaluate:
 
 ;;;***
 
-;;;### (autoloads nil "mpc" "mpc.el" (22050 8240 94934 108000))
+;;;### (autoloads nil "mpc" "mpc.el" (22105 39773 859886 896000))
 ;;; Generated autoloads from mpc.el
 
 (autoload 'mpc "mpc" "\
@@ -18792,7 +18834,7 @@ Main entry point for MPC.
 
 ;;;***
 
-;;;### (autoloads nil "mpuz" "play/mpuz.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "mpuz" "play/mpuz.el" (22086 11930 130062 731000))
 ;;; Generated autoloads from play/mpuz.el
 
 (autoload 'mpuz "mpuz" "\
@@ -18802,7 +18844,7 @@ Multiplication puzzle with GNU Emacs.
 
 ;;;***
 
-;;;### (autoloads nil "msb" "msb.el" (22011 58553 757858 469000))
+;;;### (autoloads nil "msb" "msb.el" (22086 11929 986062 731000))
 ;;; Generated autoloads from msb.el
 
 (defvar msb-mode nil "\
@@ -18827,8 +18869,8 @@ different buffer menu using the function `msb'.
 
 ;;;***
 
-;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21998
-;;;;;;  46517 78024 649000))
+;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (22086
+;;;;;;  11929 882062 731000))
 ;;; Generated autoloads from international/mule-diag.el
 
 (autoload 'list-character-sets "mule-diag" "\
@@ -18960,8 +19002,8 @@ The default is 20.  If LIMIT is negative, do not limit 
the listing.
 
 ;;;***
 
-;;;### (autoloads nil "mule-util" "international/mule-util.el" (22002
-;;;;;;  43570 532887 749000))
+;;;### (autoloads nil "mule-util" "international/mule-util.el" (22108
+;;;;;;  15942 546032 987000))
 ;;; Generated autoloads from international/mule-util.el
 
 (defsubst string-to-list (string) "\
@@ -19120,8 +19162,8 @@ QUALITY can be:
 
 ;;;***
 
-;;;### (autoloads nil "net-utils" "net/net-utils.el" (22011 58553
-;;;;;;  761858 469000))
+;;;### (autoloads nil "net-utils" "net/net-utils.el" (22086 11929
+;;;;;;  998062 731000))
 ;;; Generated autoloads from net/net-utils.el
 
 (autoload 'ifconfig "net-utils" "\
@@ -19215,8 +19257,8 @@ Open a network connection to HOST on PORT.
 
 ;;;***
 
-;;;### (autoloads nil "netrc" "net/netrc.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "netrc" "net/netrc.el" (22086 11929 998062
+;;;;;;  731000))
 ;;; Generated autoloads from net/netrc.el
 
 (autoload 'netrc-credentials "netrc" "\
@@ -19228,8 +19270,8 @@ listed in the PORTS list.
 
 ;;;***
 
-;;;### (autoloads nil "network-stream" "net/network-stream.el" (21855
-;;;;;;  577 147947 107000))
+;;;### (autoloads nil "network-stream" "net/network-stream.el" (22086
+;;;;;;  11929 998062 731000))
 ;;; Generated autoloads from net/network-stream.el
 
 (autoload 'open-network-stream "network-stream" "\
@@ -19325,8 +19367,8 @@ asynchronously, if possible.
 
 ;;;***
 
-;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (22011
-;;;;;;  58553 765858 469000))
+;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (22092
+;;;;;;  27717 964268 464000))
 ;;; Generated autoloads from net/newst-backend.el
 
 (autoload 'newsticker-running-p "newst-backend" "\
@@ -19348,7 +19390,7 @@ Run `newsticker-start-hook' if newsticker was not 
running already.
 ;;;***
 
 ;;;### (autoloads nil "newst-plainview" "net/newst-plainview.el"
-;;;;;;  (21980 16567 809544 893000))
+;;;;;;  (22092 27717 980268 464000))
 ;;; Generated autoloads from net/newst-plainview.el
 
 (autoload 'newsticker-plainview "newst-plainview" "\
@@ -19358,8 +19400,8 @@ Start newsticker plainview.
 
 ;;;***
 
-;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (22011
-;;;;;;  58553 765858 469000))
+;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (22086
+;;;;;;  11929 998062 731000))
 ;;; Generated autoloads from net/newst-reader.el
 
 (autoload 'newsticker-show-news "newst-reader" "\
@@ -19369,8 +19411,8 @@ Start reading news.  You may want to bind this to a key.
 
 ;;;***
 
-;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (22086
+;;;;;;  11929 998062 731000))
 ;;; Generated autoloads from net/newst-ticker.el
 
 (autoload 'newsticker-ticker-running-p "newst-ticker" "\
@@ -19390,8 +19432,8 @@ running already.
 
 ;;;***
 
-;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (22030
-;;;;;;  22952 973158 467000))
+;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (22109
+;;;;;;  36809 263889 179000))
 ;;; Generated autoloads from net/newst-treeview.el
 
 (autoload 'newsticker-treeview "newst-treeview" "\
@@ -19401,8 +19443,8 @@ Start newsticker treeview.
 
 ;;;***
 
-;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21990 52406 596500
-;;;;;;  385000))
+;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (22086 11929 822062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/nndiary.el
 
 (autoload 'nndiary-generate-nov-databases "nndiary" "\
@@ -19412,8 +19454,8 @@ Generate NOV databases in all nndiary directories.
 
 ;;;***
 
-;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (22011 58553 585858
-;;;;;;  469000))
+;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (22086 11929 822062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/nndoc.el
 
 (autoload 'nndoc-add-type "nndoc" "\
@@ -19427,8 +19469,8 @@ symbol in the alist.
 
 ;;;***
 
-;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (22086 11929
+;;;;;;  826062 731000))
 ;;; Generated autoloads from gnus/nnfolder.el
 
 (autoload 'nnfolder-generate-active-file "nnfolder" "\
@@ -19439,7 +19481,7 @@ This command does not work if you use short group names.
 
 ;;;***
 
-;;;### (autoloads nil "nnml" "gnus/nnml.el" (22054 5291 911134 163000))
+;;;### (autoloads nil "nnml" "gnus/nnml.el" (22102 63557 304509 103000))
 ;;; Generated autoloads from gnus/nnml.el
 
 (autoload 'nnml-generate-nov-databases "nnml" "\
@@ -19449,7 +19491,7 @@ Generate NOV databases in all nnml directories.
 
 ;;;***
 
-;;;### (autoloads nil "novice" "novice.el" (21985 34484 234705 925000))
+;;;### (autoloads nil "novice" "novice.el" (22086 11930 22062 731000))
 ;;; Generated autoloads from novice.el
 
 (define-obsolete-variable-alias 'disabled-command-hook 
'disabled-command-function "22.1")
@@ -19481,8 +19523,8 @@ future sessions.
 
 ;;;***
 
-;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21670
-;;;;;;  32331 885635 586000))
+;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (22086
+;;;;;;  11930 318062 731000))
 ;;; Generated autoloads from textmodes/nroff-mode.el
 
 (autoload 'nroff-mode "nroff-mode" "\
@@ -19496,14 +19538,14 @@ closing requests for requests that are used in 
matched pairs.
 
 ;;;***
 
-;;;### (autoloads nil "ntlm" "net/ntlm.el" (22069 62806 678804 836000))
+;;;### (autoloads nil "ntlm" "net/ntlm.el" (22086 11930 2062 731000))
 ;;; Generated autoloads from net/ntlm.el
 (push (purecopy '(ntlm 2 0 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (22086 11930
+;;;;;;  26062 731000))
 ;;; Generated autoloads from nxml/nxml-glyph.el
 
 (autoload 'nxml-glyph-display-string "nxml-glyph" "\
@@ -19515,8 +19557,8 @@ Return nil if the face cannot display a glyph for N.
 
 ;;;***
 
-;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (22021 7991
-;;;;;;  61719 83000))
+;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (22086 11930
+;;;;;;  26062 731000))
 ;;; Generated autoloads from nxml/nxml-mode.el
 
 (autoload 'nxml-mode "nxml-mode" "\
@@ -19576,8 +19618,8 @@ Many aspects this mode can be customized using
 
 ;;;***
 
-;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (22086 11930
+;;;;;;  26062 731000))
 ;;; Generated autoloads from nxml/nxml-uchnm.el
 
 (autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\
@@ -19589,8 +19631,8 @@ the variable `nxml-enabled-unicode-blocks'.
 
 ;;;***
 
-;;;### (autoloads nil "octave" "progmodes/octave.el" (22027 46774
-;;;;;;  680310 591000))
+;;;### (autoloads nil "octave" "progmodes/octave.el" (22086 11930
+;;;;;;  214062 731000))
 ;;; Generated autoloads from progmodes/octave.el
 
 (autoload 'octave-mode "octave" "\
@@ -19627,8 +19669,8 @@ startup file, `~/.emacs-octave'.
 
 ;;;***
 
-;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21948 40114
-;;;;;;  450686 453000))
+;;;### (autoloads nil "opascal" "progmodes/opascal.el" (22086 11930
+;;;;;;  214062 731000))
 ;;; Generated autoloads from progmodes/opascal.el
 
 (define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4")
@@ -19663,7 +19705,7 @@ Coloring:
 
 ;;;***
 
-;;;### (autoloads nil "org" "org/org.el" (22011 58553 849858 469000))
+;;;### (autoloads nil "org" "org/org.el" (22092 27718 88268 464000))
 ;;; Generated autoloads from org/org.el
 
 (autoload 'org-babel-do-load-languages "org" "\
@@ -19884,8 +19926,8 @@ Call the customize function with org as argument.
 
 ;;;***
 
-;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (22011 58553
-;;;;;;  805858 469000))
+;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (22092 27718
+;;;;;;  24268 464000))
 ;;; Generated autoloads from org/org-agenda.el
 
 (autoload 'org-toggle-sticky-agenda "org-agenda" "\
@@ -20109,8 +20151,8 @@ Do we have a reason to ignore this TODO entry because 
it has a time stamp?
 
 (autoload 'org-agenda-set-restriction-lock "org-agenda" "\
 Set restriction lock for agenda, to current subtree or file.
-Restriction will be the file if TYPE is `file', or if type is the
-universal prefix '(4), or if the cursor is before the first headline
+Restriction will be the file if TYPE is `file', or if TYPE is the
+universal prefix `(4)', or if the cursor is before the first headline
 in the file.  Otherwise, restriction will be to the current subtree.
 
 \(fn &optional TYPE)" t nil)
@@ -20158,8 +20200,8 @@ to override `appt-message-warning-time'.
 
 ;;;***
 
-;;;### (autoloads nil "org-capture" "org/org-capture.el" (21993 28596
-;;;;;;  242597 473000))
+;;;### (autoloads nil "org-capture" "org/org-capture.el" (22086 11930
+;;;;;;  82062 731000))
 ;;; Generated autoloads from org/org-capture.el
 
 (autoload 'org-capture-string "org-capture" "\
@@ -20201,8 +20243,8 @@ Set `org-capture-templates' to be similar to 
`org-remember-templates'.
 
 ;;;***
 
-;;;### (autoloads nil "org-colview" "org/org-colview.el" (22011 58553
-;;;;;;  809858 469000))
+;;;### (autoloads nil "org-colview" "org/org-colview.el" (22086 11930
+;;;;;;  82062 731000))
 ;;; Generated autoloads from org/org-colview.el
 
 (autoload 'org-columns-remove-overlays "org-colview" "\
@@ -20265,8 +20307,8 @@ Turn on or update column view in the agenda.
 
 ;;;***
 
-;;;### (autoloads nil "org-compat" "org/org-compat.el" (21988 10681
-;;;;;;  989624 461000))
+;;;### (autoloads nil "org-compat" "org/org-compat.el" (22086 11930
+;;;;;;  82062 731000))
 ;;; Generated autoloads from org/org-compat.el
 
 (autoload 'org-check-version "org-compat" "\
@@ -20276,8 +20318,8 @@ Try very hard to provide sensible version strings.
 
 ;;;***
 
-;;;### (autoloads nil "org-macs" "org/org-macs.el" (21855 577 287944
-;;;;;;  835000))
+;;;### (autoloads nil "org-macs" "org/org-macs.el" (22092 27718 44268
+;;;;;;  464000))
 ;;; Generated autoloads from org/org-macs.el
 
 (autoload 'org-load-noerror-mustsuffix "org-macs" "\
@@ -20287,8 +20329,8 @@ Load FILE with optional arguments NOERROR and 
MUSTSUFFIX.  Drop the MUSTSUFFIX a
 
 ;;;***
 
-;;;### (autoloads nil "org-version" "org/org-version.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "org-version" "org/org-version.el" (22086 11930
+;;;;;;  98062 731000))
 ;;; Generated autoloads from org/org-version.el
 
 (autoload 'org-release "org-version" "\
@@ -20305,8 +20347,8 @@ The Git version of org-mode.
 
 ;;;***
 
-;;;### (autoloads nil "outline" "outline.el" (21990 52406 672500
-;;;;;;  385000))
+;;;### (autoloads nil "outline" "outline.el" (22086 11930 118062
+;;;;;;  731000))
 ;;; Generated autoloads from outline.el
 (put 'outline-regexp 'safe-local-variable 'stringp)
 (put 'outline-heading-end-regexp 'safe-local-variable 'stringp)
@@ -20349,8 +20391,8 @@ See the command `outline-mode' for more information on 
this mode.
 
 ;;;***
 
-;;;### (autoloads nil "package" "emacs-lisp/package.el" (22059 23214
-;;;;;;  33660 839000))
+;;;### (autoloads nil "package" "emacs-lisp/package.el" (22092 27717
+;;;;;;  636268 464000))
 ;;; Generated autoloads from emacs-lisp/package.el
 (push (purecopy '(package 1 0 1)) package--builtin-versions)
 
@@ -20465,7 +20507,7 @@ The list is displayed in a buffer named `*Packages*'.
 
 ;;;***
 
-;;;### (autoloads nil "paren" "paren.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "paren" "paren.el" (22086 11930 122062 731000))
 ;;; Generated autoloads from paren.el
 
 (defvar show-paren-mode nil "\
@@ -20491,8 +20533,8 @@ matching parenthesis is highlighted in 
`show-paren-style' after
 
 ;;;***
 
-;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (22086
+;;;;;;  11929 534062 731000))
 ;;; Generated autoloads from calendar/parse-time.el
 (put 'parse-time-rules 'risky-local-variable t)
 
@@ -20505,8 +20547,8 @@ unknown are returned as nil.
 
 ;;;***
 
-;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21974 64192
-;;;;;;  644009 993000))
+;;;### (autoloads nil "pascal" "progmodes/pascal.el" (22092 27718
+;;;;;;  228268 464000))
 ;;; Generated autoloads from progmodes/pascal.el
 
 (autoload 'pascal-mode "pascal" "\
@@ -20555,8 +20597,8 @@ See also the user variables `pascal-type-keywords', 
`pascal-start-keywords' and
 
 ;;;***
 
-;;;### (autoloads nil "password-cache" "password-cache.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "password-cache" "password-cache.el" (22086
+;;;;;;  11930 122062 731000))
 ;;; Generated autoloads from password-cache.el
 
 (defvar password-cache t "\
@@ -20577,12 +20619,12 @@ Check if KEY is in the cache.
 
 ;;;***
 
-;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (22026 25907
-;;;;;;  583502 692000))
+;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (22091 6875 247217
+;;;;;;  891000))
 ;;; Generated autoloads from emacs-lisp/pcase.el
 
 (autoload 'pcase "pcase" "\
-Perform ML-style pattern matching on EXP.
+Eval EXP and perform ML-style pattern matching on that value.
 CASES is a list of elements of the form (PATTERN CODE...).
 
 Patterns can take the following forms:
@@ -20590,7 +20632,7 @@ Patterns can take the following forms:
   SYMBOL       matches anything and binds it to SYMBOL.
   (or PAT...)  matches if any of the patterns matches.
   (and PAT...) matches if all the patterns match.
-  \\='VAL              matches if the object is `equal' to VAL
+  \\='VAL              matches if the object is `equal' to VAL.
   ATOM         is a shorthand for \\='ATOM.
                   ATOM can be a keyword, an integer, or a string.
   (pred FUN)   matches if FUN applied to the object returns non-nil.
@@ -20606,11 +20648,11 @@ FUN can take the form
                         which is the value being matched.
 So a FUN of the form SYMBOL is equivalent to one of the form (FUN).
 FUN can refer to variables bound earlier in the pattern.
-FUN is assumed to be pure, i.e. it can be dropped if its result is not used,
-and two identical calls can be merged into one.
 E.g. you can match pairs where the cdr is larger than the car with a pattern
 like \\=`(,a . ,(pred (< a))) or, with more checks:
 \\=`(,(and a (pred numberp)) . ,(and (pred numberp) (pred (< a))))
+FUN is assumed to be pure, i.e. it can be dropped if its result is not used,
+and two identical calls can be merged into one.
 
 Additional patterns can be defined via `pcase-defmacro'.
 Currently, the following patterns are provided this way:
@@ -20679,8 +20721,8 @@ to this macro.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21998 46517 178024
-;;;;;;  649000))
+;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (22086 11930 122062
+;;;;;;  731000))
 ;;; Generated autoloads from pcmpl-cvs.el
 
 (autoload 'pcomplete/cvs "pcmpl-cvs" "\
@@ -20690,8 +20732,8 @@ Completion rules for the `cvs' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (22086 11930 122062
+;;;;;;  731000))
 ;;; Generated autoloads from pcmpl-gnu.el
 
 (autoload 'pcomplete/gzip "pcmpl-gnu" "\
@@ -20718,8 +20760,8 @@ Completion for the GNU tar utility.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (22086 11930
+;;;;;;  122062 731000))
 ;;; Generated autoloads from pcmpl-linux.el
 
 (autoload 'pcomplete/kill "pcmpl-linux" "\
@@ -20739,8 +20781,8 @@ Completion for GNU/Linux `mount'.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (22086 11930 122062
+;;;;;;  731000))
 ;;; Generated autoloads from pcmpl-rpm.el
 
 (autoload 'pcomplete/rpm "pcmpl-rpm" "\
@@ -20750,8 +20792,8 @@ Completion for the `rpm' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21791 47660 796747
-;;;;;;  422000))
+;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (22086 11930 122062
+;;;;;;  731000))
 ;;; Generated autoloads from pcmpl-unix.el
 
 (autoload 'pcomplete/cd "pcmpl-unix" "\
@@ -20806,8 +20848,8 @@ Includes files as well as host names followed by a 
colon.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21980 16567 953544
-;;;;;;  893000))
+;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (22086 11930 122062
+;;;;;;  731000))
 ;;; Generated autoloads from pcmpl-x.el
 
 (autoload 'pcomplete/tlmgr "pcmpl-x" "\
@@ -20831,8 +20873,8 @@ Completion for the `ag' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcomplete" "pcomplete.el" (21980 16567 953544
-;;;;;;  893000))
+;;;### (autoloads nil "pcomplete" "pcomplete.el" (22086 11930 122062
+;;;;;;  731000))
 ;;; Generated autoloads from pcomplete.el
 
 (autoload 'pcomplete "pcomplete" "\
@@ -20889,7 +20931,7 @@ Setup `shell-mode' to use pcomplete.
 
 ;;;***
 
-;;;### (autoloads nil "pcvs" "vc/pcvs.el" (22065 61995 886407 852000))
+;;;### (autoloads nil "pcvs" "vc/pcvs.el" (22092 27718 548268 464000))
 ;;; Generated autoloads from vc/pcvs.el
 
 (autoload 'cvs-checkout "pcvs" "\
@@ -20964,8 +21006,8 @@ The exact behavior is determined also by 
`cvs-dired-use-hook'." (when (stringp d
 
 ;;;***
 
-;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (22086 11930
+;;;;;;  378062 731000))
 ;;; 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 [...]
@@ -20973,8 +21015,8 @@ Global menu used by PCL-CVS.")
 
 ;;;***
 
-;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (22011
-;;;;;;  58553 921858 469000))
+;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (22086
+;;;;;;  11930 214062 731000))
 ;;; Generated autoloads from progmodes/perl-mode.el
 (put 'perl-indent-level 'safe-local-variable 'integerp)
 (put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -21035,8 +21077,8 @@ Turning on Perl mode runs the normal hook 
`perl-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "picture" "textmodes/picture.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "picture" "textmodes/picture.el" (22086 11930
+;;;;;;  318062 731000))
 ;;; Generated autoloads from textmodes/picture.el
 
 (autoload 'picture-mode "picture" "\
@@ -21116,8 +21158,8 @@ they are not by default assigned to keys.
 
 ;;;***
 
-;;;### (autoloads nil "pinentry" "net/pinentry.el" (21972 22452 338264
-;;;;;;  357000))
+;;;### (autoloads nil "pinentry" "net/pinentry.el" (22086 11930 2062
+;;;;;;  731000))
 ;;; Generated autoloads from net/pinentry.el
 (push (purecopy '(pinentry 0 1)) package--builtin-versions)
 
@@ -21127,12 +21169,15 @@ Start a Pinentry service.
 Once the environment is properly set, subsequent invocations of
 the gpg command will interact with Emacs for passphrase input.
 
-\(fn)" t nil)
+If the optional QUIET argument is non-nil, messages at startup
+will not be shown.
+
+\(fn &optional QUIET)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "plstore" "gnus/plstore.el" (21786 29744 368212
-;;;;;;  633000))
+;;;### (autoloads nil "plstore" "gnus/plstore.el" (22086 11929 842062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/plstore.el
 
 (autoload 'plstore-open "plstore" "\
@@ -21147,8 +21192,8 @@ Major mode for editing PLSTORE files.
 
 ;;;***
 
-;;;### (autoloads nil "po" "textmodes/po.el" (22026 25907 651502
-;;;;;;  692000))
+;;;### (autoloads nil "po" "textmodes/po.el" (22086 11930 322062
+;;;;;;  731000))
 ;;; Generated autoloads from textmodes/po.el
 
 (autoload 'po-find-file-coding-system "po" "\
@@ -21159,7 +21204,7 @@ Called through `file-coding-system-alist', before the 
file is visited for real.
 
 ;;;***
 
-;;;### (autoloads nil "pong" "play/pong.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "pong" "play/pong.el" (22086 11930 130062 731000))
 ;;; Generated autoloads from play/pong.el
 
 (autoload 'pong "pong" "\
@@ -21175,7 +21220,7 @@ pong-mode keybindings:\\<pong-mode-map>
 
 ;;;***
 
-;;;### (autoloads nil "pop3" "gnus/pop3.el" (21974 64192 580009 993000))
+;;;### (autoloads nil "pop3" "gnus/pop3.el" (22086 11929 846062 731000))
 ;;; Generated autoloads from gnus/pop3.el
 
 (autoload 'pop3-movemail "pop3" "\
@@ -21186,8 +21231,8 @@ Use streaming commands.
 
 ;;;***
 
-;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (22086 11929 682062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/pp.el
 
 (autoload 'pp-to-string "pp" "\
@@ -21237,8 +21282,8 @@ Ignores leading comment characters.
 
 ;;;***
 
-;;;### (autoloads nil "printing" "printing.el" (21990 52406 680500
-;;;;;;  385000))
+;;;### (autoloads nil "printing" "printing.el" (22092 27718 128268
+;;;;;;  464000))
 ;;; Generated autoloads from printing.el
 (push (purecopy '(printing 6 9 3)) package--builtin-versions)
 
@@ -21826,7 +21871,7 @@ are both set to t.
 
 ;;;***
 
-;;;### (autoloads nil "proced" "proced.el" (21998 46517 190024 649000))
+;;;### (autoloads nil "proced" "proced.el" (22092 27718 128268 464000))
 ;;; Generated autoloads from proced.el
 
 (autoload 'proced "proced" "\
@@ -21844,8 +21889,8 @@ Proced buffers.
 
 ;;;***
 
-;;;### (autoloads nil "profiler" "profiler.el" (21948 40114 402686
-;;;;;;  453000))
+;;;### (autoloads nil "profiler" "profiler.el" (22086 11930 134062
+;;;;;;  731000))
 ;;; Generated autoloads from profiler.el
 
 (autoload 'profiler-start "profiler" "\
@@ -21873,19 +21918,35 @@ Open profile FILENAME.
 
 ;;;***
 
-;;;### (autoloads nil "project" "progmodes/project.el" (21960 31281
-;;;;;;  344212 153000))
+;;;### (autoloads nil "project" "progmodes/project.el" (22088 30660
+;;;;;;  79412 927000))
 ;;; Generated autoloads from progmodes/project.el
 
 (autoload 'project-current "project" "\
 Return the project instance in DIR or `default-directory'.
+When no project found in DIR, and MAYBE-PROMPT is non-nil, ask
+the user for a different directory to look in.
+
+\(fn &optional MAYBE-PROMPT DIR)" nil nil)
+
+(autoload 'project-find-regexp "project" "\
+Find all matches for REGEXP in the current project.
+With \\[universal-argument] prefix, you can specify the directory
+to search in, and the file name pattern to search for.
 
-\(fn &optional DIR)" nil nil)
+\(fn REGEXP)" t nil)
+
+(autoload 'project-or-libraries-find-regexp "project" "\
+Find all matches for REGEXP in the current project or libraries.
+With \\[universal-argument] prefix, you can specify the file name
+pattern to search for.
+
+\(fn REGEXP)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "prolog" "progmodes/prolog.el" (22040 58794
-;;;;;;  692259 771000))
+;;;### (autoloads nil "prolog" "progmodes/prolog.el" (22086 11930
+;;;;;;  218062 731000))
 ;;; Generated autoloads from progmodes/prolog.el
 
 (autoload 'prolog-mode "prolog" "\
@@ -21918,19 +21979,19 @@ With prefix argument ARG, restart the Prolog process 
if running before.
 
 ;;;***
 
-;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (22092 27718 404268 464000))
 ;;; 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")) "\
 List of directories to search for `BDF' font files.
-The default value is '(\"/usr/local/share/emacs/fonts/bdf\").")
+The default value is (\"/usr/local/share/emacs/fonts/bdf\").")
 
 (custom-autoload 'bdf-directory-list "ps-bdf" t)
 
 ;;;***
 
-;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (22086 11930
+;;;;;;  218062 731000))
 ;;; Generated autoloads from progmodes/ps-mode.el
 (push (purecopy '(ps-mode 1 1 9)) package--builtin-versions)
 
@@ -21976,8 +22037,8 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when 
the cursor is at the number
 
 ;;;***
 
-;;;### (autoloads nil "ps-print" "ps-print.el" (22011 58553 993858
-;;;;;;  469000))
+;;;### (autoloads nil "ps-print" "ps-print.el" (22092 27718 412268
+;;;;;;  464000))
 ;;; Generated autoloads from ps-print.el
 (push (purecopy '(ps-print 7 3 5)) package--builtin-versions)
 
@@ -22103,8 +22164,8 @@ image in a file with that name.
 (autoload 'ps-line-lengths "ps-print" "\
 Display the correspondence between a line length and a font size.
 Done using the current ps-print setup.
-Try: pr -t file | awk '{printf \"%3d %s
-\", length($0), $0}' | sort -r | head
+Try: pr -t file | awk \\='{printf \"%3d %s
+\", length($0), $0}\\=' | sort -r | head
 
 \(fn)" t nil)
 
@@ -22174,8 +22235,8 @@ If EXTENSION is any other symbol, it is ignored.
 
 ;;;***
 
-;;;### (autoloads nil "pulse" "cedet/pulse.el" (21968 25395 287570
-;;;;;;  741000))
+;;;### (autoloads nil "pulse" "cedet/pulse.el" (22086 11929 550062
+;;;;;;  731000))
 ;;; Generated autoloads from cedet/pulse.el
 (push (purecopy '(pulse 1 0)) package--builtin-versions)
 
@@ -22193,12 +22254,12 @@ Optional argument FACE specifies the face to do the 
highlighting.
 
 ;;;***
 
-;;;### (autoloads nil "python" "progmodes/python.el" (22069 62806
-;;;;;;  686804 836000))
+;;;### (autoloads nil "python" "progmodes/python.el" (22092 27718
+;;;;;;  244268 464000))
 ;;; Generated autoloads from progmodes/python.el
 (push (purecopy '(python 0 25 1)) package--builtin-versions)
 
-(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode))
+(add-to-list 'auto-mode-alist (cons (purecopy "\\.pyw?\\'") 'python-mode))
 
 (add-to-list 'interpreter-mode-alist (cons (purecopy "python[0-9.]*") 
'python-mode))
 
@@ -22231,7 +22292,7 @@ Major mode for editing Python files.
 
 ;;;***
 
-;;;### (autoloads nil "qp" "gnus/qp.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "qp" "gnus/qp.el" (22086 11929 846062 731000))
 ;;; Generated autoloads from gnus/qp.el
 
 (autoload 'quoted-printable-decode-region "qp" "\
@@ -22250,8 +22311,8 @@ them into characters should be done separately.
 
 ;;;***
 
-;;;### (autoloads nil "quail" "international/quail.el" (21988 10681
-;;;;;;  981624 461000))
+;;;### (autoloads nil "quail" "international/quail.el" (22086 11929
+;;;;;;  882062 731000))
 ;;; Generated autoloads from international/quail.el
 
 (autoload 'quail-title "quail" "\
@@ -22481,8 +22542,8 @@ of each directory.
 
 ;;;***
 
-;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (21953
-;;;;;;  58033 331058 929000))
+;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (22086
+;;;;;;  11929 922062 731000))
 ;;; Generated autoloads from leim/quail/hangul.el
 
 (autoload 'hangul-input-method-activate "quail/hangul" "\
@@ -22495,7 +22556,7 @@ HELP-TEXT is a text set in 
`hangul-input-method-help-text'.
 ;;;***
 
 ;;;### (autoloads nil "quail/uni-input" "leim/quail/uni-input.el"
-;;;;;;  (21670 32331 385639 720000))
+;;;;;;  (22086 11929 930062 731000))
 ;;; Generated autoloads from leim/quail/uni-input.el
 
 (autoload 'ucs-input-activate "quail/uni-input" "\
@@ -22509,8 +22570,8 @@ While this input method is active, the variable
 
 ;;;***
 
-;;;### (autoloads nil "quickurl" "net/quickurl.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "quickurl" "net/quickurl.el" (22086 11930 2062
+;;;;;;  731000))
 ;;; 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" "\
@@ -22581,8 +22642,8 @@ Display `quickurl-list' as a formatted list using 
`quickurl-list-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "rcirc" "net/rcirc.el" (22011 58553 765858
-;;;;;;  469000))
+;;;### (autoloads nil "rcirc" "net/rcirc.el" (22092 27717 984268
+;;;;;;  464000))
 ;;; Generated autoloads from net/rcirc.el
 
 (autoload 'rcirc "rcirc" "\
@@ -22620,8 +22681,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21998
-;;;;;;  46517 18024 649000))
+;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (22086
+;;;;;;  11929 682062 731000))
 ;;; Generated autoloads from emacs-lisp/re-builder.el
 
 (defalias 'regexp-builder 're-builder)
@@ -22639,8 +22700,8 @@ matching parts of the target buffer will be highlighted.
 
 ;;;***
 
-;;;### (autoloads nil "recentf" "recentf.el" (21998 46517 266024
-;;;;;;  649000))
+;;;### (autoloads nil "recentf" "recentf.el" (22086 11930 254062
+;;;;;;  731000))
 ;;; Generated autoloads from recentf.el
 
 (defvar recentf-mode nil "\
@@ -22666,7 +22727,7 @@ were operated on recently.
 
 ;;;***
 
-;;;### (autoloads nil "rect" "rect.el" (21803 38823 44085 519000))
+;;;### (autoloads nil "rect" "rect.el" (22087 9807 394279 951000))
 ;;; Generated autoloads from rect.el
 
 (autoload 'delete-rectangle "rect" "\
@@ -22806,8 +22867,8 @@ Activates the region if needed.  Only lasts until the 
region is deactivated.
 
 ;;;***
 
-;;;### (autoloads nil "refill" "textmodes/refill.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "refill" "textmodes/refill.el" (22086 11930
+;;;;;;  322062 731000))
 ;;; Generated autoloads from textmodes/refill.el
 
 (autoload 'refill-mode "refill" "\
@@ -22827,8 +22888,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' 
instead.
 
 ;;;***
 
-;;;### (autoloads nil "reftex" "textmodes/reftex.el" (22056 47028
-;;;;;;  787798 795000))
+;;;### (autoloads nil "reftex" "textmodes/reftex.el" (22086 11930
+;;;;;;  330062 731000))
 ;;; Generated autoloads from textmodes/reftex.el
 (autoload 'reftex-citation "reftex-cite" nil t)
 (autoload 'reftex-all-document-files "reftex-parse")
@@ -22881,8 +22942,8 @@ This enforces rescanning the buffer on next use.
 
 ;;;***
 
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (22025
-;;;;;;  5040 882195 139000))
+;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (22092
+;;;;;;  27718 512268 464000))
 ;;; 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))))
@@ -22891,8 +22952,8 @@ This enforces rescanning the buffer on next use.
 
 ;;;***
 
-;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (22011
-;;;;;;  58553 413858 469000))
+;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (22086
+;;;;;;  11929 682062 731000))
 ;;; Generated autoloads from emacs-lisp/regexp-opt.el
 
 (autoload 'regexp-opt "regexp-opt" "\
@@ -22921,15 +22982,15 @@ This means the number of non-shy regexp grouping 
constructs
 
 ;;;***
 
-;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (22086 11929 682062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/regi.el
 (push (purecopy '(regi 1 8)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "remember" "textmodes/remember.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "remember" "textmodes/remember.el" (22086 11930
+;;;;;;  334062 731000))
 ;;; Generated autoloads from textmodes/remember.el
 (push (purecopy '(remember 2 0)) package--builtin-versions)
 
@@ -22983,7 +23044,7 @@ to turn the *scratch* buffer into your notes buffer.
 
 ;;;***
 
-;;;### (autoloads nil "repeat" "repeat.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "repeat" "repeat.el" (22086 11930 258062 731000))
 ;;; Generated autoloads from repeat.el
 (push (purecopy '(repeat 0 51)) package--builtin-versions)
 
@@ -23006,8 +23067,8 @@ recently executed command not bound to an input event\".
 
 ;;;***
 
-;;;### (autoloads nil "reporter" "mail/reporter.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "reporter" "mail/reporter.el" (22086 11929
+;;;;;;  938062 731000))
 ;;; Generated autoloads from mail/reporter.el
 
 (autoload 'reporter-submit-bug-report "reporter" "\
@@ -23038,8 +23099,8 @@ mail-sending package is used for editing and sending 
the message.
 
 ;;;***
 
-;;;### (autoloads nil "reposition" "reposition.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "reposition" "reposition.el" (22086 11930 262062
+;;;;;;  731000))
 ;;; Generated autoloads from reposition.el
 
 (autoload 'reposition-window "reposition" "\
@@ -23065,7 +23126,7 @@ first comment line visible (if point is in a comment).
 
 ;;;***
 
-;;;### (autoloads nil "reveal" "reveal.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "reveal" "reveal.el" (22086 11930 262062 731000))
 ;;; Generated autoloads from reveal.el
 
 (autoload 'reveal-mode "reveal" "\
@@ -23100,8 +23161,8 @@ the mode if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21998 46517 18024
-;;;;;;  649000))
+;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (22086 11929 682062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/ring.el
 
 (autoload 'ring-p "ring" "\
@@ -23116,8 +23177,8 @@ Make a ring that can contain SIZE elements.
 
 ;;;***
 
-;;;### (autoloads nil "rlogin" "net/rlogin.el" (22011 58553 765858
-;;;;;;  469000))
+;;;### (autoloads nil "rlogin" "net/rlogin.el" (22086 11930 6062
+;;;;;;  731000))
 ;;; Generated autoloads from net/rlogin.el
 
 (autoload 'rlogin "rlogin" "\
@@ -23161,8 +23222,8 @@ variable.
 
 ;;;***
 
-;;;### (autoloads nil "rmail" "mail/rmail.el" (22011 58553 725858
-;;;;;;  469000))
+;;;### (autoloads nil "rmail" "mail/rmail.el" (22092 27717 884268
+;;;;;;  464000))
 ;;; Generated autoloads from mail/rmail.el
 
 (defvar rmail-file-name (purecopy "~/RMAIL") "\
@@ -23181,7 +23242,7 @@ Its name should end with a slash.")
 
 (autoload 'rmail-movemail-variant-p "rmail" "\
 Return t if the current movemail variant is any of VARIANTS.
-Currently known variants are 'emacs and 'mailutils.
+Currently known variants are `emacs' and `mailutils'.
 
 \(fn &rest VARIANTS)" nil nil)
 
@@ -23359,8 +23420,8 @@ Set PASSWORD to be used for retrieving mail from a POP 
or IMAP server.
 
 ;;;***
 
-;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21989 31537
-;;;;;;  907825 721000))
+;;;### (autoloads nil "rmailout" "mail/rmailout.el" (22086 11929
+;;;;;;  942062 731000))
 ;;; Generated autoloads from mail/rmailout.el
 (put 'rmail-output-file-alist 'risky-local-variable t)
 
@@ -23424,8 +23485,8 @@ than appending to it.  Deletes the message after 
writing if
 
 ;;;***
 
-;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21978 61237
-;;;;;;  666488 269000))
+;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (22086 11930
+;;;;;;  26062 731000))
 ;;; Generated autoloads from nxml/rng-cmpct.el
 
 (autoload 'rng-c-load-schema "rng-cmpct" "\
@@ -23436,8 +23497,8 @@ Return a pattern.
 
 ;;;***
 
-;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (22086 11930
+;;;;;;  30062 731000))
 ;;; Generated autoloads from nxml/rng-nxml.el
 
 (autoload 'rng-nxml-mode-init "rng-nxml" "\
@@ -23449,8 +23510,8 @@ Validation will be enabled if 
`rng-nxml-auto-validate-flag' is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21948 40114
-;;;;;;  322686 453000))
+;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (22086 11930
+;;;;;;  30062 731000))
 ;;; Generated autoloads from nxml/rng-valid.el
 
 (autoload 'rng-validate-mode "rng-valid" "\
@@ -23480,8 +23541,8 @@ to use for finding the schema.
 
 ;;;***
 
-;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (22086 11930 30062
+;;;;;;  731000))
 ;;; Generated autoloads from nxml/rng-xsd.el
 
 (put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 
'rng-xsd-compile)
@@ -23508,8 +23569,8 @@ must be equal.
 
 ;;;***
 
-;;;### (autoloads nil "robin" "international/robin.el" (21953 58033
-;;;;;;  303058 929000))
+;;;### (autoloads nil "robin" "international/robin.el" (22086 11929
+;;;;;;  882062 731000))
 ;;; Generated autoloads from international/robin.el
 
 (autoload 'robin-define-package "robin" "\
@@ -23541,7 +23602,7 @@ Start using robin package NAME, which is a string.
 
 ;;;***
 
-;;;### (autoloads nil "rot13" "rot13.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "rot13" "rot13.el" (22086 11930 266062 731000))
 ;;; Generated autoloads from rot13.el
 
 (autoload 'rot13 "rot13" "\
@@ -23578,8 +23639,8 @@ Toggle the use of ROT13 encoding for the current window.
 
 ;;;***
 
-;;;### (autoloads nil "rst" "textmodes/rst.el" (22034 20008 325500
-;;;;;;  287000))
+;;;### (autoloads nil "rst" "textmodes/rst.el" (22086 11930 338062
+;;;;;;  731000))
 ;;; Generated autoloads from textmodes/rst.el
  (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
 
@@ -23609,8 +23670,8 @@ for modes derived from Text mode, like Mail mode.
 
 ;;;***
 
-;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (22015
-;;;;;;  55603 817705 321000))
+;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (22089
+;;;;;;  51528 360929 316000))
 ;;; Generated autoloads from progmodes/ruby-mode.el
 (push (purecopy '(ruby-mode 1 2)) package--builtin-versions)
 
@@ -23621,14 +23682,14 @@ Major mode for editing Ruby code.
 
 \(fn)" t nil)
 
-(add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\." 
"rb\\|ru\\|rake\\|thor" "\\|jbuilder\\|rabl\\|gemspec\\|podspec" "\\|/" 
"\\(?:Gem\\|Rake\\|Cap\\|Thor" "\\|Puppet\\|Berks" 
"\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode))
+(add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\.\\(?:" 
"rbw?\\|ru\\|rake\\|thor" "\\|jbuilder\\|rabl\\|gemspec\\|podspec" "\\)" "\\|/" 
"\\(?:Gem\\|Rake\\|Cap\\|Thor" "\\|Puppet\\|Berks" 
"\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode))
 
 (dolist (name (list "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")) (add-to-list 
'interpreter-mode-alist (cons (purecopy name) 'ruby-mode)))
 
 ;;;***
 
-;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (22026 25907 643502
-;;;;;;  692000))
+;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (22086 11930 266062
+;;;;;;  731000))
 ;;; Generated autoloads from ruler-mode.el
 (push (purecopy '(ruler-mode 1 6)) package--builtin-versions)
 
@@ -23646,8 +23707,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (22011 58553 441858
-;;;;;;  469000))
+;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (22086 11929 686062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/rx.el
 
 (autoload 'rx-to-string "rx" "\
@@ -23958,15 +24019,15 @@ enclosed in `(and ...)'.
 
 ;;;***
 
-;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (22086 11930
+;;;;;;  6062 731000))
 ;;; Generated autoloads from net/sasl-ntlm.el
 (push (purecopy '(sasl 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "savehist" "savehist.el" (21981 37426 703399
-;;;;;;  97000))
+;;;### (autoloads nil "savehist" "savehist.el" (22086 11930 266062
+;;;;;;  731000))
 ;;; Generated autoloads from savehist.el
 (push (purecopy '(savehist 24)) package--builtin-versions)
 
@@ -23998,8 +24059,8 @@ histories, which is probably undesirable.
 
 ;;;***
 
-;;;### (autoloads nil "saveplace" "saveplace.el" (21822 58098 20521
-;;;;;;  61000))
+;;;### (autoloads nil "saveplace" "saveplace.el" (22086 11930 266062
+;;;;;;  731000))
 ;;; Generated autoloads from saveplace.el
 
 (defvar save-place-mode nil "\
@@ -24020,8 +24081,8 @@ where it was when you previously visited the same file.
 
 ;;;***
 
-;;;### (autoloads nil "scheme" "progmodes/scheme.el" (22011 58553
-;;;;;;  925858 469000))
+;;;### (autoloads nil "scheme" "progmodes/scheme.el" (22086 11930
+;;;;;;  222062 731000))
 ;;; Generated autoloads from progmodes/scheme.el
 
 (autoload 'scheme-mode "scheme" "\
@@ -24060,8 +24121,8 @@ that variable's value is a string.
 
 ;;;***
 
-;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (22086 11929
+;;;;;;  850062 731000))
 ;;; Generated autoloads from gnus/score-mode.el
 
 (autoload 'gnus-score-mode "score-mode" "\
@@ -24074,8 +24135,8 @@ This mode is an extended emacs-lisp mode.
 
 ;;;***
 
-;;;### (autoloads nil "scroll-all" "scroll-all.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "scroll-all" "scroll-all.el" (22089 51528 372929
+;;;;;;  316000))
 ;;; Generated autoloads from scroll-all.el
 
 (defvar scroll-all-mode nil "\
@@ -24100,8 +24161,8 @@ one window apply to all visible windows in the same 
frame.
 
 ;;;***
 
-;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (22086 11930
+;;;;;;  270062 731000))
 ;;; Generated autoloads from scroll-lock.el
 
 (autoload 'scroll-lock-mode "scroll-lock" "\
@@ -24117,16 +24178,16 @@ vertically fixed relative to window boundaries during 
scrolling.
 
 ;;;***
 
-;;;### (autoloads nil "secrets" "net/secrets.el" (22011 58553 765858
-;;;;;;  469000))
+;;;### (autoloads nil "secrets" "net/secrets.el" (22086 11930 6062
+;;;;;;  731000))
 ;;; Generated autoloads from net/secrets.el
 (when (featurep 'dbusbind)
  (autoload 'secrets-show-secrets "secrets" nil t))
 
 ;;;***
 
-;;;### (autoloads nil "semantic" "cedet/semantic.el" (21948 40114
-;;;;;;  186686 453000))
+;;;### (autoloads nil "semantic" "cedet/semantic.el" (22092 27717
+;;;;;;  568268 464000))
 ;;; Generated autoloads from cedet/semantic.el
 (push (purecopy '(semantic 2 2)) package--builtin-versions)
 
@@ -24184,7 +24245,7 @@ Semantic mode.
 ;;;***
 
 ;;;### (autoloads nil "semantic/bovine/grammar" 
"cedet/semantic/bovine/grammar.el"
-;;;;;;  (21670 32330 885624 725000))
+;;;;;;  (22086 11929 554062 731000))
 ;;; Generated autoloads from cedet/semantic/bovine/grammar.el
 
 (autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\
@@ -24195,7 +24256,7 @@ Major mode for editing Bovine grammars.
 ;;;***
 
 ;;;### (autoloads nil "semantic/wisent/grammar" 
"cedet/semantic/wisent/grammar.el"
-;;;;;;  (21670 32330 885624 725000))
+;;;;;;  (22086 11929 578062 731000))
 ;;; Generated autoloads from cedet/semantic/wisent/grammar.el
 
 (autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\
@@ -24205,8 +24266,8 @@ Major mode for editing Wisent grammars.
 
 ;;;***
 
-;;;### (autoloads nil "sendmail" "mail/sendmail.el" (22026 25907
-;;;;;;  603502 692000))
+;;;### (autoloads nil "sendmail" "mail/sendmail.el" (22086 11929
+;;;;;;  946062 731000))
 ;;; Generated autoloads from mail/sendmail.el
 
 (defvar mail-from-style 'default "\
@@ -24487,14 +24548,14 @@ Like `mail' command, but display mail buffer in 
another frame.
 
 ;;;***
 
-;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (22065 61995 842407
-;;;;;;  852000))
+;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (22086 11929 686062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/seq.el
-(push (purecopy '(seq 2 2)) package--builtin-versions)
+(push (purecopy '(seq 2 3)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "server" "server.el" (22056 47028 775798 795000))
+;;;### (autoloads nil "server" "server.el" (22093 48588 588393 539000))
 ;;; Generated autoloads from server.el
 
 (put 'server-host 'risky-local-variable t)
@@ -24561,7 +24622,7 @@ only these files will be asked to be saved.
 
 ;;;***
 
-;;;### (autoloads nil "ses" "ses.el" (21990 52406 736500 385000))
+;;;### (autoloads nil "ses" "ses.el" (22092 27718 416268 464000))
 ;;; Generated autoloads from ses.el
 
 (autoload 'ses-mode "ses" "\
@@ -24605,8 +24666,8 @@ formula:
 
 ;;;***
 
-;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (22011
-;;;;;;  58554 69858 469000))
+;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (22092
+;;;;;;  27718 512268 464000))
 ;;; Generated autoloads from textmodes/sgml-mode.el
 
 (autoload 'sgml-mode "sgml-mode" "\
@@ -24671,8 +24732,8 @@ To work around that, do:
 
 ;;;***
 
-;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (22061
-;;;;;;  64938 532287 963000))
+;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (22092
+;;;;;;  27718 260268 464000))
 ;;; Generated autoloads from progmodes/sh-script.el
 (push (purecopy '(sh-script 2 0 6)) package--builtin-versions)
 (put 'sh-shell 'safe-local-variable 'symbolp)
@@ -24735,8 +24796,8 @@ with your script for an edit-interpret-debug cycle.
 
 ;;;***
 
-;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (22026 25907
-;;;;;;  583502 692000))
+;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (22086 11929
+;;;;;;  686062 731000))
 ;;; Generated autoloads from emacs-lisp/shadow.el
 
 (autoload 'list-load-path-shadows "shadow" "\
@@ -24785,8 +24846,8 @@ function, `load-path-shadows-find'.
 
 ;;;***
 
-;;;### (autoloads nil "shadowfile" "shadowfile.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "shadowfile" "shadowfile.el" (22086 11930 278062
+;;;;;;  731000))
 ;;; Generated autoloads from shadowfile.el
 
 (autoload 'shadow-define-cluster "shadowfile" "\
@@ -24824,7 +24885,7 @@ Set up file shadowing.
 
 ;;;***
 
-;;;### (autoloads nil "shell" "shell.el" (21896 48221 754207 816000))
+;;;### (autoloads nil "shell" "shell.el" (22086 11930 278062 731000))
 ;;; Generated autoloads from shell.el
 
 (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
@@ -24872,7 +24933,7 @@ Otherwise, one argument `-i' is passed to the shell.
 
 ;;;***
 
-;;;### (autoloads nil "shr" "net/shr.el" (22047 32042 328736 723000))
+;;;### (autoloads nil "shr" "net/shr.el" (22087 9807 382279 951000))
 ;;; Generated autoloads from net/shr.el
 
 (autoload 'shr-render-region "shr" "\
@@ -24889,8 +24950,8 @@ DOM should be a parse tree as generated by
 
 ;;;***
 
-;;;### (autoloads nil "sieve" "gnus/sieve.el" (21972 22452 270264
-;;;;;;  357000))
+;;;### (autoloads nil "sieve" "gnus/sieve.el" (22086 11929 850062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/sieve.el
 
 (autoload 'sieve-manage "sieve" "\
@@ -24915,8 +24976,8 @@ DOM should be a parse tree as generated by
 
 ;;;***
 
-;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21931 31023
-;;;;;;  733164 572000))
+;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (22086 11929
+;;;;;;  850062 731000))
 ;;; Generated autoloads from gnus/sieve-mode.el
 
 (autoload 'sieve-mode "sieve-mode" "\
@@ -24931,8 +24992,8 @@ Turning on Sieve mode runs `sieve-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "simula" "progmodes/simula.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "simula" "progmodes/simula.el" (22092 27718
+;;;;;;  288268 464000))
 ;;; Generated autoloads from progmodes/simula.el
 
 (autoload 'simula-mode "simula" "\
@@ -24953,22 +25014,22 @@ Variables controlling indentation style:
     with respect to the previous line of the statement.
  `simula-label-offset' -4711
     Offset of SIMULA label lines relative to usual indentation.
- `simula-if-indent' '(0 . 0)
+ `simula-if-indent' (0 . 0)
     Extra indentation of THEN and ELSE with respect to the starting IF.
     Value is a cons cell, the car is extra THEN indentation and the cdr
     extra ELSE indentation.  IF after ELSE is indented as the starting IF.
- `simula-inspect-indent' '(0 . 0)
+ `simula-inspect-indent' (0 . 0)
     Extra indentation of WHEN and OTHERWISE with respect to the
     corresponding INSPECT.  Value is a cons cell, the car is
     extra WHEN indentation and the cdr extra OTHERWISE indentation.
  `simula-electric-indent' nil
     If this variable is non-nil, `simula-indent-line'
     will check the previous line to see if it has to be reindented.
- `simula-abbrev-keyword' 'upcase
+ `simula-abbrev-keyword' `upcase'
     Determine how SIMULA keywords will be expanded.  Value is one of
     the symbols `upcase', `downcase', `capitalize', (as in) `abbrev-table',
     or nil if they should not be changed.
- `simula-abbrev-stdproc' 'abbrev-table
+ `simula-abbrev-stdproc' `abbrev-table'
     Determine how standard SIMULA procedure and class names will be
     expanded.  Value is one of the symbols `upcase', `downcase', `capitalize',
     (as in) `abbrev-table', or nil if they should not be changed.
@@ -24980,8 +25041,8 @@ with no arguments, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "skeleton" "skeleton.el" (22026 25907 643502
-;;;;;;  692000))
+;;;### (autoloads nil "skeleton" "skeleton.el" (22086 11930 290062
+;;;;;;  731000))
 ;;; Generated autoloads from skeleton.el
 
 (defvar skeleton-filter-function 'identity "\
@@ -25100,8 +25161,8 @@ twice for the others.
 
 ;;;***
 
-;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (22092 27718
+;;;;;;  548268 464000))
 ;;; Generated autoloads from vc/smerge-mode.el
 
 (autoload 'smerge-ediff "smerge-mode" "\
@@ -25128,8 +25189,8 @@ If no conflict maker is found, turn off `smerge-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "smiley" "gnus/smiley.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "smiley" "gnus/smiley.el" (22086 11929 850062
+;;;;;;  731000))
 ;;; Generated autoloads from gnus/smiley.el
 
 (autoload 'smiley-region "smiley" "\
@@ -25146,8 +25207,8 @@ interactively.  If there's no argument, do it at the 
current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (22086 11929
+;;;;;;  950062 731000))
 ;;; Generated autoloads from mail/smtpmail.el
 
 (autoload 'smtpmail-send-it "smtpmail" "\
@@ -25162,8 +25223,8 @@ Send mail that was queued as a result of setting 
`smtpmail-queue-mail'.
 
 ;;;***
 
-;;;### (autoloads nil "snake" "play/snake.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "snake" "play/snake.el" (22086 11930 130062
+;;;;;;  731000))
 ;;; Generated autoloads from play/snake.el
 
 (autoload 'snake "snake" "\
@@ -25186,8 +25247,8 @@ Snake mode keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (22086 11930
+;;;;;;  10062 731000))
 ;;; Generated autoloads from net/snmp-mode.el
 
 (autoload 'snmp-mode "snmp-mode" "\
@@ -25216,22 +25277,15 @@ then `snmpv2-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "soap-client" "net/soap-client.el" (22061 64938
-;;;;;;  516287 963000))
+;;;### (autoloads nil "soap-client" "net/soap-client.el" (22092 27717
+;;;;;;  988268 464000))
 ;;; Generated autoloads from net/soap-client.el
-(push (purecopy '(soap-client 3 0 1)) package--builtin-versions)
-
-;;;***
-
-;;;### (autoloads nil "soap-inspect" "net/soap-inspect.el" (22061
-;;;;;;  64938 516287 963000))
-;;; Generated autoloads from net/soap-inspect.el
-(push (purecopy '(soap-client 3 0 1)) package--builtin-versions)
+(push (purecopy '(soap-client 3 0 2)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "solar" "calendar/solar.el" (21849 48176 337264
-;;;;;;  443000))
+;;;### (autoloads nil "solar" "calendar/solar.el" (22086 11929 534062
+;;;;;;  731000))
 ;;; Generated autoloads from calendar/solar.el
 
 (autoload 'sunrise-sunset "solar" "\
@@ -25246,8 +25300,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "solitaire" "play/solitaire.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "solitaire" "play/solitaire.el" (22086 11930
+;;;;;;  130062 731000))
 ;;; Generated autoloads from play/solitaire.el
 
 (autoload 'solitaire "solitaire" "\
@@ -25322,7 +25376,7 @@ Pick your favorite shortcuts:
 
 ;;;***
 
-;;;### (autoloads nil "sort" "sort.el" (22011 58553 993858 469000))
+;;;### (autoloads nil "sort" "sort.el" (22086 11930 290062 731000))
 ;;; Generated autoloads from sort.el
 (put 'sort-fold-case 'safe-local-variable 'booleanp)
 
@@ -25497,7 +25551,7 @@ is non-nil, it also prints a message describing the 
number of deletions.
 
 ;;;***
 
-;;;### (autoloads nil "spam" "gnus/spam.el" (21981 37426 607399 97000))
+;;;### (autoloads nil "spam" "gnus/spam.el" (22086 11929 854062 731000))
 ;;; Generated autoloads from gnus/spam.el
 
 (autoload 'spam-initialize "spam" "\
@@ -25511,8 +25565,8 @@ installed through `spam-necessary-extra-headers'.
 
 ;;;***
 
-;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (22011
-;;;;;;  58553 601858 469000))
+;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (22086
+;;;;;;  11929 850062 731000))
 ;;; Generated autoloads from gnus/spam-report.el
 
 (autoload 'spam-report-process-queue "spam-report" "\
@@ -25554,8 +25608,8 @@ Spam reports will be queued with the method used when
 
 ;;;***
 
-;;;### (autoloads nil "speedbar" "speedbar.el" (22011 58553 993858
-;;;;;;  469000))
+;;;### (autoloads nil "speedbar" "speedbar.el" (22092 27718 452268
+;;;;;;  464000))
 ;;; Generated autoloads from speedbar.el
 
 (defalias 'speedbar 'speedbar-frame-mode)
@@ -25579,8 +25633,8 @@ selected.  If the speedbar frame is active, then select 
the attached frame.
 
 ;;;***
 
-;;;### (autoloads nil "spook" "play/spook.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "spook" "play/spook.el" (22086 11930 130062
+;;;;;;  731000))
 ;;; Generated autoloads from play/spook.el
 
 (autoload 'spook "spook" "\
@@ -25595,8 +25649,8 @@ Return a vector containing the lines from 
`spook-phrases-file'.
 
 ;;;***
 
-;;;### (autoloads nil "sql" "progmodes/sql.el" (22011 58553 929858
-;;;;;;  469000))
+;;;### (autoloads nil "sql" "progmodes/sql.el" (22092 27718 320268
+;;;;;;  464000))
 ;;; Generated autoloads from progmodes/sql.el
 (push (purecopy '(sql 3 5)) package--builtin-versions)
 
@@ -25954,7 +26008,7 @@ your might try undecided-dos as a coding system.  If 
this doesn't help,
 Try to set `comint-output-filter-functions' like this:
 
 \(setq comint-output-filter-functions (append comint-output-filter-functions
-                                            '(comint-strip-ctrl-m)))
+                                            \\='(comint-strip-ctrl-m)))
 
 \(Type \\[describe-mode] in the SQL buffer for a list of commands.)
 
@@ -26062,15 +26116,15 @@ Run vsql as an inferior process.
 
 ;;;***
 
-;;;### (autoloads nil "srecode" "cedet/srecode.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "srecode" "cedet/srecode.el" (22086 11929 578062
+;;;;;;  731000))
 ;;; Generated autoloads from cedet/srecode.el
 (push (purecopy '(srecode 1 2)) package--builtin-versions)
 
 ;;;***
 
 ;;;### (autoloads nil "srecode/srt-mode" "cedet/srecode/srt-mode.el"
-;;;;;;  (21998 46516 910024 649000))
+;;;;;;  (22086 11929 582062 731000))
 ;;; Generated autoloads from cedet/srecode/srt-mode.el
 
 (autoload 'srecode-template-mode "srecode/srt-mode" "\
@@ -26082,8 +26136,8 @@ Major-mode for writing SRecode macros.
 
 ;;;***
 
-;;;### (autoloads nil "starttls" "gnus/starttls.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "starttls" "gnus/starttls.el" (22086 11929
+;;;;;;  854062 731000))
 ;;; Generated autoloads from gnus/starttls.el
 
 (autoload 'starttls-open-stream "starttls" "\
@@ -26106,8 +26160,8 @@ GnuTLS requires a port number.
 
 ;;;***
 
-;;;### (autoloads nil "strokes" "strokes.el" (21981 37426 735399
-;;;;;;  97000))
+;;;### (autoloads nil "strokes" "strokes.el" (22086 11930 294062
+;;;;;;  731000))
 ;;; Generated autoloads from strokes.el
 
 (autoload 'strokes-global-set-stroke "strokes" "\
@@ -26220,8 +26274,8 @@ Read a complex stroke and insert its glyph into the 
current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "studly" "play/studly.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "studly" "play/studly.el" (22086 11930 130062
+;;;;;;  731000))
 ;;; Generated autoloads from play/studly.el
 
 (autoload 'studlify-region "studly" "\
@@ -26241,8 +26295,8 @@ Studlify-case the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "subword" "progmodes/subword.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "subword" "progmodes/subword.el" (22086 11930
+;;;;;;  226062 731000))
 ;;; Generated autoloads from progmodes/subword.el
 
 (define-obsolete-function-alias 'capitalized-words-mode 'subword-mode "25.1")
@@ -26334,8 +26388,8 @@ See `superword-mode' for more information on Superword 
mode.
 
 ;;;***
 
-;;;### (autoloads nil "supercite" "mail/supercite.el" (21852 24381
-;;;;;;  697240 10000))
+;;;### (autoloads nil "supercite" "mail/supercite.el" (22086 11929
+;;;;;;  950062 731000))
 ;;; Generated autoloads from mail/supercite.el
 
 (autoload 'sc-cite-original "supercite" "\
@@ -26367,8 +26421,8 @@ and `sc-post-hook' is run after the guts of this 
function.
 
 ;;;***
 
-;;;### (autoloads nil "t-mouse" "t-mouse.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "t-mouse" "t-mouse.el" (22086 11930 298062
+;;;;;;  731000))
 ;;; Generated autoloads from t-mouse.el
 
 (define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
@@ -26396,7 +26450,7 @@ It relies on the `gpm' daemon being activated.
 
 ;;;***
 
-;;;### (autoloads nil "tabify" "tabify.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "tabify" "tabify.el" (22086 11930 298062 731000))
 ;;; Generated autoloads from tabify.el
 
 (autoload 'untabify "tabify" "\
@@ -26425,8 +26479,8 @@ The variable `tab-width' controls the spacing of tab 
stops.
 
 ;;;***
 
-;;;### (autoloads nil "table" "textmodes/table.el" (21998 46517 298024
-;;;;;;  649000))
+;;;### (autoloads nil "table" "textmodes/table.el" (22092 27718 520268
+;;;;;;  464000))
 ;;; Generated autoloads from textmodes/table.el
 
 (autoload 'table-insert "table" "\
@@ -26796,7 +26850,7 @@ WHERE is provided the cell and table at that location 
is reported.
 (autoload 'table-generate-source "table" "\
 Generate source of the current table in the specified language.
 LANGUAGE is a symbol that specifies the language to describe the
-structure of the table.  It must be either 'html, 'latex or 'cals.
+structure of the table.  It must be either `html', `latex' or `cals'.
 The resulted source text is inserted into DEST-BUFFER and the buffer
 object is returned.  When DEST-BUFFER is omitted or nil the default
 buffer specified in `table-dest-buffer-name' is used.  In this case
@@ -26885,7 +26939,7 @@ delimiter regular expressions.  This parsing determines 
the number of
 columns and rows of the table automatically.  If COL-DELIM-REGEXP and
 ROW-DELIM-REGEXP are omitted the result table has only one cell and
 the entire region contents is placed in that cell.  Optional JUSTIFY
-is one of 'left, 'center or 'right, which specifies the cell
+is one of `left', `center' or `right', which specifies the cell
 justification.  Optional MIN-CELL-WIDTH specifies the minimum cell
 width.  Optional COLUMNS specify the number of columns when
 ROW-DELIM-REGEXP is not specified.
@@ -26997,7 +27051,7 @@ converts a table into plain text without frames.  It is 
a companion to
 
 ;;;***
 
-;;;### (autoloads nil "talk" "talk.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "talk" "talk.el" (22086 11930 298062 731000))
 ;;; Generated autoloads from talk.el
 
 (autoload 'talk-connect "talk" "\
@@ -27012,8 +27066,8 @@ Connect to the Emacs talk group from the current X 
display or tty frame.
 
 ;;;***
 
-;;;### (autoloads nil "tar-mode" "tar-mode.el" (21704 50495 455324
-;;;;;;  752000))
+;;;### (autoloads nil "tar-mode" "tar-mode.el" (22086 11930 298062
+;;;;;;  731000))
 ;;; Generated autoloads from tar-mode.el
 
 (autoload 'tar-mode "tar-mode" "\
@@ -27036,8 +27090,8 @@ See also: variables `tar-update-datestamp' and 
`tar-anal-blocksize'.
 
 ;;;***
 
-;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21842 42581 539414
-;;;;;;  570000))
+;;;### (autoloads nil "tcl" "progmodes/tcl.el" (22086 11930 230062
+;;;;;;  731000))
 ;;; Generated autoloads from progmodes/tcl.el
 
 (autoload 'tcl-mode "tcl" "\
@@ -27085,8 +27139,8 @@ Prefix argument means invert sense of 
`tcl-use-smart-word-finder'.
 
 ;;;***
 
-;;;### (autoloads nil "telnet" "net/telnet.el" (21852 24381 767239
-;;;;;;  782000))
+;;;### (autoloads nil "telnet" "net/telnet.el" (22086 11930 14062
+;;;;;;  731000))
 ;;; Generated autoloads from net/telnet.el
 
 (autoload 'telnet "telnet" "\
@@ -27111,7 +27165,7 @@ Normally input is edited in Emacs and sent a line at a 
time.
 
 ;;;***
 
-;;;### (autoloads nil "term" "term.el" (22042 14122 209169 136000))
+;;;### (autoloads nil "term" "term.el" (22102 63557 312509 103000))
 ;;; Generated autoloads from term.el
 
 (autoload 'make-term "term" "\
@@ -27153,8 +27207,8 @@ use in that buffer.
 
 ;;;***
 
-;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21998
-;;;;;;  46517 22024 649000))
+;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (22086
+;;;;;;  11929 686062 731000))
 ;;; Generated autoloads from emacs-lisp/testcover.el
 
 (autoload 'testcover-this-defun "testcover" "\
@@ -27164,8 +27218,8 @@ Start coverage on function under point.
 
 ;;;***
 
-;;;### (autoloads nil "tetris" "play/tetris.el" (22000 1842 148539
-;;;;;;  693000))
+;;;### (autoloads nil "tetris" "play/tetris.el" (22086 11930 130062
+;;;;;;  731000))
 ;;; Generated autoloads from play/tetris.el
 (push (purecopy '(tetris 2 1)) package--builtin-versions)
 
@@ -27190,8 +27244,8 @@ tetris-mode keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (22064 41138
-;;;;;;  13468 395000))
+;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (22092 27718
+;;;;;;  524268 464000))
 ;;; Generated autoloads from textmodes/tex-mode.el
 
 (defvar tex-shell-file-name nil "\
@@ -27293,7 +27347,7 @@ If two printers are not enough of a choice, you can set 
the variable
 for example,
 
     (setq tex-alt-dvi-print-command
-         '(format \"lpr -P%s\" (read-string \"Use printer: \")))
+         \\='(format \"lpr -P%s\" (read-string \"Use printer: \")))
 
 would tell \\[tex-print] with a prefix argument to ask you which printer to
 use.")
@@ -27492,8 +27546,8 @@ Major mode to edit DocTeX files.
 
 ;;;***
 
-;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (22011 58554
-;;;;;;  81858 469000))
+;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (22086 11930
+;;;;;;  350062 731000))
 ;;; Generated autoloads from textmodes/texinfmt.el
 
 (autoload 'texinfo-format-buffer "texinfmt" "\
@@ -27532,8 +27586,8 @@ if large.  You can use `Info-split' to do this manually.
 
 ;;;***
 
-;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (22026 25907
-;;;;;;  667502 692000))
+;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (22086 11930
+;;;;;;  350062 731000))
 ;;; Generated autoloads from textmodes/texinfo.el
 
 (defvar texinfo-open-quote (purecopy "``") "\
@@ -27617,8 +27671,8 @@ value of `texinfo-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "thai-util" "language/thai-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "thai-util" "language/thai-util.el" (22086
+;;;;;;  11929 902062 731000))
 ;;; Generated autoloads from language/thai-util.el
 
 (autoload 'thai-compose-region "thai-util" "\
@@ -27645,8 +27699,8 @@ Compose Thai characters in the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "thingatpt" "thingatpt.el" (22011 58554 85858
-;;;;;;  469000))
+;;;### (autoloads nil "thingatpt" "thingatpt.el" (22086 11930 354062
+;;;;;;  731000))
 ;;; Generated autoloads from thingatpt.el
 
 (autoload 'forward-thing "thingatpt" "\
@@ -27710,7 +27764,7 @@ Return the Lisp list at point, or nil if none is found.
 
 ;;;***
 
-;;;### (autoloads nil "thumbs" "thumbs.el" (21993 28596 414597 473000))
+;;;### (autoloads nil "thumbs" "thumbs.el" (22086 11930 354062 731000))
 ;;; Generated autoloads from thumbs.el
 
 (autoload 'thumbs-find-thumb "thumbs" "\
@@ -27744,15 +27798,15 @@ In dired, call the setroot program on the image at 
point.
 
 ;;;***
 
-;;;### (autoloads nil "thunk" "emacs-lisp/thunk.el" (22064 41137
-;;;;;;  961468 395000))
+;;;### (autoloads nil "thunk" "emacs-lisp/thunk.el" (22086 11929
+;;;;;;  690062 731000))
 ;;; Generated autoloads from emacs-lisp/thunk.el
 (push (purecopy '(thunk 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (22086
+;;;;;;  11929 906062 731000))
 ;;; Generated autoloads from language/tibet-util.el
 
 (autoload 'tibetan-char-p "tibet-util" "\
@@ -27825,8 +27879,8 @@ See also docstring of the function 
tibetan-compose-region.
 
 ;;;***
 
-;;;### (autoloads nil "tildify" "textmodes/tildify.el" (22026 25907
-;;;;;;  667502 692000))
+;;;### (autoloads nil "tildify" "textmodes/tildify.el" (22086 11930
+;;;;;;  354062 731000))
 ;;; Generated autoloads from textmodes/tildify.el
 (push (purecopy '(tildify 4 6 1)) package--builtin-versions)
 
@@ -27892,7 +27946,7 @@ variable will be set to the representation.
 
 ;;;***
 
-;;;### (autoloads nil "time" "time.el" (22026 25907 667502 692000))
+;;;### (autoloads nil "time" "time.el" (22086 11930 354062 731000))
 ;;; Generated autoloads from time.el
 
 (defvar display-time-day-and-date nil "\
@@ -27954,8 +28008,8 @@ Return a string giving the duration of the Emacs 
initialization.
 
 ;;;***
 
-;;;### (autoloads nil "time-date" "calendar/time-date.el" (22000
-;;;;;;  55581 510930 477000))
+;;;### (autoloads nil "time-date" "calendar/time-date.el" (22086
+;;;;;;  11929 538062 731000))
 ;;; Generated autoloads from calendar/time-date.el
 
 (autoload 'date-to-time "time-date" "\
@@ -28058,8 +28112,8 @@ Convert the time interval in seconds to a short string.
 
 ;;;***
 
-;;;### (autoloads nil "time-stamp" "time-stamp.el" (21980 16568 89544
-;;;;;;  893000))
+;;;### (autoloads nil "time-stamp" "time-stamp.el" (22092 27718 528268
+;;;;;;  464000))
 ;;; 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)
@@ -28099,8 +28153,8 @@ With ARG, turn time stamping on if and only if arg is 
positive.
 
 ;;;***
 
-;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21998
-;;;;;;  46516 882024 649000))
+;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (22086
+;;;;;;  11929 538062 731000))
 ;;; Generated autoloads from calendar/timeclock.el
 (push (purecopy '(timeclock 2 6 1)) package--builtin-versions)
 
@@ -28210,7 +28264,7 @@ relative only to the time worked today, and not to past 
time.
 ;;;***
 
 ;;;### (autoloads nil "titdic-cnv" "international/titdic-cnv.el"
-;;;;;;  (22011 58553 673858 469000))
+;;;;;;  (22086 11929 886062 731000))
 ;;; Generated autoloads from international/titdic-cnv.el
 
 (autoload 'titdic-convert "titdic-cnv" "\
@@ -28232,7 +28286,7 @@ To get complete usage, invoke \"emacs -batch -f 
batch-titdic-convert -h\".
 
 ;;;***
 
-;;;### (autoloads nil "tmm" "tmm.el" (21907 48688 873360 195000))
+;;;### (autoloads nil "tmm" "tmm.el" (22086 11930 354062 731000))
 ;;; Generated autoloads from tmm.el
  (define-key global-map "\M-`" 'tmm-menubar)
  (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -28274,8 +28328,8 @@ Its value should be an event that has a binding in MENU.
 
 ;;;***
 
-;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (22015
-;;;;;;  55603 665705 321000))
+;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (22086
+;;;;;;  11929 538062 731000))
 ;;; Generated autoloads from calendar/todo-mode.el
 
 (autoload 'todo-show "todo-mode" "\
@@ -28342,8 +28396,8 @@ Mode for displaying and reprioritizing top priority 
Todo.
 
 ;;;***
 
-;;;### (autoloads nil "tool-bar" "tool-bar.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "tool-bar" "tool-bar.el" (22086 11930 358062
+;;;;;;  731000))
 ;;; Generated autoloads from tool-bar.el
 
 (autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\
@@ -28413,8 +28467,8 @@ holds a keymap.
 
 ;;;***
 
-;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (22086 11929 690062
+;;;;;;  731000))
 ;;; Generated autoloads from emacs-lisp/tq.el
 
 (autoload 'tq-create "tq" "\
@@ -28427,8 +28481,8 @@ to a tcp server on another machine.
 
 ;;;***
 
-;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (22086 11929
+;;;;;;  690062 731000))
 ;;; Generated autoloads from emacs-lisp/trace.el
 
 (defvar trace-buffer "*trace-output*" "\
@@ -28473,7 +28527,7 @@ the output buffer or changing the window configuration.
 
 ;;;***
 
-;;;### (autoloads nil "tramp" "net/tramp.el" (22064 41138 9468 395000))
+;;;### (autoloads nil "tramp" "net/tramp.el" (22092 27718 8268 464000))
 ;;; Generated autoloads from net/tramp.el
 
 (defvar tramp-mode t "\
@@ -28487,8 +28541,8 @@ Tramp filename syntax to be used.
 
 It can have the following values:
 
-  'ftp -- Ange-FTP respective EFS like syntax (GNU Emacs default)
-  'sep -- Syntax as defined for XEmacs.")
+  `ftp' -- Ange-FTP respective EFS like syntax (GNU Emacs default)
+  `sep' -- Syntax as defined for XEmacs.")
 
 (custom-autoload 'tramp-syntax "tramp" t)
 
@@ -28588,8 +28642,8 @@ Discard Tramp from loading remote files.
 
 ;;;***
 
-;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (22086 11930
+;;;;;;  14062 731000))
 ;;; Generated autoloads from net/tramp-ftp.el
 
 (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\
@@ -28599,8 +28653,8 @@ Discard Tramp from loading remote files.
 
 ;;;***
 
-;;;### (autoloads nil "tutorial" "tutorial.el" (22011 58554 85858
-;;;;;;  469000))
+;;;### (autoloads nil "tutorial" "tutorial.el" (22086 11930 358062
+;;;;;;  731000))
 ;;; Generated autoloads from tutorial.el
 
 (autoload 'help-with-tutorial "tutorial" "\
@@ -28624,8 +28678,8 @@ resumed later.
 
 ;;;***
 
-;;;### (autoloads nil "tv-util" "language/tv-util.el" (21855 577
-;;;;;;  57945 485000))
+;;;### (autoloads nil "tv-util" "language/tv-util.el" (22086 11929
+;;;;;;  906062 731000))
 ;;; Generated autoloads from language/tv-util.el
 
 (autoload 'tai-viet-composition-function "tv-util" "\
@@ -28635,8 +28689,8 @@ resumed later.
 
 ;;;***
 
-;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21998
-;;;;;;  46517 298024 649000))
+;;;### (autoloads nil "two-column" "textmodes/two-column.el" (22086
+;;;;;;  11930 354062 731000))
 ;;; Generated autoloads from textmodes/two-column.el
  (autoload '2C-command "two-column" () t 'keymap)
  (global-set-key "\C-x6" '2C-command)
@@ -28683,8 +28737,8 @@ First column's text    sSs  Second column's text
 
 ;;;***
 
-;;;### (autoloads nil "type-break" "type-break.el" (22011 58554 85858
-;;;;;;  469000))
+;;;### (autoloads nil "type-break" "type-break.el" (22086 11930 358062
+;;;;;;  731000))
 ;;; Generated autoloads from type-break.el
 
 (defvar type-break-mode nil "\
@@ -28816,7 +28870,7 @@ FRAC should be the inverse of the fractional value; for 
example, a value of
 
 ;;;***
 
-;;;### (autoloads nil "uce" "mail/uce.el" (22026 25907 603502 692000))
+;;;### (autoloads nil "uce" "mail/uce.el" (22086 11929 950062 731000))
 ;;; Generated autoloads from mail/uce.el
 
 (autoload 'uce-reply-to-uce "uce" "\
@@ -28830,7 +28884,7 @@ You might need to set `uce-mail-reader' before using 
this.
 ;;;***
 
 ;;;### (autoloads nil "ucs-normalize" "international/ucs-normalize.el"
-;;;;;;  (21670 32331 385639 720000))
+;;;;;;  (22086 11929 886062 731000))
 ;;; Generated autoloads from international/ucs-normalize.el
 
 (autoload 'ucs-normalize-NFD-region "ucs-normalize" "\
@@ -28895,8 +28949,8 @@ Normalize the string STR by the Unicode NFC and Mac 
OS's HFS Plus.
 
 ;;;***
 
-;;;### (autoloads nil "underline" "textmodes/underline.el" (21670
-;;;;;;  32331 885635 586000))
+;;;### (autoloads nil "underline" "textmodes/underline.el" (22086
+;;;;;;  11930 354062 731000))
 ;;; Generated autoloads from textmodes/underline.el
 
 (autoload 'underline-region "underline" "\
@@ -28916,8 +28970,8 @@ which specify the range to operate on.
 
 ;;;***
 
-;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "unrmail" "mail/unrmail.el" (22086 11929 950062
+;;;;;;  731000))
 ;;; Generated autoloads from mail/unrmail.el
 
 (autoload 'batch-unrmail "unrmail" "\
@@ -28937,8 +28991,8 @@ The variable `unrmail-mbox-format' controls which mbox 
format to use.
 
 ;;;***
 
-;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (22086 11929
+;;;;;;  690062 731000))
 ;;; Generated autoloads from emacs-lisp/unsafep.el
 
 (autoload 'unsafep "unsafep" "\
@@ -28950,7 +29004,7 @@ UNSAFEP-VARS is a list of symbols with local bindings.
 
 ;;;***
 
-;;;### (autoloads nil "url" "url/url.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "url" "url/url.el" (22086 11930 366062 731000))
 ;;; Generated autoloads from url/url.el
 
 (autoload 'url-retrieve "url" "\
@@ -28997,8 +29051,8 @@ no further processing).  URL is either a string or a 
parsed URL.
 
 ;;;***
 
-;;;### (autoloads nil "url-auth" "url/url-auth.el" (21989 31537 943825
-;;;;;;  721000))
+;;;### (autoloads nil "url-auth" "url/url-auth.el" (22092 27718 528268
+;;;;;;  464000))
 ;;; Generated autoloads from url/url-auth.el
 
 (autoload 'url-get-authentication "url-auth" "\
@@ -29039,8 +29093,8 @@ RATING   a rating between 1 and 10 of the strength of 
the authentication.
 
 ;;;***
 
-;;;### (autoloads nil "url-cache" "url/url-cache.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-cache" "url/url-cache.el" (22086 11930
+;;;;;;  362062 731000))
 ;;; Generated autoloads from url/url-cache.el
 
 (autoload 'url-store-in-cache "url-cache" "\
@@ -29061,8 +29115,8 @@ Extract FNAM from the local disk cache.
 
 ;;;***
 
-;;;### (autoloads nil "url-cid" "url/url-cid.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-cid" "url/url-cid.el" (22086 11930 362062
+;;;;;;  731000))
 ;;; Generated autoloads from url/url-cid.el
 
 (autoload 'url-cid "url-cid" "\
@@ -29072,8 +29126,8 @@ Extract FNAM from the local disk cache.
 
 ;;;***
 
-;;;### (autoloads nil "url-dav" "url/url-dav.el" (22011 58554 85858
-;;;;;;  469000))
+;;;### (autoloads nil "url-dav" "url/url-dav.el" (22086 11930 362062
+;;;;;;  731000))
 ;;; Generated autoloads from url/url-dav.el
 
 (autoload 'url-dav-supported-p "url-dav" "\
@@ -29107,8 +29161,8 @@ added to this list, so most requests can just pass in 
nil.
 
 ;;;***
 
-;;;### (autoloads nil "url-file" "url/url-file.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-file" "url/url-file.el" (22086 11930 362062
+;;;;;;  731000))
 ;;; Generated autoloads from url/url-file.el
 
 (autoload 'url-file "url-file" "\
@@ -29118,8 +29172,8 @@ Handle file: and ftp: URLs.
 
 ;;;***
 
-;;;### (autoloads nil "url-gw" "url/url-gw.el" (22011 58554 85858
-;;;;;;  469000))
+;;;### (autoloads nil "url-gw" "url/url-gw.el" (22086 11930 362062
+;;;;;;  731000))
 ;;; Generated autoloads from url/url-gw.el
 
 (autoload 'url-gateway-nslookup-host "url-gw" "\
@@ -29140,8 +29194,8 @@ overriding the value of `url-gateway-method'.
 
 ;;;***
 
-;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (22065
-;;;;;;  61995 878407 852000))
+;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (22089
+;;;;;;  51528 372929 316000))
 ;;; Generated autoloads from url/url-handlers.el
 
 (defvar url-handler-mode nil "\
@@ -29195,8 +29249,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-http" "url/url-http.el" (22018 31799 119263
-;;;;;;  120000))
+;;;### (autoloads nil "url-http" "url/url-http.el" (22092 27718 532268
+;;;;;;  464000))
 ;;; Generated autoloads from url/url-http.el
  (autoload 'url-default-expander "url-expand")
 
@@ -29208,8 +29262,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-irc" "url/url-irc.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-irc" "url/url-irc.el" (22086 11930 366062
+;;;;;;  731000))
 ;;; Generated autoloads from url/url-irc.el
 
 (autoload 'url-irc "url-irc" "\
@@ -29219,8 +29273,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (22086 11930 366062
+;;;;;;  731000))
 ;;; Generated autoloads from url/url-ldap.el
 
 (autoload 'url-ldap "url-ldap" "\
@@ -29233,8 +29287,8 @@ URL can be a URL string, or a URL vector of the type 
returned by
 
 ;;;***
 
-;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (22086 11930
+;;;;;;  366062 731000))
 ;;; Generated autoloads from url/url-mailto.el
 
 (autoload 'url-mail "url-mailto" "\
@@ -29249,8 +29303,8 @@ Handle the mailto: URL syntax.
 
 ;;;***
 
-;;;### (autoloads nil "url-misc" "url/url-misc.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-misc" "url/url-misc.el" (22086 11930 366062
+;;;;;;  731000))
 ;;; Generated autoloads from url/url-misc.el
 
 (autoload 'url-man "url-misc" "\
@@ -29281,8 +29335,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-news" "url/url-news.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-news" "url/url-news.el" (22086 11930 366062
+;;;;;;  731000))
 ;;; Generated autoloads from url/url-news.el
 
 (autoload 'url-news "url-news" "\
@@ -29297,8 +29351,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-ns" "url/url-ns.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-ns" "url/url-ns.el" (22086 11930 366062
+;;;;;;  731000))
 ;;; Generated autoloads from url/url-ns.el
 
 (autoload 'isPlainHostName "url-ns" "\
@@ -29338,8 +29392,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-parse" "url/url-parse.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-parse" "url/url-parse.el" (22086 11930
+;;;;;;  366062 731000))
 ;;; Generated autoloads from url/url-parse.el
 
 (autoload 'url-recreate-url "url-parse" "\
@@ -29390,8 +29444,8 @@ parses to
 
 ;;;***
 
-;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (22086 11930
+;;;;;;  366062 731000))
 ;;; Generated autoloads from url/url-privacy.el
 
 (autoload 'url-setup-privacy-info "url-privacy" "\
@@ -29401,8 +29455,8 @@ Setup variables that expose info about you and your 
system.
 
 ;;;***
 
-;;;### (autoloads nil "url-queue" "url/url-queue.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-queue" "url/url-queue.el" (22086 11930
+;;;;;;  366062 731000))
 ;;; Generated autoloads from url/url-queue.el
 
 (autoload 'url-queue-retrieve "url-queue" "\
@@ -29416,8 +29470,8 @@ The variable `url-queue-timeout' sets a timeout.
 
 ;;;***
 
-;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (22086 11930
+;;;;;;  366062 731000))
 ;;; Generated autoloads from url/url-tramp.el
 
 (defvar url-tramp-protocols '("ftp" "ssh" "scp" "rsync" "telnet") "\
@@ -29435,8 +29489,8 @@ would have been passed to OPERATION.
 
 ;;;***
 
-;;;### (autoloads nil "url-util" "url/url-util.el" (21993 28596 418597
-;;;;;;  473000))
+;;;### (autoloads nil "url-util" "url/url-util.el" (22092 27718 532268
+;;;;;;  464000))
 ;;; Generated autoloads from url/url-util.el
 
 (defvar url-debug nil "\
@@ -29472,7 +29526,7 @@ conversion.  Replaces these characters as follows:
 \(fn STRING)" nil nil)
 
 (autoload 'url-normalize-url "url-util" "\
-Return a 'normalized' version of URL.
+Return a \"normalized\" version of URL.
 Strips out default port numbers, etc.
 
 \(fn URL)" nil nil)
@@ -29484,7 +29538,7 @@ Will not do anything if `url-show-status' is nil.
 \(fn &rest ARGS)" nil nil)
 
 (autoload 'url-get-normalized-date "url-util" "\
-Return a 'real' date string that most HTTP servers can understand.
+Return a date string that most HTTP servers can understand.
 
 \(fn &optional SPECIFIED-TIME)" nil nil)
 
@@ -29604,14 +29658,14 @@ This uses `url-current-object', set locally to the 
buffer.
 
 ;;;***
 
-;;;### (autoloads nil "userlock" "userlock.el" (21976 19510 152430
-;;;;;;  241000))
+;;;### (autoloads nil "userlock" "userlock.el" (22092 27718 532268
+;;;;;;  464000))
 ;;; Generated autoloads from userlock.el
 
 (autoload 'ask-user-about-lock "userlock" "\
 Ask user what to do when he wants to edit FILE but it is locked by OPPONENT.
 This function has a choice of three things to do:
-  do (signal 'file-locked (list FILE OPPONENT))
+  do (signal \\='file-locked (list FILE OPPONENT))
     to refrain from editing the file
   return t (grab the lock on the file)
   return nil (edit the file even though it is locked).
@@ -29623,7 +29677,7 @@ in any way you like.
 (autoload 'ask-user-about-supersession-threat "userlock" "\
 Ask a user who is about to modify an obsolete buffer what to do.
 This function has two choices: it can return, in which case the modification
-of the buffer will proceed, or it can (signal 'file-supersession (file)),
+of the buffer will proceed, or it can (signal \\='file-supersession (file)),
 in which case the proposed buffer modification will not be made.
 
 You can rewrite this to use any criterion you like to choose which one to do.
@@ -29633,8 +29687,8 @@ The buffer in question is current when this function is 
called.
 
 ;;;***
 
-;;;### (autoloads nil "utf-7" "international/utf-7.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "utf-7" "international/utf-7.el" (22086 11929
+;;;;;;  886062 731000))
 ;;; Generated autoloads from international/utf-7.el
 
 (autoload 'utf-7-post-read-conversion "utf-7" "\
@@ -29659,7 +29713,7 @@ The buffer in question is current when this function is 
called.
 
 ;;;***
 
-;;;### (autoloads nil "utf7" "gnus/utf7.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "utf7" "gnus/utf7.el" (22086 11929 854062 731000))
 ;;; Generated autoloads from gnus/utf7.el
 
 (autoload 'utf7-encode "utf7" "\
@@ -29669,8 +29723,8 @@ Encode UTF-7 STRING.  Use IMAP modification if FOR-IMAP 
is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21855 577 67944
-;;;;;;  554000))
+;;;### (autoloads nil "uudecode" "mail/uudecode.el" (22086 11929
+;;;;;;  954062 731000))
 ;;; Generated autoloads from mail/uudecode.el
 
 (autoload 'uudecode-decode-region-external "uudecode" "\
@@ -29694,7 +29748,7 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
 
 ;;;***
 
-;;;### (autoloads nil "vc" "vc/vc.el" (22014 34736 871840 613000))
+;;;### (autoloads nil "vc" "vc/vc.el" (22093 48588 592393 539000))
 ;;; Generated autoloads from vc/vc.el
 
 (defvar vc-checkout-hook nil "\
@@ -29846,6 +29900,11 @@ changes from the current branch.
 
 \(fn)" t nil)
 
+(autoload 'vc-message-unresolved-conflicts "vc" "\
+Display a message indicating unresolved conflicts in FILENAME.
+
+\(fn FILENAME)" nil nil)
+
 (defalias 'vc-resolve-conflicts 'smerge-ediff)
 
 (autoload 'vc-create-tag "vc" "\
@@ -30001,8 +30060,8 @@ Return the branch part of a revision number REV.
 
 ;;;***
 
-;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (22011 58554
-;;;;;;  93858 469000))
+;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (22086 11930
+;;;;;;  382062 731000))
 ;;; Generated autoloads from vc/vc-annotate.el
 
 (autoload 'vc-annotate "vc-annotate" "\
@@ -30041,8 +30100,8 @@ should be applied to the background or to the 
foreground.
 
 ;;;***
 
-;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (22064 41138 13468
-;;;;;;  395000))
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (22086 11930 382062
+;;;;;;  731000))
 ;;; Generated autoloads from vc/vc-bzr.el
 
 (defconst vc-bzr-admin-dirname ".bzr" "\
@@ -30058,8 +30117,8 @@ Name of the format file in a .bzr directory.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (22064 41138 17468
-;;;;;;  395000))
+;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (22099 26170 434017
+;;;;;;  16000))
 ;;; Generated autoloads from vc/vc-cvs.el
 (defun vc-cvs-registered (f)
   "Return non-nil if file F is registered with CVS."
@@ -30070,8 +30129,8 @@ Name of the format file in a .bzr directory.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (22055 26158 818447
-;;;;;;  352000))
+;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (22086 11930 386062
+;;;;;;  731000))
 ;;; Generated autoloads from vc/vc-dir.el
 
 (autoload 'vc-dir "vc-dir" "\
@@ -30095,8 +30154,8 @@ These are the commands available for use in the file 
status buffer:
 
 ;;;***
 
-;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21862
-;;;;;;  60209 928657 362000))
+;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (22104
+;;;;;;  18893 237441 487000))
 ;;; Generated autoloads from vc/vc-dispatcher.el
 
 (autoload 'vc-do-command "vc-dispatcher" "\
@@ -30119,8 +30178,8 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-git" "vc/vc-git.el" (22064 41138 17468
-;;;;;;  395000))
+;;;### (autoloads nil "vc-git" "vc/vc-git.el" (22097 45637 495432
+;;;;;;  455000))
 ;;; Generated autoloads from vc/vc-git.el
  (defun vc-git-registered (file)
   "Return non-nil if FILE is registered with git."
@@ -30131,7 +30190,7 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (22064 41138 21468 395000))
+;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (22097 45637 503432 455000))
 ;;; Generated autoloads from vc/vc-hg.el
  (defun vc-hg-registered (file)
   "Return non-nil if FILE is registered with hg."
@@ -30142,8 +30201,8 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (22064 41138 21468
-;;;;;;  395000))
+;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (22097 45637 515432
+;;;;;;  455000))
 ;;; Generated autoloads from vc/vc-mtn.el
 
 (defconst vc-mtn-admin-dir "_MTN" "\
@@ -30159,8 +30218,8 @@ Name of the monotone directory's format file.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (22014 34736 851840
-;;;;;;  613000))
+;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (22097 45637 527432
+;;;;;;  455000))
 ;;; Generated autoloads from vc/vc-rcs.el
 
 (defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) 
"\
@@ -30173,8 +30232,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (22014 34736 863840
-;;;;;;  613000))
+;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (22086 11930 386062
+;;;;;;  731000))
 ;;; Generated autoloads from vc/vc-sccs.el
 
 (defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" 
vc-sccs-search-project-dir)) "\
@@ -30192,8 +30251,8 @@ find any project directory." (let ((project-dir (getenv 
"PROJECTDIR")) dirs dir)
 
 ;;;***
 
-;;;### (autoloads nil "vc-src" "vc/vc-src.el" (22014 34736 863840
-;;;;;;  613000))
+;;;### (autoloads nil "vc-src" "vc/vc-src.el" (22086 11930 386062
+;;;;;;  731000))
 ;;; Generated autoloads from vc/vc-src.el
 
 (defvar vc-src-master-templates (purecopy '("%s.src/%s,v")) "\
@@ -30206,8 +30265,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (22064 41138 21468
-;;;;;;  395000))
+;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (22101 42694 157526
+;;;;;;  804000))
 ;;; Generated autoloads from vc/vc-svn.el
  (defun vc-svn-registered (f)
   (let ((admin-dir (cond ((and (eq system-type 'windows-nt)
@@ -30220,8 +30279,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (22011
-;;;;;;  58553 929858 469000))
+;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (22092
+;;;;;;  27718 320268 464000))
 ;;; 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))
@@ -30280,7 +30339,7 @@ Key bindings:
 ;;;***
 
 ;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el"
-;;;;;;  (22015 55603 833705 321000))
+;;;;;;  (22092 27718 348268 464000))
 ;;; Generated autoloads from progmodes/verilog-mode.el
 
 (autoload 'verilog-mode "verilog-mode" "\
@@ -30348,12 +30407,12 @@ Variables controlling indentation/edit style:
    will be inserted.  Setting this variable to zero results in every
    end acquiring a comment; the default avoids too many redundant
    comments in tight quarters.
- `verilog-auto-lineup'              (default 'declarations)
+ `verilog-auto-lineup'              (default `declarations')
    List of contexts where auto lineup of code should be done.
 
 Variables controlling other actions:
 
- `verilog-linter'                   (default surelint)
+ `verilog-linter'                   (default `surelint')
    Unix program to call to run the lint checker.  This is the default
    command for \\[compile-command] and \\[verilog-auto-save-compile].
 
@@ -30419,8 +30478,8 @@ Key bindings specific to `verilog-mode-map' are:
 
 ;;;***
 
-;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (22011
-;;;;;;  58553 969858 469000))
+;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (22092
+;;;;;;  27718 400268 464000))
 ;;; Generated autoloads from progmodes/vhdl-mode.el
 
 (autoload 'vhdl-mode "vhdl-mode" "\
@@ -30974,8 +31033,8 @@ Key bindings:
 
 ;;;***
 
-;;;### (autoloads nil "viet-util" "language/viet-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "viet-util" "language/viet-util.el" (22086
+;;;;;;  11929 906062 731000))
 ;;; Generated autoloads from language/viet-util.el
 
 (autoload 'viet-encode-viscii-char "viet-util" "\
@@ -31019,7 +31078,7 @@ Convert Vietnamese characters of the current buffer to 
`VIQR' mnemonics.
 
 ;;;***
 
-;;;### (autoloads nil "view" "view.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "view" "view.el" (22086 11930 390062 731000))
 ;;; Generated autoloads from view.el
 
 (defvar view-remove-frame-by-deleting t "\
@@ -31275,8 +31334,8 @@ Exit View mode and make the current buffer editable.
 
 ;;;***
 
-;;;### (autoloads nil "viper" "emulation/viper.el" (22011 58553 461858
-;;;;;;  469000))
+;;;### (autoloads nil "viper" "emulation/viper.el" (22086 11929 698062
+;;;;;;  731000))
 ;;; Generated autoloads from emulation/viper.el
 (push (purecopy '(viper 3 14 1)) package--builtin-versions)
 
@@ -31293,8 +31352,8 @@ Turn on Viper emulation of Vi in Emacs. See Info node 
`(viper)Top'.
 
 ;;;***
 
-;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21986
-;;;;;;  55346 260512 613000))
+;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (22086
+;;;;;;  11929 690062 731000))
 ;;; Generated autoloads from emacs-lisp/warnings.el
 
 (defvar warning-prefix-function nil "\
@@ -31384,7 +31443,7 @@ this is equivalent to `display-warning', using
 
 ;;;***
 
-;;;### (autoloads nil "wdired" "wdired.el" (22026 25907 675502 692000))
+;;;### (autoloads nil "wdired" "wdired.el" (22086 11930 394062 731000))
 ;;; Generated autoloads from wdired.el
 (push (purecopy '(wdired 2 0)) package--builtin-versions)
 
@@ -31402,8 +31461,8 @@ See `wdired-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "webjump" "net/webjump.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "webjump" "net/webjump.el" (22086 11930 22062
+;;;;;;  731000))
 ;;; Generated autoloads from net/webjump.el
 
 (autoload 'webjump "webjump" "\
@@ -31419,8 +31478,8 @@ Please submit bug reports and other feedback to the 
author, Neil W. Van Dyke
 
 ;;;***
 
-;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21986
-;;;;;;  55346 292512 613000))
+;;;### (autoloads nil "which-func" "progmodes/which-func.el" (22086
+;;;;;;  11930 242062 731000))
 ;;; Generated autoloads from progmodes/which-func.el
  (put 'which-func-format 'risky-local-variable t)
  (put 'which-func-current 'risky-local-variable t)
@@ -31450,8 +31509,8 @@ in certain major modes.
 
 ;;;***
 
-;;;### (autoloads nil "whitespace" "whitespace.el" (22026 25907 675502
-;;;;;;  692000))
+;;;### (autoloads nil "whitespace" "whitespace.el" (22086 11930 394062
+;;;;;;  731000))
 ;;; Generated autoloads from whitespace.el
 (push (purecopy '(whitespace 13 2 2)) package--builtin-versions)
 
@@ -31819,8 +31878,8 @@ cleaning up these problems.
 
 ;;;***
 
-;;;### (autoloads nil "wid-browse" "wid-browse.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "wid-browse" "wid-browse.el" (22086 11930 394062
+;;;;;;  731000))
 ;;; Generated autoloads from wid-browse.el
 
 (autoload 'widget-browse-at "wid-browse" "\
@@ -31848,8 +31907,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "wid-edit" "wid-edit.el" (22003 64432 668146
-;;;;;;  533000))
+;;;### (autoloads nil "wid-edit" "wid-edit.el" (22092 27718 580268
+;;;;;;  464000))
 ;;; Generated autoloads from wid-edit.el
 
 (autoload 'widgetp "wid-edit" "\
@@ -31891,8 +31950,8 @@ Setup current buffer so editing string widgets works.
 
 ;;;***
 
-;;;### (autoloads nil "windmove" "windmove.el" (21852 24382 97237
-;;;;;;  703000))
+;;;### (autoloads nil "windmove" "windmove.el" (22092 27718 580268
+;;;;;;  464000))
 ;;; Generated autoloads from windmove.el
 
 (autoload 'windmove-left "windmove" "\
@@ -31938,13 +31997,13 @@ If no window is at the desired location, an error is 
signaled.
 (autoload 'windmove-default-keybindings "windmove" "\
 Set up keybindings for `windmove'.
 Keybindings are of the form MODIFIER-{left,right,up,down}.
-Default MODIFIER is 'shift.
+Default MODIFIER is `shift'.
 
 \(fn &optional MODIFIER)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "winner" "winner.el" (22030 22953 17158 467000))
+;;;### (autoloads nil "winner" "winner.el" (22086 11930 398062 731000))
 ;;; Generated autoloads from winner.el
 
 (defvar winner-mode nil "\
@@ -31967,7 +32026,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG 
is `toggle'.
 
 ;;;***
 
-;;;### (autoloads nil "woman" "woman.el" (22026 25907 679502 692000))
+;;;### (autoloads nil "woman" "woman.el" (22092 27718 620268 464000))
 ;;; Generated autoloads from woman.el
 (push (purecopy '(woman 0 551)) package--builtin-versions)
 
@@ -32016,7 +32075,7 @@ Default bookmark handler for Woman buffers.
 
 ;;;***
 
-;;;### (autoloads nil "xml" "xml.el" (21974 64192 720009 993000))
+;;;### (autoloads nil "xml" "xml.el" (22092 27718 620268 464000))
 ;;; Generated autoloads from xml.el
 
 (autoload 'xml-parse-file "xml" "\
@@ -32072,8 +32131,8 @@ Both features can be combined by providing a cons cell
 
 ;;;***
 
-;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (22086 11930 30062
+;;;;;;  731000))
 ;;; Generated autoloads from nxml/xmltok.el
 
 (autoload 'xmltok-get-declared-encoding-position "xmltok" "\
@@ -32091,10 +32150,15 @@ If LIMIT is non-nil, then do not consider characters 
beyond LIMIT.
 
 ;;;***
 
-;;;### (autoloads nil "xref" "progmodes/xref.el" (21993 28596 366597
-;;;;;;  473000))
+;;;### (autoloads nil "xref" "progmodes/xref.el" (22105 39773 959886
+;;;;;;  896000))
 ;;; Generated autoloads from progmodes/xref.el
 
+(autoload 'xref-find-backend "xref" "\
+
+
+\(fn)" nil nil)
+
 (autoload 'xref-pop-marker-stack "xref" "\
 Pop back to where \\[xref-find-definitions] was last invoked.
 
@@ -32135,13 +32199,6 @@ With prefix argument, prompt for the identifier.
 
 \(fn IDENTIFIER)" t nil)
 
-(autoload 'xref-find-regexp "xref" "\
-Find all matches for REGEXP.
-With \\[universal-argument] prefix, you can specify the directory
-to search in, and the file name pattern to search for.
-
-\(fn REGEXP)" t nil)
-
 (autoload 'xref-find-apropos "xref" "\
 Find all meaningful symbols that match PATTERN.
 The argument has the same meaning as in `apropos'.
@@ -32156,8 +32213,8 @@ The argument has the same meaning as in `apropos'.
 
 ;;;***
 
-;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21852 24382 117243
-;;;;;;  951000))
+;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (22086 11930 402062
+;;;;;;  731000))
 ;;; Generated autoloads from xt-mouse.el
 
 (defvar xterm-mouse-mode nil "\
@@ -32186,7 +32243,7 @@ down the SHIFT key while pressing the mouse button.
 
 ;;;***
 
-;;;### (autoloads nil "yenc" "gnus/yenc.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "yenc" "gnus/yenc.el" (22086 11929 854062 731000))
 ;;; Generated autoloads from gnus/yenc.el
 
 (autoload 'yenc-decode-region "yenc" "\
@@ -32201,7 +32258,7 @@ Extract file name from an yenc header.
 
 ;;;***
 
-;;;### (autoloads nil "zone" "play/zone.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "zone" "play/zone.el" (22086 11930 130062 731000))
 ;;; Generated autoloads from play/zone.el
 
 (autoload 'zone "zone" "\
@@ -32217,37 +32274,37 @@ Zone out, completely.
 ;;;;;;  "calc/calc-fin.el" "calc/calc-forms.el" "calc/calc-frac.el"
 ;;;;;;  "calc/calc-funcs.el" "calc/calc-graph.el" "calc/calc-help.el"
 ;;;;;;  "calc/calc-incom.el" "calc/calc-keypd.el" "calc/calc-lang.el"
-;;;;;;  "calc/calc-macs.el" "calc/calc-map.el" "calc/calc-math.el"
-;;;;;;  "calc/calc-menu.el" "calc/calc-misc.el" "calc/calc-mode.el"
-;;;;;;  "calc/calc-mtx.el" "calc/calc-nlfit.el" "calc/calc-poly.el"
-;;;;;;  "calc/calc-prog.el" "calc/calc-rewr.el" "calc/calc-rules.el"
-;;;;;;  "calc/calc-sel.el" "calc/calc-stat.el" "calc/calc-store.el"
-;;;;;;  "calc/calc-stuff.el" "calc/calc-trail.el" "calc/calc-units.el"
-;;;;;;  "calc/calc-vec.el" "calc/calc-yank.el" "calc/calcalg2.el"
-;;;;;;  "calc/calcalg3.el" "calc/calccomp.el" "calc/calcsel2.el"
-;;;;;;  "calendar/cal-bahai.el" "calendar/cal-coptic.el" 
"calendar/cal-french.el"
-;;;;;;  "calendar/cal-html.el" "calendar/cal-islam.el" "calendar/cal-iso.el"
-;;;;;;  "calendar/cal-julian.el" "calendar/cal-loaddefs.el" 
"calendar/cal-mayan.el"
-;;;;;;  "calendar/cal-menu.el" "calendar/cal-move.el" "calendar/cal-persia.el"
-;;;;;;  "calendar/cal-tex.el" "calendar/cal-x.el" "calendar/diary-loaddefs.el"
-;;;;;;  "calendar/hol-loaddefs.el" "cdl.el" "cedet/cedet-cscope.el"
-;;;;;;  "cedet/cedet-files.el" "cedet/cedet-global.el" "cedet/cedet-idutils.el"
-;;;;;;  "cedet/ede/auto.el" "cedet/ede/autoconf-edit.el" "cedet/ede/base.el"
-;;;;;;  "cedet/ede/config.el" "cedet/ede/cpp-root.el" "cedet/ede/custom.el"
-;;;;;;  "cedet/ede/detect.el" "cedet/ede/dired.el" "cedet/ede/emacs.el"
-;;;;;;  "cedet/ede/files.el" "cedet/ede/generic.el" "cedet/ede/linux.el"
-;;;;;;  "cedet/ede/locate.el" "cedet/ede/make.el" "cedet/ede/makefile-edit.el"
-;;;;;;  "cedet/ede/pconf.el" "cedet/ede/pmake.el" "cedet/ede/proj-archive.el"
-;;;;;;  "cedet/ede/proj-aux.el" "cedet/ede/proj-comp.el" 
"cedet/ede/proj-elisp.el"
-;;;;;;  "cedet/ede/proj-info.el" "cedet/ede/proj-misc.el" 
"cedet/ede/proj-obj.el"
-;;;;;;  "cedet/ede/proj-prog.el" "cedet/ede/proj-scheme.el" 
"cedet/ede/proj-shared.el"
-;;;;;;  "cedet/ede/proj.el" "cedet/ede/project-am.el" "cedet/ede/shell.el"
-;;;;;;  "cedet/ede/simple.el" "cedet/ede/source.el" "cedet/ede/speedbar.el"
-;;;;;;  "cedet/ede/srecode.el" "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.el" "cedet/semantic/bovine/debug.el"
+;;;;;;  "calc/calc-loaddefs.el" "calc/calc-macs.el" "calc/calc-map.el"
+;;;;;;  "calc/calc-math.el" "calc/calc-menu.el" "calc/calc-misc.el"
+;;;;;;  "calc/calc-mode.el" "calc/calc-mtx.el" "calc/calc-nlfit.el"
+;;;;;;  "calc/calc-poly.el" "calc/calc-prog.el" "calc/calc-rewr.el"
+;;;;;;  "calc/calc-rules.el" "calc/calc-sel.el" "calc/calc-stat.el"
+;;;;;;  "calc/calc-store.el" "calc/calc-stuff.el" "calc/calc-trail.el"
+;;;;;;  "calc/calc-units.el" "calc/calc-vec.el" "calc/calc-yank.el"
+;;;;;;  "calc/calcalg2.el" "calc/calcalg3.el" "calc/calccomp.el"
+;;;;;;  "calc/calcsel2.el" "calendar/cal-bahai.el" "calendar/cal-coptic.el"
+;;;;;;  "calendar/cal-french.el" "calendar/cal-html.el" "calendar/cal-islam.el"
+;;;;;;  "calendar/cal-iso.el" "calendar/cal-julian.el" 
"calendar/cal-loaddefs.el"
+;;;;;;  "calendar/cal-mayan.el" "calendar/cal-menu.el" "calendar/cal-move.el"
+;;;;;;  "calendar/cal-persia.el" "calendar/cal-tex.el" "calendar/cal-x.el"
+;;;;;;  "calendar/diary-loaddefs.el" "calendar/hol-loaddefs.el" "cdl.el"
+;;;;;;  "cedet/cedet-cscope.el" "cedet/cedet-files.el" "cedet/cedet-global.el"
+;;;;;;  "cedet/cedet-idutils.el" "cedet/ede/auto.el" 
"cedet/ede/autoconf-edit.el"
+;;;;;;  "cedet/ede/base.el" "cedet/ede/config.el" "cedet/ede/cpp-root.el"
+;;;;;;  "cedet/ede/custom.el" "cedet/ede/detect.el" "cedet/ede/dired.el"
+;;;;;;  "cedet/ede/emacs.el" "cedet/ede/files.el" "cedet/ede/generic.el"
+;;;;;;  "cedet/ede/linux.el" "cedet/ede/loaddefs.el" "cedet/ede/locate.el"
+;;;;;;  "cedet/ede/make.el" "cedet/ede/makefile-edit.el" "cedet/ede/pconf.el"
+;;;;;;  "cedet/ede/pmake.el" "cedet/ede/proj-archive.el" 
"cedet/ede/proj-aux.el"
+;;;;;;  "cedet/ede/proj-comp.el" "cedet/ede/proj-elisp.el" 
"cedet/ede/proj-info.el"
+;;;;;;  "cedet/ede/proj-misc.el" "cedet/ede/proj-obj.el" 
"cedet/ede/proj-prog.el"
+;;;;;;  "cedet/ede/proj-scheme.el" "cedet/ede/proj-shared.el" 
"cedet/ede/proj.el"
+;;;;;;  "cedet/ede/project-am.el" "cedet/ede/shell.el" "cedet/ede/simple.el"
+;;;;;;  "cedet/ede/source.el" "cedet/ede/speedbar.el" "cedet/ede/srecode.el"
+;;;;;;  "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.el" 
"cedet/semantic/bovine/debug.el"
 ;;;;;;  "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el"
 ;;;;;;  "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm.el"
 ;;;;;;  "cedet/semantic/chart.el" "cedet/semantic/complete.el" 
"cedet/semantic/ctxt.el"
@@ -32262,13 +32319,13 @@ Zone out, completely.
 ;;;;;;  "cedet/semantic/fw.el" "cedet/semantic/grammar-wy.el" 
"cedet/semantic/grammar.el"
 ;;;;;;  "cedet/semantic/html.el" "cedet/semantic/ia-sb.el" 
"cedet/semantic/ia.el"
 ;;;;;;  "cedet/semantic/idle.el" "cedet/semantic/imenu.el" 
"cedet/semantic/java.el"
-;;;;;;  "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" 
"cedet/semantic/mru-bookmark.el"
-;;;;;;  "cedet/semantic/sb.el" "cedet/semantic/scope.el" 
"cedet/semantic/senator.el"
-;;;;;;  "cedet/semantic/sort.el" "cedet/semantic/symref.el" 
"cedet/semantic/symref/cscope.el"
-;;;;;;  "cedet/semantic/symref/filter.el" "cedet/semantic/symref/global.el"
-;;;;;;  "cedet/semantic/symref/grep.el" "cedet/semantic/symref/idutils.el"
-;;;;;;  "cedet/semantic/symref/list.el" "cedet/semantic/tag-file.el"
-;;;;;;  "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el"
+;;;;;;  "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" 
"cedet/semantic/loaddefs.el"
+;;;;;;  "cedet/semantic/mru-bookmark.el" "cedet/semantic/sb.el" 
"cedet/semantic/scope.el"
+;;;;;;  "cedet/semantic/senator.el" "cedet/semantic/sort.el" 
"cedet/semantic/symref.el"
+;;;;;;  "cedet/semantic/symref/cscope.el" "cedet/semantic/symref/filter.el"
+;;;;;;  "cedet/semantic/symref/global.el" "cedet/semantic/symref/grep.el"
+;;;;;;  "cedet/semantic/symref/idutils.el" "cedet/semantic/symref/list.el"
+;;;;;;  "cedet/semantic/tag-file.el" "cedet/semantic/tag-ls.el" 
"cedet/semantic/tag-write.el"
 ;;;;;;  "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"
@@ -32278,75 +32335,69 @@ Zone out, completely.
 ;;;;;;  "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/map.el" "cedet/srecode/mode.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-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"
-;;;;;;  "emacs-lisp/subr-x.el" "emacs-lisp/tcover-ses.el" 
"emacs-lisp/tcover-unsafep.el"
-;;;;;;  "emulation/cua-gmrk.el" "emulation/edt-lk201.el" 
"emulation/edt-mapper.el"
-;;;;;;  "emulation/edt-pc.el" "emulation/edt-vt100.el" "emulation/viper-cmd.el"
-;;;;;;  "emulation/viper-ex.el" "emulation/viper-init.el" 
"emulation/viper-keym.el"
-;;;;;;  "emulation/viper-macs.el" "emulation/viper-mous.el" 
"emulation/viper-util.el"
-;;;;;;  "erc/erc-backend.el" "erc/erc-goodies.el" "erc/erc-ibuffer.el"
-;;;;;;  "erc/erc-lang.el" "eshell/em-alias.el" "eshell/em-banner.el"
-;;;;;;  "eshell/em-basic.el" "eshell/em-cmpl.el" "eshell/em-dirs.el"
-;;;;;;  "eshell/em-glob.el" "eshell/em-hist.el" "eshell/em-ls.el"
-;;;;;;  "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el"
-;;;;;;  "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el"
-;;;;;;  "eshell/em-tramp.el" "eshell/em-unix.el" "eshell/em-xtra.el"
-;;;;;;  "eshell/esh-arg.el" "eshell/esh-cmd.el" "eshell/esh-ext.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" "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/charscript.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/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"
+;;;;;;  "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" 
"cedet/srecode/mode.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-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" "emacs-lisp/subr-x.el" "emacs-lisp/tcover-ses.el"
+;;;;;;  "emacs-lisp/tcover-unsafep.el" "emulation/cua-gmrk.el" 
"emulation/edt-lk201.el"
+;;;;;;  "emulation/edt-mapper.el" "emulation/edt-pc.el" 
"emulation/edt-vt100.el"
+;;;;;;  "emulation/viper-cmd.el" "emulation/viper-ex.el" 
"emulation/viper-init.el"
+;;;;;;  "emulation/viper-keym.el" "emulation/viper-macs.el" 
"emulation/viper-mous.el"
+;;;;;;  "emulation/viper-util.el" "erc/erc-backend.el" "erc/erc-goodies.el"
+;;;;;;  "erc/erc-ibuffer.el" "erc/erc-lang.el" "eshell/em-alias.el"
+;;;;;;  "eshell/em-banner.el" "eshell/em-basic.el" "eshell/em-cmpl.el"
+;;;;;;  "eshell/em-dirs.el" "eshell/em-glob.el" "eshell/em-hist.el"
+;;;;;;  "eshell/em-ls.el" "eshell/em-pred.el" "eshell/em-prompt.el"
+;;;;;;  "eshell/em-rebind.el" "eshell/em-script.el" "eshell/em-smart.el"
+;;;;;;  "eshell/em-term.el" "eshell/em-tramp.el" "eshell/em-unix.el"
+;;;;;;  "eshell/em-xtra.el" "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" "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/charscript.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/tamil-dvorak.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"
@@ -32365,43 +32416,43 @@ Zone out, completely.
 ;;;;;;  "net/imap.el" "net/ldap.el" "net/mairix.el" "net/newsticker.el"
 ;;;;;;  "net/nsm.el" "net/rfc2104.el" "net/sasl-cram.el" "net/sasl-digest.el"
 ;;;;;;  "net/sasl-scram-rfc.el" "net/sasl.el" "net/shr-color.el"
-;;;;;;  "net/socks.el" "net/tls.el" "net/tramp-adb.el" "net/tramp-cache.el"
-;;;;;;  "net/tramp-cmds.el" "net/tramp-compat.el" "net/tramp-gvfs.el"
-;;;;;;  "net/tramp-gw.el" "net/tramp-loaddefs.el" "net/tramp-sh.el"
-;;;;;;  "net/tramp-smb.el" "net/tramp-uu.el" "net/trampver.el" 
"net/zeroconf.el"
-;;;;;;  "notifications.el" "nxml/nxml-enc.el" "nxml/nxml-maint.el"
+;;;;;;  "net/soap-inspect.el" "net/socks.el" "net/tls.el" "net/tramp-adb.el"
+;;;;;;  "net/tramp-cache.el" "net/tramp-cmds.el" "net/tramp-compat.el"
+;;;;;;  "net/tramp-gvfs.el" "net/tramp-gw.el" "net/tramp-loaddefs.el"
+;;;;;;  "net/tramp-sh.el" "net/tramp-smb.el" "net/tramp-uu.el" 
"net/trampver.el"
+;;;;;;  "net/zeroconf.el" "notifications.el" "nxml/nxml-enc.el" 
"nxml/nxml-maint.el"
 ;;;;;;  "nxml/nxml-ns.el" "nxml/nxml-outln.el" "nxml/nxml-parse.el"
 ;;;;;;  "nxml/nxml-rap.el" "nxml/nxml-util.el" "nxml/rng-dt.el" 
"nxml/rng-loc.el"
 ;;;;;;  "nxml/rng-maint.el" "nxml/rng-match.el" "nxml/rng-parse.el"
 ;;;;;;  "nxml/rng-pttrn.el" "nxml/rng-uri.el" "nxml/rng-util.el"
-;;;;;;  "nxml/xsd-regexp.el" "org/ob-C.el" "org/ob-R.el" "org/ob-asymptote.el"
-;;;;;;  "org/ob-awk.el" "org/ob-calc.el" "org/ob-clojure.el" "org/ob-comint.el"
-;;;;;;  "org/ob-core.el" "org/ob-css.el" "org/ob-ditaa.el" "org/ob-dot.el"
-;;;;;;  "org/ob-emacs-lisp.el" "org/ob-eval.el" "org/ob-exp.el" 
"org/ob-fortran.el"
-;;;;;;  "org/ob-gnuplot.el" "org/ob-haskell.el" "org/ob-io.el" "org/ob-java.el"
-;;;;;;  "org/ob-js.el" "org/ob-keys.el" "org/ob-latex.el" "org/ob-ledger.el"
-;;;;;;  "org/ob-lilypond.el" "org/ob-lisp.el" "org/ob-lob.el" 
"org/ob-makefile.el"
-;;;;;;  "org/ob-matlab.el" "org/ob-maxima.el" "org/ob-mscgen.el"
-;;;;;;  "org/ob-ocaml.el" "org/ob-octave.el" "org/ob-org.el" "org/ob-perl.el"
-;;;;;;  "org/ob-picolisp.el" "org/ob-plantuml.el" "org/ob-python.el"
-;;;;;;  "org/ob-ref.el" "org/ob-ruby.el" "org/ob-sass.el" "org/ob-scala.el"
-;;;;;;  "org/ob-scheme.el" "org/ob-screen.el" "org/ob-sh.el" "org/ob-shen.el"
-;;;;;;  "org/ob-sql.el" "org/ob-sqlite.el" "org/ob-table.el" "org/ob-tangle.el"
-;;;;;;  "org/ob.el" "org/org-archive.el" "org/org-attach.el" "org/org-bbdb.el"
-;;;;;;  "org/org-bibtex.el" "org/org-clock.el" "org/org-crypt.el"
-;;;;;;  "org/org-ctags.el" "org/org-datetree.el" "org/org-docview.el"
-;;;;;;  "org/org-element.el" "org/org-entities.el" "org/org-eshell.el"
-;;;;;;  "org/org-faces.el" "org/org-feed.el" "org/org-footnote.el"
-;;;;;;  "org/org-gnus.el" "org/org-habit.el" "org/org-id.el" 
"org/org-indent.el"
-;;;;;;  "org/org-info.el" "org/org-inlinetask.el" "org/org-install.el"
-;;;;;;  "org/org-irc.el" "org/org-list.el" "org/org-macro.el" "org/org-mhe.el"
-;;;;;;  "org/org-mobile.el" "org/org-mouse.el" "org/org-pcomplete.el"
-;;;;;;  "org/org-plot.el" "org/org-protocol.el" "org/org-rmail.el"
-;;;;;;  "org/org-src.el" "org/org-table.el" "org/org-timer.el" "org/org-w3m.el"
-;;;;;;  "org/ox-ascii.el" "org/ox-beamer.el" "org/ox-html.el" 
"org/ox-icalendar.el"
-;;;;;;  "org/ox-latex.el" "org/ox-man.el" "org/ox-md.el" "org/ox-odt.el"
-;;;;;;  "org/ox-org.el" "org/ox-publish.el" "org/ox-texinfo.el" "org/ox.el"
-;;;;;;  "play/gametree.el" "progmodes/ada-prj.el" "progmodes/cc-align.el"
+;;;;;;  "nxml/xsd-regexp.el" "obarray.el" "org/ob-C.el" "org/ob-R.el"
+;;;;;;  "org/ob-asymptote.el" "org/ob-awk.el" "org/ob-calc.el" 
"org/ob-clojure.el"
+;;;;;;  "org/ob-comint.el" "org/ob-core.el" "org/ob-css.el" "org/ob-ditaa.el"
+;;;;;;  "org/ob-dot.el" "org/ob-emacs-lisp.el" "org/ob-eval.el" "org/ob-exp.el"
+;;;;;;  "org/ob-fortran.el" "org/ob-gnuplot.el" "org/ob-haskell.el"
+;;;;;;  "org/ob-io.el" "org/ob-java.el" "org/ob-js.el" "org/ob-keys.el"
+;;;;;;  "org/ob-latex.el" "org/ob-ledger.el" "org/ob-lilypond.el"
+;;;;;;  "org/ob-lisp.el" "org/ob-lob.el" "org/ob-makefile.el" 
"org/ob-matlab.el"
+;;;;;;  "org/ob-maxima.el" "org/ob-mscgen.el" "org/ob-ocaml.el" 
"org/ob-octave.el"
+;;;;;;  "org/ob-org.el" "org/ob-perl.el" "org/ob-picolisp.el" 
"org/ob-plantuml.el"
+;;;;;;  "org/ob-python.el" "org/ob-ref.el" "org/ob-ruby.el" "org/ob-sass.el"
+;;;;;;  "org/ob-scala.el" "org/ob-scheme.el" "org/ob-screen.el" "org/ob-sh.el"
+;;;;;;  "org/ob-shen.el" "org/ob-sql.el" "org/ob-sqlite.el" "org/ob-table.el"
+;;;;;;  "org/ob-tangle.el" "org/ob.el" "org/org-archive.el" "org/org-attach.el"
+;;;;;;  "org/org-bbdb.el" "org/org-bibtex.el" "org/org-clock.el"
+;;;;;;  "org/org-crypt.el" "org/org-ctags.el" "org/org-datetree.el"
+;;;;;;  "org/org-docview.el" "org/org-element.el" "org/org-entities.el"
+;;;;;;  "org/org-eshell.el" "org/org-faces.el" "org/org-feed.el"
+;;;;;;  "org/org-footnote.el" "org/org-gnus.el" "org/org-habit.el"
+;;;;;;  "org/org-id.el" "org/org-indent.el" "org/org-info.el" 
"org/org-inlinetask.el"
+;;;;;;  "org/org-install.el" "org/org-irc.el" "org/org-list.el" 
"org/org-loaddefs.el"
+;;;;;;  "org/org-macro.el" "org/org-mhe.el" "org/org-mobile.el" 
"org/org-mouse.el"
+;;;;;;  "org/org-pcomplete.el" "org/org-plot.el" "org/org-protocol.el"
+;;;;;;  "org/org-rmail.el" "org/org-src.el" "org/org-table.el" 
"org/org-timer.el"
+;;;;;;  "org/org-w3m.el" "org/ox-ascii.el" "org/ox-beamer.el" "org/ox-html.el"
+;;;;;;  "org/ox-icalendar.el" "org/ox-latex.el" "org/ox-man.el" "org/ox-md.el"
+;;;;;;  "org/ox-odt.el" "org/ox-org.el" "org/ox-publish.el" "org/ox-texinfo.el"
+;;;;;;  "org/ox.el" "play/gametree.el" "progmodes/ada-prj.el" 
"progmodes/cc-align.el"
 ;;;;;;  "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el" "progmodes/cc-cmds.el"
 ;;;;;;  "progmodes/cc-defs.el" "progmodes/cc-fonts.el" "progmodes/cc-langs.el"
 ;;;;;;  "progmodes/cc-menus.el" "progmodes/ebnf-abn.el" "progmodes/ebnf-bnf.el"
@@ -32424,7 +32475,7 @@ Zone out, completely.
 ;;;;;;  "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") (22069 63623 894804 836000))
+;;;;;;  "x-dnd.el") (22108 15942 558032 987000))
 
 ;;;***
 
diff --git a/lisp/leim/quail/tamil-dvorak.el b/lisp/leim/quail/tamil-dvorak.el
new file mode 100644
index 0000000..d829925
--- /dev/null
+++ b/lisp/leim/quail/tamil-dvorak.el
@@ -0,0 +1,151 @@
+;;; tamil-dvorak.el --- Quail package for Tamil input with Dvorak keyboard
+
+;; Copyright (C) 2015 Free Software Foundation, Inc.
+
+;; Author: Shakthi Kannan <address@hidden>
+
+;; Keywords: multilingual, input method, Indian, Tamil, Dvorak
+
+;; This file is released under the terms 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:
+
+;;; After loading this file in GNU Emacs, you can select this input
+;;; layout using "C-x Return C-\" followed by "tamil-dvorak" (without
+;;; the quotes). Available keys: Z
+
+;;; TODO: Add Tamil numbers, calendar from Unicode
+
+;;; Code:
+
+(require 'quail)
+
+(quail-define-package
+ "tamil-dvorak" "Tamil" "யளனக" nil
+ "யளனக Tamil keyboard layout for use with Unicode (UTF-8 encoding)
+  and Dvorak keyboard layout."
+ nil t t t t nil nil nil nil nil t)
+
+
+;; US Dvorak
+;; 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) [{ ]}
+;;  '" ,< .> pP yY fF gG cC rR lL /? =+ \|
+;;   aA oO eE uU iI dD hH tT nN sS -_
+;;     ;: qQ jJ kK xX bB mM wW vV zZ
+
+;; தமிழ்
+;; 1! 2@ 3# 4௹ 5% 6^ 7& 8* 9( 0) -_ {}
+;;  ஞஶ றஷ நஸ சஹ வஜ லல ரர ைஐ   ொ ோ ிீ ுூ =+ \|
+;;    ய' ள, ன. க" ப? ாழ த[ ம] ட< ்ஃ ங>
+;;      ண$ ஒஓ உஊ எஏ ெே ஔ ௌ அஆ இஈ ;: zZ
+
+(quail-define-rules
+ ("1" ?1)
+ ("2" ?2)
+ ("3" ?3)
+ ("4" ?4)
+ ("5" ?5)
+ ("6" ?6)
+ ("7" ?7)
+ ("8" ?8)
+ ("9" ?9)
+ ("0" ?0)
+ ("[" ?-)
+ ("]" ?{)
+ ("`" ?`)
+ ("'" ?ஞ)
+ ("," ?ற)
+ ("." ?ந)
+ ("p" ?ச)
+ ("y" ?வ)
+ ("f" ?ல)
+ ("g" ?ர)
+ ("c" ?ை)
+ ("r" ?ொ)
+ ("l" ?ி)
+ ("/" ?ு)
+ ("=" ?=)
+ ("a" ?ய)
+ ("o" ?ள)
+ ("e" ?ன)
+ ("u" ?க)
+ ("i" ?ப)
+ ("d" ?ா)
+ ("h" ?த)
+ ("t" ?ம)
+ ("n" ?ட)
+ ("s" ?்)
+ ("-" ?ங)
+ ("\\" ?\\)
+ (";" ?ண)
+ ("q" ?ஒ)
+ ("j" ?உ)
+ ("k" ?எ)
+ ("x" ?ெ)
+ ("b" ?ஔ)
+ ("m" ?அ)
+ ("w" ?இ)
+ ("v" ?\;)
+ ("z" ?/)
+ ("!" ?!)
+ ("@" ?@)
+ ("#" ?#)
+ ("$" ?௹)
+ ("%" ?%)
+ ("^" ?^)
+ ("&" ?&)
+ ("*" ?*)
+ ("(" ?\()
+ (")" ?\))
+ ("{" ?_)
+ ("}" ?})
+ ("~" ?~)
+ ("\"" ?ஶ)
+ ("<" ?ஷ)
+ (">" ?ஸ)
+ ("P" ?ஹ)
+ ("Y" ?ஜ)
+ ("F" ?ல)
+ ("G" ?ர)
+ ("C" ?ஐ)
+ ("R" ?ோ)
+ ("L" ?ீ)
+ ("?" ?ூ)
+ ("+" ?+)
+ ("A" ?')
+ ("O" ?,)
+ ("E" ?.)
+ ("U" ?\")
+ ("I" ??)
+ ("D" ?ழ)
+ ("H" ?\[)
+ ("T" ?\])
+ ("N" ?<)
+ ("S" ?ஃ)
+ ("_" ?>)
+ ("|" ?|)
+ (":" ?$)
+ ("Q" ?ஓ)
+ ("J" ?ஊ)
+ ("K" ?ஏ)
+ ("X" ?ே)
+ ("B" ?ௌ)
+ ("M" ?ஆ)
+ ("W" ?ஈ)
+ ("V" ?:)
+ ("Z" ?Z))
+
+;;; tamil-dvorak.el ends here
diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el
index 1e770e6..587d75f 100644
--- a/lisp/mail/rmailout.el
+++ b/lisp/mail/rmailout.el
@@ -84,13 +84,14 @@ This uses `rmail-output-file-alist'."
                                        (eval (cdar tail))
                                      (error
                                       (display-warning
-                                       :error
+                                       'rmail-output
                                        (format-message "\
 Error evaluating `rmail-output-file-alist' element:
 regexp: %s
 action: %s
 error: %S\n"
-                                               (caar tail) (cdar tail) err))
+                                               (caar tail) (cdar tail) err)
+                                        :error)
                                       nil))))
                          (setq tail (cdr tail)))
                        answer))))))
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 42f48c7..fe2b6a6 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -218,7 +218,7 @@
   (cond
    ((and (eq menu-bar-last-search-type 'string)
         search-ring)
-    (search-forward (car search-ring)))
+    (nonincremental-search-forward))
    ((and (eq menu-bar-last-search-type 'regexp)
         regexp-search-ring)
     (re-search-forward (car regexp-search-ring)))
@@ -231,30 +231,30 @@
   (cond
    ((and (eq menu-bar-last-search-type 'string)
         search-ring)
-    (search-backward (car search-ring)))
+    (nonincremental-search-backward))
    ((and (eq menu-bar-last-search-type 'regexp)
         regexp-search-ring)
     (re-search-backward (car regexp-search-ring)))
    (t
     (error "No previous search"))))
 
-(defun nonincremental-search-forward (string)
+(defun nonincremental-search-forward (&optional string backward)
   "Read a string and search for it nonincrementally."
   (interactive "sSearch for string: ")
   (setq menu-bar-last-search-type 'string)
-  (if (equal string "")
-      (search-forward (car search-ring))
-    (isearch-update-ring string nil)
-    (search-forward string)))
-
-(defun nonincremental-search-backward (string)
+  ;; Ideally, this whole command would be equivalent to `C-s RET'.
+  (let ((isearch-forward (not backward))
+        (isearch-regexp-function search-default-regexp-mode)
+        (isearch-regexp nil))
+    (if (or (equal string "") (not string))
+        (funcall (isearch-search-fun-default) (car search-ring))
+      (isearch-update-ring string nil)
+      (funcall (isearch-search-fun-default) string))))
+
+(defun nonincremental-search-backward (&optional string)
   "Read a string and search backward for it nonincrementally."
-  (interactive "sSearch for string: ")
-  (setq menu-bar-last-search-type 'string)
-  (if (equal string "")
-      (search-backward (car search-ring))
-    (isearch-update-ring string nil)
-    (search-backward string)))
+  (interactive "sSearch backwards for string: ")
+  (nonincremental-search-forward string 'backward))
 
 (defun nonincremental-re-search-forward (string)
   "Read a regular expression and search for it nonincrementally."
@@ -413,8 +413,8 @@
     menu))
 
 (defun menu-bar-goto-uses-etags-p ()
-  (or (not (boundp 'xref-find-function))
-      (eq xref-find-function 'etags-xref-find)))
+  (or (not (boundp 'xref-backend-functions))
+      (eq (car xref-backend-functions) 'etags--xref-backend)))
 
 (defvar yank-menu (cons (purecopy "Select Yank") nil))
 (fset 'yank-menu (cons 'keymap yank-menu))
diff --git a/lisp/mpc.el b/lisp/mpc.el
index af1aac9..3ddcf13 100644
--- a/lisp/mpc.el
+++ b/lisp/mpc.el
@@ -826,6 +826,9 @@ The songs are returned as alists."
   (mpc-proc-cmd "play")
   (mpc-status-refresh))
 
+(defun mpc-cmd-seekcur (time)
+  (mpc-proc-cmd (list "seekcur" time) #'mpc-status-refresh))
+
 (defun mpc-cmd-add (files &optional playlist)
   "Add the songs FILES to PLAYLIST.
 If PLAYLIST is t or nil or missing, use the main playlist."
@@ -1026,12 +1029,11 @@ If PLAYLIST is t or nil or missing, use the main 
playlist."
                                                (substring time (match-end 0))
                                              time)))))
                     (`Cover
-                     (let ((dir (file-name-directory
-                                 (mpc-file-local-copy (cdr (assq 'file 
info))))))
+                     (let ((dir (file-name-directory (cdr (assq 'file info)))))
                        ;; (debug)
                        (push `(equal ',dir (file-name-directory (cdr (assq 
'file info)))) pred)
                        (if-let ((covers '(".folder.png" "cover.jpg" 
"folder.jpg"))
-                                (cover (cl-loop for file in (directory-files 
dir)
+                                (cover (cl-loop for file in (directory-files 
(mpc-file-local-copy dir))
                                                 if (member (downcase file) 
covers)
                                                 return (concat dir file)))
                                 (file (with-demoted-errors "MPC: %s"
@@ -1128,7 +1130,7 @@ If PLAYLIST is t or nil or missing, use the main 
playlist."
     (define-key map "s" 'mpc-toggle-play)
     (define-key map ">" 'mpc-next)
     (define-key map "<" 'mpc-prev)
-    (define-key map "g" nil)
+    (define-key map "g" 'mpc-seek-current)
     map))
 
 (easy-menu-define mpc-mode-menu mpc-mode-map
@@ -1137,6 +1139,7 @@ If PLAYLIST is t or nil or missing, use the main 
playlist."
     ["Play/Pause" mpc-toggle-play]      ;FIXME: Add one of ⏯/▶/⏸ in there?
     ["Next Track" mpc-next]             ;FIXME: Add ⇥ there?
     ["Previous Track" mpc-prev]         ;FIXME: Add ⇤ there?
+    ["Seek Within Track" mpc-seek-current]
     "--"
     ["Repeat Playlist" mpc-toggle-repeat :style toggle
      :selected (member '(repeat . "1") mpc-status)]
@@ -2403,6 +2406,12 @@ This is used so that they can be compared with `eq', 
which is needed for
   (interactive)
   (mpc-cmd-pause "0"))
 
+(defun mpc-seek-current (pos)
+  "Seek within current track."
+  (interactive
+   (list (read-string "Position to go ([+-]seconds): ")))
+  (mpc-cmd-seekcur pos))
+
 (defun mpc-toggle-play ()
   "Toggle between play and pause.
 If stopped, start playback."
diff --git a/lisp/net/eudc-export.el b/lisp/net/eudc-export.el
index c60911f..a9fac51 100644
--- a/lisp/net/eudc-export.el
+++ b/lisp/net/eudc-export.el
@@ -86,12 +86,19 @@ If SILENT is non-nil then the created BBDB record is not 
displayed."
                                              (cons (car mapping) value))))
                                       conversion-alist)))
       (setq bbdb-notes (delq nil bbdb-notes))
-      (setq bbdb-record (bbdb-create-internal bbdb-name
-                                             bbdb-company
-                                             bbdb-net
-                                             bbdb-address
-                                             bbdb-phones
-                                             bbdb-notes))
+      (setq bbdb-record (bbdb-create-internal
+                        bbdb-name
+                        ,@(when (eudc--using-bbdb-3-or-newer-p)
+                            '(nil
+                              nil))
+                        bbdb-company
+                        bbdb-net
+                        ,@(if (eudc--using-bbdb-3-or-newer-p)
+                              '(bbdb-phones
+                                bbdb-address)
+                            '(bbdb-address
+                              bbdb-phones))
+                        bbdb-notes))
       (or silent
          (bbdb-display-records (list bbdb-record))))))
 
@@ -160,8 +167,13 @@ LOCATION is used as the address location for bbdb."
 ;; External.
 (declare-function bbdb-parse-phone-number "ext:bbdb-com"
                   (string &optional number-type))
+(declare-function bbdb-parse-phone "ext:bbdb-com" (string &optional style))
 (declare-function bbdb-string-trim "ext:bbdb" (string))
 
+(defun eudc-bbdbify-company (&rest organizations)
+  "Return ORGANIZATIONS as a list compatible with BBDB."
+  organizations)
+
 (defun eudc-bbdbify-phone (phone location)
   "Parse PHONE into a vector compatible with BBDB.
 PHONE is either a string supposedly containing a phone number or
@@ -172,7 +184,9 @@ LOCATION is used as the phone location for BBDB."
    ((stringp phone)
     (let (phone-list)
       (condition-case err
-         (setq phone-list (bbdb-parse-phone-number phone))
+         (setq phone-list (if (eudc--using-bbdb-3-or-newer-p)
+                              (bbdb-parse-phone phone)
+                            (bbdb-parse-phone-number phone)))
        (error
         (if (string= "phone number unparsable." (cadr err))
             (if (not (y-or-n-p (format "BBDB claims %S to be 
unparsable--insert anyway? " phone)))
diff --git a/lisp/net/eudc-vars.el b/lisp/net/eudc-vars.el
index 8cffa8e..de7e25a 100644
--- a/lisp/net/eudc-vars.el
+++ b/lisp/net/eudc-vars.el
@@ -50,7 +50,7 @@ instead."
 
 ;; Known protocols (used in completion)
 ;; Not to be mistaken with `eudc-supported-protocols'
-(defvar eudc-known-protocols '(bbdb ph ldap))
+(defvar eudc-known-protocols '(bbdb ldap))
 
 (defcustom eudc-server-hotlist nil
   "Directory servers to query.
@@ -357,6 +357,10 @@ BBDB fields.  SPECs are sexps which are evaluated:
                       (symbol :tag "BBDB Field")
                       (sexp :tag "Conversion Spec"))))
 
+(make-obsolete-variable 'eudc-ph-bbdb-conversion-alist
+                        "the EUDC PH/QI backend is obsolete."
+                        "25.1")
+
 ;;}}}
 
 ;;{{{ LDAP Custom Group
@@ -369,7 +373,8 @@ BBDB fields.  SPECs are sexps which are evaluated:
   '((name . cn)
     (net . mail)
     (address . (eudc-bbdbify-address postaladdress "Address"))
-    (phone . ((eudc-bbdbify-phone telephonenumber "Phone"))))
+    (phone . (eudc-bbdbify-phone telephonenumber "Phone"))
+    (company . (eudc-bbdbify-company o)))
   "A mapping from BBDB to LDAP attributes.
 This is a list of cons cells (BBDB-FIELD . SPEC-OR-LIST) where
 BBDB-FIELD is the name of a field that must be defined in your BBDB
diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el
index 7280d9d..25a26bd 100644
--- a/lisp/net/eudc.el
+++ b/lisp/net/eudc.el
@@ -107,6 +107,18 @@
 ;; attribute name
 (defvar eudc-protocol-has-default-query-attributes nil)
 
+(defvar bbdb-version)
+
+(defun eudc--using-bbdb-3-or-newer-p ()
+  "Return non-nil if BBDB version is 3 or greater."
+  (or
+   ;; MELPA versions of BBDB may have a bad package version, but
+   ;; they're all version 3 or later.
+   (equal bbdb-version "@PACKAGE_VERSION@")
+   ;; Development versions of BBDB can have the format "X.YZ devo".
+   ;; Split the string just in case.
+   (version<= "3" (car (split-string bbdb-version)))))
+
 (defun eudc-plist-member (plist prop)
   "Return t if PROP has a value specified in PLIST."
   (if (not (= 0 (% (length plist) 2)))
diff --git a/lisp/net/eudcb-bbdb.el b/lisp/net/eudcb-bbdb.el
index 0545304..1972fc1 100644
--- a/lisp/net/eudcb-bbdb.el
+++ b/lisp/net/eudcb-bbdb.el
@@ -42,21 +42,13 @@
 (defvar eudc-bbdb-current-query nil)
 (defvar eudc-bbdb-current-return-attributes nil)
 
-(defvar bbdb-version)
-
 (defun eudc-bbdb-field (field-symbol)
   "Convert FIELD-SYMBOL so that it is recognized by the current BBDB version.
 BBDB < 3 used `net'; BBDB >= 3 uses `mail'."
   ;; This just-in-time translation permits upgrading from BBDB 2 to
   ;; BBDB 3 without restarting Emacs.
   (if (and (eq field-symbol 'net)
-          (or
-           ;; MELPA versions of BBDB may have a bad package version,
-           ;; but they're all version 3 or later.
-           (equal bbdb-version "@PACKAGE_VERSION@")
-           ;; Development versions of BBDB can have the format "X.YZ
-           ;; devo".  Split the string just in case.
-           (version<= "3" (car (split-string bbdb-version)))))
+          (eudc--using-bbdb-3-or-newer-p))
       'mail
     field-symbol))
 
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index c6d40b6..643d312 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -35,15 +35,19 @@
 ;; * Support connections to HOST/PORT, generally for debugging and the like.
 ;; In other words, for doing much the same thing as "telnet HOST PORT", and
 ;; then typing commands.
-;;
-;; PATHS
-;;
-;; On some systems, some of these programs are not in normal user path,
-;; but rather in /sbin, /usr/sbin, and so on.
-
 
 ;;; Code:
 
+;; On some systems, programs like ifconfig are not in normal user
+;; path, but rather in /sbin, /usr/sbin, etc (but non-root users can
+;; still use them for queries).  Actually the trend these
+;; days is for /sbin to be a symlink to /usr/sbin, but we still need to
+;; search both for older systems.
+(defun net-utils--executable-find-sbin (command)
+  "Return absolute name of COMMAND if found in an sbin directory."
+  (let ((exec-path '("/sbin" "/usr/sbin" "/usr/local/sbin")))
+    (executable-find command)))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Customization Variables
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -85,10 +89,13 @@ These options can be used to limit how many ICMP packets 
are emitted."
 (define-obsolete-variable-alias 'ipconfig-program 'ifconfig-program "22.2")
 
 (defcustom ifconfig-program
-  (if (eq system-type 'windows-nt)
-      "ipconfig"
-    "ifconfig")
+  (cond ((eq system-type 'windows-nt) "ipconfig")
+        ((executable-find "ifconfig") "ifconfig")
+        ((net-utils--executable-find-sbin "ifconfig"))
+        ((net-utils--executable-find-sbin "ip"))
+        (t "ip"))
   "Program to print network configuration information."
+  :version "25.1"                       ; add ip
   :group 'net-utils
   :type  'string)
 
@@ -96,10 +103,12 @@ These options can be used to limit how many ICMP packets 
are emitted."
   'ifconfig-program-options "22.2")
 
 (defcustom ifconfig-program-options
-  (list
-   (if (eq system-type 'windows-nt)
-       "/all" "-a"))
+  (cond ((string-match "ipconfig\\'" ifconfig-program) '("/all"))
+        ((string-match "ifconfig\\'" ifconfig-program) '("-a"))
+        ((string-match "ip\\'" ifconfig-program) '("addr")))
   "Options for the ifconfig program."
+  :version "25.1"
+  :set-after '(ifconfig-program)
   :group 'net-utils
   :type  '(repeat string))
 
@@ -126,7 +135,7 @@ These options can be used to limit how many ICMP packets 
are emitted."
   :group 'net-utils
   :type  '(repeat string))
 
-(defcustom arp-program "arp"
+(defcustom arp-program (or (net-utils--executable-find-sbin "arp") "arp")
   "Program to print IP to address translation tables."
   :group 'net-utils
   :type  'string)
diff --git a/lisp/net/newst-treeview.el b/lisp/net/newst-treeview.el
index 0c2df88..4f81b86 100644
--- a/lisp/net/newst-treeview.el
+++ b/lisp/net/newst-treeview.el
@@ -267,28 +267,34 @@ their id stays constant."
   "Render text between markers START and END."
   (if newsticker-html-renderer
       (condition-case error-data
-          (save-excursion
-            (set-marker-insertion-type end t)
-            ;; check whether it is necessary to call html renderer
-            ;; (regexp inspired by htmlr.el)
-            (goto-char start)
-            (when (re-search-forward
-                   "</?[A-Za-z1-6]*\\|&#?[A-Za-z0-9]+;" end t)
-              ;; (message "%s" (newsticker--title item))
-              (let ((w3m-fill-column (if newsticker-use-full-width
-                                         -1 fill-column))
-                    (w3-maximum-line-length
-                     (if newsticker-use-full-width nil fill-column)))
-                (save-excursion
-                  (funcall newsticker-html-renderer start end)))
-              ;;(cond ((eq newsticker-html-renderer 'w3m-region)
-              ;;     (add-text-properties start end (list 'keymap
-              ;;                                        w3m-minor-mode-map)))
-              ;;((eq newsticker-html-renderer 'w3-region)
-              ;;(add-text-properties start end (list 'keymap w3-mode-map))))
-              (if (eq newsticker-html-renderer 'w3m-region)
-                  (w3m-toggle-inline-images t))
-              t))
+          ;; Need to save selected window in order to prevent mixing
+          ;; up contents of the item buffer.  This happens with shr
+          ;; which does some smart optimizations that apparently
+          ;; interfere with our own, maybe not-so-smart, optimizations.
+          (save-selected-window
+            (save-excursion
+              (set-marker-insertion-type end t)
+              ;; check whether it is necessary to call html renderer
+              ;; (regexp inspired by htmlr.el)
+              (goto-char start)
+              (when (re-search-forward
+                     "</?[A-Za-z1-6]*\\|&#?[A-Za-z0-9]+;" end t)
+                ;; (message "%s" (newsticker--title item))
+                (let ((w3m-fill-column (if newsticker-use-full-width
+                                           -1 fill-column))
+                      (w3-maximum-line-length
+                       (if newsticker-use-full-width nil fill-column)))
+                  (select-window (newsticker--treeview-item-window))
+                  (save-excursion
+                    (funcall newsticker-html-renderer start end)))
+                ;;(cond ((eq newsticker-html-renderer 'w3m-region)
+                ;;     (add-text-properties start end (list 'keymap
+                ;;                                        w3m-minor-mode-map)))
+                ;;((eq newsticker-html-renderer 'w3-region)
+                ;;(add-text-properties start end (list 'keymap w3-mode-map))))
+                (if (eq newsticker-html-renderer 'w3m-region)
+                    (w3m-toggle-inline-images t))
+                t)))
         (error
          (message "Error: HTML rendering failed: %s, %s"
                   (car error-data) (cdr error-data))
diff --git a/lisp/net/sasl-scram-rfc.el b/lisp/net/sasl-scram-rfc.el
index 18d7a6b..34d6ddb 100644
--- a/lisp/net/sasl-scram-rfc.el
+++ b/lisp/net/sasl-scram-rfc.el
@@ -3,6 +3,7 @@
 ;; Copyright (C) 2014-2015 Free Software Foundation, Inc.
 
 ;; Author: Magnus Henoch <address@hidden>
+;; Package: sasl
 
 ;; This file is part of GNU Emacs.
 
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index f5ff6a7..03492de 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -597,9 +597,14 @@ we have this shell function.")
 use File::Spec;
 use Cwd \"realpath\";
 
+sub myrealpath {
+    my ($file) = @_;
+    return realpath($file) if -e $file;
+}
+
 sub recursive {
     my ($volume, @dirs) = @_;
-    my $real = realpath(File::Spec->catpath(
+    my $real = myrealpath(File::Spec->catpath(
                    $volume, File::Spec->catdir(@dirs), \"\"));
     if ($real) {
         my ($vol, $dir) = File::Spec->splitpath($real, 1);
@@ -613,7 +618,7 @@ sub recursive {
     }
 }
 
-$result = realpath($ARGV[0]);
+$result = myrealpath($ARGV[0]);
 if (!$result) {
     my ($vol, $dir) = File::Spec->splitpath($ARGV[0], 1);
     ($vol, @dirs) = recursive($vol, File::Spec->splitdir($dir));
@@ -621,10 +626,7 @@ if (!$result) {
     $result = File::Spec->catpath($vol, File::Spec->catdir(@dirs), \"\");
 }
 
-if ($ARGV[0] =~ /\\/$/) {
-    $result = $result . \"/\";
-}
-
+$result =~ s/\"/\\\\\"/g;
 print \"\\\"$result\\\"\\n\";
 ' \"$1\" 2>/dev/null"
   "Perl script to produce output suitable for use with `file-truename'
@@ -1143,20 +1145,17 @@ target of the symlink differ."
 
           ;; Do it yourself.  We bind `directory-sep-char' here for
           ;; XEmacs on Windows, which would otherwise use backslash.
-          (t (let* ((directory-sep-char ?/)
-                    (steps (tramp-compat-split-string localname "/"))
-                    (localnamedir (tramp-run-real-handler
-                                   'file-name-as-directory (list localname)))
-                    (is-dir (string= localname localnamedir))
-                    (thisstep nil)
-                    (numchase 0)
-                    ;; Don't make the following value larger than
-                    ;; necessary.  People expect an error message in
-                    ;; a timely fashion when something is wrong;
-                    ;; otherwise they might think that Emacs is hung.
-                    ;; Of course, correctness has to come first.
-                    (numchase-limit 20)
-                    symlink-target)
+          (t (let ((directory-sep-char ?/)
+                   (steps (tramp-compat-split-string localname "/"))
+                   (thisstep nil)
+                   (numchase 0)
+                   ;; Don't make the following value larger than
+                   ;; necessary.  People expect an error message in a
+                   ;; timely fashion when something is wrong;
+                   ;; otherwise they might think that Emacs is hung.
+                   ;; Of course, correctness has to come first.
+                   (numchase-limit 20)
+                   symlink-target)
                (while (and steps (< numchase numchase-limit))
                  (setq thisstep (pop steps))
                  (tramp-message
@@ -1212,10 +1211,8 @@ target of the symlink differ."
                      (if result
                          (mapconcat 'identity (cons "" result) "/")
                        "/"))
-               (when (and is-dir
-                          (or (string= "" result)
-                              (not (string= (substring result -1) "/"))))
-                 (setq result (concat result "/"))))))
+               (when (string= "" result)
+                 (setq result "/")))))
 
          (tramp-message v 4 "True name of `%s' is `%s'" localname result)
          result))))
@@ -1278,8 +1275,12 @@ target of the symlink differ."
             (tramp-get-ls-command vec)
             ;; On systems which have no quoting style, file names
             ;; with special characters could fail.
-            (if (tramp-get-ls-command-with-quoting-style vec)
-                "--quoting-style=c" "")
+            (cond
+             ((tramp-get-ls-command-with-quoting-style vec)
+              "--quoting-style=c")
+             ((tramp-get-ls-command-with-w-option vec)
+              "-w")
+             (t ""))
             (if (eq id-format 'integer) "-ildn" "-ild")
             (tramp-shell-quote-argument localname)))
     ;; Parse `ls -l' output ...
@@ -1837,10 +1838,14 @@ be non-negative integers."
      "-- 2>/dev/null | sed -e 's/\"/\\\\\"/g' -e 's/%s/\"/g'); echo \")\"")
     (tramp-shell-quote-argument localname)
     (tramp-get-ls-command vec)
-    ;; On systems which have no quoting style, file names with
-    ;; special characters could fail.
-    (if (tramp-get-ls-command-with-quoting-style vec)
-       "--quoting-style=shell" "")
+    ;; On systems which have no quoting style, file names with special
+    ;; characters could fail.
+    (cond
+     ((tramp-get-ls-command-with-quoting-style vec)
+      "--quoting-style=shell")
+     ((tramp-get-ls-command-with-w-option vec)
+      "-w")
+     (t ""))
     (tramp-get-remote-stat vec)
     tramp-stat-marker tramp-stat-marker
     tramp-stat-marker tramp-stat-marker
@@ -4149,7 +4154,8 @@ seconds.  If not, it produces an error message with the 
given ERROR-ARGS."
   "Set up an interactive shell.
 Mainly sets the prompt and the echo correctly.  PROC is the shell
 process to set up.  VEC specifies the connection."
-  (let ((tramp-end-of-output tramp-initial-end-of-output))
+  (let ((tramp-end-of-output tramp-initial-end-of-output)
+       (case-fold-search t))
     (tramp-open-shell vec (tramp-get-method-parameter vec 'tramp-remote-shell))
 
     ;; Disable tab and echo expansion.
@@ -4182,7 +4188,7 @@ process to set up.  VEC specifies the connection."
        ;; Use MULE to select the right EOL convention for communicating
        ;; with the process.
        (let ((cs (or (and (memq 'utf-8 (coding-system-list))
-                          (string-match "utf8" (tramp-get-remote-locale vec))
+                          (string-match "utf-?8" (tramp-get-remote-locale vec))
                           (cons 'utf-8 'utf-8))
                      (tramp-compat-funcall 'process-coding-system proc)
                      (cons 'undecided 'undecided)))
@@ -4264,7 +4270,7 @@ process to set up.  VEC specifies the connection."
   (tramp-find-shell vec)
 
   ;; Disable unexpected output.
-  (tramp-send-command vec "mesg n; biff n" t)
+  (tramp-send-command vec "mesg n 2>/dev/null; biff n 2>/dev/null" t)
 
   ;; IRIX64 bash expands "!" even when in single quotes.  This
   ;; destroys our shell functions, we must disable it.  See
@@ -5295,21 +5301,26 @@ Return ATTR."
            ;; The login shell could return more than just the $PATH
            ;; string.  So we use `tramp-end-of-heredoc' as marker.
            (when elt2
-             (tramp-send-command-and-read
-              vec
-              (format
-               "%s %s %s 'echo %s \\\"$PATH\\\"'"
-               (tramp-get-method-parameter vec 'tramp-remote-shell)
-               (mapconcat
-                'identity
-                (tramp-get-method-parameter vec 'tramp-remote-shell-login)
-                " ")
-               (mapconcat
-                'identity
-                (tramp-get-method-parameter vec 'tramp-remote-shell-args)
-                " ")
-               (tramp-shell-quote-argument tramp-end-of-heredoc))
-              nil (regexp-quote tramp-end-of-heredoc)))))
+             (or
+              (tramp-send-command-and-read
+               vec
+               (format
+                "%s %s %s 'echo %s \\\"$PATH\\\"'"
+                (tramp-get-method-parameter vec 'tramp-remote-shell)
+                (mapconcat
+                 'identity
+                 (tramp-get-method-parameter vec 'tramp-remote-shell-login)
+                 " ")
+                (mapconcat
+                 'identity
+                 (tramp-get-method-parameter vec 'tramp-remote-shell-args)
+                 " ")
+                (tramp-shell-quote-argument tramp-end-of-heredoc))
+               'noerror (regexp-quote tramp-end-of-heredoc))
+              (progn
+                (tramp-message
+                 vec 2 "Could not retrieve `tramp-own-remote-path'")
+                nil)))))
 
       ;; Replace place holder `tramp-default-remote-path'.
       (when elt1
@@ -5353,7 +5364,7 @@ Return ATTR."
 (defun tramp-get-remote-locale (vec)
   (with-tramp-connection-property vec "locale"
     (tramp-send-command vec "locale -a")
-    (let ((candidates '("en_US.utf8" "C.utf8"))
+    (let ((candidates '("en_US.utf8" "C.utf8" "en_US.UTF-8"))
          locale)
       (with-current-buffer (tramp-get-connection-buffer vec)
        (while candidates
@@ -5412,6 +5423,14 @@ Return ATTR."
        vec (format "%s --quoting-style=shell -al /dev/null"
                   (tramp-get-ls-command vec))))))
 
+(defun tramp-get-ls-command-with-w-option (vec)
+  (save-match-data
+    (with-tramp-connection-property vec "ls-w-option"
+      (tramp-message vec 5 "Checking, whether `ls -w' works")
+      ;; Option "-w" is available on BSD systems.
+      (tramp-send-command-and-check
+       vec (format "%s -alw /dev/null" (tramp-get-ls-command vec))))))
+
 (defun tramp-get-test-command (vec)
   (with-tramp-connection-property vec "test"
     (tramp-message vec 5 "Finding a suitable `test' command")
diff --git a/lisp/obsolete/complete.el b/lisp/obsolete/complete.el
index 87dedac..e67ae5e 100644
--- a/lisp/obsolete/complete.el
+++ b/lisp/obsolete/complete.el
@@ -1074,7 +1074,7 @@ absolute rather than relative to some directory on the 
SEARCH-PATH."
          (setq search-path
                (mapcar (lambda (dir) (concat dir subdir))
                        search-path)
-               file ))
+               file nil))
       ;; Make list of completions in each directory on search-path
       (while search-path
        (let* ((dir (car search-path))
diff --git a/lisp/net/eudcb-ph.el b/lisp/obsolete/eudcb-ph.el
similarity index 99%
rename from lisp/net/eudcb-ph.el
rename to lisp/obsolete/eudcb-ph.el
index f144bf6..c847c2a 100644
--- a/lisp/net/eudcb-ph.el
+++ b/lisp/obsolete/eudcb-ph.el
@@ -7,6 +7,7 @@
 ;; Maintainer: Thomas Fitzsimmons <address@hidden>
 ;; Keywords: comm
 ;; Package: eudc
+;; Obsolete-since: 25.1
 
 ;; This file is part of GNU Emacs.
 
diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el
index 077a18c..19a95aa 100644
--- a/lisp/progmodes/cc-awk.el
+++ b/lisp/progmodes/cc-awk.el
@@ -72,7 +72,7 @@
     (modify-syntax-entry ?\# "<   " st)
     ;; / can delimit regexes or be a division operator.  By default we assume
     ;; that it is a division sign, and fix the regexp operator cases with
-    ;; `font-lock-syntactic-keywords'.
+    ;; `c-awk-set-syntax-table-properties'.
     (modify-syntax-entry ?/ "." st)     ; ACM 2002/4/27.
     (modify-syntax-entry ?* "." st)
     (modify-syntax-entry ?+ "." st)
@@ -785,13 +785,16 @@
 ;;     Scan the buffer text between point and LIM, setting (and clearing) the
 ;; syntax-table property where necessary.
 ;;
-;; This function is designed to be called as the FUNCTION in a MATCHER in
-;; font-lock-syntactic-keywords, and it always returns NIL (to inhibit
-;; repeated calls from font-lock: See elisp info page "Search-based
-;; Fontification").  It also gets called, with a bit of glue, from
-;; after-change-functions when font-lock isn't active.  Point is left
-;; "undefined" after this function exits.  THE BUFFER SHOULD HAVE BEEN
-;; WIDENED, AND ANY PRECIOUS MATCH-DATA SAVED BEFORE CALLING THIS ROUTINE.
+;; This function is designed to be called as the FUNCTION in a MATCHER
+;; in font-lock-syntactic-keywords, and it always returns NIL (to
+;; inhibit repeated calls from font-lock: See elisp info page
+;; "Search-based Fontification").  (2015-11-24: CC Mode doesn't use
+;; `font-lock-syntactic-keywords' and hasn't done for a very long
+;; time, if ever.  ACM.)  This function gets called, with a bit of
+;; glue, from after-change-functions whether or not font-lock is
+;; active.  Point is left "undefined" after this function exits.  THE
+;; BUFFER SHOULD HAVE BEEN WIDENED, AND ANY PRECIOUS MATCH-DATA SAVED
+;; BEFORE CALLING THIS ROUTINE.
 ;;
 ;; We need to set/clear the syntax-table property on:
 ;; (i) / - It is set to "string" on a / which is the opening or closing
diff --git a/lisp/progmodes/cc-bytecomp.el b/lisp/progmodes/cc-bytecomp.el
index 81b7a82..d3b4db7 100644
--- a/lisp/progmodes/cc-bytecomp.el
+++ b/lisp/progmodes/cc-bytecomp.el
@@ -252,6 +252,11 @@ perhaps a `cc-bytecomp-restore-environment' is forgotten 
somewhere"))
        (cc-bytecomp-debug-msg
         "cc-bytecomp-restore-environment: Done"))))
 
+(defun cc-bytecomp-load (cc-part)
+  ;; A dummy function which will immediately be overwritten by the
+  ;; following at load time.  This should suppress the byte compiler
+  ;; error that the function is "not known to be defined".
+)
 (eval
  ;; This eval is to avoid byte compilation of the function below.
  ;; There's some bug in XEmacs 21.4.6 that can cause it to dump core
@@ -284,9 +289,6 @@ perhaps a `cc-bytecomp-restore-environment' is forgotten 
somewhere"))
          (cc-bytecomp-setup-environment)
          t))))
 
-(defvar cc-bytecomp-noruntime-functions nil
-  "Saved value of `byte-compile-noruntime-functions'.")
-
 (defmacro cc-require (cc-part)
   "Force loading of the corresponding .el file in the current directory
 during compilation, but compile in a `require'.  Don't use within
@@ -296,19 +298,37 @@ Having cyclic cc-require's will result in infinite 
recursion.  That's
 somewhat intentional."
   `(progn
      (eval-when-compile
-       (if (boundp 'byte-compile-noruntime-functions) ; in case load uncompiled
-          (setq cc-bytecomp-noruntime-functions
-                byte-compile-noruntime-functions))
        (cc-bytecomp-load (symbol-name ,cc-part)))
-     ;; Hack to suppress spurious "might not be defined at runtime" warnings.
-     ;; The basic issue is that
-     ;;   (eval-when-compile (require 'foo))
-     ;;   (require 'foo)
-     ;; produces bogus noruntime warnings about functions from foo.
-     (eval-when-compile
-       (setq byte-compile-noruntime-functions cc-bytecomp-noruntime-functions))
      (require ,cc-part)))
 
+(defmacro cc-conditional-require (cc-part condition)
+  "If the CONDITION is satisfied at compile time, (i) force the
+file CC-PART.el in the current directory to be loaded at compile
+time, (ii) generate code to load the file at load time.
+
+CC-PART will normally be a quoted name such as 'cc-fix.
+CONDITION should not be quoted."
+  (if (eval condition)
+      (progn
+       (cc-bytecomp-load (symbol-name (eval cc-part)))
+       `(require ,cc-part))
+    '(progn)))
+
+(defmacro cc-conditional-require-after-load (cc-part file condition)
+  "If the CONDITION is satisfied at compile time, (i) force the
+file CC-PART.el in the current directory to be loaded at compile
+time, (ii) generate an `eval-after-load' form to load CC-PART.el
+after the loading of FILE.
+
+CC-PART will normally be a quoted name such as 'cc-fix.  FILE
+should be a string.  CONDITION should not be quoted."
+  (if (eval condition)
+      (progn
+       (cc-bytecomp-load (symbol-name (eval cc-part)))
+       `(eval-after-load ,file
+          '(require ,cc-part)))
+    '(progn)))
+
 (defmacro cc-provide (feature)
   "A replacement for the `provide' form that restores the environment
 after the compilation.  Don't use within `eval-when-compile'."
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index 6bd5815..ac4aa19 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -75,37 +75,22 @@
 
 ;; cc-fix.el contains compatibility macros that should be used if
 ;; needed.
-(eval-and-compile
-  (if (or (/= (regexp-opt-depth "\\(\\(\\)\\)") 2)
-         (not (fboundp 'push)))
-      (cc-load "cc-fix")))
-
-(when (featurep 'xemacs) ; There is now (2005/12) code in GNU Emacs CVS
-                        ; to make the call to f-l-c-k throw an error.
-  (eval-after-load "font-lock"
-    '(if (and (not (featurep 'cc-fix)) ; only load the file once.
-             (let (font-lock-keywords)
-               (font-lock-compile-keywords '("\\<\\>"))
-               font-lock-keywords)) ; did the previous call foul this up?
-         (load "cc-fix"))))
-
-;; The above takes care of the delayed loading, but this is necessary
-;; to ensure correct byte compilation.
-(eval-when-compile
-  (if (and (featurep 'xemacs)
-          (not (featurep 'cc-fix))
-          (progn
-            (require 'font-lock)
-            (let (font-lock-keywords)
-              (font-lock-compile-keywords '("\\<\\>"))
-              font-lock-keywords)))
-      (cc-load "cc-fix")))
-
-;; XEmacs 21.4 doesn't have `delete-dups'.
-(eval-and-compile
-  (if (and (not (fboundp 'delete-dups))
-          (not (featurep 'cc-fix)))
-      (cc-load "cc-fix")))
+(cc-conditional-require
+ 'cc-fix (or (/= (regexp-opt-depth "\\(\\(\\)\\)") 2)
+            (not (fboundp 'push))
+            ;; XEmacs 21.4 doesn't have `delete-dups'.
+            (not (fboundp 'delete-dups))))
+
+(cc-conditional-require-after-load
+ 'cc-fix "font-lock"
+ (and
+  (featurep 'xemacs)
+  (progn
+    (require 'font-lock)
+    (let (font-lock-keywords)
+      (font-lock-compile-keywords '("\\<\\>"))
+      font-lock-keywords))))
+
 
 ;;; Variables also used at compile time.
 
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 9e9bee8..acc2edd 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -8065,7 +8065,7 @@ brace.
 Note that this function might do hidden buffer changes.  See the
 comment at the start of cc-engine.el for more info."
   ;; Note to maintainers: this function consumes a great mass of CPU cycles.
-  ;; It's use should thus be minimised as far as possible.
+  ;; Its use should thus be minimized as far as possible.
   (let ((paren-state (c-parse-state)))
     (or (not (c-most-enclosing-brace paren-state))
        (c-search-uplist-for-classkey paren-state))))
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 7cda5ce..5b67083 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -403,7 +403,9 @@ The syntax tables aren't stored directly since they're 
quite large."
           table)))
 (c-lang-defvar c++-template-syntax-table
   (and (c-lang-const c++-make-template-syntax-table)
-       (funcall (c-lang-const c++-make-template-syntax-table))))
+       ;; The next eval remove a superfluous ' from '(lambda.  This
+       ;; gets rid of compilation warnings.
+       (funcall (eval (c-lang-const c++-make-template-syntax-table)))))
 
 (c-lang-defconst c-make-no-parens-syntax-table
   ;; A variant of the standard syntax table which is used to find matching
@@ -426,7 +428,8 @@ The syntax tables aren't stored directly since they're 
quite large."
          table))))
 (c-lang-defvar c-no-parens-syntax-table
   (and (c-lang-const c-make-no-parens-syntax-table)
-       (funcall (c-lang-const c-make-no-parens-syntax-table))))
+       ;; See comment in `c++template-syntax-table' about the next `eval'.
+       (funcall (eval (c-lang-const c-make-no-parens-syntax-table)))))
 
 (c-lang-defconst c-identifier-syntax-modifications
   "A list that describes the modifications that should be done to the
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 37cae09..5d8af23 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -99,10 +99,9 @@
 (cc-bytecomp-defvar adaptive-fill-first-line-regexp) ; Emacs
 (cc-bytecomp-defun run-mode-hooks)     ; Emacs 21.1
 
-;; We set these variables during mode init, yet we don't require
+;; We set this variable during mode init, yet we don't require
 ;; font-lock.
 (cc-bytecomp-defvar font-lock-defaults)
-(cc-bytecomp-defvar font-lock-syntactic-keywords)
 
 ;; Menu support for both XEmacs and Emacs.  If you don't have easymenu
 ;; with your version of Emacs, you are incompatible!
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index d9b4b69..f139066 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -2594,7 +2594,7 @@ and overlay is highlighted between MK and END-MK."
        (goto-char mk)))
     (if end-mk
         (push-mark end-mk t)
-      (if mark-active (setq mark-active)))
+      (if mark-active (setq mark-active nil)))
     ;; If hideshow got in the way of
     ;; seeing the right place, open permanently.
     (dolist (ov (overlays-at (point)))
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index bf0f4b0..12848fe 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -228,7 +228,6 @@ Blank lines separate paragraphs.  Semicolons start comments.
 
 \\{emacs-lisp-mode-map}"
   :group 'lisp
-  (defvar xref-backend-functions)
   (defvar project-library-roots-function)
   (lisp-mode-variables nil nil 'elisp)
   (add-hook 'after-load-functions #'elisp--font-lock-flush-elisp-buffers)
@@ -576,8 +575,9 @@ It can be quoted, or be inside a quoted form."
                                        " " (cadr table-etc)))
                     (cddr table-etc)))))))))
 
-(define-obsolete-function-alias
-  'lisp-completion-at-point 'elisp-completion-at-point "25.1")
+(defun lisp-completion-at-point (_predicate)
+  (declare (obsolete elisp-completion-at-point "25.1"))
+  (elisp-completion-at-point))
 
 ;;; Xref backend
 
@@ -833,8 +833,9 @@ non-nil result supercedes the xrefs produced by
   (xref-elisp-location-file l))
 
 (defun elisp-library-roots ()
-  (defvar package-user-dir)
-  (cons package-user-dir load-path))
+  (if (boundp 'package-user-dir)
+      (cons package-user-dir load-path)
+    load-path))
 
 ;;; Elisp Interaction mode
 
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index dd84754..3065725 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -799,9 +799,7 @@ If no tags table is loaded, do nothing and return nil."
     (let ((completion-ignore-case (if (memq tags-case-fold-search '(t nil))
                                      tags-case-fold-search
                                    case-fold-search))
-         (pattern (funcall (or find-tag-default-function
-                               (get major-mode 'find-tag-default-function)
-                               #'find-tag-default)))
+         (pattern (find-tag--default))
          beg)
       (when pattern
        (save-excursion
@@ -818,9 +816,7 @@ If no tags table is loaded, do nothing and return nil."
   (let* ((completion-ignore-case (if (memq tags-case-fold-search '(t nil))
                                     tags-case-fold-search
                                   case-fold-search))
-        (default (funcall (or find-tag-default-function
-                              (get major-mode 'find-tag-default-function)
-                              'find-tag-default)))
+        (default (find-tag--default))
         (spec (completing-read (if default
                                    (format "%s (default %s): "
                                            (substring string 0 (string-match 
"[ :]+\\'" string))
@@ -832,6 +828,11 @@ If no tags table is loaded, do nothing and return nil."
        (or default (user-error "There is no default tag"))
       spec)))
 
+(defun find-tag--default ()
+  (funcall (or find-tag-default-function
+               (get major-mode 'find-tag-default-function)
+               'find-tag-default)))
+
 (defvar last-tag nil
   "Last tag found by \\[find-tag].")
 
@@ -1260,24 +1261,21 @@ buffer-local values of tags table format variables."
          (point-min) (point-max))))
     (save-excursion
       (goto-char (point-min))
-      ;; This monster regexp matches an etags tag line.
-      ;;   \1 is the string to match;
-      ;;   \2 is not interesting;
-      ;;   \3 is the guessed tag name; XXX guess should be better eg DEFUN
-      ;;   \4 is not interesting;
-      ;;   \5 is the explicitly-specified tag name.
-      ;;   \6 is the line to start searching at;
-      ;;   \7 is the char to start searching at.
+      ;; This regexp matches an explicit tag name or the place where
+      ;; it would start.
       (while (re-search-forward
-             "^\\(\\([^\177]*[^-a-zA-Z0-9_+*$:\177]+\\)?\
-\\([-a-zA-Z0-9_+*$?:]+\\)[^-a-zA-Z0-9_+*$?:\177]*\\)\177\
-\\(\\([^\n\001]+\\)\001\\)?\\([0-9]+\\)?,\\([0-9]+\\)?\n"
+              "[\f\t\n\r()=,; ]?\177\\\(?:\\([^\n\001]+\\)\001\\)?"
              nil t)
-       (push   (prog1 (if (match-beginning 5)
+       (push   (prog1 (if (match-beginning 1)
                           ;; There is an explicit tag name.
-                          (buffer-substring (match-beginning 5) (match-end 5))
-                        ;; No explicit tag name.  Best guess.
-                        (buffer-substring (match-beginning 3) (match-end 3)))
+                          (buffer-substring (match-beginning 1) (match-end 1))
+                        ;; No explicit tag name.  Backtrack a little,
+                         ;; and look for the implicit one.
+                         (goto-char (match-beginning 0))
+                         (skip-chars-backward "^\f\t\n\r()=,; ")
+                         (prog1
+                             (buffer-substring (point) (match-beginning 0))
+                           (goto-char (match-end 0))))
                  (progress-reporter-update progress-reporter (point)))
                table)))
     table))
@@ -2087,6 +2085,12 @@ for \\[find-tag] (which see)."
                                                 tag-implicit-name-match-p)
   "Tag order used in `xref-backend-definitions' to look for definitions.")
 
+;;;###autoload
+(defun etags--xref-backend () 'etags)
+
+(cl-defmethod xref-backend-identifier-at-point ((_backend (eql etags)))
+  (find-tag--default))
+
 (cl-defmethod xref-backend-identifier-completion-table ((_backend (eql etags)))
   (tags-lazy-completion-table))
 
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 356a31d..310b7ba 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -1823,6 +1823,7 @@ nil."
                    (skip-syntax-backward " ")
                    (skip-syntax-backward "w_")
                    (looking-at js--possibly-braceless-keyword-re))
+                 (memq (char-before) '(?\s ?\t ?\n ?\}))
                  (not (js--end-of-do-while-loop-p))))
       (save-excursion
         (goto-char (match-beginning 0))
diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el
index b459cbf..9702880 100644
--- a/lisp/progmodes/prog-mode.el
+++ b/lisp/progmodes/prog-mode.el
@@ -50,49 +50,51 @@
   "Keymap used for programming modes.")
 
 (defvar prog-indentation-context nil
-  "Non-nil while indenting embedded code chunks.
+  "When non-nil, provides context for indenting embedded code chunks.
+
 There are languages where part of the code is actually written in
 a sub language, e.g., a Yacc/Bison or ANTLR grammar also consists
 of plain C code.  This variable enables the major mode of the
-main language to use the indentation engine of the sub mode for
-lines in code chunks written in the sub language.
+main language to use the indentation engine of the sub-mode for
+lines in code chunks written in the sub-mode's language.
 
 When a major mode of such a main language decides to delegate the
 indentation of a line/region to the indentation engine of the sub
-mode, it is supposed to bind this variable to non-nil around the call.
+mode, it should bind this variable to non-nil around the call.
+
+The non-nil value should be a list of the form:
 
-The non-nil value looks as follows
    (FIRST-COLUMN (START . END) PREVIOUS-CHUNKS)
 
-FIRST-COLUMN is the column the indentation engine of the sub mode
-should usually choose for top-level language constructs inside
-the code chunk (instead of 0).
+FIRST-COLUMN is the column the indentation engine of the sub-mode
+should use for top-level language constructs inside the code
+chunk (instead of 0).
 
-START to END is the region of the code chunk.  See function
-`prog-widen' for additional info.
+START and END specify the region of the code chunk.  END can be
+nil, which stands for the value of `point-max'.  The function
+`prog-widen' uses this to restore restrictions imposed by the
+sub-mode's indentation engine.
 
 PREVIOUS-CHUNKS, if non-nil, provides the indentation engine of
-the sub mode with the virtual context of the code chunk.  Valid
+the sub-mode with the virtual context of the code chunk.  Valid
 values are:
 
- - A string containing code which the indentation engine can
+ - A string containing text which the indentation engine can
    consider as standing in front of the code chunk.  To cache the
    string's calculated syntactic information for repeated calls
-   with the same string, it is valid and expected for the inner
-   mode to add text-properties to the string.
+   with the same string, the sub-mode can add text-properties to
+   the string.
 
    A typical use case is for grammars with code chunks which are
-   to be indented like function bodies - the string would contain
-   a corresponding function header.
+   to be indented like function bodies -- the string would contain
+   the corresponding function preamble.
 
- - A function called with the start position of the current
-   chunk.  It will return either the region of the previous chunk
-   as (PREV-START . PREV-END) or nil if there is no further
-   previous chunk.
+ - A function, to be called with the start position of the current
+   chunk.  It should return either the region of the previous chunk
+   as (PREV-START . PREV-END), or nil if there is no previous chunk.
 
-   A typical use case are literate programming sources - the
-   function would successively return the code chunks of the
-   previous macro definitions for the same name.")
+   A typical use case are literate programming sources -- the
+   function would successively return the previous code chunks.")
 
 (defun prog-indent-sexp (&optional defun)
   "Indent the expression after point.
@@ -113,8 +115,8 @@ instead."
 
 (defun prog-widen ()
   "Remove restrictions (narrowing) from current code chunk or buffer.
-This function can be used instead of `widen' in any function used
-by the indentation engine to make it respect the value
+This function should be used instead of `widen' in any function used
+by the indentation engine to make it respect the value of
 `prog-indentation-context'.
 
 This function (like `widen') is useful inside a
@@ -122,8 +124,8 @@ This function (like `widen') is useful inside a
 narrowing is in effect."
   (let ((chunk (cadr prog-indentation-context)))
     (if chunk
-        ;; no widen necessary here, as narrow-to-region changes (not
-        ;; just narrows) existing restrictions
+        ;; No call to `widen' is necessary here, as narrow-to-region
+        ;; changes (not just narrows) the existing restrictions
         (narrow-to-region (car chunk) (or (cdr chunk) (point-max)))
       (widen))))
 
@@ -134,15 +136,15 @@ Each element looks like (SYMBOL . CHARACTER), where the 
symbol
 matching SYMBOL (a string, not a regexp) will be shown as
 CHARACTER instead.
 
-CHARACTER can be a character or it can be a list or vector, in
+CHARACTER can be a character, or it can be a list or vector, in
 which case it will be used to compose the new symbol as per the
 third argument of `compose-region'.")
 
 (defun prettify-symbols-default-compose-p (start end _match)
   "Return true iff the symbol MATCH should be composed.
 The symbol starts at position START and ends at position END.
-This is default `prettify-symbols-compose-predicate' which is
-suitable for most programming languages such as C or Lisp."
+This is the default for `prettify-symbols-compose-predicate'
+which is suitable for most programming languages such as C or Lisp."
   ;; Check that the chars should really be composed into a symbol.
   (let* ((syntaxes-beg (if (memq (char-syntax (char-after start)) '(?w ?_))
                            '(?w ?_) '(?. ?\\)))
@@ -154,14 +156,14 @@ suitable for most programming languages such as C or 
Lisp."
 
 (defvar-local prettify-symbols-compose-predicate
   #'prettify-symbols-default-compose-p
-  "A predicate deciding if the currently matched symbol is to be composed.
+  "A predicate for deciding if the currently matched symbol is to be composed.
 The matched symbol is the car of one entry in `prettify-symbols-alist'.
-The predicate receives the match's start and end position as well
+The predicate receives the match's start and end positions as well
 as the match-string as arguments.")
 
 (defun prettify-symbols--compose-symbol (alist)
   "Compose a sequence of characters into a symbol.
-Regexp match data 0 points to the chars."
+Regexp match data 0 specifies the characters to be composed."
   ;; Check that the chars should really be composed into a symbol.
   (let ((start (match-beginning 0))
         (end (match-end 0))
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index dcaffa4..397f379 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -201,21 +201,22 @@ LENGTH is the match length, in characters."
 
 ;;; API
 
-;; We make the etags backend the default for now, until something
-;; better comes along.
-(defvar xref-backend-functions (list #'xref--etags-backend)
+(defvar xref-backend-functions nil
   "Special hook to find the xref backend for the current context.
 Each functions on this hook is called in turn with no arguments
 and should return either nil to mean that it is not applicable,
 or an xref backend, which is a value to be used to dispatch the
 generic functions.")
 
+;; We make the etags backend the default for now, until something
+;; better comes along.  Use APPEND so that any `add-hook' calls made
+;; before this package is loaded put new items before this one.
+(add-hook 'xref-backend-functions #'etags--xref-backend t)
+
 ;;;###autoload
 (defun xref-find-backend ()
   (run-hook-with-args-until-success 'xref-backend-functions))
 
-(defun xref--etags-backend () 'etags)
-
 (cl-defgeneric xref-backend-definitions (backend identifier)
   "Find definitions of IDENTIFIER.
 
diff --git a/lisp/replace.el b/lisp/replace.el
index 7727562..54b3a71 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -34,9 +34,11 @@
   :group 'matching)
 
 (defcustom replace-character-fold nil
-  "Non-nil means `query-replace' should do character folding in matches.
+  "Non-nil means replacement commands should do character folding in matches.
 This means, for instance, that \\=' will match a large variety of
-unicode quotes."
+unicode quotes.
+This variable affects `query-replace' and `replace-string', but not
+`replace-regexp'."
   :type 'boolean
   :group 'matching
   :version "25.1")
@@ -111,7 +113,8 @@ strings or patterns."
   :version "22.1")
 
 (defcustom query-replace-show-replacement t
-  "Non-nil means to show what actual replacement text will be."
+  "Non-nil means show substituted replacement text in the minibuffer.
+This variable affects only `query-replace-regexp'."
   :type 'boolean
   :group 'matching
   :version "23.1")
@@ -314,6 +317,10 @@ If `replace-lax-whitespace' is non-nil, a space or spaces 
in the string
 to be replaced will match a sequence of whitespace chars defined by the
 regexp in `search-whitespace-regexp'.
 
+If `replace-character-fold' is non-nil, matching uses character folding,
+i.e. it ignores diacritics and other differences between equivalent
+character strings.
+
 Third arg DELIMITED (prefix arg if interactive), if non-nil, means replace
 only matches surrounded by word boundaries.  A negative prefix arg means
 replace backward.
@@ -372,6 +379,8 @@ If `replace-regexp-lax-whitespace' is non-nil, a space or 
spaces in the regexp
 to be replaced will match a sequence of whitespace chars defined by the
 regexp in `search-whitespace-regexp'.
 
+This function is not affected by `replace-character-fold'.
+
 Third arg DELIMITED (prefix arg if interactive), if non-nil, means replace
 only matches surrounded by word boundaries.  A negative prefix arg means
 replace backward.
@@ -460,6 +469,8 @@ If `replace-regexp-lax-whitespace' is non-nil, a space or 
spaces in the regexp
 to be replaced will match a sequence of whitespace chars defined by the
 regexp in `search-whitespace-regexp'.
 
+This function is not affected by `replace-character-fold'.
+
 Third arg DELIMITED (prefix arg if interactive), if non-nil, means replace
 only matches that are surrounded by word boundaries.
 Fourth and fifth arg START and END specify the region to operate on."
@@ -551,6 +562,10 @@ If `replace-lax-whitespace' is non-nil, a space or spaces 
in the string
 to be replaced will match a sequence of whitespace chars defined by the
 regexp in `search-whitespace-regexp'.
 
+If `replace-character-fold' is non-nil, matching uses character folding,
+i.e. it ignores diacritics and other differences between equivalent
+character strings.
+
 Third arg DELIMITED (prefix arg if interactive), if non-nil, means replace
 only matches surrounded by word boundaries.  A negative prefix arg means
 replace backward.
@@ -602,6 +617,8 @@ If `replace-regexp-lax-whitespace' is non-nil, a space or 
spaces in the regexp
 to be replaced will match a sequence of whitespace chars defined by the
 regexp in `search-whitespace-regexp'.
 
+This function is not affected by `replace-character-fold'
+
 In Transient Mark mode, if the mark is active, operate on the contents
 of the region.  Otherwise, operate from point to the end of the buffer.
 
@@ -1560,6 +1577,9 @@ See also `multi-occur'."
                    ;; Highlight the matches
                    (let ((len (length curstring))
                          (start 0))
+                     ;; Count empty lines that don't use next loop (Bug#22062).
+                     (when (zerop len)
+                       (setq matches (1+ matches)))
                      (while (and (< start len)
                                  (string-match regexp curstring start))
                        (setq matches (1+ matches))
diff --git a/lisp/simple.el b/lisp/simple.el
index 8b57bf0..9e0388e 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -458,19 +458,18 @@ A non-nil INTERACTIVE argument means to run the 
`post-self-insert-hook'."
        (put-text-property from (point) 'rear-nonsticky
                           (cons 'hard sticky)))))
 
-(defun open-line (n &optional interactive)
+(defun open-line (n)
   "Insert a newline and leave point before it.
 If there is a fill prefix and/or a `left-margin', insert them on
 the new line if the line would have been blank.
-With arg N, insert N newlines.
-A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'."
-  (interactive "*p\np")
+With arg N, insert N newlines."
+  (interactive "*p")
   (let* ((do-fill-prefix (and fill-prefix (bolp)))
         (do-left-margin (and (bolp) (> (current-left-margin) 0)))
         (loc (point-marker))
          ;; Don't expand an abbrev before point.
         (abbrev-mode nil))
-    (newline n interactive)
+    (newline n)
     (goto-char loc)
     (while (> n 0)
       (cond ((bolp)
@@ -975,7 +974,8 @@ If DELETE is `delete-only', then only delete the region and 
the return value
 is undefined.  If DELETE is nil, just return the content as a string.
 If DELETE is `bounds', then don't delete, but just return the
 boundaries of the region as a list of (START . END) positions.
-If anything else, delete the region and return its content as a string.")
+If anything else, delete the region and return its content as a string,
+after filtering it with `filter-buffer-substring'.")
 
 (defvar region-insert-function
   (lambda (lines)
@@ -1000,6 +1000,10 @@ Optional second arg KILLFLAG, if non-nil, means to kill 
(save in
 kill ring) instead of delete.  Interactively, N is the prefix
 arg, and KILLFLAG is set if N is explicitly specified.
 
+When killing, the killed text is filtered by
+`filter-buffer-substring' before it is saved in the kill ring, so
+the actual saved text might be different from what was killed.
+
 In Overwrite mode, single character backward deletion may replace
 tabs with spaces so as to back over columns, unless point is at
 the end of the line."
@@ -1035,7 +1039,11 @@ To disable this, set variable `delete-active-region' to 
nil.
 
 Optional second arg KILLFLAG non-nil means to kill (save in kill
 ring) instead of delete.  Interactively, N is the prefix arg, and
-KILLFLAG is set if N was explicitly specified."
+KILLFLAG is set if N was explicitly specified.
+
+When killing, the killed text is filtered by
+`filter-buffer-substring' before it is saved in the kill ring, so
+the actual saved text might be different from what was killed."
   (declare (interactive-only delete-char))
   (interactive "p\nP")
   (unless (integerp n)
@@ -2803,7 +2811,7 @@ an amalgamating command.  The car of the list is the 
number of
 times an amalgamating command has been called, and the cdr are the
 buffers that were changed during the last command.")
 
-(defvar undo-auto--current-boundary-timer nil
+(defvar undo-auto-current-boundary-timer nil
   "Current timer which will run `undo-auto--boundary-timer' or nil.
 
 If set to non-nil, this will effectively disable the timer.")
@@ -2811,7 +2819,7 @@ If set to non-nil, this will effectively disable the 
timer.")
 (defvar undo-auto--this-command-amalgamating nil
   "Non-nil if `this-command' should be amalgamated.
 This variable is set to nil by `undo-auto--boundaries' and is set
-by `undo-auto--amalgamate'." )
+by `undo-auto-amalgamate'." )
 
 (defun undo-auto--needs-boundary-p ()
   "Return non-nil if `buffer-undo-list' needs a boundary at the start."
@@ -2821,7 +2829,7 @@ by `undo-auto--amalgamate'." )
   "Return the number of amalgamating last commands or nil.
 Amalgamating commands are, by default, either
 `self-insert-command' and `delete-char', but can be any command
-that calls `undo-auto--amalgamate'."
+that calls `undo-auto-amalgamate'."
   (car-safe undo-auto--last-boundary-cause))
 
 (defun undo-auto--ensure-boundary (cause)
@@ -2852,13 +2860,13 @@ REASON describes the reason that the boundary is being 
added; see
 
 (defun undo-auto--boundary-timer ()
   "Timer which will run `undo--auto-boundary-timer'."
-  (setq undo-auto--current-boundary-timer nil)
+  (setq undo-auto-current-boundary-timer nil)
   (undo-auto--boundaries 'timer))
 
 (defun undo-auto--boundary-ensure-timer ()
   "Ensure that the `undo-auto-boundary-timer' is set."
-  (unless undo-auto--current-boundary-timer
-    (setq undo-auto--current-boundary-timer
+  (unless undo-auto-current-boundary-timer
+    (setq undo-auto-current-boundary-timer
           (run-at-time 10 nil #'undo-auto--boundary-timer))))
 
 (defvar undo-auto--undoably-changed-buffers nil
@@ -2873,14 +2881,15 @@ See also `undo-auto--buffer-undoably-changed'.")
 (defun undo-auto--add-boundary ()
   "Add an `undo-boundary' in appropriate buffers."
   (undo-auto--boundaries
-   (if undo-auto--this-command-amalgamating
-       'amalgamate
-     'command))
-  (setq undo-auto--this-command-amalgamating nil))
+   (let ((amal undo-auto--this-command-amalgamating))
+       (setq undo-auto--this-command-amalgamating nil)
+       (if amal
+           'amalgamate
+         'command))))
 
-(defun undo-auto--amalgamate ()
+(defun undo-auto-amalgamate ()
   "Amalgamate undo if necessary.
-This function can be called after an amalgamating command.  It
+This function can be called before an amalgamating command.  It
 removes the previous `undo-boundary' if a series of such calls
 have been made.  By default `self-insert-command' and
 `delete-char' are the only amalgamating commands, although this
@@ -3809,7 +3818,9 @@ see other processes running on the system, use 
`list-system-processes'."
 (setq prefix-command--last-echo nil)
 
 (defun internal-echo-keystrokes-prefix ()
-  ;; BEWARE: Called directly from the C code.
+  ;; BEWARE: Called directly from C code.
+  ;; If the return value is non-nil, it means we are in the middle of
+  ;; a command with prefix, such as a command invoked with prefix-arg.
   (if (not prefix-command--needs-update)
       prefix-command--last-echo
     (setq prefix-command--last-echo
@@ -4249,21 +4260,25 @@ The command \\[yank] can retrieve it from there.
 If you want to append the killed region to the last killed text,
 use \\[append-next-kill] before \\[kill-region].
 
+Any command that calls this function is a \"kill command\".
+If the previous command was also a kill command,
+the text killed this time appends to the text killed last time
+to make one entry in the kill ring.
+
+The killed text is filtered by `filter-buffer-substring' before it is
+saved in the kill ring, so the actual saved text might be different
+from what was killed.
+
 If the buffer is read-only, Emacs will beep and refrain from deleting
 the text, but put the text in the kill ring anyway.  This means that
 you can use the killing commands to copy text from a read-only buffer.
 
 Lisp programs should use this function for killing text.
  (To delete text, use `delete-region'.)
-Supply two arguments, character positions indicating the stretch of text
- to be killed.
-Any command that calls this function is a \"kill command\".
-If the previous command was also a kill command,
-the text killed this time appends to the text killed last time
-to make one entry in the kill ring.
-
-The optional argument REGION if non-nil, indicates that we're not just killing
-some text between BEG and END, but we're killing the region."
+Supply two arguments, character positions BEG and END indicating the
+ stretch of text to be killed.  If the optional argument REGION is
+ non-nil, the function ignores BEG and END, and kills the current
+ region instead."
   ;; Pass mark first, then point, because the order matters when
   ;; calling `kill-append'.
   (interactive (list (mark) (point) 'region))
@@ -4308,8 +4323,14 @@ In Transient Mark mode, deactivate the mark.
 If `interprogram-cut-function' is non-nil, also save the text for a window
 system cut and paste.
 
-The optional argument REGION if non-nil, indicates that we're not just copying
-some text between BEG and END, but we're copying the region.
+The copied text is filtered by `filter-buffer-substring' before it is
+saved in the kill ring, so the actual saved text might be different
+from what was in the buffer.
+
+When called from Lisp, save in the kill ring the stretch of text
+between BEG and END, unless the optional argument REGION is
+non-nil, in which case ignore BEG and END, and save the current
+region instead.
 
 This command's old key binding has been given to `kill-ring-save'."
   ;; Pass mark first, then point, because the order matters when
@@ -4334,8 +4355,14 @@ system cut and paste.
 If you want to append the killed line to the last killed text,
 use \\[append-next-kill] before \\[kill-ring-save].
 
-The optional argument REGION if non-nil, indicates that we're not just copying
-some text between BEG and END, but we're copying the region.
+The copied text is filtered by `filter-buffer-substring' before it is
+saved in the kill ring, so the actual saved text might be different
+from what was in the buffer.
+
+When called from Lisp, save in the kill ring the stretch of text
+between BEG and END, unless the optional argument REGION is
+non-nil, in which case ignore BEG and END, and save the current
+region instead.
 
 This command is similar to `copy-region-as-kill', except that it gives
 visual feedback indicating the extent of the region being copied."
diff --git a/lisp/subr.el b/lisp/subr.el
index 420b212..860c14c 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -4686,14 +4686,14 @@ Usually the separator is \".\", but it can be any other 
string.")
 
 
 (defconst version-regexp-alist
-  '(("^[-_+ ]?snapshot$"                                 . -4)
+  '(("^[-._+ ]?snapshot$"                                 . -4)
     ;; treat "1.2.3-20050920" and "1.2-3" as snapshot releases
-    ("^[-_+]$"                                           . -4)
+    ("^[-._+]$"                                           . -4)
     ;; treat "1.2.3-CVS" as snapshot release
-    ("^[-_+ ]?\\(cvs\\|git\\|bzr\\|svn\\|hg\\|darcs\\)$" . -4)
-    ("^[-_+ ]?alpha$"                                    . -3)
-    ("^[-_+ ]?beta$"                                     . -2)
-    ("^[-_+ ]?\\(pre\\|rc\\)$"                           . -1))
+    ("^[-._+ ]?\\(cvs\\|git\\|bzr\\|svn\\|hg\\|darcs\\)$" . -4)
+    ("^[-._+ ]?alpha$"                                    . -3)
+    ("^[-._+ ]?beta$"                                     . -2)
+    ("^[-._+ ]?\\(pre\\|rc\\)$"                           . -1))
   "Specify association between non-numeric version and its priority.
 
 This association is used to handle version string like \"1.0pre2\",
@@ -4703,6 +4703,7 @@ non-numeric part of a version string to an integer.  For 
example:
    String Version    Integer List Version
    \"0.9snapshot\"     (0  9 -4)
    \"1.0-git\"         (1  0 -4)
+   \"1.0.cvs\"         (1  0 -4)
    \"1.0pre2\"         (1  0 -1 2)
    \"1.0PRE2\"         (1  0 -1 2)
    \"22.8beta3\"       (22 8 -2 3)
@@ -4742,41 +4743,47 @@ in `version-regexp-alist'.
 
 Examples of valid version syntax:
 
-   1.0pre2   1.0.7.5   22.8beta3   0.9alpha1   6.9.30Beta
+   1.0pre2   1.0.7.5   22.8beta3   0.9alpha1   6.9.30Beta   2.4.snapshot   .5
 
 Examples of invalid version syntax:
 
-   1.0prepre2   1.0..7.5   22.8X3   alpha3.2   .5
+   1.0prepre2   1.0..7.5   22.8X3   alpha3.2
 
 Examples of version conversion:
 
    Version String    Version as a List of Integers
-   \"1.0.7.5\"         (1  0  7 5)
-   \"1.0pre2\"         (1  0 -1 2)
-   \"1.0PRE2\"         (1  0 -1 2)
-   \"22.8beta3\"       (22 8 -2 3)
-   \"22.8Beta3\"       (22 8 -2 3)
-   \"0.9alpha1\"       (0  9 -3 1)
+   \".5\"              (0 5)
+   \"0.9 alpha\"       (0  9 -3)
    \"0.9AlphA1\"       (0  9 -3 1)
-   \"0.9alpha\"        (0  9 -3)
    \"0.9snapshot\"     (0  9 -4)
    \"1.0-git\"         (1  0 -4)
+   \"1.0.7.5\"         (1  0  7 5)
+   \"1.0.cvs\"         (1  0 -4)
+   \"1.0PRE2\"         (1  0 -1 2)
+   \"1.0pre2\"         (1  0 -1 2)
+   \"22.8 Beta3\"      (22 8 -2 3)
+   \"22.8beta3\"       (22 8 -2 3)
 
 See documentation for `version-separator' and `version-regexp-alist'."
-  (or (and (stringp ver) (> (length ver) 0))
-      (error "Invalid version string: `%s'" ver))
+  (unless (stringp ver)
+    (error "Version must be a string"))
   ;; Change .x.y to 0.x.y
   (if (and (>= (length ver) (length version-separator))
           (string-equal (substring ver 0 (length version-separator))
                         version-separator))
       (setq ver (concat "0" ver)))
+  (unless (string-match-p "^[0-9]" ver)
+    (error "Invalid version syntax: `%s' (must start with a number)" ver))
+
   (save-match-data
     (let ((i 0)
          (case-fold-search t)          ; ignore case in matching
          lst s al)
+      ;; Parse the version-string up to a separator until there are none left
       (while (and (setq s (string-match "[0-9]+" ver i))
                  (= s i))
-       ;; handle numeric part
+        ;; Add the numeric part to the beginning of the version list;
+        ;; lst gets reversed at the end
        (setq lst (cons (string-to-number (substring ver i (match-end 0)))
                        lst)
              i   (match-end 0))
@@ -4792,15 +4799,15 @@ See documentation for `version-separator' and 
`version-regexp-alist'."
              (setq al (cdr al)))
            (cond (al
                   (push (cdar al) lst))
-                 ;; Convert 22.3a to 22.3.1, 22.3b to 22.3.2, etc.
-                 ((string-match "^[-_+ ]?\\([a-zA-Z]\\)$" s)
+        ;; Convert 22.3a to 22.3.1, 22.3b to 22.3.2, etc., but only if
+        ;; the letter is the end of the version-string, to avoid
+        ;; 22.8X3 being valid
+        ((and (string-match "^[-._+ ]?\\([a-zA-Z]\\)$" s)
+           (= i (length ver)))
                   (push (- (aref (downcase (match-string 1 s)) 0) ?a -1)
                         lst))
                  (t (error "Invalid version syntax: `%s'" ver))))))
-      (if (null lst)
-         (error "Invalid version syntax: `%s'" ver)
-       (nreverse lst)))))
-
+    (nreverse lst))))
 
 (defun version-list-< (l1 l2)
   "Return t if L1, a list specification of a version, is lower than L2.
diff --git a/lisp/term.el b/lisp/term.el
index 033eef4..bb718cf 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -110,19 +110,6 @@
 ;;
 ;;             ----------------------------------------
 ;;
-;;  If you'd like to check out my complete configuration, you can download
-;; it from http://www.polito.it/~s64912/things.html, it's ~500k in size and
-;; contains my .cshrc, .emacs and my whole site-lisp subdirectory.  (notice
-;; that this term.el may be newer/older than the one in there, please
-;; check!)
-;;
-;;  This complete configuration contains, among other things, a complete
-;; rectangular marking solution (based on rect-mark.el and
-;; pc-bindings.el) and should be a good example of how extensively Emacs
-;; can be configured on a ppp-connected ws.
-;;
-;;             ----------------------------------------
-;;
 ;;  TODO:
 ;;
 ;;  - Add hooks to allow raw-mode keys to be configurable
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index fe27f0f..aa51446 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -2809,6 +2809,7 @@ The variable `ispell-highlight-face' selects the face to 
use for highlighting."
                  (regexp-quote (buffer-substring-no-properties start end))
                  "\\b"))
                (isearch-regexp t)
+               (isearch-regexp-function nil)
                (isearch-case-fold-search nil)
                (isearch-forward t)
                (isearch-other-end start)
diff --git a/lisp/textmodes/reftex-auc.el b/lisp/textmodes/reftex-auc.el
index bbad065..151be59 100644
--- a/lisp/textmodes/reftex-auc.el
+++ b/lisp/textmodes/reftex-auc.el
@@ -137,7 +137,7 @@ argument identify one of multiple indices."
        ((stringp tag) tag)
        ((integerp tag)
         (save-excursion
-          (goto-char (match-end 1))
+          (goto-char (match-end 0))
           (or (reftex-nth-arg tag (nth 6 entry)) "idx")))
        (t "idx")))))
 
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index 3f7a6f3..fcab136 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -877,7 +877,7 @@ DOWNCASE    t:   Downcase words before using them."
       "\\\\label{\\(?1:[^}]*\\)}"
       ;; keyvals [..., label = {foo}, ...] forms used by ctable,
       ;; listings, minted, ...
-      "\\[[^[]]*\\<label[[:space:]]*=[[:space:]]*{?\\(?1:[^],}]+\\)}?")
+      
"\\[[^][]\\{0,2000\\}\\<label[[:space:]]*=[[:space:]]*{?\\(?1:[^],}]+\\)}?")
     "List of regexps matching \\label definitions.
 The default value matches usual \\label{...} definitions and
 keyval style [..., label = {...}, ...] label definitions.  It is
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 84efa7a..4ee3658 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -2397,7 +2397,7 @@ Your bug report will be posted to the AUCTeX bug 
reporting list.
 
 ;;; Start of automatically extracted autoloads.
 
-;;;### (autoloads nil "reftex-auc" "reftex-auc.el" 
"cf606f7918831321cb46f254436dc66e")
+;;;### (autoloads nil "reftex-auc" "reftex-auc.el" 
"7c0e0b46919f4ceefe1026e31e73ebcd")
 ;;; Generated autoloads from reftex-auc.el
 
 (autoload 'reftex-arg-label "reftex-auc" "\
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el
index 99a990b..e21aece 100644
--- a/lisp/vc/vc-cvs.el
+++ b/lisp/vc/vc-cvs.el
@@ -882,11 +882,11 @@ For an empty string, nil is returned (invalid CVS root)."
             (setq host uhost))
           ;; Remove empty HOST
           (and (equal host "")
-               (setq host))
+               (setq host nil))
           ;; Fix windows style CVS root `:local:C:\\project\\cvs\\some\\dir'
           (and host
                (equal method "local")
-               (setq root (concat host ":" root) host))
+               (setq root (concat host ":" root) host nil))
           ;; Normalize CVS root record
           (list method user host root)))))
 
diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el
index ec55867..b8593e3 100644
--- a/lisp/vc/vc-dispatcher.el
+++ b/lisp/vc/vc-dispatcher.el
@@ -580,12 +580,20 @@ editing!"
 (defun vc-buffer-sync (&optional not-urgent)
   "Make sure the current buffer and its working file are in sync.
 NOT-URGENT means it is ok to continue if the user says not to save."
-  (when (buffer-modified-p)
-    (if (or vc-suppress-confirm
-           (y-or-n-p (format "Buffer %s modified; save it? " (buffer-name))))
-       (save-buffer)
-      (unless not-urgent
-       (error "Aborted")))))
+  (let (missing)
+    (when (cond
+           ((buffer-modified-p))
+           ((not (file-exists-p buffer-file-name))
+            (setq missing t)))
+      (if (or vc-suppress-confirm
+              (y-or-n-p (format "Buffer %s %s; save it? "
+                                (buffer-name)
+                                (if missing
+                                    "is missing on disk"
+                                  "modified"))))
+          (save-buffer)
+        (unless not-urgent
+          (error "Aborted"))))))
 
 ;; Command closures
 
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 8bf37f0..9908418 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1050,7 +1050,7 @@ or BRANCH^ (where \"^\" can be repeated)."
 
 (autoload 'vc-switches "vc")
 
-(defun vc-git-diff (files &optional rev1 rev2 buffer async)
+(defun vc-git-diff (files &optional rev1 rev2 buffer _async)
   "Get a difference report using Git between two revisions of FILES."
   (let (process-file-side-effects
         (command "diff-tree"))
@@ -1061,7 +1061,7 @@ or BRANCH^ (where \"^\" can be repeated)."
       (unless rev1 (setq rev1 "HEAD")))
     (if vc-git-diff-switches
         (apply #'vc-git-command (or buffer "*vc-diff*")
-              (if async 'async 1)
+              1 ; bug#21969
               files
                command
                "--exit-code"
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index 92b0c31..dd897ad 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -335,7 +335,7 @@ If LIMIT is non-nil, show no more than this many entries."
 
 (autoload 'vc-switches "vc")
 
-(defun vc-hg-diff (files &optional oldvers newvers buffer async)
+(defun vc-hg-diff (files &optional oldvers newvers buffer _async)
   "Get a difference report using hg between two revisions of FILES."
   (let* ((firstfile (car files))
          (working (and firstfile (vc-working-revision firstfile))))
@@ -345,8 +345,8 @@ If LIMIT is non-nil, show no more than this many entries."
       (setq oldvers working))
     (apply #'vc-hg-command
           (or buffer "*vc-diff*")
-          (if async 'async nil)
-          files "diff"
+           nil ; bug#21969
+           files "diff"
            (append
             (vc-switches 'hg 'diff)
             (when oldvers
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index dbe09d2..93d2dc0 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -791,7 +791,11 @@ current, and kill the buffer that visits the link."
   nil)
 
 (defun vc-refresh-state ()
-  "Activate or deactivate VC mode as appropriate."
+  "Refresh the VC state of the current buffer's file.
+
+This command is more thorough than `vc-state-refresh', in that it
+also supports switching a back-end or removing the file from VC.
+In the latter case, VC mode is deactivated for this buffer."
   (interactive)
   ;; Recompute whether file is version controlled,
   ;; if user has killed the buffer and revisited.
diff --git a/lisp/vc/vc-mtn.el b/lisp/vc/vc-mtn.el
index b56a08f..3b59c61 100644
--- a/lisp/vc/vc-mtn.el
+++ b/lisp/vc/vc-mtn.el
@@ -253,10 +253,10 @@ If LIMIT is non-nil, show no more than this many entries."
 
 (autoload 'vc-switches "vc")
 
-(defun vc-mtn-diff (files &optional rev1 rev2 buffer async)
+(defun vc-mtn-diff (files &optional rev1 rev2 buffer _async)
   "Get a difference report using monotone between two revisions of FILES."
   (apply 'vc-mtn-command (or buffer "*vc-diff*")
-        (if async 'async 1)
+        1 ; bug#21969
         files "diff"
          (append
            (vc-switches 'mtn 'diff)
diff --git a/lisp/vc/vc-rcs.el b/lisp/vc/vc-rcs.el
index ba13364..3e43546 100644
--- a/lisp/vc/vc-rcs.el
+++ b/lisp/vc/vc-rcs.el
@@ -534,10 +534,11 @@ files beneath it."
     (vc-rcs-print-log-cleanup))
   (when limit 'limit-unsupported))
 
-(defun vc-rcs-diff (files &optional oldvers newvers buffer async)
+(defun vc-rcs-diff (files &optional oldvers newvers buffer _async)
   "Get a difference report using RCS between two sets of files."
   (apply #'vc-do-command (or buffer "*vc-diff*")
-        (if async 'async 1)
+        ;; The repo is local, so this is fast anyway.
+        1 ; bug#21969
         "rcsdiff" (vc-expand-dirs files 'RCS)
          (append (list "-q"
                        (and oldvers (concat "-r" oldvers))
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index de58fb9..a50befa 100644
--- a/lisp/vc/vc-svn.el
+++ b/lisp/vc/vc-svn.el
@@ -147,7 +147,8 @@ switches."
 (defun vc-svn-registered (file)
   "Check if FILE is SVN registered."
   (setq file (expand-file-name file))
-  (when (vc-svn-root file)
+  (when (and (vc-svn-root file)
+             (file-accessible-directory-p (file-name-directory file)))
     (with-temp-buffer
       (cd (file-name-directory file))
       (let* (process-file-side-effects
@@ -309,11 +310,14 @@ to the SVN command."
 
 (defalias 'vc-svn-responsible-p 'vc-svn-root)
 
+(declare-function log-edit-extract-headers "log-edit" (headers string))
+
 (defun vc-svn-checkin (files comment &optional _extra-args-ignored)
   "SVN-specific version of `vc-backend-checkin'."
   (let ((status (apply
                  'vc-svn-command nil 1 files "ci"
-                 (nconc (list "-m" comment) (vc-switches 'SVN 'checkin)))))
+                 (nconc (cons "-m" (log-edit-extract-headers nil comment))
+                        (vc-switches 'SVN 'checkin)))))
     (set-buffer "*vc*")
     (goto-char (point-min))
     (unless (equal status 0)
@@ -400,6 +404,8 @@ FILE is a file wildcard, relative to the root directory of 
DIRECTORY."
   (unless contents-done
     (vc-svn-command nil 0 file "revert")))
 
+(autoload 'vc-read-revision "vc")
+
 (defun vc-svn-merge-file (file)
   "Accept a file merge request, prompting for revisions."
   (let* ((first-revision
diff --git a/lisp/window.el b/lisp/window.el
index 67e39ec..54ac811 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -4851,8 +4851,9 @@ frame.  The selected window is not changed by this 
function."
              (set-window-parameter (window-parent new) 'window-atom t))
            (set-window-parameter new 'window-atom t)))
 
-         ;; Sanitize sizes.
-         (window--sanitize-window-sizes frame horizontal)
+         ;; Sanitize sizes unless SIZE was specified.
+         (unless size
+            (window--sanitize-window-sizes frame horizontal))
 
          (run-window-configuration-change-hook frame)
          (run-window-scroll-functions new)
diff --git a/m4/ax_gcc_var_attribute.m4 b/m4/ax_gcc_var_attribute.m4
index 247cc4a..d12fce8 100644
--- a/m4/ax_gcc_var_attribute.m4
+++ b/m4/ax_gcc_var_attribute.m4
@@ -39,7 +39,7 @@
 #    dllexport
 #    init_priority
 #
-#   Unsuppored variable attributes will be tested against a global integer
+#   Unsupported variable attributes will be tested against a global integer
 #   variable and without any arguments given to the attribute itself; the
 #   result of this check might be wrong or meaningless so use with care.
 #
diff --git a/modules/mod-test/Makefile b/modules/mod-test/Makefile
index 1b74f47..04529db 100644
--- a/modules/mod-test/Makefile
+++ b/modules/mod-test/Makefile
@@ -24,7 +24,7 @@ CC      = gcc
 LD      = gcc
 LDFLAGS =
 
-# On MS-Windows, say "make SO=.dll" to build the module
+# On MS-Windows, say "make SO=dll" to build the module
 SO      = so
 # -fPIC is a no-op on Windows, but causes a compiler warning
 ifeq ($(SO),dll)
diff --git a/modules/mod-test/mod-test.c b/modules/mod-test/mod-test.c
index bae1967..862bb81 100644
--- a/modules/mod-test/mod-test.c
+++ b/modules/mod-test/mod-test.c
@@ -26,7 +26,8 @@ int plugin_is_GPL_compatible;
 
 /* Always return symbol 't'.  */
 static emacs_value
-Fmod_test_return_t (emacs_env *env, int nargs, emacs_value args[], void *data)
+Fmod_test_return_t (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
+                   void *data)
 {
   return env->intern (env, "t");
 }
@@ -39,8 +40,10 @@ sum (intmax_t a, intmax_t b)
 }
 
 static emacs_value
-Fmod_test_sum (emacs_env *env, int nargs, emacs_value args[], void *data)
+Fmod_test_sum (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data)
 {
+  assert (nargs == 2);
+
   intmax_t a = env->extract_integer (env, args[0]);
   intmax_t b = env->extract_integer (env, args[1]);
 
@@ -52,31 +55,33 @@ Fmod_test_sum (emacs_env *env, int nargs, emacs_value 
args[], void *data)
 
 /* Signal '(error 56).  */
 static emacs_value
-Fmod_test_signal (emacs_env *env, int nargs, emacs_value args[], void *data)
+Fmod_test_signal (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
+                 void *data)
 {
   assert (env->non_local_exit_check (env) == emacs_funcall_exit_return);
   env->non_local_exit_signal (env, env->intern (env, "error"),
                              env->make_integer (env, 56));
-  return NULL;
+  return env->intern (env, "nil");
 }
 
 
 /* Throw '(tag 65).  */
 static emacs_value
-Fmod_test_throw (emacs_env *env, int nargs, emacs_value args[], void *data)
+Fmod_test_throw (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
+                void *data)
 {
   assert (env->non_local_exit_check (env) == emacs_funcall_exit_return);
   env->non_local_exit_throw (env, env->intern (env, "tag"),
                             env->make_integer (env, 65));
-  return NULL;
+  return env->intern (env, "nil");
 }
 
 
 /* Call argument function, catch all non-local exists and return
    either normal result or a list describing the non-local exit.  */
 static emacs_value
-Fmod_test_non_local_exit_funcall (emacs_env *env, int nargs, emacs_value 
args[],
-                                 void *data)
+Fmod_test_non_local_exit_funcall (emacs_env *env, ptrdiff_t nargs,
+                                 emacs_value args[], void *data)
 {
   assert (nargs == 1);
   emacs_value result = env->funcall (env, args[0], 0, NULL);
@@ -111,9 +116,9 @@ Fmod_test_non_local_exit_funcall (emacs_env *env, int 
nargs, emacs_value args[],
 }
 
 
-/* Return a global referrence.  */
+/* Return a global reference.  */
 static emacs_value
-Fmod_test_globref_make (emacs_env *env, int nargs, emacs_value args[],
+Fmod_test_globref_make (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
                        void *data)
 {
   /* Make a big string and make it global.  */
@@ -130,7 +135,7 @@ Fmod_test_globref_make (emacs_env *env, int nargs, 
emacs_value args[],
 /* Return a copy of the argument string where every 'a' is replaced
    with 'b'.  */
 static emacs_value
-Fmod_test_string_a_to_b (emacs_env *env, int nargs, emacs_value args[],
+Fmod_test_string_a_to_b (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
                         void *data)
 {
   emacs_value lisp_str = args[0];
@@ -158,18 +163,10 @@ struct super_struct
   char large_unused_buffer[512];
 };
 
-/* Associated finalizer.  */
-static void
-finalizer (void *p)
-{
-  if (p)
-    free (p);
-}
-
 /* Return a new user-pointer to a super_struct, with amazing_int set
    to the passed parameter.  */
 static emacs_value
-Fmod_test_userptr_make (emacs_env *env, int nargs, emacs_value args[],
+Fmod_test_userptr_make (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
                        void *data)
 {
   struct super_struct *p = calloc (1, sizeof *p);
@@ -179,7 +176,8 @@ Fmod_test_userptr_make (emacs_env *env, int nargs, 
emacs_value args[],
 
 /* Return the amazing_int of a passed 'user-pointer to a super_struct'.  */
 static emacs_value
-Fmod_test_userptr_get (emacs_env *env, int nargs, emacs_value args[], void 
*data)
+Fmod_test_userptr_get (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
+                      void *data)
 {
   struct super_struct *p = env->get_user_ptr (env, args[0]);
   return env->make_integer (env, p->amazing_int);
@@ -188,7 +186,8 @@ Fmod_test_userptr_get (emacs_env *env, int nargs, 
emacs_value args[], void *data
 
 /* Fill vector in args[0] with value in args[1].  */
 static emacs_value
-Fmod_test_vector_fill (emacs_env *env, int nargs, emacs_value args[], void 
*data)
+Fmod_test_vector_fill (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
+                      void *data)
 {
   emacs_value vec = args[0];
   emacs_value val = args[1];
@@ -202,7 +201,8 @@ Fmod_test_vector_fill (emacs_env *env, int nargs, 
emacs_value args[], void *data
 /* Return whether all elements of vector in args[0] are 'eq' to value
    in args[1].  */
 static emacs_value
-Fmod_test_vector_eq (emacs_env *env, int nargs, emacs_value args[], void *data)
+Fmod_test_vector_eq (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
+                    void *data)
 {
   emacs_value vec = args[0];
   emacs_value val = args[1];
diff --git a/modules/mod-test/test.el b/modules/mod-test/test.el
index 98ce464..69bf933 100644
--- a/modules/mod-test/test.el
+++ b/modules/mod-test/test.el
@@ -28,7 +28,33 @@
 ;;
 
 (ert-deftest mod-test-sum-test ()
-  (should (= (mod-test-sum 1 2) 3)))
+  (should (= (mod-test-sum 1 2) 3))
+  (let ((descr (should-error (mod-test-sum 1 2 3))))
+    (should (eq (car descr) 'wrong-number-of-arguments))
+    (should (stringp (nth 1 descr)))
+    (should (eq 0
+                (string-match
+                 (concat "#<module function "
+                         "\\(at \\(0x\\)?[0-9a-fA-F]+\\( from .*\\)?"
+                         "\\|Fmod_test_sum from .*\\)>")
+                 (nth 1 descr))))
+    (should (= (nth 2 descr) 3)))
+  (should-error (mod-test-sum "1" 2) :type 'wrong-type-argument)
+  (should-error (mod-test-sum 1 "2") :type 'wrong-type-argument)
+  ;; The following tests are for 32-bit build --with-wide-int.
+  (should (= (mod-test-sum -1 most-positive-fixnum)
+             (1- most-positive-fixnum)))
+  (should (= (mod-test-sum 1 most-negative-fixnum)
+             (1+ most-negative-fixnum)))
+  (when (< #x1fffffff most-positive-fixnum)
+    (should (= (mod-test-sum 1 #x1fffffff)
+               (1+ #x1fffffff)))
+    (should (= (mod-test-sum -1 #x20000000)
+               #x1fffffff)))
+  (should-error (mod-test-sum 1 most-positive-fixnum)
+                :type 'overflow-error)
+  (should-error (mod-test-sum -1 most-negative-fixnum)
+                :type 'overflow-error))
 
 (ert-deftest mod-test-sum-docstring ()
   (should (string= (documentation 'mod-test-sum) "Return A + B")))
diff --git a/modules/modhelp.py b/modules/modhelp.py
index 2210030..7c96f27 100755
--- a/modules/modhelp.py
+++ b/modules/modhelp.py
@@ -121,7 +121,7 @@ def main():
     initp = subp.add_parser('init', help='create a test module from a 
template')
     initp.add_argument('module', help='name of the new module')
     initp.add_argument('-f', '--fun', default='fun',
-                       help='overide name of the default function')
+                       help='override name of the default function')
     initp.set_defaults(func=cmd_init)
 
     args = mainp.parse_args()
diff --git a/nextstep/templates/Info.plist.in b/nextstep/templates/Info.plist.in
index 09e953c..a0357b2 100644
--- a/nextstep/templates/Info.plist.in
+++ b/nextstep/templates/Info.plist.in
@@ -673,5 +673,7 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.
                        </array>
                </dict>
        </array>
+       <key>NSAppleScriptEnabled</key>
+       <string>YES</string>
 </dict>
 </plist>
diff --git a/src/ChangeLog.13 b/src/ChangeLog.13
index 4643a47..fd68f53 100644
--- a/src/ChangeLog.13
+++ b/src/ChangeLog.13
@@ -16566,7 +16566,7 @@
        (ns_draw_fringe_bitmap): Remove unused rowY.
        Change #if to COCOA && >= 10_6.
        (ns_draw_window_cursor): Remove unused overspill.
-       (ns_draw_underwave): width and x are EamcsCGFloat.
+       (ns_draw_underwave): width and x are EmacsCGFloat.
        (ns_draw_box): thickness is CGFloat.
        (ns_dumpglyphs_image): Change #if to COCOA && >= 10_6.
        (ns_send_appdefined): When NS_IMPL_GNUSTEP, redirect to main thread
diff --git a/src/alloc.c b/src/alloc.c
index 53f9745..23ddd83 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -406,24 +406,37 @@ ALIGN (void *ptr, int alignment)
    If A is a symbol, extract the hidden pointer's offset from lispsym,
    converted to void *.  */
 
-static void *
-XPNTR_OR_SYMBOL_OFFSET (Lisp_Object a)
-{
-  intptr_t i = USE_LSB_TAG ? XLI (a) - XTYPE (a) : XLI (a) & VALMASK;
-  return (void *) i;
-}
+#define macro_XPNTR_OR_SYMBOL_OFFSET(a) \
+  ((void *) (intptr_t) (USE_LSB_TAG ? XLI (a) - XTYPE (a) : XLI (a) & VALMASK))
 
 /* Extract the pointer hidden within A.  */
 
-static void *
+#define macro_XPNTR(a) \
+  ((void *) ((intptr_t) XPNTR_OR_SYMBOL_OFFSET (a) \
+            + (SYMBOLP (a) ? (char *) lispsym : NULL)))
+
+/* For pointer access, define XPNTR and XPNTR_OR_SYMBOL_OFFSET as
+   functions, as functions are cleaner and can be used in debuggers.
+   Also, define them as macros if being compiled with GCC without
+   optimization, for performance in that case.  The macro_* names are
+   private to this section of code.  */
+
+static ATTRIBUTE_UNUSED void *
+XPNTR_OR_SYMBOL_OFFSET (Lisp_Object a)
+{
+  return macro_XPNTR_OR_SYMBOL_OFFSET (a);
+}
+static ATTRIBUTE_UNUSED void *
 XPNTR (Lisp_Object a)
 {
-  void *p = XPNTR_OR_SYMBOL_OFFSET (a);
-  if (SYMBOLP (a))
-    p = (intptr_t) p + (char *) lispsym;
-  return p;
+  return macro_XPNTR (a);
 }
 
+#if DEFINE_KEY_OPS_AS_MACROS
+# define XPNTR_OR_SYMBOL_OFFSET(a) macro_XPNTR_OR_SYMBOL_OFFSET (a)
+# define XPNTR(a) macro_XPNTR (a)
+#endif
+
 static void
 XFLOAT_INIT (Lisp_Object f, double n)
 {
@@ -3712,7 +3725,7 @@ make_event_array (ptrdiff_t nargs, Lisp_Object *args)
 }
 
 #ifdef HAVE_MODULES
-/* Create a new module user ptr object. */
+/* Create a new module user ptr object.  */
 Lisp_Object
 make_user_ptr (void (*finalizer) (void*), void *p)
 {
@@ -5317,10 +5330,6 @@ total_bytes_of_live_objects (void)
 
 #ifdef HAVE_WINDOW_SYSTEM
 
-/* This code has a few issues on MS-Windows, see Bug#15876 and Bug#16140.  */
-
-#if !defined (HAVE_NTGUI)
-
 /* Remove unmarked font-spec and font-entity objects from ENTRY, which is
    (DRIVER-TYPE NUM-FRAMES FONT-CACHE-DATA ...), and return changed entry.  */
 
@@ -5335,11 +5344,12 @@ compact_font_cache_entry (Lisp_Object entry)
       Lisp_Object obj = XCAR (tail);
 
       /* Consider OBJ if it is (font-spec . [font-entity font-entity ...]).  */
-      if (CONSP (obj) && FONT_SPEC_P (XCAR (obj))
-         && !VECTOR_MARKED_P (XFONT_SPEC (XCAR (obj)))
+      if (CONSP (obj) && GC_FONT_SPEC_P (XCAR (obj))
+         && !VECTOR_MARKED_P (GC_XFONT_SPEC (XCAR (obj)))
          && VECTORP (XCDR (obj)))
        {
-         ptrdiff_t i, size = ASIZE (XCDR (obj)) & ~ARRAY_MARK_FLAG;
+         ptrdiff_t i, size = gc_asize (XCDR (obj));
+         Lisp_Object obj_cdr = XCDR (obj);
 
          /* If font-spec is not marked, most likely all font-entities
             are not marked too.  But we must be sure that nothing is
@@ -5348,14 +5358,14 @@ compact_font_cache_entry (Lisp_Object entry)
             {
               Lisp_Object objlist;
 
-              if (VECTOR_MARKED_P (XFONT_ENTITY (AREF (XCDR (obj), i))))
+              if (VECTOR_MARKED_P (GC_XFONT_ENTITY (AREF (obj_cdr, i))))
                 break;
 
-              objlist = AREF (AREF (XCDR (obj), i), FONT_OBJLIST_INDEX);
+              objlist = AREF (AREF (obj_cdr, i), FONT_OBJLIST_INDEX);
               for (; CONSP (objlist); objlist = XCDR (objlist))
                 {
                   Lisp_Object val = XCAR (objlist);
-                  struct font *font = XFONT_OBJECT (val);
+                  struct font *font = GC_XFONT_OBJECT (val);
 
                   if (!NILP (AREF (val, FONT_TYPE_INDEX))
                       && VECTOR_MARKED_P(font))
@@ -5383,8 +5393,6 @@ compact_font_cache_entry (Lisp_Object entry)
   return entry;
 }
 
-#endif /* not HAVE_NTGUI */
-
 /* Compact font caches on all terminals and mark
    everything which is still here after compaction.  */
 
@@ -5396,7 +5404,6 @@ compact_font_caches (void)
   for (t = terminal_list; t; t = t->next_terminal)
     {
       Lisp_Object cache = TERMINAL_FONT_CACHE (t);
-#if !defined (HAVE_NTGUI)
       if (CONSP (cache))
        {
          Lisp_Object entry;
@@ -5404,7 +5411,6 @@ compact_font_caches (void)
          for (entry = XCDR (cache); CONSP (entry); entry = XCDR (entry))
            XSETCAR (entry, compact_font_cache_entry (XCAR (entry)));
        }
-#endif /* not HAVE_NTGUI */
       mark_object (cache);
     }
 }
@@ -5574,10 +5580,6 @@ garbage_collect_1 (void *end)
   mark_fringe_data ();
 #endif
 
-#ifdef HAVE_MODULES
-  mark_modules ();
-#endif
-
   /* Everything is now marked, except for the data in font caches,
      undo lists, and finalizers.  The first two are compacted by
      removing an items which aren't reachable otherwise.  */
diff --git a/src/cmds.c b/src/cmds.c
index 167ebb7..650b462 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -233,7 +233,7 @@ because it respects values of `delete-active-region' and 
`overwrite-mode'.  */)
   CHECK_NUMBER (n);
 
   if (eabs (XINT (n)) < 2)
-    call0 (Qundo_auto__amalgamate);
+    call0 (Qundo_auto_amalgamate);
 
   pos = PT + XINT (n);
   if (NILP (killflag))
@@ -279,7 +279,7 @@ At the end, it runs `post-self-insert-hook'.  */)
     error ("Negative repetition argument %"pI"d", XINT (n));
 
   if (XFASTINT (n) < 2)
-    call0 (Qundo_auto__amalgamate);
+    call0 (Qundo_auto_amalgamate);
 
   /* Barf if the key that invoked this was not a character.  */
   if (!CHARACTERP (last_command_event))
@@ -494,7 +494,7 @@ internal_self_insert (int c, EMACS_INT n)
 void
 syms_of_cmds (void)
 {
-  DEFSYM (Qundo_auto__amalgamate, "undo-auto--amalgamate");
+  DEFSYM (Qundo_auto_amalgamate, "undo-auto-amalgamate");
   DEFSYM (Qundo_auto__this_command_amalgamating,
           "undo-auto--this-command-amalgamating");
 
diff --git a/src/conf_post.h b/src/conf_post.h
index 2c3eee5..b629e8d 100644
--- a/src/conf_post.h
+++ b/src/conf_post.h
@@ -245,6 +245,7 @@ extern int emacs_setenv_TZ (char const *);
 #endif
 
 #define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST
+#define ATTRIBUTE_UNUSED _GL_UNUSED
 
 #if 3 <= __GNUC__
 # define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
diff --git a/src/doc.c b/src/doc.c
index 694c159..6c2a3e5 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -1023,7 +1023,8 @@ syms_of_doc (void)
   Vbuild_files = Qnil;
 
   DEFVAR_LISP ("text-quoting-style", Vtext_quoting_style,
-               doc: /* Style to use for single quotes when generating text.
+               doc: /* Style to use for single quotes in help and messages.
+Its value should be a symbol.
 `curve' means quote with curved single quotes \\=‘like this\\=’.
 `straight' means quote with straight apostrophes \\='like this\\='.
 `grave' means quote with grave accent and apostrophe \\=`like this\\='.
diff --git a/src/doprnt.c b/src/doprnt.c
index 51f8fd7..55f249f 100644
--- a/src/doprnt.c
+++ b/src/doprnt.c
@@ -500,7 +500,7 @@ esprintf (char *buf, char const *format, ...)
   return nbytes;
 }
 
-#if defined HAVE_X_WINDOWS && defined USE_X_TOOLKIT
+#if HAVE_MODULES || (defined HAVE_X_WINDOWS && defined USE_X_TOOLKIT)
 
 /* Format to buffer *BUF of positive size *BUFSIZE, reallocating *BUF
    and updating *BUFSIZE if the buffer is too small, and otherwise
diff --git a/src/dynlib.c b/src/dynlib.c
index 47ffb41..190f183 100644
--- a/src/dynlib.c
+++ b/src/dynlib.c
@@ -34,15 +34,28 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
 #include "lisp.h"
+#include "w32common.h" /* for os_subtype */
 #include "w32.h"
 
+static BOOL g_b_init_get_module_handle_ex;
 static DWORD dynlib_last_err;
 
+/* Some versions of w32api headers only expose the following when
+   _WIN32_WINNT is set to higher values that we use.  */
+typedef BOOL (WINAPI *GetModuleHandleExA_Proc) (DWORD,LPCSTR,HMODULE*);
+#ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
+# define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 4
+#endif
+#ifndef GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT
+# define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 2
+#endif
+
 /* This needs to be called at startup to countermand any non-zero
    values recorded by temacs.  */
 void
 dynlib_reset_last_error (void)
 {
+  g_b_init_get_module_handle_ex = 0;
   dynlib_last_err = 0;
 }
 
@@ -107,9 +120,108 @@ dynlib_sym (dynlib_handle_ptr h, const char *sym)
 }
 
 bool
-dynlib_addr (void *ptr, const char **path, const char **sym)
+dynlib_addr (void *addr, const char **fname, const char **symname)
 {
-  return false;  /* Not implemented yet.  */
+  static char dll_filename[MAX_UTF8_PATH];
+  static char addr_str[22];
+  static GetModuleHandleExA_Proc s_pfn_Get_Module_HandleExA = NULL;
+  char *dll_fn = NULL;
+  HMODULE hm_kernel32 = NULL;
+  bool result = false;
+  HMODULE hm_dll = NULL;
+  wchar_t mfn_w[MAX_PATH];
+  char mfn_a[MAX_PATH];
+
+  /* Step 1: Find the handle of the module where ADDR lives.  */
+  if (os_subtype == OS_9X
+      /* Windows NT family version before XP (v5.1).  */
+      || ((w32_major_version + (w32_minor_version > 0)) < 6))
+    {
+      MEMORY_BASIC_INFORMATION mbi;
+
+      /* According to Matt Pietrek, the module handle is just the base
+        address where it's loaded in memory.  */
+      if (VirtualQuery (addr, &mbi, sizeof(mbi)))
+       hm_dll = (HMODULE)mbi.AllocationBase;
+    }
+  else
+    {
+      /* Use the documented API when available (XP and later).  */
+      if (g_b_init_get_module_handle_ex == 0)
+       {
+         g_b_init_get_module_handle_ex = 1;
+         hm_kernel32 = LoadLibrary ("kernel32.dll");
+         /* We load the ANSI version of the function because the
+            address we pass to it is not an address of a string, but
+            an address of a function.  So we don't care about the
+            Unicode version.  */
+         s_pfn_Get_Module_HandleExA =
+           (GetModuleHandleExA_Proc) GetProcAddress (hm_kernel32,
+                                                     "GetModuleHandleExA");
+       }
+      if (s_pfn_Get_Module_HandleExA)
+       {
+         DWORD flags = (GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
+                        /* We don't want to call FreeLibrary at the
+                           end, because then we'd need to remember
+                           whether we obtained the handle by this
+                           method or the above one.  */
+                        | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT);
+
+         if (!s_pfn_Get_Module_HandleExA (flags, addr, &hm_dll))
+           {
+             dynlib_last_err = GetLastError ();
+             hm_dll = NULL;
+           }
+       }
+    }
+
+  /* Step 2: Find the absolute file name of the module corresponding
+     to the hm_dll handle.  */
+  if (hm_dll)
+    {
+      DWORD retval;
+
+      if (w32_unicode_filenames)
+       {
+         retval = GetModuleFileNameW (hm_dll, mfn_w, MAX_PATH);
+         if (retval > 0 && retval < MAX_PATH
+             && filename_from_utf16 (mfn_w, dll_filename) == 0)
+           dll_fn = dll_filename;
+         else if (retval == MAX_PATH)
+           dynlib_last_err = ERROR_INSUFFICIENT_BUFFER;
+         else
+           dynlib_last_err = GetLastError ();
+       }
+      else
+       {
+         retval = GetModuleFileNameA (hm_dll, mfn_a, MAX_PATH);
+         if (retval > 0 && retval < MAX_PATH
+             && filename_from_ansi (mfn_a, dll_filename) == 0)
+           dll_fn = dll_filename;
+         else if (retval == MAX_PATH)
+           dynlib_last_err = ERROR_INSUFFICIENT_BUFFER;
+         else
+           dynlib_last_err = GetLastError ();
+       }
+      if (dll_fn)
+       {
+         dostounix_filename (dll_fn);
+         /* We cannot easily produce the function name, since
+            typically all of the module functions will be unexported,
+            and probably even static, which means the symbols can be
+            obtained only if we link against libbfd (and the DLL can
+            be stripped anyway).  So we just show the address and the
+            file name; they can use that with addr2line or GDB to
+            recover the symbolic name.  */
+         sprintf (addr_str, "at 0x%x", (DWORD_PTR)addr);
+         *symname = addr_str;
+         result = true;
+       }
+    }
+
+  *fname = dll_fn;
+  return result;
 }
 
 const char *
@@ -206,3 +318,13 @@ dynlib_close (dynlib_handle_ptr h)
 #error "No dynamic loading for this system"
 
 #endif
+
+#if !HAVE_DLFUNC
+# define dlfunc dynlib_sym
+#endif
+
+dynlib_function_ptr
+dynlib_func (dynlib_handle_ptr h, const char *sym)
+{
+  return (dynlib_function_ptr) dlfunc (h, sym);
+}
diff --git a/src/dynlib.h b/src/dynlib.h
index 1282c4f..1c19b5d 100644
--- a/src/dynlib.h
+++ b/src/dynlib.h
@@ -25,6 +25,8 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 typedef void *dynlib_handle_ptr;
 dynlib_handle_ptr dynlib_open (const char *path);
 void *dynlib_sym (dynlib_handle_ptr h, const char *sym);
+typedef struct dynlib_function_ptr_nonce *(*dynlib_function_ptr) (void);
+dynlib_function_ptr dynlib_func (dynlib_handle_ptr h, const char *sym);
 bool dynlib_addr (void *ptr, const char **path, const char **sym);
 const char *dynlib_error (void);
 int dynlib_close (dynlib_handle_ptr h);
diff --git a/src/emacs-module.c b/src/emacs-module.c
index 09b09d0..620df93 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -25,6 +25,7 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 #include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
+#include <string.h>
 
 #include "lisp.h"
 #include "dynlib.h"
@@ -50,50 +51,22 @@ static thrd_t main_thread;
 # include <pthread.h>
 static pthread_t main_thread;
 #elif defined WINDOWSNT
-# include <windows.h>
-/* On Windows, store both a handle to the main thread and the
-   thread ID because the latter can be reused when a thread
-   terminates.  */
-static HANDLE main_thread;
-static DWORD main_thread_id;
+#include <windows.h>
+#include "w32term.h"
+static DWORD main_thread;
 #endif
 
-
-/* Memory management.  */
-
-/* An `emacs_value' is just a pointer to a structure holding an
-   internal Lisp object.  */
-struct emacs_value_tag { Lisp_Object v; };
-
-/* Local value objects use a simple fixed-sized block allocation
-   scheme without explicit deallocation.  All local values are
-   deallocated when the lifetime of their environment ends.  Keep
-   track of a current frame from which new values are allocated,
-   appending further dynamically-allocated frames if necessary.  */
-
-enum { value_frame_size = 512 };
-
-/* A block from which `emacs_value' object can be allocated.  */
-struct emacs_value_frame
-{
-  /* Storage for values.  */
-  struct emacs_value_tag objects[value_frame_size];
-
-  /* Index of the next free value in `objects'.  */
-  int offset;
-
-  /* Pointer to next frame, if any.  */
-  struct emacs_value_frame *next;
-};
-
-/* A structure that holds an initial frame (so that the first local
-   values require no dynamic allocation) and keeps track of the
-   current frame.  */
-static struct emacs_value_storage
-{
-  struct emacs_value_frame initial;
-  struct emacs_value_frame *current;
-} global_storage;
+/* True if Lisp_Object and emacs_value have the same representation.
+   This is typically true unless WIDE_EMACS_INT.  In practice, having
+   the same sizes and alignments and maximums should be a good enough
+   proxy for equality of representation.  */
+enum
+  {
+    plain_values
+      = (sizeof (Lisp_Object) == sizeof (emacs_value)
+        && alignof (Lisp_Object) == alignof (emacs_value)
+        && INTPTR_MAX == EMACS_INT_MAX)
+  };
 
 
 /* Private runtime and environment members.  */
@@ -108,26 +81,17 @@ struct emacs_env_private
   /* Dedicated storage for non-local exit symbol and data so that
      storage is always available for them, even in an out-of-memory
      situation.  */
-  struct emacs_value_tag non_local_exit_symbol, non_local_exit_data;
-
-  struct emacs_value_storage storage;
-};
-
-/* Combine public and private parts in one structure.  This structure
-   is used whenever an environment is created.  */
-struct env_storage
-{
-  emacs_env pub;
-  struct emacs_env_private priv;
+  Lisp_Object non_local_exit_symbol, non_local_exit_data;
 };
 
 /* The private parts of an `emacs_runtime' object contain the initial
    environment.  */
 struct emacs_runtime_private
 {
-  struct env_storage environment;
+  /* FIXME: Ideally, we would just define "struct emacs_runtime_private"
+   * as a synonym of "emacs_env", but I don't know how to do that in C.  */
+  emacs_env pub;
 };
-
 
 
 /* Forward declarations.  */
@@ -136,12 +100,11 @@ struct module_fun_env;
 
 static Lisp_Object module_format_fun_env (const struct module_fun_env *);
 static Lisp_Object value_to_lisp (emacs_value);
-static emacs_value allocate_emacs_value (emacs_env *, struct 
emacs_value_storage *, Lisp_Object);
-static emacs_value lisp_to_value (emacs_env *, Lisp_Object);
+static emacs_value lisp_to_value (Lisp_Object);
 static enum emacs_funcall_exit module_non_local_exit_check (emacs_env *);
 static void check_main_thread (void);
-static void finalize_environment (struct env_storage *);
-static void initialize_environment (struct env_storage *);
+static void finalize_environment (struct emacs_env_private *);
+static void initialize_environment (emacs_env *, struct emacs_env_private 
*priv);
 static void module_args_out_of_range (emacs_env *, Lisp_Object, Lisp_Object);
 static void module_handle_signal (emacs_env *, Lisp_Object);
 static void module_handle_throw (emacs_env *, Lisp_Object);
@@ -151,6 +114,12 @@ static void module_out_of_memory (emacs_env *);
 static void module_reset_handlerlist (const int *);
 static void module_wrong_type (emacs_env *, Lisp_Object, Lisp_Object);
 
+/* We used to return NULL when emacs_value was a different type from
+   Lisp_Object, but nowadays we just use Qnil instead.  Although they
+   happen to be the same thing in the current implementation, module
+   code should not assume this.  */
+verify (NIL_IS_ZERO);
+static emacs_value const module_nil = 0;
 
 /* Convenience macros for non-local exit handling.  */
 
@@ -165,24 +134,14 @@ static void module_wrong_type (emacs_env *, Lisp_Object, 
Lisp_Object);
    passing information to the handler functions.  */
 
 /* Place this macro at the beginning of a function returning a number
-   or a pointer to handle signals.  The function must have an ENV
-   parameter.  The function will return 0 (or NULL) if a signal is
-   caught.  */
-#define MODULE_HANDLE_SIGNALS MODULE_HANDLE_SIGNALS_RETURN (0)
-
-/* Place this macro at the beginning of a function returning void to
-   handle signals.  The function must have an ENV parameter.  */
-#define MODULE_HANDLE_SIGNALS_VOID MODULE_HANDLE_SIGNALS_RETURN ()
-
-#define MODULE_HANDLE_SIGNALS_RETURN(retval)                                   
\
-  MODULE_SETJMP (CONDITION_CASE, module_handle_signal, retval)
-
-/* Place this macro at the beginning of a function returning a pointer
-   to handle non-local exits via `throw'.  The function must have an
-   ENV parameter.  The function will return NULL if a `throw' is
-   caught.  */
-#define MODULE_HANDLE_THROW                                                    
\
-  MODULE_SETJMP (CATCHER_ALL, module_handle_throw, NULL)
+   or a pointer to handle non-local exits.  The function must have an
+   ENV parameter.  The function will return the specified value if a
+   signal or throw is caught.  */
+// TODO: Have Fsignal check for CATCHER_ALL so we only have to install
+// one handler.
+#define MODULE_HANDLE_NONLOCAL_EXIT(retval)                     \
+  MODULE_SETJMP (CONDITION_CASE, module_handle_signal, retval); \
+  MODULE_SETJMP (CATCHER_ALL, module_handle_throw, retval)
 
 #define MODULE_SETJMP(handlertype, handlerfunc, retval)                        
       \
   MODULE_SETJMP_1 (handlertype, handlerfunc, retval,                          \
@@ -192,24 +151,32 @@ static void module_wrong_type (emacs_env *, Lisp_Object, 
Lisp_Object);
 /* It is very important that pushing the handler doesn't itself raise
    a signal.  Install the cleanup only after the handler has been
    pushed.  Use __attribute__ ((cleanup)) to avoid
-   non-local-exit-prone manual cleanup.  */
+   non-local-exit-prone manual cleanup.
+
+   The do-while forces uses of the macro to be followed by a semicolon.
+   This macro cannot enclose its entire body inside a do-while, as the
+   code after the macro may longjmp back into the macro, which means
+   its local variable C must stay live in later code.  */
+
+// TODO: Make backtraces work if this macros is used.
+
 #define MODULE_SETJMP_1(handlertype, handlerfunc, retval, c, dummy)    \
-  do {                                                                 \
-    eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return); \
-    struct handler *c = push_handler_nosignal (Qt, handlertype);       \
-    if (!c)                                                            \
-      {                                                                        
\
-       module_out_of_memory (env);                                     \
-       return retval;                                                  \
-      }                                                                        
\
-    verify (module_has_cleanup);                                       \
-    int dummy __attribute__ ((cleanup (module_reset_handlerlist)));    \
-    if (sys_setjmp (c->jmp))                                           \
-      {                                                                        
\
-       (handlerfunc) (env, c->val);                                    \
-       return retval;                                                  \
-      }                                                                        
\
-  } while (false)
+  if (module_non_local_exit_check (env) != emacs_funcall_exit_return)  \
+    return retval;                                                     \
+  struct handler *c = push_handler_nosignal (Qt, handlertype);         \
+  if (!c)                                                              \
+    {                                                                  \
+      module_out_of_memory (env);                                      \
+      return retval;                                                   \
+    }                                                                  \
+  verify (module_has_cleanup);                                         \
+  int dummy __attribute__ ((cleanup (module_reset_handlerlist)));      \
+  if (sys_setjmp (c->jmp))                                             \
+    {                                                                  \
+      (handlerfunc) (env, c->val);                                     \
+      return retval;                                                   \
+    }                                                                  \
+  do { } while (false)
 
 
 /* Function environments.  */
@@ -217,8 +184,8 @@ static void module_wrong_type (emacs_env *, Lisp_Object, 
Lisp_Object);
 /* A function environment is an auxiliary structure used by
    `module_make_function' to store information about a module
    function.  It is stored in a save pointer and retrieved by
-   `module-call'.  Its members correspond to the arguments given to
-   `module_make_function'.  */
+   `internal--module-call'.  Its members correspond to the arguments
+   given to `module_make_function'.  */
 
 struct module_fun_env
 {
@@ -227,13 +194,49 @@ struct module_fun_env
   void *data;
 };
 
-/* The function definition of `module-call'.  `module-call' is
-   uninterned because user code couldn't meaningfully use it, so keep
-   its definition around somewhere else.  */
-static Lisp_Object module_call_func;
-
 
-/* Implementation of runtime and environment functions.  */
+/* Implementation of runtime and environment functions.
+
+   These should abide by the following rules:
+
+   1. The first argument should always be a pointer to emacs_env.
+
+   2. Each function should first call check_main_thread.  Note that
+      this function is a no-op unless Emacs was built with
+      --enable-checking.
+
+   3. The very next thing each function should do is check that the
+      emacs_env object does not have a non-local exit indication set,
+      by calling module_non_local_exit_check.  If that returns
+      anything but emacs_funcall_exit_return, the function should do
+      nothing and return immediately with an error indication, without
+      clobbering the existing error indication in emacs_env.  This is
+      needed for correct reporting of Lisp errors to the Emacs Lisp
+      interpreter.
+
+   4. Any function that needs to call Emacs facilities, such as
+      encoding or decoding functions, or 'intern', or 'make_string',
+      should protect itself from signals and 'throw' in the called
+      Emacs functions, by placing the macro
+      MODULE_HANDLE_NONLOCAL_EXIT right after the above 2 tests.
+
+   5. Do NOT use 'eassert' for checking validity of user code in the
+      module.  Instead, make those checks part of the code, and if the
+      check fails, call 'module_non_local_exit_signal_1' or
+      'module_non_local_exit_throw_1' to report the error.  This is
+      because using 'eassert' in these situations will abort Emacs
+      instead of reporting the error back to Lisp, and also because
+      'eassert' is compiled to nothing in the release version.  */
+
+/* Use MODULE_FUNCTION_BEGIN to implement steps 2 through 4 for most
+   environment functions.  On error it will return its argument, which
+   should be a sentinel value.  */
+
+#define MODULE_FUNCTION_BEGIN(error_retval)                             \
+  check_main_thread ();                                                 \
+  if (module_non_local_exit_check (env) != emacs_funcall_exit_return)   \
+    return error_retval;                                                \
+  MODULE_HANDLE_NONLOCAL_EXIT (error_retval)
 
 /* Catch signals and throws only if the code can actually signal or
    throw.  If checking is enabled, abort if the current thread is not
@@ -243,7 +246,7 @@ static emacs_env *
 module_get_environment (struct emacs_runtime *ert)
 {
   check_main_thread ();
-  return &ert->private_members->environment.pub;
+  return &ert->private_members->pub;
 }
 
 /* To make global refs (GC-protected global values) keep a hash that
@@ -252,10 +255,7 @@ module_get_environment (struct emacs_runtime *ert)
 static emacs_value
 module_make_global_ref (emacs_env *env, emacs_value ref)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  MODULE_HANDLE_SIGNALS;
-  eassert (HASH_TABLE_P (Vmodule_refs_hash));
+  MODULE_FUNCTION_BEGIN (module_nil);
   struct Lisp_Hash_Table *h = XHASH_TABLE (Vmodule_refs_hash);
   Lisp_Object new_obj = value_to_lisp (ref);
   EMACS_UINT hashcode;
@@ -264,12 +264,11 @@ module_make_global_ref (emacs_env *env, emacs_value ref)
   if (i >= 0)
     {
       Lisp_Object value = HASH_VALUE (h, i);
-      eassert (NATNUMP (value));
       EMACS_INT refcount = XFASTINT (value) + 1;
       if (refcount > MOST_POSITIVE_FIXNUM)
         {
           module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
-          return NULL;
+          return module_nil;
         }
       value = make_natnum (refcount);
       set_hash_value_slot (h, i, value);
@@ -279,17 +278,16 @@ module_make_global_ref (emacs_env *env, emacs_value ref)
       hash_put (h, new_obj, make_natnum (1), hashcode);
     }
 
-  return allocate_emacs_value (env, &global_storage, new_obj);
+  return lisp_to_value (new_obj);
 }
 
 static void
 module_free_global_ref (emacs_env *env, emacs_value ref)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
   /* TODO: This probably never signals.  */
-  MODULE_HANDLE_SIGNALS_VOID;
-  eassert (HASH_TABLE_P (Vmodule_refs_hash));
+  /* FIXME: Wait a minute.  Shouldn't this function report an error if
+     the hash lookup fails?  */
+  MODULE_FUNCTION_BEGIN ();
   struct Lisp_Hash_Table *h = XHASH_TABLE (Vmodule_refs_hash);
   Lisp_Object obj = value_to_lisp (ref);
   EMACS_UINT hashcode;
@@ -298,18 +296,14 @@ module_free_global_ref (emacs_env *env, emacs_value ref)
   if (i >= 0)
     {
       Lisp_Object value = HASH_VALUE (h, i);
-      eassert (NATNUMP (value));
       EMACS_INT refcount = XFASTINT (value) - 1;
       if (refcount > 0)
         {
-          value = make_natnum (refcount - 1);
+          value = make_natnum (refcount);
           set_hash_value_slot (h, i, value);
         }
       else
-        {
-          eassert (refcount == 0);
-          hash_remove_from_table (h, value);
-        }
+       hash_remove_from_table (h, value);
     }
 }
 
@@ -334,8 +328,8 @@ module_non_local_exit_get (emacs_env *env, emacs_value 
*sym, emacs_value *data)
   struct emacs_env_private *p = env->private_members;
   if (p->pending_non_local_exit != emacs_funcall_exit_return)
     {
-      *sym = &p->non_local_exit_symbol;
-      *data = &p->non_local_exit_data;
+      *sym = lisp_to_value (p->non_local_exit_symbol);
+      *data = lisp_to_value (p->non_local_exit_data);
     }
   return p->pending_non_local_exit;
 }
@@ -345,35 +339,33 @@ static void
 module_non_local_exit_signal (emacs_env *env, emacs_value sym, emacs_value 
data)
 {
   check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  module_non_local_exit_signal_1 (env, value_to_lisp (sym),
-                                 value_to_lisp (data));
+  if (module_non_local_exit_check (env) == emacs_funcall_exit_return)
+    module_non_local_exit_signal_1 (env, value_to_lisp (sym),
+                                   value_to_lisp (data));
 }
 
 static void
 module_non_local_exit_throw (emacs_env *env, emacs_value tag, emacs_value 
value)
 {
   check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  module_non_local_exit_throw_1 (env, value_to_lisp (tag),
-                                value_to_lisp (value));
+  if (module_non_local_exit_check (env) == emacs_funcall_exit_return)
+    module_non_local_exit_throw_1 (env, value_to_lisp (tag),
+                                  value_to_lisp (value));
 }
 
-/* A module function is lambda function that calls `module-call',
-   passing the function pointer of the module function along with the
-   module emacs_env pointer as arguments.
+/* A module function is lambda function that calls
+   `internal--module-call', passing the function pointer of the module
+   function along with the module emacs_env pointer as arguments.
 
        (function (lambda (&rest arglist)
-                   (module-call envobj arglist)))  */
+                   (internal--module-call envobj arglist)))  */
 
 static emacs_value
 module_make_function (emacs_env *env, ptrdiff_t min_arity, ptrdiff_t max_arity,
                      emacs_subr subr, const char *documentation,
                      void *data)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  MODULE_HANDLE_SIGNALS;
+  MODULE_FUNCTION_BEGIN (module_nil);
 
   if (! (0 <= min_arity
         && (max_arity < 0
@@ -389,24 +381,28 @@ module_make_function (emacs_env *env, ptrdiff_t 
min_arity, ptrdiff_t max_arity,
   envptr->data = data;
 
   Lisp_Object envobj = make_save_ptr (envptr);
+  Lisp_Object doc
+    = (documentation
+       ? code_convert_string_norecord (build_unibyte_string (documentation),
+                                      Qutf_8, false)
+       : Qnil);
+  /* FIXME: Use a bytecompiled object, or even better a subr.  */
   Lisp_Object ret = list4 (Qlambda,
                            list2 (Qand_rest, Qargs),
-                           documentation ? build_string (documentation) : Qnil,
-                           list3 (module_call_func,
+                           doc,
+                           list4 (Qapply,
+                                  list2 (Qfunction, Qinternal_module_call),
                                   envobj,
                                   Qargs));
 
-  return lisp_to_value (env, ret);
+  return lisp_to_value (ret);
 }
 
 static emacs_value
 module_funcall (emacs_env *env, emacs_value fun, ptrdiff_t nargs,
                emacs_value args[])
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  MODULE_HANDLE_SIGNALS;
-  MODULE_HANDLE_THROW;
+  MODULE_FUNCTION_BEGIN (module_nil);
 
   /* Make a new Lisp_Object array starting with the function as the
      first arg, because that's what Ffuncall takes.  */
@@ -416,7 +412,7 @@ module_funcall (emacs_env *env, emacs_value fun, ptrdiff_t 
nargs,
   newargs[0] = value_to_lisp (fun);
   for (ptrdiff_t i = 0; i < nargs; i++)
     newargs[1 + i] = value_to_lisp (args[i]);
-  emacs_value result = lisp_to_value (env, Ffuncall (nargs + 1, newargs));
+  emacs_value result = lisp_to_value (Ffuncall (nargs + 1, newargs));
   SAFE_FREE ();
   return result;
 }
@@ -424,25 +420,23 @@ module_funcall (emacs_env *env, emacs_value fun, 
ptrdiff_t nargs,
 static emacs_value
 module_intern (emacs_env *env, const char *name)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  MODULE_HANDLE_SIGNALS;
-  return lisp_to_value (env, intern (name));
+  MODULE_FUNCTION_BEGIN (module_nil);
+  return lisp_to_value (intern (name));
 }
 
 static emacs_value
 module_type_of (emacs_env *env, emacs_value value)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  return lisp_to_value (env, Ftype_of (value_to_lisp (value)));
+  MODULE_FUNCTION_BEGIN (module_nil);
+  return lisp_to_value (Ftype_of (value_to_lisp (value)));
 }
 
 static bool
 module_is_not_nil (emacs_env *env, emacs_value value)
 {
   check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  if (module_non_local_exit_check (env) != emacs_funcall_exit_return)
+    return false;
   return ! NILP (value_to_lisp (value));
 }
 
@@ -450,15 +444,15 @@ static bool
 module_eq (emacs_env *env, emacs_value a, emacs_value b)
 {
   check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  if (module_non_local_exit_check (env) != emacs_funcall_exit_return)
+    return false;
   return EQ (value_to_lisp (a), value_to_lisp (b));
 }
 
 static intmax_t
 module_extract_integer (emacs_env *env, emacs_value n)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  MODULE_FUNCTION_BEGIN (0);
   Lisp_Object l = value_to_lisp (n);
   if (! INTEGERP (l))
     {
@@ -471,21 +465,19 @@ module_extract_integer (emacs_env *env, emacs_value n)
 static emacs_value
 module_make_integer (emacs_env *env, intmax_t n)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  MODULE_FUNCTION_BEGIN (module_nil);
   if (! (MOST_NEGATIVE_FIXNUM <= n && n <= MOST_POSITIVE_FIXNUM))
     {
       module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
-      return NULL;
+      return module_nil;
     }
-  return lisp_to_value (env, make_number (n));
+  return lisp_to_value (make_number (n));
 }
 
 static double
 module_extract_float (emacs_env *env, emacs_value f)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  MODULE_FUNCTION_BEGIN (0);
   Lisp_Object lisp = value_to_lisp (f);
   if (! FLOATP (lisp))
     {
@@ -498,19 +490,15 @@ module_extract_float (emacs_env *env, emacs_value f)
 static emacs_value
 module_make_float (emacs_env *env, double d)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  MODULE_HANDLE_SIGNALS;
-  return lisp_to_value (env, make_float (d));
+  MODULE_FUNCTION_BEGIN (module_nil);
+  return lisp_to_value (make_float (d));
 }
 
 static bool
 module_copy_string_contents (emacs_env *env, emacs_value value, char *buffer,
                             ptrdiff_t *length)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  MODULE_HANDLE_SIGNALS;
+  MODULE_FUNCTION_BEGIN (false);
   Lisp_Object lisp_str = value_to_lisp (value);
   if (! STRINGP (lisp_str))
     {
@@ -518,22 +506,34 @@ module_copy_string_contents (emacs_env *env, emacs_value 
value, char *buffer,
       return false;
     }
 
-  ptrdiff_t raw_size = SBYTES (lisp_str);
+  Lisp_Object lisp_str_utf8 = ENCODE_UTF_8 (lisp_str);
+  ptrdiff_t raw_size = SBYTES (lisp_str_utf8);
+  if (raw_size == PTRDIFF_MAX)
+    {
+      module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
+      return false;
+    }
+  ptrdiff_t required_buf_size = raw_size + 1;
 
-  /* Emacs internal encoding is more-or-less UTF8, let's assume utf8
-     encoded emacs string are the same byte size.  */
+  eassert (length != NULL);
 
-  if (!buffer || length == 0 || *length-1 < raw_size)
+  if (buffer == NULL)
     {
-      *length = raw_size + 1;
+      *length = required_buf_size;
+      return true;
+    }
+
+  eassert (*length >= 0);
+
+  if (*length < required_buf_size)
+    {
+      *length = required_buf_size;
+      module_non_local_exit_signal_1 (env, Qargs_out_of_range, Qnil);
       return false;
     }
 
-  Lisp_Object lisp_str_utf8 = ENCODE_UTF_8 (lisp_str);
-  eassert (raw_size == SBYTES (lisp_str_utf8));
-  *length = raw_size + 1;
-  memcpy (buffer, SDATA (lisp_str_utf8), SBYTES (lisp_str_utf8));
-  buffer[raw_size] = 0;
+  *length = required_buf_size;
+  memcpy (buffer, SDATA (lisp_str_utf8), raw_size + 1);
 
   return true;
 }
@@ -541,30 +541,27 @@ module_copy_string_contents (emacs_env *env, emacs_value 
value, char *buffer,
 static emacs_value
 module_make_string (emacs_env *env, const char *str, ptrdiff_t length)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
-  MODULE_HANDLE_SIGNALS;
-  if (length > PTRDIFF_MAX)
+  MODULE_FUNCTION_BEGIN (module_nil);
+  if (length > STRING_BYTES_BOUND)
     {
       module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
-      return NULL;
+      return module_nil;
     }
-  /* Assume STR is utf8 encoded.  */
-  return lisp_to_value (env, make_string (str, length));
+  Lisp_Object lstr = make_unibyte_string (str, length);
+  return lisp_to_value (code_convert_string_norecord (lstr, Qutf_8, false));
 }
 
 static emacs_value
 module_make_user_ptr (emacs_env *env, emacs_finalizer_function fin, void *ptr)
 {
-  check_main_thread ();
-  return lisp_to_value (env, make_user_ptr (fin, ptr));
+  MODULE_FUNCTION_BEGIN (module_nil);
+  return lisp_to_value (make_user_ptr (fin, ptr));
 }
 
 static void *
 module_get_user_ptr (emacs_env *env, emacs_value uptr)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  MODULE_FUNCTION_BEGIN (NULL);
   Lisp_Object lisp = value_to_lisp (uptr);
   if (! USER_PTRP (lisp))
     {
@@ -577,8 +574,11 @@ module_get_user_ptr (emacs_env *env, emacs_value uptr)
 static void
 module_set_user_ptr (emacs_env *env, emacs_value uptr, void *ptr)
 {
+  /* FIXME: This function should return bool because it can fail.  */
+  MODULE_FUNCTION_BEGIN ();
   check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  if (module_non_local_exit_check (env) != emacs_funcall_exit_return)
+    return;
   Lisp_Object lisp = value_to_lisp (uptr);
   if (! USER_PTRP (lisp))
     module_wrong_type (env, Quser_ptr, lisp);
@@ -588,8 +588,7 @@ module_set_user_ptr (emacs_env *env, emacs_value uptr, void 
*ptr)
 static emacs_finalizer_function
 module_get_user_finalizer (emacs_env *env, emacs_value uptr)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  MODULE_FUNCTION_BEGIN (NULL);
   Lisp_Object lisp = value_to_lisp (uptr);
   if (! USER_PTRP (lisp))
     {
@@ -603,8 +602,8 @@ static void
 module_set_user_finalizer (emacs_env *env, emacs_value uptr,
                           emacs_finalizer_function fin)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  /* FIXME: This function should return bool because it can fail.  */
+  MODULE_FUNCTION_BEGIN ();
   Lisp_Object lisp = value_to_lisp (uptr);
   if (! USER_PTRP (lisp))
     module_wrong_type (env, Quser_ptr, lisp);
@@ -614,8 +613,8 @@ module_set_user_finalizer (emacs_env *env, emacs_value uptr,
 static void
 module_vec_set (emacs_env *env, emacs_value vec, ptrdiff_t i, emacs_value val)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  /* FIXME: This function should return bool because it can fail.  */
+  MODULE_FUNCTION_BEGIN ();
   Lisp_Object lvec = value_to_lisp (vec);
   if (! VECTORP (lvec))
     {
@@ -636,13 +635,12 @@ module_vec_set (emacs_env *env, emacs_value vec, 
ptrdiff_t i, emacs_value val)
 static emacs_value
 module_vec_get (emacs_env *env, emacs_value vec, ptrdiff_t i)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  MODULE_FUNCTION_BEGIN (module_nil);
   Lisp_Object lvec = value_to_lisp (vec);
   if (! VECTORP (lvec))
     {
       module_wrong_type (env, Qvectorp, lvec);
-      return NULL;
+      return module_nil;
     }
   if (! (0 <= i && i < ASIZE (lvec)))
     {
@@ -650,23 +648,22 @@ module_vec_get (emacs_env *env, emacs_value vec, 
ptrdiff_t i)
        module_args_out_of_range (env, lvec, make_number (i));
       else
        module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
-      return NULL;
+      return module_nil;
     }
-  return lisp_to_value (env, AREF (lvec, i));
+  return lisp_to_value (AREF (lvec, i));
 }
 
 static ptrdiff_t
 module_vec_size (emacs_env *env, emacs_value vec)
 {
-  check_main_thread ();
-  eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return);
+  /* FIXME: Return a sentinel value (e.g., -1) on error.  */
+  MODULE_FUNCTION_BEGIN (0);
   Lisp_Object lvec = value_to_lisp (vec);
   if (! VECTORP (lvec))
     {
       module_wrong_type (env, Qvectorp, lvec);
       return 0;
     }
-  eassert (ASIZE (lvec) >= 0);
   return ASIZE (lvec);
 }
 
@@ -690,20 +687,21 @@ DEFUN ("module-load", Fmodule_load, Smodule_load, 1, 1, 0,
   if (!gpl_sym)
     error ("Module %s is not GPL compatible", SDATA (file));
 
-  module_init = (emacs_init_function) dynlib_sym (handle, "emacs_module_init");
+  module_init = (emacs_init_function) dynlib_func (handle, 
"emacs_module_init");
   if (!module_init)
     error ("Module %s does not have an init function.", SDATA (file));
 
-  struct emacs_runtime_private priv;
+  struct emacs_runtime_private rt; /* Includes the public emacs_env.  */
+  struct emacs_env_private priv;
+  initialize_environment (&rt.pub, &priv);
   struct emacs_runtime pub =
     {
       .size = sizeof pub,
-      .private_members = &priv,
+      .private_members = &rt,
       .get_environment = module_get_environment
     };
-  initialize_environment (&priv.environment);
   int r = module_init (&pub);
-  finalize_environment (&priv.environment);
+  finalize_environment (&priv);
 
   if (r != 0)
     {
@@ -715,55 +713,69 @@ DEFUN ("module-load", Fmodule_load, Smodule_load, 1, 1, 0,
   return Qt;
 }
 
-DEFUN ("module-call", Fmodule_call, Smodule_call, 2, 2, 0,
+DEFUN ("internal--module-call", Finternal_module_call, Sinternal_module_call, 
1, MANY, 0,
        doc: /* Internal function to call a module function.
 ENVOBJ is a save pointer to a module_fun_env structure.
-ARGLIST is a list of arguments passed to SUBRPTR.  */)
-  (Lisp_Object envobj, Lisp_Object arglist)
+ARGLIST is a list of arguments passed to SUBRPTR.
+usage: (module-call ENVOBJ &rest ARGLIST)   */)
+  (ptrdiff_t nargs, Lisp_Object *arglist)
 {
+  Lisp_Object envobj = arglist[0];
+  /* FIXME: Rather than use a save_value, we should create a new object type.
+     Making save_value visible to Lisp is wrong.  */
+  CHECK_TYPE (SAVE_VALUEP (envobj), Qsave_value_p, envobj);
+  struct Lisp_Save_Value *save_value = XSAVE_VALUE (envobj);
+  CHECK_TYPE (save_type (save_value, 0) == SAVE_POINTER, Qsave_pointer_p, 
envobj);
+  /* FIXME: We have no reason to believe that XSAVE_POINTER (envobj, 0)
+     is a module_fun_env pointer.  If some other part of Emacs also
+     exports save_value objects to Elisp, than we may be getting here this
+     other kind of save_value which will likely hold something completely
+     different in this field.  */
   struct module_fun_env *envptr = XSAVE_POINTER (envobj, 0);
-  EMACS_INT len = XFASTINT (Flength (arglist));
+  EMACS_INT len = nargs - 1;
   eassume (0 <= envptr->min_arity);
   if (! (envptr->min_arity <= len
         && len <= (envptr->max_arity < 0 ? PTRDIFF_MAX : envptr->max_arity)))
     xsignal2 (Qwrong_number_of_arguments, module_format_fun_env (envptr),
              make_number (len));
 
-  struct env_storage env;
-  initialize_environment (&env);
-
-  emacs_value *args = xnmalloc (len, sizeof *args);
+  emacs_env pub;
+  struct emacs_env_private priv;
+  initialize_environment (&pub, &priv);
 
-  for (ptrdiff_t i = 0; i < len; i++)
+  USE_SAFE_ALLOCA;
+  emacs_value *args;
+  if (plain_values)
+    args = (emacs_value *) arglist + 1;
+  else
     {
-      args[i] = lisp_to_value (&env.pub, XCAR (arglist));
-      if (! args[i])
-       memory_full (sizeof *args[i]);
-      arglist = XCDR (arglist);
+      args = SAFE_ALLOCA (len * sizeof *args);
+      for (ptrdiff_t i = 0; i < len; i++)
+       args[i] = lisp_to_value (arglist[i + 1]);
     }
 
-  emacs_value ret = envptr->subr (&env.pub, len, args, envptr->data);
-  xfree (args);
+  emacs_value ret = envptr->subr (&pub, len, args, envptr->data);
+  SAFE_FREE ();
+
+  eassert (&priv == pub.private_members);
 
-  switch (env.priv.pending_non_local_exit)
+  switch (priv.pending_non_local_exit)
     {
     case emacs_funcall_exit_return:
-      finalize_environment (&env);
-      if (ret == NULL)
-       xsignal1 (Qinvalid_module_call, module_format_fun_env (envptr));
+      finalize_environment (&priv);
       return value_to_lisp (ret);
     case emacs_funcall_exit_signal:
       {
-        Lisp_Object symbol = value_to_lisp (&env.priv.non_local_exit_symbol);
-        Lisp_Object data = value_to_lisp (&env.priv.non_local_exit_data);
-        finalize_environment (&env);
+        Lisp_Object symbol = priv.non_local_exit_symbol;
+        Lisp_Object data = priv.non_local_exit_data;
+        finalize_environment (&priv);
         xsignal (symbol, data);
       }
     case emacs_funcall_exit_throw:
       {
-        Lisp_Object tag = value_to_lisp (&env.priv.non_local_exit_symbol);
-        Lisp_Object value = value_to_lisp (&env.priv.non_local_exit_data);
-        finalize_environment (&env);
+        Lisp_Object tag = priv.non_local_exit_symbol;
+        Lisp_Object value = priv.non_local_exit_data;
+        finalize_environment (&priv);
         Fthrow (tag, value);
       }
     default:
@@ -782,11 +794,7 @@ check_main_thread (void)
 #elif defined HAVE_PTHREAD
   eassert (pthread_equal (pthread_self (), main_thread));
 #elif defined WINDOWSNT
-  /* CompareObjectHandles would be perfect, but is only available in
-     Windows 10.  Also check whether the thread is still running to
-     protect against thread identifier reuse.  */
-  eassert (GetCurrentThreadId () == main_thread_id
-          && WaitForSingleObject (main_thread, 0) == WAIT_TIMEOUT);
+  eassert (GetCurrentThreadId () == main_thread);
 #endif
 }
 
@@ -795,10 +803,12 @@ module_non_local_exit_signal_1 (emacs_env *env, 
Lisp_Object sym,
                                Lisp_Object data)
 {
   struct emacs_env_private *p = env->private_members;
-  eassert (p->pending_non_local_exit == emacs_funcall_exit_return);
-  p->pending_non_local_exit = emacs_funcall_exit_signal;
-  p->non_local_exit_symbol.v = sym;
-  p->non_local_exit_data.v = data;
+  if (p->pending_non_local_exit == emacs_funcall_exit_return)
+    {
+      p->pending_non_local_exit = emacs_funcall_exit_signal;
+      p->non_local_exit_symbol = sym;
+      p->non_local_exit_data = data;
+    }
 }
 
 static void
@@ -806,10 +816,12 @@ module_non_local_exit_throw_1 (emacs_env *env, 
Lisp_Object tag,
                               Lisp_Object value)
 {
   struct emacs_env_private *p = env->private_members;
-  eassert (p->pending_non_local_exit == emacs_funcall_exit_return);
-  p->pending_non_local_exit = emacs_funcall_exit_throw;
-  p->non_local_exit_symbol.v = tag;
-  p->non_local_exit_data.v = value;
+  if (p->pending_non_local_exit == emacs_funcall_exit_return)
+    {
+      p->pending_non_local_exit = emacs_funcall_exit_throw;
+      p->non_local_exit_symbol = tag;
+      p->non_local_exit_data = value;
+    }
 }
 
 /* Module version of `wrong_type_argument'.  */
@@ -840,98 +852,107 @@ module_args_out_of_range (emacs_env *env, Lisp_Object 
a1, Lisp_Object a2)
 
 /* Value conversion.  */
 
-/* Convert an `emacs_value' to the corresponding internal object.
-   Never fails.  */
+/* Unique Lisp_Object used to mark those emacs_values which are really
+   just containers holding a Lisp_Object that does not fit as an emacs_value,
+   either because it is an integer out of range, or is not properly aligned.
+   Used only if !plain_values.  */
+static Lisp_Object ltv_mark;
+
+/* Convert V to the corresponding internal object O, such that
+   V == lisp_to_value_bits (O).  Never fails.  */
 static Lisp_Object
-value_to_lisp (emacs_value v)
+value_to_lisp_bits (emacs_value v)
 {
-  return v->v;
-}
+  intptr_t i = (intptr_t) v;
+  if (plain_values || USE_LSB_TAG)
+    return XIL (i);
+
+  /* With wide EMACS_INT and when tag bits are the most significant,
+     reassembling integers differs from reassembling pointers in two
+     ways.  First, save and restore the least-significant bits of the
+     integer, not the most-significant bits.  Second, sign-extend the
+     integer when restoring, but zero-extend pointers because that
+     makes TAG_PTR faster.  */
+
+  EMACS_UINT tag = i & (GCALIGNMENT - 1);
+  EMACS_UINT untagged = i - tag;
+  switch (tag)
+    {
+    case_Lisp_Int:
+      {
+       bool negative = tag & 1;
+       EMACS_UINT sign_extension
+         = negative ? VALMASK & ~(INTPTR_MAX >> INTTYPEBITS): 0;
+       uintptr_t u = i;
+       intptr_t all_but_sign = u >> GCTYPEBITS;
+       untagged = sign_extension + all_but_sign;
+       break;
+      }
+    }
 
-/* Convert an internal object to an `emacs_value'.  Allocate storage
-   from the environment; return NULL if allocation fails.  */
-static emacs_value
-lisp_to_value (emacs_env *env, Lisp_Object o)
-{
-  struct emacs_env_private *p = env->private_members;
-  if (p->pending_non_local_exit != emacs_funcall_exit_return)
-    return NULL;
-  return allocate_emacs_value (env, &p->storage, o);
+  return XIL ((tag << VALBITS) + untagged);
 }
 
-
-/* Memory management.  */
-
-/* Must be called for each frame before it can be used for allocation.  */
-static void
-initialize_frame (struct emacs_value_frame *frame)
+/* If V was computed from lisp_to_value (O), then return O.
+   Never fails.  */
+static Lisp_Object
+value_to_lisp (emacs_value v)
 {
-  frame->offset = 0;
-  frame->next = NULL;
+  Lisp_Object o = value_to_lisp_bits (v);
+  if (! plain_values && CONSP (o) && EQ (XCDR (o), ltv_mark))
+    o = XCAR (o);
+  return o;
 }
 
-/* Must be called for any storage object before it can be used for
-   allocation.  */
-static void
-initialize_storage (struct emacs_value_storage *storage)
+/* Attempt to convert O to an emacs_value.  Do not do any checking or
+   or allocate any storage; the caller should prevent or detect
+   any resulting bit pattern that is not a valid emacs_value.  */
+static emacs_value
+lisp_to_value_bits (Lisp_Object o)
 {
-  initialize_frame (&storage->initial);
-  storage->current = &storage->initial;
-}
+  EMACS_UINT u = XLI (o);
 
-/* Must be called for any initialized storage object before its
-   lifetime ends.  Free all dynamically-allocated frames.  */
-static void
-finalize_storage (struct emacs_value_storage *storage)
-{
-  struct emacs_value_frame *next = storage->initial.next;
-  while (next != NULL)
-    {
-      struct emacs_value_frame *current = next;
-      next = current->next;
-      free (current);
-    }
+  /* Compress U into the space of a pointer, possibly losing information.  */
+  uintptr_t p = (plain_values || USE_LSB_TAG
+                ? u
+                : (INTEGERP (o) ? u << VALBITS : u & VALMASK) + XTYPE (o));
+  return (emacs_value) p;
 }
 
-/* Allocate a new value from STORAGE and stores OBJ in it.  Return
-   NULL if allocations fails and use ENV for non local exit reporting.  */
+#ifndef HAVE_STRUCT_ATTRIBUTE_ALIGNED
+enum { HAVE_STRUCT_ATTRIBUTE_ALIGNED = 0 };
+#endif
+
+/* Convert O to an emacs_value.  Allocate storage if needed; this can
+   signal if memory is exhausted.  */
 static emacs_value
-allocate_emacs_value (emacs_env *env, struct emacs_value_storage *storage,
-                     Lisp_Object obj)
+lisp_to_value (Lisp_Object o)
 {
-  eassert (storage->current);
-  eassert (storage->current->offset < value_frame_size);
-  eassert (! storage->current->next);
-  if (storage->current->offset == value_frame_size - 1)
-    {
-      storage->current->next = malloc (sizeof *storage->current->next);
-      if (! storage->current->next)
-        {
-          module_out_of_memory (env);
-          return NULL;
-        }
-      initialize_frame (storage->current->next);
-      storage->current = storage->current->next;
-    }
-  emacs_value value = storage->current->objects + storage->current->offset;
-  value->v = obj;
-  ++storage->current->offset;
-  return value;
-}
+  emacs_value v = lisp_to_value_bits (o);
 
-/* Mark all objects allocated from local environments so that they
-   don't get garbage-collected.  */
-void mark_modules (void)
-{
-  for (Lisp_Object tem = Vmodule_environments; CONSP (tem); tem = XCDR (tem))
+  if (! EQ (o, value_to_lisp_bits (v)))
     {
-      struct env_storage *env = XSAVE_POINTER (tem, 0);
-      for (struct emacs_value_frame *frame = &env->priv.storage.initial;
-          frame != NULL;
-          frame = frame->next)
-        for (int i = 0; i < frame->offset; ++i)
-          mark_object (frame->objects[i].v);
+      /* Package the incompressible object pointer inside a pair
+        that is compressible.  */
+      Lisp_Object pair = Fcons (o, ltv_mark);
+
+      if (! HAVE_STRUCT_ATTRIBUTE_ALIGNED)
+       {
+         /* Keep calling Fcons until it returns a compressible pair.
+            This shouldn't take long.  */
+         while ((intptr_t) XCONS (pair) & (GCALIGNMENT - 1))
+           pair = Fcons (o, pair);
+
+         /* Plant the mark.  The garbage collector will eventually
+            reclaim any just-allocated incompressible pairs.  */
+         XSETCDR (pair, ltv_mark);
+       }
+
+      v = (emacs_value) ((intptr_t) XCONS (pair) + Lisp_Cons);
     }
+
+  eassert (EQ (o, value_to_lisp (v)));
+  return v;
 }
 
 
@@ -939,48 +960,46 @@ void mark_modules (void)
 
 /* Must be called before the environment can be used.  */
 static void
-initialize_environment (struct env_storage *env)
+initialize_environment (emacs_env *env, struct emacs_env_private *priv)
 {
-  env->priv.pending_non_local_exit = emacs_funcall_exit_return;
-  initialize_storage (&env->priv.storage);
-  env->pub.size = sizeof env->pub;
-  env->pub.private_members = &env->priv;
-  env->pub.make_global_ref = module_make_global_ref;
-  env->pub.free_global_ref = module_free_global_ref;
-  env->pub.non_local_exit_check = module_non_local_exit_check;
-  env->pub.non_local_exit_clear = module_non_local_exit_clear;
-  env->pub.non_local_exit_get = module_non_local_exit_get;
-  env->pub.non_local_exit_signal = module_non_local_exit_signal;
-  env->pub.non_local_exit_throw = module_non_local_exit_throw;
-  env->pub.make_function = module_make_function;
-  env->pub.funcall = module_funcall;
-  env->pub.intern = module_intern;
-  env->pub.type_of = module_type_of;
-  env->pub.is_not_nil = module_is_not_nil;
-  env->pub.eq = module_eq;
-  env->pub.extract_integer = module_extract_integer;
-  env->pub.make_integer = module_make_integer;
-  env->pub.extract_float = module_extract_float;
-  env->pub.make_float = module_make_float;
-  env->pub.copy_string_contents = module_copy_string_contents;
-  env->pub.make_string = module_make_string;
-  env->pub.make_user_ptr = module_make_user_ptr;
-  env->pub.get_user_ptr = module_get_user_ptr;
-  env->pub.set_user_ptr = module_set_user_ptr;
-  env->pub.get_user_finalizer = module_get_user_finalizer;
-  env->pub.set_user_finalizer = module_set_user_finalizer;
-  env->pub.vec_set = module_vec_set;
-  env->pub.vec_get = module_vec_get;
-  env->pub.vec_size = module_vec_size;
+  priv->pending_non_local_exit = emacs_funcall_exit_return;
+  env->size = sizeof *env;
+  env->private_members = priv;
+  env->make_global_ref = module_make_global_ref;
+  env->free_global_ref = module_free_global_ref;
+  env->non_local_exit_check = module_non_local_exit_check;
+  env->non_local_exit_clear = module_non_local_exit_clear;
+  env->non_local_exit_get = module_non_local_exit_get;
+  env->non_local_exit_signal = module_non_local_exit_signal;
+  env->non_local_exit_throw = module_non_local_exit_throw;
+  env->make_function = module_make_function;
+  env->funcall = module_funcall;
+  env->intern = module_intern;
+  env->type_of = module_type_of;
+  env->is_not_nil = module_is_not_nil;
+  env->eq = module_eq;
+  env->extract_integer = module_extract_integer;
+  env->make_integer = module_make_integer;
+  env->extract_float = module_extract_float;
+  env->make_float = module_make_float;
+  env->copy_string_contents = module_copy_string_contents;
+  env->make_string = module_make_string;
+  env->make_user_ptr = module_make_user_ptr;
+  env->get_user_ptr = module_get_user_ptr;
+  env->set_user_ptr = module_set_user_ptr;
+  env->get_user_finalizer = module_get_user_finalizer;
+  env->set_user_finalizer = module_set_user_finalizer;
+  env->vec_set = module_vec_set;
+  env->vec_get = module_vec_get;
+  env->vec_size = module_vec_size;
   Vmodule_environments = Fcons (make_save_ptr (env), Vmodule_environments);
 }
 
 /* Must be called before the lifetime of the environment object
    ends.  */
 static void
-finalize_environment (struct env_storage *env)
+finalize_environment (struct emacs_env_private *env)
 {
-  finalize_storage (&env->priv.storage);
   Vmodule_environments = XCDR (Vmodule_environments);
 }
 
@@ -1023,25 +1042,19 @@ module_format_fun_env (const struct module_fun_env *env)
 {
   /* Try to print a function name if possible.  */
   const char *path, *sym;
-  if (dynlib_addr (env->subr, &path, &sym))
-    {
-      static char const format[] = "#<module function %s from %s>";
-      int size = snprintf (NULL, 0, format, sym, path);
-      eassert (size > 0);
-      char buffer[size + 1];
-      snprintf (buffer, sizeof buffer, format, sym, path);
-      return make_unibyte_string (buffer, size);
-    }
-  else
-    {
-      static char const format[] = "#<module function at %p>";
-      void *subr = env->subr;
-      int size = snprintf (NULL, 0, format, subr);
-      eassert (size > 0);
-      char buffer[size + 1];
-      snprintf (buffer, sizeof buffer, format, subr);
-      return make_unibyte_string (buffer, size);
-    }
+  static char const noaddr_format[] = "#<module function at %p>";
+  char buffer[sizeof noaddr_format + INT_STRLEN_BOUND (intptr_t) + 256];
+  char *buf = buffer;
+  ptrdiff_t bufsize = sizeof buffer;
+  ptrdiff_t size
+    = (dynlib_addr (env->subr, &path, &sym)
+       ? exprintf (&buf, &bufsize, buffer, -1,
+                  "#<module function %s from %s>", sym, path)
+       : sprintf (buffer, noaddr_format, env->subr));
+  Lisp_Object unibyte_result = make_unibyte_string (buffer, size);
+  if (buf != buffer)
+    xfree (buf);
+  return code_convert_string_norecord (unibyte_result, Qutf_8, false);
 }
 
 
@@ -1050,9 +1063,13 @@ module_format_fun_env (const struct module_fun_env *env)
 void
 syms_of_module (void)
 {
+  if (!plain_values)
+    ltv_mark = Fcons (Qnil, Qnil);
+  eassert (NILP (value_to_lisp (module_nil)));
+
   DEFSYM (Qmodule_refs_hash, "module-refs-hash");
   DEFVAR_LISP ("module-refs-hash", Vmodule_refs_hash,
-              doc: /* Module global referrence table.  */);
+              doc: /* Module global reference table.  */);
 
   Vmodule_refs_hash
     = make_hash_table (hashtest_eq, make_number (DEFAULT_HASH_SIZE),
@@ -1087,20 +1104,17 @@ syms_of_module (void)
   Fput (Qinvalid_arity, Qerror_message,
         build_pure_c_string ("Invalid function arity"));
 
-  initialize_storage (&global_storage);
-
   /* Unintern `module-refs-hash' because it is internal-only and Lisp
      code or modules should not access it.  */
   Funintern (Qmodule_refs_hash, Qnil);
 
+  DEFSYM (Qsave_value_p, "save-value-p");
+  DEFSYM (Qsave_pointer_p, "save-pointer-p");
+
   defsubr (&Smodule_load);
 
-  /* Don't call defsubr on `module-call' because that would intern it,
-     but `module-call' is an internal function that users cannot
-     meaningfully use.  Instead, assign its definition to a private
-     variable.  */
-  XSETPVECTYPE (&Smodule_call, PVEC_SUBR);
-  XSETSUBR (module_call_func, &Smodule_call);
+  DEFSYM (Qinternal_module_call, "internal--module-call");
+  defsubr (&Sinternal_module_call);
 }
 
 /* Unlike syms_of_module, this initializer is called even from an
@@ -1116,22 +1130,8 @@ module_init (void)
 #elif defined HAVE_PTHREAD
   main_thread = pthread_self ();
 #elif defined WINDOWSNT
-  /* This calls APIs that are only available on Vista and later.  */
-# if false
-  /* GetCurrentProcess returns a pseudohandle, which must be duplicated.  */
-  if (! DuplicateHandle (GetCurrentProcess (), GetCurrentThread (),
-                         GetCurrentProcess (), &main_thread,
-                         SYNCHRONIZE | THREAD_QUERY_INFORMATION,
-                         FALSE, 0))
-    emacs_abort ();
-# else
-  /* GetCurrentThread returns a pseudohandle, which must be duplicated.  */
-  HANDLE th = GetCurrentThread ();
-  if (!DuplicateHandle (GetCurrentProcess (), th,
-                        GetCurrentProcess (), &main_thread, 0, FALSE,
-                        DUPLICATE_SAME_ACCESS))
-    emacs_abort ();
-  main_thread_id = GetCurrentThreadId ();
-# endif
+  /* The 'main' function already recorded the main thread's thread ID,
+     so we need just to use it . */
+  main_thread = dwMainThreadId;
 #endif
 }
diff --git a/src/emacs-module.h b/src/emacs-module.h
index 4d204d0..a3aa501 100644
--- a/src/emacs-module.h
+++ b/src/emacs-module.h
@@ -26,8 +26,19 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 
 #if defined __cplusplus && __cplusplus >= 201103L
 # define EMACS_NOEXCEPT noexcept
+
+/* Function prototype for module user-pointer finalizers.
+
+   NOTE: C++11 15.4: An exception-specification shall not appear in a
+                     typedef declaration or alias-declaration.
+
+*/
+void emacs_dummy_finalizer_function (void *) noexcept;
+typedef decltype(emacs_dummy_finalizer_function) *emacs_finalizer_function;
+
 #else
 # define EMACS_NOEXCEPT
+typedef void (*emacs_finalizer_function) (void *);
 #endif
 
 #ifdef __cplusplus
@@ -37,7 +48,8 @@ extern "C" {
 /* Current environment.  */
 typedef struct emacs_env_25 emacs_env;
 
-/* Opaque structure pointer representing an Emacs Lisp value.  */
+/* Opaque pointer representing an Emacs Lisp value.
+   BEWARE: Do not assume NULL is a valid value!  */
 typedef struct emacs_value_tag *emacs_value;
 
 enum emacs_arity { emacs_variadic_function = -2 };
@@ -63,9 +75,6 @@ typedef int (*emacs_init_function) (struct emacs_runtime 
*ert);
 typedef emacs_value (*emacs_subr) (emacs_env *env, ptrdiff_t nargs,
                                   emacs_value args[], void *data);
 
-/* Function prototype for module user-pointer finalizers.  */
-typedef void (*emacs_finalizer_function) (void *);
-
 /* Possible Emacs function call outcomes.  */
 enum emacs_funcall_exit
 {
@@ -175,17 +184,17 @@ struct emacs_env_25
 
   /* Embedded pointer type.  */
   emacs_value (*make_user_ptr) (emacs_env *env,
-                               void (*fin) (void *) EMACS_NOEXCEPT,
+                               emacs_finalizer_function fin,
                                void *ptr);
 
   void *(*get_user_ptr) (emacs_env *env, emacs_value uptr);
   void (*set_user_ptr) (emacs_env *env, emacs_value uptr, void *ptr);
 
-  void (*(*get_user_finalizer) (emacs_env *env, emacs_value uptr))
-    (void *) EMACS_NOEXCEPT;
+  emacs_finalizer_function (*get_user_finalizer) (emacs_env *env,
+                                                 emacs_value uptr);
   void (*set_user_finalizer) (emacs_env *env,
                              emacs_value uptr,
-                             void (*fin) (void *) EMACS_NOEXCEPT);
+                             emacs_finalizer_function fin);
 
   /* Vector functions.  */
   emacs_value (*vec_get) (emacs_env *env, emacs_value vec, ptrdiff_t i);
@@ -196,6 +205,9 @@ struct emacs_env_25
   ptrdiff_t (*vec_size) (emacs_env *env, emacs_value vec);
 };
 
+/* Every module should define a function as follows.  */
+extern int emacs_module_init (struct emacs_runtime *ert);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/emacs.c b/src/emacs.c
index ba71ceb..48ff20a 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -761,6 +761,9 @@ main (int argc, char **argv)
      names between UTF-8 and the system's ANSI codepage.  */
   maybe_load_unicows_dll ();
 #endif
+  /* This has to be done before module_init is called below, so that
+     the latter could use the thread ID of the main thread.  */
+  w32_init_main_thread ();
 #endif
 
 #ifdef RUN_TIME_REMAP
diff --git a/src/eval.c b/src/eval.c
index 023c2ef..d04796a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -487,6 +487,10 @@ usage: (setq [SYM VAL]...)  */)
   if (CONSP (args))
     {
       Lisp_Object args_left = args;
+      Lisp_Object numargs = Flength (args);
+
+      if (XINT (numargs) & 1)
+        xsignal2 (Qwrong_number_of_arguments, Qsetq, numargs);
 
       do
        {
@@ -3654,6 +3658,7 @@ To prevent this happening, set `quit-flag' to nil
 before making `inhibit-quit' nil.  */);
   Vinhibit_quit = Qnil;
 
+  DEFSYM (Qsetq, "setq");
   DEFSYM (Qinhibit_quit, "inhibit-quit");
   DEFSYM (Qautoload, "autoload");
   DEFSYM (Qinhibit_debugger, "inhibit-debugger");
diff --git a/src/fileio.c b/src/fileio.c
index 6cda1e3..e18ddb1 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4263,9 +4263,14 @@ by calling `format-decode', which see.  */)
       if (CODING_FOR_UNIBYTE (&coding)
          /* Can't do this if part of the buffer might be preserved.  */
          && NILP (replace))
-       /* Visiting a file with these coding system makes the buffer
-          unibyte.  */
-       bset_enable_multibyte_characters (current_buffer, Qnil);
+       {
+         /* Visiting a file with these coding system makes the buffer
+            unibyte.  */
+         if (inserted > 0)
+           bset_enable_multibyte_characters (current_buffer, Qnil);
+         else
+           Fset_buffer_multibyte (Qnil);
+       }
     }
 
   coding.dst_multibyte = ! NILP (BVAR (current_buffer, 
enable_multibyte_characters));
diff --git a/src/fns.c b/src/fns.c
index 029ac6a..4c13290 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -2764,8 +2764,9 @@ DEFUN ("require", Frequire, Srequire, 1, 3, 0,
 If FEATURE is not a member of the list `features', then the feature
 is not loaded; so load the file FILENAME.
 If FILENAME is omitted, the printname of FEATURE is used as the file name,
-and `load' will try to load this name appended with the suffix `.elc' or
-`.el', in that order.  The name without appended suffix will not be used.
+and `load' will try to load this name appended with the suffix `.elc',
+`.el', or the system-dependent suffix for dynamic module files, in that
+order.  The name without appended suffix will not be used.
 See `get-load-suffixes' for the complete list of suffixes.
 If the optional third argument NOERROR is non-nil,
 then return nil if the file is not found instead of signaling an error.
@@ -4078,13 +4079,10 @@ hash_clear (struct Lisp_Hash_Table *h)
 static bool
 sweep_weak_table (struct Lisp_Hash_Table *h, bool remove_entries_p)
 {
-  ptrdiff_t bucket, n;
-  bool marked;
-
-  n = ASIZE (h->index) & ~ARRAY_MARK_FLAG;
-  marked = 0;
+  ptrdiff_t n = gc_asize (h->index);
+  bool marked = false;
 
-  for (bucket = 0; bucket < n; ++bucket)
+  for (ptrdiff_t bucket = 0; bucket < n; ++bucket)
     {
       Lisp_Object idx, next, prev;
 
diff --git a/src/font.h b/src/font.h
index 1d13e1c..24c058d 100644
--- a/src/font.h
+++ b/src/font.h
@@ -427,6 +427,13 @@ FONT_SPEC_P (Lisp_Object x)
   return FONTP (x) && (ASIZE (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_SPEC_MAX;
 }
 
+/* Like FONT_SPEC_P, but can be used in the garbage collector.  */
+INLINE bool
+GC_FONT_SPEC_P (Lisp_Object x)
+{
+  return FONTP (x) && (gc_asize (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_SPEC_MAX;
+}
+
 /* True iff X is font-entity.  */
 INLINE bool
 FONT_ENTITY_P (Lisp_Object x)
@@ -434,6 +441,13 @@ FONT_ENTITY_P (Lisp_Object x)
   return FONTP (x) && (ASIZE (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_ENTITY_MAX;
 }
 
+/* Like FONT_ENTITY_P, but can be used in the garbage collector.  */
+INLINE bool
+GC_FONT_ENTITY_P (Lisp_Object x)
+{
+  return FONTP (x) && (gc_asize (x) & PSEUDOVECTOR_SIZE_MASK) == 
FONT_ENTITY_MAX;
+}
+
 /* True iff X is font-object.  */
 INLINE bool
 FONT_OBJECT_P (Lisp_Object x)
@@ -441,6 +455,13 @@ FONT_OBJECT_P (Lisp_Object x)
   return FONTP (x) && (ASIZE (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_OBJECT_MAX;
 }
 
+/* Like FONT_OBJECT_P, but can be used in the garbage collector.  */
+INLINE bool
+GC_FONT_OBJECT_P (Lisp_Object x)
+{
+  return FONTP (x) && (gc_asize (x) & PSEUDOVECTOR_SIZE_MASK) == 
FONT_OBJECT_MAX;
+}
+
 /* Type checking functions for various font-related objects.  */
 
 INLINE void
@@ -476,6 +497,13 @@ XFONT_SPEC (Lisp_Object p)
   return XUNTAG (p, Lisp_Vectorlike);
 }
 
+INLINE struct font_spec *
+GC_XFONT_SPEC (Lisp_Object p)
+{
+  eassert (GC_FONT_SPEC_P (p));
+  return XUNTAG (p, Lisp_Vectorlike);
+}
+
 INLINE struct font_entity *
 XFONT_ENTITY (Lisp_Object p)
 {
@@ -483,6 +511,13 @@ XFONT_ENTITY (Lisp_Object p)
   return XUNTAG (p, Lisp_Vectorlike);
 }
 
+INLINE struct font_entity *
+GC_XFONT_ENTITY (Lisp_Object p)
+{
+  eassert (GC_FONT_ENTITY_P (p));
+  return XUNTAG (p, Lisp_Vectorlike);
+}
+
 INLINE struct font *
 XFONT_OBJECT (Lisp_Object p)
 {
@@ -490,6 +525,13 @@ XFONT_OBJECT (Lisp_Object p)
   return XUNTAG (p, Lisp_Vectorlike);
 }
 
+INLINE struct font *
+GC_XFONT_OBJECT (Lisp_Object p)
+{
+  eassert (GC_FONT_OBJECT_P (p));
+  return XUNTAG (p, Lisp_Vectorlike);
+}
+
 #define XSETFONT(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_FONT))
 
 INLINE struct font *
diff --git a/src/frame.c b/src/frame.c
index c388986..4897052 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2641,13 +2641,16 @@ If FRAME is nil, describe the currently selected frame. 
 */)
 
 DEFUN ("modify-frame-parameters", Fmodify_frame_parameters,
        Smodify_frame_parameters, 2, 2, 0,
-       doc: /* Modify the parameters of frame FRAME according to ALIST.
+       doc: /* Modify FRAME according to new values of its parameters in ALIST.
 If FRAME is nil, it defaults to the selected frame.
 ALIST is an alist of parameters to change and their new values.
 Each element of ALIST has the form (PARM . VALUE), where PARM is a symbol.
-The meaningful PARMs depend on the kind of frame.
-Undefined PARMs are ignored, but stored in the frame's parameter list
-so that `frame-parameters' will return them.
+Which PARMs are meaningful depends on the kind of frame.
+The meaningful parameters are acted upon, i.e. the frame is changed
+according to their new values, and are also stored in the frame's
+parameter list so that `frame-parameters' will return them.
+PARMs that are not meaningful are still stored in the frame's parameter
+list, but are otherwise ignored.
 
 The value of frame parameter FOO can also be accessed
 as a frame-local binding for the variable FOO, if you have
diff --git a/src/insdel.c b/src/insdel.c
index 24807b1..bb3171b 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1765,6 +1765,18 @@ modify_text (ptrdiff_t start, ptrdiff_t end)
   bset_point_before_scroll (current_buffer, Qnil);
 }
 
+/* Signal that we are about to make a change that may result in new
+   undo information.
+ */
+static void
+run_undoable_change (void)
+{
+  if (EQ (BVAR (current_buffer, undo_list), Qt))
+    return;
+
+  call0 (Qundo_auto__undoable_change);
+}
+
 /* Check that it is okay to modify the buffer between START and END,
    which are char positions.
 
@@ -1773,7 +1785,12 @@ modify_text (ptrdiff_t start, ptrdiff_t end)
    any modification properties the text may have.
 
    If PRESERVE_PTR is nonzero, we relocate *PRESERVE_PTR
-   by holding its value temporarily in a marker.  */
+   by holding its value temporarily in a marker.
+
+   This function runs Lisp, which means it can GC, which means it can
+   compact buffers, including the current buffer being worked on here.
+   So don't you dare calling this function while manipulating the gap,
+   or during some other similar "critical section".  */
 
 void
 prepare_to_modify_buffer_1 (ptrdiff_t start, ptrdiff_t end,
@@ -1786,6 +1803,8 @@ prepare_to_modify_buffer_1 (ptrdiff_t start, ptrdiff_t 
end,
   if (!NILP (BVAR (current_buffer, read_only)))
     Fbarf_if_buffer_read_only (temp);
 
+  run_undoable_change();
+
   bset_redisplay (current_buffer);
 
   if (buffer_intervals (current_buffer))
@@ -2187,6 +2206,8 @@ syms_of_insdel (void)
   combine_after_change_list = Qnil;
   combine_after_change_buffer = Qnil;
 
+  DEFSYM (Qundo_auto__undoable_change, "undo-auto--undoable-change");
+
   DEFVAR_LISP ("combine-after-change-calls", Vcombine_after_change_calls,
               doc: /* Used internally by the function 
`combine-after-change-calls' macro.  */);
   Vcombine_after_change_calls = Qnil;
diff --git a/src/keyboard.c b/src/keyboard.c
index 849066c..02bc7d2 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -202,7 +202,7 @@ uintmax_t num_input_events;
 
 static EMACS_INT last_auto_save;
 
-/* The value of point when the last command was started.  */
+/* The value of point when the last command was started. */
 static ptrdiff_t last_point_position;
 
 /* The frame in which the last input event occurred, or Qmacro if the
@@ -1449,6 +1449,11 @@ command_loop_1 (void)
                result of changes from the last command. */
             call0 (Qundo_auto__add_boundary);
 
+            /* Record point and buffer, so we can put point into the undo
+               information if necessary. */
+            point_before_last_command_or_undo = PT;
+            buffer_before_last_command_or_undo = current_buffer;
+
             call1 (Qcommand_execute, Vthis_command);
 
 #ifdef HAVE_WINDOW_SYSTEM
@@ -3313,14 +3318,12 @@ readable_events (int flags)
 #endif
                   ))
         {
-          union buffered_input_event *event;
-
-          event = ((kbd_fetch_ptr < kbd_buffer + KBD_BUFFER_SIZE)
-                   ? kbd_fetch_ptr
-                   : kbd_buffer);
+          union buffered_input_event *event = kbd_fetch_ptr;
 
          do
            {
+              if (event == kbd_buffer + KBD_BUFFER_SIZE)
+                event = kbd_buffer;
              if (!(
 #ifdef USE_TOOLKIT_SCROLL_BARS
                    (flags & READABLE_EVENTS_FILTER_EVENTS) &&
@@ -3337,8 +3340,6 @@ readable_events (int flags)
                       && event->kind == BUFFER_SWITCH_EVENT))
                return 1;
              event++;
-              if (event == kbd_buffer + KBD_BUFFER_SIZE)
-                event = kbd_buffer;
            }
          while (event != kbd_store_ptr);
         }
diff --git a/src/keyboard.h b/src/keyboard.h
index 98bc86b..6c715a4 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -245,6 +245,19 @@ extern KBOARD *current_kboard;
 /* Total number of times read_char has returned, modulo UINTMAX_MAX + 1.  */
 extern uintmax_t num_input_events;
 
+
+/* The location of point immediately before the last command was
+   executed, or the last time the undo-boundary command added a
+   boundary.*/
+ptrdiff_t point_before_last_command_or_undo;
+
+/* The value of current_buffer immediately before the last command was
+   executed, or the last time the undo-boundary command added a
+   boundary.*/
+struct buffer *buffer_before_last_command_or_undo;
+
+extern struct buffer *prev_buffer;
+
 /* Nonzero means polling for input is temporarily suppressed.  */
 extern int poll_suppress_count;
 
diff --git a/src/lisp.h b/src/lisp.h
index 71dca72..995760a 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -357,7 +357,7 @@ error !;
 # define lisp_h_XINT(a) (XLI (a) >> INTTYPEBITS)
 # define lisp_h_XSYMBOL(a) \
     (eassert (SYMBOLP (a)), \
-     (struct Lisp_Symbol *) ((uintptr_t) XLI (a) - Lisp_Symbol \
+     (struct Lisp_Symbol *) ((intptr_t) XLI (a) - Lisp_Symbol \
                             + (char *) lispsym))
 # define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a) & ~VALMASK))
 # define lisp_h_XUNTAG(a, type) ((void *) (intptr_t) (XLI (a) - (type)))
@@ -369,6 +369,12 @@ error !;
 #if (defined __NO_INLINE__ \
      && ! defined __OPTIMIZE__ && ! defined __OPTIMIZE_SIZE__ \
      && ! (defined INLINING && ! INLINING))
+# define DEFINE_KEY_OPS_AS_MACROS true
+#else
+# define DEFINE_KEY_OPS_AS_MACROS false
+#endif
+
+#if DEFINE_KEY_OPS_AS_MACROS
 # define XLI(o) lisp_h_XLI (o)
 # define XIL(i) lisp_h_XIL (i)
 # define CHECK_LIST_CONS(x, y) lisp_h_CHECK_LIST_CONS (x, y)
@@ -713,9 +719,15 @@ struct Lisp_Symbol
 #define DEFUN_ARGS_8   (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
                         Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
 
-/* Yield an integer that contains TAG along with PTR.  */
+/* Yield a signed integer that contains TAG along with PTR.
+
+   Sign-extend pointers when USE_LSB_TAG (this simplifies emacs-module.c),
+   and zero-extend otherwise (that’s a bit faster here).
+   Sign extension matters only when EMACS_INT is wider than a pointer.  */
 #define TAG_PTR(tag, ptr) \
-  ((USE_LSB_TAG ? (tag) : (EMACS_UINT) (tag) << VALBITS) + (uintptr_t) (ptr))
+  (USE_LSB_TAG \
+   ? (intptr_t) (ptr) + (tag) \
+   : (EMACS_INT) (((EMACS_UINT) (tag) << VALBITS) + (uintptr_t) (ptr)))
 
 /* Yield an integer that contains a symbol tag along with OFFSET.
    OFFSET should be the offset in bytes from 'lispsym' to the symbol.  */
@@ -847,7 +859,9 @@ INLINE EMACS_INT
 INLINE EMACS_INT
 (XFASTINT) (Lisp_Object a)
 {
-  return lisp_h_XFASTINT (a);
+  EMACS_INT n = lisp_h_XFASTINT (a);
+  eassume (0 <= n);
+  return n;
 }
 
 INLINE struct Lisp_Symbol *
@@ -915,19 +929,10 @@ XFASTINT (Lisp_Object a)
 {
   EMACS_INT int0 = Lisp_Int0;
   EMACS_INT n = USE_LSB_TAG ? XINT (a) : XLI (a) - (int0 << VALBITS);
-  eassert (0 <= n);
+  eassume (0 <= n);
   return n;
 }
 
-/* Extract A's value as a symbol.  */
-INLINE struct Lisp_Symbol *
-XSYMBOL (Lisp_Object a)
-{
-  uintptr_t i = (uintptr_t) XUNTAG (a, Lisp_Symbol);
-  void *p = (char *) lispsym + i;
-  return p;
-}
-
 /* Extract A's type.  */
 INLINE enum Lisp_Type
 XTYPE (Lisp_Object a)
@@ -936,6 +941,16 @@ XTYPE (Lisp_Object a)
   return USE_LSB_TAG ? i & ~VALMASK : i >> VALBITS;
 }
 
+/* Extract A's value as a symbol.  */
+INLINE struct Lisp_Symbol *
+XSYMBOL (Lisp_Object a)
+{
+  eassert (SYMBOLP (a));
+  intptr_t i = (intptr_t) XUNTAG (a, Lisp_Symbol);
+  void *p = (char *) lispsym + i;
+  return p;
+}
+
 /* Extract A's pointer value, assuming A's type is TYPE.  */
 INLINE void *
 XUNTAG (Lisp_Object a, int type)
@@ -1536,7 +1551,16 @@ aref_addr (Lisp_Object array, ptrdiff_t idx)
 INLINE ptrdiff_t
 ASIZE (Lisp_Object array)
 {
-  return XVECTOR (array)->header.size;
+  ptrdiff_t size = XVECTOR (array)->header.size;
+  eassume (0 <= size);
+  return size;
+}
+
+INLINE ptrdiff_t
+gc_asize (Lisp_Object array)
+{
+  /* Like ASIZE, but also can be used in the garbage collector.  */
+  return XVECTOR (array)->header.size & ~ARRAY_MARK_FLAG;
 }
 
 INLINE void
@@ -1551,7 +1575,7 @@ gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Object 
val)
 {
   /* Like ASET, but also can be used in the garbage collector:
      sweep_weak_table calls set_hash_key etc. while the table is marked.  */
-  eassert (0 <= idx && idx < (ASIZE (array) & ~ARRAY_MARK_FLAG));
+  eassert (0 <= idx && idx < gc_asize (array));
   XVECTOR (array)->contents[idx] = val;
 }
 
@@ -1933,21 +1957,22 @@ struct Lisp_Hash_Table
 };
 
 
+INLINE bool
+HASH_TABLE_P (Lisp_Object a)
+{
+  return PSEUDOVECTORP (a, PVEC_HASH_TABLE);
+}
+
 INLINE struct Lisp_Hash_Table *
 XHASH_TABLE (Lisp_Object a)
 {
+  eassert (HASH_TABLE_P (a));
   return XUNTAG (a, Lisp_Vectorlike);
 }
 
 #define XSET_HASH_TABLE(VAR, PTR) \
      (XSETPSEUDOVECTOR (VAR, PTR, PVEC_HASH_TABLE))
 
-INLINE bool
-HASH_TABLE_P (Lisp_Object a)
-{
-  return PSEUDOVECTORP (a, PVEC_HASH_TABLE);
-}
-
 /* Value is the key part of entry IDX in hash table H.  */
 INLINE Lisp_Object
 HASH_KEY (struct Lisp_Hash_Table *h, ptrdiff_t idx)
@@ -3906,7 +3931,6 @@ extern Lisp_Object make_user_ptr (void (*finalizer) 
(void*), void *p);
 
 /* Defined in emacs-module.c.  */
 extern void module_init (void);
-extern void mark_modules (void);
 extern void syms_of_module (void);
 #endif
 
diff --git a/src/lread.c b/src/lread.c
index 43100d9..74a5fdf 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -987,7 +987,8 @@ suffix_p (Lisp_Object string, const char *suffix)
 
 DEFUN ("load", Fload, Sload, 1, 5, 0,
        doc: /* Execute a file of Lisp code named FILE.
-First try FILE with `.elc' appended, then try with `.el',
+First try FILE with `.elc' appended, then try with `.el', then try
+with a system-dependent suffix of dynamic modules (see `load-suffixes'),
 then try FILE unmodified (the exact suffixes in the exact order are
 determined by `load-suffixes').  Environment variable references in
 FILE are replaced with their values by calling `substitute-in-file-name'.
@@ -999,10 +1000,10 @@ Print messages at start and end of loading unless
 optional third arg NOMESSAGE is non-nil (but `force-load-messages'
 overrides that).
 If optional fourth arg NOSUFFIX is non-nil, don't try adding
-suffixes `.elc' or `.el' to the specified name FILE.
+suffixes to the specified name FILE.
 If optional fifth arg MUST-SUFFIX is non-nil, insist on
-the suffix `.elc' or `.el'; don't accept just FILE unless
-it ends in one of those suffixes or includes a directory name.
+the suffix `.elc' or `.el' or the module suffix; don't accept just
+FILE unless it ends in one of those suffixes or includes a directory name.
 
 If NOSUFFIX is nil, then if a file could not be found, try looking for
 a different representation of the file by adding non-empty suffixes to
@@ -1084,7 +1085,12 @@ Return t if the file exists and loads successfully.  */)
       if (! NILP (must_suffix))
        {
          /* Don't insist on adding a suffix if FILE already ends with one.  */
-         if (suffix_p (file, ".el") || suffix_p (file, ".elc"))
+         if (suffix_p (file, ".el")
+             || suffix_p (file, ".elc")
+#ifdef HAVE_MODULES
+             || suffix_p (file, MODULES_SUFFIX)
+#endif
+             )
            must_suffix = Qnil;
          /* Don't insist on adding a suffix
             if the argument includes a directory name.  */
@@ -1158,9 +1164,7 @@ Return t if the file exists and loads successfully.  */)
 
 #ifdef HAVE_MODULES
   if (suffix_p (found, MODULES_SUFFIX))
-    {
-      return Fmodule_load (found);
-    }
+    return unbind_to (count, Fmodule_load (found));
 #endif
 
   /* Check if we're stuck in a recursive load cycle.
@@ -1937,17 +1941,22 @@ readevalloop (Lisp_Object readcharfun,
 }
 
 DEFUN ("eval-buffer", Feval_buffer, Seval_buffer, 0, 5, "",
-       doc: /* Execute the current buffer as Lisp code.
+       doc: /* Execute the accessible portion of current buffer as Lisp code.
+You can use \\[narrow-to-region] to limit the part of buffer to be evaluated.
 When called from a Lisp program (i.e., not interactively), this
 function accepts up to five optional arguments:
-BUFFER is the buffer to evaluate (nil means use current buffer).
-PRINTFLAG controls printing of output:
- A value of nil means discard it; anything else is stream for print.
+BUFFER is the buffer to evaluate (nil means use current buffer),
+ or a name of a buffer (a string).
+PRINTFLAG controls printing of output by any output functions in the
+ evaluated code, such as `print', `princ', and `prin1':
+  a value of nil means discard it; anything else is the stream to print to.
+  See Info node `(elisp)Output Streams' for details on streams.
 FILENAME specifies the file name to use for `load-history'.
 UNIBYTE, if non-nil, specifies `load-convert-to-unibyte' for this
  invocation.
-DO-ALLOW-PRINT, if non-nil, specifies that `print' and related
- functions should work normally even if PRINTFLAG is nil.
+DO-ALLOW-PRINT, if non-nil, specifies that output functions in the
+ evaluated code should work normally even if PRINTFLAG is nil, in
+ which case the output is displayed in the echo area.
 
 This function preserves the position of point.  */)
   (Lisp_Object buffer, Lisp_Object printflag, Lisp_Object filename, 
Lisp_Object unibyte, Lisp_Object do_allow_print)
@@ -1988,7 +1997,8 @@ When called from programs, expects two arguments,
 giving starting and ending indices in the current buffer
 of the text to be executed.
 Programs can pass third argument PRINTFLAG which controls output:
-A value of nil means discard it; anything else is stream for printing it.
+ a value of nil means discard it; anything else is stream for printing it.
+ See Info node `(elisp)Output Streams' for details on streams.
 Also the fourth argument READ-FUNCTION, if non-nil, is used
 instead of `read' to read each expression.  It gets one argument
 which is the input stream for reading characters.
@@ -3937,10 +3947,8 @@ oblookup (Lisp_Object obarray, register const char *ptr, 
ptrdiff_t size, ptrdiff
   Lisp_Object bucket, tem;
 
   obarray = check_obarray (obarray);
-  obsize = ASIZE (obarray);
-
   /* This is sometimes needed in the middle of GC.  */
-  obsize &= ~ARRAY_MARK_FLAG;
+  obsize = gc_asize (obarray);
   hash = hash_string (ptr, size_byte) % obsize;
   bucket = AREF (obarray, hash);
   oblookup_last_bucket_number = hash;
@@ -4345,7 +4353,7 @@ init_lread (void)
           load_path_check (default_lpath);
 
           /* Add the site-lisp directories to the front of the default.  */
-          if (!no_site_lisp)
+          if (!no_site_lisp && PATH_SITELOADSEARCH[0] != '\0')
             {
               Lisp_Object sitelisp;
               sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0);
@@ -4376,7 +4384,7 @@ init_lread (void)
       load_path_check (Vload_path);
 
       /* Add the site-lisp directories at the front.  */
-      if (initialized && !no_site_lisp)
+      if (initialized && !no_site_lisp && PATH_SITELOADSEARCH[0] != '\0')
         {
           Lisp_Object sitelisp;
           sitelisp = decode_env_path (0, PATH_SITELOADSEARCH, 0);
@@ -4447,7 +4455,7 @@ to find all the symbols in an obarray, use `mapatoms'.  
*/);
 
   DEFVAR_LISP ("values", Vvalues,
               doc: /* List of values of all expressions which were read, 
evaluated and printed.
-                      Order is reverse chronological.  */);
+Order is reverse chronological.  */);
   XSYMBOL (intern ("values"))->declared_special = 0;
 
   DEFVAR_LISP ("standard-input", Vstandard_input,
@@ -4498,10 +4506,11 @@ programs that process this list should tolerate 
directories both with
 and without trailing slashes.  */);
 
   DEFVAR_LISP ("load-suffixes", Vload_suffixes,
-              doc: /* List of suffixes for (compiled or source) Emacs Lisp 
files.
+              doc: /* List of suffixes for Emacs Lisp files and dynamic 
modules.
+This list includes suffixes for both compiled and source Emacs Lisp files.
 This list should not include the empty string.
 `load' and related functions try to append these suffixes, in order,
-to the specified file name if a Lisp suffix is allowed or required.  */);
+to the specified file name if a suffix is allowed or required.  */);
 #ifdef HAVE_MODULES
   Vload_suffixes = list3 (build_pure_c_string (".elc"),
                          build_pure_c_string (".el"),
@@ -4510,6 +4519,13 @@ to the specified file name if a Lisp suffix is allowed 
or required.  */);
   Vload_suffixes = list2 (build_pure_c_string (".elc"),
                          build_pure_c_string (".el"));
 #endif
+  DEFVAR_LISP ("module-file-suffix", Vmodule_file_suffix,
+              doc: /* Suffix of loadable module file, or nil of modules are 
not supported.  */);
+#ifdef HAVE_MODULES
+  Vmodule_file_suffix = build_pure_c_string (MODULES_SUFFIX);
+#else
+  Vmodule_file_suffix = Qnil;
+#endif
   DEFVAR_LISP ("load-file-rep-suffixes", Vload_file_rep_suffixes,
               doc: /* List of suffixes that indicate representations of \
 the same file.
diff --git a/src/macfont.m b/src/macfont.m
index fae284f..3023fbe 100644
--- a/src/macfont.m
+++ b/src/macfont.m
@@ -771,7 +771,7 @@ mac_font_descriptor_get_adjusted_weight 
(CTFontDescriptorRef desc, CGFloat val)
 {
   long percent_val = lround (val * 100);
 
-  if (percent_val == -40 || percent_val == 56)
+  if (percent_val == -40)
     {
       CTFontRef font = NULL;
       CFStringRef name =
@@ -786,19 +786,10 @@ mac_font_descriptor_get_adjusted_weight 
(CTFontDescriptorRef desc, CGFloat val)
        {
          CFIndex weight = mac_font_get_weight (font);
 
-         if (percent_val == -40)
-           {
-             /* Workaround for crash when displaying Oriya characters
-                with Arial Unicode MS on OS X 10.11.  */
-             if (weight == 5)
-               val = 0;
-           }
-         else                  /* percent_val == 56 */
-           {
-             if (weight == 9)
-               /* Adjustment for HiraginoSans-W7 on OS X 10.11.  */
-               val = 0.4;
-           }
+         /* Workaround for crash when displaying Oriya characters
+            with Arial Unicode MS on OS X 10.11.  */
+         if (weight == 5)
+           val = 0;
          CFRelease (font);
        }
     }
diff --git a/src/nsfns.m b/src/nsfns.m
index 434fd6a..edc02e8 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -405,10 +405,12 @@ ns_set_name_internal (struct frame *f, Lisp_Object name)
   NSString *str;
   NSView *view = FRAME_NS_VIEW (f);
 
+
   encoded_name = ENCODE_UTF_8 (name);
 
   str = [NSString stringWithUTF8String: SSDATA (encoded_name)];
 
+
   /* Don't change the name if it's already NAME.  */
   if (! [[[view window] title] isEqualToString: str])
     [[view window] setTitle: str];
@@ -483,9 +485,14 @@ x_implicitly_set_name (struct frame *f, Lisp_Object arg, 
Lisp_Object oldval)
 {
   NSTRACE ("x_implicitly_set_name");
 
+  Lisp_Object frame_title = buffer_local_value
+    (Qframe_title_format, XWINDOW (f->selected_window)->contents);
+  Lisp_Object icon_title = buffer_local_value
+    (Qicon_title_format, XWINDOW (f->selected_window)->contents);
+
   /* Deal with NS specific format t.  */
-  if (FRAME_NS_P (f) && ((FRAME_ICONIFIED_P (f) && EQ (Vicon_title_format, Qt))
-                         || EQ (Vframe_title_format, Qt)))
+  if (FRAME_NS_P (f) && ((FRAME_ICONIFIED_P (f) && EQ (icon_title, Qt))
+                         || EQ (frame_title, Qt)))
     ns_set_name_as_filename (f);
   else
     ns_set_name (f, arg, 0);
@@ -3134,6 +3141,8 @@ void
 syms_of_nsfns (void)
 {
   DEFSYM (Qfontsize, "fontsize");
+  DEFSYM (Qframe_title_format, "frame-title-format");
+  DEFSYM (Qicon_title_format, "icon-title-format");
 
   DEFVAR_LISP ("ns-icon-type-alist", Vns_icon_type_alist,
                doc: /* Alist of elements (REGEXP . IMAGE) for images of icons 
associated to frames.
diff --git a/src/nsterm.h b/src/nsterm.h
index 7a61814..7e6e8ef 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -75,7 +75,7 @@ typedef float EmacsCGFloat;
 /* #define NSTRACE_ENABLED 1          */
 
 
-/* When non-zero, trace output is enbled for all parts, except those
+/* When non-zero, trace output is enabled for all parts, except those
    explicitly disabled. */
 /* #define NSTRACE_ALL_GROUPS     1     */
 
diff --git a/src/nsterm.m b/src/nsterm.m
index 58ace48..36e08c6 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -584,28 +584,6 @@ ns_load_path (void)
   return NULL;
 }
 
-static void
-ns_timeout (int usecs)
-/* --------------------------------------------------------------------------
-     Blocking timer utility used by ns_ring_bell
-   -------------------------------------------------------------------------- 
*/
-{
-  struct timespec wakeup = timespec_add (current_timespec (),
-                                        make_timespec (0, usecs * 1000));
-
-  /* Keep waiting until past the time wakeup.  */
-  while (1)
-    {
-      struct timespec timeout, now = current_timespec ();
-      if (timespec_cmp (wakeup, now) <= 0)
-       break;
-      timeout = timespec_sub (wakeup, now);
-
-      /* Try to wait that long--but we might wake up sooner.  */
-      pselect (0, NULL, NULL, NULL, &timeout, NULL);
-    }
-}
-
 
 void
 ns_release_object (void *obj)
@@ -1161,6 +1139,77 @@ ns_clip_to_row (struct window *w, struct glyph_row *row,
 }
 
 
+/* ==========================================================================
+
+    Visible bell and beep.
+
+   ========================================================================== 
*/
+
+
address@hidden EmacsBell : NSImageView
+{
+  // Number of currently active bell:s.
+  unsigned int nestCount;
+}
+- (void)show:(NSView *)view;
+- (void)hide;
address@hidden
+
address@hidden EmacsBell
+
+- (id)init;
+{
+  if ((self = [super init]))
+    {
+      nestCount = 0;
+      self.image = [NSImage imageNamed:NSImageNameCaution];
+    }
+  return self;
+}
+
+- (void)show:(NSView *)view
+{
+  NSTRACE ("[EmacsBell show:]");
+  NSTRACE_MSG ("nestCount: %u", nestCount);
+
+  // Show the image, unless it's already shown.
+  if (nestCount == 0)
+    {
+      NSRect rect = [view bounds];
+      NSPoint pos;
+      pos.x = rect.origin.x + (rect.size.width  - self.image.size.width )/2;
+      pos.y = rect.origin.y + (rect.size.height - self.image.size.height)/2;
+
+      [self setFrameOrigin:pos];
+      [self setFrameSize:self.image.size];
+
+      [[[view window] contentView] addSubview:self
+                                   positioned:NSWindowAbove
+                                   relativeTo:nil];
+    }
+
+  ++nestCount;
+
+  [self performSelector:@selector(hide) withObject:self afterDelay:0.5];
+}
+
+
+- (void)hide
+{
+  // Note: Trace output from this method isn't shown, reason unknown.
+  // NSTRACE ("[EmacsBell hide]");
+
+  --nestCount;
+
+  // Remove the image once the last bell became inactive.
+  if (nestCount == 0)
+    {
+      [self removeFromSuperview];
+    }
+}
+
address@hidden
+
 static void
 ns_ring_bell (struct frame *f)
 /* --------------------------------------------------------------------------
@@ -1170,37 +1219,24 @@ ns_ring_bell (struct frame *f)
   NSTRACE ("ns_ring_bell");
   if (visible_bell)
     {
-      NSAutoreleasePool *pool;
       struct frame *frame = SELECTED_FRAME ();
       NSView *view;
 
+      static EmacsBell * bell_view = nil;
+      if (bell_view == nil)
+        {
+          bell_view = [[EmacsBell alloc] init];
+          [bell_view retain];
+        }
+
       block_input ();
-      pool = [[NSAutoreleasePool alloc] init];
 
       view = FRAME_NS_VIEW (frame);
       if (view != nil)
         {
-          NSRect r, surr;
-          NSPoint dim = NSMakePoint (128, 128);
-
-          r = [view bounds];
-          r.origin.x += (r.size.width - dim.x) / 2;
-          r.origin.y += (r.size.height - dim.y) / 2;
-          r.size.width = dim.x;
-          r.size.height = dim.y;
-          surr = NSInsetRect (r, -2, -2);
-          ns_focus (frame, &surr, 1);
-          [[view window] cacheImageInRect: [view convertRect: surr 
toView:nil]];
-          [ns_lookup_indexed_color (NS_FACE_FOREGROUND
-                                      (FRAME_DEFAULT_FACE (frame)), frame) 
set];
-          NSRectFill (r);
-          [[view window] flushWindow];
-          ns_timeout (150000);
-          [[view window] restoreCachedImage];
-          [[view window] flushWindow];
-          ns_unfocus (frame);
+          [bell_view show:view];
         }
-      [pool release];
+
       unblock_input ();
     }
   else
@@ -1209,6 +1245,7 @@ ns_ring_bell (struct frame *f)
     }
 }
 
+
 /* ==========================================================================
 
     Frame / window manager related functions
@@ -6992,7 +7029,7 @@ not_in_argv (NSString *arg)
 
 - (void)windowDidExitFullScreen /* provided for direct calls */
 {
-  NSTRACE ("[EamcsView windowDidExitFullScreen]");
+  NSTRACE ("[EmacsView windowDidExitFullScreen]");
   if (!FRAME_LIVE_P (emacsframe))
     {
       NSTRACE_MSG ("Ignored (frame dead)");
diff --git a/src/puresize.h b/src/puresize.h
index f075624..96ddcde 100644
--- a/src/puresize.h
+++ b/src/puresize.h
@@ -81,21 +81,35 @@ extern _Noreturn void pure_write_error (Lisp_Object);
 
 extern EMACS_INT pure[];
 
+/* The puresize_h_* macros are private to this include file.  */
+
 /* True if PTR is pure.  */
+
+#define puresize_h_PURE_P(ptr) \
+  ((uintptr_t) (ptr) - (uintptr_t) pure <= PURESIZE)
+
 INLINE bool
 PURE_P (void *ptr)
 {
-  return (uintptr_t) (ptr) - (uintptr_t) pure <= PURESIZE;
+  return puresize_h_PURE_P (ptr);
 }
 
 /* Signal an error if OBJ is pure.  PTR is OBJ untagged.  */
+
+#define puresize_h_CHECK_IMPURE(obj, ptr) \
+  (PURE_P (ptr) ? pure_write_error (obj) : (void) 0)
+
 INLINE void
 CHECK_IMPURE (Lisp_Object obj, void *ptr)
 {
-  if (PURE_P (ptr))
-    pure_write_error (obj);
+  puresize_h_CHECK_IMPURE (obj, ptr);
 }
 
+#if DEFINE_KEY_OPS_AS_MACROS
+# define PURE_P(ptr) puresize_h_PURE_P (ptr)
+# define CHECK_IMPURE(obj, ptr) puresize_h_CHECK_IMPURE (obj, ptr)
+#endif
+
 INLINE_HEADER_END
 
 #endif /* EMACS_PURESIZE_H */
diff --git a/src/syntax.c b/src/syntax.c
index f939a76..5b0ec6d 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -514,6 +514,7 @@ update_syntax_table_forward (ptrdiff_t charpos, bool init,
     {
       eassert (NILP (object));
       eassert (charpos >= gl_state.e_property);
+      parse_sexp_propertize (charpos);
     }
   else
     {
diff --git a/src/undo.c b/src/undo.c
index 214beae..1cc6de4 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -22,10 +22,7 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 
 #include "lisp.h"
 #include "buffer.h"
-
-/* Position of point last time we inserted a boundary.  */
-static struct buffer *last_boundary_buffer;
-static ptrdiff_t last_boundary_position;
+#include "keyboard.h"
 
 /* The first time a command records something for undo.
    it also allocates the undo-boundary object
@@ -34,45 +31,42 @@ static ptrdiff_t last_boundary_position;
    an undo-boundary.  */
 static Lisp_Object pending_boundary;
 
+/* Record point as it was at beginning of this command (if necessary)
+   and prepare the undo info for recording a change.
+   Prepare the undo info for recording a change. */
 static void
-run_undoable_change (void)
+prepare_record (void)
 {
-  call0 (Qundo_auto__undoable_change);
+  /* Allocate a cons cell to be the undo boundary after this command.  */
+  if (NILP (pending_boundary))
+    pending_boundary = Fcons (Qnil, Qnil);
+
+  if (MODIFF <= SAVE_MODIFF)
+    record_first_change ();
 }
 
-/* Record point as it was at beginning of this command (if necessary)
-   and prepare the undo info for recording a change.
+/* Record point as it was at beginning of this command.
    PT is the position of point that will naturally occur as a result of the
    undo record that will be added just after this command terminates.  */
-
 static void
 record_point (ptrdiff_t pt)
 {
-  bool at_boundary;
-
   /* Don't record position of pt when undo_inhibit_record_point holds.  */
   if (undo_inhibit_record_point)
     return;
 
-  /* Allocate a cons cell to be the undo boundary after this command.  */
-  if (NILP (pending_boundary))
-    pending_boundary = Fcons (Qnil, Qnil);
-
-  run_undoable_change ();
+  bool at_boundary;
 
   at_boundary = ! CONSP (BVAR (current_buffer, undo_list))
                 || NILP (XCAR (BVAR (current_buffer, undo_list)));
 
-  if (MODIFF <= SAVE_MODIFF)
-    record_first_change ();
+  prepare_record ();
 
   /* If we are just after an undo boundary, and
      point wasn't at start of deleted range, record where it was.  */
-  if (at_boundary
-      && current_buffer == last_boundary_buffer
-      && last_boundary_position != pt)
+  if (at_boundary)
     bset_undo_list (current_buffer,
-                   Fcons (make_number (last_boundary_position),
+                   Fcons (make_number (pt),
                           BVAR (current_buffer, undo_list)));
 }
 
@@ -89,7 +83,7 @@ record_insert (ptrdiff_t beg, ptrdiff_t length)
   if (EQ (BVAR (current_buffer, undo_list), Qt))
     return;
 
-  record_point (beg);
+  prepare_record ();
 
   /* If this is following another insertion and consecutive with it
      in the buffer, combine the two.  */
@@ -130,8 +124,6 @@ record_marker_adjustments (ptrdiff_t from, ptrdiff_t to)
   if (NILP (pending_boundary))
     pending_boundary = Fcons (Qnil, Qnil);
 
-  run_undoable_change ();
-
   for (m = BUF_MARKERS (current_buffer); m; m = m->next)
     {
       charpos = m->charpos;
@@ -163,7 +155,6 @@ record_marker_adjustments (ptrdiff_t from, ptrdiff_t to)
 /* Record that a deletion is about to take place, of the characters in
    STRING, at location BEG.  Optionally record adjustments for markers
    in the region STRING occupies in the current buffer.  */
-
 void
 record_delete (ptrdiff_t beg, Lisp_Object string, bool record_markers)
 {
@@ -172,15 +163,19 @@ record_delete (ptrdiff_t beg, Lisp_Object string, bool 
record_markers)
   if (EQ (BVAR (current_buffer, undo_list), Qt))
     return;
 
+  if (point_before_last_command_or_undo != beg
+      && buffer_before_last_command_or_undo == current_buffer)
+    record_point (point_before_last_command_or_undo);
+
   if (PT == beg + SCHARS (string))
     {
       XSETINT (sbeg, -beg);
-      record_point (PT);
+      prepare_record ();
     }
   else
     {
       XSETFASTINT (sbeg, beg);
-      record_point (beg);
+      prepare_record ();
     }
 
   /* primitive-undo assumes marker adjustments are recorded
@@ -234,7 +229,7 @@ record_property_change (ptrdiff_t beg, ptrdiff_t length,
                        Lisp_Object buffer)
 {
   Lisp_Object lbeg, lend, entry;
-  struct buffer *obuf = current_buffer, *buf = XBUFFER (buffer);
+  struct buffer *buf = XBUFFER (buffer);
 
   if (EQ (BVAR (buf, undo_list), Qt))
     return;
@@ -243,11 +238,6 @@ record_property_change (ptrdiff_t beg, ptrdiff_t length,
   if (NILP (pending_boundary))
     pending_boundary = Fcons (Qnil, Qnil);
 
-  /* Switch temporarily to the buffer that was changed.  */
-  set_buffer_internal (buf);
-
-  run_undoable_change ();
-
   if (MODIFF <= SAVE_MODIFF)
     record_first_change ();
 
@@ -256,9 +246,6 @@ record_property_change (ptrdiff_t beg, ptrdiff_t length,
   entry = Fcons (Qnil, Fcons (prop, Fcons (value, Fcons (lbeg, lend))));
   bset_undo_list (current_buffer,
                  Fcons (entry, BVAR (current_buffer, undo_list)));
-
-  /* Reset the buffer */
-  set_buffer_internal (obuf);
 }
 
 DEFUN ("undo-boundary", Fundo_boundary, Sundo_boundary, 0, 0, 0,
@@ -286,10 +273,11 @@ but another undo command will undo to the previous 
boundary.  */)
        bset_undo_list (current_buffer,
                        Fcons (Qnil, BVAR (current_buffer, undo_list)));
     }
-  last_boundary_position = PT;
-  last_boundary_buffer = current_buffer;
 
   Fset (Qundo_auto__last_boundary_cause, Qexplicit);
+  point_before_last_command_or_undo = PT;
+  buffer_before_last_command_or_undo = current_buffer;
+
   return Qnil;
 }
 
@@ -432,7 +420,6 @@ void
 syms_of_undo (void)
 {
   DEFSYM (Qinhibit_read_only, "inhibit-read-only");
-  DEFSYM (Qundo_auto__undoable_change, "undo-auto--undoable-change");
   DEFSYM (Qundo_auto__last_boundary_cause, "undo-auto--last-boundary-cause");
   DEFSYM (Qexplicit, "explicit");
 
@@ -442,8 +429,6 @@ syms_of_undo (void)
   pending_boundary = Qnil;
   staticpro (&pending_boundary);
 
-  last_boundary_buffer = NULL;
-
   defsubr (&Sundo_boundary);
 
   DEFVAR_INT ("undo-limit", undo_limit,
diff --git a/src/w32.c b/src/w32.c
index 9601012..9b1d94d 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -7432,7 +7432,7 @@ sys_socket (int af, int type, int protocol)
   if (winsock_lib == NULL)
     {
       errno = ENETDOWN;
-      return INVALID_SOCKET;
+      return -1;
     }
 
   check_errno ();
@@ -9270,8 +9270,10 @@ maybe_load_unicows_dll (void)
             pointers, and assign the correct addresses to these
             pointers at program startup (see emacs.c, which calls
             this function early on).  */
-         pMultiByteToWideChar = GetProcAddress (ret, "MultiByteToWideChar");
-         pWideCharToMultiByte = GetProcAddress (ret, "WideCharToMultiByte");
+         pMultiByteToWideChar =
+           (MultiByteToWideChar_Proc)GetProcAddress (ret, 
"MultiByteToWideChar");
+         pWideCharToMultiByte =
+           (WideCharToMultiByte_Proc)GetProcAddress (ret, 
"WideCharToMultiByte");
          return ret;
        }
       else
diff --git a/src/w32.h b/src/w32.h
index 2c71150..1efd562 100644
--- a/src/w32.h
+++ b/src/w32.h
@@ -179,8 +179,10 @@ extern int _sys_wait_connect (int fd);
 
 extern HMODULE w32_delayed_load (Lisp_Object);
 
-extern int (WINAPI *pMultiByteToWideChar)(UINT,DWORD,LPCSTR,int,LPWSTR,int);
-extern int (WINAPI 
*pWideCharToMultiByte)(UINT,DWORD,LPCWSTR,int,LPSTR,int,LPCSTR,LPBOOL);
+typedef int (WINAPI 
*MultiByteToWideChar_Proc)(UINT,DWORD,LPCSTR,int,LPWSTR,int);
+typedef int (WINAPI 
*WideCharToMultiByte_Proc)(UINT,DWORD,LPCWSTR,int,LPSTR,int,LPCSTR,LPBOOL);
+extern MultiByteToWideChar_Proc pMultiByteToWideChar;
+extern WideCharToMultiByte_Proc pWideCharToMultiByte;
 
 extern void init_environment (char **);
 extern void check_windows_init_file (void);
diff --git a/src/w32console.c b/src/w32console.c
index ec54f83..7fffabf 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -757,13 +757,8 @@ initialize_w32_display (struct terminal *term, int *width, 
int *height)
   else
     w32_console_unicode_input = 0;
 
-  /* This is needed by w32notify.c:send_notifications.  */
-  dwMainThreadId = GetCurrentThreadId ();
-
   /* Setup w32_display_info structure for this frame. */
-
   w32_initialize_display_info (build_string ("Console"));
-
 }
 
 
diff --git a/src/w32fns.c b/src/w32fns.c
index f3391cb..f9ce762 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -1666,10 +1666,7 @@ x_set_menu_bar_lines (struct frame *f, Lisp_Object 
value, Lisp_Object oldval)
   FRAME_MENU_BAR_LINES (f) = 0;
   FRAME_MENU_BAR_HEIGHT (f) = 0;
   if (nlines)
-    {
-      FRAME_EXTERNAL_MENU_BAR (f) = 1;
-      windows_or_buffers_changed = 23;
-    }
+    FRAME_EXTERNAL_MENU_BAR (f) = 1;
   else
     {
       if (FRAME_EXTERNAL_MENU_BAR (f) == 1)
@@ -4620,8 +4617,7 @@ my_create_tip_window (struct frame *f)
   rect.right = FRAME_PIXEL_WIDTH (f);
   rect.bottom = FRAME_PIXEL_HEIGHT (f);
 
-  AdjustWindowRect (&rect, f->output_data.w32->dwStyle,
-                   FRAME_EXTERNAL_MENU_BAR (f));
+  AdjustWindowRect (&rect, f->output_data.w32->dwStyle, false);
 
   tip_window = FRAME_W32_WINDOW (f)
     = CreateWindow (EMACS_CLASS,
@@ -6681,8 +6677,7 @@ Text larger than the specified size is clipped.  */)
     rect.left = rect.top = 0;
     rect.right = width;
     rect.bottom = height;
-    AdjustWindowRect (&rect, f->output_data.w32->dwStyle,
-                     FRAME_EXTERNAL_MENU_BAR (f));
+    AdjustWindowRect (&rect, f->output_data.w32->dwStyle, false);
 
     /* Position and size tooltip, and put it in the topmost group.
        The add-on of FRAME_COLUMN_WIDTH to the 5th argument is a
@@ -9925,10 +9920,6 @@ globals_of_w32fns (void)
   InitCommonControls ();
 
   syms_of_w32uniscribe ();
-
-  /* Needed for recovery from C stack overflows in batch mode.  */
-  if (noninteractive)
-    dwMainThreadId = GetCurrentThreadId ();
 }
 
 #ifdef NTGUI_UNICODE
diff --git a/src/w32menu.c b/src/w32menu.c
index 6af69f4..964b965 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -494,7 +494,10 @@ set_frame_menubar (struct frame *f, bool first_time, bool 
deep_p)
     /* Force the window size to be recomputed so that the frame's text
        area remains the same, if menubar has just been created.  */
     if (old_widget == NULL)
-      adjust_frame_size (f, -1, -1, 2, false, Qmenu_bar_lines);
+      {
+       windows_or_buffers_changed = 23;
+       adjust_frame_size (f, -1, -1, 2, false, Qmenu_bar_lines);
+      }
   }
 
   unblock_input ();
diff --git a/src/w32term.c b/src/w32term.c
index f764e25..0b8bef2 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -6115,9 +6115,22 @@ x_set_window_size (struct frame *f, bool change_gravity,
   int pixelwidth, pixelheight;
   Lisp_Object fullscreen = get_frame_param (f, Qfullscreen);
   RECT rect;
+  MENUBARINFO info;
+  int menu_bar_height;
 
   block_input ();
 
+  /* Get the height of the menu bar here.  It's used below to detect
+     whether the menu bar is wrapped.  It's also used to specify the
+     third argument for AdjustWindowRect.  FRAME_EXTERNAL_MENU_BAR which
+     has been used before for that reason is unreliable because it only
+     specifies whether we _want_ a menu bar for this frame and not
+     whether this frame _has_ a menu bar.  See bug#22105.  */
+  info.cbSize = sizeof (info);
+  info.rcBar.top = info.rcBar.bottom = 0;
+  GetMenuBarInfo (FRAME_W32_WINDOW (f), 0xFFFFFFFD, 0, &info);
+  menu_bar_height = info.rcBar.bottom - info.rcBar.top;
+
   if (pixelwise)
     {
       pixelwidth = FRAME_TEXT_TO_PIXEL_WIDTH (f, width);
@@ -6135,17 +6148,11 @@ x_set_window_size (struct frame *f, bool change_gravity,
         height of the frame then the wrapped menu bar lines are not
         accounted for (Bug#15174 and Bug#18720).  Here we add these
         extra lines to the frame height.  */
-      MENUBARINFO info;
       int default_menu_bar_height;
-      int menu_bar_height;
 
       /* Why is (apparently) SM_CYMENUSIZE needed here instead of
         SM_CYMENU ??  */
       default_menu_bar_height = GetSystemMetrics (SM_CYMENUSIZE);
-      info.cbSize = sizeof (info);
-      info.rcBar.top = info.rcBar.bottom = 0;
-      GetMenuBarInfo (FRAME_W32_WINDOW (f), 0xFFFFFFFD, 0, &info);
-      menu_bar_height = info.rcBar.bottom - info.rcBar.top;
 
       if ((default_menu_bar_height > 0)
          && (menu_bar_height > default_menu_bar_height)
@@ -6160,8 +6167,7 @@ x_set_window_size (struct frame *f, bool change_gravity,
   rect.right = pixelwidth;
   rect.bottom = pixelheight;
 
-  AdjustWindowRect (&rect, f->output_data.w32->dwStyle,
-                   FRAME_EXTERNAL_MENU_BAR (f));
+  AdjustWindowRect (&rect, f->output_data.w32->dwStyle, menu_bar_height > 0);
 
   if (!(f->after_make_frame)
       && !(f->want_fullscreen & FULLSCREEN_WAIT)
@@ -6925,6 +6931,15 @@ x_delete_display (struct w32_display_info *dpyinfo)
 
 /* Set up use of W32.  */
 
+void
+w32_init_main_thread (void)
+{
+  dwMainThreadId = GetCurrentThreadId ();
+  DuplicateHandle (GetCurrentProcess (), GetCurrentThread (),
+                  GetCurrentProcess (), &hMainThread, 0, TRUE,
+                  DUPLICATE_SAME_ACCESS);
+}
+
 DWORD WINAPI w32_msg_worker (void * arg);
 
 static void
@@ -6985,10 +7000,6 @@ w32_initialize (void)
      terminates */
   init_crit ();
 
-  dwMainThreadId = GetCurrentThreadId ();
-  DuplicateHandle (GetCurrentProcess (), GetCurrentThread (),
-                  GetCurrentProcess (), &hMainThread, 0, TRUE, 
DUPLICATE_SAME_ACCESS);
-
   /* Wait for thread to start */
   {
     MSG msg;
diff --git a/src/w32term.h b/src/w32term.h
index 467da10..3377b53 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -855,6 +855,8 @@ extern void globals_of_w32menu (void);
 extern void globals_of_w32fns (void);
 extern void globals_of_w32notify (void);
 
+extern void w32_init_main_thread (void);
+
 #ifdef CYGWIN
 extern int w32_message_fd;
 #endif /* CYGWIN */
diff --git a/src/window.c b/src/window.c
index 0ac76d4..9f6b489 100644
--- a/src/window.c
+++ b/src/window.c
@@ -4064,37 +4064,6 @@ resize_frame_windows (struct frame *f, int size, bool 
horflag, bool pixelwise)
            {
              window_resize_apply (r, horflag);
              window_pixel_to_total (r->frame, horflag ? Qt : Qnil);
-#if false /* Let's try without safe sizes and/or killing other windows.  */
-           }
-         else
-           {
-             /* Finally, try with "safe" minimum sizes.  */
-             resize_root_window (root, delta, horflag ? Qt : Qnil, Qsafe,
-                                 pixelwise ? Qt : Qnil);
-             if (window_resize_check (r, horflag)
-                 && new_pixel_size == XINT (r->new_pixel))
-               {
-                 window_resize_apply (r, horflag);
-                 window_pixel_to_total (r->frame, horflag ? Qt : Qnil);
-               }
-             else
-               {
-                 /* We lost.  Delete all windows but the frame's
-                    selected one.  */
-                 root = f->selected_window;
-                 Fdelete_other_windows_internal (root, Qnil);
-                 if (horflag)
-                   {
-                     XWINDOW (root)->total_cols = new_size;
-                     XWINDOW (root)->pixel_width = new_pixel_size;
-                   }
-                 else
-                   {
-                     XWINDOW (root)->total_lines = new_size;
-                     XWINDOW (root)->pixel_height = new_pixel_size;
-                   }
-               }
-#endif /* false */
            }
        }
     }
@@ -4117,6 +4086,7 @@ resize_frame_windows (struct frame *f, int size, bool 
horflag, bool pixelwise)
        }
     }
 
+  FRAME_WINDOW_SIZES_CHANGED (f) = true;
   fset_redisplay (f);
 }
 
@@ -4555,6 +4525,7 @@ grow_mini_window (struct window *w, int delta, bool 
pixelwise)
          /* Enforce full redisplay of the frame.  */
          /* FIXME: Shouldn't window--resize-root-window-vertically do it?  */
          fset_redisplay (f);
+         FRAME_WINDOW_SIZES_CHANGED (f) = true;
          adjust_frame_glyphs (f);
          unblock_input ();
        }
@@ -4594,6 +4565,7 @@ shrink_mini_window (struct window *w, bool pixelwise)
          /* Enforce full redisplay of the frame.  */
          /* FIXME: Shouldn't window--resize-root-window-vertically do it?  */
          fset_redisplay (f);
+         FRAME_WINDOW_SIZES_CHANGED (f) = true;
          adjust_frame_glyphs (f);
          unblock_input ();
        }
diff --git a/src/xdisp.c b/src/xdisp.c
index 30dfac5..37dc604 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -10733,6 +10733,9 @@ display_echo_area (struct window *w)
      reset the echo_area_buffer in question to nil at the end because
      with_echo_area_buffer will sets it to an empty buffer.  */
   bool i = display_last_displayed_message_p;
+  /* According to the C99, C11 and C++11 standards, the integral value
+     of a "bool" is always 0 or 1, so this array access is safe here,
+     if oddly typed. */
   no_message_p = NILP (echo_area_buffer[i]);
 
   window_height_changed_p
@@ -13536,6 +13539,32 @@ redisplay_internal (void)
     {
       echo_area_display (false);
 
+      /* If echo_area_display resizes the mini-window, the redisplay and
+        window_sizes_changed flags of the selected frame are set, but
+        it's too late for the hooks in window-size-change-functions,
+        which have been examined already in prepare_menu_bars.  So in
+        that case we call the hooks here only for the selected frame.  */
+      if (sf->redisplay && FRAME_WINDOW_SIZES_CHANGED (sf))
+       {
+         Lisp_Object functions;
+         ptrdiff_t count1 = SPECPDL_INDEX ();
+
+         record_unwind_save_match_data ();
+
+         /* Clear flag first in case we get an error below.  */
+         FRAME_WINDOW_SIZES_CHANGED (sf) = false;
+         functions = Vwindow_size_change_functions;
+
+         while (CONSP (functions))
+           {
+             if (!EQ (XCAR (functions), Qt))
+               call1 (XCAR (functions), selected_frame);
+             functions = XCDR (functions);
+           }
+
+         unbind_to (count1, Qnil);
+       }
+
       if (message_cleared_p)
        update_miniwindow_p = true;
 
@@ -13552,6 +13581,27 @@ redisplay_internal (void)
           && (current_buffer->clip_changed || window_outdated (w))
           && resize_mini_window (w, false))
     {
+      if (sf->redisplay)
+       {
+         Lisp_Object functions;
+         ptrdiff_t count1 = SPECPDL_INDEX ();
+
+         record_unwind_save_match_data ();
+
+         /* Clear flag first in case we get an error below.  */
+         FRAME_WINDOW_SIZES_CHANGED (sf) = false;
+         functions = Vwindow_size_change_functions;
+
+         while (CONSP (functions))
+           {
+             if (!EQ (XCAR (functions), Qt))
+               call1 (XCAR (functions), selected_frame);
+             functions = XCDR (functions);
+           }
+
+         unbind_to (count1, Qnil);
+       }
+
       /* Resized active mini-window to fit the size of what it is
          showing if its contents might have changed.  */
       must_finish = true;
@@ -16251,9 +16301,33 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
       if (w->cursor.vpos < 0)
        {
          /* If point does not appear, try to move point so it does
-            appear. The desired matrix has been built above, so we
-            can use it here.  */
-         new_vpos = window_box_height (w) / 2;
+            appear.  The desired matrix has been built above, so we
+            can use it here.  First see if point is in invisible
+            text, and if so, move it to the first visible buffer
+            position past that.  */
+         struct glyph_row *r = NULL;
+         Lisp_Object invprop =
+           get_char_property_and_overlay (make_number (PT), Qinvisible,
+                                          Qnil, NULL);
+
+         if (TEXT_PROP_MEANS_INVISIBLE (invprop) != 0)
+           {
+             ptrdiff_t alt_pt;
+             Lisp_Object invprop_end =
+               Fnext_single_char_property_change (make_number (PT), Qinvisible,
+                                                  Qnil, Qnil);
+
+             if (NATNUMP (invprop_end))
+               alt_pt = XFASTINT (invprop_end);
+             else
+               alt_pt = ZV;
+             r = row_containing_pos (w, alt_pt, w->desired_matrix->rows,
+                                     NULL, 0);
+           }
+         if (r)
+           new_vpos = MATRIX_ROW_BOTTOM_Y (r);
+         else  /* Give up and just move to the middle of the window.  */
+           new_vpos = window_box_height (w) / 2;
        }
 
       if (!cursor_row_fully_visible_p (w, false, false))
@@ -16670,6 +16744,7 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
   startp = run_window_scroll_functions (window, it.current.pos);
 
   /* Redisplay the window.  */
+  bool use_desired_matrix = false;
   if (!current_matrix_up_to_date_p
       || windows_or_buffers_changed
       || f->cursor_type_changed
@@ -16680,7 +16755,7 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
       || MINI_WINDOW_P (w)
       || !(used_current_matrix_p
           = try_window_reusing_current_matrix (w)))
-    try_window (window, startp, 0);
+    use_desired_matrix = (try_window (window, startp, 0) == 1);
 
   /* If new fonts have been loaded (due to fontsets), give up.  We
      have to start a new redisplay since we need to re-adjust glyph
@@ -16720,9 +16795,15 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
      and similar ones.  */
   if (w->cursor.vpos < 0)
     {
+      /* Prefer the desired matrix to the current matrix, if possible,
+        in the fallback calculations below.  This is because using
+        the current matrix might completely goof, e.g. if its first
+        row is after point.  */
+      struct glyph_matrix *matrix =
+       use_desired_matrix ? w->desired_matrix : w->current_matrix;
       /* First, try locating the proper glyph row for PT.  */
       struct glyph_row *row =
-       row_containing_pos (w, PT, w->current_matrix->rows, NULL, 0);
+       row_containing_pos (w, PT, matrix->rows, NULL, 0);
 
       /* Sometimes point is at the beginning of invisible text that is
         before the 1st character displayed in the row.  In that case,
@@ -16747,8 +16828,7 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
                alt_pos = XFASTINT (invis_end);
              else
                alt_pos = ZV;
-             row = row_containing_pos (w, alt_pos, w->current_matrix->rows,
-                                       NULL, 0);
+             row = row_containing_pos (w, alt_pos, matrix->rows, NULL, 0);
            }
        }
       /* Finally, fall back on the first row of the window after the
@@ -16756,11 +16836,11 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
         displaying the cursor at all.  */
       if (!row)
        {
-         row = w->current_matrix->rows;
+         row = matrix->rows;
          if (row->mode_line_p)
            ++row;
        }
-      set_cursor_from_row (w, row, w->current_matrix, 0, 0, 0, 0);
+      set_cursor_from_row (w, row, matrix, 0, 0, 0, 0);
     }
 
   if (!cursor_row_fully_visible_p (w, false, false))
@@ -17745,7 +17825,7 @@ row_containing_pos (struct window *w, ptrdiff_t charpos,
   while (true)
     {
       /* Give up if we have gone too far.  */
-      if (end && row >= end)
+      if ((end && row >= end) || !row->enabled_p)
        return NULL;
       /* This formerly returned if they were equal.
         I think that both quantities are of a "last plus one" type;
@@ -31132,11 +31212,13 @@ the buffer when it becomes large.  */);
   Vmessage_log_max = make_number (1000);
 
   DEFVAR_LISP ("window-size-change-functions", Vwindow_size_change_functions,
-    doc: /* Functions called before redisplay, if window sizes have changed.
+    doc: /* Functions called during redisplay, if window sizes have changed.
 The value should be a list of functions that take one argument.
-Just before redisplay, for each frame, if any of its windows have changed
-size since the last redisplay, or have been split or deleted,
-all the functions in the list are called, with the frame as argument.  */);
+During the first part of redisplay, for each frame, if any of its windows
+have changed size since the last redisplay, or have been split or deleted,
+all the functions in the list are called, with the frame as argument.
+If redisplay decides to resize the minibuffer window, it calls these
+functions on behalf of that as well.  */);
   Vwindow_size_change_functions = Qnil;
 
   DEFVAR_LISP ("window-scroll-functions", Vwindow_scroll_functions,
diff --git a/test/automated/abbrev-tests.el b/test/automated/abbrev-tests.el
index d08e026..6163e0b 100644
--- a/test/automated/abbrev-tests.el
+++ b/test/automated/abbrev-tests.el
@@ -20,10 +20,23 @@
 ;; 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:
+
+;; `kill-all-abbrevs-test' will remove all user *and* system abbrevs
+;; if called noninteractively with the init file loaded.
+
 ;;; Code:
 
 (require 'ert)
 (require 'abbrev)
+(require 'seq)
+
+;; set up test abbrev table and abbrev entry
+(defun setup-test-abbrev-table ()
+  (defvar ert-test-abbrevs nil)
+  (define-abbrev-table 'ert-test-abbrevs '(("a-e-t" "abbrev-ert-test")))
+  (abbrev-table-put ert-test-abbrevs :ert-test "ert-test-value")
+  ert-test-abbrevs)
 
 (ert-deftest copy-abbrev-table-test ()
   (defvar foo-abbrev-table nil)         ; Avoid compiler warning
@@ -38,6 +51,48 @@
     (should (abbrev-table-p new-foo-abbrev-table)))
   (should-not (string-equal (buffer-name) "*Backtrace*")))
 
+(ert-deftest kill-all-abbrevs-test ()
+  "Test undefining all defined abbrevs"
+  (unless noninteractive
+    (ert-skip "Cannot test kill-all-abbrevs in interactive mode"))
+
+  (let ((num-tables 0))
+    ;; ensure at least one abbrev exists
+    (should (abbrev-table-p (setup-test-abbrev-table)))
+    (setf num-tables (length abbrev-table-name-list))
+    (kill-all-abbrevs)
+
+    ;; no tables should have been removed/added
+    (should (= num-tables (length abbrev-table-name-list)))
+    ;; number of empty tables should be the same as number of tables
+    (should (= num-tables (length (seq-filter
+                                   (lambda (table)
+                                       (abbrev-table-empty-p (symbol-value 
table)))
+                                   abbrev-table-name-list))))))
+
+(ert-deftest abbrev-table-name-test ()
+  "Test returning name of abbrev-table"
+  (let ((ert-test-abbrevs (setup-test-abbrev-table))
+        (no-such-table nil))
+    (should (equal 'ert-test-abbrevs (abbrev-table-name ert-test-abbrevs)))
+    (should (equal nil (abbrev-table-name no-such-table)))))
+
+(ert-deftest clear-abbrev-table-test ()
+  "Test clearing single abbrev table"
+  (let ((ert-test-abbrevs (setup-test-abbrev-table)))
+    (should (equal "a-e-t" (symbol-name
+                            (abbrev-symbol "a-e-t" ert-test-abbrevs))))
+    (should (equal "abbrev-ert-test" (symbol-value
+                                      (abbrev-symbol "a-e-t" 
ert-test-abbrevs))))
+
+    (clear-abbrev-table ert-test-abbrevs)
+
+    (should (equal "nil" (symbol-name
+                          (abbrev-symbol "a-e-t" ert-test-abbrevs))))
+    (should (equal nil (symbol-value
+                        (abbrev-symbol "a-e-t" ert-test-abbrevs))))
+    (should (equal t (abbrev-table-empty-p ert-test-abbrevs)))))
+
 (provide 'abbrev-tests)
 
 ;;; abbrev-tests.el ends here
diff --git a/test/automated/auto-revert-tests.el 
b/test/automated/auto-revert-tests.el
index 2745f10..e03ed8c 100644
--- a/test/automated/auto-revert-tests.el
+++ b/test/automated/auto-revert-tests.el
@@ -39,7 +39,9 @@
           (null (string-match
                  (format-message "Reverting buffer `%s'." (buffer-name buffer))
                  (buffer-string)))
-        (read-event nil nil 0.1)))))
+       (if (with-current-buffer buffer auto-revert-use-notify)
+           (read-event nil nil 0.1)
+         (sleep-for 0.1))))))
 
 (ert-deftest auto-revert-test00-auto-revert-mode ()
   "Check autorevert for a file."
diff --git a/test/automated/character-fold-tests.el 
b/test/automated/character-fold-tests.el
index 2b1a15c..c056862 100644
--- a/test/automated/character-fold-tests.el
+++ b/test/automated/character-fold-tests.el
@@ -37,13 +37,13 @@
 
 
 (ert-deftest character-fold--test-consistency ()
-  (dotimes (n 100)
+  (dotimes (n 30)
     (let ((w (character-fold--random-word n)))
       ;; A folded string should always match the original string.
       (character-fold--test-search-with-contents w w))))
 
 (ert-deftest character-fold--test-lax-whitespace ()
-  (dotimes (n 100)
+  (dotimes (n 40)
     (let ((w1 (character-fold--random-word n))
           (w2 (character-fold--random-word n))
           (search-spaces-regexp "\\s-+"))
@@ -52,7 +52,73 @@
        (concat w1 " " w2))
       (character-fold--test-search-with-contents
        (concat w1 "\s\n\s\t\f\t\n\r\t" w2)
-       (concat w1 (make-string 90 ?\s) w2)))))
+       (concat w1 (make-string 10 ?\s) w2)))))
+
+(defun character-fold--test-match-exactly (string &rest strings-to-match)
+  (let ((re (concat "\\`" (character-fold-to-regexp string) "\\'")))
+    (dolist (it strings-to-match)
+      (should (string-match re it)))
+    ;; Case folding
+    (let ((case-fold-search t))
+      (dolist (it strings-to-match)
+        (should (string-match (upcase re) (downcase it)))
+        (should (string-match (downcase re) (upcase it)))))))
+
+(ert-deftest character-fold--test-some-defaults ()
+  (dolist (it '(("ffl" . "ffl") ("ffi" . "ffi")
+                ("fi" . "fi") ("ff" . "ff")
+                ("ä" . "ä")))
+    (character-fold--test-search-with-contents (cdr it) (car it))
+    (let ((multi (char-table-extra-slot character-fold-table 0))
+          (character-fold-table (make-char-table 'character-fold-table)))
+      (set-char-table-extra-slot character-fold-table 0 multi)
+      (character-fold--test-match-exactly (car it) (cdr it)))))
+
+(ert-deftest character-fold--test-fold-to-regexp ()
+  (let ((character-fold-table (make-char-table 'character-fold-table))
+        (multi  (make-char-table 'character-fold-table)))
+    (set-char-table-extra-slot character-fold-table 0 multi)
+    (aset character-fold-table ?a "xx")
+    (aset character-fold-table ?1 "44")
+    (aset character-fold-table ?\s "-!-")
+    (character-fold--test-match-exactly "a1a1" "xx44xx44")
+    (character-fold--test-match-exactly "a1  a 1" "xx44-!--!-xx-!-44")
+    (aset multi ?a '(("1" . "99")
+                     ("2" . "88")
+                     ("12" . "77")))
+    (character-fold--test-match-exactly "a" "xx")
+    (character-fold--test-match-exactly "a1" "xx44" "99")
+    (character-fold--test-match-exactly "a12" "77" "xx442" "992")
+    (character-fold--test-match-exactly "a2" "88")
+    (aset multi ?1 '(("2" . "yy")))
+    (character-fold--test-match-exactly "a1" "xx44" "99")
+    (character-fold--test-match-exactly "a12" "77" "xx442" "992")
+    ;; Support for this case is disabled.  See function definition or:
+    ;; https://lists.gnu.org/archive/html/emacs-devel/2015-11/msg02562.html
+    ;; (character-fold--test-match-exactly "a12" "xxyy")
+    ))
+
+(ert-deftest character-fold--speed-test ()
+  (dolist (string (append '("tty-set-up-initial-frame-face"
+                            
"tty-set-up-initial-frame-face-frame-faceframe-faceframe-faceframe-face")
+                          (mapcar #'character-fold--random-word '(10 50 100
+                                                                     50 100))))
+    (message "Testing %s" string)
+    ;; Make sure we didn't just fallback on the trivial search.
+    (should-not (string= (regexp-quote string)
+                         (character-fold-to-regexp string)))
+    (with-temp-buffer
+      (save-excursion (insert string))
+      (let ((time (time-to-seconds (current-time))))
+        ;; Our initial implementation of case-folding in char-folding
+        ;; created a lot of redundant paths in the regexp. Because of
+        ;; that, if a really long string "almost" matches, the regexp
+        ;; engine took a long time to realize that it doesn't match.
+        (should-not (character-fold-search-forward (concat string "c") nil 
'noerror))
+        ;; Ensure it took less than a second.
+        (should (< (- (time-to-seconds (current-time))
+                      time)
+                   1))))))
 
 (provide 'character-fold-tests)
 ;;; character-fold-tests.el ends here
diff --git a/test/automated/data/package/macro-problem-package-1.0/macro-aux.el 
b/test/automated/data/package/macro-problem-package-1.0/macro-aux.el
new file mode 100644
index 0000000..f432322
--- /dev/null
+++ b/test/automated/data/package/macro-problem-package-1.0/macro-aux.el
@@ -0,0 +1,12 @@
+;;; macro-aux.el --- laksd                                  -*- 
lexical-binding: t; -*-
+
+;; Author: Artur Malabarba <address@hidden>
+
+;;; Code:
+
+(defun macro-aux-1 ( &rest forms)
+  "Description"
+  `(progn ,@forms))
+
+(provide 'macro-aux)
+;;; macro-aux.el ends here
diff --git 
a/test/automated/data/package/macro-problem-package-1.0/macro-problem.el 
b/test/automated/data/package/macro-problem-package-1.0/macro-problem.el
new file mode 100644
index 0000000..0533b1b
--- /dev/null
+++ b/test/automated/data/package/macro-problem-package-1.0/macro-problem.el
@@ -0,0 +1,21 @@
+;;; macro-problem.el --- laksd                                  -*- 
lexical-binding: t; -*-
+
+;; Author: Artur Malabarba <address@hidden>
+;; Keywords: tools
+;; Version: 1.0
+
+;;; Code:
+
+(require 'macro-aux)
+
+(defmacro macro-problem-1 ( &rest forms)
+  "Description"
+  `(progn ,@forms))
+
+(defun macro-problem-func ()
+  ""
+  (macro-problem-1 'a 'b)
+  (macro-aux-1 'a 'b))
+
+(provide 'macro-problem)
+;;; macro-problem.el ends here
diff --git a/test/automated/data/package/macro-problem-package-2.0/macro-aux.el 
b/test/automated/data/package/macro-problem-package-2.0/macro-aux.el
new file mode 100644
index 0000000..6a55a40
--- /dev/null
+++ b/test/automated/data/package/macro-problem-package-2.0/macro-aux.el
@@ -0,0 +1,16 @@
+;;; macro-aux.el --- laksd                                  -*- 
lexical-binding: t; -*-
+
+;; Author: Artur Malabarba <address@hidden>
+
+;;; Code:
+
+(defmacro macro-aux-1 ( &rest forms)
+  "Description"
+  `(progn ,@forms))
+
+(defmacro macro-aux-3 ( &rest _)
+  "Description"
+  90)
+
+(provide 'macro-aux)
+;;; macro-aux.el ends here
diff --git 
a/test/automated/data/package/macro-problem-package-2.0/macro-problem.el 
b/test/automated/data/package/macro-problem-package-2.0/macro-problem.el
new file mode 100644
index 0000000..cad4ed9
--- /dev/null
+++ b/test/automated/data/package/macro-problem-package-2.0/macro-problem.el
@@ -0,0 +1,30 @@
+;;; macro-problem.el --- laksd                                  -*- 
lexical-binding: t; -*-
+
+;; Author: Artur Malabarba <address@hidden>
+;; Keywords: tools
+;; Version: 2.0
+
+;;; Code:
+
+(require 'macro-aux)
+
+(defmacro macro-problem-1 ( &rest forms)
+  "Description"
+  `(progn ,(cadr (car forms))))
+
+
+(defun macro-problem-func ()
+  ""
+  (list (macro-problem-1 '1 'b)
+        (macro-aux-1 'a 'b)))
+
+(defmacro macro-problem-3 (&rest _)
+  "Description"
+  10)
+
+(defun macro-problem-10-and-90 ()
+  ""
+  (list (macro-problem-3 haha) (macro-aux-3 hehe)))
+
+(provide 'macro-problem)
+;;; macro-problem.el ends here
diff --git a/test/automated/icalendar-tests.el 
b/test/automated/icalendar-tests.el
index 7e05d49..829cbf2 100644
--- a/test/automated/icalendar-tests.el
+++ b/test/automated/icalendar-tests.el
@@ -2231,7 +2231,63 @@ END:VCALENDAR"
  Class: PUBLIC
  UID: 
040000008200E00074C5B7101A82E0080000000020FFAED0CFEFCC01000000000000000010000000575268034ECDB649A15349B1BF240F15
 "     nil)
+
+  ;; 2015-12-05, mixed line endings and empty lines, see Bug#22092.
+  (icalendar-tests--test-import
+   "BEGIN:VCALENDAR\r
+PRODID:-//www.norwegian.no//iCalendar MIMEDIR//EN\r
+VERSION:2.0\r
+METHOD:REQUEST\r
+BEGIN:VEVENT\r
+UID:RFCALITEM1\r
+SEQUENCE:1512040950\r
+DTSTAMP:20141204T095043Z\r
+ORGANIZER:address@hidden
+DTSTART:20141208T173000Z\r
+
+DTEND:20141208T215500Z\r
+
+LOCATION:Stavanger-Sola\r
+
+DESCRIPTION:Fly med Norwegian, reservasjon. Fra Stavanger til Troms&#248; 8. 
des 2014 18:30, DY545Fly med Norwegian, reservasjon . Fra Stavanger til 
Troms&#248; 8. des 2014 21:00, DY390\r
+
+X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 
3.2//EN\"><html><head><META NAME=\"Generator\" CONTENT=\"MS Exchange Server 
version 08.00.0681.000\"><title></title></head><body><b><font face=\"Calibri\" 
size=\"3\">Reisereferanse</p></body></html>
+SUMMARY:Norwegian til Tromsoe-Langnes -\r
+
+CATEGORIES:Appointment\r
+
+
+PRIORITY:5\r
+
+CLASS:PUBLIC\r
+
+TRANSP:OPAQUE\r
+END:VEVENT\r
+END:VCALENDAR
+"
+"&2014/12/8 18:30-22:55 Norwegian til Tromsoe-Langnes -
+ Desc: Fly med Norwegian, reservasjon. Fra Stavanger til Troms&#248; 8. des 
2014 18:30, DY545Fly med Norwegian, reservasjon . Fra Stavanger til Troms&#248; 
8. des 2014 21:00, DY390
+ Location: Stavanger-Sola
+ Organizer: address@hidden
+ Class: PUBLIC
+ UID: RFCALITEM1
+"
+"&8/12/2014 18:30-22:55 Norwegian til Tromsoe-Langnes -
+ Desc: Fly med Norwegian, reservasjon. Fra Stavanger til Troms&#248; 8. des 
2014 18:30, DY545Fly med Norwegian, reservasjon . Fra Stavanger til Troms&#248; 
8. des 2014 21:00, DY390
+ Location: Stavanger-Sola
+ Organizer: address@hidden
+ Class: PUBLIC
+ UID: RFCALITEM1
+"
+"&12/8/2014 18:30-22:55 Norwegian til Tromsoe-Langnes -
+ Desc: Fly med Norwegian, reservasjon. Fra Stavanger til Troms&#248; 8. des 
2014 18:30, DY545Fly med Norwegian, reservasjon . Fra Stavanger til Troms&#248; 
8. des 2014 21:00, DY390
+ Location: Stavanger-Sola
+ Organizer: address@hidden
+ Class: PUBLIC
+ UID: RFCALITEM1
+"
 )
+  )
 
 (provide 'icalendar-tests)
 ;;; icalendar-tests.el ends here
diff --git a/test/automated/json-tests.el b/test/automated/json-tests.el
index 8f0cd6f..bb043dc 100644
--- a/test/automated/json-tests.el
+++ b/test/automated/json-tests.el
@@ -22,6 +22,38 @@
 (require 'ert)
 (require 'json)
 
+(defmacro json-tests--with-temp-buffer (content &rest body)
+  "Create a temporary buffer with CONTENT and evaluate BODY there.
+Point is moved to beginning of the buffer."
+  (declare (indent 1))
+  `(with-temp-buffer
+     (insert ,content)
+     (goto-char (point-min))
+     ,@body))
+
+;;; Utilities
+
+(ert-deftest test-json-join ()
+  (should (equal (json-join '() ", ")  ""))
+  (should (equal (json-join '("a" "b" "c") ", ")  "a, b, c")))
+
+(ert-deftest test-json-alist-p ()
+  (should (json-alist-p '()))
+  (should (json-alist-p '((a 1) (b 2) (c 3))))
+  (should (json-alist-p '((:a 1) (:b 2) (:c 3))))
+  (should (json-alist-p '(("a" 1) ("b" 2) ("c" 3))))
+  (should-not (json-alist-p '(:a :b :c)))
+  (should-not (json-alist-p '(:a 1 :b 2 :c 3)))
+  (should-not (json-alist-p '((:a 1) (:b 2) 3))))
+
+(ert-deftest test-json-plist-p ()
+  (should (json-plist-p '()))
+  (should (json-plist-p '(:a 1 :b 2 :c 3)))
+  (should-not (json-plist-p '(a 1 b 2 c 3)))
+  (should-not (json-plist-p '("a" 1 "b" 2 "c" 3)))
+  (should-not (json-plist-p '(:a :b :c)))
+  (should-not (json-plist-p '((:a 1) (:b 2) (:c 3)))))
+
 (ert-deftest test-json-plist-reverse ()
   (should (equal (json--plist-reverse '()) '()))
   (should (equal (json--plist-reverse '(:a 1)) '(:a 1)))
@@ -34,49 +66,32 @@
   (should (equal (json--plist-to-alist '(:a 1 :b 2 :c 3))
                  '((:a . 1) (:b . 2) (:c . 3)))))
 
-(ert-deftest test-json-encode-plist ()
-  (let ((plist '(:a 1 :b 2)))
-    (should (equal (json-encode plist) "{\"a\":1,\"b\":2}"))))
-
-(ert-deftest json-encode-simple-alist ()
-  (should (equal (json-encode '((a . 1)
-                                (b . 2)))
-                 "{\"a\":1,\"b\":2}")))
-
-(ert-deftest test-json-encode-hash-table ()
-  (let ((hash-table (make-hash-table))
-        (json-encoding-object-sort-predicate 'string<))
-    (puthash :a 1 hash-table)
-    (puthash :b 2 hash-table)
-    (puthash :c 3 hash-table)
-    (should (equal (json-encode hash-table)
-                   "{\"a\":1,\"b\":2,\"c\":3}"))))
-
-(ert-deftest test-json-encode-alist-with-sort-predicate ()
-  (let ((alist '((:c . 3) (:a . 1) (:b . 2)))
-        (json-encoding-object-sort-predicate 'string<))
-    (should (equal (json-encode alist) "{\"a\":1,\"b\":2,\"c\":3}"))))
+(ert-deftest test-json-advance ()
+  (json-tests--with-temp-buffer "{ \"a\": 1 }"
+    (json-advance 0)
+    (should (= (point) (point-min)))
+    (json-advance 3)
+    (should (= (point) (+ (point-min) 3)))))
 
-(ert-deftest test-json-encode-plist-with-sort-predicate ()
-  (let ((plist '(:c 3 :a 1 :b 2))
-        (json-encoding-object-sort-predicate 'string<))
-    (should (equal (json-encode plist) "{\"a\":1,\"b\":2,\"c\":3}"))))
+(ert-deftest test-json-peek ()
+  (json-tests--with-temp-buffer ""
+    (should (eq (json-peek) :json-eof)))
+  (json-tests--with-temp-buffer "{ \"a\": 1 }"
+    (should (equal (json-peek) ?{))))
 
-(ert-deftest json-read-simple-alist ()
-  (let ((json-object-type 'alist))
-    (should (equal (json-read-from-string "{\"a\": 1, \"b\": 2}")
-                   '((a . 1)
-                     (b . 2))))))
+(ert-deftest test-json-pop ()
+  (json-tests--with-temp-buffer ""
+    (should-error (json-pop) :type 'json-end-of-file))
+  (json-tests--with-temp-buffer "{ \"a\": 1 }"
+    (should (equal (json-pop) ?{))
+    (should (= (point) (+ (point-min) 1)))))
 
-(ert-deftest json-encode-string-with-special-chars ()
-  (should (equal (json-encode-string "a\n\fb")
-                 "\"a\\n\\fb\""))
-  (should (equal (json-encode-string "\nasdфыв\u001f\u007ffgh\t")
-                 "\"\\nasdфыв\\u001f\u007ffgh\\t\"")))
+(ert-deftest test-json-skip-whitespace ()
+  (json-tests--with-temp-buffer "\t\r\n\f\b { \"a\": 1 }"
+    (json-skip-whitespace)
+    (should (equal (char-after (point)) ?{))))
 
-(ert-deftest json-read-string-with-special-chars ()
-  (should (equal (json-read-from-string 
"\"\\nasd\\u0444\\u044b\\u0432fgh\\t\"")
-                 "\nasdфывfgh\t")))
+;;; Paths
 
 (ert-deftest test-json-path-to-position-with-objects ()
   (let* ((json-string "{\"foo\": {\"bar\": {\"baz\": \"value\"}}}")
@@ -97,5 +112,209 @@
          (matched-path (json-path-to-position 5 json-string)))
     (should (null matched-path))))
 
+;;; Keywords
+
+(ert-deftest test-json-read-keyword ()
+  (json-tests--with-temp-buffer "true"
+    (should (json-read-keyword "true")))
+  (json-tests--with-temp-buffer "true"
+    (should-error
+     (json-read-keyword "false") :type 'json-unknown-keyword))
+  (json-tests--with-temp-buffer "foo"
+    (should-error
+     (json-read-keyword "foo") :type 'json-unknown-keyword)))
+
+(ert-deftest test-json-encode-keyword ()
+  (should (equal (json-encode-keyword t) "true"))
+  (should (equal (json-encode-keyword json-false) "false"))
+  (should (equal (json-encode-keyword json-null) "null")))
+
+;;; Numbers
+
+(ert-deftest test-json-read-number ()
+  (json-tests--with-temp-buffer "3"
+    (should (= (json-read-number) 3)))
+  (json-tests--with-temp-buffer "-5"
+    (should (= (json-read-number) -5)))
+  (json-tests--with-temp-buffer "123.456"
+    (should (= (json-read-number) 123.456)))
+  (json-tests--with-temp-buffer "1e3"
+    (should (= (json-read-number) 1e3)))
+  (json-tests--with-temp-buffer "2e+3"
+    (should (= (json-read-number) 2e3)))
+  (json-tests--with-temp-buffer "3E3"
+    (should (= (json-read-number) 3e3)))
+  (json-tests--with-temp-buffer "1e-7"
+    (should (= (json-read-number) 1e-7)))
+  (json-tests--with-temp-buffer "abc"
+    (should-error (json-read-number) :type 'json-number-format)))
+
+(ert-deftest test-json-encode-number ()
+  (should (equal (json-encode-number 3) "3"))
+  (should (equal (json-encode-number -5) "-5"))
+  (should (equal (json-encode-number 123.456) "123.456")))
+
+;; Strings
+
+(ert-deftest test-json-read-escaped-char ()
+  (json-tests--with-temp-buffer "\\\""
+    (should (equal (json-read-escaped-char) ?\"))))
+
+(ert-deftest test-json-read-string ()
+  (json-tests--with-temp-buffer "\"foo \\\"bar\\\"\""
+    (should (equal (json-read-string) "foo \"bar\"")))
+  (json-tests--with-temp-buffer "\"abcαβγ\""
+    (should (equal (json-read-string) "abcαβγ")))
+  (json-tests--with-temp-buffer "\"\\nasd\\u0444\\u044b\\u0432fgh\\t\""
+    (should (equal (json-read-string) "\nasdфывfgh\t")))
+  (json-tests--with-temp-buffer "foo"
+    (should-error (json-read-string) :type 'json-string-format)))
+
+(ert-deftest test-json-encode-string ()
+  (should (equal (json-encode-string "foo") "\"foo\""))
+  (should (equal (json-encode-string "a\n\fb") "\"a\\n\\fb\""))
+  (should (equal (json-encode-string "\nasdфыв\u001f\u007ffgh\t")
+                 "\"\\nasdфыв\\u001f\u007ffgh\\t\"")))
+
+(ert-deftest test-json-encode-key ()
+  (should (equal (json-encode-key "foo") "\"foo\""))
+  (should (equal (json-encode-key 'foo) "\"foo\""))
+  (should (equal (json-encode-key :foo) "\"foo\""))
+  (should-error (json-encode-key 5) :type 'json-key-format)
+  (should-error (json-encode-key ["foo"]) :type 'json-key-format)
+  (should-error (json-encode-key '("foo")) :type 'json-key-format))
+
+;;; Objects
+
+(ert-deftest test-json-new-object ()
+  (let ((json-object-type 'alist))
+    (should (equal (json-new-object) '())))
+  (let ((json-object-type 'plist))
+    (should (equal (json-new-object) '())))
+  (let* ((json-object-type 'hash-table)
+         (json-object (json-new-object)))
+    (should (hash-table-p json-object))
+    (should (= (hash-table-count json-object) 0))))
+
+(ert-deftest test-json-add-to-object ()
+  (let* ((json-object-type 'alist)
+         (json-key-type nil)
+         (obj (json-new-object)))
+    (setq obj (json-add-to-object obj "a" 1))
+    (setq obj (json-add-to-object obj "b" 2))
+    (should (equal (assq 'a obj) '(a . 1)))
+    (should (equal (assq 'b obj) '(b . 2))))
+  (let* ((json-object-type 'plist)
+         (json-key-type nil)
+         (obj (json-new-object)))
+    (setq obj (json-add-to-object obj "a" 1))
+    (setq obj (json-add-to-object obj "b" 2))
+    (should (= (plist-get obj :a) 1))
+    (should (= (plist-get obj :b) 2)))
+  (let* ((json-object-type 'hash-table)
+         (json-key-type nil)
+         (obj (json-new-object)))
+    (setq obj (json-add-to-object obj "a" 1))
+    (setq obj (json-add-to-object obj "b" 2))
+    (should (= (gethash "a" obj) 1))
+    (should (= (gethash "b" obj) 2))))
+
+(ert-deftest test-json-read-object ()
+  (json-tests--with-temp-buffer "{ \"a\": 1, \"b\": 2 }"
+    (let ((json-object-type 'alist))
+      (should (equal (json-read-object) '((a . 1) (b . 2))))))
+  (json-tests--with-temp-buffer "{ \"a\": 1, \"b\": 2 }"
+    (let ((json-object-type 'plist))
+      (should (equal (json-read-object) '(:a 1 :b 2)))))
+  (json-tests--with-temp-buffer "{ \"a\": 1, \"b\": 2 }"
+    (let* ((json-object-type 'hash-table)
+           (hash-table (json-read-object)))
+      (should (= (gethash "a" hash-table) 1))
+      (should (= (gethash "b" hash-table) 2))))
+  (json-tests--with-temp-buffer "{ \"a\": 1 \"b\": 2 }"
+    (should-error (json-read-object) :type 'json-object-format)))
+
+(ert-deftest test-json-encode-hash-table ()
+  (let ((hash-table (make-hash-table))
+        (json-encoding-object-sort-predicate 'string<)
+        (json-encoding-pretty-print nil))
+    (puthash :a 1 hash-table)
+    (puthash :b 2 hash-table)
+    (puthash :c 3 hash-table)
+    (should (equal (json-encode hash-table)
+                   "{\"a\":1,\"b\":2,\"c\":3}"))))
+
+(ert-deftest json-encode-simple-alist ()
+  (let ((json-encoding-pretty-print nil))
+    (should (equal (json-encode '((a . 1) (b . 2)))
+                   "{\"a\":1,\"b\":2}"))))
+
+(ert-deftest test-json-encode-plist ()
+  (let ((plist '(:a 1 :b 2))
+        (json-encoding-pretty-print nil))
+    (should (equal (json-encode plist) "{\"a\":1,\"b\":2}"))))
+
+(ert-deftest test-json-encode-plist-with-sort-predicate ()
+  (let ((plist '(:c 3 :a 1 :b 2))
+        (json-encoding-object-sort-predicate 'string<)
+        (json-encoding-pretty-print nil))
+    (should (equal (json-encode plist) "{\"a\":1,\"b\":2,\"c\":3}"))))
+
+(ert-deftest test-json-encode-alist-with-sort-predicate ()
+  (let ((alist '((:c . 3) (:a . 1) (:b . 2)))
+        (json-encoding-object-sort-predicate 'string<)
+        (json-encoding-pretty-print nil))
+    (should (equal (json-encode alist) "{\"a\":1,\"b\":2,\"c\":3}"))))
+
+(ert-deftest test-json-encode-list ()
+  (let ((json-encoding-pretty-print nil))
+    (should (equal (json-encode-list '(:a 1 :b 2))
+                   "{\"a\":1,\"b\":2}"))
+    (should (equal (json-encode-list '((:a . 1) (:b . 2)))
+                   "{\"a\":1,\"b\":2}"))
+    (should (equal (json-encode-list '(1 2 3 4)) "[1,2,3,4]"))))
+
+;;; Arrays
+
+(ert-deftest test-json-read-array ()
+  (let ((json-array-type 'vector))
+    (json-tests--with-temp-buffer "[1, 2, \"a\", \"b\"]"
+      (should (equal (json-read-array) [1 2 "a" "b"]))))
+  (let ((json-array-type 'list))
+    (json-tests--with-temp-buffer "[1, 2, \"a\", \"b\"]"
+      (should (equal (json-read-array) '(1 2 "a" "b")))))
+  (json-tests--with-temp-buffer "[1 2]"
+    (should-error (json-read-array) :type 'json-error)))
+
+(ert-deftest test-json-encode-array ()
+  (let ((json-encoding-pretty-print nil))
+    (should (equal (json-encode-array [1 2 "a" "b"])
+                   "[1,2,\"a\",\"b\"]"))))
+
+;;; Reader
+
+(ert-deftest test-json-read ()
+  (json-tests--with-temp-buffer "{ \"a\": 1 }"
+    ;; We don't care exactly what the return value is (that is tested
+    ;; in `test-json-read-object'), but it should parse without error.
+    (should (json-read)))
+  (json-tests--with-temp-buffer ""
+    (should-error (json-read) :type 'json-end-of-file))
+  (json-tests--with-temp-buffer "xxx"
+    (should-error (json-read) :type 'json-readtable-error)))
+
+(ert-deftest test-json-read-from-string ()
+  (let ((json-string "{ \"a\": 1 }"))
+    (json-tests--with-temp-buffer json-string
+      (should (equal (json-read-from-string json-string)
+                     (json-read))))))
+
+;;; JSON encoder
+
+(ert-deftest test-json-encode ()
+  (should (equal (json-encode "foo") "\"foo\""))
+  (with-temp-buffer
+    (should-error (json-encode (current-buffer)) :type 'json-error)))
+
 (provide 'json-tests)
 ;;; json-tests.el ends here
diff --git a/test/automated/message-mode-tests.el 
b/test/automated/message-mode-tests.el
index 49a72b0..790b5c1 100644
--- a/test/automated/message-mode-tests.el
+++ b/test/automated/message-mode-tests.el
@@ -40,9 +40,9 @@
                   "and here's a closer ")
           (let ((last-command-event ?\)))
             (ert-simulate-command '(self-insert-command 1)))
-          ;; Syntax propertization doesn't kick in batch mode
-          (when noninteractive
-            (syntax-propertize (point-max)))
+          ;; Auto syntax propertization doesn't kick in until
+          ;; parse-sexp-lookup-properties is set.
+          (setq-local parse-sexp-lookup-properties t)
           (backward-sexp)
           (should (string= "here's an opener "
                            (buffer-substring-no-properties
diff --git a/test/automated/package-test.el b/test/automated/package-test.el
index de41c3b..8401d18 100644
--- a/test/automated/package-test.el
+++ b/test/automated/package-test.el
@@ -242,6 +242,20 @@ Must called from within a `tar-mode' buffer."
     (should (package-installed-p 'simple-single))
     (should (package-installed-p 'simple-depend))))
 
+(ert-deftest package-test-macro-compilation ()
+  "Install a package which includes a dependency."
+  (with-package-test (:basedir "data/package")
+    (package-install-file (expand-file-name "macro-problem-package-1.0/"))
+    (require 'macro-problem)
+    ;; `macro-problem-func' uses a macro from `macro-aux'.
+    (should (equal (macro-problem-func) '(progn a b)))
+    (package-install-file (expand-file-name "macro-problem-package-2.0/"))
+    ;; After upgrading, `macro-problem-func' depends on a new version
+    ;; of the macro from `macro-aux'.
+    (should (equal (macro-problem-func) '(1 b)))
+    ;; `macro-problem-10-and-90' depends on an entirely new macro from 
`macro-aux'.
+    (should (equal (macro-problem-10-and-90) '(10 90)))))
+
 (ert-deftest package-test-install-two-dependencies ()
   "Install a package which includes a dependency."
   (with-package-test ()
diff --git a/test/automated/simple-test.el b/test/automated/simple-test.el
index 7e0dbb7..771241a 100644
--- a/test/automated/simple-test.el
+++ b/test/automated/simple-test.el
@@ -138,21 +138,12 @@
                      (open-line 1)))
                  '("- - " . "\n(a b c d)"))))
 
-;; For a while, from 24 Oct - 19 Nov 2015, `open-line' in the Emacs
+;; For a while, from 24 Oct - 21 Nov 2015, `open-line' in the Emacs
 ;; development tree became sensitive to `electric-indent-mode', which
 ;; it had not been before.  This sensitivity was reverted for the
 ;; Emacs 25 release, so it could be discussed further (see thread
 ;; "Questioning the new behavior of `open-line'." on the Emacs Devel
-;; mailing list).  The only test case here that started failing after
-;; the reversion is the third one, the one that currently expects
-;; `("(a b" . "\n   \n   c d)")'.  If `open-line' were again sensitive
-;; to electric indent, then the three spaces between the two newlines
-;; would go away, leaving `("(a b" . "\n\n   c d)")'.
-;;
-;; If electric indent sensitivity were re-enabled, we might also want
-;; to make the test cases below a bit stricter, or add some more test
-;; cases that are specific to `electric-indent-mode', since right now
-;; all but one of the cases pass with or without electric indent.
+;; mailing list, and bug #21884).
 (ert-deftest open-line-indent ()
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
@@ -160,29 +151,34 @@
                  '("(a b" . "\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
-                   (open-line 1 'interactive))
-                 '("(a b" . "\n   c d)")))
+                   (open-line 1))
+                 '("(a b" . "\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
                    (let ((current-prefix-arg nil))
                      (call-interactively #'open-line)
                      (call-interactively #'open-line)))
-                 '("(a b" . "\n   \n   c d)")))
+                 '("(a b" . "\n\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
-                   (open-line 5 'interactive))
-                 '("(a b" . "\n\n\n\n\n   c d)")))
+                   (open-line 5))
+                 '("(a b" . "\n\n\n\n\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
                    (let ((current-prefix-arg 5))
                      (call-interactively #'open-line)))
-                 '("(a b" . "\n\n\n\n\n   c d)")))
+                 '("(a b" . "\n\n\n\n\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (forward-char 1)
                    (electric-indent-local-mode 1)
-                   (open-line 1 'interactive))
-                 '("(a b" . "\n   c d)"))))
+                   (open-line 1))
+                 '("(a b " . "\nc d)"))))
 
+;; From 24 Oct - 21 Nov 2015, `open-line' took a second argument
+;; INTERACTIVE and ran `post-self-insert-hook' if the argument was
+;; true.  This test tested that.  Currently, however, `open-line'
+;; does not run run `post-self-insert-hook' at all, so for now
+;; this test just makes sure that it doesn't.
 (ert-deftest open-line-hook ()
   (let* ((x 0)
          (inc (lambda () (setq x (1+ x)))))
@@ -192,18 +188,18 @@
     (should (= x 0))
     (simple-test--dummy-buffer
       (add-hook 'post-self-insert-hook inc nil 'local)
-      (open-line 1 'interactive))
-    (should (= x 1))
+      (open-line 1))
+    (should (= x 0))
 
     (unwind-protect
         (progn
           (add-hook 'post-self-insert-hook inc)
           (simple-test--dummy-buffer
             (open-line 1))
-          (should (= x 1))
+          (should (= x 0))
           (simple-test--dummy-buffer
-            (open-line 10 'interactive))
-          (should (= x 2)))
+            (open-line 10))
+          (should (= x 0)))
       (remove-hook 'post-self-insert-hook inc))))
 
 
@@ -230,9 +226,9 @@
 
 
 ;;; auto-boundary tests
-(ert-deftest undo-auto--boundary-timer ()
+(ert-deftest undo-auto-boundary-timer ()
   (should
-   undo-auto--current-boundary-timer))
+   undo-auto-current-boundary-timer))
 
 (ert-deftest undo-auto--boundaries-added ()
   ;; The change in the buffer should have caused addition
@@ -267,5 +263,53 @@
                  '("(s1) (s4)" . " (s2) (s3) (s5)"))))
 
 
+;; Test for a regression introduced by undo-auto--boundaries changes.
+;; https://lists.gnu.org/archive/html/emacs-devel/2015-11/msg01652.html
+(defun undo-test-kill-c-a-then-undo ()
+  (with-temp-buffer
+    (switch-to-buffer (current-buffer))
+    (setq buffer-undo-list nil)
+    (insert "a\nb\n\c\n")
+    (goto-char (point-max))
+    ;; We use a keyboard macro because it adds undo events in the same
+    ;; way as if a user were involved.
+    (kmacro-call-macro nil nil nil
+                       [left
+                        ;; Delete "c"
+                        backspace
+                        left left left
+                        ;; Delete "a"
+                        backspace
+                        ;; C-/ or undo
+                        67108911
+                        ])
+    (point)))
+
+(defun undo-test-point-after-forward-kill ()
+  (with-temp-buffer
+    (switch-to-buffer (current-buffer))
+    (setq buffer-undo-list nil)
+    (insert "kill word forward")
+    ;; Move to word "word".
+    (goto-char 6)
+    (kmacro-call-macro nil nil nil
+                       [
+                        ;; kill-word
+                        C-delete
+                        ;; undo
+                        67108911
+                        ])
+    (point)))
+
+(ert-deftest undo-point-in-wrong-place ()
+  (should
+   ;; returns 5 with the bug
+   (= 2
+      (undo-test-kill-c-a-then-undo)))
+  (should
+   (= 6
+      (undo-test-point-after-forward-kill))))
+
+
 (provide 'simple-test)
 ;;; simple-test.el ends here
diff --git a/test/automated/subr-tests.el b/test/automated/subr-tests.el
index ee8db59..3fcb7d3 100644
--- a/test/automated/subr-tests.el
+++ b/test/automated/subr-tests.el
@@ -103,5 +103,117 @@
   (should (equal (macroexpand-all '(when a b c d))
                  '(if a (progn b c d)))))
 
+(ert-deftest subr-test-version-parsing ()
+  (should (equal (version-to-list ".5") '(0 5)))
+  (should (equal (version-to-list "0.9 alpha1") '(0 9 -3 1)))
+  (should (equal (version-to-list "0.9 snapshot") '(0  9 -4)))
+  (should (equal (version-to-list "0.9-alpha1") '(0 9 -3 1)))
+  (should (equal (version-to-list "0.9-snapshot") '(0  9 -4)))
+  (should (equal (version-to-list "0.9.snapshot") '(0  9 -4)))
+  (should (equal (version-to-list "0.9_snapshot") '(0  9 -4)))
+  (should (equal (version-to-list "0.9alpha1") '(0 9 -3 1)))
+  (should (equal (version-to-list "0.9snapshot") '(0  9 -4)))
+  (should (equal (version-to-list "1.0 git") '(1  0 -4)))
+  (should (equal (version-to-list "1.0 pre2") '(1 0 -1 2)))
+  (should (equal (version-to-list "1.0-git") '(1  0 -4)))
+  (should (equal (version-to-list "1.0-pre2") '(1 0 -1 2)))
+  (should (equal (version-to-list "1.0.1-a") '(1 0 1 1)))
+  (should (equal (version-to-list "1.0.1-f") '(1 0 1 6)))
+  (should (equal (version-to-list "1.0.1.a") '(1 0 1 1)))
+  (should (equal (version-to-list "1.0.1.f") '(1 0 1 6)))
+  (should (equal (version-to-list "1.0.1_a") '(1 0 1 1)))
+  (should (equal (version-to-list "1.0.1_f") '(1 0 1 6)))
+  (should (equal (version-to-list "1.0.1a") '(1 0 1 1)))
+  (should (equal (version-to-list "1.0.1f") '(1 0 1 6)))
+  (should (equal (version-to-list "1.0.7.5") '(1 0 7 5)))
+  (should (equal (version-to-list "1.0.git") '(1  0 -4)))
+  (should (equal (version-to-list "1.0.pre2") '(1 0 -1 2)))
+  (should (equal (version-to-list "1.0_git") '(1  0 -4)))
+  (should (equal (version-to-list "1.0_pre2") '(1 0 -1 2)))
+  (should (equal (version-to-list "1.0git") '(1  0 -4)))
+  (should (equal (version-to-list "1.0pre2") '(1 0 -1 2)))
+  (should (equal (version-to-list "22.8 beta3") '(22 8 -2 3)))
+  (should (equal (version-to-list "22.8-beta3") '(22 8 -2 3)))
+  (should (equal (version-to-list "22.8.beta3") '(22 8 -2 3)))
+  (should (equal (version-to-list "22.8_beta3") '(22 8 -2 3)))
+  (should (equal (version-to-list "22.8beta3") '(22 8 -2 3)))
+  (should (equal (version-to-list "6.9.30 Beta") '(6 9 30 -2)))
+  (should (equal (version-to-list "6.9.30-Beta") '(6 9 30 -2)))
+  (should (equal (version-to-list "6.9.30.Beta") '(6 9 30 -2)))
+  (should (equal (version-to-list "6.9.30Beta") '(6 9 30 -2)))
+  (should (equal (version-to-list "6.9.30_Beta") '(6 9 30 -2)))
+
+  (should (equal
+            (error-message-string (should-error (version-to-list 
"OTP-18.1.5")))
+            "Invalid version syntax: `OTP-18.1.5' (must start with a number)"))
+  (should (equal
+            (error-message-string (should-error (version-to-list "")))
+            "Invalid version syntax: `' (must start with a number)"))
+  (should (equal
+            (error-message-string (should-error (version-to-list "1.0..7.5")))
+            "Invalid version syntax: `1.0..7.5'"))
+  (should (equal
+            (error-message-string (should-error (version-to-list 
"1.0prepre2")))
+            "Invalid version syntax: `1.0prepre2'"))
+  (should (equal
+            (error-message-string (should-error (version-to-list "22.8X3")))
+            "Invalid version syntax: `22.8X3'"))
+  (should (equal
+            (error-message-string (should-error (version-to-list 
"beta22.8alpha3")))
+            "Invalid version syntax: `beta22.8alpha3' (must start with a 
number)"))
+  (should (equal
+            (error-message-string (should-error (version-to-list "honk")))
+            "Invalid version syntax: `honk' (must start with a number)"))
+  (should (equal
+            (error-message-string (should-error (version-to-list 9)))
+            "Version must be a string"))
+
+  (let ((version-separator "_"))
+    (should (equal (version-to-list "_5") '(0 5)))
+    (should (equal (version-to-list "0_9 alpha1") '(0 9 -3 1)))
+    (should (equal (version-to-list "0_9 snapshot") '(0  9 -4)))
+    (should (equal (version-to-list "0_9-alpha1") '(0 9 -3 1)))
+    (should (equal (version-to-list "0_9-snapshot") '(0  9 -4)))
+    (should (equal (version-to-list "0_9.alpha1") '(0 9 -3 1)))
+    (should (equal (version-to-list "0_9.snapshot") '(0  9 -4)))
+    (should (equal (version-to-list "0_9alpha1") '(0 9 -3 1)))
+    (should (equal (version-to-list "0_9snapshot") '(0  9 -4)))
+    (should (equal (version-to-list "1_0 git") '(1  0 -4)))
+    (should (equal (version-to-list "1_0 pre2") '(1 0 -1 2)))
+    (should (equal (version-to-list "1_0-git") '(1  0 -4)))
+    (should (equal (version-to-list "1_0.pre2") '(1 0 -1 2)))
+    (should (equal (version-to-list "1_0_1-a") '(1 0 1 1)))
+    (should (equal (version-to-list "1_0_1-f") '(1 0 1 6)))
+    (should (equal (version-to-list "1_0_1.a") '(1 0 1 1)))
+    (should (equal (version-to-list "1_0_1.f") '(1 0 1 6)))
+    (should (equal (version-to-list "1_0_1_a") '(1 0 1 1)))
+    (should (equal (version-to-list "1_0_1_f") '(1 0 1 6)))
+    (should (equal (version-to-list "1_0_1a") '(1 0 1 1)))
+    (should (equal (version-to-list "1_0_1f") '(1 0 1 6)))
+    (should (equal (version-to-list "1_0_7_5") '(1 0 7 5)))
+    (should (equal (version-to-list "1_0_git") '(1  0 -4)))
+    (should (equal (version-to-list "1_0pre2") '(1 0 -1 2)))
+    (should (equal (version-to-list "22_8 beta3") '(22 8 -2 3)))
+    (should (equal (version-to-list "22_8-beta3") '(22 8 -2 3)))
+    (should (equal (version-to-list "22_8.beta3") '(22 8 -2 3)))
+    (should (equal (version-to-list "22_8beta3") '(22 8 -2 3)))
+    (should (equal (version-to-list "6_9_30 Beta") '(6 9 30 -2)))
+    (should (equal (version-to-list "6_9_30-Beta") '(6 9 30 -2)))
+    (should (equal (version-to-list "6_9_30.Beta") '(6 9 30 -2)))
+    (should (equal (version-to-list "6_9_30Beta") '(6 9 30 -2)))
+
+    (should (equal
+              (error-message-string (should-error (version-to-list 
"1_0__7_5")))
+              "Invalid version syntax: `1_0__7_5'"))
+    (should (equal
+              (error-message-string (should-error (version-to-list 
"1_0prepre2")))
+              "Invalid version syntax: `1_0prepre2'"))
+    (should (equal
+              (error-message-string (should-error (version-to-list "22.8X3")))
+              "Invalid version syntax: `22.8X3'"))
+    (should (equal
+              (error-message-string (should-error (version-to-list 
"beta22_8alpha3")))
+              "Invalid version syntax: `beta22_8alpha3' (must start with a 
number)"))))
+
 (provide 'subr-tests)
 ;;; subr-tests.el ends here
diff --git a/test/automated/tramp-tests.el b/test/automated/tramp-tests.el
index c5cab7d..8a1743c 100644
--- a/test/automated/tramp-tests.el
+++ b/test/automated/tramp-tests.el
@@ -1987,7 +1987,10 @@ Use the `perl' command."
   (let ((tramp-connection-properties
         (append
          `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
-            "stat" nil))
+            "stat" nil)
+           ;; See `tramp-sh-handle-file-truename'.
+           (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
+            "readlink" nil))
          tramp-connection-properties)))
     (tramp--test-special-characters)))
 
@@ -2005,7 +2008,10 @@ Use the `ls' command."
          `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
             "perl" nil)
            (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
-            "stat" nil))
+            "stat" nil)
+           ;; See `tramp-sh-handle-file-truename'.
+           (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
+            "readlink" nil))
          tramp-connection-properties)))
     (tramp--test-special-characters)))
 
@@ -2059,7 +2065,10 @@ Use the `perl' command."
   (let ((tramp-connection-properties
         (append
          `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
-            "stat" nil))
+            "stat" nil)
+           ;; See `tramp-sh-handle-file-truename'.
+           (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
+            "readlink" nil))
          tramp-connection-properties)))
     (tramp--test-utf8)))
 
@@ -2077,7 +2086,10 @@ Use the `ls' command."
          `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
             "perl" nil)
            (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
-            "stat" nil))
+            "stat" nil)
+           ;; See `tramp-sh-handle-file-truename'.
+           (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory))
+            "readlink" nil))
          tramp-connection-properties)))
     (tramp--test-utf8)))
 
diff --git a/test/etags/CTAGS.good b/test/etags/CTAGS.good
index 9291d34..245f670 100644
--- a/test/etags/CTAGS.good
+++ b/test/etags/CTAGS.good
@@ -46,6 +46,7 @@ $user_comment_lc      php-src/lce_functions.php       115
 ($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) ( -- )$/
++      ruby-src/test.rb        /^        def +(y)$/
 +      tex-src/texinfo.tex     /^\\def+{{\\tt \\char 43}}$/
 /.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
 /.notdef       ps-src/rfc1245.ps       /^\/.notdef \/.notdef \/.notdef 
\/.notdef \/.notdef \/.not/
@@ -177,6 +178,9 @@ $user_comment_lc    php-src/lce_functions.php       115
 /yen   ps-src/rfc1245.ps       /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef 
\/.notdef /
 :a-forth-dictionary-entry      forth-src/test-forth.fth        /^create 
:a-forth-dictionary-entry$/
 <      tex-src/texinfo.tex     /^\\def<{{\\tt \\less}}$/
+<<     ruby-src/test.rb        /^        def <<(y)$/
+<=     ruby-src/test.rb        /^        def <=(y)$/
+<=>    ruby-src/test.rb        /^        def <=>(y)$/
 =      tex-src/texinfo.tex     /^\\global\\let\\section = \\numberedsec$/
 =      tex-src/texinfo.tex     /^\\global\\let\\subsection = \\numberedsubsec$/
 =      tex-src/texinfo.tex     /^\\global\\let\\subsubsection = 
\\numberedsubsubsec$/
@@ -191,6 +195,8 @@ $user_comment_lc    php-src/lce_functions.php       115
 =      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/
+==     ruby-src/test.rb        /^        def ==(y)$/
+===    ruby-src/test.rb        /^        def ===(y)$/
 =\indexdummyfont       tex-src/texinfo.tex     /^\\let\\cite=\\indexdummyfont$/
 =\relax        tex-src/texinfo.tex     /^\\let\\chapter=\\relax$/
 =\relax        tex-src/texinfo.tex     /^\\let\\section=\\relax$/
@@ -220,6 +226,7 @@ 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      ruby-src/test1.ruby     /^class A$/
 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) \\$/
@@ -306,6 +313,7 @@ BUFFERP     c-src/emacs/src/lisp.h  /^BUFFERP (Lisp_Object 
a)$/
 BUFFERSIZE     objc-src/Subprocess.h   43
 BUFFER_OBJFWDP c-src/emacs/src/lisp.h  /^BUFFER_OBJFWDP (union Lisp_Fwd *a)$/
 BYTE_MARK_STACK        c-src/emacs/src/lisp.h  3181
+Bar    lua-src/test.lua        /^function Square.something:Bar ()$/
 Bar    perl-src/kai-test.pl    /^package Bar;$/
 Bar::f4        perl-src/kai-test.pl    /^sub Bar::f4 {$/
 Bar::f5        perl-src/kai-test.pl    /^sub f5 {$/
@@ -425,9 +433,12 @@ C_entries  c-src/etags.c   /^C_entries (int c_ext, FILE 
*inf)$/
 C_stab_entry   c-src/etags.c   2271
 C_symtype      c-src/etags.c   /^C_symtype (char *str, int len, int c_ext)$/
 ChangeFileType pas-src/common.pas      /^function ChangeFileType; (*(FileName 
: NameString;/
+Circle.getPos  lua-src/test.lua        /^function Circle.getPos ()$/
 Cjava_entries  c-src/etags.c   /^Cjava_entries (FILE *inf)$/
 Cjava_help     c-src/etags.c   551
 Cjava_suffixes c-src/etags.c   549
+ClassExample   ruby-src/test.rb        /^    class ClassExample$/
+ClassExample.singleton_class_method    ruby-src/test.rb        /^        def 
ClassExample.singleton_class_method$/
 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
@@ -458,6 +469,7 @@ Create_LL_Task/p    ada-src/2ataspri.adb    /^   procedure 
Create_LL_Task$/
 Create_LL_Task/p       ada-src/2ataspri.ads    /^   procedure Create_LL_Task$/
 Cstar_entries  c-src/etags.c   /^Cstar_entries (FILE *inf)$/
 Cstar_suffixes c-src/etags.c   562
+Cube.data.getFoo       lua-src/test.lua        /^function Cube.data.getFoo ()$/
 D      cp-src/fail.C   41
 D      cp-src/fail.C   /^              D() : ::A::T2::T(97), x(1066) {}$/
 DAEMON_RUNNING c-src/emacs/src/lisp.h  4258
@@ -926,6 +938,8 @@ Mconway.cpp cp-src/conway.cpp       /^void main(void)$/
 Metags c-src/etags.c   /^main (int argc, char **argv)$/
 Mfail  cp-src/fail.C   /^main()$/
 Mkai-test.pl   perl-src/kai-test.pl    /^package main;$/
+ModuleExample  ruby-src/test.rb        /^module ModuleExample$/
+ModuleExample.singleton_module_method  ruby-src/test.rb        /^    def 
ModuleExample.singleton_module_method$/
 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)$/
@@ -1193,6 +1207,7 @@ Range     cp-src/Range.h  /^  Range (double b, double l, 
double i)$/
 ReadVacation   cp-src/functions.cpp    /^void ReadVacation ( char *filename ) 
{$/
 Read_Lock/p    ada-src/2ataspri.adb    /^   procedure Read_Lock (L : in out 
Lock; Ceiling_V/
 Read_Lock/p    ada-src/2ataspri.ads    /^   procedure Read_Lock (L : in out 
Lock; Ceiling_V/
+Rectangle.getPos       lua-src/test.lua        /^function Rectangle.getPos ()$/
 ReleaseNameString      pas-src/common.pas      /^procedure ReleaseNameString; 
(* (var NSP: NameStri/
 RemoveLayer    lua-src/allegro.lua     /^function RemoveLayer ()$/
 RemoveUnderlineControl pas-src/common.pas      /^function 
RemoveUnderlineControl; (*($/
@@ -1309,6 +1324,7 @@ 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 /
+Square.something:Bar   lua-src/test.lua        /^function Square.something:Bar 
()$/
 StartDay       cp-src/functions.cpp    /^Date StartDay(Date a,int 
days){\/\/Function to calcu/
 StripPath      pas-src/common.pas      /^function StripPath; (*($/
 SubString      pas-src/common.pas      /^function SubString; (*($/
@@ -1647,6 +1663,8 @@ Yacc_entries      c-src/etags.c   /^Yacc_entries (FILE 
*inf)$/
 Yacc_help      c-src/etags.c   693
 Yacc_suffixes  c-src/etags.c   691
 Z      c-src/h.h       100
+[]     ruby-src/test.rb        /^        def [](y)$/
+[]=    ruby-src/test.rb        /^        def []=(y, val)$/
 \      tex-src/texinfo.tex     /^\\def\\ {{\\fontdimen2\\font=\\tclosesave{} 
}}%$/
 \      tex-src/texinfo.tex     /^\\gdef\\sepspaces{\\def {\\ }}}$/
 \'     tex-src/texinfo.tex     /^\\def\\'{{'}}$/
@@ -2353,6 +2371,7 @@ _malloc_thread_enabled_p  c-src/emacs/src/gmalloc.c       
519
 _realloc       c-src/emacs/src/gmalloc.c       /^_realloc (void *ptr, size_t 
size)$/
 _realloc_internal      c-src/emacs/src/gmalloc.c       /^_realloc_internal 
(void *ptr, size_t size)$/
 _realloc_internal_nolock       c-src/emacs/src/gmalloc.c       
/^_realloc_internal_nolock (void *ptr, size_t size)$/
+`      ruby-src/test.rb        /^        def `(command)$/
 a      c.c     152
 a      c.c     180
 a      c.c     /^a()$/
@@ -2360,6 +2379,7 @@ a c.c     /^a ()$/
 a      c-src/h.h       40
 a      c-src/h.h       103
 a      cp-src/c.C      132
+a      ruby-src/test1.ruby     /^ def a()$/
 a-forth-constant!      forth-src/test-forth.fth        /^99 constant 
a-forth-constant!$/
 a-forth-value? forth-src/test-forth.fth        /^55 value a-forth-value?$/
 a-forth-word   forth-src/test-forth.fth        /^: a-forth-word ( a b c -- 
a*b+c )  + * ;$/
@@ -2484,6 +2504,7 @@ b c-src/h.h       41
 b      c-src/h.h       103
 b      c-src/h.h       104
 b      cp-src/c.C      132
+b      ruby-src/test1.ruby     /^ def b()$/
 backslash=0    tex-src/texinfo.tex     /^\\let\\indexbackslash=0  %overridden 
during \\printin/
 bar    c-src/c.c       /^void bar() {while(0) {}}$/
 bar    c.c     143
@@ -2599,6 +2620,10 @@ childDidExit     objc-src/Subprocess.m   /^- 
childDidExit$/
 chunks_free    c-src/emacs/src/gmalloc.c       313
 chunks_used    c-src/emacs/src/gmalloc.c       311
 cjava  c-src/etags.c   2936
+class_method   ruby-src/test.rb        /^        def class_method$/
+class_method_equals=   ruby-src/test.rb        /^        def 
class_method_equals=$/
+class_method_exclamation!      ruby-src/test.rb        /^        def 
class_method_exclamation!$/
+class_method_question? ruby-src/test.rb        /^        def 
class_method_question?$/
 classifyLine   php-src/lce_functions.php       /^      function 
classifyLine($line)$/
 clear  cp-src/conway.hpp       /^    void clear(void) { alive = 0; }$/
 clear-abbrev-table     c-src/abbrev.c  /^DEFUN ("clear-abbrev-table", 
Fclear_abbrev_table, /
@@ -2988,8 +3013,11 @@ generic_object   cp-src/clheir.cpp       
/^generic_object::generic_object(void)$/
 generic_object cp-src/clheir.hpp       13
 getArchs       objc-src/PackInsp.m     /^-(void)getArchs$/
 getDomainNames php-src/lce_functions.php       /^      function 
getDomainNames()$/
+getFoo lua-src/test.lua        /^function Cube.data.getFoo ()$/
 getPOReader    php-src/lce_functions.php       /^      function 
&getPOReader($domain)$/
 getPath        objc-src/PackInsp.m     /^-(const char *)getPath:(char *)buf 
forType:(const /
+getPos lua-src/test.lua        /^function Rectangle.getPos ()$/
+getPos lua-src/test.lua        /^function Circle.getPos ()$/
 getTextDomains php-src/lce_functions.php       /^  function 
getTextDomains($lines)$/
 get_compressor_from_suffix     c-src/etags.c   /^get_compressor_from_suffix 
(char *file, char **ext/
 get_contiguous_space   c-src/emacs/src/gmalloc.c       /^get_contiguous_space 
(ptrdiff_t size, void *positi/
@@ -3397,6 +3425,8 @@ mcCSC     cp-src/c.C      6
 mcheck c-src/emacs/src/gmalloc.c       /^mcheck (void (*func) (enum 
mcheck_status))$/
 mcheck_status  c-src/emacs/src/gmalloc.c       283
 mcheck_used    c-src/emacs/src/gmalloc.c       2012
+me22b  lua-src/test.lua        /^   local function test.me22b (one)$/
+me_22a lua-src/test.lua        /^   function test.me_22a(one, two)$/
 memalign       c-src/emacs/src/gmalloc.c       /^memalign (size_t alignment, 
size_t size)$/
 member prol-src/natded.prolog  /^member(X,[X|_]).$/
 memclear       c-src/emacs/src/lisp.h  /^memclear (void *p, ptrdiff_t nbytes)$/
@@ -3420,6 +3450,7 @@ miti      html-src/softwarelibero.html    /^Sfatiamo 
alcuni miti$/
 modifier_names c-src/emacs/src/keyboard.c      6319
 modifier_symbols       c-src/emacs/src/keyboard.c      6327
 modify_event_symbol    c-src/emacs/src/keyboard.c      /^modify_event_symbol 
(ptrdiff_t symbol_num, int mod/
+module_method  ruby-src/test.rb        /^    def module_method$/
 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
@@ -4180,6 +4211,8 @@ 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.me22b     lua-src/test.lua        /^   local function test.me22b (one)$/
+test.me_22a    lua-src/test.lua        /^   function test.me_22a(one, two)$/
 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
diff --git a/test/etags/ETAGS.good_1 b/test/etags/ETAGS.good_1
index e1e0daf..2ae4ec4 100644
--- a/test/etags/ETAGS.good_1
+++ b/test/etags/ETAGS.good_1
@@ -2084,17 +2084,17 @@ void agent::move(move53,1353
 
 cp-src/clheir.hpp,423
 class generic_object13,520
-    virtual void compute_next_state(21,842
-    virtual void step(22,888
-const int max_num_directions 31,1219
-class location:location33,1289
-    location(43,1642
-class irregular_location:irregular_location47,1686
-    irregular_location(51,1762
-class discrete_location:discrete_location56,1889
-    discrete_location(62,2044
-    void assign_neighbor(66,2184
-class agent:agent75,2508
+    virtual void compute_next_state(21,843
+    virtual void step(22,889
+const int max_num_directions 31,1220
+class location:location33,1290
+    location(43,1643
+class irregular_location:irregular_location47,1687
+    irregular_location(51,1763
+class discrete_location:discrete_location56,1890
+    discrete_location(62,2045
+    void assign_neighbor(66,2185
+class agent:agent75,2509
 
 cp-src/fail.C,294
 struct A 7,263
@@ -2218,28 +2218,28 @@ el-src/emacs/lisp/progmodes/etags.el,5069
 (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
+(defun tags-loop-eval 1771,71313
+(defun tags-loop-continue 1782,71642
+(defun tags-search 1850,73948
+(defun tags-query-replace 1871,74774
+(defun tags-complete-tags-table-file 1896,75998
+(defun list-tags 1906,76377
+(defun tags-apropos 1934,77330
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156
+(defun select-tags-table 1964,78395
+(defvar select-tags-table-mode-map 2019,80522
+(define-derived-mode select-tags-table-mode 2030,80905
+(defun select-tags-table-select 2034,81089
+(defun select-tags-table-quit 2043,81455
+(defun complete-tag 2049,81610
+(defconst etags--xref-limit 2074,82551
+(defvar etags-xref-find-definitions-tag-order 2076,82586
+(defun etags-xref-find 2082,82876
+(defun etags--xref-find-definitions 2096,83405
+(defclass xref-etags-location 2129,85120
+(defun xref-make-etags-location 2135,85343
+(cl-defmethod xref-location-marker 2139,85498
+(cl-defmethod xref-location-line 2146,85742
 
 erl-src/gs_dialog.erl,98
 -define(VERSION2,32
@@ -2336,49 +2336,63 @@ function MoveLayerBottom 223,5079
 function MoveLayerBefore 236,5457
 function MoveLayerAfter 258,6090
 
+lua-src/test.lua,442
+function Rectangle.getPos 2,15
+function Rectangle.getPos getPos2,15
+function Circle.getPos 6,61
+function Circle.getPos getPos6,61
+function Cube.data.getFoo 10,102
+function Cube.data.getFoo getFoo10,102
+function Square.something:Bar 14,148
+function Square.something:Bar Bar14,148
+   function test.me_22a(22,241
+   function test.me_22a(me_22a22,241
+   local function test.me22b 25,297
+   local function test.me22b me22b25,297
+
 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
+NONSRCS=35,1577
+CPPFLAGS=49,2190
+LDFLAGS=50,2259
+FASTCFLAGS=55,2530
+FILTER=58,2641
+       @-$($72,3063
+       @-$($73,3112
+       @-$($74,3176
+       @-$($75,3222
+       @-$($76,3290
+       @-$($77,3382
+       @$(81,3465
+       @$(82,3513
+       @$(83,3576
+       @$(84,3621
+       @$(85,3688
+       @$(86,3779
+${CHECKOBJS}: CFLAGS=88,3805
+       @env CHECKEROPTS=92,3921
+       @$(98,4093
+       @$(106,4249
+       @$(110,4373
+       @$(114,4499
+       @for i in $(SRCS); do echo $$i;140,5320
+       $(160,6058
+       $(163,6119
+       $(166,6182
+       $(169,6233
+       $(172,6322
+       sdiff --suppress-common-lines --width=width186,6619
+       sdiff --suppress-common-lines --width=width189,6708
+       sdiff --suppress-common-lines --width=width192,6796
+       sdiff --suppress-common-lines --width=width195,6885
+       TEXTAGS=204,7127
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
+       ${RUN} etags12 --members -o $@ --regex=regex207,7244
+       ${RUN} ./ctags -o $@ --regex=regex213,7393
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
+       TEXTAGS=219,7588
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
+       ${RUN} ./extags -e --regex-c=c222,7715
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -2963,6 +2977,31 @@ class Configure(760,24879
     def save(797,26022
     def nosave(807,26310
 
+ruby-src/test.rb,594
+module ModuleExample1,0
+    class ClassExample2,21
+        def class_method3,44
+        def ClassExample.singleton_class_method6,116
+        def class_method_exclamation!9,221
+        def class_method_question?12,319
+        def class_method_equals=class_method_equals=15,411
+        def `(18,499
+        def +(21,589
+        def [](24,637
+        def []=([]=27,687
+        def <<(30,749
+        def ==(==33,799
+        def <=(<=36,869
+        def <=>(<=>39,940
+        def ===(===42,987
+    def module_method46,1048
+    def ModuleExample.singleton_module_method49,1110
+
+ruby-src/test1.ruby,37
+class A1,0
+ def a(2,8
+ def b(5,38
+
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
 \section{blah}blah8,139
diff --git a/test/etags/ETAGS.good_2 b/test/etags/ETAGS.good_2
index 8b07422..3ec5b21 100644
--- a/test/etags/ETAGS.good_2
+++ b/test/etags/ETAGS.good_2
@@ -2642,24 +2642,24 @@ extern void step_everybody(11,485
 class generic_object13,520
     generic_object(17,582
     ~generic_object(19,724
-    virtual void compute_next_state(21,842
-    virtual void step(22,888
-const int max_num_directions 31,1219
-class location:location33,1289
-    location(43,1642
-    ~location(44,1661
-class irregular_location:irregular_location47,1686
-    irregular_location(51,1762
-    ~irregular_location(53,1854
-class discrete_location:discrete_location56,1889
-    void clear_neighbors(60,2004
-    discrete_location(62,2044
-    ~discrete_location(65,2154
-    void assign_neighbor(66,2184
-class agent:agent75,2508
-    agent(79,2578
-    ~agent(80,2591
-    void move(81,2605
+    virtual void compute_next_state(21,843
+    virtual void step(22,889
+const int max_num_directions 31,1220
+class location:location33,1290
+    location(43,1643
+    ~location(44,1662
+class irregular_location:irregular_location47,1687
+    irregular_location(51,1763
+    ~irregular_location(53,1855
+class discrete_location:discrete_location56,1890
+    void clear_neighbors(60,2005
+    discrete_location(62,2045
+    ~discrete_location(65,2155
+    void assign_neighbor(66,2185
+class agent:agent75,2509
+    agent(79,2579
+    ~agent(80,2592
+    void move(81,2606
 
 cp-src/fail.C,315
 struct A 7,263
@@ -2787,28 +2787,28 @@ el-src/emacs/lisp/progmodes/etags.el,5188
 (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
+(defun tags-loop-eval 1771,71313
+(defun tags-loop-continue 1782,71642
+(defun tags-search 1850,73948
+(defun tags-query-replace 1871,74774
+(defun tags-complete-tags-table-file 1896,75998
+(defun list-tags 1906,76377
+(defun tags-apropos 1934,77330
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156
+(defun select-tags-table 1964,78395
+(defvar select-tags-table-mode-map 2019,80522
+(define-derived-mode select-tags-table-mode 2030,80905
+(defun select-tags-table-select 2034,81089
+(defun select-tags-table-quit 2043,81455
+(defun complete-tag 2049,81610
+(defconst etags--xref-limit 2074,82551
+(defvar etags-xref-find-definitions-tag-order 2076,82586
+(defun etags-xref-find 2082,82876
+(defun etags--xref-find-definitions 2096,83405
+(defclass xref-etags-location 2129,85120
+(defun xref-make-etags-location 2135,85343
+(cl-defmethod xref-location-marker 2139,85498
+(cl-defmethod xref-location-line 2146,85742
 
 erl-src/gs_dialog.erl,98
 -define(VERSION2,32
@@ -2905,50 +2905,64 @@ function MoveLayerBottom 223,5079
 function MoveLayerBefore 236,5457
 function MoveLayerAfter 258,6090
 
+lua-src/test.lua,442
+function Rectangle.getPos 2,15
+function Rectangle.getPos getPos2,15
+function Circle.getPos 6,61
+function Circle.getPos getPos6,61
+function Cube.data.getFoo 10,102
+function Cube.data.getFoo getFoo10,102
+function Square.something:Bar 14,148
+function Square.something:Bar Bar14,148
+   function test.me_22a(22,241
+   function test.me_22a(me_22a22,241
+   local function test.me22b 25,297
+   local function test.me22b me22b25,297
+
 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
+NONSRCS=35,1577
+CPPFLAGS=49,2190
+LDFLAGS=50,2259
+FASTCFLAGS=55,2530
+FILTER=58,2641
+       @-$($72,3063
+       @-$($73,3112
+       @-$($74,3176
+       @-$($75,3222
+       @-$($76,3290
+       @-$($77,3382
+       @$(81,3465
+       @$(82,3513
+       @$(83,3576
+       @$(84,3621
+       @$(85,3688
+       @$(86,3779
+${CHECKOBJS}: CFLAGS=88,3805
+       @env CHECKEROPTS=92,3921
+       @$(98,4093
+       @$(106,4249
+       @$(110,4373
+       @$(114,4499
+       @for i in $(140,5320
+       @for i in $(SRCS); do echo $$i;140,5320
+       $(160,6058
+       $(163,6119
+       $(166,6182
+       $(169,6233
+       $(172,6322
+       sdiff --suppress-common-lines --width=width186,6619
+       sdiff --suppress-common-lines --width=width189,6708
+       sdiff --suppress-common-lines --width=width192,6796
+       sdiff --suppress-common-lines --width=width195,6885
+       TEXTAGS=204,7127
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
+       ${RUN} etags12 --members -o $@ --regex=regex207,7244
+       ${RUN} ./ctags -o $@ --regex=regex213,7393
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
+       TEXTAGS=219,7588
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
+       ${RUN} ./extags -e --regex-c=c222,7715
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -3534,6 +3548,31 @@ class Configure(760,24879
     def save(797,26022
     def nosave(807,26310
 
+ruby-src/test.rb,594
+module ModuleExample1,0
+    class ClassExample2,21
+        def class_method3,44
+        def ClassExample.singleton_class_method6,116
+        def class_method_exclamation!9,221
+        def class_method_question?12,319
+        def class_method_equals=class_method_equals=15,411
+        def `(18,499
+        def +(21,589
+        def [](24,637
+        def []=([]=27,687
+        def <<(30,749
+        def ==(==33,799
+        def <=(<=36,869
+        def <=>(<=>39,940
+        def ===(===42,987
+    def module_method46,1048
+    def ModuleExample.singleton_module_method49,1110
+
+ruby-src/test1.ruby,37
+class A1,0
+ def a(2,8
+ def b(5,38
+
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
 \section{blah}blah8,139
diff --git a/test/etags/ETAGS.good_3 b/test/etags/ETAGS.good_3
index 37eaafb..43b84ee 100644
--- a/test/etags/ETAGS.good_3
+++ b/test/etags/ETAGS.good_3
@@ -2391,25 +2391,25 @@ void agent::move(move53,1353
 cp-src/clheir.hpp,682
 class generic_object13,520
     int where_in_registry;15,547
-    virtual void compute_next_state(21,842
-    virtual void step(22,888
-const int max_num_directions 31,1219
-class location:location33,1289
-    location(43,1642
-class irregular_location:irregular_location47,1686
-    double x,49,1734
-    double x, y,49,1734
-    double x, y, z;49,1734
-    irregular_location(51,1762
-class discrete_location:discrete_location56,1889
-    int x,58,1936
-    int x, y,58,1936
-    int x, y, z;58,1936
-    class location *neighbors[neighbors59,1953
-    discrete_location(62,2044
-    void assign_neighbor(66,2184
-class agent:agent75,2508
-    location *where;where77,2549
+    virtual void compute_next_state(21,843
+    virtual void step(22,889
+const int max_num_directions 31,1220
+class location:location33,1290
+    location(43,1643
+class irregular_location:irregular_location47,1687
+    double x,49,1735
+    double x, y,49,1735
+    double x, y, z;49,1735
+    irregular_location(51,1763
+class discrete_location:discrete_location56,1890
+    int x,58,1937
+    int x, y,58,1937
+    int x, y, z;58,1937
+    class location *neighbors[neighbors59,1954
+    discrete_location(62,2045
+    void assign_neighbor(66,2185
+class agent:agent75,2509
+    location *where;where77,2550
 
 cp-src/fail.C,330
 struct A 7,263
@@ -2535,28 +2535,28 @@ el-src/emacs/lisp/progmodes/etags.el,5069
 (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
+(defun tags-loop-eval 1771,71313
+(defun tags-loop-continue 1782,71642
+(defun tags-search 1850,73948
+(defun tags-query-replace 1871,74774
+(defun tags-complete-tags-table-file 1896,75998
+(defun list-tags 1906,76377
+(defun tags-apropos 1934,77330
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156
+(defun select-tags-table 1964,78395
+(defvar select-tags-table-mode-map 2019,80522
+(define-derived-mode select-tags-table-mode 2030,80905
+(defun select-tags-table-select 2034,81089
+(defun select-tags-table-quit 2043,81455
+(defun complete-tag 2049,81610
+(defconst etags--xref-limit 2074,82551
+(defvar etags-xref-find-definitions-tag-order 2076,82586
+(defun etags-xref-find 2082,82876
+(defun etags--xref-find-definitions 2096,83405
+(defclass xref-etags-location 2129,85120
+(defun xref-make-etags-location 2135,85343
+(cl-defmethod xref-location-marker 2139,85498
+(cl-defmethod xref-location-line 2146,85742
 
 erl-src/gs_dialog.erl,98
 -define(VERSION2,32
@@ -2653,49 +2653,63 @@ function MoveLayerBottom 223,5079
 function MoveLayerBefore 236,5457
 function MoveLayerAfter 258,6090
 
+lua-src/test.lua,442
+function Rectangle.getPos 2,15
+function Rectangle.getPos getPos2,15
+function Circle.getPos 6,61
+function Circle.getPos getPos6,61
+function Cube.data.getFoo 10,102
+function Cube.data.getFoo getFoo10,102
+function Square.something:Bar 14,148
+function Square.something:Bar Bar14,148
+   function test.me_22a(22,241
+   function test.me_22a(me_22a22,241
+   local function test.me22b 25,297
+   local function test.me22b me22b25,297
+
 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
+NONSRCS=35,1577
+CPPFLAGS=49,2190
+LDFLAGS=50,2259
+FASTCFLAGS=55,2530
+FILTER=58,2641
+       @-$($72,3063
+       @-$($73,3112
+       @-$($74,3176
+       @-$($75,3222
+       @-$($76,3290
+       @-$($77,3382
+       @$(81,3465
+       @$(82,3513
+       @$(83,3576
+       @$(84,3621
+       @$(85,3688
+       @$(86,3779
+${CHECKOBJS}: CFLAGS=88,3805
+       @env CHECKEROPTS=92,3921
+       @$(98,4093
+       @$(106,4249
+       @$(110,4373
+       @$(114,4499
+       @for i in $(SRCS); do echo $$i;140,5320
+       $(160,6058
+       $(163,6119
+       $(166,6182
+       $(169,6233
+       $(172,6322
+       sdiff --suppress-common-lines --width=width186,6619
+       sdiff --suppress-common-lines --width=width189,6708
+       sdiff --suppress-common-lines --width=width192,6796
+       sdiff --suppress-common-lines --width=width195,6885
+       TEXTAGS=204,7127
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
+       ${RUN} etags12 --members -o $@ --regex=regex207,7244
+       ${RUN} ./ctags -o $@ --regex=regex213,7393
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
+       TEXTAGS=219,7588
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
+       ${RUN} ./extags -e --regex-c=c222,7715
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -3307,6 +3321,31 @@ class Configure(760,24879
     def save(797,26022
     def nosave(807,26310
 
+ruby-src/test.rb,594
+module ModuleExample1,0
+    class ClassExample2,21
+        def class_method3,44
+        def ClassExample.singleton_class_method6,116
+        def class_method_exclamation!9,221
+        def class_method_question?12,319
+        def class_method_equals=class_method_equals=15,411
+        def `(18,499
+        def +(21,589
+        def [](24,637
+        def []=([]=27,687
+        def <<(30,749
+        def ==(==33,799
+        def <=(<=36,869
+        def <=>(<=>39,940
+        def ===(===42,987
+    def module_method46,1048
+    def ModuleExample.singleton_module_method49,1110
+
+ruby-src/test1.ruby,37
+class A1,0
+ def a(2,8
+ def b(5,38
+
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
 \section{blah}blah8,139
diff --git a/test/etags/ETAGS.good_4 b/test/etags/ETAGS.good_4
index 2b631d1..434fe13 100644
--- a/test/etags/ETAGS.good_4
+++ b/test/etags/ETAGS.good_4
@@ -2248,17 +2248,17 @@ void agent::move(move53,1353
 
 cp-src/clheir.hpp,423
 class generic_object13,520
-    virtual void compute_next_state(21,842
-    virtual void step(22,888
-const int max_num_directions 31,1219
-class location:location33,1289
-    location(43,1642
-class irregular_location:irregular_location47,1686
-    irregular_location(51,1762
-class discrete_location:discrete_location56,1889
-    discrete_location(62,2044
-    void assign_neighbor(66,2184
-class agent:agent75,2508
+    virtual void compute_next_state(21,843
+    virtual void step(22,889
+const int max_num_directions 31,1220
+class location:location33,1290
+    location(43,1643
+class irregular_location:irregular_location47,1687
+    irregular_location(51,1763
+class discrete_location:discrete_location56,1890
+    discrete_location(62,2045
+    void assign_neighbor(66,2185
+class agent:agent75,2509
 
 cp-src/fail.C,294
 struct A 7,263
@@ -2382,28 +2382,28 @@ el-src/emacs/lisp/progmodes/etags.el,5069
 (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
+(defun tags-loop-eval 1771,71313
+(defun tags-loop-continue 1782,71642
+(defun tags-search 1850,73948
+(defun tags-query-replace 1871,74774
+(defun tags-complete-tags-table-file 1896,75998
+(defun list-tags 1906,76377
+(defun tags-apropos 1934,77330
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156
+(defun select-tags-table 1964,78395
+(defvar select-tags-table-mode-map 2019,80522
+(define-derived-mode select-tags-table-mode 2030,80905
+(defun select-tags-table-select 2034,81089
+(defun select-tags-table-quit 2043,81455
+(defun complete-tag 2049,81610
+(defconst etags--xref-limit 2074,82551
+(defvar etags-xref-find-definitions-tag-order 2076,82586
+(defun etags-xref-find 2082,82876
+(defun etags--xref-find-definitions 2096,83405
+(defclass xref-etags-location 2129,85120
+(defun xref-make-etags-location 2135,85343
+(cl-defmethod xref-location-marker 2139,85498
+(cl-defmethod xref-location-line 2146,85742
 
 erl-src/gs_dialog.erl,98
 -define(VERSION2,32
@@ -2500,49 +2500,63 @@ function MoveLayerBottom 223,5079
 function MoveLayerBefore 236,5457
 function MoveLayerAfter 258,6090
 
+lua-src/test.lua,442
+function Rectangle.getPos 2,15
+function Rectangle.getPos getPos2,15
+function Circle.getPos 6,61
+function Circle.getPos getPos6,61
+function Cube.data.getFoo 10,102
+function Cube.data.getFoo getFoo10,102
+function Square.something:Bar 14,148
+function Square.something:Bar Bar14,148
+   function test.me_22a(22,241
+   function test.me_22a(me_22a22,241
+   local function test.me22b 25,297
+   local function test.me22b me22b25,297
+
 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
+NONSRCS=35,1577
+CPPFLAGS=49,2190
+LDFLAGS=50,2259
+FASTCFLAGS=55,2530
+FILTER=58,2641
+       @-$($72,3063
+       @-$($73,3112
+       @-$($74,3176
+       @-$($75,3222
+       @-$($76,3290
+       @-$($77,3382
+       @$(81,3465
+       @$(82,3513
+       @$(83,3576
+       @$(84,3621
+       @$(85,3688
+       @$(86,3779
+${CHECKOBJS}: CFLAGS=88,3805
+       @env CHECKEROPTS=92,3921
+       @$(98,4093
+       @$(106,4249
+       @$(110,4373
+       @$(114,4499
+       @for i in $(SRCS); do echo $$i;140,5320
+       $(160,6058
+       $(163,6119
+       $(166,6182
+       $(169,6233
+       $(172,6322
+       sdiff --suppress-common-lines --width=width186,6619
+       sdiff --suppress-common-lines --width=width189,6708
+       sdiff --suppress-common-lines --width=width192,6796
+       sdiff --suppress-common-lines --width=width195,6885
+       TEXTAGS=204,7127
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
+       ${RUN} etags12 --members -o $@ --regex=regex207,7244
+       ${RUN} ./ctags -o $@ --regex=regex213,7393
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
+       TEXTAGS=219,7588
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
+       ${RUN} ./extags -e --regex-c=c222,7715
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -3127,6 +3141,31 @@ class Configure(760,24879
     def save(797,26022
     def nosave(807,26310
 
+ruby-src/test.rb,594
+module ModuleExample1,0
+    class ClassExample2,21
+        def class_method3,44
+        def ClassExample.singleton_class_method6,116
+        def class_method_exclamation!9,221
+        def class_method_question?12,319
+        def class_method_equals=class_method_equals=15,411
+        def `(18,499
+        def +(21,589
+        def [](24,637
+        def []=([]=27,687
+        def <<(30,749
+        def ==(==33,799
+        def <=(<=36,869
+        def <=>(<=>39,940
+        def ===(===42,987
+    def module_method46,1048
+    def ModuleExample.singleton_module_method49,1110
+
+ruby-src/test1.ruby,37
+class A1,0
+ def a(2,8
+ def b(5,38
+
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
 \section{blah}blah8,139
diff --git a/test/etags/ETAGS.good_5 b/test/etags/ETAGS.good_5
index 544a166..425e252 100644
--- a/test/etags/ETAGS.good_5
+++ b/test/etags/ETAGS.good_5
@@ -3113,32 +3113,32 @@ class generic_object13,520
     int where_in_registry;15,547
     generic_object(17,582
     ~generic_object(19,724
-    virtual void compute_next_state(21,842
-    virtual void step(22,888
-const int max_num_directions 31,1219
-class location:location33,1289
-    location(43,1642
-    ~location(44,1661
-class irregular_location:irregular_location47,1686
-    double x,49,1734
-    double x, y,49,1734
-    double x, y, z;49,1734
-    irregular_location(51,1762
-    ~irregular_location(53,1854
-class discrete_location:discrete_location56,1889
-    int x,58,1936
-    int x, y,58,1936
-    int x, y, z;58,1936
-    class location *neighbors[neighbors59,1953
-    void clear_neighbors(60,2004
-    discrete_location(62,2044
-    ~discrete_location(65,2154
-    void assign_neighbor(66,2184
-class agent:agent75,2508
-    location *where;where77,2549
-    agent(79,2578
-    ~agent(80,2591
-    void move(81,2605
+    virtual void compute_next_state(21,843
+    virtual void step(22,889
+const int max_num_directions 31,1220
+class location:location33,1290
+    location(43,1643
+    ~location(44,1662
+class irregular_location:irregular_location47,1687
+    double x,49,1735
+    double x, y,49,1735
+    double x, y, z;49,1735
+    irregular_location(51,1763
+    ~irregular_location(53,1855
+class discrete_location:discrete_location56,1890
+    int x,58,1937
+    int x, y,58,1937
+    int x, y, z;58,1937
+    class location *neighbors[neighbors59,1954
+    void clear_neighbors(60,2005
+    discrete_location(62,2045
+    ~discrete_location(65,2155
+    void assign_neighbor(66,2185
+class agent:agent75,2509
+    location *where;where77,2550
+    agent(79,2579
+    ~agent(80,2592
+    void move(81,2606
 
 cp-src/fail.C,351
 struct A 7,263
@@ -3268,28 +3268,28 @@ el-src/emacs/lisp/progmodes/etags.el,5188
 (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
+(defun tags-loop-eval 1771,71313
+(defun tags-loop-continue 1782,71642
+(defun tags-search 1850,73948
+(defun tags-query-replace 1871,74774
+(defun tags-complete-tags-table-file 1896,75998
+(defun list-tags 1906,76377
+(defun tags-apropos 1934,77330
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156
+(defun select-tags-table 1964,78395
+(defvar select-tags-table-mode-map 2019,80522
+(define-derived-mode select-tags-table-mode 2030,80905
+(defun select-tags-table-select 2034,81089
+(defun select-tags-table-quit 2043,81455
+(defun complete-tag 2049,81610
+(defconst etags--xref-limit 2074,82551
+(defvar etags-xref-find-definitions-tag-order 2076,82586
+(defun etags-xref-find 2082,82876
+(defun etags--xref-find-definitions 2096,83405
+(defclass xref-etags-location 2129,85120
+(defun xref-make-etags-location 2135,85343
+(cl-defmethod xref-location-marker 2139,85498
+(cl-defmethod xref-location-line 2146,85742
 
 erl-src/gs_dialog.erl,98
 -define(VERSION2,32
@@ -3386,50 +3386,64 @@ function MoveLayerBottom 223,5079
 function MoveLayerBefore 236,5457
 function MoveLayerAfter 258,6090
 
+lua-src/test.lua,442
+function Rectangle.getPos 2,15
+function Rectangle.getPos getPos2,15
+function Circle.getPos 6,61
+function Circle.getPos getPos6,61
+function Cube.data.getFoo 10,102
+function Cube.data.getFoo getFoo10,102
+function Square.something:Bar 14,148
+function Square.something:Bar Bar14,148
+   function test.me_22a(22,241
+   function test.me_22a(me_22a22,241
+   local function test.me22b 25,297
+   local function test.me22b me22b25,297
+
 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
+NONSRCS=35,1577
+CPPFLAGS=49,2190
+LDFLAGS=50,2259
+FASTCFLAGS=55,2530
+FILTER=58,2641
+       @-$($72,3063
+       @-$($73,3112
+       @-$($74,3176
+       @-$($75,3222
+       @-$($76,3290
+       @-$($77,3382
+       @$(81,3465
+       @$(82,3513
+       @$(83,3576
+       @$(84,3621
+       @$(85,3688
+       @$(86,3779
+${CHECKOBJS}: CFLAGS=88,3805
+       @env CHECKEROPTS=92,3921
+       @$(98,4093
+       @$(106,4249
+       @$(110,4373
+       @$(114,4499
+       @for i in $(140,5320
+       @for i in $(SRCS); do echo $$i;140,5320
+       $(160,6058
+       $(163,6119
+       $(166,6182
+       $(169,6233
+       $(172,6322
+       sdiff --suppress-common-lines --width=width186,6619
+       sdiff --suppress-common-lines --width=width189,6708
+       sdiff --suppress-common-lines --width=width192,6796
+       sdiff --suppress-common-lines --width=width195,6885
+       TEXTAGS=204,7127
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
+       ${RUN} etags12 --members -o $@ --regex=regex207,7244
+       ${RUN} ./ctags -o $@ --regex=regex213,7393
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
+       TEXTAGS=219,7588
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
+       ${RUN} ./extags -e --regex-c=c222,7715
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -4042,6 +4056,31 @@ class Configure(760,24879
     def save(797,26022
     def nosave(807,26310
 
+ruby-src/test.rb,594
+module ModuleExample1,0
+    class ClassExample2,21
+        def class_method3,44
+        def ClassExample.singleton_class_method6,116
+        def class_method_exclamation!9,221
+        def class_method_question?12,319
+        def class_method_equals=class_method_equals=15,411
+        def `(18,499
+        def +(21,589
+        def [](24,637
+        def []=([]=27,687
+        def <<(30,749
+        def ==(==33,799
+        def <=(<=36,869
+        def <=>(<=>39,940
+        def ===(===42,987
+    def module_method46,1048
+    def ModuleExample.singleton_module_method49,1110
+
+ruby-src/test1.ruby,37
+class A1,0
+ def a(2,8
+ def b(5,38
+
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
 \section{blah}blah8,139
diff --git a/test/etags/ETAGS.good_6 b/test/etags/ETAGS.good_6
index f3d17b1..39522db 100644
--- a/test/etags/ETAGS.good_6
+++ b/test/etags/ETAGS.good_6
@@ -3113,32 +3113,32 @@ 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
+    virtual void compute_next_state(generic_object::compute_next_state21,843
+    virtual void step(generic_object::step22,889
+const int max_num_directions 31,1220
+class location:location33,1290
+    location(location::location43,1643
+    ~location(location::~location44,1662
+class irregular_location:irregular_location47,1687
+    double x,irregular_location::x49,1735
+    double x, y,irregular_location::y49,1735
+    double x, y, z;irregular_location::z49,1735
+    irregular_location(irregular_location::irregular_location51,1763
+    ~irregular_location(irregular_location::~irregular_location53,1855
+class discrete_location:discrete_location56,1890
+    int x,discrete_location::x58,1937
+    int x, y,discrete_location::y58,1937
+    int x, y, z;discrete_location::z58,1937
+    class location *neighbors[discrete_location::neighbors59,1954
+    void clear_neighbors(discrete_location::clear_neighbors60,2005
+    discrete_location(discrete_location::discrete_location62,2045
+    ~discrete_location(discrete_location::~discrete_location65,2155
+    void assign_neighbor(discrete_location::assign_neighbor66,2185
+class agent:agent75,2509
+    location *where;agent::where77,2550
+    agent(agent::agent79,2579
+    ~agent(agent::~agent80,2592
+    void move(agent::move81,2606
 
 cp-src/fail.C,438
 struct A 7,263
@@ -3268,28 +3268,28 @@ el-src/emacs/lisp/progmodes/etags.el,5188
 (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
+(defun tags-loop-eval 1771,71313
+(defun tags-loop-continue 1782,71642
+(defun tags-search 1850,73948
+(defun tags-query-replace 1871,74774
+(defun tags-complete-tags-table-file 1896,75998
+(defun list-tags 1906,76377
+(defun tags-apropos 1934,77330
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156
+(defun select-tags-table 1964,78395
+(defvar select-tags-table-mode-map 2019,80522
+(define-derived-mode select-tags-table-mode 2030,80905
+(defun select-tags-table-select 2034,81089
+(defun select-tags-table-quit 2043,81455
+(defun complete-tag 2049,81610
+(defconst etags--xref-limit 2074,82551
+(defvar etags-xref-find-definitions-tag-order 2076,82586
+(defun etags-xref-find 2082,82876
+(defun etags--xref-find-definitions 2096,83405
+(defclass xref-etags-location 2129,85120
+(defun xref-make-etags-location 2135,85343
+(cl-defmethod xref-location-marker 2139,85498
+(cl-defmethod xref-location-line 2146,85742
 
 erl-src/gs_dialog.erl,98
 -define(VERSION2,32
@@ -3386,50 +3386,64 @@ function MoveLayerBottom 223,5079
 function MoveLayerBefore 236,5457
 function MoveLayerAfter 258,6090
 
+lua-src/test.lua,442
+function Rectangle.getPos 2,15
+function Rectangle.getPos getPos2,15
+function Circle.getPos 6,61
+function Circle.getPos getPos6,61
+function Cube.data.getFoo 10,102
+function Cube.data.getFoo getFoo10,102
+function Square.something:Bar 14,148
+function Square.something:Bar Bar14,148
+   function test.me_22a(22,241
+   function test.me_22a(me_22a22,241
+   local function test.me22b 25,297
+   local function test.me22b me22b25,297
+
 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
+NONSRCS=35,1577
+CPPFLAGS=49,2190
+LDFLAGS=50,2259
+FASTCFLAGS=55,2530
+FILTER=58,2641
+       @-$($72,3063
+       @-$($73,3112
+       @-$($74,3176
+       @-$($75,3222
+       @-$($76,3290
+       @-$($77,3382
+       @$(81,3465
+       @$(82,3513
+       @$(83,3576
+       @$(84,3621
+       @$(85,3688
+       @$(86,3779
+${CHECKOBJS}: CFLAGS=88,3805
+       @env CHECKEROPTS=92,3921
+       @$(98,4093
+       @$(106,4249
+       @$(110,4373
+       @$(114,4499
+       @for i in $(140,5320
+       @for i in $(SRCS); do echo $$i;140,5320
+       $(160,6058
+       $(163,6119
+       $(166,6182
+       $(169,6233
+       $(172,6322
+       sdiff --suppress-common-lines --width=width186,6619
+       sdiff --suppress-common-lines --width=width189,6708
+       sdiff --suppress-common-lines --width=width192,6796
+       sdiff --suppress-common-lines --width=width195,6885
+       TEXTAGS=204,7127
+       TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* 
--regex=regex204,7127
+       ${RUN} etags12 --members -o $@ --regex=regex207,7244
+       ${RUN} ./ctags -o $@ --regex=regex213,7393
+       ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7469
+       TEXTAGS=219,7588
+       TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@ 
--regex=regex219,7588
+       ${RUN} ./extags -e --regex-c=c222,7715
 
 objc-src/Subprocess.h,98
 #define Subprocess 41,1217
@@ -4042,6 +4056,31 @@ class Configure(760,24879
     def save(797,26022
     def nosave(807,26310
 
+ruby-src/test.rb,594
+module ModuleExample1,0
+    class ClassExample2,21
+        def class_method3,44
+        def ClassExample.singleton_class_method6,116
+        def class_method_exclamation!9,221
+        def class_method_question?12,319
+        def class_method_equals=class_method_equals=15,411
+        def `(18,499
+        def +(21,589
+        def [](24,637
+        def []=([]=27,687
+        def <<(30,749
+        def ==(==33,799
+        def <=(<=36,869
+        def <=>(<=>39,940
+        def ===(===42,987
+    def module_method46,1048
+    def ModuleExample.singleton_module_method49,1110
+
+ruby-src/test1.ruby,37
+class A1,0
+ def a(2,8
+ def b(5,38
+
 tex-src/testenv.tex,52
 \newcommand{\nm}\nm4,77
 \section{blah}blah8,139
diff --git a/test/etags/Makefile b/test/etags/Makefile
index f326c90..00d5b9f 100644
--- a/test/etags/Makefile
+++ b/test/etags/Makefile
@@ -13,7 +13,7 @@ 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)
+LUASRC=$(addprefix ./lua-src/,allegro.lua test.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)
@@ -23,12 +23,13 @@ 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)
+RBSRC=$(addprefix ./ruby-src/,test.rb test1.ruby)
 TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex)
 YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y)
 SRCS=${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
      ${FORTHSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC} ${OBJCSRC}\
      ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC} ${PROLSRC} ${PYTSRC}\
-     ${TEXSRC} ${YSRC}
+     ${RBSRC} ${TEXSRC} ${YSRC}
 NONSRCS=./f-src/entry.strange ./erl-src/lists.erl ./cp-src/clheir.hpp.gz
 
 ETAGS_PROG=../../lib-src/etags
diff --git a/test/etags/lua-src/test.lua b/test/etags/lua-src/test.lua
new file mode 100644
index 0000000..405eb5f
--- /dev/null
+++ b/test/etags/lua-src/test.lua
@@ -0,0 +1,36 @@
+Rectangle = {}
+function Rectangle.getPos ()
+end
+
+Circle = {}
+function Circle.getPos ()
+end
+
+Cube = {}
+function Cube.data.getFoo ()
+end
+
+Square = {}
+function Square.something:Bar ()
+end
+
+-- Comment line
+  -- Indented comment line
+
+test = {}
+
+   function test.me_22a(one, two)
+       print"me_22a"
+   end
+   local function test.me22b (one)
+       print"me_22b"
+   end
+
+
+ test.i_123 = function  (x)
+       print"i_123"
+end
+
+
+test.me_12a(1,2)
+test.i_123(1)
diff --git a/test/etags/ruby-src/test.rb b/test/etags/ruby-src/test.rb
new file mode 100644
index 0000000..9254c5b
--- /dev/null
+++ b/test/etags/ruby-src/test.rb
@@ -0,0 +1,54 @@
+module ModuleExample
+    class ClassExample
+        def class_method
+            puts "in class_method"
+        end
+        def ClassExample.singleton_class_method
+            puts "in singleton_class_method"
+        end
+        def class_method_exclamation!
+            puts "in class_method_exclamation!"
+        end
+        def class_method_question?
+            puts "in class_method_question?"
+        end
+        def class_method_equals=
+            puts "in class_method_equals="
+        end
+        def `(command)
+            return "just testing a backquote override"
+        end
+        def +(y)
+            @x + y
+        end
+        def [](y)
+            @ary[y]
+        end
+        def []=(y, val)
+            @ary[y] = val
+        end
+        def <<(y)
+            @x << y
+        end
+        def ==(y)
+            @ary.length == y.ary.length
+        end
+        def <=(y)
+            '@ary.length < y.ary.length'
+        end
+        def <=>(y)
+            nil
+        end
+        def ===(y)
+            self == y
+        end
+    end
+    def module_method
+        puts "in module_method"
+    end
+    def ModuleExample.singleton_module_method
+        puts "in singleton_module_method"
+    end
+end
+
+ModuleExample::ClassExample.singleton_class_method
diff --git a/test/etags/ruby-src/test1.ruby b/test/etags/ruby-src/test1.ruby
new file mode 100644
index 0000000..43b1a14
--- /dev/null
+++ b/test/etags/ruby-src/test1.ruby
@@ -0,0 +1,7 @@
+class A
+ def a()
+  super(" do ")
+ end
+ def b()
+ end
+end
diff --git a/test/indent/js.js b/test/indent/js.js
index d897b9f..9a1e0dc 100644
--- a/test/indent/js.js
+++ b/test/indent/js.js
@@ -76,6 +76,20 @@ class A {
   }
 }
 
+if (true)
+  1
+else
+  2
+
+Foobar
+  .find()
+  .catch((err) => {
+    return 2;
+  })
+  .then((num) => {
+    console.log(num);
+  });
+
 // Local Variables:
 // indent-tabs-mode: nil
 // js-indent-level: 2



reply via email to

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