emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master c2f9c07 2/3: Merge branch 'master' of git.sv.gnu.or


From: Kenichi Handa
Subject: [Emacs-diffs] master c2f9c07 2/3: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Date: Sun, 28 Dec 2014 14:16:57 +0000

branch: master
commit c2f9c07aa02d1c8cba4efdd503463642a910cd6b
Merge: 5979af5 e092acc
Author: K. Handa <address@hidden>
Commit: K. Handa <address@hidden>

    Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
---
 .gitignore                          |    1 +
 CONTRIBUTE                          |  272 ++---
 ChangeLog                           |   63 +-
 admin/ChangeLog                     |   10 +-
 admin/authors.el                    |   12 +-
 admin/merge-gnulib                  |    2 +-
 build-aux/git-hooks/commit-msg      |    4 +-
 doc/emacs/ChangeLog                 |    8 +
 doc/emacs/buffers.texi              |   11 +-
 doc/emacs/building.texi             |    2 +-
 doc/emacs/trouble.texi              |  240 ++++-
 doc/lispref/ChangeLog               |  132 ++
 doc/lispref/abbrevs.texi            |    9 +
 doc/lispref/backups.texi            |    4 +
 doc/lispref/buffers.texi            |    2 +
 doc/lispref/commands.texi           |    9 +
 doc/lispref/compile.texi            |    1 +
 doc/lispref/control.texi            |   15 +-
 doc/lispref/customize.texi          |    4 +
 doc/lispref/debugging.texi          |    6 +
 doc/lispref/display.texi            |   27 +
 doc/lispref/files.texi              |    6 +
 doc/lispref/frames.texi             |    8 +
 doc/lispref/functions.texi          |    5 +-
 doc/lispref/hash.texi               |    2 +
 doc/lispref/help.texi               |    2 +
 doc/lispref/keymaps.texi            |    4 +
 doc/lispref/lists.texi              |    9 +
 doc/lispref/loading.texi            |    4 +
 doc/lispref/macros.texi             |    3 +
 doc/lispref/markers.texi            |    7 +
 doc/lispref/minibuf.texi            |   32 +-
 doc/lispref/modes.texi              |    4 +-
 doc/lispref/nonascii.texi           |    5 +
 doc/lispref/os.texi                 |   11 +-
 doc/lispref/positions.texi          |    5 +-
 doc/lispref/processes.texi          |    3 +
 doc/lispref/searching.texi          |    5 +
 doc/lispref/sequences.texi          |  227 ++---
 doc/lispref/streams.texi            |    2 +-
 doc/lispref/strings.texi            |   17 +-
 doc/lispref/syntax.texi             |    7 +
 doc/lispref/text.texi               |   11 +-
 doc/lispref/variables.texi          |    3 +
 doc/lispref/windows.texi            |  186 ++--
 doc/misc/ChangeLog                  |    4 +-
 etc/ChangeLog                       |   10 +
 etc/NEWS                            |   32 +-
 etc/tutorials/TUTORIAL.es           |  230 ++--
 lib-src/ChangeLog                   |   12 +
 lib-src/Makefile.in                 |   12 +-
 lib-src/ebrowse.c                   |   29 +-
 lib-src/emacsclient.c               |   35 +-
 lib-src/etags.c                     |   33 +-
 lib-src/pop.c                       |    3 +-
 lib-src/update-game-score.c         |   12 +-
 lib/gnulib.mk                       |   11 +-
 lib/stpcpy.c                        |   49 +
 lisp/ChangeLog                      |  424 ++++++-
 lisp/cedet/ChangeLog                |   16 +-
 lisp/cus-start.el                   |    7 +-
 lisp/dired-aux.el                   |    5 +-
 lisp/dired.el                       |    2 +-
 lisp/emacs-lisp/find-func.el        |   59 +-
 lisp/eshell/esh-ext.el              |    5 +
 lisp/language/misc-lang.el          |    3 +-
 lisp/ldefs-boot.el                  | 2469 ++++++++++++++++++-----------------
 lisp/let-alist.el                   |    2 +-
 lisp/minibuffer.el                  |    5 +-
 lisp/net/tramp-gw.el                |    9 +-
 lisp/net/tramp-sh.el                |   53 +-
 lisp/net/tramp.el                   |  277 ++--
 lisp/org/org-ctags.el               |    8 +-
 lisp/org/ox-html.el                 |    2 +-
 lisp/org/ox-latex.el                |    2 +-
 lisp/org/ox-publish.el              |    2 +-
 lisp/org/ox.el                      |    6 +-
 lisp/progmodes/elisp-mode.el        |   79 ++-
 lisp/progmodes/etags.el             |   97 +-
 lisp/progmodes/js.el                |   29 +-
 lisp/progmodes/python.el            |  591 ++++++---
 lisp/progmodes/sh-script.el         |    2 +-
 lisp/progmodes/xref.el              |  524 ++++++++
 lisp/saveplace.el                   |   44 +-
 lisp/shell.el                       |    9 +-
 lisp/simple.el                      |   10 +-
 lisp/startup.el                     |    8 +-
 lisp/subr.el                        |    4 +-
 lisp/textmodes/tex-mode.el          |   50 +-
 lisp/vc/compare-w.el                |   25 +-
 lisp/vc/vc-git.el                   |    7 +-
 lisp/window.el                      |   48 +-
 lwlib/xlwmenu.c                     |    7 +-
 m4/gnulib-comp.m4                   |    9 +
 m4/stpcpy.m4                        |   25 +
 nt/ChangeLog                        |    5 +
 nt/gnulib.mk                        |  111 ++-
 src/ChangeLog                       |  123 ++
 src/buffer.c                        |    4 +-
 src/callproc.c                      |    7 +-
 src/composite.c                     |    3 +-
 src/dbusbind.c                      |    2 +-
 src/decompress.c                    |   51 +-
 src/dispextern.h                    |    5 +-
 src/doc.c                           |   33 +-
 src/editfns.c                       |    5 +-
 src/frame.c                         |   20 +-
 src/gnutls.c                        |  775 ++++++------
 src/gtkutil.c                       |    6 +-
 src/image.c                         |  932 +++++++-------
 src/keyboard.c                      |    2 +-
 src/nsimage.m                       |    8 +-
 src/tparam.c                        |    4 +-
 src/w32.c                           |   13 +-
 src/w32.h                           |   13 +
 src/w32menu.c                       |    6 +-
 src/w32proc.c                       |   15 +-
 src/xdisp.c                         |  171 ++--
 src/xfns.c                          |   34 +-
 src/xml.c                           |   94 +-
 src/xrdb.c                          |   44 +-
 src/xselect.c                       |   95 +-
 src/xsettings.c                     |   94 +-
 src/xsmfns.c                        |   34 +-
 src/xterm.c                         |   10 +-
 src/xterm.h                         |   10 +-
 test/ChangeLog                      |   71 +-
 test/automated/data/flymake/test.pl |    2 +-
 test/automated/electric-tests.el    |   11 +-
 test/automated/let-alist.el         |    3 +-
 test/automated/python-tests.el      |  509 ++++++--
 test/automated/tramp-tests.el       |    7 +-
 test/indent/js.js                   |    5 +
 133 files changed, 6365 insertions(+), 3770 deletions(-)

diff --git a/.gitignore b/.gitignore
index d05352e..97adfb95 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,6 +48,7 @@ makefile
 /confdefs.h
 /config.status
 /configure.lineno
+/conftest*
 src/config.h
 src/epaths.h
 
diff --git a/CONTRIBUTE b/CONTRIBUTE
index dc6fd71..3bc49cf 100644
--- a/CONTRIBUTE
+++ b/CONTRIBUTE
@@ -1,196 +1,15 @@
-Copyright (C) 2006-2014 Free Software Foundation, Inc.
-See end for license conditions.
+This file contains information on Emacs developer processes.
 
+For information on contributing to Emacs as a non-developer, see
+(info "(emacs)Contributing") or
+http://www.gnu.org/software/emacs/manual/html_node/emacs/Contributing.html
 
-                       Contributing to Emacs
-
-Emacs is a collaborative project and we encourage contributions from
-anyone and everyone.  If you want to contribute in the way that will
-help us most, we recommend (1) fixing reported bugs and (2)
-implementing the feature ideas in etc/TODO.  However, if you think of
-new features to add, please suggest them too -- we might like your
-idea.  Porting to new platforms is also useful, when there is a new
-platform, but that is not common nowadays.
-
-For documentation on Emacs (to understand how to implement your
-desired change), refer to:
-
-- the Emacs Manual
-  http://www.gnu.org/software/emacs/manual/emacs.html
-  (info "(Emacs)Top")
-
-- the Emacs Lisp Reference Manual
-  http://www.gnu.org/software/emacs/manual/elisp.html
-  (info "(elisp)Top")
-
-- http://www.gnu.org/software/emacs
-
-- http://www.emacswiki.org/
-
-There are many ways to contribute to Emacs:
-
-- implement a new feature, and submit a patch (see "Submitting
-  Patches" below).
-
-- answer questions on the Emacs user mailing list
-  https://lists.gnu.org/mailman/listinfo/help-gnu-emacs
-
-- write documentation, either on the wiki, or in the Emacs source
-  repository (see "Submitting Patches" below)
-
-- find and report bugs; use M-x report-emacs-bug
-
-- check if existing bug reports are fixed in newer versions of Emacs
-  http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs
-
-- develop a package that works with Emacs, and publish it on your own
-  or in Gnu ELPA (see admin/notes/elpa).
-
-Here are some style and legal conventions for contributors to Emacs:
-
-
-* Coding Standards
-
-Contributed code should follow the GNU Coding Standards
-(http://www.gnu.org/prep/standards/ - may also be available in info on
-your system).
-
-If it doesn't, we'll need to find someone to fix the code before we
-can use it.
-
-Emacs has additional style and coding conventions:
-
-- the "Tips" Appendix in the Emacs Lisp Reference
-  http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html
-  (info "(elisp)Tips").
-
-- Avoid using `defadvice' or `eval-after-load' for Lisp code to be
-  included in Emacs.
-
-- Remove all trailing whitespace in all source and text files.
-
-- Emacs has no convention on whether to use tabs in source code;
-  please don't change whitespace in the files you edit.
-
-- Use ?\s instead of ?  in Lisp code for a space character.
-
-* Copyright Assignment
-
-The FSF (Free Software Foundation) is the copyright holder for GNU Emacs.
-The FSF is a nonprofit with a worldwide mission to promote computer
-user freedom and to defend the rights of all free software users.
-For general information, see the website http://www.fsf.org/ .
-
-Generally speaking, for non-trivial contributions to GNU Emacs we
-require that the copyright be assigned to the FSF.  For the reasons
-behind this, see: http://www.gnu.org/licenses/why-assign.html .
-
-Copyright assignment is a simple process.  Residents of some countries
-can do it entirely electronically.  We can help you get started, and
-answer any questions you may have (or point you to the people with the
-answers), at the address@hidden mailing list.
-
-(Please note: general discussion about why some GNU projects ask
-for a copyright assignment is off-topic for emacs-devel.
-See gnu-misc-discuss instead.)
-
-A copyright disclaimer is also a possibility, but we prefer an assignment.
-Note that the disclaimer, like an assignment, involves you sending
-signed paperwork to the FSF (simply saying "this is in the public domain"
-is not enough).  Also, a disclaimer cannot be applied to future work, it
-has to be repeated each time you want to send something new.
-
-We can accept small changes (roughly, fewer than 15 lines) without
-an assignment.  This is a cumulative limit (e.g. three separate 5 line
-patches) over all your contributions.
-
-* Getting the Source Code
-
-The current working version of the Emacs source code is stored in a
-git repository on the Savannah web site
-(http://savannah.gnu.org/projects/emacs).  It is important to write
-your patch based on the current working version.  If you start from an
-older version, your patch may be outdated (so that maintainers will
-have a hard time applying it), or changes in Emacs may have made your
-patch unnecessary.
-
-After you have downloaded the repository source, you should read the file
-INSTALL.REPO for build instructions (they differ to some extent from a
-normal build).
-
-* Submitting Patches
-
-Every patch must have several pieces of information before we
-can properly evaluate it.
-
-When you have all these pieces, bundle them up in a mail message and
-send it to the developers.  Sending it to address@hidden
-(which is the bug/feature list) is recommended, because that list
-is coupled to a tracking system that makes it easier to locate patches.
-If your patch is not complete and you think it needs more discussion,
-you might want to send it to address@hidden instead.  If you
-revise your patch, send it as a followup to the initial topic.
-
-** Description
-
-For bug fixes, a description of the bug and how your patch fixes it.
-
-For new features, a description of the feature and your implementation.
-
-** ChangeLog
-
-A ChangeLog entry as plaintext (separate from the patch).
-
-See the existing ChangeLog files for format and content.  Note that,
-unlike some other projects, we do require ChangeLogs for
-documentation, i.e. Texinfo files.
-
-Ref: "Change Log Concepts" node of the GNU Coding Standards Info
-Manual, for how to write good log entries.
-http://www.gnu.org/prep/standards/html_node/Change-Log-Concepts.html
-
-When using git, commit messages should use ChangeLog format, with a
-single short line explaining the change, then an empty line, then
-unindented ChangeLog entries.  (Essentially, a commit message should
-be a duplicate of what the patch adds to the ChangeLog files.  We are
-planning to automate this better, to avoid the duplication.) You can
-use the Emacs functions log-edit-add-to-changelog or
-log-edit-insert-changelog to ease this process.
-
-** The patch itself.
-
-If you are accessing the Emacs repository, make sure your copy is
-up-to-date (e.g. with 'git pull').  You can commit your changes
-to a private branch and generate a patch from the master version
-by using
-       git format-patch master
-Or you can leave your changes uncommitted and use
-        git diff
-With no repository, you can use
-       diff -u OLD NEW
-
-** Mail format.
-
-We prefer to get the patches as plain text, either inline (be careful
-your mail client does not change line breaks) or as MIME attachments.
-
-** Please reread your patch before submitting it.
-
-** Do not mix changes.
-
-If you send several unrelated changes together, we will ask you to
-separate them so we can consider each of the changes by itself.
-
-** Do not make formatting changes.
-
-Making cosmetic formatting changes (indentation, etc) makes it harder
-to see what you have really changed.
-
-
-* Supplemental information for Emacs Developers.
+* Information for Emacs Developers.
 
 An "Emacs Developer" is someone who contributes a lot of code or
-documentation to the Emacs repository.
+documentation to the Emacs repository. Generally, they have write
+access to the Emacs git repository on Savannah
+https://savannah.gnu.org/git/?group=emacs.
 
 ** Write access to the Emacs repository.
 
@@ -213,6 +32,31 @@ entry in their name, not yours. git distinguishes between 
the author
 and the committer; use the --author option on the commit command to
 specify the actual author; the committer defaults to you.
 
+** commit messages
+
+When using git, commit messages should use ChangeLog format, with the
+following modifications:
+
+- Add a single short line explaining the change, then an empty line,
+  then unindented ChangeLog entries.
+
+  You can use various Emacs functions to ease this process; see (info
+  "(emacs)Change Log Commands") or
+  
http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
+
+- The summary line is limited to 72 characters (enforced by a commit
+  hook). If you have trouble making that a good summary, add a
+  paragraph below it, before the individual file descriptions.
+
+- If only a single file is changed, the summary line can be the normal
+  file first line (starting with the asterisk).  Then there is no
+  individual files section.
+
+- Explaining the rationale for a design choice is best done in comments
+  in the source code. However, sometimes it is useful to describe just
+  the rationale for a change; that can be done in the commit message
+  between the summary line and the file entries.
+
 ** Changelog notes
 
 - Emacs generally follows the GNU coding standards when it comes to
@@ -222,11 +66,25 @@ specify the actual author; the committer defaults to you.
   standards used to recommend) rather than 'like-this' (as they do
   now), because `...' is so widely used elsewhere in Emacs.
 
+- Some of the rules in the GNU coding standards section 5.2
+  "Commenting Your Work" also apply to Changelog entries: they must be
+  in English, and be complete sentences starting with a capital and
+  ending with a period (except the summary line should not end in a
+  period).
+
+  It is tempting to relax this rule for commit messages, since they
+  are somewhat transient.  However, they are preserved indefinitely,
+  and have a reasonable chance of being read in the future, so it's
+  better that they have good presentation.
+
 - There are multiple ChangeLogs in the emacs source; roughly one per
   high-level directory. The ChangeLog entry for a commit belongs in the
   lowest ChangeLog that is higher than or at the same level as any file
   changed by the commit.
 
+- Use the present tense; describe "what the change does", not "what
+  the change did".
+
 - Preferred form for several entries with the same content:
 
    * help.el (view-lossage):
@@ -235,7 +93,13 @@ specify the actual author; the committer defaults to you.
 
   (Rather than anything involving "ditto" and suchlike.)
 
-- In ChangeLog files, there is no standard or recommended way to
+- If the commit fixes a bug, add a separate line
+
+  Fixes: bug#NNNN
+
+  where NNNN is the bug number.
+
+- In ChangeLog entries, there is no standard or recommended way to
   identify revisions.
 
   One way to identify revisions is by quoting their summary line.
@@ -244,7 +108,7 @@ specify the actual author; the committer defaults to you.
   "2014-01-16T05:43:address@hidden". Often, "my previous commit"
   will suffice.
 
-- There is no need to make separate change log entries for files such
+- There is no need to make separate ChangeLog entries for files such
   as NEWS, MAINTAINERS, and FOR-RELEASE, or to indicate regeneration
   of files such as 'configure'.  "There is no need" means you don't
   have to, but you can if you want to.
@@ -260,16 +124,13 @@ Development is discussed on the emacs-devel mailing list.
 Sometime before the release of a new major version of Emacs a "feature
 freeze" is imposed on the trunk, to prepare for creating a release
 branch.  No new features may be added to the trunk after this point,
-until the release branch is created. This freeze is announced on the
-emacs-devel mailing list, and not anywhere else.
+until the release branch is created. Announcements about the freeze
+(and other important events) are made on the info-gnu-emacs mailing
+list, and not anywhere else.
 
 The trunk branch is named "master" in git; release branches are named
 "emacs-nn" where "nn" is the major version.
 
-You must follow emacs-devel to know exactly what kinds of changes are
-allowed on what branch at any time. Announcements about the freeze
-(and other important events) will contain "ANNOUNCE" in the subject.
-
 If you are fixing a bug that exists in the current release, be sure to
 commit it to the release branch; it will be merged to the master
 branch later.
@@ -287,6 +148,23 @@ then exclude that commit from the merge to trunk.
 See all the files in admin/notes/* . In particular, see
 admin/notes/newfile, see admin/notes/repo.
 
+*** git vs rename
+
+git does not explicitly represent a file renaming; it uses a percent
+changed heuristic to deduce that a file was renamed. So if you are
+planning to make extensive changes to a file after renaming it (or
+moving it to another directory), you should:
+
+- create a feature branch
+
+- commit the rename without any changes
+
+- make other changes
+
+- merge the feature branch to trunk, _not_ squashing the commits into
+  one. The commit message on this merge should summarize the renames
+  and all the changes.
+
 ** Emacs Mailing lists.
 
 Discussion about Emacs development takes place on address@hidden
diff --git a/ChangeLog b/ChangeLog
index 7e68314..65a112d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,52 @@
+2014-12-27  Paul Eggert  <address@hidden>
+
+       * .gitignore: Ignore /conftest*.
+
+2014-12-27  Stefan Monnier  <address@hidden>
+
+       * build-aux/git-hooks/commit-msg (at_sign): Bump up line-length limit
+       to 78.
+
+2014-12-25  Paul Eggert  <address@hidden>
+
+       Prefer stpcpy to strcat
+       * admin/merge-gnulib (GNULIB_MODULES): Add stpcpy.
+       * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
+       * lib/stpcpy.c, m4/stpcpy.m4: New files, from gnulib.
+       * lib-src/ebrowse.c (sym_scope_1, operator_name, open_file):
+       * lib-src/emacsclient.c (get_server_config, set_local_socket)
+       (start_daemon_and_retry_set_socket):
+       * lib-src/etags.c (main, C_entries, relative_filename):
+       * lib-src/pop.c (sendline):
+       * lib-src/update-game-score.c (main):
+       * lwlib/xlwmenu.c (resource_widget_value):
+       * src/callproc.c (child_setup):
+       * src/dbusbind.c (xd_signature_cat):
+       * src/doc.c (get_doc_string, Fsnarf_documentation):
+       * src/editfns.c (Fuser_full_name):
+       * src/frame.c (xrdb_get_resource):
+       * src/gtkutil.c (xg_get_file_with_chooser):
+       * src/tparam.c (tparam1):
+       * src/xfns.c (xic_create_fontsetname):
+       * src/xrdb.c (gethomedir, get_user_db, get_environ_db):
+       * src/xsmfns.c (smc_save_yourself_CB):
+       Rewrite to avoid the need for strcat, typically by using stpcpy
+       and/or lispstpcpy.  strcat tends to be part of O(N**2) algorithms.
+       * src/doc.c (sibling_etc):
+       * src/xrdb.c (xdefaults):
+       Now a top-level static constant.
+
+2014-12-24  Stephen Leake  <address@hidden>
+
+       * CONTRIBUTE: Move user-level information to doc/emacs/trouble.texi.
+       Add Savannah url, cleanup announcing freeze.
+       (commit messages): New, gathered from comments on emacs-devel.
+       (Changelog notes): Add reference to GNU coding standards section 5.2;
+       doc 'present tense', bug fix format.
+       (branches): Freeze announcements are made on info-gnu-emacs mailing
+       list.
+       (git vs rename): New.
+
 2014-12-23  Paul Eggert  <address@hidden>
 
        Merge from gnulib
@@ -8,16 +57,7 @@
 
 2014-12-14  Paul Eggert  <address@hidden>
 
-       Spelling fixes
-       All uses changed.
-       * lib-src/etags.c (analyze_regex): Rename from analyse_regex.
-       * lisp/cedet/semantic/lex-spp.el:
-       (semantic-lex-spp-analyzer-do-replace):
-       Rename from semantic-lex-spp-anlyzer-do-replace.
-       * lisp/emacs-lisp/cconv.el (cconv--analyze-use):
-       Rename from cconv--analyse-use.
-       (cconv--analyze-function): Rename from cconv--analyse-function.
-       (cconv-analyze-form): Rename from cconv-analyse-form.
+       Spelling fixes.  All uses changed.
        * src/regex.c (analyze_first): Rename from analyze_first.
 
 2014-12-14  Glenn Morris  <address@hidden>
@@ -277,7 +317,8 @@
 
 2014-11-11  Eric S. Raymond  <address@hidden>
 
-       * Makefile.in: git transition - set VCWITNESS appropriately for git.
+       Git transition.
+       * Makefile.in (src): Set VCSWITNESS appropriately for git.
 
        All bzr revision IDS, and all CVS revision IDs for which a commit
        could be identified, were changed to time-date!committer version
diff --git a/admin/ChangeLog b/admin/ChangeLog
index 88ce145..b32d700 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,8 +1,14 @@
+2014-12-24  Glenn Morris  <address@hidden>
+
+       * authors.el (authors-obsolete-files-regexps)
+       (authors-ignored-files, authors-valid-file-names)
+       (authors-renamed-files-alist, authors-renamed-files-regexps):
+       Additions.
+
 2014-12-14  Paul Eggert  <address@hidden>
 
        * notes/unicode: Track leim/quail file renames.
-       Correct coding system
-       of lisp/international/titdic-cnv.el.
+       Correct coding system of lisp/international/titdic-cnv.el.
 
 2014-12-14  Glenn Morris  <address@hidden>
 
diff --git a/admin/authors.el b/admin/authors.el
index 42f3bcd..790e351 100644
--- a/admin/authors.el
+++ b/admin/authors.el
@@ -240,7 +240,7 @@ If REALNAME is nil, ignore that author.")
 
 (defvar authors-obsolete-files-regexps
   '(".*loaddefs.el$"                   ; not obsolete, but auto-generated
-    "\\.\\(cvs\\|git\\)ignore$"                ; obsolete or uninteresting
+    "\\.\\(bzr\\|cvs\\|git\\)ignore$"          ; obsolete or uninteresting
     "\\.arch-inventory$"
     "automated/data/"             ; not interesting
     ;; TODO lib/? Matches other things?
@@ -314,6 +314,7 @@ Changes to files matching one of the regexps in this list 
are not listed.")
     "CODINGS" "CHARSETS"
     "calc/INSTALL" "calc/Makefile" "calc/README.prev"
     "vms-pp.trans" "_emacs" "batcomp.com" "notes/cpp" ; admin/
+    "notes/BRANCH" "notes/exit-value"
     "emacsver.texi.in"
     "vpath.sed"
     "Cocoa/Emacs.base/Contents/Info.plist"
@@ -634,6 +635,7 @@ Changes to files in this list are not listed.")
     "images/page-down.xpm" "images/widen.pbm" "images/widen.xpm"
     "images/gnus/bar.xbm" "images/gnus/bar.xpm"
     "images/gnus/reverse-smile.xpm"
+    "notes/commits" "notes/changelogs"
     "revdiff"                          ; admin/
     "vcdiff" "rcs-checkin" "tindex.pl"
     "mainmake" "sed1.inp" "sed2.inp" "sed3.inp" ; msdos/
@@ -661,6 +663,7 @@ Changes to files in this list are not listed.")
     "org-lparse.el"
     "org-special-blocks.el" "org-taskjuggler.el"
     "progmodes/cap-words.el"
+    "w32-common-fns.el"
     ;; gnus
     "nnwfm.el" "nnlistserv.el" "nnkiboze.el" "nndb.el" "nnsoup.el"
     "netrc.el" "password.el" "sasl-cram.el" "sasl-digest.el" "sasl-ntlm.el"
@@ -691,7 +694,7 @@ Changes to files in this list are not listed.")
     "etags-vmslib.c" "fakemail.c" "getdate.c" "getopt.h" "getopt1.c"
     "getopt_.h" "getopt_int.h" "gettext.h" "leditcfns.c" "loadst.c"
     "make-path.c" "qsort.c" "sorted-doc.c" "tcp.c" "timer.c" "wakeup.c"
-    "yow.c" "grep-changelog"
+    "yow.c" "grep-changelog" "grep-changelog.1"
     ;; etc/
     "emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c"
     "test-distrib.c" "testfile"
@@ -801,6 +804,7 @@ in the repository.")
     ;; The one in lisp is eshell/eshell.el.
     ("eshell.el" . "automated/eshell.el")
     ("eshell/esh-test.el" . "automated/eshell.el")
+    ("automated/cl-lib.el" . "automated/cl-lib-tests.el")
     ("automated/package-x-test.el" . "automated/package-test.el")
     ;; INSTALL-CVS -> .CVS -> .BZR -> .REPO
     ("INSTALL-CVS" . "INSTALL.REPO")
@@ -867,6 +871,8 @@ in the repository.")
     ("grammars/wisent-grammar.el" . "wisent/grammar.el")
     ;; Moved from admin/nt/ to nt/.
     ("nt/README.W32" . "README.W32")
+    ("notes/BRANCH" . "notes/repo")
+    ("notes/bzr" . "notes/repo")
     )
   "Alist of files which have been renamed during their lifetime.
 Elements are (OLDNAME . NEWNAME).")
@@ -939,6 +945,8 @@ 
ediff\\|emerge\\|log-edit\\|log-view\\|pcvs\\|smerge-mode\\|vc\\)\\.el\\'"
     ("comint-testsuite.el" "automated/\\&")
     ("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\
 -testsuite\\.el" "automated/\\1-tests.el")
+    ("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'"
+     "automated/data/flymake/\\1")
     ;; NB lax rules should come last.
     ("^m/m-\\(.*\\.h\\)$" "m/\\1" t)
     ("^m-\\(.*\\.h\\)$" "\\1" t)
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 64514f7..84c6ebf 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -36,7 +36,7 @@ GNULIB_MODULES='
   manywarnings memrchr mkostemp mktime
   pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat
   sig2str socklen stat-time stdalign stddef stdio
-  strftime strtoimax strtoumax symlink sys_stat
+  stpcpy strftime strtoimax strtoumax symlink sys_stat
   sys_time time time_r timer-time timespec-add timespec-sub
   unsetenv update-copyright utimens
   vla warnings
diff --git a/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg
index 5eb994c..2e3e4f2 100755
--- a/build-aux/git-hooks/commit-msg
+++ b/build-aux/git-hooks/commit-msg
@@ -87,8 +87,8 @@ exec $awk '
     status = 1
   }
 
-  72 < length && $0 ~ space {
-    print "Line longer than 72 characters in commit message"
+  78 < length && $0 ~ space {
+    print "Line longer than 78 characters in commit message"
     status = 1
   }
 
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index d2f7a34..0016ee0 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,11 @@
+2014-12-27  Eli Zaretskii  <address@hidden>
+
+       * buffers.texi (Kill Buffer): Improve indexing.
+
+2014-12-24  Stephen Leake  <address@hidden>
+
+       * trouble.texi: Move user-level information from CONTRIBUTE here.
+
 2014-12-14  Alan Mackenzie  <address@hidden>
 
        * display.texi (Scrolling): fast-but-imprecise-scrolling.
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index 54a8498..f036d85 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -269,11 +269,16 @@ can also be used to copy text from one buffer to another.
 @section Killing Buffers
 
 @cindex killing buffers
address@hidden close buffer
address@hidden close file
   If you continue an Emacs session for a while, you may accumulate a
 large number of buffers.  You may then find it convenient to @dfn{kill}
-the buffers you no longer need.  On most operating systems, killing a
-buffer releases its space back to the operating system so that other
-programs can use it.  Here are some commands for killing buffers:
+the buffers you no longer need.  (Some other editors call this
+operation @dfn{close}, and talk about ``closing the buffer'' or
+``closing the file'' visited in the buffer.)  On most operating
+systems, killing a buffer releases its space back to the operating
+system so that other programs can use it.  Here are some commands for
+killing buffers:
 
 @table @kbd
 @item C-x k @var{bufname} @key{RET}
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index e0ed11f..e1993e5 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -1358,7 +1358,7 @@ searches through each directory in the Emacs Lisp load 
path, trying to
 find a file matching that library name.  If the library name is
 @address@hidden, it tries looking for files named
 @address@hidden, @address@hidden, and @address@hidden  The
-default behaviour is to load the first file found.  This command
+default behavior is to load the first file found.  This command
 prefers @file{.elc} files over @file{.el} files because compiled files
 load and run faster.  If it finds that @address@hidden is newer
 than @address@hidden, it issues a warning, in case someone made
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 5f3cf92..13d5cbd 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -1060,19 +1060,44 @@ but using it will take extra work.  Maintaining GNU 
Emacs is a lot of
 work in the best of circumstances, and we can't keep up unless you do
 your best to help.
 
+Every patch must have several pieces of information before we
+can properly evaluate it.
+
+When you have all these pieces, bundle them up in a mail message and
+send it to the developers.  Sending it to
address@hidden@@gnu.org} (which is the bug/feature list) is
+recommended, because that list is coupled to a tracking system that
+makes it easier to locate patches.  If your patch is not complete and
+you think it needs more discussion, you might want to send it to
address@hidden@@gnu@@gnu.org} instead.  If you revise your patch,
+send it as a followup to the initial topic.
+
+We prefer to get the patches as plain text, either inline (be careful
+your mail client does not change line breaks) or as MIME attachments.
+
 @itemize @bullet
 @item
-Send an explanation with your changes of what problem they fix or what
-improvement they bring about.  For a fix for an existing bug, it is
+Include an explanation with your changes of what problem they fix or what
+improvement they bring about.
+
address@hidden
address@hidden
+For a fix for an existing bug, it is
 best to reply to the relevant discussion on the @samp{bug-gnu-emacs}
 list, or the bug entry in the GNU Bug Tracker at
 @url{http://debbugs.gnu.org}.  Explain why your change fixes the bug.
 
 @item
-Always include a proper bug report for the problem you think you have
-fixed.  We need to convince ourselves that the change is right before
-installing it.  Even if it is correct, we might have trouble
-understanding it if we don't have a way to reproduce the problem.
+For a new feature, include a description of the feature and your
+implementation.
+
address@hidden
+For a new bug, include a proper bug report for the problem you think
+you have fixed.  We need to convince ourselves that the change is
+right before installing it.  Even if it is correct, we might have
+trouble understanding it if we don't have a way to reproduce the
+problem.
address@hidden itemize
 
 @item
 Include all the comments that are appropriate to help people reading the
@@ -1104,6 +1129,8 @@ right away.  That gives us the option of installing it 
immediately if it
 is important.
 
 @item
+The patch itself.
+
 Use @samp{diff -c} to make your diffs.  Diffs without context are hard
 to install reliably.  More than that, they are hard to study; we must
 always study a patch to decide whether we want to install it.  Unidiff
@@ -1114,6 +1141,12 @@ If you have GNU diff, use @samp{diff -c 
-F'^[_a-zA-Z0-9$]+ *('} when
 making diffs of C code.  This shows the name of the function that each
 change occurs in.
 
+If you are using the Emacs repository, make sure your copy is
+up-to-date (e.g. with @code{git pull}).  You can commit your changes
+to a private branch and generate a patch from the master version by
+using @code{git format-patch master}. Or you can leave your changes
+uncommitted and use @code{git diff}.
+
 @item
 Avoid any ambiguity as to which is the old version and which is the new.
 Please make the old version the first argument to diff, and the new
@@ -1138,8 +1171,16 @@ feel that the purpose needs explaining, it probably 
does---but put the
 explanation in comments in the code.  It will be more useful there.
 
 Please look at the change log entries of recent commits to see what
-sorts of information to put in, and to learn the style that we use.
address@hidden Log}.
+sorts of information to put in, and to learn the style that we use. Note that,
+unlike some other projects, we do require change logs for
+documentation, i.e. Texinfo files.
address@hidden Log},
address@hidden WWW_GNU_ORG
+see
address@hidden://www.gnu.org/prep/standards/html_node/Change-Log-Concepts.html},
address@hidden ifset
address@hidden Log Concepts, Change Log Concepts,
+Change Log Concepts, gnu-coding-standards, GNU Coding Standards}.
 
 @item
 When you write the fix, keep in mind that we can't install a change that
@@ -1160,11 +1201,52 @@ Please help us keep up with the workload by designing 
the patch in a
 form that is clearly safe to install.
 @end itemize
 
address@hidden FIXME: Include the node above?
 @node Contributing
 @section Contributing to Emacs Development
 @cindex contributing to Emacs
 
+Emacs is a collaborative project and we encourage contributions from
+anyone and everyone.
+
+There are many ways to contribute to Emacs:
+
address@hidden
address@hidden
+find and report bugs; @xref{Bugs}.
+
address@hidden
+answer questions on the Emacs user mailing list
address@hidden://lists.gnu.org/mailman/listinfo/help-gnu-emacs}.
+
address@hidden
+write documentation, either on the wiki, or in the Emacs source
+repository (@pxref{Sending Patches}).
+
address@hidden
+check if existing bug reports are fixed in newer versions of Emacs
address@hidden://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs}.
+
address@hidden
+fix existing bug reports
address@hidden://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs}.
+
address@hidden
address@hidden etc/TODO not in WWW_GNU_ORG
+implement a feature listed in the @file{etc/TODO} file in the Emacs
+distribution, and submit a patch.
+
address@hidden
+implement a new feature, and submit a patch.
+
address@hidden
+develop a package that works with Emacs, and publish it on your own
+or in Gnu ELPA (@url{https://elpa.gnu.org/}).
+
address@hidden
+port Emacs to a new platform, but that is not common nowadays.
+
address@hidden itemize
+
 If you would like to work on improving Emacs, please contact the maintainers at
 @ifnothtml
 @email{emacs-devel@@gnu.org}.
@@ -1186,24 +1268,148 @@ you have not yet started work, it is useful to contact
 before you start; it might be possible to suggest ways to make your
 extension fit in better with the rest of Emacs.
 
+When implementing a feature, please follow the Emacs coding standards;
address@hidden Standards}. In addition, non-trivial contributions
+require a copyright assignment to the FSF; @xref{Copyright Assignment}.
+
 The development version of Emacs can be downloaded from the
 repository where it is actively maintained by a group of developers.
 See the Emacs project page
address@hidden://savannah.gnu.org/projects/emacs/} for details.
address@hidden://savannah.gnu.org/projects/emacs/} for access details.
+
+It is important to write your patch based on the current working
+version.  If you start from an older version, your patch may be
+outdated (so that maintainers will have a hard time applying it), or
+changes in Emacs may have made your patch unnecessary. After you have
+downloaded the repository source, you should read the file
address@hidden for build instructions (they differ to some extent
+from a normal build).
+
+If you would like to make more extensive contributions, see the
address@hidden/CONTRIBUTE} file in the Emacs distribution for information on
+how to be an Emacs developer.
+
+For documentation on Emacs (to understand how to implement your
+desired change), refer to:
+
address@hidden
address@hidden
address@hidden WWW_GNU_ORG
address@hidden
+the Emacs Manual
address@hidden://www.gnu.org/software/emacs/manual/emacs.html}.
address@hidden ifhtml
address@hidden
address@hidden, Emacs Manual,,emacs}.
address@hidden ifnothtml
address@hidden ifset
address@hidden WWW_GNU_ORG
address@hidden, Emacs Manual,,emacs}.
address@hidden ifclear
+
address@hidden
address@hidden WWW_GNU_ORG
address@hidden
+the Emacs Lisp Reference Manual
address@hidden://www.gnu.org/software/emacs/manual/elisp.html}.
address@hidden ifhtml
address@hidden
address@hidden, Emacs Lisp Reference Manual,,elisp}.
address@hidden ifnothtml
address@hidden ifset
address@hidden WWW_GNU_ORG
address@hidden, Emacs Lisp Reference Manual,,elisp}.
address@hidden ifclear
+
address@hidden
address@hidden://www.gnu.org/software/emacs}
+
address@hidden
address@hidden://www.emacswiki.org/}
address@hidden itemize
+
address@hidden
+* Coding Standards::        Gnu Emacs coding standards
+* Copyright Assignment::    assigning copyright to the FSF
address@hidden menu
 
-For more information on how to contribute, see the
address@hidden Coding Standards
address@hidden Coding Standards
address@hidden coding standards
+
+Contributed code should follow the GNU Coding Standards
address@hidden://www.gnu.org/prep/standards/}. This may also be available
+in info on your system.
+
+If it doesn't, we'll need to find someone to fix the code before we
+can use it.
+
+Emacs has additional style and coding conventions:
+
address@hidden
address@hidden
 @ifset WWW_GNU_ORG
 @ifhtml
address@hidden://gnu.org/software/emacs/CONTRIBUTE, etc/CONTRIBUTE}
+the "Tips" Appendix in the Emacs Lisp Reference
address@hidden://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html}.
 @end ifhtml
 @ifnothtml
address@hidden/CONTRIBUTE}
address@hidden, "Tips" Appendix in the Emacs Lisp Reference, Tips
+Appendix, elisp, Emacs Lisp Reference}.
 @end ifnothtml
 @end ifset
 @ifclear WWW_GNU_ORG
address@hidden/CONTRIBUTE}
address@hidden, "Tips" Appendix in the Emacs Lisp Reference, Tips
+Appendix, elisp, Emacs Lisp Reference}.
 @end ifclear
-file in the Emacs distribution.
+
address@hidden
+Avoid using @code{defadvice} or @code{eval-after-load} for Lisp code
+to be included in Emacs.
+
address@hidden
+Remove all trailing whitespace in all source and text files.
+
address@hidden
+Emacs has no convention on whether to use tabs in source code; please
+don't change whitespace in the files you edit.
+
address@hidden
+Use @code{?\s} instead of @code{? } in Lisp code for a space character.
+
address@hidden itemize
+
address@hidden Copyright Assignment
address@hidden Copyright Assignment
address@hidden copyright assignment
+
+The FSF (Free Software Foundation) is the copyright holder for GNU Emacs.
+The FSF is a nonprofit with a worldwide mission to promote computer
+user freedom and to defend the rights of all free software users.
+For general information, see the website @url{http://www.fsf.org/}.
+
+Generally speaking, for non-trivial contributions to GNU Emacs we
+require that the copyright be assigned to the FSF.  For the reasons
+behind this, see @url{http://www.gnu.org/licenses/why-assign.html}.
+
+Copyright assignment is a simple process.  Residents of some countries
+can do it entirely electronically.  We can help you get started, and
+answer any questions you may have (or point you to the people with the
+answers), at the @email{emacs-devel@@gnu.org} mailing list.
+
+(Please note: general discussion about why some GNU projects ask
+for a copyright assignment is off-topic for emacs-devel.
+See gnu-misc-discuss instead.)
+
+A copyright disclaimer is also a possibility, but we prefer an assignment.
+Note that the disclaimer, like an assignment, involves you sending
+signed paperwork to the FSF (simply saying "this is in the public domain"
+is not enough).  Also, a disclaimer cannot be applied to future work, it
+has to be repeated each time you want to send something new.
+
+We can accept small changes (roughly, fewer than 15 lines) without
+an assignment.  This is a cumulative limit (e.g. three separate 5 line
+patches) over all your contributions.
 
 @node Service
 @section How To Get Help with GNU Emacs
@@ -1211,8 +1417,8 @@ file in the Emacs distribution.
 @cindex help-gnu-emacs mailing list
 @cindex gnu.emacs.help newsgroup
 
-If you need help installing, using or changing GNU Emacs, there are two
-ways to find it:
+If you need help installing, using or changing GNU Emacs, there are
+two ways to find it:
 
 @itemize @bullet
 @item
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 3621c56..ad9af13 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,129 @@
+2014-12-27  Glenn Morris  <address@hidden>
+
+       * control.texi (Pattern matching case statement):
+       * os.texi (Desktop Notifications):
+       * modes.texi (Defining Minor Modes, SMIE Lexer): Markup fixes.
+
+2014-12-27  Eli Zaretskii  <address@hidden>
+
+       * windows.texi (Recombining Windows): Index subject of sections.
+
+       * variables.texi (Variables with Restricted Values)
+       (Generalized Variables): Index subject of sections.
+
+       * text.texi (Buffer Contents, Examining Properties)
+       (Changing Properties, Property Search, Substitution): Index
+       subject of sections.
+
+       * syntax.texi (Motion and Syntax, Parsing Expressions)
+       (Motion via Parsing, Position Parse, Control Parsing): Index
+       subject of sections.
+
+       * strings.texi (Predicates for Strings, Creating Strings)
+       (Modifying Strings, Text Comparison): Index subject of sections.
+
+       * searching.texi (Syntax of Regexps, Regexp Special)
+       (Regexp Functions, Regexp Functions): Index subject of sections.
+
+       * processes.texi (Subprocess Creation, Process Information): Index
+       subject of sections.
+
+       * positions.texi (Screen Lines): Index subject of sections.
+
+       * nonascii.texi (Scanning Charsets, Specifying Coding Systems):
+       Index subject of sections.
+
+       * minibuf.texi (Text from Minibuffer, Object from Minibuffer)
+       (Multiple Queries, Minibuffer Contents): Index subject of
+       sections.
+
+       * markers.texi (Predicates on Markers, Creating Markers)
+       (Information from Markers, Moving Markers): Index subject of
+       sections.
+
+       * macros.texi (Defining Macros, Problems with Macros): Index
+       subject of sections.
+
+       * loading.texi (Loading Non-ASCII, Where Defined): Index subject
+       of sections.
+
+       * lists.texi (List-related Predicates, List Variables, Setcar)
+       (Setcdr, Plist Access): Index subject of sections.
+
+       * keymaps.texi (Controlling Active Maps, Scanning Keymaps)
+       (Modifying Menus): Index subject of sections.
+
+       * help.texi (Accessing Documentation, Help Functions): Index
+       subject of sections.
+
+       * hash.texi (Hash Access): Index subject of sections.
+
+       * functions.texi (Core Advising Primitives)
+       (Advising Named Functions, Porting old advices): Index subject of
+       sections.
+
+       * frames.texi (Creating Frames, Initial Parameters)
+       (Position Parameters, Buffer Parameters, Minibuffers and Frames)
+       (Pop-Up Menus, Drag and Drop): Index subject of sections.
+
+       * files.texi (Visiting Functions, Kinds of Files)
+       (Unique File Names): Index subject of sections.
+
+       * display.texi (Refresh Screen, Echo Area Customization)
+       (Warning Variables, Warning Options, Delayed Warnings)
+       (Temporary Displays, Managing Overlays, Overlay Properties)
+       (Finding Overlays, Size of Displayed Text, Defining Faces)
+       (Attribute Functions, Displaying Faces, Face Remapping)
+       (Basic Faces, Font Lookup, Fontsets, Replacing Specs)
+       (Defining Images, Showing Images): Index subject of sections.
+
+       * debugging.texi (Debugging, Explicit Debug)
+       (Invoking the Debugger, Excess Open, Excess Close): Index subject
+       of sections.
+
+       * customize.texi (Defining New Types, Applying Customizations)
+       (Custom Themes): Index subject of sections.
+
+       * control.texi (Sequencing, Combining Conditions)
+       (Processing of Errors, Cleanups): Index subject of sections.
+
+       * compile.texi (Eval During Compile): Index subject of sections.
+
+       * commands.texi (Using Interactive, Distinguish Interactive)
+       (Command Loop Info, Classifying Events, Event Mod)
+       (Invoking the Input Method): Index subject of sections.
+
+       * buffers.texi (Buffer List, Buffer Gap): Index subject of sections.
+
+       * backups.texi (Making Backups, Numbered Backups, Backup Names)
+       (Reverting): Index subject of sections.
+
+       * abbrevs.texi (Abbrev Tables, Defining Abbrevs, Abbrev Files)
+       (Abbrev Expansion, Standard Abbrev Tables, Abbrev Properties)
+       (Abbrev Table Properties): Index subject of sections.
+
+       * os.texi (Time of Day, Time Conversion, Time Parsing)
+       (Time Calculations, Idle Timers): Index subject of sections.
+
+2014-12-25  Martin Rudalics  <address@hidden>
+
+       * windows.texi (Windows): Resync @menu order with @node order.
+
+       * minibuf.texi (Minibuffer Windows): Add descriptions of
+       `resize-mini-windows' and `max-mini-window-height'.
+
+2014-12-25  Glenn Morris  <address@hidden>
+
+       * windows.texi (Windows): Sync @menu order with @node order.
+
+       * sequences.texi (Sequence Functions): Copyedits.
+
+       * control.texi (Pattern matching case statement):
+       * positions.texi (List Motion):
+       * streams.texi (Output Functions):
+       * strings.texi (Text Comparison):
+       * text.texi (Document Object Model): Markup fixes.
+
 2014-12-22  Paul Eggert  <address@hidden>
 
        Remove obsolete references to pre-C99 builds
@@ -18,6 +144,12 @@
 
        * display.texi (Low-Level Font): Document font-info and query-font.
 
+2014-12-18  Stefan Monnier  <address@hidden>
+
+        * display.texi (Forcing Redisplay): Remove references to
+        redisplay-dont-pause and redisplay-preemption-period (which doesn't
+        even exist).
+
 2014-12-16  Nicolas Petton  <address@hidden>
 
        * sequences.texi (Seq Library): Add documentation for seq.el.
diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi
index 73a3f5f..c00af61 100644
--- a/doc/lispref/abbrevs.texi
+++ b/doc/lispref/abbrevs.texi
@@ -59,6 +59,7 @@ expanded in the buffer.  For the user-level commands for 
abbrevs, see
 
 @node Abbrev Tables
 @section Abbrev Tables
address@hidden abbrev tables
 
   This section describes how to create and manipulate abbrev tables.
 
@@ -126,6 +127,7 @@ to add these to @var{name} separately.)
 
 @node Defining Abbrevs
 @section Defining Abbrevs
address@hidden defining abbrevs
 
   @code{define-abbrev} is the low-level basic function for defining an
 abbrev in an abbrev table.
@@ -181,6 +183,7 @@ callers.
 
 @node Abbrev Files
 @section Saving Abbrevs in Files
address@hidden save abbrevs in files
 
   A file of saved abbrev definitions is actually a file of Lisp code.
 The abbrevs are saved in the form of a Lisp program to define the same
@@ -232,6 +235,9 @@ define the same abbrevs.  If @var{filename} is @code{nil} 
or omitted,
 
 @node Abbrev Expansion
 @section Looking Up and Expanding Abbreviations
address@hidden looking up abbrevs
address@hidden expanding abbrevs
address@hidden abbrevs, looking up and expanding
 
   Abbrevs are usually expanded by certain interactive commands,
 including @code{self-insert-command}.  This section describes the
@@ -367,6 +373,7 @@ definitions of @code{local-abbrev-table} and 
@code{text-mode-abbrev-table}.
 
 @node Standard Abbrev Tables
 @section Standard Abbrev Tables
address@hidden standard abbrev tables
 
   Here we list the variables that hold the abbrev tables for the
 preloaded major modes of Emacs.
@@ -409,6 +416,7 @@ Properties}.
 
 @node Abbrev Properties
 @section Abbrev Properties
address@hidden abbrev properties
 
 Abbrevs have properties, some of which influence the way they work.
 You can provide them as arguments to @code{define-abbrev}, and
@@ -449,6 +457,7 @@ modifies the capitalization of the expansion.
 
 @node Abbrev Table Properties
 @section Abbrev Table Properties
address@hidden abbrev table properties
 
 Like abbrevs, abbrev tables have properties, some of which influence
 the way they work.  You can provide them as arguments to
diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi
index 63f8f22..ca30f3e 100644
--- a/doc/lispref/backups.texi
+++ b/doc/lispref/backups.texi
@@ -50,6 +50,7 @@ don't want them any more, or Emacs can delete them 
automatically.
 
 @node Making Backups
 @subsection Making Backup Files
address@hidden making backup files
 
 @defun backup-buffer
   This function makes a backup of the file visited by the current
@@ -238,6 +239,7 @@ The default is 200.
 
 @node Numbered Backups
 @subsection Making and Deleting Numbered Backup Files
address@hidden numbered backups
 
   If a file's name is @file{foo}, the names of its numbered backup
 versions are @address@hidden, for various integers @var{v}, like
@@ -299,6 +301,7 @@ file.  The default address@hidden
 
 @node Backup Names
 @subsection Naming Backup Files
address@hidden naming backup files
 
   The functions in this section are documented mainly because you can
 customize the naming conventions for backup files by redefining them.
@@ -668,6 +671,7 @@ not initialize @code{auto-save-list-file-name}.
 
 @node Reverting
 @section Reverting
address@hidden reverting buffers
 
   If you have made extensive changes to a file and then change your mind
 about them, you can get rid of them by reading in the previous version
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index 5ac2d67..7c4fb87 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -762,6 +762,7 @@ signal an error if the current buffer is read-only.
 @node Buffer List
 @section The Buffer List
 @cindex buffer list
address@hidden listing all buffers
 
   The @dfn{buffer list} is a list of all live buffers.  The order of the
 buffers in this list is based primarily on how recently each buffer has
@@ -1215,6 +1216,7 @@ in the text it is swapped with will not interfere with 
auto-saving.
 
 @node Buffer Gap
 @section The Buffer Gap
address@hidden buffer gap
 
   Emacs buffers are implemented using an invisible @dfn{gap} to make
 insertion and deletion faster.  Insertion works by filling in part of
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index e5db4d8..c2b7038 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -147,6 +147,7 @@ code.
 @node Using Interactive
 @subsection Using @code{interactive}
 @cindex arguments, interactive entry
address@hidden interactive spec, using
 
   This section describes how to write the @code{interactive} form that
 makes a Lisp function an interactively-callable command, and how to
@@ -747,6 +748,8 @@ part of the prompt.
 
 @node Distinguish Interactive
 @section Distinguish Interactive Calls
address@hidden distinguish interactive calls
address@hidden is this call interactive
 
   Sometimes a command should display additional visual feedback (such
 as an informative message in the echo area) for interactive calls
@@ -835,6 +838,7 @@ Here is another example that contrasts direct and indirect 
calls to
 
 @node Command Loop Info
 @section Information from the Command Loop
address@hidden command loop variables
 
 The editor command loop sets several Lisp variables to keep status
 records for itself and for commands that are run.  With the exception of
@@ -1859,6 +1863,7 @@ bind it to the @code{signal usr1} event sequence:
 @node Classifying Events
 @subsection Classifying Events
 @cindex event type
address@hidden classifying events
 
   Every event has an @dfn{event type}, which classifies the event for
 key binding purposes.  For a keyboard event, the event type equals the
@@ -2584,6 +2589,9 @@ then continues to wait for a valid input character, or 
keyboard-quit.
 
 @node Event Mod
 @subsection Modifying and Translating Input Events
address@hidden modifiers of events
address@hidden translating input events
address@hidden event translation
 
   Emacs modifies every event it reads according to
 @code{extra-keyboard-modifiers}, then translates it through
@@ -2665,6 +2673,7 @@ at the level of @code{read-key-sequence}.
 
 @node Invoking the Input Method
 @subsection Invoking the Input Method
address@hidden invoking input method
 
   The event-reading functions invoke the current input method, if any
 (@pxref{Input Methods}).  If the value of @code{input-method-function}
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index fe492df..cb6cba9 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -347,6 +347,7 @@ it does nothing.  It always returns @var{function}.
 
 @node Eval During Compile
 @section Evaluation During Compilation
address@hidden eval during compilation
 
   These features permit you to write code to be evaluated during
 compilation of a program.
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index 5cf6368..1e9f346 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -44,6 +44,8 @@ structure constructs (@pxref{Macros}).
 
 @node Sequencing
 @section Sequencing
address@hidden sequencing
address@hidden sequential execution
 
   Evaluating forms in the order they appear is the most common way
 control passes from one form to another.  In some contexts, such as in a
@@ -368,11 +370,11 @@ that location.
 More specifically, a Q-pattern can take the following forms:
 @table @code
 @item (@var{qpattern1} . @var{qpattern2})
-This pattern matches any cons cell whose @code{car} matches @var{QPATTERN1} and
-whose @code{cdr} matches @var{PATTERN2}.
address@hidden address@hidden qpattern2..qpatternm}]
-This pattern matches a vector of length @code{M} whose 0..(M-1)th
-elements match @var{QPATTERN1}, @address@hidden,
+This pattern matches any cons cell whose @code{car} matches @var{qpattern1} and
+whose @code{cdr} matches @var{pattern2}.
address@hidden address@hidden @var{qpattern2} @dots{} @var{qpatternm}]
+This pattern matches a vector of length @var{M} whose 0..(@var{M}-1)th
+elements match @var{qpattern1}, @var{qpattern2} @dots{} @var{qpatternm},
 respectively.
 @item @var{atom}
 This pattern matches any atom @code{equal} to @var{atom}.
@@ -405,6 +407,7 @@ the variable @code{x}.
 
 @node Combining Conditions
 @section Constructs for Combining Conditions
address@hidden combining conditions
 
   This section describes three constructs that are often used together
 with @code{if} and @code{cond} to express complicated conditions.  The
@@ -962,6 +965,7 @@ concept of continuable errors.
 
 @node Processing of Errors
 @subsubsection How Emacs Processes Errors
address@hidden processing of errors
 
 When an error is signaled, @code{signal} searches for an active
 @dfn{handler} for the error.  A handler is a sequence of Lisp
@@ -1367,6 +1371,7 @@ and their conditions.
 
 @node Cleanups
 @subsection Cleaning Up from Nonlocal Exits
address@hidden nonlocal exits, cleaning up
 
   The @code{unwind-protect} construct is essential whenever you
 temporarily put a data structure in an inconsistent state; it permits
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index 0c6497f..cdf599b 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -1227,6 +1227,8 @@ arguments, which will be used when creating the 
@code{radio-button} or
 
 @node Defining New Types
 @subsection Defining New Types
address@hidden customization types, define new
address@hidden define new customization types
 
 In the previous sections we have described how to construct elaborate
 type specifications for @code{defcustom}.  In some cases you may want
@@ -1296,6 +1298,7 @@ its @code{:type} argument only when needed.
 
 @node Applying Customizations
 @section Applying Customizations
address@hidden applying customizations
 
 The following functions are responsible for installing the user's
 customization settings for variables and faces, respectively.  When
@@ -1353,6 +1356,7 @@ evaluated.  @var{comment} is a string describing the 
customization.
 @node Custom Themes
 @section Custom Themes
 
address@hidden custom themes
   @dfn{Custom themes} are collections of settings that can be enabled
 or disabled as a unit.  @xref{Custom Themes,,, emacs, The GNU Emacs
 Manual}.  Each Custom theme is defined by an Emacs Lisp source file,
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index 66f12a0..0b3c47f 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -5,6 +5,7 @@
 @c See the file elisp.texi for copying conditions.
 @node Debugging
 @chapter Debugging Lisp Programs
address@hidden debugging lisp programs
 
   There are several ways to find and investigate problems in an Emacs
 Lisp program.
@@ -284,6 +285,8 @@ not currently set up to break on entry.
 
 @node Explicit Debug
 @subsection Explicit Entry to the Debugger
address@hidden debugger, explicit entry
address@hidden force entry to debugger
 
   You can cause the debugger to be called at a certain point in your
 program by writing the expression @code{(debug)} at that point.  To do
@@ -456,6 +459,7 @@ Toggle the display of local variables of the current stack 
frame.
 
 @node Invoking the Debugger
 @subsection Invoking the Debugger
address@hidden invoking lisp debugger
 
   Here we describe in full detail the function @code{debug} that is used
 to invoke the debugger.
@@ -707,6 +711,7 @@ find the mismatch.)
 
 @node Excess Open
 @subsection Excess Open Parentheses
address@hidden excess open parentheses
 
   The first step is to find the defun that is unbalanced.  If there is
 an excess open parenthesis, the way to do this is to go to the end of
@@ -741,6 +746,7 @@ anything.
 
 @node Excess Close
 @subsection Excess Close Parentheses
address@hidden excess close parentheses
 
   To deal with an excess close parenthesis, first go to the beginning
 of the file, then type @kbd{C-u -1 C-M-u} to find the end of the first
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 48860c8..e26d649 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -39,6 +39,8 @@ that Emacs presents to the user.
 
 @node Refresh Screen
 @section Refreshing the Screen
address@hidden refresh the screen
address@hidden screen refresh
 
   The function @code{redraw-frame} clears and redisplays the entire
 contents of a given frame (@pxref{Frames}).  This is useful if the
@@ -534,6 +536,7 @@ are logged that share a common prefix ending in @samp{...}.
 
 @node Echo Area Customization
 @subsection Echo Area Customization
address@hidden echo area customization
 
   These variables control details of how the echo area works.
 
@@ -661,6 +664,7 @@ specify a specific warning type.
 
 @node Warning Variables
 @subsection Warning Variables
address@hidden warning variables
 
   Programs can customize how their warnings appear by binding
 the variables described in this section.
@@ -738,6 +742,7 @@ all.
 
 @node Warning Options
 @subsection Warning Options
address@hidden warning options
 
   These variables are used by users to control what happens
 when a Lisp program reports a warning.
@@ -771,6 +776,7 @@ that warning is not logged.
 
 @node Delayed Warnings
 @subsection Delayed Warnings
address@hidden delayed warnings
 
 Sometimes, you may wish to avoid showing a warning while a command is
 running, and only show it only after the end of the command.  You can
@@ -1094,6 +1100,8 @@ You can use a display table to substitute other text for 
the ellipsis
 
 @node Temporary Displays
 @section Temporary Displays
address@hidden temporary display
address@hidden temporary buffer display
 
   Temporary displays are used by Lisp programs to put output into a
 buffer and then present it to the user for perusal rather than for
@@ -1305,6 +1313,8 @@ inside the overlay or outside, and likewise for the end 
of the overlay.
 
 @node Managing Overlays
 @subsection Managing Overlays
address@hidden managing overlays
address@hidden overlays, managing
 
   This section describes the functions to create, delete and move
 overlays, and to examine their contents.  Overlay changes are not
@@ -1465,6 +1475,7 @@ faster if you do @code{(overlay-recenter (point-max))} 
first.
 
 @node Overlay Properties
 @subsection Overlay Properties
address@hidden overlay properties
 
   Overlay properties are like text properties in that the properties that
 alter how a character is displayed can come from either source.  But in
@@ -1717,6 +1728,8 @@ Properties}.
 
 @node Finding Overlays
 @subsection Searching for Overlays
address@hidden searching for overlays
address@hidden overlays, searching for
 
 @defun overlays-at pos &optional sorted
 This function returns a list of all the overlays that cover the character at
@@ -1784,6 +1797,8 @@ changes.
 
 @node Size of Displayed Text
 @section Size of Displayed Text
address@hidden size of text on display
address@hidden character width on display
 
 Since not all characters have the same width, these functions let you
 check the width of a character.  @xref{Primitive Indent}, and
@@ -2274,6 +2289,7 @@ suitable for use with @code{:stipple} (see above).  It 
returns
 
 @node Defining Faces
 @subsection Defining Faces
address@hidden defining faces
 
 @cindex face spec
   The usual way to define a face is through the @code{defface} macro.
@@ -2448,6 +2464,7 @@ Any other value of @var{spec-type} is reserved for 
internal use.
 
 @node Attribute Functions
 @subsection Face Attribute Functions
address@hidden face attributes, access and modification
 
   This section describes functions for directly accessing and
 modifying the attributes of a named face.
@@ -2649,6 +2666,8 @@ a address@hidden @code{:inverse-video} attribute.
 
 @node Displaying Faces
 @subsection Displaying Faces
address@hidden displaying faces
address@hidden face merging
 
   When Emacs displays a given piece of text, the visual appearance of
 the text may be determined by faces drawn from different sources.  If
@@ -2704,6 +2723,7 @@ at the next level of face merging.
 
 @node Face Remapping
 @subsection Face Remapping
address@hidden face remapping
 
   The variable @code{face-remapping-alist} is used for buffer-local or
 global changes in the appearance of a face.  For instance, it is used
@@ -2901,6 +2921,7 @@ usually assign faces to around 400 to 600 characters at 
each call.
 
 @node Basic Faces
 @subsection Basic Faces
address@hidden basic faces
 
 If your Emacs Lisp program needs to assign some faces to text, it is
 often a good idea to use certain existing faces or inherit from them,
@@ -3067,6 +3088,8 @@ nominal heights and widths would suggest.
 
 @node Font Lookup
 @subsection Looking Up Fonts
address@hidden font lookup
address@hidden looking up fonts
 
 @defun x-list-fonts name &optional reference-face frame maximum width
 This function returns a list of available font names that match
@@ -3124,6 +3147,7 @@ encoding of the font.
 
 @node Fontsets
 @subsection Fontsets
address@hidden fontset
 
   A @dfn{fontset} is a list of fonts, each assigned to a range of
 character codes.  An individual font cannot display the whole range of
@@ -4237,6 +4261,7 @@ display specifications and what they mean.
 
 @node Replacing Specs
 @subsection Display Specs That Replace The Text
address@hidden replacing display specs
 
   Some kinds of display specifications specify something to display
 instead of the text that has the property.  These are called
@@ -5113,6 +5138,7 @@ Supports the @code{:index} property.  @xref{Multi-Frame 
Images}.
 
 @node Defining Images
 @subsection Defining Images
address@hidden define image
 
   The functions @code{create-image}, @code{defimage} and
 @code{find-image} provide convenient ways to create image descriptors.
@@ -5240,6 +5266,7 @@ Here is an example of using 
@code{image-load-path-for-library}:
 
 @node Showing Images
 @subsection Showing Images
address@hidden show image
 
   You can use an image descriptor by setting up the @code{display}
 property yourself, but it is easier to use the functions in this
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index b79d5df..55da631 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -81,6 +81,8 @@ computer program, however, it is good to keep the distinction 
in mind.
 
 @node Visiting Functions
 @subsection Functions for Visiting Files
address@hidden visiting files, functions for
address@hidden how to visit files
 
   This section describes the functions normally used to visit files.
 For historical reasons, these functions have names starting with
@@ -948,6 +950,8 @@ Unix.  These conventions are also followed by 
@code{file-attributes}
 
 @node Kinds of Files
 @subsection Distinguishing Kinds of Files
address@hidden file classification
address@hidden classification of file types
 
   This section describes how to distinguish various kinds of files, such
 as directories, symbolic links, and ordinary files.
@@ -2300,6 +2304,8 @@ through the immediately preceding @samp{/}).
 
 @node Unique File Names
 @subsection Generating Unique File Names
address@hidden unique file names
address@hidden temporary files
 
   Some programs need to write temporary files.  Here is the usual way to
 construct a name for such a file:
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 0bded22..c1da337 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -106,6 +106,7 @@ for @code{framep} above.
 
 @node Creating Frames
 @section Creating Frames
address@hidden frame creation
 
 To create a new frame, call the function @code{make-frame}.
 
@@ -484,6 +485,7 @@ parameter values to frames that will be created henceforth.
 
 @node Initial Parameters
 @subsection Initial Frame Parameters
address@hidden parameters of initial frame
 
 You can specify the parameters for the initial startup frame by
 setting @code{initial-frame-alist} in your init file (@pxref{Init
@@ -623,6 +625,7 @@ named, this parameter will be @code{nil}.
 @node Position Parameters
 @subsubsection Position Parameters
 @cindex window position on display
address@hidden frame position
 
   Position parameters' values are normally measured in pixels, but on
 text terminals they count characters or lines instead.
@@ -833,6 +836,8 @@ integer).  @xref{Line Height}, for more information.
 
 @node Buffer Parameters
 @subsubsection Buffer Parameters
address@hidden frame, which buffers to display
address@hidden buffers to display on frame
 
   These frame parameters, meaningful on all kinds of terminals, deal
 with which buffers have been, or should, be displayed in the frame.
@@ -1663,6 +1668,7 @@ is used whenever that frame is selected.  If the frame 
has a minibuffer,
 you can get it with @code{minibuffer-window} (@pxref{Definition of
 minibuffer-window}).
 
address@hidden frame without a minibuffer
 However, you can also create a frame with no minibuffer.  Such a frame
 must use the minibuffer window of some other frame.  When you create the
 frame, you can explicitly specify the minibuffer window to use (in some
@@ -2070,6 +2076,7 @@ allows to know if the pointer has been hidden.
 
 @node Pop-Up Menus
 @section Pop-Up Menus
address@hidden menus, popup
 
   A Lisp program can pop up a menu so that the user can choose an
 alternative with the mouse.  On a text terminal, if the mouse is not
@@ -2334,6 +2341,7 @@ clipboard as empty.
 
 @node Drag and Drop
 @section Drag and Drop
address@hidden drag and drop
 
 @vindex x-dnd-test-function
 @vindex x-dnd-known-types
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 0ac084b..9555c21 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1214,7 +1214,8 @@ ways to do it.  The added function is also called a piece 
of @emph{advice}.
 @end menu
 
 @node Core Advising Primitives
address@hidden Primitives to manipulate advice
address@hidden Primitives to manipulate advices
address@hidden advice, add and remove
 
 @defmac add-function where place function &optional props
 This macro is the handy way to add the advice @var{function} to the function
@@ -1316,6 +1317,7 @@ the current prefix argument.
 
 @node Advising Named Functions
 @subsection Advising Named Functions
address@hidden advising named functions
 
 A common use of advice is for named functions and macros.
 You could just use @code{add-function} as in:
@@ -1508,6 +1510,7 @@ More specifically, the composition of the two functions 
behaves like:
 
 @node Porting old advice
 @subsection Adapting code using the old defadvice
address@hidden old advices, porting
 
 A lot of code uses the old @code{defadvice} mechanism, which is largely made
 obsolete by the new @code{advice-add}, whose implementation and semantics is
diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi
index 536777a..323a2ed 100644
--- a/doc/lispref/hash.texi
+++ b/doc/lispref/hash.texi
@@ -188,6 +188,8 @@ Such objects may be added to the hash table after it is 
created.
 
 @node Hash Access
 @section Hash Table Access
address@hidden accessing hash tables
address@hidden hash table access
 
   This section describes the functions for accessing and storing
 associations in a hash table.  In general, any Lisp object can be used
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 20fb0e6..2e3b51e 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -90,6 +90,7 @@ hyperlinks in the @file{*Help*} buffer.)
 
 @node Accessing Documentation
 @section Access to Documentation Strings
address@hidden accessing documentation strings
 
 @defun documentation-property symbol property &optional verbatim
 This function returns the documentation string recorded in
@@ -507,6 +508,7 @@ address@hidden, the return value is always a vector.
 
 @node Help Functions
 @section Help Functions
address@hidden help functions
 
   Emacs provides a variety of built-in help functions, all accessible to
 the user as subcommands of the prefix @kbd{C-h}.  For more information
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index e652da0..91dc5ea 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -782,6 +782,7 @@ Lookup}.
 
 @node Controlling Active Maps
 @section Controlling the Active Keymaps
address@hidden active keymap, controlling
 
 @defvar global-map
 This variable contains the default global keymap that maps Emacs
@@ -1806,6 +1807,8 @@ local map.
 
 @node Scanning Keymaps
 @section Scanning Keymaps
address@hidden scanning keymaps
address@hidden keymaps, scanning
 
   This section describes functions used to scan all the current keymaps
 for the sake of printing help information.
@@ -2775,6 +2778,7 @@ function keys.
 
 @node Modifying Menus
 @subsection Modifying Menus
address@hidden menu modification
 
   When you insert a new item in an existing menu, you probably want to
 put it in a particular place among the menu's existing items.  If you
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index 21be5cc..e438335 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -84,6 +84,8 @@ structure made out of cons cells as a @dfn{list structure}.
 
 @node List-related Predicates
 @section Predicates on Lists
address@hidden predicates for lists
address@hidden list predicates
 
   The following predicates test whether a Lisp object is an atom,
 whether it is a cons cell or is a list, or whether it is the
@@ -662,6 +664,8 @@ Some examples:
 
 @node List Variables
 @section Modifying List Variables
address@hidden modify a list
address@hidden list modification
 
   These functions, and one macro, provide convenient ways
 to modify a list which is stored in a variable.
@@ -818,6 +822,8 @@ new @sc{car} or @sc{cdr}.
 
 @node Setcar
 @subsection Altering List Elements with @code{setcar}
address@hidden replace list element
address@hidden list, replace element
 
   Changing the @sc{car} of a cons cell is done with @code{setcar}.  When
 used on a list, @code{setcar} replaces one element of a list with a
@@ -923,6 +929,7 @@ x2:              |
 
 @node Setcdr
 @subsection Altering the CDR of a List
address@hidden replace part of list
 
   The lowest-level primitive for modifying a @sc{cdr} is @code{setcdr}:
 
@@ -1759,6 +1766,8 @@ and later discarded; this is not possible with a property 
list.
 
 @node Plist Access
 @subsection Property Lists Outside Symbols
address@hidden plist access
address@hidden accessing plist properties
 
   The following functions can be used to manipulate property lists.
 They all compare property names using @code{eq}.
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index a07c2e8..a0393c9 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -419,6 +419,8 @@ the shadowed files as a string.
 
 @node Loading Non-ASCII
 @section Loading address@hidden Characters
address@hidden loading, and non-ASCII characters
address@hidden non-ASCII characters in loaded files
 
   When Emacs Lisp programs contain string constants with address@hidden
 characters, these can be represented within Emacs either as unibyte
@@ -907,6 +909,8 @@ with a call to @code{provide}.  The order of the elements 
in the
 
 @node Where Defined
 @section Which File Defined a Certain Symbol
address@hidden symbol, where defined
address@hidden where was a symbol defined
 
 @defun symbol-file symbol &optional type
 This function returns the name of the file that defined @var{symbol}.
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index 9be12fa..8a4741c 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -194,6 +194,8 @@ During Compile}).
 
 @node Defining Macros
 @section Defining Macros
address@hidden defining macros
address@hidden macro, how to define
 
   A Lisp macro object is a list whose @sc{car} is @code{macro}, and
 whose @sc{cdr} is a function.  Expansion of the macro works
@@ -253,6 +255,7 @@ Form}.
 
 @node Problems with Macros
 @section Common Problems Using Macros
address@hidden macro caveats
 
   Macro expansion can have counterintuitive consequences.  This
 section describes some important consequences that can lead to
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index 51b87ab..5902a3a 100644
--- a/doc/lispref/markers.texi
+++ b/doc/lispref/markers.texi
@@ -118,6 +118,8 @@ m1
 
 @node Predicates on Markers
 @section Predicates on Markers
address@hidden predicates for markers
address@hidden markers, predicates for
 
   You can test an object to see whether it is a marker, or whether it is
 either an integer or a marker.  The latter test is useful in connection
@@ -141,6 +143,8 @@ integer or floating point) or a marker, @code{nil} 
otherwise.
 
 @node Creating Markers
 @section Functions that Create Markers
address@hidden creating markers
address@hidden marker creation
 
   When you create a new marker, you can make it point nowhere, or point
 to the present position of point, or to the beginning or end of the
@@ -269,6 +273,7 @@ if they both point nowhere.
 
 @node Information from Markers
 @section Information from Markers
address@hidden marker information
 
   This section describes the functions for accessing the components of a
 marker object.
@@ -342,6 +347,8 @@ specify the insertion type, create them with insertion type
 
 @node Moving Markers
 @section Moving Marker Positions
address@hidden moving markers
address@hidden marker, how to move position
 
   This section describes how to change the position of an existing
 marker.  When you do this, be sure you know whether the marker is used
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 1c6a74a..e6d6ad0 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -107,6 +107,7 @@ are available in batch mode.
 
 @node Text from Minibuffer
 @section Reading Text Strings with the Minibuffer
address@hidden minibuffer input, reading text strings
 
   The most basic primitive for minibuffer input is
 @code{read-from-minibuffer}, which can be used to read either a string
@@ -390,6 +391,7 @@ following bindings, in addition to those of 
@code{minibuffer-local-map}:
 
 @node Object from Minibuffer
 @section Reading Lisp Objects with the Minibuffer
address@hidden minibuffer input, reading lisp objects
 
   This section describes functions for reading Lisp objects with the
 minibuffer.
@@ -2044,6 +2046,7 @@ Do you really want to remove everything? (yes or no)
 
 @node Multiple Queries
 @section Asking Multiple Y-or-N Questions
address@hidden multiple yes-or-no questions
 
   When you have a series of similar questions to ask, such as ``Do you
 want to save this buffer'' for each buffer in turn, you should use
@@ -2218,8 +2221,8 @@ contents of the minibuffer before the point.
 @section Minibuffer Windows
 @cindex minibuffer windows
 
-  These functions access and select minibuffer windows
-and test whether they are active.
+These functions access and select minibuffer windows, test whether they
+are active and control how they get resized.
 
 @defun active-minibuffer-window
 This function returns the currently active minibuffer window, or
@@ -2260,8 +2263,33 @@ This function returns address@hidden if @var{window} is 
the currently
 active minibuffer window.
 @end defun
 
+The following two options control whether minibuffer windows are resized
+automatically and how large they can get in the process.
+
address@hidden resize-mini-windows
+This option specifies whether minibuffer windows are resized
+automatically.  The default value is @code{grow-only}, which means that
+a minibuffer window by default expands automatically to accommodate the
+text it displays and shrinks back to one line as soon as the minibuffer
+gets empty.  If the value is @code{t}, Emacs will always try to fit the
+height of a minibuffer window to the text it displays (with a minimum of
+one line).  If the value is @code{nil}, a minibuffer window never
+changes size automatically.  In that case the window resizing commands
+(@pxref{Resizing Windows}) can be used to adjust its height.
address@hidden defopt
+
address@hidden max-mini-window-height
+This option provides a maximum height for resizing minibuffer windows
+automatically.  A floating-point number specifies a fraction of the
+frame's height; an integer specifies the maximum number of lines.  The
+default value is 0.25.
address@hidden defopt
+
+
 @node Minibuffer Contents
 @section Minibuffer Contents
address@hidden access minibuffer contents
address@hidden minibuffer contents, accessing
 
   These functions access the minibuffer prompt and contents.
 
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index d67bac6..509982a 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1490,7 +1490,7 @@ A positive prefix argument enables the mode, any other 
prefix argument
 disables it.  From Lisp, an argument of @code{toggle} toggles the mode,
 whereas an omitted or @code{nil} argument enables the mode.
 This makes it easy to enable the minor mode in a major mode hook, for example.
-If @var{doc} is nil, the macro supplies a default documentation string
+If @var{doc} is @code{nil}, the macro supplies a default documentation string
 explaining the above.
 
 By default, it also defines a variable named @var{mode}, which is set to
@@ -3659,7 +3659,7 @@ For example:
 Notice how those lexers return the empty string when in front of
 parentheses.  This is because SMIE automatically takes care of the
 parentheses defined in the syntax table.  More specifically if the lexer
-returns nil or an empty string, SMIE tries to handle the corresponding
+returns @code{nil} or an empty string, SMIE tries to handle the corresponding
 text as a sexp according to syntax tables.
 
 @node SMIE Tricks
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index 902eb40..fedf933 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -783,6 +783,8 @@ of them is @code{nil}, it defaults to the first or last 
codepoint of
 
 @node Scanning Charsets
 @section Scanning for Character Sets
address@hidden scanning for character sets
address@hidden character set, searching
 
   Sometimes it is useful to find out which character set a particular
 character belongs to.  One use for this is in determining which coding
@@ -1620,6 +1622,9 @@ contents (as it usually does), it should examine the 
contents of
 
 @node Specifying Coding Systems
 @subsection Specifying a Coding System for One Operation
address@hidden specify coding system
address@hidden force coding system for operation
address@hidden coding system for operation
 
   You can specify the coding system for a specific operation by binding
 the variables @code{coding-system-for-read} and/or
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index b709447..1a6a031 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1208,6 +1208,7 @@ return value is @code{nil}.
 
 @node Time of Day
 @section Time of Day
address@hidden time of day
 
   This section explains how to determine the current time and time
 zone.
@@ -1320,6 +1321,7 @@ time zone.
 @node Time Conversion
 @section Time Conversion
 @cindex calendrical information
address@hidden time conversion
 
   These functions convert time values (@pxref{Time of Day}) into
 calendrical information and vice versa.
@@ -1415,6 +1417,9 @@ on others, years as early as 1901 do work.
 
 @node Time Parsing
 @section Parsing and Formatting Times
address@hidden time parsing
address@hidden time formatting
address@hidden formatting time values
 
   These functions convert time values to text in a string, and vice versa.
 Time values are lists of two to four integers (@pxref{Time of Day}).
@@ -1643,6 +1648,9 @@ interactively, it prints the duration in the echo area.
 
 @node Time Calculations
 @section Time Calculations
address@hidden time calculations
address@hidden comparing time values
address@hidden calendrical computations
 
   These functions perform calendrical computations using time values
 (@pxref{Time of Day}).
@@ -1823,6 +1831,7 @@ cause anything special to happen.
 
 @node Idle Timers
 @section Idle Timers
address@hidden idle timers
 
   Here is how to set up a timer that runs when Emacs is idle for a
 certain length of time.  Aside from how to set them up, idle timers
@@ -2529,7 +2538,7 @@ The server's version number.
 The specification version the server is compliant with.
 @end table
 
-If @var{SPEC_VERSION} is @code{nil}, the server supports a
+If @var{spec_version} is @code{nil}, the server supports a
 specification prior to @samp{"1.0"}.
 @end defun
 
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index e32f0ef..24ff5d8 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -465,6 +465,7 @@ beginning or end of a line.
 
 @node Screen Lines
 @subsection Motion by Screen Lines
address@hidden screen lines, moving by
 
   The line functions in the previous section count text lines, delimited
 only by newline characters.  By contrast, these functions count screen
@@ -654,9 +655,9 @@ quotes are ignored.)
 @deffn Command up-list &optional arg escape-strings no-syntax-crossing
 This function moves forward out of @var{arg} (default 1) levels of
 parentheses.  A negative argument means move backward but still to a
-less deep spot.  If @var{escape-strings} is non-nil (as it is
+less deep spot.  If @var{escape-strings} is address@hidden (as it is
 interactively), move out of enclosing strings as well. If
address@hidden is non-nil (as it is interactively), prefer
address@hidden is address@hidden (as it is interactively), prefer
 to break out of any enclosing string instead of moving to the start of
 a list broken across multiple strings.  On error, location of point is
 unspecified.
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 0952cc1..856831d 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -63,6 +63,8 @@ Processes}.
 
 @node Subprocess Creation
 @section Functions that Create Subprocesses
address@hidden create subprocess
address@hidden process creation
 
   There are three primitives that create a new subprocess in which to run
 a program.  One of them, @code{start-process}, creates an asynchronous
@@ -734,6 +736,7 @@ happen sooner or later).
 
 @node Process Information
 @section Process Information
address@hidden process information
 
   Several functions return information about processes.
 
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 992ad00..19c515f 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -257,6 +257,8 @@ it easier to verify even very complex regexps.
 
 @node Syntax of Regexps
 @subsection Syntax of Regular Expressions
address@hidden regexp syntax
address@hidden syntax of regular expressions
 
   Regular expressions have a syntax in which a few characters are
 special constructs and the rest are @dfn{ordinary}.  An ordinary
@@ -294,6 +296,7 @@ need to use one of the special regular expression 
constructs.
 
 @node Regexp Special
 @subsubsection Special Characters in Regular Expressions
address@hidden regexp, special characters in
 
   Here is a list of the characters that are special in a regular
 expression.
@@ -894,6 +897,7 @@ beyond the minimum needed to end a sentence.
 
   These functions operate on regular expressions.
 
address@hidden quote special characters in regexp
 @defun regexp-quote string
 This function returns a regular expression whose only exact match is
 @var{string}.  Using this regular expression in @code{looking-at} will
@@ -924,6 +928,7 @@ whitespace:
 @end example
 @end defun
 
address@hidden optimize regexp
 @defun regexp-opt strings &optional paren
 This function returns an efficient regular expression that will match
 any of the strings in the list @var{strings}.  This is useful when you
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 8f8cfe7..b1e315c 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -217,14 +217,14 @@ y @result{} [foo (69 2)]
 @end example
 @end defun
 
address@hidden reverse seq
address@hidden reverse sequence
 @cindex string reverse
 @cindex list reverse
 @cindex vector reverse
 @cindex sequence reverse
 This function creates a new sequence whose elements are the elements
-of @var{seq}, but in reverse order.  The original argument @var{seq}
-is @emph{not} altered.   Note that char-table cannot be reversed.
+of @var{sequence}, but in reverse order.  The original argument @var{sequence}
+is @emph{not} altered.  Note that char-tables cannot be reversed.
 
 @example
 @group
@@ -260,12 +260,12 @@ x
 @end example
 @end defun
 
address@hidden nreverse seq
address@hidden nreverse sequence
 @cindex reversing a string
 @cindex reversing a list
 @cindex reversing a vector
-  This function reverses the order of the elements of @var{seq}.
-Unlike @code{reverse} the original @var{seq} may be modified.
+  This function reverses the order of the elements of @var{sequence}.
+Unlike @code{reverse} the original @var{sequence} may be modified.
 
   For example:
 
@@ -421,22 +421,20 @@ useful example of @code{sort}.
 
 @cindex sequence functions in seq
 @cindex seq library
-  The @file{seq} library provides the following additional sequence
+  The @file{seq.el} library provides the following additional sequence
 manipulation macros and functions, prefixed with @code{seq-}.  To use
-them, you need to load the @file{seq} library first.
+them, you must first load the @file{seq} library.
 
-  All functions defined in the @code{seq} library are free of
-side-effects, meaning that sequence(s) passed as argument(s) to
-functions defined in @code{seq} are not modified.
+  All functions defined in this library are free of side-effects;
+i.e., they do not modify any sequence (list, vector, or string) that
+you pass as an argument.  Unless otherwise stated, the result is a
+sequence of the same type as the input.  For those functions that take
+a predicate, this should be a function of one argument.
 
address@hidden seq-drop seq n
-  This function returns a sequence of all but the first @var{n}
-elements of the sequence @var{seq}.
-
address@hidden may be a list, vector or string and @var{n} must be an
-integer.  The result is the same type of sequence as @var{seq}.
-
-If @var{n} is a negative integer or zero, @var{seq} is returned.
address@hidden seq-drop sequence n
+  This function returns all but the first @var{n} (an integer)
+elements of @var{sequence}.  If @var{n} is negative or zero,
+the result is @var{sequence}.
 
 @example
 @group
@@ -450,14 +448,10 @@ If @var{n} is a negative integer or zero, @var{seq} is 
returned.
 @end example
 @end defun
 
address@hidden seq-take seq n
-  This function returns a sequence of the first @var{n} elements of
address@hidden
-
address@hidden may be a list, vector or string and @var{n} must be an
-integer.  The result is the same type of sequence as @var{seq}.
-
-If @var{n} is a negative integer or zero, an empty sequence is returned.
address@hidden seq-take sequence n
+  This function returns the first @var{n} (an integer) elements of
address@hidden  If @var{n} is negative or zero, the result
+is @code{nil}.
 
 @example
 @group
@@ -471,17 +465,9 @@ If @var{n} is a negative integer or zero, an empty 
sequence is returned.
 @end example
 @end defun
 
address@hidden seq-take-while pred seq
-  This function returns a sub-sequence of the successive elements of
address@hidden for which calling @code{pred} with that element returns
-non-nil.
-
address@hidden must be a one-argument function and @var{seq} may be a
-list, vector or string.  The result is the same type of sequence as
address@hidden
-
-If evaluating @var{pred} with the first element of @var{seq} as argument
-returns @code{nil}, an empty sequence is returned.
address@hidden seq-take-while predicate sequence
+  This function returns the members of @var{sequence} in order,
+stopping before the first one for which @var{predicate} returns @code{nil}.
 
 @example
 @group
@@ -495,17 +481,9 @@ returns @code{nil}, an empty sequence is returned.
 @end example
 @end defun
 
address@hidden seq-drop-while pred seq
-  This function returns a sub-sequence of @var{seq} from the first
-element for which calling @var{pred} with that element returns
address@hidden
-
address@hidden must be a one-argument function and @var{seq} may be a
-list, vector or string.  The result is the same type of sequence as
address@hidden
-
-If evaluating @var{pred} with every element of @var{seq} returns
address@hidden, @var{seq} is returned.
address@hidden seq-drop-while predicate sequence
+  This function returns the members of @var{sequence} in order,
+starting from the first one for which @var{predicate} returns @code{nil}.
 
 @example
 @group
@@ -519,13 +497,10 @@ If evaluating @var{pred} with every element of @var{seq} 
returns
 @end example
 @end defun
 
address@hidden seq-filter pred seq
address@hidden seq-filter predicate sequence
 @cindex filtering sequences
-  This function returns a list of all the elements in @var{seq} for
-which calling @var{pred} with that element returns non-nil.
-
address@hidden must be a one-argument function and @var{seq} may be a
-list, vector or string.
+  This function returns a list of all the elements in @var{sequence}
+for which @var{predicate} returns address@hidden
 
 @example
 @group
@@ -539,13 +514,10 @@ list, vector or string.
 @end example
 @end defun
 
address@hidden seq-remove pred seq
address@hidden seq-remove predicate sequence
 @cindex removing from sequences
-  This function returns a list of all the elements in @var{seq} for
-which calling @var{pred} with that element returns @code{nil}.
-
address@hidden must be a one-argument function and @var{seq} may be a
-list, vector or string.
+  This function returns a list of all the elements in @var{sequence}
+for which @var{predicate} returns @code{nil}.
 
 @example
 @group
@@ -559,18 +531,15 @@ list, vector or string.
 @end example
 @end defun
 
address@hidden seq-reduce function seq initial-value
address@hidden seq-reduce function sequence initial-value
 @cindex reducing sequences
   This function returns the result of calling @var{function} with
address@hidden and the first element of @var{seq}, then calling
address@hidden with that result and the second element of @var{seq},
-then with that result and the third element of @var{seq}, etc.
-
address@hidden must be a two-arguments function and @var{seq} may be a
-list, vector or string.
-
-If @var{seq} is empty, @var{initial-value} is returned and
address@hidden is not called.
address@hidden and the first element of @var{sequence}, then calling
address@hidden with that result and the second element of @var{sequence},
+then with that result and the third element of @var{sequence}, etc.
address@hidden should be a function of two arguments.  If
address@hidden is empty, this returns @var{initial-value} without
+calling @var{function}.
 
 @example
 @group
@@ -588,14 +557,9 @@ If @var{seq} is empty, @var{initial-value} is returned and
 @end example
 @end defun
 
address@hidden seq-some-p pred seq
-  This function returns any element in @var{seq} for which calling
address@hidden with that element returns non-nil.  If successively calling
address@hidden with each element of @var{seq} always returns @code{nil},
address@hidden is returned.
-
address@hidden must be a one-argument function and @var{seq} may be a
-list, vector or string.
address@hidden seq-some-p predicate sequence
+  This function returns the first member of sequence for which @var{predicate}
+returns address@hidden
 
 @example
 @group
@@ -609,12 +573,9 @@ list, vector or string.
 @end example
 @end defun
 
address@hidden seq-every-p pred seq
-  This function returns non-nil if successively calling @var{pred} with
-each element of @var{seq} always returns non-nil, @code{nil} otherwise.
-
address@hidden must be a one-argument function and @var{seq} may be a
-list, vector or string.
address@hidden seq-every-p predicate sequence
+  This function returns address@hidden if applying @var{predicate}
+to every element of @var{sequence} returns address@hidden
 
 @example
 @group
@@ -628,11 +589,8 @@ list, vector or string.
 @end example
 @end defun
 
address@hidden seq-empty-p seq
-  This function returns non-nil if the sequence @var{seq} is empty,
address@hidden otherwise.
-
address@hidden may be a list, vector or string.
address@hidden seq-empty-p sequence
+  This function returns address@hidden if @var{sequence} is empty.
 
 @example
 @group
@@ -646,12 +604,9 @@ list, vector or string.
 @end example
 @end defun
 
address@hidden seq-count pred seq
-  This function returns the number of elements in @var{seq} for which
-calling @var{pred} with that element returns non-nil.
-
address@hidden must be a one-argument function and @var{seq} may be a
-list, vector or string.
address@hidden seq-count predicate sequence
+  This function returns the number of elements in @var{sequence} for which
address@hidden returns address@hidden
 
 @example
 (seq-count (lambda (elt) (> elt 0)) [-1 2 0 3 -2])
@@ -659,27 +614,17 @@ list, vector or string.
 @end example
 @end defun
 
address@hidden seq-sort pred seq
-  This function returns a sorted sequence of the elements of
address@hidden, comparing its elements with @var{pred}.  Called with two
-elements of @var{seq}, @var{pred} should return non-nil if the first
-element should sort before the second.
-
address@hidden must be a two-arguments function, @var{seq} may be a list,
-vector or string.
-
-The result is a sequence of the same type as SEQ.
 @cindex sorting sequences
address@hidden seq-sort function sequence
+  This function returns a copy of @var{sequence} that is sorted
+according to @var{function}, a function of two arguments that returns
address@hidden if the first argument should sort before the second.
 @end defun
 
address@hidden seq-contains-p seq elt testfn
-  This function returns the first element in @var{seq} that equals to
address@hidden
-
-Equality is defined by @var{testfn} if non-nil or by @code{equal} if
address@hidden
-
address@hidden may be a list, vector or string.
address@hidden seq-contains-p sequence elt &optional function
+  This function returns the first element in @var{sequence} that is equal to
address@hidden  If the optional argument @var{function} is address@hidden,
+it is a function of two arguments to use instead of the default @code{equal}.
 
 @example
 @group
@@ -694,13 +639,10 @@ Equality is defined by @var{testfn} if non-nil or by 
@code{equal} if
 
 @end defun
 
address@hidden seq-uniq seq testfn
-  This function returns a list of the elements of @var{seq} with
-duplicates removed.  @var{testfn} is used to compare elements, or
address@hidden if @var{testfn} is @code{nil}.
-
address@hidden must be a two-argument function or @code{nil} and
address@hidden may be a list, vector or string.
address@hidden seq-uniq sequence &optional function
+  This function returns a list of the elements of @var{sequence} with
+duplicates removed.  If the optional argument @var{function} is address@hidden,
+it is a function of two arguments to use instead of the default @code{equal}.
 
 @example
 @group
@@ -714,14 +656,11 @@ duplicates removed.  @var{testfn} is used to compare 
elements, or
 @end example
 @end defun
 
address@hidden seq-subseq seq start &optional end
-  This function returns a sub-sequence of @var{seq} from @var{start}
-to @var{end}.  If @var{end} is omitted, it default to the length of
address@hidden If @var{start} or @var{end} is negative, it counts from
-the end of @var{seq}.
-
address@hidden may be a list, vector or string.
-The result is the same type of sequence as @var{seq}.
address@hidden seq-subseq sequence start &optional end
+  This function returns a subset of @var{sequence} from @var{start}
+to @var{end}, both integers (@var{end} defaults to the last element).
+If @var{start} or @var{end} is negative, it counts from the end of
address@hidden
 
 @example
 @group
@@ -739,11 +678,10 @@ The result is the same type of sequence as @var{seq}.
 @end example
 @end defun
 
address@hidden seq-concatenate type &rest seqs
-  This function returns a sequence made of the concatenation of
address@hidden  The result is a sequence of type @var{type}.  @var{type}
-may be one of the following symbols: @code{vector}, @code{list} or
address@hidden
address@hidden seq-concatenate type &rest sequences
+  This function returns a sequence of type @var{type} made of the
+concatenation of @var{sequences}.  @var{type} may be: @code{vector},
address@hidden or @code{string}.
 
 @example
 @group
@@ -757,26 +695,11 @@ may be one of the following symbols: @code{vector}, 
@code{list} or
 @end example
 @end defun
 
address@hidden seq-doseq (var seq [result]) address@hidden
address@hidden seq-doseq (var sequence [result]) address@hidden
 @cindex sequence iteration
-This macro is like @code{dolist}, except that @var{seq} can be a list,
+This macro is like @code{dolist}, except that @var{sequence} can be a list,
 vector or string (@pxref{Iteration} for more information about the
address@hidden macro).
-
address@hidden is primarily useful for side-effects.
-
address@hidden
-(seq-doseq (elt [1 2 3])
-  (print (* 2 elt)))
-  @print{}
-  @print{} 2
-  @print{}
-  @print{} 4
-  @print{}
-  @print{} 6
-  @result{} nil
-
address@hidden example
address@hidden macro).  This is primarily useful for side-effects.
 @end defmac
 
 @node Arrays
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index c287b61..b12adcf 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -618,7 +618,7 @@ spacing between calls.
 @defun terpri &optional stream ensure
 @cindex newline in print
 This function outputs a newline to @var{stream}.  The name stands for
-``terminate print''.  If @var{ensure} is non-nil no newline is printed
+``terminate print''.  If @var{ensure} is address@hidden no newline is printed
 if @var{stream} is already at the beginning of a line.  Note in this
 case @var{stream} can not be a function and an error is signalled if
 it is.  This function returns @code{t} if a newline is printed.
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index 5e0148b..026c7a7 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -92,6 +92,8 @@ representations and to encode and decode character codes.
 
 @node Predicates for Strings
 @section Predicates for Strings
address@hidden predicates for strings
address@hidden string predicates
 
 For more information about general sequence and array predicates,
 see @ref{Sequences Arrays Vectors}, and @ref{Arrays}.
@@ -113,6 +115,8 @@ character (i.e., an integer), @code{nil} otherwise.
 
 @node Creating Strings
 @section Creating Strings
address@hidden creating strings
address@hidden string creation
 
   The following functions create strings, either from scratch, or by
 putting strings together, or by taking them apart.
@@ -367,6 +371,8 @@ usual value is @address@hidden"[ \f\t\n\r\v]+"}}.
 
 @node Modifying Strings
 @section Modifying Strings
address@hidden modifying strings
address@hidden string modification
 
   The most basic way to alter the contents of an existing string is with
 @code{aset} (@pxref{Array Functions}).  @code{(aset @var{string}
@@ -400,6 +406,7 @@ zeros.  It may also change @var{string}'s length.
 @node Text Comparison
 @section Comparison of Characters and Strings
 @cindex string equality
address@hidden text comparison
 
 @defun char-equal character1 character2
 This function returns @code{t} if the arguments represent the same
@@ -483,17 +490,17 @@ dependent; a @var{locale} "en_US.UTF-8" is applicable on 
POSIX
 systems, while it would be, e.g., "enu_USA.1252" on MS-Windows
 systems.
 
-If @var{IGNORE-CASE} is non-nil, characters are converted to lower-case
+If @var{ignore-case} is address@hidden, characters are converted to lower-case
 before comparing them.
 
 To emulate Unicode-compliant collation on MS-Windows systems,
-bind @code{w32-collate-ignore-punctuation} to a non-nil value, since
+bind @code{w32-collate-ignore-punctuation} to a address@hidden value, since
 the codeset part of the locale cannot be "UTF-8" on MS-Windows.
 
 If your system does not support a locale environment, this function
 behaves like @code{string-equal}.
 
-Do NOT use this function to compare file names for equality, only
+Do @emph{not} use this function to compare file names for equality, only
 for sorting them.
 @end defun
 
@@ -602,11 +609,11 @@ behave like @code{string-lessp}:
 @end group
 @end example
 
-If @var{IGNORE-CASE} is non-nil, characters are converted to lower-case
+If @var{ignore-case} is address@hidden, characters are converted to lower-case
 before comparing them.
 
 To emulate Unicode-compliant collation on MS-Windows systems,
-bind @code{w32-collate-ignore-punctuation} to a non-nil value, since
+bind @code{w32-collate-ignore-punctuation} to a address@hidden value, since
 the codeset part of the locale cannot be "UTF-8" on MS-Windows.
 
 If your system does not support a locale environment, this function
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index 25e6089..33577e7 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -592,6 +592,8 @@ in turn, repeatedly, until they all return @code{nil}.
 
 @node Motion and Syntax
 @section Motion and Syntax
address@hidden moving across syntax classes
address@hidden skipping characters of certain syntax
 
   This section describes functions for moving across characters that
 have certain syntax classes.
@@ -631,6 +633,8 @@ expression prefix syntax class, and characters with the 
@samp{p} flag.
 
 @node Parsing Expressions
 @section Parsing Expressions
address@hidden parsing expressions
address@hidden scanning expressions
 
   This section describes functions for parsing and scanning balanced
 expressions.  We will refer to such expressions as @dfn{sexps},
@@ -673,6 +677,7 @@ result, Emacs treats them as four consecutive empty string 
constants.
 
 @node Motion via Parsing
 @subsection Motion Commands Based on Parsing
address@hidden motion based on parsing
 
   This section describes simple point-motion functions that operate
 based on parsing expressions.
@@ -738,6 +743,7 @@ cannot exceed that many.
 
 @node Position Parse
 @subsection Finding the Parse State for a Position
address@hidden parse state for a position
 
   For syntactic analysis, such as in indentation, often the useful
 thing is to compute the syntactic state corresponding to a given buffer
@@ -919,6 +925,7 @@ nicely.
 
 @node Control Parsing
 @subsection Parameters to Control Parsing
address@hidden parsing, control parameters
 
 @defvar multibyte-syntax-as-symbol
 If this variable is address@hidden, @code{scan-sexps} treats all
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 3ef565b..379fb29 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -162,6 +162,7 @@ the end of a line.
 
 @node Buffer Contents
 @section Examining Buffer Contents
address@hidden buffer portion as string
 
   This section describes functions that allow a Lisp program to
 convert any portion of the text in the buffer into a string.
@@ -2679,6 +2680,8 @@ along with the characters; this includes such diverse 
functions as
 
 @node Examining Properties
 @subsection Examining Text Properties
address@hidden examining text properties
address@hidden text properties, examining
 
   The simplest way to examine text properties is to ask for the value of
 a particular property of a particular character.  For that, use
@@ -2770,6 +2773,8 @@ used instead.  Here is an example:
 
 @node Changing Properties
 @subsection Changing Text Properties
address@hidden changing text properties
address@hidden text properties, changing
 
   The primitives for changing properties apply to a specified range of
 text in a buffer or string.  The function @code{set-text-properties}
@@ -2933,6 +2938,8 @@ buffer but does not copy its properties.
 
 @node Property Search
 @subsection Text Property Search Functions
address@hidden searching text properties
address@hidden text properties, searching
 
   In typical use of text properties, most of the time several or many
 consecutive characters have the same value for a property.  Rather than
@@ -3991,6 +3998,8 @@ coalesced whenever possible.  @xref{Property Search}.
 
 @node Substitution
 @section Substituting for a Character Code
address@hidden replace characters in region
address@hidden substitute characters
 
   The following functions replace characters within a specified region
 based on their character codes.
@@ -4467,7 +4476,7 @@ Append @var{child} as the last child of @var{node}.
 
 @item dom-add-child-before @var{node} @var{child} @var{before}
 Add @var{child} to @var{node}'s child list before the @var{before}
-node.  If @var{before} is nil, make @var{child} the first child.
+node.  If @var{before} is @code{nil}, make @var{child} the first child.
 
 @item dom-set-attributes @var{node} @var{attributes}
 Replace all the attributes of the node with a new key/value list.
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index e890dbc..b3466e6 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1951,6 +1951,7 @@ foo
 
 @node Variables with Restricted Values
 @section Variables with Restricted Values
address@hidden lisp variables defined in C, restrictions
 
   Ordinary Lisp variables can be assigned any value that is a valid
 Lisp object.  However, certain Lisp variables are not defined in Lisp,
@@ -1987,6 +1988,8 @@ Attempting to assign them any other value will result in 
an error:
 @node Generalized Variables
 @section Generalized Variables
 
address@hidden generalized variable
address@hidden place form
 A @dfn{generalized variable} or @dfn{place form} is one of the many places
 in Lisp memory where values can be stored.  The simplest place form is
 a regular Lisp variable.  But the @sc{car}s and @sc{cdr}s of lists, elements
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index c54eb90..a172a4a 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -907,6 +907,98 @@ window.
 @end deffn
 
 
address@hidden Preserving Window Sizes
address@hidden Preserving Window Sizes
address@hidden preserving window sizes
+
+A window can get resized explicitly by using one of the functions from
+the preceding section or implicitly, for example, when resizing an
+adjacent window, when splitting or deleting a window (@pxref{Splitting
+Windows}, @pxref{Deleting Windows}) or when resizing the window's frame
+(@pxref{Size and Position}).
+
+  It is possible to avoid implicit resizing of a specific window when
+there are one or more other resizable windows on the same frame.  For
+this purpose, Emacs must be advised to @dfn{preserve} the size of that
+window.  There are two basic ways to do that.
+
address@hidden window-size-fixed
+If this buffer-local variable is address@hidden, the size of any window
+displaying the buffer cannot normally be changed.  Deleting a window or
+changing the frame's size may still change the window's size, if there
+is no choice.
+
+If the value is @code{height}, then only the window's height is fixed;
+if the value is @code{width}, then only the window's width is fixed.
+Any other address@hidden value fixes both the width and the height.
+
+If this variable is @code{nil}, this does not necessarily mean that any
+window showing the buffer can be resized in the desired direction.  To
+determine that, use the function @code{window-resizable}.
address@hidden Windows}.
address@hidden defvar
+
+Often @code{window-size-fixed} is overly aggressive because it inhibits
+any attempt to explicitly resize or split an affected window as well.
+This may even happen after the window has been resized implicitly, for
+example, when deleting an adjacent window or resizing the window's
+frame.  The following function tries hard to never disallow resizing
+such a window explicitly:
+
address@hidden window-preserve-size &optional window horizontal preserve
+This function (un-)marks the height of window @var{window} as preserved
+for future resize operations.  @var{window} must be a live window and
+defaults to the selected one.  If the optional argument @var{horizontal}
+is address@hidden, it (un-)marks the width of @var{window} as preserved.
+
+If the optional argument @var{preserve} is @code{t}, this means to
+preserve the current height/width of @var{window}'s body.  The
+height/width of @var{window} will change only if Emacs has no better
+choice.  Resizing a window whose height/width is preserved by this
+function never throws an error.
+
+If @var{preserve} is @code{nil}, this means to stop preserving the
+height/width of @var{window}, lifting any respective restraint induced
+by a previous call of this function for @var{window}.  Calling
address@hidden, @code{shrink-window} or
address@hidden with @var{window} as argument may also
+remove the respective restraint.
address@hidden defun
+
address@hidden is currently invoked by the following
+functions:
+
address@hidden @code
address@hidden fit-window-to-buffer
+If the optional argument @var{preserve-size} of that function
+(@pxref{Resizing Windows}) is address@hidden, the size established by
+that function is preserved.
+
address@hidden display-buffer
+If the @var{alist} argument of that function (@pxref{Choosing Window})
+contains a @code{preserve-size} entry, the size of the window produced
+by that function is preserved.
address@hidden table
+
+  @code{window-preserve-size} installs a window parameter (@pxref{Window
+Parameters}) called @code{preserved-size} which is consulted by the
+window resizing functions.  This parameter will not prevent resizing the
+window when the window shows another buffer than the one when
address@hidden was invoked or if its size has changed since
+then.
+
+The following function can be used to check whether the height of a
+particular window is preserved:
+
address@hidden window-preserved-size &optional window horizontal
+This function returns the preserved height of window @var{window} in
+pixels.  @var{window} must be a live window and defaults to the selected
+one.  If the optional argument @var{horizontal} is address@hidden, it
+returns the preserved width of @var{window}.  It returns @code{nil} if
+the size of @var{window} is not preserved.
address@hidden defun
+
+
 @node Splitting Windows
 @section Splitting Windows
 @cindex splitting windows
@@ -1068,98 +1160,6 @@ function.
 @end defopt
 
 
address@hidden Preserving Window Sizes
address@hidden Preserving Window Sizes
address@hidden preserving window sizes
-
-A window can get resized explicitly by using one of the functions from
-the preceding section or implicitly, for example, when resizing an
-adjacent window, when splitting or deleting a window (@pxref{Splitting
-Windows}, @pxref{Deleting Windows}) or when resizing the window's frame
-(@pxref{Size and Position}).
-
-  It is possible to avoid implicit resizing of a specific window when
-there are one or more other resizable windows on the same frame.  For
-this purpose, Emacs must be advised to @dfn{preserve} the size of that
-window.  There are two basic ways to do that.
-
address@hidden window-size-fixed
-If this buffer-local variable is address@hidden, the size of any window
-displaying the buffer cannot normally be changed.  Deleting a window or
-changing the frame's size may still change the window's size, if there
-is no choice.
-
-If the value is @code{height}, then only the window's height is fixed;
-if the value is @code{width}, then only the window's width is fixed.
-Any other address@hidden value fixes both the width and the height.
-
-If this variable is @code{nil}, this does not necessarily mean that any
-window showing the buffer can be resized in the desired direction.  To
-determine that, use the function @code{window-resizable}.
address@hidden Windows}.
address@hidden defvar
-
-Often @code{window-size-fixed} is overly aggressive because it inhibits
-any attempt to explicitly resize or split an affected window as well.
-This may even happen after the window has been resized implicitly, for
-example, when deleting an adjacent window or resizing the window's
-frame.  The following function tries hard to never disallow resizing
-such a window explicitly:
-
address@hidden window-preserve-size &optional window horizontal preserve
-This function (un-)marks the height of window @var{window} as preserved
-for future resize operations.  @var{window} must be a live window and
-defaults to the selected one.  If the optional argument @var{horizontal}
-is address@hidden, it (un-)marks the width of @var{window} as preserved.
-
-If the optional argument @var{preserve} is @code{t}, this means to
-preserve the current height/width of @var{window}'s body.  The
-height/width of @var{window} will change only if Emacs has no better
-choice.  Resizing a window whose height/width is preserved by this
-function never throws an error.
-
-If @var{preserve} is @code{nil}, this means to stop preserving the
-height/width of @var{window}, lifting any respective restraint induced
-by a previous call of this function for @var{window}.  Calling
address@hidden, @code{shrink-window} or
address@hidden with @var{window} as argument may also
-remove the respective restraint.
address@hidden defun
-
address@hidden is currently invoked by the following
-functions:
-
address@hidden @code
address@hidden fit-window-to-buffer
-If the optional argument @var{preserve-size} of that function
-(@pxref{Resizing Windows}) is address@hidden, the size established by
-that function is preserved.
-
address@hidden display-buffer
-If the @var{alist} argument of that function (@pxref{Choosing Window})
-contains a @code{preserve-size} entry, the size of the window produced
-by that function is preserved.
address@hidden table
-
-  @code{window-preserve-size} installs a window parameter (@pxref{Window
-Parameters}) called @code{preserved-size} which is consulted by the
-window resizing functions.  This parameter will not prevent resizing the
-window when the window shows another buffer than the one when
address@hidden was invoked or if its size has changed since
-then.
-
-The following function can be used to check whether the height of a
-particular window is preserved:
-
address@hidden window-preserved-size &optional window horizontal
-This function returns the preserved height of window @var{window} in
-pixels.  @var{window} must be a live window and defaults to the selected
-one.  If the optional argument @var{horizontal} is address@hidden, it
-returns the preserved width of @var{window}.  It returns @code{nil} if
-the size of @var{window} is not preserved.
address@hidden defun
-
-
 @node Deleting Windows
 @section Deleting Windows
 @cindex deleting windows
@@ -1252,6 +1252,8 @@ are the opposite of what they are in those other 
functions.
 
 @node Recombining Windows
 @section Recombining Windows
address@hidden recombining windows
address@hidden windows, recombining
 
 When deleting the last sibling of a window @var{W}, its parent window
 is deleted too, with @var{W} replacing it in the window tree.  This
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index cd8b7f3..95e6a1c 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -107,11 +107,11 @@
 
 2014-10-26  Eric S. Raymond  <address@hidden>
 
-       * efaq-w32.texi: Neutralized language specific to a repository type.
+       * efaq-w32.texi: Neutralize language specific to a repository type.
 
 2014-10-25  Eric S. Raymond  <address@hidden>
 
-       * gnus-coding.txt: Neutralized language specific to a repository type.
+       * gnus-coding.texi: Neutralize language specific to a repository type.
 
 2014-10-20  Glenn Morris  <address@hidden>
 
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 10ebff1..ee0958f 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,13 @@
+2014-12-27  Álvar Ibeas  <address@hidden>  (tiny change)
+
+       * tutorials/TUTORIAL.es: Improve style consistency.  Spelling fixes.
+
+2014-12-25  Karl Fogel  <address@hidden>
+
+       * NEWS: Mention new buffer display behavior for `shell'.
+       This follows up to Sam Steingold's change of 2014-12-23
+       in ../lisp/shell.el, in git commit e55a467ec0f758c311d3.
+
 2014-12-15  Artur Malabarba <address@hidden>
 
        * NEWS: Mention `let-alist.
diff --git a/etc/NEWS b/etc/NEWS
index 14a9176..4d63278 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -187,6 +187,14 @@ Unicode standards.
 
 
 * Changes in Specialized Modes and Packages in Emacs 25.1
+** Shell
+
+When you invoke `shell' interactively, the *shell* buffer will now
+display in a new window.  However, you can customize this behavior via
+the new `shell-display-buffer-actions' variable.  For example, to get
+the old behavior -- *shell* buffer displays in current window -- use
+(setq shell-display-buffer-actions '(display-buffer-same-window)).
+
 ** 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
@@ -393,10 +401,13 @@ and comments.
 the color range from `vc-annotate-color-map' is applied to the
 background or to the foreground.
 
-*** compare-windows now compares text with the most recently used window
+*** `compare-windows' now compares text with the most recently used window
 instead of the next window.  The new option 
`compare-windows-get-window-function'
 allows to customize this.
 
+*** Two new faces `compare-windows-removed' and `compare-windows-added'
+replace the obsolete face `compare-windows'.
+
 ** Calculator: decimal display mode uses "," groups, so it's more
 fitting for use in money calculations; factorial works with
 non-integer inputs.
@@ -426,6 +437,25 @@ By default, 32 spaces and four TABs are considered to be 
too much but
 `tildify-ignored-environments-alist' variables (as well as a few
 helper functions) obsolete.
 
+** xref
+The new package provides generic framework and new commands to find
+and move to definitions, as well as pop back to the original location.
+
+*** New key bindings
+`xref-find-definitions' replaces `find-tag' and provides an interface
+to pick one destination among several.  Hence, `tags-loop-continue' is
+unbound.  `xref-pop-marker-stack' replaces `pop-tag-mark', but uses an
+easier binding, which is now unoccupied (`M-,').
+`xref-find-definitions-other-window' replaces `find-tag-other-window'.
+`xref-find-definitions-other-frame' replaces `find-tag-other-frame'.
+`xref-find-apropos' replaces `find-tag-regexp'.
+
+*** New variables
+`find-tag-marker-ring-length' is now an obsolete alias for
+`xref-marker-ring-length'.  `find-tag-marker-ring' is now an obsolete
+alias for a private variable.  `xref-push-marker-stack' and
+`xref-pop-marker-stack' should be used to mutate it instead.
+
 ** Obsolete packages
 
 ---
diff --git a/etc/tutorials/TUTORIAL.es b/etc/tutorials/TUTORIAL.es
index 604aaf7..0983e5d 100644
--- a/etc/tutorials/TUTORIAL.es
+++ b/etc/tutorials/TUTORIAL.es
@@ -16,7 +16,7 @@ ocasión, usaremos las siguientes abreviaturas.
 Nota importante: para terminar la sesión de Emacs teclee C-x C-c (dos
 caracteres).  Para cancelar un comando parcialmente introducido,
 teclee C-g.
-Los caracteres ">>" en el margen izquierdo indican instrucciones para
+Los caracteres «>>» en el margen izquierdo indican instrucciones para
 que usted trate de usar un comando.  Por ejemplo:
 <<Blank lines inserted around following line by help-with-tutorial>>
 [Mitad de página en blanco para propósitos didácticos.  El texto continúa 
abajo]
@@ -67,11 +67,11 @@ Es útil moverse de una pantalla completa a otra pero, ¿cómo 
moverse a
 un lugar específico dentro del texto en la pantalla?
 
 Puede hacerlo de diversas formas.  Puede usar las teclas de flechas,
-pero es mas eficiente mantener las manos en la posición estándar y
+pero es más eficiente mantener las manos en la posición estándar y
 usar los comandos C-p, C-b, C-f, y C-n.  Estos caracteres son
 equivalentes a las cuatro teclas de flechas, de esta manera:
 
-                       Línea anterior, C-P
+                       Línea anterior, C-p
                                :
                                :
    Atrás, C-b.... Posición actual del cursor .... Adelante, C-f
@@ -111,7 +111,7 @@ C-f puede moverse a través de una nueva línea igual que C-b.
 
 Cuando pase el tope o el final de la pantalla, se mostrará el texto
 más allá del borde de la pantalla.  Esto recibe el nombre de
-"desplazamiento".  Esto le permite a Emacs mover el cursor al lugar
+«desplazamiento».  Esto le permite a Emacs mover el cursor al lugar
 especificado en el texto sin moverlo fuera de la pantalla.
 
 >> Intente mover el cursor fuera del borde de la pantalla con C-n, y
@@ -133,10 +133,10 @@ dirección opuesta.
 
 Note el paralelo entre C-f y C-b de un lado y M-f y M-b del otro.  Muy
 frecuentemente los caracteres Meta se usan para operaciones
-relacionadas, con las unidades definidas por el lenguaje (palabras,
+relacionadas con las unidades definidas por el lenguaje (palabras,
 oraciones y párrafos), mientras los caracteres Control operan sobre
 unidades básicas que son independientes de lo que está editando
-(caracteres, líneas, etc).
+(caracteres, líneas, etc.).
 
 Este paralelo se aplica entre líneas y oraciones: C-a y C-e para
 moverse al comienzo o al final de la línea; y M-a y M-e para mover al
@@ -149,7 +149,7 @@ Vea cómo la repetición de C-a no hace nada, pero la 
repetición de M-a
 sigue moviendo una oración más.  Aunque no son muy análogas, cada una
 parece natural.
 
-La ubicación del cursor en el texto se llama también "punto".  En
+La ubicación del cursor en el texto se llama también «punto».  En
 otras palabras, el cursor muestra sobre la pantalla donde está
 situado el punto dentro del texto.
 
@@ -178,7 +178,7 @@ Otros dos comandos importantes de movimiento del cursor son 
M-< (META
 Menor que), el cual se mueve al comienzo del texto entero, y M-> (META
 Mayor que), el cual se mueve al final del texto entero.
 
-En la mayoría de las terminales, el "<" está sobre la coma, por lo
+En la mayoría de las terminales, el «<» está sobre la coma, por lo
 tanto tiene que usar la tecla shift para teclearlo.  En estas
 terminales tendrá que usar la tecla shift también al teclear M-<; sin
 la tecla shift, usted estaría escribiendo M-coma.
@@ -207,7 +207,7 @@ una tecla META (o EDIT o ALT), hay una manera alternativa 
para
 ingresar un argumento numérico: teclear los dígitos mientras presiona
 la tecla META.  Recomendamos aprender el método C-u porque éste
 funciona en cualquier terminal.  El argumento numérico es también
-llamado un "argumento prefijo", porque usted teclea el argumento antes
+llamado un «argumento prefijo», porque usted teclea el argumento antes
 del comando al que se aplica.
 
 Por ejemplo, C-u 8 C-f mueve hacia adelante ocho caracteres.
@@ -253,7 +253,7 @@ comienzo de un comando que no quiere finalizar.
 
 >> Escriba C-u 100 para hacer un argumento numérico de 100, y luego
    pruebe C-g.
-   Ahora pruebe C-f.  Esto deberá mover sólo un carácter, ya que
+   Ahora pruebe C-f.  Esto deberá mover solo un carácter, ya que
    canceló el argumento con C-g.
 
 Si ha tecleado <ESC> por error, puede desecharlo con un C-g.
@@ -262,7 +262,7 @@ Si ha tecleado <ESC> por error, puede desecharlo con un C-g.
 * COMANDOS DESACTIVADOS
 -----------------------
 
-Algunos comandos de Emacs están "desactivados" de manera que los
+Algunos comandos de Emacs están «desactivados» de manera que los
 usuarios principiantes no puedan usarlos accidentalmente.
 
 Si teclea uno de los comandos desactivados, Emacs muestra un mensaje
@@ -271,7 +271,7 @@ continuar y ejecutar el comando.
 
 Si realmente quiere intentar el comando, teclee Espacio como repuesta
 a la pregunta.  Normalmente, si no quiere ejecutar el comando
-desactivado, conteste la pregunta con "n".
+desactivado, conteste la pregunta con «n».
 
 >> Escriba C-x C-l (que es un comando desactivado), a continuación
    escriba n para responder la pregunta.
@@ -280,7 +280,7 @@ desactivado, conteste la pregunta con "n".
 * VENTANAS
 ----------
 
-Emacs puede tener varias "ventanas", cada una mostrando su propio texto.
+Emacs puede tener varias «ventanas», cada una mostrando su propio texto.
 Explicaremos después cómo usar múltiples ventanas.  Ahora mismo
 queremos explicar cómo deshacerse de ventanas adicionales y volver a
 la edición básica en una ventana.  Es sencillo:
@@ -310,15 +310,15 @@ cuatro caracteres.
 
 Si quiere insertar un texto, basta con que lo teclee.  Los caracteres
 normales, como A, 7, *, etc. se insertan nada más teclearlos.  Teclee
-<Return> (la tecla "Enter" o "Intro") para insertar un carácter de
+<Return> (la tecla «Enter» o «Intro») para insertar un carácter de
 nueva línea.
 
 Para borrar el carácter que precede al cursor, oprima <DEL>. Es una
-tecla alargada, normalmente etiquetada como "Backspace" o "Del", o con
+tecla alargada, normalmente etiquetada como «Backspace» o «Del», o con
 una flecha apuntando a la izquierda; la misma que suele utilizar fuera
 de Emacs para borrar el último carácter introducido.
 
-Puede haber otra tecla llamada "Del" o "Supr" en otra parte, pero ésa
+Puede haber otra tecla llamada «Del» o «Supr» en otra parte, pero ésa
 no es <DEL>.
 
 >> Haga esto ahora: teclee unos pocos caracteres, después bórrelos
@@ -327,9 +327,9 @@ no es <DEL>.
    personal de él.
 
 Cuando una línea de texto se hace muy grande para una sola línea de la
-pantalla, la línea de texto "continúa" en una segunda línea en la
+pantalla, la línea de texto «continúa» en una segunda línea en la
 pantalla. Si está usando un entorno gráfico, se mostrarán pequeñas
-flechas curvas en las estrechas franjas vacías (los "márgenes" derecho
+flechas curvas en las estrechas franjas vacías (los «márgenes» derecho
 e izquierdo) a cada lado del área de texto, para indicar que la línea
 continúa. Si está utilizando una terminal, la continuación se señala
 mediante una barra invertida («\») en la última columna de la derecha.
@@ -357,13 +357,13 @@ circundante, puede además insertar espacio en blanco tras 
el carácter
 de fin de línea, de forma que, al seguir tecleando en la línea recién
 creada, el texto que tecleamos quede alineado con el de la línea
 anterior.  Este comportamiento (que la pulsación de una tecla no solo
-inserte el carácter correspondiente) se denomina "eléctrico".
+inserte el carácter correspondiente) se denomina «eléctrico».
 
->> Veamos un ejemplo de comportamiento "eléctrico" de <Return>
+>> Veamos un ejemplo de comportamiento «eléctrico» de <Return>
    Teclee <Return> al final de esta línea.
 
 Fíjese que, tras insertar el carácter de nueva línea, Emacs inserta
-también espacios para que el cursor se sitúe bajo la "T" de "Teclee".
+también espacios para que el cursor se sitúe bajo la «T» de «Teclee».
 
 Recuerde que a la mayoría de los comandos de Emacs se les puede dar un
 factor de repetición; esto incluye los caracteres de texto.  Repetir
@@ -375,7 +375,7 @@ Ya ha aprendido la manera más básica de teclear algo en 
Emacs y
 corregir errores.  Puede borrar por palabras o por líneas.  He aquí un
 resumen de las operaciones de borrado:
 
-       <DEL>           borra el carácter justo antes que el cursor
+       <DEL>           borra el carácter justo antes del cursor
        C-d             borra el siguiente carácter después del cursor
 
        M-<DEL>         Elimina la palabra inmediatamente antes del
@@ -389,29 +389,29 @@ Note que <DEL> y C-d, comparados con M-<DEL> y M-d, 
extienden el
 paralelismo iniciado por C-f y M-f (bien, <DEL> no es realmente una
 tecla de control, pero no nos preocuparemos de eso ahora).  C-k y M-k,
 en cierta forma, son como C-e y M-e, en que las líneas de unos
-corresponden a sentencias en los otros.
+corresponden a oraciones en los otros.
 
 También puede eliminar un segmento contiguo de texto con un método
 uniforme.  Muévase a un extremo de ese segmento de texto, y teclee C-@
-o C-SPC (cualquiera de los dos).  (SPC es la barra espaciadora.)
+o C-<SPC> (cualquiera de los dos).  (<SPC> es la barra espaciadora.)
 Luego, mueva el cursor al otro extremo del texto que desea eliminar.
 Al hacerlo, Emacs resaltará el texto situado entre el cursor y la
-posición en la que tecleó C-SPC.  Finalmente, teclee C-w.  Eso elimina
+posición en la que tecleó C-<SPC>.  Finalmente, teclee C-w.  Eso elimina
 todo el texto entre las dos posiciones.
 
 >> Mueva el cursor a la letra T del inicio del párrafo anterior.
->> Teclee C-SPC.  Emacs debe mostrar el mensaje "Mark set" en la parte
+>> Teclee C-<SPC>.  Emacs debe mostrar el mensaje «Mark set» en la parte
    de abajo de la pantalla.
->> Mueva el cursor a la x en "extremo", en la segunda línea del
+>> Mueva el cursor a la x en «extremo», en la segunda línea del
    párrafo.
 >> Teclee C-w.  Esto eliminará el texto que comienza desde la T, y
    termina justo antes de la x.
 
-La diferencia entre "eliminar" y "borrar" es que el texto "eliminado"
+La diferencia entre «eliminar» y «borrar» es que el texto «eliminado»
 puede ser reinsertado (en cualquier posición), mientras que las cosas
-"borradas" no pueden ser reinsertadas (sin embargo, es posible
+«borradas» no pueden ser reinsertadas (sin embargo, es posible
 deshacer el borrado; ver más abajo).  La reinserción de texto
-eliminado se llama "yanking" o "pegar".  Generalmente, los comandos
+eliminado se llama «yanking» o «pegar».  Generalmente, los comandos
 que pueden quitar mucho texto lo eliminan (para que pueda pegarlo de
 nuevo) mientras que los comandos que quitan solo un carácter, o solo
 líneas en blanco y espacios, borran (y por tanto no se puede pegar lo
@@ -426,17 +426,17 @@ borran.  Con un argumento, eliminan.
 Note que al teclear C-k una sola vez elimina el contenido de la línea,
 y un segundo C-k elimina la línea misma, y hace que todas las otras
 líneas se muevan hacia arriba.  C-k trata un argumento numérico
-especialmente: Elimina ese número de líneas y TAMBIÉN sus
+especialmente: elimina ese número de líneas y TAMBIÉN sus
 contenidos.  Esto no es una simple repetición.  C-u 2 C-k elimina dos
 líneas y sus nuevas líneas, tecleando C-k dos veces no hace esto.
 
-Reinsertar texto eliminado se denomina "yanking" o "pegar".  (Piense
+Reinsertar texto eliminado se denomina «yanking» o «pegar».  (Piense
 en ello como pegar de nuevo, o traer de vuelta, algún texto que le fue
 quitado.)  Puede pegar el texto eliminado, ya sea el lugar en que fue
 eliminado, o en otra parte del buffer, o hasta en un archivo
 diferente.  Puede pegar el texto varias veces, lo que hace varias
 copias de él.  Algunos editores se refieren a eliminar y reinsertar
-como "cortar" y "pegar" (consulte el Glosario en el manual de Emacs).
+como «cortar» y «pegar» (consulte el Glosario en el manual de Emacs).
 
 El comando para pegar es C-y.  Reinserta el último texto eliminado, en
 la posición actual del cursor.
@@ -460,7 +460,7 @@ Después de haber tecleado C-y para conseguir la eliminación 
más
 reciente, tecleando M-y reemplaza el texto pegado con la eliminación
 previa.  Tecleando M-y una y otra vez traerá las eliminaciones
 anteriores.  Cuando haya encontrado el texto que buscaba, no tiene que
-hacer nada para conservarlo.  Sólo siga con su edición, dejando el
+hacer nada para conservarlo.  Solo siga con su edición, dejando el
 texto pegado en donde está.
 
 Si teclea M-y suficientes veces, regresa al punto inicial (la
@@ -513,29 +513,29 @@ si puede pegarlo con C-y; no hay diferencia alguna para 
deshacer.
 
 Para que pueda hacer permanente el texto que edite, lo debe colocar en
 un archivo.  De otra manera, éste se perderá cuando cierre Emacs.
-Para poder poner su texto en un archivo, debe "encontrar" el archivo
-antes de ingresar el texto.  (Esto se llama también "visitar" el
+Para poder poner su texto en un archivo, debe «encontrar» el archivo
+antes de ingresar el texto.  (Esto se llama también «visitar» el
 archivo.)
 
 Encontrar un archivo significa que puede ver su contenido dentro de
 Emacs.  En cierta forma, es como si estuviera editando el archivo
 mismo.  Sin embargo los cambios que haga mediante Emacs no serán
-permanentes hasta que "guarde" el archivo.  Esto es para evitar dejar
+permanentes hasta que «guarde» el archivo.  Esto es para evitar dejar
 un archivo a medio cambiar en el sistema cuando no quiera.  Incluso
 cuando guarde, Emacs dejará el archivo original bajo un nombre
 cambiado en caso de que luego decida que sus cambios fueron un error.
 
 Si mira cerca del final de la pantalla podrá ver una línea que
-comienza con guiones, y empieza con " -:--- TUTORIAL.es" o algo así.
+comienza con guiones, y empieza con « U:--- TUTORIAL.es» o algo así.
 Esta parte de la pantalla normalmente muestra el nombre del archivo
 que está visitando.  En este momento está visitando su propia copia
-del tutorial de Emacs, que se llama "TUTORIAL.es".  Cuando encuentre
+del tutorial de Emacs, que se llama «TUTORIAL.es».  Cuando encuentre
 un archivo con Emacs, el nombre de ese archivo aparecerá en ese mismo
 punto.
 
-Una cosa especial acerca del comando para encontrar un archivo, es que
+Una cosa especial acerca del comando para encontrar un archivo es que
 tendrá que decir qué nombre de archivo desea.  Decimos que el comando
-"lee un argumento" (en este caso, el argumento es el nombre del
+«lee un argumento» (en este caso, el argumento es el nombre del
 archivo).  Después de teclear el comando:
 
        C-x C-f   Encontrar un archivo
@@ -565,19 +565,19 @@ comando
 
 Esto copia el texto dentro de Emacs al archivo.  La primera vez que
 haga esto, Emacs renombrará el archivo original con un nuevo nombre
-para que éste no se pierda.  El nuevo nombre se hace agregando "~" al
+para que éste no se pierda.  El nuevo nombre se hace agregando «~» al
 final del nombre del archivo original. Cuando guardar haya terminado,
 Emacs mostrará el nombre del archivo escrito.
 
 >> Teclee C-x C-s TUTORIAL.es <Return>
    Esto guardará el tutorial en un archivo llamado TUTORIAL.es, y
-   mostrará "Wrote ...TUTORIAL.es" al final de la pantalla.
+   mostrará «Wrote ...TUTORIAL.es» al final de la pantalla.
 
 Puede encontrar un archivo existente, para verlo o editarlo.  También
 puede hacerlo con un archivo que no exista.  Ésta es la forma de crear
 un archivo en Emacs: encuentre el archivo, que está inicialmente vacío,
 luego comience a insertar el texto para ese archivo.  Cuando invoque
-"guardar" el archivo, Emacs creará realmente el archivo con el texto
+«guardar» el archivo, Emacs creará realmente el archivo con el texto
 que ha insertado.  De ahí en adelante, puede considerar que está
 editando un archivo existente.
 
@@ -591,7 +591,7 @@ C-f.  De esta forma puede mantener un gran número de 
archivos dentro
 de Emacs.
 
 Emacs almacena cada texto del archivo dentro de un objeto llamado
-"buffer".  Al encontrar un archivo se crea un nuevo buffer dentro de
+«buffer».  Al encontrar un archivo se crea un nuevo buffer dentro de
 Emacs.  Para mirar la lista de los buffers que existen actualmente,
 teclee:
 
@@ -605,14 +605,14 @@ una ventana de Emacs es siempre parte de algún buffer.
 
 >> Teclee C-x 1 para deshacerse de la lista de buffers.
 
-Cuando tenga varios buffers, solo uno de ellos es "actual" en algún
+Cuando tenga varios buffers, solo uno de ellos es «actual» en algún
 momento.  Ese buffer es el que actualmente edita.  Si quiere editar
-otro buffer, necesita "cambiar" a él.  Si quiere cambiar a un buffer
+otro buffer, necesita «cambiar» a él.  Si quiere cambiar a un buffer
 que corresponde a un archivo, puede hacerlo visitando el archivo de
 nuevo con C-x C-f.  Pero existe una manera más rápida: use el comando
 C-x b.  En ese comando, necesita teclear el nombre de buffer.
 
->> Cree un archivo llamado "foo" tecleando C-x C-f foo <Return>.
+>> Cree un archivo llamado «foo» tecleando C-x C-f foo <Return>.
    Después teclee C-x b TUTORIAL.es <Return> para regresar a este
    tutorial.
 
@@ -622,12 +622,12 @@ esto no es así siempre.  La lista de buffers que hace con 
C-x C-b
 muestra el nombre de cada buffer y de su archivo correspondiente.
 
 Algunos buffers no corresponden a un archivo.  El buffer llamado
-"*Buffer List*", que contiene la lista de buffers que ha creado con
+«*Buffer List*», que contiene la lista de buffers que ha creado con
 C-x C-b, no tiene archivo.  Este buffer TUTORIAL.es al principio no
 tenía archivo, pero ahora sí, porque en la sección anterior tecleó
 C-x C-s y lo guardó en un archivo.
 
-El buffer llamado "*Messages*" tampoco tiene un archivo
+El buffer llamado «*Messages*» tampoco tiene un archivo
 correspondiente.  Este buffer contiene los mensajes que han aparecido
 en la línea de abajo durante su sesión de Emacs.
 
@@ -649,7 +649,7 @@ guardado.  Le pregunta, por cada buffer, si quiere 
guardarlo o no.
 
 >> Inserte una línea de texto, luego teclee C-x s.
    Debería preguntarle si desea guardar el buffer llamado TUTORIAL.es.
-   Conteste si a la pregunta tecleando "y".
+   Conteste «sí» a la pregunta tecleando «y».
 
 
 * EXTENDER EL CONJUNTO DE COMANDOS
@@ -675,14 +675,14 @@ Si está utilizando una pantalla gráfica, no necesita 
ningún comando
 especial para cambiar de Emacs a otra aplicación.  Puede hacerlo con
 el ratón, o mediante el gestor de ventanas.  Sin embargo, si está
 usando una terminal que solo puede mostrar una aplicación a la vez,
-tendrá que "suspender" Emacs para poder acceder a otras aplicaciones.
+tendrá que «suspender» Emacs para poder acceder a otras aplicaciones.
 
 C-z es el comando para salir de Emacs *temporalmente*: para que pueda
 regresar a la misma sesión de Emacs después.  Cuando Emacs está
-ejecutándose en una terminal, C-z "suspende" Emacs; esto es, se
+ejecutándose en una terminal, C-z «suspende» Emacs; esto es, se
 regresa al intérprete de comandos pero no se destruye Emacs.  En los
 intérpretes de comandos más comunes, puede reanudar Emacs con el
-comando "fg" o con "%emacs".
+comando «fg» o con «%emacs».
 
 El momento para usar C-x C-c es cuando está listo para salir del
 sistema.  Es además el paso correcto para salir de un Emacs invocado
@@ -706,7 +706,7 @@ con menos frecuencia, o únicamente en ciertos modos.  Un 
ejemplo es el
 comando replace-string, el cual substituye una cadena de caracteres
 por otra en todo el buffer.  Cuando teclea M-x, Emacs le pregunta al
 final de la pantalla con M-x y debe escribir el nombre del comando; en
-este caso "replace-string".  Solo teclee "repl s<TAB>" y Emacs
+este caso «replace-string».  Solo teclee «repl s<TAB>» y Emacs
 completará el nombre.  (<TAB> es la tecla del tabulador, que
 habitualmenté está situada sobre la tecla de bloquear mayúsculas o la
 de shift, en el lado izquierdo del teclado.)  Para aceptar el comando
@@ -721,7 +721,7 @@ Debe terminar cada argumento con <Return>.
    M-x repl s<Return>cambiado<Return>alterado<Return>.
 
    Note cómo ha cambiado la línea: ha substituido la palabra
-   "cambiado" por "alterado" en cada ocurrencia, después de la
+   «cambiado» por «alterado» en cada ocurrencia, después de la
    posición inicial del cursor.
 
 
@@ -730,10 +730,10 @@ Debe terminar cada argumento con <Return>.
 
 Si ha hecho cambios en un archivo, pero no los ha guardado, éstos
 podrían perderse si su computadora falla.  Para protegerlo de esto,
-Emacs periódicamente escribe un archivo "auto guardado" para cada
+Emacs escribe periódicamente un archivo «auto guardado» para cada
 archivo que está editando.  El nombre del archivo auto guardado tiene
 un # al principio y al final; por ejemplo, si su archivo se llama
-"hola.c", su archivo auto guardado es "#hola.c#".  Cuando guarda por
+«hola.c», su archivo auto guardado es «#hola.c#».  Cuando guarda por
 la vía normal, Emacs borra su archivo de auto guardado.
 
 Si la computadora falla, puede recuperar su edición de auto guardado
@@ -748,16 +748,16 @@ para seguir adelante y recuperar la información de auto 
guardado.
 
 Si Emacs ve que usted está tecleando comandos de multicaracteres
 lentamente, se los muestra al final de la pantalla en un área llamada
-"área de eco".  El área de eco contiene la línea final de la pantalla.
+«área de eco».  El área de eco contiene la línea final de la pantalla.
 
 
 * LÍNEA DE MODO
 ---------------
 
 La línea inmediatamente encima del área de eco recibe el nombre de
-"línea de modo" o "mode line".  La línea de modo dice algo así:
+«línea de modo» o «mode line».  La línea de modo dice algo así:
 
- -:**-  TUTORIAL.es       63% L749    (Fundamental)
+ U:**-  TUTORIAL.es       63% L749    (Fundamental)
 
 Esta línea da información útil acerca del estado de Emacs y del texto
 que está editando.
@@ -766,9 +766,9 @@ Ya sabe qué significa el nombre del archivo: es el archivo 
que usted
 ha encontrado.  NN% indica su posición actual en el texto; esto
 significa que NN por ciento del texto está encima de la parte superior
 de la pantalla.  Si el principio del archivo está en la pantalla, éste
-dirá "Top" en vez de " 0%".  Si el final del texto está en la
-pantalla, dirá "Bot".  Si está mirando un texto tan pequeño que cabe
-entero en la pantalla, el modo de línea dirá "All".
+dirá «Top» en vez de « 0%».  Si el final del texto está en la
+pantalla, dirá «Bot».  Si está mirando un texto tan pequeño que cabe
+entero en la pantalla, el modo de línea dirá «All».
 
 La L y los dígitos señalan la posición de otra forma: indican el
 número de línea actual del punto.
@@ -780,13 +780,13 @@ parte de la línea de modo no muestra asteriscos, solo 
guiones.
 La parte de la línea de modo dentro de los paréntesis es para
 indicarle en qué modo de edición está.  El modo por omisión es
 Fundamental, el cual está usando ahora.  Éste es un ejemplo de un
-"modo mayor".
+«modo mayor».
 
 Emacs tiene diferentes modos mayores.  Algunos están hechos para
 editar diferentes lenguajes y/o clases de texto, tales como modo de
 Lisp, modo de Texto, etc.  En cualquier momento uno y solo un modo
 mayor está activo, y su nombre siempre se puede encontrar en la línea
-de modo, justo en donde "Fundamental" está ahora.
+de modo, justo en donde «Fundamental» está ahora.
 
 Cada modo mayor hace que algunos comandos actúen diferente.  Por
 ejemplo, hay comandos para crear comentarios en un programa, y como
@@ -808,7 +808,7 @@ modo Fundamental, M-f y M-b trataban los apóstrofes como 
separadores
 de palabras.
 
 Los modos mayores normalmente hacen cambios sutiles como el anterior:
-la mayoría de comandos hacen "el mismo trabajo" en cada modo mayor,
+la mayoría de comandos hacen «el mismo trabajo» en cada modo mayor,
 pero funcionan de forma un poco diferente.
 
 Para ver la documentación del modo mayor actual, teclee C-h m.
@@ -840,11 +840,11 @@ Puede activar el modo Auto Fill al hacer M-x 
auto-fill-mode <Return>.
 Cuando el modo esté activado, puede desactivarlo nuevamente usando M-x
 auto-fill-mode <Return>.  Si el modo está desactivado, este comando lo
 activa, y si el modo está activado, este comando lo desactiva.
-Decimos que el comando "cambia el modo".
+Decimos que el comando «cambia el modo».
 
 >> teclee M-x auto-fill-mode <Return> ahora.  Luego inserte una línea
-   de "asdf " repetidas veces hasta que la vea dividida en dos líneas.
-   Debe intercalar espacios porque Auto Fill sólo rompe líneas en los
+   de «asdf » repetidas veces hasta que la vea dividida en dos líneas.
+   Debe intercalar espacios porque Auto Fill solo rompe líneas en los
    espacios.
 
 El margen está normalmente puesto en 70 caracteres, pero puede
@@ -867,48 +867,48 @@ ese párrafo.
 * BUSCAR
 --------
 
-Emacs puede hacer búsquedas de cadenas (una "cadena" es un grupo de
+Emacs puede hacer búsquedas de cadenas (una «cadena» es un grupo de
 caracteres contiguos) hacia adelante a través del texto o hacia atrás
 en el mismo.  La búsqueda de una cadena es un comando de movimiento de
 cursor; mueve el cursor al próximo lugar donde esa cadena aparece.
 
-El comando de búsqueda de Emacs es "incremental".  Esto significa que
+El comando de búsqueda de Emacs es «incremental».  Esto significa que
 la búsqueda ocurre mientras teclea la cadena para buscarla.
 
 El comando para iniciar una búsqueda es C-s para búsqueda hacia
 adelante, y C-r para la búsqueda hacia atrás.  ¡PERO ESPERE!  No los
 intente aún.
 
-Cuando teclee C-s verá que la cadena "I-search" aparece como una
+Cuando teclee C-s verá que la cadena «I-search» aparece como una
 petición en el área de eco.  Esto le indica que Emacs está en lo que
 se conoce como búsqueda incremental, esperando que teclee lo que
 quiere buscar.  <Return> termina una búsqueda.
 
 >> Ahora teclee C-s para comenzar la búsqueda.  LENTAMENTE, una letra
-   a la vez, teclee la palabra "cursor", haciendo pausa después de
+   a la vez, teclee la palabra «cursor», haciendo pausa después de
    cada carácter para notar lo que pasa con el cursor.
-   Ahora ha buscado "cursor", una vez.
+   Ahora ha buscado «cursor», una vez.
 >> Teclee C-s de nuevo, para buscar la siguiente ocurrencia de
-   "cursor".
+   «cursor».
 >> Ahora teclee <DEL> cuatro veces y vea como se mueve el cursor.
 >> Teclee <Return> para terminar la búsqueda.
 
-¿Vió lo que ocurrió?  Emacs, en una búsqueda incremental, trata de ir
+¿Vio lo que ocurrió?  Emacs, en una búsqueda incremental, trata de ir
 a la ocurrencia de la cadena que ha tecleado hasta el momento.  Para
-ir a la próxima ocurrencia de "cursor" solo teclee C-s de nuevo.  Si
+ir a la próxima ocurrencia de «cursor» solo teclee C-s de nuevo.  Si
 tal ocurrencia no existe, Emacs pita y le dice que la búsqueda actual
-está fallando ("failing").  C-g también termina la búsqueda.
+está fallando («failing»).  C-g también termina la búsqueda.
 
 Si se encuentra en medio de una búsqueda incremental y teclea <DEL>,
-la búsqueda "vuelve" a un punto anterior.  Si teclea <DEL> justo
+la búsqueda «vuelve» a un punto anterior.  Si teclea <DEL> justo
 después de teclear C-s para avanzar hasta la siguiente ocurrencia de
 la cadena buscada, el cursor retrocede a una ocurrencia previa.  Si no
 hay ocurrencias previas, <DEL> borra el último carácter de la cadena
-buscada.  Por ejemplo, suponga que ha tecleado "c", para buscar la
-primera ocurrencia de "c".  Ahora, si teclea "u", el cursor se moverá
-a la primera ocurrencia de "cu".  Ahora teclee <DEL>.  Esto borra la
-"u" de la cadena buscada, y el cursor vuelve a la primera ocurrencia
-de "c".
+buscada.  Por ejemplo, suponga que ha tecleado «c», para buscar la
+primera ocurrencia de «c».  Ahora, si teclea «u», el cursor se moverá
+a la primera ocurrencia de «cu».  Ahora teclee <DEL>.  Esto borra la
+«u» de la cadena buscada, y el cursor vuelve a la primera ocurrencia
+de «c».
 
 Si está en medio de una búsqueda y teclea un carácter control o meta
 (con algunas pocas excepciones: los caracteres que son especiales en
@@ -926,8 +926,8 @@ la búsqueda se invierte.
 
 Una de las características agradables de Emacs es que se puede mostrar
 más de una ventana en la pantalla al mismo tiempo.  (Note que Emacs
-usa el término "marcos", descrito en la siguiente sección, para
-referirse a lo que otras aplicaciones llaman "ventanas".  El manual de
+usa el término «marcos», descrito en la siguiente sección, para
+referirse a lo que otras aplicaciones llaman «ventanas».  El manual de
 Emacs contiene un Glosario de términos.)
 
 >> Mueva el cursor a esta línea y teclee C-l C-l.
@@ -939,7 +939,7 @@ Emacs contiene un Glosario de términos.)
 >> Teclee C-M-v para desplazar la ventana inferior.
    (Si no tiene una tecla META real, teclee ESC C-v.)
 
->> Teclee C-x o ("o" para "otro") para mover el cursor a la ventana
+>> Teclee C-x o («o» para «otro») para mover el cursor a la ventana
    inferior.
 >> Use C-v y M-v en la ventana inferior para desplazarla.
    Siga leyendo estas direcciones en la ventana superior.
@@ -949,7 +949,7 @@ Emacs contiene un Glosario de términos.)
    El cursor en la ventana superior está justo donde estaba antes.
 
 Puede continuar usando C-x o para cambiar entre las ventanas.  La
-"ventana seleccionada", donde tiene lugar casi toda la edición, es la
+«ventana seleccionada», donde tiene lugar casi toda la edición, es la
 que tiene un cursor muy visible que parpadea cuando usted no está
 tecleando.  Las otras ventanas tienen su propia posición del cursor;
 si está ejecutando Emacs en una pantalla gráfica, esos cursores se
@@ -962,7 +962,7 @@ C-M-v.
 
 C-M-v es un ejemplo de un carácter CONTROL-META.  Si tiene una tecla
 META (o Alt), puede teclear C-M-v pulsando a la vez CONTROL y META
-mientras teclea v.  No importa qué tecla "vaya primero", CONTROL o
+mientras teclea v.  No importa qué tecla «vaya primero», CONTROL o
 META, porque las dos teclas actúan modificando los caracteres que
 teclea.
 
@@ -975,8 +975,8 @@ sí mismo, no es una tecla modificadora.
    ventana de abajo.
 
 (Si hubiera tecleado C-x 1 en la ventana inferior, esto eliminaría la
-superior.  Piense en este comando como "mantener sólo una
-ventana--aquella en la cual estoy.")
+superior.  Piense en este comando como «mantener solo una
+ventana —aquella en la cual estoy—».)
 
 No tiene por qué mostrarse el mismo buffer en ambas ventanas.  Si usa
 C-x C-f para encontrar un archivo en una ventana, la otra ventana no
@@ -997,10 +997,10 @@ diferentes:
 * MÚLTIPLES MARCOS
 ------------------
 
-Emacs puede crear también múltiples "marcos".  Marco es como
-denominamos a un grupo de ventanas, junto con sus menus, barras de
+Emacs puede crear también múltiples «marcos».  Marco es como
+denominamos a un grupo de ventanas, junto con sus menús, barras de
 desplazamiento, áreas de eco, etc.  En entornos gráficos, lo que Emacs
-denomina "marco" es lo que otras aplicaciones llaman "ventana".  En
+denomina «marco» es lo que otras aplicaciones llaman «ventana».  En
 entornos gráficos, es posible mostrar varios marcos al mismo tiempo.
 En una terminal, solo se puede mostrar un marco a la vez.
 
@@ -1015,7 +1015,7 @@ El primer marco no tiene nada de especial.
 
 También puede destruir un marco mediante el método normal que ofrezca
 el entorno gráfico (a menudo, pinchando con el ratón en un botón
-etiquetado como "X" en alguna de las esquinas superiores del marco).
+etiquetado como «X» en alguna de las esquinas superiores del marco).
 Si al hacer eso destruye el último marco de Emacs, la aplicación
 termina.
 
@@ -1023,24 +1023,24 @@ termina.
 * NIVELES RECURSIVOS DE EDICIÓN
 --------------------------------
 
-Algunas veces entrará a lo que es llamado un "nivel recursivo de
-edición".  Esto se indica en la línea de modo mediante corchetes en la
+Algunas veces entrará a lo que es llamado un «nivel recursivo de
+edición».  Esto se indica en la línea de modo mediante corchetes en la
 línea de modo, rodeando los paréntesis del nombre del modo mayor.  Por
 ejemplo, probablemente vea [(Fundamental)] en vez de (Fundamental).
 
 Para salir de los niveles recursivos de edición, teclee ESC ESC ESC.
-Éste es un comando de "salida" para todo propósito.  También lo puede
+Éste es un comando de «salida» para todo propósito.  También lo puede
 usar para eliminar ventanas extras, y salir del minibuffer.
 
 >> Teclee M-x para entrar a un minibuffer; luego teclee ESC ESC ESC
    para salir.
 
-No se puede usar C-g para salir de los "niveles recursivos de
-edición".  Esto es porque C-g es usado para cancelar comandos y
+No se puede usar C-g para salir de los «niveles recursivos de
+edición».  Esto es porque C-g es usado para cancelar comandos y
 argumentos DENTRO del nivel recursivo de edición.
 
 
-* CONSEGUIR MAS AYUDA
+* CONSEGUIR MÁS AYUDA
 ---------------------
 
 En este tutorial hemos tratado de ofrecer suficiente información para
@@ -1048,8 +1048,8 @@ que empiece a usar Emacs.  Hay tanto disponible en Emacs 
que sería
 imposible explicar todo aquí.  Sin embargo, quizá desee aprender más
 sobre Emacs, ya que tiene muchas otras características útiles.  Emacs
 provee comandos para leer documentación acerca de los comandos de
-Emacs.  Todos estos comandos de "ayuda" comienzan con el carácter
-Control-h, que es llamado "el carácter de Ayuda (Help)".
+Emacs.  Todos estos comandos de «ayuda» comienzan con el carácter
+Control-h, que es llamado «el carácter de Ayuda (Help)».
 
 Para usar las funciones de ayuda, teclee el carácter C-h, y luego un
 carácter que especifica qué tipo de ayuda quiere.  Si está REALMENTE
@@ -1069,12 +1069,12 @@ una descripción muy breve del comando.
 
          C-p runs the command previous-line
 
-Esto le dice el "nombre de la función".  Ya que los nombres de las
+Esto le dice el «nombre de la función».  Ya que los nombres de las
 funciones se eligen para indicar lo que hace el comando, pueden servir
 como una breve documentación: suficiente para recordarle los comandos
 que ha aprendido.
 
-Los comandos de múltiples caracteres tales como C-x C-s y (sí no tiene
+Los comandos de múltiples caracteres tales como C-x C-s y (si no tiene
 las teclas META o EDIT o ALT) <ESC>v también están permitidos después
 de C-h c.
 
@@ -1113,7 +1113,7 @@ pregunte por ella.
 >> Teclee C-h a file <Return>.
 
 Esto muestra en otra ventana una lista de todos los comandos M-x con
-la palabra "file" en sus nombres.  Verá los comandos de caracteres
+la palabra «file» en sus nombres.  Verá los comandos de caracteres
 listados junto a los nombres de los comandos correspondientes (por
 ejemplo, C-x C-f junto a find-file).
 
@@ -1123,7 +1123,7 @@ ejemplo, C-x C-f junto a find-file).
 >> Teclee C-x 1 para borrar la ventana de ayuda.
 
    C-h i        Leer los manuales incluidos (alias Info).  Este comando
-                lo pone en un buffer especial llamado "*info*" donde
+                lo pone en un buffer especial llamado «*info*» donde
                 puede leer manuales de los paquetes instalados en su
                 sistema. Teclee m emacs <Return> para leer el manual
                 de Emacs.  Si nunca ha usado Info, teclee ? y Emacs y
@@ -1137,22 +1137,22 @@ ejemplo, C-x C-f junto a find-file).
 ---------------------
 
 Puede aprender más acerca de Emacs leyendo su manual, ya sea como
-libro o en el propio Emacs (use el menú Ayuda, "Help", o teclee C-h
+libro o en el propio Emacs (use el menú Ayuda, «Help», o teclee C-h
 r).  Dos características que pueden gustarle son la completación, que
 ahorra teclear, y dired, que simplifica el manejo de archivos.
 
 La completación es una manera de ahorrar teclear innecesariamente.
-Por ejemplo, si quiere cambiarse al buffer "*Messages*", puede teclear
+Por ejemplo, si quiere cambiarse al buffer «*Messages*», puede teclear
 C-x b *M<Tab> y Emacs encontrará el resto del nombre del buffer tan
 lejos como pueda determinar de lo que ya haya tecleado.  La
 completación también funciona con nombres de comandos y de archivos.
 La completación se describe en el Info del manual de Emacs en el nodo
-llamado "Completion".
+llamado «Completion».
 
 Dired le permite listar los archivos en un directorio (y opcionalmente
 sus subdirectorios), moverse alrededor de esa lista, visitar,
 renombrar, borrar y aparte de eso operar en los archivos.  Dired está
-descrito en el manual de Emacs en el nodo llamado "Dired".
+descrito en el manual de Emacs en el nodo llamado «Dired».
 
 El manual también describe otras características de Emacs.
 
@@ -1164,7 +1164,7 @@ Para salir permanentemente de Emacs use C-x C-c.
 
 Este tutorial intenta ser comprensible para todos los usuarios nuevos,
 así que si encuentra algo que no esté claro, no se quede parado
-culpándose a sí mismo: ¡Quéjese!
+culpándose a sí mismo: ¡quéjese!
 
 
 * COPIA
@@ -1200,7 +1200,7 @@ La versión en español ha sido actualizada por:
        Rafael Sepúlveda <address@hidden>
        Juanma Barranquero <address@hidden>
 
-Por favor, en caso de duda, sólo es válido el original en inglés de la
+Por favor, en caso de duda, solo es válido el original en inglés de la
 siguiente nota de derechos de reproducción (que puede encontrar en el
 archivo TUTORIAL).
 
@@ -1220,7 +1220,7 @@ Copyright (C) 1985, 1996, 1998, 2001-2014 Free Software 
Foundation, Inc.
 Las condiciones para copiar Emacs mismo son más complejas, pero con el
 mismo espíritu.  Por favor lea el archivo COPYING y luego distribuya
 copias de GNU Emacs a sus amigos.  ¡Ayude a erradicar el
-obstruccionismo del software ("propietariedad") usando, escribiendo, y
+obstruccionismo del software («propietariedad») usando, escribiendo, y
 compartiendo software libre!
 
 --- end of TUTORIAL.es ---
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 9b6c0da..07a72ec 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,15 @@
+2014-12-27  Eli Zaretskii  <address@hidden>
+
+       * Makefile.in (etags_libs, ebrowse${EXEEXT}, profile${EXEEXT})
+       (make-docfile${EXEEXT}, movemail${EXEEXT})
+       (update-game-score${EXEEXT}): Put $(NTLIB) before $(LOADLIBES),
+       since GCC sometimes calls stpcpy when it sees strcpy, under
+       optimization switches.
+
+2014-12-14  Paul Eggert  <address@hidden>
+
+       * etags.c (analyze_regex): Rename from analyse_regex.
+
 2014-12-14  Glenn Morris  <address@hidden>
 
        * grep-changelog: Remove file.
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index cae0898..13a7a05 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -321,7 +321,7 @@ regex.o: $(srcdir)/../src/regex.c $(srcdir)/../src/regex.h 
$(config_h)
 
 etags_deps = ${srcdir}/etags.c regex.o $(NTLIB) $(config_h)
 etags_cflags = -DEMACS_NAME="\"GNU Emacs\"" -DVERSION="\"${version}\"" -o $@
-etags_libs = regex.o $(LOADLIBES) $(NTLIB)
+etags_libs = regex.o $(NTLIB) $(LOADLIBES)
 
 etags${EXEEXT}: ${etags_deps}
        $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $(etags_cflags) $< $(etags_libs)
@@ -336,18 +336,18 @@ ctags${EXEEXT}: ${srcdir}/ctags.c ${etags_deps}
 ebrowse${EXEEXT}: ${srcdir}/ebrowse.c ${srcdir}/../lib/min-max.h $(NTLIB) \
                    $(config_h)
        $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} -DVERSION="\"${version}\"" \
-         $< $(LOADLIBES) $(NTLIB) -o $@
+         $< $(NTLIB) $(LOADLIBES) -o $@
 
 profile${EXEEXT}: ${srcdir}/profile.c $(NTLIB) $(config_h)
        $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< \
-         $(LOADLIBES) $(NTLIB) $(LIB_CLOCK_GETTIME) -o $@
+         $(NTLIB) $(LOADLIBES) $(LIB_CLOCK_GETTIME) -o $@
 
 make-docfile${EXEEXT}: ${srcdir}/make-docfile.c $(NTLIB) $(config_h)
-       $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< $(LOADLIBES) $(NTLIB) -o $@
+       $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< $(NTLIB) $(LOADLIBES) -o $@
 
 movemail${EXEEXT}: ${srcdir}/movemail.c pop.o $(NTLIB) $(config_h)
        $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} ${MOVE_FLAGS} $< pop.o \
-         $(LOADLIBES) $(NTLIB) $(LIBS_MOVE) -o $@
+         $(NTLIB) $(LOADLIBES) $(LIBS_MOVE) -o $@
 
 pop.o: ${srcdir}/pop.c ${srcdir}/pop.h ${srcdir}/../lib/min-max.h $(config_h)
        $(AM_V_CC)$(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} $<
@@ -378,7 +378,7 @@ hexl${EXEEXT}: ${srcdir}/hexl.c $(NTLIB) $(config_h)
 update-game-score${EXEEXT}: ${srcdir}/update-game-score.c $(NTLIB) $(config_h)
        $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} \
          -DHAVE_SHARED_GAME_DIR="\"$(gamedir)\"" \
-         $< $(LOADLIBES) $(NTLIB) -o $@
+         $< $(NTLIB) $(LOADLIBES) -o $@
 
 emacsclient.res: ../nt/emacsclient.rc $(NTINC)/../icons/emacs.ico
        $(WINDRES) -O coff --include-dir=$(NTINC)/.. -o $@ $<
diff --git a/lib-src/ebrowse.c b/lib-src/ebrowse.c
index 29a88e8..b743159 100644
--- a/lib-src/ebrowse.c
+++ b/lib-src/ebrowse.c
@@ -1150,19 +1150,19 @@ sym_scope_1 (struct sym *p)
   if (*scope_buffer)
     {
       ensure_scope_buffer_room (3);
-      strcat (scope_buffer, "::");
+      strcpy (scope_buffer + scope_buffer_len, "::");
       scope_buffer_len += 2;
     }
 
   len = strlen (p->name);
   ensure_scope_buffer_room (len + 1);
-  strcat (scope_buffer, p->name);
+  strcpy (scope_buffer + scope_buffer_len, p->name);
   scope_buffer_len += len;
 
   if (HAS_FLAG (p->flags, F_TEMPLATE))
     {
       ensure_scope_buffer_room (3);
-      strcat (scope_buffer, "<>");
+      strcpy (scope_buffer + scope_buffer_len, "<>");
       scope_buffer_len += 2;
     }
 
@@ -2797,24 +2797,25 @@ operator_name (int *sc)
       s = token_string (LA1);
       MATCH ();
 
-      len = strlen (s) + 10;
+      ptrdiff_t slen = strlen (s);
+      len = slen + 10;
       if (len > id_size)
        {
          size_t new_size = max (len, 2 * id_size);
          id = (char *) xrealloc (id, new_size);
          id_size = new_size;
        }
-      strcpy (id, s);
+      char *z = stpcpy (id, s);
 
       /* Vector new or delete?  */
       if (LOOKING_AT ('['))
        {
-         strcat (id, "[");
+         z = stpcpy (z, "[");
          MATCH ();
 
          if (LOOKING_AT (']'))
            {
-             strcat (id, "]");
+             strcpy (z, "]");
              MATCH ();
            }
        }
@@ -2830,7 +2831,7 @@ operator_name (int *sc)
          id = (char *) xrealloc (id, new_size);
          id_size = new_size;
        }
-      strcpy (id, "operator");
+      char *z = stpcpy (id, "operator");
 
       /* Beware access declarations of the form "X::f;" Beware of
         `operator () ()'.  Yet another difficulty is found in
@@ -2842,14 +2843,16 @@ operator_name (int *sc)
          len += strlen (s) + 2;
          if (len > id_size)
            {
+             ptrdiff_t idlen = z - id;
              size_t new_size = max (len, 2 * id_size);
              id = (char *) xrealloc (id, new_size);
              id_size = new_size;
+             z = id + idlen;
            }
 
          if (*s != ')' && *s != ']')
-           strcat (id, " ");
-          strcat (id, s);
+           *z++ = ' ';
+          z = stpcpy (z, s);
           MATCH ();
 
          /* If this is a simple operator like `+', stop now.  */
@@ -3462,9 +3465,9 @@ open_file (char *file)
          buffer = (char *) xrealloc (buffer, buffer_size);
        }
 
-      strcpy (buffer, path->path);
-      strcat (buffer, "/");
-      strcat (buffer, file);
+      char *z = stpcpy (buffer, path->path);
+      *z++ = '/';
+      strcpy (z, file);
       fp = fopen (buffer, "r");
     }
 
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index ddc1b6d..cfc321a 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -905,9 +905,9 @@ get_server_config (const char *config_file, struct 
sockaddr_in *server,
         {
          char *path = xmalloc (strlen (home) + strlen (config_file)
                                + EXTRA_SPACE);
-         strcpy (path, home);
-         strcat (path, "/.emacs.d/server/");
-         strcat (path, config_file);
+         char *z = stpcpy (path, home);
+         z = stpcpy (z, "/.emacs.d/server/");
+         strcpy (z, config_file);
           config = fopen (path, "rb");
          free (path);
         }
@@ -916,9 +916,9 @@ get_server_config (const char *config_file, struct 
sockaddr_in *server,
         {
          char *path = xmalloc (strlen (home) + strlen (config_file)
                                + EXTRA_SPACE);
-         strcpy (path, home);
-         strcat (path, "/.emacs.d/server/");
-         strcat (path, config_file);
+         char *z = stpcpy (path, home);
+         z = stpcpy (z, "/.emacs.d/server/");
+         strcpy (z, config_file);
           config = fopen (path, "rb");
          free (path);
         }
@@ -1193,7 +1193,6 @@ set_local_socket (const char *local_socket_name)
       {
        /* socket_name is a file name component.  */
        long uid = geteuid ();
-       ptrdiff_t tmpdirlen;
        use_tmpdir = 1;
        tmpdir = egetenv ("TMPDIR");
        if (!tmpdir)
@@ -1212,12 +1211,11 @@ set_local_socket (const char *local_socket_name)
 #endif
               tmpdir = "/tmp";
           }
-       tmpdirlen = strlen (tmpdir);
        socket_name_storage =
-         xmalloc (tmpdirlen + strlen (server_name) + EXTRA_SPACE);
-       strcpy (socket_name_storage, tmpdir);
-       sprintf (socket_name_storage + tmpdirlen, "/emacs%ld/", uid);
-       strcat (socket_name_storage + tmpdirlen, server_name);
+         xmalloc (strlen (tmpdir) + strlen (server_name) + EXTRA_SPACE);
+       char *z = stpcpy (socket_name_storage, tmpdir);
+       z += sprintf (z, "/emacs%ld/", uid);
+       strcpy (z, server_name);
        local_socket_name = socket_name_storage;
       }
 
@@ -1253,12 +1251,12 @@ set_local_socket (const char *local_socket_name)
              {
                /* We're running under su, apparently. */
                long uid = pw->pw_uid;
-               ptrdiff_t tmpdirlen = strlen (tmpdir);
                char *user_socket_name
-                 = xmalloc (tmpdirlen + strlen (server_name) + EXTRA_SPACE);
-               strcpy (user_socket_name, tmpdir);
-               sprintf (user_socket_name + tmpdirlen, "/emacs%ld/", uid);
-               strcat (user_socket_name + tmpdirlen, server_name);
+                 = xmalloc (strlen (tmpdir) + strlen (server_name)
+                            + EXTRA_SPACE);
+               char *z = stpcpy (user_socket_name, tmpdir);
+               z += sprintf (z, "/emacs%ld/", uid);
+               strcpy (z, server_name);
 
                if (strlen (user_socket_name) < sizeof (server.sun_path))
                  strcpy (server.sun_path, user_socket_name);
@@ -1507,8 +1505,7 @@ start_daemon_and_retry_set_socket (void)
          const char *deq = "--daemon=";
          char *daemon_arg = xmalloc (strlen (deq)
                                      + strlen (socket_name) + 1);
-         strcpy (daemon_arg, deq);
-         strcat (daemon_arg, socket_name);
+         strcpy (stpcpy (daemon_arg, deq), socket_name);
          d_argv[1] = daemon_arg;
        }
       execvp ("emacs", d_argv);
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 6639ac4..78b3fed 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -1277,13 +1277,13 @@ main (int argc, char **argv)
            default:
              continue;         /* the for loop */
            }
-         strcpy (cmd, "mv ");
-         strcat (cmd, tagfile);
-         strcat (cmd, " OTAGS;fgrep -v '\t");
-         strcat (cmd, argbuffer[i].what);
-         strcat (cmd, "\t' OTAGS >");
-         strcat (cmd, tagfile);
-         strcat (cmd, ";rm OTAGS");
+         char *z = stpcpy (cmd, "mv ");
+         z = stpcpy (z, tagfile);
+         z = stpcpy (z, " OTAGS;fgrep -v '\t");
+         z = stpcpy (z, argbuffer[i].what);
+         z = stpcpy (z, "\t' OTAGS >");
+         z = stpcpy (z, tagfile);
+         strcpy (z, ";rm OTAGS");
          if (system (cmd) != EXIT_SUCCESS)
            fatal ("failed to execute shell command", (char *)NULL);
        }
@@ -1307,10 +1307,10 @@ main (int argc, char **argv)
        /* Maybe these should be used:
           setenv ("LC_COLLATE", "C", 1);
           setenv ("LC_ALL", "C", 1); */
-       strcpy (cmd, "sort -u -o ");
-       strcat (cmd, tagfile);
-       strcat (cmd, " ");
-       strcat (cmd, tagfile);
+       char *z = stpcpy (cmd, "sort -u -o ");
+       z = stpcpy (z, tagfile);
+       *z++ = ' ';
+       strcpy (z, tagfile);
        exit (system (cmd));
       }
   return EXIT_SUCCESS;
@@ -3427,8 +3427,9 @@ C_entries (int c_ext, FILE *inf)
            case omethodtag:
            case omethodparm:
              objdef = omethodcolon;
-             linebuffer_setlen (&token_name, token_name.len + 1);
-             strcat (token_name.buffer, ":");
+             int toklen = token_name.len;
+             linebuffer_setlen (&token_name, toklen + 1);
+             strcpy (token_name.buffer + toklen, ":");
              break;
            }
          if (structdef == stagseen)
@@ -6362,12 +6363,12 @@ relative_filename (char *file, char *dir)
   while ((dp = strchr (dp + 1, '/')) != NULL)
     i += 1;
   res = xnew (3*i + strlen (fp + 1) + 1, char);
-  res[0] = '\0';
+  char *z = res;
   while (i-- > 0)
-    strcat (res, "../");
+    z = stpcpy (z, "../");
 
   /* Add the file name relative to the common root of file and dir. */
-  strcat (res, fp + 1);
+  strcpy (z, fp + 1);
   free (afn);
 
   return res;
diff --git a/lib-src/pop.c b/lib-src/pop.c
index ffe16c5..7001150 100644
--- a/lib-src/pop.c
+++ b/lib-src/pop.c
@@ -1397,8 +1397,7 @@ sendline (popserver server, const char *line)
      over a few dozen messages, and is a big chunk of the time we
      spend fetching mail from a server close by.  */
   buf = alloca (strlen (line) + 3);
-  strcpy (buf, line);
-  strcat (buf, "\r\n");
+  strcpy (stpcpy (buf, line), "\r\n");
   ret = fullwrite (server->file, buf, strlen (buf));
 
   if (ret < 0)
diff --git a/lib-src/update-game-score.c b/lib-src/update-game-score.c
index 7a64cd0..b311001 100644
--- a/lib-src/update-game-score.c
+++ b/lib-src/update-game-score.c
@@ -221,9 +221,9 @@ main (int argc, char **argv)
   if (!scorefile)
     lose_syserr ("Couldn't allocate score file");
 
-  strcpy (scorefile, prefix);
-  strcat (scorefile, "/");
-  strcat (scorefile, argv[optind]);
+  char *z = stpcpy (scorefile, prefix);
+  *z++ = '/';
+  strcpy (z, argv[optind]);
 
   newscore.score = normalize_integer (argv[optind + 1]);
   if (! newscore.score)
@@ -430,8 +430,7 @@ write_scores (const char *filename, const struct 
score_entry *scores,
   char *tempfile = malloc (strlen (filename) + strlen (".tempXXXXXX") + 1);
   if (!tempfile)
     return -1;
-  strcpy (tempfile, filename);
-  strcat (tempfile, ".tempXXXXXX");
+  strcpy (stpcpy (tempfile, filename), ".tempXXXXXX");
   fd = mkostemp (tempfile, 0);
   if (fd < 0)
     return -1;
@@ -462,8 +461,7 @@ lock_file (const char *filename, void **state)
   char *lockpath = malloc (strlen (filename) + strlen (lockext) + 60);
   if (!lockpath)
     return -1;
-  strcpy (lockpath, filename);
-  strcat (lockpath, lockext);
+  strcpy (stpcpy (lockpath, filename), lockext);
   *state = lockpath;
 
   while ((fd = open (lockpath, O_CREAT | O_EXCL, 0600)) < 0)
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
index 740ebb1..27a5964 100644
--- a/lib/gnulib.mk
+++ b/lib/gnulib.mk
@@ -21,7 +21,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib 
--m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux 
--avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix 
--avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die 
--avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select 
--avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib 
--makefile-name=gnulib.mk --conditional-dependencies --no-libtool --ma [...]
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib 
--m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux 
--avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix 
--avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die 
--avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select 
--avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib 
--makefile-name=gnulib.mk --conditional-dependencies --no-libtool --ma [...]
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -1214,6 +1214,15 @@ EXTRA_DIST += stdlib.in.h
 
 ## end   gnulib module stdlib
 
+## begin gnulib module stpcpy
+
+
+EXTRA_DIST += stpcpy.c
+
+EXTRA_libgnu_a_SOURCES += stpcpy.c
+
+## end   gnulib module stpcpy
+
 ## begin gnulib module strftime
 
 libgnu_a_SOURCES += strftime.c
diff --git a/lib/stpcpy.c b/lib/stpcpy.c
new file mode 100644
index 0000000..880a706
--- /dev/null
+++ b/lib/stpcpy.c
@@ -0,0 +1,49 @@
+/* stpcpy.c -- copy a string and return pointer to end of new string
+   Copyright (C) 1992, 1995, 1997-1998, 2006, 2009-2014 Free Software
+   Foundation, Inc.
+
+   NOTE: The canonical source of this file is maintained with the GNU C 
Library.
+   Bugs can be reported to address@hidden
+
+   This program is free software: you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 3 of the License, or any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include <string.h>
+
+#undef __stpcpy
+#ifdef _LIBC
+# undef stpcpy
+#endif
+
+#ifndef weak_alias
+# define __stpcpy stpcpy
+#endif
+
+/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST.  */
+char *
+__stpcpy (char *dest, const char *src)
+{
+  register char *d = dest;
+  register const char *s = src;
+
+  do
+    *d++ = *s;
+  while (*s++ != '\0');
+
+  return d - 1;
+}
+#ifdef weak_alias
+weak_alias (__stpcpy, stpcpy)
+#endif
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d8bb1c8..bfe2dfb 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,310 @@
+2014-12-28  Juri Linkov  <address@hidden>
+
+       * vc/compare-w.el: Require diff-mode for diff faces.
+       (compare-windows-removed, compare-windows-added): New faces
+       inheriting from diff faces.
+       (compare-windows): Define obsolete face alias.
+       (compare-windows-highlight): Replace face `compare-windows' with
+       new faces `compare-windows-added' and `compare-windows-removed'
+       (bug#19451).
+       (compare-windows-get-recent-window): Signal an error when
+       no other window is found (bug#19170).
+
+2014-12-27  Dmitry Gutov  <address@hidden>
+
+       * progmodes/elisp-mode.el (elisp--xref-identifier-file):
+       Skip features that have no sources.
+
+       * simple.el (execute-extended-command):
+       When `suggest-key-bindings' is nil, don't.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Native readline completion.
+
+       * progmodes/python.el 
(python-shell-completion-native-disabled-interpreters)
+       (python-shell-completion-native-enable)
+       (python-shell-completion-native-output-timeout): New defcustoms.
+       (python-shell-completion-native-interpreter-disabled-p)
+       (python-shell-completion-native-try)
+       (python-shell-completion-native-setup)
+       (python-shell-completion-native-turn-off)
+       (python-shell-completion-native-turn-on)
+       (python-shell-completion-native-turn-on-maybe)
+       (python-shell-completion-native-turn-on-maybe-with-msg)
+       (python-shell-completion-native-toggle): New functions.
+       (python-shell-completion-native-get-completions): New function.
+       (python-shell-completion-at-point): Use it.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Enhance shell user interaction and deprecate
+       python-shell-get-or-create-process.
+
+       * progmodes/python.el
+       (python-shell-get-process-or-error): New function.
+       (python-shell-with-shell-buffer): Use it.
+       (python-shell-send-string, python-shell-send-region)
+       (python-shell-send-buffer, python-shell-send-defun)
+       (python-shell-send-file, python-shell-switch-to-shell): Use it.
+       Add argument MSG to display user-friendly message when no process
+       is running.
+       (python-shell-switch-to-shell): Call pop-to-buffer with NORECORD.
+       (python-shell-make-comint): Rename argument SHOW from POP.  Use
+       display-buffer instead of pop-to-buffer.
+       (run-python): Doc fix.  Return process.
+       (python-shell-get-or-create-process): Make obsolete.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       * progmodes/python.el (python-shell-buffer-substring): Handle
+       cornercase when region sent starts at point-min.
+
+2014-12-27  Eli Zaretskii  <address@hidden>
+
+       * language/misc-lang.el (composition-function-table): Add Syriac
+       characters and also ZWJ/ZWNJ.  See
+       http://lists.gnu.org/archive/html/help-gnu-emacs/2014-12/msg00248.html
+       for the details.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Fix message when sending region.
+
+       * progmodes/python.el (python-shell-send-region): Rename argument
+       send-main from nomain.  Fix message.
+       (python-shell-send-buffer): Rename argument send-main from arg.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Cleanup temp files even with eval errors.
+
+       * progmodes/python.el (python-shell-send-file): Make file-name
+       mandatory.  Fix temp file removal in the majority of cases.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Handle file encoding for shell.
+
+       * progmodes/python.el (python-rx-constituents): Add coding-cookie.
+       (python-shell--save-temp-file): Write file with proper encoding.
+       (python-shell-buffer-substring): Add coding cookie for detected
+       encoding to generated content.  Fix blank lines when removing
+       if-name-main block.
+       (python-shell-send-file): Handle file encoding.
+       (python-info-encoding-from-cookie)
+       (python-info-encoding): New functions.
+
+2014-12-27  Michael Albinus  <address@hidden>
+
+       * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
+       Use `tramp-rsh-end-of-line', it ought to be more robust.
+
+2014-12-27  Stefan Monnier  <address@hidden>
+
+       * progmodes/js.el (js-syntax-propertize): "return" can't be divided
+       (bug#19397).
+
+2014-12-27  Michael Albinus  <address@hidden>
+
+       * net/tramp.el (tramp-read-passwd): Ignore errors from `auth-source-*'.
+
+       * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Use "\n"
+       as end-of-line delimeter for passwords, when running on MS Windows.
+
+2014-12-27  Stefan Monnier  <address@hidden>
+
+       * progmodes/sh-script.el (sh-set-shell): Don't change the global value
+       of indent-line-function (bug#19433).
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       Fix line numbers on Python shell.
+       * progmodes/python.el (python-shell--save-temp-file): Do not
+       append coding cookie.
+       (python-shell-send-string): Generalize for
+       python-shell-send-region.
+       (python--use-fake-loc): Delete var.
+       (python-shell-buffer-substring): Cleanup fake-loc logic.
+       (python-shell-send-region): Remove fake-loc logic, simplify.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       * progmodes/python.el (python-indent-post-self-insert-function):
+       Make colon to re-indent only for dedenters, handling
+       multiline-statements gracefully.
+
+2014-12-27  Michael Albinus  <address@hidden>
+
+       * net/tramp.el (tramp-handle-insert-file-contents):
+       Set `find-file-not-found-functions' in case of errors.  (Bug#18623)
+
+2014-12-27  Michael Albinus  <address@hidden>
+
+       * net/tramp-sh.el (tramp-send-command-and-read): New optional
+       arg MARKER.
+       (tramp-get-remote-path): Use it.
+
+2014-12-27  Stefan Monnier  <address@hidden>
+
+       * lisp/subr.el (redisplay-dont-pause): Mark as obsolete.
+
+2014-12-27  Michael Albinus  <address@hidden>
+
+       * net/tramp.el (tramp-error-with-buffer): Call `message' properly.
+       (tramp-accept-process-output): Use nil as argument for
+       `accept-process-output', when there is a gateway prepended.
+
+       * net/tramp-gw.el (tramp-gw-open-connection): Suppress traces in
+       wrong debug buffer.
+       (tramp-gw-open-connection): Set process coding system 'binary.
+       (tramp-gw-open-network-stream): Handle HTTP error 403.
+
+       * net/tramp-sh.el (tramp-compute-multi-hops): Suppress traces in
+       wrong debug buffer.
+       (tramp-maybe-open-connection): Set connection property "gateway".
+
+2014-12-27  Stefan Monnier  <address@hidden>
+
+       * subr.el (sit-for): Tweak docstring (bug#19381).
+
+2014-12-27  Dmitry Gutov  <address@hidden>
+
+       * vc/vc-git.el (vc-git-after-dir-status-stage): Move `up-to-date'
+       stage to after `diff-index' (bug#19386).
+
+2014-12-27  João Távora  <address@hidden>
+
+       * textmodes/tex-mode.el (tex-insert-quote): Consider and respect
+       `electric-pair-mode' (bug#19356).
+
+2014-12-27  Dmitry Gutov  <address@hidden>
+
+       elisp-xref-find: Don't create buffers eagerly.
+
+       * progmodes/elisp-mode.el (elisp--identifier-location): Fold back
+       into `elisp--company-location'.
+       (elisp--identifier-completion-table): Rename to
+       `elisp--identifier-completion-table', and do not include just any
+       symbols with a property list.
+       (elisp-completion-at-point): Revert the 2014-12-25 change.
+       (elisp--xref-identifier-file): New function.
+       (elisp--xref-find-definitions): Use it.
+
+       * emacs-lisp/find-func.el (find-function-library): New function,
+       extracted from `find-function-noselect'.
+
+       * progmodes/xref.el (xref-elisp-location): New class.
+       (xref-make-elisp-location): New function.
+       (xref-location-marker): New implementation.
+
+2014-12-27  Juri Linkov  <address@hidden>
+
+       * minibuffer.el (minibuffer-completion-help):
+       Use shrink-window-if-larger-than-buffer in window-height
+       when temp-buffer-resize-mode is nil.
+
+       * window.el (with-displayed-buffer-window): Remove window-height
+       from the action alist in the temp-buffer-window-show call
+       when window-height is handled explicitly afterwards (bug#19355).
+
+2014-12-27  Juri Linkov  <address@hidden>
+
+       Support subdirectories when saving places in dired.
+       * saveplace.el (toggle-save-place, save-place-to-alist)
+       (save-places-to-alist, save-place-dired-hook):
+       Use dired-current-directory instead of dired-directory (bug#19436).
+       (save-place-dired-hook): Add check for alist to make the new
+       format future-proof to allow other possible formats.
+
+2014-12-26  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Generate clearer shell buffer names.
+
+       * progmodes/python.el (python-shell-get-process-name)
+       (python-shell-internal-get-process-name): Use `buffer-name`.
+       (python-shell-internal-get-or-create-process): Simplify.
+
+2014-12-26  Dmitry Gutov  <address@hidden>
+
+       Add basic xref apropos implementation to elisp-mode.
+
+       * progmodes/elisp-mode.el (elisp--xref-find-definitions):
+       Filter out nil results.
+       (elisp--xref-find-apropos): New function.
+       (elisp-xref-find): Use it.
+
+       * progmodes/xref.el (xref--show-xrefs): Use `user-error'.
+
+2014-12-25  Filipp Gunbin  <address@hidden>
+
+       * dired-aux.el (dired-maybe-insert-subdir): Make
+       dired-maybe-insert-subdir always skip trivial files.
+
+2014-12-25  Helmut Eller  <address@hidden>
+            Dmitry Gutov  <address@hidden>
+
+       Consolidate cross-referencing commands.
+
+       Move autoloaded bindings for `M-.', `M-,', `C-x 4 .' and
+       `C-x 5 .' from etags.el to xref.el.
+
+       * progmodes/xref.el: New file.
+
+       * progmodes/elisp-mode.el (elisp--identifier-types): New variable.
+       (elisp--identifier-location): New function, extracted from
+       `elisp--company-location'.
+       (elisp--company-location): Use it.
+       (elisp--identifier-completion-table): New variable.
+       (elisp-completion-at-point): Use it.
+       (emacs-lisp-mode): Set the local values of `xref-find-function'
+       and `xref-identifier-completion-table-function'.
+       (elisp-xref-find, elisp--xref-find-definitions)
+       (elisp--xref-identifier-completion-table): New functions.
+
+       * progmodes/etags.el (find-tag-marker-ring): Mark obsolete in
+       favor of `xref--marker-ring'.
+       (tags-lazy-completion-table): Autoload.
+       (tags-reset-tags-tables): Use `xref-clear-marker-stack'.
+       (find-tag-noselect): Use `xref-push-marker-stack'.
+       (pop-tag-mark): Make an alias for `xref-pop-marker-stack'.
+       (etags--xref-limit): New constant.
+       (etags-xref-find, etags--xref-find-definitions): New functions.
+
+2014-12-25  Martin Rudalics  <address@hidden>
+
+       * cus-start.el (resize-mini-windows): Make it customizable.
+
+2014-12-24  Stephen Leake  <address@hidden>
+
+       * startup.el (fancy-about-text): Change buttons for etc/CONTRIBUTE
+       to (info "(emacs)Contributing").  (Bug#19299)
+
+2014-12-24  Martin Rudalics  <address@hidden>
+
+       * window.el (mouse-autoselect-window-position-1): New variable.
+       (mouse-autoselect-window-cancel)
+       (mouse-autoselect-window-select, handle-select-window): With
+       delayed autoselection select window only if mouse moves after
+       selecting its frame.
+
+2014-12-24  Michael Albinus  <address@hidden>
+
+       * eshell/esh-ext.el (eshell-find-interpreter): Expand relative
+       remote file names.  (Bug#18782)
+
+2014-12-23  Sam Steingold  <address@hidden>
+
+       * shell.el (shell-display-buffer-actions): New user option.
+       (shell): Pass it to `pop-to-buffer' instead of hard-coding
+       `pop-to-buffer-same-window'.
+
+2014-12-23  Stefan Monnier  <address@hidden>
+
+       * progmodes/js.el (js--syntax-propertize-regexp-syntax-table): New var.
+       (js-syntax-propertize-regexp): Use it to recognize "slash in
+       a character class" (bug#19397).
+
 2014-12-22  Stefan Monnier  <address@hidden>
 
        * completion.el: Use post-self-insert-hook (bug#19400).
@@ -35,24 +342,21 @@
 
 2014-12-19  Alan Mackenzie  <address@hidden>
 
-       Make C++11 uniform init syntax work.  New keywords "final" and 
"override"
-
+       Make C++11 uniform init syntax work.
+       New keywords "final" and "override"
        * progmodes/cc-engine.el (c-back-over-member-initializer-braces):
        New function.
        (c-guess-basic-syntax): Set `containing-sex' and `lim' using the
        new function.
-
        * progmodes/cc-fonts.el (c-font-lock-declarations): Check more
        carefully for "are we at a declarator?" using
        c-back-over-member-initializers.
-
-       * progmodes/cc-langs.el (c-type-modifier-kwds): include "final"
+       * progmodes/cc-langs.el (c-type-modifier-kwds): Include "final"
        and "override" in the C++ value.
 
 2014-12-19  Martin Rudalics  <address@hidden>
 
-       * textmodes/ispell.el (ispell-command-loop): Don't use
-       `next-window'.
+       * textmodes/ispell.el (ispell-command-loop): Don't use `next-window'.
 
 2014-12-21  Lars Ingebrigtsen  <address@hidden>
 
@@ -132,7 +436,7 @@
        do the window handling.
        (ispell-adjusted-window-height, ispell-overlay-window): Remove.
        (ispell-display-buffer): New function to reuse, create and fit
-       window to ispell's buffers. (Bug#3413)
+       window to ispell's buffers.  (Bug#3413)
 
 2014-12-18  Dmitry Gutov  <address@hidden>
 
@@ -256,6 +560,13 @@
        * vc/vc-bzr.el (vc-bzr-diff):
        * obsolete/vc-arch.el (vc-arch-diff): Move ASYNC argument to the end.
 
+2014-12-14  Paul Eggert  <address@hidden>
+
+       * emacs-lisp/cconv.el (cconv--analyze-use):
+       Rename from cconv--analyse-use.
+       (cconv--analyze-function): Rename from cconv--analyse-function.
+       (cconv-analyze-form): Rename from cconv-analyse-form.
+
 2014-12-13  Andreas Schwab  <address@hidden>
 
        * net/shr.el (shr-next-link): Don't error out at eob.
@@ -322,12 +633,12 @@
 
 2014-12-12  Eric S. Raymond  <address@hidden>
 
-       * vc/vc-dav.el, vc/vc-git.el, vc/vc-hg.el, vc/vc-src.el,
-       vc/vc.el: latest-on-branch-p is no longer a public method.
+       * vc/vc-dav.el, vc/vc-git.el, vc/vc-hg.el, vc/vc-src.el:
+       * vc/vc.el: latest-on-branch-p is no longer a public method.
 
-       * vc/vc.el, vc/vc-hg.el, vc/vc-git.el, vc/vc-hooks.el,
-       vc/vc-mtn.el, vc/vc-rcs.el, vc/vc-sccs.el, vc/vc-src.el: Remove 
`rollback'
-       method, to be replaced in the future by uncommit.
+       * vc/vc.el, vc/vc-hg.el, vc/vc-git.el, vc/vc-hooks.el:
+       * vc/vc-mtn.el, vc/vc-rcs.el, vc/vc-sccs.el, vc/vc-src.el:
+       Remove `rollback' method, to be replaced in the future by uncommit.
 
 2014-12-11  Michael Albinus  <address@hidden>
 
@@ -345,10 +656,9 @@
 
 2014-12-10  Eric S. Raymond  <address@hidden>
 
-       * vc/vc-dispatcher.el, vc/vc-hooks.el, vc/vc-rcs.el,
-       vc/vc-sccs.el, vc/vc.el: Righteous featurectomy of
-       vc-keep-workfiles, it's a shoot-self-in-foot archaism.
-       Workfiles are always kept.
+       * vc/vc-dispatcher.el, vc/vc-hooks.el, vc/vc-rcs.el:
+       * vc/vc-sccs.el, vc/vc.el: Righteous featurectomy of vc-keep-workfiles,
+       it's a shoot-self-in-foot archaism.  Workfiles are always kept.
 
 2014-12-10  Rasmus Pank Roulund  <address@hidden>
 
@@ -379,7 +689,7 @@
 2014-12-09  Eric S. Raymond  <address@hidden>
 
        * vc/vc-src.el (vc-src-do-comand): Prepend -- to file argument
-       list, avoids problems witth names containing hyphens.
+       list, avoids problems witt names containing hyphens.
 
 2014-12-09  Wilson Snyder  <address@hidden>
 
@@ -499,7 +809,7 @@
 
 2014-12-08  Eric S. Raymond  <address@hidden>
 
-       * vc/vc-arch.el: Moved to obsolete directory so a test framework
+       * vc/vc-arch.el: Move to obsolete directory so a test framework
        won't trip over bit-rot in it.  There has been no Arch snapshot
        for nine years.
 
@@ -706,13 +1016,13 @@
 
 2014-12-02  Eric S. Raymond  <address@hidden>
 
-       * subr.el (filter): New macro. Because it's just silly for a Lisp
+       * subr.el (filter): New macro.  Because it's just silly for a Lisp
        not to have this in 2014.  And VC needs it.
 
-       * vc.el, all backends: API simplification: Abolish dir-status.
+       * vc.el: All backends: API simplification: Abolish dir-status.
        It's replaced by dir-status-files.
 
-       * vc.el, all backends: API simplification: Remove 4th
+       * vc.el: All backends: API simplification: Remove 4th
        'default-state' argument from vc-dir-status files and its backend
        methods - no backend method ever set it.  It was used only in the
        fallback method to to set a default of 'up-to-date, though a
@@ -723,17 +1033,17 @@
        * vc.el (vc-expand-dirs): Now takes a second BACKEND argument,
        improving behavior on directories using multiple file-oriented VCSes.
 
-       * vc/vc.el and all backends: API simplification; clear-headers
+       * vc/vc.el: All backends: API simplification; clear-headers
        is no longer a public method.  It is now local to the one place
        it's used, in the RCS steal-lock method.
 
 2014-12-01  Eric S. Raymond  <address@hidden>
 
-       * vc/vc.el and all backends: API simplification; could-register
+       * vc/vc.el: In all backends: API simplification; could-register
        is no longer a public method.  (vc-cvs.el still has a private
        implementation.)
 
-       * vc/vc.el and all backends: API cleanup; the backend diff method
+       * vc/vc.el: In all backends: API cleanup; the backend diff method
        takes an explicit async flag.  This eliminates a particularly ugly
        global.
 
@@ -848,11 +1158,11 @@
        the back ends; this fixes a layering violation that caused bad
        behavior with SVN.
 
-       * vc/vc.el, vc-hooks.el, and all backends: API simplification;
+       * vc/vc.el, vc-hooks.el: All backends: API simplification;
        vc-stay-local-p and repository-hostname are no longer public
        methods.  Only the CVS and SVN backends used these, and the SVN
        support was conditioned out because svn status -v is too slow.
-       The CVS back end retains this machibery and the vc-stay-local
+       The CVS back end retains this machinery and the vc-stay-local
        configuration variable now only affects it.
 
 2014-12-01  Stefan Monnier  <address@hidden>
@@ -861,26 +1171,26 @@
 
 2014-12-01  Eric S. Raymond  <address@hidden>
 
-       * vc/vc.el, vc-hooks.el, and all backends: API simplification;
+       * vc/vc.el, vc-hooks.el: All backends: API simplification;
        vc-state-heuristic is no longer a public method, having been
        removed where it is redundant, unnecessary, or known buggy.
        This eliminated all backends except CVS.  Eliminates bug#7850.
 
        * vc/vc-cvs.el, vc/vc-hooks.el, vc/vc-rcs.el, vc/vc-sccs.el:
        Eliminate vc-mistrust-permissions.  It was only relevant to the
-       RCS and SCCS back ends and defaulted to t. Code now always
+       RCS and SCCS back ends and defaulted to t.  Code now always
        mistrusts permissions - by actual measurement the effect on
-       performance is negligible. As a side effect bug#11490 is now
+       performance is negligible.  As a side effect bug#11490 is now
        irrelevant.
 
-       * vc/vc.el, vc-hooks.el, and all backends: API simplification;
+       * vc/vc.el, vc-hooks.el: All backends: API simplification;
        vc-workfile-unchanged-p is no longer a public method (but the RCS
        and SCCS back ends retain it as a private method used in state
-       computation). This method was redundant with vc-state and usually
-       implemented as a trivial call to same. Fixes the failure mode
+       computation).  This method was redundant with vc-state and usually
+       implemented as a trivial call to same.  Fixes the failure mode
        described in bug#694.
 
-       * vc/vc.el and all backends: API simplification; init-revision is
+       * vc/vc.el: All backends: API simplification; init-revision is
        gone, and vc-registered functions no longer take an
        initial-revision argument.
 
@@ -1040,7 +1350,7 @@
        string.
        (newsticker--treeview-load): Change wording of the questions the
        user is asked when `newsticker-groups-filename' is found to be
-       used and we offer to read and remove the groups file. (bug#19165)
+       used and we offer to read and remove the groups file.  (Bug#19165)
 
 2014-11-27  Lars Magne Ingebrigtsen  <address@hidden>
 
@@ -1245,7 +1555,7 @@
 2014-11-22  Ulf Jasper  <address@hidden>
 
        * net/newst-backend.el (newsticker--sentinel-work):
-       Tell `libxml-parse-xml-region' to discard comments. Fixes bug#18787.
+       Tell `libxml-parse-xml-region' to discard comments.  Fixes bug#18787.
 
 2014-11-22  Michael Albinus  <address@hidden>
 
@@ -1262,7 +1572,7 @@
        live in vc.el and certainly not in vc-hooks.el.
 
        * vc/vc-hooks.el, vc-rcs.el, vc-sccs.el: vc-name  -> vc-master-name.
-       This is preaparatory to isolating all the 'master' functions
+       This is preparatory to isolating all the 'master' functions
        used only by the file-oriented back ends.  With this done first,
        the substantive diffs will be easier to read.
 
@@ -1611,7 +1921,7 @@
 2014-11-16  Oscar Fuentes <address@hidden>
 
        Add faces for the VC modeline state indicator.
-       * lisp/vc/vc-hooks.el:
+       * vc/vc-hooks.el:
        (vc-state-faces, vc-state-base-face)
        (vc-up-to-date-state, vc-needs-update-state)
        (vc-locked-state, vc-locally-added-state)
@@ -2305,9 +2615,9 @@
        * ses.el (macroexp): Add require for this package, so that function
        `ses--cell gets macroexp-quote.
        (ses--cell): Makes formula a macroexp-quote of value when formula
-       is nil. The rationale of this changr is to allow in the future
+       is nil.  The rationale of this changr is to allow in the future
        shorter SES files, e.g. we could have only `(ses-cell A1 1.0)'
-       instead of `(ses-cell A1 1.0 1.0 nil REFLIST)'. In such a case
+       instead of `(ses-cell A1 1.0 1.0 nil REFLIST)'.  In such a case
        reference list REFLIST would be re-computed after load --- thus
        trading off load time against file size.
 
@@ -3312,7 +3622,7 @@
        HTML code has become part of the xml parse tree.
        (newsticker--parse-rss-1.0, newsticker--parse-rss-2.0): Take care
        of possibly missing namespace prefixes.
-       (newsticker--parse-generic-items): Code formatting. Typo.
+       (newsticker--parse-generic-items): Code formatting.  Typo.
        (newsticker--images-dir): Add trailing slash.
        (newsticker--image-get): Fix error message.
 
@@ -3477,7 +3787,7 @@
        * vc/add-log.el (change-log-next-buffer): Don't create an empty
        buffer "ChangeLog" when the current buffer doesn't match 
ChangeLog.[0-9].
        Return the current buffer if no files match the default pattern
-       ChangeLog.[0-9].  Signal "end of multi" when file is nil. (Bug#18547)
+       ChangeLog.[0-9].  Signal "end of multi" when file is nil.  (Bug#18547)
 
 2014-09-25  Stefan Monnier  <address@hidden>
 
@@ -3615,7 +3925,7 @@
        * textmodes/reftex-sel.el (reftex-select-label-mode)
        (reftex-select-bib-mode, reftex-insert-docstruct): Derive modes
        from special-mode (instead of fundamental-mode) and propertize
-       with font-lock-face instead of just face. (Bug#18496)
+       with font-lock-face instead of just face.  (Bug#18496)
 
        * textmodes/reftex-toc.el (reftex-toc-mode, reftex-toc): Ditto.
 
@@ -4009,7 +4319,7 @@
        of local overrides.
        (ibuffer): Don't store previous windows configuration.
        Let `quit-window' handle restoring.
-       (ibuffer-quit): Remove function. Use `quit-window' instead.
+       (ibuffer-quit): Remove function.  Use `quit-window' instead.
        (ibuffer-restore-window-config-on-quit): Remove variable.
        (ibuffer-prev-window-config): Remove variable.
 
@@ -4263,10 +4573,10 @@
 
 2014-08-11  Ulf Jasper  <address@hidden>
 
-       Newsticker: introduce `newsticker-treeview-date-format'. (Bug#17227)
-
+       Newsticker: introduce `newsticker-treeview-date-format'.  (Bug#17227)
        * net/newst-treeview.el (newsticker-treeview-date-format): New.
-       (newsticker--treeview-list-add-item): Use 
`newsticker-treeview-date-format'.
+       (newsticker--treeview-list-add-item):
+       Use `newsticker-treeview-date-format'.
 
 2014-08-11  Glenn Morris  <address@hidden>
 
@@ -4475,7 +4785,7 @@
 2014-07-30  Christophe Deleuze  <address@hidden>  (tiny change)
 
        * calendar/icalendar.el (icalendar--decode-isodatetime):
-       Use actual current-time-zone when converting to local time. (Bug#15408)
+       Use actual current-time-zone when converting to local time.  (Bug#15408)
 
 2014-07-29  Martin Rudalics  <address@hidden>
 
@@ -4567,12 +4877,6 @@
 
 2014-07-28  Fabián Ezequiel Gallina  <address@hidden>
 
-       Prevent Python process shell buffer to pop twice.
-       * progmodes/python.el (python-shell-switch-to-shell): Do not call
-       pop-to-buffer.
-
-2014-07-28  Fabián Ezequiel Gallina  <address@hidden>
-
        * progmodes/python.el
        (python-shell-with-shell-buffer): New macro.
        (python-shell-font-lock-get-or-create-buffer)
@@ -4864,7 +5168,7 @@
 
 2014-07-12  Fabián Ezequiel Gallina  <address@hidden>
 
-       Fix dedenters and electric colon handling. (Bug#15163)
+       Fix dedenters and electric colon handling.  (Bug#15163)
        * progmodes/python.el
        (python-rx-constituents): Add dedenter and block-ender.
        (python-indent-dedenters, python-indent-block-enders): Delete.
@@ -5112,7 +5416,7 @@
 
        * progmodes/python.el (python-indent-post-self-insert-function):
        Enhancements to electric indentation behavior inside
-       parens. (Bug#17658)
+       parens.  (Bug#17658)
 
 2014-07-03  Stefan Monnier  <address@hidden>
 
@@ -5903,7 +6207,7 @@
        * help.el (help--key-binding-keymap): New function.
        (help--binding-locus): New function.
        (describe-key): Mention the keymap in which the binding was
-       found. (bug#13948)
+       found.  (bug#13948)
 
 2014-06-12  Stefan Monnier  <address@hidden>
 
@@ -6584,7 +6888,7 @@
 2014-05-24  Daniel Colascione  <address@hidden>
 
        * progmodes/subword.el (subword-find-word-boundary): Move point to
-       correct spot before search. (Bug#17580)
+       correct spot before search.  (Bug#17580)
 
        * emacs-lisp/nadvice.el (defun): Write in eval-and-compile to avoid
        breaking the build.
@@ -6613,7 +6917,7 @@
        mksh. Improve custom spec; allow regular expressions.
        (sh-shell): Delegate name splitting to `sh-canonicalize-shell'.
        (sh-after-hack-local-variables): New function.
-       (sh-mode): Use it; respect file-local `sh-shell' variable. (bug#17333)
+       (sh-mode): Use it; respect file-local `sh-shell' variable.  (Bug#17333)
        (sh-set-shell): Use `sh-canonicalize-shell' instead of open-coding
        the normalization.
        (sh-canonicalize-shell): Rewrite to support regexes.
@@ -7601,7 +7905,7 @@
 2014-04-07  João Távora  <address@hidden>
 
        Fix `electric-pair-delete-adjacent-pairs' in modes binding
-       backspace. (bug#16981)
+       backspace.  (Bug#16981)
        * elec-pair.el (electric-pair-backward-delete-char): Delete.
        (electric-pair-backward-delete-char-untabify): Delete.
        (electric-pair-mode-map): Bind backspace to a menu item filtering
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index a43e94c..0c9158d 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -17,6 +17,11 @@
        (semantic-analyze-nolongprefix-completion-at-point-function):
        Do nothing if the current buffer is not using Semantic (bug#19077).
 
+2014-12-14  Paul Eggert  <address@hidden>
+
+       * semantic/lex-spp.el (semantic-lex-spp-analyzer-do-replace):
+       Rename from semantic-lex-spp-anlyzer-do-replace.
+
 2014-12-08  Matt Curtis  <address@hidden>  (tiny change)
 
        * pulse.el (pulse-momentary-highlight-one-line): Respect the POINT
@@ -215,7 +220,7 @@
        (ede-project-autoload): Remove dirmatch entry - it is no longer
        needed.
 
-       * lisp/cedet/ede/proj.el (project-rescan): Replace direct
+       * ede/proj.el (project-rescan): Replace direct
        manipulation of `ede-projects' with equivalent and better
        functions.
        (ede-proj-load): Replace call to test if dir has project to
@@ -267,11 +272,10 @@
 
 2014-11-09  David Engster  <address@hidden>
 
-       * lisp/cedet/ede/proj-elisp.el
-       (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer
-       after saving modified elisp-comp script, as to avoid "file has
-       changed on disk; really edit the buffer" questions when script
-       gets rewritten.
+       * ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf):
+       Kill buffer after saving modified elisp-comp script, so as to avoid
+       "file has changed on disk; really edit the buffer" questions when
+       script gets rewritten.
 
 2014-10-29  Paul Eggert  <address@hidden>
 
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 4049974..5394a1c 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -520,7 +520,12 @@ since it could result in memory overflow and make Emacs 
crash."
                                      (const :tag "Hourglass" :value 
hourglass)))
             (display-hourglass cursor boolean)
             (hourglass-delay cursor number)
-
+            (resize-mini-windows
+             windows (choice
+                      (const :tag "Off (nil)" :value nil)
+                      (const :tag "Fit (t)" :value t)
+                      (const :tag "Grow only" :value grow-only))
+             "25.1")
             ;; xfaces.c
             (scalable-fonts-allowed display boolean "22.1")
             ;; xfns.c
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index bb93cce..acc7e76 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -2062,7 +2062,10 @@ See Info node `(emacs)Subdir switches' for more details."
     ;; inserted *after* opoint.
     (setq dirname (file-name-as-directory dirname))
     (or (and (not switches)
-            (dired-goto-subdir dirname))
+            (when (dired-goto-subdir dirname)
+              (unless (dired-subdir-hidden-p dirname)
+                (dired-initial-position dirname))
+              t))
        (dired-insert-subdir dirname switches no-error-if-not-dir-p))
     ;; Push mark so that it's easy to find back.  Do this after the
     ;; insert message so that the user sees the `Mark set' message.
diff --git a/lisp/dired.el b/lisp/dired.el
index 909ba22..7f7251f 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3884,7 +3884,7 @@ Ask means pop up a menu for the user to select one of 
copy, move or link."
 
 ;;; Start of automatically extracted autoloads.
 
-;;;### (autoloads nil "dired-aux" "dired-aux.el" 
"1448837b5f3e2b9ad63f723361f1e32e")
+;;;### (autoloads nil "dired-aux" "dired-aux.el" 
"73269f48e7fe2fd0ac580fd69252b33a")
 ;;; Generated autoloads from dired-aux.el
 
 (autoload 'dired-diff "dired-aux" "\
diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
index c372117..e1586a9 100644
--- a/lisp/emacs-lisp/find-func.el
+++ b/lisp/emacs-lisp/find-func.el
@@ -311,6 +311,39 @@ The search is done in the source for library LIBRARY."
                  (cons (current-buffer) (point)))
              (cons (current-buffer) nil))))))))
 
+(defun find-function-library (function &optional lisp-only verbose)
+  "Return the library FUNCTION is defined in.
+
+If FUNCTION is a built-in function and LISP-ONLY is non-nil,
+signal an error.
+
+If VERBOSE is non-nil, and FUNCTION is an alias, display a
+message about the whole chain of aliases."
+  (let ((def (symbol-function (find-function-advised-original function)))
+        aliases)
+    ;; FIXME for completeness, it might be nice to print something like:
+    ;; foo (which is advised), which is an alias for bar (which is advised).
+    (while (symbolp def)
+      (or (eq def function)
+          (not verbose)
+          (if aliases
+              (setq aliases (concat aliases
+                                    (format ", which is an alias for `%s'"
+                                            (symbol-name def))))
+            (setq aliases (format "`%s' is an alias for `%s'"
+                                  function (symbol-name def)))))
+      (setq function (symbol-function (find-function-advised-original 
function))
+            def (symbol-function (find-function-advised-original function))))
+    (if aliases
+        (message "%s" aliases))
+    (cond
+     ((autoloadp def) (nth 1 def))
+     ((subrp def)
+      (if lisp-only
+          (error "%s is a built-in function" function))
+      (help-C-file-name def 'subr))
+     ((symbol-file function 'defun)))))
+
 ;;;###autoload
 (defun find-function-noselect (function &optional lisp-only)
   "Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION.
@@ -329,30 +362,8 @@ searched for in `find-function-source-path' if non-nil, 
otherwise
 in `load-path'."
   (if (not function)
     (error "You didn't specify a function"))
-  (let ((def (symbol-function (find-function-advised-original function)))
-       aliases)
-    ;; FIXME for completeness, it might be nice to print something like:
-    ;; foo (which is advised), which is an alias for bar (which is advised).
-    (while (symbolp def)
-      (or (eq def function)
-         (if aliases
-             (setq aliases (concat aliases
-                                   (format ", which is an alias for `%s'"
-                                           (symbol-name def))))
-           (setq aliases (format "`%s' is an alias for `%s'"
-                                 function (symbol-name def)))))
-      (setq function (symbol-function (find-function-advised-original 
function))
-           def (symbol-function (find-function-advised-original function))))
-    (if aliases
-       (message "%s" aliases))
-    (let ((library
-          (cond ((autoloadp def) (nth 1 def))
-                ((subrp def)
-                 (if lisp-only
-                     (error "%s is a built-in function" function))
-                 (help-C-file-name def 'subr))
-                ((symbol-file function 'defun)))))
-      (find-function-search-for-symbol function nil library))))
+  (let ((library (find-function-library function lisp-only t)))
+    (find-function-search-for-symbol function nil library)))
 
 (defun find-function-read (&optional type)
   "Read and return an interned symbol, defaulting to the one near point.
diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el
index 2654bf2..d7fea47 100644
--- a/lisp/eshell/esh-ext.el
+++ b/lisp/eshell/esh-ext.el
@@ -296,6 +296,11 @@ line of the form #!<interp>."
       (let ((fullname (if (file-name-directory file) file
                        (eshell-search-path file)))
            (suffixes eshell-binary-suffixes))
+       (if (and fullname
+                (not (file-remote-p fullname))
+                (file-remote-p default-directory))
+           (setq fullname (expand-file-name
+                           (concat "./" fullname) default-directory)))
        (if (and fullname (not (or eshell-force-execution
                                   (file-executable-p fullname))))
            (while suffixes
diff --git a/lisp/language/misc-lang.el b/lisp/language/misc-lang.el
index ee06e34..b56d31f 100644
--- a/lisp/language/misc-lang.el
+++ b/lisp/language/misc-lang.el
@@ -78,7 +78,8 @@ and Italian.")))
 (set-char-table-range
  composition-function-table
  '(#x600 . #x6FF)
- (list ["[\u0600-\u06FF]+" 0 font-shape-gstring]))
+ (list ["\u200D?[\u0600-\u074F]+[\u200D\u200C]*[\u0600-\u074F]+\u200D?"
+       0 font-shape-gstring]))
 
 (provide 'misc-lang)
 
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 4157922..92933b6 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -3,7 +3,7 @@
 ;;; Code:
 
 
-;;;### (autoloads nil "5x5" "play/5x5.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "5x5" "play/5x5.el" (21604 48550 301934 225000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (21604 48550
+;;;;;;  313934 225000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (21604 48550
+;;;;;;  313934 225000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (21604 48550
+;;;;;;  313934 225000))
 ;;; 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" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "add-log" "vc/add-log.el" (21604 48550 421934
+;;;;;;  229000))
 ;;; 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" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21604 48550
+;;;;;;  1934 214000))
 ;;; 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" (21607 54477 800124 118000))
+;;;### (autoloads nil "align" "align.el" (21604 48549 921934 211000))
 ;;; 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" (21607 54477 800124 118000))
+;;;### (autoloads nil "allout" "allout.el" (21604 48549 925934 211000))
 ;;; 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" (21609
-;;;;;;  55608 852266 580000))
+;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (21631
+;;;;;;  35966 795121 865000))
 ;;; 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" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21640 32530 974334
+;;;;;;  457000))
 ;;; 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" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "animate" "play/animate.el" (21604 48550 301934
+;;;;;;  225000))
 ;;; 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" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "ansi-color" "ansi-color.el" (21604 48549 925934
+;;;;;;  211000))
 ;;; 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" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (21604
+;;;;;;  48550 313934 225000))
 ;;; 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" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "appt" "calendar/appt.el" (21604 48549 945934
+;;;;;;  212000))
 ;;; Generated autoloads from calendar/appt.el
 
 (autoload 'appt-add "appt" "\
@@ -1037,8 +1037,8 @@ ARG is positive, otherwise off.
 
 ;;;***
 
-;;;### (autoloads nil "apropos" "apropos.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "apropos" "apropos.el" (21604 48549 925934
+;;;;;;  211000))
 ;;; 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" (21621 7062 810116
-;;;;;;  332000))
+;;;### (autoloads nil "arc-mode" "arc-mode.el" (21631 35966 799121
+;;;;;;  866000))
 ;;; Generated autoloads from arc-mode.el
 
 (autoload 'archive-mode "arc-mode" "\
@@ -1174,7 +1174,7 @@ archive.
 
 ;;;***
 
-;;;### (autoloads nil "array" "array.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "array" "array.el" (21604 48549 925934 211000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "artist" "textmodes/artist.el" (21604 48550
+;;;;;;  393934 228000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21604 48550
+;;;;;;  313934 225000))
 ;;; 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" (21625
-;;;;;;  43838 483701 627000))
+;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21631
+;;;;;;  35966 847121 867000))
 ;;; Generated autoloads from gnus/auth-source.el
 
 (defvar auth-source-cache-expiry 7200 "\
@@ -1493,8 +1493,8 @@ let-binding.")
 
 ;;;***
 
-;;;### (autoloads nil "autoarg" "autoarg.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "autoarg" "autoarg.el" (21604 48549 925934
+;;;;;;  211000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (21604 48550
+;;;;;;  313934 225000))
 ;;; 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" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "autoinsert" "autoinsert.el" (21637 50476 651217
+;;;;;;  120000))
 ;;; 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" (21628
-;;;;;;  43483 380149 771000))
+;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (21631
+;;;;;;  35966 819121 866000))
 ;;; 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" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "autorevert" "autorevert.el" (21604 48549 929934
+;;;;;;  211000))
 ;;; Generated autoloads from autorevert.el
 
 (autoload 'auto-revert-mode "autorevert" "\
@@ -1745,7 +1745,7 @@ specifies in the mode line.
 
 ;;;***
 
-;;;### (autoloads nil "avoid" "avoid.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "avoid" "avoid.el" (21604 48549 929934 211000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (21604 48550
+;;;;;;  313934 225000))
 ;;; 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" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "battery" "battery.el" (21604 48549 929934
+;;;;;;  211000))
 ;;; 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" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (21604
+;;;;;;  48550 1934 214000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21604 48550
+;;;;;;  393934 228000))
 ;;; 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"
-;;;;;;  (21607 54478 800121 42000))
+;;;;;;  (21604 48550 393934 228000))
 ;;; 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" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "binhex" "mail/binhex.el" (21604 48550 181934
+;;;;;;  220000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "blackbox" "play/blackbox.el" (21604 48550
+;;;;;;  301934 225000))
 ;;; Generated autoloads from play/blackbox.el
 
 (autoload 'blackbox "blackbox" "\
@@ -2123,8 +2123,8 @@ a reflection.
 
 ;;;***
 
-;;;### (autoloads nil "bookmark" "bookmark.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "bookmark" "bookmark.el" (21604 48549 929934
+;;;;;;  211000))
 ;;; Generated autoloads from bookmark.el
  (define-key ctl-x-r-map "b" 'bookmark-jump)
  (define-key ctl-x-r-map "m" 'bookmark-set)
@@ -2317,8 +2317,8 @@ Incremental search of bookmarks, hiding the non-matches 
as we go.
 
 ;;;***
 
-;;;### (autoloads nil "browse-url" "net/browse-url.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "browse-url" "net/browse-url.el" (21604 48550
+;;;;;;  213934 222000))
 ;;; Generated autoloads from net/browse-url.el
 
 (defvar browse-url-browser-function 'browse-url-default-browser "\
@@ -2633,7 +2633,7 @@ from `browse-url-elinks-wrapper'.
 
 ;;;***
 
-;;;### (autoloads nil "bs" "bs.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "bs" "bs.el" (21604 48549 929934 211000))
 ;;; Generated autoloads from bs.el
 (push (purecopy '(bs 1 17)) package--builtin-versions)
 
@@ -2674,8 +2674,8 @@ name of buffer configuration.
 
 ;;;***
 
-;;;### (autoloads nil "bubbles" "play/bubbles.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "bubbles" "play/bubbles.el" (21604 48550 301934
+;;;;;;  225000))
 ;;; Generated autoloads from play/bubbles.el
 
 (autoload 'bubbles "bubbles" "\
@@ -2697,7 +2697,7 @@ columns on its right towards the left.
 ;;;***
 
 ;;;### (autoloads nil "bug-reference" "progmodes/bug-reference.el"
-;;;;;;  (21607 54478 800121 42000))
+;;;;;;  (21604 48550 313934 225000))
 ;;; 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)))))
@@ -2717,8 +2717,8 @@ Like `bug-reference-mode', but only buttonize in comments 
and strings.
 
 ;;;***
 
-;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21645
+;;;;;;  25761 789186 828000))
 ;;; 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)
@@ -2838,8 +2838,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21617
-;;;;;;  49721 420132 227000))
+;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21631
+;;;;;;  35966 799121 866000))
 ;;; Generated autoloads from calendar/cal-china.el
 
 (put 'calendar-chinese-time-zone 'risky-local-variable t)
@@ -2848,8 +2848,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21609 55608
-;;;;;;  852266 580000))
+;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21631 35966
+;;;;;;  799121 866000))
 ;;; Generated autoloads from calendar/cal-dst.el
 
 (put 'calendar-daylight-savings-starts 'risky-local-variable t)
@@ -2860,8 +2860,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21604
+;;;;;;  48549 949934 212000))
 ;;; Generated autoloads from calendar/cal-hebrew.el
 
 (autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\
@@ -2873,7 +2873,7 @@ from the cursor position.
 
 ;;;***
 
-;;;### (autoloads nil "calc" "calc/calc.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "calc" "calc/calc.el" (21604 48549 945934 212000))
 ;;; Generated autoloads from calc/calc.el
  (define-key ctl-x-map "*" 'calc-dispatch)
 
@@ -2959,8 +2959,8 @@ See Info node `(calc)Defining Functions'.
 
 ;;;***
 
-;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21604 48549
+;;;;;;  941934 211000))
 ;;; Generated autoloads from calc/calc-undo.el
 
 (autoload 'calc-undo "calc-undo" "\
@@ -2970,8 +2970,8 @@ See Info node `(calc)Defining Functions'.
 
 ;;;***
 
-;;;### (autoloads nil "calculator" "calculator.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "calculator" "calculator.el" (21604 48549 945934
+;;;;;;  212000))
 ;;; Generated autoloads from calculator.el
 
 (autoload 'calculator "calculator" "\
@@ -2982,8 +2982,8 @@ See the documentation for `calculator-mode' for more 
information.
 
 ;;;***
 
-;;;### (autoloads nil "calendar" "calendar/calendar.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "calendar" "calendar/calendar.el" (21604 48549
+;;;;;;  953934 212000))
 ;;; Generated autoloads from calendar/calendar.el
 
 (autoload 'calendar "calendar" "\
@@ -3026,8 +3026,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "canlock" "gnus/canlock.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "canlock" "gnus/canlock.el" (21604 48550 81934
+;;;;;;  217000))
 ;;; Generated autoloads from gnus/canlock.el
 
 (autoload 'canlock-insert-header "canlock" "\
@@ -3044,8 +3044,8 @@ it fails.
 
 ;;;***
 
-;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21623
-;;;;;;  2108 292281 129000))
+;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21659
+;;;;;;  61733 214949 164000))
 ;;; Generated autoloads from progmodes/cc-engine.el
 
 (autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -3055,8 +3055,8 @@ Return the syntactic context of the current line.
 
 ;;;***
 
-;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21631 35966
+;;;;;;  903121 869000))
 ;;; Generated autoloads from progmodes/cc-guess.el
 
 (defvar c-guess-guessed-offsets-alist nil "\
@@ -3154,8 +3154,8 @@ the absolute file name of the file if STYLE-NAME is nil.
 
 ;;;***
 
-;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21651 20707
+;;;;;;  184225 752000))
 ;;; Generated autoloads from progmodes/cc-mode.el
 
 (autoload 'c-initialize-cc-mode "cc-mode" "\
@@ -3312,8 +3312,8 @@ Key bindings:
 
 ;;;***
 
-;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21631
+;;;;;;  35966 907121 870000))
 ;;; Generated autoloads from progmodes/cc-styles.el
 
 (autoload 'c-set-style "cc-styles" "\
@@ -3364,8 +3364,8 @@ and exists only for compatibility reasons.
 
 ;;;***
 
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21631 35966
+;;;;;;  907121 870000))
 ;;; Generated autoloads from progmodes/cc-vars.el
 (put 'c-basic-offset 'safe-local-variable 'integerp)
 (put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -3373,8 +3373,8 @@ and exists only for compatibility reasons.
 
 ;;;***
 
-;;;### (autoloads nil "ccl" "international/ccl.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "ccl" "international/ccl.el" (21604 48550 133934
+;;;;;;  219000))
 ;;; Generated autoloads from international/ccl.el
 
 (autoload 'ccl-compile "ccl" "\
@@ -3634,8 +3634,8 @@ See the documentation of `define-ccl-program' for the 
detail of CCL program.
 
 ;;;***
 
-;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21645 25761
+;;;;;;  789186 828000))
 ;;; Generated autoloads from emacs-lisp/cconv.el
 
 (autoload 'cconv-closure-convert "cconv" "\
@@ -3654,15 +3654,15 @@ Add the warnings that closure conversion would 
encounter.
 
 ;;;***
 
-;;;### (autoloads nil "cedet" "cedet/cedet.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "cedet" "cedet/cedet.el" (21604 48549 957934
+;;;;;;  212000))
 ;;; Generated autoloads from cedet/cedet.el
 (push (purecopy '(cedet 2 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21604 48550
+;;;;;;  321934 226000))
 ;;; Generated autoloads from progmodes/cfengine.el
 (push (purecopy '(cfengine 1 3)) package--builtin-versions)
 
@@ -3691,15 +3691,15 @@ Choose `cfengine2-mode' or `cfengine3-mode' by buffer 
contents.
 
 ;;;***
 
-;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21604 48550
+;;;;;;  5934 214000))
 ;;; Generated autoloads from emacs-lisp/chart.el
 (push (purecopy '(chart 0 2)) package--builtin-versions)
 
 ;;;***
 
 ;;;### (autoloads nil "check-declare" "emacs-lisp/check-declare.el"
-;;;;;;  (21607 54477 800124 118000))
+;;;;;;  (21604 48550 5934 214000))
 ;;; Generated autoloads from emacs-lisp/check-declare.el
 
 (autoload 'check-declare-file "check-declare" "\
@@ -3716,8 +3716,8 @@ Returns non-nil if any false statements are found.
 
 ;;;***
 
-;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21604
+;;;;;;  48550 9934 214000))
 ;;; 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)
@@ -3917,8 +3917,8 @@ checking of documentation strings.
 
 ;;;***
 
-;;;### (autoloads nil "china-util" "language/china-util.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "china-util" "language/china-util.el" (21604
+;;;;;;  48550 145934 219000))
 ;;; Generated autoloads from language/china-util.el
 
 (autoload 'decode-hz-region "china-util" "\
@@ -3955,8 +3955,8 @@ Encode the text in the current buffer to HZ.
 
 ;;;***
 
-;;;### (autoloads nil "chistory" "chistory.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "chistory" "chistory.el" (21604 48549 985934
+;;;;;;  213000))
 ;;; Generated autoloads from chistory.el
 
 (autoload 'repeat-matching-complex-command "chistory" "\
@@ -3995,8 +3995,8 @@ and runs the normal hook `command-history-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21604
+;;;;;;  48550 9934 214000))
 ;;; Generated autoloads from emacs-lisp/cl-indent.el
 
 (autoload 'common-lisp-indent-function "cl-indent" "\
@@ -4079,8 +4079,8 @@ instead.
 
 ;;;***
 
-;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21619 26501
-;;;;;;  970129 581000))
+;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21631 35966
+;;;;;;  823121 866000))
 ;;; Generated autoloads from emacs-lisp/cl-lib.el
 (push (purecopy '(cl-lib 1 0)) package--builtin-versions)
 
@@ -4110,8 +4110,8 @@ a future Emacs interpreter will be able to use it.")
 
 ;;;***
 
-;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21604 48550
+;;;;;;  325934 226000))
 ;;; Generated autoloads from progmodes/cmacexp.el
 
 (autoload 'c-macro-expand "cmacexp" "\
@@ -4131,8 +4131,8 @@ For use inside Lisp programs, see also 
`c-macro-expansion'.
 
 ;;;***
 
-;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21604 48549 985934
+;;;;;;  213000))
 ;;; Generated autoloads from cmuscheme.el
 
 (autoload 'run-scheme "cmuscheme" "\
@@ -4152,7 +4152,7 @@ is run).
 
 ;;;***
 
-;;;### (autoloads nil "color" "color.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "color" "color.el" (21604 48549 985934 213000))
 ;;; Generated autoloads from color.el
 
 (autoload 'color-name-to-rgb "color" "\
@@ -4171,7 +4171,7 @@ If FRAME cannot display COLOR, return nil.
 
 ;;;***
 
-;;;### (autoloads nil "comint" "comint.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "comint" "comint.el" (21637 50476 651217 120000))
 ;;; Generated autoloads from comint.el
 
 (defvar comint-output-filter-functions '(ansi-color-process-output 
comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -4272,12 +4272,15 @@ REGEXP-GROUP is the regular expression group in REGEXP 
to use.
 
 ;;;***
 
-;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21637 50476
+;;;;;;  683217 122000))
 ;;; Generated autoloads from vc/compare-w.el
 
 (autoload 'compare-windows "compare-w" "\
-Compare text in current window with text in next window.
+Compare text in current window with text in another window.
+The option `compare-windows-get-window-function' defines how
+to get another window.
+
 Compares the text starting at point in each window,
 moving over text in each one as far as they match.
 
@@ -4306,8 +4309,8 @@ on third call it again advances points to the next 
difference and so on.
 
 ;;;***
 
-;;;### (autoloads nil "compile" "progmodes/compile.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "compile" "progmodes/compile.el" (21604 48550
+;;;;;;  325934 226000))
 ;;; Generated autoloads from progmodes/compile.el
 
 (defvar compilation-mode-hook nil "\
@@ -4488,8 +4491,8 @@ This is the value of `next-error-function' in Compilation 
buffers.
 
 ;;;***
 
-;;;### (autoloads nil "completion" "completion.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "completion" "completion.el" (21659 61733 206949
+;;;;;;  164000))
 ;;; Generated autoloads from completion.el
 
 (defvar dynamic-completion-mode nil "\
@@ -4511,8 +4514,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21604
+;;;;;;  48550 393934 228000))
 ;;; Generated autoloads from textmodes/conf-mode.el
 
 (autoload 'conf-mode "conf-mode" "\
@@ -4667,8 +4670,8 @@ For details see `conf-mode'.  Example:
 
 ;;;***
 
-;;;### (autoloads nil "cookie1" "play/cookie1.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "cookie1" "play/cookie1.el" (21604 48550 301934
+;;;;;;  225000))
 ;;; Generated autoloads from play/cookie1.el
 
 (autoload 'cookie "cookie1" "\
@@ -4696,8 +4699,8 @@ and subsequent calls on the same file won't go to disk.
 
 ;;;***
 
-;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21604
+;;;;;;  48550 9934 214000))
 ;;; Generated autoloads from emacs-lisp/copyright.el
 (put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
 (put 'copyright-names-regexp 'safe-local-variable 'stringp)
@@ -4735,8 +4738,8 @@ If FIX is non-nil, run `copyright-fix-years' instead.
 
 ;;;***
 
-;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21604
+;;;;;;  48550 325934 226000))
 ;;; Generated autoloads from progmodes/cperl-mode.el
 (put 'cperl-indent-level 'safe-local-variable 'integerp)
 (put 'cperl-brace-offset 'safe-local-variable 'integerp)
@@ -4934,8 +4937,8 @@ Run a `perldoc' on the word around point.
 
 ;;;***
 
-;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21604 48550 329934
+;;;;;;  226000))
 ;;; Generated autoloads from progmodes/cpp.el
 
 (autoload 'cpp-highlight-buffer "cpp" "\
@@ -4953,8 +4956,8 @@ Edit display information for cpp conditionals.
 
 ;;;***
 
-;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21604 48550 9934
+;;;;;;  214000))
 ;;; Generated autoloads from emacs-lisp/crm.el
 
 (autoload 'completing-read-multiple "crm" "\
@@ -4980,8 +4983,8 @@ with empty strings removed.
 
 ;;;***
 
-;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21604 48550
+;;;;;;  393934 228000))
 ;;; Generated autoloads from textmodes/css-mode.el
 
 (autoload 'css-mode "css-mode" "\
@@ -4997,8 +5000,8 @@ Major mode to edit \"Sassy CSS\" files.
 
 ;;;***
 
-;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21604 48550
+;;;;;;  25934 215000))
 ;;; Generated autoloads from emulation/cua-base.el
 
 (defvar cua-mode nil "\
@@ -5043,8 +5046,8 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v 
bindings.
 
 ;;;***
 
-;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21604 48550
+;;;;;;  29934 215000))
 ;;; Generated autoloads from emulation/cua-rect.el
 
 (autoload 'cua-rectangle-mark-mode "cua-rect" "\
@@ -5055,8 +5058,8 @@ Activates the region if needed.  Only lasts until the 
region is deactivated.
 
 ;;;***
 
-;;;### (autoloads nil "cus-edit" "cus-edit.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "cus-edit" "cus-edit.el" (21645 38383 209524
+;;;;;;  819000))
 ;;; Generated autoloads from cus-edit.el
 
 (defvar custom-browse-sort-alphabetically nil "\
@@ -5282,6 +5285,13 @@ Customize all loaded groups matching REGEXP.
 
 \(fn REGEXP)" t nil)
 
+(autoload 'custom-prompt-customize-unsaved-options "cus-edit" "\
+Prompt user to customize any unsaved customization options.
+Return non-nil if user chooses to customize, for use in
+`kill-emacs-query-functions'.
+
+\(fn)" nil nil)
+
 (autoload 'custom-buffer-create "cus-edit" "\
 Create a buffer containing OPTIONS.
 Optional NAME is the name of the buffer.
@@ -5368,8 +5378,8 @@ The format is suitable for use with `easy-menu-define'.
 
 ;;;***
 
-;;;### (autoloads nil "cus-theme" "cus-theme.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "cus-theme" "cus-theme.el" (21604 48549 993934
+;;;;;;  213000))
 ;;; Generated autoloads from cus-theme.el
 
 (autoload 'customize-create-theme "cus-theme" "\
@@ -5402,8 +5412,8 @@ omitted, a buffer named *Custom Themes* is used.
 
 ;;;***
 
-;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21604 48550
+;;;;;;  421934 229000))
 ;;; Generated autoloads from vc/cvs-status.el
 
 (autoload 'cvs-status-mode "cvs-status" "\
@@ -5413,8 +5423,8 @@ Mode used for cvs status output.
 
 ;;;***
 
-;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21604 48550 329934
+;;;;;;  226000))
 ;;; Generated autoloads from progmodes/cwarn.el
 (push (purecopy '(cwarn 1 3 1)) package--builtin-versions)
 
@@ -5458,8 +5468,8 @@ See `cwarn-mode' for more information on Cwarn mode.
 
 ;;;***
 
-;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21604
+;;;;;;  48550 145934 219000))
 ;;; Generated autoloads from language/cyril-util.el
 
 (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
@@ -5487,8 +5497,8 @@ If the argument is nil, we return the display table to 
its standard state.
 
 ;;;***
 
-;;;### (autoloads nil "dabbrev" "dabbrev.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "dabbrev" "dabbrev.el" (21604 48549 993934
+;;;;;;  213000))
 ;;; Generated autoloads from dabbrev.el
 (put 'dabbrev-case-fold-search 'risky-local-variable t)
 (put 'dabbrev-case-replace 'risky-local-variable t)
@@ -5534,8 +5544,8 @@ See also `dabbrev-abbrev-char-regexp' and 
\\[dabbrev-completion].
 
 ;;;***
 
-;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21604 48549
+;;;;;;  961934 212000))
 ;;; Generated autoloads from cedet/data-debug.el
 
 (autoload 'data-debug-new-buffer "data-debug" "\
@@ -5545,7 +5555,7 @@ Create a new data-debug buffer with NAME.
 
 ;;;***
 
-;;;### (autoloads nil "dbus" "net/dbus.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "dbus" "net/dbus.el" (21604 48550 213934 222000))
 ;;; Generated autoloads from net/dbus.el
 
 (autoload 'dbus-handle-event "dbus" "\
@@ -5558,8 +5568,8 @@ If the HANDLER returns a `dbus-error', it is propagated 
as return message.
 
 ;;;***
 
-;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21604 48550
+;;;;;;  329934 226000))
 ;;; Generated autoloads from progmodes/dcl-mode.el
 
 (autoload 'dcl-mode "dcl-mode" "\
@@ -5685,8 +5695,8 @@ There is some minimal font-lock support (see vars
 
 ;;;***
 
-;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21604 48550
+;;;;;;  9934 214000))
 ;;; Generated autoloads from emacs-lisp/debug.el
 
 (setq debugger 'debug)
@@ -5729,8 +5739,8 @@ To specify a nil argument interactively, exit with an 
empty minibuffer.
 
 ;;;***
 
-;;;### (autoloads nil "decipher" "play/decipher.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "decipher" "play/decipher.el" (21604 48550
+;;;;;;  301934 225000))
 ;;; Generated autoloads from play/decipher.el
 
 (autoload 'decipher "decipher" "\
@@ -5758,8 +5768,8 @@ The most useful commands are:
 
 ;;;***
 
-;;;### (autoloads nil "delim-col" "delim-col.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "delim-col" "delim-col.el" (21604 48549 993934
+;;;;;;  213000))
 ;;; Generated autoloads from delim-col.el
 (push (purecopy '(delim-col 2 1)) package--builtin-versions)
 
@@ -5784,7 +5794,7 @@ START and END delimits the corners of text rectangle.
 
 ;;;***
 
-;;;### (autoloads nil "delsel" "delsel.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "delsel" "delsel.el" (21604 48549 993934 213000))
 ;;; Generated autoloads from delsel.el
 
 (defalias 'pending-delete-mode 'delete-selection-mode)
@@ -5812,8 +5822,8 @@ point regardless of any selection.
 
 ;;;***
 
-;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21604 48550
+;;;;;;  9934 214000))
 ;;; Generated autoloads from emacs-lisp/derived.el
 
 (autoload 'define-derived-mode "derived" "\
@@ -5879,8 +5889,8 @@ the first time the mode is used.
 
 ;;;***
 
-;;;### (autoloads nil "descr-text" "descr-text.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "descr-text" "descr-text.el" (21604 48549 993934
+;;;;;;  213000))
 ;;; Generated autoloads from descr-text.el
 
 (autoload 'describe-text-properties "descr-text" "\
@@ -5914,7 +5924,8 @@ relevant to POS.
 
 ;;;***
 
-;;;### (autoloads nil "desktop" "desktop.el" (21616 28857 81577 239000))
+;;;### (autoloads nil "desktop" "desktop.el" (21631 35966 815121
+;;;;;;  866000))
 ;;; Generated autoloads from desktop.el
 
 (defvar desktop-save-mode nil "\
@@ -6119,8 +6130,8 @@ Revert to the last loaded desktop.
 
 ;;;***
 
-;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21604 48550
+;;;;;;  81934 217000))
 ;;; Generated autoloads from gnus/deuglify.el
 
 (autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\
@@ -6152,8 +6163,8 @@ Deuglify broken Outlook (Express) articles and redisplay.
 
 ;;;***
 
-;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21625
-;;;;;;  43838 483701 627000))
+;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21631
+;;;;;;  35966 803121 866000))
 ;;; Generated autoloads from calendar/diary-lib.el
 
 (autoload 'diary "diary-lib" "\
@@ -6195,7 +6206,7 @@ Major mode for editing the diary file.
 
 ;;;***
 
-;;;### (autoloads nil "diff" "vc/diff.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "diff" "vc/diff.el" (21604 48550 421934 229000))
 ;;; Generated autoloads from vc/diff.el
 
 (defvar diff-switches (purecopy "-c") "\
@@ -6243,8 +6254,8 @@ This requires the external program `diff' to be in your 
`exec-path'.
 
 ;;;***
 
-;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21628 45530
-;;;;;;  160140 360000))
+;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21631 35966
+;;;;;;  923121 870000))
 ;;; Generated autoloads from vc/diff-mode.el
 
 (autoload 'diff-mode "diff-mode" "\
@@ -6276,7 +6287,7 @@ the mode if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "dig" "net/dig.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "dig" "net/dig.el" (21604 48550 213934 222000))
 ;;; Generated autoloads from net/dig.el
 
 (autoload 'dig "dig" "\
@@ -6287,7 +6298,7 @@ Optional arguments are passed to `dig-invoke'.
 
 ;;;***
 
-;;;### (autoloads nil "dired" "dired.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "dired" "dired.el" (21651 20707 164225 751000))
 ;;; Generated autoloads from dired.el
 
 (defvar dired-listing-switches (purecopy "-al") "\
@@ -6407,8 +6418,8 @@ Keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "dirtrack" "dirtrack.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "dirtrack" "dirtrack.el" (21604 48549 997934
+;;;;;;  214000))
 ;;; Generated autoloads from dirtrack.el
 
 (autoload 'dirtrack-mode "dirtrack" "\
@@ -6438,8 +6449,8 @@ from `default-directory'.
 
 ;;;***
 
-;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21604 48550
+;;;;;;  13934 214000))
 ;;; Generated autoloads from emacs-lisp/disass.el
 
 (autoload 'disassemble "disass" "\
@@ -6453,8 +6464,8 @@ redefine OBJECT if it is a symbol.
 
 ;;;***
 
-;;;### (autoloads nil "disp-table" "disp-table.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "disp-table" "disp-table.el" (21604 48549 997934
+;;;;;;  214000))
 ;;; Generated autoloads from disp-table.el
 
 (autoload 'make-display-table "disp-table" "\
@@ -6575,8 +6586,8 @@ in `.emacs'.
 
 ;;;***
 
-;;;### (autoloads nil "dissociate" "play/dissociate.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "dissociate" "play/dissociate.el" (21604 48550
+;;;;;;  301934 225000))
 ;;; Generated autoloads from play/dissociate.el
 
 (autoload 'dissociated-press "dissociate" "\
@@ -6592,7 +6603,7 @@ Default is 2.
 
 ;;;***
 
-;;;### (autoloads nil "dnd" "dnd.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "dnd" "dnd.el" (21604 48549 997934 214000))
 ;;; 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)) "\
@@ -6612,8 +6623,8 @@ if some action was made, or nil if the URL is ignored.")
 
 ;;;***
 
-;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21604 48550
+;;;;;;  393934 228000))
 ;;; Generated autoloads from textmodes/dns-mode.el
 
 (autoload 'dns-mode "dns-mode" "\
@@ -6636,8 +6647,8 @@ Locate SOA record and increment the serial field.
 
 ;;;***
 
-;;;### (autoloads nil "doc-view" "doc-view.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "doc-view" "doc-view.el" (21604 48549 997934
+;;;;;;  214000))
 ;;; Generated autoloads from doc-view.el
 
 (autoload 'doc-view-mode-p "doc-view" "\
@@ -6683,8 +6694,8 @@ See the command `doc-view-mode' for more information on 
this mode.
 
 ;;;***
 
-;;;### (autoloads nil "doctor" "play/doctor.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "doctor" "play/doctor.el" (21604 48550 301934
+;;;;;;  225000))
 ;;; Generated autoloads from play/doctor.el
 
 (autoload 'doctor "doctor" "\
@@ -6694,7 +6705,7 @@ Switch to *doctor* buffer and start giving psychotherapy.
 
 ;;;***
 
-;;;### (autoloads nil "double" "double.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "double" "double.el" (21604 48549 997934 214000))
 ;;; Generated autoloads from double.el
 
 (autoload 'double-mode "double" "\
@@ -6710,8 +6721,8 @@ strings when pressed twice.  See `double-map' for details.
 
 ;;;***
 
-;;;### (autoloads nil "dunnet" "play/dunnet.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "dunnet" "play/dunnet.el" (21604 48550 305934
+;;;;;;  225000))
 ;;; Generated autoloads from play/dunnet.el
 (push (purecopy '(dunnet 2 1)) package--builtin-versions)
 
@@ -6722,8 +6733,8 @@ Switch to *dungeon* buffer and start game.
 
 ;;;***
 
-;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (21604
+;;;;;;  48550 13934 214000))
 ;;; Generated autoloads from emacs-lisp/easy-mmode.el
 
 (defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
@@ -6862,8 +6873,8 @@ CSS contains a list of syntax specifications of the form 
(CHAR . SYNTAX).
 
 ;;;***
 
-;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21604
+;;;;;;  48550 13934 214000))
 ;;; Generated autoloads from emacs-lisp/easymenu.el
 
 (autoload 'easy-menu-define "easymenu" "\
@@ -7001,8 +7012,8 @@ To implement dynamic menus, either call this from
 
 ;;;***
 
-;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21604 48550
+;;;;;;  329934 226000))
 ;;; Generated autoloads from progmodes/ebnf2ps.el
 (push (purecopy '(ebnf2ps 4 4)) package--builtin-versions)
 
@@ -7267,8 +7278,8 @@ See `ebnf-style-database' documentation.
 
 ;;;***
 
-;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21604 48550
+;;;;;;  333934 226000))
 ;;; Generated autoloads from progmodes/ebrowse.el
 
 (autoload 'ebrowse-tree-mode "ebrowse" "\
@@ -7416,8 +7427,8 @@ Display statistics for a class tree.
 
 ;;;***
 
-;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21604 48549 997934
+;;;;;;  214000))
 ;;; Generated autoloads from ebuff-menu.el
 
 (autoload 'electric-buffer-list "ebuff-menu" "\
@@ -7449,8 +7460,8 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
 
 ;;;***
 
-;;;### (autoloads nil "echistory" "echistory.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "echistory" "echistory.el" (21604 48549 997934
+;;;;;;  214000))
 ;;; Generated autoloads from echistory.el
 
 (autoload 'Electric-command-history-redo-expression "echistory" "\
@@ -7461,8 +7472,8 @@ With prefix arg NOCONFIRM, execute current line as-is 
without editing.
 
 ;;;***
 
-;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21604 48550
+;;;;;;  81934 217000))
 ;;; Generated autoloads from gnus/ecomplete.el
 
 (autoload 'ecomplete-setup "ecomplete" "\
@@ -7472,7 +7483,7 @@ With prefix arg NOCONFIRM, execute current line as-is 
without editing.
 
 ;;;***
 
-;;;### (autoloads nil "ede" "cedet/ede.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "ede" "cedet/ede.el" (21604 48549 961934 212000))
 ;;; Generated autoloads from cedet/ede.el
 (push (purecopy '(ede 1 2)) package--builtin-versions)
 
@@ -7498,8 +7509,8 @@ an EDE controlled project.
 
 ;;;***
 
-;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21604 48550
+;;;;;;  13934 214000))
 ;;; Generated autoloads from emacs-lisp/edebug.el
 
 (defvar edebug-all-defs nil "\
@@ -7563,7 +7574,7 @@ Toggle edebugging of all forms.
 
 ;;;***
 
-;;;### (autoloads nil "ediff" "vc/ediff.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "ediff" "vc/ediff.el" (21604 48550 429934 230000))
 ;;; Generated autoloads from vc/ediff.el
 (push (purecopy '(ediff 2 81 4)) package--builtin-versions)
 
@@ -7835,8 +7846,8 @@ With optional NODE, goes to that node.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21604 48550
+;;;;;;  425934 230000))
 ;;; Generated autoloads from vc/ediff-help.el
 
 (autoload 'ediff-customize "ediff-help" "\
@@ -7846,8 +7857,8 @@ With optional NODE, goes to that node.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21604 48550
+;;;;;;  425934 230000))
 ;;; Generated autoloads from vc/ediff-mult.el
 
 (autoload 'ediff-show-registry "ediff-mult" "\
@@ -7859,8 +7870,8 @@ Display Ediff's registry.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21604 48550
+;;;;;;  425934 230000))
 ;;; Generated autoloads from vc/ediff-util.el
 
 (autoload 'ediff-toggle-multiframe "ediff-util" "\
@@ -7879,8 +7890,8 @@ To change the default, set the variable 
`ediff-use-toolbar-p', which see.
 
 ;;;***
 
-;;;### (autoloads nil "edmacro" "edmacro.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "edmacro" "edmacro.el" (21604 48549 997934
+;;;;;;  214000))
 ;;; Generated autoloads from edmacro.el
 (push (purecopy '(edmacro 2 1)) package--builtin-versions)
 
@@ -7929,8 +7940,8 @@ or nil, use a compact 80-column format.
 
 ;;;***
 
-;;;### (autoloads nil "edt" "emulation/edt.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "edt" "emulation/edt.el" (21604 48550 29934
+;;;;;;  215000))
 ;;; Generated autoloads from emulation/edt.el
 
 (autoload 'edt-set-scroll-margins "edt" "\
@@ -7947,7 +7958,7 @@ Turn on EDT Emulation.
 
 ;;;***
 
-;;;### (autoloads nil "ehelp" "ehelp.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "ehelp" "ehelp.el" (21604 48549 997934 214000))
 ;;; Generated autoloads from ehelp.el
 
 (autoload 'with-electric-help "ehelp" "\
@@ -7983,15 +7994,15 @@ BUFFER is put back into its original major mode.
 
 ;;;***
 
-;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21604 48550
+;;;;;;  17934 214000))
 ;;; Generated autoloads from emacs-lisp/eieio.el
 (push (purecopy '(eieio 1 4)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21637
+;;;;;;  50476 655217 121000))
 ;;; Generated autoloads from emacs-lisp/eieio-core.el
 (push (purecopy '(eieio-core 1 4)) package--builtin-versions)
 
@@ -8007,8 +8018,8 @@ It creates an autoload function for CNAME's constructor.
 
 ;;;***
 
-;;;### (autoloads nil "elec-pair" "elec-pair.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "elec-pair" "elec-pair.el" (21604 48550 1934
+;;;;;;  214000))
 ;;; Generated autoloads from elec-pair.el
 
 (defvar electric-pair-text-pairs '((34 . 34)) "\
@@ -8043,8 +8054,8 @@ closing parenthesis.  (Likewise for brackets, etc.).
 
 ;;;***
 
-;;;### (autoloads nil "elide-head" "elide-head.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "elide-head" "elide-head.el" (21604 48550 1934
+;;;;;;  214000))
 ;;; Generated autoloads from elide-head.el
 
 (autoload 'elide-head "elide-head" "\
@@ -8059,8 +8070,8 @@ This is suitable as an entry on `find-file-hook' or 
appropriate mode hooks.
 
 ;;;***
 
-;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21604 48550
+;;;;;;  17934 214000))
 ;;; Generated autoloads from emacs-lisp/elint.el
 
 (autoload 'elint-file "elint" "\
@@ -8095,8 +8106,8 @@ optional prefix argument REINIT is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21604 48550 17934
+;;;;;;  214000))
 ;;; Generated autoloads from emacs-lisp/elp.el
 
 (autoload 'elp-instrument-function "elp" "\
@@ -8130,8 +8141,8 @@ displayed.
 
 ;;;***
 
-;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21604 48550 25934
+;;;;;;  215000))
 ;;; Generated autoloads from emacs-lock.el
 
 (autoload 'emacs-lock-mode "emacs-lock" "\
@@ -8158,8 +8169,8 @@ Other values are interpreted as usual.
 
 ;;;***
 
-;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21608 34742
-;;;;;;  2253 811000))
+;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21631 35966
+;;;;;;  875121 868000))
 ;;; Generated autoloads from mail/emacsbug.el
 
 (autoload 'report-emacs-bug "emacsbug" "\
@@ -8172,8 +8183,8 @@ Prompts for bug subject.  Leaves you in a mail buffer.
 
 ;;;***
 
-;;;### (autoloads nil "emerge" "vc/emerge.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "emerge" "vc/emerge.el" (21604 48550 429934
+;;;;;;  230000))
 ;;; Generated autoloads from vc/emerge.el
 
 (autoload 'emerge-files "emerge" "\
@@ -8233,8 +8244,8 @@ Emerge two RCS revisions of a file, with another revision 
as ancestor.
 
 ;;;***
 
-;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21604 48550
+;;;;;;  393934 228000))
 ;;; Generated autoloads from textmodes/enriched.el
 
 (autoload 'enriched-mode "enriched" "\
@@ -8269,7 +8280,7 @@ Commands:
 
 ;;;***
 
-;;;### (autoloads nil "epa" "epa.el" (21624 22971 140149 848000))
+;;;### (autoloads nil "epa" "epa.el" (21631 35966 827121 867000))
 ;;; Generated autoloads from epa.el
 
 (autoload 'epa-list-keys "epa" "\
@@ -8457,8 +8468,8 @@ Insert selected KEYS after the point.
 
 ;;;***
 
-;;;### (autoloads nil "epa-dired" "epa-dired.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "epa-dired" "epa-dired.el" (21604 48550 33934
+;;;;;;  215000))
 ;;; Generated autoloads from epa-dired.el
 
 (autoload 'epa-dired-do-decrypt "epa-dired" "\
@@ -8483,8 +8494,8 @@ Encrypt marked files.
 
 ;;;***
 
-;;;### (autoloads nil "epa-file" "epa-file.el" (21611 10937 700236
-;;;;;;  3000))
+;;;### (autoloads nil "epa-file" "epa-file.el" (21631 35966 827121
+;;;;;;  867000))
 ;;; Generated autoloads from epa-file.el
 
 (autoload 'epa-file-handler "epa-file" "\
@@ -8504,8 +8515,8 @@ Encrypt marked files.
 
 ;;;***
 
-;;;### (autoloads nil "epa-mail" "epa-mail.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "epa-mail" "epa-mail.el" (21604 48550 33934
+;;;;;;  215000))
 ;;; Generated autoloads from epa-mail.el
 
 (autoload 'epa-mail-mode "epa-mail" "\
@@ -8582,7 +8593,7 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "epg" "epg.el" (21611 10937 700236 3000))
+;;;### (autoloads nil "epg" "epg.el" (21631 35966 827121 867000))
 ;;; Generated autoloads from epg.el
 (push (purecopy '(epg 1 0 0)) package--builtin-versions)
 
@@ -8593,8 +8604,8 @@ Return a context object.
 
 ;;;***
 
-;;;### (autoloads nil "epg-config" "epg-config.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "epg-config" "epg-config.el" (21604 48550 33934
+;;;;;;  215000))
 ;;; Generated autoloads from epg-config.el
 
 (autoload 'epg-configuration "epg-config" "\
@@ -8614,7 +8625,7 @@ Look at CONFIG and try to expand GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "erc" "erc/erc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "erc" "erc/erc.el" (21604 48550 49934 215000))
 ;;; Generated autoloads from erc/erc.el
 
 (autoload 'erc-select-read-args "erc" "\
@@ -8643,7 +8654,7 @@ then the server and full-name will be set to those 
values, whereas
 `erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
 be invoked for the values of the other parameters.
 
-\(fn &key (server (erc-compute-server)) (port (erc-compute-port)) (nick 
(erc-compute-nick)) PASSWORD (full-name (erc-compute-full-name)))" t nil)
+\(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK 
(erc-compute-nick)) PASSWORD (FULL-NAME (erc-compute-full-name)))" t nil)
 
 (defalias 'erc-select 'erc)
 
@@ -8662,36 +8673,36 @@ Otherwise, connect to HOST:PORT as USER and /join 
CHANNEL.
 
 ;;;***
 
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21604
+;;;;;;  48550 37934 215000))
 ;;; Generated autoloads from erc/erc-autoaway.el
  (autoload 'erc-autoaway-mode "erc-autoaway")
 
 ;;;***
 
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21604 48550
+;;;;;;  37934 215000))
 ;;; Generated autoloads from erc/erc-button.el
  (autoload 'erc-button-mode "erc-button" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21604 48550
+;;;;;;  41934 215000))
 ;;; Generated autoloads from erc/erc-capab.el
  (autoload 'erc-capab-identify-mode "erc-capab" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21604 48550
+;;;;;;  41934 215000))
 ;;; Generated autoloads from erc/erc-compat.el
  (autoload 'erc-define-minor-mode "erc-compat")
 
 ;;;***
 
-;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21604 48550 41934
+;;;;;;  215000))
 ;;; Generated autoloads from erc/erc-dcc.el
  (autoload 'erc-dcc-mode "erc-dcc")
 
@@ -8721,14 +8732,14 @@ that subcommand.
 ;;;***
 
 ;;;### (autoloads nil "erc-desktop-notifications" 
"erc/erc-desktop-notifications.el"
-;;;;;;  (21617 49721 420132 227000))
+;;;;;;  (21631 35966 831121 867000))
 ;;; Generated autoloads from erc/erc-desktop-notifications.el
 (autoload 'erc-notifications-mode "erc-desktop-notifications" "" t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21604
+;;;;;;  48550 41934 215000))
 ;;; Generated autoloads from erc/erc-ezbounce.el
 
 (autoload 'erc-cmd-ezb "erc-ezbounce" "\
@@ -8790,8 +8801,8 @@ Add EZBouncer convenience functions to ERC.
 
 ;;;***
 
-;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21604 48550 41934
+;;;;;;  215000))
 ;;; Generated autoloads from erc/erc-fill.el
  (autoload 'erc-fill-mode "erc-fill" nil t)
 
@@ -8803,8 +8814,8 @@ You can put this on `erc-insert-modify-hook' and/or 
`erc-send-modify-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21604 48550
+;;;;;;  45934 215000))
 ;;; Generated autoloads from erc/erc-identd.el
  (autoload 'erc-identd-mode "erc-identd")
 
@@ -8825,8 +8836,8 @@ system.
 
 ;;;***
 
-;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21604 48550
+;;;;;;  45934 215000))
 ;;; Generated autoloads from erc/erc-imenu.el
 
 (autoload 'erc-create-imenu-index "erc-imenu" "\
@@ -8836,22 +8847,22 @@ system.
 
 ;;;***
 
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21604 48550 45934
+;;;;;;  215000))
 ;;; Generated autoloads from erc/erc-join.el
  (autoload 'erc-autojoin-mode "erc-join" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21604 48550 45934
+;;;;;;  215000))
 ;;; Generated autoloads from erc/erc-list.el
  (autoload 'erc-list-mode "erc-list")
 
 ;;;***
 
-;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21604 48550 45934
+;;;;;;  215000))
 ;;; Generated autoloads from erc/erc-log.el
  (autoload 'erc-log-mode "erc-log" nil t)
 
@@ -8880,8 +8891,8 @@ You can save every individual message by putting this 
function on
 
 ;;;***
 
-;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21604 48550
+;;;;;;  45934 215000))
 ;;; Generated autoloads from erc/erc-match.el
  (autoload 'erc-match-mode "erc-match")
 
@@ -8927,15 +8938,15 @@ Delete dangerous-host interactively to 
`erc-dangerous-hosts'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21604 48550 45934
+;;;;;;  215000))
 ;;; Generated autoloads from erc/erc-menu.el
  (autoload 'erc-menu-mode "erc-menu" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21604
+;;;;;;  48550 45934 215000))
 ;;; Generated autoloads from erc/erc-netsplit.el
  (autoload 'erc-netsplit-mode "erc-netsplit")
 
@@ -8946,8 +8957,8 @@ Show who's gone.
 
 ;;;***
 
-;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21604
+;;;;;;  48550 45934 215000))
 ;;; Generated autoloads from erc/erc-networks.el
 
 (autoload 'erc-determine-network "erc-networks" "\
@@ -8964,8 +8975,8 @@ Interactively select a server to connect to using 
`erc-server-alist'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21604 48550
+;;;;;;  45934 215000))
 ;;; Generated autoloads from erc/erc-notify.el
  (autoload 'erc-notify-mode "erc-notify" nil t)
 
@@ -8983,36 +8994,36 @@ with args, toggle notify status of people.
 
 ;;;***
 
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21604 48550 45934
+;;;;;;  215000))
 ;;; Generated autoloads from erc/erc-page.el
  (autoload 'erc-page-mode "erc-page")
 
 ;;;***
 
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21604
+;;;;;;  48550 45934 215000))
 ;;; Generated autoloads from erc/erc-pcomplete.el
  (autoload 'erc-completion-mode "erc-pcomplete" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21604 48550
+;;;;;;  45934 215000))
 ;;; Generated autoloads from erc/erc-replace.el
  (autoload 'erc-replace-mode "erc-replace")
 
 ;;;***
 
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21604 48550 45934
+;;;;;;  215000))
 ;;; Generated autoloads from erc/erc-ring.el
  (autoload 'erc-ring-mode "erc-ring" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21604
+;;;;;;  48550 45934 215000))
 ;;; Generated autoloads from erc/erc-services.el
  (autoload 'erc-services-mode "erc-services" nil t)
 
@@ -9029,15 +9040,15 @@ When called interactively, read the password using 
`read-passwd'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21604 48550
+;;;;;;  45934 215000))
 ;;; Generated autoloads from erc/erc-sound.el
  (autoload 'erc-sound-mode "erc-sound")
 
 ;;;***
 
-;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21604
+;;;;;;  48550 45934 215000))
 ;;; Generated autoloads from erc/erc-speedbar.el
 
 (autoload 'erc-speedbar-browser "erc-speedbar" "\
@@ -9048,22 +9059,22 @@ This will add a speedbar major display mode.
 
 ;;;***
 
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21604
+;;;;;;  48550 45934 215000))
 ;;; Generated autoloads from erc/erc-spelling.el
  (autoload 'erc-spelling-mode "erc-spelling" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21604 48550
+;;;;;;  45934 215000))
 ;;; Generated autoloads from erc/erc-stamp.el
  (autoload 'erc-timestamp-mode "erc-stamp" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21604 48550
+;;;;;;  45934 215000))
 ;;; Generated autoloads from erc/erc-track.el
 
 (defvar erc-track-minor-mode nil "\
@@ -9088,8 +9099,8 @@ keybindings will not do anything useful.
 
 ;;;***
 
-;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21604
+;;;;;;  48550 45934 215000))
 ;;; Generated autoloads from erc/erc-truncate.el
  (autoload 'erc-truncate-mode "erc-truncate" nil t)
 
@@ -9108,8 +9119,8 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21604 48550 45934
+;;;;;;  215000))
 ;;; Generated autoloads from erc/erc-xdcc.el
  (autoload 'erc-xdcc-mode "erc-xdcc")
 
@@ -9120,8 +9131,8 @@ Add a file to `erc-xdcc-files'.
 
 ;;;***
 
-;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21604 48550 17934
+;;;;;;  214000))
 ;;; Generated autoloads from emacs-lisp/ert.el
 
 (autoload 'ert-deftest "ert" "\
@@ -9139,7 +9150,11 @@ 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 (quote macro))
+\(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags '(TAG...)] 
BODY...)" nil t)
+
+(function-put 'ert-deftest 'doc-string-elt '3)
+
+(function-put 'ert-deftest 'lisp-indent-function '2)
 
 (put 'ert-deftest 'lisp-indent-function 2)
 
@@ -9186,8 +9201,8 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol 
or ert-test).
 
 ;;;***
 
-;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21604 48550
+;;;;;;  17934 214000))
 ;;; Generated autoloads from emacs-lisp/ert-x.el
 
 (put 'ert-with-test-buffer 'lisp-indent-function 1)
@@ -9199,8 +9214,8 @@ Kill all test buffers that are still live.
 
 ;;;***
 
-;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21604 48550
+;;;;;;  53934 216000))
 ;;; Generated autoloads from eshell/esh-mode.el
 
 (autoload 'eshell-mode "esh-mode" "\
@@ -9210,8 +9225,8 @@ Emacs shell interactive mode.
 
 ;;;***
 
-;;;### (autoloads nil "eshell" "eshell/eshell.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "eshell" "eshell/eshell.el" (21604 48550 53934
+;;;;;;  216000))
 ;;; Generated autoloads from eshell/eshell.el
 (push (purecopy '(eshell 2 4 2)) package--builtin-versions)
 
@@ -9246,8 +9261,8 @@ corresponding to a successful execution.
 
 ;;;***
 
-;;;### (autoloads nil "etags" "progmodes/etags.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "etags" "progmodes/etags.el" (21660 25453 16850
+;;;;;;  17000))
 ;;; Generated autoloads from progmodes/etags.el
 
 (defvar tags-file-name nil "\
@@ -9340,6 +9355,11 @@ as they appeared in the `etags' command that created the 
table, usually
 without directory names.
 
 \(fn)" nil nil)
+
+(autoload 'tags-lazy-completion-table "etags" "\
+
+
+\(fn)" nil nil)
  (defun tags-completion-at-point-function ()
   (if (or tags-table-list tags-file-name)
       (progn
@@ -9388,7 +9408,6 @@ Contrast this with the ring of marks gone to by the 
command.
 See documentation of variable `tags-file-name'.
 
 \(fn TAGNAME &optional NEXT-P REGEXP-P)" t nil)
- (define-key esc-map "." 'find-tag)
 
 (autoload 'find-tag-other-window "etags" "\
 Find tag (in current tags table) whose name contains TAGNAME.
@@ -9411,7 +9430,6 @@ Contrast this with the ring of marks gone to by the 
command.
 See documentation of variable `tags-file-name'.
 
 \(fn TAGNAME &optional NEXT-P REGEXP-P)" t nil)
- (define-key ctl-x-4-map "." 'find-tag-other-window)
 
 (autoload 'find-tag-other-frame "etags" "\
 Find tag (in current tags table) whose name contains TAGNAME.
@@ -9434,7 +9452,6 @@ Contrast this with the ring of marks gone to by the 
command.
 See documentation of variable `tags-file-name'.
 
 \(fn TAGNAME &optional NEXT-P)" t nil)
- (define-key ctl-x-5-map "." 'find-tag-other-frame)
 
 (autoload 'find-tag-regexp "etags" "\
 Find tag (in current tags table) whose name matches REGEXP.
@@ -9455,17 +9472,8 @@ Contrast this with the ring of marks gone to by the 
command.
 See documentation of variable `tags-file-name'.
 
 \(fn REGEXP &optional NEXT-P OTHER-WINDOW)" t nil)
- (define-key esc-map [?\C-.] 'find-tag-regexp)
- (define-key esc-map "*" 'pop-tag-mark)
 
-(autoload 'pop-tag-mark "etags" "\
-Pop back to where \\[find-tag] was last invoked.
-
-This is distinct from invoking \\[find-tag] with a negative argument
-since that pops a stack of markers at which tags were found, not from
-where they were found.
-
-\(fn)" t nil)
+(defalias 'pop-tag-mark 'xref-pop-marker-stack)
 
 (autoload 'next-file "etags" "\
 Select next file among files in current tags table.
@@ -9494,7 +9502,6 @@ evaluate to operate on an interesting file.  If the 
latter evaluates to
 nil, we exit; otherwise we scan the next file.
 
 \(fn &optional FIRST-TIME)" t nil)
- (define-key esc-map "," 'tags-loop-continue)
 
 (autoload 'tags-search "etags" "\
 Search through all files listed in tags table for match for REGEXP.
@@ -9553,10 +9560,15 @@ for \\[find-tag] (which see).
 
 \(fn)" t nil)
 
+(autoload 'etags-xref-find "etags" "\
+
+
+\(fn ACTION ID)" nil nil)
+
 ;;;***
 
-;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21604
+;;;;;;  48550 145934 219000))
 ;;; Generated autoloads from language/ethio-util.el
 
 (autoload 'setup-ethiopic-environment-internal "ethio-util" "\
@@ -9724,7 +9736,7 @@ With ARG, insert that many delimiters.
 
 ;;;***
 
-;;;### (autoloads nil "eudc" "net/eudc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "eudc" "net/eudc.el" (21604 48550 213934 222000))
 ;;; Generated autoloads from net/eudc.el
 
 (autoload 'eudc-set-server "eudc" "\
@@ -9778,8 +9790,8 @@ This does nothing except loading eudc by autoload 
side-effect.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21604 48550 213934
+;;;;;;  222000))
 ;;; Generated autoloads from net/eudc-bob.el
 
 (autoload 'eudc-display-generic-binary "eudc-bob" "\
@@ -9814,8 +9826,8 @@ Display a button for the JPEG DATA.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21604 48550
+;;;;;;  213934 222000))
 ;;; Generated autoloads from net/eudc-export.el
 
 (autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
@@ -9831,8 +9843,8 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a 
record.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21604
+;;;;;;  48550 213934 222000))
 ;;; Generated autoloads from net/eudc-hotlist.el
 
 (autoload 'eudc-edit-hotlist "eudc-hotlist" "\
@@ -9842,8 +9854,8 @@ Edit the hotlist of directory servers in a specialized 
buffer.
 
 ;;;***
 
-;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21604 48550 17934
+;;;;;;  214000))
 ;;; Generated autoloads from emacs-lisp/ewoc.el
 
 (autoload 'ewoc-create "ewoc" "\
@@ -9869,7 +9881,7 @@ fourth arg NOSEP non-nil inhibits this.
 
 ;;;***
 
-;;;### (autoloads nil "eww" "net/eww.el" (21628 44513 720130 219000))
+;;;### (autoloads nil "eww" "net/eww.el" (21640 32530 974334 457000))
 ;;; Generated autoloads from net/eww.el
 
 (autoload 'eww "eww" "\
@@ -9903,8 +9915,8 @@ Display the bookmarks.
 
 ;;;***
 
-;;;### (autoloads nil "executable" "progmodes/executable.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "executable" "progmodes/executable.el" (21604
+;;;;;;  48550 333934 226000))
 ;;; Generated autoloads from progmodes/executable.el
 
 (autoload 'executable-command-find-posix-p "executable" "\
@@ -9945,7 +9957,7 @@ file modes.
 
 ;;;***
 
-;;;### (autoloads nil "expand" "expand.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "expand" "expand.el" (21604 48550 53934 216000))
 ;;; Generated autoloads from expand.el
 
 (autoload 'expand-add-abbrevs "expand" "\
@@ -9994,8 +10006,8 @@ This is used only in conjunction with 
`expand-add-abbrevs'.
 
 ;;;***
 
-;;;### (autoloads nil "f90" "progmodes/f90.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "f90" "progmodes/f90.el" (21604 48550 333934
+;;;;;;  226000))
 ;;; Generated autoloads from progmodes/f90.el
 
 (autoload 'f90-mode "f90" "\
@@ -10062,8 +10074,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "face-remap" "face-remap.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "face-remap" "face-remap.el" (21604 48550 53934
+;;;;;;  216000))
 ;;; Generated autoloads from face-remap.el
 
 (autoload 'face-remap-add-relative "face-remap" "\
@@ -10222,8 +10234,8 @@ Besides the choice of face, it is the same as 
`buffer-face-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21604 48550
+;;;;;;  181934 220000))
 ;;; Generated autoloads from mail/feedmail.el
 (push (purecopy '(feedmail 11)) package--builtin-versions)
 
@@ -10277,7 +10289,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
 
 ;;;***
 
-;;;### (autoloads nil "ffap" "ffap.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "ffap" "ffap.el" (21604 48550 57934 216000))
 ;;; Generated autoloads from ffap.el
 
 (autoload 'ffap-next "ffap" "\
@@ -10340,8 +10352,8 @@ Evaluate the forms in variable `ffap-bindings'.
 
 ;;;***
 
-;;;### (autoloads nil "filecache" "filecache.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "filecache" "filecache.el" (21604 48550 57934
+;;;;;;  216000))
 ;;; Generated autoloads from filecache.el
 
 (autoload 'file-cache-add-directory "filecache" "\
@@ -10398,8 +10410,8 @@ the name is considered already unique; only the second 
substitution
 
 ;;;***
 
-;;;### (autoloads nil "filenotify" "filenotify.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "filenotify" "filenotify.el" (21604 48550 57934
+;;;;;;  216000))
 ;;; Generated autoloads from filenotify.el
 
 (autoload 'file-notify-handle-event "filenotify" "\
@@ -10411,8 +10423,7 @@ Otherwise, signal a `file-notify-error'.
 
 ;;;***
 
-;;;### (autoloads nil "files-x" "files-x.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "files-x" "files-x.el" (21604 48550 57934 216000))
 ;;; Generated autoloads from files-x.el
 
 (autoload 'add-file-local-variable "files-x" "\
@@ -10477,8 +10488,8 @@ Copy directory-local variables to the -*- line.
 
 ;;;***
 
-;;;### (autoloads nil "filesets" "filesets.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "filesets" "filesets.el" (21604 48550 61934
+;;;;;;  216000))
 ;;; Generated autoloads from filesets.el
 
 (autoload 'filesets-init "filesets" "\
@@ -10489,8 +10500,8 @@ Set up hooks, load the cache file -- if existing -- and 
build the menu.
 
 ;;;***
 
-;;;### (autoloads nil "find-cmd" "find-cmd.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "find-cmd" "find-cmd.el" (21604 48550 61934
+;;;;;;  216000))
 ;;; Generated autoloads from find-cmd.el
 (push (purecopy '(find-cmd 0 6)) package--builtin-versions)
 
@@ -10510,8 +10521,8 @@ result is a string that should be ready for the command 
line.
 
 ;;;***
 
-;;;### (autoloads nil "find-dired" "find-dired.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "find-dired" "find-dired.el" (21604 48550 61934
+;;;;;;  216000))
 ;;; Generated autoloads from find-dired.el
 
 (autoload 'find-dired "find-dired" "\
@@ -10551,8 +10562,8 @@ use in place of \"-ls\" as the final argument.
 
 ;;;***
 
-;;;### (autoloads nil "find-file" "find-file.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "find-file" "find-file.el" (21604 48550 61934
+;;;;;;  216000))
 ;;; 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)))) "\
@@ -10642,8 +10653,8 @@ Visit the file you click on in another window.
 
 ;;;***
 
-;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21640
+;;;;;;  60472 610520 813000))
 ;;; Generated autoloads from emacs-lisp/find-func.el
 
 (autoload 'find-library "find-func" "\
@@ -10801,8 +10812,8 @@ Define some key bindings for the find-function family 
of functions.
 
 ;;;***
 
-;;;### (autoloads nil "find-lisp" "find-lisp.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "find-lisp" "find-lisp.el" (21604 48550 61934
+;;;;;;  216000))
 ;;; Generated autoloads from find-lisp.el
 
 (autoload 'find-lisp-find-dired "find-lisp" "\
@@ -10822,7 +10833,7 @@ Change the filter on a `find-lisp-find-dired' buffer to 
REGEXP.
 
 ;;;***
 
-;;;### (autoloads nil "finder" "finder.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "finder" "finder.el" (21604 48550 61934 216000))
 ;;; Generated autoloads from finder.el
 (push (purecopy '(finder 1 0)) package--builtin-versions)
 
@@ -10844,8 +10855,8 @@ Find packages matching a given keyword.
 
 ;;;***
 
-;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21604 48550 61934
+;;;;;;  216000))
 ;;; Generated autoloads from flow-ctrl.el
 
 (autoload 'enable-flow-control "flow-ctrl" "\
@@ -10866,8 +10877,8 @@ to get the effect of a C-q.
 
 ;;;***
 
-;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21604 48550
+;;;;;;  81934 217000))
 ;;; Generated autoloads from gnus/flow-fill.el
 
 (autoload 'fill-flowed-encode "flow-fill" "\
@@ -10882,8 +10893,8 @@ to get the effect of a C-q.
 
 ;;;***
 
-;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21604 48550
+;;;;;;  333934 226000))
 ;;; Generated autoloads from progmodes/flymake.el
 (push (purecopy '(flymake 0 3)) package--builtin-versions)
 
@@ -10913,8 +10924,8 @@ Turn flymake mode off.
 
 ;;;***
 
-;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21604 48550
+;;;;;;  397934 228000))
 ;;; Generated autoloads from textmodes/flyspell.el
 
 (autoload 'flyspell-prog-mode "flyspell" "\
@@ -10984,14 +10995,13 @@ Flyspell whole buffer.
 
 ;;;***
 
-;;;### (autoloads nil "foldout" "foldout.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "foldout" "foldout.el" (21604 48550 61934 216000))
 ;;; Generated autoloads from foldout.el
 (push (purecopy '(foldout 1 10)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "follow" "follow.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "follow" "follow.el" (21604 48550 61934 216000))
 ;;; Generated autoloads from follow.el
 
 (autoload 'turn-on-follow-mode "follow" "\
@@ -11059,8 +11069,8 @@ selected if the original window is the first one in the 
frame.
 
 ;;;***
 
-;;;### (autoloads nil "footnote" "mail/footnote.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "footnote" "mail/footnote.el" (21604 48550
+;;;;;;  181934 220000))
 ;;; Generated autoloads from mail/footnote.el
 (push (purecopy '(footnote 0 19)) package--builtin-versions)
 
@@ -11079,7 +11089,7 @@ play around with the following keys:
 
 ;;;***
 
-;;;### (autoloads nil "forms" "forms.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "forms" "forms.el" (21604 48550 65934 216000))
 ;;; Generated autoloads from forms.el
 
 (autoload 'forms-mode "forms" "\
@@ -11115,8 +11125,8 @@ Visit a file in Forms mode in other window.
 
 ;;;***
 
-;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21604 48550
+;;;;;;  337934 226000))
 ;;; Generated autoloads from progmodes/fortran.el
 
 (autoload 'fortran-mode "fortran" "\
@@ -11193,8 +11203,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "fortune" "play/fortune.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "fortune" "play/fortune.el" (21604 48550 305934
+;;;;;;  225000))
 ;;; Generated autoloads from play/fortune.el
 
 (autoload 'fortune-add-fortune "fortune" "\
@@ -11242,8 +11252,8 @@ and choose the directory as the fortune-file.
 
 ;;;***
 
-;;;### (autoloads nil "frameset" "frameset.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "frameset" "frameset.el" (21604 48550 65934
+;;;;;;  216000))
 ;;; Generated autoloads from frameset.el
 
 (defvar frameset-session-filter-alist '((name . :never) (left . 
frameset-filter-iconified) (minibuffer . frameset-filter-minibuffer) (top . 
frameset-filter-iconified)) "\
@@ -11429,15 +11439,15 @@ Interactively, reads the register using 
`register-read-with-preview'.
 
 ;;;***
 
-;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21604 48550
+;;;;;;  305934 225000))
 ;;; Generated autoloads from play/gamegrid.el
 (push (purecopy '(gamegrid 1 2)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21604 48550
+;;;;;;  337934 226000))
 ;;; Generated autoloads from progmodes/gdb-mi.el
 
 (defvar gdb-enable-debug nil "\
@@ -11514,8 +11524,8 @@ detailed description of this mode.
 
 ;;;***
 
-;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21604 48550
+;;;;;;  17934 214000))
 ;;; Generated autoloads from emacs-lisp/generic.el
 
 (defvar generic-mode-list nil "\
@@ -11595,8 +11605,8 @@ regular expression that can be used as an element of
 
 ;;;***
 
-;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21604 48550
+;;;;;;  337934 226000))
 ;;; Generated autoloads from progmodes/glasses.el
 
 (autoload 'glasses-mode "glasses" "\
@@ -11610,8 +11620,8 @@ add virtual separators (like underscores) at places 
they belong to.
 
 ;;;***
 
-;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21604 48550
+;;;;;;  81934 217000))
 ;;; Generated autoloads from gnus/gmm-utils.el
 
 (autoload 'gmm-regexp-concat "gmm-utils" "\
@@ -11665,7 +11675,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
 
 ;;;***
 
-;;;### (autoloads nil "gnus" "gnus/gnus.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "gnus" "gnus/gnus.el" (21604 48550 101934 217000))
 ;;; Generated autoloads from gnus/gnus.el
 (push (purecopy '(gnus 5 13)) package--builtin-versions)
 (when (fboundp 'custom-autoload)
@@ -11715,8 +11725,8 @@ prompt the user for the name of an NNTP server to use.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21604 48550
+;;;;;;  85934 217000))
 ;;; Generated autoloads from gnus/gnus-agent.el
 
 (autoload 'gnus-unplugged "gnus-agent" "\
@@ -11806,8 +11816,8 @@ CLEAN is obsolete and ignored.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21623 2108 292281
-;;;;;;  129000))
+;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21651 20707
+;;;;;;  176225 752000))
 ;;; Generated autoloads from gnus/gnus-art.el
 
 (autoload 'gnus-article-prepare-display "gnus-art" "\
@@ -11817,8 +11827,8 @@ Make the current buffer look like a nice article.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21645
+;;;;;;  25761 793186 828000))
 ;;; Generated autoloads from gnus/gnus-bookmark.el
 
 (autoload 'gnus-bookmark-set "gnus-bookmark" "\
@@ -11841,8 +11851,8 @@ deletion, or > if it is flagged for displaying.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21604 48550
+;;;;;;  85934 217000))
 ;;; Generated autoloads from gnus/gnus-cache.el
 
 (autoload 'gnus-jog-cache "gnus-cache" "\
@@ -11883,8 +11893,8 @@ supported.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21604 48550
+;;;;;;  89934 217000))
 ;;; Generated autoloads from gnus/gnus-delay.el
 
 (autoload 'gnus-delay-article "gnus-delay" "\
@@ -11919,8 +11929,8 @@ Checking delayed messages is skipped if optional arg 
NO-CHECK is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21604 48550
+;;;;;;  89934 217000))
 ;;; Generated autoloads from gnus/gnus-diary.el
 
 (autoload 'gnus-user-format-function-d "gnus-diary" "\
@@ -11935,8 +11945,8 @@ Checking delayed messages is skipped if optional arg 
NO-CHECK is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21604 48550
+;;;;;;  89934 217000))
 ;;; Generated autoloads from gnus/gnus-dired.el
 
 (autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
@@ -11946,8 +11956,8 @@ Convenience method to turn on gnus-dired-mode.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21604 48550
+;;;;;;  89934 217000))
 ;;; Generated autoloads from gnus/gnus-draft.el
 
 (autoload 'gnus-draft-reminder "gnus-draft" "\
@@ -11957,8 +11967,8 @@ Reminder user if there are unsent drafts.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21604 48550
+;;;;;;  89934 217000))
 ;;; Generated autoloads from gnus/gnus-fun.el
 
 (autoload 'gnus--random-face-with-type "gnus-fun" "\
@@ -12023,8 +12033,8 @@ Insert a random Face header from `gnus-face-directory'.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21604
+;;;;;;  48550 89934 217000))
 ;;; Generated autoloads from gnus/gnus-gravatar.el
 
 (autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\
@@ -12041,8 +12051,8 @@ If gravatars are already displayed, remove them.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21604 48550
+;;;;;;  89934 217000))
 ;;; Generated autoloads from gnus/gnus-group.el
 
 (autoload 'gnus-fetch-group "gnus-group" "\
@@ -12059,8 +12069,8 @@ Pop up a frame and enter GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21604 48550
+;;;;;;  89934 217000))
 ;;; Generated autoloads from gnus/gnus-html.el
 
 (autoload 'gnus-article-html "gnus-html" "\
@@ -12075,8 +12085,8 @@ Pop up a frame and enter GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21604 48550
+;;;;;;  93934 217000))
 ;;; Generated autoloads from gnus/gnus-kill.el
 
 (defalias 'gnus-batch-kill 'gnus-batch-score)
@@ -12089,8 +12099,8 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f 
gnus-batch-score
 
 ;;;***
 
-;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21604 48550 93934
+;;;;;;  217000))
 ;;; Generated autoloads from gnus/gnus-ml.el
 
 (autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\
@@ -12113,8 +12123,8 @@ Minor mode for providing mailing-list commands.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21604 48550
+;;;;;;  93934 217000))
 ;;; Generated autoloads from gnus/gnus-mlspl.el
 
 (autoload 'gnus-group-split-setup "gnus-mlspl" "\
@@ -12214,8 +12224,8 @@ Calling (gnus-group-split-fancy nil nil 
\"mail.others\") returns:
 
 ;;;***
 
-;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21604 48550
+;;;;;;  93934 217000))
 ;;; Generated autoloads from gnus/gnus-msg.el
 
 (autoload 'gnus-msg-mail "gnus-msg" "\
@@ -12242,7 +12252,7 @@ Like `message-reply'.
 ;;;***
 
 ;;;### (autoloads nil "gnus-notifications" "gnus/gnus-notifications.el"
-;;;;;;  (21607 54478 300138 641000))
+;;;;;;  (21631 35966 851121 868000))
 ;;; Generated autoloads from gnus/gnus-notifications.el
 
 (autoload 'gnus-notifications "gnus-notifications" "\
@@ -12258,8 +12268,8 @@ This is typically a function to add in
 
 ;;;***
 
-;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21604 48550
+;;;;;;  93934 217000))
 ;;; Generated autoloads from gnus/gnus-picon.el
 
 (autoload 'gnus-treat-from-picon "gnus-picon" "\
@@ -12282,8 +12292,8 @@ If picons are already displayed, remove them.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21604 48550
+;;;;;;  93934 217000))
 ;;; Generated autoloads from gnus/gnus-range.el
 
 (autoload 'gnus-sorted-difference "gnus-range" "\
@@ -12350,8 +12360,8 @@ Add NUM into sorted LIST by side effect.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (21650
+;;;;;;  56624 523745 975000))
 ;;; Generated autoloads from gnus/gnus-registry.el
 
 (autoload 'gnus-registry-initialize "gnus-registry" "\
@@ -12366,8 +12376,8 @@ Install the registry hooks.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21604 48550
+;;;;;;  93934 217000))
 ;;; Generated autoloads from gnus/gnus-sieve.el
 
 (autoload 'gnus-sieve-update "gnus-sieve" "\
@@ -12394,8 +12404,8 @@ See the documentation for these variables and functions 
for details.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21604 48550
+;;;;;;  93934 217000))
 ;;; Generated autoloads from gnus/gnus-spec.el
 
 (autoload 'gnus-update-format "gnus-spec" "\
@@ -12405,8 +12415,8 @@ Update the format specification near point.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21620 25920
-;;;;;;  601566 783000))
+;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21631 35966
+;;;;;;  851121 868000))
 ;;; Generated autoloads from gnus/gnus-start.el
 
 (autoload 'gnus-declare-backend "gnus-start" "\
@@ -12416,8 +12426,8 @@ Declare back end NAME with ABILITIES as a Gnus back end.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21623 2108 292281
-;;;;;;  129000))
+;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21631 35966
+;;;;;;  855121 868000))
 ;;; Generated autoloads from gnus/gnus-sum.el
 
 (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
@@ -12428,8 +12438,8 @@ BOOKMARK is a bookmark name or a bookmark record.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21604 48550
+;;;;;;  101934 217000))
 ;;; Generated autoloads from gnus/gnus-sync.el
 
 (autoload 'gnus-sync-initialize "gnus-sync" "\
@@ -12444,8 +12454,8 @@ Install the sync hooks.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21604 48550
+;;;;;;  101934 217000))
 ;;; Generated autoloads from gnus/gnus-win.el
 
 (autoload 'gnus-add-configuration "gnus-win" "\
@@ -12455,8 +12465,8 @@ Add the window configuration CONF to 
`gnus-buffer-configuration'.
 
 ;;;***
 
-;;;### (autoloads nil "gnutls" "net/gnutls.el" (21620 46140 530123
-;;;;;;  341000))
+;;;### (autoloads nil "gnutls" "net/gnutls.el" (21640 32530 974334
+;;;;;;  457000))
 ;;; Generated autoloads from net/gnutls.el
 
 (defvar gnutls-min-prime-bits 256 "\
@@ -12472,8 +12482,8 @@ A value of nil says to use the default GnuTLS value.")
 
 ;;;***
 
-;;;### (autoloads nil "gomoku" "play/gomoku.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "gomoku" "play/gomoku.el" (21604 48550 305934
+;;;;;;  225000))
 ;;; Generated autoloads from play/gomoku.el
 
 (autoload 'gomoku "gomoku" "\
@@ -12499,8 +12509,8 @@ Use \\[describe-mode] for more info.
 
 ;;;***
 
-;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21604 48550
+;;;;;;  217934 222000))
 ;;; Generated autoloads from net/goto-addr.el
 
 (define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point 
"22.1")
@@ -12541,8 +12551,8 @@ Like `goto-address-mode', but only for comments and 
strings.
 
 ;;;***
 
-;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21604 48550
+;;;;;;  101934 217000))
 ;;; Generated autoloads from gnus/gravatar.el
 
 (autoload 'gravatar-retrieve "gravatar" "\
@@ -12558,8 +12568,8 @@ Retrieve MAIL-ADDRESS gravatar and returns it.
 
 ;;;***
 
-;;;### (autoloads nil "grep" "progmodes/grep.el" (21612 31801 50825
-;;;;;;  711000))
+;;;### (autoloads nil "grep" "progmodes/grep.el" (21631 35966 907121
+;;;;;;  870000))
 ;;; Generated autoloads from progmodes/grep.el
 
 (defvar grep-window-height nil "\
@@ -12723,7 +12733,7 @@ file name to `*.gz', and sets `grep-highlight-matches' 
to `always'.
 
 ;;;***
 
-;;;### (autoloads nil "gs" "gs.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "gs" "gs.el" (21604 48550 121934 218000))
 ;;; Generated autoloads from gs.el
 
 (autoload 'gs-load-image "gs" "\
@@ -12736,8 +12746,8 @@ the form \"WINDOW-ID PIXMAP-ID\".  Value is non-nil if 
successful.
 
 ;;;***
 
-;;;### (autoloads nil "gud" "progmodes/gud.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "gud" "progmodes/gud.el" (21640 32530 986334
+;;;;;;  458000))
 ;;; Generated autoloads from progmodes/gud.el
 
 (autoload 'gud-gdb "gud" "\
@@ -12832,8 +12842,8 @@ it if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21604 48550 17934
+;;;;;;  214000))
 ;;; Generated autoloads from emacs-lisp/gv.el
 
 (autoload 'gv-get "gv" "\
@@ -12935,8 +12945,8 @@ binding mode.
 
 ;;;***
 
-;;;### (autoloads nil "handwrite" "play/handwrite.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "handwrite" "play/handwrite.el" (21604 48550
+;;;;;;  305934 225000))
 ;;; Generated autoloads from play/handwrite.el
 
 (autoload 'handwrite "handwrite" "\
@@ -12953,8 +12963,8 @@ Variables: `handwrite-linespace'     (default 12)
 
 ;;;***
 
-;;;### (autoloads nil "hanoi" "play/hanoi.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "hanoi" "play/hanoi.el" (21604 48550 305934
+;;;;;;  225000))
 ;;; Generated autoloads from play/hanoi.el
 
 (autoload 'hanoi "hanoi" "\
@@ -12981,8 +12991,8 @@ to be updated.
 
 ;;;***
 
-;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21604 48550
+;;;;;;  181934 220000))
 ;;; Generated autoloads from mail/hashcash.el
 
 (autoload 'hashcash-insert-payment "hashcash" "\
@@ -13024,8 +13034,8 @@ Prefix arg sets default accept amount temporarily.
 
 ;;;***
 
-;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21604 48550 121934
+;;;;;;  218000))
 ;;; Generated autoloads from help-at-pt.el
 
 (autoload 'help-at-pt-string "help-at-pt" "\
@@ -13152,8 +13162,8 @@ different regions.  With numeric argument ARG, behaves 
like
 
 ;;;***
 
-;;;### (autoloads nil "help-fns" "help-fns.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "help-fns" "help-fns.el" (21604 48550 121934
+;;;;;;  218000))
 ;;; Generated autoloads from help-fns.el
 
 (autoload 'describe-function "help-fns" "\
@@ -13232,8 +13242,8 @@ Produce a texinfo buffer with sorted doc-strings from 
the DOC file.
 
 ;;;***
 
-;;;### (autoloads nil "help-macro" "help-macro.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "help-macro" "help-macro.el" (21604 48550 121934
+;;;;;;  218000))
 ;;; Generated autoloads from help-macro.el
 
 (defvar three-step-help nil "\
@@ -13247,8 +13257,8 @@ gives the window that lists the options.")
 
 ;;;***
 
-;;;### (autoloads nil "help-mode" "help-mode.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "help-mode" "help-mode.el" (21604 48550 121934
+;;;;;;  218000))
 ;;; Generated autoloads from help-mode.el
 
 (autoload 'help-mode "help-mode" "\
@@ -13347,8 +13357,8 @@ BOOKMARK is a bookmark name or a bookmark record.
 
 ;;;***
 
-;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21604 48550
+;;;;;;  17934 214000))
 ;;; Generated autoloads from emacs-lisp/helper.el
 
 (autoload 'Helper-describe-bindings "helper" "\
@@ -13363,7 +13373,7 @@ Provide help for current mode.
 
 ;;;***
 
-;;;### (autoloads nil "hexl" "hexl.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "hexl" "hexl.el" (21604 48550 125934 218000))
 ;;; Generated autoloads from hexl.el
 
 (autoload 'hexl-mode "hexl" "\
@@ -13457,8 +13467,8 @@ This discards the buffer's undo information.
 
 ;;;***
 
-;;;### (autoloads nil "hi-lock" "hi-lock.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "hi-lock" "hi-lock.el" (21604 48550 125934
+;;;;;;  218000))
 ;;; Generated autoloads from hi-lock.el
 
 (autoload 'hi-lock-mode "hi-lock" "\
@@ -13625,8 +13635,8 @@ be found in variable `hi-lock-interactive-patterns'.
 
 ;;;***
 
-;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21604 48550
+;;;;;;  337934 226000))
 ;;; Generated autoloads from progmodes/hideif.el
 
 (autoload 'hide-ifdef-mode "hideif" "\
@@ -13673,8 +13683,8 @@ Several variables affect how the hiding is done:
 
 ;;;***
 
-;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21604 48550
+;;;;;;  341934 226000))
 ;;; 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))) "\
@@ -13736,8 +13746,8 @@ Unconditionally turn off `hs-minor-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21604 48550 125934
+;;;;;;  218000))
 ;;; Generated autoloads from hilit-chg.el
 
 (autoload 'highlight-changes-mode "hilit-chg" "\
@@ -13868,8 +13878,8 @@ See `highlight-changes-mode' for more information on 
Highlight-Changes mode.
 
 ;;;***
 
-;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21604 48550 125934
+;;;;;;  218000))
 ;;; Generated autoloads from hippie-exp.el
 (push (purecopy '(hippie-exp 1 6)) package--builtin-versions)
 
@@ -13901,8 +13911,8 @@ argument VERBOSE non-nil makes the function verbose.
 
 ;;;***
 
-;;;### (autoloads nil "hl-line" "hl-line.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "hl-line" "hl-line.el" (21604 48550 125934
+;;;;;;  218000))
 ;;; Generated autoloads from hl-line.el
 
 (autoload 'hl-line-mode "hl-line" "\
@@ -13951,8 +13961,8 @@ Global-Hl-Line mode uses the functions 
`global-hl-line-unhighlight' and
 
 ;;;***
 
-;;;### (autoloads nil "holidays" "calendar/holidays.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "holidays" "calendar/holidays.el" (21604 48549
+;;;;;;  953934 212000))
 ;;; 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 [...]
@@ -14062,8 +14072,8 @@ The optional LABEL is used to label the buffer created.
 
 ;;;***
 
-;;;### (autoloads nil "html2text" "gnus/html2text.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "html2text" "gnus/html2text.el" (21604 48550
+;;;;;;  101934 217000))
 ;;; Generated autoloads from gnus/html2text.el
 
 (autoload 'html2text "html2text" "\
@@ -14073,8 +14083,8 @@ Convert HTML to plain text in the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21604 48550
+;;;;;;  125934 218000))
 ;;; Generated autoloads from htmlfontify.el
 (push (purecopy '(htmlfontify 0 21)) package--builtin-versions)
 
@@ -14107,8 +14117,8 @@ You may also want to set `hfy-page-header' and 
`hfy-page-footer'.
 
 ;;;***
 
-;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21604 48550 125934
+;;;;;;  218000))
 ;;; Generated autoloads from ibuf-macs.el
 
 (autoload 'define-ibuffer-column "ibuf-macs" "\
@@ -14134,7 +14144,9 @@ inlined into the compiled format versions.  This means 
that if you
 change its definition, you should explicitly call
 `ibuffer-recompile-formats'.
 
-\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil (quote macro))
+\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil t)
+
+(function-put 'define-ibuffer-column 'lisp-indent-function 'defun)
 
 (autoload 'define-ibuffer-sorter "ibuf-macs" "\
 Define a method of sorting named NAME.
@@ -14146,7 +14158,11 @@ For sorting, the forms in BODY will be evaluated with 
`a' bound to one
 buffer object, and `b' bound to another.  BODY should return a non-nil
 value if and only if `a' is \"less than\" `b'.
 
-\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil (quote macro))
+\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil t)
+
+(function-put 'define-ibuffer-sorter 'lisp-indent-function '1)
+
+(function-put 'define-ibuffer-sorter 'doc-string-elt '2)
 
 (autoload 'define-ibuffer-op "ibuf-macs" "\
 Generate a function which operates on a buffer.
@@ -14179,7 +14195,11 @@ confirmation message, in the form:
 COMPLEX means this function is special; see the source code of this
 macro for exactly what it does.
 
-\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS 
OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)" nil (quote macro))
+\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS 
OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)" nil t)
+
+(function-put 'define-ibuffer-op 'lisp-indent-function '2)
+
+(function-put 'define-ibuffer-op 'doc-string-elt '3)
 
 (autoload 'define-ibuffer-filter "ibuf-macs" "\
 Define a filter named NAME.
@@ -14192,12 +14212,16 @@ not a particular buffer should be displayed or not.  
The forms in BODY
 will be evaluated with BUF bound to the buffer object, and QUALIFIER
 bound to the current value of the filter.
 
-\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil (quote 
macro))
+\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil t)
+
+(function-put 'define-ibuffer-filter 'lisp-indent-function '2)
+
+(function-put 'define-ibuffer-filter 'doc-string-elt '2)
 
 ;;;***
 
-;;;### (autoloads nil "ibuffer" "ibuffer.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "ibuffer" "ibuffer.el" (21604 48550 129934
+;;;;;;  218000))
 ;;; Generated autoloads from ibuffer.el
 
 (autoload 'ibuffer-list-buffers "ibuffer" "\
@@ -14236,8 +14260,8 @@ FORMATS is the value to use for `ibuffer-formats'.
 
 ;;;***
 
-;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21611
-;;;;;;  10937 700236 3000))
+;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21631
+;;;;;;  35966 803121 866000))
 ;;; Generated autoloads from calendar/icalendar.el
 (push (purecopy '(icalendar 0 19)) package--builtin-versions)
 
@@ -14290,8 +14314,8 @@ buffer `*icalendar-errors*'.
 
 ;;;***
 
-;;;### (autoloads nil "icomplete" "icomplete.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "icomplete" "icomplete.el" (21604 48550 129934
+;;;;;;  218000))
 ;;; Generated autoloads from icomplete.el
 
 (defvar icomplete-mode nil "\
@@ -14330,8 +14354,8 @@ completions:
 
 ;;;***
 
-;;;### (autoloads nil "icon" "progmodes/icon.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "icon" "progmodes/icon.el" (21604 48550 341934
+;;;;;;  226000))
 ;;; Generated autoloads from progmodes/icon.el
 
 (autoload 'icon-mode "icon" "\
@@ -14371,8 +14395,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21604
+;;;;;;  48550 341934 226000))
 ;;; Generated autoloads from progmodes/idlw-shell.el
 
 (autoload 'idlwave-shell "idlw-shell" "\
@@ -14397,8 +14421,8 @@ See also the variable `idlwave-shell-prompt-pattern'.
 
 ;;;***
 
-;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21645 25761
+;;;;;;  805186 828000))
 ;;; Generated autoloads from progmodes/idlwave.el
 (push (purecopy '(idlwave 6 1 22)) package--builtin-versions)
 
@@ -14527,7 +14551,7 @@ The main features of this mode are
 
 ;;;***
 
-;;;### (autoloads nil "ido" "ido.el" (21612 31801 50825 711000))
+;;;### (autoloads nil "ido" "ido.el" (21631 35966 863121 868000))
 ;;; Generated autoloads from ido.el
 
 (defvar ido-mode nil "\
@@ -14789,7 +14813,7 @@ DEF, if non-nil, is the default value.
 
 ;;;***
 
-;;;### (autoloads nil "ielm" "ielm.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "ielm" "ielm.el" (21604 48550 129934 218000))
 ;;; Generated autoloads from ielm.el
 
 (autoload 'ielm "ielm" "\
@@ -14801,7 +14825,7 @@ See `inferior-emacs-lisp-mode' for details.
 
 ;;;***
 
-;;;### (autoloads nil "iimage" "iimage.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "iimage" "iimage.el" (21604 48550 129934 218000))
 ;;; Generated autoloads from iimage.el
 
 (define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
@@ -14817,7 +14841,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG 
is `toggle'.
 
 ;;;***
 
-;;;### (autoloads nil "image" "image.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "image" "image.el" (21604 48550 133934 219000))
 ;;; Generated autoloads from image.el
 
 (autoload 'image-type-from-data "image" "\
@@ -15010,8 +15034,8 @@ If Emacs is compiled without ImageMagick support, this 
does nothing.
 
 ;;;***
 
-;;;### (autoloads nil "image-dired" "image-dired.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "image-dired" "image-dired.el" (21604 48550
+;;;;;;  129934 218000))
 ;;; Generated autoloads from image-dired.el
 (push (purecopy '(image-dired 0 4 11)) package--builtin-versions)
 
@@ -15148,8 +15172,8 @@ easy-to-use form.
 
 ;;;***
 
-;;;### (autoloads nil "image-file" "image-file.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "image-file" "image-file.el" (21604 48550 129934
+;;;;;;  218000))
 ;;; 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")) "\
@@ -15211,8 +15235,8 @@ An image file is one whose name has an extension in
 
 ;;;***
 
-;;;### (autoloads nil "image-mode" "image-mode.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "image-mode" "image-mode.el" (21604 48550 129934
+;;;;;;  218000))
 ;;; Generated autoloads from image-mode.el
 
 (autoload 'image-mode "image-mode" "\
@@ -15259,7 +15283,7 @@ on these modes.
 
 ;;;***
 
-;;;### (autoloads nil "imenu" "imenu.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "imenu" "imenu.el" (21604 48550 133934 219000))
 ;;; Generated autoloads from imenu.el
 
 (defvar imenu-sort-function nil "\
@@ -15397,8 +15421,8 @@ for more information.
 
 ;;;***
 
-;;;### (autoloads nil "ind-util" "language/ind-util.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "ind-util" "language/ind-util.el" (21604 48550
+;;;;;;  153934 219000))
 ;;; Generated autoloads from language/ind-util.el
 
 (autoload 'indian-compose-region "ind-util" "\
@@ -15428,8 +15452,8 @@ Convert old Emacs Devanagari characters to UCS.
 
 ;;;***
 
-;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21604 48550
+;;;;;;  345934 227000))
 ;;; Generated autoloads from progmodes/inf-lisp.el
 
 (autoload 'inferior-lisp "inf-lisp" "\
@@ -15447,7 +15471,7 @@ of `inferior-lisp-program').  Runs the hooks from
 
 ;;;***
 
-;;;### (autoloads nil "info" "info.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "info" "info.el" (21640 32530 970334 457000))
 ;;; 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 
[...]
@@ -15657,8 +15681,8 @@ Otherwise, visit the manual in a new Info buffer.
 
 ;;;***
 
-;;;### (autoloads nil "info-look" "info-look.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "info-look" "info-look.el" (21604 48550 133934
+;;;;;;  219000))
 ;;; Generated autoloads from info-look.el
 
 (autoload 'info-lookup-reset "info-look" "\
@@ -15705,8 +15729,8 @@ Perform completion on file preceding point.
 
 ;;;***
 
-;;;### (autoloads nil "info-xref" "info-xref.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "info-xref" "info-xref.el" (21604 48550 133934
+;;;;;;  219000))
 ;;; Generated autoloads from info-xref.el
 (push (purecopy '(info-xref 3)) package--builtin-versions)
 
@@ -15789,8 +15813,8 @@ the sources handy.
 
 ;;;***
 
-;;;### (autoloads nil "informat" "informat.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "informat" "informat.el" (21604 48550 133934
+;;;;;;  219000))
 ;;; Generated autoloads from informat.el
 
 (autoload 'Info-tagify "informat" "\
@@ -15835,8 +15859,8 @@ For example, invoke \"emacs -batch -f 
batch-info-validate $info/ ~/*.info\"
 
 ;;;***
 
-;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21628 43483
-;;;;;;  380149 771000))
+;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21631 35966
+;;;;;;  827121 867000))
 ;;; Generated autoloads from emacs-lisp/inline.el
 
 (autoload 'define-inline "inline" "\
@@ -15850,8 +15874,8 @@ For example, invoke \"emacs -batch -f 
batch-info-validate $info/ ~/*.info\"
 
 ;;;***
 
-;;;### (autoloads nil "inversion" "cedet/inversion.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "inversion" "cedet/inversion.el" (21604 48549
+;;;;;;  965934 212000))
 ;;; Generated autoloads from cedet/inversion.el
 (push (purecopy '(inversion 1 3)) package--builtin-versions)
 
@@ -15863,8 +15887,8 @@ Only checks one based on which kind of Emacs is being 
run.
 
 ;;;***
 
-;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21604
+;;;;;;  48550 137934 219000))
 ;;; Generated autoloads from international/isearch-x.el
 
 (autoload 'isearch-toggle-specified-input-method "isearch-x" "\
@@ -15884,8 +15908,8 @@ Toggle input method in interactive search.
 
 ;;;***
 
-;;;### (autoloads nil "isearchb" "isearchb.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "isearchb" "isearchb.el" (21604 48550 145934
+;;;;;;  219000))
 ;;; Generated autoloads from isearchb.el
 (push (purecopy '(isearchb 1 5)) package--builtin-versions)
 
@@ -15899,8 +15923,8 @@ accessed via isearchb.
 
 ;;;***
 
-;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21604
+;;;;;;  48550 137934 219000))
 ;;; Generated autoloads from international/iso-cvt.el
 
 (autoload 'iso-spanish "iso-cvt" "\
@@ -15991,15 +16015,15 @@ Add submenus to the File menu, to convert to and from 
various formats.
 ;;;***
 
 ;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;;  (21607 54478 300138 641000))
+;;;;;;  (21604 48550 137934 219000))
 ;;; 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" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21659 61733
+;;;;;;  226949 164000))
 ;;; Generated autoloads from textmodes/ispell.el
 
 (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t 
exclusive))))
@@ -16232,8 +16256,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" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "japan-util" "language/japan-util.el" (21604
+;;;;;;  48550 153934 219000))
 ;;; Generated autoloads from language/japan-util.el
 
 (autoload 'setup-japanese-environment-internal "japan-util" "\
@@ -16310,8 +16334,8 @@ If non-nil, second arg INITIAL-INPUT is a string to 
insert before reading.
 
 ;;;***
 
-;;;### (autoloads nil "jka-compr" "jka-compr.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "jka-compr" "jka-compr.el" (21604 48550 145934
+;;;;;;  219000))
 ;;; Generated autoloads from jka-compr.el
 
 (defvar jka-compr-inhibit nil "\
@@ -16334,7 +16358,8 @@ by `jka-compr-installed'.
 
 ;;;***
 
-;;;### (autoloads nil "js" "progmodes/js.el" (21623 2108 292281 129000))
+;;;### (autoloads nil "js" "progmodes/js.el" (21659 61733 222949
+;;;;;;  164000))
 ;;; Generated autoloads from progmodes/js.el
 (push (purecopy '(js 9)) package--builtin-versions)
 
@@ -16348,14 +16373,14 @@ Major mode for editing JavaScript.
 
 ;;;***
 
-;;;### (autoloads nil "json" "json.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "json" "json.el" (21604 48550 145934 219000))
 ;;; Generated autoloads from json.el
 (push (purecopy '(json 1 4)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "keypad" "emulation/keypad.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "keypad" "emulation/keypad.el" (21604 48550
+;;;;;;  29934 215000))
 ;;; Generated autoloads from emulation/keypad.el
 
 (defvar keypad-setup nil "\
@@ -16410,8 +16435,8 @@ the decimal key on the keypad is mapped to DECIMAL 
instead of `.'
 
 ;;;***
 
-;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21604
+;;;;;;  48550 137934 219000))
 ;;; Generated autoloads from international/kinsoku.el
 
 (autoload 'kinsoku "kinsoku" "\
@@ -16432,8 +16457,8 @@ the context of text formatting.
 
 ;;;***
 
-;;;### (autoloads nil "kkc" "international/kkc.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "kkc" "international/kkc.el" (21604 48550 137934
+;;;;;;  219000))
 ;;; Generated autoloads from international/kkc.el
 
 (defvar kkc-after-update-conversion-functions nil "\
@@ -16455,7 +16480,7 @@ and the return value is the length of the conversion.
 
 ;;;***
 
-;;;### (autoloads nil "kmacro" "kmacro.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "kmacro" "kmacro.el" (21604 48550 145934 219000))
 ;;; Generated autoloads from kmacro.el
  (global-set-key "\C-x(" 'kmacro-start-macro)
  (global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16567,8 +16592,8 @@ If kbd macro currently being defined end it before 
activating it.
 
 ;;;***
 
-;;;### (autoloads nil "korea-util" "language/korea-util.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "korea-util" "language/korea-util.el" (21604
+;;;;;;  48550 153934 219000))
 ;;; Generated autoloads from language/korea-util.el
 
 (defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv 
"HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
@@ -16582,8 +16607,8 @@ The kind of Korean keyboard for Korean input method.
 
 ;;;***
 
-;;;### (autoloads nil "landmark" "play/landmark.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "landmark" "play/landmark.el" (21604 48550
+;;;;;;  305934 225000))
 ;;; Generated autoloads from play/landmark.el
 (push (purecopy '(landmark 1 0)) package--builtin-versions)
 
@@ -16614,8 +16639,8 @@ Use \\[describe-mode] for more info.
 
 ;;;***
 
-;;;### (autoloads nil "lao-util" "language/lao-util.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "lao-util" "language/lao-util.el" (21604 48550
+;;;;;;  153934 219000))
 ;;; Generated autoloads from language/lao-util.el
 
 (autoload 'lao-compose-string "lao-util" "\
@@ -16652,8 +16677,8 @@ Transcribe Romanized Lao string STR to Lao character 
string.
 
 ;;;***
 
-;;;### (autoloads nil "latexenc" "international/latexenc.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "latexenc" "international/latexenc.el" (21604
+;;;;;;  48550 137934 219000))
 ;;; 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" .  [...]
@@ -16685,7 +16710,7 @@ coding system names is determined from 
`latex-inputenc-coding-alist'.
 ;;;***
 
 ;;;### (autoloads nil "latin1-disp" "international/latin1-disp.el"
-;;;;;;  (21607 54478 300138 641000))
+;;;;;;  (21604 48550 137934 219000))
 ;;; Generated autoloads from international/latin1-disp.el
 
 (defvar latin1-display nil "\
@@ -16726,8 +16751,8 @@ use either \\[customize] or the function 
`latin1-display'.")
 
 ;;;***
 
-;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21604
+;;;;;;  48550 345934 227000))
 ;;; Generated autoloads from progmodes/ld-script.el
 
 (autoload 'ld-script-mode "ld-script" "\
@@ -16737,7 +16762,47 @@ A major mode to edit GNU ld script files
 
 ;;;***
 
-;;;### (autoloads nil "life" "play/life.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "let-alist" "let-alist.el" (21659 61733 206949
+;;;;;;  164000))
+;;; Generated autoloads from let-alist.el
+(push (purecopy '(let-alist 1 0 3)) package--builtin-versions)
+
+(autoload 'let-alist "let-alist" "\
+Let-bind dotted symbols to their cdrs in ALIST and execute BODY.
+Dotted symbol is any symbol starting with a `.'.  Only those present
+in BODY are let-bound and this search is done at compile time.
+
+For instance, the following code
+
+  (let-alist alist
+    (if (and .title .body)
+        .body
+      .site
+      .site.contents))
+
+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))))))
+    (if (and .title .body)
+        .body
+      .site
+      .site.contents))
+
+If you nest `let-alist' invocations, the inner one can't access
+the variables of the outer one. You can, however, access alists
+inside the original alist by using dots inside the symbol, as
+displayed in the example above.
+
+\(fn ALIST &rest BODY)" nil t)
+
+(function-put 'let-alist 'lisp-indent-function '1)
+
+;;;***
+
+;;;### (autoloads nil "life" "play/life.el" (21604 48550 305934 225000))
 ;;; Generated autoloads from play/life.el
 
 (autoload 'life "life" "\
@@ -16750,7 +16815,7 @@ generations (this defaults to 1).
 
 ;;;***
 
-;;;### (autoloads nil "linum" "linum.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "linum" "linum.el" (21651 20707 180225 752000))
 ;;; Generated autoloads from linum.el
 (push (purecopy '(linum 0 9 24)) package--builtin-versions)
 
@@ -16787,8 +16852,8 @@ See `linum-mode' for more information on Linum mode.
 
 ;;;***
 
-;;;### (autoloads nil "loadhist" "loadhist.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "loadhist" "loadhist.el" (21604 48550 177934
+;;;;;;  220000))
 ;;; Generated autoloads from loadhist.el
 
 (autoload 'unload-feature "loadhist" "\
@@ -16819,7 +16884,7 @@ something strange, such as redefining an Emacs function.
 
 ;;;***
 
-;;;### (autoloads nil "locate" "locate.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "locate" "locate.el" (21604 48550 177934 220000))
 ;;; Generated autoloads from locate.el
 
 (defvar locate-ls-subdir-switches (purecopy "-al") "\
@@ -16871,8 +16936,8 @@ except that FILTER is not optional.
 
 ;;;***
 
-;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21604 48550 429934
+;;;;;;  230000))
 ;;; Generated autoloads from vc/log-edit.el
 
 (autoload 'log-edit "log-edit" "\
@@ -16903,8 +16968,8 @@ done.  Otherwise, it uses the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "log-view" "vc/log-view.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "log-view" "vc/log-view.el" (21604 48550 429934
+;;;;;;  230000))
 ;;; Generated autoloads from vc/log-view.el
 
 (autoload 'log-view-mode "log-view" "\
@@ -16914,7 +16979,7 @@ Major mode for browsing CVS log output.
 
 ;;;***
 
-;;;### (autoloads nil "lpr" "lpr.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "lpr" "lpr.el" (21604 48550 181934 220000))
 ;;; Generated autoloads from lpr.el
 
 (defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\
@@ -17009,8 +17074,8 @@ for further customization of the printer command.
 
 ;;;***
 
-;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21604 48550 181934
+;;;;;;  220000))
 ;;; Generated autoloads from ls-lisp.el
 
 (defvar ls-lisp-support-shell-wildcards t "\
@@ -17021,8 +17086,8 @@ Otherwise they are treated as Emacs regexps (for 
backward compatibility).")
 
 ;;;***
 
-;;;### (autoloads nil "lunar" "calendar/lunar.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "lunar" "calendar/lunar.el" (21604 48549 953934
+;;;;;;  212000))
 ;;; Generated autoloads from calendar/lunar.el
 
 (autoload 'lunar-phases "lunar" "\
@@ -17034,8 +17099,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21604 48550
+;;;;;;  345934 227000))
 ;;; Generated autoloads from progmodes/m4-mode.el
 
 (autoload 'm4-mode "m4-mode" "\
@@ -17045,7 +17110,7 @@ A major mode to edit m4 macro files.
 
 ;;;***
 
-;;;### (autoloads nil "macros" "macros.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "macros" "macros.el" (21604 48550 181934 220000))
 ;;; Generated autoloads from macros.el
 
 (autoload 'name-last-kbd-macro "macros" "\
@@ -17134,8 +17199,8 @@ and then select the region of un-tablified names and use
 
 ;;;***
 
-;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21604 48550
+;;;;;;  181934 220000))
 ;;; Generated autoloads from mail/mail-extr.el
 
 (autoload 'mail-extract-address-components "mail-extr" "\
@@ -17165,8 +17230,8 @@ Convert mail domain DOMAIN to the country it 
corresponds to.
 
 ;;;***
 
-;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21604 48550
+;;;;;;  181934 220000))
 ;;; Generated autoloads from mail/mail-hist.el
 
 (autoload 'mail-hist-define-keys "mail-hist" "\
@@ -17195,8 +17260,8 @@ This function normally would be called when the message 
is sent.
 
 ;;;***
 
-;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21604 48550
+;;;;;;  181934 220000))
 ;;; Generated autoloads from mail/mail-utils.el
 
 (defvar mail-use-rfc822 nil "\
@@ -17270,8 +17335,8 @@ matches may be returned from the message body.
 
 ;;;***
 
-;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21604 48550
+;;;;;;  181934 220000))
 ;;; Generated autoloads from mail/mailabbrev.el
 
 (defvar mail-abbrevs-mode nil "\
@@ -17320,8 +17385,8 @@ double-quotes.
 
 ;;;***
 
-;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21604 48550
+;;;;;;  185934 221000))
 ;;; Generated autoloads from mail/mailalias.el
 
 (defvar mail-complete-style 'angles "\
@@ -17374,8 +17439,8 @@ current header, calls `mail-complete-function' and 
passes prefix ARG if any.
 
 ;;;***
 
-;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21604 48550
+;;;;;;  185934 221000))
 ;;; Generated autoloads from mail/mailclient.el
 
 (autoload 'mailclient-send-it "mailclient" "\
@@ -17387,8 +17452,8 @@ The mail client is taken to be the handler of mailto 
URLs.
 
 ;;;***
 
-;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21604
+;;;;;;  48550 349934 227000))
 ;;; Generated autoloads from progmodes/make-mode.el
 
 (autoload 'makefile-mode "make-mode" "\
@@ -17505,8 +17570,8 @@ An adapted `makefile-mode' that knows about imake.
 
 ;;;***
 
-;;;### (autoloads nil "makesum" "makesum.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "makesum" "makesum.el" (21604 48550 189934
+;;;;;;  221000))
 ;;; Generated autoloads from makesum.el
 
 (autoload 'make-command-summary "makesum" "\
@@ -17517,7 +17582,7 @@ Previous contents of that buffer are killed first.
 
 ;;;***
 
-;;;### (autoloads nil "man" "man.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "man" "man.el" (21604 48550 189934 221000))
 ;;; Generated autoloads from man.el
 
 (defalias 'manual-entry 'man)
@@ -17573,7 +17638,7 @@ Default bookmark handler for Man buffers.
 
 ;;;***
 
-;;;### (autoloads nil "master" "master.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "master" "master.el" (21604 48550 193934 221000))
 ;;; Generated autoloads from master.el
 (push (purecopy '(master 1 0 2)) package--builtin-versions)
 
@@ -17596,8 +17661,8 @@ yourself the value of `master-of' by calling 
`master-show-slave'.
 
 ;;;***
 
-;;;### (autoloads nil "mb-depth" "mb-depth.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "mb-depth" "mb-depth.el" (21604 48550 193934
+;;;;;;  221000))
 ;;; Generated autoloads from mb-depth.el
 
 (defvar minibuffer-depth-indicate-mode nil "\
@@ -17624,14 +17689,14 @@ recursion depth in the minibuffer prompt.  This is 
only useful if
 
 ;;;***
 
-;;;### (autoloads nil "md4" "md4.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "md4" "md4.el" (21604 48550 193934 221000))
 ;;; Generated autoloads from md4.el
 (push (purecopy '(md4 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "message" "gnus/message.el" (21623 2108 292281
-;;;;;;  129000))
+;;;### (autoloads nil "message" "gnus/message.el" (21637 50476 671217
+;;;;;;  121000))
 ;;; 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)
@@ -17796,8 +17861,8 @@ which specify the range to operate on.
 
 ;;;***
 
-;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21604
+;;;;;;  48550 349934 227000))
 ;;; Generated autoloads from progmodes/meta-mode.el
 (push (purecopy '(meta-mode 1 0)) package--builtin-versions)
 
@@ -17813,8 +17878,8 @@ Major mode for editing MetaPost sources.
 
 ;;;***
 
-;;;### (autoloads nil "metamail" "mail/metamail.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "metamail" "mail/metamail.el" (21604 48550
+;;;;;;  185934 221000))
 ;;; Generated autoloads from mail/metamail.el
 
 (autoload 'metamail-interpret-header "metamail" "\
@@ -17857,8 +17922,8 @@ redisplayed as output is inserted.
 
 ;;;***
 
-;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21604 48550 197934
+;;;;;;  221000))
 ;;; Generated autoloads from mh-e/mh-comp.el
 
 (autoload 'mh-smail "mh-comp" "\
@@ -17948,7 +18013,7 @@ delete the draft message.
 
 ;;;***
 
-;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21604 48550 197934 221000))
 ;;; Generated autoloads from mh-e/mh-e.el
 (push (purecopy '(mh-e 8 6)) package--builtin-versions)
 
@@ -17965,8 +18030,8 @@ Display version information about MH-E and the MH mail 
handling system.
 
 ;;;***
 
-;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21604 48550
+;;;;;;  201934 221000))
 ;;; Generated autoloads from mh-e/mh-folder.el
 
 (autoload 'mh-rmail "mh-folder" "\
@@ -18047,8 +18112,8 @@ perform the operation on all messages in that region.
 
 ;;;***
 
-;;;### (autoloads nil "midnight" "midnight.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "midnight" "midnight.el" (21604 48550 205934
+;;;;;;  221000))
 ;;; Generated autoloads from midnight.el
 
 (autoload 'clean-buffer-list "midnight" "\
@@ -18074,8 +18139,8 @@ to its second argument TM.
 
 ;;;***
 
-;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21604 48550
+;;;;;;  205934 221000))
 ;;; Generated autoloads from minibuf-eldef.el
 
 (defvar minibuffer-electric-default-mode nil "\
@@ -18104,7 +18169,7 @@ is modified to remove the default indication.
 
 ;;;***
 
-;;;### (autoloads nil "misc" "misc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "misc" "misc.el" (21604 48550 209934 221000))
 ;;; Generated autoloads from misc.el
 
 (autoload 'butterfly "misc" "\
@@ -18132,8 +18197,8 @@ The return value is always nil.
 
 ;;;***
 
-;;;### (autoloads nil "misearch" "misearch.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "misearch" "misearch.el" (21604 48550 209934
+;;;;;;  221000))
 ;;; Generated autoloads from misearch.el
  (add-hook 'isearch-mode-hook 'multi-isearch-setup)
 
@@ -18218,8 +18283,8 @@ whose file names match the specified wildcard.
 
 ;;;***
 
-;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21604
+;;;;;;  48550 349934 227000))
 ;;; Generated autoloads from progmodes/mixal-mode.el
 (push (purecopy '(mixal-mode 0 1)) package--builtin-versions)
 
@@ -18230,8 +18295,8 @@ Major mode for the mixal asm language.
 
 ;;;***
 
-;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21604 48550
+;;;;;;  105934 218000))
 ;;; Generated autoloads from gnus/mm-encode.el
 
 (autoload 'mm-default-file-encoding "mm-encode" "\
@@ -18241,8 +18306,8 @@ Return a default encoding for FILE.
 
 ;;;***
 
-;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21604 48550
+;;;;;;  105934 218000))
 ;;; Generated autoloads from gnus/mm-extern.el
 
 (autoload 'mm-extern-cache-contents "mm-extern" "\
@@ -18260,8 +18325,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing 
after replacing.
 
 ;;;***
 
-;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21604 48550
+;;;;;;  105934 218000))
 ;;; Generated autoloads from gnus/mm-partial.el
 
 (autoload 'mm-inline-partial "mm-partial" "\
@@ -18274,8 +18339,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing 
after replacing.
 
 ;;;***
 
-;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21604 48550 109934
+;;;;;;  218000))
 ;;; Generated autoloads from gnus/mm-url.el
 
 (autoload 'mm-url-insert-file-contents "mm-url" "\
@@ -18291,8 +18356,8 @@ Insert file contents of URL using `mm-url-program'.
 
 ;;;***
 
-;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21604 48550 109934
+;;;;;;  218000))
 ;;; Generated autoloads from gnus/mm-uu.el
 
 (autoload 'mm-uu-dissect "mm-uu" "\
@@ -18311,7 +18376,7 @@ Assume text has been decoded if DECODED is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "mml" "gnus/mml.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "mml" "gnus/mml.el" (21604 48550 109934 218000))
 ;;; Generated autoloads from gnus/mml.el
 
 (autoload 'mml-to-mime "mml" "\
@@ -18336,8 +18401,8 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21604 48550 109934
+;;;;;;  218000))
 ;;; Generated autoloads from gnus/mml1991.el
 
 (autoload 'mml1991-encrypt "mml1991" "\
@@ -18352,8 +18417,8 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21604 48550 109934
+;;;;;;  218000))
 ;;; Generated autoloads from gnus/mml2015.el
 
 (autoload 'mml2015-decrypt "mml2015" "\
@@ -18393,16 +18458,16 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21604 48549
+;;;;;;  965934 212000))
 ;;; 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" (21604 48550
+;;;;;;  349934 227000))
 ;;; Generated autoloads from progmodes/modula2.el
 
 (defalias 'modula-2-mode 'm2-mode)
@@ -18435,8 +18500,8 @@ followed by the first character of the construct.
 
 ;;;***
 
-;;;### (autoloads nil "morse" "play/morse.el" (21616 28857 81577
-;;;;;;  239000))
+;;;### (autoloads nil "morse" "play/morse.el" (21631 35966 895121
+;;;;;;  869000))
 ;;; Generated autoloads from play/morse.el
 
 (autoload 'morse-region "morse" "\
@@ -18461,8 +18526,8 @@ Convert NATO phonetic alphabet in region to ordinary 
ASCII text.
 
 ;;;***
 
-;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21604 48550 209934
+;;;;;;  221000))
 ;;; Generated autoloads from mouse-drag.el
 
 (autoload 'mouse-drag-throw "mouse-drag" "\
@@ -18509,7 +18574,7 @@ To test this function, evaluate:
 
 ;;;***
 
-;;;### (autoloads nil "mpc" "mpc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "mpc" "mpc.el" (21604 48550 209934 221000))
 ;;; Generated autoloads from mpc.el
 
 (autoload 'mpc "mpc" "\
@@ -18519,7 +18584,7 @@ Main entry point for MPC.
 
 ;;;***
 
-;;;### (autoloads nil "mpuz" "play/mpuz.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "mpuz" "play/mpuz.el" (21604 48550 305934 225000))
 ;;; Generated autoloads from play/mpuz.el
 
 (autoload 'mpuz "mpuz" "\
@@ -18529,7 +18594,7 @@ Multiplication puzzle with GNU Emacs.
 
 ;;;***
 
-;;;### (autoloads nil "msb" "msb.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "msb" "msb.el" (21604 48550 209934 221000))
 ;;; Generated autoloads from msb.el
 
 (defvar msb-mode nil "\
@@ -18554,8 +18619,8 @@ different buffer menu using the function `msb'.
 
 ;;;***
 
-;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21651
+;;;;;;  20707 180225 752000))
 ;;; Generated autoloads from international/mule-diag.el
 
 (autoload 'list-character-sets "mule-diag" "\
@@ -18687,8 +18752,8 @@ The default is 20.  If LIMIT is negative, do not limit 
the listing.
 
 ;;;***
 
-;;;### (autoloads nil "mule-util" "international/mule-util.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "mule-util" "international/mule-util.el" (21604
+;;;;;;  48550 141934 219000))
 ;;; Generated autoloads from international/mule-util.el
 
 (defsubst string-to-list (string) "\
@@ -18819,8 +18884,8 @@ per-character basis, this may not be accurate.
 
 ;;;***
 
-;;;### (autoloads nil "net-utils" "net/net-utils.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "net-utils" "net/net-utils.el" (21604 48550
+;;;;;;  217934 222000))
 ;;; Generated autoloads from net/net-utils.el
 
 (autoload 'ifconfig "net-utils" "\
@@ -18914,8 +18979,8 @@ Open a network connection to HOST on PORT.
 
 ;;;***
 
-;;;### (autoloads nil "netrc" "net/netrc.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "netrc" "net/netrc.el" (21604 48550 217934
+;;;;;;  222000))
 ;;; Generated autoloads from net/netrc.el
 
 (autoload 'netrc-credentials "netrc" "\
@@ -18927,8 +18992,8 @@ listed in the PORTS list.
 
 ;;;***
 
-;;;### (autoloads nil "network-stream" "net/network-stream.el" (21619
-;;;;;;  5051 260148 536000))
+;;;### (autoloads nil "network-stream" "net/network-stream.el" (21645
+;;;;;;  25761 793186 828000))
 ;;; Generated autoloads from net/network-stream.el
 
 (autoload 'open-network-stream "network-stream" "\
@@ -19024,8 +19089,8 @@ asynchronously, if possible.
 
 ;;;***
 
-;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21628
-;;;;;;  45530 160140 360000))
+;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21631
+;;;;;;  35966 879121 869000))
 ;;; Generated autoloads from net/newst-backend.el
 
 (autoload 'newsticker-running-p "newst-backend" "\
@@ -19047,7 +19112,7 @@ Run `newsticker-start-hook' if newsticker was not 
running already.
 ;;;***
 
 ;;;### (autoloads nil "newst-plainview" "net/newst-plainview.el"
-;;;;;;  (21607 54478 300138 641000))
+;;;;;;  (21604 48550 217934 222000))
 ;;; Generated autoloads from net/newst-plainview.el
 
 (autoload 'newsticker-plainview "newst-plainview" "\
@@ -19057,8 +19122,8 @@ Start newsticker plainview.
 
 ;;;***
 
-;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21604
+;;;;;;  48550 217934 222000))
 ;;; Generated autoloads from net/newst-reader.el
 
 (autoload 'newsticker-show-news "newst-reader" "\
@@ -19068,8 +19133,8 @@ Start reading news.  You may want to bind this to a key.
 
 ;;;***
 
-;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21604
+;;;;;;  48550 221934 222000))
 ;;; Generated autoloads from net/newst-ticker.el
 
 (autoload 'newsticker-ticker-running-p "newst-ticker" "\
@@ -19089,8 +19154,8 @@ running already.
 
 ;;;***
 
-;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21628
-;;;;;;  45530 160140 360000))
+;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21637
+;;;;;;  50476 675217 121000))
 ;;; Generated autoloads from net/newst-treeview.el
 
 (autoload 'newsticker-treeview "newst-treeview" "\
@@ -19100,8 +19165,8 @@ Start newsticker treeview.
 
 ;;;***
 
-;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21604 48550 109934
+;;;;;;  218000))
 ;;; Generated autoloads from gnus/nndiary.el
 
 (autoload 'nndiary-generate-nov-databases "nndiary" "\
@@ -19111,8 +19176,8 @@ Generate NOV databases in all nndiary directories.
 
 ;;;***
 
-;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21604 48550 109934
+;;;;;;  218000))
 ;;; Generated autoloads from gnus/nndoc.el
 
 (autoload 'nndoc-add-type "nndoc" "\
@@ -19126,8 +19191,8 @@ symbol in the alist.
 
 ;;;***
 
-;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21604 48550
+;;;;;;  113934 218000))
 ;;; Generated autoloads from gnus/nnfolder.el
 
 (autoload 'nnfolder-generate-active-file "nnfolder" "\
@@ -19138,7 +19203,7 @@ This command does not work if you use short group names.
 
 ;;;***
 
-;;;### (autoloads nil "nnml" "gnus/nnml.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "nnml" "gnus/nnml.el" (21604 48550 117934 218000))
 ;;; Generated autoloads from gnus/nnml.el
 
 (autoload 'nnml-generate-nov-databases "nnml" "\
@@ -19148,7 +19213,7 @@ Generate NOV databases in all nnml directories.
 
 ;;;***
 
-;;;### (autoloads nil "novice" "novice.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "novice" "novice.el" (21604 48550 237934 223000))
 ;;; Generated autoloads from novice.el
 
 (define-obsolete-variable-alias 'disabled-command-hook 
'disabled-command-function "22.1")
@@ -19180,8 +19245,8 @@ future sessions.
 
 ;;;***
 
-;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21604
+;;;;;;  48550 397934 228000))
 ;;; Generated autoloads from textmodes/nroff-mode.el
 
 (autoload 'nroff-mode "nroff-mode" "\
@@ -19195,14 +19260,14 @@ closing requests for requests that are used in 
matched pairs.
 
 ;;;***
 
-;;;### (autoloads nil "ntlm" "net/ntlm.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "ntlm" "net/ntlm.el" (21604 48550 221934 222000))
 ;;; Generated autoloads from net/ntlm.el
 (push (purecopy '(ntlm 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21604 48550
+;;;;;;  237934 223000))
 ;;; Generated autoloads from nxml/nxml-glyph.el
 
 (autoload 'nxml-glyph-display-string "nxml-glyph" "\
@@ -19214,8 +19279,8 @@ Return nil if the face cannot display a glyph for N.
 
 ;;;***
 
-;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21611 10937
-;;;;;;  700236 3000))
+;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21631 35966
+;;;;;;  887121 869000))
 ;;; Generated autoloads from nxml/nxml-mode.el
 
 (autoload 'nxml-mode "nxml-mode" "\
@@ -19275,8 +19340,8 @@ Many aspects this mode can be customized using
 
 ;;;***
 
-;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21604 48550
+;;;;;;  237934 223000))
 ;;; Generated autoloads from nxml/nxml-uchnm.el
 
 (autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\
@@ -19288,8 +19353,8 @@ the variable `nxml-enabled-unicode-blocks'.
 
 ;;;***
 
-;;;### (autoloads nil "octave" "progmodes/octave.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "octave" "progmodes/octave.el" (21631 35966
+;;;;;;  907121 870000))
 ;;; Generated autoloads from progmodes/octave.el
 
 (autoload 'octave-mode "octave" "\
@@ -19326,8 +19391,8 @@ startup file, `~/.emacs-octave'.
 
 ;;;***
 
-;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21604 48550
+;;;;;;  349934 227000))
 ;;; Generated autoloads from progmodes/opascal.el
 
 (define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4")
@@ -19362,7 +19427,7 @@ Coloring:
 
 ;;;***
 
-;;;### (autoloads nil "org" "org/org.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "org" "org/org.el" (21645 25761 805186 828000))
 ;;; Generated autoloads from org/org.el
 
 (autoload 'org-babel-do-load-languages "org" "\
@@ -19583,8 +19648,8 @@ Call the customize function with org as argument.
 
 ;;;***
 
-;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21604 48550
+;;;;;;  269934 224000))
 ;;; Generated autoloads from org/org-agenda.el
 
 (autoload 'org-toggle-sticky-agenda "org-agenda" "\
@@ -19857,8 +19922,8 @@ to override `appt-message-warning-time'.
 
 ;;;***
 
-;;;### (autoloads nil "org-capture" "org/org-capture.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "org-capture" "org/org-capture.el" (21604 48550
+;;;;;;  273934 224000))
 ;;; Generated autoloads from org/org-capture.el
 
 (autoload 'org-capture-string "org-capture" "\
@@ -19900,8 +19965,8 @@ Set `org-capture-templates' to be similar to 
`org-remember-templates'.
 
 ;;;***
 
-;;;### (autoloads nil "org-colview" "org/org-colview.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "org-colview" "org/org-colview.el" (21604 48550
+;;;;;;  273934 224000))
 ;;; Generated autoloads from org/org-colview.el
 
 (autoload 'org-columns-remove-overlays "org-colview" "\
@@ -19964,8 +20029,8 @@ Turn on or update column view in the agenda.
 
 ;;;***
 
-;;;### (autoloads nil "org-compat" "org/org-compat.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "org-compat" "org/org-compat.el" (21604 48550
+;;;;;;  273934 224000))
 ;;; Generated autoloads from org/org-compat.el
 
 (autoload 'org-check-version "org-compat" "\
@@ -19975,8 +20040,8 @@ Try very hard to provide sensible version strings.
 
 ;;;***
 
-;;;### (autoloads nil "org-macs" "org/org-macs.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "org-macs" "org/org-macs.el" (21604 48550 277934
+;;;;;;  224000))
 ;;; Generated autoloads from org/org-macs.el
 
 (autoload 'org-load-noerror-mustsuffix "org-macs" "\
@@ -19986,8 +20051,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" (21604 48550
+;;;;;;  281934 224000))
 ;;; Generated autoloads from org/org-version.el
 
 (autoload 'org-release "org-version" "\
@@ -20004,8 +20069,8 @@ The Git version of org-mode.
 
 ;;;***
 
-;;;### (autoloads nil "outline" "outline.el" (21626 64704 823711
-;;;;;;  579000))
+;;;### (autoloads nil "outline" "outline.el" (21631 35966 895121
+;;;;;;  869000))
 ;;; Generated autoloads from outline.el
 (put 'outline-regexp 'safe-local-variable 'stringp)
 (put 'outline-heading-end-regexp 'safe-local-variable 'stringp)
@@ -20066,8 +20131,8 @@ See the command `outline-mode' for more information on 
this mode.
 
 ;;;***
 
-;;;### (autoloads nil "package" "emacs-lisp/package.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "package" "emacs-lisp/package.el" (21651 20707
+;;;;;;  168225 752000))
 ;;; Generated autoloads from emacs-lisp/package.el
 (push (purecopy '(package 1 0 1)) package--builtin-versions)
 
@@ -20139,7 +20204,7 @@ The list is displayed in a buffer named `*Packages*'.
 
 ;;;***
 
-;;;### (autoloads nil "paren" "paren.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "paren" "paren.el" (21604 48550 301934 225000))
 ;;; Generated autoloads from paren.el
 
 (defvar show-paren-mode nil "\
@@ -20165,8 +20230,8 @@ matching parenthesis is highlighted in 
`show-paren-style' after
 
 ;;;***
 
-;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21604
+;;;;;;  48549 953934 212000))
 ;;; Generated autoloads from calendar/parse-time.el
 (put 'parse-time-rules 'risky-local-variable t)
 
@@ -20179,8 +20244,8 @@ unknown are returned as nil.
 
 ;;;***
 
-;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21604 48550
+;;;;;;  349934 227000))
 ;;; Generated autoloads from progmodes/pascal.el
 
 (autoload 'pascal-mode "pascal" "\
@@ -20229,8 +20294,8 @@ See also the user variables `pascal-type-keywords', 
`pascal-start-keywords' and
 
 ;;;***
 
-;;;### (autoloads nil "password-cache" "password-cache.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "password-cache" "password-cache.el" (21604
+;;;;;;  48550 301934 225000))
 ;;; Generated autoloads from password-cache.el
 
 (defvar password-cache t "\
@@ -20251,8 +20316,8 @@ Check if KEY is in the cache.
 
 ;;;***
 
-;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21604 48550
+;;;;;;  21934 214000))
 ;;; Generated autoloads from emacs-lisp/pcase.el
 
 (autoload 'pcase "pcase" "\
@@ -20334,8 +20399,8 @@ Define a pcase UPattern macro.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21604 48550 301934
+;;;;;;  225000))
 ;;; Generated autoloads from pcmpl-cvs.el
 
 (autoload 'pcomplete/cvs "pcmpl-cvs" "\
@@ -20345,8 +20410,8 @@ Completion rules for the `cvs' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21631 35966 895121
+;;;;;;  869000))
 ;;; Generated autoloads from pcmpl-gnu.el
 
 (autoload 'pcomplete/gzip "pcmpl-gnu" "\
@@ -20373,8 +20438,8 @@ Completion for the GNU tar utility.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21604 48550
+;;;;;;  301934 225000))
 ;;; Generated autoloads from pcmpl-linux.el
 
 (autoload 'pcomplete/kill "pcmpl-linux" "\
@@ -20394,8 +20459,8 @@ Completion for GNU/Linux `mount'.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21604 48550 301934
+;;;;;;  225000))
 ;;; Generated autoloads from pcmpl-rpm.el
 
 (autoload 'pcomplete/rpm "pcmpl-rpm" "\
@@ -20405,8 +20470,8 @@ Completion for the `rpm' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21604 48550 301934
+;;;;;;  225000))
 ;;; Generated autoloads from pcmpl-unix.el
 
 (autoload 'pcomplete/cd "pcmpl-unix" "\
@@ -20461,8 +20526,8 @@ Includes files as well as host names followed by a 
colon.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21604 48550 301934
+;;;;;;  225000))
 ;;; Generated autoloads from pcmpl-x.el
 
 (autoload 'pcomplete/tlmgr "pcmpl-x" "\
@@ -20486,8 +20551,8 @@ Completion for the `ag' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcomplete" "pcomplete.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "pcomplete" "pcomplete.el" (21604 48550 301934
+;;;;;;  225000))
 ;;; Generated autoloads from pcomplete.el
 
 (autoload 'pcomplete "pcomplete" "\
@@ -20544,7 +20609,7 @@ Setup `shell-mode' to use pcomplete.
 
 ;;;***
 
-;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21604 48550 429934 230000))
 ;;; Generated autoloads from vc/pcvs.el
 
 (autoload 'cvs-checkout "pcvs" "\
@@ -20619,8 +20684,8 @@ The exact behavior is determined also by 
`cvs-dired-use-hook'." (when (stringp d
 
 ;;;***
 
-;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21604 48550
+;;;;;;  429934 230000))
 ;;; 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 [...]
@@ -20628,8 +20693,8 @@ Global menu used by PCL-CVS.")
 
 ;;;***
 
-;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21604
+;;;;;;  48550 353934 227000))
 ;;; Generated autoloads from progmodes/perl-mode.el
 (put 'perl-indent-level 'safe-local-variable 'integerp)
 (put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -20690,8 +20755,8 @@ Turning on Perl mode runs the normal hook 
`perl-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "picture" "textmodes/picture.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "picture" "textmodes/picture.el" (21604 48550
+;;;;;;  397934 228000))
 ;;; Generated autoloads from textmodes/picture.el
 
 (autoload 'picture-mode "picture" "\
@@ -20771,8 +20836,8 @@ they are not by default assigned to keys.
 
 ;;;***
 
-;;;### (autoloads nil "plstore" "gnus/plstore.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "plstore" "gnus/plstore.el" (21604 48550 117934
+;;;;;;  218000))
 ;;; Generated autoloads from gnus/plstore.el
 
 (autoload 'plstore-open "plstore" "\
@@ -20787,8 +20852,8 @@ Major mode for editing PLSTORE files.
 
 ;;;***
 
-;;;### (autoloads nil "po" "textmodes/po.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "po" "textmodes/po.el" (21604 48550 397934
+;;;;;;  228000))
 ;;; Generated autoloads from textmodes/po.el
 
 (autoload 'po-find-file-coding-system "po" "\
@@ -20799,7 +20864,7 @@ Called through `file-coding-system-alist', before the 
file is visited for real.
 
 ;;;***
 
-;;;### (autoloads nil "pong" "play/pong.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "pong" "play/pong.el" (21604 48550 305934 225000))
 ;;; Generated autoloads from play/pong.el
 
 (autoload 'pong "pong" "\
@@ -20815,7 +20880,7 @@ pong-mode keybindings:\\<pong-mode-map>
 
 ;;;***
 
-;;;### (autoloads nil "pop3" "gnus/pop3.el" (21619 5051 260148 536000))
+;;;### (autoloads nil "pop3" "gnus/pop3.el" (21631 35966 859121 868000))
 ;;; Generated autoloads from gnus/pop3.el
 
 (autoload 'pop3-movemail "pop3" "\
@@ -20826,8 +20891,8 @@ Use streaming commands.
 
 ;;;***
 
-;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21604 48550 21934
+;;;;;;  214000))
 ;;; Generated autoloads from emacs-lisp/pp.el
 
 (autoload 'pp-to-string "pp" "\
@@ -20877,8 +20942,8 @@ Ignores leading comment characters.
 
 ;;;***
 
-;;;### (autoloads nil "printing" "printing.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "printing" "printing.el" (21604 48550 309934
+;;;;;;  225000))
 ;;; Generated autoloads from printing.el
 (push (purecopy '(printing 6 9 3)) package--builtin-versions)
 
@@ -21466,7 +21531,7 @@ are both set to t.
 
 ;;;***
 
-;;;### (autoloads nil "proced" "proced.el" (21609 55608 852266 580000))
+;;;### (autoloads nil "proced" "proced.el" (21631 35966 895121 869000))
 ;;; Generated autoloads from proced.el
 
 (autoload 'proced "proced" "\
@@ -21484,8 +21549,8 @@ Proced buffers.
 
 ;;;***
 
-;;;### (autoloads nil "profiler" "profiler.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "profiler" "profiler.el" (21604 48550 309934
+;;;;;;  225000))
 ;;; Generated autoloads from profiler.el
 
 (autoload 'profiler-start "profiler" "\
@@ -21513,8 +21578,8 @@ Open profile FILENAME.
 
 ;;;***
 
-;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21604 48550
+;;;;;;  353934 227000))
 ;;; Generated autoloads from progmodes/prolog.el
 
 (autoload 'prolog-mode "prolog" "\
@@ -21547,7 +21612,7 @@ With prefix argument ARG, restart the Prolog process if 
running before.
 
 ;;;***
 
-;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21604 48550 369934 227000))
 ;;; 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")) "\
@@ -21558,8 +21623,8 @@ The default value is 
'(\"/usr/local/share/emacs/fonts/bdf\").")
 
 ;;;***
 
-;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21604 48550
+;;;;;;  353934 227000))
 ;;; Generated autoloads from progmodes/ps-mode.el
 (push (purecopy '(ps-mode 1 1 9)) package--builtin-versions)
 
@@ -21605,8 +21670,8 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when 
the cursor is at the number
 
 ;;;***
 
-;;;### (autoloads nil "ps-print" "ps-print.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "ps-print" "ps-print.el" (21604 48550 369934
+;;;;;;  227000))
 ;;; Generated autoloads from ps-print.el
 (push (purecopy '(ps-print 7 3 5)) package--builtin-versions)
 
@@ -21803,15 +21868,15 @@ If EXTENSION is any other symbol, it is ignored.
 
 ;;;***
 
-;;;### (autoloads nil "pulse" "cedet/pulse.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "pulse" "cedet/pulse.el" (21640 32530 958334
+;;;;;;  457000))
 ;;; Generated autoloads from cedet/pulse.el
 (push (purecopy '(pulse 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "python" "progmodes/python.el" (21625 43838
-;;;;;;  980113 968000))
+;;;### (autoloads nil "python" "progmodes/python.el" (21645 25761
+;;;;;;  809186 828000))
 ;;; Generated autoloads from progmodes/python.el
 (push (purecopy '(python 0 24 4)) package--builtin-versions)
 
@@ -21846,7 +21911,7 @@ Major mode for editing Python files.
 
 ;;;***
 
-;;;### (autoloads nil "qp" "gnus/qp.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "qp" "gnus/qp.el" (21604 48550 117934 218000))
 ;;; Generated autoloads from gnus/qp.el
 
 (autoload 'quoted-printable-decode-region "qp" "\
@@ -21865,8 +21930,8 @@ them into characters should be done separately.
 
 ;;;***
 
-;;;### (autoloads nil "quail" "international/quail.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "quail" "international/quail.el" (21604 48550
+;;;;;;  141934 219000))
 ;;; Generated autoloads from international/quail.el
 
 (autoload 'quail-title "quail" "\
@@ -22096,8 +22161,8 @@ of each directory.
 
 ;;;***
 
-;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (21604
+;;;;;;  48550 173934 220000))
 ;;; Generated autoloads from leim/quail/hangul.el
 
 (autoload 'hangul-input-method-activate "quail/hangul" "\
@@ -22110,7 +22175,7 @@ HELP-TEXT is a text set in 
`hangul-input-method-help-text'.
 ;;;***
 
 ;;;### (autoloads nil "quail/uni-input" "leim/quail/uni-input.el"
-;;;;;;  (21607 54478 300138 641000))
+;;;;;;  (21604 48550 177934 220000))
 ;;; Generated autoloads from leim/quail/uni-input.el
 
 (autoload 'ucs-input-activate "quail/uni-input" "\
@@ -22124,8 +22189,8 @@ While this input method is active, the variable
 
 ;;;***
 
-;;;### (autoloads nil "quickurl" "net/quickurl.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "quickurl" "net/quickurl.el" (21604 48550 221934
+;;;;;;  222000))
 ;;; 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" "\
@@ -22196,8 +22261,8 @@ Display `quickurl-list' as a formatted list using 
`quickurl-list-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "rcirc" "net/rcirc.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "rcirc" "net/rcirc.el" (21604 48550 221934
+;;;;;;  222000))
 ;;; Generated autoloads from net/rcirc.el
 
 (autoload 'rcirc "rcirc" "\
@@ -22235,8 +22300,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21604
+;;;;;;  48550 21934 214000))
 ;;; Generated autoloads from emacs-lisp/re-builder.el
 
 (defalias 'regexp-builder 're-builder)
@@ -22254,8 +22319,8 @@ matching parts of the target buffer will be highlighted.
 
 ;;;***
 
-;;;### (autoloads nil "recentf" "recentf.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "recentf" "recentf.el" (21604 48550 369934
+;;;;;;  227000))
 ;;; Generated autoloads from recentf.el
 
 (defvar recentf-mode nil "\
@@ -22281,7 +22346,7 @@ were operated on recently.
 
 ;;;***
 
-;;;### (autoloads nil "rect" "rect.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "rect" "rect.el" (21604 48550 369934 227000))
 ;;; Generated autoloads from rect.el
 
 (autoload 'delete-rectangle "rect" "\
@@ -22421,8 +22486,8 @@ Activates the region if needed.  Only lasts until the 
region is deactivated.
 
 ;;;***
 
-;;;### (autoloads nil "refill" "textmodes/refill.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "refill" "textmodes/refill.el" (21604 48550
+;;;;;;  401934 229000))
 ;;; Generated autoloads from textmodes/refill.el
 
 (autoload 'refill-mode "refill" "\
@@ -22442,8 +22507,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' 
instead.
 
 ;;;***
 
-;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21604 48550
+;;;;;;  405934 229000))
 ;;; Generated autoloads from textmodes/reftex.el
 (autoload 'reftex-citation "reftex-cite" nil t)
 (autoload 'reftex-all-document-files "reftex-parse")
@@ -22496,8 +22561,8 @@ This enforces rescanning the buffer on next use.
 
 ;;;***
 
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (21604
+;;;;;;  48550 401934 229000))
 ;;; 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))))
@@ -22506,8 +22571,8 @@ This enforces rescanning the buffer on next use.
 
 ;;;***
 
-;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21604
+;;;;;;  48550 21934 214000))
 ;;; Generated autoloads from emacs-lisp/regexp-opt.el
 
 (autoload 'regexp-opt "regexp-opt" "\
@@ -22536,15 +22601,15 @@ This means the number of non-shy regexp grouping 
constructs
 
 ;;;***
 
-;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21604 48550 21934
+;;;;;;  214000))
 ;;; Generated autoloads from emacs-lisp/regi.el
 (push (purecopy '(regi 1 8)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "remember" "textmodes/remember.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "remember" "textmodes/remember.el" (21604 48550
+;;;;;;  405934 229000))
 ;;; Generated autoloads from textmodes/remember.el
 (push (purecopy '(remember 2 0)) package--builtin-versions)
 
@@ -22598,7 +22663,7 @@ to turn the *scratch* buffer into your notes buffer.
 
 ;;;***
 
-;;;### (autoloads nil "repeat" "repeat.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "repeat" "repeat.el" (21604 48550 373934 228000))
 ;;; Generated autoloads from repeat.el
 (push (purecopy '(repeat 0 51)) package--builtin-versions)
 
@@ -22621,8 +22686,8 @@ recently executed command not bound to an input event\".
 
 ;;;***
 
-;;;### (autoloads nil "reporter" "mail/reporter.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "reporter" "mail/reporter.el" (21604 48550
+;;;;;;  185934 221000))
 ;;; Generated autoloads from mail/reporter.el
 
 (autoload 'reporter-submit-bug-report "reporter" "\
@@ -22653,8 +22718,8 @@ mail-sending package is used for editing and sending 
the message.
 
 ;;;***
 
-;;;### (autoloads nil "reposition" "reposition.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "reposition" "reposition.el" (21604 48550 373934
+;;;;;;  228000))
 ;;; Generated autoloads from reposition.el
 
 (autoload 'reposition-window "reposition" "\
@@ -22680,7 +22745,7 @@ first comment line visible (if point is in a comment).
 
 ;;;***
 
-;;;### (autoloads nil "reveal" "reveal.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "reveal" "reveal.el" (21604 48550 373934 228000))
 ;;; Generated autoloads from reveal.el
 
 (autoload 'reveal-mode "reveal" "\
@@ -22715,8 +22780,8 @@ the mode if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21604 48550 21934
+;;;;;;  214000))
 ;;; Generated autoloads from emacs-lisp/ring.el
 
 (autoload 'ring-p "ring" "\
@@ -22731,8 +22796,8 @@ Make a ring that can contain SIZE elements.
 
 ;;;***
 
-;;;### (autoloads nil "rlogin" "net/rlogin.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "rlogin" "net/rlogin.el" (21604 48550 221934
+;;;;;;  222000))
 ;;; Generated autoloads from net/rlogin.el
 
 (autoload 'rlogin "rlogin" "\
@@ -22776,8 +22841,8 @@ variable.
 
 ;;;***
 
-;;;### (autoloads nil "rmail" "mail/rmail.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "rmail" "mail/rmail.el" (21604 48550 185934
+;;;;;;  221000))
 ;;; Generated autoloads from mail/rmail.el
 
 (defvar rmail-file-name (purecopy "~/RMAIL") "\
@@ -22974,8 +23039,8 @@ Set PASSWORD to be used for retrieving mail from a POP 
or IMAP server.
 
 ;;;***
 
-;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21604 48550
+;;;;;;  185934 221000))
 ;;; Generated autoloads from mail/rmailout.el
 (put 'rmail-output-file-alist 'risky-local-variable t)
 
@@ -23039,8 +23104,8 @@ than appending to it.  Deletes the message after 
writing if
 
 ;;;***
 
-;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21604 48550
+;;;;;;  237934 223000))
 ;;; Generated autoloads from nxml/rng-cmpct.el
 
 (autoload 'rng-c-load-schema "rng-cmpct" "\
@@ -23051,8 +23116,8 @@ Return a pattern.
 
 ;;;***
 
-;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21604 48550
+;;;;;;  241934 223000))
 ;;; Generated autoloads from nxml/rng-nxml.el
 
 (autoload 'rng-nxml-mode-init "rng-nxml" "\
@@ -23064,8 +23129,8 @@ Validation will be enabled if 
`rng-nxml-auto-validate-flag' is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21604 48550
+;;;;;;  241934 223000))
 ;;; Generated autoloads from nxml/rng-valid.el
 
 (autoload 'rng-validate-mode "rng-valid" "\
@@ -23095,8 +23160,8 @@ to use for finding the schema.
 
 ;;;***
 
-;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21604 48550 241934
+;;;;;;  223000))
 ;;; Generated autoloads from nxml/rng-xsd.el
 
 (put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 
'rng-xsd-compile)
@@ -23123,8 +23188,8 @@ must be equal.
 
 ;;;***
 
-;;;### (autoloads nil "robin" "international/robin.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "robin" "international/robin.el" (21604 48550
+;;;;;;  141934 219000))
 ;;; Generated autoloads from international/robin.el
 
 (autoload 'robin-define-package "robin" "\
@@ -23156,7 +23221,7 @@ Start using robin package NAME, which is a string.
 
 ;;;***
 
-;;;### (autoloads nil "rot13" "rot13.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "rot13" "rot13.el" (21604 48550 373934 228000))
 ;;; Generated autoloads from rot13.el
 
 (autoload 'rot13 "rot13" "\
@@ -23193,8 +23258,8 @@ Toggle the use of ROT13 encoding for the current window.
 
 ;;;***
 
-;;;### (autoloads nil "rst" "textmodes/rst.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "rst" "textmodes/rst.el" (21604 48550 405934
+;;;;;;  229000))
 ;;; Generated autoloads from textmodes/rst.el
  (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
 
@@ -23224,8 +23289,8 @@ for modes derived from Text mode, like Mail mode.
 
 ;;;***
 
-;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21659
+;;;;;;  61733 222949 164000))
 ;;; Generated autoloads from progmodes/ruby-mode.el
 (push (purecopy '(ruby-mode 1 2)) package--builtin-versions)
 
@@ -23236,14 +23301,14 @@ Major mode for editing Ruby code.
 
 \(fn)" t nil)
 
-(add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\." 
"rb\\|ru\\|rake\\|thor" "\\|jbuilder\\|gemspec\\|podspec" "\\|/" 
"\\(?:Gem\\|Rake\\|Cap\\|Thor" "\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 
'ruby-mode))
+(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))
 
 (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" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (21604 48550 373934
+;;;;;;  228000))
 ;;; Generated autoloads from ruler-mode.el
 (push (purecopy '(ruler-mode 1 6)) package--builtin-versions)
 
@@ -23261,8 +23326,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21604 48550 25934
+;;;;;;  215000))
 ;;; Generated autoloads from emacs-lisp/rx.el
 
 (autoload 'rx-to-string "rx" "\
@@ -23573,15 +23638,15 @@ enclosed in `(and ...)'.
 
 ;;;***
 
-;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21604 48550
+;;;;;;  221934 222000))
 ;;; Generated autoloads from net/sasl-ntlm.el
 (push (purecopy '(sasl 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "savehist" "savehist.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "savehist" "savehist.el" (21604 48550 373934
+;;;;;;  228000))
 ;;; Generated autoloads from savehist.el
 (push (purecopy '(savehist 24)) package--builtin-versions)
 
@@ -23613,8 +23678,8 @@ histories, which is probably undesirable.
 
 ;;;***
 
-;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21604 48550
+;;;;;;  353934 227000))
 ;;; Generated autoloads from progmodes/scheme.el
 
 (autoload 'scheme-mode "scheme" "\
@@ -23653,8 +23718,8 @@ that variable's value is a string.
 
 ;;;***
 
-;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21604 48550
+;;;;;;  121934 218000))
 ;;; Generated autoloads from gnus/score-mode.el
 
 (autoload 'gnus-score-mode "score-mode" "\
@@ -23667,8 +23732,8 @@ This mode is an extended emacs-lisp mode.
 
 ;;;***
 
-;;;### (autoloads nil "scroll-all" "scroll-all.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "scroll-all" "scroll-all.el" (21604 48550 373934
+;;;;;;  228000))
 ;;; Generated autoloads from scroll-all.el
 
 (defvar scroll-all-mode nil "\
@@ -23693,8 +23758,8 @@ one window apply to all visible windows in the same 
frame.
 
 ;;;***
 
-;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21604 48550
+;;;;;;  373934 228000))
 ;;; Generated autoloads from scroll-lock.el
 
 (autoload 'scroll-lock-mode "scroll-lock" "\
@@ -23710,16 +23775,16 @@ vertically fixed relative to window boundaries during 
scrolling.
 
 ;;;***
 
-;;;### (autoloads nil "secrets" "net/secrets.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "secrets" "net/secrets.el" (21604 48550 221934
+;;;;;;  222000))
 ;;; Generated autoloads from net/secrets.el
 (when (featurep 'dbusbind)
  (autoload 'secrets-show-secrets "secrets" nil t))
 
 ;;;***
 
-;;;### (autoloads nil "semantic" "cedet/semantic.el" (21609 55608
-;;;;;;  852266 580000))
+;;;### (autoloads nil "semantic" "cedet/semantic.el" (21645 25875
+;;;;;;  821189 881000))
 ;;; Generated autoloads from cedet/semantic.el
 (push (purecopy '(semantic 2 2)) package--builtin-versions)
 
@@ -23777,7 +23842,7 @@ Semantic mode.
 ;;;***
 
 ;;;### (autoloads nil "semantic/bovine/grammar" 
"cedet/semantic/bovine/grammar.el"
-;;;;;;  (21607 54477 800124 118000))
+;;;;;;  (21604 48549 969934 213000))
 ;;; Generated autoloads from cedet/semantic/bovine/grammar.el
 
 (autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\
@@ -23788,7 +23853,7 @@ Major mode for editing Bovine grammars.
 ;;;***
 
 ;;;### (autoloads nil "semantic/wisent/grammar" 
"cedet/semantic/wisent/grammar.el"
-;;;;;;  (21607 54477 800124 118000))
+;;;;;;  (21604 48549 981934 213000))
 ;;; Generated autoloads from cedet/semantic/wisent/grammar.el
 
 (autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\
@@ -23798,8 +23863,8 @@ Major mode for editing Wisent grammars.
 
 ;;;***
 
-;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21604 48550
+;;;;;;  189934 221000))
 ;;; Generated autoloads from mail/sendmail.el
 
 (defvar mail-from-style 'default "\
@@ -24080,7 +24145,14 @@ Like `mail' command, but display mail buffer in 
another frame.
 
 ;;;***
 
-;;;### (autoloads nil "server" "server.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (21648 55877 412874
+;;;;;;  916000))
+;;; Generated autoloads from emacs-lisp/seq.el
+(push (purecopy '(seq 1 0)) package--builtin-versions)
+
+;;;***
+
+;;;### (autoloads nil "server" "server.el" (21604 48550 373934 228000))
 ;;; Generated autoloads from server.el
 
 (put 'server-host 'risky-local-variable t)
@@ -24147,7 +24219,7 @@ only these files will be asked to be saved.
 
 ;;;***
 
-;;;### (autoloads nil "ses" "ses.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "ses" "ses.el" (21604 48550 377934 228000))
 ;;; Generated autoloads from ses.el
 
 (autoload 'ses-mode "ses" "\
@@ -24191,8 +24263,8 @@ formula:
 
 ;;;***
 
-;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21623
-;;;;;;  2108 292281 129000))
+;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21631
+;;;;;;  35966 915121 870000))
 ;;; Generated autoloads from textmodes/sgml-mode.el
 
 (autoload 'sgml-mode "sgml-mode" "\
@@ -24257,8 +24329,8 @@ To work around that, do:
 
 ;;;***
 
-;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21637
+;;;;;;  50476 679217 121000))
 ;;; Generated autoloads from progmodes/sh-script.el
 (push (purecopy '(sh-script 2 0 6)) package--builtin-versions)
 (put 'sh-shell 'safe-local-variable 'symbolp)
@@ -24322,8 +24394,8 @@ with your script for an edit-interpret-debug cycle.
 
 ;;;***
 
-;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21604 48550
+;;;;;;  25934 215000))
 ;;; Generated autoloads from emacs-lisp/shadow.el
 
 (autoload 'list-load-path-shadows "shadow" "\
@@ -24372,8 +24444,8 @@ function, `load-path-shadows-find'.
 
 ;;;***
 
-;;;### (autoloads nil "shadowfile" "shadowfile.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "shadowfile" "shadowfile.el" (21604 48550 377934
+;;;;;;  228000))
 ;;; Generated autoloads from shadowfile.el
 
 (autoload 'shadow-define-cluster "shadowfile" "\
@@ -24411,7 +24483,7 @@ Set up file shadowing.
 
 ;;;***
 
-;;;### (autoloads nil "shell" "shell.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "shell" "shell.el" (21659 61733 222949 164000))
 ;;; Generated autoloads from shell.el
 
 (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
@@ -24459,7 +24531,7 @@ Otherwise, one argument `-i' is passed to the shell.
 
 ;;;***
 
-;;;### (autoloads nil "shr" "net/shr.el" (21623 2108 292281 129000))
+;;;### (autoloads nil "shr" "net/shr.el" (21646 54881 267721 623000))
 ;;; Generated autoloads from net/shr.el
 
 (autoload 'shr-render-region "shr" "\
@@ -24476,8 +24548,8 @@ DOM should be a parse tree as generated by
 
 ;;;***
 
-;;;### (autoloads nil "sieve" "gnus/sieve.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "sieve" "gnus/sieve.el" (21604 48550 121934
+;;;;;;  218000))
 ;;; Generated autoloads from gnus/sieve.el
 
 (autoload 'sieve-manage "sieve" "\
@@ -24502,8 +24574,8 @@ DOM should be a parse tree as generated by
 
 ;;;***
 
-;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21604 48550
+;;;;;;  121934 218000))
 ;;; Generated autoloads from gnus/sieve-mode.el
 
 (autoload 'sieve-mode "sieve-mode" "\
@@ -24518,8 +24590,8 @@ Turning on Sieve mode runs `sieve-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "simula" "progmodes/simula.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "simula" "progmodes/simula.el" (21604 48550
+;;;;;;  357934 227000))
 ;;; Generated autoloads from progmodes/simula.el
 
 (autoload 'simula-mode "simula" "\
@@ -24567,8 +24639,8 @@ with no arguments, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "skeleton" "skeleton.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "skeleton" "skeleton.el" (21604 48550 377934
+;;;;;;  228000))
 ;;; Generated autoloads from skeleton.el
 
 (defvar skeleton-filter-function 'identity "\
@@ -24686,8 +24758,8 @@ symmetrical ones, and the same character twice for the 
others.
 
 ;;;***
 
-;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21628 45530
-;;;;;;  160140 360000))
+;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21631 35966
+;;;;;;  923121 870000))
 ;;; Generated autoloads from vc/smerge-mode.el
 
 (autoload 'smerge-ediff "smerge-mode" "\
@@ -24714,8 +24786,8 @@ If no conflict maker is found, turn off `smerge-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "smiley" "gnus/smiley.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "smiley" "gnus/smiley.el" (21604 48550 121934
+;;;;;;  218000))
 ;;; Generated autoloads from gnus/smiley.el
 
 (autoload 'smiley-region "smiley" "\
@@ -24732,8 +24804,8 @@ interactively.  If there's no argument, do it at the 
current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21619 5051 260148
-;;;;;;  536000))
+;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21631 35966
+;;;;;;  875121 868000))
 ;;; Generated autoloads from mail/smtpmail.el
 
 (autoload 'smtpmail-send-it "smtpmail" "\
@@ -24748,8 +24820,8 @@ Send mail that was queued as a result of setting 
`smtpmail-queue-mail'.
 
 ;;;***
 
-;;;### (autoloads nil "snake" "play/snake.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "snake" "play/snake.el" (21604 48550 305934
+;;;;;;  225000))
 ;;; Generated autoloads from play/snake.el
 
 (autoload 'snake "snake" "\
@@ -24772,8 +24844,8 @@ Snake mode keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21604 48550
+;;;;;;  225934 222000))
 ;;; Generated autoloads from net/snmp-mode.el
 
 (autoload 'snmp-mode "snmp-mode" "\
@@ -24802,8 +24874,8 @@ then `snmpv2-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "solar" "calendar/solar.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "solar" "calendar/solar.el" (21604 48549 953934
+;;;;;;  212000))
 ;;; Generated autoloads from calendar/solar.el
 
 (autoload 'sunrise-sunset "solar" "\
@@ -24818,8 +24890,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "solitaire" "play/solitaire.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "solitaire" "play/solitaire.el" (21604 48550
+;;;;;;  305934 225000))
 ;;; Generated autoloads from play/solitaire.el
 
 (autoload 'solitaire "solitaire" "\
@@ -24894,7 +24966,7 @@ Pick your favorite shortcuts:
 
 ;;;***
 
-;;;### (autoloads nil "sort" "sort.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "sort" "sort.el" (21604 48550 377934 228000))
 ;;; Generated autoloads from sort.el
 (put 'sort-fold-case 'safe-local-variable 'booleanp)
 
@@ -25069,7 +25141,7 @@ is non-nil, it also prints a message describing the 
number of deletions.
 
 ;;;***
 
-;;;### (autoloads nil "spam" "gnus/spam.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "spam" "gnus/spam.el" (21604 48550 121934 218000))
 ;;; Generated autoloads from gnus/spam.el
 
 (autoload 'spam-initialize "spam" "\
@@ -25083,8 +25155,8 @@ installed through `spam-necessary-extra-headers'.
 
 ;;;***
 
-;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21604
+;;;;;;  48550 121934 218000))
 ;;; Generated autoloads from gnus/spam-report.el
 
 (autoload 'spam-report-process-queue "spam-report" "\
@@ -25126,8 +25198,8 @@ Spam reports will be queued with the method used when
 
 ;;;***
 
-;;;### (autoloads nil "speedbar" "speedbar.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "speedbar" "speedbar.el" (21604 48550 381934
+;;;;;;  228000))
 ;;; Generated autoloads from speedbar.el
 
 (defalias 'speedbar 'speedbar-frame-mode)
@@ -25151,8 +25223,8 @@ selected.  If the speedbar frame is active, then select 
the attached frame.
 
 ;;;***
 
-;;;### (autoloads nil "spook" "play/spook.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "spook" "play/spook.el" (21604 48550 305934
+;;;;;;  225000))
 ;;; Generated autoloads from play/spook.el
 
 (autoload 'spook "spook" "\
@@ -25167,8 +25239,8 @@ Return a vector containing the lines from 
`spook-phrases-file'.
 
 ;;;***
 
-;;;### (autoloads nil "sql" "progmodes/sql.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "sql" "progmodes/sql.el" (21604 48550 357934
+;;;;;;  227000))
 ;;; Generated autoloads from progmodes/sql.el
 (push (purecopy '(sql 3 4)) package--builtin-versions)
 
@@ -25634,15 +25706,15 @@ Run vsql as an inferior process.
 
 ;;;***
 
-;;;### (autoloads nil "srecode" "cedet/srecode.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "srecode" "cedet/srecode.el" (21604 48549 981934
+;;;;;;  213000))
 ;;; Generated autoloads from cedet/srecode.el
 (push (purecopy '(srecode 1 2)) package--builtin-versions)
 
 ;;;***
 
 ;;;### (autoloads nil "srecode/srt-mode" "cedet/srecode/srt-mode.el"
-;;;;;;  (21607 54477 800124 118000))
+;;;;;;  (21659 61733 202949 164000))
 ;;; Generated autoloads from cedet/srecode/srt-mode.el
 
 (autoload 'srecode-template-mode "srecode/srt-mode" "\
@@ -25654,8 +25726,8 @@ Major-mode for writing SRecode macros.
 
 ;;;***
 
-;;;### (autoloads nil "starttls" "gnus/starttls.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "starttls" "gnus/starttls.el" (21604 48550
+;;;;;;  121934 218000))
 ;;; Generated autoloads from gnus/starttls.el
 
 (autoload 'starttls-open-stream "starttls" "\
@@ -25678,8 +25750,8 @@ GnuTLS requires a port number.
 
 ;;;***
 
-;;;### (autoloads nil "strokes" "strokes.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "strokes" "strokes.el" (21604 48550 381934
+;;;;;;  228000))
 ;;; Generated autoloads from strokes.el
 
 (autoload 'strokes-global-set-stroke "strokes" "\
@@ -25792,8 +25864,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" (21604 48550 305934
+;;;;;;  225000))
 ;;; Generated autoloads from play/studly.el
 
 (autoload 'studlify-region "studly" "\
@@ -25813,8 +25885,8 @@ Studlify-case the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "subword" "progmodes/subword.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "subword" "progmodes/subword.el" (21604 48550
+;;;;;;  357934 227000))
 ;;; Generated autoloads from progmodes/subword.el
 
 (define-obsolete-function-alias 'capitalized-words-mode 'subword-mode "25.1")
@@ -25906,8 +25978,8 @@ See `superword-mode' for more information on Superword 
mode.
 
 ;;;***
 
-;;;### (autoloads nil "supercite" "mail/supercite.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "supercite" "mail/supercite.el" (21604 48550
+;;;;;;  189934 221000))
 ;;; Generated autoloads from mail/supercite.el
 
 (autoload 'sc-cite-original "supercite" "\
@@ -25939,8 +26011,8 @@ and `sc-post-hook' is run after the guts of this 
function.
 
 ;;;***
 
-;;;### (autoloads nil "t-mouse" "t-mouse.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "t-mouse" "t-mouse.el" (21604 48550 385934
+;;;;;;  228000))
 ;;; Generated autoloads from t-mouse.el
 
 (define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
@@ -25968,7 +26040,7 @@ It relies on the `gpm' daemon being activated.
 
 ;;;***
 
-;;;### (autoloads nil "tabify" "tabify.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "tabify" "tabify.el" (21604 48550 385934 228000))
 ;;; Generated autoloads from tabify.el
 
 (autoload 'untabify "tabify" "\
@@ -25997,8 +26069,8 @@ The variable `tab-width' controls the spacing of tab 
stops.
 
 ;;;***
 
-;;;### (autoloads nil "table" "textmodes/table.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "table" "textmodes/table.el" (21604 48550 409934
+;;;;;;  229000))
 ;;; Generated autoloads from textmodes/table.el
 
 (defvar table-cell-map-hook nil "\
@@ -26590,7 +26662,7 @@ converts a table into plain text without frames.  It is 
a companion to
 
 ;;;***
 
-;;;### (autoloads nil "talk" "talk.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "talk" "talk.el" (21604 48550 385934 228000))
 ;;; Generated autoloads from talk.el
 
 (autoload 'talk-connect "talk" "\
@@ -26605,8 +26677,8 @@ Connect to the Emacs talk group from the current X 
display or tty frame.
 
 ;;;***
 
-;;;### (autoloads nil "tar-mode" "tar-mode.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "tar-mode" "tar-mode.el" (21604 48550 385934
+;;;;;;  228000))
 ;;; Generated autoloads from tar-mode.el
 
 (autoload 'tar-mode "tar-mode" "\
@@ -26629,8 +26701,8 @@ See also: variables `tar-update-datestamp' and 
`tar-anal-blocksize'.
 
 ;;;***
 
-;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21604 48550 357934
+;;;;;;  227000))
 ;;; Generated autoloads from progmodes/tcl.el
 
 (autoload 'tcl-mode "tcl" "\
@@ -26678,8 +26750,8 @@ Prefix argument means invert sense of 
`tcl-use-smart-word-finder'.
 
 ;;;***
 
-;;;### (autoloads nil "telnet" "net/telnet.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "telnet" "net/telnet.el" (21604 48550 225934
+;;;;;;  222000))
 ;;; Generated autoloads from net/telnet.el
 
 (autoload 'telnet "telnet" "\
@@ -26704,7 +26776,7 @@ Normally input is edited in Emacs and sent a line at a 
time.
 
 ;;;***
 
-;;;### (autoloads nil "term" "term.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "term" "term.el" (21604 48550 385934 228000))
 ;;; Generated autoloads from term.el
 
 (autoload 'make-term "term" "\
@@ -26746,8 +26818,8 @@ use in that buffer.
 
 ;;;***
 
-;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21604
+;;;;;;  48550 25934 215000))
 ;;; Generated autoloads from emacs-lisp/testcover.el
 
 (autoload 'testcover-this-defun "testcover" "\
@@ -26757,8 +26829,8 @@ Start coverage on function under point.
 
 ;;;***
 
-;;;### (autoloads nil "tetris" "play/tetris.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "tetris" "play/tetris.el" (21604 48550 305934
+;;;;;;  225000))
 ;;; Generated autoloads from play/tetris.el
 (push (purecopy '(tetris 2 1)) package--builtin-versions)
 
@@ -26783,8 +26855,8 @@ tetris-mode keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21611 10938
-;;;;;;  204397 226000))
+;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21647 39327
+;;;;;;  896553 751000))
 ;;; Generated autoloads from textmodes/tex-mode.el
 
 (defvar tex-shell-file-name nil "\
@@ -27085,8 +27157,8 @@ Major mode to edit DocTeX files.
 
 ;;;***
 
-;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21604 48550
+;;;;;;  409934 229000))
 ;;; Generated autoloads from textmodes/texinfmt.el
 
 (autoload 'texinfo-format-buffer "texinfmt" "\
@@ -27125,8 +27197,8 @@ if large.  You can use `Info-split' to do this manually.
 
 ;;;***
 
-;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21604 48550
+;;;;;;  409934 229000))
 ;;; Generated autoloads from textmodes/texinfo.el
 
 (defvar texinfo-open-quote (purecopy "``") "\
@@ -27210,8 +27282,8 @@ value of `texinfo-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "thai-util" "language/thai-util.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "thai-util" "language/thai-util.el" (21604
+;;;;;;  48550 153934 219000))
 ;;; Generated autoloads from language/thai-util.el
 
 (autoload 'thai-compose-region "thai-util" "\
@@ -27238,8 +27310,8 @@ Compose Thai characters in the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "thingatpt" "thingatpt.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "thingatpt" "thingatpt.el" (21604 48550 413934
+;;;;;;  229000))
 ;;; Generated autoloads from thingatpt.el
 
 (autoload 'forward-thing "thingatpt" "\
@@ -27303,7 +27375,7 @@ Return the Lisp list at point, or nil if none is found.
 
 ;;;***
 
-;;;### (autoloads nil "thumbs" "thumbs.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "thumbs" "thumbs.el" (21604 48550 413934 229000))
 ;;; Generated autoloads from thumbs.el
 
 (autoload 'thumbs-find-thumb "thumbs" "\
@@ -27337,8 +27409,8 @@ In dired, call the setroot program on the image at 
point.
 
 ;;;***
 
-;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21604
+;;;;;;  48550 157934 220000))
 ;;; Generated autoloads from language/tibet-util.el
 
 (autoload 'tibetan-char-p "tibet-util" "\
@@ -27411,8 +27483,8 @@ See also docstring of the function 
tibetan-compose-region.
 
 ;;;***
 
-;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21611 10938
-;;;;;;  204397 226000))
+;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21631 35966
+;;;;;;  919121 870000))
 ;;; Generated autoloads from textmodes/tildify.el
 (push (purecopy '(tildify 4 5 7)) package--builtin-versions)
 
@@ -27440,7 +27512,7 @@ won't be prompted for confirmation of each substitution.
 
 ;;;***
 
-;;;### (autoloads nil "time" "time.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "time" "time.el" (21604 48550 413934 229000))
 ;;; Generated autoloads from time.el
 
 (defvar display-time-day-and-date nil "\
@@ -27502,8 +27574,8 @@ Return a string giving the duration of the Emacs 
initialization.
 
 ;;;***
 
-;;;### (autoloads nil "time-date" "calendar/time-date.el" (21611
-;;;;;;  10937 700236 3000))
+;;;### (autoloads nil "time-date" "calendar/time-date.el" (21631
+;;;;;;  35966 803121 866000))
 ;;; Generated autoloads from calendar/time-date.el
 
 (autoload 'date-to-time "time-date" "\
@@ -27606,8 +27678,8 @@ Convert the time interval in seconds to a short string.
 
 ;;;***
 
-;;;### (autoloads nil "time-stamp" "time-stamp.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "time-stamp" "time-stamp.el" (21604 48550 413934
+;;;;;;  229000))
 ;;; 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)
@@ -27647,8 +27719,8 @@ With ARG, turn time stamping on if and only if arg is 
positive.
 
 ;;;***
 
-;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21604
+;;;;;;  48549 957934 212000))
 ;;; Generated autoloads from calendar/timeclock.el
 (push (purecopy '(timeclock 2 6 1)) package--builtin-versions)
 
@@ -27758,7 +27830,7 @@ relative only to the time worked today, and not to past 
time.
 ;;;***
 
 ;;;### (autoloads nil "titdic-cnv" "international/titdic-cnv.el"
-;;;;;;  (21607 54478 300138 641000))
+;;;;;;  (21604 48550 141934 219000))
 ;;; Generated autoloads from international/titdic-cnv.el
 
 (autoload 'titdic-convert "titdic-cnv" "\
@@ -27780,7 +27852,7 @@ To get complete usage, invoke \"emacs -batch -f 
batch-titdic-convert -h\".
 
 ;;;***
 
-;;;### (autoloads nil "tmm" "tmm.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "tmm" "tmm.el" (21651 20707 188225 752000))
 ;;; Generated autoloads from tmm.el
  (define-key global-map "\M-`" 'tmm-menubar)
  (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -27822,8 +27894,8 @@ Its value should be an event that has a binding in MENU.
 
 ;;;***
 
-;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21625
-;;;;;;  43838 483701 627000))
+;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21631
+;;;;;;  35966 807121 866000))
 ;;; Generated autoloads from calendar/todo-mode.el
 
 (autoload 'todo-show "todo-mode" "\
@@ -27890,8 +27962,8 @@ Mode for displaying and reprioritizing top priority 
Todo.
 
 ;;;***
 
-;;;### (autoloads nil "tool-bar" "tool-bar.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "tool-bar" "tool-bar.el" (21604 48550 413934
+;;;;;;  229000))
 ;;; Generated autoloads from tool-bar.el
 
 (autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\
@@ -27961,8 +28033,8 @@ holds a keymap.
 
 ;;;***
 
-;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21607 54477 800124
-;;;;;;  118000))
+;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21604 48550 25934
+;;;;;;  215000))
 ;;; Generated autoloads from emacs-lisp/tq.el
 
 (autoload 'tq-create "tq" "\
@@ -27975,8 +28047,8 @@ to a tcp server on another machine.
 
 ;;;***
 
-;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21604 48550
+;;;;;;  25934 215000))
 ;;; Generated autoloads from emacs-lisp/trace.el
 
 (defvar trace-buffer "*trace-output*" "\
@@ -28021,8 +28093,8 @@ the output buffer or changing the window configuration.
 
 ;;;***
 
-;;;### (autoloads nil "tramp" "net/tramp.el" (21625 43838 483701
-;;;;;;  627000))
+;;;### (autoloads nil "tramp" "net/tramp.el" (21640 32530 974334
+;;;;;;  457000))
 ;;; Generated autoloads from net/tramp.el
 
 (defvar tramp-mode t "\
@@ -28137,8 +28209,8 @@ Discard Tramp from loading remote files.
 
 ;;;***
 
-;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21604 48550
+;;;;;;  225934 222000))
 ;;; Generated autoloads from net/tramp-ftp.el
 
 (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\
@@ -28148,8 +28220,8 @@ Discard Tramp from loading remote files.
 
 ;;;***
 
-;;;### (autoloads nil "tutorial" "tutorial.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "tutorial" "tutorial.el" (21604 48550 417934
+;;;;;;  229000))
 ;;; Generated autoloads from tutorial.el
 
 (autoload 'help-with-tutorial "tutorial" "\
@@ -28173,8 +28245,8 @@ resumed later.
 
 ;;;***
 
-;;;### (autoloads nil "tv-util" "language/tv-util.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "tv-util" "language/tv-util.el" (21604 48550
+;;;;;;  157934 220000))
 ;;; Generated autoloads from language/tv-util.el
 
 (autoload 'tai-viet-composition-function "tv-util" "\
@@ -28184,8 +28256,8 @@ resumed later.
 
 ;;;***
 
-;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21604
+;;;;;;  48550 413934 229000))
 ;;; Generated autoloads from textmodes/two-column.el
  (autoload '2C-command "two-column" () t 'keymap)
  (global-set-key "\C-x6" '2C-command)
@@ -28232,8 +28304,8 @@ First column's text    sSs  Second column's text
 
 ;;;***
 
-;;;### (autoloads nil "type-break" "type-break.el" (21609 55608 852266
-;;;;;;  580000))
+;;;### (autoloads nil "type-break" "type-break.el" (21631 35966 919121
+;;;;;;  870000))
 ;;; Generated autoloads from type-break.el
 
 (defvar type-break-mode nil "\
@@ -28365,7 +28437,7 @@ FRAC should be the inverse of the fractional value; for 
example, a value of
 
 ;;;***
 
-;;;### (autoloads nil "uce" "mail/uce.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "uce" "mail/uce.el" (21604 48550 189934 221000))
 ;;; Generated autoloads from mail/uce.el
 
 (autoload 'uce-reply-to-uce "uce" "\
@@ -28379,7 +28451,7 @@ You might need to set `uce-mail-reader' before using 
this.
 ;;;***
 
 ;;;### (autoloads nil "ucs-normalize" "international/ucs-normalize.el"
-;;;;;;  (21607 54478 300138 641000))
+;;;;;;  (21604 48550 141934 219000))
 ;;; Generated autoloads from international/ucs-normalize.el
 
 (autoload 'ucs-normalize-NFD-region "ucs-normalize" "\
@@ -28444,8 +28516,8 @@ Normalize the string STR by the Unicode NFC and Mac 
OS's HFS Plus.
 
 ;;;***
 
-;;;### (autoloads nil "underline" "textmodes/underline.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "underline" "textmodes/underline.el" (21604
+;;;;;;  48550 413934 229000))
 ;;; Generated autoloads from textmodes/underline.el
 
 (autoload 'underline-region "underline" "\
@@ -28465,8 +28537,8 @@ which specify the range to operate on.
 
 ;;;***
 
-;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21604 48550 189934
+;;;;;;  221000))
 ;;; Generated autoloads from mail/unrmail.el
 
 (autoload 'batch-unrmail "unrmail" "\
@@ -28486,8 +28558,8 @@ The variable `unrmail-mbox-format' controls which mbox 
format to use.
 
 ;;;***
 
-;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21607 54477
-;;;;;;  800124 118000))
+;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21604 48550
+;;;;;;  25934 215000))
 ;;; Generated autoloads from emacs-lisp/unsafep.el
 
 (autoload 'unsafep "unsafep" "\
@@ -28499,7 +28571,7 @@ UNSAFEP-VARS is a list of symbols with local bindings.
 
 ;;;***
 
-;;;### (autoloads nil "url" "url/url.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "url" "url/url.el" (21604 48550 421934 229000))
 ;;; Generated autoloads from url/url.el
 
 (autoload 'url-retrieve "url" "\
@@ -28546,8 +28618,8 @@ no further processing).  URL is either a string or a 
parsed URL.
 
 ;;;***
 
-;;;### (autoloads nil "url-auth" "url/url-auth.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-auth" "url/url-auth.el" (21604 48550 417934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-auth.el
 
 (autoload 'url-get-authentication "url-auth" "\
@@ -28588,8 +28660,8 @@ RATING   a rating between 1 and 10 of the strength of 
the authentication.
 
 ;;;***
 
-;;;### (autoloads nil "url-cache" "url/url-cache.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "url-cache" "url/url-cache.el" (21604 48550
+;;;;;;  417934 229000))
 ;;; Generated autoloads from url/url-cache.el
 
 (autoload 'url-store-in-cache "url-cache" "\
@@ -28610,8 +28682,8 @@ Extract FNAM from the local disk cache.
 
 ;;;***
 
-;;;### (autoloads nil "url-cid" "url/url-cid.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-cid" "url/url-cid.el" (21604 48550 417934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-cid.el
 
 (autoload 'url-cid "url-cid" "\
@@ -28621,8 +28693,8 @@ Extract FNAM from the local disk cache.
 
 ;;;***
 
-;;;### (autoloads nil "url-dav" "url/url-dav.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-dav" "url/url-dav.el" (21637 50476 683217
+;;;;;;  122000))
 ;;; Generated autoloads from url/url-dav.el
 
 (autoload 'url-dav-supported-p "url-dav" "\
@@ -28656,8 +28728,8 @@ added to this list, so most requests can just pass in 
nil.
 
 ;;;***
 
-;;;### (autoloads nil "url-file" "url/url-file.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-file" "url/url-file.el" (21604 48550 417934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-file.el
 
 (autoload 'url-file "url-file" "\
@@ -28667,8 +28739,8 @@ Handle file: and ftp: URLs.
 
 ;;;***
 
-;;;### (autoloads nil "url-gw" "url/url-gw.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-gw" "url/url-gw.el" (21604 48550 417934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-gw.el
 
 (autoload 'url-gateway-nslookup-host "url-gw" "\
@@ -28689,8 +28761,8 @@ overriding the value of `url-gateway-method'.
 
 ;;;***
 
-;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21604
+;;;;;;  48550 417934 229000))
 ;;; Generated autoloads from url/url-handlers.el
 
 (defvar url-handler-mode nil "\
@@ -28744,8 +28816,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-http" "url/url-http.el" (21619 5051 260148
-;;;;;;  536000))
+;;;### (autoloads nil "url-http" "url/url-http.el" (21640 32530 998334
+;;;;;;  458000))
 ;;; Generated autoloads from url/url-http.el
  (autoload 'url-default-expander "url-expand")
 
@@ -28757,8 +28829,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-irc" "url/url-irc.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-irc" "url/url-irc.el" (21604 48550 421934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-irc.el
 
 (autoload 'url-irc "url-irc" "\
@@ -28768,8 +28840,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21604 48550 421934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-ldap.el
 
 (autoload 'url-ldap "url-ldap" "\
@@ -28782,8 +28854,8 @@ URL can be a URL string, or a URL vector of the type 
returned by
 
 ;;;***
 
-;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21604 48550
+;;;;;;  421934 229000))
 ;;; Generated autoloads from url/url-mailto.el
 
 (autoload 'url-mail "url-mailto" "\
@@ -28798,8 +28870,8 @@ Handle the mailto: URL syntax.
 
 ;;;***
 
-;;;### (autoloads nil "url-misc" "url/url-misc.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-misc" "url/url-misc.el" (21604 48550 421934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-misc.el
 
 (autoload 'url-man "url-misc" "\
@@ -28830,8 +28902,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-news" "url/url-news.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-news" "url/url-news.el" (21604 48550 421934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-news.el
 
 (autoload 'url-news "url-news" "\
@@ -28846,8 +28918,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-ns" "url/url-ns.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-ns" "url/url-ns.el" (21604 48550 421934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-ns.el
 
 (autoload 'isPlainHostName "url-ns" "\
@@ -28887,8 +28959,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-parse" "url/url-parse.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "url-parse" "url/url-parse.el" (21604 48550
+;;;;;;  421934 229000))
 ;;; Generated autoloads from url/url-parse.el
 
 (autoload 'url-recreate-url "url-parse" "\
@@ -28939,8 +29011,8 @@ parses to
 
 ;;;***
 
-;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21604 48550
+;;;;;;  421934 229000))
 ;;; Generated autoloads from url/url-privacy.el
 
 (autoload 'url-setup-privacy-info "url-privacy" "\
@@ -28950,8 +29022,8 @@ Setup variables that expose info about you and your 
system.
 
 ;;;***
 
-;;;### (autoloads nil "url-queue" "url/url-queue.el" (21619 5051
-;;;;;;  260148 536000))
+;;;### (autoloads nil "url-queue" "url/url-queue.el" (21631 35966
+;;;;;;  919121 870000))
 ;;; Generated autoloads from url/url-queue.el
 
 (autoload 'url-queue-retrieve "url-queue" "\
@@ -28965,8 +29037,8 @@ The variable `url-queue-timeout' sets a timeout.
 
 ;;;***
 
-;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21604 48550
+;;;;;;  421934 229000))
 ;;; Generated autoloads from url/url-tramp.el
 
 (defvar url-tramp-protocols '("ftp" "ssh" "scp" "rsync" "telnet") "\
@@ -28984,8 +29056,8 @@ would have been passed to OPERATION.
 
 ;;;***
 
-;;;### (autoloads nil "url-util" "url/url-util.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "url-util" "url/url-util.el" (21604 48550 421934
+;;;;;;  229000))
 ;;; Generated autoloads from url/url-util.el
 
 (defvar url-debug nil "\
@@ -29153,8 +29225,8 @@ This uses `url-current-object', set locally to the 
buffer.
 
 ;;;***
 
-;;;### (autoloads nil "userlock" "userlock.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "userlock" "userlock.el" (21604 48550 421934
+;;;;;;  229000))
 ;;; Generated autoloads from userlock.el
 
 (autoload 'ask-user-about-lock "userlock" "\
@@ -29182,8 +29254,8 @@ The buffer in question is current when this function is 
called.
 
 ;;;***
 
-;;;### (autoloads nil "utf-7" "international/utf-7.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "utf-7" "international/utf-7.el" (21604 48550
+;;;;;;  141934 219000))
 ;;; Generated autoloads from international/utf-7.el
 
 (autoload 'utf-7-post-read-conversion "utf-7" "\
@@ -29208,7 +29280,7 @@ The buffer in question is current when this function is 
called.
 
 ;;;***
 
-;;;### (autoloads nil "utf7" "gnus/utf7.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "utf7" "gnus/utf7.el" (21604 48550 121934 218000))
 ;;; Generated autoloads from gnus/utf7.el
 
 (autoload 'utf7-encode "utf7" "\
@@ -29218,8 +29290,8 @@ Encode UTF-7 STRING.  Use IMAP modification if FOR-IMAP 
is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21604 48550
+;;;;;;  189934 221000))
 ;;; Generated autoloads from mail/uudecode.el
 
 (autoload 'uudecode-decode-region-external "uudecode" "\
@@ -29243,7 +29315,7 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
 
 ;;;***
 
-;;;### (autoloads nil "vc" "vc/vc.el" (21628 45530 160140 360000))
+;;;### (autoloads nil "vc" "vc/vc.el" (21649 1806 157181 933000))
 ;;; Generated autoloads from vc/vc.el
 
 (defvar vc-checkout-hook nil "\
@@ -29282,8 +29354,7 @@ For old-style locking-based version control systems, 
like RCS:
   If every file is registered and unlocked, check out (lock)
    the file(s) for editing.
   If every file is locked by you and has changes, pop up a
-   *vc-log* buffer to check in the changes.  If the variable
-   `vc-keep-workfiles' is non-nil (the default), leave a
+   *vc-log* buffer to check in the changes.  Leave a
    read-only copy of each changed file after checking in.
   If every file is locked by you and unchanged, unlock them.
   If every file is locked by someone else, offer to steal the lock.
@@ -29453,13 +29524,6 @@ to the working revision (except for keyword expansion).
 
 \(fn)" t nil)
 
-(autoload 'vc-rollback "vc" "\
-Roll back (remove) the most recent changeset committed to the repository.
-This may be either a file-level or a repository-level operation,
-depending on the underlying version-control system.
-
-\(fn)" t nil)
-
 (define-obsolete-function-alias 'vc-revert-buffer 'vc-revert "23.1")
 
 (autoload 'vc-pull "vc" "\
@@ -29538,8 +29602,8 @@ Return the branch part of a revision number REV.
 
 ;;;***
 
-;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21604 48550
+;;;;;;  433934 230000))
 ;;; Generated autoloads from vc/vc-annotate.el
 
 (autoload 'vc-annotate "vc-annotate" "\
@@ -29578,19 +29642,8 @@ should be applied to the background or to the 
foreground.
 
 ;;;***
 
-;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (21628 43483 380149
-;;;;;;  771000))
-;;; Generated autoloads from vc/vc-arch.el
- (defun vc-arch-registered (file)
-  (if (vc-find-root file "{arch}/=tagging-method")
-      (progn
-        (load "vc-arch" nil t)
-        (vc-arch-registered file))))
-
-;;;***
-
-;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21628 43483 380149
-;;;;;;  771000))
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21645 25875 825189
+;;;;;;  881000))
 ;;; Generated autoloads from vc/vc-bzr.el
 
 (defconst vc-bzr-admin-dirname ".bzr" "\
@@ -29606,8 +29659,8 @@ Name of the format file in a .bzr directory.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21628 43483 380149
-;;;;;;  771000))
+;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21645 25875 825189
+;;;;;;  881000))
 ;;; Generated autoloads from vc/vc-cvs.el
 (defun vc-cvs-registered (f)
   "Return non-nil if file F is registered with CVS."
@@ -29618,8 +29671,8 @@ Name of the format file in a .bzr directory.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21645 25761 817186
+;;;;;;  828000))
 ;;; Generated autoloads from vc/vc-dir.el
 
 (autoload 'vc-dir "vc-dir" "\
@@ -29643,8 +29696,8 @@ These are the commands available for use in the file 
status buffer:
 
 ;;;***
 
-;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21645
+;;;;;;  25761 817186 828000))
 ;;; Generated autoloads from vc/vc-dispatcher.el
 
 (autoload 'vc-do-command "vc-dispatcher" "\
@@ -29667,8 +29720,7 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21628 45530 160140
-;;;;;;  360000))
+;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21649 1521 25174 297000))
 ;;; Generated autoloads from vc/vc-git.el
  (defun vc-git-registered (file)
   "Return non-nil if FILE is registered with git."
@@ -29679,7 +29731,7 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21628 43483 380149 771000))
+;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21645 25875 841189 882000))
 ;;; Generated autoloads from vc/vc-hg.el
  (defun vc-hg-registered (file)
   "Return non-nil if FILE is registered with hg."
@@ -29690,8 +29742,8 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21628 43483 380149
-;;;;;;  771000))
+;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21645 25875 841189
+;;;;;;  882000))
 ;;; Generated autoloads from vc/vc-mtn.el
 
 (defconst vc-mtn-admin-dir "_MTN" "\
@@ -29707,8 +29759,8 @@ Name of the monotone directory's format file.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21628 43483 380149
-;;;;;;  771000))
+;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21645 25875 841189
+;;;;;;  882000))
 ;;; Generated autoloads from vc/vc-rcs.el
 
 (defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) 
"\
@@ -29721,8 +29773,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21628 43483 380149
-;;;;;;  771000))
+;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21645 25875 837189
+;;;;;;  882000))
 ;;; Generated autoloads from vc/vc-sccs.el
 
 (defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" 
vc-sccs-search-project-dir)) "\
@@ -29740,8 +29792,8 @@ find any project directory." (let ((project-dir (getenv 
"PROJECTDIR")) dirs dir)
 
 ;;;***
 
-;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21628 43483 380149
-;;;;;;  771000))
+;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21645 25875 837189
+;;;;;;  882000))
 ;;; Generated autoloads from vc/vc-src.el
 
 (defvar vc-src-master-templates (purecopy '("%s.src/%s,v")) "\
@@ -29754,8 +29806,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21628 43483 380149
-;;;;;;  771000))
+;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21650 56624 523745
+;;;;;;  975000))
 ;;; Generated autoloads from vc/vc-svn.el
  (defun vc-svn-registered (f)
   (let ((admin-dir (cond ((and (eq system-type 'windows-nt)
@@ -29768,8 +29820,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21604
+;;;;;;  48550 361934 227000))
 ;;; 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))
@@ -29828,7 +29880,7 @@ Key bindings:
 ;;;***
 
 ;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el"
-;;;;;;  (21607 54478 800121 42000))
+;;;;;;  (21645 25761 813186 828000))
 ;;; Generated autoloads from progmodes/verilog-mode.el
 
 (autoload 'verilog-mode "verilog-mode" "\
@@ -29967,8 +30019,8 @@ Key bindings specific to `verilog-mode-map' are:
 
 ;;;***
 
-;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (21640
+;;;;;;  32530 994334 458000))
 ;;; Generated autoloads from progmodes/vhdl-mode.el
 
 (autoload 'vhdl-mode "vhdl-mode" "\
@@ -30522,8 +30574,8 @@ Key bindings:
 
 ;;;***
 
-;;;### (autoloads nil "viet-util" "language/viet-util.el" (21607
-;;;;;;  54478 300138 641000))
+;;;### (autoloads nil "viet-util" "language/viet-util.el" (21604
+;;;;;;  48550 157934 220000))
 ;;; Generated autoloads from language/viet-util.el
 
 (autoload 'viet-encode-viscii-char "viet-util" "\
@@ -30567,7 +30619,7 @@ Convert Vietnamese characters of the current buffer to 
`VIQR' mnemonics.
 
 ;;;***
 
-;;;### (autoloads nil "view" "view.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "view" "view.el" (21604 48550 437934 230000))
 ;;; Generated autoloads from view.el
 
 (defvar view-remove-frame-by-deleting t "\
@@ -30823,8 +30875,8 @@ Exit View mode and make the current buffer editable.
 
 ;;;***
 
-;;;### (autoloads nil "viper" "emulation/viper.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "viper" "emulation/viper.el" (21604 48550 33934
+;;;;;;  215000))
 ;;; Generated autoloads from emulation/viper.el
 (push (purecopy '(viper 3 14 1)) package--builtin-versions)
 
@@ -30841,8 +30893,8 @@ Turn on Viper emulation of Vi in Emacs. See Info node 
`(viper)Top'.
 
 ;;;***
 
-;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21607
-;;;;;;  54477 800124 118000))
+;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21604
+;;;;;;  48550 25934 215000))
 ;;; Generated autoloads from emacs-lisp/warnings.el
 
 (defvar warning-prefix-function nil "\
@@ -30932,7 +30984,7 @@ this is equivalent to `display-warning', using
 
 ;;;***
 
-;;;### (autoloads nil "wdired" "wdired.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "wdired" "wdired.el" (21604 48550 441934 230000))
 ;;; Generated autoloads from wdired.el
 (push (purecopy '(wdired 2 0)) package--builtin-versions)
 
@@ -30950,8 +31002,8 @@ See `wdired-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "webjump" "net/webjump.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "webjump" "net/webjump.el" (21604 48550 233934
+;;;;;;  222000))
 ;;; Generated autoloads from net/webjump.el
 
 (autoload 'webjump "webjump" "\
@@ -30967,8 +31019,8 @@ Please submit bug reports and other feedback to the 
author, Neil W. Van Dyke
 
 ;;;***
 
-;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21607
-;;;;;;  54478 800121 42000))
+;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21604
+;;;;;;  48550 365934 227000))
 ;;; Generated autoloads from progmodes/which-func.el
  (put 'which-func-format 'risky-local-variable t)
  (put 'which-func-current 'risky-local-variable t)
@@ -30998,8 +31050,8 @@ in certain major modes.
 
 ;;;***
 
-;;;### (autoloads nil "whitespace" "whitespace.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "whitespace" "whitespace.el" (21631 35966 927121
+;;;;;;  870000))
 ;;; Generated autoloads from whitespace.el
 (push (purecopy '(whitespace 13 2 2)) package--builtin-versions)
 
@@ -31367,8 +31419,8 @@ cleaning up these problems.
 
 ;;;***
 
-;;;### (autoloads nil "wid-browse" "wid-browse.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "wid-browse" "wid-browse.el" (21604 48550 441934
+;;;;;;  230000))
 ;;; Generated autoloads from wid-browse.el
 
 (autoload 'widget-browse-at "wid-browse" "\
@@ -31396,8 +31448,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "wid-edit" "wid-edit.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "wid-edit" "wid-edit.el" (21637 50476 687217
+;;;;;;  122000))
 ;;; Generated autoloads from wid-edit.el
 
 (autoload 'widgetp "wid-edit" "\
@@ -31439,8 +31491,8 @@ Setup current buffer so editing string widgets works.
 
 ;;;***
 
-;;;### (autoloads nil "windmove" "windmove.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "windmove" "windmove.el" (21604 48550 441934
+;;;;;;  230000))
 ;;; Generated autoloads from windmove.el
 
 (autoload 'windmove-left "windmove" "\
@@ -31492,7 +31544,7 @@ Default MODIFIER is 'shift.
 
 ;;;***
 
-;;;### (autoloads nil "winner" "winner.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "winner" "winner.el" (21604 48550 445934 230000))
 ;;; Generated autoloads from winner.el
 
 (defvar winner-mode nil "\
@@ -31515,7 +31567,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG 
is `toggle'.
 
 ;;;***
 
-;;;### (autoloads nil "woman" "woman.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "woman" "woman.el" (21604 48550 445934 230000))
 ;;; Generated autoloads from woman.el
 (push (purecopy '(woman 0 551)) package--builtin-versions)
 
@@ -31564,7 +31616,7 @@ Default bookmark handler for Woman buffers.
 
 ;;;***
 
-;;;### (autoloads nil "xml" "xml.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "xml" "xml.el" (21604 48550 445934 230000))
 ;;; Generated autoloads from xml.el
 
 (autoload 'xml-parse-file "xml" "\
@@ -31620,8 +31672,8 @@ Both features can be combined by providing a cons cell
 
 ;;;***
 
-;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21607 54478 300138
-;;;;;;  641000))
+;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21604 48550 241934
+;;;;;;  223000))
 ;;; Generated autoloads from nxml/xmltok.el
 
 (autoload 'xmltok-get-declared-encoding-position "xmltok" "\
@@ -31639,8 +31691,52 @@ If LIMIT is non-nil, then do not consider characters 
beyond LIMIT.
 
 ;;;***
 
-;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "xref" "progmodes/xref.el" (21660 28432 372929
+;;;;;;  801000))
+;;; Generated autoloads from progmodes/xref.el
+
+(autoload 'xref-pop-marker-stack "xref" "\
+Pop back to where \\[xref-find-definitions] was last invoked.
+
+\(fn)" t nil)
+
+(autoload 'xref-find-definitions "xref" "\
+Find the definition of the identifier at point.
+With prefix argument, prompt for the identifier.
+
+\(fn IDENTIFIER)" t nil)
+
+(autoload 'xref-find-definitions-other-window "xref" "\
+Like `xref-find-definitions' but switch to the other window.
+
+\(fn IDENTIFIER)" t nil)
+
+(autoload 'xref-find-definitions-other-frame "xref" "\
+Like `xref-find-definitions' but switch to the other frame.
+
+\(fn IDENTIFIER)" t nil)
+
+(autoload 'xref-find-references "xref" "\
+Find references to the identifier at point.
+With prefix argument, prompt for the identifier.
+
+\(fn IDENTIFIER)" t nil)
+
+(autoload 'xref-find-apropos "xref" "\
+Find all meaningful symbols that match PATTERN.
+The argument has the same meaning as in `apropos'.
+
+\(fn PATTERN)" t nil)
+ (define-key esc-map "." #'xref-find-definitions)
+ (define-key esc-map "," #'xref-pop-marker-stack)
+ (define-key esc-map [?\C-.] #'xref-find-apropos)
+ (define-key ctl-x-4-map "." #'xref-find-definitions-other-window)
+ (define-key ctl-x-5-map "." #'xref-find-definitions-other-frame)
+
+;;;***
+
+;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21604 48550 445934
+;;;;;;  230000))
 ;;; Generated autoloads from xt-mouse.el
 
 (defvar xterm-mouse-mode nil "\
@@ -31669,7 +31765,7 @@ down the SHIFT key while pressing the mouse button.
 
 ;;;***
 
-;;;### (autoloads nil "yenc" "gnus/yenc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "yenc" "gnus/yenc.el" (21604 48550 121934 218000))
 ;;; Generated autoloads from gnus/yenc.el
 
 (autoload 'yenc-decode-region "yenc" "\
@@ -31684,7 +31780,7 @@ Extract file name from an yenc header.
 
 ;;;***
 
-;;;### (autoloads nil "zone" "play/zone.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "zone" "play/zone.el" (21604 48550 309934 225000))
 ;;; Generated autoloads from play/zone.el
 
 (autoload 'zone "zone" "\
@@ -31730,9 +31826,11 @@ Zone out, completely.
 ;;;;;;  "cedet/ede/system.el" "cedet/ede/util.el" "cedet/semantic/analyze.el"
 ;;;;;;  "cedet/semantic/analyze/complete.el" "cedet/semantic/analyze/debug.el"
 ;;;;;;  "cedet/semantic/analyze/fcn.el" "cedet/semantic/analyze/refs.el"
-;;;;;;  "cedet/semantic/bovine.el" "cedet/semantic/bovine/c.el" 
"cedet/semantic/bovine/debug.el"
+;;;;;;  "cedet/semantic/bovine.el" "cedet/semantic/bovine/c-by.el"
+;;;;;;  "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el"
 ;;;;;;  "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el"
-;;;;;;  "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm.el"
+;;;;;;  "cedet/semantic/bovine/make-by.el" "cedet/semantic/bovine/make.el"
+;;;;;;  "cedet/semantic/bovine/scm-by.el" "cedet/semantic/bovine/scm.el"
 ;;;;;;  "cedet/semantic/chart.el" "cedet/semantic/complete.el" 
"cedet/semantic/ctxt.el"
 ;;;;;;  "cedet/semantic/db-debug.el" "cedet/semantic/db-ebrowse.el"
 ;;;;;;  "cedet/semantic/db-el.el" "cedet/semantic/db-file.el" 
"cedet/semantic/db-find.el"
@@ -31755,38 +31853,41 @@ Zone out, completely.
 ;;;;;;  "cedet/semantic/tag.el" "cedet/semantic/texi.el" 
"cedet/semantic/util-modes.el"
 ;;;;;;  "cedet/semantic/util.el" "cedet/semantic/wisent.el" 
"cedet/semantic/wisent/comp.el"
 ;;;;;;  "cedet/semantic/wisent/java-tags.el" 
"cedet/semantic/wisent/javascript.el"
-;;;;;;  "cedet/semantic/wisent/python.el" "cedet/semantic/wisent/wisent.el"
-;;;;;;  "cedet/srecode/args.el" "cedet/srecode/compile.el" 
"cedet/srecode/cpp.el"
-;;;;;;  "cedet/srecode/ctxt.el" "cedet/srecode/dictionary.el" 
"cedet/srecode/document.el"
+;;;;;;  "cedet/semantic/wisent/javat-wy.el" "cedet/semantic/wisent/js-wy.el"
+;;;;;;  "cedet/semantic/wisent/python-wy.el" "cedet/semantic/wisent/python.el"
+;;;;;;  "cedet/semantic/wisent/wisent.el" "cedet/srecode/args.el"
+;;;;;;  "cedet/srecode/compile.el" "cedet/srecode/cpp.el" 
"cedet/srecode/ctxt.el"
+;;;;;;  "cedet/srecode/dictionary.el" "cedet/srecode/document.el"
 ;;;;;;  "cedet/srecode/el.el" "cedet/srecode/expandproto.el" 
"cedet/srecode/extract.el"
 ;;;;;;  "cedet/srecode/fields.el" "cedet/srecode/filters.el" 
"cedet/srecode/find.el"
 ;;;;;;  "cedet/srecode/getset.el" "cedet/srecode/insert.el" 
"cedet/srecode/java.el"
 ;;;;;;  "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" 
"cedet/srecode/mode.el"
-;;;;;;  "cedet/srecode/semantic.el" "cedet/srecode/srt.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-custom.el"
-;;;;;;  "emacs-lisp/eieio-datadebug.el" "emacs-lisp/eieio-opt.el"
-;;;;;;  "emacs-lisp/eieio-speedbar.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"
+;;;;;;  "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" 
"cedet/srecode/srt.el"
+;;;;;;  "cedet/srecode/table.el" "cedet/srecode/template.el" 
"cedet/srecode/texi.el"
+;;;;;;  "cus-dep.el" "cus-load.el" "dframe.el" "dired-aux.el" "dired-x.el"
+;;;;;;  "dom.el" "dos-fns.el" "dos-vars.el" "dos-w32.el" "dynamic-setting.el"
+;;;;;;  "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" 
"emacs-lisp/byte-opt.el"
+;;;;;;  "emacs-lisp/cl-extra.el" "emacs-lisp/cl-loaddefs.el" 
"emacs-lisp/cl-macs.el"
+;;;;;;  "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el"
+;;;;;;  "emacs-lisp/eieio-custom.el" "emacs-lisp/eieio-datadebug.el"
+;;;;;;  "emacs-lisp/eieio-opt.el" "emacs-lisp/eieio-speedbar.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" "finder-inf.el" "format-spec.el"
 ;;;;;;  "fringe.el" "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el"
 ;;;;;;  "gnus/gnus-bcklg.el" "gnus/gnus-cite.el" "gnus/gnus-cloud.el"
 ;;;;;;  "gnus/gnus-cus.el" "gnus/gnus-demon.el" "gnus/gnus-dup.el"
@@ -31810,28 +31911,42 @@ Zone out, completely.
 ;;;;;;  "gnus/smime.el" "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el"
 ;;;;;;  "hfy-cmap.el" "ibuf-ext.el" "international/cp51932.el" 
"international/eucjp-ms.el"
 ;;;;;;  "international/fontset.el" "international/iso-ascii.el" 
"international/ja-dic-cnv.el"
-;;;;;;  "international/ja-dic-utl.el" "international/ogonek.el" "kermit.el"
-;;;;;;  "language/hanja-util.el" "language/thai-word.el" "ldefs-boot.el"
-;;;;;;  "leim/quail/arabic.el" "leim/quail/croatian.el" 
"leim/quail/cyril-jis.el"
-;;;;;;  "leim/quail/cyrillic.el" "leim/quail/czech.el" "leim/quail/ethiopic.el"
-;;;;;;  "leim/quail/georgian.el" "leim/quail/greek.el" 
"leim/quail/hanja-jis.el"
-;;;;;;  "leim/quail/hanja.el" "leim/quail/hanja3.el" "leim/quail/hebrew.el"
-;;;;;;  "leim/quail/indian.el" "leim/quail/ipa-praat.el" "leim/quail/ipa.el"
-;;;;;;  "leim/quail/japanese.el" "leim/quail/lao.el" "leim/quail/latin-alt.el"
-;;;;;;  "leim/quail/latin-ltx.el" "leim/quail/latin-post.el" 
"leim/quail/latin-pre.el"
-;;;;;;  "leim/quail/lrt.el" "leim/quail/persian.el" "leim/quail/py-punct.el"
-;;;;;;  "leim/quail/pypunct-b5.el" "leim/quail/rfc1345.el" 
"leim/quail/sgml-input.el"
+;;;;;;  "international/ja-dic-utl.el" "international/ogonek.el" 
"international/uni-bidi.el"
+;;;;;;  "international/uni-brackets.el" "international/uni-category.el"
+;;;;;;  "international/uni-combining.el" "international/uni-comment.el"
+;;;;;;  "international/uni-decimal.el" "international/uni-decomposition.el"
+;;;;;;  "international/uni-digit.el" "international/uni-lowercase.el"
+;;;;;;  "international/uni-mirrored.el" "international/uni-name.el"
+;;;;;;  "international/uni-numeric.el" "international/uni-old-name.el"
+;;;;;;  "international/uni-titlecase.el" "international/uni-uppercase.el"
+;;;;;;  "kermit.el" "language/hanja-util.el" "language/thai-word.el"
+;;;;;;  "ldefs-boot.el" "leim/ja-dic/ja-dic.el" "leim/quail/4Corner.el"
+;;;;;;  "leim/quail/ARRAY30.el" "leim/quail/CCDOSPY.el" 
"leim/quail/CTLau-b5.el"
+;;;;;;  "leim/quail/CTLau.el" "leim/quail/ECDICT.el" "leim/quail/ETZY.el"
+;;;;;;  "leim/quail/PY-b5.el" "leim/quail/PY.el" "leim/quail/Punct-b5.el"
+;;;;;;  "leim/quail/Punct.el" "leim/quail/QJ-b5.el" "leim/quail/QJ.el"
+;;;;;;  "leim/quail/SW.el" "leim/quail/TONEPY.el" "leim/quail/ZIRANMA.el"
+;;;;;;  "leim/quail/ZOZY.el" "leim/quail/arabic.el" "leim/quail/croatian.el"
+;;;;;;  "leim/quail/cyril-jis.el" "leim/quail/cyrillic.el" 
"leim/quail/czech.el"
+;;;;;;  "leim/quail/ethiopic.el" "leim/quail/georgian.el" "leim/quail/greek.el"
+;;;;;;  "leim/quail/hanja-jis.el" "leim/quail/hanja.el" "leim/quail/hanja3.el"
+;;;;;;  "leim/quail/hebrew.el" "leim/quail/indian.el" "leim/quail/ipa-praat.el"
+;;;;;;  "leim/quail/ipa.el" "leim/quail/japanese.el" "leim/quail/lao.el"
+;;;;;;  "leim/quail/latin-alt.el" "leim/quail/latin-ltx.el" 
"leim/quail/latin-post.el"
+;;;;;;  "leim/quail/latin-pre.el" "leim/quail/lrt.el" "leim/quail/persian.el"
+;;;;;;  "leim/quail/py-punct.el" "leim/quail/pypunct-b5.el" 
"leim/quail/quick-b5.el"
+;;;;;;  "leim/quail/quick-cns.el" "leim/quail/rfc1345.el" 
"leim/quail/sgml-input.el"
 ;;;;;;  "leim/quail/sisheng.el" "leim/quail/slovak.el" 
"leim/quail/symbol-ksc.el"
-;;;;;;  "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/viqr.el"
-;;;;;;  "leim/quail/vntelex.el" "leim/quail/vnvni.el" "leim/quail/welsh.el"
-;;;;;;  "loadup.el" "mail/blessmail.el" "mail/mailheader.el" "mail/mspools.el"
-;;;;;;  "mail/rfc2368.el" "mail/rfc822.el" "mail/rmail-spam-filter.el"
-;;;;;;  "mail/rmailedit.el" "mail/rmailkwd.el" "mail/rmailmm.el"
-;;;;;;  "mail/rmailmsc.el" "mail/rmailsort.el" "mail/rmailsum.el"
-;;;;;;  "mail/undigest.el" "mh-e/mh-acros.el" "mh-e/mh-alias.el"
-;;;;;;  "mh-e/mh-buffers.el" "mh-e/mh-compat.el" "mh-e/mh-funcs.el"
-;;;;;;  "mh-e/mh-gnus.el" "mh-e/mh-identity.el" "mh-e/mh-inc.el"
-;;;;;;  "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el"
+;;;;;;  "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/tsang-b5.el"
+;;;;;;  "leim/quail/tsang-cns.el" "leim/quail/viqr.el" "leim/quail/vntelex.el"
+;;;;;;  "leim/quail/vnvni.el" "leim/quail/welsh.el" "loadup.el" 
"mail/blessmail.el"
+;;;;;;  "mail/mailheader.el" "mail/mspools.el" "mail/rfc2368.el"
+;;;;;;  "mail/rfc822.el" "mail/rmail-spam-filter.el" "mail/rmailedit.el"
+;;;;;;  "mail/rmailkwd.el" "mail/rmailmm.el" "mail/rmailmsc.el" 
"mail/rmailsort.el"
+;;;;;;  "mail/rmailsum.el" "mail/undigest.el" "mh-e/mh-acros.el"
+;;;;;;  "mh-e/mh-alias.el" "mh-e/mh-buffers.el" "mh-e/mh-compat.el"
+;;;;;;  "mh-e/mh-funcs.el" "mh-e/mh-gnus.el" "mh-e/mh-identity.el"
+;;;;;;  "mh-e/mh-inc.el" "mh-e/mh-junk.el" "mh-e/mh-letter.el" 
"mh-e/mh-limit.el"
 ;;;;;;  "mh-e/mh-loaddefs.el" "mh-e/mh-mime.el" "mh-e/mh-print.el"
 ;;;;;;  "mh-e/mh-scan.el" "mh-e/mh-search.el" "mh-e/mh-seq.el" 
"mh-e/mh-show.el"
 ;;;;;;  "mh-e/mh-speed.el" "mh-e/mh-thread.el" "mh-e/mh-tool-bar.el"
@@ -31900,8 +32015,8 @@ Zone out, completely.
 ;;;;;;  "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el"
 ;;;;;;  "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el"
 ;;;;;;  "vc/vc-filewise.el" "vcursor.el" "vt-control.el" "vt100-led.el"
-;;;;;;  "w32-fns.el" "w32-vars.el" "x-dnd.el") (21628 46363 926675
-;;;;;;  999000))
+;;;;;;  "w32-fns.el" "w32-vars.el" "x-dnd.el") (21660 28703 181624
+;;;;;;  391000))
 
 ;;;***
 
diff --git a/lisp/let-alist.el b/lisp/let-alist.el
index 7271e39..d214528 100644
--- a/lisp/let-alist.el
+++ b/lisp/let-alist.el
@@ -77,7 +77,7 @@ symbol, and each cdr is the same symbol without the `.'."
         (mapcar #'let-alist--deep-dot-search data)))))
 
 (defun let-alist--access-sexp (symbol variable)
-  "Return a sexp used to acess SYMBOL inside VARIABLE."
+  "Return a sexp used to access SYMBOL inside VARIABLE."
   (let* ((clean (let-alist--remove-dot symbol))
          (name (symbol-name clean)))
     (if (string-match "\\`\\." name)
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index e1e6b0e..9198901 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1818,8 +1818,9 @@ variables.")
              ,(if (eq (selected-window) (minibuffer-window))
                   'display-buffer-at-bottom
                 'display-buffer-below-selected))
-           ,(when temp-buffer-resize-mode
-              '(window-height . resize-temp-buffer-window))
+           ,(if temp-buffer-resize-mode
+                '(window-height . resize-temp-buffer-window)
+              '(window-height . shrink-window-if-larger-than-buffer))
            ,(when temp-buffer-resize-mode
               '(preserve-size . (nil . t))))
           nil
diff --git a/lisp/net/tramp-gw.el b/lisp/net/tramp-gw.el
index 0decd88..e21aaf7 100644
--- a/lisp/net/tramp-gw.el
+++ b/lisp/net/tramp-gw.el
@@ -195,11 +195,12 @@ instead of the host name declared in TARGET-VEC."
     (setq tramp-gw-gw-proc
          (funcall
           socks-function
-          (tramp-get-connection-name gw-vec)
-          (tramp-get-connection-buffer gw-vec)
+          (let ((tramp-verbose 0)) (tramp-get-connection-name gw-vec))
+          (let ((tramp-verbose 0)) (tramp-get-connection-buffer gw-vec))
           (tramp-file-name-real-host target-vec)
           (tramp-file-name-port target-vec)))
     (set-process-sentinel tramp-gw-gw-proc 'tramp-gw-gw-proc-sentinel)
+    (set-process-coding-system tramp-gw-gw-proc 'binary 'binary)
     (tramp-compat-set-process-query-on-exit-flag tramp-gw-gw-proc nil)
     (tramp-message
      vec 4 "Opened %s process `%s'"
@@ -260,6 +261,10 @@ authentication is requested from proxy server, provide it."
          (200 (setq found t))
          ;; We need basic authentication.
          (401 (setq authentication (tramp-gw-basic-authentication nil first)))
+         ;; Access forbidden.
+         (403 (tramp-error-with-buffer
+               (current-buffer) tramp-gw-vector 'file-error
+               "Connection to %s:%d forbidden." host service))
          ;; Target host not found.
          (404 (tramp-error-with-buffer
                (current-buffer) tramp-gw-vector 'file-error
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index ba7b7d9..6fc2eff 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -2471,8 +2471,12 @@ The method used must be an out-of-band method."
                   (mapconcat 'identity (process-command p) " "))
                  (tramp-set-connection-property p "vector" orig-vec)
                  (tramp-compat-set-process-query-on-exit-flag p nil)
-                 (tramp-process-actions
-                  p v nil tramp-actions-copy-out-of-band)
+
+                 ;; We must adapt `tramp-local-end-of-line' for
+                 ;; sending the password.
+                 (let ((tramp-local-end-of-line tramp-rsh-end-of-line))
+                   (tramp-process-actions
+                    p v nil tramp-actions-copy-out-of-band))
 
                  ;; Check the return code.
                  (goto-char (point-max))
@@ -2883,7 +2887,7 @@ the result will be a local, non-Tramp, file name."
           (name1 name)
           (i 0)
           ;; We do not want to raise an error when
-          ;; `start-file-process' has been started several time in
+          ;; `start-file-process' has been started several times in
           ;; `eshell' and friends.
           (tramp-current-connection nil))
 
@@ -4510,7 +4514,8 @@ Gateway hops are already opened."
        ;; Therefore, we must remember the gateway vector.  But we
        ;; cannot do it as connection property, because it shouldn't
        ;; be persistent.  And we have no started process yet either.
-       (tramp-set-file-property (car target-alist) "" "gateway" hop)))
+       (let ((tramp-verbose 0))
+         (tramp-set-file-property (car target-alist) "" "gateway" hop))))
 
     ;; Foreign and out-of-band methods are not supported for multi-hops.
     (when (cdr target-alist)
@@ -4687,7 +4692,8 @@ connection if a previous connection has died for some 
reason."
                           l-method 'tramp-connection-timeout))
                         (gw-args
                          (tramp-get-method-parameter l-method 'tramp-gw-args))
-                        (gw (tramp-get-file-property hop "" "gateway" nil))
+                        (gw (let ((tramp-verbose 0))
+                              (tramp-get-file-property hop "" "gateway" nil)))
                         (g-method (and gw (tramp-file-name-method gw)))
                         (g-user (and gw (tramp-file-name-user gw)))
                         (g-host (and gw (tramp-file-name-real-host gw)))
@@ -4715,8 +4721,10 @@ connection if a previous connection has died for some 
reason."
                      (setq login-args (append async-args login-args)))
 
                    ;; Add gateway arguments if necessary.
-                   (when (and gw gw-args)
-                     (setq login-args (append gw-args login-args)))
+                   (when gw
+                     (tramp-set-connection-property p "gateway" t)
+                     (when gw-args
+                       (setq login-args (append gw-args login-args))))
 
                    ;; Check for port number.  Until now, there's no
                    ;; need for handling like method, user, host.
@@ -4902,8 +4910,9 @@ FMT and ARGS which are passed to `error'."
   (or (tramp-send-command-and-check vec command)
       (apply 'tramp-error vec 'file-error fmt args)))
 
-(defun tramp-send-command-and-read (vec command &optional noerror)
+(defun tramp-send-command-and-read (vec command &optional noerror marker)
   "Run COMMAND and return the output, which must be a Lisp expression.
+If MARKER is a regexp, read the output after that string.
 In case there is no valid Lisp expression and NOERROR is nil, it
 raises an error."
   (when (if noerror
@@ -4911,8 +4920,17 @@ raises an error."
          (tramp-barf-unless-okay
           vec command "`%s' returns with error" command))
     (with-current-buffer (tramp-get-connection-buffer vec)
-      ;; Read the expression.
       (goto-char (point-min))
+      ;; Read the marker.
+      (when (stringp marker)
+       (condition-case nil
+           (re-search-forward marker)
+         (error (unless noerror
+                  (tramp-error
+                   vec 'file-error
+                   "`%s' does not return the marker `%s': `%s'"
+                   command marker (buffer-string))))))
+      ;; Read the expression.
       (condition-case nil
          (prog1 (read (current-buffer))
            ;; Error handling.
@@ -5064,25 +5082,22 @@ Return ATTR."
                   "/bin:/usr/bin")
                  "/bin:/usr/bin"))))
           (own-remote-path
-           ;; We cannot apply `tramp-send-command-and-read' because
-           ;; the login shell could return more than just the $PATH
-           ;; string.  So we emulate that function.
+           ;; 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
+             (tramp-send-command-and-read
               vec
               (format
-               "%s -l %s 'echo \\\"$PATH\\\"'"
+               "%s -l %s 'echo %s \\\"$PATH\\\"'"
                (tramp-get-method-parameter
                 (tramp-file-name-method vec) 'tramp-remote-shell)
                (mapconcat
                 'identity
                 (tramp-get-method-parameter
                  (tramp-file-name-method vec) 'tramp-remote-shell-args)
-                " ")))
-             (with-current-buffer (tramp-get-connection-buffer vec)
-               (goto-char (point-max))
-               (forward-line -1)
-               (read (current-buffer))))))
+                " ")
+               (tramp-shell-quote-argument tramp-end-of-heredoc))
+              nil (regexp-quote tramp-end-of-heredoc)))))
 
       ;; Replace place holder `tramp-default-remote-path'.
       (when elt1
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 2cf9d45..3c8b5bb 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1610,7 +1610,7 @@ an input event arrives.  The other arguments are passed 
to `tramp-error'."
          (let ((enable-recursive-minibuffers t))
            ;; `tramp-error' does not show messages.  So we must do it
            ;; ourselves.
-           (message fmt-string arguments)
+           (apply 'message fmt-string arguments)
            ;; Show buffer.
            (pop-to-buffer buf)
            (discard-input)
@@ -3086,115 +3086,118 @@ User is always nil."
   (setq filename (expand-file-name filename))
   (let (result local-copy remote-copy)
     (with-parsed-tramp-file-name filename nil
-      (with-tramp-progress-reporter
-         v 3 (format "Inserting `%s'" filename)
-       (unwind-protect
-           (if (not (file-exists-p filename))
-               (progn
-                 ;; We don't raise a Tramp error, because it might be
-                 ;; suppressed, like in `find-file-noselect-1'.
-                 (tramp-message
-                  v 1 "File not `%s' found on remote host" filename)
-                 (signal 'file-error
-                         (list "File not found on remote host" filename)))
-
-             (if (and (tramp-local-host-p v)
-                      (let (file-name-handler-alist)
-                        (file-readable-p localname)))
-                 ;; Short track: if we are on the local host, we can
-                 ;; run directly.
-                 (setq result
-                       (tramp-run-real-handler
-                        'insert-file-contents
-                        (list localname visit beg end replace)))
-
-               ;; When we shall insert only a part of the file, we
-               ;; copy this part.  This works only for the shell file
-               ;; name handlers.
-               (when (and (or beg end)
-                          (tramp-get-method-parameter
-                           (tramp-file-name-method v) 'tramp-login-program))
-                 (setq remote-copy (tramp-make-tramp-temp-file v))
-                 ;; This is defined in tramp-sh.el.  Let's assume
-                 ;; this is loaded already.
-                 (tramp-compat-funcall
-                  'tramp-send-command
-                  v
-                  (cond
-                   ((and beg end)
-                    (format "dd bs=1 skip=%d if=%s count=%d of=%s"
-                            beg (tramp-shell-quote-argument localname)
-                            (- end beg) remote-copy))
-                   (beg
-                    (format "dd bs=1 skip=%d if=%s of=%s"
-                            beg (tramp-shell-quote-argument localname)
-                            remote-copy))
-                   (end
-                    (format "dd bs=1 count=%d if=%s of=%s"
-                            end (tramp-shell-quote-argument localname)
-                            remote-copy))))
-                 (setq tramp-temp-buffer-file-name nil beg nil end nil))
-
-               ;; `insert-file-contents-literally' takes care to
-               ;; avoid calling jka-compr.  By let-binding
-               ;; `inhibit-file-name-operation', we propagate that
-               ;; care to the `file-local-copy' operation.
-               (setq local-copy
-                     (let ((inhibit-file-name-operation
-                            (when (eq inhibit-file-name-operation
-                                      'insert-file-contents)
-                              'file-local-copy)))
-                       (cond
-                        ((stringp remote-copy)
-                         (file-local-copy
-                          (tramp-make-tramp-file-name
-                           method user host remote-copy)))
-                        ((stringp tramp-temp-buffer-file-name)
-                         (copy-file filename tramp-temp-buffer-file-name 'ok)
-                         tramp-temp-buffer-file-name)
-                        (t (file-local-copy filename)))))
-
-               ;; When the file is not readable for the owner, it
-               ;; cannot be inserted, even if it is readable for the
-               ;; group or for everybody.
-               (set-file-modes
-                local-copy (tramp-compat-octal-to-decimal "0600"))
-
-               (when (and (null remote-copy)
-                          (tramp-get-method-parameter
-                           method 'tramp-copy-keep-tmpfile))
-                 ;; We keep the local file for performance reasons,
-                 ;; useful for "rsync".
-                 (setq tramp-temp-buffer-file-name local-copy))
-
-               ;; We must ensure that `file-coding-system-alist'
-               ;; matches `local-copy'.  We must also use `visit',
-               ;; otherwise there might be an error in the
-               ;; `revert-buffer' function under XEmacs.
-               (let ((file-coding-system-alist
-                      (tramp-find-file-name-coding-system-alist
-                       filename local-copy)))
-                 (setq result
-                       (insert-file-contents
-                        local-copy visit beg end replace)))))
-
-         ;; Save exit.
-         (progn
-           (when visit
-             (setq buffer-file-name filename)
-             (setq buffer-read-only (not (file-writable-p filename)))
-             (set-visited-file-modtime)
-             (set-buffer-modified-p nil))
-           (when (and (stringp local-copy)
-                      (or remote-copy (null tramp-temp-buffer-file-name)))
-             (delete-file local-copy))
-           (when (stringp remote-copy)
-             (delete-file
-              (tramp-make-tramp-file-name method user host remote-copy)))))))
-
-    ;; Result.
-    (list (expand-file-name filename)
-         (cadr result))))
+      (unwind-protect
+         (if (not (file-exists-p filename))
+             (tramp-error
+              v 'file-error "File `%s' not found on remote host" filename)
+
+           (with-tramp-progress-reporter
+               v 3 (format "Inserting `%s'" filename)
+             (condition-case err
+                 (if (and (tramp-local-host-p v)
+                          (let (file-name-handler-alist)
+                            (file-readable-p localname)))
+                     ;; Short track: if we are on the local host, we can
+                     ;; run directly.
+                     (setq result
+                           (tramp-run-real-handler
+                            'insert-file-contents
+                            (list localname visit beg end replace)))
+
+                   ;; When we shall insert only a part of the file, we
+                   ;; copy this part.  This works only for the shell file
+                   ;; name handlers.
+                   (when (and (or beg end)
+                              (tramp-get-method-parameter
+                               (tramp-file-name-method v)
+                               'tramp-login-program))
+                     (setq remote-copy (tramp-make-tramp-temp-file v))
+                     ;; This is defined in tramp-sh.el.  Let's assume
+                     ;; this is loaded already.
+                     (tramp-compat-funcall
+                      'tramp-send-command
+                      v
+                      (cond
+                       ((and beg end)
+                        (format "dd bs=1 skip=%d if=%s count=%d of=%s"
+                                beg (tramp-shell-quote-argument localname)
+                                (- end beg) remote-copy))
+                       (beg
+                        (format "dd bs=1 skip=%d if=%s of=%s"
+                                beg (tramp-shell-quote-argument localname)
+                                remote-copy))
+                       (end
+                        (format "dd bs=1 count=%d if=%s of=%s"
+                                end (tramp-shell-quote-argument localname)
+                                remote-copy))))
+                     (setq tramp-temp-buffer-file-name nil beg nil end nil))
+
+                   ;; `insert-file-contents-literally' takes care to
+                   ;; avoid calling jka-compr.  By let-binding
+                   ;; `inhibit-file-name-operation', we propagate that
+                   ;; care to the `file-local-copy' operation.
+                   (setq local-copy
+                         (let ((inhibit-file-name-operation
+                                (when (eq inhibit-file-name-operation
+                                          'insert-file-contents)
+                                  'file-local-copy)))
+                           (cond
+                            ((stringp remote-copy)
+                             (file-local-copy
+                              (tramp-make-tramp-file-name
+                               method user host remote-copy)))
+                            ((stringp tramp-temp-buffer-file-name)
+                             (copy-file
+                              filename tramp-temp-buffer-file-name 'ok)
+                             tramp-temp-buffer-file-name)
+                            (t (file-local-copy filename)))))
+
+                   ;; When the file is not readable for the owner, it
+                   ;; cannot be inserted, even if it is readable for the
+                   ;; group or for everybody.
+                   (set-file-modes
+                    local-copy (tramp-compat-octal-to-decimal "0600"))
+
+                   (when (and (null remote-copy)
+                              (tramp-get-method-parameter
+                               method 'tramp-copy-keep-tmpfile))
+                     ;; We keep the local file for performance reasons,
+                     ;; useful for "rsync".
+                     (setq tramp-temp-buffer-file-name local-copy))
+
+                   ;; We must ensure that `file-coding-system-alist'
+                   ;; matches `local-copy'.  We must also use `visit',
+                   ;; otherwise there might be an error in the
+                   ;; `revert-buffer' function under XEmacs.
+                   (let ((file-coding-system-alist
+                          (tramp-find-file-name-coding-system-alist
+                           filename local-copy)))
+                     (setq result
+                           (insert-file-contents
+                            local-copy visit beg end replace))))
+               (error
+                (add-hook 'find-file-not-found-functions
+                          `(lambda () (signal ',(car err) ',(cdr err)))
+                          nil t)
+                (signal (car err) (cdr err))))))
+
+       ;; Save exit.
+       (progn
+         (when visit
+           (setq buffer-file-name filename)
+           (setq buffer-read-only (not (file-writable-p filename)))
+           (set-visited-file-modtime)
+           (set-buffer-modified-p nil))
+         (when (and (stringp local-copy)
+                    (or remote-copy (null tramp-temp-buffer-file-name)))
+           (delete-file local-copy))
+         (when (stringp remote-copy)
+           (delete-file
+            (tramp-make-tramp-file-name method user host remote-copy)))))
+
+      ;; Result.
+      (list (expand-file-name filename)
+           (cadr result)))))
 
 (defun tramp-handle-load (file &optional noerror nomessage nosuffix 
must-suffix)
   "Like `load' for Tramp files."
@@ -3609,15 +3612,19 @@ connection buffer."
 This is needed in order to hide `last-coding-system-used', which is set
 for process communication also."
   (with-current-buffer (process-buffer proc)
-    (tramp-message proc 10 "%s %s" proc (process-status proc))
-    (let (buffer-read-only last-coding-system-used)
+    ;; FIXME: If there is a gateway process, we need communication
+    ;; between several processes.  Too complicate to implement, so we
+    ;; read output from all processes.
+    (let ((p (if (tramp-get-connection-property proc "gateway" nil) nil proc))
+         buffer-read-only last-coding-system-used)
       ;; Under Windows XP, accept-process-output doesn't return
       ;; sometimes.  So we add an additional timeout.
       (with-timeout ((or timeout 1))
        (if (featurep 'xemacs)
-           (accept-process-output proc timeout timeout-msecs)
-         (accept-process-output proc timeout timeout-msecs (and proc t)))))
-    (tramp-message proc 10 "\n%s" (buffer-string))))
+           (accept-process-output p timeout timeout-msecs)
+         (accept-process-output p timeout timeout-msecs (and proc t))))
+      (tramp-message proc 10 "%s %s %s\n%s"
+                    proc (process-status proc) p (buffer-string)))))
 
 (defun tramp-check-for-regexp (proc regexp)
   "Check, whether REGEXP is contained in process buffer of PROC.
@@ -4184,25 +4191,27 @@ Invokes `password-read' if available, `read-passwd' 
else."
               ;; it's bound.  `auth-source-user-or-password' is an
               ;; obsoleted function, it has been replaced by
               ;; `auth-source-search'.
-              (and (boundp 'auth-sources)
-                   (tramp-get-connection-property
-                    v "first-password-request" nil)
-                   ;; Try with Tramp's current method.
-                   (if (fboundp 'auth-source-search)
-                       (setq auth-info
-                             (tramp-compat-funcall
-                              'auth-source-search
-                              :max 1
-                              :user (or tramp-current-user t)
-                              :host tramp-current-host
-                              :port tramp-current-method)
-                             auth-passwd (plist-get (nth 0 auth-info) :secret)
-                             auth-passwd (if (functionp auth-passwd)
-                                             (funcall auth-passwd)
-                                           auth-passwd))
-                     (tramp-compat-funcall
-                      'auth-source-user-or-password
-                      "password" tramp-current-host tramp-current-method)))
+              (ignore-errors
+                (and (boundp 'auth-sources)
+                     (tramp-get-connection-property
+                      v "first-password-request" nil)
+                     ;; Try with Tramp's current method.
+                     (if (fboundp 'auth-source-search)
+                         (setq auth-info
+                               (tramp-compat-funcall
+                                'auth-source-search
+                                :max 1
+                                :user (or tramp-current-user t)
+                                :host tramp-current-host
+                                :port tramp-current-method)
+                               auth-passwd (plist-get
+                                            (nth 0 auth-info) :secret)
+                               auth-passwd (if (functionp auth-passwd)
+                                               (funcall auth-passwd)
+                                             auth-passwd))
+                       (tramp-compat-funcall
+                        'auth-source-user-or-password
+                        "password" tramp-current-host tramp-current-method))))
               ;; Try the password cache.
               (when (functionp 'password-read)
                 (let ((password
diff --git a/lisp/org/org-ctags.el b/lisp/org/org-ctags.el
index 41775bd..faf543b 100644
--- a/lisp/org/org-ctags.el
+++ b/lisp/org/org-ctags.el
@@ -63,19 +63,19 @@
 ;; with the same name as the link; then, if unsuccessful, ask the user if
 ;; he/she wants to rebuild the 'TAGS' database and try again; then ask if
 ;; the user wishes to append 'tag' as a new toplevel heading at the end of
-;; the buffer; and finally, defer to org's default behaviour which is to
+;; the buffer; and finally, defer to org's default behavior which is to
 ;; search the entire text of the current buffer for 'tag'.
 ;;
-;; This behaviour can be modified by changing the value of
+;; This behavior can be modified by changing the value of
 ;; ORG-CTAGS-OPEN-LINK-FUNCTIONS. For example I have the following in my
-;; .emacs, which describes the same behaviour as the above paragraph with
+;; .emacs, which describes the same behavior as the above paragraph with
 ;; one difference:
 ;;
 ;; (setq org-ctags-open-link-functions
 ;;       '(org-ctags-find-tag
 ;;         org-ctags-ask-rebuild-tags-file-then-find-tag
 ;;         org-ctags-ask-append-topic
-;;         org-ctags-fail-silently))  ; <-- prevents org default behaviour
+;;         org-ctags-fail-silently))  ; <-- prevents org default behavior
 ;;
 ;;
 ;; Usage
diff --git a/lisp/org/ox-html.el b/lisp/org/ox-html.el
index a3f0b50..c952a82 100644
--- a/lisp/org/ox-html.el
+++ b/lisp/org/ox-html.el
@@ -581,7 +581,7 @@ The function must accept two parameters:
 The function should return the string to be exported.
 
 For example, the variable could be set to the following function
-in order to mimic default behaviour:
+in order to mimic default behavior:
 
 The default value simply returns the value of CONTENTS."
   :group 'org-export-html
diff --git a/lisp/org/ox-latex.el b/lisp/org/ox-latex.el
index 2c71f7d..f6f3b22 100644
--- a/lisp/org/ox-latex.el
+++ b/lisp/org/ox-latex.el
@@ -589,7 +589,7 @@ The function must accept six parameters:
 The function should return the string to be exported.
 
 For example, the variable could be set to the following function
-in order to mimic default behaviour:
+in order to mimic default behavior:
 
 \(defun org-latex-format-inlinetask \(todo type priority name tags contents\)
 \"Format an inline task element for LaTeX export.\"
diff --git a/lisp/org/ox-publish.el b/lisp/org/ox-publish.el
index efc70d2..b33ba45 100644
--- a/lisp/org/ox-publish.el
+++ b/lisp/org/ox-publish.el
@@ -228,7 +228,7 @@ If you create a site-map file, adjust the sorting like this:
   `:sitemap-sort-files'
 
     The site map is normally sorted alphabetically.  You can
-    change this behaviour setting this to `anti-chronologically',
+    change this behavior setting this to `anti-chronologically',
     `chronologically', or nil.
 
   `:sitemap-ignore-case'
diff --git a/lisp/org/ox.el b/lisp/org/ox.el
index 1327ae4..2b0978d 100644
--- a/lisp/org/ox.el
+++ b/lisp/org/ox.el
@@ -493,7 +493,7 @@ t           Allow export of math snippets."
   "The last level which is still exported as a headline.
 
 Inferior levels will usually produce itemize or enumerate lists
-when exported, but back-end behaviour may differ.
+when exported, but back-end behavior may differ.
 
 This option can also be set with the OPTIONS keyword,
 e.g. \"H:2\"."
@@ -1736,13 +1736,13 @@ Assume buffer is in Org mode.  Narrowing, if any, is 
ignored."
                      (t
                       ;; Options in `org-export-options-alist'.
                       (dolist (property (funcall find-properties key))
-                        (let ((behaviour (nth 4 (assq property options))))
+                        (let ((behavior (nth 4 (assq property options))))
                           (setq plist
                                 (plist-put
                                  plist property
                                  ;; Handle value depending on specified
                                  ;; BEHAVIOR.
-                                 (case behaviour
+                                 (case behavior
                                    (space
                                     (if (not (plist-get plist property))
                                         (org-trim val)
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index ba70f90..ac216d9 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -227,10 +227,15 @@ Blank lines separate paragraphs.  Semicolons start 
comments.
 
 \\{emacs-lisp-mode-map}"
   :group 'lisp
+  (defvar xref-find-function)
+  (defvar xref-identifier-completion-table-function)
   (lisp-mode-variables nil nil 'elisp)
   (setq imenu-case-fold-search nil)
   (setq-local eldoc-documentation-function
               #'elisp-eldoc-documentation-function)
+  (setq-local xref-find-function #'elisp-xref-find)
+  (setq-local xref-identifier-completion-table-function
+              #'elisp--xref-identifier-completion-table)
   (add-hook 'completion-at-point-functions
             #'elisp-completion-at-point nil 'local))
 
@@ -413,6 +418,7 @@ It can be quoted, or be inside a quoted form."
          (match-string 0 doc))))
 
 (declare-function find-library-name "find-func" (library))
+(declare-function find-function-library "find-func" (function &optional l-o v))
 
 (defun elisp--company-location (str)
   (let ((sym (intern-soft str)))
@@ -467,11 +473,11 @@ It can be quoted, or be inside a quoted form."
                            :company-location #'elisp--company-location))
                     ((elisp--form-quoted-p beg)
                      (list nil obarray
-                           ;; Don't include all symbols
-                           ;; (bug#16646).
+                           ;; Don't include all symbols (bug#16646).
                            :predicate (lambda (sym)
                                         (or (boundp sym)
                                             (fboundp sym)
+                                            (featurep sym)
                                             (symbol-plist sym)))
                            :annotation-function
                            (lambda (str) (if (fboundp (intern-soft str)) " 
<f>"))
@@ -548,6 +554,75 @@ It can be quoted, or be inside a quoted form."
 (define-obsolete-function-alias
   'lisp-completion-at-point 'elisp-completion-at-point "25.1")
 
+;;; Xref backend
+
+(declare-function xref-make-elisp-location "xref" (symbol type file))
+(declare-function xref-make-bogus-location "xref" (message))
+(declare-function xref-make "xref" (description location))
+
+(defun elisp-xref-find (action id)
+  (require 'find-func)
+  (pcase action
+    (`definitions
+      (let ((sym (intern-soft id)))
+        (when sym
+          (elisp--xref-find-definitions sym))))
+    (`apropos
+     (elisp--xref-find-apropos id))))
+
+(defun elisp--xref-identifier-file (type sym)
+  (pcase type
+    (`defun (when (fboundp sym)
+              (find-function-library sym)))
+    (`defvar (when (boundp sym)
+               (or (symbol-file sym 'defvar)
+                   (help-C-file-name sym 'var))))
+    (`feature (when (featurep sym)
+                (ignore-errors
+                  (find-library-name (symbol-name sym)))))
+    (`defface (when (facep sym)
+                (symbol-file sym 'defface)))))
+
+(defun elisp--xref-find-definitions (symbol)
+  (save-excursion
+    (let (lst)
+      (dolist (type '(feature defface defvar defun))
+        (let ((loc
+               (condition-case err
+                   (let ((file (elisp--xref-identifier-file type symbol)))
+                     (when file
+                       (when (string-match-p "\\.elc\\'" file)
+                         (setq file (substring file 0 -1)))
+                       (xref-make-elisp-location symbol type file)))
+                 (error
+                  (xref-make-bogus-location (error-message-string err))))))
+          (when loc
+            (push
+             (xref-make (format "(%s %s)" type symbol)
+                        loc)
+             lst))))
+      lst)))
+
+(defun elisp--xref-find-apropos (regexp)
+  (apply #'nconc
+         (let (lst)
+           (dolist (sym (apropos-internal regexp))
+            (push (elisp--xref-find-definitions sym) lst))
+           (nreverse lst))))
+
+(defvar elisp--xref-identifier-completion-table
+  (apply-partially #'completion-table-with-predicate
+                   obarray
+                   (lambda (sym)
+                     (or (boundp sym)
+                         (fboundp sym)
+                         (featurep sym)
+                         (facep sym)))
+                   'strict))
+
+(defun elisp--xref-identifier-completion-table ()
+  elisp--xref-identifier-completion-table)
+
 ;;; Elisp Interaction mode
 
 (defvar lisp-interaction-mode-map
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index b89b4cf..0be9979 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -28,6 +28,7 @@
 
 (require 'ring)
 (require 'button)
+(require 'xref)
 
 ;;;###autoload
 (defvar tags-file-name nil
@@ -141,11 +142,8 @@ Otherwise, `find-tag-default' is used."
   :group 'etags
   :type '(choice (const nil) function))
 
-(defcustom find-tag-marker-ring-length 16
-  "Length of marker rings `find-tag-marker-ring' and `tags-location-ring'."
-  :group 'etags
-  :type 'integer
-  :version "20.3")
+(define-obsolete-variable-alias 'find-tag-marker-ring-length
+  'xref-marker-ring-length "25.1")
 
 (defcustom tags-tag-face 'default
   "Face for tags in the output of `tags-apropos'."
@@ -182,15 +180,18 @@ Example value:
                       (sexp :tag "Tags to search")))
   :version "21.1")
 
-(defvar find-tag-marker-ring (make-ring find-tag-marker-ring-length)
-  "Ring of markers which are locations from which \\[find-tag] was invoked.")
+(defvaralias 'find-tag-marker-ring 'xref--marker-ring)
+(make-obsolete-variable
+ 'find-tag-marker-ring
+ "use `xref-push-marker-stack' or `xref-pop-marker-stack' instead."
+ "25.1")
 
 (defvar default-tags-table-function nil
   "If non-nil, a function to choose a default tags file for a buffer.
 This function receives no arguments and should return the default
 tags table file to use for the current buffer.")
 
-(defvar tags-location-ring (make-ring find-tag-marker-ring-length)
+(defvar tags-location-ring (make-ring xref-marker-ring-length)
   "Ring of markers which are locations visited by \\[find-tag].
 Pop back to the last location with \\[negative-argument] \\[find-tag].")
 
@@ -713,15 +714,13 @@ Returns t if it visits a tags table, or nil if there are 
no more in the list."
   (interactive)
   ;; Clear out the markers we are throwing away.
   (let ((i 0))
-    (while (< i find-tag-marker-ring-length)
+    (while (< i xref-marker-ring-length)
       (if (aref (cddr tags-location-ring) i)
          (set-marker (aref (cddr tags-location-ring) i) nil))
-      (if (aref (cddr find-tag-marker-ring) i)
-         (set-marker (aref (cddr find-tag-marker-ring) i) nil))
       (setq i (1+ i))))
+  (xref-clear-marker-stack)
   (setq tags-file-name nil
-       tags-location-ring (make-ring find-tag-marker-ring-length)
-       find-tag-marker-ring (make-ring find-tag-marker-ring-length)
+       tags-location-ring (make-ring xref-marker-ring-length)
        tags-table-list nil
        tags-table-computed-list nil
        tags-table-computed-list-for nil
@@ -780,6 +779,7 @@ tags table and its (recursively) included tags tables."
        (quit (message "Tags completion table construction aborted.")
              (setq tags-completion-table nil)))))
 
+;;;###autoload
 (defun tags-lazy-completion-table ()
   (let ((buf (current-buffer)))
     (lambda (string pred action)
@@ -898,7 +898,7 @@ See documentation of variable `tags-file-name'."
              ;; Run the user's hook.  Do we really want to do this for pop?
              (run-hooks 'local-find-tag-hook))))
       ;; Record whence we came.
-      (ring-insert find-tag-marker-ring (point-marker))
+      (xref-push-marker-stack)
       (if (and next-p last-tag)
          ;; Find the same table we last used.
          (visit-tags-table-buffer 'same)
@@ -954,7 +954,6 @@ See documentation of variable `tags-file-name'."
        (switch-to-buffer buf)
       (error (pop-to-buffer buf)))
     (goto-char pos)))
-;;;###autoload (define-key esc-map "." 'find-tag)
 
 ;;;###autoload
 (defun find-tag-other-window (tagname &optional next-p regexp-p)
@@ -995,7 +994,6 @@ See documentation of variable `tags-file-name'."
                        ;; the window's point from the buffer.
                        (set-window-point (selected-window) tagpoint))
                      window-point)))
-;;;###autoload (define-key ctl-x-4-map "." 'find-tag-other-window)
 
 ;;;###autoload
 (defun find-tag-other-frame (tagname &optional next-p)
@@ -1020,7 +1018,6 @@ See documentation of variable `tags-file-name'."
   (interactive (find-tag-interactive "Find tag other frame: "))
   (let ((pop-up-frames t))
     (find-tag-other-window tagname next-p)))
-;;;###autoload (define-key ctl-x-5-map "." 'find-tag-other-frame)
 
 ;;;###autoload
 (defun find-tag-regexp (regexp &optional next-p other-window)
@@ -1044,25 +1041,10 @@ See documentation of variable `tags-file-name'."
   ;; We go through find-tag-other-window to do all the display hair there.
   (funcall (if other-window 'find-tag-other-window 'find-tag)
           regexp next-p t))
-;;;###autoload (define-key esc-map [?\C-.] 'find-tag-regexp)
-
-;;;###autoload (define-key esc-map "*" 'pop-tag-mark)
 
 ;;;###autoload
-(defun pop-tag-mark ()
-  "Pop back to where \\[find-tag] was last invoked.
+(defalias 'pop-tag-mark 'xref-pop-marker-stack)
 
-This is distinct from invoking \\[find-tag] with a negative argument
-since that pops a stack of markers at which tags were found, not from
-where they were found."
-  (interactive)
-  (if (ring-empty-p find-tag-marker-ring)
-      (error "No previous locations for find-tag invocation"))
-  (let ((marker (ring-remove find-tag-marker-ring 0)))
-    (switch-to-buffer (or (marker-buffer marker)
-                          (error "The marked buffer has been deleted")))
-    (goto-char (marker-position marker))
-    (set-marker marker nil nil)))
 
 (defvar tag-lines-already-matched nil
   "Matches remembered between calls.") ; Doc string: calls to what?
@@ -1859,7 +1841,6 @@ nil, we exit; otherwise we scan the next file."
     (and messaged
         (null tags-loop-operate)
         (message "Scanning file %s...found" buffer-file-name))))
-;;;###autoload (define-key esc-map "," 'tags-loop-continue)
 
 ;;;###autoload
 (defun tags-search (regexp &optional file-list-form)
@@ -2077,6 +2058,54 @@ for \\[find-tag] (which see)."
       (completion-in-region (car comp-data) (cadr comp-data)
                            (nth 2 comp-data)
                            (plist-get (nthcdr 3 comp-data) :predicate)))))
+
+
+;;; Xref backend
+
+;; Stop searching if we find more than xref-limit matches, as the xref
+;; infrastructure is not designed to handle very long lists.
+;; Switching to some kind of lazy list might be better, but hopefully
+;; we hit the limit rarely.
+(defconst etags--xref-limit 1000)
+
+;;;###autoload
+(defun etags-xref-find (action id)
+  (pcase action
+    (`definitions (etags--xref-find-definitions id))
+    (`apropos (etags--xref-find-definitions id t))))
+
+(defun etags--xref-find-definitions (pattern &optional regexp?)
+  ;; This emulates the behaviour of `find-tag-in-order' but instead of
+  ;; returning one match at a time all matches are returned as list.
+  ;; NOTE: find-tag-tag-order is typically a buffer-local variable.
+  (let* ((xrefs '())
+         (first-time t)
+         (search-fun (if regexp? #'re-search-forward #'search-forward))
+         (marks (make-hash-table :test 'equal))
+         (case-fold-search (if (memq tags-case-fold-search '(nil t))
+                               tags-case-fold-search
+                             case-fold-search)))
+    (save-excursion
+      (while (visit-tags-table-buffer (not first-time))
+        (setq first-time nil)
+        (dolist (order-fun (cond (regexp? find-tag-regexp-tag-order)
+                                 (t find-tag-tag-order)))
+          (goto-char (point-min))
+          (while (and (funcall search-fun pattern nil t)
+                      (< (hash-table-count marks) etags--xref-limit))
+            (when (funcall order-fun pattern)
+              (beginning-of-line)
+              (cl-destructuring-bind (hint line &rest pos) (etags-snarf-tag)
+                (unless (eq hint t) ; hint==t if we are in a filename line
+                  (let* ((file (file-of-tag))
+                         (mark-key (cons file line)))
+                    (unless (gethash mark-key marks)
+                      (let ((loc (xref-make-file-location
+                                  (expand-file-name file) line 0)))
+                        (push (xref-make hint loc) xrefs)
+                        (puthash mark-key t marks)))))))))))
+    (nreverse xrefs)))
+
 
 (provide 'etags)
 
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index c2c45aa..f6a9440 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -1637,12 +1637,29 @@ This performs fontification according to 
`js--class-styles'."
                                    js--font-lock-keywords-3)
   "Font lock keywords for `js-mode'.  See `font-lock-keywords'.")
 
+(defconst js--syntax-propertize-regexp-syntax-table
+  (let ((st (make-char-table 'syntax-table (string-to-syntax "."))))
+    (modify-syntax-entry ?\[ "(]" st)
+    (modify-syntax-entry ?\] ")[" st)
+    (modify-syntax-entry ?\\ "\\" st)
+    st))
+
 (defun js-syntax-propertize-regexp (end)
-  (when (eq (nth 3 (syntax-ppss)) ?/)
-    ;; A /.../ regexp.
-    (when (re-search-forward "\\(?:\\=\\|[^\\]\\)\\(?:\\\\\\\\\\)*/" end 'move)
-      (put-text-property (1- (point)) (point)
-                         'syntax-table (string-to-syntax "\"/")))))
+  (let ((ppss (syntax-ppss)))
+    (when (eq (nth 3 ppss) ?/)
+      ;; A /.../ regexp.
+      (while
+          (when (re-search-forward "\\(?:\\=\\|[^\\]\\)\\(?:\\\\\\\\\\)*/"
+                                   end 'move)
+            (if (nth 1 (with-syntax-table
+                           js--syntax-propertize-regexp-syntax-table
+                         (let ((parse-sexp-lookup-properties nil))
+                           (parse-partial-sexp (nth 8 ppss) (point)))))
+                ;; A / within a character class is not the end of a regexp.
+                t
+              (put-text-property (1- (point)) (point)
+                                 'syntax-table (string-to-syntax "\"/"))
+              nil))))))
 
 (defun js-syntax-propertize (start end)
   ;; Javascript allows immediate regular expression objects, written /.../.
@@ -1656,7 +1673,7 @@ This performs fontification according to 
`js--class-styles'."
     ;; We can probably just add +, -, !, <, >, %, ^, ~, |, &, ?, : at which
     ;; point I think only * and / would be missing which could also be added,
     ;; but need care to avoid affecting the // and */ comment markers.
-    ("\\(?:^\\|[=([{,:;]\\)\\(?:[ \t]\\)*\\(/\\)[^/*]"
+    ("\\(?:^\\|[=([{,:;]\\|\\_<return\\_>\\)\\(?:[ \t]\\)*\\(/\\)[^/*]"
      (1 (ignore
         (forward-char -1)
          (when (or (not (memq (char-after (match-beginning 0)) '(?\s ?\t)))
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 35e24e1..c46c5d6 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -69,7 +69,7 @@
 ;; Besides that only the standard CPython (2.x and 3.x) shell and
 ;; IPython are officially supported out of the box, the interaction
 ;; should support any other readline based Python shells as well
-;; (e.g. Jython and Pypy have been reported to work).  You can change
+;; (e.g. Jython and PyPy have been reported to work).  You can change
 ;; your default interpreter and commandline arguments by setting the
 ;; `python-shell-interpreter' and `python-shell-interpreter-args'
 ;; variables.  This example enables IPython globally:
@@ -119,18 +119,24 @@
 ;; modify its behavior.
 
 ;; Shell completion: hitting tab will try to complete the current
-;; word.  Shell completion is implemented in such way that if you
-;; change the `python-shell-interpreter' it should be possible to
-;; integrate custom logic to calculate completions.  To achieve this
-;; you just need to set `python-shell-completion-setup-code' and
-;; `python-shell-completion-string-code'.  The default provided code,
-;; enables autocompletion for both CPython and IPython (and ideally
-;; any readline based Python shell).  This code depends on the
-;; readline module, so if you are using some Operating System that
-;; bundles Python without it (like Windows), installing pyreadline
-;; from URL `http://ipython.scipy.org/moin/PyReadline/Intro' should
-;; suffice.  To troubleshoot why you are not getting any completions
-;; you can try the following in your Python shell:
+;; word.  The two built-in mechanisms depend on Python's readline
+;; module: the "native" completion is tried first and is activated
+;; when `python-shell-completion-native-enable' is non-nil, the
+;; current `python-shell-interpreter' is not a member of the
+;; `python-shell-completion-native-disabled-interpreters' variable and
+;; `python-shell-completion-native-setup' succeeds; the "fallback" or
+;; "legacy" mechanism works by executing Python code in the background
+;; and enables auto-completion for shells that do not support
+;; receiving escape sequences (with some limitations, i.e. completion
+;; in blocks does not work).  The code executed for the "fallback"
+;; completion can be found in `python-shell-completion-setup-code' and
+;; `python-shell-completion-string-code' variables.  Their default
+;; values enable completion for both CPython and IPython, and probably
+;; any readline based shell (it's known to work with PyPy).  If your
+;; Python installation lacks readline (like CPython for Windows),
+;; installing pyreadline (URL `http://ipython.org/pyreadline.html')
+;; should suffice.  To troubleshoot why you are not getting any
+;; completions, you can try the following in your Python shell:
 
 ;; >>> import readline, rlcompleter
 
@@ -256,6 +262,7 @@
 (defvar outline-heading-end-regexp)
 
 (autoload 'comint-mode "comint")
+(autoload 'help-function-arglist "help-fns")
 
 ;;;###autoload
 (add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'")  'python-mode))
@@ -395,7 +402,18 @@
                                          (* ?\\ ?\\) (any ?\' ?\")))
                                 (* ?\\ ?\\)
                                 ;; Match single or triple quotes of any kind.
-                                (group (or  "\"" "\"\"\"" "'" "'''"))))))
+                                (group (or  "\"" "\"\"\"" "'" "'''")))))
+      (coding-cookie . ,(rx line-start ?# (* space)
+                            (or
+                             ;; # coding=<encoding name>
+                             (: "coding" (or ?: ?=) (* space) (group-n 1 (+ 
(or word ?-))))
+                             ;; # -*- coding: <encoding name> -*-
+                             (: "-*-" (* space) "coding:" (* space)
+                                (group-n 1 (+ (or word ?-))) (* space) "-*-")
+                             ;; # vim: set fileencoding=<encoding name> :
+                             (: "vim:" (* space) "set" (+ space)
+                                "fileencoding" (* space) ?= (* space)
+                                (group-n 1 (+ (or word ?-))) (* space) ":")))))
     "Additional Python specific sexps for `python-rx'")
 
   (defmacro python-rx (&rest regexps)
@@ -1206,12 +1224,18 @@ the line will be re-indented automatically if needed."
            (eolp)
            ;; Avoid re-indenting on extra colon
            (not (equal ?: (char-before (1- (point)))))
-           (not (python-syntax-comment-or-string-p))
-           ;; Never re-indent at beginning of defun
-           (not (save-excursion
-                  (python-nav-beginning-of-statement)
-                  (python-info-looking-at-beginning-of-defun))))
-      (python-indent-line)))))
+           (not (python-syntax-comment-or-string-p)))
+      ;; Just re-indent dedenters
+      (let ((dedenter-pos (python-info-dedenter-statement-p))
+            (current-pos (point)))
+        (when dedenter-pos
+          (save-excursion
+            (goto-char dedenter-pos)
+            (python-indent-line)
+            (unless (= (line-number-at-pos dedenter-pos)
+                       (line-number-at-pos current-pos))
+              ;; Reindent region if this is a multiline statement
+              (python-indent-region dedenter-pos current-pos)))))))))
 
 
 ;;; Navigation
@@ -2087,36 +2111,18 @@ and `python-shell-output-prompt-regexp' using the 
values from
 
 (defun python-shell-get-process-name (dedicated)
   "Calculate the appropriate process name for inferior Python process.
-If DEDICATED is t and the variable `buffer-file-name' is non-nil
-returns a string with the form
-`python-shell-buffer-name'[variable `buffer-file-name'] else
-returns the value of `python-shell-buffer-name'."
-  (let ((process-name
-         (if (and dedicated
-                  buffer-file-name)
-             (format "%s[%s]" python-shell-buffer-name buffer-file-name)
-           (format "%s" python-shell-buffer-name))))
-    process-name))
+If DEDICATED is t returns a string with the form
+`python-shell-buffer-name'[`buffer-name'] else returns the value
+of `python-shell-buffer-name'."
+  (if dedicated
+      (format "%s[%s]" python-shell-buffer-name (buffer-name))
+    python-shell-buffer-name))
 
 (defun python-shell-internal-get-process-name ()
   "Calculate the appropriate process name for Internal Python process.
 The name is calculated from `python-shell-global-buffer-name' and
-a hash of all relevant global shell settings in order to ensure
-uniqueness for different types of configurations."
-  (format "%s [%s]"
-          python-shell-internal-buffer-name
-          (md5
-           (concat
-            python-shell-interpreter
-            python-shell-interpreter-args
-            python-shell--prompt-calculated-input-regexp
-            python-shell--prompt-calculated-output-regexp
-            (mapconcat #'symbol-value python-shell-setup-codes "")
-            (mapconcat #'identity python-shell-process-environment "")
-            (mapconcat #'identity python-shell-extra-pythonpaths "")
-            (mapconcat #'identity python-shell-exec-path "")
-            (or python-shell-virtualenv-root "")
-            (mapconcat #'identity python-shell-exec-path "")))))
+the `buffer-name'."
+  (format "%s[%s]" python-shell-internal-buffer-name (buffer-name)))
 
 (defun python-shell-calculate-command ()
   "Calculate the string used to execute the inferior Python process."
@@ -2256,11 +2262,9 @@ Avoids `recenter' calls until OUTPUT is completely sent."
   "Execute the forms in BODY with the shell buffer temporarily current.
 Signals an error if no shell buffer is available for current buffer."
   (declare (indent 0) (debug t))
-  (let ((shell-buffer (make-symbol "shell-buffer")))
-    `(let ((,shell-buffer (python-shell-get-buffer)))
-       (when (not ,shell-buffer)
-         (error "No inferior Python buffer available."))
-       (with-current-buffer ,shell-buffer
+  (let ((shell-process (make-symbol "shell-process")))
+    `(let ((,shell-process (python-shell-get-process-or-error)))
+       (with-current-buffer (process-buffer ,shell-process)
          ,@body))))
 
 (defvar python-shell--font-lock-buffer nil)
@@ -2472,12 +2476,12 @@ variable.
   (python-shell-accept-process-output
    (get-buffer-process (current-buffer))))
 
-(defun python-shell-make-comint (cmd proc-name &optional pop internal)
+(defun python-shell-make-comint (cmd proc-name &optional show internal)
   "Create a Python shell comint buffer.
 CMD is the Python command to be executed and PROC-NAME is the
 process name the comint buffer will get.  After the comint buffer
 is created the `inferior-python-mode' is activated.  When
-optional argument POP is non-nil the buffer is shown.  When
+optional argument SHOW is non-nil the buffer is shown.  When
 optional argument INTERNAL is non-nil this process is run on a
 buffer with a name that starts with a space, following the Emacs
 convention for temporary/internal buffers, and also makes sure
@@ -2506,16 +2510,13 @@ killed."
                 (mapconcat #'identity args " ")))
           (with-current-buffer buffer
             (inferior-python-mode))
-          (and pop (pop-to-buffer buffer t))
+          (when show (display-buffer buffer))
           (and internal (set-process-query-on-exit-flag process nil))))
       proc-buffer-name)))
 
 ;;;###autoload
 (defun run-python (&optional cmd dedicated show)
   "Run an inferior Python process.
-Input and output via buffer named after
-`python-shell-buffer-name'.  If there is a process already
-running in that buffer, just switch to it.
 
 Argument CMD defaults to `python-shell-calculate-command' return
 value.  When called interactively with `prefix-arg', it allows
@@ -2523,6 +2524,11 @@ the user to edit such value and choose whether the 
interpreter
 should be DEDICATED for the current buffer.  When numeric prefix
 arg is other than 0 or 4 do not SHOW.
 
+For a given buffer and same values of DEDICATED, if a process is
+already running for it, it will do nothing.  This means that if
+the current buffer is using a global process, the user is still
+able to switch it to use a dedicated one.
+
 Runs the hook `inferior-python-mode-hook' after
 `comint-mode-hook' is run.  (Type \\[describe-mode] in the
 process buffer for a list of commands.)"
@@ -2533,10 +2539,10 @@ process buffer for a list of commands.)"
         (y-or-n-p "Make dedicated process? ")
         (= (prefix-numeric-value current-prefix-arg) 4))
      (list (python-shell-calculate-command) nil t)))
-  (python-shell-make-comint
-   (or cmd (python-shell-calculate-command))
-   (python-shell-get-process-name dedicated) show)
-  dedicated)
+  (get-buffer-process
+   (python-shell-make-comint
+    (or cmd (python-shell-calculate-command))
+    (python-shell-get-process-name dedicated) show)))
 
 (defun run-python-internal ()
   "Run an inferior Internal Python process.
@@ -2579,6 +2585,21 @@ If current buffer is in `inferior-python-mode', return 
it."
   "Return inferior Python process for current buffer."
   (get-buffer-process (python-shell-get-buffer)))
 
+(defun python-shell-get-process-or-error (&optional interactivep)
+  "Return inferior Python process for current buffer or signal error.
+When argument INTERACTIVEP is non-nil, use `user-error' instead
+of `error' with a user-friendly message."
+  (or (python-shell-get-process)
+      (if interactivep
+          (user-error
+           "Start a Python process first with `M-x run-python' or `%s'."
+           ;; Get the binding.
+           (key-description
+            (where-is-internal
+             #'run-python overriding-local-map t)))
+        (error
+         "No inferior Python process running."))))
+
 (defun python-shell-get-or-create-process (&optional cmd dedicated show)
   "Get or create an inferior Python process for current buffer and return it.
 Arguments CMD, DEDICATED and SHOW are those of `run-python' and
@@ -2594,6 +2615,11 @@ be asked for their values."
         (run-python cmd dedicated show)))
     (or shell-process (python-shell-get-process))))
 
+(make-obsolete
+ #'python-shell-get-or-create-process
+ "Instead call `python-shell-get-process' and create one if returns nil."
+ "25.1")
+
 (defvar python-shell-internal-buffer nil
   "Current internal shell buffer for the current buffer.
 This is really not necessary at all for the code to work but it's
@@ -2606,12 +2632,10 @@ there for compatibility with CEDET.")
 
 (defun python-shell-internal-get-or-create-process ()
   "Get or create an inferior Internal Python process."
-  (let* ((proc-name (python-shell-internal-get-process-name))
-         (proc-buffer-name (format " *%s*" proc-name)))
-    (when (not (process-live-p proc-name))
-      (run-python-internal)
-      (setq python-shell-internal-buffer proc-buffer-name))
-    (get-buffer-process proc-buffer-name)))
+  (let ((proc-name (python-shell-internal-get-process-name)))
+    (if (process-live-p proc-name)
+        (get-process proc-name)
+      (run-python-internal))))
 
 (define-obsolete-function-alias
   'python-proc 'python-shell-internal-get-or-create-process "24.3")
@@ -2628,20 +2652,24 @@ there for compatibility with CEDET.")
               (concat (file-remote-p default-directory) "/tmp")
             temporary-file-directory))
          (temp-file-name (make-temp-file "py"))
-         (coding-system-for-write 'utf-8))
+         (coding-system-for-write (python-info-encoding)))
     (with-temp-file temp-file-name
-      (insert "# -*- coding: utf-8 -*-\n") ;Not needed for Python-3.
       (insert string)
       (delete-trailing-whitespace))
     temp-file-name))
 
-(defun python-shell-send-string (string &optional process)
-  "Send STRING to inferior Python PROCESS."
-  (interactive "sPython command: ")
-  (let ((process (or process (python-shell-get-or-create-process))))
+(defun python-shell-send-string (string &optional process msg)
+  "Send STRING to inferior Python PROCESS.
+When optional argument MSG is non-nil, forces display of a
+user-friendly message if there's no process running; defaults to
+t when called interactively."
+  (interactive
+   (list (read-string "Python command: ") nil t))
+  (let ((process (or process (python-shell-get-process-or-error msg))))
     (if (string-match ".\n+." string)   ;Multiline.
-        (let* ((temp-file-name (python-shell--save-temp-file string)))
-          (python-shell-send-file temp-file-name process temp-file-name t))
+        (let* ((temp-file-name (python-shell--save-temp-file string))
+               (file-name (or (buffer-file-name) temp-file-name)))
+          (python-shell-send-file file-name process temp-file-name t))
       (comint-send-string process string)
       (when (or (not (string-match "\n\\'" string))
                 (string-match "\n[ \t].*\n?\\'" string))
@@ -2680,7 +2708,7 @@ detecting a prompt at the end of the buffer."
 (defun python-shell-send-string-no-output (string &optional process)
   "Send STRING to PROCESS and inhibit output.
 Return the output."
-  (let ((process (or process (python-shell-get-or-create-process)))
+  (let ((process (or process (python-shell-get-process-or-error)))
         (comint-preoutput-filter-functions
          '(python-shell-output-filter))
         (python-shell-output-filter-in-progress t)
@@ -2717,12 +2745,6 @@ Returns the output.  See 
`python-shell-send-string-no-output'."
 (define-obsolete-function-alias
   'python-send-string 'python-shell-internal-send-string "24.3")
 
-(defvar python--use-fake-loc nil
-  "If non-nil, use `compilation-fake-loc' to trace errors back to the buffer.
-If nil, regions of text are prepended by the corresponding number of empty
-lines and Python is told to output error messages referring to the whole
-source file.")
-
 (defun python-shell-buffer-substring (start end &optional nomain)
   "Send buffer substring from START to END formatted for shell.
 This is a wrapper over `buffer-substring' that takes care of
@@ -2732,27 +2754,32 @@ the python shell:
      \"if __name__ == '__main__'\" block will be removed.
   2. When a subregion of the buffer is sent, it takes care of
      appending extra empty lines so tracebacks are correct.
-  3. Wraps indented regions under an \"if True:\" block so the
+  3. When the region sent is a substring of the current buffer, a
+     coding cookie is added.
+  4. Wraps indented regions under an \"if True:\" block so the
      interpreter evaluates them correctly."
-  (let ((substring (buffer-substring-no-properties start end))
-        (fillstr (unless python--use-fake-loc
-                   (make-string (1- (line-number-at-pos start)) ?\n)))
-        (toplevel-block-p (save-excursion
-                            (goto-char start)
-                            (or (zerop (line-number-at-pos start))
-                                (progn
-                                  (python-util-forward-comment 1)
-                                  (zerop (current-indentation)))))))
+  (let* ((substring (buffer-substring-no-properties start end))
+         (starts-at-point-min-p (save-restriction
+                                  (widen)
+                                  (= (point-min) start)))
+         (encoding (python-info-encoding))
+         (fillstr (when (not starts-at-point-min-p)
+                    (concat
+                     (format "# -*- coding: %s -*-\n" encoding)
+                     (make-string
+                      ;; Substract 2 because of the coding cookie.
+                      (- (line-number-at-pos start) 2) ?\n))))
+         (toplevel-block-p (save-excursion
+                             (goto-char start)
+                             (or (zerop (line-number-at-pos start))
+                                 (progn
+                                   (python-util-forward-comment 1)
+                                   (zerop (current-indentation)))))))
     (with-temp-buffer
       (python-mode)
       (if fillstr (insert fillstr))
       (insert substring)
       (goto-char (point-min))
-      (unless python--use-fake-loc
-        ;; python-shell--save-temp-file adds an extra coding line, which would
-        ;; throw off the line-counts, so let's try to compensate here.
-        (if (looking-at "[ \t]*[#\n]")
-            (delete-region (point) (line-beginning-position 2))))
       (when (not toplevel-block-p)
         (insert "if True:")
         (delete-region (point) (line-end-position)))
@@ -2763,53 +2790,65 @@ the python shell:
                        (when (python-nav-if-name-main)
                          (cons (point)
                                (progn (python-nav-forward-sexp-safe)
+                                      ;; Include ending newline
+                                      (forward-line 1)
                                       (point)))))))
                ;; Oh destructuring bind, how I miss you.
                (if-name-main-start (car if-name-main-start-end))
-               (if-name-main-end (cdr if-name-main-start-end)))
+               (if-name-main-end (cdr if-name-main-start-end))
+               (fillstr (make-string
+                         (- (line-number-at-pos if-name-main-end)
+                            (line-number-at-pos if-name-main-start)) ?\n)))
           (when if-name-main-start-end
             (goto-char if-name-main-start)
             (delete-region if-name-main-start if-name-main-end)
-            (insert
-             (make-string
-              (- (line-number-at-pos if-name-main-end)
-                 (line-number-at-pos if-name-main-start)) ?\n)))))
+            (insert fillstr))))
+      ;; Ensure there's only one coding cookie in the generated string.
+      (goto-char (point-min))
+      (when (looking-at-p (python-rx coding-cookie))
+        (forward-line 1)
+        (when (looking-at-p (python-rx coding-cookie))
+          (delete-region
+           (line-beginning-position) (line-end-position))))
       (buffer-substring-no-properties (point-min) (point-max)))))
 
-(declare-function compilation-fake-loc "compile"
-                  (marker file &optional line col))
-
-(defun python-shell-send-region (start end &optional nomain)
-  "Send the region delimited by START and END to inferior Python process."
-  (interactive "r")
-  (let* ((python--use-fake-loc
-          (or python--use-fake-loc (not buffer-file-name)))
-         (string (python-shell-buffer-substring start end nomain))
-         (process (python-shell-get-or-create-process))
-         (_ (string-match "\\`\n*\\(.*\\)" string)))
-    (message "Sent: %s..." (match-string 1 string))
-    (let* ((temp-file-name (python-shell--save-temp-file string))
-           (file-name (or (buffer-file-name) temp-file-name)))
-      (python-shell-send-file file-name process temp-file-name t)
-      (unless python--use-fake-loc
-        (with-current-buffer (process-buffer process)
-          (compilation-fake-loc (copy-marker start) temp-file-name
-                                2)) ;; Not 1, because of the added coding line.
-        ))))
-
-(defun python-shell-send-buffer (&optional arg)
+(defun python-shell-send-region (start end &optional send-main msg)
+  "Send the region delimited by START and END to inferior Python process.
+When optional argument SEND-MAIN is non-nil, allow execution of
+code inside blocks delimited by \"if __name__== '__main__':\".
+When called interactively SEND-MAIN defaults to nil, unless it's
+called with prefix argument.  When optional argument MSG is
+non-nil, forces display of a user-friendly message if there's no
+process running; defaults to t when called interactively."
+  (interactive
+   (list (region-beginning) (region-end) current-prefix-arg t))
+  (let* ((string (python-shell-buffer-substring start end (not send-main)))
+         (process (python-shell-get-process-or-error msg))
+         (original-string (buffer-substring-no-properties start end))
+         (_ (string-match "\\`\n*\\(.*\\)" original-string)))
+    (message "Sent: %s..." (match-string 1 original-string))
+    (python-shell-send-string string process)))
+
+(defun python-shell-send-buffer (&optional send-main msg)
   "Send the entire buffer to inferior Python process.
-With prefix ARG allow execution of code inside blocks delimited
-by \"if __name__== '__main__':\"."
-  (interactive "P")
+When optional argument SEND-MAIN is non-nil, allow execution of
+code inside blocks delimited by \"if __name__== '__main__':\".
+When called interactively SEND-MAIN defaults to nil, unless it's
+called with prefix argument.  When optional argument MSG is
+non-nil, forces display of a user-friendly message if there's no
+process running; defaults to t when called interactively."
+  (interactive (list current-prefix-arg t))
   (save-restriction
     (widen)
-    (python-shell-send-region (point-min) (point-max) (not arg))))
+    (python-shell-send-region (point-min) (point-max) send-main msg)))
 
-(defun python-shell-send-defun (arg)
+(defun python-shell-send-defun (&optional arg msg)
   "Send the current defun to inferior Python process.
-When argument ARG is non-nil do not include decorators."
-  (interactive "P")
+When argument ARG is non-nil do not include decorators.  When
+optional argument MSG is non-nil, forces display of a
+user-friendly message if there's no process running; defaults to
+t when called interactively."
+  (interactive (list current-prefix-arg t))
   (save-excursion
     (python-shell-send-region
      (progn
@@ -2825,42 +2864,60 @@ When argument ARG is non-nil do not include decorators."
      (progn
        (or (python-nav-end-of-defun)
            (end-of-line 1))
-       (point-marker)))))
+       (point-marker))
+     nil  ;; noop
+     msg)))
 
 (defun python-shell-send-file (file-name &optional process temp-file-name
-                                         delete)
+                                         delete msg)
   "Send FILE-NAME to inferior Python PROCESS.
 If TEMP-FILE-NAME is passed then that file is used for processing
-instead, while internally the shell will continue to use FILE-NAME.
-If DELETE is non-nil, delete the file afterwards."
-  (interactive "fFile to send: ")
-  (let* ((process (or process (python-shell-get-or-create-process)))
+instead, while internally the shell will continue to use
+FILE-NAME.  If TEMP-FILE-NAME and DELETE are non-nil, then
+TEMP-FILE-NAME is deleted after evaluation is performed.  When
+optional argument MSG is non-nil, forces display of a
+user-friendly message if there's no process running; defaults to
+t when called interactively."
+  (interactive
+   (list
+    (read-file-name "File to send: ")   ; file-name
+    nil                                 ; process
+    nil                                 ; temp-file-name
+    nil                                 ; delete
+    t))                                 ; msg
+  (let* ((process (or process (python-shell-get-process-or-error msg)))
+         (encoding (with-temp-buffer
+                     (insert-file-contents
+                      (or temp-file-name file-name))
+                     (python-info-encoding)))
+         (file-name (expand-file-name
+                     (or (file-remote-p file-name 'localname)
+                         file-name)))
          (temp-file-name (when temp-file-name
                            (expand-file-name
                             (or (file-remote-p temp-file-name 'localname)
-                                temp-file-name))))
-         (file-name (or (when file-name
-                          (expand-file-name
-                           (or (file-remote-p file-name 'localname)
-                               file-name)))
-                        temp-file-name)))
-    (when (not file-name)
-      (error "If FILE-NAME is nil then TEMP-FILE-NAME must be non-nil"))
+                                temp-file-name)))))
     (python-shell-send-string
      (format
-      (concat "__pyfile = open('''%s''');"
-              "exec(compile(__pyfile.read(), '''%s''', 'exec'));"
-              "__pyfile.close()%s")
-      (or temp-file-name file-name) file-name
-      (if delete (format "; import os; os.remove('''%s''')"
-                         (or temp-file-name file-name))
-        ""))
+      (concat
+       "import codecs, os;"
+       "__pyfile = codecs.open('''%s''', encoding='''%s''');"
+       "__code = __pyfile.read().encode('''%s''');"
+       "__pyfile.close();"
+       (when (and delete temp-file-name)
+         (format "os.remove('''%s''');" temp-file-name))
+       "exec(compile(__code, '''%s''', 'exec'));")
+      (or temp-file-name file-name) encoding encoding file-name)
      process)))
 
-(defun python-shell-switch-to-shell ()
-  "Switch to inferior Python process buffer."
-  (interactive)
-  (process-buffer (python-shell-get-or-create-process)) t)
+(defun python-shell-switch-to-shell (&optional msg)
+  "Switch to inferior Python process buffer.
+When optional argument MSG is non-nil, forces display of a
+user-friendly message if there's no process running; defaults to
+t when called interactively."
+  (interactive "p")
+  (pop-to-buffer
+   (process-buffer (python-shell-get-process-or-error msg)) nil t))
 
 (defun python-shell-send-setup-code ()
   "Send all setup code for shell.
@@ -2947,6 +3004,194 @@ the full statement in the case of imports."
   "25.1"
   "Completion string code must work for (i)pdb.")
 
+(defcustom python-shell-completion-native-disabled-interpreters
+  ;; PyPy's readline cannot handle some escape sequences yet.
+  (list "pypy")
+  "List of disabled interpreters.
+When a match is found, native completion is disabled."
+  :type '(repeat string))
+
+(defcustom python-shell-completion-native-enable t
+  "Enable readline based native completion."
+  :type 'boolean)
+
+(defcustom python-shell-completion-native-output-timeout 0.01
+  "Time in seconds to wait for completion output before giving up."
+  :type 'float)
+
+(defvar python-shell-completion-native-redirect-buffer
+  " *Python completions redirect*"
+  "Buffer to be used to redirect output of readline commands.")
+
+(defun python-shell-completion-native-interpreter-disabled-p ()
+  "Return non-nil if interpreter has native completion disabled."
+  (when python-shell-completion-native-disabled-interpreters
+    (string-match
+     (regexp-opt python-shell-completion-native-disabled-interpreters)
+     (file-name-nondirectory python-shell-interpreter))))
+
+(defun python-shell-completion-native-try ()
+  "Return non-nil if can trigger native completion."
+  (let ((python-shell-completion-native-enable t))
+    (python-shell-completion-native-get-completions
+     (get-buffer-process (current-buffer))
+     nil "int")))
+
+(defun python-shell-completion-native-setup ()
+  "Try to setup native completion, return non-nil on success."
+  (let ((process (python-shell-get-process)))
+    (python-shell-send-string
+     (funcall
+      'mapconcat
+      #'identity
+      (list
+       "try:"
+       "    import readline, rlcompleter"
+       ;; Remove parens on callables as it breaks completion on
+       ;; arguments (e.g. str(Ari<tab>)).
+       "    class Completer(rlcompleter.Completer):"
+       "        def _callable_postfix(self, val, word):"
+       "            return word"
+       "    readline.set_completer(Completer().complete)"
+       "    if readline.__doc__ and 'libedit' in readline.__doc__:"
+       "        readline.parse_and_bind('bind ^I rl_complete')"
+       "    else:"
+       "        readline.parse_and_bind('tab: complete')"
+       "    print ('python.el: readline is available')"
+       "except:"
+       "    print ('python.el: readline not available')")
+      "\n")
+     process)
+    (python-shell-accept-process-output process)
+    (when (save-excursion
+            (re-search-backward
+             (regexp-quote "python.el: readline is available") nil t 1))
+      (python-shell-completion-native-try))))
+
+(defun python-shell-completion-native-turn-off (&optional msg)
+  "Turn off shell native completions.
+With argument MSG show deactivation message."
+  (interactive "p")
+  (python-shell-with-shell-buffer
+    (set (make-local-variable 'python-shell-completion-native-enable) nil)
+    (when msg
+      (message "Shell native completion is disabled, using fallback"))))
+
+(defun python-shell-completion-native-turn-on (&optional msg)
+  "Turn on shell native completions.
+With argument MSG show deactivation message."
+  (interactive "p")
+  (python-shell-with-shell-buffer
+    (set (make-local-variable 'python-shell-completion-native-enable) t)
+    (python-shell-completion-native-turn-on-maybe msg)))
+
+(defun python-shell-completion-native-turn-on-maybe (&optional msg)
+  "Turn on native completions if enabled and available.
+With argument MSG show activation/deactivation message."
+  (interactive "p")
+  (python-shell-with-shell-buffer
+    (when python-shell-completion-native-enable
+      (cond
+       ((python-shell-completion-native-interpreter-disabled-p)
+        (python-shell-completion-native-turn-off msg))
+       ((python-shell-completion-native-setup)
+        (when msg
+          (message "Shell native completion is enabled.")))
+       (t (lwarn
+           '(python python-shell-completion-native-turn-on-maybe)
+           :warning
+           (concat
+            "Your `python-shell-interpreter' doesn't seem to "
+            "support readline, yet `python-shell-completion-native' "
+            (format "was `t' and %S is not part of the "
+                    (file-name-nondirectory python-shell-interpreter))
+            "`python-shell-completion-native-disabled-interpreters' "
+            "list.  Native completions have been disabled locally. "))
+          (python-shell-completion-native-turn-off msg))))))
+
+(defun python-shell-completion-native-turn-on-maybe-with-msg ()
+  "Like `python-shell-completion-native-turn-on-maybe' but force messages."
+  (python-shell-completion-native-turn-on-maybe t))
+
+(add-hook 'inferior-python-mode-hook
+          #'python-shell-completion-native-turn-on-maybe-with-msg)
+
+(defun python-shell-completion-native-toggle (&optional msg)
+  "Toggle shell native completion.
+With argument MSG show activation/deactivation message."
+  (interactive "p")
+  (python-shell-with-shell-buffer
+    (if python-shell-completion-native-enable
+        (python-shell-completion-native-turn-off msg)
+      (python-shell-completion-native-turn-on msg))
+    python-shell-completion-native-enable))
+
+(defun python-shell-completion-native-get-completions (process import input)
+  "Get completions using native readline for PROCESS.
+When IMPORT is non-nil takes precedence over INPUT for
+completion."
+  (when (and python-shell-completion-native-enable
+             (python-util-comint-last-prompt)
+             (>= (point) (cdr (python-util-comint-last-prompt))))
+    (let* ((input (or import input))
+           (original-filter-fn (process-filter process))
+           (redirect-buffer (get-buffer-create
+                             python-shell-completion-native-redirect-buffer))
+           (separators (python-rx
+                        (or whitespace open-paren close-paren)))
+           (trigger "\t\t\t")
+           (new-input (concat input trigger))
+           (input-length
+            (save-excursion
+              (+ (- (point-max) (comint-bol)) (length new-input))))
+           (delete-line-command (make-string input-length ?\b))
+           (input-to-send (concat new-input delete-line-command)))
+      ;; Ensure restoring the process filter, even if the user quits
+      ;; or there's some other error.
+      (unwind-protect
+          (with-current-buffer redirect-buffer
+            ;; Cleanup the redirect buffer
+            (delete-region (point-min) (point-max))
+            ;; Mimic `comint-redirect-send-command', unfortunately it
+            ;; can't be used here because it expects a newline in the
+            ;; command and that's exactly what we are trying to avoid.
+            (let ((comint-redirect-echo-input nil)
+                  (comint-redirect-verbose nil)
+                  (comint-redirect-perform-sanity-check nil)
+                  (comint-redirect-insert-matching-regexp nil)
+                  ;; Feed it some regex that will never match.
+                  (comint-redirect-finished-regexp "^\\'$")
+                  (comint-redirect-output-buffer redirect-buffer))
+              ;; Compatibility with Emacs 24.x.  Comint changed and
+              ;; now `comint-redirect-filter' gets 3 args.  This
+              ;; checks which version of `comint-redirect-filter' is
+              ;; in use based on its args and uses `apply-partially'
+              ;; to make it up for the 3 args case.
+              (if (= (length
+                      (help-function-arglist 'comint-redirect-filter)) 3)
+                  (set-process-filter
+                   process (apply-partially
+                            #'comint-redirect-filter original-filter-fn))
+                (set-process-filter process #'comint-redirect-filter))
+              (process-send-string process input-to-send)
+              (accept-process-output
+               process
+               python-shell-completion-native-output-timeout)
+              ;; XXX: can't use `python-shell-accept-process-output'
+              ;; here because there are no guarantees on how output
+              ;; ends.  The workaround here is to call
+              ;; `accept-process-output' until we don't find anything
+              ;; else to accept.
+              (while (accept-process-output
+                      process
+                      python-shell-completion-native-output-timeout))
+              (cl-remove-duplicates
+               (split-string
+                (buffer-substring-no-properties
+                 (point-min) (point-max))
+                separators t))))
+        (set-process-filter process original-filter-fn)))))
+
 (defun python-shell-completion-get-completions (process import input)
   "Do completion at point using PROCESS for IMPORT or INPUT.
 When IMPORT is non-nil takes precedence over INPUT for
@@ -3004,11 +3249,15 @@ using that one instead of current buffer's process."
                 last-prompt-end
               (forward-char (length (match-string-no-properties 0)))
               (point))))
-         (end (point)))
+         (end (point))
+         (completion-fn
+          (if python-shell-completion-native-enable
+              #'python-shell-completion-native-get-completions
+            #'python-shell-completion-get-completions)))
     (list start end
           (completion-table-dynamic
            (apply-partially
-            #'python-shell-completion-get-completions
+            completion-fn
             process import-statement)))))
 
 (define-obsolete-function-alias
@@ -4155,6 +4404,32 @@ operator."
                 (* whitespace) line-end))
     (string-equal "" (match-string-no-properties 1))))
 
+(defun python-info-encoding-from-cookie ()
+  "Detect current buffer's encoding from its coding cookie.
+Returns the enconding as a symbol."
+  (let ((first-two-lines
+         (save-excursion
+           (save-restriction
+             (widen)
+             (goto-char (point-min))
+             (forward-line 2)
+             (buffer-substring-no-properties
+              (point)
+              (point-min))))))
+    (when (string-match (python-rx coding-cookie) first-two-lines)
+      (intern (match-string-no-properties 1 first-two-lines)))))
+
+(defun python-info-encoding ()
+  "Return encoding for file.
+Try `python-info-encoding-from-cookie', if none is found then
+default to utf-8."
+  ;; If no enconding is defined, then it's safe to use UTF-8: Python 2
+  ;; uses ASCII as default while Python 3 uses UTF-8.  This means that
+  ;; in the worst case escenario python.el will make things work for
+  ;; Python 2 files with unicode data and no encoding defined.
+  (or (python-info-encoding-from-cookie)
+      'utf-8))
+
 
 ;;; Utility functions
 
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 524749d..904e9df 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -2374,7 +2374,7 @@ Calls the value of `sh-set-shell-hook' if set."
            (sh-make-vars-local))
        (message "Indentation setup for shell type %s" sh-shell))
     (message "No indentation for this shell type.")
-    (setq indent-line-function 'sh-basic-indent-line))
+    (setq-local indent-line-function 'sh-basic-indent-line))
   (when font-lock-mode
     (setq font-lock-set-defaults nil)
     (font-lock-set-defaults)
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
new file mode 100644
index 0000000..8221aeb
--- /dev/null
+++ b/lisp/progmodes/xref.el
@@ -0,0 +1,524 @@
+;; xref.el --- Cross-referencing commands              -*-lexical-binding:t-*-
+
+;; Copyright (C) 2014 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file provides a somewhat generic infrastructure for cross
+;; referencing commands, in particular "find-definition".
+;;
+;; Some part of the functionality must be implemented in a language
+;; dependent way and that's done by defining `xref-find-function',
+;; `xref-identifier-at-point-function' and
+;; `xref-identifier-completion-table-function', which see.
+;;
+;; A major mode should make these variables buffer-local first.
+;;
+;; `xref-find-function' can be called in several ways, see its
+;; description.  It has to operate with "xref" and "location" values.
+;;
+;; One would usually call `make-xref' and `xref-make-file-location',
+;; `xref-make-buffer-location' or `xref-make-bogus-location' to create
+;; them.
+;;
+;; Each identifier must be represented as a string.  Implementers can
+;; use string properties to store additional information about the
+;; identifier, but they should keep in mind that values returned from
+;; `xref-identifier-completion-table-function' should still be
+;; distinct, because the user can't see the properties when making the
+;; choice.
+;;
+;; See the functions `etags-xref-find' and `elisp-xref-find' for full
+;; examples.
+
+;;; Code:
+
+(require 'cl-lib)
+(require 'eieio)
+(require 'ring)
+
+(defgroup xref nil "Cross-referencing commands"
+  :group 'tools)
+
+
+;;; Locations
+
+(defclass xref-location () ()
+  :documentation "A location represents a position in a file or buffer.")
+
+;; If a backend decides to subclass xref-location it can provide
+;; methods for some of the following functions:
+(defgeneric xref-location-marker (location)
+  "Return the marker for LOCATION.")
+
+(defgeneric xref-location-group (location)
+  "Return a string used to group a set of locations.
+This is typically the filename.")
+
+;;;; Commonly needed location classes are defined here:
+
+;; FIXME: might be useful to have an optional "hint" i.e. a string to
+;; search for in case the line number is sightly out of date.
+(defclass xref-file-location (xref-location)
+  ((file :type string :initarg :file)
+   (line :type fixnum :initarg :line)
+   (column :type fixnum :initarg :column))
+  :documentation "A file location is a file/line/column triple.
+Line numbers start from 1 and columns from 0.")
+
+(defun xref-make-file-location (file line column)
+  "Create and return a new xref-file-location."
+  (make-instance 'xref-file-location :file file :line line :column column))
+
+(defmethod xref-location-marker ((l xref-file-location))
+  (with-slots (file line column) l
+    (with-current-buffer
+        (or (get-file-buffer file)
+            (let ((find-file-suppress-same-file-warnings t))
+              (find-file-noselect file)))
+      (save-restriction
+        (widen)
+        (save-excursion
+          (goto-char (point-min))
+          (beginning-of-line line)
+          (move-to-column column)
+          (point-marker))))))
+
+(defmethod xref-location-group ((l xref-file-location))
+  (oref l :file))
+
+(defclass xref-buffer-location (xref-location)
+  ((buffer :type buffer :initarg :buffer)
+   (position :type fixnum :initarg :position)))
+
+(defun xref-make-buffer-location (buffer position)
+  "Create and return a new xref-buffer-location."
+  (make-instance 'xref-buffer-location :buffer buffer :position position))
+
+(defmethod xref-location-marker ((l xref-buffer-location))
+  (with-slots (buffer position) l
+    (let ((m (make-marker)))
+      (move-marker m position buffer))))
+
+(defmethod xref-location-group ((l xref-buffer-location))
+  (with-slots (buffer) l
+    (or (buffer-file-name buffer)
+        (format "(buffer %s)" (buffer-name buffer)))))
+
+(defclass xref-bogus-location (xref-location)
+  ((message :type string :initarg :message
+            :reader xref-bogus-location-message))
+  :documentation "Bogus locations are sometimes useful to
+indicate errors, e.g. when we know that a function exists but the
+actual location is not known.")
+
+(defun xref-make-bogus-location (message)
+  "Create and return a new xref-bogus-location."
+  (make-instance 'xref-bogus-location :message message))
+
+(defmethod xref-location-marker ((l xref-bogus-location))
+  (user-error "%s" (oref l :message)))
+
+(defmethod xref-location-group ((_ xref-bogus-location)) "(No location)")
+
+;; This should be in elisp-mode.el, but it's preloaded, and we can't
+;; preload defclass and defmethod (at least, not yet).
+(defclass xref-elisp-location (xref-location)
+  ((symbol :type symbol :initarg :symbol)
+   (type   :type symbol :initarg :type)
+   (file   :type string :initarg :file
+           :reader xref-location-group))
+  :documentation "Location of an Emacs Lisp symbol definition.")
+
+(defun xref-make-elisp-location (symbol type file)
+  (make-instance 'xref-elisp-location :symbol symbol :type type :file file))
+
+(defmethod xref-location-marker ((l xref-elisp-location))
+  (with-slots (symbol type file) l
+    (let ((buffer-point
+           (pcase type
+             (`defun (find-function-search-for-symbol symbol nil file))
+             ((or `defvar `defface)
+              (find-function-search-for-symbol symbol type file))
+             (`feature
+              (cons (find-file-noselect file) 1)))))
+      (with-current-buffer (car buffer-point)
+        (goto-char (or (cdr buffer-point) (point-min)))
+        (point-marker)))))
+
+
+;;; Cross-reference
+
+(defclass xref--xref ()
+  ((description :type string :initarg :description
+                :reader xref--xref-description)
+   (location :type xref-location :initarg :location
+             :reader xref--xref-location))
+  :comment "An xref is used to display and locate constructs like
+variables or functions.")
+
+(defun xref-make (description location)
+  "Create and return a new xref.
+DESCRIPTION is a short string to describe the xref.
+LOCATION is an `xref-location'."
+  (make-instance 'xref--xref :description description :location location))
+
+
+;;; API
+
+(declare-function etags-xref-find "etags" (action id))
+(declare-function tags-lazy-completion-table "etags" ())
+
+;; For now, make the etags backend the default.
+(defvar xref-find-function #'etags-xref-find
+  "Function to look for cross-references.
+It can be called in several ways:
+
+ (definitions IDENTIFIER): Find definitions of IDENTIFIER.  The
+result must be a list of xref objects.  If no definitions can be
+found, return nil.
+
+ (references IDENTIFIER): Find references of IDENTIFIER.  The
+result must be a list of xref objects.  If no references can be
+found, return nil.
+
+ (apropos PATTERN): Find all symbols that match PATTERN.  PATTERN
+is a regexp.
+
+IDENTIFIER can be any string returned by
+`xref-identifier-at-point-function', or from the table returned
+by `xref-identifier-completion-table-function'.
+
+To create an xref object, call `xref-make'.")
+
+(defvar xref-identifier-at-point-function #'xref-default-identifier-at-point
+  "Function to get the relevant identifier at point.
+
+The return value must be a string or nil.  nil means no
+identifier at point found.
+
+If it's hard to determine the identifier precisely (e.g., because
+it's a method call on unknown type), the implementation can
+return a simple string (such as symbol at point) marked with a
+special text property which `xref-find-function' would recognize
+and then delegate the work to an external process.")
+
+(defvar xref-identifier-completion-table-function #'tags-lazy-completion-table
+  "Function that returns the completion table for identifiers.")
+
+(defun xref-default-identifier-at-point ()
+  (let ((thing (thing-at-point 'symbol)))
+    (and thing (substring-no-properties thing))))
+
+
+;;; misc utilities
+(defun xref--alistify (list key test)
+  "Partition the elements of LIST into an alist.
+KEY extracts the key from an element and TEST is used to compare
+keys."
+  (let ((alist '()))
+    (dolist (e list)
+      (let* ((k (funcall key e))
+             (probe (cl-assoc k alist :test test)))
+        (if probe
+            (setcdr probe (cons e (cdr probe)))
+          (push (cons k (list e)) alist))))
+    ;; Put them back in order.
+    (cl-loop for (key . value) in (reverse alist)
+             collect (cons key (reverse value)))))
+
+(defun xref--insert-propertized (props &rest strings)
+  "Insert STRINGS with text properties PROPS."
+  (let ((start (point)))
+    (apply #'insert strings)
+    (add-text-properties start (point) props)))
+
+(defun xref--search-property (property &optional backward)
+    "Search the next text range where text property PROPERTY is non-nil.
+Return the value of PROPERTY.  If BACKWARD is non-nil, search
+backward."
+  (let ((next (if backward
+                  #'previous-single-char-property-change
+                #'next-single-char-property-change))
+        (start (point))
+        (value nil))
+    (while (progn
+             (goto-char (funcall next (point) property))
+             (not (or (setq value (get-text-property (point) property))
+                      (eobp)
+                      (bobp)))))
+    (cond (value)
+          (t (goto-char start) nil))))
+
+
+;;; Marker stack  (M-. pushes, M-, pops)
+
+(defcustom xref-marker-ring-length 16
+  "Length of the xref marker ring."
+  :type 'integer
+  :version "25.1")
+
+(defvar xref--marker-ring (make-ring xref-marker-ring-length)
+  "Ring of markers to implement the marker stack.")
+
+(defun xref-push-marker-stack ()
+  "Add point to the marker stack."
+  (ring-insert xref--marker-ring (point-marker)))
+
+;;;###autoload
+(defun xref-pop-marker-stack ()
+  "Pop back to where \\[xref-find-definitions] was last invoked."
+  (interactive)
+  (let ((ring xref--marker-ring))
+    (when (ring-empty-p ring)
+      (error "Marker stack is empty"))
+    (let ((marker (ring-remove ring 0)))
+      (switch-to-buffer (or (marker-buffer marker)
+                            (error "The marked buffer has been deleted")))
+      (goto-char (marker-position marker))
+      (set-marker marker nil nil))))
+
+;; etags.el needs this
+(defun xref-clear-marker-stack ()
+  "Discard all markers from the marker stack."
+  (let ((ring xref--marker-ring))
+    (while (not (ring-empty-p ring))
+      (let ((marker (ring-remove ring)))
+        (set-marker marker nil nil)))))
+
+
+(defun xref--goto-location (location)
+  "Set buffer and point according to xref-location LOCATION."
+  (let ((marker (xref-location-marker location)))
+    (set-buffer (marker-buffer marker))
+    (cond ((and (<= (point-min) marker) (<= marker (point-max))))
+          (widen-automatically (widen))
+          (t (error "Location is outside accessible part of buffer")))
+    (goto-char marker)))
+
+(defun xref--pop-to-location (location &optional window)
+  "Goto xref-location LOCATION and display the buffer.
+WINDOW controls how the buffer is displayed:
+  nil      -- switch-to-buffer
+  'window  -- pop-to-buffer (other window)
+  'frame   -- pop-to-buffer (other frame)"
+  (xref--goto-location location)
+  (cl-ecase window
+    ((nil)  (switch-to-buffer (current-buffer)))
+    (window (pop-to-buffer (current-buffer) t))
+    (frame  (let ((pop-up-frames t)) (pop-to-buffer (current-buffer) t)))))
+
+
+;;; XREF buffer (part of the UI)
+
+;; The xref buffer is used to display a set of xrefs.
+
+(defun xref--display-position (pos other-window recenter-arg)
+  ;; show the location, but don't hijack focus.
+  (with-selected-window (display-buffer (current-buffer) other-window)
+    (goto-char pos)
+    (recenter recenter-arg)))
+
+(defun xref--show-location (location)
+  (condition-case err
+      (progn
+        (xref--goto-location location)
+        (xref--display-position (point) t 1))
+    (user-error (message (error-message-string err)))))
+
+(defun xref--next-line (backward)
+  (let ((loc (xref--search-property 'xref-location backward)))
+    (when loc
+      (save-window-excursion
+        (xref--show-location loc)
+        (sit-for most-positive-fixnum)))))
+
+(defun xref-next-line ()
+  "Move to the next xref and display its source in the other window."
+  (interactive)
+  (xref--next-line nil))
+
+(defun xref-prev-line ()
+  "Move to the previous xref and display its source in the other window."
+  (interactive)
+  (xref--next-line t))
+
+(defun xref--location-at-point ()
+  (or (get-text-property (point) 'xref-location)
+      (error "No reference at point")))
+
+(defvar-local xref--window nil)
+
+(defun xref-goto-xref ()
+  "Jump to the xref at point and bury the xref buffer."
+  (interactive)
+  (let ((loc (xref--location-at-point))
+        (window xref--window))
+    (quit-window)
+    (xref--pop-to-location loc window)))
+
+(define-derived-mode xref--xref-buffer-mode fundamental-mode "XREF"
+  "Mode for displaying cross-references."
+  (setq buffer-read-only t))
+
+(let ((map xref--xref-buffer-mode-map))
+  (define-key map (kbd "q") #'quit-window)
+  (define-key map [remap next-line] #'xref-next-line)
+  (define-key map [remap previous-line] #'xref-prev-line)
+  (define-key map (kbd "RET") #'xref-goto-xref)
+
+  ;; suggested by Johan Claesson "to further reduce finger movement":
+  (define-key map (kbd ".") #'xref-next-line)
+  (define-key map (kbd ",") #'xref-prev-line))
+
+(defconst xref-buffer-name "*xref*"
+  "The name of the buffer to show xrefs.")
+
+(defun xref--insert-xrefs (xref-alist)
+  "Insert XREF-ALIST in the current-buffer.
+XREF-ALIST is of the form ((GROUP . (XREF ...)) ...).  Where
+GROUP is a string for decoration purposes and XREF is an
+`xref--xref' object."
+  (cl-loop for ((group . xrefs) . more1) on xref-alist do
+           (xref--insert-propertized '(face bold) group "\n")
+           (cl-loop for (xref . more2) on xrefs do
+                    (insert "  ")
+                    (with-slots (description location) xref
+                      (xref--insert-propertized
+                       (list 'xref-location location
+                             'face 'font-lock-keyword-face)
+                       description))
+                    (when (or more1 more2)
+                      (insert "\n")))))
+
+(defun xref--analyze (xrefs)
+  "Find common filenames in XREFS.
+Return an alist of the form ((FILENAME . (XREF ...)) ...)."
+  (xref--alistify xrefs
+                  (lambda (x)
+                    (xref-location-group (xref--xref-location x)))
+                  #'equal))
+
+(defun xref--show-xref-buffer (xrefs window)
+  (let ((xref-alist (xref--analyze xrefs)))
+    (with-current-buffer (get-buffer-create xref-buffer-name)
+      (let ((inhibit-read-only t))
+        (erase-buffer)
+        (xref--insert-xrefs xref-alist)
+        (xref--xref-buffer-mode)
+        (pop-to-buffer (current-buffer))
+        (goto-char (point-min))
+        (setq xref--window window)
+        (current-buffer)))))
+
+
+;; This part of the UI seems fairly uncontroversial: it reads the
+;; identifier and deals with the single definition case.
+;;
+;; The controversial multiple definitions case is handed off to
+;; xref-show-xrefs-function.
+
+(defvar xref-show-xrefs-function 'xref--show-xref-buffer
+  "Function to display a list of xrefs.")
+
+(defun xref--show-xrefs (id kind xrefs window)
+  (cond
+   ((null xrefs)
+    (user-error "No known %s for: %s" kind id))
+   ((not (cdr xrefs))
+    (xref-push-marker-stack)
+    (xref--pop-to-location (xref--xref-location (car xrefs)) window))
+   (t
+    (xref-push-marker-stack)
+    (funcall xref-show-xrefs-function xrefs window))))
+
+(defun xref--read-identifier (prompt)
+  "Return the identifier at point or read it from the minibuffer."
+  (let ((id (funcall xref-identifier-at-point-function)))
+    (cond ((or current-prefix-arg (not id))
+           (completing-read prompt
+                            (funcall xref-identifier-completion-table-function)
+                            nil t id))
+          (t id))))
+
+
+;;; Commands
+
+(defun xref--find-definitions (id window)
+  (xref--show-xrefs id "definitions"
+                    (funcall xref-find-function 'definitions id)
+                    window))
+
+;;;###autoload
+(defun xref-find-definitions (identifier)
+  "Find the definition of the identifier at point.
+With prefix argument, prompt for the identifier."
+  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (xref--find-definitions identifier nil))
+
+;;;###autoload
+(defun xref-find-definitions-other-window (identifier)
+  "Like `xref-find-definitions' but switch to the other window."
+  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (xref--find-definitions identifier 'window))
+
+;;;###autoload
+(defun xref-find-definitions-other-frame (identifier)
+  "Like `xref-find-definitions' but switch to the other frame."
+  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (xref--find-definitions identifier 'frame))
+
+;;;###autoload
+(defun xref-find-references (identifier)
+  "Find references to the identifier at point.
+With prefix argument, prompt for the identifier."
+  (interactive (list (xref--read-identifier "Find references of: ")))
+  (xref--show-xrefs identifier "references"
+                    (funcall xref-find-function 'references identifier)
+                    nil))
+
+;;;###autoload
+(defun xref-find-apropos (pattern)
+  "Find all meaningful symbols that match PATTERN.
+The argument has the same meaning as in `apropos'."
+  (interactive (list (read-from-minibuffer
+                      "Search for pattern (word list or regexp): ")))
+  (require 'apropos)
+  (xref--show-xrefs pattern "apropos"
+                    (funcall xref-find-function 'apropos
+                             (apropos-parse-pattern
+                              (if (string-equal (regexp-quote pattern) pattern)
+                                  ;; Split into words
+                                  (or (split-string pattern "[ \t]+" t)
+                                      (user-error "No word list given"))
+                                pattern)))
+                    nil))
+
+
+;;; Key bindings
+
+;;;###autoload (define-key esc-map "." #'xref-find-definitions)
+;;;###autoload (define-key esc-map "," #'xref-pop-marker-stack)
+;;;###autoload (define-key esc-map [?\C-.] #'xref-find-apropos)
+;;;###autoload (define-key ctl-x-4-map "." 
#'xref-find-definitions-other-window)
+;;;###autoload (define-key ctl-x-5-map "." #'xref-find-definitions-other-frame)
+
+
+(provide 'xref)
+
+;;; xref.el ends here
diff --git a/lisp/saveplace.el b/lisp/saveplace.el
index a25dba2..985a52a 100644
--- a/lisp/saveplace.el
+++ b/lisp/saveplace.el
@@ -138,6 +138,8 @@ disabled, i.e., the position is recorded for all files."
   :version "24.1"
   :type 'regexp :group 'save-place)
 
+(declare-function dired-current-directory "dired" (&optional localp))
+
 (defun toggle-save-place (&optional parg)
   "Toggle whether to save your place in this file between sessions.
 If this mode is enabled, point is recorded when you kill the buffer
@@ -153,7 +155,7 @@ file:
 \(setq-default save-place t)"
   (interactive "P")
   (if (not (or buffer-file-name (and (derived-mode-p 'dired-mode)
-                                    dired-directory)))
+                                    (dired-current-directory))))
       (message "Buffer `%s' not visiting a file or directory" (buffer-name))
     (setq save-place (if parg
                          (> (prefix-numeric-value parg) 0)
@@ -172,12 +174,13 @@ file:
   ;; file.  If not, do so, then feel free to modify the alist.  It
   ;; will be saved again when Emacs is killed.
   (or save-place-loaded (load-save-place-alist-from-file))
-  (let ((item (or buffer-file-name
-                  (and (derived-mode-p 'dired-mode)
-                      dired-directory
-                      (expand-file-name (if (consp dired-directory)
-                                            (car dired-directory)
-                                          dired-directory))))))
+  (let* ((directory (and (derived-mode-p 'dired-mode)
+                        (dired-current-directory)))
+        (item (or buffer-file-name
+                  (and directory
+                       (expand-file-name (if (consp directory)
+                                             (car directory)
+                                           directory))))))
     (when (and item
                (or (not save-place-ignore-files-regexp)
                    (not (string-match save-place-ignore-files-regexp
@@ -186,8 +189,7 @@ file:
             (position (cond ((eq major-mode 'hexl-mode)
                             (with-no-warnings
                               (1+ (hexl-current-address))))
-                           ((and (derived-mode-p 'dired-mode)
-                                 dired-directory)
+                           ((and (derived-mode-p 'dired-mode) directory)
                             (let ((filename (dired-get-filename nil t)))
                               (if filename
                                   `((dired-filename . ,filename))
@@ -305,7 +307,7 @@ may have changed) back to `save-place-alist'."
        ;; save-place checks buffer-file-name too, but we can avoid
        ;; overhead of function call by checking here too.
        (and (or buffer-file-name (and (derived-mode-p 'dired-mode)
-                                      dired-directory))
+                                      (dired-current-directory)))
             (save-place-to-alist))
        (setq buf-list (cdr buf-list))))))
 
@@ -325,19 +327,21 @@ may have changed) back to `save-place-alist'."
 (defun save-place-dired-hook ()
   "Position the point in a Dired buffer."
   (or save-place-loaded (load-save-place-alist-from-file))
-  (let ((cell (assoc (and (derived-mode-p 'dired-mode)
-                         dired-directory
-                         (expand-file-name (if (consp dired-directory)
-                                               (car dired-directory)
-                                             dired-directory)))
-                    save-place-alist)))
+  (let* ((directory (and (derived-mode-p 'dired-mode)
+                        (dired-current-directory)))
+        (cell (assoc (and directory
+                          (expand-file-name (if (consp directory)
+                                                (car directory)
+                                              directory)))
+                     save-place-alist)))
     (if cell
         (progn
           (or revert-buffer-in-progress-p
-              (if (integerp (cdr cell))
-                 (goto-char (cdr cell))
-               (and (assq 'dired-filename (cdr cell))
-                    (dired-goto-file (cdr (assq 'dired-filename (cdr 
cell)))))))
+              (cond
+              ((integerp (cdr cell))
+               (goto-char (cdr cell)))
+              ((and (listp (cdr cell)) (assq 'dired-filename (cdr cell)))
+               (dired-goto-file (cdr (assq 'dired-filename (cdr cell)))))))
           ;; and make sure it will be saved again for later
           (setq save-place t)))))
 
diff --git a/lisp/shell.el b/lisp/shell.el
index 506f944..480d04a 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -308,6 +308,13 @@ for Shell mode only."
                 (const :tag "on" t))
   :group 'shell)
 
+(defcustom shell-display-buffer-actions display-buffer-base-action
+  "The `display-buffer' actions for the `*shell*' buffer."
+  :type display-buffer--action-custom-type
+  :risky t
+  :version "25.1"
+  :group 'shell)
+
 (defvar shell-dirstack nil
   "List of directories saved by pushd in this buffer's shell.
 Thus, this does not include the shell's current directory.")
@@ -718,7 +725,7 @@ Otherwise, one argument `-i' is passed to the shell.
 
   ;; The buffer's window must be correctly set when we call comint (so
   ;; that comint sets the COLUMNS env var properly).
-  (pop-to-buffer-same-window buffer)
+  (pop-to-buffer buffer shell-display-buffer-actions)
   (unless (comint-check-proc buffer)
     (let* ((prog (or explicit-shell-file-name
                     (getenv "ESHELL") shell-file-name))
diff --git a/lisp/simple.el b/lisp/simple.el
index 0fcd5db..b436dd7 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1667,7 +1667,6 @@ invoking, give a prefix argument to 
`execute-extended-command'."
     (let ((prefix-arg prefixarg))
       (command-execute function 'record))
     ;; If enabled, show which key runs this command.
-    ;; (when binding
     ;; But first wait, and skip the message if there is input.
     (let* ((waited
             ;; If this command displayed something in the echo area;
@@ -1675,10 +1674,11 @@ invoking, give a prefix argument to 
`execute-extended-command'."
             ;; FIXME: Wait *after* running post-command-hook!
             ;; FIXME: Don't wait if execute-extended-command--shorter won't
             ;; find a better answer anyway!
-            (sit-for (cond
-                      ((zerop (length (current-message))) 0)
-                      ((numberp suggest-key-bindings) suggest-key-bindings)
-                      (t 2)))))
+            (when suggest-key-bindings
+              (sit-for (cond
+                        ((zerop (length (current-message))) 0)
+                        ((numberp suggest-key-bindings) suggest-key-bindings)
+                        (t 2))))))
       (when (and waited (not (consp unread-command-events)))
         (unless (or binding executing-kbd-macro (not (symbolp function))
                     (<= (length (symbol-name function)) 2))
diff --git a/lisp/startup.el b/lisp/startup.el
index c04b16c..8e981bb 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1463,9 +1463,7 @@ Each element in the list should be a list of strings or 
pairs
              (goto-char (point-min))))
      "\tMany people have contributed code included in GNU Emacs\n"
      :link ("Contributing"
-           ,(lambda (_button)
-             (view-file (expand-file-name "CONTRIBUTE" data-directory))
-             (goto-char (point-min))))
+           ,(lambda (_button) (info "(emacs)Contributing")))
      "\tHow to contribute improvements to Emacs\n"
      "\n"
      :link ("GNU and Freedom" ,(lambda (_button) (describe-gnu-project)))
@@ -2039,9 +2037,7 @@ Type \\[describe-distribution] for information on "))
 
   (insert-button "Contributing"
                 'action
-                (lambda (_button)
-                  (view-file (expand-file-name "CONTRIBUTE" data-directory))
-                  (goto-char (point-min)))
+                (lambda (_button) (info "(emacs)Contributing"))
                 'follow-link t)
   (insert "\tHow to contribute improvements to Emacs\n\n")
 
diff --git a/lisp/subr.el b/lisp/subr.el
index 6ce02b7..53ad272 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2166,7 +2166,7 @@ keyboard-quit events while waiting for a valid input."
     char))
 
 (defun sit-for (seconds &optional nodisp obsolete)
-  "Perform redisplay, then wait for SECONDS seconds or until input is 
available.
+  "Redisplay, then wait for SECONDS seconds.  Stop when input is available.
 SECONDS may be a floating-point value.
 \(On operating systems that do not support waiting for fractions of a
 second, floating-point values are rounded down to the nearest integer.)
@@ -2184,7 +2184,7 @@ floating point support."
   (declare (advertised-calling-convention (seconds &optional nodisp) "22.1"))
   ;; This used to be implemented in C until the following discussion:
   ;; http://lists.gnu.org/archive/html/emacs-devel/2006-07/msg00401.html
-  ;; Then it was moved to C using an implementation based on an idle timer,
+  ;; Then it was moved here using an implementation based on an idle timer,
   ;; which was then replaced by the use of read-event.
   (if (numberp nodisp)
       (setq seconds (+ seconds (* 1e-3 nodisp))
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 1993ff1..12e7fda 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -1300,18 +1300,48 @@ Inserts the value of `tex-open-quote' (normally ``) or 
`tex-close-quote'
 \(normally '') depending on the context.  With prefix argument, always
 inserts \" characters."
   (interactive "*P")
+  ;; Discover if we'll be inserting normal double quotes.
+  ;;
   (if (or arg (memq (char-syntax (preceding-char)) '(?/ ?\\))
-         (eq (get-text-property (point) 'face) 'tex-verbatim)
-         (save-excursion
-           (backward-char (length tex-open-quote))
-           (when (or (looking-at (regexp-quote tex-open-quote))
-                     (looking-at (regexp-quote tex-close-quote)))
-             (delete-char (length tex-open-quote))
-             t)))
+          (eq (get-text-property (point) 'face) 'tex-verbatim)
+          ;; Discover if a preceding occurrence of `tex-open-quote'
+          ;; should be morphed to a normal double quote.
+          ;;
+          (and (>= (point) (+ (point-min) (length tex-open-quote)))
+               (save-excursion
+                 (backward-char (length tex-open-quote))
+                 (when (or (looking-at (regexp-quote tex-open-quote))
+                           (looking-at (regexp-quote tex-close-quote)))
+                   (delete-char (length tex-open-quote))
+                   (when (looking-at (regexp-quote tex-close-quote))
+                     (delete-char (length tex-close-quote)))
+                   t))))
+      ;; Insert the normal quote (eventually letting
+      ;; `electric-pair-mode' do its thing).
+      ;;
       (self-insert-command (prefix-numeric-value arg))
-    (insert (if (or (memq (char-syntax (preceding-char)) '(?\( ?> ?\s))
-                    (memq (preceding-char) '(?~)))
-               tex-open-quote tex-close-quote))))
+    ;; We'll be inserting fancy TeX quotes, but consider and imitate
+    ;; `electric-pair-mode''s two behaviors: pair-insertion and
+    ;; region wrapping.
+    ;;
+    (if (and electric-pair-mode (use-region-p))
+        (let* ((saved (point-marker)))
+          (goto-char (mark))
+          (insert (if (> saved (mark)) tex-open-quote tex-close-quote))
+          (goto-char saved)
+          (insert (if (> saved (mark)) tex-close-quote tex-open-quote)))
+      (if (or (memq (char-syntax (preceding-char)) '(?\( ?> ?\s))
+              (memq (preceding-char) '(?~)))
+          (if electric-pair-mode
+              (if (looking-at (regexp-quote tex-close-quote))
+                  (forward-char (length tex-close-quote))
+                (insert tex-open-quote)
+                (insert tex-close-quote)
+                (backward-char (length tex-close-quote)))
+            (insert tex-open-quote))
+        (if (looking-at (regexp-quote tex-close-quote))
+            (forward-char (length tex-close-quote))
+          (insert tex-close-quote))))))
 
 (defun tex-validate-buffer ()
   "Check current buffer for paragraphs containing mismatched braces or $s.
diff --git a/lisp/vc/compare-w.el b/lisp/vc/compare-w.el
index 3b8293c..454139e 100644
--- a/lisp/vc/compare-w.el
+++ b/lisp/vc/compare-w.el
@@ -30,6 +30,8 @@
 
 ;;; Code:
 
+(require 'diff-mode)                    ; For diff faces.
+
 (defgroup compare-windows nil
   "Compare text between windows."
   :prefix "compare-"
@@ -128,11 +130,19 @@ out all highlighting later with the command 
`compare-windows-dehighlight'."
   :group 'compare-windows
   :version "22.1")
 
-(defface compare-windows
-  '((t :inherit lazy-highlight))
-  "Face for highlighting of compare-windows difference regions."
+(defface compare-windows-removed
+  '((t :inherit diff-removed))
+  "Face for highlighting of compare-windows removed regions."
   :group 'compare-windows
-  :version "22.1")
+  :version "25.1")
+
+(defface compare-windows-added
+  '((t :inherit diff-added))
+  "Face for highlighting of compare-windows added regions."
+  :group 'compare-windows
+  :version "25.1")
+
+(define-obsolete-face-alias 'compare-windows 'compare-windows-added "25.1")
 
 (defvar compare-windows-overlay1 nil)
 (defvar compare-windows-overlay2 nil)
@@ -158,7 +168,8 @@ then try to get a window on an iconified frame, and finally
 consider all existing frames."
   (or (get-mru-window 'visible t t)
       (get-mru-window 0 t t)
-      (get-mru-window t t t)))
+      (get-mru-window t t t)
+      (error "No other window")))
 
 (defun compare-windows-get-next-window ()
   "Return the window next in the cyclic ordering of windows.
@@ -393,13 +404,13 @@ on third call it again advances points to the next 
difference and so on."
     (if compare-windows-overlay1
         (move-overlay compare-windows-overlay1 beg1 end1 b1)
       (setq compare-windows-overlay1 (make-overlay beg1 end1 b1))
-      (overlay-put compare-windows-overlay1 'face 'compare-windows)
+      (overlay-put compare-windows-overlay1 'face 'compare-windows-added)
       (overlay-put compare-windows-overlay1 'priority 1000))
     (overlay-put compare-windows-overlay1 'window w1)
     (if compare-windows-overlay2
         (move-overlay compare-windows-overlay2 beg2 end2 b2)
       (setq compare-windows-overlay2 (make-overlay beg2 end2 b2))
-      (overlay-put compare-windows-overlay2 'face 'compare-windows)
+      (overlay-put compare-windows-overlay2 'face 'compare-windows-removed)
       (overlay-put compare-windows-overlay2 'priority 1000))
     (overlay-put compare-windows-overlay2 'window w2)
     (if (not (eq compare-windows-highlight 'persistent))
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 65f683c..1700bef1 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -371,8 +371,7 @@ or an empty string if none."
     (goto-char (point-min))
     (pcase stage
       (`update-index
-       (setq next-stage (if (vc-git--empty-db-p) 'ls-files-added
-                          (if files 'ls-files-up-to-date 'diff-index))))
+       (setq next-stage (if (vc-git--empty-db-p) 'ls-files-added 'diff-index)))
       (`ls-files-added
        (setq next-stage 'ls-files-unknown)
        (while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 
0\t\\([^\0]+\\)\0" nil t)
@@ -381,7 +380,7 @@ or an empty string if none."
            (push (list name 'added (vc-git-create-extra-fileinfo 0 new-perm))
                  result))))
       (`ls-files-up-to-date
-       (setq next-stage 'diff-index)
+       (setq next-stage 'ls-files-unknown)
        (while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 
0\t\\([^\0]+\\)\0" nil t)
          (let ((perm (string-to-number (match-string 1) 8))
                (name (match-string 2)))
@@ -400,7 +399,7 @@ or an empty string if none."
                      (vc-git-create-extra-fileinfo 0 0))
                result)))
       (`diff-index
-       (setq next-stage 'ls-files-unknown)
+       (setq next-stage (if files 'ls-files-up-to-date 'ls-files-unknown))
        (while (re-search-forward
                ":\\([0-7]\\{6\\}\\) \\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 
[0-9a-f]\\{40\\} 
\\(\\([ADMUT]\\)\0\\([^\0]+\\)\\|\\([CR]\\)[0-9]*\0\\([^\0]+\\)\0\\([^\0]+\\)\\)\0"
                nil t 1)
diff --git a/lisp/window.el b/lisp/window.el
index c95b0d6..21bd2c5 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -237,7 +237,12 @@ displays the buffer specified by BUFFER-OR-NAME before 
running BODY."
              (standard-output ,buffer)
              ,window ,value)
         (with-current-buffer ,buffer
-          (setq ,window (temp-buffer-window-show ,buffer ,vaction)))
+          (setq ,window (temp-buffer-window-show
+                         ,buffer
+                         ;; Remove window-height when it's handled below.
+                         (if (functionp (cdr (assq 'window-height (cdr 
,vaction))))
+                             (assq-delete-all 'window-height (copy-sequence 
,vaction))
+                           ,vaction))))
 
         (let ((inhibit-read-only t)
               (inhibit-modification-hooks t))
@@ -7798,6 +7803,9 @@ With arg N, put point N/10 of the way from the true end."
 (defvar mouse-autoselect-window-timer nil
   "Timer used by delayed window autoselection.")
 
+(defvar mouse-autoselect-window-position-1 nil
+  "First mouse position recorded by delayed window autoselection.")
+
 (defvar mouse-autoselect-window-position nil
   "Last mouse position recorded by delayed window autoselection.")
 
@@ -7822,6 +7830,7 @@ Optional argument FORCE means cancel unconditionally."
                        (memq (nth 4 (event-end last-input-event))
                              '(handle end-scroll)))))
     (setq mouse-autoselect-window-state nil)
+    (setq mouse-autoselect-window-position-1 nil)
     (when (timerp mouse-autoselect-window-timer)
       (cancel-timer mouse-autoselect-window-timer))
     (remove-hook 'pre-command-hook 'mouse-autoselect-window-cancel)))
@@ -7863,21 +7872,32 @@ is active.  This function is run by 
`mouse-autoselect-window-timer'."
        ;; A menu / popup dialog is active or the mouse is not on the
        ;; text region of WINDOW: Suspend autoselection temporarily.
        (mouse-autoselect-window-start mouse-position nil t))
-      ((eq mouse-autoselect-window-state 'suspend)
+      ((or (eq mouse-autoselect-window-state 'suspend)
+          ;; When the mouse is at its first recorded position, restart
+          ;; delayed autoselection.  This works around a scenario with
+          ;; two two-window frames with identical dimensions: select the
+          ;; first window of the first frame, switch to the second
+          ;; frame, move the mouse to its second window, minimize the
+          ;; second frame.  Now the second window of the first frame
+          ;; gets selected although the mouse never really "moved" into
+          ;; that window.
+          (and (numberp mouse-autoselect-window)
+               (equal (mouse-position) mouse-autoselect-window-position-1)))
        ;; Delayed autoselection was temporarily suspended, reenable it.
        (mouse-autoselect-window-start mouse-position))
       ((and window (not (eq window (selected-window)))
            (or (not (numberp mouse-autoselect-window))
-               (and (> mouse-autoselect-window 0)
-                    ;; If `mouse-autoselect-window' is positive, select
-                    ;; window if the window is the same as before.
+               (and (>= mouse-autoselect-window 0)
+                    ;; If `mouse-autoselect-window' is non-negative,
+                    ;; select window if it's the same as before.
                     (eq window mouse-autoselect-window-window))
-               ;; Otherwise select window if the mouse is at the same
-               ;; position as before.  Observe that the first test after
-               ;; starting autoselection usually fails since the value of
-               ;; `mouse-autoselect-window-position' recorded there is the
-               ;; position where the mouse has entered the new window and
-               ;; not necessarily where the mouse has stopped moving.
+               ;; Otherwise select window iff the mouse is at the same
+               ;; position as before.  Observe that the first test
+               ;; after starting autoselection usually fails since the
+               ;; value of `mouse-autoselect-window-position' recorded
+               ;; there is the position where the mouse has entered the
+               ;; new window and not necessarily where the mouse has
+               ;; stopped moving.
                (equal mouse-position mouse-autoselect-window-position))
            ;; The minibuffer is a candidate window if it's active.
            (or (not (window-minibuffer-p window))
@@ -7921,14 +7941,14 @@ is active.  This function is run by 
`mouse-autoselect-window-timer'."
                     (not (minibuffer-window-active-p window)))
                ;; Don't switch when autoselection shall be delayed.
                (and (numberp mouse-autoselect-window)
-                    (not (zerop mouse-autoselect-window))
                     (not (eq mouse-autoselect-window-state 'select))
-                    (progn
+                    (let ((position (mouse-position)))
                       ;; Cancel any delayed autoselection.
                       (mouse-autoselect-window-cancel t)
                       ;; Start delayed autoselection from current mouse
                       ;; position and window.
-                      (mouse-autoselect-window-start (mouse-position) window)
+                      (setq mouse-autoselect-window-position-1 position)
+                      (mouse-autoselect-window-start position window)
                       ;; Executing a command cancels delayed autoselection.
                       (add-hook
                        'pre-command-hook 'mouse-autoselect-window-cancel))))
diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c
index 6f4db56..2d2d409 100644
--- a/lwlib/xlwmenu.c
+++ b/lwlib/xlwmenu.c
@@ -439,10 +439,9 @@ resource_widget_value (XlwMenuWidget mw, widget_value *val)
          int complete_length =
            strlen (resourced_name) + strlen (val->value) + 2;
          complete_name = XtMalloc (complete_length);
-         *complete_name = 0;
-         strcat (complete_name, resourced_name);
-         strcat (complete_name, " ");
-         strcat (complete_name, val->value);
+         char *z = stpcpy (complete_name, resourced_name);
+         *z++ = ' ';
+         strcpy (z, val->value);
        }
 
       val->toolkit_data = complete_name;
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index 39ec8ae..49fdf5e 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -123,6 +123,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module stdint:
   # Code from module stdio:
   # Code from module stdlib:
+  # Code from module stpcpy:
   # Code from module strftime:
   # Code from module string:
   # Code from module strtoimax:
@@ -341,6 +342,12 @@ AC_DEFUN([gl_INIT],
   gl_STDINT_H
   gl_STDIO_H
   gl_STDLIB_H
+  gl_FUNC_STPCPY
+  if test $HAVE_STPCPY = 0; then
+    AC_LIBOBJ([stpcpy])
+    gl_PREREQ_STPCPY
+  fi
+  gl_STRING_MODULE_INDICATOR([stpcpy])
   gl_FUNC_GNU_STRFTIME
   gl_HEADER_STRING_H
   gl_FUNC_STRTOIMAX
@@ -889,6 +896,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/stdint.in.h
   lib/stdio.in.h
   lib/stdlib.in.h
+  lib/stpcpy.c
   lib/strftime.c
   lib/strftime.h
   lib/string.in.h
@@ -995,6 +1003,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/stdint.m4
   m4/stdio_h.m4
   m4/stdlib_h.m4
+  m4/stpcpy.m4
   m4/strftime.m4
   m4/string_h.m4
   m4/strtoimax.m4
diff --git a/m4/stpcpy.m4 b/m4/stpcpy.m4
new file mode 100644
index 0000000..966ba95
--- /dev/null
+++ b/m4/stpcpy.m4
@@ -0,0 +1,25 @@
+# stpcpy.m4 serial 8
+dnl Copyright (C) 2002, 2007, 2009-2014 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STPCPY],
+[
+  dnl Persuade glibc <string.h> to declare stpcpy().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  dnl The stpcpy() declaration in lib/string.in.h uses 'restrict'.
+  AC_REQUIRE([AC_C_RESTRICT])
+
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_CHECK_FUNCS([stpcpy])
+  if test $ac_cv_func_stpcpy = no; then
+    HAVE_STPCPY=0
+  fi
+])
+
+# Prerequisites of lib/stpcpy.c.
+AC_DEFUN([gl_PREREQ_STPCPY], [
+  :
+])
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 1edfda0..2467e64 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-26  Eli Zaretskii  <address@hidden>
+
+       * gnulib.mk (stpcpy, string): Sync with the latest change in
+       lib/gnulib.mk.
+
 2014-12-13  Eli Zaretskii  <address@hidden>
 
        * gnulib.mk (stddef.h): Sync with the latest change in lib/gnulib.mk.
diff --git a/nt/gnulib.mk b/nt/gnulib.mk
index 273f522..a5dca96 100644
--- a/nt/gnulib.mk
+++ b/nt/gnulib.mk
@@ -43,7 +43,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib 
--m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux 
--avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix 
--avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die 
--avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select 
--avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib 
--makefile-name=gnulib.mk --conditional-dependencies --no-libtool --ma [...]
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib 
--m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux 
--avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix 
--avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die 
--avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select 
--avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib 
--makefile-name=gnulib.mk --conditional-dependencies --no-libtool --ma [...]
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -771,6 +771,15 @@ EXTRA_DIST += stdint.in.h
 
 ## end   gnulib module stdint
 
+## begin gnulib module stpcpy
+
+
+EXTRA_DIST += stpcpy.c
+
+EXTRA_libgnu_a_SOURCES += stpcpy.c
+
+## end   gnulib module stpcpy
+
 ## begin gnulib module strftime
 
 libgnu_a_SOURCES += strftime.c
@@ -779,6 +788,106 @@ EXTRA_DIST += strftime.h
 
 ## end   gnulib module strftime
 
+## begin gnulib module string
+
+BUILT_SOURCES += string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) 
$(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f address@hidden $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
+             -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
+             -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
+             -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \
+             -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \
+             -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \
+             -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \
+             -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \
+             -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \
+             -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \
+             -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \
+             -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \
+             -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \
+             -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \
+             -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \
+             -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \
+             -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \
+             -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \
+             -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \
+             -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \
+             -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \
+             -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \
+             -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \
+             -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \
+             -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \
+             -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \
+             -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \
+             -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \
+             -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \
+             -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \
+             -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \
+             -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \
+             -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \
+             -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \
+             -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \
+             -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
+             -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
+             < $(srcdir)/string.in.h | \
+         sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
+             -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \
+             -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+             -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
+             -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \
+             -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
+             -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+             -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
+             -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+             < $(srcdir)/string.in.h; \
+       } > address@hidden && \
+       mv address@hidden $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string.in.h
+
+## end   gnulib module string
+
 ## begin gnulib module strtoimax
 
 
diff --git a/src/ChangeLog b/src/ChangeLog
index b90471e..9e3fb90 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,120 @@
+2014-12-28  Paul Eggert  <address@hidden>
+
+       Wrap dll functions more simply
+       * decompress.c, gnutls.c, image.c, xml.c:
+       If WINDOWSNT, use '#define FOO fn_FOO' to wrap dll functions,
+       rather than the inverse when not WINDOWSNT.  This isolates the
+       fn_* business into the WINDOWSNT-specific section of the code,
+       which makes it easier to maintain the generic code.
+       * decompress.c (DEF_ZLIB_FN, LOAD_ZLIB_FN):
+       * gnutls.c (DEF_GNUTLS_FN, LOAD_GNUTLS_FN):
+       * image.c (DEF_IMGLIB_FN, LOAD_IMGLIB_FN):
+       * xml.c (DEF_XML2_FN, LOAD_XML2_FN):
+       Remove.  All uses replaced by DEF_DLL_FN.
+       * decompress.c (inflateInit2): Remove; no longer needed.
+       * w32.h (DEF_DLL_FN, LOAD_DLL_FN): New macros.
+
+       Port memory-full checking to GnuTLS 3.3
+       Instead of using gnutls_global_set_mem_functions, check every call
+       to a GnuTLS function that might return an indication of memory
+       exhaustion.  Suggested by Dmitry Antipov in:
+       http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg02056.html
+       * gnutls.c (gnutls_global_set_mem_functions) [WINDOWSNT]: Remove.
+       (init_gnutls_functions): Do not load gnutls_global_set_mem_functions.
+       (fn_gnutls_global_set_mem_functions) [!WINDOWSNT]: Remove.
+       All uses removed.
+       (check_memory_full): New function.
+       (emacs_gnutls_handshake, emacs_gnutls_handle_error)
+       (gnutls_make_error, gnutls_certificate_details, Fgnutls_peer_status)
+       (Fgnutls_boot): Use it.
+       (emacs_gnutls_global_init): Avoid gnutls_global_set_mem_functions.
+
+2014-12-27  Paul Eggert  <address@hidden>
+
+       Fix parse_settings to match internal documentation
+       * xsettings.c (parse_settings): Return the number of settings seen.
+       Count the settings changes accurately.
+       (read_settings): Don't confuse number of settings changes with
+       the return code from XGetWindowProperty.
+
+2014-12-27  Eli Zaretskii  <address@hidden>
+
+       * xdisp.c (set_iterator_to_next) <GET_FROM_STRING>: Limit search in
+       composition_compute_stop_pos to the number of characters in the
+       string.  (Bug#19435)
+       <GET_FROM_BUFFER, GET_FROM_STRING>: Simplify code.
+
+       * composite.c (composition_compute_stop_pos): If no composition
+       was found in a string before ENDPOS, and ENDPOS is the string end,
+       no need to back up to a safe point.
+
+       * dispextern.h (struct it) <end_charpos>: Improve commentary.
+
+2014-12-27  Jan Djärv  <address@hidden>
+
+       * nsimage.m (allocInitFromFile:): Initialize bmRep.
+       (dealloc): Release bmRep.
+        (setPixmapData): Make bmRep local so class member is not
+        set (Bug#19133).
+       (setPixmapData): Rename local variable bmRep to avoid compiler
+       warning.
+
+2014-12-27  Jan Djärv  <address@hidden>
+
+       * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert
+       when going to fullscreen (Bug#0x180004f).
+
+2014-12-27  Stefan Monnier  <address@hidden>
+
+       * buffer.c (syms_of_buffer) <Vafter_change_functions>: fix docstring.
+
+2014-12-27  Eli Zaretskii  <address@hidden>
+
+       * gnutls.c (gnutls_init): Fix deprecation warning from GCC.
+
+2014-12-26  Paul Eggert  <address@hidden>
+
+       Use bool for boolean in xselect.c, xsettings.c
+       * xselect.c (x_get_local_selection, struct selection_data)
+       (x_selection_request_lisp_error, struct prop_location)
+       (x_handle_selection_request, x_convert_selection)
+       (waiting_for_other_props_on_window, expect_property_change)
+       (wait_for_property_change, x_handle_property_notify)
+       (x_get_foreign_selection, x_get_window_property)
+       (receive_incremental_selection)
+       (x_get_window_property_as_lisp_data)
+       (lisp_data_to_selection_data, Fx_get_selection_internal)
+       (x_send_client_event):
+       * xselect.c, xterm.h (x_handle_dnd_message):
+       * xsettings.c (dpyinfo_valid, parse_settings, read_settings)
+       (apply_xft_settings, read_and_apply_settings)
+       (xft_settings_event, init_gsettings, init_xsettings)
+       (syms_of_xsettings):
+       Use bool for boolean.
+       * xselect.c (x_get_window_property): Omit last arg, which was an
+       unused boolean.
+       * xsettings.c (apply_xft_settings): Remove 2nd arg, which was
+       always true.  All callers changed.
+
+2014-12-26  Eli Zaretskii  <address@hidden>
+
+       * w32proc.c (sys_spawnve, get_lcid_callback): Use strcpy instead
+       of strcat.
+
+       * w32menu.c (add_menu_item): Use stpcpy instead of strcat.
+
+       * w32.c (sys_readdir, stat_worker, symlink): Use strcpy instead of
+       strcat.
+
+2014-12-26  Paul Eggert  <address@hidden>
+
+       Use bool for boolean in xsmfns.c
+       * xsmfns.c, xterm.h (x_session_have_connection):
+       * xsmfns.c (doing_interact, smc_interact_CB, Fhandle_save_session):
+       Use bool for boolean.
+       (x_session_initialize, Fhandle_save_session):
+       Prefer NILP (x) to EQ (x, Qnil).
+
 2014-12-23  Didier Verna  <address@hidden> (tiny change).
 
        * nsselect.m (Fns_selection_owner_p): Return a Lisp boolean, not a
@@ -202,6 +319,10 @@
        Call gnutls_certificate_set_x509_system_trust.  Log an error message if
        it fails.
 
+2014-12-14  Paul Eggert  <address@hidden>
+
+       * regex.c (analyze_first): Rename from analyze_first.
+
 2014-12-13  Paul Eggert  <address@hidden>
 
        * alloc.c (XMALLOC_BASE_ALIGNMENT): Use max_align_t instead of
@@ -871,6 +992,8 @@
        * fileio.c (Fexpand_file_name): Use make_unibyte_string, not
        build_string, when importing a home directory.  (Bug#18873)
 
+2014-12-27  Eli Zaretskii  <address@hidden>
+
        * dispnew.c (buffer_posn_from_coords):
        Use WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to
        account for the header-line height.  (Bug#18839)
diff --git a/src/buffer.c b/src/buffer.c
index b57d968..9a5c4a8 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -6066,9 +6066,9 @@ from happening repeatedly and making Emacs nonfunctional. 
 */);
               doc: /* List of functions to call after each text change.
 Three arguments are passed to each function: the positions of
 the beginning and end of the range of changed text,
-and the length in bytes of the pre-change text replaced by that range.
+and the length in chars of the pre-change text replaced by that range.
 \(For an insertion, the pre-change length is zero;
-for a deletion, that length is the number of bytes deleted,
+for a deletion, that length is the number of chars deleted,
 and the post-change beginning and end are at the same place.)
 
 Buffer changes made while executing the `after-change-functions'
diff --git a/src/callproc.c b/src/callproc.c
index a677334..f40ed32 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -1315,13 +1315,10 @@ child_setup (int in, int out, int err, char **new_argv, 
bool set_pgrp,
 
     if (STRINGP (display))
       {
-       char *vdata;
-
        if (MAX_ALLOCA - sizeof "DISPLAY=" < SBYTES (display))
          exec_failed (new_argv[0], ENOMEM);
-       vdata = alloca (sizeof "DISPLAY=" + SBYTES (display));
-       strcpy (vdata, "DISPLAY=");
-       strcat (vdata, SSDATA (display));
+       char *vdata = alloca (sizeof "DISPLAY=" + SBYTES (display));
+       lispstpcpy (stpcpy (vdata, "DISPLAY="), display);
        new_env = add_env (env, new_env, vdata);
       }
 
diff --git a/src/composite.c b/src/composite.c
index 8982c90..0b52a9f 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -1032,7 +1032,8 @@ composition_compute_stop_pos (struct composition_it 
*cmp_it, ptrdiff_t charpos,
                }
            }
        }
-      if (charpos == endpos)
+      if (charpos == endpos
+         && !(STRINGP (string) && endpos == SCHARS (string)))
        {
          /* We couldn't find a composition point before ENDPOS.  But,
             some character after ENDPOS may be composed with
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 4852739..983b05c 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -357,7 +357,7 @@ xd_signature_cat (char *signature, char const *x)
   ptrdiff_t xlen = strlen (x);
   if (DBUS_MAXIMUM_SIGNATURE_LENGTH - xlen <= siglen)
     string_overflow ();
-  strcat (signature, x);
+  strcpy (signature + siglen, x);
 }
 
 /* Compute SIGNATURE of OBJECT.  It must have a form that it can be
diff --git a/src/decompress.c b/src/decompress.c
index 24ce852..f86aa6f 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -31,26 +31,14 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 static Lisp_Object Qzlib_dll;
 
 #ifdef WINDOWSNT
-#include <windows.h>
-#include "w32.h"
+# include <windows.h>
+# include "w32.h"
 
-/* Macro for defining functions that will be loaded from the zlib DLL.  */
-#define DEF_ZLIB_FN(rettype,func,args) static rettype (FAR CDECL 
*fn_##func)args
-
-/* Macro for loading zlib functions from the library.  */
-#define LOAD_ZLIB_FN(lib,func) {                                       \
-    fn_##func = (void *) GetProcAddress (lib, #func);                  \
-    if (!fn_##func) return false;                                      \
-  }
-
-DEF_ZLIB_FN (int, inflateInit2_,
-            (z_streamp strm, int  windowBits, const char *version, int 
stream_size));
-
-DEF_ZLIB_FN (int, inflate,
-            (z_streamp strm, int flush));
-
-DEF_ZLIB_FN (int, inflateEnd,
-            (z_streamp strm));
+DEF_DLL_FN (int, inflateInit2_,
+           (z_streamp strm, int windowBits, const char *version,
+            int stream_size));
+DEF_DLL_FN (int, inflate, (z_streamp strm, int flush));
+DEF_DLL_FN (int, inflateEnd, (z_streamp strm));
 
 static bool zlib_initialized;
 
@@ -62,20 +50,19 @@ init_zlib_functions (void)
   if (!library)
     return false;
 
-  LOAD_ZLIB_FN (library, inflateInit2_);
-  LOAD_ZLIB_FN (library, inflate);
-  LOAD_ZLIB_FN (library, inflateEnd);
+  LOAD_DLL_FN (library, inflateInit2_);
+  LOAD_DLL_FN (library, inflate);
+  LOAD_DLL_FN (library, inflateEnd);
   return true;
 }
 
-#define fn_inflateInit2(strm, windowBits) \
-        fn_inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-
-#else /* !WINDOWSNT */
+# undef inflate
+# undef inflateEnd
+# undef inflateInit2_
 
-#define fn_inflateInit2                inflateInit2
-#define fn_inflate             inflate
-#define fn_inflateEnd          inflateEnd
+# define inflate fn_inflate
+# define inflateEnd fn_inflateEnd
+# define inflateInit2_ fn_inflateInit2_
 
 #endif /* WINDOWSNT */
 
@@ -90,7 +77,7 @@ static void
 unwind_decompress (void *ddata)
 {
   struct decompress_unwind_data *data = ddata;
-  fn_inflateEnd (data->stream);
+  inflateEnd (data->stream);
 
   /* Delete any uncompressed data already inserted on error.  */
   if (data->start)
@@ -167,7 +154,7 @@ This function can be called only in unibyte buffers.  */)
 
   /* The magic number 32 apparently means "autodetect both the gzip and
      zlib formats" according to zlib.h.  */
-  if (fn_inflateInit2 (&stream, MAX_WBITS + 32) != Z_OK)
+  if (inflateInit2 (&stream, MAX_WBITS + 32) != Z_OK)
     return Qnil;
 
   unwind_data.start = iend;
@@ -197,7 +184,7 @@ This function can be called only in unibyte buffers.  */)
       stream.avail_in = avail_in;
       stream.next_out = GPT_ADDR;
       stream.avail_out = avail_out;
-      inflate_status = fn_inflate (&stream, Z_NO_FLUSH);
+      inflate_status = inflate (&stream, Z_NO_FLUSH);
       pos_byte += avail_in - stream.avail_in;
       decompressed = avail_out - stream.avail_out;
       insert_from_gap (decompressed, decompressed, 0);
diff --git a/src/dispextern.h b/src/dispextern.h
index 8fd3ef9..0516296 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -2235,7 +2235,10 @@ struct it
   ptrdiff_t base_level_stop;
 
   /* Maximum string or buffer position + 1.  ZV when iterating over
-     current_buffer.  */
+     current_buffer.  When iterating over a string in display_string,
+     this can be smaller or greater than the number of string
+     characters, depending on the values of PRECISION and FIELD_WIDTH
+     with which display_string was called.  */
   ptrdiff_t end_charpos;
 
   /* C string to iterate over.  Non-null means get characters from
diff --git a/src/doc.c b/src/doc.c
index 1b87c23..1d9c330 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -42,6 +42,8 @@ static ptrdiff_t get_doc_string_buffer_size;
 
 static unsigned char *read_bytecode_pointer;
 
+static char const sibling_etc[] = "../etc/";
+
 /* `readchar' in lread.c calls back here to fetch the next byte.
    If UNREADFLAG is 1, we unread a byte.  */
 
@@ -80,7 +82,6 @@ get_doc_string (Lisp_Object filepos, bool unibyte, bool 
definition)
 {
   char *from, *to, *name, *p, *p1;
   int fd;
-  ptrdiff_t minsize;
   int offset;
   EMACS_INT position;
   Lisp_Object file, tem, pos;
@@ -113,21 +114,14 @@ get_doc_string (Lisp_Object filepos, bool unibyte, bool 
definition)
 
   tem = Ffile_name_absolute_p (file);
   file = ENCODE_FILE (file);
-  if (NILP (tem))
-    {
-      Lisp_Object docdir = ENCODE_FILE (Vdoc_directory);
-      minsize = SCHARS (docdir);
-      /* sizeof ("../etc/") == 8 */
-      if (minsize < 8)
-       minsize = 8;
-      name = SAFE_ALLOCA (minsize + SCHARS (file) + 8);
-      char *z = lispstpcpy (name, docdir);
-      strcpy (z, SSDATA (file));
-    }
-  else
-    {
-      name = SSDATA (file);
-    }
+  Lisp_Object docdir
+    = NILP (tem) ? ENCODE_FILE (Vdoc_directory) : empty_unibyte_string;
+  ptrdiff_t docdir_sizemax = SBYTES (docdir) + 1;
+#ifndef CANNOT_DUMP
+  docdir_sizemax = max (docdir_sizemax, sizeof sibling_etc);
+#endif
+  name = SAFE_ALLOCA (docdir_sizemax + SBYTES (file));
+  lispstpcpy (lispstpcpy (name, docdir), file);
 
   fd = emacs_open (name, O_RDONLY, 0);
   if (fd < 0)
@@ -137,8 +131,7 @@ get_doc_string (Lisp_Object filepos, bool unibyte, bool 
definition)
        {
          /* Preparing to dump; DOC file is probably not installed.
             So check in ../etc.  */
-         strcpy (name, "../etc/");
-         strcat (name, SSDATA (file));
+         lispstpcpy (stpcpy (name, sibling_etc), file);
 
          fd = emacs_open (name, O_RDONLY, 0);
        }
@@ -580,7 +573,6 @@ the same file name is found in the `doc-directory'.  */)
       (0)
 #endif /* CANNOT_DUMP */
     {
-      static char const sibling_etc[] = "../etc/";
       dirname = sibling_etc;
       dirlen = sizeof sibling_etc - 1;
     }
@@ -594,8 +586,7 @@ the same file name is found in the `doc-directory'.  */)
   count = SPECPDL_INDEX ();
   USE_SAFE_ALLOCA;
   name = SAFE_ALLOCA (dirlen + SBYTES (filename) + 1);
-  strcpy (name, dirname);
-  strcat (name, SSDATA (filename));    /*** Add this line ***/
+  lispstpcpy (stpcpy (name, dirname), filename);       /*** Add this line ***/
 
   /* Vbuild_files is nil when temacs is run, and non-nil after that.  */
   if (NILP (Vbuild_files))
diff --git a/src/editfns.c b/src/editfns.c
index 0a07886..430c4c9 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1350,10 +1350,9 @@ name, or nil if there is no such user.  */)
       USE_SAFE_ALLOCA;
       char *r = SAFE_ALLOCA (strlen (p) + SBYTES (login) + 1);
       memcpy (r, p, q - p);
-      r[q - p] = 0;
-      strcat (r, SSDATA (login));
+      char *s = lispstpcpy (&r[q - p], login);
       r[q - p] = upcase ((unsigned char) r[q - p]);
-      strcat (r, q + 1);
+      strcpy (s, q + 1);
       full = build_string (r);
       SAFE_FREE ();
     }
diff --git a/src/frame.c b/src/frame.c
index 3127366..2ad1c1b5 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -4076,23 +4076,23 @@ xrdb_get_resource (XrmDatabase rdb, Lisp_Object 
attribute, Lisp_Object class, Li
 
   /* Start with emacs.FRAMENAME for the name (the specific one)
      and with `Emacs' for the class key (the general one).  */
-  lispstpcpy (name_key, Vx_resource_name);
-  lispstpcpy (class_key, Vx_resource_class);
+  char *nz = lispstpcpy (name_key, Vx_resource_name);
+  char *cz = lispstpcpy (class_key, Vx_resource_class);
 
-  strcat (class_key, ".");
-  strcat (class_key, SSDATA (class));
+  *cz++ = '.';
+  cz = lispstpcpy (cz, class);
 
   if (!NILP (component))
     {
-      strcat (class_key, ".");
-      strcat (class_key, SSDATA (subclass));
+      *cz++ = '.';
+      lispstpcpy (cz, subclass);
 
-      strcat (name_key, ".");
-      strcat (name_key, SSDATA (component));
+      *nz++ = '.';
+      nz = lispstpcpy (nz, component);
     }
 
-  strcat (name_key, ".");
-  strcat (name_key, SSDATA (attribute));
+  *nz++ = '.';
+  lispstpcpy (nz, attribute);
 
   char *value = x_get_string_resource (rdb, name_key, class_key);
   SAFE_FREE();
diff --git a/src/gnutls.c b/src/gnutls.c
index bf9f132..f945778 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -71,142 +71,129 @@ enum extra_peer_verification
 
 #ifdef WINDOWSNT
 
-/* Macro for defining functions that will be loaded from the GnuTLS DLL.  */
-#define DEF_GNUTLS_FN(rettype,func,args) static rettype (FAR CDECL 
*fn_##func)args
-
-/* Macro for loading GnuTLS functions from the library.  */
-#define LOAD_GNUTLS_FN(lib,func) {                                     \
-    fn_##func = (void *) GetProcAddress (lib, #func);                  \
-    if (!fn_##func) return 0;                                          \
-  }
-
-DEF_GNUTLS_FN (gnutls_alert_description_t, gnutls_alert_get,
-              (gnutls_session_t));
-DEF_GNUTLS_FN (const char *, gnutls_alert_get_name,
-              (gnutls_alert_description_t));
-DEF_GNUTLS_FN (int, gnutls_alert_send_appropriate, (gnutls_session_t, int));
-DEF_GNUTLS_FN (int, gnutls_anon_allocate_client_credentials,
-              (gnutls_anon_client_credentials_t *));
-DEF_GNUTLS_FN (void, gnutls_anon_free_client_credentials,
-              (gnutls_anon_client_credentials_t));
-DEF_GNUTLS_FN (int, gnutls_bye, (gnutls_session_t, gnutls_close_request_t));
-DEF_GNUTLS_FN (int, gnutls_certificate_allocate_credentials,
-              (gnutls_certificate_credentials_t *));
-DEF_GNUTLS_FN (void, gnutls_certificate_free_credentials,
-              (gnutls_certificate_credentials_t));
-DEF_GNUTLS_FN (const gnutls_datum_t *, gnutls_certificate_get_peers,
-              (gnutls_session_t, unsigned int *));
-DEF_GNUTLS_FN (void, gnutls_certificate_set_verify_flags,
-              (gnutls_certificate_credentials_t, unsigned int));
-DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_crl_file,
-              (gnutls_certificate_credentials_t, const char *,
-               gnutls_x509_crt_fmt_t));
-DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_key_file,
-              (gnutls_certificate_credentials_t, const char *, const char *,
-               gnutls_x509_crt_fmt_t));
-#if GNUTLS_VERSION_MAJOR +                                     \
-  (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20) > 3
-DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_system_trust,
-              (gnutls_certificate_credentials_t));
-#endif
-DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_trust_file,
-              (gnutls_certificate_credentials_t, const char *,
-               gnutls_x509_crt_fmt_t));
-DEF_GNUTLS_FN (gnutls_certificate_type_t, gnutls_certificate_type_get,
-              (gnutls_session_t));
-DEF_GNUTLS_FN (int, gnutls_certificate_verify_peers2,
-              (gnutls_session_t, unsigned int *));
-DEF_GNUTLS_FN (int, gnutls_credentials_set,
-              (gnutls_session_t, gnutls_credentials_type_t, void *));
-DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t));
-DEF_GNUTLS_FN (void, gnutls_dh_set_prime_bits,
-              (gnutls_session_t, unsigned int));
-DEF_GNUTLS_FN (int, gnutls_dh_get_prime_bits, (gnutls_session_t));
-DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int));
-DEF_GNUTLS_FN (int, gnutls_global_init, (void));
-DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func));
-#ifdef HAVE_GNUTLS3
-DEF_GNUTLS_FN (void, gnutls_global_set_audit_log_function, 
(gnutls_audit_log_func));
-#endif
-DEF_GNUTLS_FN (void, gnutls_global_set_log_level, (int));
-DEF_GNUTLS_FN (void, gnutls_global_set_mem_functions,
-              (gnutls_alloc_function, gnutls_alloc_function,
-               gnutls_is_secure_function, gnutls_realloc_function,
-               gnutls_free_function));
-DEF_GNUTLS_FN (int, gnutls_handshake, (gnutls_session_t));
-DEF_GNUTLS_FN (int, gnutls_init, (gnutls_session_t *, 
gnutls_connection_end_t));
-DEF_GNUTLS_FN (int, gnutls_priority_set_direct,
-              (gnutls_session_t, const char *, const char **));
-DEF_GNUTLS_FN (size_t, gnutls_record_check_pending, (gnutls_session_t));
-DEF_GNUTLS_FN (ssize_t, gnutls_record_recv, (gnutls_session_t, void *, 
size_t));
-DEF_GNUTLS_FN (ssize_t, gnutls_record_send,
-              (gnutls_session_t, const void *, size_t));
-DEF_GNUTLS_FN (const char *, gnutls_strerror, (int));
-DEF_GNUTLS_FN (void, gnutls_transport_set_errno, (gnutls_session_t, int));
-DEF_GNUTLS_FN (const char *, gnutls_check_version, (const char *));
-DEF_GNUTLS_FN (void, gnutls_transport_set_lowat, (gnutls_session_t, int));
-DEF_GNUTLS_FN (void, gnutls_transport_set_ptr2,
-              (gnutls_session_t, gnutls_transport_ptr_t,
-               gnutls_transport_ptr_t));
-DEF_GNUTLS_FN (void, gnutls_transport_set_pull_function,
-              (gnutls_session_t, gnutls_pull_func));
-DEF_GNUTLS_FN (void, gnutls_transport_set_push_function,
-              (gnutls_session_t, gnutls_push_func));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_check_hostname,
-              (gnutls_x509_crt_t, const char *));
-DEF_GNUTLS_FN (void, gnutls_x509_crt_deinit, (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_import,
-              (gnutls_x509_crt_t, const gnutls_datum_t *,
-               gnutls_x509_crt_fmt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_init, (gnutls_x509_crt_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_fingerprint,
-              (gnutls_x509_crt_t,
-               gnutls_digest_algorithm_t, void *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_version,
-              (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_serial,
-              (gnutls_x509_crt_t, void *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_issuer_dn,
-              (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (time_t, gnutls_x509_crt_get_activation_time,
-              (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (time_t, gnutls_x509_crt_get_expiration_time,
-              (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_dn,
-              (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_pk_algorithm,
-              (gnutls_x509_crt_t, unsigned int *));
-DEF_GNUTLS_FN (const char*, gnutls_pk_algorithm_get_name,
-              (gnutls_pk_algorithm_t));
-DEF_GNUTLS_FN (int, gnutls_pk_bits_to_sec_param,
-              (gnutls_pk_algorithm_t, unsigned int));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_issuer_unique_id,
-              (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_subject_unique_id,
-              (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_signature_algorithm,
-              (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_signature,
-              (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_key_id,
-              (gnutls_x509_crt_t, unsigned int,
-               unsigned char *, size_t *_size));
-DEF_GNUTLS_FN (const char*, gnutls_sec_param_get_name, (gnutls_sec_param_t));
-DEF_GNUTLS_FN (const char*, gnutls_sign_get_name, (gnutls_sign_algorithm_t));
-DEF_GNUTLS_FN (int, gnutls_server_name_set, (gnutls_session_t,
-                                            gnutls_server_name_type_t,
-                                            const void *, size_t));
-DEF_GNUTLS_FN (gnutls_kx_algorithm_t, gnutls_kx_get, (gnutls_session_t));
-DEF_GNUTLS_FN (const char*, gnutls_kx_get_name, (gnutls_kx_algorithm_t));
-DEF_GNUTLS_FN (gnutls_protocol_t, gnutls_protocol_get_version,
-              (gnutls_session_t));
-DEF_GNUTLS_FN (const char*, gnutls_protocol_get_name, (gnutls_protocol_t));
-DEF_GNUTLS_FN (gnutls_cipher_algorithm_t, gnutls_cipher_get,
-              (gnutls_session_t));
-DEF_GNUTLS_FN (const char*, gnutls_cipher_get_name,
-              (gnutls_cipher_algorithm_t));
-DEF_GNUTLS_FN (gnutls_mac_algorithm_t, gnutls_mac_get, (gnutls_session_t));
-DEF_GNUTLS_FN (const char*, gnutls_mac_get_name, (gnutls_mac_algorithm_t));
+DEF_DLL_FN (gnutls_alert_description_t, gnutls_alert_get,
+           (gnutls_session_t));
+DEF_DLL_FN (const char *, gnutls_alert_get_name,
+           (gnutls_alert_description_t));
+DEF_DLL_FN (int, gnutls_alert_send_appropriate, (gnutls_session_t, int));
+DEF_DLL_FN (int, gnutls_anon_allocate_client_credentials,
+           (gnutls_anon_client_credentials_t *));
+DEF_DLL_FN (void, gnutls_anon_free_client_credentials,
+           (gnutls_anon_client_credentials_t));
+DEF_DLL_FN (int, gnutls_bye, (gnutls_session_t, gnutls_close_request_t));
+DEF_DLL_FN (int, gnutls_certificate_allocate_credentials,
+           (gnutls_certificate_credentials_t *));
+DEF_DLL_FN (void, gnutls_certificate_free_credentials,
+           (gnutls_certificate_credentials_t));
+DEF_DLL_FN (const gnutls_datum_t *, gnutls_certificate_get_peers,
+           (gnutls_session_t, unsigned int *));
+DEF_DLL_FN (void, gnutls_certificate_set_verify_flags,
+           (gnutls_certificate_credentials_t, unsigned int));
+DEF_DLL_FN (int, gnutls_certificate_set_x509_crl_file,
+           (gnutls_certificate_credentials_t, const char *,
+            gnutls_x509_crt_fmt_t));
+DEF_DLL_FN (int, gnutls_certificate_set_x509_key_file,
+           (gnutls_certificate_credentials_t, const char *, const char *,
+            gnutls_x509_crt_fmt_t));
+# if ((GNUTLS_VERSION_MAJOR                                            \
+       + (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20))     \
+      > 3)
+DEF_DLL_FN (int, gnutls_certificate_set_x509_system_trust,
+           (gnutls_certificate_credentials_t));
+# endif
+DEF_DLL_FN (int, gnutls_certificate_set_x509_trust_file,
+           (gnutls_certificate_credentials_t, const char *,
+            gnutls_x509_crt_fmt_t));
+DEF_DLL_FN (gnutls_certificate_type_t, gnutls_certificate_type_get,
+           (gnutls_session_t));
+DEF_DLL_FN (int, gnutls_certificate_verify_peers2,
+           (gnutls_session_t, unsigned int *));
+DEF_DLL_FN (int, gnutls_credentials_set,
+           (gnutls_session_t, gnutls_credentials_type_t, void *));
+DEF_DLL_FN (void, gnutls_deinit, (gnutls_session_t));
+DEF_DLL_FN (void, gnutls_dh_set_prime_bits,
+           (gnutls_session_t, unsigned int));
+DEF_DLL_FN (int, gnutls_dh_get_prime_bits, (gnutls_session_t));
+DEF_DLL_FN (int, gnutls_error_is_fatal, (int));
+DEF_DLL_FN (int, gnutls_global_init, (void));
+DEF_DLL_FN (void, gnutls_global_set_log_function, (gnutls_log_func));
+# ifdef HAVE_GNUTLS3
+DEF_DLL_FN (void, gnutls_global_set_audit_log_function, 
(gnutls_audit_log_func));
+# endif
+DEF_DLL_FN (void, gnutls_global_set_log_level, (int));
+DEF_DLL_FN (int, gnutls_handshake, (gnutls_session_t));
+DEF_DLL_FN (int, gnutls_init, (gnutls_session_t *, unsigned int));
+DEF_DLL_FN (int, gnutls_priority_set_direct,
+           (gnutls_session_t, const char *, const char **));
+DEF_DLL_FN (size_t, gnutls_record_check_pending, (gnutls_session_t));
+DEF_DLL_FN (ssize_t, gnutls_record_recv, (gnutls_session_t, void *, size_t));
+DEF_DLL_FN (ssize_t, gnutls_record_send,
+           (gnutls_session_t, const void *, size_t));
+DEF_DLL_FN (const char *, gnutls_strerror, (int));
+DEF_DLL_FN (void, gnutls_transport_set_errno, (gnutls_session_t, int));
+DEF_DLL_FN (const char *, gnutls_check_version, (const char *));
+DEF_DLL_FN (void, gnutls_transport_set_lowat, (gnutls_session_t, int));
+DEF_DLL_FN (void, gnutls_transport_set_ptr2,
+           (gnutls_session_t, gnutls_transport_ptr_t,
+            gnutls_transport_ptr_t));
+DEF_DLL_FN (void, gnutls_transport_set_pull_function,
+           (gnutls_session_t, gnutls_pull_func));
+DEF_DLL_FN (void, gnutls_transport_set_push_function,
+           (gnutls_session_t, gnutls_push_func));
+DEF_DLL_FN (int, gnutls_x509_crt_check_hostname,
+           (gnutls_x509_crt_t, const char *));
+DEF_DLL_FN (void, gnutls_x509_crt_deinit, (gnutls_x509_crt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_import,
+           (gnutls_x509_crt_t, const gnutls_datum_t *,
+            gnutls_x509_crt_fmt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_init, (gnutls_x509_crt_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_fingerprint,
+           (gnutls_x509_crt_t,
+            gnutls_digest_algorithm_t, void *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_version,
+           (gnutls_x509_crt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_get_serial,
+           (gnutls_x509_crt_t, void *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_issuer_dn,
+           (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (time_t, gnutls_x509_crt_get_activation_time,
+           (gnutls_x509_crt_t));
+DEF_DLL_FN (time_t, gnutls_x509_crt_get_expiration_time,
+           (gnutls_x509_crt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_get_dn,
+           (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_pk_algorithm,
+           (gnutls_x509_crt_t, unsigned int *));
+DEF_DLL_FN (const char*, gnutls_pk_algorithm_get_name,
+           (gnutls_pk_algorithm_t));
+DEF_DLL_FN (int, gnutls_pk_bits_to_sec_param,
+           (gnutls_pk_algorithm_t, unsigned int));
+DEF_DLL_FN (int, gnutls_x509_crt_get_issuer_unique_id,
+           (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_subject_unique_id,
+           (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_signature_algorithm,
+           (gnutls_x509_crt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_get_signature,
+           (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_key_id,
+           (gnutls_x509_crt_t, unsigned int, unsigned char *, size_t *_size));
+DEF_DLL_FN (const char*, gnutls_sec_param_get_name, (gnutls_sec_param_t));
+DEF_DLL_FN (const char*, gnutls_sign_get_name, (gnutls_sign_algorithm_t));
+DEF_DLL_FN (int, gnutls_server_name_set,
+           (gnutls_session_t, gnutls_server_name_type_t,
+            const void *, size_t));
+DEF_DLL_FN (gnutls_kx_algorithm_t, gnutls_kx_get, (gnutls_session_t));
+DEF_DLL_FN (const char*, gnutls_kx_get_name, (gnutls_kx_algorithm_t));
+DEF_DLL_FN (gnutls_protocol_t, gnutls_protocol_get_version,
+           (gnutls_session_t));
+DEF_DLL_FN (const char*, gnutls_protocol_get_name, (gnutls_protocol_t));
+DEF_DLL_FN (gnutls_cipher_algorithm_t, gnutls_cipher_get,
+           (gnutls_session_t));
+DEF_DLL_FN (const char*, gnutls_cipher_get_name,
+           (gnutls_cipher_algorithm_t));
+DEF_DLL_FN (gnutls_mac_algorithm_t, gnutls_mac_get, (gnutls_session_t));
+DEF_DLL_FN (const char*, gnutls_mac_get_name, (gnutls_mac_algorithm_t));
 
 
 static bool
@@ -221,83 +208,83 @@ init_gnutls_functions (void)
       return 0;
     }
 
-  LOAD_GNUTLS_FN (library, gnutls_alert_get);
-  LOAD_GNUTLS_FN (library, gnutls_alert_get_name);
-  LOAD_GNUTLS_FN (library, gnutls_alert_send_appropriate);
-  LOAD_GNUTLS_FN (library, gnutls_anon_allocate_client_credentials);
-  LOAD_GNUTLS_FN (library, gnutls_anon_free_client_credentials);
-  LOAD_GNUTLS_FN (library, gnutls_bye);
-  LOAD_GNUTLS_FN (library, gnutls_certificate_allocate_credentials);
-  LOAD_GNUTLS_FN (library, gnutls_certificate_free_credentials);
-  LOAD_GNUTLS_FN (library, gnutls_certificate_get_peers);
-  LOAD_GNUTLS_FN (library, gnutls_certificate_set_verify_flags);
-  LOAD_GNUTLS_FN (library, gnutls_certificate_set_x509_crl_file);
-  LOAD_GNUTLS_FN (library, gnutls_certificate_set_x509_key_file);
-#if GNUTLS_VERSION_MAJOR +                                     \
-  (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20) > 3
-  LOAD_GNUTLS_FN (library, gnutls_certificate_set_x509_system_trust);
-#endif
-  LOAD_GNUTLS_FN (library, gnutls_certificate_set_x509_trust_file);
-  LOAD_GNUTLS_FN (library, gnutls_certificate_type_get);
-  LOAD_GNUTLS_FN (library, gnutls_certificate_verify_peers2);
-  LOAD_GNUTLS_FN (library, gnutls_credentials_set);
-  LOAD_GNUTLS_FN (library, gnutls_deinit);
-  LOAD_GNUTLS_FN (library, gnutls_dh_set_prime_bits);
-  LOAD_GNUTLS_FN (library, gnutls_dh_get_prime_bits);
-  LOAD_GNUTLS_FN (library, gnutls_error_is_fatal);
-  LOAD_GNUTLS_FN (library, gnutls_global_init);
-  LOAD_GNUTLS_FN (library, gnutls_global_set_log_function);
-#ifdef HAVE_GNUTLS3
-  LOAD_GNUTLS_FN (library, gnutls_global_set_audit_log_function);
-#endif
-  LOAD_GNUTLS_FN (library, gnutls_global_set_log_level);
-  LOAD_GNUTLS_FN (library, gnutls_global_set_mem_functions);
-  LOAD_GNUTLS_FN (library, gnutls_handshake);
-  LOAD_GNUTLS_FN (library, gnutls_init);
-  LOAD_GNUTLS_FN (library, gnutls_priority_set_direct);
-  LOAD_GNUTLS_FN (library, gnutls_record_check_pending);
-  LOAD_GNUTLS_FN (library, gnutls_record_recv);
-  LOAD_GNUTLS_FN (library, gnutls_record_send);
-  LOAD_GNUTLS_FN (library, gnutls_strerror);
-  LOAD_GNUTLS_FN (library, gnutls_transport_set_errno);
-  LOAD_GNUTLS_FN (library, gnutls_check_version);
+  LOAD_DLL_FN (library, gnutls_alert_get);
+  LOAD_DLL_FN (library, gnutls_alert_get_name);
+  LOAD_DLL_FN (library, gnutls_alert_send_appropriate);
+  LOAD_DLL_FN (library, gnutls_anon_allocate_client_credentials);
+  LOAD_DLL_FN (library, gnutls_anon_free_client_credentials);
+  LOAD_DLL_FN (library, gnutls_bye);
+  LOAD_DLL_FN (library, gnutls_certificate_allocate_credentials);
+  LOAD_DLL_FN (library, gnutls_certificate_free_credentials);
+  LOAD_DLL_FN (library, gnutls_certificate_get_peers);
+  LOAD_DLL_FN (library, gnutls_certificate_set_verify_flags);
+  LOAD_DLL_FN (library, gnutls_certificate_set_x509_crl_file);
+  LOAD_DLL_FN (library, gnutls_certificate_set_x509_key_file);
+# if ((GNUTLS_VERSION_MAJOR                                            \
+       + (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20))     \
+      > 3)
+  LOAD_DLL_FN (library, gnutls_certificate_set_x509_system_trust);
+# endif
+  LOAD_DLL_FN (library, gnutls_certificate_set_x509_trust_file);
+  LOAD_DLL_FN (library, gnutls_certificate_type_get);
+  LOAD_DLL_FN (library, gnutls_certificate_verify_peers2);
+  LOAD_DLL_FN (library, gnutls_credentials_set);
+  LOAD_DLL_FN (library, gnutls_deinit);
+  LOAD_DLL_FN (library, gnutls_dh_set_prime_bits);
+  LOAD_DLL_FN (library, gnutls_dh_get_prime_bits);
+  LOAD_DLL_FN (library, gnutls_error_is_fatal);
+  LOAD_DLL_FN (library, gnutls_global_init);
+  LOAD_DLL_FN (library, gnutls_global_set_log_function);
+# ifdef HAVE_GNUTLS3
+  LOAD_DLL_FN (library, gnutls_global_set_audit_log_function);
+# endif
+  LOAD_DLL_FN (library, gnutls_global_set_log_level);
+  LOAD_DLL_FN (library, gnutls_handshake);
+  LOAD_DLL_FN (library, gnutls_init);
+  LOAD_DLL_FN (library, gnutls_priority_set_direct);
+  LOAD_DLL_FN (library, gnutls_record_check_pending);
+  LOAD_DLL_FN (library, gnutls_record_recv);
+  LOAD_DLL_FN (library, gnutls_record_send);
+  LOAD_DLL_FN (library, gnutls_strerror);
+  LOAD_DLL_FN (library, gnutls_transport_set_errno);
+  LOAD_DLL_FN (library, gnutls_check_version);
   /* We don't need to call gnutls_transport_set_lowat in GnuTLS 2.11.1
      and later, and the function was removed entirely in 3.0.0.  */
   if (!fn_gnutls_check_version ("2.11.1"))
-    LOAD_GNUTLS_FN (library, gnutls_transport_set_lowat);
-  LOAD_GNUTLS_FN (library, gnutls_transport_set_ptr2);
-  LOAD_GNUTLS_FN (library, gnutls_transport_set_pull_function);
-  LOAD_GNUTLS_FN (library, gnutls_transport_set_push_function);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_check_hostname);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_deinit);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_import);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_init);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_fingerprint);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_version);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_serial);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_issuer_dn);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_activation_time);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_expiration_time);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_dn);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_pk_algorithm);
-  LOAD_GNUTLS_FN (library, gnutls_pk_algorithm_get_name);
-  LOAD_GNUTLS_FN (library, gnutls_pk_bits_to_sec_param);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_issuer_unique_id);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_subject_unique_id);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_signature_algorithm);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_signature);
-  LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_key_id);
-  LOAD_GNUTLS_FN (library, gnutls_sec_param_get_name);
-  LOAD_GNUTLS_FN (library, gnutls_sign_get_name);
-  LOAD_GNUTLS_FN (library, gnutls_server_name_set);
-  LOAD_GNUTLS_FN (library, gnutls_kx_get);
-  LOAD_GNUTLS_FN (library, gnutls_kx_get_name);
-  LOAD_GNUTLS_FN (library, gnutls_protocol_get_version);
-  LOAD_GNUTLS_FN (library, gnutls_protocol_get_name);
-  LOAD_GNUTLS_FN (library, gnutls_cipher_get);
-  LOAD_GNUTLS_FN (library, gnutls_cipher_get_name);
-  LOAD_GNUTLS_FN (library, gnutls_mac_get);
-  LOAD_GNUTLS_FN (library, gnutls_mac_get_name);
+    LOAD_DLL_FN (library, gnutls_transport_set_lowat);
+  LOAD_DLL_FN (library, gnutls_transport_set_ptr2);
+  LOAD_DLL_FN (library, gnutls_transport_set_pull_function);
+  LOAD_DLL_FN (library, gnutls_transport_set_push_function);
+  LOAD_DLL_FN (library, gnutls_x509_crt_check_hostname);
+  LOAD_DLL_FN (library, gnutls_x509_crt_deinit);
+  LOAD_DLL_FN (library, gnutls_x509_crt_import);
+  LOAD_DLL_FN (library, gnutls_x509_crt_init);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_fingerprint);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_version);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_serial);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_issuer_dn);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_activation_time);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_expiration_time);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_dn);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_pk_algorithm);
+  LOAD_DLL_FN (library, gnutls_pk_algorithm_get_name);
+  LOAD_DLL_FN (library, gnutls_pk_bits_to_sec_param);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_issuer_unique_id);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_subject_unique_id);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_signature_algorithm);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_signature);
+  LOAD_DLL_FN (library, gnutls_x509_crt_get_key_id);
+  LOAD_DLL_FN (library, gnutls_sec_param_get_name);
+  LOAD_DLL_FN (library, gnutls_sign_get_name);
+  LOAD_DLL_FN (library, gnutls_server_name_set);
+  LOAD_DLL_FN (library, gnutls_kx_get);
+  LOAD_DLL_FN (library, gnutls_kx_get_name);
+  LOAD_DLL_FN (library, gnutls_protocol_get_version);
+  LOAD_DLL_FN (library, gnutls_protocol_get_name);
+  LOAD_DLL_FN (library, gnutls_cipher_get);
+  LOAD_DLL_FN (library, gnutls_cipher_get_name);
+  LOAD_DLL_FN (library, gnutls_mac_get);
+  LOAD_DLL_FN (library, gnutls_mac_get_name);
 
   max_log_level = global_gnutls_log_level;
 
@@ -310,80 +297,89 @@ init_gnutls_functions (void)
   return 1;
 }
 
-#else /* !WINDOWSNT */
-
-#define fn_gnutls_alert_get                    gnutls_alert_get
-#define fn_gnutls_alert_get_name               gnutls_alert_get_name
-#define fn_gnutls_alert_send_appropriate       gnutls_alert_send_appropriate
-#define fn_gnutls_anon_allocate_client_credentials 
gnutls_anon_allocate_client_credentials
-#define fn_gnutls_anon_free_client_credentials 
gnutls_anon_free_client_credentials
-#define fn_gnutls_bye                          gnutls_bye
-#define fn_gnutls_certificate_allocate_credentials 
gnutls_certificate_allocate_credentials
-#define fn_gnutls_certificate_free_credentials 
gnutls_certificate_free_credentials
-#define fn_gnutls_certificate_get_peers                
gnutls_certificate_get_peers
-#define fn_gnutls_certificate_set_verify_flags 
gnutls_certificate_set_verify_flags
-#define fn_gnutls_certificate_set_x509_crl_file        
gnutls_certificate_set_x509_crl_file
-#define fn_gnutls_certificate_set_x509_key_file 
gnutls_certificate_set_x509_key_file
-#if GNUTLS_VERSION_MAJOR +                                     \
-  (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20) > 3
-#define fn_gnutls_certificate_set_x509_system_trust 
gnutls_certificate_set_x509_system_trust
-#endif
-#define fn_gnutls_certificate_set_x509_trust_file 
gnutls_certificate_set_x509_trust_file
-#define fn_gnutls_certificate_type_get         gnutls_certificate_type_get
-#define fn_gnutls_certificate_verify_peers2    gnutls_certificate_verify_peers2
-#define fn_gnutls_cipher_get                    gnutls_cipher_get
-#define fn_gnutls_cipher_get_name               gnutls_cipher_get_name
-#define fn_gnutls_credentials_set              gnutls_credentials_set
-#define fn_gnutls_deinit                       gnutls_deinit
-#define fn_gnutls_dh_get_prime_bits            gnutls_dh_get_prime_bits
-#define fn_gnutls_dh_set_prime_bits            gnutls_dh_set_prime_bits
-#define fn_gnutls_error_is_fatal               gnutls_error_is_fatal
-#define fn_gnutls_global_init                  gnutls_global_init
-#ifdef HAVE_GNUTLS3
-#define fn_gnutls_global_set_audit_log_function        
gnutls_global_set_audit_log_function
+# define gnutls_alert_get fn_gnutls_alert_get
+# define gnutls_alert_get_name fn_gnutls_alert_get_name
+# define gnutls_alert_send_appropriate fn_gnutls_alert_send_appropriate
+# define gnutls_anon_allocate_client_credentials 
fn_gnutls_anon_allocate_client_credentials
+# define gnutls_anon_free_client_credentials 
fn_gnutls_anon_free_client_credentials
+# define gnutls_bye fn_gnutls_bye
+# define gnutls_certificate_allocate_credentials 
fn_gnutls_certificate_allocate_credentials
+# define gnutls_certificate_free_credentials 
fn_gnutls_certificate_free_credentials
+# define gnutls_certificate_get_peers fn_gnutls_certificate_get_peers
+# define gnutls_certificate_set_verify_flags 
fn_gnutls_certificate_set_verify_flags
+# define gnutls_certificate_set_x509_crl_file 
fn_gnutls_certificate_set_x509_crl_file
+# define gnutls_certificate_set_x509_key_file 
fn_gnutls_certificate_set_x509_key_file
+# define gnutls_certificate_set_x509_system_trust 
fn_gnutls_certificate_set_x509_system_trust
+# define gnutls_certificate_set_x509_trust_file 
fn_gnutls_certificate_set_x509_trust_file
+# define gnutls_certificate_type_get fn_gnutls_certificate_type_get
+# define gnutls_certificate_verify_peers2 fn_gnutls_certificate_verify_peers2
+# define gnutls_check_version fn_gnutls_check_version
+# define gnutls_cipher_get fn_gnutls_cipher_get
+# define gnutls_cipher_get_name fn_gnutls_cipher_get_name
+# define gnutls_credentials_set fn_gnutls_credentials_set
+# define gnutls_deinit fn_gnutls_deinit
+# define gnutls_dh_get_prime_bits fn_gnutls_dh_get_prime_bits
+# define gnutls_dh_set_prime_bits fn_gnutls_dh_set_prime_bits
+# define gnutls_error_is_fatal fn_gnutls_error_is_fatal
+# define gnutls_global_init fn_gnutls_global_init
+# define gnutls_global_set_audit_log_function 
fn_gnutls_global_set_audit_log_function
+# define gnutls_global_set_log_function fn_gnutls_global_set_log_function
+# define gnutls_global_set_log_level fn_gnutls_global_set_log_level
+# define gnutls_handshake fn_gnutls_handshake
+# define gnutls_init fn_gnutls_init
+# define gnutls_kx_get fn_gnutls_kx_get
+# define gnutls_kx_get_name fn_gnutls_kx_get_name
+# define gnutls_mac_get fn_gnutls_mac_get
+# define gnutls_mac_get_name fn_gnutls_mac_get_name
+# define gnutls_pk_algorithm_get_name fn_gnutls_pk_algorithm_get_name
+# define gnutls_pk_bits_to_sec_param fn_gnutls_pk_bits_to_sec_param
+# define gnutls_priority_set_direct fn_gnutls_priority_set_direct
+# define gnutls_protocol_get_name fn_gnutls_protocol_get_name
+# define gnutls_protocol_get_version fn_gnutls_protocol_get_version
+# define gnutls_record_check_pending fn_gnutls_record_check_pending
+# define gnutls_record_recv fn_gnutls_record_recv
+# define gnutls_record_send fn_gnutls_record_send
+# define gnutls_sec_param_get_name fn_gnutls_sec_param_get_name
+# define gnutls_server_name_set fn_gnutls_server_name_set
+# define gnutls_sign_get_name fn_gnutls_sign_get_name
+# define gnutls_strerror fn_gnutls_strerror
+# define gnutls_transport_set_errno fn_gnutls_transport_set_errno
+# define gnutls_transport_set_lowat fn_gnutls_transport_set_lowat
+# define gnutls_transport_set_ptr2 fn_gnutls_transport_set_ptr2
+# define gnutls_transport_set_pull_function 
fn_gnutls_transport_set_pull_function
+# define gnutls_transport_set_push_function 
fn_gnutls_transport_set_push_function
+# define gnutls_x509_crt_check_hostname fn_gnutls_x509_crt_check_hostname
+# define gnutls_x509_crt_deinit fn_gnutls_x509_crt_deinit
+# define gnutls_x509_crt_get_activation_time 
fn_gnutls_x509_crt_get_activation_time
+# define gnutls_x509_crt_get_dn fn_gnutls_x509_crt_get_dn
+# define gnutls_x509_crt_get_expiration_time 
fn_gnutls_x509_crt_get_expiration_time
+# define gnutls_x509_crt_get_fingerprint fn_gnutls_x509_crt_get_fingerprint
+# define gnutls_x509_crt_get_issuer_dn fn_gnutls_x509_crt_get_issuer_dn
+# define gnutls_x509_crt_get_issuer_unique_id 
fn_gnutls_x509_crt_get_issuer_unique_id
+# define gnutls_x509_crt_get_key_id fn_gnutls_x509_crt_get_key_id
+# define gnutls_x509_crt_get_pk_algorithm fn_gnutls_x509_crt_get_pk_algorithm
+# define gnutls_x509_crt_get_serial fn_gnutls_x509_crt_get_serial
+# define gnutls_x509_crt_get_signature fn_gnutls_x509_crt_get_signature
+# define gnutls_x509_crt_get_signature_algorithm 
fn_gnutls_x509_crt_get_signature_algorithm
+# define gnutls_x509_crt_get_subject_unique_id 
fn_gnutls_x509_crt_get_subject_unique_id
+# define gnutls_x509_crt_get_version fn_gnutls_x509_crt_get_version
+# define gnutls_x509_crt_import fn_gnutls_x509_crt_import
+# define gnutls_x509_crt_init fn_gnutls_x509_crt_init
+
 #endif
-#define fn_gnutls_global_set_log_function      gnutls_global_set_log_function
-#define fn_gnutls_global_set_log_level         gnutls_global_set_log_level
-#define fn_gnutls_global_set_mem_functions     gnutls_global_set_mem_functions
-#define fn_gnutls_handshake                    gnutls_handshake
-#define fn_gnutls_init                         gnutls_init
-#define fn_gnutls_kx_get                        gnutls_kx_get
-#define fn_gnutls_kx_get_name                   gnutls_kx_get_name
-#define fn_gnutls_mac_get                       gnutls_mac_get
-#define fn_gnutls_mac_get_name                  gnutls_mac_get_name
-#define fn_gnutls_pk_algorithm_get_name         gnutls_pk_algorithm_get_name
-#define fn_gnutls_pk_bits_to_sec_param          gnutls_pk_bits_to_sec_param
-#define fn_gnutls_priority_set_direct          gnutls_priority_set_direct
-#define fn_gnutls_protocol_get_name             gnutls_protocol_get_name
-#define fn_gnutls_protocol_get_version          gnutls_protocol_get_version
-#define fn_gnutls_record_check_pending         gnutls_record_check_pending
-#define fn_gnutls_record_recv                  gnutls_record_recv
-#define fn_gnutls_record_send                  gnutls_record_send
-#define fn_gnutls_sec_param_get_name            gnutls_sec_param_get_name
-#define fn_gnutls_server_name_set               gnutls_server_name_set
-#define fn_gnutls_sign_get_name                 gnutls_sign_get_name
-#define fn_gnutls_strerror                     gnutls_strerror
-#define fn_gnutls_transport_set_ptr2           gnutls_transport_set_ptr2
-#define fn_gnutls_x509_crt_check_hostname      gnutls_x509_crt_check_hostname
-#define fn_gnutls_x509_crt_deinit              gnutls_x509_crt_deinit
-#define fn_gnutls_x509_crt_get_activation_time  
gnutls_x509_crt_get_activation_time
-#define fn_gnutls_x509_crt_get_dn               gnutls_x509_crt_get_dn
-#define fn_gnutls_x509_crt_get_expiration_time  
gnutls_x509_crt_get_expiration_time
-#define fn_gnutls_x509_crt_get_fingerprint     gnutls_x509_crt_get_fingerprint
-#define fn_gnutls_x509_crt_get_issuer_dn        gnutls_x509_crt_get_issuer_dn
-#define fn_gnutls_x509_crt_get_issuer_unique_id 
gnutls_x509_crt_get_issuer_unique_id
-#define fn_gnutls_x509_crt_get_key_id           gnutls_x509_crt_get_key_id
-#define fn_gnutls_x509_crt_get_pk_algorithm     
gnutls_x509_crt_get_pk_algorithm
-#define fn_gnutls_x509_crt_get_serial           gnutls_x509_crt_get_serial
-#define fn_gnutls_x509_crt_get_signature_algorithm 
gnutls_x509_crt_get_signature_algorithm
-#define fn_gnutls_x509_crt_get_subject_unique_id 
gnutls_x509_crt_get_subject_unique_id
-#define fn_gnutls_x509_crt_get_version          gnutls_x509_crt_get_version
-#define fn_gnutls_x509_crt_import              gnutls_x509_crt_import
-#define fn_gnutls_x509_crt_init                        gnutls_x509_crt_init
-
-#endif /* !WINDOWSNT */
 
 
+/* Report memory exhaustion if ERR is an out-of-memory indication.  */
+static void
+check_memory_full (int err)
+{
+  /* When GnuTLS exhausts memory, it doesn't say how much memory it
+     asked for, so tell the Emacs allocator that GnuTLS asked for no
+     bytes.  This isn't accurate, but it's good enough.  */
+  if (err == GNUTLS_E_MEMORY_ERROR)
+    memory_full (0);
+}
+
 #ifdef HAVE_GNUTLS3
 /* Log a simple audit message.  */
 static void
@@ -432,11 +428,11 @@ emacs_gnutls_handshake (struct Lisp_Process *proc)
       /* On W32 we cannot transfer socket handles between different runtime
         libraries, so we tell GnuTLS to use our special push/pull
         functions.  */
-      fn_gnutls_transport_set_ptr2 (state,
-                                   (gnutls_transport_ptr_t) proc,
-                                   (gnutls_transport_ptr_t) proc);
-      fn_gnutls_transport_set_push_function (state, &emacs_gnutls_push);
-      fn_gnutls_transport_set_pull_function (state, &emacs_gnutls_pull);
+      gnutls_transport_set_ptr2 (state,
+                                (gnutls_transport_ptr_t) proc,
+                                (gnutls_transport_ptr_t) proc);
+      gnutls_transport_set_push_function (state, &emacs_gnutls_push);
+      gnutls_transport_set_pull_function (state, &emacs_gnutls_pull);
 
       /* For non blocking sockets or other custom made pull/push
         functions the gnutls_transport_set_lowat must be called, with
@@ -449,15 +445,15 @@ emacs_gnutls_handshake (struct Lisp_Process *proc)
         zero by default in version 2.11.1, and the function
         gnutls_transport_set_lowat was removed from the library in
         version 2.99.0.  */
-      if (!fn_gnutls_check_version ("2.11.1"))
-       fn_gnutls_transport_set_lowat (state, 0);
+      if (!gnutls_check_version ("2.11.1"))
+       gnutls_transport_set_lowat (state, 0);
 #else
       /* This is how GnuTLS takes sockets: as file descriptors passed
         in.  For an Emacs process socket, infd and outfd are the
         same but we use this two-argument version for clarity.  */
-      fn_gnutls_transport_set_ptr2 (state,
-                                   (void *) (intptr_t) proc->infd,
-                                   (void *) (intptr_t) proc->outfd);
+      gnutls_transport_set_ptr2 (state,
+                                (void *) (intptr_t) proc->infd,
+                                (void *) (intptr_t) proc->outfd);
 #endif
 
       proc->gnutls_initstage = GNUTLS_STAGE_TRANSPORT_POINTERS_SET;
@@ -465,11 +461,11 @@ emacs_gnutls_handshake (struct Lisp_Process *proc)
 
   do
     {
-      ret = fn_gnutls_handshake (state);
+      ret = gnutls_handshake (state);
       emacs_gnutls_handle_error (state, ret);
       QUIT;
     }
-  while (ret < 0 && fn_gnutls_error_is_fatal (ret) == 0);
+  while (ret < 0 && gnutls_error_is_fatal (ret) == 0);
 
   proc->gnutls_initstage = GNUTLS_STAGE_HANDSHAKE_TRIED;
 
@@ -480,7 +476,7 @@ emacs_gnutls_handshake (struct Lisp_Process *proc)
     }
   else
     {
-      fn_gnutls_alert_send_appropriate (state, ret);
+      check_memory_full (gnutls_alert_send_appropriate (state, ret));
     }
   return ret;
 }
@@ -488,14 +484,14 @@ emacs_gnutls_handshake (struct Lisp_Process *proc)
 ptrdiff_t
 emacs_gnutls_record_check_pending (gnutls_session_t state)
 {
-  return fn_gnutls_record_check_pending (state);
+  return gnutls_record_check_pending (state);
 }
 
 #ifdef WINDOWSNT
 void
 emacs_gnutls_transport_set_errno (gnutls_session_t state, int err)
 {
-  fn_gnutls_transport_set_errno (state, err);
+  gnutls_transport_set_errno (state, err);
 }
 #endif
 
@@ -516,7 +512,7 @@ emacs_gnutls_write (struct Lisp_Process *proc, const char 
*buf, ptrdiff_t nbyte)
 
   while (nbyte > 0)
     {
-      rtnval = fn_gnutls_record_send (state, buf, nbyte);
+      rtnval = gnutls_record_send (state, buf, nbyte);
 
       if (rtnval < 0)
        {
@@ -568,7 +564,7 @@ emacs_gnutls_read (struct Lisp_Process *proc, char *buf, 
ptrdiff_t nbyte)
       proc->gnutls_handshakes_tried = 0;
       return 0;
     }
-  rtnval = fn_gnutls_record_recv (state, buf, nbyte);
+  rtnval = gnutls_record_recv (state, buf, nbyte);
   if (rtnval >= 0)
     return rtnval;
   else if (rtnval == GNUTLS_E_UNEXPECTED_PACKET_LENGTH)
@@ -597,15 +593,17 @@ emacs_gnutls_handle_error (gnutls_session_t session, int 
err)
   if (err >= 0)
     return 1;
 
+  check_memory_full (err);
+
   max_log_level = global_gnutls_log_level;
 
   /* TODO: use gnutls-error-fatalp and gnutls-error-string.  */
 
-  str = fn_gnutls_strerror (err);
+  str = gnutls_strerror (err);
   if (!str)
     str = "unknown";
 
-  if (fn_gnutls_error_is_fatal (err))
+  if (gnutls_error_is_fatal (err))
     {
       ret = 0;
       GNUTLS_LOG2 (1, max_log_level, "fatal error:", str);
@@ -632,9 +630,9 @@ emacs_gnutls_handle_error (gnutls_session_t session, int 
err)
   if (err == GNUTLS_E_WARNING_ALERT_RECEIVED
       || err == GNUTLS_E_FATAL_ALERT_RECEIVED)
     {
-      int alert = fn_gnutls_alert_get (session);
+      int alert = gnutls_alert_get (session);
       int level = (err == GNUTLS_E_FATAL_ALERT_RECEIVED) ? 0 : 1;
-      str = fn_gnutls_alert_get_name (alert);
+      str = gnutls_alert_get_name (alert);
       if (!str)
        str = "unknown";
 
@@ -662,6 +660,7 @@ gnutls_make_error (int err)
       return Qgnutls_e_invalid_session;
     }
 
+  check_memory_full (err);
   return make_number (err);
 }
 
@@ -680,20 +679,20 @@ emacs_gnutls_deinit (Lisp_Object proc)
   if (XPROCESS (proc)->gnutls_x509_cred)
     {
       GNUTLS_LOG (2, log_level, "Deallocating x509 credentials");
-      fn_gnutls_certificate_free_credentials (XPROCESS 
(proc)->gnutls_x509_cred);
+      gnutls_certificate_free_credentials (XPROCESS (proc)->gnutls_x509_cred);
       XPROCESS (proc)->gnutls_x509_cred = NULL;
     }
 
   if (XPROCESS (proc)->gnutls_anon_cred)
     {
       GNUTLS_LOG (2, log_level, "Deallocating anon credentials");
-      fn_gnutls_anon_free_client_credentials (XPROCESS 
(proc)->gnutls_anon_cred);
+      gnutls_anon_free_client_credentials (XPROCESS (proc)->gnutls_anon_cred);
       XPROCESS (proc)->gnutls_anon_cred = NULL;
     }
 
   if (XPROCESS (proc)->gnutls_state)
     {
-      fn_gnutls_deinit (XPROCESS (proc)->gnutls_state);
+      gnutls_deinit (XPROCESS (proc)->gnutls_state);
       XPROCESS (proc)->gnutls_state = NULL;
       if (GNUTLS_INITSTAGE (proc) >= GNUTLS_STAGE_INIT)
        GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_INIT - 1;
@@ -750,7 +749,7 @@ Usage: (gnutls-error-fatalp ERROR)  */)
   if (! TYPE_RANGED_INTEGERP (int, err))
     error ("Not an error symbol or code");
 
-  if (0 == fn_gnutls_error_is_fatal (XINT (err)))
+  if (0 == gnutls_error_is_fatal (XINT (err)))
     return Qnil;
 
   return Qt;
@@ -782,7 +781,7 @@ usage: (gnutls-error-string ERROR)  */)
   if (! TYPE_RANGED_INTEGERP (int, err))
     return build_string ("Not an error symbol or code");
 
-  return build_string (fn_gnutls_strerror (XINT (err)));
+  return build_string (gnutls_strerror (XINT (err)));
 }
 
 DEFUN ("gnutls-deinit", Fgnutls_deinit, Sgnutls_deinit, 1, 1, 0,
@@ -821,7 +820,8 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
 
   /* Version. */
   {
-    int version = fn_gnutls_x509_crt_get_version (cert);
+    int version = gnutls_x509_crt_get_version (cert);
+    check_memory_full (version);
     if (version >= GNUTLS_E_SUCCESS)
       res = nconc2 (res, list2 (intern (":version"),
                                make_number (version)));
@@ -829,11 +829,13 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
 
   /* Serial. */
   buf_size = 0;
-  err = fn_gnutls_x509_crt_get_serial (cert, NULL, &buf_size);
+  err = gnutls_x509_crt_get_serial (cert, NULL, &buf_size);
+  check_memory_full (err);
   if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
     {
       void *serial = xmalloc (buf_size);
-      err = fn_gnutls_x509_crt_get_serial (cert, serial, &buf_size);
+      err = gnutls_x509_crt_get_serial (cert, serial, &buf_size);
+      check_memory_full (err);
       if (err >= GNUTLS_E_SUCCESS)
        res = nconc2 (res, list2 (intern (":serial-number"),
                                  gnutls_hex_string (serial, buf_size, "")));
@@ -842,11 +844,13 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
 
   /* Issuer. */
   buf_size = 0;
-  err = fn_gnutls_x509_crt_get_issuer_dn (cert, NULL, &buf_size);
+  err = gnutls_x509_crt_get_issuer_dn (cert, NULL, &buf_size);
+  check_memory_full (err);
   if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
     {
       char *dn = xmalloc (buf_size);
-      err = fn_gnutls_x509_crt_get_issuer_dn (cert, dn, &buf_size);
+      err = gnutls_x509_crt_get_issuer_dn (cert, dn, &buf_size);
+      check_memory_full (err);
       if (err >= GNUTLS_E_SUCCESS)
        res = nconc2 (res, list2 (intern (":issuer"),
                                  make_string (dn, buf_size)));
@@ -859,23 +863,25 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
        that might add 1 to the year length.  */
     char buf[INT_STRLEN_BOUND (int) + 1 + sizeof "-12-31"];
     struct tm t;
-    time_t tim = fn_gnutls_x509_crt_get_activation_time (cert);
+    time_t tim = gnutls_x509_crt_get_activation_time (cert);
 
     if (gmtime_r (&tim, &t) && strftime (buf, sizeof buf, "%Y-%m-%d", &t))
       res = nconc2 (res, list2 (intern (":valid-from"), build_string (buf)));
 
-    tim = fn_gnutls_x509_crt_get_expiration_time (cert);
+    tim = gnutls_x509_crt_get_expiration_time (cert);
     if (gmtime_r (&tim, &t) && strftime (buf, sizeof buf, "%Y-%m-%d", &t))
       res = nconc2 (res, list2 (intern (":valid-to"), build_string (buf)));
   }
 
   /* Subject. */
   buf_size = 0;
-  err = fn_gnutls_x509_crt_get_dn (cert, NULL, &buf_size);
+  err = gnutls_x509_crt_get_dn (cert, NULL, &buf_size);
+  check_memory_full (err);
   if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
     {
       char *dn = xmalloc (buf_size);
-      err = fn_gnutls_x509_crt_get_dn (cert, dn, &buf_size);
+      err = gnutls_x509_crt_get_dn (cert, dn, &buf_size);
+      check_memory_full (err);
       if (err >= GNUTLS_E_SUCCESS)
        res = nconc2 (res, list2 (intern (":subject"),
                                  make_string (dn, buf_size)));
@@ -888,16 +894,17 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
   {
     unsigned int bits;
 
-    err = fn_gnutls_x509_crt_get_pk_algorithm (cert, &bits);
+    err = gnutls_x509_crt_get_pk_algorithm (cert, &bits);
+    check_memory_full (err);
     if (err >= GNUTLS_E_SUCCESS)
       {
-       const char *name = fn_gnutls_pk_algorithm_get_name (err);
+       const char *name = gnutls_pk_algorithm_get_name (err);
        if (name)
          res = nconc2 (res, list2 (intern (":public-key-algorithm"),
                                    build_string (name)));
 
-       name = fn_gnutls_sec_param_get_name (fn_gnutls_pk_bits_to_sec_param
-                                            (err, bits));
+       name = gnutls_sec_param_get_name (gnutls_pk_bits_to_sec_param
+                                         (err, bits));
        res = nconc2 (res, list2 (intern (":certificate-security-level"),
                                  build_string (name)));
       }
@@ -905,11 +912,13 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
 
   /* Unique IDs. */
   buf_size = 0;
-  err = fn_gnutls_x509_crt_get_issuer_unique_id (cert, NULL, &buf_size);
+  err = gnutls_x509_crt_get_issuer_unique_id (cert, NULL, &buf_size);
+  check_memory_full (err);
   if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
     {
       char *buf = xmalloc (buf_size);
-      err = fn_gnutls_x509_crt_get_issuer_unique_id (cert, buf, &buf_size);
+      err = gnutls_x509_crt_get_issuer_unique_id (cert, buf, &buf_size);
+      check_memory_full (err);
       if (err >= GNUTLS_E_SUCCESS)
        res = nconc2 (res, list2 (intern (":issuer-unique-id"),
                                  make_string (buf, buf_size)));
@@ -917,11 +926,13 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
     }
 
   buf_size = 0;
-  err = fn_gnutls_x509_crt_get_subject_unique_id (cert, NULL, &buf_size);
+  err = gnutls_x509_crt_get_subject_unique_id (cert, NULL, &buf_size);
+  check_memory_full (err);
   if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
     {
       char *buf = xmalloc (buf_size);
-      err = fn_gnutls_x509_crt_get_subject_unique_id (cert, buf, &buf_size);
+      err = gnutls_x509_crt_get_subject_unique_id (cert, buf, &buf_size);
+      check_memory_full (err);
       if (err >= GNUTLS_E_SUCCESS)
        res = nconc2 (res, list2 (intern (":subject-unique-id"),
                                  make_string (buf, buf_size)));
@@ -930,10 +941,11 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
 #endif
 
   /* Signature. */
-  err = fn_gnutls_x509_crt_get_signature_algorithm (cert);
+  err = gnutls_x509_crt_get_signature_algorithm (cert);
+  check_memory_full (err);
   if (err >= GNUTLS_E_SUCCESS)
     {
-      const char *name = fn_gnutls_sign_get_name (err);
+      const char *name = gnutls_sign_get_name (err);
       if (name)
        res = nconc2 (res, list2 (intern (":signature-algorithm"),
                                  build_string (name)));
@@ -941,11 +953,13 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
 
   /* Public key ID. */
   buf_size = 0;
-  err = fn_gnutls_x509_crt_get_key_id (cert, 0, NULL, &buf_size);
+  err = gnutls_x509_crt_get_key_id (cert, 0, NULL, &buf_size);
+  check_memory_full (err);
   if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
     {
       void *buf = xmalloc (buf_size);
-      err = fn_gnutls_x509_crt_get_key_id (cert, 0, buf, &buf_size);
+      err = gnutls_x509_crt_get_key_id (cert, 0, buf, &buf_size);
+      check_memory_full (err);
       if (err >= GNUTLS_E_SUCCESS)
        res = nconc2 (res, list2 (intern (":public-key-id"),
                                  gnutls_hex_string (buf, buf_size, "sha1:")));
@@ -954,13 +968,15 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
 
   /* Certificate fingerprint. */
   buf_size = 0;
-  err = fn_gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1,
-                                           NULL, &buf_size);
+  err = gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1,
+                                        NULL, &buf_size);
+  check_memory_full (err);
   if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
     {
       void *buf = xmalloc (buf_size);
-      err = fn_gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1,
-                                               buf, &buf_size);
+      err = gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1,
+                                            buf, &buf_size);
+      check_memory_full (err);
       if (err >= GNUTLS_E_SUCCESS)
        res = nconc2 (res, list2 (intern (":certificate-id"),
                                  gnutls_hex_string (buf, buf_size, "sha1:")));
@@ -1061,7 +1077,8 @@ The return value is a property list with top-level keys 
:warnings and
 
   /* Diffie-Hellman prime bits. */
   {
-    int bits = fn_gnutls_dh_get_prime_bits (state);
+    int bits = gnutls_dh_get_prime_bits (state);
+    check_memory_full (bits);
     if (bits > 0)
       result = nconc2 (result, list2 (intern (":diffie-hellman-prime-bits"),
                                      make_number (bits)));
@@ -1070,26 +1087,26 @@ The return value is a property list with top-level keys 
:warnings and
   /* Key exchange. */
   result = nconc2
     (result, list2 (intern (":key-exchange"),
-                   build_string (fn_gnutls_kx_get_name
-                                 (fn_gnutls_kx_get (state)))));
+                   build_string (gnutls_kx_get_name
+                                 (gnutls_kx_get (state)))));
 
   /* Protocol name. */
   result = nconc2
     (result, list2 (intern (":protocol"),
-                   build_string (fn_gnutls_protocol_get_name
-                                 (fn_gnutls_protocol_get_version (state)))));
+                   build_string (gnutls_protocol_get_name
+                                 (gnutls_protocol_get_version (state)))));
 
   /* Cipher name. */
   result = nconc2
     (result, list2 (intern (":cipher"),
-                   build_string (fn_gnutls_cipher_get_name
-                                 (fn_gnutls_cipher_get (state)))));
+                   build_string (gnutls_cipher_get_name
+                                 (gnutls_cipher_get (state)))));
 
   /* MAC name. */
   result = nconc2
     (result, list2 (intern (":mac"),
-                   build_string (fn_gnutls_mac_get_name
-                                 (fn_gnutls_mac_get (state)))));
+                   build_string (gnutls_mac_get_name
+                                 (gnutls_mac_get (state)))));
 
 
   return result;
@@ -1104,11 +1121,8 @@ emacs_gnutls_global_init (void)
   int ret = GNUTLS_E_SUCCESS;
 
   if (!gnutls_global_initialized)
-    {
-      fn_gnutls_global_set_mem_functions (xmalloc, xmalloc, NULL,
-                                         xrealloc, xfree);
-      ret = fn_gnutls_global_init ();
-    }
+    ret = gnutls_global_init ();
+
   gnutls_global_initialized = 1;
 
   return gnutls_make_error (ret);
@@ -1257,11 +1271,11 @@ one trustfile (usually a CA bundle).  */)
 
   if (TYPE_RANGED_INTEGERP (int, loglevel))
     {
-      fn_gnutls_global_set_log_function (gnutls_log_function);
+      gnutls_global_set_log_function (gnutls_log_function);
 #ifdef HAVE_GNUTLS3
-      fn_gnutls_global_set_audit_log_function (gnutls_audit_log_function);
+      gnutls_global_set_audit_log_function (gnutls_audit_log_function);
 #endif
-      fn_gnutls_global_set_log_level (XINT (loglevel));
+      gnutls_global_set_log_level (XINT (loglevel));
       max_log_level = XINT (loglevel);
       XPROCESS (proc)->gnutls_log_level = max_log_level;
     }
@@ -1291,7 +1305,7 @@ one trustfile (usually a CA bundle).  */)
       unsigned int gnutls_verify_flags = GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT;
 
       GNUTLS_LOG (2, max_log_level, "allocating x509 credentials");
-      fn_gnutls_certificate_allocate_credentials (&x509_cred);
+      check_memory_full (gnutls_certificate_allocate_credentials (&x509_cred));
       XPROCESS (proc)->gnutls_x509_cred = x509_cred;
 
       verify_flags = Fplist_get (proplist, QCgnutls_bootprop_verify_flags);
@@ -1305,12 +1319,12 @@ one trustfile (usually a CA bundle).  */)
       else
        GNUTLS_LOG (2, max_log_level, "ignoring invalid verify-flags");
 
-      fn_gnutls_certificate_set_verify_flags (x509_cred, gnutls_verify_flags);
+      gnutls_certificate_set_verify_flags (x509_cred, gnutls_verify_flags);
     }
   else /* Qgnutls_anon: */
     {
       GNUTLS_LOG (2, max_log_level, "allocating anon credentials");
-      fn_gnutls_anon_allocate_client_credentials (&anon_cred);
+      check_memory_full (gnutls_anon_allocate_client_credentials (&anon_cred));
       XPROCESS (proc)->gnutls_anon_cred = anon_cred;
     }
 
@@ -1324,10 +1338,13 @@ one trustfile (usually a CA bundle).  */)
 
 #if GNUTLS_VERSION_MAJOR +                                     \
   (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20) > 3
-      ret = fn_gnutls_certificate_set_x509_system_trust (x509_cred);
+      ret = gnutls_certificate_set_x509_system_trust (x509_cred);
       if (ret < GNUTLS_E_SUCCESS)
-       GNUTLS_LOG2i (4, max_log_level,
-                     "setting system trust failed with code ", ret);
+       {
+         check_memory_full (ret);
+         GNUTLS_LOG2i (4, max_log_level,
+                       "setting system trust failed with code ", ret);
+       }
 #endif
 
       for (tail = trustfiles; CONSP (tail); tail = XCDR (tail))
@@ -1344,7 +1361,7 @@ one trustfile (usually a CA bundle).  */)
                 name using the current ANSI codepage.  */
              trustfile = ansi_encode_filename (trustfile);
 #endif
-             ret = fn_gnutls_certificate_set_x509_trust_file
+             ret = gnutls_certificate_set_x509_trust_file
                (x509_cred,
                 SSDATA (trustfile),
                 file_format);
@@ -1370,7 +1387,7 @@ one trustfile (usually a CA bundle).  */)
 #ifdef WINDOWSNT
              crlfile = ansi_encode_filename (crlfile);
 #endif
-             ret = fn_gnutls_certificate_set_x509_crl_file
+             ret = gnutls_certificate_set_x509_crl_file
                (x509_cred, SSDATA (crlfile), file_format);
 
              if (ret < GNUTLS_E_SUCCESS)
@@ -1399,7 +1416,7 @@ one trustfile (usually a CA bundle).  */)
              keyfile = ansi_encode_filename (keyfile);
              certfile = ansi_encode_filename (certfile);
 #endif
-             ret = fn_gnutls_certificate_set_x509_key_file
+             ret = gnutls_certificate_set_x509_key_file
                (x509_cred, SSDATA (certfile), SSDATA (keyfile), file_format);
 
              if (ret < GNUTLS_E_SUCCESS)
@@ -1421,7 +1438,7 @@ one trustfile (usually a CA bundle).  */)
   /* Call gnutls_init here: */
 
   GNUTLS_LOG (1, max_log_level, "gnutls_init");
-  ret = fn_gnutls_init (&state, GNUTLS_CLIENT);
+  ret = gnutls_init (&state, GNUTLS_CLIENT);
   XPROCESS (proc)->gnutls_state = state;
   if (ret < GNUTLS_E_SUCCESS)
     return gnutls_make_error (ret);
@@ -1440,27 +1457,25 @@ one trustfile (usually a CA bundle).  */)
     }
 
   GNUTLS_LOG (1, max_log_level, "setting the priority string");
-  ret = fn_gnutls_priority_set_direct (state,
-                                      priority_string_ptr,
-                                      NULL);
+  ret = gnutls_priority_set_direct (state, priority_string_ptr, NULL);
   if (ret < GNUTLS_E_SUCCESS)
     return gnutls_make_error (ret);
 
   GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_PRIORITY;
 
   if (INTEGERP (prime_bits))
-    fn_gnutls_dh_set_prime_bits (state, XUINT (prime_bits));
+    gnutls_dh_set_prime_bits (state, XUINT (prime_bits));
 
   ret = EQ (type, Qgnutls_x509pki)
-    ? fn_gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred)
-    : fn_gnutls_credentials_set (state, GNUTLS_CRD_ANON, anon_cred);
+    ? gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred)
+    : gnutls_credentials_set (state, GNUTLS_CRD_ANON, anon_cred);
   if (ret < GNUTLS_E_SUCCESS)
     return gnutls_make_error (ret);
 
   if (!gnutls_ip_address_p (c_hostname))
     {
-      ret = fn_gnutls_server_name_set (state, GNUTLS_NAME_DNS, c_hostname,
-                                      strlen (c_hostname));
+      ret = gnutls_server_name_set (state, GNUTLS_NAME_DNS, c_hostname,
+                                   strlen (c_hostname));
       if (ret < GNUTLS_E_SUCCESS)
        return gnutls_make_error (ret);
     }
@@ -1476,7 +1491,7 @@ one trustfile (usually a CA bundle).  */)
      check of the certificate's hostname with
      gnutls_x509_crt_check_hostname against :hostname.  */
 
-  ret = fn_gnutls_certificate_verify_peers2 (state, &peer_verification);
+  ret = gnutls_certificate_verify_peers2 (state, &peer_verification);
   if (ret < GNUTLS_E_SUCCESS)
     return gnutls_make_error (ret);
 
@@ -1514,47 +1529,50 @@ one trustfile (usually a CA bundle).  */)
   /* Up to here the process is the same for X.509 certificates and
      OpenPGP keys.  From now on X.509 certificates are assumed.  This
      can be easily extended to work with openpgp keys as well.  */
-  if (fn_gnutls_certificate_type_get (state) == GNUTLS_CRT_X509)
+  if (gnutls_certificate_type_get (state) == GNUTLS_CRT_X509)
     {
       gnutls_x509_crt_t gnutls_verify_cert;
       const gnutls_datum_t *gnutls_verify_cert_list;
       unsigned int gnutls_verify_cert_list_size;
 
-      ret = fn_gnutls_x509_crt_init (&gnutls_verify_cert);
+      ret = gnutls_x509_crt_init (&gnutls_verify_cert);
       if (ret < GNUTLS_E_SUCCESS)
        return gnutls_make_error (ret);
 
       gnutls_verify_cert_list =
-       fn_gnutls_certificate_get_peers (state, &gnutls_verify_cert_list_size);
+       gnutls_certificate_get_peers (state, &gnutls_verify_cert_list_size);
 
       if (gnutls_verify_cert_list == NULL)
        {
-         fn_gnutls_x509_crt_deinit (gnutls_verify_cert);
+         gnutls_x509_crt_deinit (gnutls_verify_cert);
          emacs_gnutls_deinit (proc);
          error ("No x509 certificate was found\n");
        }
 
       /* We only check the first certificate in the given chain.  */
-      ret = fn_gnutls_x509_crt_import (gnutls_verify_cert,
+      ret = gnutls_x509_crt_import (gnutls_verify_cert,
                                       &gnutls_verify_cert_list[0],
                                       GNUTLS_X509_FMT_DER);
 
       if (ret < GNUTLS_E_SUCCESS)
        {
-         fn_gnutls_x509_crt_deinit (gnutls_verify_cert);
+         gnutls_x509_crt_deinit (gnutls_verify_cert);
          return gnutls_make_error (ret);
        }
 
       XPROCESS (proc)->gnutls_certificate = gnutls_verify_cert;
 
-      if (!fn_gnutls_x509_crt_check_hostname (gnutls_verify_cert, c_hostname))
+      int err = gnutls_x509_crt_check_hostname (gnutls_verify_cert,
+                                               c_hostname);
+      check_memory_full (err);
+      if (!err)
        {
          XPROCESS (proc)->gnutls_extra_peer_verification |=
            CERTIFICATE_NOT_MATCHING;
           if (verify_error_all
               || !NILP (Fmember (QCgnutls_bootprop_hostname, verify_error)))
             {
-             fn_gnutls_x509_crt_deinit (gnutls_verify_cert);
+             gnutls_x509_crt_deinit (gnutls_verify_cert);
              emacs_gnutls_deinit (proc);
              error ("The x509 certificate does not match \"%s\"", c_hostname);
             }
@@ -1595,10 +1613,9 @@ This function may also return `gnutls-e-again', or
 
   state = XPROCESS (proc)->gnutls_state;
 
-  fn_gnutls_x509_crt_deinit (XPROCESS (proc)->gnutls_certificate);
+  gnutls_x509_crt_deinit (XPROCESS (proc)->gnutls_certificate);
 
-  ret = fn_gnutls_bye (state,
-                      NILP (cont) ? GNUTLS_SHUT_RDWR : GNUTLS_SHUT_WR);
+  ret = gnutls_bye (state, NILP (cont) ? GNUTLS_SHUT_RDWR : GNUTLS_SHUT_WR);
 
   return gnutls_make_error (ret);
 }
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 9465d54..f61cbc2 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -1839,12 +1839,12 @@ xg_get_file_with_chooser (struct frame *f,
 
   if (x_gtk_file_dialog_help_text)
     {
-      msgbuf[0] = '\0';
+      char *z = msgbuf;
       /* Gtk+ 2.10 has the file name text entry box integrated in the dialog.
          Show the C-l help text only for versions < 2.10.  */
       if (gtk_check_version (2, 10, 0) && action != 
GTK_FILE_CHOOSER_ACTION_SAVE)
-        strcat (msgbuf, "\nType C-l to display a file name text entry box.\n");
-      strcat (msgbuf, "\nIf you don't like this file selector, use the "
+        z = stpcpy (z, "\nType C-l to display a file name text entry box.\n");
+      strcpy (z, "\nIf you don't like this file selector, use the "
               "corresponding\nkey binding or customize "
               "use-file-dialog to turn it off.");
 
diff --git a/src/image.c b/src/image.c
index a73a725..4cba886 100644
--- a/src/image.c
+++ b/src/image.c
@@ -1859,19 +1859,6 @@ mark_image_cache (struct image_cache *c)
                          X / NS / W32 support code
  ***********************************************************************/
 
-#ifdef WINDOWSNT
-
-/* Macro for defining functions that will be loaded from image DLLs.  */
-#define DEF_IMGLIB_FN(rettype,func,args) static rettype (FAR CDECL 
*fn_##func)args
-
-/* Macro for loading those image functions from the library.  */
-#define LOAD_IMGLIB_FN(lib,func) {                                     \
-    fn_##func = (void *) GetProcAddress (lib, #func);                  \
-    if (!fn_##func) return 0;                                          \
-  }
-
-#endif /* WINDOWSNT */
-
 /* Return true if XIMG's size WIDTH x HEIGHT doesn't break the
    windowing system.
    WIDTH and HEIGHT must both be positive.
@@ -3377,12 +3364,14 @@ xpm_free_colors (Display *dpy, Colormap cmap, Pixel 
*pixels, int npixels, void *
 
 /* XPM library details.  */
 
-DEF_IMGLIB_FN (void, XpmFreeAttributes, (XpmAttributes *));
-DEF_IMGLIB_FN (int, XpmCreateImageFromBuffer, (Display *, char *, xpm_XImage 
**,
-                                         xpm_XImage **, XpmAttributes *));
-DEF_IMGLIB_FN (int, XpmReadFileToImage, (Display *, char *, xpm_XImage **,
-                                   xpm_XImage **, XpmAttributes *));
-DEF_IMGLIB_FN (void, XImageFree, (xpm_XImage *));
+DEF_DLL_FN (void, XpmFreeAttributes, (XpmAttributes *));
+DEF_DLL_FN (int, XpmCreateImageFromBuffer,
+           (Display *, char *, xpm_XImage **,
+            xpm_XImage **, XpmAttributes *));
+DEF_DLL_FN (int, XpmReadFileToImage,
+           (Display *, char *, xpm_XImage **,
+            xpm_XImage **, XpmAttributes *));
+DEF_DLL_FN (void, XImageFree, (xpm_XImage *));
 
 static bool
 init_xpm_functions (void)
@@ -3392,22 +3381,24 @@ init_xpm_functions (void)
   if (!(library = w32_delayed_load (Qxpm)))
     return 0;
 
-  LOAD_IMGLIB_FN (library, XpmFreeAttributes);
-  LOAD_IMGLIB_FN (library, XpmCreateImageFromBuffer);
-  LOAD_IMGLIB_FN (library, XpmReadFileToImage);
-  LOAD_IMGLIB_FN (library, XImageFree);
+  LOAD_DLL_FN (library, XpmFreeAttributes);
+  LOAD_DLL_FN (library, XpmCreateImageFromBuffer);
+  LOAD_DLL_FN (library, XpmReadFileToImage);
+  LOAD_DLL_FN (library, XImageFree);
   return 1;
 }
 
-#endif /* WINDOWSNT */
+# undef XImageFree
+# undef XpmCreateImageFromBuffer
+# undef XpmFreeAttributes
+# undef XpmReadFileToImage
 
-#if defined HAVE_NTGUI && !defined WINDOWSNT
-/* Glue for code below */
-#define fn_XpmReadFileToImage XpmReadFileToImage
-#define fn_XpmCreateImageFromBuffer XpmCreateImageFromBuffer
-#define fn_XImageFree XImageFree
-#define fn_XpmFreeAttributes XpmFreeAttributes
-#endif /* HAVE_NTGUI && !WINDOWSNT */
+# define XImageFree fn_XImageFree
+# define XpmCreateImageFromBuffer fn_XpmCreateImageFromBuffer
+# define XpmFreeAttributes fn_XpmFreeAttributes
+# define XpmReadFileToImage fn_XpmReadFileToImage
+
+#endif /* WINDOWSNT */
 
 /* Value is true if COLOR_SYMBOLS is a valid color symbols list
    for XPM images.  Such a list must consist of conses whose car and
@@ -3624,9 +3615,9 @@ xpm_load (struct frame *f, struct image *img)
 #endif
       /* XpmReadFileToPixmap is not available in the Windows port of
         libxpm.  But XpmReadFileToImage almost does what we want.  */
-      rc = fn_XpmReadFileToImage (&hdc, SDATA (file),
-                                 &xpm_image, &xpm_mask,
-                                 &attrs);
+      rc = XpmReadFileToImage (&hdc, SDATA (file),
+                              &xpm_image, &xpm_mask,
+                              &attrs);
 #else
       rc = XpmReadFileToImage (FRAME_X_DISPLAY (f), SSDATA (file),
                               &img->ximg, &img->mask_img,
@@ -3648,9 +3639,9 @@ xpm_load (struct frame *f, struct image *img)
 #ifdef HAVE_NTGUI
       /* XpmCreatePixmapFromBuffer is not available in the Windows port
         of libxpm.  But XpmCreateImageFromBuffer almost does what we want.  */
-      rc = fn_XpmCreateImageFromBuffer (&hdc, SDATA (buffer),
-                                       &xpm_image, &xpm_mask,
-                                       &attrs);
+      rc = XpmCreateImageFromBuffer (&hdc, SDATA (buffer),
+                                    &xpm_image, &xpm_mask,
+                                    &attrs);
 #else
       rc = XpmCreateImageFromBuffer (FRAME_X_DISPLAY (f), SSDATA (buffer),
                                     &img->ximg, &img->mask_img,
@@ -3699,7 +3690,7 @@ xpm_load (struct frame *f, struct image *img)
          img->pixmap = xpm_image->bitmap;
          /* XImageFree in libXpm frees XImage struct without destroying
             the bitmap, which is what we want.  */
-         fn_XImageFree (xpm_image);
+         XImageFree (xpm_image);
        }
       if (xpm_mask && xpm_mask->bitmap)
        {
@@ -3713,7 +3704,7 @@ xpm_load (struct frame *f, struct image *img)
          SelectObject (hdc, old_obj);
 
          img->mask = xpm_mask->bitmap;
-         fn_XImageFree (xpm_mask);
+         XImageFree (xpm_mask);
          DeleteDC (hdc);
        }
 
@@ -3737,11 +3728,7 @@ xpm_load (struct frame *f, struct image *img)
       eassert (img->width > 0 && img->height > 0);
 
       /* The call to XpmFreeAttributes below frees attrs.alloc_pixels.  */
-#ifdef HAVE_NTGUI
-      fn_XpmFreeAttributes (&attrs);
-#else
       XpmFreeAttributes (&attrs);
-#endif /* HAVE_NTGUI */
 
 #ifdef HAVE_X_WINDOWS
       /* Maybe fill in the background field while we have ximg handy.  */
@@ -5535,39 +5522,42 @@ png_image_p (Lisp_Object object)
 
 #if defined HAVE_PNG && !defined HAVE_NS
 
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
 /* PNG library details.  */
 
-DEF_IMGLIB_FN (png_voidp, png_get_io_ptr, (png_structp));
-DEF_IMGLIB_FN (int, png_sig_cmp, (png_bytep, png_size_t, png_size_t));
-DEF_IMGLIB_FN (png_structp, png_create_read_struct, (png_const_charp, 
png_voidp,
-                                                    png_error_ptr, 
png_error_ptr));
-DEF_IMGLIB_FN (png_infop, png_create_info_struct, (png_structp));
-DEF_IMGLIB_FN (void, png_destroy_read_struct, (png_structpp, png_infopp, 
png_infopp));
-DEF_IMGLIB_FN (void, png_set_read_fn, (png_structp, png_voidp, png_rw_ptr));
-DEF_IMGLIB_FN (void, png_set_sig_bytes, (png_structp, int));
-DEF_IMGLIB_FN (void, png_read_info, (png_structp, png_infop));
-DEF_IMGLIB_FN (png_uint_32, png_get_IHDR, (png_structp, png_infop,
-                             png_uint_32 *, png_uint_32 *,
-                             int *, int *, int *, int *, int *));
-DEF_IMGLIB_FN (png_uint_32, png_get_valid, (png_structp, png_infop, 
png_uint_32));
-DEF_IMGLIB_FN (void, png_set_strip_16, (png_structp));
-DEF_IMGLIB_FN (void, png_set_expand, (png_structp));
-DEF_IMGLIB_FN (void, png_set_gray_to_rgb, (png_structp));
-DEF_IMGLIB_FN (void, png_set_background, (png_structp, png_color_16p,
-                                   int, int, double));
-DEF_IMGLIB_FN (png_uint_32, png_get_bKGD, (png_structp, png_infop, 
png_color_16p *));
-DEF_IMGLIB_FN (void, png_read_update_info, (png_structp, png_infop));
-DEF_IMGLIB_FN (png_byte, png_get_channels, (png_structp, png_infop));
-DEF_IMGLIB_FN (png_size_t, png_get_rowbytes, (png_structp, png_infop));
-DEF_IMGLIB_FN (void, png_read_image, (png_structp, png_bytepp));
-DEF_IMGLIB_FN (void, png_read_end, (png_structp, png_infop));
-DEF_IMGLIB_FN (void, png_error, (png_structp, png_const_charp));
-
-#if (PNG_LIBPNG_VER >= 10500)
-DEF_IMGLIB_FN (void, png_longjmp, (png_structp, int)) PNG_NORETURN;
-DEF_IMGLIB_FN (jmp_buf *, png_set_longjmp_fn, (png_structp, png_longjmp_ptr, 
size_t));
-#endif /* libpng version >= 1.5 */
+DEF_DLL_FN (png_voidp, png_get_io_ptr, (png_structp));
+DEF_DLL_FN (int, png_sig_cmp, (png_bytep, png_size_t, png_size_t));
+DEF_DLL_FN (png_structp, png_create_read_struct,
+           (png_const_charp, png_voidp, png_error_ptr, png_error_ptr));
+DEF_DLL_FN (png_infop, png_create_info_struct, (png_structp));
+DEF_DLL_FN (void, png_destroy_read_struct,
+           (png_structpp, png_infopp, png_infopp));
+DEF_DLL_FN (void, png_set_read_fn, (png_structp, png_voidp, png_rw_ptr));
+DEF_DLL_FN (void, png_set_sig_bytes, (png_structp, int));
+DEF_DLL_FN (void, png_read_info, (png_structp, png_infop));
+DEF_DLL_FN (png_uint_32, png_get_IHDR,
+           (png_structp, png_infop, png_uint_32 *, png_uint_32 *,
+            int *, int *, int *, int *, int *));
+DEF_DLL_FN (png_uint_32, png_get_valid, (png_structp, png_infop, png_uint_32));
+DEF_DLL_FN (void, png_set_strip_16, (png_structp));
+DEF_DLL_FN (void, png_set_expand, (png_structp));
+DEF_DLL_FN (void, png_set_gray_to_rgb, (png_structp));
+DEF_DLL_FN (void, png_set_background,
+           (png_structp, png_color_16p, int, int, double));
+DEF_DLL_FN (png_uint_32, png_get_bKGD,
+           (png_structp, png_infop, png_color_16p *));
+DEF_DLL_FN (void, png_read_update_info, (png_structp, png_infop));
+DEF_DLL_FN (png_byte, png_get_channels, (png_structp, png_infop));
+DEF_DLL_FN (png_size_t, png_get_rowbytes, (png_structp, png_infop));
+DEF_DLL_FN (void, png_read_image, (png_structp, png_bytepp));
+DEF_DLL_FN (void, png_read_end, (png_structp, png_infop));
+DEF_DLL_FN (void, png_error, (png_structp, png_const_charp));
+
+#  if (PNG_LIBPNG_VER >= 10500)
+DEF_DLL_FN (void, png_longjmp, (png_structp, int)) PNG_NORETURN;
+DEF_DLL_FN (jmp_buf *, png_set_longjmp_fn,
+           (png_structp, png_longjmp_ptr, size_t));
+#  endif /* libpng version >= 1.5 */
 
 static bool
 init_png_functions (void)
@@ -5577,87 +5567,107 @@ init_png_functions (void)
   if (!(library = w32_delayed_load (Qpng)))
     return 0;
 
-  LOAD_IMGLIB_FN (library, png_get_io_ptr);
-  LOAD_IMGLIB_FN (library, png_sig_cmp);
-  LOAD_IMGLIB_FN (library, png_create_read_struct);
-  LOAD_IMGLIB_FN (library, png_create_info_struct);
-  LOAD_IMGLIB_FN (library, png_destroy_read_struct);
-  LOAD_IMGLIB_FN (library, png_set_read_fn);
-  LOAD_IMGLIB_FN (library, png_set_sig_bytes);
-  LOAD_IMGLIB_FN (library, png_read_info);
-  LOAD_IMGLIB_FN (library, png_get_IHDR);
-  LOAD_IMGLIB_FN (library, png_get_valid);
-  LOAD_IMGLIB_FN (library, png_set_strip_16);
-  LOAD_IMGLIB_FN (library, png_set_expand);
-  LOAD_IMGLIB_FN (library, png_set_gray_to_rgb);
-  LOAD_IMGLIB_FN (library, png_set_background);
-  LOAD_IMGLIB_FN (library, png_get_bKGD);
-  LOAD_IMGLIB_FN (library, png_read_update_info);
-  LOAD_IMGLIB_FN (library, png_get_channels);
-  LOAD_IMGLIB_FN (library, png_get_rowbytes);
-  LOAD_IMGLIB_FN (library, png_read_image);
-  LOAD_IMGLIB_FN (library, png_read_end);
-  LOAD_IMGLIB_FN (library, png_error);
-
-#if (PNG_LIBPNG_VER >= 10500)
-  LOAD_IMGLIB_FN (library, png_longjmp);
-  LOAD_IMGLIB_FN (library, png_set_longjmp_fn);
-#endif /* libpng version >= 1.5 */
+  LOAD_DLL_FN (library, png_get_io_ptr);
+  LOAD_DLL_FN (library, png_sig_cmp);
+  LOAD_DLL_FN (library, png_create_read_struct);
+  LOAD_DLL_FN (library, png_create_info_struct);
+  LOAD_DLL_FN (library, png_destroy_read_struct);
+  LOAD_DLL_FN (library, png_set_read_fn);
+  LOAD_DLL_FN (library, png_set_sig_bytes);
+  LOAD_DLL_FN (library, png_read_info);
+  LOAD_DLL_FN (library, png_get_IHDR);
+  LOAD_DLL_FN (library, png_get_valid);
+  LOAD_DLL_FN (library, png_set_strip_16);
+  LOAD_DLL_FN (library, png_set_expand);
+  LOAD_DLL_FN (library, png_set_gray_to_rgb);
+  LOAD_DLL_FN (library, png_set_background);
+  LOAD_DLL_FN (library, png_get_bKGD);
+  LOAD_DLL_FN (library, png_read_update_info);
+  LOAD_DLL_FN (library, png_get_channels);
+  LOAD_DLL_FN (library, png_get_rowbytes);
+  LOAD_DLL_FN (library, png_read_image);
+  LOAD_DLL_FN (library, png_read_end);
+  LOAD_DLL_FN (library, png_error);
+
+#  if (PNG_LIBPNG_VER >= 10500)
+  LOAD_DLL_FN (library, png_longjmp);
+  LOAD_DLL_FN (library, png_set_longjmp_fn);
+#  endif /* libpng version >= 1.5 */
 
   return 1;
 }
-#else
-
-#define fn_png_get_io_ptr              png_get_io_ptr
-#define fn_png_sig_cmp                 png_sig_cmp
-#define fn_png_create_read_struct      png_create_read_struct
-#define fn_png_create_info_struct      png_create_info_struct
-#define fn_png_destroy_read_struct     png_destroy_read_struct
-#define fn_png_set_read_fn             png_set_read_fn
-#define fn_png_set_sig_bytes           png_set_sig_bytes
-#define fn_png_read_info               png_read_info
-#define fn_png_get_IHDR                        png_get_IHDR
-#define fn_png_get_valid               png_get_valid
-#define fn_png_set_strip_16            png_set_strip_16
-#define fn_png_set_expand              png_set_expand
-#define fn_png_set_gray_to_rgb         png_set_gray_to_rgb
-#define fn_png_set_background          png_set_background
-#define fn_png_get_bKGD                        png_get_bKGD
-#define fn_png_read_update_info                png_read_update_info
-#define fn_png_get_channels            png_get_channels
-#define fn_png_get_rowbytes            png_get_rowbytes
-#define fn_png_read_image              png_read_image
-#define fn_png_read_end                        png_read_end
-#define fn_png_error                   png_error
-
-#if (PNG_LIBPNG_VER >= 10500)
-#define fn_png_longjmp                 png_longjmp
-#define fn_png_set_longjmp_fn          png_set_longjmp_fn
-#endif /* libpng version >= 1.5 */
 
-#endif /* WINDOWSNT */
+#  undef png_create_info_struct
+#  undef png_create_read_struct
+#  undef png_destroy_read_struct
+#  undef png_error
+#  undef png_get_bKGD
+#  undef png_get_channels
+#  undef png_get_IHDR
+#  undef png_get_io_ptr
+#  undef png_get_rowbytes
+#  undef png_get_valid
+#  undef png_longjmp
+#  undef png_read_end
+#  undef png_read_image
+#  undef png_read_info
+#  undef png_read_update_info
+#  undef png_set_background
+#  undef png_set_expand
+#  undef png_set_gray_to_rgb
+#  undef png_set_longjmp_fn
+#  undef png_set_read_fn
+#  undef png_set_sig_bytes
+#  undef png_set_strip_16
+#  undef png_sig_cmp
+
+#  define png_create_info_struct fn_png_create_info_struct
+#  define png_create_read_struct fn_png_create_read_struct
+#  define png_destroy_read_struct fn_png_destroy_read_struct
+#  define png_error fn_png_error
+#  define png_get_bKGD fn_png_get_bKGD
+#  define png_get_channels fn_png_get_channels
+#  define png_get_IHDR fn_png_get_IHDR
+#  define png_get_io_ptr fn_png_get_io_ptr
+#  define png_get_rowbytes fn_png_get_rowbytes
+#  define png_get_valid fn_png_get_valid
+#  define png_longjmp fn_png_longjmp
+#  define png_read_end fn_png_read_end
+#  define png_read_image fn_png_read_image
+#  define png_read_info fn_png_read_info
+#  define png_read_update_info fn_png_read_update_info
+#  define png_set_background fn_png_set_background
+#  define png_set_expand fn_png_set_expand
+#  define png_set_gray_to_rgb fn_png_set_gray_to_rgb
+#  define png_set_longjmp_fn fn_png_set_longjmp_fn
+#  define png_set_read_fn fn_png_set_read_fn
+#  define png_set_sig_bytes fn_png_set_sig_bytes
+#  define png_set_strip_16 fn_png_set_strip_16
+#  define png_sig_cmp fn_png_sig_cmp
+
+# endif /* WINDOWSNT */
 
 /* Fast implementations of setjmp and longjmp.  Although setjmp and longjmp
    will do, POSIX _setjmp and _longjmp (if available) are often faster.
    Do not use sys_setjmp, as PNG supports only jmp_buf.
    It's OK if the longjmp substitute restores the signal mask.  */
-#ifdef HAVE__SETJMP
-# define FAST_SETJMP(j) _setjmp (j)
-# define FAST_LONGJMP _longjmp
-#else
-# define FAST_SETJMP(j) setjmp (j)
-# define FAST_LONGJMP longjmp
-#endif
-
-#if PNG_LIBPNG_VER < 10500
-#define PNG_LONGJMP(ptr) FAST_LONGJMP ((ptr)->jmpbuf, 1)
-#define PNG_JMPBUF(ptr) ((ptr)->jmpbuf)
-#else
+# ifdef HAVE__SETJMP
+#  define FAST_SETJMP(j) _setjmp (j)
+#  define FAST_LONGJMP _longjmp
+# else
+#  define FAST_SETJMP(j) setjmp (j)
+#  define FAST_LONGJMP longjmp
+# endif
+
+# if PNG_LIBPNG_VER < 10500
+#  define PNG_LONGJMP(ptr) FAST_LONGJMP ((ptr)->jmpbuf, 1)
+#  define PNG_JMPBUF(ptr) ((ptr)->jmpbuf)
+# else
 /* In libpng version 1.5, the jmpbuf member is hidden. (Bug#7908)  */
-#define PNG_LONGJMP(ptr) fn_png_longjmp (ptr, 1)
-#define PNG_JMPBUF(ptr) \
-  (*fn_png_set_longjmp_fn (ptr, FAST_LONGJMP, sizeof (jmp_buf)))
-#endif
+#  define PNG_LONGJMP(ptr) png_longjmp (ptr, 1)
+#  define PNG_JMPBUF(ptr) \
+     (*png_set_longjmp_fn (ptr, FAST_LONGJMP, sizeof (jmp_buf)))
+# endif
 
 /* Error and warning handlers installed when the PNG library
    is initialized.  */
@@ -5697,10 +5707,10 @@ struct png_memory_storage
 static void
 png_read_from_memory (png_structp png_ptr, png_bytep data, png_size_t length)
 {
-  struct png_memory_storage *tbr = fn_png_get_io_ptr (png_ptr);
+  struct png_memory_storage *tbr = png_get_io_ptr (png_ptr);
 
   if (length > tbr->len - tbr->index)
-    fn_png_error (png_ptr, "Read error");
+    png_error (png_ptr, "Read error");
 
   memcpy (data, tbr->bytes + tbr->index, length);
   tbr->index = tbr->index + length;
@@ -5714,10 +5724,10 @@ png_read_from_memory (png_structp png_ptr, png_bytep 
data, png_size_t length)
 static void
 png_read_from_file (png_structp png_ptr, png_bytep data, png_size_t length)
 {
-  FILE *fp = fn_png_get_io_ptr (png_ptr);
+  FILE *fp = png_get_io_ptr (png_ptr);
 
   if (fread (data, 1, length, fp) < length)
-    fn_png_error (png_ptr, "Read error");
+    png_error (png_ptr, "Read error");
 }
 
 
@@ -5779,7 +5789,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
 
       /* Check PNG signature.  */
       if (fread (sig, 1, sizeof sig, fp) != sizeof sig
-         || fn_png_sig_cmp (sig, 0, sizeof sig))
+         || png_sig_cmp (sig, 0, sizeof sig))
        {
          fclose (fp);
          image_error ("Not a PNG file: `%s'", file, Qnil);
@@ -5801,7 +5811,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
 
       /* Check PNG signature.  */
       if (tbr.len < sizeof sig
-         || fn_png_sig_cmp (tbr.bytes, 0, sizeof sig))
+         || png_sig_cmp (tbr.bytes, 0, sizeof sig))
        {
          image_error ("Not a PNG image: `%s'", img->spec, Qnil);
          return 0;
@@ -5812,13 +5822,13 @@ png_load_body (struct frame *f, struct image *img, 
struct png_load_context *c)
     }
 
   /* Initialize read and info structs for PNG lib.  */
-  png_ptr = fn_png_create_read_struct (PNG_LIBPNG_VER_STRING,
+  png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
                                       NULL, my_png_error,
                                       my_png_warning);
   if (png_ptr)
     {
-      info_ptr = fn_png_create_info_struct (png_ptr);
-      end_info = fn_png_create_info_struct (png_ptr);
+      info_ptr = png_create_info_struct (png_ptr);
+      end_info = png_create_info_struct (png_ptr);
     }
 
   c->png_ptr = png_ptr;
@@ -5830,7 +5840,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
 
   if (! (info_ptr && end_info))
     {
-      fn_png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
+      png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
       png_ptr = 0;
     }
   if (! png_ptr)
@@ -5845,7 +5855,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
     {
     error:
       if (c->png_ptr)
-       fn_png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
+       png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
       xfree (c->pixels);
       xfree (c->rows);
       if (c->fp)
@@ -5858,14 +5868,14 @@ png_load_body (struct frame *f, struct image *img, 
struct png_load_context *c)
 
   /* Read image info.  */
   if (!NILP (specified_data))
-    fn_png_set_read_fn (png_ptr, &tbr, png_read_from_memory);
+    png_set_read_fn (png_ptr, &tbr, png_read_from_memory);
   else
-    fn_png_set_read_fn (png_ptr, fp, png_read_from_file);
+    png_set_read_fn (png_ptr, fp, png_read_from_file);
 
-  fn_png_set_sig_bytes (png_ptr, sizeof sig);
-  fn_png_read_info (png_ptr, info_ptr);
-  fn_png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
-                  &interlace_type, NULL, NULL);
+  png_set_sig_bytes (png_ptr, sizeof sig);
+  png_read_info (png_ptr, info_ptr);
+  png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
+               &interlace_type, NULL, NULL);
 
   if (! (width <= INT_MAX && height <= INT_MAX
         && check_image_size (f, width, height)))
@@ -5881,7 +5891,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
 
   /* If image contains simply transparency data, we prefer to
      construct a clipping mask.  */
-  if (fn_png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS))
+  if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS))
     transparent_p = 1;
   else
     transparent_p = 0;
@@ -5892,16 +5902,16 @@ png_load_body (struct frame *f, struct image *img, 
struct png_load_context *c)
 
   /* Strip more than 8 bits per channel.  */
   if (bit_depth == 16)
-    fn_png_set_strip_16 (png_ptr);
+    png_set_strip_16 (png_ptr);
 
   /* Expand data to 24 bit RGB, or 8 bit grayscale, with alpha channel
      if available.  */
-  fn_png_set_expand (png_ptr);
+  png_set_expand (png_ptr);
 
   /* Convert grayscale images to RGB.  */
   if (color_type == PNG_COLOR_TYPE_GRAY
       || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
-    fn_png_set_gray_to_rgb (png_ptr);
+    png_set_gray_to_rgb (png_ptr);
 
   /* Handle alpha channel by combining the image with a background
      color.  Do this only if a real alpha channel is supplied.  For
@@ -5927,24 +5937,24 @@ png_load_body (struct frame *f, struct image *img, 
struct png_load_context *c)
          bg.green = color.green >> shift;
          bg.blue = color.blue >> shift;
 
-         fn_png_set_background (png_ptr, &bg,
-                                PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
+         png_set_background (png_ptr, &bg,
+                             PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
        }
     }
 
   /* Update info structure.  */
-  fn_png_read_update_info (png_ptr, info_ptr);
+  png_read_update_info (png_ptr, info_ptr);
 
   /* Get number of channels.  Valid values are 1 for grayscale images
      and images with a palette, 2 for grayscale images with transparency
      information (alpha channel), 3 for RGB images, and 4 for RGB
      images with alpha channel, i.e. RGBA.  If conversions above were
      sufficient we should only have 3 or 4 channels here.  */
-  channels = fn_png_get_channels (png_ptr, info_ptr);
+  channels = png_get_channels (png_ptr, info_ptr);
   eassert (channels == 3 || channels == 4);
 
   /* Number of bytes needed for one row of the image.  */
-  row_bytes = fn_png_get_rowbytes (png_ptr, info_ptr);
+  row_bytes = png_get_rowbytes (png_ptr, info_ptr);
 
   /* Allocate memory for the image.  */
   if (min (PTRDIFF_MAX, SIZE_MAX) / sizeof *rows < height
@@ -5956,8 +5966,8 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
     rows[i] = pixels + i * row_bytes;
 
   /* Read the entire image.  */
-  fn_png_read_image (png_ptr, rows);
-  fn_png_read_end (png_ptr, info_ptr);
+  png_read_image (png_ptr, rows);
+  png_read_end (png_ptr, info_ptr);
   if (fp)
     {
       fclose (fp);
@@ -6021,21 +6031,21 @@ png_load_body (struct frame *f, struct image *img, 
struct png_load_context *c)
        overrode it.  */
     {
       png_color_16 *bg;
-      if (fn_png_get_bKGD (png_ptr, info_ptr, &bg))
+      if (png_get_bKGD (png_ptr, info_ptr, &bg))
        {
          img->background = lookup_rgb_color (f, bg->red, bg->green, bg->blue);
          img->background_valid = 1;
        }
     }
 
-#ifdef COLOR_TABLE_SUPPORT
+# ifdef COLOR_TABLE_SUPPORT
   /* Remember colors allocated for this image.  */
   img->colors = colors_in_color_table (&img->ncolors);
   free_color_table ();
-#endif /* COLOR_TABLE_SUPPORT */
+# endif /* COLOR_TABLE_SUPPORT */
 
   /* Clean up.  */
-  fn_png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
+  png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
   xfree (rows);
   xfree (pixels);
 
@@ -6170,15 +6180,15 @@ jpeg_image_p (Lisp_Object object)
 
 /* Work around a warning about HAVE_STDLIB_H being redefined in
    jconfig.h.  */
-#ifdef HAVE_STDLIB_H
-#undef HAVE_STDLIB_H
-#endif /* HAVE_STLIB_H */
+# ifdef HAVE_STDLIB_H
+#  undef HAVE_STDLIB_H
+# endif
 
-#if defined (HAVE_NTGUI) && !defined (__WIN32__)
+# if defined (HAVE_NTGUI) && !defined (__WIN32__)
 /* In older releases of the jpeg library, jpeglib.h will define boolean
    differently depending on __WIN32__, so make sure it is defined.  */
-#define __WIN32__ 1
-#endif
+#  define __WIN32__ 1
+# endif
 
 /* rpcndr.h (via windows.h) and jpeglib.h both define boolean types.
    Some versions of jpeglib try to detect whether rpcndr.h is loaded,
@@ -6194,23 +6204,25 @@ jpeg_image_p (Lisp_Object object)
    different name.  This name, jpeg_boolean, remains in effect through
    the rest of image.c.
 */
-#if defined CYGWIN && defined HAVE_NTGUI
-#define boolean jpeg_boolean
-#endif
-#include <jpeglib.h>
-#include <jerror.h>
+# if defined CYGWIN && defined HAVE_NTGUI
+#  define boolean jpeg_boolean
+# endif
+# include <jpeglib.h>
+# include <jerror.h>
 
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
 
 /* JPEG library details.  */
-DEF_IMGLIB_FN (void, jpeg_CreateDecompress, (j_decompress_ptr, int, size_t));
-DEF_IMGLIB_FN (boolean, jpeg_start_decompress, (j_decompress_ptr));
-DEF_IMGLIB_FN (boolean, jpeg_finish_decompress, (j_decompress_ptr));
-DEF_IMGLIB_FN (void, jpeg_destroy_decompress, (j_decompress_ptr));
-DEF_IMGLIB_FN (int, jpeg_read_header, (j_decompress_ptr, boolean));
-DEF_IMGLIB_FN (JDIMENSION, jpeg_read_scanlines, (j_decompress_ptr, JSAMPARRAY, 
JDIMENSION));
-DEF_IMGLIB_FN (struct jpeg_error_mgr *, jpeg_std_error, (struct jpeg_error_mgr 
*));
-DEF_IMGLIB_FN (boolean, jpeg_resync_to_restart, (j_decompress_ptr, int));
+DEF_DLL_FN (void, jpeg_CreateDecompress, (j_decompress_ptr, int, size_t));
+DEF_DLL_FN (boolean, jpeg_start_decompress, (j_decompress_ptr));
+DEF_DLL_FN (boolean, jpeg_finish_decompress, (j_decompress_ptr));
+DEF_DLL_FN (void, jpeg_destroy_decompress, (j_decompress_ptr));
+DEF_DLL_FN (int, jpeg_read_header, (j_decompress_ptr, boolean));
+DEF_DLL_FN (JDIMENSION, jpeg_read_scanlines,
+           (j_decompress_ptr, JSAMPARRAY, JDIMENSION));
+DEF_DLL_FN (struct jpeg_error_mgr *, jpeg_std_error,
+           (struct jpeg_error_mgr *));
+DEF_DLL_FN (boolean, jpeg_resync_to_restart, (j_decompress_ptr, int));
 
 static bool
 init_jpeg_functions (void)
@@ -6220,37 +6232,46 @@ init_jpeg_functions (void)
   if (!(library = w32_delayed_load (Qjpeg)))
     return 0;
 
-  LOAD_IMGLIB_FN (library, jpeg_finish_decompress);
-  LOAD_IMGLIB_FN (library, jpeg_read_scanlines);
-  LOAD_IMGLIB_FN (library, jpeg_start_decompress);
-  LOAD_IMGLIB_FN (library, jpeg_read_header);
-  LOAD_IMGLIB_FN (library, jpeg_CreateDecompress);
-  LOAD_IMGLIB_FN (library, jpeg_destroy_decompress);
-  LOAD_IMGLIB_FN (library, jpeg_std_error);
-  LOAD_IMGLIB_FN (library, jpeg_resync_to_restart);
+  LOAD_DLL_FN (library, jpeg_finish_decompress);
+  LOAD_DLL_FN (library, jpeg_read_scanlines);
+  LOAD_DLL_FN (library, jpeg_start_decompress);
+  LOAD_DLL_FN (library, jpeg_read_header);
+  LOAD_DLL_FN (library, jpeg_CreateDecompress);
+  LOAD_DLL_FN (library, jpeg_destroy_decompress);
+  LOAD_DLL_FN (library, jpeg_std_error);
+  LOAD_DLL_FN (library, jpeg_resync_to_restart);
   return 1;
 }
 
+#  undef jpeg_CreateDecompress
+#  undef jpeg_destroy_decompress
+#  undef jpeg_finish_decompress
+#  undef jpeg_read_header
+#  undef jpeg_read_scanlines
+#  undef jpeg_resync_to_restart
+#  undef jpeg_start_decompress
+#  undef jpeg_std_error
+
+#  define jpeg_CreateDecompress fn_jpeg_CreateDecompress
+#  define jpeg_destroy_decompress fn_jpeg_destroy_decompress
+#  define jpeg_finish_decompress fn_jpeg_finish_decompress
+#  define jpeg_read_header fn_jpeg_read_header
+#  define jpeg_read_scanlines fn_jpeg_read_scanlines
+#  define jpeg_resync_to_restart fn_jpeg_resync_to_restart
+#  define jpeg_start_decompress fn_jpeg_start_decompress
+#  define jpeg_std_error fn_jpeg_std_error
+
 /* Wrapper since we can't directly assign the function pointer
    to another function pointer that was declared more completely easily.  */
 static boolean
 jpeg_resync_to_restart_wrapper (j_decompress_ptr cinfo, int desired)
 {
-  return fn_jpeg_resync_to_restart (cinfo, desired);
+  return jpeg_resync_to_restart (cinfo, desired);
 }
+#  undef jpeg_resync_to_restart
+#  define jpeg_resync_to_restart jpeg_resync_to_restart_wrapper
 
-#else
-
-#define fn_jpeg_CreateDecompress(a,b,c)        jpeg_create_decompress (a)
-#define fn_jpeg_start_decompress       jpeg_start_decompress
-#define fn_jpeg_finish_decompress      jpeg_finish_decompress
-#define fn_jpeg_destroy_decompress     jpeg_destroy_decompress
-#define fn_jpeg_read_header            jpeg_read_header
-#define fn_jpeg_read_scanlines         jpeg_read_scanlines
-#define fn_jpeg_std_error              jpeg_std_error
-#define jpeg_resync_to_restart_wrapper jpeg_resync_to_restart
-
-#endif /* WINDOWSNT */
+# endif /* WINDOWSNT */
 
 struct my_jpeg_error_mgr
 {
@@ -6358,7 +6379,7 @@ jpeg_memory_src (j_decompress_ptr cinfo, JOCTET *data, 
ptrdiff_t len)
   src->init_source = our_common_init_source;
   src->fill_input_buffer = our_memory_fill_input_buffer;
   src->skip_input_data = our_memory_skip_input_data;
-  src->resync_to_restart = jpeg_resync_to_restart_wrapper; /* Use default 
method.  */
+  src->resync_to_restart = jpeg_resync_to_restart; /* Use default method.  */
   src->term_source = our_common_term_source;
   src->bytes_in_buffer = len;
   src->next_input_byte = data;
@@ -6464,7 +6485,7 @@ jpeg_file_src (j_decompress_ptr cinfo, FILE *fp)
   src->mgr.init_source = our_common_init_source;
   src->mgr.fill_input_buffer = our_stdio_fill_input_buffer;
   src->mgr.skip_input_data = our_stdio_skip_input_data;
-  src->mgr.resync_to_restart = jpeg_resync_to_restart_wrapper; /* Use default 
method.  */
+  src->mgr.resync_to_restart = jpeg_resync_to_restart; /* Use default.  */
   src->mgr.term_source = our_common_term_source;
   src->mgr.bytes_in_buffer = 0;
   src->mgr.next_input_byte = NULL;
@@ -6515,7 +6536,7 @@ jpeg_load_body (struct frame *f, struct image *img,
 
   /* Customize libjpeg's error handling to call my_error_exit when an
      error is detected.  This function will perform a longjmp.  */
-  mgr->cinfo.err = fn_jpeg_std_error (&mgr->pub);
+  mgr->cinfo.err = jpeg_std_error (&mgr->pub);
   mgr->pub.error_exit = my_error_exit;
   if (sys_setjmp (mgr->setjmp_buffer))
     {
@@ -6541,7 +6562,7 @@ jpeg_load_body (struct frame *f, struct image *img,
       /* Close the input file and destroy the JPEG object.  */
       if (fp)
        fclose (fp);
-      fn_jpeg_destroy_decompress (&mgr->cinfo);
+      jpeg_destroy_decompress (&mgr->cinfo);
 
       /* If we already have an XImage, free that.  */
       x_destroy_x_image (ximg);
@@ -6553,7 +6574,7 @@ jpeg_load_body (struct frame *f, struct image *img,
 
   /* Create the JPEG decompression object.  Let it read from fp.
         Read the JPEG image header.  */
-  fn_jpeg_CreateDecompress (&mgr->cinfo, JPEG_LIB_VERSION, sizeof 
*&mgr->cinfo);
+  jpeg_CreateDecompress (&mgr->cinfo, JPEG_LIB_VERSION, sizeof *&mgr->cinfo);
 
   if (NILP (specified_data))
     jpeg_file_src (&mgr->cinfo, fp);
@@ -6561,12 +6582,12 @@ jpeg_load_body (struct frame *f, struct image *img,
     jpeg_memory_src (&mgr->cinfo, SDATA (specified_data),
                     SBYTES (specified_data));
 
-  fn_jpeg_read_header (&mgr->cinfo, 1);
+  jpeg_read_header (&mgr->cinfo, 1);
 
   /* Customize decompression so that color quantization will be used.
         Start decompression.  */
   mgr->cinfo.quantize_colors = 1;
-  fn_jpeg_start_decompress (&mgr->cinfo);
+  jpeg_start_decompress (&mgr->cinfo);
   width = img->width = mgr->cinfo.output_width;
   height = img->height = mgr->cinfo.output_height;
 
@@ -6629,14 +6650,14 @@ jpeg_load_body (struct frame *f, struct image *img,
                                         JPOOL_IMAGE, row_stride, 1);
   for (y = 0; y < height; ++y)
     {
-      fn_jpeg_read_scanlines (&mgr->cinfo, buffer, 1);
+      jpeg_read_scanlines (&mgr->cinfo, buffer, 1);
       for (x = 0; x < mgr->cinfo.output_width; ++x)
        XPutPixel (ximg, x, y, colors[buffer[0][x]]);
     }
 
   /* Clean up.  */
-  fn_jpeg_finish_decompress (&mgr->cinfo);
-  fn_jpeg_destroy_decompress (&mgr->cinfo);
+  jpeg_finish_decompress (&mgr->cinfo);
+  jpeg_destroy_decompress (&mgr->cinfo);
   if (fp)
     fclose (fp);
 
@@ -6760,22 +6781,22 @@ tiff_image_p (Lisp_Object object)
 
 #ifdef HAVE_TIFF
 
-#include <tiffio.h>
+# include <tiffio.h>
 
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
 
 /* TIFF library details.  */
-DEF_IMGLIB_FN (TIFFErrorHandler, TIFFSetErrorHandler, (TIFFErrorHandler));
-DEF_IMGLIB_FN (TIFFErrorHandler, TIFFSetWarningHandler, (TIFFErrorHandler));
-DEF_IMGLIB_FN (TIFF *, TIFFOpen, (const char *, const char *));
-DEF_IMGLIB_FN (TIFF *, TIFFClientOpen, (const char *, const char *, thandle_t,
-                               TIFFReadWriteProc, TIFFReadWriteProc,
-                               TIFFSeekProc, TIFFCloseProc, TIFFSizeProc,
-                               TIFFMapFileProc, TIFFUnmapFileProc));
-DEF_IMGLIB_FN (int, TIFFGetField, (TIFF *, ttag_t, ...));
-DEF_IMGLIB_FN (int, TIFFReadRGBAImage, (TIFF *, uint32, uint32, uint32 *, 
int));
-DEF_IMGLIB_FN (void, TIFFClose, (TIFF *));
-DEF_IMGLIB_FN (int, TIFFSetDirectory, (TIFF *, tdir_t));
+DEF_DLL_FN (TIFFErrorHandler, TIFFSetErrorHandler, (TIFFErrorHandler));
+DEF_DLL_FN (TIFFErrorHandler, TIFFSetWarningHandler, (TIFFErrorHandler));
+DEF_DLL_FN (TIFF *, TIFFOpen, (const char *, const char *));
+DEF_DLL_FN (TIFF *, TIFFClientOpen,
+           (const char *, const char *, thandle_t, TIFFReadWriteProc,
+            TIFFReadWriteProc, TIFFSeekProc, TIFFCloseProc, TIFFSizeProc,
+            TIFFMapFileProc, TIFFUnmapFileProc));
+DEF_DLL_FN (int, TIFFGetField, (TIFF *, ttag_t, ...));
+DEF_DLL_FN (int, TIFFReadRGBAImage, (TIFF *, uint32, uint32, uint32 *, int));
+DEF_DLL_FN (void, TIFFClose, (TIFF *));
+DEF_DLL_FN (int, TIFFSetDirectory, (TIFF *, tdir_t));
 
 static bool
 init_tiff_functions (void)
@@ -6785,28 +6806,36 @@ init_tiff_functions (void)
   if (!(library = w32_delayed_load (Qtiff)))
     return 0;
 
-  LOAD_IMGLIB_FN (library, TIFFSetErrorHandler);
-  LOAD_IMGLIB_FN (library, TIFFSetWarningHandler);
-  LOAD_IMGLIB_FN (library, TIFFOpen);
-  LOAD_IMGLIB_FN (library, TIFFClientOpen);
-  LOAD_IMGLIB_FN (library, TIFFGetField);
-  LOAD_IMGLIB_FN (library, TIFFReadRGBAImage);
-  LOAD_IMGLIB_FN (library, TIFFClose);
-  LOAD_IMGLIB_FN (library, TIFFSetDirectory);
+  LOAD_DLL_FN (library, TIFFSetErrorHandler);
+  LOAD_DLL_FN (library, TIFFSetWarningHandler);
+  LOAD_DLL_FN (library, TIFFOpen);
+  LOAD_DLL_FN (library, TIFFClientOpen);
+  LOAD_DLL_FN (library, TIFFGetField);
+  LOAD_DLL_FN (library, TIFFReadRGBAImage);
+  LOAD_DLL_FN (library, TIFFClose);
+  LOAD_DLL_FN (library, TIFFSetDirectory);
   return 1;
 }
 
-#else
+#  undef TIFFClientOpen
+#  undef TIFFClose
+#  undef TIFFGetField
+#  undef TIFFOpen
+#  undef TIFFReadRGBAImage
+#  undef TIFFSetDirectory
+#  undef TIFFSetErrorHandler
+#  undef TIFFSetWarningHandler
 
-#define fn_TIFFSetErrorHandler         TIFFSetErrorHandler
-#define fn_TIFFSetWarningHandler       TIFFSetWarningHandler
-#define fn_TIFFOpen                    TIFFOpen
-#define fn_TIFFClientOpen              TIFFClientOpen
-#define fn_TIFFGetField                        TIFFGetField
-#define fn_TIFFReadRGBAImage           TIFFReadRGBAImage
-#define fn_TIFFClose                   TIFFClose
-#define fn_TIFFSetDirectory            TIFFSetDirectory
-#endif /* WINDOWSNT */
+#  define TIFFClientOpen fn_TIFFClientOpen
+#  define TIFFClose fn_TIFFClose
+#  define TIFFGetField fn_TIFFGetField
+#  define TIFFOpen fn_TIFFOpen
+#  define TIFFReadRGBAImage fn_TIFFReadRGBAImage
+#  define TIFFSetDirectory fn_TIFFSetDirectory
+#  define TIFFSetErrorHandler fn_TIFFSetErrorHandler
+#  define TIFFSetWarningHandler fn_TIFFSetWarningHandler
+
+# endif /* WINDOWSNT */
 
 
 /* Reading from a memory buffer for TIFF images Based on the PNG
@@ -6904,11 +6933,11 @@ tiff_size_of_memory (thandle_t data)
    compiler error compiling tiff_handler, see Bugzilla bug #17406
    (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17406).  Declaring
    this function as external works around that problem.  */
-#if defined (__MINGW32__) && __GNUC__ == 3
-# define MINGW_STATIC
-#else
-# define MINGW_STATIC static
-#endif
+# if defined (__MINGW32__) && __GNUC__ == 3
+#  define MINGW_STATIC
+# else
+#  define MINGW_STATIC static
+# endif
 
 MINGW_STATIC void
 tiff_handler (const char *, const char *, const char *, va_list)
@@ -6927,7 +6956,7 @@ tiff_handler (const char *log_format, const char *title,
   add_to_log (log_format, build_string (title),
              make_string (buf, max (0, min (len, sizeof buf - 1))));
 }
-#undef MINGW_STATIC
+# undef MINGW_STATIC
 
 static void tiff_error_handler (const char *, const char *, va_list)
   ATTRIBUTE_FORMAT_PRINTF (2, 0);
@@ -6966,8 +6995,8 @@ tiff_load (struct frame *f, struct image *img)
   specified_file = image_spec_value (img->spec, QCfile, NULL);
   specified_data = image_spec_value (img->spec, QCdata, NULL);
 
-  fn_TIFFSetErrorHandler ((TIFFErrorHandler) tiff_error_handler);
-  fn_TIFFSetWarningHandler ((TIFFErrorHandler) tiff_warning_handler);
+  TIFFSetErrorHandler ((TIFFErrorHandler) tiff_error_handler);
+  TIFFSetWarningHandler ((TIFFErrorHandler) tiff_warning_handler);
 
   if (NILP (specified_data))
     {
@@ -6978,12 +7007,12 @@ tiff_load (struct frame *f, struct image *img)
          image_error ("Cannot find image file `%s'", specified_file, Qnil);
          return 0;
        }
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
       file = ansi_encode_filename (file);
-#endif
+# endif
 
       /* Try to open the image file.  */
-      tiff = fn_TIFFOpen (SSDATA (file), "r");
+      tiff = TIFFOpen (SSDATA (file), "r");
       if (tiff == NULL)
        {
          image_error ("Cannot open `%s'", file, Qnil);
@@ -7003,14 +7032,14 @@ tiff_load (struct frame *f, struct image *img)
       memsrc.len = SBYTES (specified_data);
       memsrc.index = 0;
 
-      tiff = fn_TIFFClientOpen ("memory_source", "r", (thandle_t)&memsrc,
-                               tiff_read_from_memory,
-                               tiff_write_from_memory,
-                               tiff_seek_in_memory,
-                               tiff_close_memory,
-                               tiff_size_of_memory,
-                               tiff_mmap_memory,
-                               tiff_unmap_memory);
+      tiff = TIFFClientOpen ("memory_source", "r", (thandle_t)&memsrc,
+                            tiff_read_from_memory,
+                            tiff_write_from_memory,
+                            tiff_seek_in_memory,
+                            tiff_close_memory,
+                            tiff_size_of_memory,
+                            tiff_mmap_memory,
+                            tiff_unmap_memory);
 
       if (!tiff)
        {
@@ -7024,24 +7053,24 @@ tiff_load (struct frame *f, struct image *img)
     {
       EMACS_INT ino = XFASTINT (image);
       if (! (TYPE_MINIMUM (tdir_t) <= ino && ino <= TYPE_MAXIMUM (tdir_t)
-            && fn_TIFFSetDirectory (tiff, ino)))
+            && TIFFSetDirectory (tiff, ino)))
        {
          image_error ("Invalid image number `%s' in image `%s'",
                       image, img->spec);
-         fn_TIFFClose (tiff);
+         TIFFClose (tiff);
          return 0;
        }
     }
 
   /* Get width and height of the image, and allocate a raster buffer
      of width x height 32-bit values.  */
-  fn_TIFFGetField (tiff, TIFFTAG_IMAGEWIDTH, &width);
-  fn_TIFFGetField (tiff, TIFFTAG_IMAGELENGTH, &height);
+  TIFFGetField (tiff, TIFFTAG_IMAGEWIDTH, &width);
+  TIFFGetField (tiff, TIFFTAG_IMAGELENGTH, &height);
 
   if (!check_image_size (f, width, height))
     {
       image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
-      fn_TIFFClose (tiff);
+      TIFFClose (tiff);
       return 0;
     }
 
@@ -7050,16 +7079,16 @@ tiff_load (struct frame *f, struct image *img)
         && image_create_x_image_and_pixmap (f, img, width, height, 0,
                                             &ximg, 0)))
     {
-      fn_TIFFClose (tiff);
+      TIFFClose (tiff);
       return 0;
     }
 
   buf = xmalloc (sizeof *buf * width * height);
 
-  rc = fn_TIFFReadRGBAImage (tiff, width, height, buf, 0);
+  rc = TIFFReadRGBAImage (tiff, width, height, buf, 0);
 
   /* Count the number of images in the file.  */
-  for (count = 1; fn_TIFFSetDirectory (tiff, count); count++)
+  for (count = 1; TIFFSetDirectory (tiff, count); count++)
     continue;
 
   if (count > 1)
@@ -7067,7 +7096,7 @@ tiff_load (struct frame *f, struct image *img)
                            Fcons (make_number (count),
                                   img->lisp_data));
 
-  fn_TIFFClose (tiff);
+  TIFFClose (tiff);
   if (!rc)
     {
       image_error ("Error reading TIFF image `%s'", img->spec, Qnil);
@@ -7093,11 +7122,11 @@ tiff_load (struct frame *f, struct image *img)
        }
     }
 
-#ifdef COLOR_TABLE_SUPPORT
+# ifdef COLOR_TABLE_SUPPORT
   /* Remember the colors allocated for the image.  Free the color table.  */
   img->colors = colors_in_color_table (&img->ncolors);
   free_color_table ();
-#endif /* COLOR_TABLE_SUPPORT */
+# endif /* COLOR_TABLE_SUPPORT */
 
   img->width = width;
   img->height = height;
@@ -7114,9 +7143,8 @@ tiff_load (struct frame *f, struct image *img)
   return 1;
 }
 
-#else /* HAVE_TIFF */
+#elif defined HAVE_NS
 
-#ifdef HAVE_NS
 static bool
 tiff_load (struct frame *f, struct image *img)
 {
@@ -7124,9 +7152,8 @@ tiff_load (struct frame *f, struct image *img)
                         image_spec_value (img->spec, QCfile, NULL),
                         image_spec_value (img->spec, QCdata, NULL));
 }
-#endif  /* HAVE_NS */
 
-#endif /* !HAVE_TIFF */
+#endif
 
 
 
@@ -7226,54 +7253,54 @@ gif_image_p (Lisp_Object object)
 
 #ifdef HAVE_GIF
 
-#if defined (HAVE_NTGUI)
+# ifdef HAVE_NTGUI
 
 /* winuser.h might define DrawText to DrawTextA or DrawTextW.
    Undefine before redefining to avoid a preprocessor warning.  */
-#ifdef DrawText
-#undef DrawText
-#endif
+#  ifdef DrawText
+#   undef DrawText
+#  endif
 /* avoid conflict with QuickdrawText.h */
-#define DrawText gif_DrawText
-#include <gif_lib.h>
-#undef DrawText
+#  define DrawText gif_DrawText
+#  include <gif_lib.h>
+#  undef DrawText
 
 /* Giflib before 5.0 didn't define these macros (used only if HAVE_NTGUI).  */
-#ifndef GIFLIB_MINOR
-#define GIFLIB_MINOR 0
-#endif
-#ifndef GIFLIB_RELEASE
-#define GIFLIB_RELEASE 0
-#endif
+#  ifndef GIFLIB_MINOR
+#   define GIFLIB_MINOR 0
+#  endif
+#  ifndef GIFLIB_RELEASE
+#   define GIFLIB_RELEASE 0
+#  endif
 
-#else /* HAVE_NTGUI */
+# else /* HAVE_NTGUI */
 
-#include <gif_lib.h>
+#  include <gif_lib.h>
 
-#endif /* HAVE_NTGUI */
+# endif /* HAVE_NTGUI */
 
 /* Giflib before 5.0 didn't define these macros.  */
-#ifndef GIFLIB_MAJOR
-#define GIFLIB_MAJOR 4
-#endif
+# ifndef GIFLIB_MAJOR
+#  define GIFLIB_MAJOR 4
+# endif
 
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
 
 /* GIF library details.  */
-#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
-DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *, int *));
-#else
-DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
-#endif
-DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
-#if GIFLIB_MAJOR < 5
-DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
-DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *));
-#else
-DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc, int *));
-DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *, int *));
-DEF_IMGLIB_FN (char *, GifErrorString, (int));
-#endif
+#  if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
+DEF_DLL_FN (int, DGifCloseFile, (GifFileType *, int *));
+#   else
+DEF_DLL_FN (int, DGifCloseFile, (GifFileType *));
+#  endif
+DEF_DLL_FN (int, DGifSlurp, (GifFileType *));
+#  if GIFLIB_MAJOR < 5
+DEF_DLL_FN (GifFileType *, DGifOpen, (void *, InputFunc));
+DEF_DLL_FN (GifFileType *, DGifOpenFileName, (const char *));
+#  else
+DEF_DLL_FN (GifFileType *, DGifOpen, (void *, InputFunc, int *));
+DEF_DLL_FN (GifFileType *, DGifOpenFileName, (const char *, int *));
+DEF_DLL_FN (char *, GifErrorString, (int));
+#  endif
 
 static bool
 init_gif_functions (void)
@@ -7283,27 +7310,29 @@ init_gif_functions (void)
   if (!(library = w32_delayed_load (Qgif)))
     return 0;
 
-  LOAD_IMGLIB_FN (library, DGifCloseFile);
-  LOAD_IMGLIB_FN (library, DGifSlurp);
-  LOAD_IMGLIB_FN (library, DGifOpen);
-  LOAD_IMGLIB_FN (library, DGifOpenFileName);
-#if GIFLIB_MAJOR >= 5
-  LOAD_IMGLIB_FN (library, GifErrorString);
-#endif
+  LOAD_DLL_FN (library, DGifCloseFile);
+  LOAD_DLL_FN (library, DGifSlurp);
+  LOAD_DLL_FN (library, DGifOpen);
+  LOAD_DLL_FN (library, DGifOpenFileName);
+#  if GIFLIB_MAJOR >= 5
+  LOAD_DLL_FN (library, GifErrorString);
+#  endif
   return 1;
 }
 
-#else
+#  undef DGifCloseFile
+#  undef DGifOpen
+#  undef DGifOpenFileName
+#  undef DGifSlurp
+#  undef GifErrorString
 
-#define fn_DGifCloseFile       DGifCloseFile
-#define fn_DGifSlurp           DGifSlurp
-#define fn_DGifOpen            DGifOpen
-#define fn_DGifOpenFileName    DGifOpenFileName
-#if 5 <= GIFLIB_MAJOR
-# define fn_GifErrorString     GifErrorString
-#endif
+#  define DGifCloseFile fn_DGifCloseFile
+#  define DGifOpen fn_DGifOpen
+#  define DGifOpenFileName fn_DGifOpenFileName
+#  define DGifSlurp fn_DGifSlurp
+#  define GifErrorString fn_GifErrorString
 
-#endif /* WINDOWSNT */
+# endif /* WINDOWSNT */
 
 /* Reading a GIF image from memory
    Based on the PNG memory stuff to a certain extent. */
@@ -7340,9 +7369,9 @@ gif_close (GifFileType *gif, int *err)
   int retval;
 
 #if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
-  retval = fn_DGifCloseFile (gif, err);
+  retval = DGifCloseFile (gif, err);
 #else
-  retval = fn_DGifCloseFile (gif);
+  retval = DGifCloseFile (gif);
 #if GIFLIB_MAJOR >= 5
   if (err)
     *err = gif->Error;
@@ -7390,18 +7419,18 @@ gif_load (struct frame *f, struct image *img)
 
       /* Open the GIF file.  */
 #if GIFLIB_MAJOR < 5
-      gif = fn_DGifOpenFileName (SSDATA (file));
+      gif = DGifOpenFileName (SSDATA (file));
       if (gif == NULL)
        {
          image_error ("Cannot open `%s'", file, Qnil);
          return 0;
        }
 #else
-      gif = fn_DGifOpenFileName (SSDATA (file), &gif_err);
+      gif = DGifOpenFileName (SSDATA (file), &gif_err);
       if (gif == NULL)
        {
          image_error ("Cannot open `%s': %s",
-                      file, build_string (fn_GifErrorString (gif_err)));
+                      file, build_string (GifErrorString (gif_err)));
          return 0;
        }
 #endif
@@ -7421,18 +7450,18 @@ gif_load (struct frame *f, struct image *img)
       memsrc.index = 0;
 
 #if GIFLIB_MAJOR < 5
-      gif = fn_DGifOpen (&memsrc, gif_read_from_memory);
+      gif = DGifOpen (&memsrc, gif_read_from_memory);
       if (!gif)
        {
          image_error ("Cannot open memory source `%s'", img->spec, Qnil);
          return 0;
        }
 #else
-      gif = fn_DGifOpen (&memsrc, gif_read_from_memory, &gif_err);
+      gif = DGifOpen (&memsrc, gif_read_from_memory, &gif_err);
       if (!gif)
        {
          image_error ("Cannot open memory source `%s': %s",
-                      img->spec, build_string (fn_GifErrorString (gif_err)));
+                      img->spec, build_string (GifErrorString (gif_err)));
          return 0;
        }
 #endif
@@ -7447,7 +7476,7 @@ gif_load (struct frame *f, struct image *img)
     }
 
   /* Read entire contents.  */
-  rc = fn_DGifSlurp (gif);
+  rc = DGifSlurp (gif);
   if (rc == GIF_ERROR || gif->ImageCount <= 0)
     {
       image_error ("Error reading `%s'", img->spec, Qnil);
@@ -7681,7 +7710,7 @@ gif_load (struct frame *f, struct image *img)
   if (gif_close (gif, &gif_err) == GIF_ERROR)
     {
 #if 5 <= GIFLIB_MAJOR
-      char *error_text = fn_GifErrorString (gif_err);
+      char *error_text = GifErrorString (gif_err);
 
       if (error_text)
        image_error ("Error closing `%s': %s",
@@ -8593,7 +8622,7 @@ and `imagemagick-types-inhibit'.  */)
                                 SVG
  ***********************************************************************/
 
-#if defined (HAVE_RSVG)
+#ifdef HAVE_RSVG
 
 /* Function prototypes.  */
 
@@ -8641,11 +8670,11 @@ static const struct image_keyword svg_format[SVG_LAST] =
   {":background",      IMAGE_STRING_OR_NIL_VALUE,              0}
 };
 
-#if defined HAVE_NTGUI && defined WINDOWSNT
+# if defined HAVE_NTGUI && defined WINDOWSNT
 static bool init_svg_functions (void);
-#else
+# else
 #define init_svg_functions NULL
-#endif
+# endif
 
 /* Structure describing the image type `svg'.  Its the same type of
    structure defined for all image formats, handled by emacs image
@@ -8679,32 +8708,34 @@ svg_image_p (Lisp_Object object)
   return fmt[SVG_FILE].count + fmt[SVG_DATA].count == 1;
 }
 
-#include <librsvg/rsvg.h>
+# include <librsvg/rsvg.h>
 
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
 
 /* SVG library functions.  */
-DEF_IMGLIB_FN (RsvgHandle *, rsvg_handle_new, (void));
-DEF_IMGLIB_FN (void, rsvg_handle_get_dimensions, (RsvgHandle *, 
RsvgDimensionData *));
-DEF_IMGLIB_FN (gboolean, rsvg_handle_write, (RsvgHandle *, const guchar *, 
gsize, GError **));
-DEF_IMGLIB_FN (gboolean, rsvg_handle_close, (RsvgHandle *, GError **));
-DEF_IMGLIB_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *));
-DEF_IMGLIB_FN (void, rsvg_handle_set_base_uri, (RsvgHandle *, const char *));
-
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_width, (const GdkPixbuf *));
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_height, (const GdkPixbuf *));
-DEF_IMGLIB_FN (guchar *, gdk_pixbuf_get_pixels, (const GdkPixbuf *));
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_rowstride, (const GdkPixbuf *));
-DEF_IMGLIB_FN (GdkColorspace, gdk_pixbuf_get_colorspace, (const GdkPixbuf *));
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_n_channels, (const GdkPixbuf *));
-DEF_IMGLIB_FN (gboolean, gdk_pixbuf_get_has_alpha, (const GdkPixbuf *));
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_bits_per_sample, (const GdkPixbuf *));
-
-#if ! GLIB_CHECK_VERSION (2, 36, 0)
-DEF_IMGLIB_FN (void, g_type_init, (void));
-#endif
-DEF_IMGLIB_FN (void, g_object_unref, (gpointer));
-DEF_IMGLIB_FN (void, g_error_free, (GError *));
+DEF_DLL_FN (RsvgHandle *, rsvg_handle_new, (void));
+DEF_DLL_FN (void, rsvg_handle_get_dimensions,
+           (RsvgHandle *, RsvgDimensionData *));
+DEF_DLL_FN (gboolean, rsvg_handle_write,
+           (RsvgHandle *, const guchar *, gsize, GError **));
+DEF_DLL_FN (gboolean, rsvg_handle_close, (RsvgHandle *, GError **));
+DEF_DLL_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *));
+DEF_DLL_FN (void, rsvg_handle_set_base_uri, (RsvgHandle *, const char *));
+
+DEF_DLL_FN (int, gdk_pixbuf_get_width, (const GdkPixbuf *));
+DEF_DLL_FN (int, gdk_pixbuf_get_height, (const GdkPixbuf *));
+DEF_DLL_FN (guchar *, gdk_pixbuf_get_pixels, (const GdkPixbuf *));
+DEF_DLL_FN (int, gdk_pixbuf_get_rowstride, (const GdkPixbuf *));
+DEF_DLL_FN (GdkColorspace, gdk_pixbuf_get_colorspace, (const GdkPixbuf *));
+DEF_DLL_FN (int, gdk_pixbuf_get_n_channels, (const GdkPixbuf *));
+DEF_DLL_FN (gboolean, gdk_pixbuf_get_has_alpha, (const GdkPixbuf *));
+DEF_DLL_FN (int, gdk_pixbuf_get_bits_per_sample, (const GdkPixbuf *));
+
+#  if ! GLIB_CHECK_VERSION (2, 36, 0)
+DEF_DLL_FN (void, g_type_init, (void));
+#  endif
+DEF_DLL_FN (void, g_object_unref, (gpointer));
+DEF_DLL_FN (void, g_error_free, (GError *));
 
 Lisp_Object Qgdk_pixbuf, Qglib, Qgobject;
 
@@ -8724,56 +8755,71 @@ init_svg_functions (void)
       return 0;
     }
 
-  LOAD_IMGLIB_FN (library, rsvg_handle_new);
-  LOAD_IMGLIB_FN (library, rsvg_handle_get_dimensions);
-  LOAD_IMGLIB_FN (library, rsvg_handle_write);
-  LOAD_IMGLIB_FN (library, rsvg_handle_close);
-  LOAD_IMGLIB_FN (library, rsvg_handle_get_pixbuf);
-  LOAD_IMGLIB_FN (library, rsvg_handle_set_base_uri);
-
-  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_width);
-  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_height);
-  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_pixels);
-  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_rowstride);
-  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_colorspace);
-  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_n_channels);
-  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_has_alpha);
-  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_bits_per_sample);
-
-#if ! GLIB_CHECK_VERSION (2, 36, 0)
-  LOAD_IMGLIB_FN (gobject, g_type_init);
-#endif
-  LOAD_IMGLIB_FN (gobject, g_object_unref);
-  LOAD_IMGLIB_FN (glib, g_error_free);
+  LOAD_DLL_FN (library, rsvg_handle_new);
+  LOAD_DLL_FN (library, rsvg_handle_get_dimensions);
+  LOAD_DLL_FN (library, rsvg_handle_write);
+  LOAD_DLL_FN (library, rsvg_handle_close);
+  LOAD_DLL_FN (library, rsvg_handle_get_pixbuf);
+  LOAD_DLL_FN (library, rsvg_handle_set_base_uri);
+
+  LOAD_DLL_FN (gdklib, gdk_pixbuf_get_width);
+  LOAD_DLL_FN (gdklib, gdk_pixbuf_get_height);
+  LOAD_DLL_FN (gdklib, gdk_pixbuf_get_pixels);
+  LOAD_DLL_FN (gdklib, gdk_pixbuf_get_rowstride);
+  LOAD_DLL_FN (gdklib, gdk_pixbuf_get_colorspace);
+  LOAD_DLL_FN (gdklib, gdk_pixbuf_get_n_channels);
+  LOAD_DLL_FN (gdklib, gdk_pixbuf_get_has_alpha);
+  LOAD_DLL_FN (gdklib, gdk_pixbuf_get_bits_per_sample);
+
+#  if ! GLIB_CHECK_VERSION (2, 36, 0)
+  LOAD_DLL_FN (gobject, g_type_init);
+#  endif
+  LOAD_DLL_FN (gobject, g_object_unref);
+  LOAD_DLL_FN (glib, g_error_free);
 
   return 1;
 }
 
-#else
 /* The following aliases for library functions allow dynamic loading
    to be used on some platforms.  */
-#define fn_rsvg_handle_new             rsvg_handle_new
-#define fn_rsvg_handle_get_dimensions   rsvg_handle_get_dimensions
-#define fn_rsvg_handle_write           rsvg_handle_write
-#define fn_rsvg_handle_close           rsvg_handle_close
-#define fn_rsvg_handle_get_pixbuf      rsvg_handle_get_pixbuf
-#define fn_rsvg_handle_set_base_uri    rsvg_handle_set_base_uri
-
-#define fn_gdk_pixbuf_get_width                  gdk_pixbuf_get_width
-#define fn_gdk_pixbuf_get_height         gdk_pixbuf_get_height
-#define fn_gdk_pixbuf_get_pixels         gdk_pixbuf_get_pixels
-#define fn_gdk_pixbuf_get_rowstride      gdk_pixbuf_get_rowstride
-#define fn_gdk_pixbuf_get_colorspace     gdk_pixbuf_get_colorspace
-#define fn_gdk_pixbuf_get_n_channels     gdk_pixbuf_get_n_channels
-#define fn_gdk_pixbuf_get_has_alpha      gdk_pixbuf_get_has_alpha
-#define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample
 
-#if ! GLIB_CHECK_VERSION (2, 36, 0)
-#define fn_g_type_init                    g_type_init
-#endif
-#define fn_g_object_unref                 g_object_unref
-#define fn_g_error_free                   g_error_free
-#endif /* !WINDOWSNT  */
+#  undef gdk_pixbuf_get_bits_per_sample
+#  undef gdk_pixbuf_get_colorspace
+#  undef gdk_pixbuf_get_has_alpha
+#  undef gdk_pixbuf_get_height
+#  undef gdk_pixbuf_get_n_channels
+#  undef gdk_pixbuf_get_pixels
+#  undef gdk_pixbuf_get_rowstride
+#  undef gdk_pixbuf_get_width
+#  undef g_error_free
+#  undef g_object_unref
+#  undef g_type_init
+#  undef rsvg_handle_close
+#  undef rsvg_handle_get_dimensions
+#  undef rsvg_handle_get_pixbuf
+#  undef rsvg_handle_new
+#  undef rsvg_handle_set_base_uri
+#  undef rsvg_handle_write
+
+#  define gdk_pixbuf_get_bits_per_sample fn_gdk_pixbuf_get_bits_per_sample
+#  define gdk_pixbuf_get_colorspace fn_gdk_pixbuf_get_colorspace
+#  define gdk_pixbuf_get_has_alpha fn_gdk_pixbuf_get_has_alpha
+#  define gdk_pixbuf_get_height fn_gdk_pixbuf_get_height
+#  define gdk_pixbuf_get_n_channels fn_gdk_pixbuf_get_n_channels
+#  define gdk_pixbuf_get_pixels fn_gdk_pixbuf_get_pixels
+#  define gdk_pixbuf_get_rowstride fn_gdk_pixbuf_get_rowstride
+#  define gdk_pixbuf_get_width fn_gdk_pixbuf_get_width
+#  define g_error_free fn_g_error_free
+#  define g_object_unref fn_g_object_unref
+#  define g_type_init fn_g_type_init
+#  define rsvg_handle_close fn_rsvg_handle_close
+#  define rsvg_handle_get_dimensions fn_rsvg_handle_get_dimensions
+#  define rsvg_handle_get_pixbuf fn_rsvg_handle_get_pixbuf
+#  define rsvg_handle_new fn_rsvg_handle_new
+#  define rsvg_handle_set_base_uri fn_rsvg_handle_set_base_uri
+#  define rsvg_handle_write fn_rsvg_handle_write
+
+# endif /* !WINDOWSNT  */
 
 /* Load SVG image IMG for use on frame F.  Value is true if
    successful.  */
@@ -8862,28 +8908,28 @@ svg_load_image (struct frame *f,         /* Pointer to 
emacs frame structure.  *
 #if ! GLIB_CHECK_VERSION (2, 36, 0)
   /* g_type_init is a glib function that must be called prior to
      using gnome type library functions (obsolete since 2.36.0).  */
-  fn_g_type_init ();
+  g_type_init ();
 #endif
 
   /* Make a handle to a new rsvg object.  */
-  rsvg_handle = fn_rsvg_handle_new ();
+  rsvg_handle = rsvg_handle_new ();
 
   /* Set base_uri for properly handling referenced images (via 'href').
      See rsvg bug 596114 - "image refs are relative to curdir, not .svg file"
      (https://bugzilla.gnome.org/show_bug.cgi?id=596114). */
   if (filename)
-    fn_rsvg_handle_set_base_uri(rsvg_handle, filename);
+    rsvg_handle_set_base_uri(rsvg_handle, filename);
 
   /* Parse the contents argument and fill in the rsvg_handle.  */
-  fn_rsvg_handle_write (rsvg_handle, contents, size, &err);
+  rsvg_handle_write (rsvg_handle, contents, size, &err);
   if (err) goto rsvg_error;
 
   /* The parsing is complete, rsvg_handle is ready to used, close it
      for further writes.  */
-  fn_rsvg_handle_close (rsvg_handle, &err);
+  rsvg_handle_close (rsvg_handle, &err);
   if (err) goto rsvg_error;
 
-  fn_rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
+  rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
   if (! check_image_size (f, dimension_data.width, dimension_data.height))
     {
       image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
@@ -8892,26 +8938,26 @@ svg_load_image (struct frame *f,         /* Pointer to 
emacs frame structure.  *
 
   /* We can now get a valid pixel buffer from the svg file, if all
      went ok.  */
-  pixbuf = fn_rsvg_handle_get_pixbuf (rsvg_handle);
+  pixbuf = rsvg_handle_get_pixbuf (rsvg_handle);
   if (!pixbuf) goto rsvg_error;
-  fn_g_object_unref (rsvg_handle);
+  g_object_unref (rsvg_handle);
 
   /* Extract some meta data from the svg handle.  */
-  width     = fn_gdk_pixbuf_get_width (pixbuf);
-  height    = fn_gdk_pixbuf_get_height (pixbuf);
-  pixels    = fn_gdk_pixbuf_get_pixels (pixbuf);
-  rowstride = fn_gdk_pixbuf_get_rowstride (pixbuf);
+  width     = gdk_pixbuf_get_width (pixbuf);
+  height    = gdk_pixbuf_get_height (pixbuf);
+  pixels    = gdk_pixbuf_get_pixels (pixbuf);
+  rowstride = gdk_pixbuf_get_rowstride (pixbuf);
 
   /* Validate the svg meta data.  */
-  eassert (fn_gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
-  eassert (fn_gdk_pixbuf_get_n_channels (pixbuf) == 4);
-  eassert (fn_gdk_pixbuf_get_has_alpha (pixbuf));
-  eassert (fn_gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
+  eassert (gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
+  eassert (gdk_pixbuf_get_n_channels (pixbuf) == 4);
+  eassert (gdk_pixbuf_get_has_alpha (pixbuf));
+  eassert (gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
 
   /* Try to create a x pixmap to hold the svg pixmap.  */
   if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0))
     {
-      fn_g_object_unref (pixbuf);
+      g_object_unref (pixbuf);
       return 0;
     }
 
@@ -8968,7 +9014,7 @@ svg_load_image (struct frame *f,         /* Pointer to 
emacs frame structure.  *
   free_color_table ();
 #endif /* COLOR_TABLE_SUPPORT */
 
-  fn_g_object_unref (pixbuf);
+  g_object_unref (pixbuf);
 
   img->width  = width;
   img->height = height;
@@ -8983,11 +9029,11 @@ svg_load_image (struct frame *f,         /* Pointer to 
emacs frame structure.  *
   return 1;
 
  rsvg_error:
-  fn_g_object_unref (rsvg_handle);
+  g_object_unref (rsvg_handle);
   /* FIXME: Use error->message so the user knows what is the actual
      problem with the image.  */
   image_error ("Error parsing SVG image `%s'", img->spec, Qnil);
-  fn_g_error_free (err);
+  g_error_free (err);
   return 0;
 }
 
diff --git a/src/keyboard.c b/src/keyboard.c
index d76a8fc..5b66050 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -276,7 +276,7 @@ bool input_pending;
 /* True if more input was available last time we read an event.
 
    Since redisplay can take a significant amount of time and is not
-   indispensible to perform the user's commands, when input arrives
+   indispensable to perform the user's commands, when input arrives
    "too fast", Emacs skips redisplay.  More specifically, if the next
    command has already been input when we finish the previous command,
    we skip the intermediate redisplay.
diff --git a/src/nsimage.m b/src/nsimage.m
index 640dfcb..d5c0647 100644
--- a/src/nsimage.m
+++ b/src/nsimage.m
@@ -351,15 +351,15 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
     {
       if ([rep respondsToSelector: @selector (getBitmapDataPlanes:)])
         {
-          NSBitmapImageRep *bmRep = (NSBitmapImageRep *) rep;
+          NSBitmapImageRep *bmr = (NSBitmapImageRep *) rep;
 
-          if ([bmRep numberOfPlanes] >= 3)
-              [bmRep getBitmapDataPlanes: pixmapData];
+          if ([bmr numberOfPlanes] >= 3)
+              [bmr getBitmapDataPlanes: pixmapData];
 
           /* The next two lines cause the DPI of the image to be ignored.
              This seems to be the behavior users expect. */
           [self setScalesWhenResized: YES];
-          [self setSize: NSMakeSize([bmRep pixelsWide], [bmRep pixelsHigh])];
+          [self setSize: NSMakeSize([bmr pixelsWide], [bmr pixelsHigh])];
 
           break;
         }
diff --git a/src/tparam.c b/src/tparam.c
index e02cea3..b0cd004 100644
--- a/src/tparam.c
+++ b/src/tparam.c
@@ -255,9 +255,9 @@ tparam1 (const char *string, char *outstring, int len,
     }
   *op = 0;
   while (doup-- > 0)
-    strcat (op, up);
+    op = stpcpy (op, up);
   while (doleft-- > 0)
-    strcat (op, left);
+    op = stpcpy (op, left);
   return outstring;
 }
 
diff --git a/src/w32.c b/src/w32.c
index 8d8f536..6dea0c2 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -3405,10 +3405,10 @@ sys_readdir (DIR *dirp)
       int ln;
 
       strcpy (filename, dir_pathname);
-      ln = strlen (filename) - 1;
-      if (!IS_DIRECTORY_SEP (filename[ln]))
-       strcat (filename, "\\");
-      strcat (filename, "*");
+      ln = strlen (filename);
+      if (!IS_DIRECTORY_SEP (filename[ln - 1]))
+       filename[ln++] = '\\';
+      strcpy (filename + ln, "*");
 
       /* Note: No need to resolve symlinks in FILENAME, because
         FindFirst opens the directory that is the target of a
@@ -4969,7 +4969,7 @@ stat_worker (const char * path, struct stat * buf, int 
follow_symlinks)
        {
          /* Make sure root directories end in a slash.  */
          if (!IS_DIRECTORY_SEP (name[len-1]))
-           strcat (name, "\\");
+           strcpy (name + len, "\\");
          if (GetDriveType (name) < 2)
            {
              errno = ENOENT;
@@ -5438,8 +5438,7 @@ symlink (char const *filename, char const *linkname)
        p--;
       if (p > linkfn)
        strncpy (tem, linkfn, p - linkfn);
-      tem[p - linkfn] = '\0';
-      strcat (tem, filename);
+      strcpy (tem + (p - linkfn), filename);
       dir_access = faccessat (AT_FDCWD, tem, D_OK, AT_EACCESS);
     }
   else
diff --git a/src/w32.h b/src/w32.h
index e0aedcb..18e12b2 100644
--- a/src/w32.h
+++ b/src/w32.h
@@ -225,4 +225,17 @@ extern ssize_t emacs_gnutls_push (gnutls_transport_ptr_t p,
                                   const void* buf, size_t sz);
 #endif /* HAVE_GNUTLS */
 
+/* Definine a function that will be loaded from a DLL.  */
+#define DEF_DLL_FN(type, func, args) static type (FAR CDECL *fn_##func) args
+
+/* Load a function from the DLL.  */
+#define LOAD_DLL_FN(lib, func)                                         \
+  do                                                                   \
+    {                                                                  \
+      fn_##func = (void *) GetProcAddress (lib, #func);                        
\
+      if (!fn_##func)                                                  \
+       return false;                                                   \
+    }                                                                  \
+  while (false)
+
 #endif /* EMACS_W32_H */
diff --git a/src/w32menu.c b/src/w32menu.c
index 6633ffd..287062c 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -1256,9 +1256,9 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item)
       if (wv->key != NULL)
        {
          out_string = SAFE_ALLOCA (strlen (wv->name) + strlen (wv->key) + 2);
-         strcpy (out_string, wv->name);
-         strcat (out_string, "\t");
-         strcat (out_string, wv->key);
+         p = stpcpy (out_string, wv->name);
+         p = stpcpy (p, "\t");
+         strcpy (p, wv->key);
        }
       else
        out_string = (char *)wv->name;
diff --git a/src/w32proc.c b/src/w32proc.c
index 09e0c05..c571726 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -1665,10 +1665,7 @@ sys_spawnve (int mode, char *cmdname, char **argv, char 
**envp)
       if (egetenv ("CMDPROXY"))
        strcpy (cmdname, egetenv ("CMDPROXY"));
       else
-       {
-         lispstpcpy (cmdname, Vinvocation_directory);
-         strcat (cmdname, "cmdproxy.exe");
-       }
+       strcpy (lispstpcpy (cmdname, Vinvocation_directory), "cmdproxy.exe");
 
       /* Can't use unixtodos_filename here, since that needs its file
         name argument encoded in UTF-8.  */
@@ -3183,18 +3180,20 @@ get_lcid_callback (LPTSTR locale_num_str)
   if (GetLocaleInfo (try_lcid, LOCALE_SABBREVLANGNAME,
                     locval, LOCALE_NAME_MAX_LENGTH))
     {
+      size_t locval_len;
+
       /* This is for when they only specify the language, as in "ENU".  */
       if (stricmp (locval, lname) == 0)
        {
          found_lcid = try_lcid;
          return FALSE;
        }
-      strcat (locval, "_");
+      locval_len = strlen (locval);
+      strcpy (locval + locval_len, "_");
       if (GetLocaleInfo (try_lcid, LOCALE_SABBREVCTRYNAME,
-                        locval + strlen (locval), LOCALE_NAME_MAX_LENGTH))
+                        locval + locval_len + 1, LOCALE_NAME_MAX_LENGTH))
        {
-         size_t locval_len = strlen (locval);
-
+         locval_len = strlen (locval);
          if (strnicmp (locval, lname, locval_len) == 0
              && (lname[locval_len] == '.'
                  || lname[locval_len] == '\0'))
diff --git a/src/xdisp.c b/src/xdisp.c
index 0e3e1a2..e6bbd85 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -7332,27 +7332,15 @@ set_iterator_to_next (struct it *it, int reseat_p)
       else if (it->cmp_it.id >= 0)
        {
          /* We are currently getting glyphs from a composition.  */
-         int i;
-
          if (! it->bidi_p)
            {
              IT_CHARPOS (*it) += it->cmp_it.nchars;
              IT_BYTEPOS (*it) += it->cmp_it.nbytes;
-             if (it->cmp_it.to < it->cmp_it.nglyphs)
-               {
-                 it->cmp_it.from = it->cmp_it.to;
-               }
-             else
-               {
-                 it->cmp_it.id = -1;
-                 composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it),
-                                               IT_BYTEPOS (*it),
-                                               it->end_charpos, Qnil);
-               }
            }
-         else if (! it->cmp_it.reversed_p)
+         else
            {
-             /* Composition created while scanning forward.  */
+             int i;
+
              /* Update IT's char/byte positions to point to the first
                 character of the next grapheme cluster, or to the
                 character visually after the current composition.  */
@@ -7360,52 +7348,34 @@ set_iterator_to_next (struct it *it, int reseat_p)
                bidi_move_to_visually_next (&it->bidi_it);
              IT_BYTEPOS (*it) = it->bidi_it.bytepos;
              IT_CHARPOS (*it) = it->bidi_it.charpos;
+           }
 
-             if (it->cmp_it.to < it->cmp_it.nglyphs)
-               {
-                 /* Proceed to the next grapheme cluster.  */
-                 it->cmp_it.from = it->cmp_it.to;
-               }
-             else
-               {
-                 /* No more grapheme clusters in this composition.
-                    Find the next stop position.  */
-                 ptrdiff_t stop = it->end_charpos;
-                 if (it->bidi_it.scan_dir < 0)
-                   /* Now we are scanning backward and don't know
-                      where to stop.  */
-                   stop = -1;
-                 composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it),
-                                               IT_BYTEPOS (*it), stop, Qnil);
-               }
+         if ((! it->bidi_p || ! it->cmp_it.reversed_p)
+             && it->cmp_it.to < it->cmp_it.nglyphs)
+           {
+             /* Composition created while scanning forward.  Proceed
+                to the next grapheme cluster.  */
+             it->cmp_it.from = it->cmp_it.to;
+           }
+         else if ((it->bidi_p && it->cmp_it.reversed_p)
+                  && it->cmp_it.from > 0)
+           {
+             /* Composition created while scanning backward.  Proceed
+                to the previous grapheme cluster.  */
+             it->cmp_it.to = it->cmp_it.from;
            }
          else
            {
-             /* Composition created while scanning backward.  */
-             /* Update IT's char/byte positions to point to the last
-                character of the previous grapheme cluster, or the
-                character visually after the current composition.  */
-             for (i = 0; i < it->cmp_it.nchars; i++)
-               bidi_move_to_visually_next (&it->bidi_it);
-             IT_BYTEPOS (*it) = it->bidi_it.bytepos;
-             IT_CHARPOS (*it) = it->bidi_it.charpos;
-             if (it->cmp_it.from > 0)
-               {
-                 /* Proceed to the previous grapheme cluster.  */
-                 it->cmp_it.to = it->cmp_it.from;
-               }
-             else
-               {
-                 /* No more grapheme clusters in this composition.
-                    Find the next stop position.  */
-                 ptrdiff_t stop = it->end_charpos;
-                 if (it->bidi_it.scan_dir < 0)
-                   /* Now we are scanning backward and don't know
-                      where to stop.  */
-                   stop = -1;
-                 composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it),
-                                               IT_BYTEPOS (*it), stop, Qnil);
-               }
+             /* No more grapheme clusters in this composition.
+                Find the next stop position.  */
+             ptrdiff_t stop = it->end_charpos;
+
+             if (it->bidi_it.scan_dir < 0)
+               /* Now we are scanning backward and don't know
+                  where to stop.  */
+               stop = -1;
+             composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it),
+                                           IT_BYTEPOS (*it), stop, Qnil);
            }
        }
       else
@@ -7534,61 +7504,63 @@ set_iterator_to_next (struct it *it, int reseat_p)
        }
       if (it->cmp_it.id >= 0)
        {
-         int i;
-
+         /* We are delivering display elements from a composition.
+            Update the string position past the grapheme cluster
+            we've just processed.  */
          if (! it->bidi_p)
            {
              IT_STRING_CHARPOS (*it) += it->cmp_it.nchars;
              IT_STRING_BYTEPOS (*it) += it->cmp_it.nbytes;
-             if (it->cmp_it.to < it->cmp_it.nglyphs)
-               it->cmp_it.from = it->cmp_it.to;
-             else
-               {
-                 it->cmp_it.id = -1;
-                 composition_compute_stop_pos (&it->cmp_it,
-                                               IT_STRING_CHARPOS (*it),
-                                               IT_STRING_BYTEPOS (*it),
-                                               it->end_charpos, it->string);
-               }
            }
-         else if (! it->cmp_it.reversed_p)
+         else
            {
+             int i;
+
              for (i = 0; i < it->cmp_it.nchars; i++)
                bidi_move_to_visually_next (&it->bidi_it);
              IT_STRING_BYTEPOS (*it) = it->bidi_it.bytepos;
              IT_STRING_CHARPOS (*it) = it->bidi_it.charpos;
+           }
 
-             if (it->cmp_it.to < it->cmp_it.nglyphs)
-               it->cmp_it.from = it->cmp_it.to;
-             else
-               {
-                 ptrdiff_t stop = it->end_charpos;
-                 if (it->bidi_it.scan_dir < 0)
-                   stop = -1;
-                 composition_compute_stop_pos (&it->cmp_it,
-                                               IT_STRING_CHARPOS (*it),
-                                               IT_STRING_BYTEPOS (*it), stop,
-                                               it->string);
-               }
+         /* Did we exhaust all the grapheme clusters of this
+            composition?  */
+         if ((! it->bidi_p || ! it->cmp_it.reversed_p)
+             && (it->cmp_it.to < it->cmp_it.nglyphs))
+           {
+             /* Not all the grapheme clusters were processed yet;
+                advance to the next cluster.  */
+             it->cmp_it.from = it->cmp_it.to;
+           }
+         else if ((it->bidi_p && it->cmp_it.reversed_p)
+                  && it->cmp_it.from > 0)
+           {
+             /* Likewise: advance to the next cluster, but going in
+                the reverse direction.  */
+             it->cmp_it.to = it->cmp_it.from;
            }
          else
            {
-             for (i = 0; i < it->cmp_it.nchars; i++)
-               bidi_move_to_visually_next (&it->bidi_it);
-             IT_STRING_BYTEPOS (*it) = it->bidi_it.bytepos;
-             IT_STRING_CHARPOS (*it) = it->bidi_it.charpos;
-             if (it->cmp_it.from > 0)
-               it->cmp_it.to = it->cmp_it.from;
-             else
+             /* This composition was fully processed; find the next
+                candidate place for checking for composed
+                characters.  */
+             /* Always limit string searches to the string length;
+                any padding spaces are not part of the string, and
+                there cannot be any compositions in that padding.  */
+             ptrdiff_t stop = SCHARS (it->string);
+
+             if (it->bidi_p && it->bidi_it.scan_dir < 0)
+               stop = -1;
+             else if (it->end_charpos < stop)
                {
-                 ptrdiff_t stop = it->end_charpos;
-                 if (it->bidi_it.scan_dir < 0)
-                   stop = -1;
-                 composition_compute_stop_pos (&it->cmp_it,
-                                               IT_STRING_CHARPOS (*it),
-                                               IT_STRING_BYTEPOS (*it), stop,
-                                               it->string);
+                 /* Cf. PRECISION in reseat_to_string: we might be
+                    limited in how many of the string characters we
+                    need to deliver.  */
+                 stop = it->end_charpos;
                }
+             composition_compute_stop_pos (&it->cmp_it,
+                                           IT_STRING_CHARPOS (*it),
+                                           IT_STRING_BYTEPOS (*it), stop,
+                                           it->string);
            }
        }
       else
@@ -7611,12 +7583,17 @@ set_iterator_to_next (struct it *it, int reseat_p)
              bidi_move_to_visually_next (&it->bidi_it);
              IT_STRING_BYTEPOS (*it) = it->bidi_it.bytepos;
              IT_STRING_CHARPOS (*it) = it->bidi_it.charpos;
+             /* If the scan direction changes, we may need to update
+                the place where to check for composed characters.  */
              if (prev_scan_dir != it->bidi_it.scan_dir)
                {
-                 ptrdiff_t stop = it->end_charpos;
+                 ptrdiff_t stop = SCHARS (it->string);
 
                  if (it->bidi_it.scan_dir < 0)
                    stop = -1;
+                 else if (it->end_charpos < stop)
+                   stop = it->end_charpos;
+
                  composition_compute_stop_pos (&it->cmp_it,
                                                IT_STRING_CHARPOS (*it),
                                                IT_STRING_BYTEPOS (*it), stop,
diff --git a/src/xfns.c b/src/xfns.c
index 1b17311..ba2601d 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1710,13 +1710,14 @@ xic_create_fontsetname (const char *base_fontname, int 
motif)
 {
   const char *sep = motif ? ";" : ",";
   char *fontsetname;
+  char *z;
 
   /* Make a fontset name from the base font name.  */
   if (xic_default_fontset == base_fontname)
     {
       /* There is no base font name, use the default.  */
       fontsetname = xmalloc (strlen (base_fontname) + 2);
-      strcpy (fontsetname, base_fontname);
+      z = stpcpy (fontsetname, base_fontname);
     }
   else
     {
@@ -1737,9 +1738,9 @@ xic_create_fontsetname (const char *base_fontname, int 
motif)
             Use the specified font plus the default.  */
          fontsetname = xmalloc (strlen (base_fontname)
                                 + strlen (xic_default_fontset) + 3);
-         strcpy (fontsetname, base_fontname);
-         strcat (fontsetname, sep);
-         strcat (fontsetname, xic_default_fontset);
+         z = stpcpy (fontsetname, base_fontname);
+         z = stpcpy (z, sep);
+         z = stpcpy (z, xic_default_fontset);
        }
       else
        {
@@ -1800,27 +1801,26 @@ xic_create_fontsetname (const char *base_fontname, int 
motif)
          /* Build the font spec that matches all.  */
          len = p - p2 + strlen (allcs) + strlen (all) + strlen (allfamilies) + 
1;
          font_all = alloca (len);
-         strcpy (font_all, allfamilies);
-         strcat (font_all, all);
-         memcpy (font_all + strlen (all) + strlen (allfamilies), p2, p - p2);
-         strcpy (font_all + strlen (all) + strlen (allfamilies) + (p - p2),
-                 allcs);
+         z = stpcpy (font_all, allfamilies);
+         z = stpcpy (z, all);
+         memcpy (z, p2, p - p2);
+         strcpy (z + (p - p2), allcs);
 
          /* Build the actual font set name.  */
          len = strlen (base_fontname) + strlen (font_allcs)
            + strlen (font_allfamilies) + strlen (font_all) + 5;
          fontsetname = xmalloc (len);
-         strcpy (fontsetname, base_fontname);
-         strcat (fontsetname, sep);
-         strcat (fontsetname, font_allcs);
-         strcat (fontsetname, sep);
-         strcat (fontsetname, font_allfamilies);
-         strcat (fontsetname, sep);
-         strcat (fontsetname, font_all);
+         z = stpcpy (fontsetname, base_fontname);
+         z = stpcpy (z, sep);
+         z = stpcpy (z, font_allcs);
+         z = stpcpy (z, sep);
+         z = stpcpy (z, font_allfamilies);
+         z = stpcpy (z, sep);
+         z = stpcpy (z, font_all);
        }
     }
   if (motif)
-    return strcat (fontsetname, ":");
+    strcpy (z, ":");
   return fontsetname;
 }
 #endif /* HAVE_X_WINDOWS && USE_X_TOOLKIT */
diff --git a/src/xml.c b/src/xml.c
index d418202..6be3bc7 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -33,26 +33,17 @@ static Lisp_Object Qlibxml2_dll;
 
 #ifdef WINDOWSNT
 
-#include <windows.h>
-#include "w32.h"
+# include <windows.h>
+# include "w32.h"
 
-/* Macro for defining functions that will be loaded from the libxml2 DLL.  */
-#define DEF_XML2_FN(rettype,func,args) static rettype (FAR CDECL 
*fn_##func)args
-
-/* Macro for loading libxml2 functions from the library.  */
-#define LOAD_XML2_FN(lib,func) {                                       \
-    fn_##func = (void *) GetProcAddress (lib, #func);                  \
-    if (!fn_##func) goto bad_library;                                  \
-  }
-
-DEF_XML2_FN (htmlDocPtr, htmlReadMemory,
+DEF_DLL_FN (htmlDocPtr, htmlReadMemory,
             (const char *, int, const char *, const char *, int));
-DEF_XML2_FN (xmlDocPtr, xmlReadMemory,
+DEF_DLL_FN (xmlDocPtr, xmlReadMemory,
             (const char *, int, const char *, const char *, int));
-DEF_XML2_FN (xmlNodePtr, xmlDocGetRootElement, (xmlDocPtr));
-DEF_XML2_FN (void, xmlFreeDoc, (xmlDocPtr));
-DEF_XML2_FN (void, xmlCleanupParser, (void));
-DEF_XML2_FN (void, xmlCheckVersion, (int));
+DEF_DLL_FN (xmlNodePtr, xmlDocGetRootElement, (xmlDocPtr));
+DEF_DLL_FN (void, xmlFreeDoc, (xmlDocPtr));
+DEF_DLL_FN (void, xmlCleanupParser, (void));
+DEF_DLL_FN (void, xmlCheckVersion, (int));
 
 static int
 libxml2_loaded_p (void)
@@ -64,14 +55,33 @@ libxml2_loaded_p (void)
   return 0;
 }
 
-#else  /* !WINDOWSNT */
+# undef htmlReadMemory
+# undef xmlCheckVersion
+# undef xmlCleanupParser
+# undef xmlDocGetRootElement
+# undef xmlFreeDoc
+# undef xmlReadMemory
+
+# define htmlReadMemory fn_htmlReadMemory
+# define xmlCheckVersion fn_xmlCheckVersion
+# define xmlCleanupParser fn_xmlCleanupParser
+# define xmlDocGetRootElement fn_xmlDocGetRootElement
+# define xmlFreeDoc fn_xmlFreeDoc
+# define xmlReadMemory fn_xmlReadMemory
+
+static bool
+load_dll_functions (HMODULE library)
+{
+  LOAD_DLL_FN (library, htmlReadMemory);
+  LOAD_DLL_FN (library, xmlReadMemory);
+  LOAD_DLL_FN (library, xmlDocGetRootElement);
+  LOAD_DLL_FN (library, xmlFreeDoc);
+  LOAD_DLL_FN (library, xmlCleanupParser);
+  LOAD_DLL_FN (library, xmlCheckVersion);
+  return true;
+}
 
-#define fn_htmlReadMemory       htmlReadMemory
-#define fn_xmlReadMemory        xmlReadMemory
-#define fn_xmlDocGetRootElement xmlDocGetRootElement
-#define fn_xmlFreeDoc           xmlFreeDoc
-#define fn_xmlCleanupParser     xmlCleanupParser
-#define fn_xmlCheckVersion      xmlCheckVersion
+#else  /* !WINDOWSNT */
 
 static int
 libxml2_loaded_p (void)
@@ -97,14 +107,8 @@ init_libxml2_functions (void)
          return 0;
        }
 
-      /* LOAD_XML2_FN jumps to bad_library if it fails to find the
-        named function.  */
-      LOAD_XML2_FN (library, htmlReadMemory);
-      LOAD_XML2_FN (library, xmlReadMemory);
-      LOAD_XML2_FN (library, xmlDocGetRootElement);
-      LOAD_XML2_FN (library, xmlFreeDoc);
-      LOAD_XML2_FN (library, xmlCleanupParser);
-      LOAD_XML2_FN (library, xmlCheckVersion);
+      if (! load_dll_functions (library))
+       goto bad_library;
 
       Vlibrary_cache = Fcons (Fcons (Qlibxml2_dll, Qt), Vlibrary_cache);
       return 1;
@@ -182,7 +186,7 @@ parse_region (Lisp_Object start, Lisp_Object end, 
Lisp_Object base_url, Lisp_Obj
   const char *burl = "";
   ptrdiff_t istart, iend, istart_byte, iend_byte;
 
-  fn_xmlCheckVersion (LIBXML_VERSION);
+  xmlCheckVersion (LIBXML_VERSION);
 
   validate_region (&start, &end);
 
@@ -201,16 +205,16 @@ parse_region (Lisp_Object start, Lisp_Object end, 
Lisp_Object base_url, Lisp_Obj
     }
 
   if (htmlp)
-    doc = fn_htmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
-                            iend_byte - istart_byte, burl, "utf-8",
-                            HTML_PARSE_RECOVER|HTML_PARSE_NONET|
-                            HTML_PARSE_NOWARNING|HTML_PARSE_NOERROR|
-                            HTML_PARSE_NOBLANKS);
+    doc = htmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
+                         iend_byte - istart_byte, burl, "utf-8",
+                         HTML_PARSE_RECOVER|HTML_PARSE_NONET|
+                         HTML_PARSE_NOWARNING|HTML_PARSE_NOERROR|
+                         HTML_PARSE_NOBLANKS);
   else
-    doc = fn_xmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
-                           iend_byte - istart_byte, burl, "utf-8",
-                           XML_PARSE_NONET|XML_PARSE_NOWARNING|
-                           XML_PARSE_NOBLANKS |XML_PARSE_NOERROR);
+    doc = xmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
+                        iend_byte - istart_byte, burl, "utf-8",
+                        XML_PARSE_NONET|XML_PARSE_NOWARNING|
+                        XML_PARSE_NOBLANKS |XML_PARSE_NOERROR);
 
   if (doc != NULL)
     {
@@ -232,14 +236,14 @@ parse_region (Lisp_Object start, Lisp_Object end, 
Lisp_Object base_url, Lisp_Obj
       if (NILP (result)) {
        /* The document doesn't have toplevel comments or we discarded
           them.  Get the tree the proper way. */
-       xmlNode *node = fn_xmlDocGetRootElement (doc);
+       xmlNode *node = xmlDocGetRootElement (doc);
        if (node != NULL)
          result = make_dom (node);
       } else
        result = Fcons (intern ("top"),
                        Fcons (Qnil, Fnreverse (Fcons (r, result))));
 
-      fn_xmlFreeDoc (doc);
+      xmlFreeDoc (doc);
     }
 
   return result;
@@ -249,7 +253,7 @@ void
 xml_cleanup_parser (void)
 {
   if (libxml2_loaded_p ())
-    fn_xmlCleanupParser ();
+    xmlCleanupParser ();
 }
 
 DEFUN ("libxml-parse-html-region", Flibxml_parse_html_region,
diff --git a/src/xrdb.c b/src/xrdb.c
index 32ad3c7..e21206d 100644
--- a/src/xrdb.c
+++ b/src/xrdb.c
@@ -232,9 +232,10 @@ gethomedir (void)
   if (ptr == NULL)
     return xstrdup ("/");
 
-  copy = xmalloc (strlen (ptr) + 2);
-  strcpy (copy, ptr);
-  return strcat (copy, "/");
+  ptrdiff_t len = strlen (ptr);
+  copy = xmalloc (len + 2);
+  strcpy (copy + len, "/");
+  return memcpy (copy, ptr, len);
 }
 
 
@@ -334,6 +335,7 @@ get_user_app (const char *class)
   return db;
 }
 
+static char const xdefaults[] = ".Xdefaults";
 
 static XrmDatabase
 get_user_db (Display *display)
@@ -351,16 +353,12 @@ get_user_db (Display *display)
     db = XrmGetStringDatabase (xdefs);
   else
     {
-      char *home;
-      char *xdefault;
-
-      home = gethomedir ();
-      xdefault = xmalloc (strlen (home) + sizeof ".Xdefaults");
-      strcpy (xdefault, home);
-      strcat (xdefault, ".Xdefaults");
-      db = XrmGetFileDatabase (xdefault);
-      xfree (home);
-      xfree (xdefault);
+      char *home = gethomedir ();
+      ptrdiff_t homelen = strlen (home);
+      char *filename = xrealloc (home, homelen + sizeof xdefaults);
+      strcpy (filename + homelen, xdefaults);
+      db = XrmGetFileDatabase (filename);
+      xfree (filename);
     }
 
 #ifdef HAVE_XSCREENRESOURCESTRING
@@ -380,24 +378,22 @@ static XrmDatabase
 get_environ_db (void)
 {
   XrmDatabase db;
-  char *p;
-  char *path = 0;
+  char *p = getenv ("XENVIRONMENT");
+  char *filename = 0;
 
-  if ((p = getenv ("XENVIRONMENT")) == NULL)
+  if (!p)
     {
-      static char const xdefaults[] = ".Xdefaults-";
       char *home = gethomedir ();
-      char const *host = SSDATA (Vsystem_name);
-      ptrdiff_t pathsize = (strlen (home) + sizeof xdefaults
-                           + SBYTES (Vsystem_name));
-      path = xrealloc (home, pathsize);
-      strcat (strcat (path, xdefaults), host);
-      p = path;
+      ptrdiff_t homelen = strlen (home);
+      ptrdiff_t filenamesize = (homelen + sizeof xdefaults
+                               + SBYTES (Vsystem_name));
+      p = filename = xrealloc (home, filenamesize);
+      lispstpcpy (stpcpy (filename + homelen, xdefaults), Vsystem_name);
     }
 
   db = XrmGetFileDatabase (p);
 
-  xfree (path);
+  xfree (filename);
 
   return db;
 }
diff --git a/src/xselect.c b/src/xselect.c
index 92e8982..3f8a132 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -46,9 +46,10 @@ struct prop_location;
 struct selection_data;
 
 static void x_decline_selection_request (struct input_event *);
-static int x_convert_selection (struct input_event *, Lisp_Object, Lisp_Object,
-                               Atom, int, struct x_display_info *);
-static int waiting_for_other_props_on_window (Display *, Window);
+static bool x_convert_selection (struct input_event *, Lisp_Object,
+                                Lisp_Object, Atom, bool,
+                                struct x_display_info *);
+static bool waiting_for_other_props_on_window (Display *, Window);
 static struct prop_location *expect_property_change (Display *, Window,
                                                      Atom, int);
 static void unexpect_property_change (struct prop_location *);
@@ -360,7 +361,7 @@ x_own_selection (Lisp_Object selection_name, Lisp_Object 
selection_value,
 
 static Lisp_Object
 x_get_local_selection (Lisp_Object selection_symbol, Lisp_Object target_type,
-                      int local_request, struct x_display_info *dpyinfo)
+                      bool local_request, struct x_display_info *dpyinfo)
 {
   Lisp_Object local_value;
   Lisp_Object handler_fn, value, check;
@@ -470,7 +471,7 @@ struct selection_data
   ptrdiff_t size;
   int format;
   Atom type;
-  int nofree;
+  bool nofree;
   Atom property;
   /* This can be set to non-NULL during x_reply_selection_request, if
      the selection is waiting for an INCR transfer to complete.  Don't
@@ -498,7 +499,7 @@ x_selection_request_lisp_error (void)
   for (cs = converted_selections; cs; cs = next)
     {
       next = cs->next;
-      if (cs->nofree == 0 && cs->data)
+      if (! cs->nofree && cs->data)
        xfree (cs->data);
       xfree (cs);
     }
@@ -531,7 +532,7 @@ struct prop_location
   Window window;
   Atom property;
   int desired_state;
-  int arrived;
+  bool arrived;
   struct prop_location *next;
 };
 
@@ -747,7 +748,7 @@ x_handle_selection_request (struct input_event *event)
   Lisp_Object target_symbol = x_atom_to_symbol (dpyinfo, target);
   Atom property = SELECTION_EVENT_PROPERTY (event);
   Lisp_Object local_selection_data;
-  int success = 0;
+  bool success = false;
   ptrdiff_t count = SPECPDL_INDEX ();
   GCPRO2 (local_selection_data, target_symbol);
 
@@ -805,9 +806,9 @@ x_handle_selection_request (struct input_event *event)
 
          if (subproperty != None)
            x_convert_selection (event, selection_symbol, subtarget,
-                                subproperty, 1, dpyinfo);
+                                subproperty, true, dpyinfo);
        }
-      success = 1;
+      success = true;
     }
   else
     {
@@ -815,7 +816,7 @@ x_handle_selection_request (struct input_event *event)
        property = SELECTION_EVENT_TARGET (event);
       success = x_convert_selection (event, selection_symbol,
                                     target_symbol, property,
-                                    0, dpyinfo);
+                                    false, dpyinfo);
     }
 
  DONE:
@@ -844,15 +845,15 @@ x_handle_selection_request (struct input_event *event)
 
 /* Perform the requested selection conversion, and write the data to
    the converted_selections linked list, where it can be accessed by
-   x_reply_selection_request.  If FOR_MULTIPLE is non-zero, write out
+   x_reply_selection_request.  If FOR_MULTIPLE, write out
    the data even if conversion fails, using conversion_fail_tag.
 
-   Return 0 if the selection failed to convert, 1 otherwise.  */
+   Return true iff successful.  */
 
-static int
+static bool
 x_convert_selection (struct input_event *event, Lisp_Object selection_symbol,
                     Lisp_Object target_symbol, Atom property,
-                    int for_multiple, struct x_display_info *dpyinfo)
+                    bool for_multiple, struct x_display_info *dpyinfo)
 {
   struct gcpro gcpro1;
   Lisp_Object lisp_selection;
@@ -861,7 +862,7 @@ x_convert_selection (struct input_event *event, Lisp_Object 
selection_symbol,
 
   lisp_selection
     = x_get_local_selection (selection_symbol, target_symbol,
-                            0, dpyinfo);
+                            false, dpyinfo);
 
   /* A nil return value means we can't perform the conversion.  */
   if (NILP (lisp_selection)
@@ -874,7 +875,7 @@ x_convert_selection (struct input_event *event, Lisp_Object 
selection_symbol,
          cs->size = 1;
          cs->format = 32;
          cs->type = XA_ATOM;
-         cs->nofree = 1;
+         cs->nofree = true;
          cs->property = property;
          cs->wait_object = NULL;
          cs->next = converted_selections;
@@ -882,20 +883,20 @@ x_convert_selection (struct input_event *event, 
Lisp_Object selection_symbol,
        }
 
       UNGCPRO;
-      return 0;
+      return false;
     }
 
   /* Otherwise, record the converted selection to binary.  */
   cs = xmalloc (sizeof *cs);
   cs->data = NULL;
-  cs->nofree = 1;
+  cs->nofree = true;
   cs->property = property;
   cs->wait_object = NULL;
   cs->next = converted_selections;
   converted_selections = cs;
   lisp_data_to_selection_data (dpyinfo, lisp_selection, cs);
   UNGCPRO;
-  return 1;
+  return true;
 }
 
 /* Handle a SelectionClear event EVENT, which indicates that some
@@ -1012,19 +1013,16 @@ x_clear_frame_selections (struct frame *f)
       }
 }
 
-/* Nonzero if any properties for DISPLAY and WINDOW
+/* True if any properties for DISPLAY and WINDOW
    are on the list of what we are waiting for.  */
 
-static int
+static bool
 waiting_for_other_props_on_window (Display *display, Window window)
 {
-  struct prop_location *rest = property_change_wait_list;
-  while (rest)
-    if (rest->display == display && rest->window == window)
-      return 1;
-    else
-      rest = rest->next;
-  return 0;
+  for (struct prop_location *p = property_change_wait_list; p; p = p->next)
+    if (p->display == display && p->window == window)
+      return true;
+  return false;
 }
 
 /* Add an entry to the list of property changes we are waiting for.
@@ -1043,7 +1041,7 @@ expect_property_change (Display *display, Window window,
   pl->property = property;
   pl->desired_state = state;
   pl->next = property_change_wait_list;
-  pl->arrived = 0;
+  pl->arrived = false;
   property_change_wait_list = pl;
   return pl;
 }
@@ -1106,7 +1104,7 @@ wait_for_property_change (struct prop_location *location)
       EMACS_INT secs = timeout / 1000;
       int nsecs = (timeout % 1000) * 1000000;
       TRACE2 ("  Waiting %"pI"d secs, %d nsecs", secs, nsecs);
-      wait_reading_process_output (secs, nsecs, 0, 0,
+      wait_reading_process_output (secs, nsecs, 0, false,
                                   property_change_reply, NULL, 0);
 
       if (NILP (XCAR (property_change_reply)))
@@ -1138,7 +1136,7 @@ x_handle_property_notify (const XPropertyEvent *event)
                  (event->state == PropertyDelete ? "deletion" : "change"),
                  XGetAtomName (event->display, event->atom));
 
-         rest->arrived = 1;
+         rest->arrived = true;
 
          /* If this is the one wait_for_property_change is waiting for,
             tell it to wake up.  */
@@ -1204,7 +1202,7 @@ x_get_foreign_selection (Lisp_Object selection_symbol, 
Lisp_Object target_type,
      during this time.  In fact, the SAVE_TARGETS mechanism requires
      us to handle a clipboard manager's requests before it returns
      SelectionNotify. */
-#if 0
+#if false
   x_start_queuing_selection_requests ();
   record_unwind_protect_void (x_stop_queuing_selection_requests);
 #endif
@@ -1216,7 +1214,7 @@ x_get_foreign_selection (Lisp_Object selection_symbol, 
Lisp_Object target_type,
   secs = timeout / 1000;
   nsecs = (timeout % 1000) * 1000000;
   TRACE1 ("  Start waiting %"pI"d secs for SelectionNotify", secs);
-  wait_reading_process_output (secs, nsecs, 0, 0,
+  wait_reading_process_output (secs, nsecs, 0, false,
                               reading_selection_reply, NULL, 0);
   TRACE1 ("  Got event = %d", !NILP (XCAR (reading_selection_reply)));
 
@@ -1240,7 +1238,7 @@ static void
 x_get_window_property (Display *display, Window window, Atom property,
                       unsigned char **data_ret, ptrdiff_t *bytes_ret,
                       Atom *actual_type_ret, int *actual_format_ret,
-                      unsigned long *actual_size_ret, int delete_p)
+                      unsigned long *actual_size_ret)
 {
   ptrdiff_t total_size;
   unsigned long bytes_remaining;
@@ -1413,7 +1411,7 @@ receive_incremental_selection (struct x_display_info 
*dpyinfo,
   XFlush (display);
   unblock_input ();
 
-  while (1)
+  while (true)
     {
       unsigned char *tmp_data;
       ptrdiff_t tmp_size_bytes;
@@ -1427,7 +1425,7 @@ receive_incremental_selection (struct x_display_info 
*dpyinfo,
       TRACE0 ("  Get property value");
       x_get_window_property (display, window, property,
                             &tmp_data, &tmp_size_bytes,
-                            type_ret, format_ret, size_ret, 1);
+                            type_ret, format_ret, size_ret);
 
       TRACE1 ("  Read increment of %"pD"d bytes", tmp_size_bytes);
 
@@ -1488,13 +1486,12 @@ x_get_window_property_as_lisp_data (struct 
x_display_info *dpyinfo,
   TRACE0 ("Reading selection data");
 
   x_get_window_property (display, window, property, &data, &bytes,
-                        &actual_type, &actual_format, &actual_size, 1);
+                        &actual_type, &actual_format, &actual_size);
   if (! data)
     {
-      int there_is_a_selection_owner;
       block_input ();
-      there_is_a_selection_owner
-       = XGetSelectionOwner (display, selection_atom);
+      bool there_is_a_selection_owner
+       = XGetSelectionOwner (display, selection_atom) != 0;
       unblock_input ();
       if (there_is_a_selection_owner)
        signal_error ("Selection owner couldn't convert",
@@ -1687,7 +1684,7 @@ lisp_data_to_selection_data (struct x_display_info 
*dpyinfo,
   Lisp_Object type = Qnil;
 
   eassert (cs != NULL);
-  cs->nofree = 0;
+  cs->nofree = false;
 
   if (CONSP (obj) && SYMBOLP (XCAR (obj)))
     {
@@ -1714,7 +1711,7 @@ lisp_data_to_selection_data (struct x_display_info 
*dpyinfo,
       cs->format = 8;
       cs->size = SBYTES (obj);
       cs->data = SDATA (obj);
-      cs->nofree = 1;
+      cs->nofree = true;
     }
   else if (SYMBOLP (obj))
     {
@@ -1981,7 +1978,7 @@ On Nextstep, TIME-STAMP and TERMINAL are unused.  */)
   if (!f)
     error ("X selection unavailable for this frame");
 
-  val = x_get_local_selection (selection_symbol, target_type, 1,
+  val = x_get_local_selection (selection_symbol, target_type, true,
                               FRAME_DISPLAY_INFO (f));
 
   if (NILP (val) && FRAME_LIVE_P (f))
@@ -2432,7 +2429,7 @@ FRAME is on.  If FRAME is nil, the selected frame is 
used.  */)
 
 /* Convert an XClientMessageEvent to a Lisp event of type DRAG_N_DROP_EVENT.  
*/
 
-int
+bool
 x_handle_dnd_message (struct frame *f, const XClientMessageEvent *event,
                       struct x_display_info *dpyinfo, struct input_event *bufp)
 {
@@ -2448,7 +2445,7 @@ x_handle_dnd_message (struct frame *f, const 
XClientMessageEvent *event,
   for (i = 0; i < dpyinfo->x_dnd_atoms_length; ++i)
     if (dpyinfo->x_dnd_atoms[i] == event->message_type) break;
 
-  if (i == dpyinfo->x_dnd_atoms_length) return 0;
+  if (i == dpyinfo->x_dnd_atoms_length) return false;
 
   XSETFRAME (frame, f);
 
@@ -2484,7 +2481,7 @@ x_handle_dnd_message (struct frame *f, const 
XClientMessageEvent *event,
   bufp->arg = vec;
   bufp->modifiers = 0;
 
-  return 1;
+  return true;
 }
 
 DEFUN ("x-send-client-message", Fx_send_client_message,
@@ -2535,7 +2532,7 @@ x_send_client_event (Lisp_Object display, Lisp_Object 
dest, Lisp_Object from,
   Window wdest;
   XEvent event;
   struct frame *f = decode_window_system_frame (from);
-  int to_root;
+  bool to_root;
 
   CHECK_NUMBER (format);
   CHECK_CONS (values);
@@ -2592,7 +2589,7 @@ x_send_client_event (Lisp_Object display, Lisp_Object 
dest, Lisp_Object from,
      event then goes to clients selecting for events on the root window.  */
   x_catch_errors (dpyinfo->display);
   {
-    int propagate = to_root ? False : True;
+    bool propagate = !to_root;
     long mask = to_root ? 0xffffff : 0;
 
     XSendEvent (dpyinfo->display, wdest, propagate, mask, &event);
diff --git a/src/xsettings.c b/src/xsettings.c
index 5f4275d..066f426 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -68,11 +68,11 @@ store_config_changed_event (Lisp_Object arg, Lisp_Object 
display_name)
   kbd_buffer_store_event (&event);
 }
 
-/* Return non-zero if DPYINFO is still valid.  */
-static int
+/* Return true if DPYINFO is still valid.  */
+static bool
 dpyinfo_valid (struct x_display_info *dpyinfo)
 {
-  int found = 0;
+  bool found = false;
   if (dpyinfo != NULL)
     {
       struct x_display_info *d;
@@ -404,7 +404,7 @@ parse_settings (unsigned char *prop,
 
   /* First 4 bytes is a serial number, skip that.  */
 
-  if (bytes < 12) return BadLength;
+  if (bytes < 12) return settings_seen;
   memcpy (&n_settings, prop+8, 4);
   if (my_bo != that_bo) n_settings = bswap_32 (n_settings);
   bytes_parsed = 12;
@@ -419,7 +419,7 @@ parse_settings (unsigned char *prop,
       CARD32 vlen, ival = 0;
       char name[128]; /* The names we are looking for are not this long.  */
       char sval[128]; /* The values we are looking for are not this long.  */
-      int want_this;
+      bool want_this;
       int to_cpy;
 
       sval[0] = '\0';
@@ -429,8 +429,8 @@ parse_settings (unsigned char *prop,
       memcpy (&nlen, prop+bytes_parsed, 2);
       bytes_parsed += 2;
       if (my_bo != that_bo) nlen = bswap_16 (nlen);
-      if (bytes_parsed+nlen > bytes) return BadLength;
-      to_cpy = nlen > 127 ? 127 : nlen;
+      if (bytes_parsed + nlen > bytes) return settings_seen;
+      to_cpy = min (nlen, sizeof name - 1);
       memcpy (name, prop+bytes_parsed, to_cpy);
       name[to_cpy] = '\0';
 
@@ -438,20 +438,19 @@ parse_settings (unsigned char *prop,
       bytes_parsed = PAD (bytes_parsed);
 
       bytes_parsed += 4; /* Skip serial for this value */
-      if (bytes_parsed > bytes) return BadLength;
+      if (bytes_parsed > bytes) return settings_seen;
 
-      want_this =
+      want_this = strcmp (XSETTINGS_TOOL_BAR_STYLE, name) == 0;
 #ifdef HAVE_XFT
-        (nlen > 6 && strncmp (name, "Xft/", 4) == 0)
-        || strcmp (XSETTINGS_FONT_NAME, name) == 0
-        ||
+      if ((nlen > 6 && memcmp (name, "Xft/", 4) == 0)
+         || strcmp (XSETTINGS_FONT_NAME, name) == 0)
+       want_this = true;
 #endif
-        strcmp (XSETTINGS_TOOL_BAR_STYLE, name) == 0;
 
       switch (type)
         {
         case 0: /* Integer */
-          if (bytes_parsed+4 > bytes) return BadLength;
+          if (bytes_parsed + 4 > bytes) return settings_seen;
           if (want_this)
             {
               memcpy (&ival, prop+bytes_parsed, 4);
@@ -461,13 +460,13 @@ parse_settings (unsigned char *prop,
           break;
 
         case 1: /* String */
-          if (bytes_parsed+4 > bytes) return BadLength;
+          if (bytes_parsed + 4 > bytes) return settings_seen;
           memcpy (&vlen, prop+bytes_parsed, 4);
           bytes_parsed += 4;
           if (my_bo != that_bo) vlen = bswap_32 (vlen);
           if (want_this)
             {
-              to_cpy = vlen > 127 ? 127 : vlen;
+              to_cpy = min (vlen, sizeof sval - 1);
               memcpy (sval, prop+bytes_parsed, to_cpy);
               sval[to_cpy] = '\0';
             }
@@ -477,17 +476,16 @@ parse_settings (unsigned char *prop,
 
         case 2: /* RGB value */
           /* No need to parse this */
-          if (bytes_parsed+8 > bytes) return BadLength;
+          if (bytes_parsed + 8 > bytes) return settings_seen;
           bytes_parsed += 8; /* 4 values (r, b, g, alpha), 2 bytes each.  */
           break;
 
         default: /* Parse Error */
-          return BadValue;
+          return settings_seen;
         }
 
       if (want_this)
         {
-          ++settings_seen;
           if (strcmp (name, XSETTINGS_TOOL_BAR_STYLE) == 0)
             {
               dupstring (&settings->tb_style, sval);
@@ -557,6 +555,9 @@ parse_settings (unsigned char *prop,
                 settings->seen &= ~SEEN_LCDFILTER;
             }
 #endif /* HAVE_XFT */
+         else
+           want_this = false;
+         settings_seen += want_this;
         }
     }
 
@@ -565,9 +566,9 @@ parse_settings (unsigned char *prop,
 
 /* Read settings from the XSettings property window on display for DPYINFO.
    Store settings read in SETTINGS.
-   Return non-zero if successful, zero if not.  */
+   Return true iff successful.  */
 
-static int
+static bool
 read_settings (struct x_display_info *dpyinfo, struct xsettings *settings)
 {
   Atom act_type;
@@ -576,6 +577,7 @@ read_settings (struct x_display_info *dpyinfo, struct 
xsettings *settings)
   unsigned char *prop = NULL;
   Display *dpy = dpyinfo->display;
   int rc;
+  bool got_settings = false;
 
   x_catch_errors (dpy);
   rc = XGetWindowProperty (dpy,
@@ -587,27 +589,26 @@ read_settings (struct x_display_info *dpyinfo, struct 
xsettings *settings)
 
   if (rc == Success && prop != NULL && act_form == 8 && nitems > 0
       && act_type == dpyinfo->Xatom_xsettings_prop)
-    rc = parse_settings (prop, nitems, settings);
+    got_settings = parse_settings (prop, nitems, settings) != 0;
 
   XFree (prop);
 
   x_uncatch_errors ();
 
-  return rc != 0;
+  return got_settings;
 }
 
 /* Apply Xft settings in SETTINGS to the Xft library.
-   If SEND_EVENT_P is non-zero store a Lisp event that Xft settings changed.  
*/
+   Store a Lisp event that Xft settings changed.  */
 
 static void
 apply_xft_settings (struct x_display_info *dpyinfo,
-                    int send_event_p,
                     struct xsettings *settings)
 {
 #ifdef HAVE_XFT
   FcPattern *pat;
   struct xsettings oldsettings;
-  int changed = 0;
+  bool changed = false;
 
   memset (&oldsettings, 0, sizeof (oldsettings));
   pat = FcPatternCreate ();
@@ -627,7 +628,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
     {
       FcPatternDel (pat, FC_ANTIALIAS);
       FcPatternAddBool (pat, FC_ANTIALIAS, settings->aa);
-      ++changed;
+      changed = true;
       oldsettings.aa = settings->aa;
     }
 
@@ -636,7 +637,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
     {
       FcPatternDel (pat, FC_HINTING);
       FcPatternAddBool (pat, FC_HINTING, settings->hinting);
-      ++changed;
+      changed = true;
       oldsettings.hinting = settings->hinting;
     }
   if ((settings->seen & SEEN_RGBA) != 0 && oldsettings.rgba != settings->rgba)
@@ -644,7 +645,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
       FcPatternDel (pat, FC_RGBA);
       FcPatternAddInteger (pat, FC_RGBA, settings->rgba);
       oldsettings.rgba = settings->rgba;
-      ++changed;
+      changed = true;
     }
 
   /* Older fontconfig versions don't have FC_LCD_FILTER. */
@@ -653,7 +654,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
     {
       FcPatternDel (pat, FC_LCD_FILTER);
       FcPatternAddInteger (pat, FC_LCD_FILTER, settings->lcdfilter);
-      ++changed;
+      changed = true;
       oldsettings.lcdfilter = settings->lcdfilter;
     }
 
@@ -663,7 +664,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
     {
       FcPatternDel (pat, FC_HINT_STYLE);
       FcPatternAddInteger (pat, FC_HINT_STYLE, settings->hintstyle);
-      ++changed;
+      changed = true;
       oldsettings.hintstyle = settings->hintstyle;
     }
 #endif
@@ -673,7 +674,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
     {
       FcPatternDel (pat, FC_DPI);
       FcPatternAddDouble (pat, FC_DPI, settings->dpi);
-      ++changed;
+      changed = true;
       oldsettings.dpi = settings->dpi;
 
       /* Changing the DPI on this display affects all frames on it.
@@ -699,9 +700,8 @@ apply_xft_settings (struct x_display_info *dpyinfo,
       char buf[sizeof format + d_formats * d_growth + lf_formats * lf_growth];
 
       XftDefaultSet (dpyinfo->display, pat);
-      if (send_event_p)
-        store_config_changed_event (Qfont_render,
-                                    XCAR (dpyinfo->name_list_element));
+      store_config_changed_event (Qfont_render,
+                                 XCAR (dpyinfo->name_list_element));
       Vxft_settings
        = make_formatted_string (buf, format,
                                 oldsettings.aa, oldsettings.hinting,
@@ -715,17 +715,17 @@ apply_xft_settings (struct x_display_info *dpyinfo,
 }
 
 /* Read XSettings from the display for DPYINFO.
-   If SEND_EVENT_P is non-zero store a Lisp event settings that changed.  */
+   If SEND_EVENT_P store a Lisp event settings that changed.  */
 
 static void
-read_and_apply_settings (struct x_display_info *dpyinfo, int send_event_p)
+read_and_apply_settings (struct x_display_info *dpyinfo, bool send_event_p)
 {
   struct xsettings settings;
 
   if (!read_settings (dpyinfo, &settings))
     return;
 
-  apply_xft_settings (dpyinfo, True, &settings);
+  apply_xft_settings (dpyinfo, &settings);
   if (settings.seen & SEEN_TB_STYLE)
     {
       if (send_event_p)
@@ -751,27 +751,27 @@ read_and_apply_settings (struct x_display_info *dpyinfo, 
int send_event_p)
 void
 xft_settings_event (struct x_display_info *dpyinfo, const XEvent *event)
 {
-  bool check_window_p = 0, apply_settings_p = 0;
+  bool check_window_p = false, apply_settings_p = false;
 
   switch (event->type)
     {
     case DestroyNotify:
       if (dpyinfo->xsettings_window == event->xany.window)
-        check_window_p = 1;
+        check_window_p = true;
       break;
 
     case ClientMessage:
       if (event->xclient.message_type == dpyinfo->Xatom_xsettings_mgr
           && event->xclient.data.l[1] == dpyinfo->Xatom_xsettings_sel
           && event->xclient.window == dpyinfo->root_window)
-        check_window_p = 1;
+        check_window_p = true;
       break;
 
     case PropertyNotify:
       if (event->xproperty.window == dpyinfo->xsettings_window
           && event->xproperty.state == PropertyNewValue
           && event->xproperty.atom == dpyinfo->Xatom_xsettings_prop)
-        apply_settings_p = 1;
+        apply_settings_p = true;
       break;
     }
 
@@ -781,11 +781,11 @@ xft_settings_event (struct x_display_info *dpyinfo, const 
XEvent *event)
       dpyinfo->xsettings_window = None;
       get_prop_window (dpyinfo);
       if (dpyinfo->xsettings_window != None)
-        apply_settings_p = 1;
+        apply_settings_p = true;
     }
 
   if (apply_settings_p)
-    read_and_apply_settings (dpyinfo, True);
+    read_and_apply_settings (dpyinfo, true);
 }
 
 /* Initialize GSettings and read startup values.  */
@@ -795,7 +795,7 @@ init_gsettings (void)
 {
 #ifdef HAVE_GSETTINGS
   GVariant *val;
-  int schema_found = 0;
+  bool schema_found = false;
 
 #if ! GLIB_CHECK_VERSION (2, 36, 0)
   g_type_init ();
@@ -937,7 +937,7 @@ init_xsettings (struct x_display_info *dpyinfo)
 
   get_prop_window (dpyinfo);
   if (dpyinfo->xsettings_window != None)
-    read_and_apply_settings (dpyinfo, False);
+    read_and_apply_settings (dpyinfo, false);
 
   unblock_input ();
 }
@@ -1030,7 +1030,7 @@ syms_of_xsettings (void)
 When this is non-nil and the system defined fixed width font changes, we
 update frames dynamically.
 If this variable is nil, Emacs ignores system font changes.  */);
-  use_system_font = 0;
+  use_system_font = false;
 
   DEFVAR_LISP ("xft-settings", Vxft_settings,
                doc: /* Font settings applied to Xft.  */);
diff --git a/src/xsmfns.c b/src/xsmfns.c
index cd4f9ce..a6c6985 100644
--- a/src/xsmfns.c
+++ b/src/xsmfns.c
@@ -53,7 +53,7 @@ static int ice_fd = -1;
 
 /* A flag that says if we are in shutdown interactions or not.  */
 
-static int doing_interact;
+static bool doing_interact;
 
 /* The session manager object for the session manager connection.  */
 
@@ -123,9 +123,9 @@ x_session_check_input (int fd, void *data)
     kbd_buffer_store_event (&emacs_event);
 }
 
-/* Return non-zero if we have a connection to a session manager.  */
+/* Return true if we have a connection to a session manager.  */
 
-int
+bool
 x_session_have_connection (void)
 {
   return ice_fd != -1;
@@ -138,7 +138,7 @@ x_session_have_connection (void)
 static void
 smc_interact_CB (SmcConn smcConn, SmPointer clientData)
 {
-  doing_interact = True;
+  doing_interact = true;
   emacs_event.kind = SAVE_SESSION_EVENT;
   emacs_event.arg = Qnil;
 }
@@ -230,8 +230,7 @@ smc_save_yourself_CB (SmcConn smcConn,
   props[props_idx]->vals[vp_idx++].value = emacs_program;
 
   smid_opt = xmalloc (strlen (SMID_OPT) + strlen (client_id) + 1);
-  strcpy (smid_opt, SMID_OPT);
-  strcat (smid_opt, client_id);
+  strcpy (stpcpy (smid_opt, SMID_OPT), client_id);
 
   props[props_idx]->vals[vp_idx].length = strlen (smid_opt);
   props[props_idx]->vals[vp_idx++].value = smid_opt;
@@ -242,8 +241,7 @@ smc_save_yourself_CB (SmcConn smcConn,
   if (cwd)
     {
       chdir_opt = xmalloc (strlen (CHDIR_OPT) + strlen (cwd) + 1);
-      strcpy (chdir_opt, CHDIR_OPT);
-      strcat (chdir_opt, cwd);
+      strcpy (stpcpy (chdir_opt, CHDIR_OPT), cwd);
 
       props[props_idx]->vals[vp_idx].length = strlen (chdir_opt);
       props[props_idx]->vals[vp_idx++].value = chdir_opt;
@@ -400,15 +398,15 @@ x_session_initialize (struct x_display_info *dpyinfo)
   ptrdiff_t name_len = 0;
 
   ice_fd = -1;
-  doing_interact = False;
+  doing_interact = false;
 
   /* Check if we where started by the session manager.  If so, we will
      have a previous id.  */
-  if (! EQ (Vx_session_previous_id, Qnil) && STRINGP (Vx_session_previous_id))
+  if (! NILP (Vx_session_previous_id) && STRINGP (Vx_session_previous_id))
     previous_id = SSDATA (Vx_session_previous_id);
 
   /* Construct the path to the Emacs program.  */
-  if (! EQ (Vinvocation_directory, Qnil))
+  if (! NILP (Vinvocation_directory))
     name_len += SBYTES (Vinvocation_directory);
   name_len += SBYTES (Vinvocation_name);
 
@@ -417,7 +415,7 @@ x_session_initialize (struct x_display_info *dpyinfo)
   emacs_program = xmalloc (name_len + 1);
   char *z = emacs_program;
 
-  if (! EQ (Vinvocation_directory, Qnil))
+  if (! NILP (Vinvocation_directory))
     z = lispstpcpy (z, Vinvocation_directory);
   lispstpcpy (z, Vinvocation_name);
 
@@ -491,21 +489,19 @@ is told to abort the window system shutdown.
 Do not call this function yourself. */)
   (Lisp_Object event)
 {
-  int kill_emacs = CONSP (event) && CONSP (XCDR (event))
-    && EQ (Qt, XCAR (XCDR (event)));
+  bool kill_emacs = (CONSP (event) && CONSP (XCDR (event))
+                    && EQ (Qt, XCAR (XCDR (event))));
 
   /* Check doing_interact so that we don't do anything if someone called
      this at the wrong time. */
   if (doing_interact && ! kill_emacs)
     {
-      Bool cancel_shutdown = False;
-
-      cancel_shutdown = ! EQ (call0 (intern ("emacs-session-save")), Qnil);
+      bool cancel_shutdown = ! NILP (call0 (intern ("emacs-session-save")));
 
       SmcInteractDone (smc_conn, cancel_shutdown);
       SmcSaveYourselfDone (smc_conn, True);
 
-      doing_interact = False;
+      doing_interact = false;
     }
   else if (kill_emacs)
     {
@@ -513,7 +509,7 @@ Do not call this function yourself. */)
          prevent.  Fix this in next version.  */
       Fkill_emacs (Qnil);
 
-#if 0
+#if false
       /* This will not be reached, but we want kill-emacs-hook to be run.  */
       SmcCloseConnection (smc_conn, 0, 0);
       ice_connection_closed ();
diff --git a/src/xterm.c b/src/xterm.c
index 0640208..130174d 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -9230,13 +9230,9 @@ do_ewmh_fullscreen (struct frame *f)
       switch (f->want_fullscreen)
         {
         case FULLSCREEN_BOTH:
-          if (cur == FULLSCREEN_WIDTH || cur == FULLSCREEN_MAXIMIZED
-              || cur == FULLSCREEN_HEIGHT)
-            set_wm_state (frame, false,
-                         dpyinfo->Xatom_net_wm_state_maximized_horz,
-                          dpyinfo->Xatom_net_wm_state_maximized_vert);
-          set_wm_state (frame, true,
-                       dpyinfo->Xatom_net_wm_state_fullscreen, None);
+          if (cur != FULLSCREEN_BOTH)
+            set_wm_state (frame, true, dpyinfo->Xatom_net_wm_state_fullscreen,
+                          None);
           break;
         case FULLSCREEN_WIDTH:
           if (cur == FULLSCREEN_BOTH || cur == FULLSCREEN_HEIGHT
diff --git a/src/xterm.h b/src/xterm.h
index 31c3261..13877d3 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -1049,10 +1049,10 @@ extern void x_send_client_event (Lisp_Object display,
                                  Lisp_Object format,
                                  Lisp_Object values);
 
-extern int x_handle_dnd_message (struct frame *,
-                                 const XClientMessageEvent *,
-                                 struct x_display_info *,
-                                 struct input_event *);
+extern bool x_handle_dnd_message (struct frame *,
+                                 const XClientMessageEvent *,
+                                 struct x_display_info *,
+                                 struct input_event *);
 extern int x_check_property_data (Lisp_Object);
 extern void x_fill_property_data (Display *,
                                   Lisp_Object,
@@ -1107,7 +1107,7 @@ extern void initialize_frame_menubar (struct frame *);
 /* Defined in xsmfns.c */
 #ifdef HAVE_X_SM
 extern void x_session_initialize (struct x_display_info *dpyinfo);
-extern int x_session_have_connection (void);
+extern bool x_session_have_connection (void);
 extern void x_session_close (void);
 #endif
 
diff --git a/test/ChangeLog b/test/ChangeLog
index 7d23b3e..2ea3254 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,72 @@
+2014-12-27  Glenn Morris  <address@hidden>
+
+       * automated/let-alist.el: Load dependency.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       * automated/python-tests.el
+       (python-shell-completion-native-interpreter-disabled-p-1): New
+       test.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       * automated/python-tests.el (python-shell-get-or-create-process-1)
+       (python-shell-get-or-create-process-2)
+       (python-shell-get-or-create-process-3): Remove tests.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       (python-shell-buffer-substring-9): New test.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       * automated/python-tests.el (python-shell-buffer-substring-1)
+       (python-shell-buffer-substring-2, python-shell-buffer-substring-3)
+       (python-shell-buffer-substring-4, python-shell-buffer-substring-5)
+       (python-shell-buffer-substring-6, python-shell-buffer-substring-7)
+       (python-shell-buffer-substring-8)
+       (python-info-encoding-from-cookie-1)
+       (python-info-encoding-from-cookie-2)
+       (python-info-encoding-from-cookie-3)
+       (python-info-encoding-from-cookie-4)
+       (python-info-encoding-from-cookie-5)
+       (python-info-encoding-from-cookie-6)
+       (python-info-encoding-from-cookie-7, python-info-encoding-1)
+       (python-info-encoding-2): New tests.
+
+2014-12-27  Michael Albinus  <address@hidden>
+
+       * automated/tramp-tests.el (tramp-test17-insert-directory): Do not
+       expect a given order of "." and "..".
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       * automated/python-tests.el (python-indent-electric-colon-2)
+       (python-indent-electric-colon-3): New tests.
+
+2014-12-27  João Távora  <address@hidden>
+
+       * automated/electric-tests.el (autowrapping-7): Tests for
+       tex-mode.
+
+2014-12-27  Glenn Morris  <address@hidden>
+
+       * automated/flymake/warnpred/test.pl: Tweak format, since the
+       previous one seems to have stopped giving a warning with perl 5.20.1.
+
+2014-12-26  Fabián Ezequiel Gallina  <address@hidden>
+
+       * automated/python-tests.el (python-shell-get-process-name-1)
+       (python-shell-internal-get-process-name-1): Cleanup.
+       (python-shell-get-process-name-2)
+       (python-shell-internal-get-process-name-2): New tests.
+       (python-shell-calculate-command-1)
+       (python-shell-calculate-process-environment-3)
+       (python-shell-calculate-exec-path-2, python-shell-make-comint-1)
+       (python-shell-make-comint-2, python-shell-make-comint-4)
+       (python-shell-get-process-1, python-util-clone-local-variables-1):
+       Replace obsolete function and variable references with current.
+
 2014-12-19  Artur Malabarba  <address@hidden>
 
        * automated/let-alist.el: require `cl-lib'
@@ -143,7 +212,7 @@
 
 2014-10-22  Noam Postavsky  <address@hidden>
 
-       * test/automated/process-tests.el (process-test-quoted-batfile):
+       * automated/process-tests.el (process-test-quoted-batfile):
        New test.
 
 2014-10-20  Glenn Morris  <address@hidden>
diff --git a/test/automated/data/flymake/test.pl 
b/test/automated/data/flymake/test.pl
index 2013b2e..d5abcb4 100644
--- a/test/automated/data/flymake/test.pl
+++ b/test/automated/data/flymake/test.pl
@@ -1,2 +1,2 @@
 @arr = [1,2,3,4];
address@hidden = -1;
+my $b = @arr[1];
diff --git a/test/automated/electric-tests.el b/test/automated/electric-tests.el
index b1908e6..cd07213 100644
--- a/test/automated/electric-tests.el
+++ b/test/automated/electric-tests.el
@@ -60,7 +60,7 @@
         (cl-progv
             (mapcar #'car bindings)
             (mapcar #'cdr bindings)
-          (self-insert-command 1))))
+          (call-interactively (key-binding `[,last-command-event])))))
     (should (equal (buffer-substring-no-properties (point-min) (point-max))
                    expected-string))
     (should (equal (point)
@@ -575,5 +575,14 @@ baz\"\""
                   (skip-chars-backward "\"")
                   (mark-sexp -1)))
 
+(define-electric-pair-test autowrapping-7
+  "foo" "\"" :expected-string "``foo''" :expected-point 8
+  :modes '(tex-mode)
+  :fixture-fn #'(lambda ()
+                  (electric-pair-mode 1)
+                  (goto-char (point-max))
+                  (skip-chars-backward "\"")
+                  (mark-sexp -1)))
+
 (provide 'electric-tests)
 ;;; electric-tests.el ends here
diff --git a/test/automated/let-alist.el b/test/automated/let-alist.el
index c43e6a0..a45864e 100644
--- a/test/automated/let-alist.el
+++ b/test/automated/let-alist.el
@@ -21,6 +21,7 @@
 
 (require 'ert)
 (require 'cl-lib)
+(require 'let-alist)
 
 (ert-deftest let-alist-surface-test ()
   "Tests basic macro expansion for `let-alist'."
@@ -62,7 +63,7 @@
       '(nil 1 1 2 nil)))))
 
 (ert-deftest let-alist-remove-dot ()
-  "Remove firt dot from symbol."
+  "Remove first dot from symbol."
   (should (equal (let-alist--remove-dot 'hi) 'hi))
   (should (equal (let-alist--remove-dot '.hi) 'hi))
   (should (equal (let-alist--remove-dot '..hi) '.hi)))
diff --git a/test/automated/python-tests.el b/test/automated/python-tests.el
index de20a80..ca43c45 100644
--- a/test/automated/python-tests.el
+++ b/test/automated/python-tests.el
@@ -740,6 +740,39 @@ def b()
    (python-tests-self-insert ":")
    (should (= (current-indentation) 0))))
 
+(ert-deftest python-indent-electric-colon-2 ()
+  "Test indentation case for dedenter."
+  (python-tests-with-temp-buffer
+   "
+if do:
+    something()
+    else
+"
+   (python-tests-look-at "else")
+   (goto-char (line-end-position))
+   (python-tests-self-insert ":")
+   (should (= (current-indentation) 0))))
+
+(ert-deftest python-indent-electric-colon-3 ()
+  "Test indentation case for multi-line dedenter."
+  (python-tests-with-temp-buffer
+   "
+if do:
+    something()
+    elif (this
+          and
+          that)
+"
+   (python-tests-look-at "that)")
+   (goto-char (line-end-position))
+   (python-tests-self-insert ":")
+   (python-tests-look-at "elif" -1)
+   (should (= (current-indentation) 0))
+   (python-tests-look-at "and")
+   (should (= (current-indentation) 6))
+   (python-tests-look-at "that)")
+   (should (= (current-indentation) 6))))
+
 (ert-deftest python-indent-region-1 ()
   "Test indentation case from Bug#18843."
   (let ((contents "
@@ -1775,52 +1808,41 @@ def f():
 (defvar python-tests-shell-interpreter "python")
 
 (ert-deftest python-shell-get-process-name-1 ()
-  "Check process name calculation on different scenarios."
+  "Check process name calculation sans `buffer-file-name'."
   (python-tests-with-temp-buffer
-      ""
-    (should (string= (python-shell-get-process-name nil)
-                     python-shell-buffer-name))
-    ;; When the `current-buffer' doesn't have `buffer-file-name', even
-    ;; if dedicated flag is non-nil should not include its name.
-    (should (string= (python-shell-get-process-name t)
-                     python-shell-buffer-name)))
+   ""
+   (should (string= (python-shell-get-process-name nil)
+                    python-shell-buffer-name))
+   (should (string= (python-shell-get-process-name t)
+                    (format "%s[%s]" python-shell-buffer-name 
(buffer-name))))))
+
+(ert-deftest python-shell-get-process-name-2 ()
+  "Check process name calculation with `buffer-file-name'."
   (python-tests-with-temp-file
-      ""
-    ;; `buffer-file-name' is non-nil but the dedicated flag is nil and
-    ;; should be respected.
-    (should (string= (python-shell-get-process-name nil)
-                     python-shell-buffer-name))
-    (should (string=
-             (python-shell-get-process-name t)
-             (format "%s[%s]" python-shell-buffer-name buffer-file-name)))))
+   ""
+   ;; `buffer-file-name' is non-nil but the dedicated flag is nil and
+   ;; should be respected.
+   (should (string= (python-shell-get-process-name nil)
+                    python-shell-buffer-name))
+   (should (string=
+            (python-shell-get-process-name t)
+            (format "%s[%s]" python-shell-buffer-name (buffer-name))))))
 
 (ert-deftest python-shell-internal-get-process-name-1 ()
-  "Check the internal process name is config-unique."
-  (let* ((python-shell-interpreter python-tests-shell-interpreter)
-         (python-shell-interpreter-args "")
-         (python-shell-prompt-regexp ">>> ")
-         (python-shell-prompt-block-regexp "[.][.][.] ")
-         (python-shell-setup-codes "")
-         (python-shell-process-environment "")
-         (python-shell-extra-pythonpaths "")
-         (python-shell-exec-path "")
-         (python-shell-virtualenv-path "")
-         (expected (python-tests-with-temp-buffer
-                       "" (python-shell-internal-get-process-name))))
-    ;; Same configurations should match.
-    (should
-     (string= expected
-              (python-tests-with-temp-buffer
-                  "" (python-shell-internal-get-process-name))))
-    (let ((python-shell-interpreter-args "-B"))
-      ;; A minimal change should generate different names.
-      (should
-       (not (string=
-             expected
-             (python-tests-with-temp-buffer
-                 "" (python-shell-internal-get-process-name))))))))
-
-(ert-deftest python-shell-parse-command-1 ()
+  "Check the internal process name is buffer-unique sans `buffer-file-name'."
+  (python-tests-with-temp-buffer
+   ""
+   (should (string= (python-shell-internal-get-process-name)
+                    (format "%s[%s]" python-shell-internal-buffer-name 
(buffer-name))))))
+
+(ert-deftest python-shell-internal-get-process-name-2 ()
+  "Check the internal process name is buffer-unique with `buffer-file-name'."
+  (python-tests-with-temp-file
+   ""
+   (should (string= (python-shell-internal-get-process-name)
+                    (format "%s[%s]" python-shell-internal-buffer-name 
(buffer-name))))))
+
+(ert-deftest python-shell-calculate-command-1 ()
   "Check the command to execute is calculated correctly.
 Using `python-shell-interpreter' and
 `python-shell-interpreter-args'."
@@ -1832,7 +1854,7 @@ Using `python-shell-interpreter' and
              (format "%s %s"
                      python-shell-interpreter
                      python-shell-interpreter-args)
-             (python-shell-parse-command)))))
+             (python-shell-calculate-command)))))
 
 (ert-deftest python-shell-calculate-process-environment-1 ()
   "Test `python-shell-process-environment' modification."
@@ -1857,17 +1879,17 @@ Using `python-shell-interpreter' and
                     path-separator original-pythonpath)))))
 
 (ert-deftest python-shell-calculate-process-environment-3 ()
-  "Test `python-shell-virtualenv-path' modification."
+  "Test `python-shell-virtualenv-root' modification."
   (let* ((original-path (or (getenv "PATH") ""))
-         (python-shell-virtualenv-path
+         (python-shell-virtualenv-root
           (directory-file-name user-emacs-directory))
          (process-environment
           (python-shell-calculate-process-environment)))
     (should (not (getenv "PYTHONHOME")))
-    (should (string= (getenv "VIRTUAL_ENV") python-shell-virtualenv-path))
+    (should (string= (getenv "VIRTUAL_ENV") python-shell-virtualenv-root))
     (should (equal (getenv "PATH")
                    (format "%s/bin%s%s"
-                           python-shell-virtualenv-path
+                           python-shell-virtualenv-root
                            path-separator original-path)))))
 
 (ert-deftest python-shell-calculate-process-environment-4 ()
@@ -1900,13 +1922,13 @@ Using `python-shell-interpreter' and
 (ert-deftest python-shell-calculate-exec-path-2 ()
   "Test `python-shell-exec-path' modification."
   (let* ((original-exec-path exec-path)
-         (python-shell-virtualenv-path
+         (python-shell-virtualenv-root
           (directory-file-name (expand-file-name user-emacs-directory)))
          (exec-path (python-shell-calculate-exec-path)))
     (should (equal
              exec-path
              (append (cons
-                      (format "%s/bin" python-shell-virtualenv-path)
+                      (format "%s/bin" python-shell-virtualenv-root)
                       original-exec-path))))))
 
 (ert-deftest python-shell-make-comint-1 ()
@@ -1922,7 +1944,7 @@ Using `python-shell-interpreter' and
          (shell-buffer
           (python-tests-with-temp-buffer
            "" (python-shell-make-comint
-               (python-shell-parse-command) proc-name)))
+               (python-shell-calculate-command) proc-name)))
          (process (get-buffer-process shell-buffer)))
     (unwind-protect
         (progn
@@ -1943,7 +1965,7 @@ Using `python-shell-interpreter' and
          (shell-buffer
           (python-tests-with-temp-buffer
            "" (python-shell-make-comint
-               (python-shell-parse-command) proc-name nil t)))
+               (python-shell-calculate-command) proc-name nil t)))
          (process (get-buffer-process shell-buffer)))
     (unwind-protect
         (progn
@@ -2010,7 +2032,7 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
             (setenv "PYTHONSTARTUP" startup-file)
             (python-tests-with-temp-buffer
              "" (python-shell-make-comint
-                 (python-shell-parse-command) proc-name nil))))
+                 (python-shell-calculate-command) proc-name nil))))
          (process (get-buffer-process shell-buffer)))
     (unwind-protect
         (progn
@@ -2040,10 +2062,10 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
            (dedicated-proc-name (python-shell-get-process-name t))
            (global-shell-buffer
             (python-shell-make-comint
-             (python-shell-parse-command) global-proc-name))
+             (python-shell-calculate-command) global-proc-name))
            (dedicated-shell-buffer
             (python-shell-make-comint
-             (python-shell-parse-command) dedicated-proc-name))
+             (python-shell-calculate-command) dedicated-proc-name))
            (global-process (get-buffer-process global-shell-buffer))
            (dedicated-process (get-buffer-process dedicated-shell-buffer)))
       (unwind-protect
@@ -2061,84 +2083,6 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
         (ignore-errors (kill-buffer global-shell-buffer))
         (ignore-errors (kill-buffer dedicated-shell-buffer))))))
 
-(ert-deftest python-shell-get-or-create-process-1 ()
-  "Check shell dedicated process creation."
-  (skip-unless (executable-find python-tests-shell-interpreter))
-  (python-tests-with-temp-file
-   ""
-   (let* ((cmd
-           (concat (executable-find python-tests-shell-interpreter) " -i"))
-          (use-dialog-box)
-          (dedicated-process-name (python-shell-get-process-name t))
-          (dedicated-process (python-shell-get-or-create-process cmd t))
-          (dedicated-shell-buffer (process-buffer dedicated-process)))
-     (unwind-protect
-         (progn
-           (set-process-query-on-exit-flag dedicated-process nil)
-           ;; should be dedicated.
-           (should (equal (process-name dedicated-process)
-                          dedicated-process-name))
-           (kill-buffer dedicated-shell-buffer)
-           ;; Check there are no processes for current buffer.
-           (should (not (python-shell-get-process))))
-       (ignore-errors (kill-buffer dedicated-shell-buffer))))))
-
-(ert-deftest python-shell-get-or-create-process-2 ()
-  "Check shell global process creation."
-  (skip-unless (executable-find python-tests-shell-interpreter))
-  (python-tests-with-temp-file
-   ""
-   (let* ((cmd
-           (concat (executable-find python-tests-shell-interpreter) " -i"))
-          (use-dialog-box)
-          (process-name (python-shell-get-process-name nil))
-          (process (python-shell-get-or-create-process cmd))
-          (shell-buffer (process-buffer process)))
-     (unwind-protect
-         (progn
-           (set-process-query-on-exit-flag process nil)
-           ;; should be global.
-           (should (equal (process-name process) process-name))
-           (kill-buffer shell-buffer)
-           ;; Check there are no processes for current buffer.
-           (should (not (python-shell-get-process))))
-       (ignore-errors (kill-buffer shell-buffer))))))
-
-(ert-deftest python-shell-get-or-create-process-3 ()
-  "Check shell dedicated/global process preference."
-  (skip-unless (executable-find python-tests-shell-interpreter))
-  (python-tests-with-temp-file
-   ""
-   (let* ((cmd
-           (concat (executable-find python-tests-shell-interpreter) " -i"))
-          (python-shell-interpreter python-tests-shell-interpreter)
-          (use-dialog-box)
-          (dedicated-process-name (python-shell-get-process-name t))
-          (global-process)
-          (dedicated-process))
-     (progn
-       ;; Create global process
-       (run-python cmd nil)
-       (setq global-process (get-buffer-process "*Python*"))
-       (should global-process)
-       (set-process-query-on-exit-flag global-process nil)
-       ;; Create dedicated process
-       (run-python cmd t)
-       (setq dedicated-process (get-process dedicated-process-name))
-       (should dedicated-process)
-       (set-process-query-on-exit-flag dedicated-process nil)
-       ;; Prefer dedicated.
-       (should (equal (python-shell-get-or-create-process)
-                      dedicated-process))
-       ;; Kill the dedicated so the global takes over.
-       (kill-buffer (process-buffer dedicated-process))
-       ;; Detect global.
-       (should (equal (python-shell-get-or-create-process) global-process))
-       ;; Kill the global.
-       (kill-buffer (process-buffer global-process))
-       ;; Check there are no processes for current buffer.
-       (should (not (python-shell-get-process)))))))
-
 (ert-deftest python-shell-internal-get-or-create-process-1 ()
   "Check internal shell process creation fallback."
   (skip-unless (executable-find python-tests-shell-interpreter))
@@ -2424,9 +2368,229 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
                            "^\\(o\\.t \\|\\)")))
       (ignore-errors (delete-file startup-file)))))
 
+(ert-deftest python-shell-buffer-substring-1 ()
+  "Selecting a substring of the whole buffer must match its contents."
+  (python-tests-with-temp-buffer
+   "
+class Foo(models.Model):
+    pass
+
+
+class Bar(models.Model):
+    pass
+"
+   (should (string= (buffer-string)
+                    (python-shell-buffer-substring (point-min) (point-max))))))
+
+(ert-deftest python-shell-buffer-substring-2 ()
+  "Main block should be removed if NOMAIN is non-nil."
+  (python-tests-with-temp-buffer
+   "
+class Foo(models.Model):
+    pass
+
+class Bar(models.Model):
+    pass
+
+if __name__ == \"__main__\":
+    foo = Foo()
+    print (foo)
+"
+   (should (string= (python-shell-buffer-substring (point-min) (point-max) t)
+                    "
+class Foo(models.Model):
+    pass
+
+class Bar(models.Model):
+    pass
+
+
+
+
+"))))
+
+(ert-deftest python-shell-buffer-substring-3 ()
+  "Main block should be removed if NOMAIN is non-nil."
+  (python-tests-with-temp-buffer
+   "
+class Foo(models.Model):
+    pass
+
+if __name__ == \"__main__\":
+    foo = Foo()
+    print (foo)
+
+class Bar(models.Model):
+    pass
+"
+   (should (string= (python-shell-buffer-substring (point-min) (point-max) t)
+                    "
+class Foo(models.Model):
+    pass
+
+
+
+
+
+class Bar(models.Model):
+    pass
+"))))
+
+(ert-deftest python-shell-buffer-substring-4 ()
+  "Coding cookie should be added for substrings."
+  (python-tests-with-temp-buffer
+   "# coding: latin-1
+
+class Foo(models.Model):
+    pass
+
+if __name__ == \"__main__\":
+    foo = Foo()
+    print (foo)
+
+class Bar(models.Model):
+    pass
+"
+   (should (string= (python-shell-buffer-substring
+                     (python-tests-look-at "class Foo(models.Model):")
+                     (progn (python-nav-forward-sexp) (point)))
+                    "# -*- coding: latin-1 -*-
+
+class Foo(models.Model):
+    pass"))))
+
+(ert-deftest python-shell-buffer-substring-5 ()
+  "The proper amount of blank lines is added for a substring."
+  (python-tests-with-temp-buffer
+   "# coding: latin-1
+
+class Foo(models.Model):
+    pass
+
+if __name__ == \"__main__\":
+    foo = Foo()
+    print (foo)
+
+class Bar(models.Model):
+    pass
+"
+   (should (string= (python-shell-buffer-substring
+                     (python-tests-look-at "class Bar(models.Model):")
+                     (progn (python-nav-forward-sexp) (point)))
+                    "# -*- coding: latin-1 -*-
+
+
+
+
+
+
+
+
+class Bar(models.Model):
+    pass"))))
+
+(ert-deftest python-shell-buffer-substring-6 ()
+  "Handle substring with coding cookie in the second line."
+  (python-tests-with-temp-buffer
+   "
+# coding: latin-1
+
+class Foo(models.Model):
+    pass
+
+if __name__ == \"__main__\":
+    foo = Foo()
+    print (foo)
+
+class Bar(models.Model):
+    pass
+"
+   (should (string= (python-shell-buffer-substring
+                     (python-tests-look-at "# coding: latin-1")
+                     (python-tests-look-at "if __name__ == \"__main__\":"))
+                    "# -*- coding: latin-1 -*-
+
+
+class Foo(models.Model):
+    pass
+
+"))))
+
+(ert-deftest python-shell-buffer-substring-7 ()
+  "Ensure first coding cookie gets precedence."
+  (python-tests-with-temp-buffer
+   "# coding: utf-8
+# coding: latin-1
+
+class Foo(models.Model):
+    pass
+
+if __name__ == \"__main__\":
+    foo = Foo()
+    print (foo)
+
+class Bar(models.Model):
+    pass
+"
+   (should (string= (python-shell-buffer-substring
+                     (python-tests-look-at "# coding: latin-1")
+                     (python-tests-look-at "if __name__ == \"__main__\":"))
+                    "# -*- coding: utf-8 -*-
+
+
+class Foo(models.Model):
+    pass
+
+"))))
+
+(ert-deftest python-shell-buffer-substring-8 ()
+  "Ensure first coding cookie gets precedence when sending whole buffer."
+  (python-tests-with-temp-buffer
+   "# coding: utf-8
+# coding: latin-1
+
+class Foo(models.Model):
+    pass
+"
+   (should (string= (python-shell-buffer-substring (point-min) (point-max))
+                    "# coding: utf-8
+
+
+class Foo(models.Model):
+    pass
+"))))
+
+(ert-deftest python-shell-buffer-substring-9 ()
+  "Check substring starting from `point-min'."
+  (python-tests-with-temp-buffer
+   "# coding: utf-8
+
+class Foo(models.Model):
+    pass
+
+class Bar(models.Model):
+    pass
+"
+   (should (string= (python-shell-buffer-substring
+                     (point-min)
+                     (python-tests-look-at "class Bar(models.Model):"))
+                    "# coding: utf-8
+
+class Foo(models.Model):
+    pass
+
+"))))
+
 
 ;;; Shell completion
 
+(ert-deftest python-shell-completion-native-interpreter-disabled-p-1 ()
+  (let* ((python-shell-completion-native-disabled-interpreters (list "pypy"))
+         (python-shell-interpreter "/some/path/to/bin/pypy"))
+    (should (python-shell-completion-native-interpreter-disabled-p))))
+
+
+
 
 ;;; PDB Track integration
 
@@ -3738,6 +3902,85 @@ foo = True  # another comment
    (forward-line 1)
    (should (python-info-current-line-empty-p))))
 
+(ert-deftest python-info-encoding-from-cookie-1 ()
+  "Should detect it on first line."
+  (python-tests-with-temp-buffer
+   "# coding=latin-1
+
+foo = True  # another comment
+"
+   (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-from-cookie-2 ()
+  "Should detect it on second line."
+  (python-tests-with-temp-buffer
+   "
+# coding=latin-1
+
+foo = True  # another comment
+"
+   (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-from-cookie-3 ()
+  "Should not be detected on third line (and following ones)."
+  (python-tests-with-temp-buffer
+   "
+
+# coding=latin-1
+foo = True  # another comment
+"
+   (should (not (python-info-encoding-from-cookie)))))
+
+(ert-deftest python-info-encoding-from-cookie-4 ()
+  "Should detect Emacs style."
+  (python-tests-with-temp-buffer
+   "# -*- coding: latin-1 -*-
+
+foo = True  # another comment"
+   (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-from-cookie-5 ()
+  "Should detect Vim style."
+  (python-tests-with-temp-buffer
+   "# vim: set fileencoding=latin-1 :
+
+foo = True  # another comment"
+   (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-from-cookie-6 ()
+  "First cookie wins."
+  (python-tests-with-temp-buffer
+   "# -*- coding: iso-8859-1 -*-
+# vim: set fileencoding=latin-1 :
+
+foo = True  # another comment"
+   (should (eq (python-info-encoding-from-cookie) 'iso-8859-1))))
+
+(ert-deftest python-info-encoding-from-cookie-7 ()
+  "First cookie wins."
+  (python-tests-with-temp-buffer
+   "# vim: set fileencoding=latin-1 :
+# -*- coding: iso-8859-1 -*-
+
+foo = True  # another comment"
+   (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-1 ()
+  "Should return the detected encoding from cookie."
+  (python-tests-with-temp-buffer
+   "# vim: set fileencoding=latin-1 :
+
+foo = True  # another comment"
+   (should (eq (python-info-encoding) 'latin-1))))
+
+(ert-deftest python-info-encoding-2 ()
+  "Should default to utf-8."
+  (python-tests-with-temp-buffer
+   "# No encoding for you
+
+foo = True  # another comment"
+   (should (eq (python-info-encoding) 'utf-8))))
+
 
 ;;; Utility functions
 
@@ -3767,7 +4010,7 @@ def foo(a, b, c):
             . "from IPython.core.completerlib import module_completion")
            (python-shell-completion-string-code
             . "';'.join(get_ipython().Completer.all_completions('''%s'''))\n")
-           (python-shell-virtualenv-path
+           (python-shell-virtualenv-root
             . "/home/user/.virtualenvs/project"))))
     (with-current-buffer buffer
       (kill-all-local-variables)
diff --git a/test/automated/tramp-tests.el b/test/automated/tramp-tests.el
index c03b746..c59445c 100644
--- a/test/automated/tramp-tests.el
+++ b/test/automated/tramp-tests.el
@@ -953,7 +953,12 @@ This tests also `file-directory-p' and 
`file-accessible-directory-p'."
            (goto-char (point-min))
            (should
             (looking-at-p
-             "\\(total.+[[:digit:]]+\n\\)?.+ \\.\n.+ \\.\\.\n.+ foo$"))))
+             (concat
+              ;; There might be a summary line.
+              "\\(total.+[[:digit:]]+\n\\)?"
+              ;; We don't know in which order "." and ".." appear.
+              "\\(.+ \\.?\\.\n\\)\\{2\\}"
+              ".+ foo$")))))
       (ignore-errors (delete-directory tmp-name1 'recursive)))))
 
 (ert-deftest tramp-test18-file-attributes ()
diff --git a/test/indent/js.js b/test/indent/js.js
index 1924094..2d458e1 100644
--- a/test/indent/js.js
+++ b/test/indent/js.js
@@ -7,6 +7,11 @@ let c = 1,
 var e = 100500,
     + 1;
 
+function test ()
+{
+     return /[/]/.test ('/')     // (bug#19397)
+}
+
 var f = bar('/protocols/')
 baz();
 



reply via email to

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