Merge from emacs-24; up to 2014-05-26T10:21:18Z!rgm@gnu.org
authorGlenn Morris <rgm@gnu.org>
Mon, 26 May 2014 02:28:09 +0000 (19:28 -0700)
committerGlenn Morris <rgm@gnu.org>
Mon, 26 May 2014 02:28:09 +0000 (19:28 -0700)
23 files changed:
1  2 
ChangeLog
admin/ChangeLog
configure.ac
doc/emacs/ChangeLog
doc/lispref/ChangeLog
doc/misc/ChangeLog
etc/ChangeLog
etc/NEWS
lib-src/ChangeLog
lisp/ChangeLog
lisp/emacs-lisp/lisp.el
lisp/emacs-lisp/nadvice.el
lisp/emacs-lisp/package.el
lisp/minibuffer.el
lisp/mouse.el
lisp/progmodes/scheme.el
lisp/simple.el
src/ChangeLog
src/lisp.h
src/minibuf.c
src/w32fns.c
src/w32term.c
src/xdisp.c

diff --combined ChangeLog
+++ b/ChangeLog
 -2014-05-22  Paul Eggert  <eggert@cs.ucla.edu>
++2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
+       Fix port to 32-bit AIX (Bug#17540).
+       * configure.ac (opsys): On Power Architecture, treat release 7 of
+       AIX like releases 5 and 6.
 +2014-05-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove dependencies on getdelim and getline.
 +      * configure.ac (getdelim, getline): Remove.
 +
  2014-05-18  Glenn Morris  <rgm@gnu.org>
  
 -      * configure.ac (INSTALL_INFO):
 -      Revert to just checking for "install-info".
 +      * configure.ac: Do not bother testing for png in non-graphical builds.
  
 -2014-05-17  Glenn Morris  <rgm@gnu.org>
 +2014-05-18  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * configure.ac (INSTALL_INFO): Try the identical-but-quieter-on-Debian
 -      "ginstall-info" before "install-info".
 +      Port ctags+etags build to Sun C 5.12.
 +      * .bzrignore: Remove lib-src/ctags.c.
  
 -2014-05-04  Paul Eggert  <eggert@cs.ucla.edu>
 +      Port recent libpng changes to hosts with missing png.h.
 +      * configure.ac (HAVE_PNG): Port to platforms where libpng-config
 +      succeeds but png.h is absent, by testing libpng-config's output
 +      rather than trusting it.  I ran into this problem when building
 +      Emacs trunk on a Solaris 10 host.
  
 -      Revert recent libpng changes (Bug#17339).
 -      They fix only bugs that aren't being reported, so it may be better
 -      to do them on the trunk.
 -      * configure.ac (PNG_CFLAGS): Remove.  All uses removed.
 -      (LIBPNG): Don't be consistent about -lpng16 versus -lpng.
 -      Ignore libpng-config's exit status.  Always append -lz -lm.
 +2014-05-17  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * configure.ac (LIBPNG): Add -lz -lm on platforms where they're needed
 -      but libpng-config --libs omits them.  Problem reported by Glenn
 -      Morris.
 +      Assume C99 or later (Bug#17487).
 +      * lib/stdarg.in.h, lib/stdbool.in.h, m4/stdarg.m4, m4/stdbool.m4:
 +      Remove.
 +      * configure.ac (_AC_PROG_CC_C89): Define a dummy, to keep 'configure'
 +      smaller.
 +      (gl_PROG_CC_C99): Use this to get C99 or later.
 +      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
  
 -2014-05-03  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-05-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't require pkg-config when building from repository.
 +      * INSTALL: Prefer './configure FOO=BAR' to 'FOO=BAR ./configure'.
 +      * INSTALL.REPO: pkg-config is no longer required to build from
 +      the repository.
 +      * autogen.sh: Don't check for pkg-config.
 +      (progs): Remove pkg-config.
 +      (pkg_config_min, AUTORECONF_ENV, env_space, ACLOCAL_PATH):
 +      Remove.  All uses removed.
 +      * m4/pkg.m4: New file, built by admin/merge-pkg-config.
 +      * configure.ac: Remove unnecessary m4_pattern_forbid of ^PKG_ and
 +      an AC_ARG_VAR of PKG_CONFIG_PATH.  pkg.m4 does that for us.
 +      (EMACS_CHECK_MODULES): Remove workaround for old pkg-config bug,
 +      as we use pkg.m4 from a newer pkg-config.
 +
 +2014-05-15  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * configure.ac (LIBPNG): Do not test for libpng if NS_IMPL_COCOA.
 +
 +2014-05-13  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * configure.ac (HAVE_XFIXES): Define if available.
 +      (XFIXES_CFLAGS, XFIXES_LIBS): New AC_SUBSTs.
 +      (--enable-link-time-optimization): Add clang support.
 +      * INSTALL: Mention it.
 +
 +2014-05-12  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * configure.ac (EMACS_CHECK_MODULES): Fix typo in previous change.
 +
 +2014-05-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Work around bug in pkg-config before 0.26 (Bug#17438).
 +      * configure.ac (EMACS_CHECK_MODULES): Check for failed exit status
 +      of pkg-config, on older pkg-config versions that don't do it
 +      properly.
 +
 +2014-05-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * autogen.sh: Check for failing aclocal.
 +
 +2014-05-05  Glenn Morris  <rgm@gnu.org>
 +
 +      * autogen.sh: Check any pre-existing ACLOCAL_PATH.
 +
 +2014-05-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Consult libpng-config more consistently (Bug#17339).
 +      This is mainly for simplicity, but it should also avoid
 +      some future problems like the ones we recently had with NetBSD.
 +      * configure.ac (LIBPNG): Configure after LIBZ.  Use libpng-config
 +      for cflags, too.  Append -lz if we're not already doing that with
 +      LIBZ.  Do not bother appending -lm, since we always append that.
 +      Coalesce some duplicate code.
 +
 +      * autogen.sh: Use ‘"’ to quote a message that often contains ‘'’.
  
        Require ImageMagick >= 6.3.5, due to PixelSetMagickColor (Bug#17339).
        * configure.ac (IMAGEMAGICK_MODULE): Bump prereq from 6.2.8 to 6.3.5.
        A more-complicated fix would be to remove uses of PixelSetMagickColor,
        introduced in ImageMagick 6.3.5 (Sept. 2007).
  
 -2014-05-02  Paul Eggert  <eggert@cs.ucla.edu>
 -
 -      Consult libpng-config more consistently (Bug#17339).
 -      * configure.ac (edit_cflags): Move this up and to the top level,
 -      so that PNG_CFLAGS can use it too.
 -      (PNG_CFLAGS): New var.
 -      (png_longjmp): Use PNG_CFLAGS when checking.
 -      (LIBPNG): Be consistent about -lpng16 etc; e.g., don't use -lpng16
 -      in some places and -lpng in others.  Test libpng-config's exit
 -      status.  If it succeeds, use its output rather than appending -lz -lm.
 -
 -2014-05-01  Glenn Morris  <rgm@gnu.org>
 +2014-05-04  Glenn Morris  <rgm@gnu.org>
  
        * configure.ac (LIBPNG): Consult libpng-config for the precise
        form of "-lpng" to use.  (Bug#17339)
  
 -2014-04-29  Glenn Morris  <rgm@gnu.org>
 +2014-05-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * autogen.sh: If all else fails, try using pkg-config to find pkg.m4.
 +
 +2014-05-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Get --enable-gcc-warnings to work after touching configure.ac.
 +      Preserve ACLOCAL_PATH in later builds, so that by default it has
 +      the same value as it did in the first build after initial checkout.
 +      * Makefile.in (ACLOCAL_PATH): New macro.
 +      ($(srcdir)/aclocal.m4): Use it.
 +      * configure.ac (ACLOCAL_PATH): AC_SUBST it.
 +      * autogen.sh (env_space): New var.
 +      Tell user what variables, if any, to pass to 'configure'.
 +
 +      Get --enable-gcc-warnings working again.
 +      The recent changes to configure.ac removed the transliteration of
 +      -I to -isystem in CFLAGS, which is needed for --enable-gcc-warnings.
 +      Bring this back while keeping the spirit of the recent changes.
 +      * configure.ac (edit_cflags): Restore this shell var, and put it
 +      at the top level, where it'll be useful when emacs-24 is next merged.
 +      (EMACS_CHECK_MODULES): New macro.  All uses of PKG_CHECK_MODULES
 +      changed to use it.
 +
 +      Make it easier on maintainers who use their own Automake.
 +      * autogen.sh (ACLOCAL_PATH, AUTORECONF_ENV): New vars.
 +      Set them to avoid problems when maintainers prepend their own
 +      Automake installations to their PATH.  Report an error if pkg.m4
 +      can't be found.
 +
 +2014-05-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.ac (PKG_CONFIG_PATH): Declare with AC_ARG_VAR.
 +
 +      * configure.ac (--with-pkg-config-prog): Remove.
 +      Use the PKG_CONFIG environment variable instead if you need it.
 +
 +      * configure.ac: Use pkg-config's pkg.m4, rather than reinventing it.
 +      Add explicit AC_SUBST's where needed.
 +      * autogen.sh (progs): Add pkg-config.
 +      (pkg_config_min): New variable.
 +
 +      * configure.ac (AC_CONFIG_MACRO_DIR): Use it.
 +
 +      * autogen.sh (get_version): Handle no leading whitespace.
 +      (check_version, main): Handle program names with hyphens.
 +
 +2014-04-30  Glenn Morris  <rgm@gnu.org>
  
        * configure.ac: Treat MirBSD as OpenBSD.  (Bug#17339)
  
 +2014-04-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      * .bzrignore: Add a.out to bzr ignore list (a test generates this
 +      file).
 +
 +2014-04-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Link to glib-using libraries when checking for glib (Bug#17289).
 +      * configure.ac (XGSELOBJ): Include GTK_LIBS, RSVG_LIBS, etc.
 +      when testing whether Glib is linked in.  Similarly for CFLAGS.
 +
 +2014-04-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * GNUmakefile: Speed up 'make bootstrap' in fresh checkout.
 +      (ORDINARY_GOALS): New macro, which excludes 'bootstrap'.
 +      (bootstrap, .PHONY): New rules.
 +      * INSTALL.REPO: Document current procedure better.
 +      Move copyright notice to just before license notice.
 +
 +      * Makefile.in (FRC, force-info): Remove.
 +      All uses removed.  This hack is no longer needed here
 +      now that we can assume GNU Make's .PHONY feature works.
 +      (bootstrap): No need to make 'info', since 'all' now implies 'info'.
 +
  2014-04-16  Eli Zaretskii  <eliz@gnu.org>
  
        * config.bat: Update for Emacs 24.4.
  
 -2014-04-13  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-04-16  Paul Eggert  <eggert@cs.ucla.edu>
  
        Port to IRIX 6.5 (Bug#9684).
        This port requires IRIX cc, as I did not have time to get
        in an optional library that also contains getdelim, and causes
        a later 'configure' to incorrectly think getdelim is supported.
  
 -2014-04-13  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-16  Eli Zaretskii  <eliz@gnu.org>
  
        * configure.ac (LN_S_FILEONLY, LN_S): Use "/bin/ln" on MinGW, to
        ensure the MSYS ln.exe is invoked.
  
 +2014-04-15  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove DATA_SEG_BITS.
 +      * configure.ac (DATA_SEG_BITS): Remove.  All uses removed.
 +
 +2014-04-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * autogen.sh: Use autoreconf's -f option (Bug#17258).
 +
 +      Clean up configure-time library handling a bit.
 +      This patch was inspired by emacs-24 bzr 116961, which fixed
 +      a bug due to sloppy library handling in 'configure'.
 +      * configure.ac (LIB_MATH, LIB_PTHREAD, LIBXMU):
 +      Use AC_SEARCH_LIBS instead of AC_CHECK_LIB as per Autoconf manual.
 +      (LIB_MATH, LIB_PTHREAD, HAVE_X11, IMAGEMAGICK_LIBS, GTK_LIBS)
 +      (DBUS_LIBS, LIBXMU, XFT_LIBS, LIBXSM, LIBXML2_LIBS, LIBS_MAIL)
 +      (with_kerberos):
 +      Don't let the library choice infect $LIBS.
 +      (dnet_ntoa, cma_open): Remove obsolete tests.
 +      (emacs_pthread_function): Probe for pthread_kill, not pthread_self,
 +      as that's a bit more selective on GNU/Linux.
 +      (LIBXEXT): Remove.
 +      (touchlock): Test for existence when $LIBS_MAIL is in use.
 +      (AC_CHECK_FUNCS): Use only $LIB_MATH in addition to $LIBS
 +      when testing for typical functions like accept4, lrand48.
 +      (random, rint): Remove obsolete HP-UX 9 A.09.05 test.
 +
  2014-04-11  Glenn Morris  <rgm@gnu.org>
  
        * make-dist: Do not distribute generated admin/grammars/Makefile.
        Do distribute lib-src/update-game-score.exe.manifest.
  
 -2014-04-09  Ken Brown  <kbrown@cornell.edu>
 +2014-04-11  Ken Brown  <kbrown@cornell.edu>
  
        * configure.ac (EMACS_MANIFEST): Revert last change (but leave
        UPDATE_MANIFEST empty).
  
 -2014-04-03  Ken Brown  <kbrown@cornell.edu>
 +2014-04-07  Ken Brown  <kbrown@cornell.edu>
  
        * configure.ac (EMACS_MANIFEST, UPDATE_MANIFEST): Leave these
        variables empty on Cygwin.  (Bug#17176)
  
 -2014-03-31  Glenn Morris  <rgm@gnu.org>
 +2014-04-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist: Further update AC_INIT regexp.
 +
 +2014-04-02  Glenn Morris  <rgm@gnu.org>
  
        * configure.ac: Make the final "Does Emacs use Gsettings" message
        consistent with src/config.h.
  2014-03-31  Jan Djärv  <jan.h.d@swipnet.se>
  
        * configure.ac: Fix errors from previous checkin (GSettings check).
 -      Backport from trunk.
  
 -2014-03-30  Daniel Colascione  <dancol@dancol.org>
 +2014-03-29  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * configure.ac: Include GFILENOTIFY objects in glib check.  (Bug#17069)
 +      * configure.ac: Add check that GSettings is in libgio (Bug#17118).
  
 -2014-03-30  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-03-28  Glenn Morris  <rgm@gnu.org>
  
 -      * configure.ac: Add check that GSettings is in libgio (Bug#17118).
 -      Backport from trunk.
 +      * configure.ac (AC_INIT): Add "GNU" in package, add bug address.
 +      (PACKAGE_BUGREPORT): Use it.
 +      (make-dist): Update AC_INIT regexp.
 +
 +      * configure.ac (ACL_SUMMARY): Rename from acl_summary, for consistency.
 +      (EMACS_CONFIG_FEATURES): New define.
 +
 +2014-03-27  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * configure.ac: Suggest './configure MAKE=gmake' in diagnostic.
 +      This tends to work better than 'MAKE=gmake ./configure' if later
 +      builds run config.status etc.
 +
 +2014-03-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.ac: Require GNU make.
 +      (HAVE_GNU_MAKE): Remove.
  
  2014-03-26  Paul Eggert  <eggert@cs.ucla.edu>
  
        2014-03-26 strftime: wrap macros in "do {...} while(0)"
        * lib/strftime.c: Update from gnulib.
  
 +2014-03-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.ac (CLASH_DETECTION): Remove option.  Every platform
 +      supports it, and the runtime option `create-lockfiles' replaces it.
 +
 +2014-03-23  Daniel Colascione  <dancol@dancol.org>
 +
 +      * configure.ac: (Bug#17069) Include GFILENOTIFY objects in glib check.
 +
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist: Do not distribute lib-src/testfile.
 +
 +2014-03-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * configure.ac: Bump version to 24.4.50.
 +
 +2014-03-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (all): Depend on `info'.  (Bug#16626)
 +
  2014-03-07  Paul Eggert  <eggert@cs.ucla.edu>
  
        Merge from gnulib, incorporating:
diff --combined admin/ChangeLog
@@@ -1,52 -1,23 +1,51 @@@
- 2014-05-25  Jan Djärv  <jan.h.d@swipnet.se>
 -2014-05-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
++2014-05-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
-       * mac/uvs.el: New file from Mac port.  src/macuvs.h is generated
-       by it.
 -      * mac/uvs.el: New file.  Generates ../src/macuvs.h.
++      * mac/uvs.el: New file from Mac port.  Generates src/macuvs.h.
  
 -2014-05-11  Glenn Morris  <rgm@gnu.org>
 +2014-05-17  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * find-gc.el: Move here from ../lisp/emacs-lisp.
 +      Assume C99 or later (Bug#17487).
 +      * merge-gnulib (GNULIB_MODULES): Remove stdarg, stdbool.
 +      (GNULIB_TOOL_FLAGS): Avoid stdarg, stdbool.
 +
 +2014-05-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't require pkg-config when building from repository.
 +      * merge-pkg-config: New script.
 +      * notes/copyright: Update for m4/*.m4, in particular m4/pkg.m4.
 +
 +2014-05-13  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-05-10  Glenn Morris  <rgm@gnu.org>
 +      * merge-gnulib: Defer to autogen.sh for ACLOCAL_PATH computation.
 +
 +2014-05-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * find-gc.el: Move here from ../lisp/emacs-lisp.
  
        * admin.el (set-version-in-file): Don't set identical version.
        (set-version): Provide default version number.
        (set-version, set-copyright): Give start/end messages.
  
 -2014-04-17  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-04-18  Paul Eggert  <eggert@cs.ucla.edu>
  
        * notes/bzr: Update instructions for merging from gnulib.
        Remove obsolete note about tramp.el and tramp-sh.el.
        Change "emacs-23" to "emacs-24".
  
 +2014-04-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * grammars/Makefile.in (EMACSDATA, EMACSDOC, EMACSPATH): Unexport.
 +
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * quick-install-emacs (AVOID): Remove testfile and test-distrib.
 +
 +2014-03-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * update_autogen: Auto-detect VCS in use.
 +      (vcs): New variable.
 +      (status, commit, main): Handle git.
 +
  2014-03-07  Paul Eggert  <eggert@cs.ucla.edu>
  
        Fix oversight preventing lib/sys/types.h from being generated.
diff --combined configure.ac
@@@ -22,8 -22,7 +22,8 @@@ dnl  You should have received a copy o
  dnl  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
  
  AC_PREREQ(2.65)
 -AC_INIT(emacs, 24.3.91)
 +dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
 +AC_INIT(GNU Emacs, 24.4.50, bug-gnu-emacs@gnu.org)
  
  dnl We get MINGW64 with MSYS2
  if test "x$MSYSTEM" = "xMINGW32" -o "x$MSYSTEM" = "xMINGW64"
@@@ -83,9 -82,6 +83,9 @@@ don
  AC_CONFIG_HEADERS(src/config.h:src/config.in)
  AC_CONFIG_SRCDIR(src/lisp.h)
  AC_CONFIG_AUX_DIR(build-aux)
 +dnl automake 1.13 and later understand this, making -I m4 unnecessary.
 +dnl With older versions this is a no-op.
 +AC_CONFIG_MACRO_DIR(m4)
  
  xcsdkdir=
  AC_CHECK_PROGS(XCRUN, [xcrun])
@@@ -296,9 -292,6 +296,9 @@@ otherwise for the first of `gfile' or `
  dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
  OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
  
 +## This might be a 'configure' arg.
 +AC_SUBST([ACLOCAL_PATH])
 +
  ## Makefile.in needs the cache file name.
  AC_SUBST(cache_file)
  
@@@ -308,6 -301,15 +308,6 @@@ OPTION_DEFAULT_ON([compress-install]
    [don't compress some files (.el, .info, etc.) when installing.  Equivalent to:
  make GZIP_PROG= install])
  
 -AC_ARG_WITH([pkg-config-prog],dnl
 -[AS_HELP_STRING([--with-pkg-config-prog=FILENAME],
 -                  [file name of pkg-config for finding GTK and librsvg])])
 -if test "X${with_pkg_config_prog}" != X; then
 -   if test "${with_pkg_config_prog}" != yes; then
 -      PKG_CONFIG="${with_pkg_config_prog}"
 -   fi
 -fi
 -
  AC_ARG_WITH(gameuser,dnl
  [AS_HELP_STRING([--with-gameuser=USER],[user for shared game score files])])
  test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
@@@ -439,7 -441,8 +439,7 @@@ AC_SUBST(PROFILING_CFLAGS
  AC_ARG_ENABLE(autodepend,
  [AS_HELP_STRING([--enable-autodepend],
                [automatically generate dependencies to .h-files.
 -               Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is
 -               found])],
 +               Requires gcc, enabled if found.])],
  [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
  
  AC_ARG_ENABLE(gtk-deprecation-warnings,
@@@ -547,7 -550,7 +547,7 @@@ case "${canonical}" i
    rs6000-ibm-aix[56]* )
      opsys=aix4-2
    ;;
-   powerpc-ibm-aix[56]*  )
+   powerpc-ibm-aix[5-9]* | powerpc-ibm-aix[1-9][0-9]* )
      opsys=aix4-2
    ;;
  
@@@ -651,28 -654,13 +651,28 @@@ dnl quotation end
  
  if test $unported = yes; then
    AC_MSG_ERROR([Emacs does not support `${canonical}' systems.
 -If you think it should, please send a report to bug-gnu-emacs@gnu.org.
 +If you think it should, please send a report to ${PACKAGE_BUGREPORT}.
  Check `etc/MACHINES' for recognized configuration names.])
  fi
  
  
 +AC_MSG_CHECKING([whether we are using GNU Make])
 +testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
 +if test "x$testval" != x; then
 +  AC_MSG_RESULT([yes])
 +else
 +  AC_MSG_RESULT([no])
 +  AC_MSG_ERROR([Building Emacs requires GNU make.
 +If you have it installed under another name, configure with 'MAKE=...'.
 +For example, run './configure MAKE=gmake'.])
 +fi
 +
 +
  #### Choose a compiler.
  
 +dnl Don't bother to test for C89.
 +AC_DEFUN([_AC_PROG_CC_C89], [$2])
 +
  dnl Sets GCC=yes if using gcc.
  AC_PROG_CC([gcc cc cl clang "$XCRUN gcc" "$XCRUN clang"])
  if test -n "$XCRUN"; then
    test -n "$AR" && export AR
  fi
  
 +dnl Emacs needs C99 or later.
 +gl_PROG_CC_C99
 +
  AM_PROG_CC_C_O
  
  if test x$GCC = xyes; then
@@@ -768,6 -753,32 +768,6 @@@ AC_ARG_ENABLE([gcc-warnings]
    [gl_gcc_warnings=no]
  )
  
 -AC_ARG_ENABLE(link-time-optimization,
 -[AS_HELP_STRING([--enable-link-time-optimization],
 -                [build emacs with link-time optimization.
 -                 This is supported only for GCC since 4.5.0.])],
 -if test "${enableval}" != "no"; then
 -   AC_MSG_CHECKING([whether link-time optimization is supported])
 -   ac_lto_supported=no
 -   if test x$GCC = xyes; then
 -      CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
 -      if test x$CPUS != x; then
 -               LTO="-flto=$CPUS"
 -      else
 -       LTO="-flto"
 -      fi
 -      old_CFLAGS=$CFLAGS
 -      CFLAGS="$CFLAGS $LTO"
 -      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
 -              [ac_lto_supported=yes], [ac_lto_supported=no])
 -      CFLAGS="$old_CFLAGS"
 -   fi
 -   AC_MSG_RESULT([$ac_lto_supported])
 -   if test "$ac_lto_supported" = "yes"; then
 -      CFLAGS="$CFLAGS $LTO"
 -   fi
 -fi)
 -
  # clang is unduly picky about some things.
  AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang],
    [AC_COMPILE_IFELSE(
@@@ -893,51 -904,6 +893,51 @@@ edit_cflags=
    s/^ //
  "
  
 +AC_ARG_ENABLE(link-time-optimization,
 +[AS_HELP_STRING([--enable-link-time-optimization],
 +                [build emacs with link-time optimization.
 +               This is supported for gcc since 4.5.0 and clang.
 +               Note that clang support is experimental - see INSTALL])],
 +if test "${enableval}" != "no"; then
 +   ac_lto_supported=no
 +   if test $emacs_cv_clang = yes; then
 +      AC_MSG_CHECKING([whether link-time optimization is supported by clang])
 +      GOLD_PLUGIN=`$CC -print-file-name=LLVMgold.so 2>/dev/null`
 +      if test -x "$GOLD_PLUGIN"; then
 +       LTO="-flto"
 +      fi
 +   elif test x$GCC = xyes; then
 +      AC_MSG_CHECKING([whether link-time optimization is supported by gcc])
 +      CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
 +      if test x$CPUS != x; then
 +       LTO="-flto=$CPUS"
 +      else
 +       LTO="-flto"
 +      fi
 +   else
 +      AC_MSG_ERROR([Link-time optimization is not supported with your compiler.])
 +   fi
 +   if test -z "$LTO"; then
 +      ac_lto_supported=no
 +   else
 +      old_CFLAGS=$CFLAGS
 +      CFLAGS="$CFLAGS $LTO"
 +      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
 +         [ac_lto_supported=yes], [ac_lto_supported=no])
 +         CFLAGS="$old_CFLAGS"
 +   fi
 +   AC_MSG_RESULT([$ac_lto_supported])
 +   if test "$ac_lto_supported" = "yes"; then
 +      CFLAGS="$CFLAGS $LTO"
 +      if test x$emacs_cv_clang = xyes; then
 +       AC_MSG_WARN([Please read INSTALL before using link-time optimization with clang])
 +       # WARNING: 'ar --plugin ...' doesn't work without
 +       # command, so plugin name is appended to ARFLAGS.
 +       ARFLAGS="cru --plugin $GOLD_PLUGIN"
 +       RANLIB="$RANLIB --plugin $GOLD_PLUGIN"
 +      fi
 +   fi
 +fi)
  
  dnl Some other nice autoconf tests.
  dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
@@@ -999,6 -965,15 +999,15 @@@ if test "$opsys" = "mingw32"; the
    LN_S="/bin/ln"
  fi
  
+ dnl On some Debian versions, "install-info" prints irritating messages
+ dnl "This is not dpkg install-info anymore, but GNU install-info"
+ dnl if called via an absolute file name.
+ dnl Use the entirely-identical-but-quieter ginstall-info instead if present.
+ dnl Sadly some people may have an old ginstall-info installed on
+ dnl non-Debian systems, so we can't use this.
+ dnl AC_PATH_PROGS(INSTALL_INFO, [ginstall-info install-info], :,
+ dnl   $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
  AC_PATH_PROG(INSTALL_INFO, install-info, :,
    $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
  dnl Don't use GZIP, which is used by gzip for additional parameters.
    CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
  fi
  
 -# Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better.
 +# Suppress obsolescent Autoconf test for size_t; Emacs assumes C99 or better.
  AC_DEFUN([AC_TYPE_SIZE_T])
  # Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
  AC_DEFUN([AC_TYPE_UID_T])
  
 +# sqrt and other floating-point functions such as fmod and frexp
 +# are found in -lm on many systems.
 +OLD_LIBS=$LIBS
 +AC_SEARCH_LIBS([sqrt], [m])
 +if test "X$LIBS" = "X$OLD_LIBS"; then
 +  LIB_MATH=
 +else
 +  LIB_MATH=$ac_cv_search_sqrt
 +fi
 +LIBS=$OLD_LIBS
  
 -LIB_MATH=-lm
  dnl Current possibilities handled by sed (aix4-2 -> aix,
  dnl gnu-linux -> gnu/linux, etc.):
  dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
@@@ -1369,20 -1335,55 +1378,20 @@@ AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTE
  pre_PKG_CONFIG_CFLAGS=$CFLAGS
  pre_PKG_CONFIG_LIBS=$LIBS
  
 -AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
 -
 -dnl This function definition taken from Gnome 2.0
 -dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
 -dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
 -dnl also defines GSTUFF_PKG_ERRORS on error
 -AC_DEFUN([PKG_CHECK_MODULES], [
 -  succeeded=no
 -
 -  if test "$PKG_CONFIG" = "no" ; then
 -     ifelse([$4], , [AC_MSG_ERROR([
 -      *** The pkg-config script could not be found. Make sure it is in your path, or give the full name of pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog.  Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config.])], [$4])
 -  else
 -     PKG_CONFIG_MIN_VERSION=0.9.0
 -     if "$PKG_CONFIG" --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
 -        AC_MSG_CHECKING(for $2)
 -
 -        if "$PKG_CONFIG" --exists "$2" 2>&AS_MESSAGE_LOG_FD &&
 -         $1_CFLAGS=`"$PKG_CONFIG" --cflags "$2" 2>&AS_MESSAGE_LOG_FD` &&
 -         $1_LIBS=`"$PKG_CONFIG" --libs "$2" 2>&AS_MESSAGE_LOG_FD`; then
 -          $1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
 -          $1_LIBS=`AS_ECHO(["$$1_LIBS"]) | sed -e 's,///*,/,g'`
 -            AC_MSG_RESULT([yes CFLAGS='$$1_CFLAGS' LIBS='$$1_LIBS'])
 -            succeeded=yes
 -        else
 -            AC_MSG_RESULT(no)
 -            $1_CFLAGS=""
 -            $1_LIBS=""
 -            ## If we have a custom action on failure, don't print errors, but
 -          ## do set a variable so people can do so.  Do it in a subshell
 -          ## to capture any diagnostics in invoking pkg-config.
 -          $1_PKG_ERRORS=`("$PKG_CONFIG" --print-errors "$2") 2>&1`
 -          ifelse([$4], ,echo "$$1_PKG_ERRORS",)
 -        fi
 -
 -        AC_SUBST($1_CFLAGS)
 -        AC_SUBST($1_LIBS)
 -     else
 -        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
 -        echo "*** See http://www.freedesktop.org/software/pkgconfig"
 -     fi
 -  fi
 -
 -  if test $succeeded = yes; then
 -     ifelse([$3], , :, [$3])
 -  else
 -     ifelse([$4], , [AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.])], [$4])
 -  fi
 -])
 +PKG_PROG_PKG_CONFIG(0.9.0)
 +
 +dnl EMACS_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4)
 +dnl acts like PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4,
 +dnl HAVE_GSTUFF=yes, HAVE_GSTUFF=no) -- see pkg-config man page --
 +dnl except that it postprocesses CFLAGS as needed for --enable-gcc-warnings.
 +dnl EMACS_CHECK_MODULES accepts optional 3rd and 4th arguments that
 +dnl can take the place of the default HAVE_GSTUFF=yes and HAVE_GSTUFF=no
 +dnl actions.
 +AC_DEFUN([EMACS_CHECK_MODULES],
 +  [PKG_CHECK_MODULES([$1], [$2],
 +     [$1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
 +      m4_default([$3], [HAVE_$1=yes])],
 +     [m4_default([$4], [HAVE_$1=no])])])
  
  HAVE_SOUND=no
  if test "${with_sound}" != "no"; then
    if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then
      ALSA_REQUIRED=1.0.0
      ALSA_MODULES="alsa >= $ALSA_REQUIRED"
 -    PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
 +    EMACS_CHECK_MODULES([ALSA], [$ALSA_MODULES])
      if test $HAVE_ALSA = yes; then
        SAVE_CFLAGS="$CFLAGS"
        SAVE_LIBS="$LIBS"
@@@ -1526,16 -1527,27 +1535,16 @@@ dnl AC_PROG_MAKE_SET is done by Automak
  DEPFLAGS=
  MKDEPDIR=":"
  deps_frag=deps.mk
 -dnl check for GNU Make if we have GCC and autodepend is on.
 +dnl check if we have GCC and autodepend is on.
  if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
 -   AC_MSG_CHECKING([whether we are using GNU Make])
 -   HAVE_GNU_MAKE=no
 -   testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
 -   if test "x$testval" != x; then
 -      HAVE_GNU_MAKE=yes
 -   else
 -      ac_enable_autodepend=no
 -   fi
 -   AC_MSG_RESULT([$HAVE_GNU_MAKE])
 -   if test $HAVE_GNU_MAKE = yes; then
 -      AC_MSG_CHECKING([whether gcc understands -MMD -MF])
 -      SAVE_CFLAGS="$CFLAGS"
 -      CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
 -      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
 -      CFLAGS="$SAVE_CFLAGS"
 -      test -f deps.d || ac_enable_autodepend=no
 -      rm -rf deps.d
 -      AC_MSG_RESULT([$ac_enable_autodepend])
 -   fi
 +   AC_MSG_CHECKING([whether gcc understands -MMD -MF])
 +   SAVE_CFLAGS="$CFLAGS"
 +   CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
 +   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
 +   CFLAGS="$SAVE_CFLAGS"
 +   test -f deps.d || ac_enable_autodepend=no
 +   rm -rf deps.d
 +   AC_MSG_RESULT([$ac_enable_autodepend])
     if test $ac_enable_autodepend = yes; then
        DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
        ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
  
  LIBS="$LIBS_SYSTEM $LIBS"
  
 -dnl If found, this adds -ldnet to LIBS, which Autoconf uses for checks.
 -AC_CHECK_LIB(dnet, dnet_ntoa)
 -dnl This causes -lresolv to get used in subsequent tests,
 -dnl which causes failures on some systems such as HPUX 9.
 -dnl AC_CHECK_LIB(resolv, gethostbyname)
 -
  dnl FIXME replace main with a function we actually want from this library.
  AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
  
 -dnl Check if pthreads is available.
 +dnl Check for the POSIX thread library.
  LIB_PTHREAD=
  AC_CHECK_HEADERS_ONCE(pthread.h)
  if test "$ac_cv_header_pthread_h"; then
    dnl gmalloc.c uses pthread_atfork, which is not available on older-style
    dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
 -  dnl testing for pthread_self if Emacs uses gmalloc.c.
 +  dnl testing for pthread_kill if Emacs uses gmalloc.c.
    if test "$GMALLOC_OBJ" = gmalloc.o; then
      emacs_pthread_function=pthread_atfork
    else
 -    emacs_pthread_function=pthread_self
 +    emacs_pthread_function=pthread_kill
    fi
 -  AC_CHECK_LIB(pthread, $emacs_pthread_function, HAVE_PTHREAD=yes)
 -fi
 -if test "$HAVE_PTHREAD" = yes; then
 -  case "${canonical}" in
 -    *-hpux*) ;;
 -    *) LIB_PTHREAD="-lpthread"
 -       LIBS="$LIB_PTHREAD $LIBS" ;;
 -  esac
 -  AC_DEFINE(HAVE_PTHREAD, 1, [Define to 1 if you have pthread (-lpthread).])
 +  OLD_LIBS=$LIBS
 +  AC_SEARCH_LIBS([$emacs_pthread_function], [pthread],
 +    [AC_DEFINE([HAVE_PTHREAD], [1],
 +       [Define to 1 if you have pthread (-lpthread).])])
 +  if test "X$LIBS" != "X$OLD_LIBS"; then
 +    eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function
 +  fi
 +  LIBS=$OLD_LIBS
  fi
  AC_SUBST([LIB_PTHREAD])
  
 -AC_CHECK_LIB(pthreads, cma_open)
 -
 -## Note: when using cpp in s/aix4.2.h, this definition depended on
 -## HAVE_LIBPTHREADS.  That was not defined earlier in configure when
 -## the system file was sourced.  Hence the value of LIBS_SYSTEM
 -## added to LIBS in configure would never contain the pthreads part,
 -## but the value used in Makefiles might.  FIXME?
 -##
 -## -lpthreads seems to be necessary for Xlib in X11R6, and should
 -## be harmless on older versions of X where it happens to exist.
 -test "$opsys" = "aix4-2" && \
 -  test $ac_cv_lib_pthreads_cma_open = yes && \
 -  LIBS_SYSTEM="$LIBS_SYSTEM -lpthreads"
 -
  dnl Check for need for bigtoc support on IBM AIX
  
  case ${host_os} in
@@@ -2074,12 -2107,12 +2083,12 @@@ aix*
    ;;
  esac
  
 -# Change CFLAGS and CPPFLAGS temporarily so that C_SWITCH_X_SITE gets
 -# used for the tests that follow.  We set them back to REAL_CFLAGS and
 -# REAL_CPPFLAGS later on.
 +# Change CFLAGS, CPPFLAGS, and LIBS temporarily so that C_SWITCH_X_SITE
 +# is for the tests that follow.  We set them back later on.
  
  REAL_CFLAGS="$CFLAGS"
  REAL_CPPFLAGS="$CPPFLAGS"
 +REAL_LIBS="$LIBS"
  
  if test "${HAVE_X11}" = "yes"; then
    DEFS="$C_SWITCH_X_SITE $DEFS"
       [xgnu_linux_first_failure=no],
       [xgnu_linux_first_failure=yes])
      if test "${xgnu_linux_first_failure}" = "yes"; then
 -      OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE"
 -      OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE"
        OLD_CPPFLAGS="$CPPFLAGS"
        OLD_LIBS="$LIBS"
 -      LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
 -      C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
        CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
        LIBS="$LIBS -b i486-linuxaout"
        AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
         [xgnu_linux_second_failure=yes])
        if test "${xgnu_linux_second_failure}" = "yes"; then
        # If we get the same failure with -b, there is no use adding -b.
 -      # So take it out.  This plays safe.
 -      LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE"
 -      C_SWITCH_X_SITE="$OLD_C_SWITCH_X_SITE"
 -      CPPFLAGS="$OLD_CPPFLAGS"
 -      LIBS="$OLD_LIBS"
 +      # So leave it out.  This plays safe.
          AC_MSG_RESULT(no)
        else
 +      LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
 +      C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
          AC_MSG_RESULT(yes)
        fi
 +      CPPFLAGS=$OLD_CPPFLAGS
 +      LIBS=$OLD_LIBS
      else
        AC_MSG_RESULT(no)
      fi
@@@ -2178,7 -2215,7 +2187,7 @@@ if test "${HAVE_X11}" = "yes" || test "
      RSVG_REQUIRED=2.11.0
      RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
  
 -    PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, HAVE_RSVG=yes, :)
 +    EMACS_CHECK_MODULES([RSVG], [$RSVG_MODULE])
      AC_SUBST(RSVG_CFLAGS)
      AC_SUBST(RSVG_LIBS)
  
        if test "${opsys}" = "mingw32"; then
                RSVG_LIBS=
        fi
 -      LIBS="$RSVG_LIBS $LIBS"
      fi
    fi
  fi
@@@ -2199,19 -2237,15 +2208,19 @@@ if test "${HAVE_X11}" = "yes" || test "
      ## 6.3.5 is the earliest version known to work; see Bug#17339.
      ## 6.8.2 makes Emacs crash; see Bug#13867.
      IMAGEMAGICK_MODULE="Wand >= 6.3.5 Wand != 6.8.2"
 -    PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
 +    EMACS_CHECK_MODULES([IMAGEMAGICK], [$IMAGEMAGICK_MODULE])
      AC_SUBST(IMAGEMAGICK_CFLAGS)
      AC_SUBST(IMAGEMAGICK_LIBS)
  
      if test $HAVE_IMAGEMAGICK = yes; then
        AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
 +      OLD_CFLAGS=$CFLAGS
 +      OLD_LIBS=$LIBS
        CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
        LIBS="$IMAGEMAGICK_LIBS $LIBS"
        AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers)
 +      CFLAGS=$OLD_CFLAGS
 +      LIBS=$OLD_LIBS
      fi
    fi
  fi
@@@ -2229,8 -2263,7 +2238,8 @@@ if test "${opsys}" != "mingw32"; the
      GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
  
      dnl Checks for libraries.
 -    PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
 +    EMACS_CHECK_MODULES([GTK], [$GTK_MODULES],
 +      [pkg_check_gtk=yes], [pkg_check_gtk=no])
      if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
         AC_MSG_ERROR($GTK_PKG_ERRORS)
      fi
      GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
  
      dnl Checks for libraries.
 -    PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
 +    EMACS_CHECK_MODULES([GTK], [$GTK_MODULES],
 +      [pkg_check_gtk=yes], [pkg_check_gtk=no])
      if test "$pkg_check_gtk" = "no" &&
         { test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
      then
    fi
  fi
  
 +OLD_CFLAGS=$CFLAGS
 +OLD_LIBS=$LIBS
 +
  if test x"$pkg_check_gtk" = xyes; then
  
    AC_SUBST(GTK_LIBS)
 -  C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
    CFLAGS="$CFLAGS $GTK_CFLAGS"
    LIBS="$GTK_LIBS $LIBS"
    dnl Try to compile a simple GTK program.
        AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?]);
      fi
    else
 +    C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
      HAVE_GTK=yes
      AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
      GTK_OBJ="gtkutil.o $GTK_OBJ"
@@@ -2374,40 -2403,33 +2383,40 @@@ if test "${HAVE_GTK}" = "yes"; the
   term_header=gtkutil.h
  fi
  
 +CFLAGS=$OLD_CFLAGS
 +LIBS=$OLD_LIBS
 +
  dnl D-Bus has been tested under GNU/Linux only.  Must be adapted for
  dnl other platforms.
  HAVE_DBUS=no
  DBUS_OBJ=
  if test "${with_dbus}" = "yes"; then
 -   PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
 +   EMACS_CHECK_MODULES([DBUS], [dbus-1 >= 1.0])
     if test "$HAVE_DBUS" = yes; then
 -     LIBS="$LIBS $DBUS_LIBS"
       AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
       dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
       dnl dbus_type_is_valid and dbus_validate_* have been introduced in
       dnl D-Bus 1.5.12.
 +     OLD_LIBS=$LIBS
 +     LIBS="$LIBS $DBUS_LIBS"
       AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
                    dbus_type_is_valid \
                    dbus_validate_bus_name \
                      dbus_validate_path \
                    dbus_validate_interface \
                    dbus_validate_member)
 +     LIBS=$OLD_LIBS
       DBUS_OBJ=dbusbind.o
     fi
  fi
 +AC_SUBST(DBUS_CFLAGS)
 +AC_SUBST(DBUS_LIBS)
  AC_SUBST(DBUS_OBJ)
  
  dnl GSettings has been tested under GNU/Linux only.
  HAVE_GSETTINGS=no
  if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
 -   PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.26, HAVE_GSETTINGS=yes, HAVE_GSETTINGS=no)
 +   EMACS_CHECK_MODULES([GSETTINGS], [gio-2.0 >= 2.26])
     if test "$HAVE_GSETTINGS" = "yes"; then
        old_CFLAGS=$CFLAGS
        CFLAGS="$CFLAGS $GSETTINGS_CFLAGS"
@@@ -2441,7 -2463,7 +2450,7 @@@ dnl GConf has been tested under GNU/Lin
  dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
  HAVE_GCONF=no
  if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
 -   PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
 +   EMACS_CHECK_MODULES([GCONF], [gconf-2.0 >= 2.13])
     if test "$HAVE_GCONF" = yes; then
        AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
        dnl Newer GConf doesn't link with g_objects, so this is not defined.
  fi
  
  if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
 -    PKG_CHECK_MODULES(GOBJECT, gobject-2.0 >= 2.0, HAVE_GOBJECT=yes, HAVE_GOBJECT=no)
 +    EMACS_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.0])
      if test "$HAVE_GOBJECT" = "yes"; then
         SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GOBJECT_CFLAGS"
         SETTINGS_LIBS="$SETTINGS_LIBS $GOBJECT_LIBS"
@@@ -2482,14 -2504,12 +2491,14 @@@ AC_SUBST(LIBSELINUX_LIBS
  HAVE_GNUTLS=no
  HAVE_GNUTLS3=no
  if test "${with_gnutls}" = "yes" ; then
 -  PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.0.0], HAVE_GNUTLS3=yes, HAVE_GNUTLS3=no)
 +  EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.0.0],
 +    [HAVE_GNUTLS3=yes], [HAVE_GNUTLS3=no])
    if test "${HAVE_GNUTLS3}" = "yes"; then
      AC_DEFINE(HAVE_GNUTLS3, 1, [Define if using GnuTLS v3.])
      HAVE_GNUTLS="yes"
    else
 -    PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no)
 +    EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6],
 +      [HAVE_GNUTLS=yes], [HAVE_GNUTLS=no])
    fi
    if test "${HAVE_GNUTLS}" = "yes"; then
      AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
@@@ -2531,7 -2551,7 +2540,7 @@@ dnl only sense when glib has been compi
  dnl to check?
  case $with_file_notification,$NOTIFY_OBJ in
    gfile, | yes,)
 -    PKG_CHECK_MODULES(GFILENOTIFY, gio-2.0 >= 2.24, HAVE_GFILENOTIFY=yes, HAVE_GFILENOTIFY=no)
 +    EMACS_CHECK_MODULES([GFILENOTIFY], [gio-2.0 >= 2.24])
      if test "$HAVE_GFILENOTIFY" = "yes"; then
         AC_DEFINE(HAVE_GFILENOTIFY, 1, [Define to 1 if using GFile.])
         NOTIFY_OBJ=gfilenotify.o
  X_TOOLKIT_TYPE=$USE_X_TOOLKIT
  
  LIBXTR6=
 +LIBXMU=
  if test "${USE_X_TOOLKIT}" != "none"; then
    AC_MSG_CHECKING(X11 toolkit version)
    AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
@@@ -2647,20 -2666,37 +2656,20 @@@ dnl If using toolkit, check whether lib
  dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
    OLDLIBS="$LIBS"
    if test x$HAVE_X11XTR6 = xyes; then
 -    LIBS="-lXt -lSM -lICE $LIBS"
 +    OTHERLIBS='-lXt -lSM -lICE'
    else
 -    LIBS="-lXt $LIBS"
 +    OTHERLIBS='-lXt'
 +  fi
 +  AC_SEARCH_LIBS([XmuConvertStandardSelection], [Xmu], [], [], [$OTHERLIBS])
 +  if test "X$LIBS" != "X$OLDLIBS"; then
 +    LIBXMU=$ac_cv_search_XmuConvertStandardSelection
    fi
 -  AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
 -  test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
 -  dnl ac_cv_lib_Xmu_XmuConvertStandardSelection is also referenced below.
 +  LIBS=$OLDLIBS
 +  dnl ac_cv_search_XmuConvertStandardSelection is also referenced below.
  fi
  AC_SUBST(LIBXTR6)
 -
 -dnl FIXME the logic here seems weird, but this is what cpp was doing.
 -dnl Why not just test for libxmu in the normal way?
 -LIBXMU=-lXmu
 -case $opsys in
 -  ## These systems don't supply Xmu.
 -  hpux* | aix4-2 )
 -    test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
 -    ;;
 -  mingw32 )
 -    LIBXMU=
 -    ;;
 -esac
  AC_SUBST(LIBXMU)
  
 -# On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
 -if test "${HAVE_X11}" = "yes"; then
 -  if test "${USE_X_TOOLKIT}" != "none"; then
 -    AC_CHECK_LIB(Xext, XShapeQueryExtension)
 -  fi
 -fi
 -
  LIBXP=
  if test "${USE_X_TOOLKIT}" = "MOTIF"; then
    # OpenMotif may be installed in such a way on some GNU/Linux systems.
  
  ### Start of font-backend (under X11) section.
  if test "${HAVE_X11}" = "yes"; then
 -   PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
 +   EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0],
 +     [HAVE_FC=yes], [HAVE_FC=no])
  
     ## Use -lXft if available, unless `--with-xft=no'.
     HAVE_XFT=maybe
      fi
      if test "x${with_xft}" != "xno"; then
  
 -      PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
 +      EMACS_CHECK_MODULES([XFT], [xft >= 0.13.0], [], [HAVE_XFT=no])
        ## Because xftfont.c uses XRenderQueryExtension, we also
        ## need to link to -lXrender.
        HAVE_XRENDER=no
          AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
            AC_SUBST(XFT_LIBS)
          C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
 -      else
 -        CPPFLAGS="$OLD_CPPFLAGS"
 -        CFLAGS="$OLD_CFLAGS"
 -        LIBS="$OLD_LIBS"
        fi                        # "${HAVE_XFT}" = "yes"
 +      CPPFLAGS=$OLD_CPPFLAGS
 +      CFLAGS=$OLD_CFLAGS
 +      LIBS=$OLD_LIBS
        fi                          # "$HAVE_XFT" != no
      fi                            # "x${with_xft}" != "xno"
  
         dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
         dnl if -lfreetype is not specified.
         dnl The following is needed to set FREETYPE_LIBS.
 -       PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes,
 -                       HAVE_FREETYPE=no)
 +       EMACS_CHECK_MODULES([FREETYPE], [freetype2])
  
         test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
      fi
        AC_DEFINE(HAVE_FREETYPE, 1,
                [Define to 1 if using the freetype and fontconfig libraries.])
        if test "${with_libotf}" != "no"; then
 -      PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
 -                        HAVE_LIBOTF=no)
 +      EMACS_CHECK_MODULES([LIBOTF], [libotf])
        if test "$HAVE_LIBOTF" = "yes"; then
          AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
          AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
      HAVE_M17N_FLT=no
      if test "${HAVE_LIBOTF}" = yes; then
        if test "${with_m17n_flt}" != "no"; then
 -      PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
 +      EMACS_CHECK_MODULES([M17N_FLT], [m17n-flt])
        if test "$HAVE_M17N_FLT" = "yes"; then
          AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
        fi
@@@ -3035,6 -3073,67 +3044,6 @@@ elif test "${HAVE_X11}" = "yes" || tes
  fi
  AC_SUBST(LIBJPEG)
  
 -### Use -lpng if available, unless `--with-png=no'.
 -### mingw32 doesn't use -lpng, since it loads the library dynamically.
 -HAVE_PNG=no
 -LIBPNG=
 -if test "${opsys}" = "mingw32"; then
 -  if test "${with_png}" != "no"; then
 -    AC_CHECK_HEADER(png.h, HAVE_PNG=yes, HAVE_PNG=no)
 -  fi
 -  if test "${HAVE_PNG}" = "yes"; then
 -    AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
 -
 -    AC_CHECK_DECL(png_longjmp,
 -      [],
 -      [AC_DEFINE(PNG_DEPSTRUCT, [],
 -       [Define to empty to suppress deprecation warnings when building
 -        with --enable-gcc-warnings and with libpng versions before 1.5,
 -        which lack png_longjmp.])],
 -      [[#ifdef HAVE_LIBPNG_PNG_H
 -      # include <libpng/png.h>
 -      #else
 -      # include <png.h>
 -      #endif
 -      ]])
 -  fi
 -elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
 -  if test "${with_png}" != "no"; then
 -    # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
 -    # in /usr/include/libpng.
 -    AC_CHECK_HEADERS(png.h libpng/png.h, break)
 -    if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
 -      AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
 -    fi
 -  fi
 -
 -  if test "${HAVE_PNG}" = "yes"; then
 -    AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library.])
 -
 -    dnl Some systems, eg NetBSD 6, only provide eg "libpng16", not "libpng".
 -    lpng=`libpng-config --libs 2> /dev/null`
 -    case $lpng in
 -      -l*) : ;;
 -      *) lpng="-lpng" ;;
 -    esac
 -    LIBPNG="$lpng -lz -lm"
 -
 -    AC_CHECK_DECL(png_longjmp,
 -      [],
 -      [AC_DEFINE(PNG_DEPSTRUCT, [],
 -       [Define to empty to suppress deprecation warnings when building
 -        with --enable-gcc-warnings and with libpng versions before 1.5,
 -        which lack png_longjmp.])],
 -      [[#ifdef HAVE_LIBPNG_PNG_H
 -      # include <libpng/png.h>
 -      #else
 -      # include <png.h>
 -      #endif
 -      ]])
 -  fi
 -fi
 -AC_SUBST(LIBPNG)
 -
  HAVE_ZLIB=no
  LIBZ=
  if test "${with_zlib}" != "no"; then
@@@ -3054,69 -3153,6 +3063,69 @@@ if test "${HAVE_ZLIB}" = "yes"; the
  fi
  AC_SUBST(LIBZ)
  
 +### Use -lpng if available, unless `--with-png=no'.
 +HAVE_PNG=no
 +LIBPNG=
 +PNG_CFLAGS=
 +if test "${NS_IMPL_COCOA}" = yes; then
 +  : # Nothing to do
 +elif test "${with_png}" != no; then
 +  # mingw32 loads the library dynamically.
 +  if test "$opsys" = mingw32; then
 +    AC_CHECK_HEADER([png.h], [HAVE_PNG=yes])
 +  elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
 +    AC_MSG_CHECKING([for png])
 +    png_cflags=`(libpng-config --cflags) 2>&AS_MESSAGE_LOG_FD` &&
 +    png_libs=`(libpng-config --libs) 2>&AS_MESSAGE_LOG_FD` || {
 +      # libpng-config does not work; configure by hand.
 +      # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
 +      # in /usr/include/libpng.
 +      if test -r /usr/include/libpng/png.h &&
 +       test ! -r /usr/include/png.h; then
 +      png_cflags=-I/usr/include/libpng
 +      else
 +      png_cflags=
 +      fi
 +      png_libs='-lpng'
 +    }
 +    SAVE_CFLAGS=$CFLAGS
 +    SAVE_LIBS=$LIBS
 +    CFLAGS="$CFLAGS $png_cflags"
 +    LIBS="$png_libs -lz -lm $LIBS"
 +    AC_LINK_IFELSE(
 +      [AC_LANG_PROGRAM([[#include <png.h>]],
 +       [[return !png_get_channels (0, 0);]])],
 +      [HAVE_PNG=yes
 +       PNG_CFLAGS=`AS_ECHO(["$png_cflags"]) | sed -e "$edit_cflags"`
 +       LIBPNG=$png_libs
 +       # $LIBPNG requires explicit -lz in some cases.
 +       # We don't know what those cases are, exactly, so play it safe and
 +       # append -lz to any nonempty $LIBPNG, unless we're already using LIBZ.
 +       if test -n "$LIBPNG" && test -z "$LIBZ"; then
 +       LIBPNG="$LIBPNG -lz"
 +       fi])
 +    CFLAGS=$SAVE_CFLAGS
 +    LIBS=$SAVE_LIBS
 +    AC_MSG_RESULT([$HAVE_PNG])
 +  fi
 +fi
 +if test $HAVE_PNG = yes; then
 +  AC_DEFINE([HAVE_PNG], [1], [Define to 1 if you have the png library.])
 +
 +  SAVE_CFLAGS=$CFLAGS
 +  CFLAGS="$CFLAGS $PNG_CFLAGS"
 +  AC_CHECK_DECL([png_longjmp],
 +    [],
 +    [AC_DEFINE([PNG_DEPSTRUCT], [],
 +       [Define to empty to suppress deprecation warnings when building
 +      with --enable-gcc-warnings and with libpng versions before 1.5,
 +      which lack png_longjmp.])],
 +    [[#include <png.h>
 +    ]])
 +  CFLAGS=$SAVE_CFLAGS
 +fi
 +AC_SUBST(LIBPNG)
 +AC_SUBST(PNG_CFLAGS)
  
  ### Use -ltiff if available, unless `--with-tiff=no'.
  ### mingw32 doesn't use -ltiff, since it loads the library dynamically.
@@@ -3249,6 -3285,10 +3258,6 @@@ if test "${HAVE_X11}" = "yes"; the
    if test "${HAVE_X_SM}" = "yes"; then
      AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
      LIBXSM="-lSM -lICE"
 -    case "$LIBS" in
 -      *-lSM*) ;;
 -      *)      LIBS="$LIBXSM $LIBS" ;;
 -    esac
    fi
  fi
  AC_SUBST(LIBXSM)
@@@ -3258,13 -3298,14 +3267,13 @@@ HAVE_XRANDR=n
  if test "${HAVE_X11}" = "yes"; then
    XRANDR_REQUIRED=1.2.2
    XRANDR_MODULES="xrandr >= $XRANDR_REQUIRED"
 -  PKG_CHECK_MODULES(XRANDR, $XRANDR_MODULES, HAVE_XRANDR=yes, HAVE_XRANDR=no)
 +  EMACS_CHECK_MODULES([XRANDR], [$XRANDR_MODULES])
    if test $HAVE_XRANDR = no; then
      # Test old way in case pkg-config doesn't have it (older machines).
      AC_CHECK_HEADER(X11/extensions/Xrandr.h,
        [AC_CHECK_LIB(Xrandr, XRRGetScreenResources, HAVE_XRANDR=yes)])
      if test $HAVE_XRANDR = yes; then
        XRANDR_LIBS=-lXrandr
 -      AC_SUBST(XRANDR_LIBS)
      fi
    fi
    if test $HAVE_XRANDR = yes; then
      AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
    fi
  fi
 +AC_SUBST(XRANDR_CFLAGS)
 +AC_SUBST(XRANDR_LIBS)
  
  ### Use Xinerama (-lXinerama) if available
  HAVE_XINERAMA=no
  if test "${HAVE_X11}" = "yes"; then
    XINERAMA_REQUIRED=1.0.2
    XINERAMA_MODULES="xinerama >= $XINERAMA_REQUIRED"
 -  PKG_CHECK_MODULES(XINERAMA, $XINERAMA_MODULES, HAVE_XINERAMA=yes,
 -                    HAVE_XINERAMA=no)
 +  EMACS_CHECK_MODULES([XINERAMA], [$XINERAMA_MODULES])
    if test $HAVE_XINERAMA = no; then
      # Test old way in case pkg-config doesn't have it (older machines).
      AC_CHECK_HEADER(X11/extensions/Xinerama.h,
        [AC_CHECK_LIB(Xinerama, XineramaQueryExtension, HAVE_XINERAMA=yes)])
      if test $HAVE_XINERAMA = yes; then
        XINERAMA_LIBS=-lXinerama
 -      AC_SUBST(XINERAMA_LIBS)
      fi
    fi
    if test $HAVE_XINERAMA = yes; then
      AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 if you have the Xinerama extension.])
    fi
  fi
 +AC_SUBST(XINERAMA_CFLAGS)
 +AC_SUBST(XINERAMA_LIBS)
  
 +### Use Xfixes (-lXfixes) if available
 +HAVE_XFIXES=no
 +if test "${HAVE_X11}" = "yes"; then
 +  XFIXES_REQUIRED=4.0.0
 +  XFIXES_MODULES="xfixes >= $XFIXES_REQUIRED"
 +  EMACS_CHECK_MODULES([XFIXES], [$XFIXES_MODULES])
 +  if test $HAVE_XFIXES = no; then
 +    # Test old way in case pkg-config doesn't have it (older machines).
 +    AC_CHECK_HEADER(X11/extensions/Xfixes.h,
 +      [AC_CHECK_LIB(Xfixes, XFixesHideCursor, HAVE_XFIXES=yes)])
 +    if test $HAVE_XFIXES = yes; then
 +      XFIXES_LIBS=-lXfixes
 +    fi
 +  fi
 +  if test $HAVE_XFIXES = yes; then
 +    AC_DEFINE(HAVE_XFIXES, 1, [Define to 1 if you have the Xfixes extension.])
 +  fi
 +fi
 +AC_SUBST(XFIXES_CFLAGS)
 +AC_SUBST(XFIXES_LIBS)
  
  ### Use libxml (-lxml2) if available
  ### mingw32 doesn't use -lxml2, since it loads the library dynamically.
  HAVE_LIBXML2=no
  if test "${with_xml2}" != "no"; then
    ### I'm not sure what the version number should be, so I just guessed.
 -  PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
 +  EMACS_CHECK_MODULES([LIBXML2], [libxml-2.0 > 2.6.17])
    # Built-in libxml2 on OS X 10.8 lacks libxml-2.0.pc.
    if test "${HAVE_LIBXML2}" != "yes" -a "$opsys" = "darwin"; then
      SAVE_CPPFLAGS="$CPPFLAGS"
    fi
    if test "${HAVE_LIBXML2}" = "yes"; then
      if test "${opsys}" != "mingw32"; then
 -      LIBS="$LIBXML2_LIBS $LIBS"
 -      AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
 +      AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no
 +        [$LIBXML2_LIBS])
      else
        LIBXML2_LIBS=""
      fi
@@@ -3375,17 -3394,19 +3384,17 @@@ if test $emacs_cv_netdb_declares_h_errn
    AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
  fi
  
 -# sqrt and other floating-point functions such as fmod and frexp
 -# are found in -lm on most systems, but mingw32 doesn't use -lm.
 -if test "${opsys}" != "mingw32"; then
 -  AC_CHECK_LIB(m, sqrt)
 -fi
 -
  # Check for mail-locking functions in a "mail" library.  Probably this should
  # have the same check as for liblockfile below.
  AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
  if test $have_mail = yes; then
    LIBS_MAIL=-lmail
 -  LIBS="$LIBS_MAIL $LIBS"
    AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
 +
 +  OLD_LIBS=$LIBS
 +  LIBS="$LIBS_MAIL $LIBS"
 +  AC_CHECK_FUNCS(touchlock)
 +  LIBS=$OLD_LIBS
  else
    LIBS_MAIL=
  fi
@@@ -3393,6 -3414,7 +3402,6 @@@ dnl Debian, at least
  AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
  if test $have_lockfile = yes; then
     LIBS_MAIL=-llockfile
 -   LIBS="$LIBS_MAIL $LIBS"
     AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
  else
  # If we have the shared liblockfile, assume we must use it for mail
@@@ -3457,19 -3479,18 +3466,19 @@@ case "$mail_lock" i
  esac
  AC_SUBST(BLESSMAIL_TARGET)
  
 -
 +OLD_LIBS=$LIBS
 +LIBS="$LIB_MATH $LIBS"
  AC_CHECK_FUNCS(accept4 gethostname \
  getrusage get_current_dir_name \
 -lrand48 \
 +lrand48 random rint \
  select getpagesize setlocale \
  getrlimit setrlimit shutdown getaddrinfo \
  strsignal setitimer \
  sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
 -gai_strerror getline getdelim sync \
 +gai_strerror sync \
  getpwent endpwent getgrent endgrent \
 -touchlock \
  cfmakeraw cfsetspeed copysign __executable_start log2)
 +LIBS=$OLD_LIBS
  
  dnl No need to check for aligned_alloc and posix_memalign if using
  dnl gmalloc.o, as it supplies them.  Don't use these functions on
@@@ -3478,6 -3499,17 +3487,6 @@@ if test -z "$GMALLOC_OBJ" && test "$ops
    AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
  fi
  
 -## Eric Backus <ericb@lsid.hp.com> says, HP-UX 9.x on HP 700 machines
 -## has a broken `rint' in some library versions including math library
 -## version number A.09.05.
 -## You can fix the math library by installing patch number PHSS_4630.
 -## But we can fix it more reliably for Emacs by just not using rint.
 -## We also skip HAVE_RANDOM - see comments in src/conf_post.h.
 -case $opsys in
 -   hpux*) : ;;
 -   *) AC_CHECK_FUNCS(random rint) ;;
 -esac
 -
  dnl Cannot use AC_CHECK_FUNCS
  AC_CACHE_CHECK([for __builtin_unwind_init],
               emacs_cv_func___builtin_unwind_init,
@@@ -3694,7 -3726,6 +3703,7 @@@ DESLIB
  KRB4LIB=
  
  if test "${with_kerberos}" != no; then
 +  OLD_LIBS=$LIBS
    AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
    if test $have_com_err = yes; then
      COM_ERRLIB=-lcom_err
                                       [AC_CHECK_HEADERS(kerberos/krb.h)])])
    fi
    AC_CHECK_HEADERS(com_err.h)
 +  LIBS=$OLD_LIBS
  fi
  
  AC_SUBST(COM_ERRLIB)
@@@ -3826,19 -3856,11 +3835,19 @@@ AC_FUNC_FOR
  
  AC_CHECK_FUNCS(snprintf)
  
 -dnl Check this late.  It depends on what other libraries (lrsvg, Gtk+ etc)
 -dnl Emacs uses.
 +dnl Check for glib.  This differs from other library checks in that
 +dnl Emacs need not link to glib unless some other library is already
 +dnl linking to glib.  Although glib provides no facilities that Emacs
 +dnl needs for its own purposes, when glib is present Emacs needs to
 +dnl use primitives like g_main_context_query to avoid clashing with
 +dnl glib at a low level.
 +dnl
 +dnl Check this late, since it depends on $GTK_CFLAGS etc.
  XGSELOBJ=
  OLDCFLAGS="$CFLAGS"
  OLDLIBS="$LIBS"
 +CFLAGS="$CFLAGS $GTK_CFLAGS $RSVG_CFLAGS $DBUS_CFLAGS $SETTINGS_CFLAGS"
 +LIBS="$LIBS $GTK_LIBS $RSVG_LIBS $DBUS_LIBS $SETTINGS_LIBS"
  CFLAGS="$CFLAGS $GFILENOTIFY_CFLAGS"
  LIBS="$LIBS $GFILENOTIFY_LIBS"
  AC_MSG_CHECKING([whether GLib is linked in])
@@@ -3900,6 -3922,14 +3909,6 @@@ if test "${opsys}" != "mingw32"; the
       in the full name stands for the login id.])
  fi
  
 -dnl Every platform that uses configure supports this.
 -dnl There is a create-lockfiles option you can
 -dnl customize if you do not want the lock files to be written.
 -dnl So it is not clear that this #define still needs to exist.
 -AC_DEFINE(CLASH_DETECTION, 1, [Define if you want lock files to be written,
 -  so that Emacs can tell instantly when you try to modify a file that
 -  someone else has modified in his/her Emacs.])
 -
  dnl Everybody supports this, except MS.
  dnl Seems like the kind of thing we should be testing for, though.
  ## Note: PTYs are broken on darwin <6.  Use at your own risk.
@@@ -3974,7 -4004,7 +3983,7 @@@ AH_TEMPLATE(NO_EDITRES, [Define if XEdi
  case $opsys in
    aix4-2)
      dnl Unfortunately without libXmu we cannot support EditRes.
 -    if test x$ac_cv_lib_Xmu_XmuConvertStandardSelection != xyes; then
 +    if test "x$ac_cv_search_XmuConvertStandardSelection" = xno; then
        AC_DEFINE(NO_EDITRES, 1)
      fi
      ;;
@@@ -4269,6 -4299,28 +4278,6 @@@ case $opsys i
  esac
  
  
 -dnl Used in lisp.h, emacs.c, vm-limit.c
 -dnl NEWS.18 describes this as "a number which contains
 -dnl the high bits to be inclusive or'ed with pointers that are unpacked."
 -AH_TEMPLATE(DATA_SEG_BITS, [Extra bits to be or'd in with any pointers
 -stored in a Lisp_Object.])
 -dnl if Emacs uses fewer than 32 bits for the value field of a LISP_OBJECT.
 -
 -case $opsys in
 -  aix*)
 -    dnl This works with 32-bit executables; Emacs doesn't support 64-bit.
 -    AC_DEFINE(DATA_SEG_BITS, [0x20000000])
 -    ;;
 -  hpux*)
 -    dnl The data segment on this machine always starts at address 0x40000000.
 -    AC_DEFINE(DATA_SEG_BITS, [0x40000000])
 -    ;;
 -  irix6-5)
 -    AC_DEFINE(DATA_SEG_BITS, [0x10000000])
 -    ;;
 -esac
 -
 -
  AH_TEMPLATE(TAB3, [Undocumented.])
  
  case $opsys in
@@@ -4532,7 -4584,6 +4541,7 @@@ esa
  # Set up the CFLAGS for real compilation, so we can substitute it.
  CFLAGS="$REAL_CFLAGS"
  CPPFLAGS="$REAL_CPPFLAGS"
 +LIBS="$REAL_LIBS"
  
  ## Hack to detect a buggy GCC version.
  if test "x$GCC" = xyes \
@@@ -4907,9 -4958,9 +4916,9 @@@ if test "${HAVE_GTK}" = "yes"; the
  fi
  
  if test $USE_ACL -ne 0; then
 -  acl_summary="yes $LIB_ACL"
 +  ACL_SUMMARY="yes $LIB_ACL"
  else
 -  acl_summary=no
 +  ACL_SUMMARY=no
  fi
  
  echo "
  echo "  Where do we find X Windows libraries?                   Standard dirs"
  fi
  
 +optsep=
 +emacs_config_features=
 +for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS \
 +  GCONF GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT \
 +  LIBOTF XFT ZLIB; do
 +
 +    case $opt in
 +      NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
 +      *) eval val=\${HAVE_$opt} ;;
 +    esac
 +    test x"$val" = xno && continue
 +    AS_VAR_APPEND([emacs_config_features], ["$optsep$opt"])
 +    optsep=' '
 +done
 +AC_DEFINE_UNQUOTED(EMACS_CONFIG_FEATURES, "${emacs_config_features}",
 +  [Summary of some of the main features enabled by configure.])
 +
  echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
  echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
  echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
@@@ -4967,7 -5001,7 +4976,7 @@@ echo "  Does Emacs use -ldbus
  echo "  Does Emacs use -lgconf?                                 ${HAVE_GCONF}"
  echo "  Does Emacs use GSettings?                               ${HAVE_GSETTINGS}"
  echo "  Does Emacs use a file notification library?             ${NOTIFY_SUMMARY}"
 -echo "  Does Emacs use access control lists?                    ${acl_summary}"
 +echo "  Does Emacs use access control lists?                    ${ACL_SUMMARY}"
  echo "  Does Emacs use -lselinux?                               ${HAVE_LIBSELINUX}"
  echo "  Does Emacs use -lgnutls?                                ${HAVE_GNUTLS}"
  echo "  Does Emacs use -lxml2?                                  ${HAVE_LIBXML2}"
diff --combined doc/emacs/ChangeLog
@@@ -1,20 -1,22 +1,26 @@@
 -2014-05-21  Eli Zaretskii  <eliz@gnu.org>
++2014-05-26  Eli Zaretskii  <eliz@gnu.org>
+       * frames.texi (Fonts): Clarify which frames are affected by
+       setting font from the menu and in default-frame-alist.
+       (Bug#17532)
 -2014-05-12  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-14  Eli Zaretskii  <eliz@gnu.org>
  
 -      * mule.texi (Language Environments): Remove unused @anchor.
 -      (Bug#17479)
 +      * mule.texi (Language Environments): Remove unused @anchor.  (Bug#17479)
  
 -2014-05-02  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-04  Eli Zaretskii  <eliz@gnu.org>
  
        * trouble.texi (Lossage, DEL Does Not Delete, Stuck Recursive)
        (Screen Garbled, Text Garbled, After a Crash, Emergency Escape)
        (Bug Criteria, Understanding Bug Reporting, Checklist, Service):
        Improve indexing.
  
 -2014-04-29  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-04  Leo Liu  <sdl.web@gmail.com>
 +
 +      * cal-xtra.texi (Non-Gregorian Diary): Document new features for
 +      Chinese calendar and diary.
 +
 +2014-04-30  Eli Zaretskii  <eliz@gnu.org>
  
        * trouble.texi (Quitting, DEL Does Not Delete, Emergency Escape)
        (Bug Criteria): Fix usage of @kbd and @key.  (Bug#17362)
  
        * anti.texi (Antinews): Fix usage of @kbd and @key.
  
 -2014-04-26  Eli Zaretskii  <eliz@gnu.org>
 -
        * sending.texi (Mail Signature): Document signature variables used
        by Message mode.  (Bug#17308)
  
 -2014-04-21  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-22  Eli Zaretskii  <eliz@gnu.org>
  
        * buffers.texi (Uniquify): Clarify the default uniquification.
  
        EMACSLOADPATH.  Index all the environment variables.
        (Misc Variables): Index all the environment variables.
  
 -2014-04-13  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * Makefile.in (infoclean): Be consistent about reporting failures.
 +      Do not fail merely because the info directory does not exist,
 +      but do fail if it exists and can't be cleaned.
 +
 +2014-04-16  Eli Zaretskii  <eliz@gnu.org>
  
        * display.texi (Cursor Display): Explain better how to customize
        'blink-cursor-blinks'.
  
 -2014-04-05  Glenn Morris  <rgm@gnu.org>
 +2014-04-07  Glenn Morris  <rgm@gnu.org>
  
        * trouble.texi (Checklist): Dribble files may contain passwords.
  
 -2014-04-04  Glenn Morris  <rgm@gnu.org>
 -
        * files.texi (Backup Names):
        * arevert-xtra.texi (Supporting additional buffers):
        Update for default values of some -function vars no longer being nil.
        (Supporting additional buffers):
        Update for buffer-stale-function also applying to file-buffers.
  
 +2014-03-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * custom.texi (Terminal Init): Mention term-file-aliases.
 +
 +2014-03-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi (Acknowledgments): Remove reference to obsolete file.
 +
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * help.texi (Help Files): Update C-h g description.
 +
  2014-03-16  Dmitry Gutov  <dgutov@yandex.ru>
  
        * programs.texi (Matching): Update the missed spot.  (Bug#17008)
diff --combined doc/lispref/ChangeLog
 -2014-05-17  Eli Zaretskii  <eliz@gnu.org>
++2014-05-26  Eli Zaretskii  <eliz@gnu.org>
+       * display.texi (Invisible Text): Clarify the description of
+       line-move-ignore-invisible.  (Bug#17511)
 -2014-05-07  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-05-22  Leo Liu  <sdl.web@gmail.com>
 +
 +      * sequences.texi (Sequence Functions): Don't mention when and how
 +      SEQ to nreverse is mutated.
 +
 +2014-05-21  Leo Liu  <sdl.web@gmail.com>
 +
 +      * sequences.texi (Sequence Functions): Update nreverse.
 +
 +2014-05-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Allow any non-nil value to count as true in bool-vector.
 +      * sequences.texi (Bool-Vectors): Coalesce discussion of how to
 +      print them.  bool-vector's args need not be t or nil.
 +
 +2014-05-19  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * sequences.texi (Bool-vectors): Mention bool-vector.
 +
 +2014-05-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume C99 or later (Bug#17487).
 +      * internals.texi (C Dialect): Document this.
 +
 +2014-05-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * lists.texi (Building Cons Cells and Lists): Remove
 +      description of `reverse' and `'nreverse' to generalize them...
 +      * sequences.texi (Sequences): ...for sequences here.
 +
 +2014-05-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.texi (Changing Files): Mention with-file-modes.
 +
 +2014-05-08  Paul Eggert  <eggert@cs.ucla.edu>
  
        * internals.texi (C Dialect): New section.
        (C Integer Types): Mention bool_bf.
  
 -2014-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-30  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * processes.texi (Filter Functions, Sentinels): Advertise add-function.
  
 -2014-04-24  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * windows.texi (Window Configurations, Window Configurations):
 +      Window configs don't store marks any more.
 +
 +2014-04-25  Eli Zaretskii  <eliz@gnu.org>
  
        * strings.texi (Text Comparison): Mention equal-including-properties
        for when text properties of the strings matter for comparison.
  
 -2014-04-21  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-22  Eli Zaretskii  <eliz@gnu.org>
  
        * text.texi (Registers): Document register-read-with-preview.
  
        * internals.texi (Building Emacs): Improve indexing.
  
 -2014-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-17  Daniel Colascione  <dancol@dancol.org>
  
 -      * display.texi (Overlay Properties): Reword the doc of `priority'.
 -      (Finding Overlays): Document new arg of `overlays-at'.
 +      * frames.texi (Terminal Parameters): Document new
 +      tty-mode-set-strings and tty-mode-reset-strings terminal
 +      parameters.
  
 -2014-04-05  Glenn Morris  <rgm@gnu.org>
 +2014-04-17  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * os.texi (Recording Input): Dribble files may contain passwords.
 +      * Makefile.in (infoclean): Be consistent about reporting failures.
 +
 +2014-04-09  Daniel Colascione  <dancol@dancol.org>
 +
 +      * errors.texi (Standard Errors): Document required error
 +      parameters for `scan-error'.
 +
 +      * positions.texi (List Motion): Explain new `up-list' arguments.
 +      Mention `backward-up-list'.
  
 -2014-04-04  Glenn Morris  <rgm@gnu.org>
 +2014-04-08  Daniel Colascione  <dancol@dancol.org>
 +
 +      * minibuf.texi (Programmed Completion): Improve phrasing, remove
 +      incorrect bullet count.
 +
 +2014-04-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * os.texi (Recording Input): Dribble files may contain passwords.
  
        * backups.texi (Making Backups, Reverting):
        Update for default values of some -function vars no longer being nil.
        (Reverting): Update for buffer-stale-function
        also applying to file-buffers.
  
 -2014-03-25  Eli Zaretskii  <eliz@gnu.org>
 +2014-03-31  Daniel Colascione  <dancol@dancol.org>
 +
 +      * minibuf.texi (Completion in Buffers): Discuss using lazy
 +      completion tables for inline completion.
 +
 +2014-03-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * os.texi (Terminal-Specific): Mention term-file-aliases.
 +
 +2014-03-26  Eli Zaretskii  <eliz@gnu.org>
  
        * files.texi (Kinds of Files): Improve documentation of
        file-symlink-p.  (Bug#17073)  Add cross-references.
  
 -2014-03-24  Barry O'Reilly  <gundaetiapo@gmail.com>
 +2014-03-26  Barry O'Reilly  <gundaetiapo@gmail.com>
  
        * markers.texi (Moving Marker Positions): The 2014-03-02 doc
        change mentioning undo's inability to handle relocated markers no
        * text.texi (Undo): Expand documentation of (TEXT . POS) and
        (MARKER . ADJUSTMENT) undo elements.
  
 +2014-03-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.texi (File Locks): All systems support locking.
 +
  2014-03-22  Glenn Morris  <rgm@gnu.org>
  
 +      * commands.texi (Defining Commands):
 +      Mention that interactive-only also affects describe-function.
 +
 +      * functions.texi (Declare Form): Add interactive-only.
 +      * commands.texi (Defining Commands) Mention declare.
 +
        * commands.texi (Defining Commands): List interactive-only values.
  
  2014-03-22  Eli Zaretskii  <eliz@gnu.org>
        * functions.texi (Core Advising Primitives): Fix cross-reference
        in last change.
  
 -2014-03-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-03-22  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * functions.texi (Advising Functions): Explain a bit more how
        arguments work.
diff --combined doc/misc/ChangeLog
@@@ -1,33 -1,33 +1,46 @@@
 -2014-05-24  Paul Eggert  <eggert@cs.ucla.edu>
++2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
+       Specify coding if Latin-1 Emacs would misinterpret (Bug#17575).
+       * htmlfontify.texi, org.texi: Add "coding: utf-8".
 -2014-05-23  Stephen Berman  <stephen.berman@gmx.net>
++2014-05-26  Stephen Berman  <stephen.berman@gmx.net>
+       * todo-mode.texi: Update in light of changes due to bug#17482.
+       Replace numerous mistaken uses of literal quotes with proper
+       Texinfo markup.
+       (Todo Mode Entry Points): Comment out reference to using find-file
+       or Dired to visit Todo files, since this has been disabled (bug#17482).
 -2014-05-06  Michael Albinus  <michael.albinus@gmx.de>
 +2014-05-20  Leo Liu  <sdl.web@gmail.com>
 +
 +      * cl.texi (List Functions, Efficiency Concerns): Update cl-endp.
 +
 +2014-05-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * texinfo.tex: Update from gnulib.
 +
 +2014-05-08  Michael Albinus  <michael.albinus@gmx.de>
  
        * tramp.texi (Frequently Asked Questions): Mention HISTFILE
        setting in ~/.ssh/environment.
  
 -2014-05-02  Stephen Berman  <stephen.berman@gmx.net>
 +2014-05-04  Stephen Berman  <stephen.berman@gmx.net>
  
        * todo-mode.texi: Update, improve exposition, add cross
        references, fix typos.
        (Inserting New Items, Editing Item Headers and Text): Rewrite to
        document new user interface.
  
 -2014-05-01  Glenn Morris  <rgm@gnu.org>
 +2014-05-04  Glenn Morris  <rgm@gnu.org>
  
        * autotype.texi (Skeleton Language):
        * message.texi (Header Commands): Replace `iff'.
  
 +2014-05-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * vhdl-mode.texi: Add "@documentencoding UTF-8",
 +      since this is a toplevel .texi file.
 +
  2014-04-22  Bastien Guerry  <bzg@gnu.org>
  
        * org.texi (Installation): Be more clear on why installing Org
        * org.texi (Top, Exporting): Org has its own documentation and
        should therefore be removed from "Other build-in back-ends".
  
 +2014-04-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * cl.texi (Structures): Remove cl-struct-set-slot-value.
 +
 +2014-04-20  Daniel Colascione  <dancol@dancol.org>
 +
 +      * cl.texi (Declarations): Document changes to `cl-the' and defstruct functions.
 +
 +2014-04-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * Makefile.in (infoclean): Be consistent about reporting failures.
 +
 +2014-03-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (INFO_COMMON): Add vhdl-mode.
 +      (vhdl_mode_deps, vhdl-mode, $(buildinfodir)/vhdl-mode$(INFO_EXT))
 +      (vhdl-mode.dvi, vhdl-mode.pdf, vhdl-mode.html): New rules/variables.
 +
 +      * vhdl-mode.texi: General clean-up.  Set copyright to FSF, add license.
 +      Remove hand-written node pointers.  Remove info re old Emacs versions.
 +      Markup fixes.
 +      (Getting Connected): Remove irrelevant info.
 +      (Indentation Commands, Requirements): Remove empty/irrelevant nodes.
 +      (Frequently Asked Questions): Electric indent is now enabled.
 +
 +2014-03-27  Reto Zimmermann  <reto@gnu.org>
 +          Rod Whitby  <software.vhdl-mode@rwhitby.net>
 +
 +      * vhdl-mode.texi: New file, imported from upstream vhdl-mode.
 +
  2014-03-26  Paul Eggert  <eggert@cs.ucla.edu>
  
        * texinfo.tex: Update from gnulib.
  
 -2014-03-24  Michael Albinus  <michael.albinus@gmx.de>
 +2014-03-26  Michael Albinus  <michael.albinus@gmx.de>
  
        * tramp.texi (Frequently Asked Questions): Add fish shell settings.
  
 +2014-03-23  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (Ma Gnus): Mention header attachment buttons.
 +
 +2014-03-23  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * emacs-mime.texi (MML Definition): Document recipient-filename.
 +
 +2014-03-23  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (MIME Commands): Mention
 +      gnus-mime-buttonize-attachments-in-header and
 +      gnus-mime-display-attachment-buttons-in-header.
 +
 +2014-03-23  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.texi (Forwarding): Mention
 +      `message-forward-included-headers'.
 +
 +2014-03-23  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi: w3 is no longer supported by Gnus.
 +
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * efaq.texi (Informational files for Emacs): Do not mention etc/GNU.
 +
  2014-03-21  Glenn Morris  <rgm@gnu.org>
  
        * ede.texi (ede-linux):
diff --combined etc/ChangeLog
@@@ -1,31 -1,8 +1,36 @@@
 -2014-05-24  Paul Eggert  <eggert@cs.ucla.edu>
++2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
+       Specify coding if Latin-1 Emacs would misinterpret (Bug#17575).
+       * ETAGS.EBNF, NEWS, ORG-NEWS: Add "coding: utf-8".
 +2014-05-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * NEWS: Assume C99 or later (Bug#17487).
 +
 +2014-05-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't require pkg-config when building from repository.
 +      * NEWS: Prefer './configure FOO=BAR' to 'FOO=BAR ./configure'.
 +      * PROBLEMS (Build-time-problems): Remove pkg-config problem
 +      that is no longer an issue.
 +
 +2014-05-13  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * PROBLEMS: Mention potential problems with
 +      --enable-link-time-optimization and clang on Fedora 20.
 +
 +2014-05-04  Leo Liu  <sdl.web@gmail.com>
 +
 +      * NEWS: Mention support for Chinese dates in calendar and diary.
 +
 +2014-04-20  Daniel Colascione  <dancol@dancol.org>
 +
 +      * NEWS: Mention new struct functions and changes to `cl-the'.
 +
 +2014-04-17  Daniel Colascione  <dancol@dancol.org>
 +
 +      * NEWS: Mention bracketed paste support.
 +
  2014-04-11  Glenn Morris  <rgm@gnu.org>
  
        * refcards/cs-dired-ref.tex, refcards/cs-refcard.tex:
        * refcards/sk-refcard.tex, refcards/sk-survival.tex:
        Input "utf8off", which seems to be needed.
  
 +2014-04-01  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * NEWS: `url-handler-mode' passes operations to Tramp for some
 +      protocols.
 +
 +2014-03-28  Tassilo Horn  <tsdh@gnu.org>
 +
 +      * themes/tsdh-light-theme.el (tsdh-light): Add gnus-group-* faces.
 +
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * CENSORSHIP, GNU, LINUX-GNU, THE-GNU-PROJECT, WHY-FREE: Replace
 +      contents with pointers to www.gnu.org or emacs.info, mark obsolete.
 +
  2014-03-14  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
  
        * tutorials/TUTORIAL.de: Adapt to recent changes in TUTORIAL.
diff --combined etc/NEWS
+++ b/etc/NEWS
@@@ -22,121 -22,6 +22,121 @@@ When you add a new item, use the approp
  otherwise leave it unmarked.
  
  \f
 +* Installation Changes in Emacs 24.5
 +
 ++++
 +** Building Emacs now requires C99 or later.
 +
 +** Building Emacs now requires GNU make.
 +
 +** By default, Emacs no longer works on IRIX.  We expect that Emacs
 +users are not affected by this, as SGI stopped supporting IRIX in
 +December 2013.  If you are affected, please send a bug report.  You
 +should be able to work around the problem either by porting the Emacs
 +undumping code to GCC under IRIX, or by configuring --with-wide-int,
 +or by sticking with Emacs 24.4.
 +
 +---
 +** The configure option `--with-pkg-config-prog' has been removed.
 +Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
 +
 +\f
 +* Startup Changes in Emacs 24.5
 +
 +\f
 +* Changes in Emacs 24.5
 +
 +---
 +** The default value of `history-length' has increased to 100.
 +
 ++++
 +** The new variable `term-file-aliases' replaces some files from lisp/term.
 +The function `tty-run-terminal-initialization' consults this variable
 +when deciding what terminal-specific initialization code to run.
 +
 +---
 +** New variable `system-configuration-features', listing some of the
 +main features that Emacs was compiled with.  This is mainly intended
 +for use in Emacs bug reports.
 +
 +\f
 +* Editing Changes in Emacs 24.5
 +
 +Emacs now supports "bracketed paste mode" when running on a terminal
 +that supports it.  This facility allows Emacs to understand pasted
 +chunks of text as strings to be inserted instead of interpreting each
 +character in the pasted text as actual user input, resulting in a
 +paste experience similar to that under a window system and significant
 +performance improvements when pasting large amounts of text.
 +
 +\f
 +* Changes in Specialized Modes and Packages in Emacs 24.5
 +
 +---
 +** The Rmail commands d, C-d and u now handle repeat counts
 +to delete or undelete multiple messages.
 +
 +** Calendar and diary
 +
 ++++
 +*** New commands to insert diary entries with Chinese dates:
 +`diary-chinese-insert-anniversary-entry' `diary-chinese-insert-entry'
 +`diary-chinese-insert-monthly-entry'
 +`diary-chinese-insert-yearly-entry'
 +
 ++++
 +*** Calendar can list and mark diary entries with Chinese dates:
 +`diary-chinese-list-entries' and `diary-chinese-mark-entries'.
 +
 +** In sh-mode, you can now use `sh-shell' as a file-local variable to
 +specify the type of shell in use (bash, csh, etc).
 +
 +** The URL package accepts now the protocols "ssh", "scp" and "rsync".
 +When `url-handler-mode' is enabled, file operations for these
 +protocols as well as for "telnet" and "ftp" are passed to Tramp.
 +
 +** Obsolete packages
 +
 +---
 +*** gulp.el
 +
 +\f
 +* New Modes and Packages in Emacs 24.5
 +
 +\f
 +* Incompatible Lisp Changes in Emacs 24.5
 +
 +** window-configurations do not record the buffers's marks any more.
 +
 +** inhibit-modification-hooks now also inhibits lock-file checks as well as
 +active region handling.
 +
 +** deactivate-mark is now buffer-local.
 +
 +** cl-the now asserts that its argument is of the given type.
 +
 +\f
 +* Lisp Changes in Emacs 24.5
 +
 +** New function `function-put' to use instead of `put' for function properties.
 +
 ++++
 +** New properties that can be specified with `declare':
 +*** (interactive-only INSTEAD), tells to use INSTEAD for non-interactive use.
 +*** (pure VAL), if VAL is non-nil, indicates the function is pure.
 +*** (side-effect-free VAL), if VAL is non-nil, indicates the function does not
 +have side effects.
 +
 ++++
 +** New macro `with-file-modes', for evaluating expressions with default file
 +permissions set to temporary values (e.g., for creating private files).
 +
 +** You can access the slots of structures using `cl-struct-slot-value'.
 +
 +\f
 +* Changes in Emacs 24.5 on Non-Free Operating Systems
 +
 +\f
  * Installation Changes in Emacs 24.4
  
  ---
@@@ -1476,7 -1361,6 +1476,6 @@@ This is like the old `eval-after-load'
  *** `generic-make-keywords-list'
  *** `get-upcase-table' (use `case-table-get-table' instead).
  
- +++
  ** `with-wrapper-hook' is obsoleted by `add-function'.
  The few hooks that used with-wrapper-hook are replaced as follows:
  *** `abbrev-expand-function' obsoletes `abbrev-expand-functions'.
@@@ -4187,6 -4071,7 +4186,7 @@@ along with GNU Emacs.  If not, see <htt
  
  \f
  Local variables:
+ coding: utf-8
  mode: outline
  paragraph-separate: "[        \f]*$"
  end:
diff --combined lib-src/ChangeLog
@@@ -1,42 -1,19 +1,52 @@@
 -2014-05-20  Paul Eggert  <eggert@cs.ucla.edu>
++2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
+       Fix rcs2log problems with CVS.
+       Problem reported by Glenn Morris in
+       <http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00277.html>.
+       Plus, fix some security and filename quoting problems.
+       * rcs2log (logdir): Prefer mktemp if available.
+       (logdir, llogdir): Work even if TMPDIR begins with '-' or has spaces.
+       (output_authors, main awk script): Parse more-recent CVS output format.
 -2014-05-03  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-05-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove dependencies on getline and getdelim.
 +      Also, remove update-game-scores's limits on game scores and
 +      simplify its file-locking code.
 +      * update-game-score.c (struct score_entry): Unify the username and
 +      data members to a single user_data member, since they don't need to be
 +      changed independently and getdelim and getline aren't helpful.
 +      Make the score member char *, not intmax_t, so that scores are not
 +      limited to intmax_t.  All uses changed.
 +      (lose_syserr): A zero errno stands for invalid data in score file.
 +      (normalize_integer): New function.
 +      (main): Use it.  Check for invalid scores.  Omit redundant stat check.
 +      (read_score): First arg is now a string, not a FILE *.  All uses
 +      changed.  Do not use getdelim or getline; that's way simpler.
 +      (read_scores): Read the whole file, and let read_score handle each
 +      line.
 +      (score_compare): Compare strings representing integers, not integers.
 +      (write_scores) [DOS_NT]: Eliminate unnecessary chmod.
 +      (lock_file): Simplify locking code, eliminating goto.
 +      Check for unlink failure.
 +
 +2014-05-18  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port ctags+etags build to Sun C 5.12.
 +      * Makefile.in (etags_args): Remove, replacing with ...
 +      (etags_cflags, etags_libs): New macros.  All uses changed.
 +      (ctags${EXEEXT}): Don't compile etags.c, as compiling etags.c in
 +      parallel (once for ctags, once for etags) breaks parallel makes
 +      with compilers that use the source file name to name temporaries,
 +      such as Sun C 5.12.  Instead, compile ctags.c.
 +      * ctags.c: New file.
 +
 +2014-05-04  Paul Eggert  <eggert@cs.ucla.edu>
  
        Handle systems without WCONTINUED consistently.  (Bug#15110, 17339)
        * emacsclient.c (WCONTINUED): Move to ../src/syswait.h.
  
 -2014-04-29  Glenn Morris  <rgm@gnu.org>
 +2014-04-30  Glenn Morris  <rgm@gnu.org>
  
        * Makefile.in ($(DESTDIR)${archlibdir}):
        Avoid non-portable "`\" nesting.  (Bug#17339)
        * update-game-score.c (write_scores): Condition fchmod call on
        DOS_NT, not WINDOWSNT.
  
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (etags_deps, etags_args): New, to reduce duplication.
 +      (etags${EXEEXT}, ctags${EXEEXT}): Use etags_deps, etags_args.
 +
 +      * Makefile.in (etags${EXEEXT}, ebrowse${EXEEXT}, ctags${EXEEXT})
 +      (profile${EXEEXT}, make-docfile${EXEEXT}, movemail${EXEEXT})
 +      (emacsclient${EXEEXT}, emacsclientw${EXEEXT}, hexl${EXEEXT})
 +      (update-game-score${EXEEXT}, emacsclient.res): Use $@.
 +
 +      * Makefile.in (../lib/libgnu.a): Explicitly pass MFLAGS.
 +
 +      * Makefile.in (DONT_INSTALL): Remove test-distrib.
 +      (test-distrib${EXEEXT}): Remove rule.
 +
 +      * test-distrib.c, testfile: Remove.
 +
  2014-03-10  Juanma Barranquero  <lekktu@gmail.com>
  
        * emacsclient.c (main): #ifdef out previous change on Windows.
diff --combined lisp/ChangeLog
 -2014-05-25  Andreas Schwab  <schwab@linux-m68k.org>
++2014-05-26  Andreas Schwab  <schwab@linux-m68k.org>
+       * cus-face.el (custom-face-attributes): Add :distant-foreground.
 -2014-05-25  Martin Rudalics  <rudalics@gmx.at>
++2014-05-26  Martin Rudalics  <rudalics@gmx.at>
 -      * window.el (window--dump-frame): Remove interactive
 -      specification.
++      * window.el (window--dump-frame): Remove interactive specification.
 -2014-05-23  Glenn Morris  <rgm@gnu.org>
++2014-05-26  Glenn Morris  <rgm@gnu.org>
+       * hippie-exp.el (he-line-search-regexp):
+       Handle comint-prompt-regexp containing subgroups.  (Bug#17529)
 -2014-05-23  Stephen Berman  <stephen.berman@gmx.net>
++2014-05-26  Stephen Berman  <stephen.berman@gmx.net>
+       * calendar/todo-mode.el: Remove dependence on auto-mode-alist,
+       to avoid errors when trying to create or visit a file foo.todo
+       located outside to todo-directory, and to allow having such files
+       without them being tied to Todo mode (bug#17482).
+       (todo-show, todo-move-category, todo-merge-category, todo-find-archive)
+       (todo-archive-done-item, todo-find-filtered-items-file)
+       (todo-filter-items, todo-find-item, todo-diary-goto-entry)
+       (todo-category-completions, todo-read-category): When visiting a
+       Todo file, make sure we're in the right mode and the buffer local
+       variables are set.
+       (todo-make-categories-list, todo-reset-nondiary-marker)
+       (todo-reset-done-string, todo-reset-comment-string): After
+       processing all Todo files, kill the buffers of those files that
+       weren't being visited before the processing.
+       (todo-display-as-todo-file, todo-add-to-buffer-list)
+       (todo-visit-files-commands): Comment out.
+       (todo-modes-set-3, todo-mode): Comment out additions to find-file-hook.
+       (auto-mode-alist): Remove add-to-list calls making Todo file
+       extensions unrestrictedly tied to Todo modes.
 -2014-05-23  Stefan Monnier  <monnier@iro.umontreal.ca>
++2014-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * emacs-lisp/nadvice.el (advice--member-p): Change second arg.
+       (advice-function-member-p): Tell it to check both names and functions
+       (bug#17531).
+       (advice--add-function): Adjust call accordingly.
 -2014-05-23  Stephen Berman  <stephen.berman@gmx.net>
++2014-05-26  Stephen Berman  <stephen.berman@gmx.net>
+       * calendar/todo-mode.el: Miscellaneous bug fixes.
+       (todo-delete-file): When deleting an archive but not its todo
+       file, make sure to update the todo file's category sexp.
+       (todo-move-category): Keep the moved category's name unless the
+       file moved to already has a category with that name.  If the
+       numerically last category of the source file was moved, make the
+       first category current to avoid selecting a nonexisting category.
+       (todo-merge-category): Fix implementation to make merging to a
+       category in another file work as documented.  Eliminate now
+       insufficient and unnecessary renaming of archive category, correct
+       document string accordingly, and clarify it.  If the numerically
+       last category of the source file was merged, make the first
+       category current to avoid selecting a nonexisting category.
+       (todo-archive-done-item): When there are marked items and point
+       happens to be on an unmarked item, ignore the latter.  Don't leave
+       point below last item after archiving marked items.
+       (todo-unarchive-items): Fix logic to ensure unarchiving an item
+       from an archive with only one category deletes the archive only
+       when the category is empty after unarchiving.  Make sure the todo
+       file's category sexp is updated.
+       (todo-read-file-name): Allow an existing file name even when it is
+       not required (todo-move-category needs this to work as documented).
+       (todo-add-file): Call todo-validate-name to reject the name of an
+       existing todo file (needed due to fix in todo-read-file-name).
+       (todo-reset-nondiary-marker): Also reset in filtered items files.
+       (todo-reset-done-string, todo-reset-comment-string): Also reset in
+       regexp filtered items files.
+       (todo-reset-highlight-item): Also reset in filtered items files.
+       Fix incorrect variable reference in document string.
 -2014-05-22  Glenn Morris  <rgm@gnu.org>
++2014-05-26  Glenn Morris  <rgm@gnu.org>
+       * window.el (window--dump-frame): Avoid error in --without-x builds.
 -2014-05-21  Glenn Morris  <rgm@gnu.org>
++2014-05-26  Glenn Morris  <rgm@gnu.org>
+       * nxml/nxml-mode.el (xml-mode): Only define this alias once.
 -2014-05-21  Eli Zaretskii  <eliz@gnu.org>
++2014-05-26  Eli Zaretskii  <eliz@gnu.org>
+       * frame.el (set-frame-font): Doc fix.
+       * menu-bar.el (menu-set-font): Doc fix.  (Bug#17532)
 -2014-05-21  Dmitry Gutov  <dgutov@yandex.ru>
++2014-05-26  Dmitry Gutov  <dgutov@yandex.ru>
+       * emacs-lisp/package.el (package--download-one-archive): Use
+       `write-region' instead of `save-buffer' to avoid running various
+       hooks.  (Bug#17155)
+       (describe-package-1): Same.  Insert newline at the end of the
+       buffer if appropriate.
 -2014-05-20  Juri Linkov  <juri@jurta.org>
++2014-05-26  Juri Linkov  <juri@jurta.org>
+       * avoid.el (mouse-avoidance-set-mouse-position): Don't raise frame.
+       (mouse-avoidance-ignore-p): Remove `switch-frame', add `focus-out'.
+       Add more modifiers: meta, control, shift, hyper, super, alt.
+       (Bug#17439)
+       * avoid.el (mouse-avoidance-banish-position): Fix defcustom :options
+       to allow changing its value with `set-variable'.
 -2014-05-20  Stefan Monnier  <monnier@iro.umontreal.ca>
++2014-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * progmodes/scheme.el (scheme-mode-syntax-table): Remove hack for
+       #; comments.
+       (scheme-syntax-propertize, scheme-syntax-propertize-sexp-comment):
+       New functions.
+       (scheme-mode-variables): Set syntax-propertize-function instead of
+       font-lock-syntactic-face-function.
+       (scheme-font-lock-syntactic-face-function): Delete.
+       * emacs-lisp/lisp.el (end-of-defun): Ensure we move (bug#17274).
 -2014-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
+       * emacs-lisp/timer.el (timer-event-handler): Don't run if canceled
+       (bug#17392).
 -2014-05-17  Michael Albinus  <michael.albinus@gmx.de>
++2014-05-26  Michael Albinus  <michael.albinus@gmx.de>
+       * net/tramp-sh.el (tramp-find-inline-encoding): Do not match "%%t"
+       for a temporary file name.
 -2014-05-17  Eli Zaretskii  <eliz@gnu.org>
++2014-05-26  Eli Zaretskii  <eliz@gnu.org>
+       * simple.el (line-move-ignore-invisible): Doc fix.  (Bug#17511)
 -2014-05-16  Michael Albinus  <michael.albinus@gmx.de>
++2014-05-26  Michael Albinus  <michael.albinus@gmx.de>
+       * net/dbus.el (dbus-init-bus, dbus-call-method)
+       (dbus-call-method-asynchronously, dbus-send-signal)
+       (dbus-method-return-internal, dbus-method-error-internal):
+       Check, whether Emacs has been compiled with D-Bus support.  (Bug#17508)
 -2014-05-14  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
++2014-05-26  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
+       * emacs-lisp/eieio-opt.el (eieio-help-class): Correctly deal with
+       methods which do not have a doc string.  (Bug#17490)
 +2014-05-25  Tassilo Horn  <tsdh@gnu.org>
 +
 +      * textmodes/reftex-ref.el (reftex-format-special): Make it work
 +      also for AMS Math's \eqref macro.
 +
 +2014-05-25  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      Arrange to never byte-compile the generated -pkg.el file.
 +
 +      * emacs-lisp/package.el (package-generate-description-file):
 +      Output first-line comment to set buffer-local var `no-byte-compile'.
 +      Suggested by Dmitry Gutov:
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00401.html>.
 +
 +2014-05-25  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      Fix bug: Properly quote args to generated -pkg.el `define-package'.
 +
 +      * emacs-lisp/package.el (package-generate-description-file):
 +      Inline `package--alist-to-plist'; rewrite to selectively
 +      quote alist values that are not self-quoting.
 +      (package--alist-to-plist): Delete func.
 +
 +2014-05-25  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * term/xterm.el (xterm-function-map): Add mapping for shifted
 +      keypad keys.
 +
 +2014-05-24  Daniel Colascione  <dancol@dancol.org>
 +
 +      * progmodes/subword.el (subword-find-word-boundary): Move point to
 +      correct spot before search. (Bug#17580)
 +
 +      * emacs-lisp/nadvice.el (defun): Write in eval-and-compile to avoid
 +      breaking the build.
 +
 +2014-05-24  Leo Liu  <sdl.web@gmail.com>
 +
 +      * calc/calc.el (math-bignum): Handle most-negative-fixnum.  (Bug#17556)
 +
 +2014-05-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion--sreverse): Remove.
 +      (completion--common-suffix): Use `reverse' instead.
 +      * emacs-lisp/regexp-opt.el (regexp-opt-group): Use `reverse' on strings.
 +
 +2014-05-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * shell.el (shell-mode) <shell-dirstack-query>: Bypass bash aliases.
 +
 +2014-05-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      * files.el (interpreter-mode-alist): Add mksh.
 +
 +      * progmodes/sh-script.el (sh-ancestor-alist): Add mksh, a pdksh
 +      derivative.
 +      (sh-alias-alist): Alias /system/bin/sh (Android's system shell) to
 +      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-set-shell): Use `sh-canonicalize-shell' instead of open-coding
 +      the normalization.
 +      (sh-canonicalize-shell): Rewrite to support regexes.
 +
 +2014-05-21  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/cl-lib.el (cl-endp): Fix last change.
 +
 +2014-05-19  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/cl-lib.el (cl-endp): Conform to CL's semantics.
 +
 +2014-05-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * loadup.el:
 +      * play/gametree.el: `track-mouse' is always defined since 2012-11-24.
 +
 +2014-05-14  Sam Steingold  <sds@gnu.org>
 +
 +      * progmodes/python.el (python-shell-get-or-create-process):
 +      Do not bind `current-prefix-arg' so that C-c C-z does not talk
 +      back unless requested.
 +
 +2014-05-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * subr.el (with-file-modes): New macro.
 +      * printing.el (pr-save-file-modes): Make obsolete.
 +      * eshell/esh-util.el (eshell-with-file-modes): Make obsolete.
 +      * emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2):
 +      Add with-file-modes.
 +      * doc-view.el (doc-view-make-safe-dir):
 +      * epg.el (epg--start):
 +      * files.el (locate-user-emacs-file, make-temp-file)
 +      (backup-buffer-copy, move-file-to-trash):
 +      * printing.el (pr-despool-print, pr-call-process, pr-text2ps):
 +      * eshell/esh-util.el (eshell-with-private-file-modes)
 +      (eshell-make-private-directory):
 +      * net/browse-url.el (browse-url-mosaic):
 +      * obsolete/mailpost.el (post-mail-send-it):
 +      * obsolete/pgg-pgp.el (pgg-pgp-verify-region):
 +      * obsolete/pgg-pgp5.el (pgg-pgp5-verify-region):
 +      Use with-file-modes.
 +
 +      * vc/emerge.el (emerge-make-temp-file): Simplify.
 +
  2014-05-14  Stephen Berman <stephen.berman@gmx.net>
              Stefan Monnier  <monnier@iro.umontreal.ca>
  
        Make pointless option obsolete.
        (emerge-temp-file-mode): Make non-functional option obsolete.
  
 -2014-05-13  Michael Albinus  <michael.albinus@gmx.de>
 +2014-05-14  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/browse-url.el (browse-url):
        Use `unhandled-file-name-directory' when setting `default-directory',
        in order to circumvent stalled remote connections.  (Bug#17425)
  
 +2014-05-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * printing.el (subst-char-in-string, make-temp-file, pr-get-symbol):
 +      Optimize on Emacs, which has the relevant functions for ages.
 +
 +2014-05-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (undo-make-selective-list): Obey undo-no-redo.
 +
 +2014-05-12  Sam Steingold  <sds@gnu.org>
 +
 +      * calendar/time-date.el (seconds-to-string): New function to
 +      pretty print time delay in seconds.
 +
  2014-05-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 +      * mpc.el (mpc-format): Trim Date to the year.
 +      (mpc-songs-hashcons): Shorten the Date field.
 +
        * emacs-lisp/nadvice.el (advice--interactive-form): Don't get fooled
        into autoloading just because of a silly indirection.
  
 -2014-05-11  Santiago Payà i Miralta  <santiagopim@gmail.com>  (tiny change)
 +2014-05-12  Santiago Payà i Miralta  <santiagopim@gmail.com>  (tiny change)
  
        * vc/vc-hg.el (vc-hg-unregister): New function.  (Bug#17454)
  
 -2014-05-11  Glenn Morris  <rgm@gnu.org>
 +2014-05-12  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/find-gc.el: Move to ../admin.
  
 -2014-05-10  Glenn Morris  <rgm@gnu.org>
 -
        * printing.el (pr-version):
        * ps-print.el (ps-print-version): Also mention bug-gnu-emacs.
  
        * net/browse-url.el (browse-url-mosaic):
        Create /tmp/Mosaic.PID as a private file.
  
 -2014-05-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-05-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/nadvice.el: Support adding a given function multiple times.
        (advice--member-p): If name is given, only compare the name.
        (advice--add-function): Pass the name, if any, to
        advice--remove-function.
  
 -2014-05-09  Philipp Rumpf  <prumpf@gmail.com>  (tiny change)
 +2014-05-12  Philipp Rumpf  <prumpf@gmail.com>  (tiny change)
  
        * electric.el (electric-indent-post-self-insert-function): Don't use
        `pos' after modifying the buffer (bug#17449).
  
 -2014-05-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
 -      * subr.el (function-put): Add function.
 -
 -2014-05-09  Stephen Berman  <stephen.berman@gmx.net>
 +2014-05-12  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el (todo-insert-item-from-calendar):
        Correct argument list to conform to todo-insert-item--basic.
  
 -2014-05-09  Glenn Morris  <rgm@gnu.org>
 +2014-05-12  Glenn Morris  <rgm@gnu.org>
  
        * files.el (cd-absolute): Test if directory is accessible
        rather than executable.  (Bug#17330)
        * progmodes/compile.el (recompile):
        Handle C-u M-x recompile from a non-compilation buffer.  (Bug#17444)
  
 -2014-05-08  Juri Linkov  <juri@jurta.org>
 -
 -      * dired.el (dired-check-switches, dired-switches-recursive-p):
 -      New functions.  (Bug#17218)
 -      (dired-switches-escape-p, dired-move-to-end-of-filename):
 -      Use `dired-check-switches'.
 -      (dired-insert-old-subdirs, dired-build-subdir-alist)
 -      (dired-sort-R-check): Use `dired-switches-recursive-p'.
 -
 -2014-05-08  Glenn Morris  <rgm@gnu.org>
 -
        * net/browse-url.el (browse-url-mosaic):
        Be careful when writing /tmp/Mosaic.PID.  (Bug#17428)
        This is CVE-2014-3423.
  
 +2014-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * mouse.el: Use the normal toplevel loop while dragging.
 +      (mouse-set-point): Handle multi-clicks.
 +      (mouse-set-region): Handle multi-clicks for drags.
 +      (mouse-drag-region): Update call accordingly.
 +      (mouse-drag-track): Remove `do-mouse-drag-region-post-process' hack.
 +      Use the normal event loop instead of a local while/read-event loop.
 +      (global-map): Remove redundant bindings for double/triple-mouse-1.
 +      * xt-mouse.el (xterm-mouse-translate-1): Only process one event at a time.
 +      Generate synthetic down events when the protocol only sends up events.
 +      (xterm-mouse-last): Remove.
 +      (xterm-mouse--read-event-sequence-1000): Use xterm-mouse-last-down
 +      terminal parameter instead.
 +      (xterm-mouse--set-click-count): New function.
 +      (xterm-mouse-event): Detect/generate double/triple clicks.
 +      * reveal.el (reveal-close-old-overlays): Don't close while dragging.
 +
 +      * info.el (Info-quoted): New face.
 +      (Info-mode-font-lock-keywords): New var.
 +      (Info-mode): Use it.
 +
 +      * emacs-lisp/lisp-mode.el (preceding-sexp): Exclude leading "," which
 +      are a hindrance for C-x C-e.
 +
 +2014-05-11  Leo Liu  <sdl.web@gmail.com>
 +
 +      * net/rcirc.el (rcirc-sentinel): Fix last change.
 +
 +2014-05-08  Sam Steingold  <sds@gnu.org>
 +
 +      * net/rcirc.el (rcirc-reconnect-delay): New user option.
 +      (rcirc-sentinel): Auto-reconnect to the server if
 +      `rcirc-reconnect-delay' is non-0 (but not more often than its
 +      value in case the host is off-line).
 +
 +2014-05-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * progmodes/grep.el (lgrep): Fix a typo in last commit.
 +
 +2014-05-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.el (file-expand-wildcards):
 +      * man.el (Man-support-local-filenames):
 +      * printing.el (pr-i-directory, pr-interface-directory):
 +      * progmodes/grep.el (lgrep, rgrep):
 +      * textmodes/ispell.el (ispell-call-process)
 +      (ispell-call-process-region, ispell-start-process)
 +      (ispell-init-process): Use file-accessible-directory-p.
 +
  2014-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * xt-mouse.el: Drop spurious/oddly shaped events (bug#17378).
        (xterm-mouse-event): Propagate it.
        (xterm-mouse-translate-1): Handle it.
  
 -2014-05-07  Stephen Berman  <stephen.berman@gmx.net>
 +2014-05-08  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el (todo-insert-item--apply-args): When all
        four slots of the parameter list are filled, make sure to pass it
        to the argument list of todo-insert-item--basic.
  
 -2014-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/package.el (package-compute-transaction): Topological sort.
        Add optional `seen' argument to detect and break infinite loops.
  
 -2014-05-06  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-08  Eli Zaretskii  <eliz@gnu.org>
  
        * emacs-lisp/find-gc.el (find-gc-unsafe, find-unsafe-funcs)
        (trace-unsafe, trace-use-tree): Make parentheses style be
        according to Emacs style.
  
 -2014-05-06  Michael Albinus  <michael.albinus@gmx.de>
 +2014-05-08  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp-sh.el (tramp-remote-process-environment):
        Remove HISTFILE and HISTSIZE; it's too late to set them here.
        Add :version entry.
        (tramp-open-shell): Do not let-bind `tramp-end-of-output'.
 -      Add "HISTFILE=/dev/null" to the shell's env arguments.  Do not send
 +      Add "HISTSIZE=/dev/null" to the shell's env arguments.  Do not send
        extra "PSx=..." commands.
        (tramp-maybe-open-connection): Setenv HISTFILE to /dev/null.
        (Bug#17295)
        name.  (Bug#17415)
        This is CVE-2014-3424.
  
 -2014-05-06  Glenn Morris  <rgm@gnu.org>
 +2014-05-08  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/find-gc.el (find-gc-source-directory): Give it a value.
        (find-gc-source-files): Update some names.
        Avoid predictable temp-file names.  (http://bugs.debian.org/747100)
        This is CVE-2014-3422.
  
 -2014-05-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * minibuffer.el (completion--try-word-completion): Revert fix for
        Bug#15980 (bug#17375).
        Don't burp is xterm-mouse-last is not set as expected.
        Never return negative indices.
  
 -2014-05-05  Dmitry Gutov  <dgutov@yandex.ru>
 +2014-05-08  Dmitry Gutov  <dgutov@yandex.ru>
  
        * progmodes/ruby-mode.el (ruby-syntax-propertize-function):
        Backtrack one char if the global/char-literal var matcher hits
        inside a string.  The next char could be the beginning of an
        expression expansion.
  
 -2014-05-05  Glenn Morris  <rgm@gnu.org>
 +2014-05-08  Glenn Morris  <rgm@gnu.org>
  
        * help-fns.el (describe-function-1): Test for an autoload before a
        macro, since `macrop' works on autoloads.  (Bug#17410)
  
 -2014-05-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * electric.el (electric-indent-functions-without-reindent): Add yaml.
  
        * minibuffer.el (completion-table-with-quoting) <completion--unquote>:
        Make sure the new point we return is within the new string (bug#17239).
  
 -2014-05-03  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-05  Daniel Colascione  <dancol@dancol.org>
 +
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist):
 +      Port `gnu' pattern to rx.
 +
 +2014-05-05  Jarek Czekalski  <jarekczek@poczta.onet.pl>
 +
 +      Remove unneeded prompt when closing a buffer with active
 +      emacsclient ("Buffer ... still has clients"), #16548.
 +      * server.el (server-start): Remove the only call to:
 +      (server-kill-buffer-query-function): Remove.
 +
 +2014-05-04  Leo Liu  <sdl.web@gmail.com>
 +
 +      * calendar/diary-lib.el (calendar-chinese-month-name-array):
 +      Defvar to pacify compiler.
 +
 +2014-05-04  Eli Zaretskii  <eliz@gnu.org>
  
        * mail/rmailsum.el (rmail-new-summary-1): Fix a typo in a comment.
  
 -2014-05-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-05-04  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * vc/ediff-diff.el (ediff-set-fine-diff-properties-in-one-buffer):
        Use nil rather than `default' for the "default" appearance (bug#17388).
        * vc/ediff-init.el (ediff-set-overlay-face): Don't set help-echo if the
        overlay is not visible.
  
 -2014-05-02  Stephen Berman  <stephen.berman@gmx.net>
 +2014-05-04  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el (todo-edit-file): Use display-warning.
        (todo-menu): Uncomment and update.
  
 -2014-05-02  Stephen Berman  <stephen.berman@gmx.net>
 +2014-05-04  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el: Reimplement item editing to have the same
        basic user interface as item insertion, and make small UI and
        (todo-key-bindings-t): Bind "e" to todo-edit-item.
        Remove bindings of deleted commands.
  
 -2014-05-02  Leo Liu  <sdl.web@gmail.com>
 +2014-05-04  Leo Liu  <sdl.web@gmail.com>
  
        * emacs-lisp/cl-macs.el (cl-deftype): Fix indentation.
  
 -2014-05-01  Glenn Morris  <rgm@gnu.org>
 +2014-05-04  Glenn Morris  <rgm@gnu.org>
  
        * allout-widgets.el (allout-widgets-tally)
        (allout-decorate-item-guides):
        * textmodes/reftex-parse.el (reftex-using-biblatex-p):
        Doc fixes (replace `iff').
  
 -2014-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-05-04  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * mpc.el (mpc-volume-mouse-set): Don't burp at the boundaries.
  
 +2014-05-04  Leo Liu  <sdl.web@gmail.com>
 +
 +      Support Chinese diary entries in calendar and diary.  (Bug#17393)
 +      * calendar/cal-china.el (calendar-chinese-month-name-array): New var.
 +      (calendar-chinese-from-absolute-for-diary)
 +      (calendar-chinese-to-absolute-for-diary)
 +      (calendar-chinese-mark-date-pattern, diary-chinese-mark-entries)
 +      (diary-chinese-list-entries): New functions to list and mark
 +      Chinese diary entries in the calendar window.
 +      (diary-chinese-anniversary)
 +      (diary-chinese-insert-anniversary-entry)
 +      (diary-chinese-insert-entry, diary-chinese-insert-monthly-entry)
 +      (diary-chinese-insert-yearly-entry): New commands to insert
 +      Chinese diary entries.
 +
 +      * calendar/diary-lib.el (diary-font-lock-keywords):
 +      Support font-locking Chinese dates.
 +
 +      * calendar/cal-menu.el (cal-menu-diary-menu): Add entries for
 +      inserting Chinese diary entries.
 +
 +      * calendar/calendar.el (diary-chinese-entry-symbol):
 +      New customizable variable.
 +      (calendar-mode-map): Add bindings for inserting Chinese diary
 +      entries.
 +
 +2014-05-03  Juri Linkov  <juri@jurta.org>
 +
 +      * dired.el (dired-check-switches, dired-switches-recursive-p):
 +      New functions.  (Bug#17218)
 +      (dired-switches-escape-p, dired-move-to-end-of-filename):
 +      Use `dired-check-switches'.
 +      (dired-insert-old-subdirs, dired-build-subdir-alist)
 +      (dired-sort-R-check): Use `dired-switches-recursive-p'.
 +
 +2014-05-01  Barry O'Reilly  <gundaetiapo@gmail.com>
 +
 +      * simple.el (undo-make-selective-list): New algorithm fixes
 +      incorrectness of position adjustments when undoing in region.
 +      (Bug#17235)
 +      (undo-elt-crosses-region): Make obsolete.
 +      (undo-adjust-elt, undo-adjust-beg-end, undo-adjust-pos):
 +      New functions to adjust positions using undo-deltas.
 +
 +2014-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/lisp-mode.el (lisp--match-hidden-arg): Only highlight past
 +      the last consecutive closing paren (bug#17345).
 +
 +2014-04-30  Reuben Thomas  <rrt@sc3d.org>
 +
 +      * dired.el (dired-mode): make terminology for eXpunge command
 +      consistent.  (Bug#17276)
 +
  2014-04-30  Eli Zaretskii  <eliz@gnu.org>
  
        * dired.el (dired-initial-position-hook, dired-initial-position):
        Doc string fixes.
  
 -2014-04-29  Glenn Morris  <rgm@gnu.org>
 +2014-04-30  Glenn Morris  <rgm@gnu.org>
  
        * mail/rmail.el (rmail-quit): Handle killed summaries.  (Bug#17283)
  
 -2014-04-27  Matthias Dahl  <matthias.dahl@binary-island.eu>
 +2014-04-30  Matthias Dahl  <matthias.dahl@binary-island.eu>
  
        * faces.el (face-spec-recalc): Apply X resources only after the
        defface spec has been applied. Thus, X resources are no longer
        the toolbar coloring was wrong because it is set through X resources
        and was (wrongfully) overriden.  (Bug#16694)
  
 -2014-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-30  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * textmodes/rst.el (electric-pair-pairs): Declare.
        (rst-mode): Set it (bug#17131).
  
 -2014-04-27  Juri Linkov  <juri@jurta.org>
 +2014-04-30  Juri Linkov  <juri@jurta.org>
  
        * desktop.el (desktop-value-to-string): Let-bind `print-length'
        and `print-level' to nil.  (Bug#17351)
  
 -2014-04-25  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
 +2014-04-30  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
  
        * battery.el (battery-update): Handle the case where battery
        status is "N/A" (bug#17319).
  
 -2014-04-24  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/ps-mode.el: Use SMIE.  Move string and comment recognition
 +      to syntax-propertize.
 +      (ps-mode-auto-indent): Mark as obsolete.
 +      (ps-mode-font-lock-keywords-1): Remove string-or-comment handling.
 +      (ps-mode-font-lock-keywords-3): Use symbol regexp operators instead of
 +      word regexp operators.
 +      (ps-mode-map): Move initialization into declaration.  Remove binding
 +      for TAB, RET, >, ], and }.
 +      (ps-mode-syntax-table): Move initialization into declaration.
 +      Don't give word syntax to non-word chars.
 +      (ps-run-mode-map): Move initialization into declaration.
 +      (ps-mode-menu-main): Remove auto-indent entry.
 +      (ps-mode-smie-rules): New function.
 +      (ps-mode): Setup smie, syntax-propertize, and electric-indent-mode.
 +      (ps-mode-looking-at-nested, ps-mode-match-string-or-comment): Remove.
 +      (ps-mode--string-syntax-table): New const.
 +      (ps-mode--syntax-propertize-special, ps-mode-syntax-propertize):
 +      New functions.
 +      (ps-mode-newline, ps-mode-tabkey, ps-mode-r-brace, ps-mode-r-angle)
 +      (ps-mode-r-gt, ps-mode-r-balance): Remove functions.
 +
 +2014-04-27  Daniel Colascione  <dancol@dancol.org>
 +
 +      * term/xterm.el (xterm-paste): Use large finite timeout when
 +      reading event to avoid putting keys in this-command-keys.
 +
 +2014-04-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/perl-mode.el (perl--syntax-exp-intro-regexp): New var.
 +      (perl-syntax-propertize-function): Use it.  Extend handling of
 +      here-docs to the unquoted case.
 +
 +2014-04-25  Eli Zaretskii  <eliz@gnu.org>
  
        * tooltip.el (tooltip-show-help-non-mode, tooltip-show-help):
        Use equal-including-properties to compare help-echo strings (bug#17331).
  
 -2014-04-24  Leo Liu  <sdl.web@gmail.com>
 +2014-04-25  Leo Liu  <sdl.web@gmail.com>
  
        * emacs-lisp/lisp-mode.el (emacs-lisp-mode-syntax-table):
        Fix syntax for @.  (Bug#17325)
  
 -2014-04-24  Daniel Colascione  <dancol@dancol.org>
 +2014-04-25  Daniel Colascione  <dancol@dancol.org>
  
        * emacs-lisp/cl.el (gv): Require gv early to break eager
        macro-expansion cycles.
  
 -2014-04-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-25  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * simple.el (region-active-p): Check there's a mark (bug#17324).
  
        * progmodes/perl-mode.el (perl-syntax-propertize-function): Slash after
        &, |, +, - and * can't be a division (bug#17317).
  
 -2014-04-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
        * term/xterm.el (xterm--version-handler): Don't use modern xterm
        features on gnome-terminal (bug#16988).
  
 +2014-04-25  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      Improve Scheme font-locking for (define ((foo ...) ...) ...).
 +
 +      * progmodes/scheme.el (scheme-font-lock-keywords-1): To find
 +      the declared object, ignore zero or more parens, not zero or one.
 +
 +2014-04-24  Leo Liu  <sdl.web@gmail.com>
 +
 +      * progmodes/xscheme.el (xscheme-expressions-ring)
 +      (xscheme-expressions-ring-yank-pointer, xscheme-running-p)
 +      (xscheme-control-g-disabled-p, xscheme-process-filter-state)
 +      (xscheme-allow-output-p, xscheme-prompt)
 +      (xscheme-string-accumulator, xscheme-mode-string): Use defvar-local.
 +
 +      * progmodes/scheme.el (would-be-symbol, next-sexp-as-string):
 +      Comment out unused functions.
 +
 +2014-04-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * info.el: Use lexical-binding and cl-lib.
 +      Use defvar-local and setq-local instead of make-local-variable.
 +      (Info-apropos-matches): Avoid add-to-list.
 +      (Info-edit-mode-map): Fix obsolescence call to Info-edit-map.
 +
 +2014-04-24  Daniel Colascione  <dancol@dancol.org>
 +
 +      * progmodes/sh-script.el (sh-builtins): Add coproc to list of bash builtins.
 +
 +2014-04-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-macs.el (cl--loop-let): Fix last merge.
 +
  2014-04-22  Michael Heerdegen  <michael_heerdegen@web.de>
  
        * dired.el (dired-insert-set-properties): Do not consider
        (tramp-do-copy-or-rename-file-out-of-band): Do not quote `source'
        and `target' twice.
  
 -2014-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-22  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * dframe.el (dframe-get-focus): Remove `hook' argument (bug#17311).
        * speedbar.el (speedbar-get-focus): Run the "hook" afterwards instead.
  
        * emacs-lisp/cl-macs.el (cl--loop-let): Avoid `nil' as var name.
  
 -2014-04-21  Michael Albinus  <michael.albinus@gmx.de>
 +2014-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp-sh.el (tramp-sh-handle-file-name-all-completions):
        Set "IFS=" when using read builtin, in order to preserve spaces in
        the file name.  Add test messages for hunting a bug on hydra.
        (tramp-get-ls-command): Undo using "-b" argument.  It doesn't help.
  
 -2014-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-22  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * progmodes/prog-mode.el (prettify-symbols--compose-symbol):
        Don't prettify a word within a symbol.
  
 -2014-04-20  Michael Albinus  <michael.albinus@gmx.de>
 +2014-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp-sh.el (tramp-get-ls-command): Use "-b" argument if
        possible.
  
 +2014-04-22  Daniel Colascione  <dancol@dancol.org>
 +
 +      * emacs-lisp/byte-run.el (function-put): Unbreak build: don't
 +      use defun to define `function-put'.
 +
 +2014-04-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/lisp-mode.el (lisp--match-hidden-arg): New function.
 +      (lisp-el-font-lock-keywords-2, lisp-cl-font-lock-keywords-2): Use it.
 +      (lisp-mode-variables): Set font-lock-extra-managed-props.
 +
 +      * emacs-lisp/byte-run.el (function-put): New function.
 +      (defun-declarations-alist): Use it.  Add `pure' and `side-effect-free'.
 +      * emacs-lisp/cl-macs.el (cl-defstruct, cl-struct-sequence-type)
 +      (cl-struct-slot-info, cl-struct-slot-offset, cl-struct-slot-value):
 +      Use them.
 +
 +2014-04-22  Daniel Colascione  <dancol@dancol.org>
 +
 +      * emacs-lisp/macroexp.el (internal-macroexpand-for-load):
 +      Add `full-p' parameter; when nil, call `macroexpand' instead of
 +      `macroexpand-all'.
 +
 +      * emacs-lisp/byte-run.el (eval-when-compile, eval-and-compile):
 +      Improve docstrings.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
 +      Use lambda function values, not quoted lambdas.
 +      (byte-compile-recurse-toplevel): Remove extraneous &optional.
 +
 +      * emacs-lisp/cl-macs.el
 +      (cl-struct-sequence-type, cl-struct-slot-info): Declare pure.
 +      (cl-struct-slot-value): Conditionally use aref or nth so that the
 +      compiler produces optimal code.
 +
 +2014-04-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-macs.el (cl-struct-slot-offset): Mark as pure.
 +      (inline): Don't inline cl--set-elt.
 +      (cl-struct-slot-value): Remove explicit gv-setter and compiler-macro.
 +      Define as inlinable instead.
 +      (cl-struct-set-slot-value): Remove.
 +
 +      * emacs-lisp/cl-lib.el (cl--set-elt): Remove.
 +      * emacs-lisp/cl-seq.el (cl-replace, cl-substitute, cl-nsubstitute):
 +      Use setf instead.
 +
 +2014-04-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      * emacs-lisp/cl-macs.el (cl--const-expr-val): We didn't need the
 +      last two parameters after all.
 +      (cl--expr-contains,cl--compiler-macro-typep,cl--compiler-macro-member)
 +      (cl--compiler-macro-assoc,cl-struct-slot-value)
 +      (cl-struct-set-slot-value): Stop using them.
 +
 +(2014-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * image-mode.el (image-mode-window-put): Don't assume there's a `t'
 +      entry in image-mode-winprops-alist.
 +
 +2014-04-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-recurse-toplevel): New function.
 +      (byte-compile-recurse-toplevel, byte-compile-initial-macro-environment)
 +      (byte-compile-toplevel-file-form): Use it.
 +
 +      * emacs-lisp/cl-macs.el:
 +      (cl--loop-let): Properly destructure `while' clauses.
 +
 +2014-04-20  Daniel Colascione  <dancol@dancol.org>
 +
 +      * vc/vc.el (vc-root-dir): New public autoloaded function for
 +      generically finding the current VC root.
 +      * vc/vc-hooks.el (vc-not-supported): New error.
 +      (vc-call-backend): Signal `vc-not-supported' instead of generic error.
 +
 +2014-04-20  Daniel Colascione  <dancol@dancol.org>
 +
 +      * emacs-lisp/cl-macs.el (cl-the): Make `cl-the' assert its type
 +      argument.
 +      (cl--const-expr-val): cl--const-expr-val should macroexpand its
 +      argument in case we're inside a symbol-macrolet.
 +      (cl--do-arglist, cl--compiler-macro-typep)
 +      (cl--compiler-macro-member, cl--compiler-macro-assoc): Pass macro
 +      environment to `cl--const-expr-val'.
 +      (cl-struct-sequence-type,cl-struct-slot-info)
 +      (cl-struct-slot-offset, cl-struct-slot-value)
 +      (cl-struct-set-slot-value): New functions.
 +
  2014-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * progmodes/sh-script.el (sh-smie--sh-keyword-p): Handle variable
  
        * net/tramp-compat.el (tramp-unload-hook): Unload `tramp-loaddefs'.
  
 -2014-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-17  Daniel Colascione  <dancol@dancol.org>
 +
 +      Add support for bracketed paste mode; add infrastructure for
 +      managing terminal mode enabling and disabling automatically.
 +
 +      * xt-mouse.el:
 +      (xterm-mouse-mode): Simplify.
 +      (xterm-mouse-tracking-enable-sequence)
 +      (xterm-mouse-tracking-disable-sequence): New constants.
 +      (turn-on-xterm-mouse-tracking-on-terminal)
 +      (turn-off-xterm-mouse-tracking-on-terminal):
 +      Use tty-mode-set-strings and tty-mode-reset-strings terminal
 +      parameters instead of random hooks.
 +      (turn-on-xterm-mouse-tracking)
 +      (turn-off-xterm-mouse-tracking): Delete.
 +
 +      * term/xterm.el (xterm-extra-capabilities): Fix bitrotted comment.
 +      (xterm-paste-ending-sequence): New constant.
 +      (xterm-paste): New command used for bracketed paste support.
 +
 +      (xterm-modify-other-keys-terminal-list): Delete obsolete variable.
 +      (terminal-init-xterm-bracketed-paste-mode): New function.
 +      (terminal-init-xterm): Call it.
 +      (terminal-init-xterm-modify-other-keys): Use tty-mode-set-strings
 +      and tty-mode-reset-strings instead of random hooks.
 +      (xterm-turn-on-modify-other-keys)
 +      (xterm-turn-off-modify-other-keys)
 +      (xterm-remove-modify-other-keys): Delete obsolete functions.
 +
 +      * term/screen.el: Rewrite to just use the xterm code.
 +      Add copyright notice.  Mention tmux.
 +
 +2014-04-17  Ian D  <dunni@gnu.org>  (tiny change)
 +
 +      * image-mode.el (image-mode-window-put): Also update the property of
 +      the "default window".
 +      * doc-view.el (doc-view-new-window-function): If no window
 +      exists, move to the last known page.
  
 -      * nxml/nxml-mode.el (nxml-fontify-matcher): Make sure propertization
 -      was done (bug#17264).
 -      * nxml/xmltok.el (xmltok-scan-after-comment-open): Extend unclosed
 -      comment to EOB.
 +2014-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * progmodes/perl-mode.el (perl-calculate-indent): Don't auto-indent in
        here-documents (bug#17262).
        * term/pc-win.el (x-list-fonts, x-get-selection-value):
        Provide doc strings, as required by snarf-documentation.
  
 -2014-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * ps-def.el (ps-generate-postscript-with-faces1): Use the new `sorted'
        arg of overlays-at.  Use `invisible-p'.
        overlays-at.
        (hfy-fontify-buffer): Remove unused var `orig-ovls'.
  
 -2014-04-14  João Távora  <joaotavora@gmail.com>
 +2014-04-16  João Távora  <joaotavora@gmail.com>
  
        * net/shr.el (shr-expand-url): Use `expand-file-name' for relative
        links.  (Bug#17217).
  
 -2014-04-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +2014-04-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
        * vc/ediff-diff.el (ediff-set-fine-diff-properties-in-one-buffer):
        Use mapc to loop over a vector.  (Bug#17257).
  
 -2014-04-13  Michael Albinus  <michael.albinus@gmx.de>
 +2014-04-16  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp-sh.el (tramp-sh-handle-file-truename): Revert previous
        patch, there are new problems with file names containing spaces.
        Get rid of backticks.  (Bug#17238)
  
 -2014-04-13  João Távora  <joaotavora@gmail.com>
 +2014-04-16  João Távora  <joaotavora@gmail.com>
  
        * elec-pair.el (electric-pair--syntax-ppss): Simplify and fix
        possible bug.
  
 -2014-04-13  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-16  Eli Zaretskii  <eliz@gnu.org>
  
        * frame.el (blink-cursor-blinks, blink-cursor-blinks-done): Doc fixes.
        (blink-cursor-mode): Mention customization variables and the
        effect of 'blink-cursor-blinks'.
  
 -2014-04-12  Barry O'Reilly  <gundaetiapo@gmail.com>
 +2014-04-16  Barry O'Reilly  <gundaetiapo@gmail.com>
  
        * simple.el (undo): Prevent insertion of identity mapping into
        undo-equiv-table so as undo-only does not inf loop in the presence
        of consecutive nils in undo list.
  
 -2014-04-12  Matthias Dahl  <matthias.dahl@binary-island.eu>
 +2014-04-16  Matthias Dahl  <matthias.dahl@binary-island.eu>
  
        * faces.el (make-face): Deprecate optional argument as it is no
        longer needed/used since the conditional X resources handling
        has been pushed down to make-face-x-resource-internal itself.
        (make-empty-face): Don't pass optional argument to make-face.
  
 +2014-04-16  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * savehist.el (savehist-save): Remove workaround for a read-passwd
 +      bug that was fixed before 24.3.  Thanks to Juanma Barranquero for
 +      noticing that the shim was still present.
 +
 +2014-04-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * doc-view.el (doc-view-set-doc-type): Ignore file name case; add .pps.
 +
 +2014-04-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * faces.el (face-set-after-frame-default): Remove unused local variable.
 +
 +2014-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/grep.el: Use lexical-binding.
 +      (grep-expand-template): Pass explicit lexical env to `eval'.
 +      (zrgrep): Let-bind grep-find-template explicitly.
 +
 +      * emacs-lisp/cl-lib.el (current-case-table): Remove setter.
 +      * leim/quail/sisheng.el (sisheng-list): Use with-case-table.
 +
  2014-04-12  Eli Zaretskii  <eliz@gnu.org>
  
        * international/characters.el <standard-case-table>: Add entries
  
  2014-04-12  Leo Liu  <sdl.web@gmail.com>
  
 -      * progmodes/octave.el (completion-table-with-cache): Define if not
 -      available.
 -      (octave-goto-function-definition)
 -      (octave-sync-function-file-names)
 -      (octave-find-definition-default-filename): Backquote upattern for
 -      compatibility.
 +      * progmodes/octave.el (completion-table-with-cache):
 +      Define if not available.
 +      (octave-goto-function-definition, octave-sync-function-file-names)
 +      (octave-find-definition-default-filename):
 +      Backquote upattern for compatibility.
  
 -2014-04-11  Michael Albinus  <michael.albinus@gmx.de>
 +2014-04-12  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp-sh.el (tramp-sh-handle-file-truename): Quote the file
        name twice due to backticks.  (Bug#17238)
  
 -2014-04-11  Glenn Morris  <rgm@gnu.org>
 +2014-04-12  Glenn Morris  <rgm@gnu.org>
  
        * term/w32-win.el (x-win-suspend-error):
        * term/x-win.el (x-win-suspend-error): Sync docs.
  
 -2014-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-12  Matthias Dahl  <matthias.dahl@binary-island.eu>
 +
 +      * faces.el (make-face): Remove deprecated optional argument.
 +      The conditional application of X resources is handled directly by
 +      make-face-x-resource-internal since Emacs 24.4.
 +      (make-empty-face): Don't pass optional argument to make-face.
 +
 +2014-04-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (EMACSDATA, EMACSDOC, EMACSPATH): Unexport.  (Bug#16429)
 +
 +2014-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        Ediff's overlay priorities cause more trouble than they solve.
        * vc/ediff-init.el (ediff-shadow-overlay-priority): Remove variable.
        (ediff-set-fine-diff-properties-in-one-buffer): Don't mess with
        overlay priorities.
  
 -2014-04-10  Feng Li  <fengli@gmail.com>  (tiny change)
 +2014-04-11  Feng Li  <fengli@gmail.com>  (tiny change)
  
        * progmodes/pascal.el (pascal-font-lock-keywords): Fix incorrect format
        entry; use symbol boundaries to avoid mis-matches.
  
 -2014-04-10  Michael Albinus  <michael.albinus@gmx.de>
 +2014-04-11  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp.el (tramp-file-name-handler)
        (tramp-completion-file-name-handler): Avoid recursive loading.
        * net/tramp-sh.el (tramp-make-copy-program-file-name):
        Quote result also locally.
  
 +2014-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emulation/cua-base.el (<toplevel>, cua--pre-command-handler-1):
 +      Remove left-over code.
 +
 +      * newcomment.el (comment-indent-new-line): Sink code where it's used.
 +      Reuse the previous comment's indentation unconditionally if it's on its
 +      own line.
 +
 +2014-04-09  Daniel Colascione  <dancol@dancol.org>
 +
 +      * emacs-lisp/lisp.el (backward-up-list): Add `escape-strings',
 +      `no-syntax-crossing' arguments.  Forward to `up-list'.
 +      (up-list): Add `escape-strings', `no-syntax-crossing' arguments.
 +      Implement logic for escaping from strings.  Use narrowing to deal
 +      with corner cases.
 +
 +2014-04-09  Leo Liu  <sdl.web@gmail.com>
 +
 +      * net/rcirc.el (rcirc-connection-info): New variable.
 +      (rcirc-connect): Use it to store connection info.
 +      (rcirc-buffer-process): Avoid get-buffer-process which returns nil
 +      for killed process.
 +      (rcirc-cmd-reconnect): New command.  (Bug#17045)
 +      (rcirc-mode, set-rcirc-encode-coding-system)
 +      (set-rcirc-decode-coding-system, rcirc-connect): Use setq-local.
 +
 +2014-04-09  Daniel Colascione  <dancol@dancol.org>
 +
 +      * emacs-lisp/cl-indent.el: Add comment claiming
 +      facility is also good for elisp.
 +      (lisp-indent-find-method): New function.
 +      (common-lisp-indent-function): Recognize cl-loop.
 +      (common-lisp-indent-function-1): Recognize cl constructs; use
 +      `lisp-indent-find-method' instead of `get' directly.
 +      (if): Use else-body style for elisp.
 +
  2014-04-09  Dmitry Gutov  <dgutov@yandex.ru>
  
        * progmodes/ruby-mode.el (ruby-font-lock-keywords): Highlight more
        Module methods.  (Bug#17216)
  
 -2014-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * help.el (describe-bindings): Fix buffer handling (bug#17210).
        (describe-bindings-internal): Mark obsolete.
  
 +2014-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (with-silent-modifications): Don't bind deactivate-mark,
 +      buffer-file-name, and buffer-file-truename any more.
 +
 +2014-04-08  Leo Liu  <sdl.web@gmail.com>
 +
 +      Use lexical-binding and require cl-lib.
 +      * net/rcirc.el (rcirc, rcirc-handler-ctcp-KEEPALIVE)
 +      (rcirc-handler-generic, rcirc-fill-paragraph)
 +      (rcirc-format-response-string, rcirc-target-buffer)
 +      (rcirc-last-line, rcirc-record-activity, rcirc-split-activity)
 +      (rcirc-activity-string, rcirc-make-trees, rcirc-cmd-ctcp)
 +      (rcirc-ctcp-sender-PING, rcirc-browse-url)
 +      (rcirc-markup-timestamp, rcirc-markup-attributes)
 +      (rcirc-markup-my-nick, rcirc-markup-urls)
 +      (rcirc-markup-bright-nicks, rcirc-markup-fill)
 +      (rcirc-check-auth-status, rcirc-handler-WALLOPS)
 +      (rcirc-handler-JOIN, rcirc-handler-PART-or-KICK)
 +      (rcirc-handler-PART, rcirc-handler-KICK, rcirc-handler-QUIT)
 +      (rcirc-handler-NICK, rcirc-handler-PING, rcirc-handler-PONG)
 +      (rcirc-handler-TOPIC, rcirc-handler-301, rcirc-handler-317)
 +      (rcirc-handler-332, rcirc-handler-333, rcirc-handler-477)
 +      (rcirc-handler-MODE, rcirc-handler-353, rcirc-handler-366)
 +      (rcirc-authenticate, rcirc-handler-INVITE, rcirc-handler-ERROR)
 +      (rcirc-handler-ctcp-VERSION, rcirc-handler-ctcp-TIME)
 +      (rcirc-handler-CTCP-response): Fix unused arguments warnings and
 +      use cl-lib.
 +
  2014-04-07  João Távora  <joaotavora@gmail.com>
  
 -      * elec-pair.el:
 -      (electric-pair--syntax-ppss): When inside comments parse from
 -      comment beginning.
 +      * elec-pair.el (electric-pair--syntax-ppss):
 +      When inside comments parse from comment beginning.
        (electric-pair--balance-info): Fix typo in comment.
        (electric-pair--in-unterminated-string-p): Delete.
        (electric-pair--unbalanced-strings-p): New function.
        (electric-pair-inhibit-if-helps-balance): Decide quote pairing
        according to `electric-pair--in-unterminated-string-p'
  
 -2014-04-07  João Távora  <joaotavora@gmail.com>
 -
        * elec-pair.el (electric-pair-inhibit-if-helps-balance):
        Inhibit quote pairing if point-max is inside an unterminated string.
        (electric-pair--looking-at-unterminated-string-p): Delete.
        * shell.el (shell-directory-tracker):
        Go back to just ignoring failures.  (Bug#17159)
  
 -2014-04-06  João Távora  <joaotavora@gmail.com>
 +2014-04-07  João Távora  <joaotavora@gmail.com>
  
        Fix `electric-pair-delete-adjacent-pairs' in modes binding
        backspace. (bug#16981)
        a new `electric-pair-delete-pair' command.
        (electric-pair-delete-pair): New command.
  
 -2014-04-06  João Távora  <joaotavora@gmail.com>
 -
        * progmodes/python.el (python-electric-pair-string-delimiter):
        Fix triple-quoting electricity.  (Bug#17192)
  
 -2014-04-06  João Távora  <joaotavora@gmail.com>
 -
        * elec-pair.el (electric-pair-post-self-insert-function):
        Don't skip whitespace when `electric-pair-text-pairs' and
        `electric-pair-pairs' were used. syntax to
        electric-pair--skip-whitespace.  (Bug#17183)
  
 -2014-04-06  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-07  Eli Zaretskii  <eliz@gnu.org>
  
        * leim/quail/ipa.el (ipa-x-sampa): Fix the character produced for
        "<F>".  (Bug#17199)
  
 -2014-04-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-07  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * mpc.el (mpc--status-timer-run): Disable timer if not displayed.
        (mpc--status-idle-timer-run): Use mpc--status-timer-run.
  
 -2014-04-05  Glenn Morris  <rgm@gnu.org>
 +2014-04-07  Glenn Morris  <rgm@gnu.org>
  
        * help.el (view-lossage): Doc tweak.
  
 -2014-04-05  Matthias Dahl  <matthias.dahl@binary-island.eu>
 +2014-04-07  Matthias Dahl  <ml_emacs-lists@binary-island.eu>
  
        * faces.el (face-spec-recalc): Call make-face-x-resource-internal
        only when inhibit-x-resources is nil, and do that earlier in the
        (face-set-after-frame-default): Don't call
        make-face-x-resource-internal here.  (Bug#16434)
  
 -2014-04-04  Tassilo Horn  <tsdh@gnu.org>
 +2014-04-07  Tassilo Horn  <tsdh@gnu.org>
  
        * doc-view.el (doc-view-bookmark-jump):
        Use `bookmark-after-jump-hook' to jump to the right page after the
        buffer is shown in a window.  (bug#16090)
  
 -2014-04-04  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-07  Eli Zaretskii  <eliz@gnu.org>
  
        * international/characters.el (mirroring): Fix last change:
        instead of loading uni-mirrored.el explicitly, do that implicitly
        by creating the 'mirroring' uniprop table.  This avoids announcing
        the loading of uni-mirrored.el.
  
 -2014-04-04  Glenn Morris  <rgm@gnu.org>
 +2014-04-07  Glenn Morris  <rgm@gnu.org>
  
        * files.el (buffer-stale--default-function)
        (buffer-stale-function, revert-buffer--default):
        * autorevert.el (auto-revert-buffers): Doc tweaks.
  
 -2014-04-03  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-07  Eli Zaretskii  <eliz@gnu.org>
  
        * international/characters.el: Preload uni-mirrored.el.  (Bug#17169)
  
 -2014-04-03  Glenn Morris  <rgm@gnu.org>
 +2014-04-07  Glenn Morris  <rgm@gnu.org>
  
        * files.el (make-backup-file-name-function)
        (make-backup-file-name, make-backup-file-name--default-function)
        (make-backup-file-name-function): Bump :version.
        Restore nil as a valid but deprecated custom type.
  
 -2014-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
 -      * progmodes/perl-mode.el (perl-syntax-propertize-function): Handle $'
 -      used as a variable (bug#17174).
 +2014-04-07  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-04-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * progmodes/perl-mode.el (perl-syntax-propertize-function):
 +      Handle $' used as a variable (bug#17174).
  
        * progmodes/perl-mode.el (perl-indent-new-calculate):
        Handle forward-sexp failure (bug#16985).
        (perl-syntax-propertize-function): Add "foreach" and "for" statement
        modifiers introducing expressions (bug#17116).
  
 +2014-04-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * dired-aux.el (dired-file-set-difference): Use lexical-scoping.
 +
 +2014-04-05  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression):
 +      Add define-compilation-mode.
 +
 +2014-04-04  João Távora  <joaotavora@gmail.com>
 +
 +      * elec-pair.el (electric-pair--syntax-ppss): When inside comments
 +      parse from comment beginning.
 +      (electric-pair--balance-info): Fix typo in comment.
 +      (electric-pair--in-unterminated-string-p): Delete.
 +      (electric-pair--unbalanced-strings-p): New function.
 +      (electric-pair-string-bound-function): New var.
 +      (electric-pair-inhibit-if-helps-balance): Decide quote pairing
 +      according to `electric-pair--in-unterminated-string-p'.
 +
 +2014-04-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/reftex-parse.el (reftex--index-tags): Rename `index-tags'.
 +      Move declaration before first use.
 +      (reftex-move-to-next-arg): Silence compiler warning.
 +
 +2014-04-04  Joost Kremers  <joostkremers@fastmail.fm>  (tiny change)
 +
 +      * textmodes/reftex-toc.el (reftex-toc, reftex-re-enlarge):
 +      Use `window-total-width' instead of `window-width'.
 +
 +2014-04-03  Daniel Colascione  <dancol@dancol.org>
 +
 +      * subr.el (set-transient-map): Remove rms's workaround entirely;
 +      use new `suspicious-object' subr to mark our lambda for closer
 +      scrutiny during gc.
 +
 +2014-04-02  Richard Stallman  <rms@gnu.org>
 +
 +      * subr.el (set-transient-map): Comment out previous change.
 +
  2014-04-02  Glenn Morris  <rgm@gnu.org>
  
        * menu-bar.el (menu-bar-file-menu):
  
        * simple.el (command-execute): Respect nil disabled-command-function.
  
 -2014-04-01  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
 +2014-04-02  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
  
        * simple.el (command-execute): Do not execute the command when it
        is disabled; fixes thinko in 2013-02-20 conversion from C.  (Bug#17151)
  
 -2014-03-29  Juri Linkov  <juri@jurta.org>
 +2014-04-02  Juri Linkov  <juri@jurta.org>
  
        * dired-aux.el (dired-compress-file): Don't use string-match-p
        because its match data is used afterwards.
  
 -2014-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-02  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/package.el (package-built-in-p): Treat a min-version of
        0 like nil.
  
 +2014-04-02  João Távora  <joaotavora@gmail.com>
 +
 +      * elec-pair.el (electric-pair-inhibit-if-helps-balance):
 +      Inhibit quote pairing if point-max is inside an unterminated string.
 +      (electric-pair--looking-at-unterminated-string-p):
 +      Delete.
 +      (electric-pair--in-unterminated-string-p): New function.
 +
 +2014-04-01  Daniel Colascione  <dancol@dancol.org>
 +
 +      * minibuffer.el (minibuffer-complete): Prevent assertion failure
 +      when trying to complete the prompt.
 +
 +2014-03-31  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/eldoc.el (eldoc-print-current-symbol-info):
 +      Refactor out eldoc-documentation-function-default.
 +      (eldoc-documentation-function-default): New function.
 +      (eldoc-documentation-function): Change value.
 +
 +2014-03-31  Glenn Morris  <rgm@gnu.org>
 +
 +      * simple.el (cycle-spacing--context, cycle-spacing): Doc tweaks.
 +
 +      * progmodes/vhdl-mode.el (vhdl-speedbar-select-mra)
 +      (vhdl-compose-components-package, vhdl-compose-configuration):
 +      Abbreviate default-directory (missing from some previous upstream sync).
 +
 +2014-03-31  Reto Zimmermann  <reto@gnu.org>
 +
 +      Sync with upstream vhdl mode v3.35.2.
 +      * progmodes/vhdl-mode.el (vhdl-version, vhdl-time-stamp): Update.
 +      (top-level): No longer require assoc.
 +      (vhdl-asort, vhdl-anot-head-p, vhdl-aput, vhdl-adelete, vhdl-aget):
 +      New functions.  Use throughout to replace aget etc.
 +      (vhdl-aput-delete-if-nil): Rename from vhdl-aput.
 +      (vhdl-update-file-contents): Update for vhdl-aput-delete-if-nil rename.
 +      (vhdl-template-replace-header-keywords): Fix bug for "<title string>".
 +      (vhdl-compile-init): Do not initialize regexps for Emacs 22+.
 +      (vhdl-error-regexp-emacs-alist): Remove regexps from all compilers
 +      except `vhdl-compiler'.
 +      (vhdl-error-regexp-add-emacs): Remove all other compilers,
 +      when appropriate.
 +
 +2014-03-31  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/vhdl-mode.el (vhdl-expand-abbrev, vhdl-expand-paren):
 +      Revert 2014-03-26 merge goof; go back to using defalias.
 +
 +2014-03-30  Daniel Colascione  <dancol@dancol.org>
 +
 +      * comint.el (comint-send-input):
 +      Deactivate completion-in-region-mode before we send comint input.
 +      (Bug#17139).
 +
 +      * simple.el (keyboard-quit): Deactivate completion-in-region-mode
 +      on keyboard-quit.
 +
 +2014-03-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * textmodes/reftex.el: Manage most autoloads automatically.
 +      * textmodes/reftex-auc.el, textmodes/reftex-cite.el:
 +      * textmodes/reftex-dcr.el, textmodes/reftex-global.el:
 +      * textmodes/reftex-index.el, textmodes/reftex-parse.el:
 +      * textmodes/reftex-ref.el, textmodes/reftex-sel.el:
 +      * textmodes/reftex-toc.el: Set generated-autoload-file,
 +      and add autoload cookies for reftex.el.
 +      * Makefile.in (AUTOGEN_VCS): Add textmodes/reftex.el.
 +
 +2014-03-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * cus-start.el (report-emacs-bug-address): Set custom properties.
 +      * mail/emacsbug.el (report-emacs-bug-address):
 +      Variable is now defined in emacs.c.
 +
 +      * mail/emacsbug.el (report-emacs-bug):
 +      Include system-configuration-features.
 +
 +2014-03-28  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * simple.el (cycle-spacing): Never delete spaces on first run by
 +      default, but do so in a new 'fast mode and if there are already
 +      N spaces (the previous behavior).
 +      Compare N with its value in previous invocation so that changing
 +      prefix argument restarts `cycle-spacing' sequence.
 +      The idea is that with this change, binding M-SPC to
 +      `cycle-spacing' should not introduce any changes in behavior of
 +      the binding so long as users do not type M-SPC twice in a raw with
 +      the same prefix argument or lack thereof.
 +
 +2014-03-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * faces.el (term-file-aliases): New variable.
 +      (tty-run-terminal-initialization): Respect term-file-aliases.
 +      * term/apollo.el, term/vt102.el, term/vt125.el, term/vt201.el:
 +      * term/vt220.el, term/vt240.el, term/vt300.el, term/vt320.el:
 +      * term/vt400.el, term/vt420.el: Remove files, replaced by aliases.
 +
 +2014-03-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * startup.el (inhibit-startup-hooks): Doc tweak.
 +      (normal-top-level): Simplify running of hooks.
 +      For window-setup-hook, respect inhibit-startup-hooks.
 +      (command-line-1): Don't set window-setup-hook to nil.
 +
 +      Allow selective autoloading from obsolete/ directory.
 +      * Makefile.in (obsolete-autoloads): New rule.
 +      (autoloads): Run obsolete-autoloads.
 +      * obsolete/iswitchb.el (iswitchb-mode): Use obsolete-autoload.
 +      * simple.el (iswitchb-mode): Remove hand-written autoloads.
 +
  2014-03-27  Dmitry Gutov  <dgutov@yandex.ru>
  
        * progmodes/ruby-mode.el (ruby-font-lock-keywords):
        * emacs-lisp/package-x.el (package--archive-contents-from-url):
        Use url-insert-file-contents; package-handle-response no longer exists.
  
 +2014-03-26  Daniel Colascione  <dancol@dancol.org>
 +
 +      * simple.el (process-menu-mode-map): New variable.
 +      (process-menu-delete-process): New command.
 +
  2014-03-26  Juanma Barranquero  <lekktu@gmail.com>
  
        * emacs-lisp/package.el: Fix bug#16733 (again).
        dynamic binding of `buffer'.
        (describe-package-1): Do not decode readme-string.
  
 -2014-03-25  Barry O'Reilly  <gundaetiapo@gmail.com>
 -
 -      * simple.el (primitive-undo): Correction to 2014-03-24 change.
 -
 -2014-03-25  Michael Albinus  <michael.albinus@gmx.de>
 +2014-03-26  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp.el (tramp-methods, tramp-connection-timeout): Fix docstring.
  
        (tramp-do-copy-or-rename-file-directly): In the `rename' case,
        check whether source directory has set the sticky bit.
  
 -2014-03-24  Barry O'Reilly  <gundaetiapo@gmail.com>
 +2014-03-26  Barry O'Reilly  <gundaetiapo@gmail.com>
  
        * simple.el (primitive-undo): Only process marker adjustments
        validated against their corresponding (TEXT . POS).  Issue warning
        (undo-elt-in-region): Return nil when passed a marker adjustment
        and explain in function doc.
  
 -2014-03-24  Dmitry Gutov  <dgutov@yandex.ru>
 -
 -      * emacs-lisp/package.el (package--add-to-archive-contents):
 -      Include already installed and built-in packages in
 -      `package-archive-contents'.
 -      (package-install): Don't include already installed packages in the
 -      options during interactive invocation.  (Bug#16762)
 -
 -2014-03-24  Daniel Colascione  <dancol@dancol.org>
 -
 -      * emacs-lisp/cl-macs.el (cl--do-arglist): Use `plist-member'
 -      instead of cl-loop search function.
 -
 -2014-03-24  Juanma Barranquero  <lekktu@gmail.com>
 -
 -      * frameset.el (frameset--initial-params): Fix typo in parameter name.
 -
 -2014-03-24  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
 +2014-03-26  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
  
        * align.el (align-region): Do not fail when end-mark is nil (bug#17088).
  
 -2014-03-24  Dmitry Gutov  <dgutov@yandex.ru>
 +2014-03-26  Dmitry Gutov  <dgutov@yandex.ru>
  
        * progmodes/ruby-mode.el (ruby-expression-expansion-re):
        Match special global variables without curlies, too.
        variables.  Don't require a non-word character after the variable.
        (Bug#17057)
  
 -2014-03-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-03-26  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * simple.el (redisplay-highlight-region-function): Increase priority of
        overlay to make sure boundaries are visible (bug#15899).
  
 -2014-03-23  Juanma Barranquero  <lekktu@gmail.com>
 +2014-03-26  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * frameset.el (frameset-restore): Compare display strings with equal.
 +      * frameset.el (frameset--initial-params): Fix typo in parameter name.
 +      (frameset-restore): Compare display strings with equal.
  
        * frame.el (make-frame): Don't quote display name in error message,
        it is already a string.
  
 -2014-03-23  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +2014-03-26  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
  
        * net/tramp.el (tramp-read-passwd): Suspend the timers while reading
        the password.
  
 -2014-03-23  Dmitry Gutov  <dgutov@yandex.ru>
 +2014-03-26  Dmitry Gutov  <dgutov@yandex.ru>
  
 -      * emacs-lisp/package.el (package-show-package-list): If the buffer
 -      is already displayed in another window, switch to that window.
 +      * emacs-lisp/package.el (package--add-to-archive-contents):
 +      Include already installed and built-in packages in
 +      `package-archive-contents'.
 +      (package-install): Don't include already installed packages in the
 +      options during interactive invocation.  (Bug#16762)
 +      (package-show-package-list): If the buffer is already displayed in
 +      another window, switch to that window.
 +
 +2014-03-26  Reto Zimmermann  <reto@gnu.org>
 +
 +      Sync with upstream vhdl mode v3.35.1.
 +      * progmodes/vhdl-mode.el (vhdl-version, vhdl-time-stamp): Update.
 +      (vhdl-compiler-alist): Doc fix.
 +      (vhdl-goto-line): Remove.
 +      (vhdl-mode-abbrev-table-init): Add XEmacs compat.
 +      (vhdl-mode) <paragraph-start>: Fix value.
 +      (vhdl-fix-statement-region): Not `for' in wait-statement.
 +      (vhdl-beautify-region): Also (un)tabify.
 +      (vhdl-get-visible-signals):
 +      Scan declarative part of generate statements.
 +      (vhdl-template-record): Fix indentation for record type declaration.
 +      (vhdl-expand-abbrev, vhdl-expand-paren):
 +      Revert to using fset again rather than defalias.
 +      (vhdl-scan-directory-contents): Tweak.
 +      (vhdl-speedbar-find-file, vhdl-speedbar-port-copy)
 +      (vhdl-compose-components-package):
 +      Replace vhdl-goto-line with forward-line.
 +      (top-level): Tweak speedbar frame selection.
 +      (vhdl-generate-makefile-1): Support for compilers with no
 +      unit-to-file name mapping (create directory with dummy files).
 +
 +2014-03-26  Wilson Snyder  <wsnyder@wsnyder.org>
 +
 +      Sync with upstream verilog-mode revision 702457d.
 +      * progmodes/verilog-mode.el (verilog-mode-version): Update.
 +      (create-lockfiles): Declare.
 +      (verilog-read-decls): Fix module header imports, bug709.
 +      Reported by Victor Lau.
 +      Fix parsing 'var' in AUTOs, msg1294.  Reported by Dominique Chen.
 +      (verilog-auto-inout-module): Fix AUTOINOUTMODULE not inserting
 +      interface-only modules, bug721.  Reported by Dean Hoyt.
  
 -2014-03-21  Daniel Colascione  <dancol@dancol.org>
 +2014-03-26  Glenn Morris  <rgm@gnu.org>
  
 -      * mail/emacsbug.el (report-emacs-bug): Include memory usage
 -      information in bug reports.
 +      * obsolete/gulp.el: Move here from emacs-lisp/.
 +
 +      * files.el (lock-buffer, unlock-buffer, file-locked-p):
 +      Remove fallback aliases, since they are always defined now.
 +
 +2014-03-24  Daniel Colascione  <dancol@dancol.org>
 +
 +      * emacs-lisp/cl-macs.el (cl--do-arglist): Use `plist-member'
 +      instead of cl-loop search function.
 +
 +2014-03-23  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * calendar/parse-time.el (parse-time-iso8601-regexp)
 +      (parse-iso8601-time-string): Copied from `url-dav' so that we can use
 +      it more generally.
 +
 +2014-03-23  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/dns.el (network-interface-list): Define for XEmacs.
 +
 +2014-03-23  Magnus Henoch  <magnus.henoch@gmail.com>
 +
 +      * net/dns.el (dns-servers-up-to-date-p): New function to see whether
 +      the network interfaces changed.
 +      (dns-query): Use it to flush the data.
 +
 +2014-03-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * vc/vc.el (vc-rollback): Use set-buffer-modified-p.
 +
 +2014-03-23  Daniel Colascione  <dancol@dancol.org>
 +
 +      Change subword-mode to use `find-word-boundary-function-table' and
 +      replace `capitalized-words-mode'.  Also, convert to lexical
 +      binding.
 +
 +      * progmodes/cap-words.el: Delete now-obsolete file.
 +      * progmodes/subword.el: Reimplement using
 +      `find-word-boundary-function-table'.
 +      (subword-mode-map): Hollow out.
 +      (capitalized-words-mode): Define as obsolete alias for
 +      `subword-mode'.
 +      (subword-mode, superword-mode): Tweak documentation to reflect new
 +      implementation; call `subword-setup-buffer'.
 +      (subword-forward, subword-capitalize): Add underscore to indicate
 +      unused variable.
 +      (subword-find-word-boundary-function-table): New constant.
 +      (subword-empty-char-table): New constant.
 +      (subword-setup-buffer): New function.
 +      (subword-find-word-boundary): New function.
  
  2014-03-23  Daniel Colascione  <dancol@dancol.org>
  
        (Bug#3647) --- unfortunately, only for freshly-compiled code.
        Please make bootstrap.
  
 -2014-03-23  Richard Stallman  <rms@gnu.org>
 -
 -      * battery.el (battery-linux-sysfs): Search for each field
 -      from the beginning of the buffer.
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * dired.el (dired-read-regexp): Make obsolete.
 +      (dired-mark-files-regexp, dired-mark-files-containing-regexp)
 +      (dired-flag-files-regexp):
 +      * dired-aux.el (dired-mark-read-regexp):
 +      * dired-x.el (dired-mark-unmarked-files): Use read-regexp directly.
 +
 +      * startup.el (fancy-startup-text):
 +      * help.el (describe-gnu-project): Visit online info about GNU project.
 +
 +      * help-fns.el (help-fns--interactive-only): New function.
 +      (help-fns-describe-function-functions): Add the above function.
 +      * simple.el (beginning-of-buffer, end-of-buffer, insert-buffer)
 +      (next-line, previous-line): Remove hand-written interactive-only
 +      information from doc strings, it is auto-generated now.
 +      * bookmark.el (bookmark-write):
 +      * epa-mail.el (epa-mail-decrypt, epa-mail-verify, epa-mail-sign)
 +      (epa-mail-import-keys): Mark interactive-only,
 +      and remove hand-written interactive-only information from doc strings.
 +      * epa.el (epa-decrypt-armor-in-region, epa-verify-region)
 +      (epa-verify-cleartext-in-region, epa-sign-region, epa-encrypt-region):
 +      * files.el (not-modified):
 +      * simple.el (mark-whole-buffer): Mark interactive-only.
 +
 +      * emacs-lisp/byte-run.el (defun-declarations-alist):
 +      Add interactive-only.  Doc tweak.
 +      (macro-declarations-alist): Doc tweak.
 +      * subr.el (declare): Doc tweak (add xref to manual).
 +      * comint.el (comint-run):
 +      * files.el (insert-file-literally, insert-file):
 +      * replace.el (replace-string, replace-regexp):
 +      * simple.el (beginning-of-buffer, end-of-buffer, delete-backward-char)
 +      (delete-forward-char, goto-line, insert-buffer, next-line)
 +      (previous-line): Set interactive-only via declare.
  
  2014-03-22  Dmitry Gutov  <dgutov@yandex.ru>
  
        * w32-common-fns.el (x-selection-owner-p): Add empty docstring for the
        benefit of doc.c; change parameter profile to match the X function.
  
 +2014-03-22  Leo Liu  <sdl.web@gmail.com>
 +
 +      * help.el (temp-buffer-setup-hook): Remove help-mode-setup.
 +      (temp-buffer-show-hook): Remove help-mode-finish.  (Bug#16038)
 +
 +2014-03-21  Richard Stallman  <rms@gnu.org>
 +
 +      * battery.el (battery-linux-sysfs): Search for each field
 +      from the beginning of the buffer.
 +
 +      * subr.el (set-transient-map): Clear out function and value
 +      of the temporary symbol when we're done with it.
 +
 +      * mail/rmailsum.el (rmail-summary-delete-forward):
 +      Optimize case of reaching end and handling count.
 +      (rmail-summary-mark-deleted): Optimize when N is current msg.
 +      Don't create new summary line.
 +      (rmail-summary-undelete): Pass arg to rmail-undelete-previous-message.
 +      (rmail-summary-undelete-many): Rewrite for speed.
 +      (rmail-summary-msg-number): New function.
 +
 +      * mail/rmail.el (rmail-delete-message): Update summary.
 +      (rmail-undelete-previous-message): Handle repeat count arg.
 +      (rmail-delete-backward, rmail-delete-forward): Likewise.
 +
 +2014-03-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      * mail/emacsbug.el (report-emacs-bug): Include memory usage
 +      information in bug reports.
 +
  2014-03-21  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp.el (tramp-methods): Add docstring for `tramp-login-env'
        (tty-color-approximate, tty-color-by-index, tty-color-values)
        (tty-color-desc): Remove superfluous backslashes.
  
 +2014-03-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * cus-start.el (history-length): Bump :version.
 +
 +      * Makefile.in ($(MH_E_DIR)/mh-loaddefs.el)
 +      ($(TRAMP_DIR)/tramp-loaddefs.el, $(CAL_DIR)/cal-loaddefs.el)
 +      ($(CAL_DIR)/diary-loaddefs.el, $(CAL_DIR)/hol-loaddefs.el):
 +      Don't set `make-backup-files'.
 +
 +      * info.el (info--prettify-description): New function,
 +      to give info-finder descriptions consistent case, punctuation.
 +      (Info-finder-find-node): Use it.  Sort packages.
 +      Refer to "description" rather than "commentary".
 +
 +2014-03-21  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * frameset.el (frameset--print-register): New function.
 +      (frameset-to-register): Use it.
 +
 +2014-03-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/hideif.el (hif-string-to-number): New function.
 +      (hif-tokenize): Use it to understand non-decimal floats.
 +
 +      * emacs-lisp/cl-extra.el (cl--map-overlays): Remove obsolete code.
 +
 +      * skeleton.el (skeleton-autowrap): Mark as obsolete.  Doc fix.
 +
  2014-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * electric.el (electric-newline-and-maybe-indent): New command.
  
        * rect.el (rectangle-mark-mode): Rename from rectangle-mark.
        Make it into a proper minor mode.
 -      (rectangle--region): (implicitly) rename to rectangle-mark-mode.
 +      (rectangle--region): (Implicitly) rename to rectangle-mark-mode.
        (rectangle-mark-mode-map): New keymap.
        (rectangle--highlight-for-redisplay): Fix some corner cases (bug#15796).
  
  
  2013-10-28  Daiki Ueno  <ueno@gnu.org>
  
 -      * epa-file.el
 -      (epa-file-cache-passphrase-for-symmetric-encryption):
 +      * epa-file.el (epa-file-cache-passphrase-for-symmetric-encryption):
        Document that this option has no effect with GnuPG 2.0 (bug#15552).
  
  2013-10-27  Xue Fuqiao  <xfq.free@gmail.com>
        * textmodes/reftex-vars.el (reftex-ref-style-alist):
        Add cleveref macros.
  
 -      * textmodes/reftex-parse.el
 -      (reftex-locate-bibliography-files): Accept options for
 -      bibliography commands.
 +      * textmodes/reftex-parse.el (reftex-locate-bibliography-files):
 +      Accept options for bibliography commands.
        * textmodes/reftex-vars.el (reftex-bibliography-commands):
        Add addbibresource.  Basic Biblatex support.
  
  2013-04-19  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        New faster Imenu implementation (bug#14058).
 -      * progmodes/python.el:
 -      (python-imenu-prev-index-position):
 +      * progmodes/python.el (python-imenu-prev-index-position)
        (python-imenu-format-item-label-function)
        (python-imenu-format-parent-item-label-function)
        (python-imenu-format-parent-item-jump-label-function):
diff --combined lisp/emacs-lisp/lisp.el
@@@ -57,14 -57,10 +57,14 @@@ Should take the same arguments and beha
  
  (defun forward-sexp (&optional arg)
    "Move forward across one balanced expression (sexp).
 -With ARG, do it that many times.  Negative arg -N means
 -move backward across N balanced expressions.
 -This command assumes point is not in a string or comment.
 -Calls `forward-sexp-function' to do the work, if that is non-nil."
 +With ARG, do it that many times.  Negative arg -N means move
 +backward across N balanced expressions.  This command assumes
 +point is not in a string or comment.  Calls
 +`forward-sexp-function' to do the work, if that is non-nil.  If
 +unable to move over a sexp, signal `scan-error' with three
 +arguments: a message, the start of the obstacle (usually a
 +parenthesis or list marker of some kind), and end of the
 +obstacle."
    (interactive "^p")
    (or arg (setq arg 1))
    (if forward-sexp-function
@@@ -144,92 -140,38 +144,92 @@@ This command assumes point is not in a 
        (goto-char (or (scan-lists (point) inc -1) (buffer-end arg)))
        (setq arg (- arg inc)))))
  
 -(defun backward-up-list (&optional arg)
 +(defun backward-up-list (&optional arg escape-strings no-syntax-crossing)
    "Move backward out of one level of parentheses.
  This command will also work on other parentheses-like expressions
 -defined by the current language mode.
 -With ARG, do this that many times.
 -A negative argument means move forward but still to a less deep spot.
 -This command assumes point is not in a string or comment."
 -  (interactive "^p")
 -  (up-list (- (or arg 1))))
 -
 -(defun up-list (&optional arg)
 +defined by the current language mode.  With ARG, do this that
 +many times.  A negative argument means move forward but still to
 +a less deep spot.  If ESCAPE-STRINGS is non-nil (as it is
 +interactively), move out of enclosing strings as well.  If
 +NO-SYNTAX-CROSSING is non-nil (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."
 +  (interactive "^p\nd\nd")
 +  (up-list (- (or arg 1)) escape-strings no-syntax-crossing))
 +
 +(defun up-list (&optional arg escape-strings no-syntax-crossing)
    "Move forward out of one level of parentheses.
  This command will also work on other parentheses-like expressions
 -defined by the current language mode.
 -With ARG, do this that many times.
 -A negative argument means move backward but still to a less deep spot.
 -This command assumes point is not in a string or comment."
 -  (interactive "^p")
 +defined by the current language mode.  With ARG, do this that
 +many times.  A negative argument means move backward but still to
 +a less deep spot.  If ESCAPE-STRINGS is non-nil (as it is
 +interactively), move out of enclosing strings as well. If
 +NO-SYNTAX-CROSSING is non-nil (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."
 +  (interactive "^p\nd\nd")
    (or arg (setq arg 1))
    (let ((inc (if (> arg 0) 1 -1))
 -        pos)
 +        (pos nil))
      (while (/= arg 0)
 -      (if (null forward-sexp-function)
 -          (goto-char (or (scan-lists (point) inc 1) (buffer-end arg)))
 -      (condition-case err
 -          (while (progn (setq pos (point))
 -                        (forward-sexp inc)
 -                        (/= (point) pos)))
 -        (scan-error (goto-char (nth (if (> arg 0) 3 2) err))))
 -      (if (= (point) pos)
 -            (signal 'scan-error
 -                    (list "Unbalanced parentheses" (point) (point)))))
 +      (condition-case err
 +          (save-restriction
 +            ;; If we've been asked not to cross string boundaries
 +            ;; and we're inside a string, narrow to that string so
 +            ;; that scan-lists doesn't find a match in a different
 +            ;; string.
 +            (when no-syntax-crossing
 +              (let* ((syntax (syntax-ppss))
 +                     (string-comment-start (nth 8 syntax)))
 +                (when string-comment-start
 +                  (save-excursion
 +                    (goto-char string-comment-start)
 +                    (narrow-to-region
 +                     (point)
 +                     (if (nth 3 syntax) ; in string
 +                         (condition-case nil
 +                             (progn (forward-sexp) (point))
 +                           (scan-error (point-max)))
 +                       (forward-comment 1)
 +                       (point)))))))
 +            (if (null forward-sexp-function)
 +                (goto-char (or (scan-lists (point) inc 1)
 +                               (buffer-end arg)))
 +              (condition-case err
 +                  (while (progn (setq pos (point))
 +                                (forward-sexp inc)
 +                                (/= (point) pos)))
 +                (scan-error (goto-char (nth (if (> arg 0) 3 2) err))))
 +              (if (= (point) pos)
 +                  (signal 'scan-error
 +                          (list "Unbalanced parentheses" (point) (point))))))
 +        (scan-error
 +         (let ((syntax nil))
 +           (or
 +            ;; If we bumped up against the end of a list, see whether
 +            ;; we're inside a string: if so, just go to the beginning
 +            ;; or end of that string.
 +            (and escape-strings
 +                 (or syntax (setf syntax (syntax-ppss)))
 +                 (nth 3 syntax)
 +                 (goto-char (nth 8 syntax))
 +                 (progn (when (> inc 0)
 +                          (forward-sexp))
 +                        t))
 +            ;; If we narrowed to a comment above and failed to escape
 +            ;; it, the error might be our fault, not an indication
 +            ;; that we're out of syntax.  Try again from beginning or
 +            ;; end of the comment.
 +            (and no-syntax-crossing
 +                 (or syntax (setf syntax (syntax-ppss)))
 +                 (nth 4 syntax)
 +                 (goto-char (nth 8 syntax))
 +                 (or (< inc 0)
 +                     (forward-comment 1))
 +                 (setf arg (+ arg inc)))
 +            (signal (car err) (cdr err))))))
        (setq arg (- arg inc)))))
  
  (defun kill-sexp (&optional arg)
@@@ -431,16 -373,18 +431,18 @@@ is called as a function to find the def
        (push-mark))
    (if (or (null arg) (= arg 0)) (setq arg 1))
    (let ((pos (point))
-         (beg (progn (end-of-line 1) (beginning-of-defun-raw 1) (point))))
+         (beg (progn (end-of-line 1) (beginning-of-defun-raw 1) (point)))
+       (skip (lambda ()
+               ;; When comparing point against pos, we want to consider that if
+               ;; point was right after the end of the function, it's still
+               ;; considered as "in that function".
+               ;; E.g. `eval-defun' from right after the last close-paren.
+               (unless (bolp)
+                 (skip-chars-forward " \t")
+                 (if (looking-at "\\s<\\|\n")
+                     (forward-line 1))))))
      (funcall end-of-defun-function)
-     ;; When comparing point against pos, we want to consider that if
-     ;; point was right after the end of the function, it's still
-     ;; considered as "in that function".
-     ;; E.g. `eval-defun' from right after the last close-paren.
-     (unless (bolp)
-       (skip-chars-forward " \t")
-       (if (looking-at "\\s<\\|\n")
-           (forward-line 1)))
+     (funcall skip)
      (cond
       ((> arg 0)
        ;; Moving forward.
          (goto-char beg))
        (unless (zerop arg)
          (beginning-of-defun-raw (- arg))
+       (setq beg (point))
          (funcall end-of-defun-function))))
-     (unless (bolp)
-       (skip-chars-forward " \t")
-       (if (looking-at "\\s<\\|\n")
-           (forward-line 1)))))
+     (funcall skip)
+     (while (and (< arg 0) (>= (point) pos))
+       ;; We intended to move backward, but this ended up not doing so:
+       ;; Try harder!
+       (goto-char beg)
+       (beginning-of-defun-raw (- arg))
+       (if (>= (point) beg)
+         (setq arg 0)
+       (setq beg (point))
+         (funcall end-of-defun-function)
+       (funcall skip)))))
  
  (defun mark-defun (&optional allow-extend)
    "Put mark at end of this defun, point at beginning.
@@@ -180,12 -180,16 +180,16 @@@ WHERE is a symbol to select an entry i
          (advice--make-1 (nth 1 desc) (nth 2 desc)
                          function main props)))))
  
- (defun advice--member-p (function name definition)
+ (defun advice--member-p (function use-name definition)
    (let ((found nil))
      (while (and (not found) (advice--p definition))
-       (if (if name
-               (equal name (cdr (assq 'name (advice--props definition))))
-             (equal function (advice--car definition)))
+       (if (if (eq use-name :use-both)
+             (or (equal function
+                        (cdr (assq 'name (advice--props definition))))
+                 (equal function (advice--car definition)))
+           (equal function (if use-name
+                               (cdr (assq 'name (advice--props definition)))
+                             (advice--car definition))))
            (setq found definition)
          (setq definition (advice--cdr definition))))
      found))
@@@ -232,12 -236,11 +236,12 @@@ different, but `function-equal' will ho
            ;; This function acts like the t special value in buffer-local hooks.
            (lambda (&rest args) (apply (default-value var) args)))))
  
 -(defun advice--normalize-place (place)
 -  (cond ((eq 'local (car-safe place)) `(advice--buffer-local ,@(cdr place)))
 -        ((eq 'var (car-safe place))   (nth 1 place))
 -        ((symbolp place)              `(default-value ',place))
 -        (t place)))
 +(eval-and-compile
 +  (defun advice--normalize-place (place)
 +    (cond ((eq 'local (car-safe place)) `(advice--buffer-local ,@(cdr place)))
 +          ((eq 'var (car-safe place))   (nth 1 place))
 +          ((symbolp place)              `(default-value ',place))
 +          (t place))))
  
  ;;;###autoload
  (defmacro add-function (where place function &optional props)
@@@ -292,7 -295,7 +296,7 @@@ is also interactive.  There are 3 cases
  ;;;###autoload
  (defun advice--add-function (where ref function props)
    (let* ((name (cdr (assq 'name props)))
-          (a (advice--member-p function name (gv-deref ref))))
+          (a (advice--member-p (or name function) (if name t) (gv-deref ref))))
      (when a
        ;; The advice is already present.  Remove the old one, first.
        (setf (gv-deref ref)
@@@ -324,7 -327,7 +328,7 @@@ properties alist that was specified whe
    "Return non-nil if ADVICE is already in FUNCTION-DEF.
  Instead of ADVICE being the actual function, it can also be the `name'
  of the piece of advice."
-   (advice--member-p advice advice function-def))
+   (advice--member-p advice :use-both function-def))
  
  ;;;; Specific application of add-function to `symbol-function' for advice.
  
@@@ -688,7 -688,6 +688,7 @@@ untar into a directory named DIR; other
            (print-length nil))
        (write-region
         (concat
 +        ";;; -*- no-byte-compile: t -*-\n"
          (prin1-to-string
           (nconc
            (list 'define-package
                             (list (car elt)
                                   (package-version-join (cadr elt))))
                           requires))))
 -          (package--alist-to-plist
 -           (package-desc-extras pkg-desc))))
 +          (let ((alist (package-desc-extras pkg-desc))
 +                flat)
 +            (while alist
 +              (let* ((pair (pop alist))
 +                     (key (car pair))
 +                     (val (cdr pair)))
 +                ;; Don't bother ‘quote’ing ‘key’; it is always a keyword.
 +                (push key flat)
 +                (push (if (and (not (consp val))
 +                               (or (keywordp val)
 +                                   (not (symbolp val))
 +                                   (memq val '(nil t))))
 +                          val
 +                        `',val)
 +                      flat)))
 +            (nreverse flat))))
          "\n")
         nil pkg-file nil 'silent))))
  
 -(defun package--alist-to-plist (alist)
 -  (apply #'nconc (mapcar (lambda (pair) (list (car pair) (cdr pair))) alist)))
 -
  (defun package-unpack (pkg-desc)
    "Install the contents of the current buffer as a package."
    (let* ((name (package-desc-name pkg-desc))
@@@ -1266,10 -1254,7 +1266,7 @@@ similar to an entry in `package-alist'
        ;; may fetch a URL redirect page).
        (when (listp (read (current-buffer)))
        (make-directory dir t)
-       (setq buffer-file-name (expand-file-name file dir))
-       (let ((version-control 'never)
-               (require-final-newline nil))
-         (save-buffer))))
+         (write-region nil nil (expand-file-name file dir) nil 'silent)))
      (when good-signatures
        ;; Write out good signatures into archive-contents.signed file.
        (write-region (mapconcat #'epg-signature-to-string good-signatures "\n")
@@@ -1515,11 -1500,13 +1512,13 @@@ If optional arg NO-ACTIVATE is non-nil
                       (package--with-work-buffer
                           (package-archive-base desc)
                           (format "%s-readme.txt" name)
-                        (setq buffer-file-name
-                              (expand-file-name readme package-user-dir))
-                        (let ((version-control 'never)
-                              (require-final-newline t))
-                          (save-buffer))
+                        (save-excursion
+                          (goto-char (point-max))
+                          (unless (bolp)
+                            (insert ?\n)))
+                        (write-region nil nil
+                                      (expand-file-name readme package-user-dir)
+                                      nil 'silent)
                         (setq readme-string (buffer-string))
                         t))
                 (error nil))
diff --combined lisp/minibuffer.el
@@@ -529,7 -529,7 +529,7 @@@ for use at QPOS.
        (let* ((qpos pred)
             (ustring (funcall unquote string))
             (uprefix (funcall unquote (substring string 0 qpos)))
-            ;; FIXME: we really should pass `qpos' to `unuote' and have that
+            ;; FIXME: we really should pass `qpos' to `unquote' and have that
             ;; function give us the corresponding `uqpos'.  But for now we
             ;; presume (more or less) that `concat' and `unquote' commute.
             (uqpos (if (string-prefix-p uprefix ustring)
@@@ -873,7 -873,6 +873,7 @@@ completing buffer and file names, respe
    ;; part of the string (e.g. substitute-in-file-name).
    (let ((requote
           (when (completion-metadata-get metadata 'completion--unquote-requote)
 +           (cl-assert (functionp table))
             (let ((new (funcall table string point 'completion--unquote)))
               (setq string (pop new))
               (setq table (pop new))
@@@ -1118,10 -1117,9 +1118,10 @@@ If no characters can be completed, disp
  If you repeat this command after it displayed such a list,
  scroll the window of possible completions."
    (interactive)
 -  (completion-in-region (minibuffer-prompt-end) (point-max)
 -                        minibuffer-completion-table
 -                        minibuffer-completion-predicate))
 +  (when (<= (minibuffer-prompt-end) (point))
 +    (completion-in-region (minibuffer-prompt-end) (point-max)
 +                          minibuffer-completion-table
 +                          minibuffer-completion-predicate)))
  
  (defun completion--in-region-1 (beg end)
    ;; If the previous command was not this,
@@@ -3058,9 -3056,16 +3058,9 @@@ filter out additional entries (because 
        (nconc (completion-pcm--hilit-commonality pattern all)
               (length prefix)))))
  
 -(defun completion--sreverse (str)
 -  "Like `reverse' but for a string STR rather than a list."
 -  (apply #'string (nreverse (mapcar 'identity str))))
 -
  (defun completion--common-suffix (strs)
    "Return the common suffix of the strings STRS."
 -  (completion--sreverse
 -   (try-completion
 -    ""
 -    (mapcar #'completion--sreverse strs))))
 +  (nreverse (try-completion "" (mapcar #'reverse strs))))
  
  (defun completion-pcm--merge-completions (strs pattern)
    "Extract the commonality in STRS, with the help of PATTERN.
diff --combined lisp/mouse.el
@@@ -26,8 -26,6 +26,6 @@@
  ;; This package provides various useful commands (including help
  ;; system access) through the mouse.  All this code assumes that mouse
  ;; interpretation has been abstracted into Emacs input events.
- ;;
- ;; The code is rather X-dependent.
  
  ;;; Code:
  
@@@ -514,18 -512,14 +512,18 @@@ must be one of the symbols `header', `m
    (interactive "e")
    (mouse-drag-line start-event 'vertical))
  \f
 -(defun mouse-set-point (event)
 +(defun mouse-set-point (event &optional promote-to-region)
    "Move point to the position clicked on with the mouse.
 -This should be bound to a mouse click event type."
 -  (interactive "e")
 +This should be bound to a mouse click event type.
 +If PROMOTE-TO-REGION is non-nil and event is a multiple-click,
 +select the corresponding element around point."
 +  (interactive "e\np")
    (mouse-minibuffer-check event)
 -  ;; Use event-end in case called from mouse-drag-region.
 -  ;; If EVENT is a click, event-end and event-start give same value.
 -  (posn-set-point (event-end event)))
 +  (if (and promote-to-region (> (event-click-count event) 1))
 +      (mouse-set-region event)
 +    ;; Use event-end in case called from mouse-drag-region.
 +    ;; If EVENT is a click, event-end and event-start give same value.
 +    (posn-set-point (event-end event))))
  
  (defvar mouse-last-region-beg nil)
  (defvar mouse-last-region-end nil)
         (eq mouse-last-region-end (region-end))
         (eq mouse-last-region-tick (buffer-modified-tick))))
  
 +(defvar mouse--drag-start-event nil)
 +
  (defun mouse-set-region (click)
    "Set the region to the text dragged over, and copy to kill ring.
  This should be bound to a mouse drag event.
@@@ -549,22 -541,7 +547,22 @@@ command alters the kill ring or not.
    (mouse-minibuffer-check click)
    (select-window (posn-window (event-start click)))
    (let ((beg (posn-point (event-start click)))
 -      (end (posn-point (event-end click))))
 +      (end (posn-point (event-end click)))
 +        (click-count (event-click-count click)))
 +    (let ((drag-start (terminal-parameter nil 'mouse-drag-start)))
 +      ;; Drag events don't come with a click count, sadly, so we hack
 +      ;; our way around this problem by remembering the start-event in
 +      ;; `mouse-drag-start' and fetching the click-count from there.
 +      (when drag-start
 +        (when (and (<= click-count 1)
 +                   (equal beg (posn-point (event-start drag-start))))
 +          (setq click-count (event-click-count drag-start)))
 +        (setf (terminal-parameter nil 'mouse-drag-start) nil)))
 +    (when (and (integerp beg) (integerp end))
 +      (let ((range (mouse-start-end beg end (1- click-count))))
 +        (if (< end beg)
 +            (setq end (nth 0 range) beg (nth 1 range))
 +          (setq beg (nth 0 range) end (nth 1 range)))))
      (and mouse-drag-copy-region (integerp beg) (integerp end)
         ;; Don't set this-command to `kill-region', so a following
         ;; C-w won't double the text in the kill ring.  Ignore
@@@ -658,11 -635,13 +656,11 @@@ Upon exit, point is at the far edge of 
  Highlight the drag area as you move the mouse.
  This must be bound to a button-down mouse event.
  In Transient Mark mode, the highlighting remains as long as the mark
 -remains active.  Otherwise, it remains until the next input event.
 -
 -If the click is in the echo area, display the `*Messages*' buffer."
 +remains active.  Otherwise, it remains until the next input event."
    (interactive "e")
    ;; Give temporary modes such as isearch a chance to turn off.
    (run-hooks 'mouse-leave-buffer-hook)
 -  (mouse-drag-track start-event t))
 +  (mouse-drag-track start-event))
  
  
  (defun mouse-posn-property (pos property)
@@@ -766,9 -745,12 +764,9 @@@ at the same position.
                    "mouse-1" (substring msg 7)))))))
    msg)
  
 -(defun mouse-drag-track (start-event  &optional
 -                                    do-mouse-drag-region-post-process)
 +(defun mouse-drag-track (start-event)
      "Track mouse drags by highlighting area between point and cursor.
 -The region will be defined with mark and point.
 -DO-MOUSE-DRAG-REGION-POST-PROCESS should only be used by
 -`mouse-drag-region'."
 +The region will be defined with mark and point."
    (mouse-minibuffer-check start-event)
    (setq mouse-selection-click-count-buffer (current-buffer))
    (deactivate-mark)
         (start-posn (event-start start-event))
         (start-point (posn-point start-posn))
         (start-window (posn-window start-posn))
 -       (start-window-start (window-start start-window))
 -       (start-hscroll (window-hscroll start-window))
         (bounds (window-edges start-window))
         (make-cursor-line-fully-visible nil)
         (top (nth 1 bounds))
         (click-count (1- (event-click-count start-event)))
         ;; Suppress automatic hscrolling, because that is a nuisance
         ;; when setting point near the right fringe (but see below).
 -       (auto-hscroll-mode-saved auto-hscroll-mode)
 -       (auto-hscroll-mode nil)
 -       moved-off-start event end end-point)
 +       (auto-hscroll-mode-saved auto-hscroll-mode))
  
      (setq mouse-selection-click-count click-count)
      ;; In case the down click is in the middle of some intangible text,
        (push-mark (nth 0 range) t t)
        (goto-char (nth 1 range)))
  
 -    ;; Track the mouse until we get a non-movement event.
 -    (track-mouse
 -      (while (progn
 -             (setq event (read-event))
 -             (or (mouse-movement-p event)
 -                 (memq (car-safe event) '(switch-frame select-window))))
 -      (unless (memq (car-safe event) '(switch-frame select-window))
 -        ;; Automatic hscrolling did not occur during the call to
 -        ;; `read-event'; but if the user subsequently drags the
 -        ;; mouse, go ahead and hscroll.
 -        (let ((auto-hscroll-mode auto-hscroll-mode-saved))
 -          (redisplay))
 -        (setq end (event-end event)
 -              end-point (posn-point end))
 -        ;; Note whether the mouse has left the starting position.
 +    (setf (terminal-parameter nil 'mouse-drag-start) start-event)
 +    (setq track-mouse t)
 +    (setq auto-hscroll-mode nil)
 +
 +    (set-transient-map
 +     (let ((map (make-sparse-keymap)))
 +       (define-key map [switch-frame] #'ignore)
 +       (define-key map [select-window] #'ignore)
 +       (define-key map [mouse-movement]
 +         (lambda (event) (interactive "e")
 +           (let* ((end (event-end event))
 +                  (end-point (posn-point end)))
          (unless (eq end-point start-point)
 -          (setq moved-off-start t))
 +               ;; As soon as the user moves, we can re-enable auto-hscroll.
 +               (setq auto-hscroll-mode auto-hscroll-mode-saved))
          (if (and (eq (posn-window end) start-window)
                   (integer-or-marker-p end-point))
              (mouse--drag-set-mark-and-point start-point
               ((>= mouse-row bottom)
                (mouse-scroll-subr start-window (1+ (- mouse-row bottom))
                                   nil start-point))))))))
 -
 -    ;; Handle the terminating event if possible.
 -    (when (consp event)
 -      ;; Ensure that point is on the end of the last event.
 -      (when (and (setq end-point (posn-point (event-end event)))
 -               (eq (posn-window end) start-window)
 -               (integer-or-marker-p end-point)
 -               (/= start-point end-point))
 -      (mouse--drag-set-mark-and-point start-point
 -                                      end-point click-count))
 -
 -      ;; Find its binding.
 -      (let* ((fun (key-binding (vector (car event))))
 -           ;; FIXME This doesn't make sense, because
 -           ;; event-click-count always returns something >= 1.
 -           (do-multi-click (and (> (event-click-count event) 0)
 -                                (functionp fun)
 -                                (not (memq fun '(mouse-set-point
 -                                                 mouse-set-region))))))
 -      (if (and (/= (mark) (point))
 -               (not do-multi-click))
 -
 -          ;; If point has moved, finish the drag.
 -          (let* (last-command this-command)
 -            (and mouse-drag-copy-region
 -                 do-mouse-drag-region-post-process
 -                 (let (deactivate-mark)
 -                   (copy-region-as-kill (mark) (point)))))
 -
 -        ;; Otherwise, run binding of terminating up-event.
 +       map)
 +     t (lambda ()
 +         (setq track-mouse nil)
 +         (setq auto-hscroll-mode auto-hscroll-mode-saved)
            (deactivate-mark)
 -        (if do-multi-click
 -            (goto-char start-point)
 -          (unless moved-off-start
 -            (pop-mark)))
 -
 -        (when (and (functionp fun)
 -                   (= start-hscroll (window-hscroll start-window))
 -                   ;; Don't run the up-event handler if the window
 -                   ;; start changed in a redisplay after the
 -                   ;; mouse-set-point for the down-mouse event at
 -                   ;; the beginning of this function.  When the
 -                   ;; window start has changed, the up-mouse event
 -                   ;; contains a different position due to the new
 -                   ;; window contents, and point is set again.
 -                   (or end-point
 -                       (= (window-start start-window)
 -                          start-window-start)))
 -          (push event unread-command-events)))))))
 +         (pop-mark)))))
  
  (defun mouse--drag-set-mark-and-point (start click click-count)
    (let* ((range (mouse-start-end start click click-count))
@@@ -1871,10 -1902,14 +1869,10 @@@ choose a font.
  \f
  ;;; Bindings for mouse commands.
  
 -(define-key global-map [down-mouse-1] 'mouse-drag-region)
 +(global-set-key [down-mouse-1]        'mouse-drag-region)
  (global-set-key [mouse-1]     'mouse-set-point)
  (global-set-key [drag-mouse-1]        'mouse-set-region)
  
 -;; These are tested for in mouse-drag-region.
 -(global-set-key [double-mouse-1] 'mouse-set-point)
 -(global-set-key [triple-mouse-1] 'mouse-set-point)
 -
  (defun mouse--strip-first-event (_prompt)
    (substring (this-single-command-raw-keys) 1))
  
diff --combined lisp/progmodes/scheme.el
@@@ -1,4 -1,4 +1,4 @@@
 -;;; scheme.el --- Scheme (and DSSSL) editing mode
 +;;; scheme.el --- Scheme (and DSSSL) editing mode    -*- lexical-binding: t; -*-
  
  ;; Copyright (C) 1986-1988, 1997-1998, 2001-2014 Free Software
  ;; Foundation, Inc.
@@@ -99,7 -99,7 +99,7 @@@
      (modify-syntax-entry ?\( "()  " st)
      (modify-syntax-entry ?\) ")(  " st)
      ;; It's used for single-line comments as well as for #;(...) sexp-comments.
-     (modify-syntax-entry ?\; "< 2 " st)
+     (modify-syntax-entry ?\; "<"    st)
      (modify-syntax-entry ?\" "\"   " st)
      (modify-syntax-entry ?' "'   " st)
      (modify-syntax-entry ?` "'   " st)
    (setq-local lisp-indent-function 'scheme-indent-function)
    (setq mode-line-process '("" scheme-mode-line-process))
    (setq-local imenu-case-fold-search t)
-   (setq imenu-generic-expression scheme-imenu-generic-expression)
-   (setq-local imenu-syntax-alist
-       '(("+-*/.<>=?!$%_&~^:" . "w")))
+   (setq-local imenu-generic-expression scheme-imenu-generic-expression)
+   (setq-local imenu-syntax-alist '(("+-*/.<>=?!$%_&~^:" . "w")))
+   (setq-local syntax-propertize-function #'scheme-syntax-propertize)
    (setq font-lock-defaults
        '((scheme-font-lock-keywords
           scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
          nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
          beginning-of-defun
-         (font-lock-mark-block-function . mark-defun)
-         (font-lock-syntactic-face-function
-          . scheme-font-lock-syntactic-face-function)
-         (parse-sexp-lookup-properties . t)
-         (font-lock-extra-managed-props syntax-table)))
+         (font-lock-mark-block-function . mark-defun)))
    (setq-local lisp-doc-string-elt-property 'scheme-doc-string-elt))
  
  (defvar scheme-mode-line-process "")
@@@ -284,9 -280,7 +280,9 @@@ See `run-hooks'.
                     "\\|-module"
                   "\\)\\)\\>"
                   ;; Any whitespace and declared object.
 -                 "[ \t]*(?"
 +                 ;; The "(*" is for curried definitions, e.g.,
 +                 ;;  (define ((sum a) b) (+ a b))
 +                 "[ \t]*(*"
                   "\\(\\sw+\\)?")
           '(1 font-lock-keyword-face)
           '(6 (cond ((match-beginning 3) font-lock-function-name-face)
         (forward-comment (point-max))
         (if (eq (char-after) ?\() 2 0)))
  
- (defun scheme-font-lock-syntactic-face-function (state)
-   (when (and (null (nth 3 state))
-              (eq (char-after (nth 8 state)) ?#)
-              (eq (char-after (1+ (nth 8 state))) ?\;))
-     ;; It's a sexp-comment.  Tell parse-partial-sexp where it ends.
-     (save-excursion
-       (let ((pos (point))
-             (end
-              (condition-case err
                 (let ((parse-sexp-lookup-properties nil))
-                    (goto-char (+ 2 (nth 8 state)))
-                    ;; FIXME: this doesn't handle the case where the sexp
-                    ;; itself contains a #; comment.
-                    (forward-sexp 1)
-                    (point))
-                (scan-error (nth 2 err)))))
-         (when (< pos (- end 2))
-           (put-text-property pos (- end 2)
-                              'syntax-table scheme-sexp-comment-syntax-table))
-         (put-text-property (- end 1) end 'syntax-table '(12)))))
-   ;; Choose the face to use.
-   (lisp-font-lock-syntactic-face-function state))
+ (defun scheme-syntax-propertize (beg end)
+   (goto-char beg)
+   (scheme-syntax-propertize-sexp-comment (point) end)
+   (funcall
+    (syntax-propertize-rules
+     ("\\(#\\);" (1 (prog1 "< cn"
+                      (scheme-syntax-propertize-sexp-comment (point) end)))))
+    (point) end))
(defun scheme-syntax-propertize-sexp-comment (_ end)
+   (let ((state (syntax-ppss)))
+     (when (eq 2 (nth 7 state))
+       ;; It's a sexp-comment.  Tell parse-partial-sexp where it ends.
+       (condition-case nil
+           (progn
+             (goto-char (+ 2 (nth 8 state)))
+             ;; FIXME: this doesn't handle the case where the sexp
+             ;; itself contains a #; comment.
+             (forward-sexp 1)
+             (put-text-property (1- (point)) (point)
+                                'syntax-table (string-to-syntax "> cn")))
+         (scan-error (goto-char end))))))
  
  ;;;###autoload
  (define-derived-mode dsssl-mode scheme-mode "DSSSL"
@@@ -497,20 -491,20 +493,20 @@@ indentation.
  \f
  ;;; Let is different in Scheme
  
 -(defun would-be-symbol (string)
 -  (not (string-equal (substring string 0 1) "(")))
 +;; (defun scheme-would-be-symbol (string)
 +;;   (not (string-equal (substring string 0 1) "(")))
  
 -(defun next-sexp-as-string ()
 -  ;; Assumes that it is protected by a save-excursion
 -  (forward-sexp 1)
 -  (let ((the-end (point)))
 -    (backward-sexp 1)
 -    (buffer-substring (point) the-end)))
 +;; (defun scheme-next-sexp-as-string ()
 +;;   ;; Assumes that it is protected by a save-excursion
 +;;   (forward-sexp 1)
 +;;   (let ((the-end (point)))
 +;;     (backward-sexp 1)
 +;;     (buffer-substring (point) the-end)))
  
  ;; This is correct but too slow.
  ;; The one below works almost always.
  ;;(defun scheme-let-indent (state indent-point)
 -;;  (if (would-be-symbol (next-sexp-as-string))
 +;;  (if (scheme-would-be-symbol (scheme-next-sexp-as-string))
  ;;      (scheme-indent-specform 2 state indent-point)
  ;;      (scheme-indent-specform 1 state indent-point)))
  
diff --combined lisp/simple.el
@@@ -801,15 -801,15 +801,15 @@@ If BACKWARD-ONLY is non-nil, only delet
  If N is negative, delete newlines as well, leaving -N spaces.
  See also `cycle-spacing'."
    (interactive "*p")
 -  (cycle-spacing n nil t))
 +  (cycle-spacing n nil 'single-shot))
  
  (defvar cycle-spacing--context nil
    "Store context used in consecutive calls to `cycle-spacing' command.
 -The first time this function is run, it saves the original point
 -position and original spacing around the point in this
 -variable.")
 +The first time `cycle-spacing' runs, it saves in this variable:
 +its N argument, the original point position, and the original spacing
 +around point.")
  
 -(defun cycle-spacing (&optional n preserve-nl-back single-shot)
 +(defun cycle-spacing (&optional n preserve-nl-back mode)
    "Manipulate whitespace around point in a smart way.
  In interactive use, this function behaves differently in successive
  consecutive calls.
@@@ -820,31 -820,25 +820,31 @@@ It deletes all spaces and tabs around p
  it deletes newlines as well, leaving -N spaces.
  \(If PRESERVE-NL-BACK is non-nil, it does not delete newlines before point.)
  
 -The second call in a sequence (or the first call if the above does
 -not result in any changes) deletes all spaces.
 +The second call in a sequence deletes all spaces.
  
  The third call in a sequence restores the original whitespace (and point).
  
 -If SINGLE-SHOT is non-nil, it only performs the first step in the sequence."
 +If MODE is `single-shot', it only performs the first step in the sequence.
 +If MODE is `fast' and the first step would not result in any change
 +\(i.e., there are exactly (abs N) spaces around point),
 +the function goes straight to the second step.
 +
 +Repeatedly calling the function with different values of N starts a
 +new sequence each time."
    (interactive "*p")
    (let ((orig-pos      (point))
        (skip-characters (if (and n (< n 0)) " \t\n\r" " \t"))
 -      (n               (abs (or n 1))))
 +      (num             (abs (or n 1))))
      (skip-chars-backward (if preserve-nl-back " \t" skip-characters))
      (constrain-to-field nil orig-pos)
      (cond
 -     ;; Command run for the first time or single-shot is non-nil.
 -     ((or single-shot
 +     ;; Command run for the first time, single-shot mode or different argument
 +     ((or (eq 'single-shot mode)
          (not (equal last-command this-command))
 -        (not cycle-spacing--context))
 +        (not cycle-spacing--context)
 +        (not (eq (car cycle-spacing--context) n)))
        (let* ((start (point))
 -           (n     (- n (skip-chars-forward " " (+ n (point)))))
 +           (num   (- num (skip-chars-forward " " (+ num (point)))))
             (mid   (point))
             (end   (progn
                      (skip-chars-forward skip-characters)
        (setq cycle-spacing--context  ;; Save for later.
              ;; Special handling for case where there was no space at all.
              (unless (= start end)
 -              (cons orig-pos (buffer-substring start (point)))))
 +                (cons n (cons orig-pos (buffer-substring start (point))))))
        ;; If this run causes no change in buffer content, delete all spaces,
        ;; otherwise delete all excess spaces.
 -      (delete-region (if (and (not single-shot) (zerop n) (= mid end))
 +      (delete-region (if (and (eq mode 'fast) (zerop num) (= mid end))
                           start mid) end)
 -        (insert (make-string n ?\s))))
 +        (insert (make-string num ?\s))))
  
       ;; Command run for the second time.
       ((not (equal orig-pos (point)))
  
       ;; Command run for the third time.
       (t
 -      (insert (cdr cycle-spacing--context))
 -      (goto-char (car cycle-spacing--context))
 +      (insert (cddr cycle-spacing--context))
 +      (goto-char (cadr cycle-spacing--context))
        (setq cycle-spacing--context nil)))))
  \f
  (defun beginning-of-buffer (&optional arg)
@@@ -876,8 -870,10 +876,8 @@@ If the buffer is narrowed, this comman
  accessible part of the buffer.
  
  If Transient Mark mode is disabled, leave mark at previous
 -position, unless a \\[universal-argument] prefix is supplied.
 -
 -Don't use this command in Lisp programs!
 -\(goto-char (point-min)) is faster."
 +position, unless a \\[universal-argument] prefix is supplied."
 +  (declare (interactive-only "use `(goto-char (point-min))' instead."))
    (interactive "^P")
    (or (consp arg)
        (region-active-p)
                        (/ (+ 10 (* size (prefix-numeric-value arg))) 10)))
                 (point-min))))
    (if (and arg (not (consp arg))) (forward-line 1)))
 -(put 'beginning-of-buffer 'interactive-only
 -     "use `(goto-char (point-min))' instead.")
  
  (defun end-of-buffer (&optional arg)
    "Move point to the end of the buffer.
@@@ -900,8 -898,10 +900,8 @@@ If the buffer is narrowed, this comman
  accessible part of the buffer.
  
  If Transient Mark mode is disabled, leave mark at previous
 -position, unless a \\[universal-argument] prefix is supplied.
 -
 -Don't use this command in Lisp programs!
 -\(goto-char (point-max)) is faster."
 +position, unless a \\[universal-argument] prefix is supplied."
 +  (declare (interactive-only "use `(goto-char (point-max))' instead."))
    (interactive "^P")
    (or (consp arg) (region-active-p) (push-mark))
    (let ((size (- (point-max) (point-min))))
         ;; then scroll specially to put it near, but not at, the bottom.
         (overlay-recenter (point))
         (recenter -3))))
 -(put 'end-of-buffer 'interactive-only "use `(goto-char (point-max))' instead.")
  
  (defcustom delete-active-region t
    "Whether single-char deletion commands delete an active region.
@@@ -962,7 -963,6 +962,7 @@@ arg, and KILLFLAG is set if N is explic
  In Overwrite mode, single character backward deletion may replace
  tabs with spaces so as to back over columns, unless point is at
  the end of the line."
 +  (declare (interactive-only delete-char))
    (interactive "p\nP")
    (unless (integerp n)
      (signal 'wrong-type-argument (list 'integerp n)))
             (insert-char ?\s (- ocol (current-column)) nil))))
        ;; Otherwise, do simple deletion.
        (t (delete-char (- n) killflag))))
 -(put 'delete-backward-char 'interactive-only 'delete-char)
  
  (defun delete-forward-char (n &optional killflag)
    "Delete the following N characters (previous if N is negative).
@@@ -995,7 -996,6 +995,7 @@@ To disable this, set variable `delete-a
  Optional second arg KILLFLAG non-nil means to kill (save in kill
  ring) instead of delete.  Interactively, N is the prefix arg, and
  KILLFLAG is set if N was explicitly specified."
 +  (declare (interactive-only delete-char))
    (interactive "p\nP")
    (unless (integerp n)
      (signal 'wrong-type-argument (list 'integerp n)))
  
        ;; Otherwise, do simple deletion.
        (t (delete-char n killflag))))
 -(put 'delete-forward-char 'interactive-only 'delete-char)
  
  (defun mark-whole-buffer ()
    "Put point at beginning and mark at end of buffer.
@@@ -1016,7 -1017,6 +1016,7 @@@ If narrowing is in effect, only uses th
  You probably should not use this function in Lisp programs;
  it is usually a mistake for a Lisp function to use any subroutine
  that uses or sets the mark."
 +  (declare (interactive-only t))
    (interactive)
    (push-mark (point))
    (push-mark (point-max) nil t)
@@@ -1045,7 -1045,6 +1045,7 @@@ What you probably want instead is somet
    (forward-line (1- N))
  If at all possible, an even better solution is to use char counts
  rather than line counts."
 +  (declare (interactive-only forward-line))
    (interactive
     (if (and current-prefix-arg (not (consp current-prefix-arg)))
         (list (prefix-numeric-value current-prefix-arg))
      (if (eq selective-display t)
        (re-search-forward "[\n\C-m]" nil 'end (1- line))
        (forward-line (1- line)))))
 -(put 'goto-line 'interactive-only 'forward-line)
  
  (defun count-words-region (start end &optional arg)
    "Count the number of words in the region.
@@@ -2365,115 -2365,91 +2365,115 @@@ are ignored.  If BEG and END are nil, a
            (undo-make-selective-list (min beg end) (max beg end))
          buffer-undo-list)))
  
 +;; The positions given in elements of the undo list are the positions
 +;; as of the time that element was recorded to undo history.  In
 +;; general, subsequent buffer edits render those positions invalid in
 +;; the current buffer, unless adjusted according to the intervening
 +;; undo elements.
 +;;
 +;; Undo in region is a use case that requires adjustments to undo
 +;; elements.  It must adjust positions of elements in the region based
 +;; on newer elements not in the region so as they may be correctly
 +;; applied in the current buffer.  undo-make-selective-list
 +;; accomplishes this with its undo-deltas list of adjustments.  An
 +;; example undo history from oldest to newest:
 +;;
 +;; buf pos:
 +;; 123456789 buffer-undo-list undo-deltas
 +;; --------- ---------------- -----------
 +;; aaa       (1 . 4)          (1 . -3)
 +;; aaba      (3 . 4)          N/A (in region)
 +;; ccaaba    (1 . 3)          (1 . -2)
 +;; ccaabaddd (7 . 10)         (7 . -3)
 +;; ccaabdd   ("ad" . 6)       (6 . 2)
 +;; ccaabaddd (6 . 8)          (6 . -2)
 +;;  |   |<-- region: "caab", from 2 to 6
 +;;
 +;; When the user starts a run of undos in region,
 +;; undo-make-selective-list is called to create the full list of in
 +;; region elements.  Each element is adjusted forward chronologically
 +;; through undo-deltas to determine if it is in the region.
 +;;
 +;; In the above example, the insertion of "b" is (3 . 4) in the
 +;; buffer-undo-list.  The undo-delta (1 . -2) causes (3 . 4) to become
 +;; (5 . 6).  The next three undo-deltas cause no adjustment, so (5
 +;; . 6) is assessed as in the region and placed in the selective list.
 +;; Notably, the end of region itself adjusts from "2 to 6" to "2 to 5"
 +;; due to the selected element.  The "b" insertion is the only element
 +;; fully in the region, so in this example undo-make-selective-list
 +;; returns (nil (5 . 6)).
 +;;
 +;; The adjustment of the (7 . 10) insertion of "ddd" shows an edge
 +;; case.  It is adjusted through the undo-deltas: ((6 . 2) (6 . -2)).
 +;; Normally an undo-delta of (6 . 2) would cause positions after 6 to
 +;; adjust by 2.  However, they shouldn't adjust to less than 6, so (7
 +;; . 10) adjusts to (6 . 8) due to the first undo delta.
 +;;
 +;; More interesting is how to adjust the "ddd" insertion due to the
 +;; next undo-delta: (6 . -2), corresponding to reinsertion of "ad".
 +;; If the reinsertion was a manual retyping of "ad", then the total
 +;; adjustment should be (7 . 10) -> (6 . 8) -> (8 . 10).  However, if
 +;; the reinsertion was due to undo, one might expect the first "d"
 +;; character would again be a part of the "ddd" text, meaning its
 +;; total adjustment would be (7 . 10) -> (6 . 8) -> (7 . 10).
 +;;
 +;; undo-make-selective-list assumes in this situation that "ad" was a
 +;; new edit, even if it was inserted because of an undo.
 +;; Consequently, if the user undos in region "8 to 10" of the
 +;; "ccaabaddd" buffer, they could be surprised that it becomes
 +;; "ccaabad", as though the first "d" became detached from the
 +;; original "ddd" insertion.  This quirk is a FIXME.
 +
  (defun undo-make-selective-list (start end)
    "Return a list of undo elements for the region START to END.
 -The elements come from `buffer-undo-list', but we keep only
 -the elements inside this region, and discard those outside this region.
 -If we find an element that crosses an edge of this region,
 -we stop and ignore all further elements."
 -  (let ((undo-list-copy (undo-copy-list buffer-undo-list))
 -      (undo-list (list nil))
 -      some-rejected
 -      undo-elt temp-undo-list delta)
 -    (while undo-list-copy
 -      (setq undo-elt (car undo-list-copy))
 -      (let ((keep-this
 -           (cond ((and (consp undo-elt) (eq (car undo-elt) t))
 -                  ;; This is a "was unmodified" element.
 -                  ;; Keep it if we have kept everything thus far.
 -                  (not some-rejected))
 -                   ;; Skip over marker adjustments, instead relying on
 -                   ;; finding them after (TEXT . POS) elements
 -                   ((markerp (car-safe undo-elt))
 -                    nil)
 -                 (t
 -                  (undo-elt-in-region undo-elt start end)))))
 -      (if keep-this
 -          (progn
 -            (setq end (+ end (cdr (undo-delta undo-elt))))
 -            ;; Don't put two nils together in the list
 -            (when (not (and (eq (car undo-list) nil)
 -                              (eq undo-elt nil)))
 -                (setq undo-list (cons undo-elt undo-list))
 -                ;; If (TEXT . POS), "keep" its subsequent (MARKER
 -                ;; . ADJUSTMENT) whose markers haven't moved.
 -                (when (and (stringp (car-safe undo-elt))
 -                           (integerp (cdr-safe undo-elt)))
 -                  (let ((list-i (cdr undo-list-copy)))
 +The elements come from `buffer-undo-list', but we keep only the
 +elements inside this region, and discard those outside this
 +region.  The elements' positions are adjusted so as the returned
 +list can be applied to the current buffer."
 +  (let ((ulist buffer-undo-list)
 +        ;; A list of position adjusted undo elements in the region.
 +        (selective-list (list nil))
 +        ;; A list of undo-deltas for out of region undo elements.
 +        undo-deltas
 +        undo-elt)
 +    (while ulist
 +      (when undo-no-redo
 +        (while (gethash ulist undo-equiv-table)
 +          (setq ulist (gethash ulist undo-equiv-table))))
 +      (setq undo-elt (car ulist))
 +      (cond
 +       ((null undo-elt)
 +        ;; Don't put two nils together in the list
 +        (when (car selective-list)
 +          (push nil selective-list)))
 +       ((and (consp undo-elt) (eq (car undo-elt) t))
 +        ;; This is a "was unmodified" element.  Keep it
 +        ;; if we have kept everything thus far.
 +        (when (not undo-deltas)
 +          (push undo-elt selective-list)))
 +       ;; Skip over marker adjustments, instead relying
 +       ;; on finding them after (TEXT . POS) elements
 +       ((markerp (car-safe undo-elt))
 +        nil)
 +       (t
 +        (let ((adjusted-undo-elt (undo-adjust-elt undo-elt
 +                                                  undo-deltas)))
 +          (if (undo-elt-in-region adjusted-undo-elt start end)
 +              (progn
 +                (setq end (+ end (cdr (undo-delta adjusted-undo-elt))))
 +                (push adjusted-undo-elt selective-list)
 +                ;; Keep (MARKER . ADJUSTMENT) if their (TEXT . POS) was
 +                ;; kept.  primitive-undo may discard them later.
 +                (when (and (stringp (car-safe adjusted-undo-elt))
 +                           (integerp (cdr-safe adjusted-undo-elt)))
 +                  (let ((list-i (cdr ulist)))
                      (while (markerp (car-safe (car list-i)))
 -                      (let* ((adj-elt (pop list-i))
 -                             (m (car adj-elt)))
 -                        (and (eq (marker-buffer m) (current-buffer))
 -                             (= (cdr undo-elt) m)
 -                             (push adj-elt undo-list))))))))
 -        (if (undo-elt-crosses-region undo-elt start end)
 -            (setq undo-list-copy nil)
 -          (setq some-rejected t)
 -          (setq temp-undo-list (cdr undo-list-copy))
 -          (setq delta (undo-delta undo-elt))
 -
 -          (when (/= (cdr delta) 0)
 -            (let ((position (car delta))
 -                  (offset (cdr delta)))
 -
 -              ;; Loop down the earlier events adjusting their buffer
 -              ;; positions to reflect the fact that a change to the buffer
 -              ;; isn't being undone. We only need to process those element
 -              ;; types which undo-elt-in-region will return as being in
 -              ;; the region since only those types can ever get into the
 -              ;; output
 -
 -              (while temp-undo-list
 -                (setq undo-elt (car temp-undo-list))
 -                (cond ((integerp undo-elt)
 -                       (if (>= undo-elt position)
 -                           (setcar temp-undo-list (- undo-elt offset))))
 -                      ((atom undo-elt) nil)
 -                      ((stringp (car undo-elt))
 -                       ;; (TEXT . POSITION)
 -                       (let ((text-pos (abs (cdr undo-elt)))
 -                             (point-at-end (< (cdr undo-elt) 0 )))
 -                         (if (>= text-pos position)
 -                             (setcdr undo-elt (* (if point-at-end -1 1)
 -                                                 (- text-pos offset))))))
 -                      ((integerp (car undo-elt))
 -                       ;; (BEGIN . END)
 -                       (when (>= (car undo-elt) position)
 -                         (setcar undo-elt (- (car undo-elt) offset))
 -                         (setcdr undo-elt (- (cdr undo-elt) offset))))
 -                      ((null (car undo-elt))
 -                       ;; (nil PROPERTY VALUE BEG . END)
 -                       (let ((tail (nthcdr 3 undo-elt)))
 -                         (when (>= (car tail) position)
 -                           (setcar tail (- (car tail) offset))
 -                           (setcdr tail (- (cdr tail) offset))))))
 -                (setq temp-undo-list (cdr temp-undo-list))))))))
 -      (setq undo-list-copy (cdr undo-list-copy)))
 -    (nreverse undo-list)))
 +                      (push (pop list-i) selective-list)))))
 +            (let ((delta (undo-delta undo-elt)))
 +              (when (/= 0 (cdr delta))
 +                (push delta undo-deltas)))))))
 +      (pop ulist))
 +    (nreverse selective-list)))
  
  (defun undo-elt-in-region (undo-elt start end)
    "Determine whether UNDO-ELT falls inside the region START ... END.
@@@ -2521,73 -2497,6 +2521,73 @@@ is not *inside* the region START...END.
         ;; (BEGIN . END)
         (and (< (car undo-elt) end)
              (> (cdr undo-elt) start)))))
 +(make-obsolete 'undo-elt-crosses-region nil "24.5")
 +
 +(defun undo-adjust-elt (elt deltas)
 +  "Return adjustment of undo element ELT by the undo DELTAS
 +list."
 +  (pcase elt
 +    ;; POSITION
 +    ((pred integerp)
 +     (undo-adjust-pos elt deltas))
 +    ;; (BEG . END)
 +    (`(,(and beg (pred integerp)) . ,(and end (pred integerp)))
 +     (undo-adjust-beg-end beg end deltas))
 +    ;; (TEXT . POSITION)
 +    (`(,(and text (pred stringp)) . ,(and pos (pred integerp)))
 +     (cons text (* (if (< pos 0) -1 1)
 +                   (undo-adjust-pos (abs pos) deltas))))
 +    ;; (nil PROPERTY VALUE BEG . END)
 +    (`(nil . ,(or `(,prop ,val ,beg . ,end) pcase--dontcare))
 +     `(nil ,prop ,val . ,(undo-adjust-beg-end beg end deltas)))
 +    ;; (apply DELTA START END FUN . ARGS)
 +    ;; FIXME
 +    ;; All others return same elt
 +    (_ elt)))
 +
 +;; (BEG . END) can adjust to the same positions, commonly when an
 +;; insertion was undone and they are out of region, for example:
 +;;
 +;; buf pos:
 +;; 123456789 buffer-undo-list undo-deltas
 +;; --------- ---------------- -----------
 +;; [...]
 +;; abbaa     (2 . 4)          (2 . -2)
 +;; aaa       ("bb" . 2)       (2 . 2)
 +;; [...]
 +;;
 +;; "bb" insertion (2 . 4) adjusts to (2 . 2) because of the subsequent
 +;; undo.  Further adjustments to such an element should be the same as
 +;; for (TEXT . POSITION) elements.  The options are:
 +;;
 +;;   1: POSITION adjusts using <= (use-< nil), resulting in behavior
 +;;      analogous to marker insertion-type t.
 +;;
 +;;   2: POSITION adjusts using <, resulting in behavior analogous to
 +;;      marker insertion-type nil.
 +;;
 +;; There was no strong reason to prefer one or the other, except that
 +;; the first is more consistent with prior undo in region behavior.
 +(defun undo-adjust-beg-end (beg end deltas)
 +  "Return cons of adjustments to BEG and END by the undo DELTAS
 +list."
 +  (let ((adj-beg (undo-adjust-pos beg deltas)))
 +    ;; Note: option 2 above would be like (cons (min ...) adj-end)
 +    (cons adj-beg
 +          (max adj-beg (undo-adjust-pos end deltas t)))))
 +
 +(defun undo-adjust-pos (pos deltas &optional use-<)
 +  "Return adjustment of POS by the undo DELTAS list, comparing
 +with < or <= based on USE-<."
 +  (dolist (d deltas pos)
 +    (when (if use-<
 +              (< (car d) pos)
 +            (<= (car d) pos))
 +      (setq pos
 +            ;; Don't allow pos to become less than the undo-delta
 +            ;; position.  This edge case is described in the overview
 +            ;; comments.
 +            (max (car d) (- pos (cdr d)))))))
  
  ;; Return the first affected buffer position and the delta for an undo element
  ;; delta is defined as the change in subsequent buffer positions if we *did*
@@@ -3372,11 -3281,6 +3372,11 @@@ support pty association, if PROGRAM is 
  
  (defvar process-menu-query-only nil)
  
 +(defvar process-menu-mode-map
 +  (let ((map (make-sparse-keymap)))
 +    (define-key map [?d] 'process-menu-delete-process)
 +    map))
 +
  (define-derived-mode process-menu-mode tabulated-list-mode "Process Menu"
    "Major mode for listing the processes called by Emacs."
    (setq tabulated-list-format [("Process" 15 t)
    (add-hook 'tabulated-list-revert-hook 'list-processes--refresh nil t)
    (tabulated-list-init-header))
  
 +(defun process-menu-delete-process ()
 +  "Kill process at point in a `list-processes' buffer."
 +  (interactive)
 +  (delete-process (tabulated-list-get-id))
 +  (revert-buffer))
 +
  (defun list-processes--refresh ()
    "Recompute the list of processes for the Process List buffer.
  Also, delete any process that is exited or signaled."
@@@ -4375,8 -4273,10 +4375,8 @@@ If ARG is zero, move to the beginning o
  (defun insert-buffer (buffer)
    "Insert after point the contents of BUFFER.
  Puts mark after the inserted text.
 -BUFFER may be a buffer or a buffer name.
 -
 -This function is meant for the user to run interactively.
 -Don't call it from programs: use `insert-buffer-substring' instead!"
 +BUFFER may be a buffer or a buffer name."
 +  (declare (interactive-only insert-buffer-substring))
    (interactive
     (list
      (progn
       (insert-buffer-substring (get-buffer buffer))
       (point)))
    nil)
 -(put 'insert-buffer 'interactive-only 'insert-buffer-substring)
  
  (defun append-to-buffer (buffer start end)
    "Append to specified buffer the text of the region.
@@@ -4983,8 -4884,11 +4983,8 @@@ this command moves to the specified goa
  The goal column is stored in the variable `goal-column', which is nil
  when there is no goal column.  Note that setting `goal-column'
  overrides `line-move-visual' and causes this command to move by buffer
 -lines rather than by display lines.
 -
 -If you are thinking of using this in a Lisp program, consider
 -using `forward-line' instead.  It is usually easier to use
 -and more reliable (no dependence on goal column, etc.)."
 +lines rather than by display lines."
 +  (declare (interactive-only forward-line))
    (interactive "^p\np")
    (or arg (setq arg 1))
    (if (and next-line-add-newlines (= arg 1))
           (signal (car err) (cdr err))))
        (line-move arg nil nil try-vscroll)))
    nil)
 -(put 'next-line 'interactive-only 'forward-line)
  
  (defun previous-line (&optional arg try-vscroll)
    "Move cursor vertically up ARG lines.
@@@ -5026,9 -4931,11 +5026,9 @@@ this command moves to the specified goa
  The goal column is stored in the variable `goal-column', which is nil
  when there is no goal column.  Note that setting `goal-column'
  overrides `line-move-visual' and causes this command to move by buffer
 -lines rather than by display lines.
 -
 -If you are thinking of using this in a Lisp program, consider using
 -`forward-line' with a negative argument instead.  It is usually easier
 -to use and more reliable (no dependence on goal column, etc.)."
 +lines rather than by display lines."
 +  (declare (interactive-only
 +            "use `forward-line' with negative argument instead."))
    (interactive "^p\np")
    (or arg (setq arg 1))
    (if (called-interactively-p 'interactive)
         (signal (car err) (cdr err))))
      (line-move (- arg) nil nil try-vscroll))
    nil)
 -(put 'previous-line 'interactive-only
 -     "use `forward-line' with negative argument instead.")
  
  (defcustom track-eol nil
    "Non-nil means vertical motion starting at end of line keeps to ends of lines.
@@@ -5069,7 -4978,15 +5069,15 @@@ When the `track-eol' feature is doing i
  `most-positive-fixnum'.")
  
  (defcustom line-move-ignore-invisible t
-   "Non-nil means \\[next-line] and \\[previous-line] ignore invisible lines.
+   "Non-nil means commands that move by lines ignore invisible newlines.
+ When this option is non-nil, \\[next-line], \\[previous-line], \\[move-end-of-line], and \\[move-beginning-of-line] behave
+ as if newlines that are invisible didn't exist, and count
+ only visible newlines.  Thus, moving across across 2 newlines
+ one of which is invisible will be counted as a one-line move.
+ Also, a non-nil value causes invisible text to be ignored when
+ counting columns for the purposes of keeping point in the same
+ column by \\[next-line] and \\[previous-line].
  Outline mode sets this."
    :type 'boolean
    :group 'editing-basics)
@@@ -6567,7 -6484,6 +6575,7 @@@ The function should return non-nil if t
                              (not blink-matching-paren-dont-ignore-comments))))
                    (condition-case ()
                        (progn
 +                      (syntax-propertize (point))
                          (forward-sexp -1)
                          ;; backward-sexp skips backward over prefix chars,
                          ;; so move back to the matching paren.
@@@ -6682,8 -6598,6 +6690,8 @@@ At top-level, as an editor command, thi
      (deactivate-mark))
    (if (fboundp 'kmacro-keyboard-quit)
        (kmacro-keyboard-quit))
 +  (when completion-in-region-mode
 +    (completion-in-region-mode -1))
    (setq defining-kbd-macro nil)
    (let ((debug-on-quit nil))
      (signal 'quit nil)))
@@@ -7924,6 -7838,31 +7932,6 @@@ contains the list of implementations cu
                               command-name)))))))
  
  \f
 -;; This is here because files in obsolete/ are not scanned for autoloads.
 -
 -(defvar iswitchb-mode nil "\
 -Non-nil if Iswitchb mode is enabled.
 -See the command `iswitchb-mode' for a description of this minor mode.
 -Setting this variable directly does not take effect;
 -either customize it (see the info node `Easy Customization')
 -or call the function `iswitchb-mode'.")
 -
 -(custom-autoload 'iswitchb-mode "iswitchb" nil)
 -
 -(autoload 'iswitchb-mode "iswitchb" "\
 -Toggle Iswitchb mode.
 -With a prefix argument ARG, enable Iswitchb mode if ARG is
 -positive, and disable it otherwise.  If called from Lisp, enable
 -the mode if ARG is omitted or nil.
 -
 -Iswitchb mode is a global minor mode that enables switching
 -between buffers using substrings.  See `iswitchb' for details.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(make-obsolete 'iswitchb-mode
 -               "use `icomplete-mode' or `ido-mode' instead." "24.4")
 -\f
  
  (provide 'simple)
  
diff --combined src/ChangeLog
 -2014-05-25  Eli Zaretskii  <eliz@gnu.org>
++2014-05-26  Eli Zaretskii  <eliz@gnu.org>
+       * xdisp.c (move_it_in_display_line_to): Don't record wrap position
+       if we are iterating over an object that generates glyphs for
+       marginal areas.  (Bug#17585)
 -2014-05-24  Paul Eggert  <eggert@cs.ucla.edu>
++2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
+       * xdisp.c (safe__call1, safe__eval): Now static.
 -2014-05-24  Eli Zaretskii  <eliz@gnu.org>
++2014-05-26  Eli Zaretskii  <eliz@gnu.org>
+       * xdisp.c (safe__call): Accept va_list argument instead of '...'.
+       (safe_call, safe__call1): Construct a va_list argument for safe_call.
+       (safe_call1): Call safe_call instead of safe__call directly.
 -2014-05-24  Ken Brown  <kbrown@cornell.edu>
++2014-05-26  Ken Brown  <kbrown@cornell.edu>
+       * w32term.c (x_delete_display) [CYGWIN]: Don't free
+       dpyinfo->w32_id_name, to make sure it doesn't get freed more than
+       once.  (Bug#17510)
 -2014-05-24  Stefan Monnier  <monnier@iro.umontreal.ca>
++2014-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * xdisp.c: Bind inhibit-quit during pre-redisplay-function.
+       (safe__call, safe__call1, safe__eval): New functions.
+       (safe_call): Use it.
+       (prepare_menu_bars): Use it for pre-redisplay-function (bug#17577).
+       (display_mode_element): Same for `:eval'.
 -2014-05-22  Paul Eggert  <eggert@cs.ucla.edu>
++2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
+       Fix port to 32-bit AIX (Bug#17540).
+       * unexaix.c (copy_text_and_data): Don't add text_scnptr to ptr
+       twice.  _text already includes this offset.
+       (unrelocate_symbols): Don't cast 64-bit integer to pointer.
 -2014-05-21  Eli Zaretskii  <eliz@gnu.org>
++2014-05-26  Eli Zaretskii  <eliz@gnu.org>
+       * xdisp.c (move_it_in_display_line_to): Avoid infinite recursion:
+       when closest_pos is identical to to_charpos, don't recurse, since
+       we already tried that, and failed.  (Bug#17539)
 -2014-05-20  Eli Zaretskii  <eliz@gnu.org>
 -
+       * w32fns.c (unwind_create_frame) [GLYPH_DEBUG]: If we are
+       unwinding when frame's faces were not initialized yet, increment
+       the frame's image-cache reference count before calling
+       x_free_frame_resources.  Don't dereference
+       dpyinfo->terminal->image_cache if it is NULL.  (Bug#17524)
 -2014-05-11  Glenn Morris  <rgm@gnu.org>
 +2014-05-25  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfont.m (nsfont_draw): Simplify as arguments are adjusted in
 +      nsterm.m now.
 +
 +      * nsterm.m (ns_draw_glyph_string): Move isComposite and end from
 +      macfont.m, call draw with adjusted arguments so font drivers
 +      don't need to do that.
 +
 +      * macfont.m (macfont_draw): Merge changes from Macport.
 +
 +2014-05-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * alloc.c (garbage_collect_1): New function, with all of the guts
 +      of Fgarbage_collect.
 +      (mark_stack): Accept an argument END and don't mark Lisp objects
 +      on the stack beyond the address given by END.  Calculation of END
 +      was moved to Fgarbage_collect.
 +      (Fgarbage_collect): Calculate the end address of the stack portion
 +      that needs to be examined by mark_stack, and pass that address to
 +      garbage_collect_1, which will pass it to mark_stack. See
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00270.html
 +      for more details about the underlying problems.  In particular,
 +      this avoids dumping Emacs with the large hash-table whose value is
 +      held in purify-flag for most of the time loadup.el runs.
 +
 +2014-05-24  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xfns.c (x_window_property_intern): New function (code from
 +      x_window_property).
 +      (Fx_window_property): Call x_window_property_intern.  If property
 +      not found and NILP (source) and outer window != inner window,
 +      check outer window for property (Bug#17537).
 +
 +2014-05-22  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Supply malloc and alloc_size attributes for extern allocators.
 +      This documents the C API, and helps GCC generate a bit better code.
 +      * conf_post.h (ATTRIBUTE_MALLOC, ATTRIBUTE_ALLOC_SIZE)
 +      (ATTRIBUTE_MALLOC_SIZE): New macros.
 +      * gmalloc.c (malloc, realloc, calloc):
 +      * gtkutil.h (malloc_widget_value):
 +      * lisp.h (ralloc, r_re_alloc, xmalloc, xzalloc, xrealloc, xnmalloc)
 +      (xnrealloc, xstrdup, xlispstrdup, record_xmalloc):
 +      Use them.
 +
 +2014-05-21  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't assume that ImageMagick uses a 16-bit quantum (Bug#17519).
 +      * image.c (imagemagick_load_image): Port to hosts that do not use
 +      a 16-bit quantum, i.e., QuantumRange does not equal 65535.
 +
 +2014-05-21  Leo Liu  <sdl.web@gmail.com>
 +
 +      * fns.c (Fnreverse): Accept strings for SEQ and update doc-string.
 +
 +2014-05-20  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbusbind.c (xd_signature): Revert last 2 patches.
 +
 +2014-05-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Allow any non-nil value to count as true in bool-vector.
 +      Likewise for xd_signature in dbusbind.c.
 +      This is more consistent with the usual practice in Emacs, which is
 +      that any non-nil value counts as true.
 +      * alloc.c (Fbool_vector): Don't require args to be t or nil.
 +      * dbusbind.c (xd_signature): Likewise, for booleans.
 +      * data.c, lisp.h (Qbooleanp):
 +      * lisp.h (CHECK_BOOLEAN): Remove.  All uses removed.
 +
 +2014-05-19  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * lisp.h (CHECK_BOOLEAN): New function.
 +      * alloc.c (Fbool_vector): New function.
 +      (syms_of_alloc): Defsubr it.
 +      * data.c (Qbooleanp): New symbol.
 +      (syms_of_data): DEFSYM it.
 +      * dbusbind.c (xd_signature): Use CHECK_BOOLEAN.
 +
 +      * font.c (font_matching_entity): Extract font-entity object
 +      from the vector of matching entities (Bug#17486).
 +
 +2014-05-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume C99 or later (Bug#17487).
 +      * bytecode.c (B__dummy__): Remove.
 +      * conf_post.h (bool_bf) [!NS_IMPL_GNUSTEP]: Use bool.
 +      (FLEXIBLE_ARRAY_MEMBER): Now always empty.
 +      * dbusbind.c (XD_DEBUG_MESSAGE) [!DBUS_DEBUG]:
 +      * regex.c (DEBUG_PRINT): Assume varargs macros.
 +      * lisp.h (DEFUN_FUNCTION_INIT): Remove.  All uses now assume C99.
 +
 +2014-05-17  Fabrice Popineau  <fabrice.popineau@gmail.com>
 +
 +      * buffer.c (init_buffer) [USE_MMAP_FOR_BUFFERS]: Always map new
 +      memory for every buffer that was dumped.
 +
 +2014-05-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fns.c (Freverse): Allow vectors, bool vectors and strings.
 +      (Fnreverse): Allow vectors and bool vectors.
 +
 +2014-05-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Minor cleanup for terminal setup.
 +      * termhooks.h (create_terminal): Adjust prototype.
 +      * terminal.c (create_terminal): Pass output method and RIF as args.
 +      (init_initial_terminal):
 +      * nsterm.m (ns_create_terminal):
 +      * term.c (init_tty):
 +      * w32term.c (w32_create_terminal):
 +      * xterm.c (x_create_terminal): Adjust users.
 +      Avoid redundant NULL initializers and add comments.
 +
 +2014-05-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * keyboard.c (Qdeactivate_mark): Now static.
 +
 +2014-05-13  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      If available, use Xfixes extension to do pointer blanking.
 +      * Makefile.in (XFIXES_CFLAGS, XFIXES_LIBS): New var.
 +      * xfns.c (x_set_mouse_color): Do not call make_invisible_cursor here.
 +      (make_invisible_cursor): Move to...
 +      * xterm.c (make_invisible_cursor): ...here.
 +      (x_probe_xfixes_extension, xfixes_toggle_visible_pointer)
 +      (x_toggle_visible_pointer, x_setup_pointer_blanking): New functions.
 +      (x_term_init): Call to x_setup_pointer_blanking.
 +      (XTtoggle_invisible_pointer): Use blanking specific to this display.
 +      * xterm.h (struct x_display_info): New member toggle_visible_pointer.
 +
 +2014-05-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * xdisp.c (draw_glyphs): Set clipping to highlight boundaries.
 +
 +2014-05-12  Glenn Morris  <rgm@gnu.org>
  
        * fileio.c (Ffile_executable_p): Doc tweak.
  
 -2014-05-10  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-05-12  Jan Djärv  <jan.h.d@swipnet.se>
  
        * xsettings.c (init_gsettings): Use g_settings_schema_source_lookup
        instead of deprecated g_settings_list_schemas if possible (Bug#17434).
  
 -2014-05-07  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-05-08  Paul Eggert  <eggert@cs.ucla.edu>
  
        * minibuf.c (read_minibuf): Avoid C99ism in previous patch (Bug#17430).
  
 -2014-05-07  Jarek Czekalski  <jarekczek@poczta.onet.pl>
 +2014-05-08  Jarek Czekalski  <jarekczek@poczta.onet.pl>
  
        Fix initialization of minibuffer history variable (Bug#17430).
        * minibuf.c (read_minibuf): Initialize histval to Qnil if unbound.
        Move the initialization up to prevent any "value void" message.
  
 -2014-05-06  Samuel Bronson  <naesten@gmail.com>
 +2014-05-08  Samuel Bronson  <naesten@gmail.com>
  
        * keyboard.c (Frecursive_edit): Ensure inc&dec of command_loop_level
        are matched (bug#17413).
  
 -2014-05-06  Jarek Czekalski  <jarekczek@poczta.onet.pl>
 +2014-05-08  Jarek Czekalski  <jarekczek@poczta.onet.pl>
  
        Stop tooltips pulling Emacs window to front (Bug#17408).
        * w32fns.c (Fx_show_tip): Add SWP_NOOWNERZORDER flag to
        SetWindowPos invocations.
  
 -2014-05-05  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-05-08  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsselect.m (Fx_selection_exists_p): Just return Qnil if window system
        not initialized (Bug#17398).
  
 +2014-05-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * image.c: Include <png.h> before <setjmp.h> (Bug#17429).
 +
 +2014-05-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * image.c: Do not use libpng if HAVE_NS, as NS does its own thing.
 +      [HAVE_NS]: Do not include png.h.
 +      (x_query_frame_background_color): New function.
 +      (png_load_body, imagemagick_load_image, svg_load_image): Use it.
 +      (png_load_body): Coalesce duplicate code.
 +
  2014-05-04  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      Revert recent libpng changes (Bug#17339).
 -      * Makefile.in (PNG_CFLAGS): Remove; all uses removed.
 -      * image.c [HAVE_LIBPNG_PNG_H]: Include <libpng/png.h>, not <png.h>.
 +      Consult libpng-config more consistently (Bug#17339).
 +      * Makefile.in (PNG_CFLAGS): New var.
 +      (ALL_CFLAGS): Use it.
 +      * image.c [HAVE_PNG]: Don't worry about <libpng/png.h>, as
 +      CFLAGS now handles this.
  
  2014-05-03  Paul Eggert  <eggert@cs.ucla.edu>
  
  
        * buffer.c (overlay_strings): Fix the wording of the commentary.
  
 -2014-05-02  Paul Eggert  <eggert@cs.ucla.edu>
 -
 -      Consult libpng-config more consistently (Bug#17339).
 -      * Makefile.in (PNG_CFLAGS): New var.
 -      (ALL_CFLAGS): Use it.
 -      * image.c [HAVE_PNG]: Don't worry about <libpng/png.h>, as
 -      CFLAGS now handles this.
 -
  2014-05-01  Glenn Morris  <rgm@gnu.org>
  
        * floatfns.c (Fisnan):
        GCC 4.9.0 warned about this, and I couldn't easily prove to my own
        satisfaction that they would always be initialized.
  
 -2014-04-29  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-30  Eli Zaretskii  <eliz@gnu.org>
  
 -      * term.c (tty_menu_display): Move the cursor to the active menu
 -      item.
 +      * term.c (tty_menu_display): Move the cursor to the active menu item.
        (tty_menu_activate): Return the cursor to the active menu item
        after displaying the menu and after displaying help-echo.  See
        http://lists.gnu.org/archive/html/emacs-devel/2014-04/msg00402.html
        for the details of why this is needed by screen readers and
        Braille displays.
  
 -2014-04-29  Glenn Morris  <rgm@gnu.org>
 +2014-04-30  Glenn Morris  <rgm@gnu.org>
  
        * process.c (handle_child_signal):
        Handle systems without WCONTINUED.  (Bug#15110, 17339)
  
 -2014-04-23  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * window.c (struct saved_window): Remove mark.
 +      (Fset_window_configuration, save_window_save)
 +      (compare_window_configurations): Don't touch marks any more.
 +
 +2014-04-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bits_word for gcmarkbits.
 +      * alloc.c (struct cons_block, struct float_block): On 64-bit hosts,
 +      bits_word is typically a tad more efficient for mark bits than
 +      unsigned is, so use bits_word.  All uses changed.
 +      * lisp.h (BITS_PER_INT): Remove; no longer used.
 +
 +      Avoid undefined behavior in signed left shift.
 +      This ports to GCC 4.9.0 with -fsanitize=undefined.
 +      * alloc.c (bool_vector_fill, SETMARKBIT, UNSETMARKBIT):
 +      * data.c (Fash):
 +      * regex.c (extract_number):
 +      * lisp.h (make_number, XINT):
 +      Do not shift a 1 bit left into a sign bit.
 +      * alloc.c (struct cons_block, struct float_block): Use unsigned,
 +      not int, for gcmarkbits.  All uses changed.
 +
 +2014-04-25  Eli Zaretskii  <eliz@gnu.org>
  
        * search.c (Fnewline_cache_check): Don't try to count newlines
        outside the buffer's restriction, as find_newline doesn't support that.
  
 +2014-04-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * window.c (Fset_window_configuration): Deactivate the mark before
 +      unsetting the mark.
 +      (set_window_buffer): Ignore window_initialized.
 +      (window_initialized): Remove.
 +      * keyboard.c (Qdeactivate_mark): Not static any more.
 +      * buffer.c (buffer_local_value): Rename from buffer_local_value_1.
 +      Update all callers.
 +
 +2014-04-23  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * conf_post.h (ADDRESS_SANITIZER_WORKAROUND): Port to GCC 4.9.0
 +      and to clang 3.4, which have fixed the bug.  This should let us
 +      run a bit faster on these platforms when address sanitization is
 +      in effect.
 +
  2014-04-22  Paul Eggert  <eggert@cs.ucla.edu>
  
        Port to GCC 4.9.0 with --enable-gcc-warnings.
        (Fnewline_cache_check): New function.
        (syms_of_search): Defsubr it.
  
 -2014-04-21  Jarek Czekalski  <jarekczek@poczta.onet.pl>
 +2014-04-22  Jarek Czekalski  <jarekczek@poczta.onet.pl>
  
        Fix freezing with scroll bars of GTK3 Toolkit (bug#15801).
        * keyboard.c (unblock_input): Add comment.
        * xgselect.c (xg_select): Prevent Glib main loop recursion.
  
 +2014-04-22  Daniel Colascione  <dancol@dancol.org>
 +
 +      * lread.c (readevalloop_eager_expand_eval): New function
 +      that can recurse into toplevel forms.
 +      (readevalloop): Call it.
 +      * lisp.h: Declare Qprogn.
 +      * callint.c (Qprogn): No longer static.
 +
  2014-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * intervals.c (rotate_right, rotate_left): Fix up length computation.
        Also change identifiers to match the comments, and add more assertions
        (bug#16234).
  
 -2014-04-18  Eli Zaretskii  <eliz@gnu.org>
 -
 -      * xdisp.c (insert_left_trunc_glyphs): Ensure the left truncation
 -      glyph is written to TEXT_AREA of the temporary glyph_row.
 -      (Bug#17288)
 -
  2014-04-18  Paul Eggert  <eggert@cs.ucla.edu>
  
        * emacs.c (close_output_streams): Don't clear and restore errno.
  
 -2014-04-17  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-04-18  Jan Djärv  <jan.h.d@swipnet.se>
  
        * xterm.c (x_make_frame_visible): Prevent endless loop when frame
        never becomes visible, i.e. using XMonad  (Bug#17237).
  
 -2014-04-17  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-18  Eli Zaretskii  <eliz@gnu.org>
  
 -      * xdisp.c (Fline_pixel_height): Don't assume that the current
 -      buffer and the selected window's buffer are one and the same.
 -      (Bug#17281)
 +      * xdisp.c (insert_left_trunc_glyphs): Ensure the left truncation
 +      glyph is written to TEXT_AREA of the temporary glyph_row.  (Bug#17288)
 +      (Fline_pixel_height): Don't assume that the current buffer and the
 +      selected window's buffer are one and the same.  (Bug#17281)
  
        * insdel.c (invalidate_buffer_caches): Invalidate the bidi
        paragraph-start cache before the newline cache.  (Bug#17269)
  
 +2014-04-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * term.c (tty_send_additional_strings): No need to fflush here,
 +      as callers fflush.
 +      (tty_set_terminal_modes): fflush after sending additional strings,
 +      not before.
 +
 +2014-04-17  Daniel Colascione  <dancol@dancol.org>
 +
 +      * term.c (Qtty_mode_set_strings, Qtty_mode_reset_strings): New
 +      symbols.
 +      (tty_send_additional_strings): New function.
 +      (tty_set_terminal_modes, tty_reset_terminal_modes): Use it.
 +      (syms_of_term): Intern tty-mode-set-strings and
 +      tty-mode-reset-strings.
 +
  2014-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * window.c (save_window_save): Lookup window_point_insertion_type in
        Move vfork-related portions under #ifndef MSDOS.
        (syms_of_callproc): Unify templates of MSDOS and WINDOWSNT.
  
 -2014-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * buffer.c (Foverlays_at): Add argument `sorted'.
  
 -2014-04-14  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-16  Eli Zaretskii  <eliz@gnu.org>
  
        * insdel.c (invalidate_buffer_caches): When deleting or replacing
        text, invalidate the bidi_paragraph_cache upto and including the
        preceding newline.
  
 -2014-04-13  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-04-16  Paul Eggert  <eggert@cs.ucla.edu>
  
        Port to IRIX 6.5 (Bug#9684).
 -      * alloc.c (TAGGABLE_NULL): New constant,
 -      for porting to hosts with nontrivial DATA_SEG_BITS settings.
 -      (next_vector, set_next_vector): Use it.
        * conf_post.h (INET6) [IRIX6_5]: Define.
        (HAVE_GETADDRINFO) [IRIX6_5]: Undef.
        * data.c (BITS_PER_ULL): Don't assume ULLONG_MAX is defined.
 -      * lisp.h (lisp_h_XPNTR): Don't OR in bits that aren't masked out,
 -      for consistency with how TAGGABLE_NULL is computed.
  
 -2014-04-13  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-16  Eli Zaretskii  <eliz@gnu.org>
  
        * keyboard.c (Fopen_dribble_file): Encode the dribble file-name
        before passing it to system APIs.
  
 -      * puresize.h (BASE_PURESIZE): Bump by 1K.  (Bug#17255)
 -
 -2014-04-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * bytecode.c (exec_byte_code): Rework the volatiles.  Most importantly,
        make sure stack.byte_string_start is not de-adjusted by pushhandler.
  
 -2014-04-12  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-04-16  Paul Eggert  <eggert@cs.ucla.edu>
  
        * keyboard.c (Fopen_dribble_file): Avoid some races.  (Bug#17187)
  
 +2014-04-15  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove DATA_SEG_BITS.
 +      The DATA_SEG_BITS hack was needed for older 32 bit platforms.
 +      As a result of this change, Emacs won't work on IRIX 6.5 with IRIX
 +      cc, but that platform is so old that SGI itself stopped supporting
 +      it in December 2013.  If you still need Emacs on IRIX, please
 +      either compile with GCC and port the undumping code, or run
 +      './configure --with-wide-int'.
 +      * alloc.c (gdb_make_enums_visible): Update to match lisp.h.
 +      * lisp.h (GCTYPEBITS): Move definition up, and switch to the
 +      DEFINE_GDB_SYMBOL_START way to define it.
 +      (NONPOINTER_BITS): New macro.
 +      (EMACS_INT): Use it.
 +      [!USE_LSB_TAG && !WIDE_EMACS_INT]: Fail, and suggest reporting
 +      the problem and/or configuring --with-wide-int.
 +      (USE_LSB_TAG): Simplify, based on above changes.
 +      (gdb_DATA_SEG_BITS): Remove.  All uses removed.
 +      * vm-limit.c (exceeds_lisp_ptr): Remove.  All uses removed.
 +
  2014-04-12  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (move_it_by_lines): If a large portion of buffer text is
        * indent.c (Fvertical_motion): Handle correctly the case when the
        display string is preceded by an empty line.
  
 -2014-04-11  Eli Zaretskii  <eliz@gnu.org>
 -
        * w32.c (sys_umask) <WRITE_USER>: Remove redundant constant, and
        use S_IWRITE instead.
  
  
        * keyboard.c (Fopen_dribble_file): Make file private.  (Bug#17187)
  
 -2014-04-09  Ken Brown  <kbrown@cornell.edu>
 +2014-04-11  Ken Brown  <kbrown@cornell.edu>
  
        * Makefile.in (EMACS_MANIFEST): Revert last change.
  
 +2014-04-10  Daniel Colascione  <dancol@dancol.org>
 +
 +      * puresize.h (BASE_PURESIZE): Increase.
 +
 +2014-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (syms_of_keyboard): Make deactivate-mark buffer-local.
 +
 +      * insdel.c (prepare_to_modify_buffer_1): Cancel lock-file checks and
 +      region handling (and don't call signal_before_change) if
 +      inhibit_modification_hooks is set.
 +      (signal_before_change): Don't check inhibit_modification_hooks any more.
 +
 +2014-04-08  Daniel Colascione  <dancol@dancol.org>
 +
 +      * alloc.c (sweep_symbols, mark_object): Assert that symbol
 +      function cells contain valid lisp objects.  (Modified version of
 +      patch from Dmitry).
 +
 +      * alloc.c (detect_suspicious_free): Split actual stack capturing
 +      out into new function for easier breakpoint setting.
 +      (note_suspicious_free): New function.
 +
  2014-04-07  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * lisp.h (struct Lisp_Symbol): New bitfield `pinned'.
        (Fgarbage_collect): Use it.
        (gc_sweep): Remove hack made unnecessary.
  
 -2014-04-05  Glenn Morris  <rgm@gnu.org>
 +2014-04-07  Glenn Morris  <rgm@gnu.org>
  
        * keyboard.c (Fopen_dribble_file): Doc tweak.
  
 -2014-04-04  Jan Djärv  <jan.h.d@swipnet.se>
 -
 -      Backport from trunk.
 -      * nsterm.m (updateFrameSize:): If waiting for the tool bar and tool
 -      bar is zero height, just return (Bug#16976).
 -      (initFrameFromEmacs:): Initialize wait_for_tool_bar.
 -      * nsterm.h (EmacsView): Add wait_for_tool_bar.
 -      * nsmenu.m (update_frame_tool_bar): Return early if view or toolbar
 -      is nil.  If waiting for toolbar to complete, force a redraw.
 -      (free_frame_tool_bar): Set wait_for_tool_bar = NO (Bug#16976).
 -
 -2014-04-03  Ken Brown  <kbrown@cornell.edu>
 +2014-04-07  Ken Brown  <kbrown@cornell.edu>
  
        * Makefile.in (EMACS_MANIFEST): Update comment.  (Bug#17176)
  
 +2014-04-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * alloc.c: Simplify by removing use of HAVE_EXECINFO_H.
 +      We have a substitute execinfo.h on hosts that lack it.
 +      (suspicious_free_history): Make it EXTERNALLY_VISIBLE so it
 +      isn't optimized away.
 +
 +2014-04-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Prefer 'ARRAYELTS (x)' to 'sizeof x / sizeof *x'.
 +      * alloc.c (memory_full):
 +      * charset.c (syms_of_charset):
 +      * doc.c (Fsnarf_documentation):
 +      * emacs.c (main):
 +      * font.c (BUILD_STYLE_TABLE):
 +      * keyboard.c (make_lispy_event):
 +      * profiler.c (setup_cpu_timer):
 +      * xgselect.c (xg_select):
 +      * xterm.c (record_event, STORE_KEYSYM_FOR_DEBUG):
 +      Use ARRAYELTS.
 +      * font.c (FONT_PROPERTY_TABLE_SIZE): Remove.
 +      Replace the only use with ARRAYELTS (font_property_table).
 +      * xfaces.c (DIM): Remove.  All uses replaced by ARRAYELTS.
 +
 +2014-04-03  Daniel Colascione  <dancol@dancol.org>
 +
 +      * xterm.c (x_term_init):
 +      * xfns.c (best_xim_style):
 +      * xfaces.c (Fdump_colors):
 +      * w32fns.c (w32_default_color_map):
 +      * w32.c (init_environment, N_ENV_VARS):
 +      * unexcw.c (read_exe_header):
 +      * term.c (term_get_fkeys_1):
 +      * sysdep.c (init_baud_rate):
 +      * nsterm.m (ns_convert_key):
 +      * nsfns.m (get_geometry_from_preferences):
 +      * msdos.c (dos_set_window_size, init_environment):
 +      * macfont.m (mac_font_get_glyph_for_cid)
 +      (macfont_store_descriptor_attributes)
 +      (macfont_create_attributes_with_spec, mac_ctfont_get_glyph_for_cid):
 +      * keyboard.c (command_loop_1, read_menu_command, make_lispy_event)
 +      (NUM_MOD_NAMES, read_key_sequence_vs, Fcurrent_input_mode)
 +      (syms_of_keyboard):
 +      * image.c (xpm_str_to_color_key):
 +      * fringe.c (MAX_STANDARD_FRINGE_BITMAPS):
 +      * frame.c (x_set_frame_parameters):
 +      * fileio.c (Ffile_selinux_context):
 +      * emacs.c (sort_args):
 +      * dosfns.c (msdos_stdcolor_name):
 +      * dired.c (file_attributes):
 +      * chartab.c (uniprop_decoder_count, uniprop_encode_count):
 +      Change expressions of the form sizeof(arr) / sizeof(arr[0])
 +      to ARRAYELTS (arr).
 +
 +2014-04-02  Daniel Colascione  <dancol@dancol.org>
 +
 +      * data.c (Ffset): Abort if we're trying to set a function call to
 +      a dead lisp object.
 +
 +      * lisp.h (ARRAYELTS): New macro.
 +
 +      * alloc.c: Include execinfo.h if available.
 +      (SUSPICIOUS_OBJECT_CHECKING): New macro; define unconditionally.
 +      (suspicious_free_record): New structure.
 +      (suspicious_objects, suspicious_object_index)
 +      (suspicious_free_history, suspicious_free_history_index):
 +      New variables.
 +      (find_suspicious_object_in_range, detect_suspicious_free)
 +      (Fsuspicious_object): New functions.
 +      (cleanup_vector): Call find_suspicious_object_in_range.
 +
  2014-04-02  Martin Rudalics  <rudalics@gmx.at>
  
        * xterm.c (x_new_font): Don't calculate non-toolkit scrollbar
        width from font width (Bug#17163).
  
 -2014-03-30  Martin Rudalics  <rudalics@gmx.at>
 -
        * frame.c (x_set_frame_parameters): Calculate default values of
        new frame sizes only after all other frame parameters have been
        processed (Bug#17142).
  
 -2014-03-28  Ken Brown  <kbrown@cornell.edu>
 +2014-04-02  Ken Brown  <kbrown@cornell.edu>
  
        * conf_post.h (SYSTEM_PURESIZE_EXTRA) [CYGWIN]: Set to 10000.
        (Bug#17112)
  
 -2014-03-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +2014-04-02  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
        * xterm.c (x_draw_image_glyph_string): Adjust image background
        width accordingly when its x position is adjusted.  (Bug#17115)
  
 +2014-04-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * font.c (font_list_entities): Do not add empty vector to font cache.
 +      (font_matching_entity): Likewise.  If matching entity is found, insert
 +      1-item vector with this entity instead of entity itself (Bug#17125).
 +
 +      * xterm.c (x_term_init) [USE_LUCID]: Fix minor memory leak.
 +
 +2014-04-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * fns.c (validate_subarray): Rename from validate_substring,
 +      since it works for vectors too.  New arg ARRAY.  Optimize for the
 +      non-nil case.  Instead of returning bool, throw an error if out of
 +      range, so that the caller needn't do that.  All uses changed.
 +      Report original values if out of range.
 +      (Fsubstring, Fsubstring_no_properties, secure_hash):
 +      Also optimize the case where FROM is 0 or TO is the size.
 +
 +2014-03-31  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * search.c (Freplace_match): Use make_specified_string.
 +      * xterm.c, w32term.c (x_set_glyph_string_gc): Use emacs_abort
 +      to catch bogus override face of glyph strings.
 +      * fns.c (Fsubstring, Fsubstring_no_properties, secure_hash):
 +      Move common substring range checking code to...
 +      (validate_substring): ...this function.
 +
 +2014-03-31  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsmenu.m (free_frame_tool_bar): Set wait_for_tool_bar = NO (Bug#16976)
 +
 +2014-03-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (updateFrameSize:): If waiting for the tool bar and tool
 +      bar is zero height, just return (Bug#16976).
 +      (initFrameFromEmacs:): Initialize wait_for_tool_bar.
 +
 +      * nsterm.h (EmacsView): Add wait_for_tool_bar.
 +
 +      * nsmenu.m (update_frame_tool_bar): Return early if view or toolbar
 +      is nil.  If waiting for toolbar to complete, force a redraw.
 +
 +2014-03-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs.c (emacs_version): Use PACKAGE_VERSION rather than VERSION.
 +      (emacs_bugreport): New variable.
 +      (usage_message): Use PACKAGE_BUGREPORT.
 +      (syms_of_emacs) <report-emacs-bug-address>: New variable.
 +
 +      * emacs.c (syms_of_emacs) <system-configuration-features>: New var.
 +
 +2014-03-27  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port recent signal-related changes to FreeBSD.
 +      Problem reported by Herbert J. Skuhra.
 +      * lisp.h (block_tty_out_signal, unblock_tty_out_signal):
 +      Move decls from here ...
 +      * syssignal.h: ... to here, so that lisp.h doesn't depend on signal.h.
 +
  2014-03-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
        * w32term.c (x_draw_image_glyph_string): Fix computation of height
        and width of image background when it is displayed with a 'box'
        face.  (Bug#17115)
  
 -2014-03-26  Paul Eggert  <eggert@penguin.cs.ucla.edu>
 +2014-03-27  Paul Eggert  <eggert@penguin.cs.ucla.edu>
  
        More backward-compatible fix to char-equal core dump (Bug#17011).
        * editfns.c (Fchar_equal): In unibyte buffers, assume values in
        range 128-255 are raw bytes.  Suggested by Eli Zaretskii.
  
 +2014-03-27  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * image.c (init_svg_functions): When loading SVG-related libraries,
 +      free already loaded libraries if the initialization fails.
 +      (rsvg_handle_set_size_callback): Remove declaration, unused.
 +
 +2014-03-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
        Fix core dump in char-equal (Bug#17011).
        * editfns.c (Fchar_equal): Do not use MAKE_CHAR_MULTIBYTE in
        unibyte buffers, as we can't tell whether the characters are
  
        * insdel.c (adjust_markers_for_delete): Remove unused local.
  
 -2014-03-24  Barry O'Reilly  <gundaetiapo@gmail.com>
 +2014-03-26  Barry O'Reilly  <gundaetiapo@gmail.com>
  
        Have (MARKER . ADJUSTMENT) undo records always be immediately
        after their corresponding (TEXT . POS) record in undo list.
        (record_point): at_boundary calculation no longer needs to account
        for marker adjustments.
  
 -2014-03-24  Martin Rudalics  <rudalics@gmx.at>
 +2014-03-26  Martin Rudalics  <rudalics@gmx.at>
  
        * w32term.c (x_set_window_size): Refine fix from 2014-03-14
        (Bug#17077).
  
 -2014-03-23  Glenn Morris  <rgm@gnu.org>
 +2014-03-26  Glenn Morris  <rgm@gnu.org>
  
        * fileio.c (Ffile_symlink_p): Doc fix. (Bug#17073)
  
 -2014-03-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-03-26  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * buffer.c (struct sortvec): Add field `spriority'.
        (compare_overlays): Use it.
        (sort_overlays): Set it.
  
 -2014-03-23  Eli Zaretskii  <eliz@gnu.org>
 +2014-03-26  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (redisplay_window): If all previous attempts to find the
        cursor row failed, try a few alternatives before falling back to
        the top-most row of the window.  Use row_containing_pos.  (Bug#17047)
  
 -2014-03-22  Daniel Colascione  <dancol@dancol.org>
 +2014-03-26  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * process.c (conv_sockaddr_to_lisp): When extracting the string
 -      names of AF_LOCAL sockets, stop before reading uninitialized
 -      memory.
 +      * image.c (x_bitmap_height, x_bitmap_width) [HAVE_X_WINDOWS]:
 +      * sysdep.c (reset_sigio) [!DOS_NT]: Declare conditionally.
 +
 +      * keyboard.c (read_decoded_event_from_main_queue): #ifdef out
 +      variables on Windows.
 +
 +      * w32fns.c (Ffile_system_info): Use parenthesis in and/or expression.
 +
 +      * w32.c (unsetenv): Remove unused var `retval'.
 +      (emacs_gnutls_pull): Remove unused vars `fdset' and `timeout'.
 +
 +      * w32notify.c (watch_worker): Remove unnecesary var sleep_result.
 +      (start_watching): Remove unused var `thr'.
 +
 +      * w32proc.c (sys_spawnve): Comment out unused vars `first', `last'.
 +      (find_child_console): Remove unnecesary var `thread_id'.
 +
 +      * w32term.c (w32_read_socket): Comment out unused vars `row', `columns'.
 +      (x_focus_frame): #ifdef 0 unused variable `dpyinfo'.
 +
 +2014-03-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * filelock.c (Flock_buffer): Doc tweak.
 +
 +      * buffer.c (Frestore_buffer_modified_p, Fkill_buffer):
 +      * emacs.c (shut_down_emacs):
 +      * fileio.c (Finsert_file_contents, write_region):
 +      * filelock.c (top-level, syms_of_filelock):
 +      * insdel.c (prepare_to_modify_buffer_1):
 +      CLASH_DETECTION is always defined now.
 +
 +2014-03-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (w32_delayed_load): Call DisableThreadLibraryCalls on the
 +      DLL handle, to speed up thread startup.
 +
 +2014-03-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Handle sigmask better with nested signal handlers  (Bug#15561).
 +      * atimer.c (sigmask_atimers): Remove.
 +      Remaining use rewritten to use body of this function.
 +      * atimer.c (block_atimers, unblock_atimers):
 +      * callproc.c (block_child_signal, unblock_child_signal):
 +      * sysdep.c (block_tty_out_signal, unblock_tty_out_signal):
 +      New arg OLDSET.  All callers changed.
 +      * atimer.c (block_atimers, unblock_atimers):
 +      * callproc.c (block_child_signal, unblock_child_signal):
 +      * keyboard.c (handle_interrupt):
 +      * sound.c (vox_configure, vox_close):
 +      Restore the old signal mask rather than unilaterally clearing bits
 +      from the mask, in case a handler is running within another
 +      handler.  All callers changed.
 +      * lisp.h, process.c, process.h, term.c:
 +      Adjust decls and callers to match new API.
 +      * sysdep.c (emacs_sigaction_init): Don't worry about masking SIGFPE;
 +      signal handlers aren't supposed to use floating point anyway.
 +      (handle_arith_signal): Unblock just SIGFPE rather than clearing mask.
 +
 +2014-03-23  Daniel Colascione  <dancol@dancol.org>
 +
 +      Split gc_sweep into discrete functions for legibility and better
 +      stack traces.
 +
 +      * alloc.c (sweep_strings, sweep_vectors): Add NO_INLINE
 +      (sweep_vectors): Fix typo in comment.
 +      (sweep_conses, sweep_floats, sweep_intervals)
 +      (sweep_symbols, sweep_misc, sweep_buffers): New functions.
 +      (gc_sweep): Call new functions, to which existing functionality is
 +      moved.
 +      * fns.c (sweep_weak_hash_tables): Add NO_INLINE.
 +
 +2014-03-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32fns.c (Fw32_shell_execute): Declare `result' only on Cygwin.
 +
 +2014-03-23  Daniel Colascione  <dancol@dancol.org>
 +
 +      * xfns.c (create_frame_xic): Pass XNStatusAttributes to XCreateIC
 +      only if xic_style calls for it.  This change allows Emacs to work
 +      with ibus.  Also, don't leak resources if create_frame_xic fails,
 +      and stop caching xic_style across different displays.
 +      (supported_xim_styles): Make const.
 +      (best_xim_style): Remove first parameter: it's always just
 +      supported_xim_styles.  Change to look at supported_xim_styles
 +      directly.
 +
 +2014-03-23  Daniel Colascione  <dancol@dancol.org>
 +
 +      * term.c (init_tty): Rearrange condition for clarity; print
 +      appropriate diagnostic.
  
  2014-03-23  Daniel Colascione  <dancol@dancol.org>
  
        * process.c (DATAGRAM_CONN_P): Don't underflow datagram_address
        array.  (ASAN caught.)
  
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * callproc.c (init_callproc): In etc, look for NEWS rather than GNU.
 +
 +2014-03-22  Daniel Colascione  <dancol@dancol.org>
 +
 +      * process.c (conv_sockaddr_to_lisp): When extracting the string
 +      names of AF_LOCAL sockets, stop before reading uninitialized memory.
 +
  2014-03-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
        Fix regression introduced by patch for Bug#10500.
        constrain frame size in SW_SHOWMAXIMIZED case so we can truly
        maximize a frame for odd default fonts.
  
 +2014-03-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * minibuf.c (history-length): Increase default from 30 to 100.
 +
 +2014-03-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      * xterm.c (x_bitmap_icon): Stop reading the icon bitmap from disk
 +      every time we switch to minibuffer.
 +
 +      * alloc.c (lisp_align_malloc, allocate_string_data)
 +      (allocate_vectorlike): Allow mmap allocation of lisp objects.
 +      (pointers_fit_in_lispobj_p, mmap_lisp_allowed_p): New functions.
 +
 +2014-03-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c (Fw32_shell_execute) [!CYGWIN]: Use ShellExecuteEx, to
 +      support more "verbs".
 +
 +2014-03-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      Always prohibit dumping a dumped Emacs.
 +
 +      * emacs.c (might_dump): New variable.
 +      (Fdump_emacs): Always prohibit dumping of dumped Emacs.
 +      * lisp.h (might_dump): Declare.
 +      * unexcw.c (unexec): Remove now-redundant multiple-dump detection code.
 +
  2014-03-20  Paul Eggert  <eggert@cs.ucla.edu>
  
        * doc.c (store_function_docstring): Fix pointer signedness mismatch.
diff --combined src/lisp.h
@@@ -58,26 -58,6 +58,26 @@@ INLINE_HEADER_BEGI
  #define max(a, b) ((a) > (b) ? (a) : (b))
  #define min(a, b) ((a) < (b) ? (a) : (b))
  
 +/* Number of elements in an array.  */
 +#define ARRAYELTS(arr) (sizeof (arr) / sizeof (arr)[0])
 +
 +/* Number of bits in a Lisp_Object tag.  */
 +DEFINE_GDB_SYMBOL_BEGIN (int, GCTYPEBITS)
 +#define GCTYPEBITS 3
 +DEFINE_GDB_SYMBOL_END (GCTYPEBITS)
 +
 +/* The number of bits needed in an EMACS_INT over and above the number
 +   of bits in a pointer.  This is 0 on systems where:
 +   1.  We can specify multiple-of-8 alignment on static variables.
 +   2.  We know malloc returns a multiple of 8.  */
 +#if (defined alignas \
 +     && (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \
 +       || defined DARWIN_OS || defined __sun))
 +# define NONPOINTER_BITS 0
 +#else
 +# define NONPOINTER_BITS GCTYPEBITS
 +#endif
 +
  /* EMACS_INT - signed integer wide enough to hold an Emacs value
     EMACS_INT_MAX - maximum value of EMACS_INT; can be used in #if
     pI - printf length modifier for EMACS_INT
  #ifndef EMACS_INT_MAX
  # if INTPTR_MAX <= 0
  #  error "INTPTR_MAX misconfigured"
 -# elif INTPTR_MAX <= INT_MAX && !defined WIDE_EMACS_INT
 +# elif INTPTR_MAX <= INT_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT
  typedef int EMACS_INT;
  typedef unsigned int EMACS_UINT;
  #  define EMACS_INT_MAX INT_MAX
  #  define pI ""
 -# elif INTPTR_MAX <= LONG_MAX && !defined WIDE_EMACS_INT
 +# elif INTPTR_MAX <= LONG_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT
  typedef long int EMACS_INT;
  typedef unsigned long EMACS_UINT;
  #  define EMACS_INT_MAX LONG_MAX
  #  define pI "l"
 +/* Check versus LLONG_MAX, not LLONG_MAX >> NONPOINTER_BITS.
 +   In theory this is not safe, but in practice it seems to be OK.  */
  # elif INTPTR_MAX <= LLONG_MAX
  typedef long long int EMACS_INT;
  typedef unsigned long long int EMACS_UINT;
@@@ -115,7 -93,7 +115,7 @@@ enum {  BOOL_VECTOR_BITS_PER_CHAR 
  };
  
  /* An unsigned integer type representing a fixed-length bit sequence,
 -   suitable for words in a Lisp bool vector.  Normally it is size_t
 +   suitable for bool vector words, GC mark bits, etc.  Normally it is size_t
     for speed, but it is unsigned char on weird platforms.  */
  #if BOOL_VECTOR_BITS_PER_CHAR == CHAR_BIT
  typedef size_t bits_word;
@@@ -133,6 -111,7 +133,6 @@@ enu
    {
      BITS_PER_CHAR      = CHAR_BIT,
      BITS_PER_SHORT     = CHAR_BIT * sizeof (short),
 -    BITS_PER_INT       = CHAR_BIT * sizeof (int),
      BITS_PER_LONG      = CHAR_BIT * sizeof (long int),
      BITS_PER_EMACS_INT = CHAR_BIT * sizeof (EMACS_INT)
    };
@@@ -236,6 -215,12 +236,6 @@@ extern bool suppress_checking EXTERNALL
  
  enum Lisp_Bits
    {
 -    /* Number of bits in a Lisp_Object tag.  This can be used in #if,
 -       and for GDB's sake also as a regular symbol.  */
 -    GCTYPEBITS =
 -#define GCTYPEBITS 3
 -      GCTYPEBITS,
 -
      /* 2**GCTYPEBITS.  This must be a macro that expands to a literal
         integer constant, for MSVC.  */
  #define GCALIGNMENT 8
     This can be used in #if, e.g., '#if VAL_MAX < UINTPTR_MAX' below.  */
  #define VAL_MAX (EMACS_INT_MAX >> (GCTYPEBITS - 1))
  
 -/* Unless otherwise specified, use USE_LSB_TAG on systems where:  */
 -#ifndef USE_LSB_TAG
 -/* 1.  We know malloc returns a multiple of 8.  */
 -# if (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \
 -      || defined DARWIN_OS || defined __sun)
 -/* 2.  We can specify multiple-of-8 alignment on static variables.  */
 -#  ifdef alignas
 -/* 3.  Pointers-as-ints exceed VAL_MAX.
 +/* Whether the least-significant bits of an EMACS_INT contain the tag.
     On hosts where pointers-as-ints do not exceed VAL_MAX, USE_LSB_TAG is:
      a. unnecessary, because the top bits of an EMACS_INT are unused, and
      b. slower, because it typically requires extra masking.
 -   So, default USE_LSB_TAG to true only on hosts where it might be useful.  */
 -#   if VAL_MAX < UINTPTR_MAX
 -#    define USE_LSB_TAG true
 -#   endif
 -#  endif
 -# endif
 -#endif
 -#ifdef USE_LSB_TAG
 -# undef USE_LSB_TAG
 -enum enum_USE_LSB_TAG { USE_LSB_TAG = true };
 -# define USE_LSB_TAG true
 -#else
 -enum enum_USE_LSB_TAG { USE_LSB_TAG = false };
 -# define USE_LSB_TAG false
 +   So, USE_LSB_TAG is true only on hosts where it might be useful.  */
 +DEFINE_GDB_SYMBOL_BEGIN (bool, USE_LSB_TAG)
 +#define USE_LSB_TAG (EMACS_INT_MAX >> GCTYPEBITS < INTPTR_MAX)
 +DEFINE_GDB_SYMBOL_END (USE_LSB_TAG)
 +
 +#if !USE_LSB_TAG && !defined WIDE_EMACS_INT
 +# error "USE_LSB_TAG not supported on this platform; please report this." \
 +      "Try 'configure --with-wide-int' to work around the problem."
 +error !;
  #endif
  
  #ifndef alignas
  #define lisp_h_XCONS(a) \
     (eassert (CONSP (a)), (struct Lisp_Cons *) XUNTAG (a, Lisp_Cons))
  #define lisp_h_XHASH(a) XUINT (a)
 -#define lisp_h_XPNTR(a) \
 -   ((void *) (intptr_t) ((XLI (a) & VALMASK) | (DATA_SEG_BITS & ~VALMASK)))
 +#define lisp_h_XPNTR(a) ((void *) (intptr_t) (XLI (a) & VALMASK))
  #define lisp_h_XSYMBOL(a) \
     (eassert (SYMBOLP (a)), (struct Lisp_Symbol *) XUNTAG (a, Lisp_Symbol))
  #ifndef GC_CHECK_CONS_LIST
  # define lisp_h_check_cons_list() ((void) 0)
  #endif
  #if USE_LSB_TAG
 -# define lisp_h_make_number(n) XIL ((EMACS_INT) (n) << INTTYPEBITS)
 +# define lisp_h_make_number(n) \
 +    XIL ((EMACS_INT) ((EMACS_UINT) (n) << INTTYPEBITS))
  # define lisp_h_XFASTINT(a) XINT (a)
  # define lisp_h_XINT(a) (XLI (a) >> INTTYPEBITS)
  # define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a) & ~VALMASK))
@@@ -608,8 -605,18 +608,8 @@@ enum pvec_typ
    PVEC_FONT /* Should be last because it's used for range checking.  */
  };
  
 -/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
 -   which were stored in a Lisp_Object.  */
 -#ifndef DATA_SEG_BITS
 -# define DATA_SEG_BITS 0
 -#endif
 -enum { gdb_DATA_SEG_BITS = DATA_SEG_BITS };
 -#undef DATA_SEG_BITS
 -
  enum More_Lisp_Bits
    {
 -    DATA_SEG_BITS = gdb_DATA_SEG_BITS,
 -
      /* For convenience, we also store the number of elements in these bits.
         Note that this size is not necessarily the memory-footprint size, but
         only the number of Lisp_Object fields (that need to be traced by GC).
@@@ -665,14 -672,7 +665,14 @@@ LISP_MACRO_DEFUN (XUNTAG, void *, (Lisp
  INLINE Lisp_Object
  make_number (EMACS_INT n)
  {
 -  return XIL (USE_LSB_TAG ? n << INTTYPEBITS : n & INTMASK);
 +  if (USE_LSB_TAG)
 +    {
 +      EMACS_UINT u = n;
 +      n = u << INTTYPEBITS;
 +    }
 +  else
 +    n &= INTMASK;
 +  return XIL (n);
  }
  
  /* Extract A's value as a signed integer.  */
@@@ -680,12 -680,7 +680,12 @@@ INLINE EMACS_IN
  XINT (Lisp_Object a)
  {
    EMACS_INT i = XLI (a);
 -  return (USE_LSB_TAG ? i : i << INTTYPEBITS) >> INTTYPEBITS;
 +  if (! USE_LSB_TAG)
 +    {
 +      EMACS_UINT u = i;
 +      i = u << INTTYPEBITS;
 +    }
 +  return i >> INTTYPEBITS;
  }
  
  /* Like XINT (A), but may be faster.  A must be nonnegative.
@@@ -805,7 -800,6 +805,7 @@@ extern _Noreturn Lisp_Object wrong_type
  
  /* Defined in emacs.c.  */
  extern bool initialized;
 +extern bool might_dump;
  
  /* Defined in eval.c.  */
  extern Lisp_Object Qautoload;
@@@ -1718,8 -1712,8 +1718,8 @@@ struct Lisp_Hash_Tabl
       ratio, a float.  */
    Lisp_Object rehash_threshold;
  
-   /* Vector of hash codes.. If hash[I] is nil, this means that that
-      entry I is unused.  */
+   /* Vector of hash codes.  If hash[I] is nil, this means that the
+      I-th entry is unused.  */
    Lisp_Object hash;
  
    /* Vector used to chain entries.  If entry I is free, next[I] is the
@@@ -2654,11 -2648,16 +2654,11 @@@ CHECK_NUMBER_CDR (Lisp_Object x
         minargs, maxargs, lname, intspec, 0};                          \
     Lisp_Object fnname
  #else  /* not _MSC_VER */
 -# if __STDC_VERSION__ < 199901
 -#  define DEFUN_FUNCTION_INIT(fnname, maxargs) (Lisp_Object (*) (void)) fnname
 -# else
 -#  define DEFUN_FUNCTION_INIT(fnname, maxargs) .a ## maxargs = fnname
 -# endif
  #define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc)   \
     Lisp_Object fnname DEFUN_ARGS_ ## maxargs ;                                \
     static struct Lisp_Subr alignas (GCALIGNMENT) sname =              \
       { { PVEC_SUBR << PSEUDOVECTOR_AREA_BITS },                               \
 -       { DEFUN_FUNCTION_INIT (fnname, maxargs) },                     \
 +       { .a ## maxargs = fnname },                                    \
         minargs, maxargs, lname, intspec, 0};                          \
     Lisp_Object fnname
  #endif
@@@ -3755,9 -3754,9 +3755,9 @@@ INLINE void (check_cons_list) (void) { 
  
  #ifdef REL_ALLOC
  /* Defined in ralloc.c.  */
 -extern void *r_alloc (void **, size_t);
 +extern void *r_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
  extern void r_alloc_free (void **);
 -extern void *r_re_alloc (void **, size_t);
 +extern void *r_re_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
  extern void r_alloc_reset_variable (void **, void **);
  extern void r_alloc_inhibit_buffer_relocation (int);
  #endif
@@@ -4034,7 -4033,6 +4034,7 @@@ extern void syms_of_minibuf (void)
  /* Defined in callint.c.  */
  
  extern Lisp_Object Qminus, Qplus;
 +extern Lisp_Object Qprogn;
  extern Lisp_Object Qwhen;
  extern Lisp_Object Qmouse_leave_buffer_hook;
  extern void syms_of_callint (void);
@@@ -4242,6 -4240,8 +4242,6 @@@ extern void init_sigio (int)
  extern void sys_subshell (void);
  extern void sys_suspend (void);
  extern void discard_tty_input (void);
 -extern void block_tty_out_signal (void);
 -extern void unblock_tty_out_signal (void);
  extern void init_sys_modes (struct tty_display_info *);
  extern void reset_sys_modes (struct tty_display_info *);
  extern void init_all_sys_modes (void);
@@@ -4391,17 -4391,16 +4391,17 @@@ extern bool initialized
  /* True means ^G can quit instantly.  */
  extern bool immediate_quit;
  
 -extern void *xmalloc (size_t);
 -extern void *xzalloc (size_t);
 -extern void *xrealloc (void *, size_t);
 +extern void *xmalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1));
 +extern void *xzalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1));
 +extern void *xrealloc (void *, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
  extern void xfree (void *);
 -extern void *xnmalloc (ptrdiff_t, ptrdiff_t);
 -extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t);
 +extern void *xnmalloc (ptrdiff_t, ptrdiff_t) ATTRIBUTE_MALLOC_SIZE ((1,2));
 +extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t)
 +  ATTRIBUTE_ALLOC_SIZE ((2,3));
  extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t);
  
 -extern char *xstrdup (const char *);
 -extern char *xlispstrdup (Lisp_Object);
 +extern char *xstrdup (const char *) ATTRIBUTE_MALLOC;
 +extern char *xlispstrdup (Lisp_Object) ATTRIBUTE_MALLOC;
  extern void dupstring (char **, char const *);
  extern void xputenv (const char *);
  
@@@ -4433,7 -4432,7 +4433,7 @@@ extern void init_system_name (void)
  
  enum MAX_ALLOCA { MAX_ALLOCA = 16 * 1024 };
  
 -extern void *record_xmalloc (size_t);
 +extern void *record_xmalloc (size_t) ATTRIBUTE_ALLOC_SIZE ((1));
  
  #define USE_SAFE_ALLOCA                       \
    ptrdiff_t sa_count = SPECPDL_INDEX (); bool sa_must_free = false
diff --combined src/minibuf.c
@@@ -396,7 -396,8 +396,8 @@@ read_minibuf (Lisp_Object map, Lisp_Obj
       in previous recursive minibuffer, but was not set explicitly
       to t for this invocation, so set it to nil in this minibuffer.
       Save the old value now, before we change it.  */
-   specbind (intern ("minibuffer-completing-file-name"), Vminibuffer_completing_file_name);
+   specbind (intern ("minibuffer-completing-file-name"),
+           Vminibuffer_completing_file_name);
    if (EQ (Vminibuffer_completing_file_name, Qlambda))
      Vminibuffer_completing_file_name = Qnil;
  
@@@ -1969,7 -1970,7 +1970,7 @@@ A value of t means no truncation
  This variable only affects history lists that don't specify their own
  maximum lengths.  Setting the `history-length' property of a history
  variable overrides this default.  */);
 -  XSETFASTINT (Vhistory_length, 30);
 +  XSETFASTINT (Vhistory_length, 100);
  
    DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
               doc: /* Non-nil means to delete duplicates in history.
diff --combined src/w32fns.c
@@@ -723,7 -723,8 +723,7 @@@ w32_default_color_map (void
  
    cmap = Qnil;
  
 -  for (i = 0; i < sizeof (w32_color_map) / sizeof (w32_color_map[0]);
 -       pc++, i++)
 +  for (i = 0; i < ARRAYELTS (w32_color_map); pc++, i++)
      cmap = Fcons (Fcons (build_string (pc->name),
                         make_number (pc->colorref)),
                  cmap);
@@@ -4244,6 -4245,17 +4244,17 @@@ unwind_create_frame (Lisp_Object frame
      {
  #ifdef GLYPH_DEBUG
        struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
+       /* If the frame's image cache refcount is still the same as our
+        private shadow variable, it means we are unwinding a frame
+        for which we didn't yet call init_frame_faces, where the
+        refcount is incremented.  Therefore, we increment it here, so
+        that free_frame_faces, called in x_free_frame_resources
+        below, will not mistakenly decrement the counter that was not
+        incremented yet to account for this new frame.  */
+       if (FRAME_IMAGE_CACHE (f) != NULL
+         && FRAME_IMAGE_CACHE (f)->refcount == image_cache_refcount)
+       FRAME_IMAGE_CACHE (f)->refcount++;
  #endif
  
        x_free_frame_resources (f);
        eassert (dpyinfo->reference_count == dpyinfo_refcount);
        eassert ((dpyinfo->terminal->image_cache == NULL
                && image_cache_refcount == 0)
-              || dpyinfo->terminal->image_cache->refcount == image_cache_refcount);
+              || (dpyinfo->terminal->image_cache != NULL
+                  && dpyinfo->terminal->image_cache->refcount == image_cache_refcount));
  #endif
        return Qt;
      }
@@@ -6870,33 -6883,24 +6882,33 @@@ operations
                 specified DOCUMENT.
   \"find\"    - initiate search starting from DOCUMENT, which must specify
                 a directory.
 + \"delete\"  - move DOCUMENT, a file or a directory, to Recycle Bin.
 + \"copy\"    - copy DOCUMENT, which must be a file or a directory, into
 +               the clipboard.
 + \"cut\"     - move DOCUMENT, a file or a directory, into the clipboard.
 + \"paste\"   - paste the file whose name is in the clipboard into DOCUMENT,
 +               which must be a directory.
 + \"pastelink\"
 +           - create a shortcut in DOCUMENT (which must be a directory)
 +               the file or directory whose name is in the clipboard.
   \"runas\"   - run DOCUMENT, which must be an excutable file, with
                 elevated privileges (a.k.a. \"as Administrator\").
   \"properties\"
 -           - open the the property sheet dialog for DOCUMENT; works
 -               for *.lnk desktop shortcuts, and little or nothing else.
 +           - open the the property sheet dialog for DOCUMENT.
   nil       - invoke the default OPERATION, or \"open\" if default is
                 not defined or unavailable.
  
  DOCUMENT is typically the name of a document file or a URL, but can
  also be an executable program to run, or a directory to open in the
 -Windows Explorer.  If it is a file, it must be a local one; this
 -function does not support remote file names.
 +Windows Explorer.  If it is a file or a directory, it must be a local
 +one; this function does not support remote file names.
  
  If DOCUMENT is an executable program, the optional third arg PARAMETERS
 -can be a string containing command line parameters that will be passed
 -to the program.  Some values of OPERATION also require parameters (e.g.,
 -\"printto\" requires the printer address).  Otherwise, PARAMETERS should
 -be nil or unspecified.
 +can be a string containing command line parameters, separated by blanks,
 +that will be passed to the program.  Some values of OPERATION also require
 +parameters (e.g., \"printto\" requires the printer address).  Otherwise,
 +PARAMETERS should be nil or unspecified.  Note that double quote characters
 +in PARAMETERS must each be enclosed in 2 additional quotes, as in \"\"\".
  
  Optional fourth argument SHOW-FLAG can be used to control how the
  application will be displayed when it is invoked.  If SHOW-FLAG is nil
@@@ -6914,13 -6918,11 +6926,13 @@@ a ShowWindow flag
    char *errstr;
    Lisp_Object current_dir = BVAR (current_buffer, directory);;
    wchar_t *doc_w = NULL, *params_w = NULL, *ops_w = NULL;
 +#ifdef CYGWIN
    intptr_t result;
 -#ifndef CYGWIN
 +#else
    int use_unicode = w32_unicode_filenames;
    char *doc_a = NULL, *params_a = NULL, *ops_a = NULL;
    Lisp_Object absdoc, handler;
 +  BOOL success;
    struct gcpro gcpro1;
  #endif
  
                                     GUI_SDATA (current_dir),
                                     (INTEGERP (show_flag)
                                      ? XINT (show_flag) : SW_SHOWDEFAULT));
 +
 +  if (result > 32)
 +    return Qt;
 +
 +  switch (result)
 +    {
 +    case SE_ERR_ACCESSDENIED:
 +      errstr = w32_strerror (ERROR_ACCESS_DENIED);
 +      break;
 +    case SE_ERR_ASSOCINCOMPLETE:
 +    case SE_ERR_NOASSOC:
 +      errstr = w32_strerror (ERROR_NO_ASSOCIATION);
 +      break;
 +    case SE_ERR_DDEBUSY:
 +    case SE_ERR_DDEFAIL:
 +      errstr = w32_strerror (ERROR_DDE_FAIL);
 +      break;
 +    case SE_ERR_DDETIMEOUT:
 +      errstr = w32_strerror (ERROR_TIMEOUT);
 +      break;
 +    case SE_ERR_DLLNOTFOUND:
 +      errstr = w32_strerror (ERROR_DLL_NOT_FOUND);
 +      break;
 +    case SE_ERR_FNF:
 +      errstr = w32_strerror (ERROR_FILE_NOT_FOUND);
 +      break;
 +    case SE_ERR_OOM:
 +      errstr = w32_strerror (ERROR_NOT_ENOUGH_MEMORY);
 +      break;
 +    case SE_ERR_PNF:
 +      errstr = w32_strerror (ERROR_PATH_NOT_FOUND);
 +      break;
 +    case SE_ERR_SHARE:
 +      errstr = w32_strerror (ERROR_SHARING_VIOLATION);
 +      break;
 +    default:
 +      errstr = w32_strerror (0);
 +      break;
 +    }
 +
  #else  /* !CYGWIN */
 +
    current_dir = ENCODE_FILE (current_dir);
    /* We have a situation here.  If DOCUMENT is a relative file name,
       but its name includes leading directories, i.e. it lives not in
    if (use_unicode)
      {
        wchar_t document_w[MAX_PATH], current_dir_w[MAX_PATH];
 +      SHELLEXECUTEINFOW shexinfo_w;
  
        /* Encode filename, current directory and parameters, and
         convert operation to UTF-16.  */
            *d++ = *s++;
          *d = 0;
        }
 -      result = (intptr_t) ShellExecuteW (NULL, ops_w, doc_w, params_w,
 -                                       current_dir_w,
 -                                       (INTEGERP (show_flag)
 -                                        ? XINT (show_flag) : SW_SHOWDEFAULT));
 +
 +      /* Using ShellExecuteEx and setting the SEE_MASK_INVOKEIDLIST
 +       flag succeeds with more OPERATIONs (a.k.a. "verbs"), as it is
 +       able to invoke verbs from shortcut menu extensions, not just
 +       static verbs listed in the Registry.  */
 +      memset (&shexinfo_w, 0, sizeof (shexinfo_w));
 +      shexinfo_w.cbSize = sizeof (shexinfo_w);
 +      shexinfo_w.fMask =
 +      SEE_MASK_INVOKEIDLIST | SEE_MASK_FLAG_DDEWAIT | SEE_MASK_FLAG_NO_UI;
 +      shexinfo_w.hwnd = NULL;
 +      shexinfo_w.lpVerb = ops_w;
 +      shexinfo_w.lpFile = doc_w;
 +      shexinfo_w.lpParameters = params_w;
 +      shexinfo_w.lpDirectory = current_dir_w;
 +      shexinfo_w.nShow =
 +      (INTEGERP (show_flag) ? XINT (show_flag) : SW_SHOWDEFAULT);
 +      success = ShellExecuteExW (&shexinfo_w);
      }
    else
      {
        char document_a[MAX_PATH], current_dir_a[MAX_PATH];
 +      SHELLEXECUTEINFOA shexinfo_a;
  
        filename_to_ansi (SSDATA (current_dir), current_dir_a);
        filename_to_ansi (SSDATA (document), document_a);
          /* Assume OPERATION is pure ASCII.  */
          ops_a = SSDATA (operation);
        }
 -      result = (intptr_t) ShellExecuteA (NULL, ops_a, doc_a, params_a,
 -                                       current_dir_a,
 -                                       (INTEGERP (show_flag)
 -                                        ? XINT (show_flag) : SW_SHOWDEFAULT));
 +      memset (&shexinfo_a, 0, sizeof (shexinfo_a));
 +      shexinfo_a.cbSize = sizeof (shexinfo_a);
 +      shexinfo_a.fMask =
 +      SEE_MASK_INVOKEIDLIST | SEE_MASK_FLAG_DDEWAIT | SEE_MASK_FLAG_NO_UI;
 +      shexinfo_a.hwnd = NULL;
 +      shexinfo_a.lpVerb = ops_a;
 +      shexinfo_a.lpFile = doc_a;
 +      shexinfo_a.lpParameters = params_a;
 +      shexinfo_a.lpDirectory = current_dir_a;
 +      shexinfo_a.nShow =
 +      (INTEGERP (show_flag) ? XINT (show_flag) : SW_SHOWDEFAULT);
 +      success = ShellExecuteExA (&shexinfo_a);
      }
 -#endif /* !CYGWIN */
  
 -  if (result > 32)
 +  if (success)
      return Qt;
  
 -  switch (result)
 -    {
 -    case SE_ERR_ACCESSDENIED:
 -      errstr = w32_strerror (ERROR_ACCESS_DENIED);
 -      break;
 -    case SE_ERR_ASSOCINCOMPLETE:
 -    case SE_ERR_NOASSOC:
 -      errstr = w32_strerror (ERROR_NO_ASSOCIATION);
 -      break;
 -    case SE_ERR_DDEBUSY:
 -    case SE_ERR_DDEFAIL:
 -      errstr = w32_strerror (ERROR_DDE_FAIL);
 -      break;
 -    case SE_ERR_DDETIMEOUT:
 -      errstr = w32_strerror (ERROR_TIMEOUT);
 -      break;
 -    case SE_ERR_DLLNOTFOUND:
 -      errstr = w32_strerror (ERROR_DLL_NOT_FOUND);
 -      break;
 -    case SE_ERR_FNF:
 -      errstr = w32_strerror (ERROR_FILE_NOT_FOUND);
 -      break;
 -    case SE_ERR_OOM:
 -      errstr = w32_strerror (ERROR_NOT_ENOUGH_MEMORY);
 -      break;
 -    case SE_ERR_PNF:
 -      errstr = w32_strerror (ERROR_PATH_NOT_FOUND);
 -      break;
 -    case SE_ERR_SHARE:
 -      errstr = w32_strerror (ERROR_SHARING_VIOLATION);
 -      break;
 -    default:
 -      errstr = w32_strerror (0);
 -      break;
 -    }
 +  errstr = w32_strerror (0);
 +
 +#endif /* !CYGWIN */
 +
    /* The error string might be encoded in the locale's encoding.  */
    if (!NILP (Vlocale_coding_system))
      {
@@@ -7529,8 -7499,8 +7541,8 @@@ If the underlying system call fails, va
        (char *, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER)
        = GetProcAddress (hKernel, "GetDiskFreeSpaceExA");
      bool have_pfn_GetDiskFreeSpaceEx =
 -      (w32_unicode_filenames && pfn_GetDiskFreeSpaceExW
 -       || !w32_unicode_filenames && pfn_GetDiskFreeSpaceExA);
 +      ((w32_unicode_filenames && pfn_GetDiskFreeSpaceExW)
 +       || (!w32_unicode_filenames && pfn_GetDiskFreeSpaceExA));
  
      /* On Windows, we may need to specify the root directory of the
         volume holding FILENAME.  */
diff --combined src/w32term.c
@@@ -1078,7 -1078,10 +1078,7 @@@ x_set_glyph_string_gc (struct glyph_str
        s->stippled_p = s->face->stipple != 0;
      }
    else
 -    {
 -      s->gc = s->face->gc;
 -      s->stippled_p = s->face->stipple != 0;
 -    }
 +    emacs_abort ();
  
    /* GC must have been set.  */
    eassert (s->gc != 0);
@@@ -4757,8 -4760,8 +4757,8 @@@ w32_read_socket (struct terminal *termi
              width = rect.right - rect.left;
              text_width = FRAME_PIXEL_TO_TEXT_WIDTH (f, width);
              text_height = FRAME_PIXEL_TO_TEXT_HEIGHT (f, height);
 -            rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, height);
 -            columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, width);
 +            /* rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, height); */
 +            /* columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, width); */
  
              /* TODO: Clip size to the screen dimensions.  */
  
@@@ -5810,9 -5813,7 +5810,9 @@@ x_set_mouse_pixel_position (struct fram
  void
  x_focus_frame (struct frame *f)
  {
 +#if 0
    struct w32_display_info *dpyinfo = &one_w32_display_info;
 +#endif
  
    /* Give input focus to frame.  */
    block_input ();
@@@ -6272,8 -6273,9 +6272,8 @@@ w32_create_terminal (struct w32_display
  {
    struct terminal *terminal;
  
 -  terminal = create_terminal ();
 +  terminal = create_terminal (output_w32, &w32_redisplay_interface);
  
 -  terminal->type = output_w32;
    terminal->display_info.w32 = dpyinfo;
    dpyinfo->terminal = terminal;
  
    terminal->ins_del_lines_hook = x_ins_del_lines;
    terminal->delete_glyphs_hook = x_delete_glyphs;
    terminal->ring_bell_hook = w32_ring_bell;
 -  terminal->reset_terminal_modes_hook = NULL;
 -  terminal->set_terminal_modes_hook = NULL;
    terminal->update_begin_hook = x_update_begin;
    terminal->update_end_hook = x_update_end;
 -  terminal->set_terminal_window_hook = NULL;
    terminal->read_socket_hook = w32_read_socket;
    terminal->frame_up_to_date_hook = w32_frame_up_to_date;
    terminal->mouse_position_hook = w32_mouse_position;
    terminal->condemn_scroll_bars_hook = w32_condemn_scroll_bars;
    terminal->redeem_scroll_bar_hook = w32_redeem_scroll_bar;
    terminal->judge_scroll_bars_hook = w32_judge_scroll_bars;
 -
    terminal->delete_frame_hook = x_destroy_window;
    terminal->delete_terminal_hook = x_delete_terminal;
 -
 -  terminal->rif = &w32_redisplay_interface;
 +  /* Other hooks are NULL by default.  */
  
    /* We don't yet support separate terminals on W32, so don't try to share
       keyboards between virtual terminals that are on the same physical
@@@ -6419,7 -6426,11 +6419,11 @@@ x_delete_display (struct w32_display_in
      if (dpyinfo->palette)
        DeleteObject (dpyinfo->palette);
    }
+   /* Avoid freeing dpyinfo->w32_id_name more than once if emacs is
+      running as a daemon; see bug#17510. */
+ #ifndef CYGWIN
    xfree (dpyinfo->w32_id_name);
+ #endif
  
    w32_reset_fringes ();
  }
diff --combined src/xdisp.c
@@@ -2591,8 -2591,8 +2591,8 @@@ safe_eval_handler (Lisp_Object arg, ptr
     following.  Return the result, or nil if something went
     wrong.  Prevent redisplay during the evaluation.  */
  
- Lisp_Object
- safe_call (ptrdiff_t nargs, Lisp_Object func, ...)
static Lisp_Object
+ safe__call (bool inhibit_quit, ptrdiff_t nargs, Lisp_Object func, va_list ap)
  {
    Lisp_Object val;
  
      val = Qnil;
    else
      {
-       va_list ap;
        ptrdiff_t i;
        ptrdiff_t count = SPECPDL_INDEX ();
        struct gcpro gcpro1;
        Lisp_Object *args = alloca (nargs * word_size);
  
        args[0] = func;
-       va_start (ap, func);
        for (i = 1; i < nargs; i++)
        args[i] = va_arg (ap, Lisp_Object);
-       va_end (ap);
  
        GCPRO1 (args[0]);
        gcpro1.nvars = nargs;
        specbind (Qinhibit_redisplay, Qt);
+       if (inhibit_quit)
+       specbind (Qinhibit_quit, Qt);
        /* Use Qt to ensure debugger does not run,
         so there is no possibility of wanting to redisplay.  */
        val = internal_condition_case_n (Ffuncall, nargs, args, Qt,
    return val;
  }
  
+ Lisp_Object
+ safe_call (ptrdiff_t nargs, Lisp_Object func, ...)
+ {
+   Lisp_Object retval;
+   va_list ap;
+   va_start (ap, func);
+   retval = safe__call (false, nargs, func, ap);
+   va_end (ap);
+   return retval;
+ }
  
  /* Call function FN with one argument ARG.
     Return the result, or nil if something went wrong.  */
@@@ -2636,12 -2646,30 +2646,30 @@@ safe_call1 (Lisp_Object fn, Lisp_Objec
    return safe_call (2, fn, arg);
  }
  
+ static Lisp_Object
+ safe__call1 (bool inhibit_quit, Lisp_Object fn, ...)
+ {
+   Lisp_Object retval;
+   va_list ap;
+   va_start (ap, fn);
+   retval = safe__call (inhibit_quit, 2, fn, ap);
+   va_end (ap);
+   return retval;
+ }
  static Lisp_Object Qeval;
  
  Lisp_Object
  safe_eval (Lisp_Object sexpr)
  {
-   return safe_call1 (Qeval, sexpr);
+   return safe__call1 (false, Qeval, sexpr);
+ }
+ static Lisp_Object
+ safe__eval (bool inhibit_quit, Lisp_Object sexpr)
+ {
+   return safe__call1 (inhibit_quit, Qeval, sexpr);
  }
  
  /* Call function FN with two arguments ARG1 and ARG2.
@@@ -8528,7 -8556,7 +8556,7 @@@ move_it_in_display_line_to (struct it *
        }
        else
        {
-         if (it->line_wrap == WORD_WRAP)
+         if (it->line_wrap == WORD_WRAP && it->area == TEXT_AREA)
            {
              if (IT_DISPLAYING_WHITESPACE (it))
                may_wrap = 1;
                  if (closest_pos < ZV)
                    {
                      RESTORE_IT (it, &ppos_it, ppos_data);
-                     move_it_in_display_line_to (it, closest_pos, -1,
-                                                 MOVE_TO_POS);
+                     /* Don't recurse if closest_pos is equal to
+                        to_charpos, since we have just tried that.  */
+                     if (closest_pos != to_charpos)
+                       move_it_in_display_line_to (it, closest_pos, -1,
+                                                   MOVE_TO_POS);
                      result = MOVE_POS_MATCH_OR_ZV;
                    }
                  else
                      && !at_eob_p && closest_pos < ZV)
                    {
                      RESTORE_IT (it, &ppos_it, ppos_data);
-                     move_it_in_display_line_to (it, closest_pos, -1,
-                                                 MOVE_TO_POS);
+                     if (closest_pos != to_charpos)
+                       move_it_in_display_line_to (it, closest_pos, -1,
+                                                   MOVE_TO_POS);
                    }
                  result = MOVE_POS_MATCH_OR_ZV;
                  break;
              if (closest_pos < ZV)
                {
                  RESTORE_IT (it, &ppos_it, ppos_data);
-                 move_it_in_display_line_to (it, closest_pos, -1, MOVE_TO_POS);
+                 if (closest_pos != to_charpos)
+                   move_it_in_display_line_to (it, closest_pos, -1,
+                                               MOVE_TO_POS);
                }
              result = MOVE_POS_MATCH_OR_ZV;
              break;
@@@ -11543,7 -11577,7 +11577,7 @@@ prepare_menu_bars (void
                }
            }
        }
-       safe_call1 (Vpre_redisplay_function, windows);
+       safe__call1 (true, Vpre_redisplay_function, windows);
      }
  
    /* Update all frame titles based on their buffer names, etc.  We do
@@@ -21857,7 -21891,7 +21891,7 @@@ display_mode_element (struct it *it, in
            if (CONSP (XCDR (elt)))
              {
                Lisp_Object spec;
-               spec = safe_eval (XCAR (XCDR (elt)));
+               spec = safe__eval (true, XCAR (XCDR (elt)));
                n += display_mode_element (it, depth, field_width - n,
                                           precision - n, spec, props,
                                           risky);
@@@ -22674,7 -22708,7 +22708,7 @@@ decode_mode_spec (struct window *w, reg
        return decode_mode_spec_buf;
      no_value:
          {
 -        charp = decode_mode_spec_buf;
 +        char *p = decode_mode_spec_buf;
          int pad = width - 2;
          while (pad-- > 0)
            *p++ = ' ';
@@@ -23422,7 -23456,7 +23456,7 @@@ calc_pixel_width_or_height (double *res
            return OK_PIXELS (WINDOW_SCROLL_BAR_AREA_WIDTH (it->w));
        }
  
 -      prop = buffer_local_value_1 (prop, it->w->contents);
 +      prop = buffer_local_value (prop, it->w->contents);
        if (EQ (prop, Qunbound))
        prop = Qnil;
      }
              return OK_PIXELS (pixels);
            }
  
 -        car = buffer_local_value_1 (car, it->w->contents);
 +        car = buffer_local_value (car, it->w->contents);
          if (EQ (car, Qunbound))
            car = Qnil;
        }
@@@ -24589,16 -24623,13 +24623,16 @@@ draw_glyphs (struct window *w, int x, s
          else
            overlap_hl = DRAW_NORMAL_TEXT;
  
 +        if (hl != overlap_hl)
 +          clip_head = head;
          j = i;
          BUILD_GLYPH_STRINGS (j, start, h, t,
                               overlap_hl, dummy_x, last_x);
          start = i;
          compute_overhangs_and_x (t, head->x, 1);
          prepend_glyph_string_lists (&head, &tail, h, t);
 -        clip_head = head;
 +        if (clip_head == NULL)
 +          clip_head = head;
        }
  
        /* Prepend glyph strings for glyphs in front of the first glyph
          else
            overlap_hl = DRAW_NORMAL_TEXT;
  
 -        clip_head = head;
 +        if (hl == overlap_hl || clip_head == NULL)
 +          clip_head = head;
          BUILD_GLYPH_STRINGS (i, start, h, t,
                               overlap_hl, dummy_x, last_x);
          for (s = h; s; s = s->next)
          else
            overlap_hl = DRAW_NORMAL_TEXT;
  
 +        if (hl != overlap_hl)
 +          clip_tail = tail;
          BUILD_GLYPH_STRINGS (end, i, h, t,
                               overlap_hl, x, last_x);
          /* Because BUILD_GLYPH_STRINGS updates the first argument,
             we don't have `end = i;' here.  */
          compute_overhangs_and_x (h, tail->x + tail->width, 0);
          append_glyph_string_lists (&head, &tail, h, t);
 -        clip_tail = tail;
 +        if (clip_tail == NULL)
 +          clip_tail = tail;
        }
  
        /* Append glyph strings for glyphs following the last glyph
          else
            overlap_hl = DRAW_NORMAL_TEXT;
  
 -        clip_tail = tail;
 +        if (hl == overlap_hl || clip_tail == NULL)
 +          clip_tail = tail;
          i++;                  /* We must include the Ith glyph.  */
          BUILD_GLYPH_STRINGS (end, i, h, t,
                               overlap_hl, x, last_x);
@@@ -28551,8 -28577,8 +28585,8 @@@ note_mode_line_or_margin_highlight (Lis
          else if (area == ON_MODE_LINE)
            {
              Lisp_Object default_help
 -              = buffer_local_value_1 (Qmode_line_default_help_echo,
 -                                      w->contents);
 +              = buffer_local_value (Qmode_line_default_help_echo,
 +                                    w->contents);
  
              if (STRINGP (default_help))
                {