]> code.delx.au - gnu-emacs/commitdiff
Merge from emacs-23
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 9 Nov 2010 20:07:10 +0000 (15:07 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 9 Nov 2010 20:07:10 +0000 (15:07 -0500)
31 files changed:
1  2 
.dir-locals.el
ChangeLog
configure
configure.in
doc/emacs/ChangeLog
doc/misc/ChangeLog
etc/NEWS.23
lisp/ChangeLog
lisp/Makefile.in
lisp/dired.el
lisp/emacs-lisp/cl-loaddefs.el
lisp/files.el
lisp/international/mule-cmds.el
lisp/locate.el
lisp/ls-lisp.el
lisp/minibuffer.el
lisp/net/tramp.el
lisp/progmodes/python.el
lisp/progmodes/tcl.el
lisp/progmodes/verilog-mode.el
lisp/server.el
lisp/vc/vc-mtn.el
oldXMenu/ChangeLog
oldXMenu/XDelAssoc.c
oldXMenu/XMakeAssoc.c
src/ChangeLog
src/config.in
src/image.c
src/xfns.c
src/xterm.c
src/xterm.h

diff --combined .dir-locals.el
index f12dbf7d85947a4c748aecfd153d01ec58177ba9,3ab6809ffb86448e0bd5843539c5c5317e37fe5b..873f733854d5f176975537c68a8345a31a09f73f
@@@ -1,9 -1,11 +1,11 @@@
  ((nil . ((tab-width . 8)
 +         (sentence-end-double-space . t)
           (fill-column . 70)))
   (c-mode . ((c-file-style . "GNU")))
+  (log-edit-mode . ((log-edit-rewrite-fixes
+                     " (bug#\\([0-9]+\\))" . "debbugs:\\1")))
   (change-log-mode . ((add-log-time-zone-rule . t)
                     (fill-column . 74)
                     (bug-reference-url-format . "http://debbugs.gnu.org/%s")
 -                   (mode . bug-reference))))
 -
 -;; arch-tag: fb93c160-e9fe-4184-aad1-e4f5daa11cbd
 +                   (mode . bug-reference)))
 + (diff-mode . ((mode . whitespace))))
diff --combined ChangeLog
index 1e3373df6df9b34a7d114067f6f59e93a18e9da5,75813c9e7aa08c8e4612e0493c5134bcb46a9f0f..6cbeb7aa889eddfb62f43f0644d6ed921d45e688
+++ b/ChangeLog
 -2010-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
++2010-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * .dir-locals.el (log-edit-mode): Set log-edit-rewrite-fixes.
 -2010-11-04  Michael Albinus  <michael.albinus@gmx.de>
++2010-11-09  Michael Albinus  <michael.albinus@gmx.de>
+       * configure.in: Don't write a warning for D-Bus anymore.
 -2010-11-03  Glenn Morris  <rgm@gnu.org>
 +2010-11-06  Andreas Schwab  <schwab@linux-m68k.org>
  
 -      * configure.in (CRT_DIR): New output variable.
 -      (--with-crt-dir): New option.  (Bug#5655)
 -      (HAVE_LIB64_DIR): Remove.
 +      * configure.in: Fix indentation.
  
 -2010-10-12  Glenn Morris  <rgm@gnu.org>
 +2010-10-31  Ken Brown  <kbrown@cornell.edu>
 +
 +      * configure.in (checking whether localtime caches TZ): Use
 +      unsetenv instead of modifying environment directly.
 +
 +2010-10-25  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * configure.in (checking for -znocombreloc): Use AC_LANG_PROGRAM
 +      to avoid warning.
 +
 +2010-10-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * configure.in: Remove the BROKEN annotation from gnutls.
 +
 +2010-10-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist: Avoid listing .el files twice.  Don't try to run
 +      autoconf if --no-update.
 +
 +2010-10-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist: No longer create lisp/MANIFEST.
 +
 +2010-10-14  Glenn Morris  <rgm@gnu.org>
  
        * BUGS, INSTALL.BZR, README: Updates.
  
 -2010-10-08  Eli Zaretskii  <eliz@gnu.org>
 +2010-10-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist: Remove --compress.  Check for the appropriate
 +      gzip-like executable, and if not found, don't compress.
 +      Check version number in README, don't change it.
 +      Use find for nt/inc/*.h.
 +
 +2010-10-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure (ns_appdir, OLDXMENU, TOOLTIP_SUPPORT): Remove
 +      trailing / from directory names.
 +
 +2010-10-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist: Update and simplify.
 +
 +2010-10-12  Eli Zaretskii  <eliz@gnu.org>
  
        * make-dist: Don't distribute src/buildobj.h.  (Bug#7167)
  
 +2010-10-10  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (PROFILING_LDFLAGS): Do not define, remove all uses.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist: No more doc/emacs/*.texi.in.
 +
 +      * configure.in (AC_OUTPUT): Remove doc/emacs/emacsver.texi.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in: Combine some conditionals.
 +
 +      * configure.in (AC_OUTPUT): Add doc/emacs/emacsver.texi.
 +      * make-dist: Include doc/emacs/*.texi.in.
 +
 +      * INSTALL, make-dist: Remove references to b2m.
 +      * Makefile.in (MAN_PAGES): Remove b2m.1.
 +
 +2010-10-05  Glenn Morris  <rgm@gnu.org>
 +
 +      * .dir-locals.el: The Emacs convention is sentence-end-double-space.
 +
 +2010-10-03  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (NO_INLINE, noinline): Move here from src/xterm.c.
 +
 +2010-10-01  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in: Include stdlib.h and string.h unconditionally.
 +
 +2010-09-29  Romain Francoise  <romain@orebokech.com>
 +
 +      * configure.in: Don't enable ImageMagick unless HAVE_X11.
 +
 +2010-09-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (HAVE_GNUTLS): Add a description to make autoheader
 +      happy.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * configure.in: Enable imagemagick by default.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * configure.in (HAVE_GNUTLS): Don't break if we don't have the
 +      gnutls libraries.
 +
 +2010-09-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * configure.in: Set up GnuTLS.
 +
 +2010-09-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * configure.in: Announce whether libxml2 is linked to.
 +
 +2010-09-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (LINKER): Rename to LD_FIRSTFLAG, do not include $(CC).
 +
 +2010-09-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * config.bat: Detect that libxml2 is installed and if so, build
 +      with it.
 +
 +2010-09-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * configure.in (HAVE_LIBXML2): Check that the libxml2 we found can
 +      be used.  This fixes a conf problem on Mac OS X.
 +
 +2010-09-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * configure.in: Check for libxml2.
 +
 +2010-09-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist: No more TODO files under lisp/.
 +
 +2010-09-04  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * config.bat: Produce lisp/gnus/_dir-locals.el from
 +      lisp/gnus/.dir-locals.el.
 +
 +2010-08-23  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * configure.in: Fix check for librsvg, imagemagick and
 +      MagickExportImagePixels.
 +
 +2010-08-18  Joakim Verona  <joakim@verona.se>
 +
 +      * Makefile.in, configure.in: Checks for ImageMagick.
 +
 +2010-08-10  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (AC_PREREQ): Require autoconf 2.65.
 +
 +2010-08-09  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (AC_PREREQ): Require autoconf 2.66 to stop version churn.
 +
 +2010-08-09  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * configure.in: Add AC_C_BIGENDIAN.
 +
 +2010-08-09  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (ORDINARY_LINK): Use on hpux* too.
 +
 +2010-08-06  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * configure.in: Check for util.h.
 +      Use -Wimplicit-function-declaration if compiler supports it.
 +
 +2010-08-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * configure.in (UNEXEC_OBJ): Rename unexec.o => unexcoff.o.
 +
 +2010-08-04  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * configure.in: Restore accidentally removed use of
 +      GCC_TEST_OPTIONS/NON_GCC_TEST_OPTIONS.
 +
 +2010-07-29  Chad Brown  <yandros@mit.edu>
 +
 +      * configure.in: Check for dirent.h.
 +
 +2010-07-29  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in: Remove reference to usg5-4, unused.
 +
 +2010-07-25  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * configure.in: Check for __executable_start.
 +
 +2010-07-24  Ken Brown  <kbrown@cornell.edu>
 +
 +      * configure.in (LINKER, LIB_GCC): Remove cygwin special cases (Bug#6715)
 +
 +2010-07-24  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * .bzrignore, .gitignore: Ignore README.W32 on the root directory.
 +
 +2010-07-24  Ken Brown  <kbrown@cornell.edu>  (tiny change)
 +
 +      * configure.in (START_FILES) [cygwin]: Set to pre-crt0.o (Bug#6715).
 +
 +2010-07-12  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * configure.in (C_WARNINGS_SWITCH, PROFILING_CFLAGS)
 +      (PROFILING_LDFLAGS): Substitute, don't add them to CFLAGS/LDFLAGS.
 +      (C_OPTIMIZE_SWITCH): Remove.
 +      (TEMACS_LDFLAGS2): Add ${PROFILING_LDFLAGS}.
 +
 +2010-07-11  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * configure.in: Don't check for index and rindex, check for strchr
 +      and strrchr.  Define strchr and strrchr as index and rindex,
 +      resp., in src/config.h if not available.
 +
 +2010-07-08  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in: Use -Wold-style-definition if available.
 +      This helps with the transition to standard C code, it can be
 +      removed when done.
 +
 +      * configure.in (PRE_EDIT_LDFLAGS, POST_EDIT_LDFLAGS): Remove.
 +
 +      * configure.in (UNEXEC_OBJ): Add comment about values for MSDOS
 +      and MSWindows.
 +
 +2010-07-07  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * configure.in: Don't check for bcopy, bcmp, bzero.  Don't include
 +      <strings.h> and don't define bcopy, bzero, BCMP in config.h.
 +
 +2010-07-07  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (getenv): Remove K&R declaration.
 +
 +2010-07-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * configure.in: Remove define __P.
 +
 +2010-07-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (--enable-use-lisp-union-type): New flag.
 +
 +2010-06-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix CFLAGS for non-GCC compilers.
 +      * configure.in (CFLAGS): Always use -g like it was done before the
 +      2010-03-30 change.
 +      (REAL_CFLAGS): Use CFLAGS for non-GCC to get optimization flags.
 +      (Bug#6538)
 +
 +2010-06-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (HAVE_SOUND, HAVE_X_I18N, HAVE_X11R6_XIM):
 +      Set with AC_DEFINE rather than AH_BOTTOM.
 +
 +      * configure.in (C_OPTIMIZE_SWITCH, CANNOT_DUMP, SYSTEM_MALLOC):
 +      (USE_MMAP_FOR_BUFFERS, C_WARNING_SWITCH, CFLAGS, REAL_CFLAGS):
 +      Set with shell, not cpp.
 +      (LIBX): Remove, just use -lX11 in the one place this was used.
 +      (cannot_dump): Replace with CANNOT_DUMP.
 +
 +2010-06-28  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * configure.in: Add --with-x-toolkit=gtk3. Remove HAVE_GTK_MULTIDISPLAY,
 +      check for gtk_file_chooser_dialog_new, and HAVE_GTK_FILE_BOTH (implied
 +      by minimum required Gtk+ 2.6).  Add checks for functions introduced
 +      in Gtk+ 2.14 or newer (bug#6505).
 +
 +2010-06-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * config.bat: Remove white space around "+" in COPY commands.
 +
  2010-06-23  Glenn Morris  <rgm@gnu.org>
  
        * info/dir: Start descriptions in column 32, per Texinfo convention.
  
 -2010-06-12  Chong Yidong  <cyd@stupidchicken.com>
 +2010-06-16  Chong Yidong  <cyd@stupidchicken.com>
  
        * INSTALL: Update font information (Bug#6389).
  
 -2010-06-10  Glenn Morris  <rgm@gnu.org>
 +2010-06-16  Glenn Morris  <rgm@gnu.org>
  
        * INSTALL: General update.
  
 +2010-06-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (install-arch-indep): Delete any old info .gz files first.
 +
 +2010-06-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (--without-compress-info): New option.
 +      (GZIP_INFO): New output variable.
 +
 +      * Makefile.in (GZIP_INFO): New, set by configure.
 +      (install-arch-indep): Don't gzip info pages if GZIP_INFO is nil.
 +      Handle man pages in the same way.
 +
 +2010-06-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (install-arch-indep): Gzip the info files too.
 +
 +      * make-dist: Remove references to non-existent directories and files.
 +
 +2010-06-08  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in: Include <strings.h> and <string.h> instead of
 +      "strings.h" and "string.h".
 +
 +2010-06-06  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in: Remove code dealing with BSTRING.
 +
 +2010-06-03  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (AC_PREREQ): Require autoconf 2.65.
 +
 +      * configure.in (unxec): Do not define and substitute.
 +      (UNEXEC_OBJ): New output variable, replaces cpp UNEXEC.
 +
 +2010-06-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (AH_BOTTOM): Remove NOT_C_CODE test, it is always true.
 +
 +2010-06-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix alloca definition when using gcc on non-gnu systems.
 +      * configure.in: Use the code sequence indicated by "info autoconf"
 +      for alloca (bug#6170).
 +
  2010-05-30  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * .bzrignore: Ignore new files from trunk, which appear if you use
        colocated branches (i.e. "bzr switch").
  
 -2010-05-10  Miles Bader  <miles@gnu.org>
 +2010-05-28  Glenn Morris  <rgm@gnu.org>
  
 -      * configure.in: Get rid of "unix" pre-defined macro when
 -      preprocessing Makefile.  (Bug#5857)  [Backport from trunk]
 +      * configure.in: Simplify some of the $canonical tests.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-27  Glenn Morris  <rgm@gnu.org>
  
 -      * Version 23.2 released.
 +      * config.bat: Do not preprocess src/Makefile.in.
 +
 +      * configure.in: Do not preprocess src/Makefile.in.
 +      (cpp_undefs, CPP_NEED_TRADITIONAL): Remove.
 +      (AC_EGREP_CPP): Test no longer needed.
 +
 +      * make-dist: No more Makefile.c files.
 +
 +2010-05-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (YMF_PASS_LDFLAGS): Remove.
 +      (PRE_EDIT_LDFLAGS, POST_EDIT_LDFLAGS): New output variables.
 +
 +      * configure.in (CPPFLAGS, CFLAGS, REAL_CFLAGS):
 +      Add $GNUSTEP_LOCAL_HEADERS.
 +      (LDFLAGS, LD_SWITCH_SYSTEM_TEMACS): Add $GNUSTEP_LOCAL_LIBRARIES.
 +
 +      * configure.in (NS_IMPL_GNUSTEP_INC, NS_IMPL_GNUSTEP_TEMACS_LDFLAGS)
 +      (GNUSTEP_MAKEFILES): Remove.
 +      (LD_SWITCH_SYSTEM_TEMACS): Move NS_IMPL_GNUSTEP_TEMACS_LDFLAGS
 +      stuff to here.
 +
 +2010-05-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LD_SWITCH_SYSTEM): Move some gnu-linux stuff...
 +      (LD_SWITCH_SYSTEM_TEMACS): ... to here.
 +
 +      * configure.in (LD_SWITCH_SYSTEM_EXTRA): Remove.
 +      (LD_SWITCH_SYSTEM_TEMACS): Put darwin stuff from LD_SWITCH_SYSTEM_EXTRA
 +      here instead.
 +
 +2010-05-24  Romain Francoise  <romain@orebokech.com>
 +
 +      * make-dist: Look for version in src/emacs.c.
 +      Use lisp/subr.el rather than lisp/version.el for location check.
 +
 +2010-05-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (MKDEPDIR): Parallel build tweak.
 +
 +      * configure.in (ns_frag): New output file.
 +
 +      * configure.in (OLDXMENU): Set to "nothing" if !HAVE_X11 || USE_GTK.
 +      (OLDXMENU_TARGET): Set to empty if USE_GTK.
  
 -2010-05-03  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +      * configure.in (cannot_dump): New output variable.
 +
 +2010-05-20  enami tsugutomo  <tsugutomo.enami@jp.sony.com>
 +
 +      * configure.in: On NetBSD, if terminfo is found, use it in
 +      preference to termcap.  (Bug#6190)
 +
 +2010-05-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist (src): Include *.mk.
 +      * config.bat: Concatenate deps.mk onto the end of src/Makefile.
 +      * configure.in (DEPFLAGS, MKDEPDIR): New output variables.
 +      (deps_frag): New output file.
 +      (AUTO_DEPEND): Remove this definition.
 +
 +      * configure.in (--with-gtk, --with-gcc): Remove option stubs.
 +
 +2010-05-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LINKER, YMF_PASS_LDFLAGS): New output variables.
 +      (ORDINARY_LINK): New AC_DEFINE.
 +      (LIB_GCC): No need to set if ORDINARY_LINK.
 +
 +2010-05-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (POST_ALLOC_OBJ) [cygwin]: Omit vm-limit.o.
 +      (POST_ALLOC_OBJ) [!cygwin]: Set to empty.
 +
 +      * config.bat (RALLOC_OBJ): Edit to empty if sys_malloc.
 +      * configure.in (REL_ALLOC): Unset on gnu, gnu-linux if DOUG_LEA_MALLOC.
 +      (RALLOC_OBJ): New output variable.
 +
 +      * config.bat (GMALLOC_OBJ, VMLIMIT_OBJ): Edit to empty if sys_malloc.
 +      * configure.in (GMALLOC_OBJ, VMLIMIT_OBJ): New output variables.
 +
 +2010-05-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * Makefile.in (src): Provide the name of the VCS file that witnesses
 +      a pull.
 +      ($(srcdir)/src/config.in): Handle accidental removal of src/config.in.
 +
 +2010-05-17  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (OLDXMENU_DEPS): New output variable.
 +
 +2010-05-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (ns_appbindir, ns_appresdir): Set using $ns_appdir.
 +
 +      * configure.in (ns_appdir, ns_appbindir): Add trailing "/" to value.
 +      * Makefile.in (install-arch-dep): Update for above change.
 +
 +      * Makefile.in (ns_appdir): Remove.
 +      (install-arch-dep): Test $ns_appresdir instead of $ns_appdir.
 +
 +      * configure.in (TEMACS_LDFLAGS2): New output variable.
 +
 +      * configure.in (NS_IMPL_GNUSTEP_TEMACS_LDFLAGS): New output variable.
 +      (START_FILES): Set to empty if NS_IMPL_GNUSTEP.
 +      (GNUSTEP_SYSTEM_HEADERS, GNUSTEP_SYSTEM_LIBRARIES): Do not output,
 +      nothing uses.
 +
 +2010-05-16  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in: Remove references to usg5-4 and bsd-common, $opsys
 +      does not use them.
 +      (X11R5_INHIBIT_I18N): Remove, unused.
 +
 +2010-05-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LIBXMENU): Set to empty if !HAVE_X_WINDOWS.
 +
 +      * configure.in (FONT_OBJ): Set to empty if !HAVE_X_WINDOWS.
 +
 +2010-05-15  Ken Raeburn  <raeburn@raeburn.org>
 +
 +      * configure.in: Look for version string in its new location.
 +
 +2010-05-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * config.bat: Remove support for DJGPP v1.x.
 +
 +2010-05-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (OLDXMENU_TARGET): New output variable.
 +
 +      * Makefile.in (install-arch-dep): Update odd NS rule for Emacs version.
 +
 +      * Makefile.in (install-arch-indep): Remove references to RCS, CVS,
 +      and other files that no longer exist.
 +
 +2010-05-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (cpp_undefs): Add mktime, register, X11.
 +
 +      * configure.in (GPM_MOUSE_SUPPORT): Remove.
 +      (MOUSE_SUPPORT, TOOLTIP_SUPPORT, WINDOW_SUPPORT): New output variables.
 +      (HAVE_WINDOW_SYSTEM, HAVE_MOUSE): Move out of AC_BOTTOM.
 +
 +      * configure.in (NS_IMPL_GNUSTEP_INC): New output variable.
 +      (GNUSTEP_MAKEFILES): Do not output.
 +
 +2010-05-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in: Fix some paren typos.
 +
 +      * configure.in (OLDXMENU, LIBXMENU): Set to empty if !HAVE_MENUS.
 +
 +      * configure.in (LD_SWITCH_X_SITE, C_SWITCH_X_SITE): Do not define.
 +
 +2010-05-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LIB_SRC_EXTRA_INSTALLABLES): Remove, unused.
 +
 +      * configure.in (LIB_GCC): New output variable.
 +
 +2010-05-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * make-dist (msdos): No more mainmake.
 +
 +      * configure.in: Generate lib-src/Makefile directly, do not run cpp.
 +      * config.bat: Do not run cpp on lib-src/Makefile.in.
 +
 +      * config.bat [HAVE_X11]: Run sed3x.inp on lib-src/Makefile.
 +
 +2010-05-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LIBS_SYSTEM): New output variable, replacing cpp.
 +
 +      * configure.in (MAIL_USE_FLOCK, MAIL_USE_LOCKF): New AC_DEFINEs.
 +      (BLESSMAIL_TARGET): New output variable.
 +
 +2010-05-08  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
  
        * INSTALL: Fix typos.
  
 -2010-05-03  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
  
        * configure.in: Add check for buggy version of GCC (Bug#6031).
  
 +2010-05-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (HAVE_LIBNCURSES): New local variable.
 +      (TERMINFO, LIBS_TERMCAP, TERMCAP_OBJ): New output variables,
 +      replacing cpp in src/s/*.h and src/Makefile.in.
 +
 +2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
 +
 +2010-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * configure.in: Add tests for `isnan' and `copysign'.
 +
 +2010-05-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * config.bat: Allow for 2 leading `#'s in comments in
 +      src/Makefile.in.
 +
 +2010-05-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LD_SWITCH_SYSTEM): Set with configure, not cpp.
 +      Merges logic from src/s/* and src/Makefile.in.
 +      (LD_SWITCH_SYSTEM_TEMACS): New output variable.
 +
 +2010-05-07  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Define START_FILES and LIB_STANDARD using autoconf.
 +      * configure.in (START_FILES, LIB_STANDARD): New definitions, moved
 +      here from src/s/*.h.
 +      (HAVE_CRTIN): Remove, inline logic in the netbsd
 +      START_FILES/LIB_STANDARD computation.
 +
 +2010-05-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (AC_PROG_LN_S): Remove test, nothing uses @LN_S@.
 +
 +      * Makefile.in (CPP, C_SWITCH_SYSTEM, ALLOCA, LN_S, C_SWITCH_X_SITE)
 +      (LD_SWITCH_X_SITE): Remove unused variables.
 +
 +2010-05-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LD_SWITCH_X_SITE_AUX): Use AC_SUBST only, not AC_DEFINE
 +      as well.
 +      (LD_SWITCH_X_SITE_AUX_RPATH): New output variable.
 +
 +      * configure.in (LD_SWITCH_SYSTEM_TEMACS): New output variable.
 +
 +      * configure.in (C_SWITCH_MACHINE, C_SWITCH_SYSTEM): New output
 +      variables, replacing c_switch_machine, c_switch_system.
 +      * Makefile.in (C_SWITCH_SYSTEM): Use @C_SWITCH_SYSTEM@ rather than
 +      @c_switch_system@.
 +
 +2010-05-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LIBXT_OTHER, LIBX_OTHER): New output variables.
 +
 +      * make-dist: There are no more src/m/*.inp files.
 +
 +2010-05-01  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (LD_SWITCH_MACHINE, ld_switch_machine): Remove, unused.
 +      (ac_link): Do not use ld_switch_machine.
 +
 +2010-05-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (OTHER_OBJ): Remove.
 +      (PRE_ALLOC_OBJ, POST_ALLOC_OBJ): New output variables.
 +
 +2010-04-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (OTHER_OBJ): Always include vm-limit.o on Cygwin.
 +      Elsewhere, maybe include it.
 +
 +      * configure.in (TOOLKIT_LIBW) [HAVE_GTK]: Set to $GTK_LIBS.
 +      (OLDXMENU, LIBXMENU): New output variables.
 +
 +      * configure.in (OTHER_OBJ): New output variable.
 +
 +2010-04-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (CYGWIN_OBJ): New output variable.
 +
 +      * configure.in (GPM_MOUSE_SUPPORT): New output variable.
 +
 +      * configure.in (FONT_OBJ): New output variable.
 +
 +      * configure.in (LIBXMU): New output variable.
 +
 +      * configure.in (NS_OBJ, NS_SUPPORT): New output variables.
 +
 +      * configure.in (machine, canonical): On amdx86-64, check for a 32-bit
 +      userland and maybe change values to i386 (move test from s/amdx86-64.h).
 +
 +2010-04-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LIBXTR6): New output variable.  Move unixware special
 +      case here from src/s/unixware.h.
 +
 +      * configure.in (LUCID_LIBW, MOTIF_LIBW): No longer substitute
 +      in Makefiles.
 +      (TOOLKIT_LIBW): New output variable, replacing LUCID_LIBW/MOTIF_LIBW.
 +
 +      * configure.in (HAVE_MOTIF_2_1): Remove unused variable.
 +      (LIBXP): No longer substitute in Makefiles.
 +      (MOTIF_LIBW): New output variable.  Move system-specific settings here
 +      from src/s files.
 +
 +2010-04-27  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Reduce CPP usage.
 +      * configure.in (LIB_X11_LIB): Remove, inline in the only user.
 +      (unexec): Define unconditionally, all platforms define
 +      UNEXEC.  AC_SUBST it.
 +      (UNEXEC_SRC): Remove, unused.
 +      (C_SWITCH_X_SYSTEM): Define using autoconf, not cpp.
 +
 +2010-04-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (HAVE_MOTIF_2_1, HAVE_LIBXP): Remove unused AC_DEFINEs,
 +      replaced by LIBXP.
 +
 +      * configure.in (--with-crt-dir): Doc fix (now valid for all platforms).
 +      (CRT_DIR): On (powerpc64|sparc64)-*-linux-gnu*, default to /usr/lib64.
 +      On hpux10-20, default to /lib.
 +
 +      * configure.in (LUCID_LIBW, LIBXP, WIDGET_OBJ): New output variables.
 +
 +2010-04-26  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (LIBS_MACHINE): Remove, unused.
 +
 +      * configure.in (LIB_MATH): New output variable.  Set it for some systems.
 +
 +2010-04-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (CRT_DIR): New output variable.
 +      (--with-crt-dir): New option.  (Bug#5655)
 +      (HAVE_LIB64_DIR): Remove.
 +
 +2010-04-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in (REAL_CFLAGS, CFLAGS): Restore -g for gcc.
 +
 +2010-04-22  Miles Bader  <miles@gnu.org>
 +
 +      * configure.in: Get rid of "unix" pre-defined macro when
 +      preprocessing Makefile.  (Bug#5857)
 +
 +2010-04-21  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      Avoid non-portable shell command negation
 +      * configure.in: Revert last change.
 +
 +2010-04-21  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * configure.in: Change "if test ! -f" to "if ! test -f".
 +
 +2010-04-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (LIBSELINUX_LIBS): Always substitute in Makefiles.
 +      (GTK_OBJ, DBUS_OBJ, LIBXSM, XMENU_OBJ, XOBJ): New output variables.
 +
 +2010-04-21  Karel Klíč  <kklic@redhat.com>
 +
 +      * configure.in: New option: --with(out)-selinux, on by default.
 +      Set HAVE_LIBSELINUX if we find libselinux, and substitute
 +      LIBSELINUX_LIBS in Makefiles.
 +
 +2010-04-01  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in: Remove all references to LIBX11_SYSTEM.
 +
 +2010-03-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in: Remove all references to C_DEBUG_SWITCH.
 +
 +2010-03-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * config.bat <lib-src>: Edit out lines that begin with several #
 +      characters.
 +
 +2010-03-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * configure.in: Remove support for old UNIX System V systems and
 +      for Unixware on non-x86 machines.
 +
 +      * configure.in: Remove support for Solaris on PPC and for old versions.
 +
 +      * configure.in: Remove non-working lynxos port.
 +
 +2010-03-19  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * .dir-locals.el (c-mode): Turn on whitespace-mode for diff-mode.
 +
 +2010-03-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (HAVE_LIBNCURSES): Add a description to make autoheader
 +      happy.
 +
 +2010-03-18  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * configure.in: Check for tputs and friends, abort if not
 +      found (bug#5735).
 +
 +2010-03-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * configure.in (--with-x-toolkit): In the help text, say which options
 +      are synonyms.
 +
 +      * configure.in (--with-mmdf, --with-mail-unlink):
 +      New options, off by default.
 +      (--with-mailhost): New option to set default POP host.
 +      (LIBXPM, LIBJPEG, LIBPNG, LIBTIFF, LIBGIF, LIBGPM, LIBS_MAIL)
 +      (LIBHESIOD, LIBRESOLV, COM_ERRLIB, CRYPTOLIB, KRB5LIB, DESLIB, KRB4LIB):
 +      New variables, substituted in Makefiles.
 +      (try_libungif, ac_gif_lib_name): Replace with HAVE_GIF=maybe, LIBGIF.
 +      (LIBGIF): Use AC_SUBST rather than AC_DEFINE.
 +      (HAVE_LIBMAIL, HAVE_LIBLOCKFILE, HAVE_LIBCOM_ERR, HAVE_LIBCRYPTO)
 +      (HAVE_LIBK5CRYPTO, HAVE_LIBKRB5, HAVE_LIBDES425, HAVE_LIBDES)
 +      (HAVE_LIBKRB4, HAVE_LIBKRB): New AC_DEFINEs.
 +
 +2010-03-18  Tetsurou Okazaki  <okazaki@be.to>  (tiny change)
 +
 +      * Makefile.in (uninstall): Handle the case where archlibdir does not
 +      exist.  (Bug#5720)
 +
 +2010-03-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      These changes remove termcap.c from the build on Posix platforms.
 +      * configure.in <AC_CHECK_HEADERS>: Remove termcap.h.
 +
 +      * configure: Regenerated.
 +
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
  2010-01-31  Juri Linkov  <juri@jurta.org>
  
        * .bzrignore: Add TAGS-LISP.
  
        Update copyright year(s) in many files.
  
 +2006-04-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * configure: Regenerated.
 +
  2006-04-01  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)
  
        * configure.in (HAVE_XAW3D): Disable Xaw3d check if
        * make-dist: Unset EMACS_UNIBYTE, so Emacs runs in its default state.
        Quote $EMACS, in case it's a program with args.
  
 +1999-06-15  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * configure.in (HAVE_GIF): Use libungif instead of libgif
 +      because the former doesn't contain patented compression code.
 +
  1999-05-29  Richard M. Stallman  <rms@gnu.org>
  
        * configure.in: Delete the Kerberos stuff.
  1994-05-09  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
  
        * configure.in: Remove AC_LANG_C call.  Not needed with Autoconf
 -       version > 1.8.
 +      version > 1.8.
  
  1994-05-08  Morten Welinder  (terra@diku.dk)
  
        (EMACSROOT): New variable, giving the directory under which all of
        Emacs's libraries should be installed.  Changed rest of file to
        use it.
 -      (LIBDIR): Now denotes only architecture-dependent dir - relevant cha
 +      (LIBDIR): Now denotes only architecture-dependent dir.
        (DATADIR): New variable, denoting architecture-independent dir.
        (LOCKDIR): New variable, for completeness.
        (SUBDIR): No more etc, new lib-src.
diff --combined configure
index 183b8d1f7661e2ee364c25a8f4cd624b7d64ffe2,21eb17712e0926a02366273043400da422e3b932..89a11d119d5b24a71ab59b7ca37e5f3b144468fd
+++ b/configure
@@@ -1,6 -1,6 +1,6 @@@
  #! /bin/sh
  # Guess values for system-dependent variables and create Makefiles.
- # Generated by GNU Autoconf 2.68 for emacs 24.0.50.
 -# Generated by GNU Autoconf 2.67 for emacs 23.2.90.
++# Generated by GNU Autoconf 2.67 for emacs 24.0.50.
  #
  #
  # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@@ -89,7 -89,6 +89,6 @@@ f
  IFS=" ""      $as_nl"
  
  # Find who we are.  Look in the path if we contain no directory separator.
- as_myself=
  case $0 in #((
    *[\\/]* ) as_myself=$0 ;;
    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@@ -215,18 -214,11 +214,11 @@@ IFS=$as_save_IF
    # We cannot yet assume a decent shell, so we have to provide a
        # neutralization value for shells without unset; and this also
        # works around shells that cannot unset nonexistent variables.
-       # Preserve -v and -x to the replacement shell.
        BASH_ENV=/dev/null
        ENV=/dev/null
        (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
        export CONFIG_SHELL
-       case $- in # ((((
-         *v*x* | *x*v* ) as_opts=-vx ;;
-         *v* ) as_opts=-v ;;
-         *x* ) as_opts=-x ;;
-         * ) as_opts= ;;
-       esac
-       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+       exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
  fi
  
      if test x$as_have_required = xno; then :
@@@ -557,8 -549,8 +549,8 @@@ MAKEFLAGS
  # Identity of this package.
  PACKAGE_NAME='emacs'
  PACKAGE_TARNAME='emacs'
 -PACKAGE_VERSION='23.2.90'
 -PACKAGE_STRING='emacs 23.2.90'
 +PACKAGE_VERSION='24.0.50'
 +PACKAGE_STRING='emacs 24.0.50'
  PACKAGE_BUGREPORT=''
  PACKAGE_URL=''
  
@@@ -603,29 -595,12 +595,29 @@@ ac_config_libobj_dir=sr
  ac_header_list=
  ac_func_list=
  ac_subst_vars='LTLIBOBJS
 +WINDOW_SUPPORT
 +TOOLTIP_SUPPORT
 +MOUSE_SUPPORT
 +LIB_GCC
 +LD_FIRSTFLAG
 +LD_SWITCH_SYSTEM_TEMACS
 +POST_ALLOC_OBJ
 +PRE_ALLOC_OBJ
 +CYGWIN_OBJ
 +RALLOC_OBJ
 +OLDXMENU_DEPS
 +LIBX_OTHER
 +LIBXMENU
 +OLDXMENU
 +OLDXMENU_TARGET
 +LIBXT_OTHER
 +TOOLKIT_LIBW
 +WIDGET_OBJ
 +XOBJ
 +XMENU_OBJ
 +FONT_OBJ
  OTHER_FILES
 -LIB_SRC_EXTRA_INSTALLABLES
  GNU_OBJC_CFLAGS
 -GNUSTEP_SYSTEM_LIBRARIES
 -GNUSTEP_SYSTEM_HEADERS
 -GNUSTEP_MAKEFILES
  ns_appsrc
  ns_appresdir
  ns_appbindir
@@@ -633,9 -608,11 +625,9 @@@ ns_appdi
  opsysfile
  machfile
  X_TOOLKIT_TYPE
 +C_SWITCH_X_SYSTEM
  C_SWITCH_X_SITE
 -LD_SWITCH_X_SITE_AUX
  LD_SWITCH_X_SITE
 -c_switch_machine
 -c_switch_system
  gameuser
  gamedir
  bitmapdir
@@@ -649,34 -626,14 +641,34 @@@ srcdi
  canonical
  configuration
  version
 +KRB4LIB
 +DESLIB
 +KRB5LIB
 +CRYPTOLIB
 +COM_ERRLIB
 +LIBRESOLV
 +LIBHESIOD
 +TERMCAP_OBJ
 +LIBS_TERMCAP
  GETOPTOBJS
  GETOPT_H
  GETLOADAVG_LIBS
  KMEM_GROUP
  NEED_SETGID
  LIBOBJS
 +BLESSMAIL_TARGET
 +LIBS_MAIL
  liblockfile
  ALLOCA
 +LIBXML2_LIBS
 +LIBXML2_CFLAGS
 +LIBXSM
 +LIBGPM
 +LIBGIF
 +LIBTIFF
 +LIBPNG
 +LIBJPEG
 +LIBXPM
  FREETYPE_LIBS
  FREETYPE_CFLAGS
  M17N_FLT_LIBS
@@@ -687,50 -644,23 +679,50 @@@ XFT_LIB
  XFT_CFLAGS
  FONTCONFIG_LIBS
  FONTCONFIG_CFLAGS
 +LIBXMU
 +LIBXTR6
 +LIBGNUTLS_LIBS
 +LIBGNUTLS_CFLAGS
 +LIBSELINUX_LIBS
  GCONF_LIBS
  GCONF_CFLAGS
 +DBUS_OBJ
  DBUS_LIBS
  DBUS_CFLAGS
 +GTK_OBJ
  GTK_LIBS
  GTK_CFLAGS
 +IMAGEMAGICK_LIBS
 +IMAGEMAGICK_CFLAGS
  RSVG_LIBS
  RSVG_CFLAGS
 +VMLIMIT_OBJ
 +GMALLOC_OBJ
  HAVE_XSERVER
 +LIB_STANDARD
 +NS_SUPPORT
 +NS_OBJ
 +TEMACS_LDFLAGS2
 +LD_SWITCH_X_SITE_AUX_RPATH
 +LD_SWITCH_X_SITE_AUX
  XMKMF
 +DEPFLAGS
 +MKDEPDIR
  SET_MAKE
  CFLAGS_SOUND
  ALSA_LIBS
  ALSA_CFLAGS
  PKG_CONFIG
  LIBSOUND
 +START_FILES
 +LIB_MATH
  CRT_DIR
 +LIBS_SYSTEM
 +C_SWITCH_SYSTEM
 +UNEXEC_OBJ
 +C_SWITCH_MACHINE
 +LD_SWITCH_SYSTEM
 +CANNOT_DUMP
  MAKEINFO
  GZIP_PROG
  INSTALL_INFO
@@@ -738,7 -668,7 +730,7 @@@ RANLI
  INSTALL_DATA
  INSTALL_SCRIPT
  INSTALL_PROGRAM
 -LN_S
 +C_WARNINGS_SWITCH
  EGREP
  GREP
  CPP
@@@ -757,9 -687,7 +749,9 @@@ build_o
  build_vendor
  build_cpu
  build
 +PROFILING_CFLAGS
  MAINT
 +GZIP_INFO
  target_alias
  host_alias
  build_alias
@@@ -798,17 -726,13 +790,17 @@@ PACKAGE_TARNAM
  PACKAGE_NAME
  PATH_SEPARATOR
  SHELL'
 -ac_subst_files=''
 +ac_subst_files='deps_frag
 +ns_frag'
  ac_user_opts='
  enable_option_checking
  with_pop
  with_kerberos
  with_kerberos5
  with_hesiod
 +with_mmdf
 +with_mail_unlink
 +with_mailhost
  with_sound
  with_sync_input
  with_x_toolkit
@@@ -818,8 -742,6 +810,8 @@@ with_tif
  with_gif
  with_png
  with_rsvg
 +with_xml2
 +with_imagemagick
  with_xft
  with_libotf
  with_m17n_flt
@@@ -830,10 -752,9 +822,10 @@@ with_n
  with_gpm
  with_dbus
  with_gconf
 +with_selinux
 +with_gnutls
  with_makeinfo
 -with_gtk
 -with_gcc
 +with_compress_info
  with_pkg_config_prog
  with_crt_dir
  with_gnustep_conf
@@@ -842,7 -763,6 +834,7 @@@ enable_assert
  enable_maintainer_mode
  enable_locallisppath
  enable_checking
 +enable_use_lisp_union_type
  enable_profiling
  enable_autodepend
  enable_largefile
@@@ -1262,7 -1182,7 +1254,7 @@@ Try \`$0 --help' for more information
      $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
      expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
        $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-     : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+     : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
      ;;
  
    esac
@@@ -1400,7 -1320,7 +1392,7 @@@ if test "$ac_init_help" = "long"; the
    # Omit some internal or obsolete options to make the list less imposing.
    # This message is too long to be a string in the A/UX 3.1 sh.
    cat <<_ACEOF
 -\`configure' configures emacs 23.2.90 to adapt to many kinds of systems.
 +\`configure' configures emacs 24.0.50 to adapt to many kinds of systems.
  
  Usage: $0 [OPTION]... [VAR=VALUE]...
  
  
  if test -n "$ac_init_help"; then
    case $ac_init_help in
 -     short | recursive ) echo "Configuration of emacs 23.2.90:";;
 +     short | recursive ) echo "Configuration of emacs 24.0.50:";;
     esac
    cat <<\_ACEOF
  
@@@ -1496,10 -1416,6 +1488,10 @@@ Optional Features
                            only specific categories of checks. Categories are:
                            all,yes,no. Flags are: stringbytes, stringoverrun,
                            stringfreelist, xmallocoverrun, conslist
 +  --enable-use-lisp-union-type
 +                          use a union for the Lisp_Object data type. This is
 +                          only useful for development for catching certain
 +                          types of bugs.
    --enable-profiling      build emacs with profiling support. This might not
                            work on all platforms
    --enable-autodepend     automatically generate dependencies to .h-files.
@@@ -1514,22 -1430,16 +1506,22 @@@ Optional Packages
    --with-kerberos         support Kerberos-authenticated POP
    --with-kerberos5        support Kerberos version 5 authenticated POP
    --with-hesiod           support Hesiod to get the POP server host
 +  --with-mmdf             support MMDF mailboxes
 +  --with-mail-unlink      unlink, rather than empty, mail spool after reading
 +  --with-mailhost=HOSTNAME
 +                          string giving default POP mail host
    --without-sound         don't compile with sound support
    --without-sync-input    process async input synchronously
 -  --with-x-toolkit=KIT    use an X toolkit (KIT one of: yes, lucid, athena,
 -                          motif, gtk, no)
 +  --with-x-toolkit=KIT    use an X toolkit (KIT one of: yes or gtk, gtk3,
 +                          lucid or athena, motif, no)
    --without-xpm           don't compile with XPM image support
    --without-jpeg          don't compile with JPEG image support
    --without-tiff          don't compile with TIFF image support
    --without-gif           don't compile with GIF image support
    --without-png           don't compile with PNG image support
    --without-rsvg          don't compile with SVG image support
 +  --without-xml2          don't compile with XML parsing support
 +  --without-imagemagick   don't compile with ImageMagick image support
    --without-xft           don't use XFT for anti aliased fonts
    --without-libotf        don't use libotf for OpenType font support
    --without-m17n-flt      don't use m17n-flt for text shaping
                            console
    --without-dbus          don't compile with D-Bus support
    --without-gconf         don't compile with GConf support
 +  --without-selinux       don't compile with SELinux support
 +  --without-gnutls        don't use -lgnutls for SSL/TLS support
    --without-makeinfo      don't require makeinfo for building manuals
 -
 +  --without-compress-info don't compress the installed Info pages
    --with-pkg-config-prog=PATH
                            path to pkg-config for finding GTK and librsvg
 -  --with-crt-dir=DIR      directory containing crtn.o etc. This option is only
 -                          used on x86-64 and s390x GNU/Linux architectures.
 +  --with-crt-dir=DIR      directory containing crtn.o etc. The default is
 +                          /usr/lib, or /usr/lib64 on some platforms.
    --with-gnustep-conf=PATH
                            path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE,
                            or /etc/GNUstep/GNUstep.conf
  test -n "$ac_init_help" && exit $ac_status
  if $ac_init_version; then
    cat <<\_ACEOF
 -emacs configure 23.2.90
 +emacs configure 24.0.50
- generated by GNU Autoconf 2.68
+ generated by GNU Autoconf 2.67
  
  Copyright (C) 2010 Free Software Foundation, Inc.
  This configure script is free software; the Free Software Foundation
@@@ -1679,7 -1587,7 +1671,7 @@@ sed 's/^/| /' conftest.$ac_ext >&
  
        ac_retval=1
  fi
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
    as_fn_set_status $ac_retval
  
  } # ac_fn_c_try_compile
    # interfere with the next link command; also delete a directory that is
    # left behind by Apple's compiler.  We do this before executing the actions.
    rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
    as_fn_set_status $ac_retval
  
  } # ac_fn_c_try_link
@@@ -1762,7 -1670,7 +1754,7 @@@ sed 's/^/| /' conftest.$ac_ext >&
  
      ac_retval=1
  fi
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
    as_fn_set_status $ac_retval
  
  } # ac_fn_c_try_cpp
  ac_fn_c_check_header_mongrel ()
  {
    as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-   if eval \${$3+:} false; then :
+   if eval "test \"\${$3+set}\"" = set; then :
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
  $as_echo_n "checking for $2... " >&6; }
- if eval \${$3+:} false; then :
+ if eval "test \"\${$3+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
  fi
  eval ac_res=\$$3
@@@ -1841,7 -1749,7 +1833,7 @@@ $as_echo "$as_me: WARNING: $2: proceedi
  esac
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
  $as_echo_n "checking for $2... " >&6; }
- if eval \${$3+:} false; then :
+ if eval "test \"\${$3+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
  else
    eval "$3=\$ac_header_compiler"
@@@ -1850,7 -1758,7 +1842,7 @@@ eval ac_res=\$$
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
  fi
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
  
  } # ac_fn_c_check_header_mongrel
  
@@@ -1891,7 -1799,7 +1883,7 @@@ sed 's/^/| /' conftest.$ac_ext >&
         ac_retval=$ac_status
  fi
    rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
    as_fn_set_status $ac_retval
  
  } # ac_fn_c_try_run
@@@ -1905,7 -1813,7 +1897,7 @@@ ac_fn_c_check_header_compile (
    as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
  $as_echo_n "checking for $2... " >&6; }
- if eval \${$3+:} false; then :
+ if eval "test \"\${$3+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
  
  } # ac_fn_c_check_header_compile
  
 -# ac_fn_c_check_header_preproc LINENO HEADER VAR
 -# ----------------------------------------------
 -# Tests whether HEADER is present, setting the cache variable VAR accordingly.
 -ac_fn_c_check_header_preproc ()
 -{
 -  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
 -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 -$as_echo_n "checking for $2... " >&6; }
 -if eval "test \"\${$3+set}\"" = set; then :
 -  $as_echo_n "(cached) " >&6
 -else
 -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 -/* end confdefs.h.  */
 -#include <$2>
 -_ACEOF
 -if ac_fn_c_try_cpp "$LINENO"; then :
 -  eval "$3=yes"
 -else
 -  eval "$3=no"
 -fi
 -rm -f conftest.err conftest.i conftest.$ac_ext
 -fi
 -eval ac_res=\$$3
 -             { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 -$as_echo "$ac_res" >&6; }
 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 -
 -} # ac_fn_c_check_header_preproc
 -
  # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
  # ---------------------------------------------
  # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
@@@ -1938,7 -1875,7 +1930,7 @@@ ac_fn_c_check_decl (
    as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
  $as_echo_n "checking whether $as_decl_name is declared... " >&6; }
- if eval \${$3+:} false; then :
+ if eval "test \"\${$3+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
  
  } # ac_fn_c_check_decl
  
- if eval \${$3+:} false; then :
 +# ac_fn_c_check_header_preproc LINENO HEADER VAR
 +# ----------------------------------------------
 +# Tests whether HEADER is present, setting the cache variable VAR accordingly.
 +ac_fn_c_check_header_preproc ()
 +{
 +  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 +$as_echo_n "checking for $2... " >&6; }
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
++if eval "test \"\${$3+set}\"" = set; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +#include <$2>
 +_ACEOF
 +if ac_fn_c_try_cpp "$LINENO"; then :
 +  eval "$3=yes"
 +else
 +  eval "$3=no"
 +fi
 +rm -f conftest.err conftest.i conftest.$ac_ext
 +fi
 +eval ac_res=\$$3
 +             { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 +$as_echo "$ac_res" >&6; }
++  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 +
 +} # ac_fn_c_check_header_preproc
 +
  # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
  # ----------------------------------------------------
  # Tries to find if the field MEMBER exists in type AGGR, after including
@@@ -2011,7 -1919,7 +2003,7 @@@ ac_fn_c_check_member (
    as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
  $as_echo_n "checking for $2.$3... " >&6; }
- if eval \${$4+:} false; then :
+ if eval "test \"\${$4+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  eval ac_res=\$$4
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
  
  } # ac_fn_c_check_member
  
@@@ -2067,7 -1975,7 +2059,7 @@@ ac_fn_c_check_func (
    as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
  $as_echo_n "checking for $2... " >&6; }
- if eval \${$3+:} false; then :
+ if eval "test \"\${$3+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
  
  } # ac_fn_c_check_func
  
@@@ -2135,7 -2043,7 +2127,7 @@@ ac_fn_c_check_type (
    as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
  $as_echo_n "checking for $2... " >&6; }
- if eval \${$3+:} false; then :
+ if eval "test \"\${$3+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
  else
    eval "$3=no"
  eval ac_res=\$$3
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
-   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
  
  } # ac_fn_c_check_type
  cat >config.log <<_ACEOF
  This file contains any messages produced by compilers while
  running configure, to aid debugging if configure makes a mistake.
  
 -It was created by emacs $as_me 23.2.90, which was
 +It was created by emacs $as_me 24.0.50, which was
- generated by GNU Autoconf 2.68.  Invocation command line was
+ generated by GNU Autoconf 2.67.  Invocation command line was
  
    $ $0 $@
  
@@@ -2442,7 -2350,7 +2434,7 @@@ $as_echo "$as_me: loading site script $
        || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  as_fn_error $? "failed to load site script $ac_site_file
--See \`config.log' for more details" "$LINENO" 5; }
++See \`config.log' for more details" "$LINENO" 5 ; }
    fi
  done
  
@@@ -2624,45 -2532,6 +2616,45 @@@ $as_echo "#define HESIOD 1" >>confdefs.
  fi
  
  
 +# Check whether --with-mmdf was given.
 +if test "${with_mmdf+set}" = set; then :
 +  withval=$with_mmdf;
 +else
 +      with_mmdf=no
 +fi
 +
 +if test "$with_mmdf" != no; then
 +
 +$as_echo "#define MAIL_USE_MMDF 1" >>confdefs.h
 +
 +fi
 +
 +
 +# Check whether --with-mail-unlink was given.
 +if test "${with_mail_unlink+set}" = set; then :
 +  withval=$with_mail_unlink;
 +else
 +      with_mail_unlink=no
 +fi
 +
 +if test "$with_mail_unlink" != no; then
 +
 +$as_echo "#define MAIL_UNLINK_SPOOL 1" >>confdefs.h
 +
 +fi
 +
 +
 +# Check whether --with-mailhost was given.
 +if test "${with_mailhost+set}" = set; then :
 +  withval=$with_mailhost;
 +cat >>confdefs.h <<_ACEOF
 +#define MAILHOST "$withval"
 +_ACEOF
 +
 +fi
 +
 +
 +
  # Check whether --with-sound was given.
  if test "${with_sound+set}" = set; then :
    withval=$with_sound;
@@@ -2695,11 -2564,10 +2687,11 @@@ if test "${with_x_toolkit+set}" = set; 
            a | at | ath | athe | athen | athena )      val=athena ;;
            m | mo | mot | moti | motif )       val=motif ;;
            g | gt | gtk  )     val=gtk ;;
 +          gtk3  )     val=gtk3 ;;
            * )
  as_fn_error $? "\`--with-x-toolkit=$withval' is invalid;
 -this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif' or \`gtk'.
 -\`yes' and \`gtk' are synonyms. \`athena' and \`lucid' are synonyms." "$LINENO" 5
 +this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif', \`gtk' or
 +\`gtk3'.  \`yes' and \`gtk' are synonyms. \`athena' and \`lucid' are synonyms." "$LINENO" 5
            ;;
          esac
          with_x_toolkit=$val
  fi
  
  
 +# Check whether --with-xml2 was given.
 +if test "${with_xml2+set}" = set; then :
 +  withval=$with_xml2;
 +else
 +     with_xml2=yes
 +fi
 +
 +
 +# Check whether --with-imagemagick was given.
 +if test "${with_imagemagick+set}" = set; then :
 +  withval=$with_imagemagick;
 +else
 +     with_imagemagick=yes
 +fi
 +
 +
  
  # Check whether --with-xft was given.
  if test "${with_xft+set}" = set; then :
  fi
  
  
 +# Check whether --with-selinux was given.
 +if test "${with_selinux+set}" = set; then :
 +  withval=$with_selinux;
 +else
 +     with_selinux=yes
 +fi
 +
 +
 +# Check whether --with-gnutls was given.
 +if test "${with_gnutls+set}" = set; then :
 +  withval=$with_gnutls;
 +else
 +     with_gnutls=yes
 +fi
 +
 +
  ## For the times when you want to build Emacs but don't have
  ## a suitable makeinfo, and can live without the manuals.
  
  fi
  
  
 +## This is an option because I do not know if all info/man support
 +## compressed files, nor how to test if they do so.
  
 -# Check whether --with-gtk was given.
 -if test "${with_gtk+set}" = set; then :
 -  withval=$with_gtk; as_fn_error $? "--with-gtk has been removed.  Use --with-x-toolkit to
 -specify a toolkit." "$LINENO" 5
 +# Check whether --with-compress-info was given.
 +if test "${with_compress_info+set}" = set; then :
 +  withval=$with_compress_info;
 +else
 +     with_compress_info=yes
  fi
  
 -
 -
 -# Check whether --with-gcc was given.
 -if test "${with_gcc+set}" = set; then :
 -  withval=$with_gcc; as_fn_error $? "--with-gcc has been removed.  Set the \`CC' environment
 -variable to specify a compiler." "$LINENO" 5
 +if test $with_compress_info = yes; then
 +   GZIP_INFO=yes
 +else
 +   GZIP_INFO=
  fi
  
  
        stringfreelist) ac_gc_check_string_free_list=1 ;;
        xmallocoverrun) ac_xmalloc_overrun=1 ;;
        conslist)       ac_gc_check_cons_list=1 ;;
--      *)      as_fn_error $? "unknown check category $check" "$LINENO" 5 ;;
++      *)      as_fn_error $? "unknown check category $check" "$LINENO" 5  ;;
        esac
  done
  IFS="$ac_save_IFS"
@@@ -3036,17 -2871,6 +3028,17 @@@ $as_echo "#define GC_CHECK_CONS_LIST 1
  
  fi
  
 +# Check whether --enable-use-lisp-union-type was given.
 +if test "${enable_use_lisp_union_type+set}" = set; then :
 +  enableval=$enable_use_lisp_union_type; if test "${enableval}" != "no"; then
 +
 +$as_echo "#define USE_LISP_UNION_TYPE 1" >>confdefs.h
 +
 +fi
 +fi
 +
 +
 +
  # Check whether --enable-profiling was given.
  if test "${enable_profiling+set}" = set; then :
    enableval=$enable_profiling; ac_enable_profiling="${enableval}"
  
  if test x$ac_enable_profiling != x ; then
     PROFILING_CFLAGS="-DPROFILING=1 -pg"
 -   PROFILING_LDFLAGS="-pg"
  else
     PROFILING_CFLAGS=
 -   PROFILING_LDFLAGS=
  fi
  
 +
  # Check whether --enable-autodepend was given.
  if test "${enable_autodepend+set}" = set; then :
    enableval=$enable_autodepend; ac_enable_autodepend="${enableval}"
@@@ -3148,7 -2973,7 +3140,7 @@@ $SHELL "$ac_aux_dir/config.sub" sun4 >/
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
  $as_echo_n "checking build system type... " >&6; }
- if ${ac_cv_build+:} false; then :
+ if test "${ac_cv_build+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_build_alias=$build_alias
  $as_echo "$ac_cv_build" >&6; }
  case $ac_cv_build in
  *-*-*) ;;
--*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
++*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
  esac
  build=$ac_cv_build
  ac_save_IFS=$IFS; IFS='-'
@@@ -3182,7 -3007,7 +3174,7 @@@ case $build_os in *\ *) build_os=`echo 
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
  $as_echo_n "checking host system type... " >&6; }
- if ${ac_cv_host+:} false; then :
+ if test "${ac_cv_host+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test "x$host_alias" = x; then
  $as_echo "$ac_cv_host" >&6; }
  case $ac_cv_host in
  *-*-*) ;;
--*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
++*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
  esac
  host=$ac_cv_host
  ac_save_IFS=$IFS; IFS='-'
@@@ -3223,7 -3048,7 +3215,7 @@@ configuration=${host_alias-${build_alia
  ### the appropriate operating system and machine description files.
  
  ### You would hope that you could choose an m/*.h file pretty much
 -### based on the machine portion of the configuration name, and an s-
 +### based on the machine portion of the configuration name, and an s/*.h
  ### file based on the operating system portion.  However, it turns out
  ### that each m/*.h file is pretty manufacturer-specific - for
  ### example mips.h is MIPS
  ### /etc/MACHINES doesn't say anything about version numbers, be
  ### prepared to handle anything reasonably.  If version numbers
  ### matter, be sure /etc/MACHINES says something about it.
 -###
 -### Eric Raymond says we should accept strings like "sysvr4" to mean
 -### "System V Release 4"; he writes, "The old convention encouraged
 -### confusion between `system' and `release' levels'."
  
  machine='' opsys='' unported=no
  case "${canonical}" in
    *-*-freebsd* )
      opsys=freebsd
      case "${canonical}" in
 -      alpha*-*-freebsd*)      machine=alpha ;;
 -      arm*-*-freebsd*)          machine=arm ;;
 -      ia64-*-freebsd*)                machine=ia64 ;;
 -      sparc-*-freebsd*)         machine=sparc ;;
 -      sparc64-*-freebsd*)     machine=sparc ;;
 -      powerpc-*-freebsd*)     machine=macppc ;;
 -      i[3456]86-*-freebsd*)   machine=intel386 ;;
 -      amd64-*-freebsd*|x86_64-*-freebsd*) machine=amdx86-64 ;;
 +      alpha*)           machine=alpha ;;
 +      amd64-*|x86_64-*) machine=amdx86-64 ;;
 +      arm*)             machine=arm ;;
 +      ia64-*)           machine=ia64 ;;
 +      i[3456]86-*)      machine=intel386 ;;
 +      powerpc-*)        machine=macppc ;;
 +      sparc-*)          machine=sparc ;;
 +      sparc64-*)        machine=sparc ;;
      esac
    ;;
  
    *-*-kfreebsd*gnu* )
      opsys=gnu-kfreebsd
      case "${canonical}" in
 -      alpha*-*-kfreebsd*)     machine=alpha ;;
 -      ia64-*-kfreebsd*)               machine=ia64 ;;
 -      sparc-*-kfreebsd*)      machine=sparc ;;
 -      sparc64-*-kfreebsd*)    machine=sparc ;;
 -      powerpc-*-kfreebsd*)    machine=macppc ;;
 -      i[3456]86-*-kfreebsd*)  machine=intel386 ;;
 -      amd64-*-kfreebsd*|x86_64-*-kfreebsd*) machine=amdx86-64 ;;
 +      alpha*)           machine=alpha ;;
 +      amd64-*|x86_64-*) machine=amdx86-64 ;;
 +      ia64-*)           machine=ia64 ;;
 +      i[3456]86-*)      machine=intel386 ;;
 +      powerpc-*)        machine=macppc ;;
 +      sparc-*)          machine=sparc ;;
 +      sparc64-*)        machine=sparc ;;
      esac
    ;;
  
    ## NetBSD ports
    *-*-netbsd* )
      opsys=netbsd
 -    if test -f /usr/lib/crti.o; then
 -
 -$as_echo "#define HAVE_CRTIN /**/" >>confdefs.h
 -
 -   fi
 -
      case "${canonical}" in
 -      alpha*-*-netbsd*)       machine=alpha ;;
 -      i[3456]86-*-netbsd*) machine=intel386 ;;
 -      mips-*-netbsd*) machine=mips ;;
 -      mipsel-*-netbsd*)       machine=mips ;;
 -      mipseb-*-netbsd*)       machine=mips ;;
 -      powerpc-*-netbsd*) machine=macppc ;;
 -      sparc*-*-netbsd*)       machine=sparc ;;
 -      vax-*-netbsd*)  machine=vax ;;
 -      arm-*-netbsd*)  machine=arm ;;
 -      x86_64-*-netbsd*)       machine=amdx86-64 ;;
 -      hppa-*-netbsd*) machine=hp800 ;;
 -      m68k-*-netbsd*) machine=m68k ;;
 +      alpha*)      machine=alpha ;;
 +      x86_64-*)    machine=amdx86-64 ;;
 +      arm-*)       machine=arm ;;
 +      hppa-*)      machine=hp800 ;;
 +      i[3456]86-*) machine=intel386 ;;
 +      m68k-*)      machine=m68k ;;
 +      powerpc-*)   machine=macppc ;;
 +      mips-*)      machine=mips ;;
 +      mipse[bl]-*) machine=mips ;;
 +      sparc*-)     machine=sparc ;;
 +      vax-*)       machine=vax ;;
      esac
    ;;
  
    *-*-openbsd* )
      opsys=openbsd
      case "${canonical}" in
 -      alpha*-*-openbsd*)      machine=alpha ;;
 -      arm-*-openbsd*)          machine=arm ;;
 -      i386-*-openbsd*)         machine=intel386 ;;
 -      powerpc-*-openbsd*)      machine=macppc ;;
 -      sparc*-*-openbsd*)       machine=sparc ;;
 -      vax-*-openbsd*)          machine=vax ;;
 -      x86_64-*-openbsd*)       machine=amdx86-64 ;;
 -      hppa-*-openbsd*)         machine=hp800 ;;
 -    esac
 -  ;;
 -
 -  ## LynxOS ports
 -  *-*-lynxos* )
 -    opsys=lynxos
 -    case "${canonical}" in
 -      i[3456]86-*-lynxos*) machine=intel386 ;;
 -      powerpc-*-lynxos*) machine=powerpc ;;
 +      alpha*)    machine=alpha ;;
 +      x86_64-*)  machine=amdx86-64 ;;
 +      arm-*)     machine=arm ;;
 +      hppa-*)    machine=hp800 ;;
 +      i386-*)    machine=intel386 ;;
 +      powerpc-*) machine=macppc ;;
 +      sparc*)    machine=sparc ;;
 +      vax-*)     machine=vax ;;
      esac
    ;;
  
    s390x-*-linux-gnu* )
      machine=ibms390x opsys=gnu-linux
    ;;
 -  rs6000-ibm-aix4.2* | powerpc-ibm-aix4.2*  )
 +  rs6000-ibm-aix4.[23]* )
      machine=ibmrs6000 opsys=aix4-2
    ;;
 -  rs6000-ibm-aix4.3* | powerpc-ibm-aix4.3*  )
 +  powerpc-ibm-aix4.[23]*  )
      machine=ibmrs6000 opsys=aix4-2
    ;;
 -  rs6000-ibm-aix5* | powerpc-ibm-aix5*  )
 +  rs6000-ibm-aix[56]* )
      machine=ibmrs6000 opsys=aix4-2
    ;;
 -  rs6000-ibm-aix6* | powerpc-ibm-aix6*  )
 +  powerpc-ibm-aix[56]*  )
      machine=ibmrs6000 opsys=aix4-2
    ;;
  
  
    *-sun-solaris* \
      | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
 -    | x86_64-*-solaris2*    | x86_64-*-sunos5*    \
 -    | powerpc*-*-solaris2*  | rs6000-*-solaris2*)
 +    | x86_64-*-solaris2*    | x86_64-*-sunos5*)
      case "${canonical}" in
        i[3456]86-*-* )     machine=intel386 ;;
        amd64-*-*|x86_64-*-*)   machine=amdx86-64 ;;
 -      powerpc* | rs6000* )  machine=ibmrs6000 ;;
        sparc* )                machine=sparc ;;
        * )             unported=yes ;;
      esac
      case "${canonical}" in
 -      *-sunos5.3* | *-solaris2.3* )
 -              opsys=sol2-3
 -              NON_GNU_CPP=/usr/ccs/lib/cpp
 -              ;;
 -      *-sunos5.4* | *-solaris2.4* )
 -              opsys=sol2-4
 -              NON_GNU_CPP=/usr/ccs/lib/cpp
 -              RANLIB="ar -ts"
 -              ;;
 -      *-sunos5.5* | *-solaris2.5* )
 -              opsys=sol2-5
 -              NON_GNU_CPP=/usr/ccs/lib/cpp
 -              RANLIB="ar -ts"
 -              ;;
        *-sunos5.6* | *-solaris2.6* )
                opsys=sol2-6
                NON_GNU_CPP=/usr/ccs/lib/cpp
      machine=ia64 opsys=gnu-linux
    ;;
  
 -  ## Intel 386 machines where we don't care about the manufacturer
 +  ## Intel 386 machines where we don't care about the manufacturer.
    i[3456]86-*-* )
      machine=intel386
      case "${canonical}" in
@@@ -3482,6 -3343,22 +3474,6 @@@ esa
  if test x"${opsys}" = x; then
    case "${canonical}" in
      *-gnu* )                          opsys=gnu ;;
 -    *-sysv4.2uw* )                    opsys=unixware ;;
 -    *-sysv5uw* )                      opsys=unixware ;;
 -    *-sysv5OpenUNIX* )                        opsys=unixware ;;
 -    *-sysv4.1* | *-sysvr4.1* )
 -      NON_GNU_CPP=/usr/lib/cpp
 -      opsys=usg5-4 ;;
 -    *-sysv4.[2-9]* | *-sysvr4.[2-9]* )
 -      if [ x$NON_GNU_CPP = x ]; then
 -        if [ -f /usr/ccs/lib/cpp ]; then
 -          NON_GNU_CPP=/usr/ccs/lib/cpp
 -        else
 -          NON_GNU_CPP=/lib/cpp
 -        fi
 -      fi
 -      opsys=usg5-4-2 ;;
 -    *-sysv4* | *-sysvr4* )            opsys=usg5-4 ;;
      * )
        unported=yes
      ;;
@@@ -3515,7 -3392,7 +3507,7 @@@ if test -n "$ac_tool_prefix"; the
  set dummy ${ac_tool_prefix}gcc; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_CC+:} false; then :
+ if test "${ac_cv_prog_CC+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$CC"; then
@@@ -3555,7 -3432,7 +3547,7 @@@ if test -z "$ac_cv_prog_CC"; the
  set dummy gcc; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$ac_ct_CC"; then
@@@ -3608,7 -3485,7 +3600,7 @@@ if test -z "$CC"; the
  set dummy ${ac_tool_prefix}cc; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_CC+:} false; then :
+ if test "${ac_cv_prog_CC+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$CC"; then
@@@ -3648,7 -3525,7 +3640,7 @@@ if test -z "$CC"; the
  set dummy cc; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_CC+:} false; then :
+ if test "${ac_cv_prog_CC+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$CC"; then
@@@ -3707,7 -3584,7 +3699,7 @@@ if test -z "$CC"; the
  set dummy $ac_tool_prefix$ac_prog; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_CC+:} false; then :
+ if test "${ac_cv_prog_CC+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$CC"; then
  set dummy $ac_prog; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$ac_ct_CC"; then
  test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  as_fn_error $? "no acceptable C compiler found in \$PATH
--See \`config.log' for more details" "$LINENO" 5; }
++See \`config.log' for more details" "$LINENO" 5 ; }
  
  # Provide some information about the compiler.
  $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@@ -3921,7 -3798,7 +3913,7 @@@ sed 's/^/| /' conftest.$ac_ext >&
  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  as_fn_error 77 "C compiler cannot create executables
--See \`config.log' for more details" "$LINENO" 5; }
++See \`config.log' for more details" "$LINENO" 5 ; }
  else
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
  $as_echo "yes" >&6; }
@@@ -3964,7 -3841,7 +3956,7 @@@ els
    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  as_fn_error $? "cannot compute suffix of executables: cannot compile and link
--See \`config.log' for more details" "$LINENO" 5; }
++See \`config.log' for more details" "$LINENO" 5 ; }
  fi
  rm -f conftest conftest$ac_cv_exeext
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@@ -4023,7 -3900,7 +4015,7 @@@ $as_echo "$ac_try_echo"; } >&
  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  as_fn_error $? "cannot run C compiled programs.
  If you meant to cross compile, use \`--host'.
--See \`config.log' for more details" "$LINENO" 5; }
++See \`config.log' for more details" "$LINENO" 5 ; }
      fi
    fi
  fi
@@@ -4034,7 -3911,7 +4026,7 @@@ rm -f conftest.$ac_ext conftest$ac_cv_e
  ac_clean_files=$ac_clean_files_save
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
  $as_echo_n "checking for suffix of object files... " >&6; }
- if ${ac_cv_objext+:} false; then :
+ if test "${ac_cv_objext+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -4075,7 -3952,7 +4067,7 @@@ sed 's/^/| /' conftest.$ac_ext >&
  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  as_fn_error $? "cannot compute suffix of object files: cannot compile
--See \`config.log' for more details" "$LINENO" 5; }
++See \`config.log' for more details" "$LINENO" 5 ; }
  fi
  rm -f conftest.$ac_cv_objext conftest.$ac_ext
  fi
@@@ -4085,7 -3962,7 +4077,7 @@@ OBJEXT=$ac_cv_objex
  ac_objext=$OBJEXT
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
  $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
- if ${ac_cv_c_compiler_gnu+:} false; then :
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -4122,7 -3999,7 +4114,7 @@@ ac_test_CFLAGS=${CFLAGS+set
  ac_save_CFLAGS=$CFLAGS
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
  $as_echo_n "checking whether $CC accepts -g... " >&6; }
- if ${ac_cv_prog_cc_g+:} false; then :
+ if test "${ac_cv_prog_cc_g+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_save_c_werror_flag=$ac_c_werror_flag
@@@ -4200,7 -4077,7 +4192,7 @@@ els
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
  $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
- if ${ac_cv_prog_cc_c89+:} false; then :
+ if test "${ac_cv_prog_cc_c89+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_cv_prog_cc_c89=no
@@@ -4308,7 -4185,7 +4300,7 @@@ if test x"$GCC" != xyes && test x"$emac
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using a Sun C compiler" >&5
  $as_echo_n "checking whether we are using a Sun C compiler... " >&6; }
  
- if ${emacs_cv_sunpro_c+:} false; then :
+ if test "${emacs_cv_sunpro_c+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    CC="$NON_GNU_CC"
  fi
  
 -if test x$GCC = xyes && test "x$GCC_TEST_OPTIONS" != x
 -then
 -  CC="$CC $GCC_TEST_OPTIONS"
 -fi
 -
 -if test x$GCC = x && test "x$NON_GCC_TEST_OPTIONS" != x
 -then
 -  CC="$CC $NON_GCC_TEST_OPTIONS"
 +if test x$GCC = xyes; then
 +  test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
 +else
 +  test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
  fi
  
  ac_ext=c
@@@ -4377,7 -4258,7 +4369,7 @@@ if test -n "$CPP" && test -d "$CPP"; th
    CPP=
  fi
  if test -z "$CPP"; then
-   if ${ac_cv_prog_CPP+:} false; then :
+   if test "${ac_cv_prog_CPP+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
        # Double quotes because CPP needs to be expanded
@@@ -4493,7 -4374,7 +4485,7 @@@ els
    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
--See \`config.log' for more details" "$LINENO" 5; }
++See \`config.log' for more details" "$LINENO" 5 ; }
  fi
  
  ac_ext=c
@@@ -4505,7 -4386,7 +4497,7 @@@ ac_compiler_gnu=$ac_cv_c_compiler_gn
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
  $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
- if ${ac_cv_path_GREP+:} false; then :
+ if test "${ac_cv_path_GREP+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -z "$GREP"; then
@@@ -4568,7 -4449,7 +4560,7 @@@ $as_echo "$ac_cv_path_GREP" >&6; 
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
  $as_echo_n "checking for egrep... " >&6; }
- if ${ac_cv_path_EGREP+:} false; then :
+ if test "${ac_cv_path_EGREP+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@@ -4635,7 -4516,7 +4627,7 @@@ $as_echo "$ac_cv_path_EGREP" >&6; 
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
  $as_echo_n "checking for ANSI C header files... " >&6; }
- if ${ac_cv_header_stdc+:} false; then :
+ if test "${ac_cv_header_stdc+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -4764,7 -4645,7 +4756,7 @@@ don
  
  
    ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
- if test "x$ac_cv_header_minix_config_h" = xyes; then :
+ if test "x$ac_cv_header_minix_config_h" = x""yes; then :
    MINIX=yes
  else
    MINIX=
@@@ -4786,7 -4667,7 +4778,7 @@@ $as_echo "#define _MINIX 1" >>confdefs.
  
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
  $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
- if ${ac_cv_safe_to_define___extensions__+:} false; then :
+ if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -4886,73 -4767,18 +4878,73 @@@ CFLAGS="$SAVE_CFLAGS
  unset has_option
  unset SAVE_CFLAGS
  
 -#### Some other nice autoconf tests.
 +### Use -Wold-style-definition if the compiler supports it
 +# This can be removed when conversion to standard C is finished.
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc understands -Wold-style-definition" >&5
 +$as_echo_n "checking whether gcc understands -Wold-style-definition... " >&6; }
 +SAVE_CFLAGS="$CFLAGS"
 +CFLAGS="$CFLAGS -Wold-style-definition"
 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
  
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
 -$as_echo_n "checking whether ln -s works... " >&6; }
 -LN_S=$as_ln_s
 -if test "$LN_S" = "ln -s"; then
 -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 -$as_echo "yes" >&6; }
 +int
 +main ()
 +{
 +
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_compile "$LINENO"; then :
 +  has_option=yes
 +else
 +  has_option=no
 +fi
 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 +if test $has_option = yes; then
 +   C_WARNINGS_SWITCH="-Wold-style-definition $C_WARNINGS_SWITCH"
 +fi
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_option" >&5
 +$as_echo "$has_option" >&6; }
 +CFLAGS="$SAVE_CFLAGS"
 +unset has_option
 +unset SAVE_CFLAGS
 +
 +### Use -Wimplicit-function-declaration if the compiler supports it
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc understands -Wimplicit-function-declaration" >&5
 +$as_echo_n "checking whether gcc understands -Wimplicit-function-declaration... " >&6; }
 +SAVE_CFLAGS="$CFLAGS"
 +CFLAGS="$CFLAGS -Wimplicit-function-declaration"
 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +
 +int
 +main ()
 +{
 +
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_compile "$LINENO"; then :
 +  has_option=yes
  else
 -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
 -$as_echo "no, using $LN_S" >&6; }
 +  has_option=no
  fi
 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 +if test $has_option = yes; then
 +   C_WARNINGS_SWITCH="-Wimplicit-function-declaration $C_WARNINGS_SWITCH"
 +fi
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_option" >&5
 +$as_echo "$has_option" >&6; }
 +CFLAGS="$SAVE_CFLAGS"
 +unset has_option
 +unset SAVE_CFLAGS
 +
 +
 +
 +
 +#### Some other nice autoconf tests.
  
  ac_ext=c
  ac_cpp='$CPP $CPPFLAGS'
@@@ -4966,7 -4792,7 +4958,7 @@@ if test -n "$CPP" && test -d "$CPP"; th
    CPP=
  fi
  if test -z "$CPP"; then
-   if ${ac_cv_prog_CPP+:} false; then :
+   if test "${ac_cv_prog_CPP+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
        # Double quotes because CPP needs to be expanded
@@@ -5082,7 -4908,7 +5074,7 @@@ els
    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
--See \`config.log' for more details" "$LINENO" 5; }
++See \`config.log' for more details" "$LINENO" 5 ; }
  fi
  
  ac_ext=c
@@@ -5108,7 -4934,7 +5100,7 @@@ ac_compiler_gnu=$ac_cv_c_compiler_gn
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
  $as_echo_n "checking for a BSD-compatible install... " >&6; }
  if test -z "$INSTALL"; then
- if ${ac_cv_path_install+:} false; then :
+ if test "${ac_cv_path_install+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@@ -5190,7 -5016,7 +5182,7 @@@ if test "x$RANLIB" = x; the
  set dummy ${ac_tool_prefix}ranlib; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_RANLIB+:} false; then :
+ if test "${ac_cv_prog_RANLIB+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$RANLIB"; then
@@@ -5230,7 -5056,7 +5222,7 @@@ if test -z "$ac_cv_prog_RANLIB"; the
  set dummy ranlib; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$ac_ct_RANLIB"; then
  fi
  
  fi
- if test "x$ac_cv_have_decl_i386" = xyes; then :
 +
 +## Although we're running on an amd64 kernel, we're actually compiling for
 +## the x86 architecture.  The user should probably have provided an
 +## explicit --build to `configure', but if everything else than the kernel
 +## is running in i386 mode, we can help them out.
 +if test "$machine" = "amdx86-64"; then
 +  ac_fn_c_check_decl "$LINENO" "i386" "ac_cv_have_decl_i386" "$ac_includes_default"
++if test "x$ac_cv_have_decl_i386" = x""yes; then :
 +
 +fi
 +
 +  if test "$ac_cv_have_decl_i386" = "yes"; then
 +    canonical=`echo "$canonical" | sed -e 's/^amd64/i386/' -e 's/^x86_64/i386/'`
 +    machine=intel386
 +    machfile="m/${machine}.h"
 +  fi
 +fi
 +
  # Extract the first word of "install-info", so it can be a program name with args.
  set dummy install-info; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_INSTALL_INFO+:} false; then :
+ if test "${ac_cv_path_INSTALL_INFO+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $INSTALL_INFO in
  set dummy install-info; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_INSTALL_INFO+:} false; then :
+ if test "${ac_cv_path_INSTALL_INFO+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $INSTALL_INFO in
  set dummy install-info; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_INSTALL_INFO+:} false; then :
+ if test "${ac_cv_path_INSTALL_INFO+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $INSTALL_INFO in
  set dummy gzip; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_GZIP_PROG+:} false; then :
+ if test "${ac_cv_path_GZIP_PROG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $GZIP_PROG in
  set dummy makeinfo; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_MAKEINFO+:} false; then :
+ if test "${ac_cv_path_MAKEINFO+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $MAKEINFO in
  if test "$MAKEINFO" = "no"; then
    if test "x${with_makeinfo}" = "xno"; then
      MAKEINFO=off
 -  elif ! test -e $srcdir/info/emacs; then
 +  elif test ! -e $srcdir/info/emacs; then
      as_fn_error $? "You do not seem to have makeinfo >= 4.6, and your
  source tree does not seem to have pre-built manuals in the \`info' directory.
  Either install a suitable version of makeinfo, or re-run configure
@@@ -5527,17 -5335,19 +5519,17 @@@ with the \`--without-makeinfo' option t
  fi
  
  
 -if test x$GCC = xyes && test "x$GCC_LINK_TEST_OPTIONS" != x
 -then
 -  ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
 -fi
 -
 -if test x$GCC = x && test "x$NON_GCC_LINK_TEST_OPTIONS" != x
 -then
 -  ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
 +if test x$GCC = xyes; then
 +  test "x$GCC_LINK_TEST_OPTIONS" != x && \
 +    ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
 +else
 +  test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
 +    ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
  fi
  
  
  late_LDFLAGS=$LDFLAGS
 -if test "$GCC" = yes; then
 +if test x$GCC = xyes; then
    LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
  else
    LDFLAGS="$LDFLAGS -znocombreloc"
  $as_echo_n "checking for -znocombreloc... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
 -main(){return 0;}
 +
 +int
 +main ()
 +{
 +
 +  ;
 +  return 0;
 +}
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
  rm -f core conftest.err conftest.$ac_objext \
      conftest$ac_exeext conftest.$ac_ext
  
 -#### Extract some information from the operating system and machine files.
 -
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the machine- and system-dependent files to find out
 - - which libraries the lib-src programs will want, and
 - - whether the GNU malloc routines are usable..." >&5
 -$as_echo "$as_me: checking the machine- and system-dependent files to find out
 - - which libraries the lib-src programs will want, and
 - - whether the GNU malloc routines are usable..." >&6;}
 -
 -### First figure out CFLAGS (which we use for running the compiler here)
 -### and REAL_CFLAGS (which we use for real compilation).
 -### The two are the same except on a few systems, where they are made
 -### different to work around various lossages.  For example,
 -### GCC 2.5 on GNU/Linux needs them to be different because it treats -g
 -### as implying static linking.
 -
 -### If the CFLAGS env var is specified, we use that value
 -### instead of the default.
 -
 -### It's not important that this name contain the PID; you can't run
 -### two configures in the same directory and have anything work
 -### anyway.
 -tempcname="conftest.c"
 -
 -echo '
 -#include "'${srcdir}'/src/'${opsysfile}'"
 -#include "'${srcdir}'/src/'${machfile}'"
 -#ifndef LIBS_MACHINE
 -#define LIBS_MACHINE
 -#endif
 -#ifndef LIBS_SYSTEM
 -#define LIBS_SYSTEM
 -#endif
 -#ifndef C_SWITCH_SYSTEM
 -#define C_SWITCH_SYSTEM
 -#endif
 -#ifndef C_SWITCH_MACHINE
 -#define C_SWITCH_MACHINE
 -#endif
 -configure___ libsrc_libs=LIBS_MACHINE LIBS_SYSTEM
 -configure___ c_switch_system=C_SWITCH_SYSTEM
 -configure___ c_switch_machine=C_SWITCH_MACHINE
  
 -#ifndef LIB_X11_LIB
 -#define LIB_X11_LIB -lX11
 -#endif
 +# The value of CPP is a quoted variable reference, so we need to do this
 +# to get its actual value...
 +CPP=`eval "echo $CPP"`
  
 -#ifndef LIBX11_SYSTEM
 -#define LIBX11_SYSTEM
 -#endif
 -configure___ LIBX=LIB_X11_LIB LIBX11_SYSTEM
  
 -#ifdef UNEXEC
 -configure___ unexec=UNEXEC
 -#else
 -configure___ unexec=unexec.o
 -#endif
 +CANNOT_DUMP=no
 +case "$opsys" in
 +  your-opsys-here)
 +   CANNOT_DUMP=yes
  
 -#ifdef SYSTEM_MALLOC
 -configure___ system_malloc=yes
 -#else
 -configure___ system_malloc=no
 -#endif
 +$as_echo "#define CANNOT_DUMP 1" >>confdefs.h
  
 -#ifdef USE_MMAP_FOR_BUFFERS
 -configure___ use_mmap_for_buffers=yes
 -#else
 -configure___ use_mmap_for_buffers=no
 -#endif
 +  ;;
 +esac
  
 -#ifndef C_DEBUG_SWITCH
 -#define C_DEBUG_SWITCH -g
 -#endif
  
 -#ifndef C_OPTIMIZE_SWITCH
 -#ifdef __GNUC__
 -#define C_OPTIMIZE_SWITCH -O2
 -#else
 -#define C_OPTIMIZE_SWITCH -O
 -#endif
 -#endif
  
 -#ifndef C_WARNINGS_SWITCH
 -#define C_WARNINGS_SWITCH ${C_WARNINGS_SWITCH}
 -#endif
 +UNEXEC_OBJ=unexelf.o
 +case "$opsys" in
 +  # MSDOS uses unexcoff.o
 +  # MSWindows uses unexw32.o
 +  aix4-2)
 +   UNEXEC_OBJ=unexaix.o
 +   ;;
 +  cygwin)
 +   UNEXEC_OBJ=unexcw.o
 +   ;;
 +  darwin)
 +   UNEXEC_OBJ=unexmacosx.o
 +   ;;
 +  hpux10-20 | hpux11)
 +   UNEXEC_OBJ=unexhp9k800.o
 +   ;;
 +  sol2-10)
 +   # Use the Solaris dldump() function, called from unexsol.c, to dump
 +   # emacs, instead of the generic ELF dump code found in unexelf.c.
 +   # The resulting binary has a complete symbol table, and is better
 +   # for debugging and other observability tools (debuggers, pstack, etc).
 +   #
 +   # If you encounter a problem using dldump(), please consider sending
 +   # a message to the OpenSolaris tools-linking mailing list:
 +   #      http://mail.opensolaris.org/mailman/listinfo/tools-linking
 +   #
 +   # It is likely that dldump() works with older Solaris too, but this has
 +   # not been tested, so for now this change is for Solaris 10 or newer.
 +   UNEXEC_OBJ=unexsol.o
 +   ;;
 +esac
  
 -#ifndef LD_SWITCH_MACHINE
 -#define LD_SWITCH_MACHINE
 -#endif
 +LD_SWITCH_SYSTEM=
 +case "$opsys" in
 +  freebsd)
 +   ## Let `ld' find image libs and similar things in /usr/local/lib.
 +   ## The system compiler, GCC, has apparently been modified to not
 +   ## look there, contrary to what a stock GCC would do.
 +   LD_SWITCH_SYSTEM=-L/usr/local/lib
 +   ;;
  
 -#ifndef LD_SWITCH_SYSTEM
 -#define LD_SWITCH_SYSTEM
 -#endif
 +  gnu-linux)
 +   ## cpp test was "ifdef __mips__", but presumably this is equivalent...
 +   test "$machine" = "mips" && LD_SWITCH_SYSTEM="-G 0"
 +   ;;
  
 -#ifndef LD_SWITCH_X_SITE_AUX
 -#define LD_SWITCH_X_SITE_AUX
 -#endif
 +  netbsd)
 +   LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
 +   ;;
  
 -configure___ ld_switch_system=LD_SWITCH_SYSTEM
 -configure___ ld_switch_machine=LD_SWITCH_MACHINE
 +  openbsd)
 +   ## Han Boetes <han@mijncomputer.nl> says this is necessary,
 +   ## otherwise Emacs dumps core on elf systems.
 +   LD_SWITCH_SYSTEM="-Z"
 +   ;;
 +esac
  
 -#ifdef THIS_IS_CONFIGURE
  
 -/* Get the CFLAGS for tests in configure.  */
 -#ifdef __GNUC__
 -configure___ CFLAGS=C_DEBUG_SWITCH C_OPTIMIZE_SWITCH '${SPECIFIED_CFLAGS}'
 -#else
 -configure___ CFLAGS=C_DEBUG_SWITCH '${SPECIFIED_CFLAGS}'
 -#endif
 +ac_link="$ac_link $LD_SWITCH_SYSTEM"
 +
 +## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_AUX,
 +## which has not been defined yet.  When this was handled with cpp,
 +## it was expanded to null when configure sourced the s/*.h file.
 +## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
 +## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
 +## (or somesuch), but because it is supposed to go at the _front_
 +## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
 +## Compare with the gnu-linux case below, which added to the end
 +## of LD_SWITCH_SYSTEM, and so can instead go at the front of
 +## LD_SWITCH_SYSTEM_TEMACS.
 +case "$opsys" in
 +  netbsd|openbsd)
 +   ## _AUX_RPATH is like _AUX, but uses -rpath instead of -R.
 +   LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_AUX_RPATH) $LD_SWITCH_SYSTEM" ;;
 +esac
  
 -#else /* not THIS_IS_CONFIGURE */
  
 -/* Get the CFLAGS for real compilation.  */
 -#ifdef __GNUC__
 -configure___ REAL_CFLAGS=C_DEBUG_SWITCH C_OPTIMIZE_SWITCH C_WARNINGS_SWITCH ${PROFILING_CFLAGS} '${SPECIFIED_CFLAGS}'
 -#else
 -configure___ REAL_CFLAGS=C_DEBUG_SWITCH '${SPECIFIED_CFLAGS}'
 -#endif
 +C_SWITCH_MACHINE=
 +if test "$machine" = "alpha"; then
 +  ac_fn_c_check_decl "$LINENO" "__ELF__" "ac_cv_have_decl___ELF__" "$ac_includes_default"
- if test "x$ac_cv_have_decl___ELF__" = xyes; then :
++if test "x$ac_cv_have_decl___ELF__" = x""yes; then :
  
 -#endif /* not THIS_IS_CONFIGURE */
 -' > ${tempcname}
 -
 -LDFLAGS="${LDFLAGS} ${PROFILING_LDFLAGS}"
 +fi
  
 -# The value of CPP is a quoted variable reference, so we need to do this
 -# to get its actual value...
 -CPP=`eval "echo $CPP"`
 -eval `${CPP} -Isrc ${tempcname} \
 -       | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
 -if test "x$SPECIFIED_CFLAGS" = x; then
 -  eval `${CPP} -Isrc -DTHIS_IS_CONFIGURE ${tempcname} \
 -       | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
 -else
 -  REAL_CFLAGS="$CFLAGS"
 +  if test "$ac_cv_have_decl___ELF__" = "yes"; then
 +    ## With ELF, make sure that all common symbols get allocated to in the
 +    ## data section.  Otherwise, the dump of temacs may miss variables in
 +    ## the shared library that have been initialized.  For example, with
 +    ## GNU libc, __malloc_initialized would normally be resolved to the
 +    ## shared library's .bss section, which is fatal.
 +    if test "x$GCC" = "xyes"; then
 +      C_SWITCH_MACHINE="-fno-common"
 +    else
 +      as_fn_error $? "What gives?  Fix me if DEC Unix supports ELF now." "$LINENO" 5
 +    fi
 +  else
 +    UNEXEC_OBJ=unexalpha.o
 +  fi
  fi
 -rm ${tempcname}
  
 -ac_link="$ac_link $ld_switch_machine $ld_switch_system"
 +
 +
 +
 +C_SWITCH_SYSTEM=
 +## Some programs in src produce warnings saying certain subprograms
 +## are too complex and need a MAXMEM value greater than 2000 for
 +## additional optimization.  --nils@exp-math.uni-essen.de
 +test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
 +  C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
 +## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
 +## It is redundant in glibc2, since we define _GNU_SOURCE.
 +
 +
 +
 +LIBS_SYSTEM=
 +case "$opsys" in
 +  ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
 +  aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
 +
 +  freebsd) LIBS_SYSTEM="-lutil" ;;
 +
 +  hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
 +
 +  sol2*) LIBS_SYSTEM="-lsocket -lnsl -lkstat" ;;
 +
 +  ## Motif needs -lgen.
 +  unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
 +esac
 +
 +
  
  ### Make sure subsequent tests use flags consistent with the build flags.
  
  if test x"${OVERRIDE_CPPFLAGS}" != x; then
    CPPFLAGS="${OVERRIDE_CPPFLAGS}"
  else
 -  CPPFLAGS="$c_switch_system $c_switch_machine $CPPFLAGS"
 +  CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
  fi
  
  
@@@ -5735,7 -5528,7 +5727,7 @@@ if test "$enable_largefile" != no; the
  
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
  $as_echo_n "checking for special C compiler options needed for large files... " >&6; }
- if ${ac_cv_sys_largefile_CC+:} false; then :
+ if test "${ac_cv_sys_largefile_CC+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_cv_sys_largefile_CC=no
@@@ -5786,7 -5579,7 +5778,7 @@@ $as_echo "$ac_cv_sys_largefile_CC" >&6
  
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
  $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
- if ${ac_cv_sys_file_offset_bits+:} false; then :
+ if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    while :; do
@@@ -5855,7 -5648,7 +5847,7 @@@ rm -rf conftest
    if test $ac_cv_sys_file_offset_bits = unknown; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
  $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
- if ${ac_cv_sys_large_files+:} false; then :
+ if test "${ac_cv_sys_large_files+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    while :; do
@@@ -5925,81 -5718,27 +5917,81 @@@ rm -rf conftest
  fi
  
  
 -## Note: at present CRT_DIR is only used for amdx86-64 and ibms390x.
 -## Other machine types hard-code the location in src/[ms]/*.h.
 -case "${canonical}" in
 -  x86_64-*-linux-gnu* | s390x-*-linux-gnu* )
 -   ## On x86-64 and s390x GNU/Linux distributions, the standard library
 -   ## can be in a variety of places.  We only try /usr/lib64 and /usr/lib.
 -   ## For anything else (eg /usr/lib32), it is up the user to specify
 -   ## the location (bug#5655).
 -   ## Test for crtn.o, not just the directory, because sometimes the
 -   ## directory exists but does not have the relevant files (bug#1287).
 -   ## If user specified a crt-dir, use that unconditionally.
 -   if test "X$CRT_DIR" = "X"; then
 -     CRT_DIR=/usr/lib
 -     test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64
 -   fi
  
 -   test -e $CRT_DIR/crtn.o || test -e $CRT_DIR/crt0.o || \
 -     as_fn_error $? "crt*.o not found.  Use --with-crt-dir to specify the location." "$LINENO" 5
 -   ;;
 +## If user specified a crt-dir, use that unconditionally.
 +if test "X$CRT_DIR" = "X"; then
 +
 +  case "$canonical" in
 +    x86_64-*-linux-gnu* | s390x-*-linux-gnu*)
 +    ## On x86-64 and s390x GNU/Linux distributions, the standard library
 +    ## can be in a variety of places.  We only try /usr/lib64 and /usr/lib.
 +    ## For anything else (eg /usr/lib32), it is up the user to specify
 +    ## the location (bug#5655).
 +    ## Test for crtn.o, not just the directory, because sometimes the
 +    ## directory exists but does not have the relevant files (bug#1287).
 +    ## FIXME better to test for binary compatibility somehow.
 +    test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64
 +    ;;
 +
 +    powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*) CRT_DIR=/usr/lib64 ;;
 +  esac
 +
 +  case "$opsys" in
 +    hpux10-20) CRT_DIR=/lib ;;
 +  esac
 +
 +  ## Default is /usr/lib.
 +  test "X$CRT_DIR" = "X" && CRT_DIR=/usr/lib
 +
 +else
 +
 +  ## Some platforms don't use any of these files, so it is not
 +  ## appropriate to put this test outside the if block.
 +  test -e $CRT_DIR/crtn.o || test -e $CRT_DIR/crt0.o || \
 +    as_fn_error $? "crt*.o not found in specified location." "$LINENO" 5
 +
 +fi
 +
 +
 +
 +LIB_MATH=-lm
 +LIB_STANDARD=
 +START_FILES=
 +
 +case $opsys in
 +  cygwin )
 +    LIB_MATH=
 +    START_FILES='pre-crt0.o'
 +    ;;
 +  darwin )
 +    ## Adding -lm confuses the dynamic linker, so omit it.
 +    LIB_MATH=
 +    START_FILES='pre-crt0.o'
 +    ;;
 +  freebsd )
 +    LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
 +    START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
 +    ;;
 +  gnu-linux | gnu-kfreebsd )
 +    LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtn.o'
 +    START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o'
 +    ;;
 +  hpux10-20 | hpux11 )
 +    LIB_STANDARD=-lc
 +    START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o'
 +    ;;
 +  netbsd | openbsd )
 +    if test -f $CRT_DIR/crti.o; then
 +      LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
 +        START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
 +    else
 +      LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o'
 +      START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crtbegin.o'
 +    fi
 +    ;;
  esac
 -test "X$CRT_DIR" = "X" && CRT_DIR=/usr/lib
 +
 +
  
  
  
@@@ -6015,7 -5754,7 +6007,7 @@@ if eval test \"x\$"$as_ac_Header"\" = x
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
 -
 + have_sound_header=yes
  fi
  
  done
    # Emulation library used on NetBSD.
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5
  $as_echo_n "checking for _oss_ioctl in -lossaudio... " >&6; }
- if ${ac_cv_lib_ossaudio__oss_ioctl+:} false; then :
+ if test "${ac_cv_lib_ossaudio__oss_ioctl+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -6057,7 -5796,7 +6049,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ossaudio__oss_ioctl" >&5
  $as_echo "$ac_cv_lib_ossaudio__oss_ioctl" >&6; }
- if test "x$ac_cv_lib_ossaudio__oss_ioctl" = xyes; then :
+ if test "x$ac_cv_lib_ossaudio__oss_ioctl" = x""yes; then :
    LIBSOUND=-lossaudio
  else
    LIBSOUND=
  set dummy pkg-config; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $PKG_CONFIG in
@@@ -6216,24 -5955,13 +6208,24 @@@ $as_echo "#define HAVE_ALSA 1" >>confde
  
    fi
  
 +        if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
 +     case "$opsys" in
 +              gnu-linux|freebsd|netbsd)
 +
 +$as_echo "#define HAVE_SOUND 1" >>confdefs.h
 +
 +         ;;
 +     esac
 +  fi
 +
 +
  fi
  
  for ac_header in sys/select.h sys/timeb.h sys/time.h unistd.h utime.h \
    linux/version.h sys/systeminfo.h termios.h limits.h string.h stdlib.h \
 -  termcap.h stdio_ext.h fcntl.h strings.h coff.h pty.h sys/mman.h \
 +  stdio_ext.h fcntl.h strings.h coff.h pty.h sys/mman.h \
    sys/param.h sys/vlimit.h sys/resource.h locale.h sys/_mbstate_t.h \
 -  sys/utsname.h pwd.h utmp.h
 +  sys/utsname.h pwd.h utmp.h dirent.h util.h
  do :
    as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
  ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
  for ac_header in term.h
  do :
    ac_fn_c_check_header_preproc "$LINENO" "term.h" "ac_cv_header_term_h"
- if test "x$ac_cv_header_term_h" = xyes; then :
+ if test "x$ac_cv_header_term_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_TERM_H 1
  _ACEOF
@@@ -6289,7 -6017,7 +6281,7 @@@ don
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
  $as_echo_n "checking for ANSI C header files... " >&6; }
- if ${ac_cv_header_stdc+:} false; then :
+ if test "${ac_cv_header_stdc+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
  $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
- if ${ac_cv_header_time+:} false; then :
+ if test "${ac_cv_header_time+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -6435,7 -6163,7 +6427,7 @@@ $as_echo "#define TIME_WITH_SYS_TIME 1
  fi
  
  ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default"
- if test "x$ac_cv_have_decl_sys_siglist" = xyes; then :
+ if test "x$ac_cv_have_decl_sys_siglist" = x""yes; then :
    ac_have_decl=1
  else
    ac_have_decl=0
@@@ -6448,7 -6176,7 +6440,7 @@@ _ACEO
  if test $ac_cv_have_decl_sys_siglist != yes; then
    # For Tru64, at least:
    ac_fn_c_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default"
- if test "x$ac_cv_have_decl___sys_siglist" = xyes; then :
+ if test "x$ac_cv_have_decl___sys_siglist" = x""yes; then :
    ac_have_decl=1
  else
    ac_have_decl=0
@@@ -6466,7 -6194,7 +6458,7 @@@ $as_echo "#define sys_siglist __sys_sig
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
  $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
- if ${ac_cv_header_sys_wait_h+:} false; then :
+ if test "${ac_cv_header_sys_wait_h+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct utimbuf" >&5
  $as_echo_n "checking for struct utimbuf... " >&6; }
- if ${emacs_cv_struct_utimbuf+:} false; then :
+ if test "${emacs_cv_struct_utimbuf+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
  $as_echo_n "checking return type of signal handlers... " >&6; }
- if ${ac_cv_type_signal+:} false; then :
+ if test "${ac_cv_type_signal+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -6585,7 -6313,7 +6577,7 @@@ _ACEO
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for speed_t" >&5
  $as_echo_n "checking for speed_t... " >&6; }
- if ${emacs_cv_speed_t+:} false; then :
+ if test "${emacs_cv_speed_t+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5
  $as_echo_n "checking for struct timeval... " >&6; }
- if ${emacs_cv_struct_timeval+:} false; then :
+ if test "${emacs_cv_struct_timeval+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct exception" >&5
  $as_echo_n "checking for struct exception... " >&6; }
- if ${emacs_cv_struct_exception+:} false; then :
+ if test "${emacs_cv_struct_exception+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  for ac_header in sys/socket.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
- if test "x$ac_cv_header_sys_socket_h" = xyes; then :
+ if test "x$ac_cv_header_sys_socket_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_SYS_SOCKET_H 1
  _ACEOF
@@@ -6706,7 -6434,7 +6698,7 @@@ do 
  #include <sys/socket.h>
  #endif
  "
- if test "x$ac_cv_header_net_if_h" = xyes; then :
+ if test "x$ac_cv_header_net_if_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_NET_IF_H 1
  _ACEOF
@@@ -6718,7 -6446,7 +6710,7 @@@ don
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
  $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
- if ${ac_cv_struct_tm+:} false; then :
+ if test "${ac_cv_struct_tm+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -6755,7 -6483,7 +6747,7 @@@ ac_fn_c_check_member "$LINENO" "struct 
  #include <$ac_cv_struct_tm>
  
  "
- if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then :
+ if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_STRUCT_TM_TM_ZONE 1
@@@ -6771,7 -6499,7 +6763,7 @@@ $as_echo "#define HAVE_TM_ZONE 1" >>con
  else
    ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>
  "
- if test "x$ac_cv_have_decl_tzname" = xyes; then :
+ if test "x$ac_cv_have_decl_tzname" = x""yes; then :
    ac_have_decl=1
  else
    ac_have_decl=0
@@@ -6783,7 -6511,7 +6775,7 @@@ _ACEO
  
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5
  $as_echo_n "checking for tzname... " >&6; }
- if ${ac_cv_var_tzname+:} false; then :
+ if test "${ac_cv_var_tzname+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
  "
- if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
+ if test "x$ac_cv_member_struct_tm_tm_gmtoff" = x""yes; then :
  
  $as_echo "#define HAVE_TM_GMTOFF 1" >>confdefs.h
  
@@@ -6834,7 -6562,7 +6826,7 @@@ ac_fn_c_check_member "$LINENO" "struct 
  #include <net/if.h>
  #endif
  "
- if test "x$ac_cv_member_struct_ifreq_ifr_flags" = xyes; then :
+ if test "x$ac_cv_member_struct_ifreq_ifr_flags" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_STRUCT_IFREQ_IFR_FLAGS 1
@@@ -6850,7 -6578,7 +6842,7 @@@ ac_fn_c_check_member "$LINENO" "struct 
  #include <net/if.h>
  #endif
  "
- if test "x$ac_cv_member_struct_ifreq_ifr_hwaddr" = xyes; then :
+ if test "x$ac_cv_member_struct_ifreq_ifr_hwaddr" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_STRUCT_IFREQ_IFR_HWADDR 1
@@@ -6866,7 -6594,7 +6858,7 @@@ ac_fn_c_check_member "$LINENO" "struct 
  #include <net/if.h>
  #endif
  "
- if test "x$ac_cv_member_struct_ifreq_ifr_netmask" = xyes; then :
+ if test "x$ac_cv_member_struct_ifreq_ifr_netmask" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_STRUCT_IFREQ_IFR_NETMASK 1
@@@ -6882,7 -6610,7 +6874,7 @@@ ac_fn_c_check_member "$LINENO" "struct 
  #include <net/if.h>
  #endif
  "
- if test "x$ac_cv_member_struct_ifreq_ifr_broadaddr" = xyes; then :
+ if test "x$ac_cv_member_struct_ifreq_ifr_broadaddr" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_STRUCT_IFREQ_IFR_BROADADDR 1
@@@ -6898,7 -6626,7 +6890,7 @@@ ac_fn_c_check_member "$LINENO" "struct 
  #include <net/if.h>
  #endif
  "
- if test "x$ac_cv_member_struct_ifreq_ifr_addr" = xyes; then :
+ if test "x$ac_cv_member_struct_ifreq_ifr_addr" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_STRUCT_IFREQ_IFR_ADDR 1
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
  $as_echo_n "checking for working volatile... " >&6; }
- if ${ac_cv_c_volatile+:} false; then :
+ if test "${ac_cv_c_volatile+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
  $as_echo_n "checking for an ANSI C-conforming const... " >&6; }
- if ${ac_cv_c_const+:} false; then :
+ if test "${ac_cv_c_const+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for void * support" >&5
  $as_echo_n "checking for void * support... " >&6; }
- if ${emacs_cv_void_star+:} false; then :
+ if test "${emacs_cv_void_star+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  fi
  
- if ${ac_cv_c_bigendian+:} false; then :
 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
++if test "${ac_cv_c_bigendian+set}" = set; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  ac_cv_c_bigendian=unknown
 +    # See if we're dealing with a universal compiler.
 +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +#ifndef __APPLE_CC__
 +             not a universal capable compiler
 +           #endif
 +           typedef int dummy;
 +
 +_ACEOF
 +if ac_fn_c_try_compile "$LINENO"; then :
 +
 +      # Check for potential -arch flags.  It is not universal unless
 +      # there are at least two -arch flags with different values.
 +      ac_arch=
 +      ac_prev=
 +      for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
 +       if test -n "$ac_prev"; then
 +         case $ac_word in
 +           i?86 | x86_64 | ppc | ppc64)
 +             if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
 +               ac_arch=$ac_word
 +             else
 +               ac_cv_c_bigendian=universal
 +               break
 +             fi
 +             ;;
 +         esac
 +         ac_prev=
 +       elif test "x$ac_word" = "x-arch"; then
 +         ac_prev=arch
 +       fi
 +       done
 +fi
 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 +    if test $ac_cv_c_bigendian = unknown; then
 +      # See if sys/param.h defines the BYTE_ORDER macro.
 +      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +#include <sys/types.h>
 +           #include <sys/param.h>
 +
 +int
 +main ()
 +{
 +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
 +                   && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
 +                   && LITTLE_ENDIAN)
 +            bogus endian macros
 +           #endif
 +
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_compile "$LINENO"; then :
 +  # It does; now see whether it defined to BIG_ENDIAN or not.
 +       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +#include <sys/types.h>
 +              #include <sys/param.h>
 +
 +int
 +main ()
 +{
 +#if BYTE_ORDER != BIG_ENDIAN
 +               not big endian
 +              #endif
 +
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_compile "$LINENO"; then :
 +  ac_cv_c_bigendian=yes
 +else
 +  ac_cv_c_bigendian=no
 +fi
 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 +fi
 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 +    fi
 +    if test $ac_cv_c_bigendian = unknown; then
 +      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
 +      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +#include <limits.h>
 +
 +int
 +main ()
 +{
 +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
 +            bogus endian macros
 +           #endif
 +
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_compile "$LINENO"; then :
 +  # It does; now see whether it defined to _BIG_ENDIAN or not.
 +       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +#include <limits.h>
 +
 +int
 +main ()
 +{
 +#ifndef _BIG_ENDIAN
 +               not big endian
 +              #endif
 +
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_compile "$LINENO"; then :
 +  ac_cv_c_bigendian=yes
 +else
 +  ac_cv_c_bigendian=no
 +fi
 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 +fi
 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 +    fi
 +    if test $ac_cv_c_bigendian = unknown; then
 +      # Compile a test program.
 +      if test "$cross_compiling" = yes; then :
 +  # Try to guess by grepping values from an object file.
 +       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +short int ascii_mm[] =
 +                { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
 +              short int ascii_ii[] =
 +                { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
 +              int use_ascii (int i) {
 +                return ascii_mm[i] + ascii_ii[i];
 +              }
 +              short int ebcdic_ii[] =
 +                { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
 +              short int ebcdic_mm[] =
 +                { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
 +              int use_ebcdic (int i) {
 +                return ebcdic_mm[i] + ebcdic_ii[i];
 +              }
 +              extern int foo;
 +
 +int
 +main ()
 +{
 +return use_ascii (foo) == use_ebcdic (foo);
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_compile "$LINENO"; then :
 +  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
 +            ac_cv_c_bigendian=yes
 +          fi
 +          if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
 +            if test "$ac_cv_c_bigendian" = unknown; then
 +              ac_cv_c_bigendian=no
 +            else
 +              # finding both strings is unlikely to happen, but who knows?
 +              ac_cv_c_bigendian=unknown
 +            fi
 +          fi
 +fi
 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 +else
 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +$ac_includes_default
 +int
 +main ()
 +{
 +
 +           /* Are we little or big endian?  From Harbison&Steele.  */
 +           union
 +           {
 +             long int l;
 +             char c[sizeof (long int)];
 +           } u;
 +           u.l = 1;
 +           return u.c[sizeof (long int) - 1] == 1;
 +
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_run "$LINENO"; then :
 +  ac_cv_c_bigendian=no
 +else
 +  ac_cv_c_bigendian=yes
 +fi
 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 +  conftest.$ac_objext conftest.beam conftest.$ac_ext
 +fi
 +
 +    fi
 +fi
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
 +$as_echo "$ac_cv_c_bigendian" >&6; }
 + case $ac_cv_c_bigendian in #(
 +   yes)
 +     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
 +;; #(
 +   no)
 +      ;; #(
 +   universal)
 +
 +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
  
-  presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
 +     ;; #(
 +   *)
 +     as_fn_error $? "unknown endianness
++ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5  ;;
 + esac
  
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
  $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
  set x ${MAKE-make}
  ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
- if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat >conftest.make <<\_ACEOF
@@@ -7329,9 -6835,6 +7321,9 @@@ $as_echo "no" >&6; 
  fi
  
  
 +DEPFLAGS=
 +MKDEPDIR=":"
 +deps_frag=deps.mk
  if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using GNU Make" >&5
  $as_echo_n "checking whether we are using GNU Make... " >&6; }
@@@ -7373,23 -6876,15 +7365,23 @@@ rm -f core conftest.err conftest.$ac_ob
  $as_echo "$ac_enable_autodepend" >&6; }
     fi
     if test $ac_enable_autodepend = yes; then
 -
 -$as_echo "#define AUTO_DEPEND 1" >>confdefs.h
 -
 +      DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d'
 +      ## In parallel builds, another make might create depdir between
 +      ## the first test and mkdir, so stick another test on the end.
 +      ## Or use mkinstalldirs?  mkdir -p is not portable.
 +      MKDEPDIR='test -d ${DEPDIR} || mkdir ${DEPDIR} || test -d ${DEPDIR}'
 +      deps_frag=autodeps.mk
     fi
  fi
 +deps_frag=$srcdir/src/$deps_frag
 +
 +
 +
 +
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long file names" >&5
  $as_echo_n "checking for long file names... " >&6; }
- if ${ac_cv_sys_long_file_names+:} false; then :
+ if test "${ac_cv_sys_long_file_names+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_cv_sys_long_file_names=yes
@@@ -7445,8 -6940,8 +7437,8 @@@ if test "x$with_x" = xno; the
    have_x=disabled
  else
    case $x_includes,$x_libraries in #(
--    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
-     *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
++    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5 ;; #(
+     *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    # One or both of the vars are not set, and there is no cached value.
  ## Workaround for bug in autoconf <= 2.62.
  ## http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01551.html
  ## No need to do anything special for these standard directories.
 -## This is an experiment, take it out if it causes problems.
  if test -n "${x_libraries}" && test x"${x_libraries}" != xNONE; then
  
     x_libraries=`echo :${x_libraries}: | sed -e 's|:/usr/lib64:|:|g' -e 's|:/lib64:|:|g' -e 's|^:||' -e 's|:$||'`
  
  fi
  
 +LD_SWITCH_X_SITE_AUX=
 +LD_SWITCH_X_SITE_AUX_RPATH=
  if test "${x_libraries}" != NONE; then
    if test -n "${x_libraries}"; then
      LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
      LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"`
 +    LD_SWITCH_X_SITE_AUX_RPATH=`echo ${LD_SWITCH_X_SITE_AUX} | sed -e 's/-R/-Wl,-rpath,/'`
    fi
    x_default_search_path=""
    x_search_path=${x_libraries}
@@@ -7667,9 -7160,6 +7659,9 @@@ ${x_library}/X11/%T/%N%S
      fi
    done
  fi
 +
 +
 +
  if test "${x_includes}" != NONE && test -n "${x_includes}"; then
    C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"`
  fi
@@@ -7699,37 -7189,29 +7691,37 @@@ tmp_CPPFLAGS="$CPPFLAGS
  tmp_CFLAGS="$CFLAGS"
  CPPFLAGS="$CPPFLAGS -x objective-c"
  CFLAGS="$CFLAGS -x objective-c"
 +TEMACS_LDFLAGS2="\${LDFLAGS}"
  if test "${with_ns}" != no; then
    if test "${opsys}" = darwin; then
       NS_IMPL_COCOA=yes
       ns_appdir=`pwd`/nextstep/Emacs.app
 -     ns_appbindir=`pwd`/nextstep/Emacs.app/Contents/MacOS
 -     ns_appresdir=`pwd`/nextstep/Emacs.app/Contents/Resources
 +     ns_appbindir=${ns_appdir}/Contents/MacOS/
 +     ns_appresdir=${ns_appdir}/Contents/Resources
       ns_appsrc=${srcdir}/nextstep/Cocoa/Emacs.base
    elif test -f $GNUSTEP_CONFIG_FILE; then
       NS_IMPL_GNUSTEP=yes
       ns_appdir=`pwd`/nextstep/Emacs.app
 -     ns_appbindir=`pwd`/nextstep/Emacs.app
 -     ns_appresdir=`pwd`/nextstep/Emacs.app/Resources
 +     ns_appbindir=${ns_appdir}
 +     ns_appresdir=${ns_appdir}/Resources
       ns_appsrc=${srcdir}/nextstep/GNUstep/Emacs.base
 -          GNUSTEP_MAKEFILES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_MAKEFILES)"
 -     GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
 +          GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
       GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
 -     CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
 -     CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
 -     REAL_CFLAGS="$REAL_CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
 -     LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES}"
 +          GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
 +     GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
 +     test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
 +       GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
 +     test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
 +       GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
 +     CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
 +     CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
 +     LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
 +     LIB_STANDARD=
 +     START_FILES=
 +     TEMACS_LDFLAGS2=
    fi
    ac_fn_c_check_header_mongrel "$LINENO" "AppKit/AppKit.h" "ac_cv_header_AppKit_AppKit_h" "$ac_includes_default"
- if test "x$ac_cv_header_AppKit_AppKit_h" = xyes; then :
+ if test "x$ac_cv_header_AppKit_AppKit_h" = x""yes; then :
    HAVE_NS=yes
  else
    as_fn_error $? "\`--with-ns' was specified, but the include
@@@ -7759,11 -7241,6 +7751,11 @@@ rm -f core conftest.err conftest.$ac_ob
      NS_HAVE_NSINTEGER=no
    fi
  fi
 +
 +
 +ns_frag=/dev/null
 +NS_OBJ=
 +NS_SUPPORT=
  if test "${HAVE_NS}" = yes; then
    window_system=nextstep
    with_xft=no
    if test "${EN_NS_SELF_CONTAINED}" = yes; then
       prefix=${ns_appresdir}
    fi
 +  ns_frag=$srcdir/src/ns.mk
 +  NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o"
 +  NS_SUPPORT="\${lispsource}/emacs-lisp/easymenu.elc \${lispsource}/term/ns-win.elc"
  fi
  CFLAGS="$tmp_CFLAGS"
  CPPFLAGS="$tmp_CPPFLAGS"
  
 +
 +
 +
 +
  case "${window_system}" in
    x11 )
      HAVE_X_WINDOWS=yes
        motif ) USE_X_TOOLKIT=MOTIF ;;
        gtk ) with_gtk=yes
              USE_X_TOOLKIT=none ;;
 +      gtk3 ) with_gtk3=yes
 +             USE_X_TOOLKIT=none ;;
        no ) USE_X_TOOLKIT=none ;;
        * ) USE_X_TOOLKIT=maybe ;;
      esac
@@@ -7811,7 -7279,7 +7803,7 @@@ if test "$window_system" = none && tes
  set dummy X; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_HAVE_XSERVER+:} false; then :
+ if test "${ac_cv_prog_HAVE_XSERVER+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$HAVE_XSERVER"; then
  GNU_MALLOC=yes
  doug_lea_malloc=yes
  ac_fn_c_check_func "$LINENO" "malloc_get_state" "ac_cv_func_malloc_get_state"
- if test "x$ac_cv_func_malloc_get_state" = xyes; then :
+ if test "x$ac_cv_func_malloc_get_state" = x""yes; then :
  
  else
    doug_lea_malloc=no
  fi
  
  ac_fn_c_check_func "$LINENO" "malloc_set_state" "ac_cv_func_malloc_set_state"
- if test "x$ac_cv_func_malloc_set_state" = xyes; then :
+ if test "x$ac_cv_func_malloc_set_state" = x""yes; then :
  
  else
    doug_lea_malloc=no
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __after_morecore_hook exists" >&5
  $as_echo_n "checking whether __after_morecore_hook exists... " >&6; }
- if ${emacs_cv_var___after_morecore_hook+:} false; then :
+ if test "${emacs_cv_var___after_morecore_hook+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -7912,30 -7380,11 +7904,30 @@@ $as_echo "$emacs_cv_var___after_morecor
  if test $emacs_cv_var___after_morecore_hook = no; then
    doug_lea_malloc=no
  fi
 +
 +
 +system_malloc=no
 +case "$opsys" in
 +  ## darwin ld insists on the use of malloc routines in the System framework.
 +  darwin|sol2-10) system_malloc=yes ;;
 +esac
 +
  if test "${system_malloc}" = "yes"; then
 +
 +$as_echo "#define SYSTEM_MALLOC 1" >>confdefs.h
 +
    GNU_MALLOC=no
    GNU_MALLOC_reason="
      (The GNU allocators don't work with this system configuration.)"
 +  GMALLOC_OBJ=
 +  VMLIMIT_OBJ=
 +else
 +  test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
 +  VMLIMIT_OBJ=vm-limit.o
  fi
 +
 +
 +
  if test "$doug_lea_malloc" = "yes" ; then
    if test "$GNU_MALLOC" = yes ; then
      GNU_MALLOC_reason="
  
  $as_echo "#define DOUG_LEA_MALLOC 1" >>confdefs.h
  
 +
 +  ## Use mmap directly for allocating larger buffers.
 +  ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
 +  ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
 +  ## Does the AC_FUNC_MMAP test below make this check unecessary?
 +  case "$opsys" in
 +    gnu*) REL_ALLOC=no ;;
 +  esac
  fi
  
  if test x"${REL_ALLOC}" = x; then
    REL_ALLOC=${GNU_MALLOC}
  fi
  
 +use_mmap_for_buffers=no
 +case "$opsys" in
 +  freebsd|irix6-5) use_mmap_for_buffers=yes ;;
 +esac
  
  
  
@@@ -7990,7 -7427,7 +7982,7 @@@ don
  for ac_func in getpagesize
  do :
    ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
- if test "x$ac_cv_func_getpagesize" = xyes; then :
+ if test "x$ac_cv_func_getpagesize" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_GETPAGESIZE 1
  _ACEOF
@@@ -8000,7 -7437,7 +7992,7 @@@ don
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
  $as_echo_n "checking for working mmap... " >&6; }
- if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
+ if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test "$cross_compiling" = yes; then :
  rm -f conftest.mmap conftest.txt
  
  if test $use_mmap_for_buffers = yes; then
 +
 +$as_echo "#define USE_MMAP_FOR_BUFFERS 1" >>confdefs.h
 +
    REL_ALLOC=no
  fi
  
 -LIBS="$libsrc_libs $LIBS"
 +LIBS="$LIBS_SYSTEM $LIBS"
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
  $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
- if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+ if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -8209,7 -7643,7 +8201,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
  $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
- if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+ if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBDNET 1
  _ACEOF
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lXbsd" >&5
  $as_echo_n "checking for main in -lXbsd... " >&6; }
- if ${ac_cv_lib_Xbsd_main+:} false; then :
+ if test "${ac_cv_lib_Xbsd_main+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -8249,14 -7683,14 +8241,14 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xbsd_main" >&5
  $as_echo "$ac_cv_lib_Xbsd_main" >&6; }
- if test "x$ac_cv_lib_Xbsd_main" = xyes; then :
+ if test "x$ac_cv_lib_Xbsd_main" = x""yes; then :
    LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd"
  fi
  
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cma_open in -lpthreads" >&5
  $as_echo_n "checking for cma_open in -lpthreads... " >&6; }
- if ${ac_cv_lib_pthreads_cma_open+:} false; then :
+ if test "${ac_cv_lib_pthreads_cma_open+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -8290,7 -7724,7 +8282,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_cma_open" >&5
  $as_echo "$ac_cv_lib_pthreads_cma_open" >&6; }
- if test "x$ac_cv_lib_pthreads_cma_open" = xyes; then :
+ if test "x$ac_cv_lib_pthreads_cma_open" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBPTHREADS 1
  _ACEOF
  fi
  
  
 +## 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"
 +
  
  case ${host_os} in
  aix*)
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -bbigtoc option" >&5
  $as_echo_n "checking for -bbigtoc option... " >&6; }
- if ${gdb_cv_bigtoc+:} false; then :
+ if test "${gdb_cv_bigtoc+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
  
  # used for the tests that follow.  We set them back to REAL_CFLAGS and
  # REAL_CPPFLAGS later on.
  
 +REAL_CFLAGS="$CFLAGS"
  REAL_CPPFLAGS="$CPPFLAGS"
  
  if test "${HAVE_X11}" = "yes"; then
    DEFS="$C_SWITCH_X_SITE $DEFS"
    LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
 -  LIBS="$LIBX $LIBS"
 +  LIBS="-lX11 $LIBS"
    CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
    CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
  
  if test "${window_system}" = "x11"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking X11 version 6" >&5
  $as_echo_n "checking X11 version 6... " >&6; }
-   if ${emacs_cv_x11_version_6+:} false; then :
+   if test "${emacs_cv_x11_version_6+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -8523,18 -7944,6 +8515,18 @@@ $as_echo "6 or newer" >&6; 
  
  $as_echo "#define HAVE_X11R6 1" >>confdefs.h
  
 +
 +$as_echo "#define HAVE_X_I18N 1" >>confdefs.h
 +
 +    ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
 +    ## XIM support.
 +    case "$opsys" in
 +      sol2-*) : ;;
 +      *)
 +$as_echo "#define HAVE_X11R6_XIM 1" >>confdefs.h
 +
 +         ;;
 +    esac
    else
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: before 6" >&5
  $as_echo "before 6" >&6; }
@@@ -8556,7 -7965,7 +8548,7 @@@ if test "${HAVE_X11}" = "yes" || test "
  set dummy pkg-config; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $PKG_CONFIG in
@@@ -8638,7 -8047,7 +8630,7 @@@ $as_echo "no" >&6; 
    fi
  
    if test $succeeded = yes; then
 -     :
 +     HAVE_RSVG=yes
    else
       :
    fi
  
  
  
 -    if test ".${RSVG_CFLAGS}" != "."; then
 -      HAVE_RSVG=yes
 +    if test $HAVE_RSVG = yes; then
  
  $as_echo "#define HAVE_RSVG 1" >>confdefs.h
  
    fi
  fi
  
 -
 -HAVE_GTK=no
 -if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
 -  GLIB_REQUIRED=2.6
 -  GTK_REQUIRED=2.6
 -  GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
 -
 +HAVE_IMAGEMAGICK=no
 +if test "${HAVE_X11}" = "yes"; then
 +  if test "${with_imagemagick}" != "no"; then
 +    IMAGEMAGICK_MODULE="Wand"
  
    succeeded=no
  
  set dummy pkg-config; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $PKG_CONFIG in
  
  
    if test "$PKG_CONFIG" = "no" ; then
 -     pkg_check_gtk=no
 +     :
    else
       PKG_CONFIG_MIN_VERSION=0.9.0
       if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
 -        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GTK_MODULES" >&5
 -$as_echo_n "checking for $GTK_MODULES... " >&6; }
 +        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $IMAGEMAGICK_MODULE" >&5
 +$as_echo_n "checking for $IMAGEMAGICK_MODULE... " >&6; }
  
 -        if $PKG_CONFIG --exists "$GTK_MODULES" 2>&5; then
 +        if $PKG_CONFIG --exists "$IMAGEMAGICK_MODULE" 2>&5; then
              { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
  $as_echo "yes" >&6; }
              succeeded=yes
  
 -            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GTK_CFLAGS" >&5
 -$as_echo_n "checking GTK_CFLAGS... " >&6; }
 -            GTK_CFLAGS=`$PKG_CONFIG --cflags "$GTK_MODULES"|sed -e 's,///*,/,g'`
 -            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_CFLAGS" >&5
 -$as_echo "$GTK_CFLAGS" >&6; }
 -
 -            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GTK_LIBS" >&5
 -$as_echo_n "checking GTK_LIBS... " >&6; }
 -            GTK_LIBS=`$PKG_CONFIG --libs "$GTK_MODULES"|sed -e 's,///*,/,g'`
 -            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_LIBS" >&5
 -$as_echo "$GTK_LIBS" >&6; }
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking IMAGEMAGICK_CFLAGS" >&5
 +$as_echo_n "checking IMAGEMAGICK_CFLAGS... " >&6; }
 +            IMAGEMAGICK_CFLAGS=`$PKG_CONFIG --cflags "$IMAGEMAGICK_MODULE"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IMAGEMAGICK_CFLAGS" >&5
 +$as_echo "$IMAGEMAGICK_CFLAGS" >&6; }
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking IMAGEMAGICK_LIBS" >&5
 +$as_echo_n "checking IMAGEMAGICK_LIBS... " >&6; }
 +            IMAGEMAGICK_LIBS=`$PKG_CONFIG --libs "$IMAGEMAGICK_MODULE"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IMAGEMAGICK_LIBS" >&5
 +$as_echo "$IMAGEMAGICK_LIBS" >&6; }
          else
              { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
  $as_echo "no" >&6; }
 -            GTK_CFLAGS=""
 -            GTK_LIBS=""
 +            IMAGEMAGICK_CFLAGS=""
 +            IMAGEMAGICK_LIBS=""
              ## If we have a custom action on failure, don't print errors, but
              ## do set a variable so people can do so.
 -            GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GTK_MODULES"`
 +            IMAGEMAGICK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$IMAGEMAGICK_MODULE"`
  
          fi
  
    fi
  
    if test $succeeded = yes; then
 -     pkg_check_gtk=yes
 +     HAVE_IMAGEMAGICK=yes
    else
 -     pkg_check_gtk=no
 +     :
    fi
  
 -  if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
 -     as_fn_error $? "$GTK_PKG_ERRORS" "$LINENO" 5
 -  fi
 -fi
  
  
 -if test x"$pkg_check_gtk" = xyes; then
  
 +    if test $HAVE_IMAGEMAGICK = yes; then
  
 +$as_echo "#define HAVE_IMAGEMAGICK 1" >>confdefs.h
  
 -  C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
 -  CFLAGS="$CFLAGS $GTK_CFLAGS"
 -  LIBS="$GTK_LIBS $LIBS"
 -    GTK_COMPILES=no
 -  for ac_func in gtk_main
 +      CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
 +      LIBS="$IMAGEMAGICK_LIBS $LIBS"
 +      for ac_func in MagickExportImagePixels
  do :
 -  ac_fn_c_check_func "$LINENO" "gtk_main" "ac_cv_func_gtk_main"
 -if test "x$ac_cv_func_gtk_main" = x""yes; then :
 +  ac_fn_c_check_func "$LINENO" "MagickExportImagePixels" "ac_cv_func_MagickExportImagePixels"
- if test "x$ac_cv_func_MagickExportImagePixels" = xyes; then :
++if test "x$ac_cv_func_MagickExportImagePixels" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
 -#define HAVE_GTK_MAIN 1
 +#define HAVE_MAGICKEXPORTIMAGEPIXELS 1
  _ACEOF
 - GTK_COMPILES=yes
 +
 +fi
 +done
 +
 +    fi
 +  fi
 +fi
 +
 +
 +HAVE_GTK=no
 +if test "${with_gtk3}" = "yes"; then
 +  GLIB_REQUIRED=2.6
 +  GTK_REQUIRED=2.90
 +  GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
 +
 +
 +  succeeded=no
 +
 +  # Extract the first word of "pkg-config", so it can be a program name with args.
 +set dummy pkg-config; ac_word=$2
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 +$as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  case $PKG_CONFIG in
 +  [\\/]* | ?:[\\/]*)
 +  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
 +  ;;
 +  *)
 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 +for as_dir in $PATH
 +do
 +  IFS=$as_save_IFS
 +  test -z "$as_dir" && as_dir=.
 +    for ac_exec_ext in '' $ac_executable_extensions; do
 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
 +    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
 +    break 2
 +  fi
 +done
 +  done
 +IFS=$as_save_IFS
 +
 +  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
 +  ;;
 +esac
 +fi
 +PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 +if test -n "$PKG_CONFIG"; then
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
 +$as_echo "$PKG_CONFIG" >&6; }
 +else
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +fi
 +
 +
 +
 +  if test "$PKG_CONFIG" = "no" ; then
 +     pkg_check_gtk=no
 +  else
 +     PKG_CONFIG_MIN_VERSION=0.9.0
 +     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
 +        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GTK_MODULES" >&5
 +$as_echo_n "checking for $GTK_MODULES... " >&6; }
 +
 +        if $PKG_CONFIG --exists "$GTK_MODULES" 2>&5; then
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 +$as_echo "yes" >&6; }
 +            succeeded=yes
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GTK_CFLAGS" >&5
 +$as_echo_n "checking GTK_CFLAGS... " >&6; }
 +            GTK_CFLAGS=`$PKG_CONFIG --cflags "$GTK_MODULES"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_CFLAGS" >&5
 +$as_echo "$GTK_CFLAGS" >&6; }
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GTK_LIBS" >&5
 +$as_echo_n "checking GTK_LIBS... " >&6; }
 +            GTK_LIBS=`$PKG_CONFIG --libs "$GTK_MODULES"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_LIBS" >&5
 +$as_echo "$GTK_LIBS" >&6; }
 +        else
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +            GTK_CFLAGS=""
 +            GTK_LIBS=""
 +            ## If we have a custom action on failure, don't print errors, but
 +            ## do set a variable so people can do so.
 +            GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GTK_MODULES"`
 +
 +        fi
 +
 +
 +
 +     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
 +     pkg_check_gtk=yes
 +  else
 +     pkg_check_gtk=no
 +  fi
 +
 +  if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
 +     as_fn_error $? "$GTK_PKG_ERRORS" "$LINENO" 5
 +  fi
 +fi
 +
 +if test "$pkg_check_gtk" != "yes"; then
 +  HAVE_GTK=no
 +if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
 +  GLIB_REQUIRED=2.6
 +  GTK_REQUIRED=2.6
 +  GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
 +
 +
 +  succeeded=no
 +
 +  # Extract the first word of "pkg-config", so it can be a program name with args.
 +set dummy pkg-config; ac_word=$2
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 +$as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  case $PKG_CONFIG in
 +  [\\/]* | ?:[\\/]*)
 +  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
 +  ;;
 +  *)
 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 +for as_dir in $PATH
 +do
 +  IFS=$as_save_IFS
 +  test -z "$as_dir" && as_dir=.
 +    for ac_exec_ext in '' $ac_executable_extensions; do
 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
 +    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
 +    break 2
 +  fi
 +done
 +  done
 +IFS=$as_save_IFS
 +
 +  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
 +  ;;
 +esac
 +fi
 +PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 +if test -n "$PKG_CONFIG"; then
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
 +$as_echo "$PKG_CONFIG" >&6; }
 +else
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +fi
 +
 +
 +
 +  if test "$PKG_CONFIG" = "no" ; then
 +     pkg_check_gtk=no
 +  else
 +     PKG_CONFIG_MIN_VERSION=0.9.0
 +     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
 +        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GTK_MODULES" >&5
 +$as_echo_n "checking for $GTK_MODULES... " >&6; }
 +
 +        if $PKG_CONFIG --exists "$GTK_MODULES" 2>&5; then
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 +$as_echo "yes" >&6; }
 +            succeeded=yes
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GTK_CFLAGS" >&5
 +$as_echo_n "checking GTK_CFLAGS... " >&6; }
 +            GTK_CFLAGS=`$PKG_CONFIG --cflags "$GTK_MODULES"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_CFLAGS" >&5
 +$as_echo "$GTK_CFLAGS" >&6; }
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GTK_LIBS" >&5
 +$as_echo_n "checking GTK_LIBS... " >&6; }
 +            GTK_LIBS=`$PKG_CONFIG --libs "$GTK_MODULES"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_LIBS" >&5
 +$as_echo "$GTK_LIBS" >&6; }
 +        else
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +            GTK_CFLAGS=""
 +            GTK_LIBS=""
 +            ## If we have a custom action on failure, don't print errors, but
 +            ## do set a variable so people can do so.
 +            GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GTK_MODULES"`
 +
 +        fi
 +
 +
 +
 +     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
 +     pkg_check_gtk=yes
 +  else
 +     pkg_check_gtk=no
 +  fi
 +
 +  if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
 +     as_fn_error $? "$GTK_PKG_ERRORS" "$LINENO" 5
 +  fi
 +fi
 +fi
 +
 +GTK_OBJ=
 +if test x"$pkg_check_gtk" = xyes; then
 +
 +
 +
 +  C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
 +  CFLAGS="$CFLAGS $GTK_CFLAGS"
 +  LIBS="$GTK_LIBS $LIBS"
 +    GTK_COMPILES=no
 +  for ac_func in gtk_main
 +do :
 +  ac_fn_c_check_func "$LINENO" "gtk_main" "ac_cv_func_gtk_main"
- if test "x$ac_cv_func_gtk_main" = xyes; then :
++if test "x$ac_cv_func_gtk_main" = x""yes; then :
 +  cat >>confdefs.h <<_ACEOF
 +#define HAVE_GTK_MAIN 1
 +_ACEOF
 + GTK_COMPILES=yes
  fi
  done
  
    if test "${GTK_COMPILES}" != "yes"; then
      if test "$USE_X_TOOLKIT" != "maybe"; then
--      as_fn_error $? "Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?" "$LINENO" 5;
++      as_fn_error $? "Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?" "$LINENO" 5 ;
      fi
    else
      HAVE_GTK=yes
  
  $as_echo "#define USE_GTK 1" >>confdefs.h
  
 +    GTK_OBJ=gtkutil.o
      USE_X_TOOLKIT=none
      if $PKG_CONFIG --atleast-version=2.10 gtk+-2.0; then
        :
@@@ -9040,18 -8220,35 +9032,18 @@@ $as_echo "$as_me: WARNING: Your versio
  fi
  
  
 +
  if test "${HAVE_GTK}" = "yes"; then
  
        if test "$with_toolkit_scroll_bars" != no; then
      with_toolkit_scroll_bars=yes
 -  fi
 -
 -      HAVE_GTK_MULTIDISPLAY=no
 -  for ac_func in gdk_display_open
 -do :
 -  ac_fn_c_check_func "$LINENO" "gdk_display_open" "ac_cv_func_gdk_display_open"
 -if test "x$ac_cv_func_gdk_display_open" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_GDK_DISPLAY_OPEN 1
 -_ACEOF
 - HAVE_GTK_MULTIDISPLAY=yes
 -fi
 -done
 -
 -  if test "${HAVE_GTK_MULTIDISPLAY}" = "yes"; then
 -
 -$as_echo "#define HAVE_GTK_MULTIDISPLAY 1" >>confdefs.h
 -
    fi
  
            HAVE_GTK_FILE_SELECTION=no
    ac_fn_c_check_decl "$LINENO" "GTK_TYPE_FILE_SELECTION" "ac_cv_have_decl_GTK_TYPE_FILE_SELECTION" "$ac_includes_default
  #include <gtk/gtk.h>
  "
- if test "x$ac_cv_have_decl_GTK_TYPE_FILE_SELECTION" = xyes; then :
+ if test "x$ac_cv_have_decl_GTK_TYPE_FILE_SELECTION" = x""yes; then :
    HAVE_GTK_FILE_SELECTION=yes
  else
    HAVE_GTK_FILE_SELECTION=no
      for ac_func in gtk_file_selection_new
  do :
    ac_fn_c_check_func "$LINENO" "gtk_file_selection_new" "ac_cv_func_gtk_file_selection_new"
- if test "x$ac_cv_func_gtk_file_selection_new" = xyes; then :
+ if test "x$ac_cv_func_gtk_file_selection_new" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_GTK_FILE_SELECTION_NEW 1
  _ACEOF
 - HAVE_GTK_FILE_SELECTION=yes
 -else
 -  HAVE_GTK_FILE_SELECTION=no
 -fi
 -done
  
 -  fi
 -
 -    HAVE_GTK_FILE_CHOOSER=no
 -  ac_fn_c_check_decl "$LINENO" "GTK_TYPE_FILE_CHOOSER" "ac_cv_have_decl_GTK_TYPE_FILE_CHOOSER" "$ac_includes_default
 -#include <gtk/gtk.h>
 -"
 -if test "x$ac_cv_have_decl_GTK_TYPE_FILE_CHOOSER" = x""yes; then :
 -  HAVE_GTK_FILE_CHOOSER=yes
 -else
 -  HAVE_GTK_FILE_CHOOSER=no
 -fi
 -
 -  if test "$HAVE_GTK_FILE_CHOOSER" = yes; then
 -    for ac_func in gtk_file_chooser_dialog_new
 -do :
 -  ac_fn_c_check_func "$LINENO" "gtk_file_chooser_dialog_new" "ac_cv_func_gtk_file_chooser_dialog_new"
 -if test "x$ac_cv_func_gtk_file_chooser_dialog_new" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_GTK_FILE_CHOOSER_DIALOG_NEW 1
 -_ACEOF
 - HAVE_GTK_FILE_CHOOSER=yes
 -else
 -  HAVE_GTK_FILE_CHOOSER=no
  fi
  done
  
    fi
  
 -  if test "$HAVE_GTK_FILE_SELECTION" = yes \
 -     && test "$HAVE_GTK_FILE_CHOOSER" = yes;  then
 -
 -$as_echo "#define HAVE_GTK_FILE_BOTH 1" >>confdefs.h
 -
 -  fi
 -
 -      if test "$HAVE_GTK_FILE_CHOOSER" = yes; then
 -    HAVE_GTK_AND_PTHREAD=no
 +        HAVE_GTK_AND_PTHREAD=no
      for ac_header in pthread.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
- if test "x$ac_cv_header_pthread_h" = xyes; then :
+ if test "x$ac_cv_header_pthread_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_PTHREAD_H 1
  _ACEOF
@@@ -9087,7 -8320,7 +9079,7 @@@ don
      if test "$ac_cv_header_pthread_h"; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_self in -lpthread" >&5
  $as_echo_n "checking for pthread_self in -lpthread... " >&6; }
- if ${ac_cv_lib_pthread_pthread_self+:} false; then :
+ if test "${ac_cv_lib_pthread_pthread_self+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -9121,7 -8354,7 +9113,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_self" >&5
  $as_echo "$ac_cv_lib_pthread_pthread_self" >&6; }
- if test "x$ac_cv_lib_pthread_pthread_self" = xyes; then :
+ if test "x$ac_cv_lib_pthread_pthread_self" = x""yes; then :
    HAVE_GTK_AND_PTHREAD=yes
  fi
  
  $as_echo "#define HAVE_GTK_AND_PTHREAD 1" >>confdefs.h
  
      fi
 -  fi
 +
 +    for ac_func in gtk_widget_get_window gtk_widget_set_has_window \
 +                 gtk_dialog_get_action_area gtk_widget_get_sensitive \
 +                 gtk_widget_get_mapped gtk_adjustment_get_page_size \
 +                 gtk_orientable_set_orientation
 +do :
 +  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 +if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
 +  cat >>confdefs.h <<_ACEOF
 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 +_ACEOF
 +
 +fi
 +done
 +
 +
  fi
  
  HAVE_DBUS=no
 +DBUS_OBJ=
  if test "${with_dbus}" = "yes"; then
  
    succeeded=no
  set dummy pkg-config; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $PKG_CONFIG in
@@@ -9259,178 -8475,19 +9251,178 @@@ $as_echo "#define HAVE_DBUS 1" >>confde
       for ac_func in dbus_watch_get_unix_fd
  do :
    ac_fn_c_check_func "$LINENO" "dbus_watch_get_unix_fd" "ac_cv_func_dbus_watch_get_unix_fd"
- if test "x$ac_cv_func_dbus_watch_get_unix_fd" = xyes; then :
+ if test "x$ac_cv_func_dbus_watch_get_unix_fd" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_DBUS_WATCH_GET_UNIX_FD 1
  _ACEOF
  
 -fi
 -done
 +fi
 +done
 +
 +     DBUS_OBJ=dbusbind.o
 +   fi
 +fi
 +
 +
 +HAVE_GCONF=no
 +if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
 +
 +  succeeded=no
 +
 +  # Extract the first word of "pkg-config", so it can be a program name with args.
 +set dummy pkg-config; ac_word=$2
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 +$as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  case $PKG_CONFIG in
 +  [\\/]* | ?:[\\/]*)
 +  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
 +  ;;
 +  *)
 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 +for as_dir in $PATH
 +do
 +  IFS=$as_save_IFS
 +  test -z "$as_dir" && as_dir=.
 +    for ac_exec_ext in '' $ac_executable_extensions; do
 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
 +    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
 +    break 2
 +  fi
 +done
 +  done
 +IFS=$as_save_IFS
 +
 +  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
 +  ;;
 +esac
 +fi
 +PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 +if test -n "$PKG_CONFIG"; then
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
 +$as_echo "$PKG_CONFIG" >&6; }
 +else
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +fi
 +
 +
 +
 +  if test "$PKG_CONFIG" = "no" ; then
 +     HAVE_GCONF=no
 +  else
 +     PKG_CONFIG_MIN_VERSION=0.9.0
 +     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
 +        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gconf-2.0 >= 2.13" >&5
 +$as_echo_n "checking for gconf-2.0 >= 2.13... " >&6; }
 +
 +        if $PKG_CONFIG --exists "gconf-2.0 >= 2.13" 2>&5; then
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 +$as_echo "yes" >&6; }
 +            succeeded=yes
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GCONF_CFLAGS" >&5
 +$as_echo_n "checking GCONF_CFLAGS... " >&6; }
 +            GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0 >= 2.13"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCONF_CFLAGS" >&5
 +$as_echo "$GCONF_CFLAGS" >&6; }
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GCONF_LIBS" >&5
 +$as_echo_n "checking GCONF_LIBS... " >&6; }
 +            GCONF_LIBS=`$PKG_CONFIG --libs "gconf-2.0 >= 2.13"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCONF_LIBS" >&5
 +$as_echo "$GCONF_LIBS" >&6; }
 +        else
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +            GCONF_CFLAGS=""
 +            GCONF_LIBS=""
 +            ## If we have a custom action on failure, don't print errors, but
 +            ## do set a variable so people can do so.
 +            GCONF_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gconf-2.0 >= 2.13"`
 +
 +        fi
 +
 +
 +
 +     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
 +     HAVE_GCONF=yes
 +  else
 +     HAVE_GCONF=no
 +  fi
 +
 +   if test "$HAVE_GCONF" = yes; then
 +
 +$as_echo "#define HAVE_GCONF 1" >>confdefs.h
 +
 +   fi
 +fi
 +
 +HAVE_LIBSELINUX=no
 +LIBSELINUX_LIBS=
 +if test "${with_selinux}" = "yes"; then
 +   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lgetfilecon in -lselinux" >&5
 +$as_echo_n "checking for lgetfilecon in -lselinux... " >&6; }
- if ${ac_cv_lib_selinux_lgetfilecon+:} false; then :
++if test "${ac_cv_lib_selinux_lgetfilecon+set}" = set; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  ac_check_lib_save_LIBS=$LIBS
 +LIBS="-lselinux  $LIBS"
 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +
 +/* Override any GCC internal prototype to avoid an error.
 +   Use char because int might match the return type of a GCC
 +   builtin and then its argument prototype would still apply.  */
 +#ifdef __cplusplus
 +extern "C"
 +#endif
 +char lgetfilecon ();
 +int
 +main ()
 +{
 +return lgetfilecon ();
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_link "$LINENO"; then :
 +  ac_cv_lib_selinux_lgetfilecon=yes
 +else
 +  ac_cv_lib_selinux_lgetfilecon=no
 +fi
 +rm -f core conftest.err conftest.$ac_objext \
 +    conftest$ac_exeext conftest.$ac_ext
 +LIBS=$ac_check_lib_save_LIBS
 +fi
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_lgetfilecon" >&5
 +$as_echo "$ac_cv_lib_selinux_lgetfilecon" >&6; }
- if test "x$ac_cv_lib_selinux_lgetfilecon" = xyes; then :
++if test "x$ac_cv_lib_selinux_lgetfilecon" = x""yes; then :
 +  HAVE_LIBSELINUX=yes
 +else
 +  HAVE_LIBSELINUX=no
 +fi
 +
 +   if test "$HAVE_LIBSELINUX" = yes; then
 +
 +$as_echo "#define HAVE_LIBSELINUX 1" >>confdefs.h
  
 +      LIBSELINUX_LIBS=-lselinux
     fi
  fi
  
 -HAVE_GCONF=no
 -if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
 +
 +HAVE_GNUTLS=no
 +if test "${with_gnutls}" = "yes" ; then
  
    succeeded=no
  
  set dummy pkg-config; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $PKG_CONFIG in
  
  
    if test "$PKG_CONFIG" = "no" ; then
 -     HAVE_GCONF=no
 +     HAVE_GNUTLS=no
    else
       PKG_CONFIG_MIN_VERSION=0.9.0
       if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
 -        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gconf-2.0 >= 2.13" >&5
 -$as_echo_n "checking for gconf-2.0 >= 2.13... " >&6; }
 +        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnutls >= 2.2.4" >&5
 +$as_echo_n "checking for gnutls >= 2.2.4... " >&6; }
  
 -        if $PKG_CONFIG --exists "gconf-2.0 >= 2.13" 2>&5; then
 +        if $PKG_CONFIG --exists "gnutls >= 2.2.4" 2>&5; then
              { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
  $as_echo "yes" >&6; }
              succeeded=yes
  
 -            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GCONF_CFLAGS" >&5
 -$as_echo_n "checking GCONF_CFLAGS... " >&6; }
 -            GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0 >= 2.13"|sed -e 's,///*,/,g'`
 -            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCONF_CFLAGS" >&5
 -$as_echo "$GCONF_CFLAGS" >&6; }
 -
 -            { $as_echo "$as_me:${as_lineno-$LINENO}: checking GCONF_LIBS" >&5
 -$as_echo_n "checking GCONF_LIBS... " >&6; }
 -            GCONF_LIBS=`$PKG_CONFIG --libs "gconf-2.0 >= 2.13"|sed -e 's,///*,/,g'`
 -            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCONF_LIBS" >&5
 -$as_echo "$GCONF_LIBS" >&6; }
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBGNUTLS_CFLAGS" >&5
 +$as_echo_n "checking LIBGNUTLS_CFLAGS... " >&6; }
 +            LIBGNUTLS_CFLAGS=`$PKG_CONFIG --cflags "gnutls >= 2.2.4"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBGNUTLS_CFLAGS" >&5
 +$as_echo "$LIBGNUTLS_CFLAGS" >&6; }
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBGNUTLS_LIBS" >&5
 +$as_echo_n "checking LIBGNUTLS_LIBS... " >&6; }
 +            LIBGNUTLS_LIBS=`$PKG_CONFIG --libs "gnutls >= 2.2.4"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBGNUTLS_LIBS" >&5
 +$as_echo "$LIBGNUTLS_LIBS" >&6; }
          else
              { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
  $as_echo "no" >&6; }
 -            GCONF_CFLAGS=""
 -            GCONF_LIBS=""
 +            LIBGNUTLS_CFLAGS=""
 +            LIBGNUTLS_LIBS=""
              ## If we have a custom action on failure, don't print errors, but
              ## do set a variable so people can do so.
 -            GCONF_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gconf-2.0 >= 2.13"`
 +            LIBGNUTLS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gnutls >= 2.2.4"`
  
          fi
  
    fi
  
    if test $succeeded = yes; then
 -     HAVE_GCONF=yes
 +     HAVE_GNUTLS=yes
    else
 -     HAVE_GCONF=no
 +     HAVE_GNUTLS=no
    fi
  
 -   if test "$HAVE_GCONF" = yes; then
 +  if test "${HAVE_GNUTLS}" = "yes"; then
  
 -$as_echo "#define HAVE_GCONF 1" >>confdefs.h
 +$as_echo "#define HAVE_GNUTLS 1" >>confdefs.h
  
 -   fi
 +  fi
  fi
  
 +
 +
  HAVE_XAW3D=no
 +LUCID_LIBW=
  if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
    if test "$with_xaw3d" != no; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xaw3d" >&5
  $as_echo_n "checking for xaw3d... " >&6; }
-     if ${emacs_cv_xaw3d+:} false; then :
+     if test "${emacs_cv_xaw3d+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  $as_echo "yes; using Lucid toolkit" >&6; }
      USE_X_TOOLKIT=LUCID
      HAVE_XAW3D=yes
 +    LUCID_LIBW=-lXaw3d
  
  $as_echo "#define HAVE_XAW3D 1" >>confdefs.h
  
  $as_echo "no" >&6; }
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libXaw" >&5
  $as_echo_n "checking for libXaw... " >&6; }
-     if ${emacs_cv_xaw+:} false; then :
+     if test "${emacs_cv_xaw+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; using Lucid toolkit" >&5
  $as_echo "yes; using Lucid toolkit" >&6; }
        USE_X_TOOLKIT=LUCID
 +      LUCID_LIBW=-lXaw
      elif test x"${USE_X_TOOLKIT}" = xLUCID; then
        as_fn_error $? "Lucid toolkit requires X11/Xaw include files" "$LINENO" 5
      else
  
  X_TOOLKIT_TYPE=$USE_X_TOOLKIT
  
 +LIBXTR6=
  if test "${USE_X_TOOLKIT}" != "none"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking X11 toolkit version" >&5
  $as_echo_n "checking X11 toolkit version... " >&6; }
-   if ${emacs_cv_x11_toolkit_version_6+:} false; then :
+   if test "${emacs_cv_x11_toolkit_version_6+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -9661,11 -8712,6 +9653,11 @@@ $as_echo "6 or newer" >&6; 
  
  $as_echo "#define HAVE_X11XTR6 1" >>confdefs.h
  
 +    LIBXTR6="-lSM -lICE"
 +    case "$opsys" in
 +      ## Use libw.a along with X11R6 Xt.
 +      unixware) LIBXTR6="$LIBXTR6 -lw" ;;
 +    esac
    else
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: before 6" >&5
  $as_echo "before 6" >&6; }
    fi
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XmuConvertStandardSelection in -lXmu" >&5
  $as_echo_n "checking for XmuConvertStandardSelection in -lXmu... " >&6; }
- if ${ac_cv_lib_Xmu_XmuConvertStandardSelection+:} false; then :
+ if test "${ac_cv_lib_Xmu_XmuConvertStandardSelection+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -9713,7 -8759,7 +9705,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xmu_XmuConvertStandardSelection" >&5
  $as_echo "$ac_cv_lib_Xmu_XmuConvertStandardSelection" >&6; }
- if test "x$ac_cv_lib_Xmu_XmuConvertStandardSelection" = xyes; then :
+ if test "x$ac_cv_lib_Xmu_XmuConvertStandardSelection" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBXMU 1
  _ACEOF
    test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
  fi
  
 +
 +LIBXMU=-lXmu
 +case "$machine" in
 +  ## These machines don't supply Xmu.
 +  hpux* | aix4-2 )
 +    test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
 +    ;;
 +esac
 +
 +
  # 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
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XShapeQueryExtension in -lXext" >&5
  $as_echo_n "checking for XShapeQueryExtension in -lXext... " >&6; }
- if ${ac_cv_lib_Xext_XShapeQueryExtension+:} false; then :
+ if test "${ac_cv_lib_Xext_XShapeQueryExtension+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -9774,7 -8810,7 +9766,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5
  $as_echo "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; }
- if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = xyes; then :
+ if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBXEXT 1
  _ACEOF
    fi
  fi
  
 +LIBXP=
  if test "${USE_X_TOOLKIT}" = "MOTIF"; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Motif version 2.1" >&5
  $as_echo_n "checking for Motif version 2.1... " >&6; }
- if ${emacs_cv_motif_version_2_1+:} false; then :
+ if test "${emacs_cv_motif_version_2_1+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -9817,10 -8852,15 +9809,10 @@@ rm -f core conftest.err conftest.$ac_ob
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_cv_motif_version_2_1" >&5
  $as_echo "$emacs_cv_motif_version_2_1" >&6; }
 -  HAVE_MOTIF_2_1=$emacs_cv_motif_version_2_1
    if test $emacs_cv_motif_version_2_1 = yes; then
 -    HAVE_LIBXP=no
 -
 -$as_echo "#define HAVE_MOTIF_2_1 1" >>confdefs.h
 -
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpCreateContext in -lXp" >&5
  $as_echo_n "checking for XpCreateContext in -lXp... " >&6; }
- if ${ac_cv_lib_Xp_XpCreateContext+:} false; then :
+ if test "${ac_cv_lib_Xp_XpCreateContext+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -9854,14 -8894,19 +9846,14 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xp_XpCreateContext" >&5
  $as_echo "$ac_cv_lib_Xp_XpCreateContext" >&6; }
- if test "x$ac_cv_lib_Xp_XpCreateContext" = xyes; then :
+ if test "x$ac_cv_lib_Xp_XpCreateContext" = x""yes; then :
 -  HAVE_LIBXP=yes
 +  LIBXP=-lXp
  fi
  
 -    if test ${HAVE_LIBXP} = yes; then
 -
 -$as_echo "#define HAVE_LIBXP 1" >>confdefs.h
 -
 -    fi
    else
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LessTif where some systems put it" >&5
  $as_echo_n "checking for LessTif where some systems put it... " >&6; }
- if ${emacs_cv_lesstif+:} false; then :
+ if test "${emacs_cv_lesstif+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    # We put this in CFLAGS temporarily to precede other -I options
@@@ -10020,7 -9065,7 +10012,7 @@@ if test "${HAVE_X11}" = "yes"; the
  set dummy pkg-config; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $PKG_CONFIG in
@@@ -10122,7 -9167,7 +10114,7 @@@ $as_echo "no" >&6; 
  set dummy pkg-config; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $PKG_CONFIG in
@@@ -10214,7 -9259,7 +10206,7 @@@ $as_echo "no" >&6; 
        HAVE_XRENDER=no
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XRenderQueryExtension in -lXrender" >&5
  $as_echo_n "checking for XRenderQueryExtension in -lXrender... " >&6; }
- if ${ac_cv_lib_Xrender_XRenderQueryExtension+:} false; then :
+ if test "${ac_cv_lib_Xrender_XRenderQueryExtension+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -10248,7 -9293,7 +10240,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xrender_XRenderQueryExtension" >&5
  $as_echo "$ac_cv_lib_Xrender_XRenderQueryExtension" >&6; }
- if test "x$ac_cv_lib_Xrender_XRenderQueryExtension" = xyes; then :
+ if test "x$ac_cv_lib_Xrender_XRenderQueryExtension" = x""yes; then :
    HAVE_XRENDER=yes
  fi
  
        XFT_LIBS="-lXrender $XFT_LIBS"
        LIBS="$XFT_LIBS $LIBS"
        ac_fn_c_check_header_mongrel "$LINENO" "X11/Xft/Xft.h" "ac_cv_header_X11_Xft_Xft_h" "$ac_includes_default"
- if test "x$ac_cv_header_X11_Xft_Xft_h" = xyes; then :
+ if test "x$ac_cv_header_X11_Xft_Xft_h" = x""yes; then :
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XftFontOpen in -lXft" >&5
  $as_echo_n "checking for XftFontOpen in -lXft... " >&6; }
- if ${ac_cv_lib_Xft_XftFontOpen+:} false; then :
+ if test "${ac_cv_lib_Xft_XftFontOpen+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -10298,7 -9343,7 +10290,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xft_XftFontOpen" >&5
  $as_echo "$ac_cv_lib_Xft_XftFontOpen" >&6; }
- if test "x$ac_cv_lib_Xft_XftFontOpen" = xyes; then :
+ if test "x$ac_cv_lib_Xft_XftFontOpen" = x""yes; then :
    HAVE_XFT=yes
  fi
  
@@@ -10347,7 -9392,7 +10339,7 @@@ $as_echo "#define HAVE_FREETYPE 1" >>co
  set dummy pkg-config; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $PKG_CONFIG in
@@@ -10440,7 -9485,7 +10432,7 @@@ $as_echo "#define HAVE_LIBOTF 1" >>conf
  
          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OTF_get_variation_glyphs in -lotf" >&5
  $as_echo_n "checking for OTF_get_variation_glyphs in -lotf... " >&6; }
- if ${ac_cv_lib_otf_OTF_get_variation_glyphs+:} false; then :
+ if test "${ac_cv_lib_otf_OTF_get_variation_glyphs+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -10474,7 -9519,7 +10466,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_otf_OTF_get_variation_glyphs" >&5
  $as_echo "$ac_cv_lib_otf_OTF_get_variation_glyphs" >&6; }
- if test "x$ac_cv_lib_otf_OTF_get_variation_glyphs" = xyes; then :
+ if test "x$ac_cv_lib_otf_OTF_get_variation_glyphs" = x""yes; then :
    HAVE_OTF_GET_VARIATION_GLYPHS=yes
  else
    HAVE_OTF_GET_VARIATION_GLYPHS=no
@@@ -10499,7 -9544,7 +10491,7 @@@ $as_echo "#define HAVE_OTF_GET_VARIATIO
  set dummy pkg-config; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    case $PKG_CONFIG in
      HAVE_LIBOTF=no
      HAVE_M17N_FLT=no
  fi
 +
  ### End of font-backend (under X11) section.
  
  
  
  ### Use -lXpm if available, unless `--with-xpm=no'.
  HAVE_XPM=no
 +LIBXPM=
  if test "${HAVE_X11}" = "yes"; then
    if test "${with_xpm}" != "no"; then
      ac_fn_c_check_header_mongrel "$LINENO" "X11/xpm.h" "ac_cv_header_X11_xpm_h" "$ac_includes_default"
- if test "x$ac_cv_header_X11_xpm_h" = xyes; then :
+ if test "x$ac_cv_header_X11_xpm_h" = x""yes; then :
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmReadFileToPixmap in -lXpm" >&5
  $as_echo_n "checking for XpmReadFileToPixmap in -lXpm... " >&6; }
- if ${ac_cv_lib_Xpm_XpmReadFileToPixmap+:} false; then :
+ if test "${ac_cv_lib_Xpm_XpmReadFileToPixmap+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -10654,7 -9697,7 +10646,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xpm_XpmReadFileToPixmap" >&5
  $as_echo "$ac_cv_lib_Xpm_XpmReadFileToPixmap" >&6; }
- if test "x$ac_cv_lib_Xpm_XpmReadFileToPixmap" = xyes; then :
+ if test "x$ac_cv_lib_Xpm_XpmReadFileToPixmap" = x""yes; then :
    HAVE_XPM=yes
  fi
  
@@@ -10695,21 -9738,18 +10687,21 @@@ $as_echo "no" >&6; 
  
  $as_echo "#define HAVE_XPM 1" >>confdefs.h
  
 +    LIBXPM=-lXpm
    fi
  fi
  
 +
  ### Use -ljpeg if available, unless `--with-jpeg=no'.
  HAVE_JPEG=no
 +LIBJPEG=
  if test "${HAVE_X11}" = "yes"; then
    if test "${with_jpeg}" != "no"; then
              ac_fn_c_check_header_mongrel "$LINENO" "jerror.h" "ac_cv_header_jerror_h" "$ac_includes_default"
- if test "x$ac_cv_header_jerror_h" = xyes; then :
+ if test "x$ac_cv_header_jerror_h" = x""yes; then :
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_destroy_compress in -ljpeg" >&5
  $as_echo_n "checking for jpeg_destroy_compress in -ljpeg... " >&6; }
- if ${ac_cv_lib_jpeg_jpeg_destroy_compress+:} false; then :
+ if test "${ac_cv_lib_jpeg_jpeg_destroy_compress+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -10743,7 -9783,7 +10735,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_destroy_compress" >&5
  $as_echo "$ac_cv_lib_jpeg_jpeg_destroy_compress" >&6; }
- if test "x$ac_cv_lib_jpeg_jpeg_destroy_compress" = xyes; then :
+ if test "x$ac_cv_lib_jpeg_jpeg_destroy_compress" = x""yes; then :
    HAVE_JPEG=yes
  fi
  
  rm -f conftest*
  
    fi
 +  if test "${HAVE_JPEG}" = "yes"; then
 +    LIBJPEG=-ljpeg
 +  fi
  fi
  
 +
  ### Use -lpng if available, unless `--with-png=no'.
  HAVE_PNG=no
 +LIBPNG=
  if test "${HAVE_X11}" = "yes"; then
    if test "${with_png}" != "no"; then
      # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
      if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_get_channels in -lpng" >&5
  $as_echo_n "checking for png_get_channels in -lpng... " >&6; }
- if ${ac_cv_lib_png_png_get_channels+:} false; then :
+ if test "${ac_cv_lib_png_png_get_channels+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -10836,7 -9871,7 +10828,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_get_channels" >&5
  $as_echo "$ac_cv_lib_png_png_get_channels" >&6; }
- if test "x$ac_cv_lib_png_png_get_channels" = xyes; then :
+ if test "x$ac_cv_lib_png_png_get_channels" = x""yes; then :
    HAVE_PNG=yes
  fi
  
  
  $as_echo "#define HAVE_PNG 1" >>confdefs.h
  
 +    LIBPNG="-lpng -lz -lm"
    fi
  fi
  
 +
  ### Use -ltiff if available, unless `--with-tiff=no'.
  HAVE_TIFF=no
 +LIBTIFF=
  if test "${HAVE_X11}" = "yes"; then
    if test "${with_tiff}" != "no"; then
      ac_fn_c_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default"
- if test "x$ac_cv_header_tiffio_h" = xyes; then :
+ if test "x$ac_cv_header_tiffio_h" = x""yes; then :
    tifflibs="-lz -lm"
        # At least one tiff package requires the jpeg library.
        if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFGetVersion in -ltiff" >&5
  $as_echo_n "checking for TIFFGetVersion in -ltiff... " >&6; }
- if ${ac_cv_lib_tiff_TIFFGetVersion+:} false; then :
+ if test "${ac_cv_lib_tiff_TIFFGetVersion+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -10898,7 -9930,7 +10890,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFGetVersion" >&5
  $as_echo "$ac_cv_lib_tiff_TIFFGetVersion" >&6; }
- if test "x$ac_cv_lib_tiff_TIFFGetVersion" = xyes; then :
+ if test "x$ac_cv_lib_tiff_TIFFGetVersion" = x""yes; then :
    HAVE_TIFF=yes
  fi
  
  
  $as_echo "#define HAVE_TIFF 1" >>confdefs.h
  
 +        LIBTIFF=-ltiff
    fi
  fi
  
 +
  ### Use -lgif or -lungif if available, unless `--with-gif=no'.
  HAVE_GIF=no
 +LIBGIF=
  if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
    ac_fn_c_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default"
- if test "x$ac_cv_header_gif_lib_h" = xyes; then :
+ if test "x$ac_cv_header_gif_lib_h" = x""yes; then :
    # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
  # Earlier versions can crash Emacs.
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EGifPutExtensionLast in -lgif" >&5
  $as_echo_n "checking for EGifPutExtensionLast in -lgif... " >&6; }
- if ${ac_cv_lib_gif_EGifPutExtensionLast+:} false; then :
+ if test "${ac_cv_lib_gif_EGifPutExtensionLast+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -10960,10 -9989,10 +10952,10 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_EGifPutExtensionLast" >&5
  $as_echo "$ac_cv_lib_gif_EGifPutExtensionLast" >&6; }
- if test "x$ac_cv_lib_gif_EGifPutExtensionLast" = xyes; then :
+ if test "x$ac_cv_lib_gif_EGifPutExtensionLast" = x""yes; then :
    HAVE_GIF=yes
  else
 -  try_libungif=yes
 +  HAVE_GIF=maybe
  fi
  
  fi
  
  
    if test "$HAVE_GIF" = yes; then
 -      ac_gif_lib_name="-lgif"
 -  fi
 -
 +    LIBGIF=-lgif
 +  elif test "$HAVE_GIF" = maybe; then
  # If gif_lib.h but no libgif, try libungif.
 -  if test x"$try_libungif" = xyes; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EGifPutExtensionLast in -lungif" >&5
  $as_echo_n "checking for EGifPutExtensionLast in -lungif... " >&6; }
- if ${ac_cv_lib_ungif_EGifPutExtensionLast+:} false; then :
+ if test "${ac_cv_lib_ungif_EGifPutExtensionLast+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -11010,13 -10041,17 +11002,13 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ungif_EGifPutExtensionLast" >&5
  $as_echo "$ac_cv_lib_ungif_EGifPutExtensionLast" >&6; }
- if test "x$ac_cv_lib_ungif_EGifPutExtensionLast" = xyes; then :
+ if test "x$ac_cv_lib_ungif_EGifPutExtensionLast" = x""yes; then :
    HAVE_GIF=yes
 +else
 +  HAVE_GIF=no
  fi
  
 -
 -    if test "$HAVE_GIF" = yes; then
 -
 -$as_echo "#define LIBGIF -lungif" >>confdefs.h
 -
 -      ac_gif_lib_name="-lungif"
 -    fi
 +    test "$HAVE_GIF" = yes && LIBGIF=-lungif
    fi
  
    if test "${HAVE_GIF}" = "yes"; then
@@@ -11026,7 -10061,6 +11018,7 @@@ $as_echo "#define HAVE_GIF 1" >>confdef
    fi
  fi
  
 +
  if test "${HAVE_X11}" = "yes"; then
    MISSING=""
    WITH_NO=""
  
  ### Use -lgpm if available, unless `--with-gpm=no'.
  HAVE_GPM=no
 +LIBGPM=
 +MOUSE_SUPPORT=
  if test "${with_gpm}" != "no"; then
    ac_fn_c_check_header_mongrel "$LINENO" "gpm.h" "ac_cv_header_gpm_h" "$ac_includes_default"
- if test "x$ac_cv_header_gpm_h" = xyes; then :
+ if test "x$ac_cv_header_gpm_h" = x""yes; then :
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Gpm_Open in -lgpm" >&5
  $as_echo_n "checking for Gpm_Open in -lgpm... " >&6; }
- if ${ac_cv_lib_gpm_Gpm_Open+:} false; then :
+ if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -11094,27 -10126,23 +11086,27 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gpm_Gpm_Open" >&5
  $as_echo "$ac_cv_lib_gpm_Gpm_Open" >&6; }
- if test "x$ac_cv_lib_gpm_Gpm_Open" = xyes; then :
+ if test "x$ac_cv_lib_gpm_Gpm_Open" = x""yes; then :
    HAVE_GPM=yes
  fi
  
  fi
  
  
 -fi
  
 -if test "${HAVE_GPM}" = "yes"; then
 +  if test "${HAVE_GPM}" = "yes"; then
  
  $as_echo "#define HAVE_GPM 1" >>confdefs.h
  
 +    LIBGPM=-lgpm
 +    ## May be reset below.
 +    MOUSE_SUPPORT="\$(GPM_MOUSE_SUPPORT)"
 +  fi
  fi
  
 +
  ac_fn_c_check_header_mongrel "$LINENO" "malloc/malloc.h" "ac_cv_header_malloc_malloc_h" "$ac_includes_default"
- if test "x$ac_cv_header_malloc_malloc_h" = xyes; then :
+ if test "x$ac_cv_header_malloc_malloc_h" = x""yes; then :
  
  $as_echo "#define HAVE_MALLOC_MALLOC_H 1" >>confdefs.h
  
  
  
  
 +C_SWITCH_X_SYSTEM=
  ### Use NeXTstep API to implement GUI.
  if test "${HAVE_NS}" = "yes"; then
  
@@@ -11138,9 -10165,6 +11130,9 @@@ $as_echo "#define NS_IMPL_COCOA 1" >>co
  
  $as_echo "#define NS_IMPL_GNUSTEP 1" >>confdefs.h
  
 +    # See also .m.o rule in Makefile.in */
 +    # FIXME: are all these flags really needed?  Document here why.  */
 +    C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing"
      GNU_OBJC_CFLAGS="-fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
    fi
    if test "${NS_HAVE_NSINTEGER}" = "yes"; then
  
  ### Use session management (-lSM -lICE) if available
  HAVE_X_SM=no
 +LIBXSM=
  if test "${HAVE_X11}" = "yes"; then
    ac_fn_c_check_header_mongrel "$LINENO" "X11/SM/SMlib.h" "ac_cv_header_X11_SM_SMlib_h" "$ac_includes_default"
- if test "x$ac_cv_header_X11_SM_SMlib_h" = xyes; then :
+ if test "x$ac_cv_header_X11_SM_SMlib_h" = x""yes; then :
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SmcOpenConnection in -lSM" >&5
  $as_echo_n "checking for SmcOpenConnection in -lSM... " >&6; }
- if ${ac_cv_lib_SM_SmcOpenConnection+:} false; then :
+ if test "${ac_cv_lib_SM_SmcOpenConnection+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -11196,7 -10219,7 +11188,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_SM_SmcOpenConnection" >&5
  $as_echo "$ac_cv_lib_SM_SmcOpenConnection" >&6; }
- if test "x$ac_cv_lib_SM_SmcOpenConnection" = xyes; then :
+ if test "x$ac_cv_lib_SM_SmcOpenConnection" = x""yes; then :
    HAVE_X_SM=yes
  fi
  
  
  $as_echo "#define HAVE_X_SM 1" >>confdefs.h
  
 +    LIBXSM="-lSM -lICE"
      case "$LIBS" in
        *-lSM*) ;;
 -      *)      LIBS="-lSM -lICE $LIBS" ;;
 +      *)      LIBS="$LIBXSM $LIBS" ;;
      esac
    fi
  fi
  
- if ${ac_cv_path_PKG_CONFIG+:} false; then :
 +
 +### Use libxml (-lxml2) if available
 +if test "${with_xml2}" != "no"; then
 +  ### I'm not sure what the version number should be, so I just guessed.
 +
 +  succeeded=no
 +
 +  # Extract the first word of "pkg-config", so it can be a program name with args.
 +set dummy pkg-config; ac_word=$2
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 +$as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_lib_xml2_htmlReadMemory+:} false; then :
++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  case $PKG_CONFIG in
 +  [\\/]* | ?:[\\/]*)
 +  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
 +  ;;
 +  *)
 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 +for as_dir in $PATH
 +do
 +  IFS=$as_save_IFS
 +  test -z "$as_dir" && as_dir=.
 +    for ac_exec_ext in '' $ac_executable_extensions; do
 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
 +    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
 +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
 +    break 2
 +  fi
 +done
 +  done
 +IFS=$as_save_IFS
 +
 +  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
 +  ;;
 +esac
 +fi
 +PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 +if test -n "$PKG_CONFIG"; then
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
 +$as_echo "$PKG_CONFIG" >&6; }
 +else
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +fi
 +
 +
 +
 +  if test "$PKG_CONFIG" = "no" ; then
 +     HAVE_LIBXML2=no
 +  else
 +     PKG_CONFIG_MIN_VERSION=0.9.0
 +     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
 +        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 > 2.2.0" >&5
 +$as_echo_n "checking for libxml-2.0 > 2.2.0... " >&6; }
 +
 +        if $PKG_CONFIG --exists "libxml-2.0 > 2.2.0" 2>&5; then
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 +$as_echo "yes" >&6; }
 +            succeeded=yes
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBXML2_CFLAGS" >&5
 +$as_echo_n "checking LIBXML2_CFLAGS... " >&6; }
 +            LIBXML2_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 > 2.2.0"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBXML2_CFLAGS" >&5
 +$as_echo "$LIBXML2_CFLAGS" >&6; }
 +
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBXML2_LIBS" >&5
 +$as_echo_n "checking LIBXML2_LIBS... " >&6; }
 +            LIBXML2_LIBS=`$PKG_CONFIG --libs "libxml-2.0 > 2.2.0"|sed -e 's,///*,/,g'`
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBXML2_LIBS" >&5
 +$as_echo "$LIBXML2_LIBS" >&6; }
 +        else
 +            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 +$as_echo "no" >&6; }
 +            LIBXML2_CFLAGS=""
 +            LIBXML2_LIBS=""
 +            ## If we have a custom action on failure, don't print errors, but
 +            ## do set a variable so people can do so.
 +            LIBXML2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libxml-2.0 > 2.2.0"`
 +
 +        fi
 +
 +
 +
 +     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
 +     HAVE_LIBXML2=yes
 +  else
 +     HAVE_LIBXML2=no
 +  fi
 +
 +  if test "${HAVE_LIBXML2}" = "yes"; then
 +    LIBS="$LIBXML2_LIBS $LIBS"
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for htmlReadMemory in -lxml2" >&5
 +$as_echo_n "checking for htmlReadMemory in -lxml2... " >&6; }
- if test "x$ac_cv_lib_xml2_htmlReadMemory" = xyes; then :
++if test "${ac_cv_lib_xml2_htmlReadMemory+set}" = set; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  ac_check_lib_save_LIBS=$LIBS
 +LIBS="-lxml2  $LIBS"
 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +
 +/* Override any GCC internal prototype to avoid an error.
 +   Use char because int might match the return type of a GCC
 +   builtin and then its argument prototype would still apply.  */
 +#ifdef __cplusplus
 +extern "C"
 +#endif
 +char htmlReadMemory ();
 +int
 +main ()
 +{
 +return htmlReadMemory ();
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +if ac_fn_c_try_link "$LINENO"; then :
 +  ac_cv_lib_xml2_htmlReadMemory=yes
 +else
 +  ac_cv_lib_xml2_htmlReadMemory=no
 +fi
 +rm -f core conftest.err conftest.$ac_objext \
 +    conftest$ac_exeext conftest.$ac_ext
 +LIBS=$ac_check_lib_save_LIBS
 +fi
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_htmlReadMemory" >&5
 +$as_echo "$ac_cv_lib_xml2_htmlReadMemory" >&6; }
++if test "x$ac_cv_lib_xml2_htmlReadMemory" = x""yes; then :
 +  HAVE_LIBXML2=yes
 +else
 +  HAVE_LIBXML2=no
 +fi
 +
 +    if test "${HAVE_LIBXML2}" = "yes"; then
 +
 +$as_echo "#define HAVE_LIBXML2 1" >>confdefs.h
 +
 +    else
 +      LIBXML2_LIBS=""
 +      LIBXML2_CFLAGS=""
 +    fi
 +  fi
 +fi
 +
 +
 +
  # If netdb.h doesn't declare h_errno, we must declare it by hand.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netdb declares h_errno" >&5
  $as_echo_n "checking whether netdb declares h_errno... " >&6; }
- if ${emacs_cv_netdb_declares_h_errno+:} false; then :
+ if test "${emacs_cv_netdb_declares_h_errno+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -11404,22 -10271,11 +11396,11 @@@ $as_echo "#define HAVE_H_ERRNO 1" >>con
  
  fi
  
- ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
- if test "x$ac_cv_type_size_t" = xyes; then :
- else
- cat >>confdefs.h <<_ACEOF
- #define size_t unsigned int
- _ACEOF
- fi
  # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
  # for constant arguments.  Useless!
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
  $as_echo_n "checking for working alloca.h... " >&6; }
- if ${ac_cv_working_alloca_h+:} false; then :
+ if test "${ac_cv_working_alloca_h+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
  $as_echo_n "checking for alloca... " >&6; }
- if ${ac_cv_func_alloca_works+:} false; then :
+ if test "${ac_cv_func_alloca_works+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
   #pragma alloca
  #   else
  #    ifndef alloca /* predefined by HP cc +Olibcalls */
void *alloca (size_t);
char *alloca ();
  #    endif
  #   endif
  #  endif
@@@ -11515,7 -10371,7 +11496,7 @@@ $as_echo "#define C_ALLOCA 1" >>confdef
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
  $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
- if ${ac_cv_os_cray+:} false; then :
+ if test "${ac_cv_os_cray+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
  $as_echo_n "checking stack direction for C alloca... " >&6; }
- if ${ac_cv_c_stack_direction+:} false; then :
+ if test "${ac_cv_c_stack_direction+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test "$cross_compiling" = yes; then :
  # On HPUX 9.01, -lm does not contain logb, so check for sqrt.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5
  $as_echo_n "checking for sqrt in -lm... " >&6; }
- if ${ac_cv_lib_m_sqrt+:} false; then :
+ if test "${ac_cv_lib_m_sqrt+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -11647,7 -10503,7 +11628,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5
  $as_echo "$ac_cv_lib_m_sqrt" >&6; }
- if test "x$ac_cv_lib_m_sqrt" = xyes; then :
+ if test "x$ac_cv_lib_m_sqrt" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBM 1
  _ACEOF
  # have the same check as for liblockfile below.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for maillock in -lmail" >&5
  $as_echo_n "checking for maillock in -lmail... " >&6; }
- if ${ac_cv_lib_mail_maillock+:} false; then :
+ if test "${ac_cv_lib_mail_maillock+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -11695,24 -10551,18 +11676,24 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mail_maillock" >&5
  $as_echo "$ac_cv_lib_mail_maillock" >&6; }
- if test "x$ac_cv_lib_mail_maillock" = xyes; then :
+ if test "x$ac_cv_lib_mail_maillock" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBMAIL 1
 -_ACEOF
 +  have_mail=yes
 +else
 +  have_mail=no
 +fi
  
 -  LIBS="-lmail $LIBS"
 +if test $have_mail = yes; then
 +  LIBS_MAIL=-lmail
 +  LIBS="$LIBS_MAIL $LIBS"
  
 -fi
 +$as_echo "#define HAVE_LIBMAIL 1" >>confdefs.h
  
 +else
 +  LIBS_MAIL=
 +fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for maillock in -llockfile" >&5
  $as_echo_n "checking for maillock in -llockfile... " >&6; }
- if ${ac_cv_lib_lockfile_maillock+:} false; then :
+ if test "${ac_cv_lib_lockfile_maillock+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -11746,27 -10596,24 +11727,27 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lockfile_maillock" >&5
  $as_echo "$ac_cv_lib_lockfile_maillock" >&6; }
- if test "x$ac_cv_lib_lockfile_maillock" = xyes; then :
+ if test "x$ac_cv_lib_lockfile_maillock" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBLOCKFILE 1
 -_ACEOF
 +  have_lockfile=yes
 +else
 +  have_lockfile=no
 +fi
  
 -  LIBS="-llockfile $LIBS"
 +if test $have_lockfile = yes; then
 +   LIBS_MAIL=-llockfile
 +   LIBS="$LIBS_MAIL $LIBS"
  
 -fi
 +$as_echo "#define HAVE_LIBLOCKFILE 1" >>confdefs.h
  
 +else
  # If we have the shared liblockfile, assume we must use it for mail
  # locking (e.g. Debian).  If we couldn't link against liblockfile
  # (no liblockfile.a installed), ensure that we don't need to.
 -if test "$ac_cv_lib_lockfile_maillock" = no; then
        # Extract the first word of "liblockfile.so", so it can be a program name with args.
  set dummy liblockfile.so; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
- if ${ac_cv_prog_liblockfile+:} false; then :
+ if test "${ac_cv_prog_liblockfile+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test -n "$liblockfile"; then
      as_fn_error $? "Shared liblockfile found but can't link against it.
  This probably means that movemail could lose mail.
  There may be a \`development' package to install containing liblockfile." "$LINENO" 5
 -  else :
    fi
  fi
  for ac_func in touchlock
  do :
    ac_fn_c_check_func "$LINENO" "touchlock" "ac_cv_func_touchlock"
- if test "x$ac_cv_func_touchlock" = xyes; then :
+ if test "x$ac_cv_func_touchlock" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_TOUCHLOCK 1
  _ACEOF
  for ac_header in maillock.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "maillock.h" "ac_cv_header_maillock_h" "$ac_includes_default"
- if test "x$ac_cv_header_maillock_h" = xyes; then :
+ if test "x$ac_cv_header_maillock_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_MAILLOCK_H 1
  _ACEOF
  done
  
  
 +
 +## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
 +## interlock access to the mail spool.  The alternative is a lock file named
 +## /usr/spool/mail/$USER.lock.
 +mail_lock=no
 +case "$opsys" in
 +  aix4-2) mail_lock="lockf" ;;
 +
 +  gnu|freebsd|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
 +
 +  ## On GNU/Linux systems, both methods are used by various mail programs.
 +  ## I assume most people are using newer mailers that have heard of flock.
 +  ## Change this if you need to.
 +  ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
 +  ## configure gets the right answers, and that means *NOT* using flock.
 +  ## Using flock is guaranteed to be the wrong thing. See Debian Policy
 +  ## for details.'' and then uses `#ifdef DEBIAN'.  Unfortunately the
 +  ## Debian maintainer hasn't provided a clean fix for Emacs.
 +  ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
 +  ## HAVE_MAILLOCK_H are defined, so the following appears to be the
 +  ## correct logic.  -- fx
 +  ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
 +  ## liblockfile is a Free Software replacement for libmail, used on
 +  ## Debian systems and elsewhere. -rfr.
 +  gnu-*)
 +    mail_lock="flock"
 +    if test $have_mail = yes || test $have_lockfile = yes; then
 +      test $ac_cv_header_maillock_h = yes && mail_lock=no
 +    fi
 +    ;;
 +esac
 +
 +BLESSMAIL_TARGET=
 +case "$mail_lock" in
 +  flock)
 +$as_echo "#define MAIL_USE_FLOCK 1" >>confdefs.h
 + ;;
 +
 +  lockf)
 +$as_echo "#define MAIL_USE_LOCKF 1" >>confdefs.h
 + ;;
 +
 +  *) BLESSMAIL_TARGET="need-blessmail" ;;
 +esac
 +
 +
 +
  for ac_func in gethostname getdomainname dup2 \
  rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \
 -random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime setsid \
 +random lrand48 logb frexp fmod rint cbrt ftime setsid \
  strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
  utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \
 -__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \
 +__fpending mblen mbrlen mbsinit strsignal setitimer ualarm strchr strrchr \
  sendto recvfrom getsockopt setsockopt getsockname getpeername \
 -gai_strerror mkstemp getline getdelim mremap memmove fsync sync bzero \
 +gai_strerror mkstemp getline getdelim mremap memmove fsync sync \
  memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \
 -cfmakeraw cfsetspeed
 +cfmakeraw cfsetspeed isnan copysign __executable_start
  do :
    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
  ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
  for ac_header in sys/un.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "$ac_includes_default"
- if test "x$ac_cv_header_sys_un_h" = xyes; then :
+ if test "x$ac_cv_header_sys_un_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_SYS_UN_H 1
  _ACEOF
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5
  $as_echo_n "checking for working mktime... " >&6; }
- if ${ac_cv_func_working_mktime+:} false; then :
+ if test "${ac_cv_func_working_mktime+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test "$cross_compiling" = yes; then :
@@@ -12173,7 -10974,7 +12154,7 @@@ ac_save_LIBS=$LIB
  
  # Check for getloadavg, but be sure not to touch the cache variable.
  (ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
- if test "x$ac_cv_func_getloadavg" = xyes; then :
+ if test "x$ac_cv_func_getloadavg" = x""yes; then :
    exit 0
  else
    exit 1
  for ac_func in pstat_getdynamic
  do :
    ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic"
- if test "x$ac_cv_func_pstat_getdynamic" = xyes; then :
+ if test "x$ac_cv_func_pstat_getdynamic" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_PSTAT_GETDYNAMIC 1
  _ACEOF
  # Solaris has libkstat which does not require root.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5
  $as_echo_n "checking for kstat_open in -lkstat... " >&6; }
- if ${ac_cv_lib_kstat_kstat_open+:} false; then :
+ if test "${ac_cv_lib_kstat_kstat_open+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -12230,7 -11031,7 +12211,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5
  $as_echo "$ac_cv_lib_kstat_kstat_open" >&6; }
- if test "x$ac_cv_lib_kstat_kstat_open" = xyes; then :
+ if test "x$ac_cv_lib_kstat_kstat_open" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBKSTAT 1
  _ACEOF
@@@ -12248,7 -11049,7 +12229,7 @@@ test $ac_cv_lib_kstat_kstat_open = yes 
  if test $ac_have_func = no; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5
  $as_echo_n "checking for elf_begin in -lelf... " >&6; }
- if ${ac_cv_lib_elf_elf_begin+:} false; then :
+ if test "${ac_cv_lib_elf_elf_begin+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -12282,7 -11083,7 +12263,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5
  $as_echo "$ac_cv_lib_elf_elf_begin" >&6; }
- if test "x$ac_cv_lib_elf_elf_begin" = xyes; then :
+ if test "x$ac_cv_lib_elf_elf_begin" = x""yes; then :
    LIBS="-lelf $LIBS"
  fi
  
  if test $ac_have_func = no; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5
  $as_echo_n "checking for kvm_open in -lkvm... " >&6; }
- if ${ac_cv_lib_kvm_kvm_open+:} false; then :
+ if test "${ac_cv_lib_kvm_kvm_open+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -12324,14 -11125,14 +12305,14 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5
  $as_echo "$ac_cv_lib_kvm_kvm_open" >&6; }
- if test "x$ac_cv_lib_kvm_kvm_open" = xyes; then :
+ if test "x$ac_cv_lib_kvm_kvm_open" = x""yes; then :
    LIBS="-lkvm $LIBS"
  fi
  
    # Check for the 4.4BSD definition of getloadavg.
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5
  $as_echo_n "checking for getloadavg in -lutil... " >&6; }
- if ${ac_cv_lib_util_getloadavg+:} false; then :
+ if test "${ac_cv_lib_util_getloadavg+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -12365,7 -11166,7 +12346,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5
  $as_echo "$ac_cv_lib_util_getloadavg" >&6; }
- if test "x$ac_cv_lib_util_getloadavg" = xyes; then :
+ if test "x$ac_cv_lib_util_getloadavg" = x""yes; then :
    LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes
  fi
  
@@@ -12378,7 -11179,7 +12359,7 @@@ if test $ac_have_func = no; the
    LIBS="-L/usr/local/lib $LIBS"
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5
  $as_echo_n "checking for getloadavg in -lgetloadavg... " >&6; }
- if ${ac_cv_lib_getloadavg_getloadavg+:} false; then :
+ if test "${ac_cv_lib_getloadavg_getloadavg+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -12412,7 -11213,7 +12393,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5
  $as_echo "$ac_cv_lib_getloadavg_getloadavg" >&6; }
- if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes; then :
+ if test "x$ac_cv_lib_getloadavg_getloadavg" = x""yes; then :
    LIBS="-lgetloadavg $LIBS"
  else
    LIBS=$ac_getloadavg_LIBS
  for ac_func in getloadavg
  do :
    ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
- if test "x$ac_cv_func_getloadavg" = xyes; then :
+ if test "x$ac_cv_func_getloadavg" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_GETLOADAVG 1
  _ACEOF
@@@ -12443,14 -11244,14 +12424,14 @@@ $as_echo "#define C_GETLOADAVG 1" >>con
  # Figure out what our getloadavg.c needs.
  ac_have_func=no
  ac_fn_c_check_header_mongrel "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default"
- if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes; then :
+ if test "x$ac_cv_header_sys_dg_sys_info_h" = x""yes; then :
    ac_have_func=yes
  
  $as_echo "#define DGUX 1" >>confdefs.h
  
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5
  $as_echo_n "checking for dg_sys_info in -ldgc... " >&6; }
- if ${ac_cv_lib_dgc_dg_sys_info+:} false; then :
+ if test "${ac_cv_lib_dgc_dg_sys_info+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -12484,7 -11285,7 +12465,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5
  $as_echo "$ac_cv_lib_dgc_dg_sys_info" >&6; }
- if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes; then :
+ if test "x$ac_cv_lib_dgc_dg_sys_info" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBDGC 1
  _ACEOF
  
  
  ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
- if test "x$ac_cv_header_locale_h" = xyes; then :
+ if test "x$ac_cv_header_locale_h" = x""yes; then :
  
  fi
  
  for ac_func in setlocale
  do :
    ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
- if test "x$ac_cv_func_setlocale" = xyes; then :
+ if test "x$ac_cv_func_setlocale" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_SETLOCALE 1
  _ACEOF
  # We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
  # uses stabs), but it is still SVR4.  We cannot check for <elf.h> because
  # Irix 4.0.5F has the header but not the library.
- if test $ac_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes \
-     && test "$ac_cv_lib_kvm_kvm_open" = yes; then
+ if test $ac_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes; then
    ac_have_func=yes
  
  $as_echo "#define SVR4 1" >>confdefs.h
  
  if test $ac_have_func = no; then
    ac_fn_c_check_header_mongrel "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default"
- if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes; then :
+ if test "x$ac_cv_header_inq_stats_cpustats_h" = x""yes; then :
    ac_have_func=yes
  
  $as_echo "#define UMAX 1" >>confdefs.h
  
  if test $ac_have_func = no; then
    ac_fn_c_check_header_mongrel "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default"
- if test "x$ac_cv_header_sys_cpustats_h" = xyes; then :
+ if test "x$ac_cv_header_sys_cpustats_h" = x""yes; then :
    ac_have_func=yes; $as_echo "#define UMAX 1" >>confdefs.h
  
  fi
@@@ -12555,7 -11355,7 +12535,7 @@@ if test $ac_have_func = no; the
    for ac_header in mach/mach.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default"
- if test "x$ac_cv_header_mach_mach_h" = xyes; then :
+ if test "x$ac_cv_header_mach_mach_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_MACH_MACH_H 1
  _ACEOF
  for ac_header in nlist.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default"
- if test "x$ac_cv_header_nlist_h" = xyes; then :
+ if test "x$ac_cv_header_nlist_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_NLIST_H 1
  _ACEOF
   ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include <nlist.h>
  "
- if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes; then :
+ if test "x$ac_cv_member_struct_nlist_n_un_n_name" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_STRUCT_NLIST_N_UN_N_NAME 1
  # Some definitions of getloadavg require that the program be installed setgid.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getloadavg requires setgid" >&5
  $as_echo_n "checking whether getloadavg requires setgid... " >&6; }
- if ${ac_cv_func_getloadavg_setgid+:} false; then :
+ if test "${ac_cv_func_getloadavg_setgid+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  if test $ac_cv_func_getloadavg_setgid = yes; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking group of /dev/kmem" >&5
  $as_echo_n "checking group of /dev/kmem... " >&6; }
- if ${ac_cv_group_kmem+:} false; then :
+ if test "${ac_cv_group_kmem+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
     # On Solaris, /dev/kmem is a symlink.  Get info on the real file.
@@@ -12659,7 -11459,7 +12639,7 @@@ LIBS=$ac_save_LIB
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
  $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
- if ${ac_cv_sys_largefile_source+:} false; then :
+ if test "${ac_cv_sys_largefile_source+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    while :; do
    for ac_header in getopt.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default"
- if test "x$ac_cv_header_getopt_h" = xyes; then :
+ if test "x$ac_cv_header_getopt_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_GETOPT_H 1
  _ACEOF
      for ac_func in getopt_long_only
  do :
    ac_fn_c_check_func "$LINENO" "getopt_long_only" "ac_cv_func_getopt_long_only"
- if test "x$ac_cv_func_getopt_long_only" = xyes; then :
+ if test "x$ac_cv_func_getopt_long_only" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_GETOPT_LONG_ONLY 1
  _ACEOF
        if test -z "$GETOPT_H"; then
      ac_fn_c_check_decl "$LINENO" "optreset" "ac_cv_have_decl_optreset" "#include <getopt.h>
  "
- if test "x$ac_cv_have_decl_optreset" = xyes; then :
+ if test "x$ac_cv_have_decl_optreset" = x""yes; then :
    GETOPT_H=getopt.h
  fi
  
        if test -z "$GETOPT_H"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt function" >&5
  $as_echo_n "checking for working GNU getopt function... " >&6; }
- if ${gl_cv_func_gnu_getopt+:} false; then :
+ if test "${gl_cv_func_gnu_getopt+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test "$cross_compiling" = yes; then :
                         ac_fn_c_check_decl "$LINENO" "getopt_clip" "ac_cv_have_decl_getopt_clip" "#include <getopt.h>
  "
- if test "x$ac_cv_have_decl_getopt_clip" = xyes; then :
+ if test "x$ac_cv_have_decl_getopt_clip" = x""yes; then :
    gl_cv_func_gnu_getopt=no
  else
    gl_cv_func_gnu_getopt=yes
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5
  $as_echo_n "checking whether getpgrp requires zero arguments... " >&6; }
- if ${ac_cv_func_getpgrp_void+:} false; then :
+ if test "${ac_cv_func_getpgrp_void+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    # Use it with a single arg.
  for ac_func in strftime
  do :
    ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
- if test "x$ac_cv_func_strftime" = xyes; then :
+ if test "x$ac_cv_func_strftime" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_STRFTIME 1
  _ACEOF
    # strftime is in -lintl on SCO UNIX.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5
  $as_echo_n "checking for strftime in -lintl... " >&6; }
- if ${ac_cv_lib_intl_strftime+:} false; then :
+ if test "${ac_cv_lib_intl_strftime+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -12936,7 -11736,7 +12916,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5
  $as_echo "$ac_cv_lib_intl_strftime" >&6; }
- if test "x$ac_cv_lib_intl_strftime" = xyes; then :
+ if test "x$ac_cv_lib_intl_strftime" = x""yes; then :
    $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h
  
  LIBS="-lintl $LIBS"
  for ac_func in grantpt
  do :
    ac_fn_c_check_func "$LINENO" "grantpt" "ac_cv_func_grantpt"
- if test "x$ac_cv_func_grantpt" = xyes; then :
+ if test "x$ac_cv_func_grantpt" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_GRANTPT 1
  _ACEOF
  for ac_func in getpt
  do :
    ac_fn_c_check_func "$LINENO" "getpt" "ac_cv_func_getpt"
- if test "x$ac_cv_func_getpt" = xyes; then :
+ if test "x$ac_cv_func_getpt" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_GETPT 1
  _ACEOF
  # That is because we have not set up to link ncurses in lib-src.
  # It's better to believe a function is not available
  # than to expect to find it in ncurses.
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tparm in -lncurses" >&5
 -$as_echo_n "checking for tparm in -lncurses... " >&6; }
 -if test "${ac_cv_lib_ncurses_tparm+set}" = set; then :
 +# Also we need tputs and friends to be able to build at all.
 +have_tputs_et_al=true
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tputs" >&5
 +$as_echo_n "checking for library containing tputs... " >&6; }
- if ${ac_cv_search_tputs+:} false; then :
++if test "${ac_cv_search_tputs+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
 -  ac_check_lib_save_LIBS=$LIBS
 -LIBS="-lncurses  $LIBS"
 +  ac_func_search_save_LIBS=$LIBS
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
  
  #ifdef __cplusplus
  extern "C"
  #endif
 -char tparm ();
 +char tputs ();
 +int
 +main ()
 +{
 +return tputs ();
 +  ;
 +  return 0;
 +}
 +_ACEOF
 +for ac_lib in '' ncurses terminfo termcap; do
 +  if test -z "$ac_lib"; then
 +    ac_res="none required"
 +  else
 +    ac_res=-l$ac_lib
 +    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
 +  fi
 +  if ac_fn_c_try_link "$LINENO"; then :
 +  ac_cv_search_tputs=$ac_res
 +fi
 +rm -f core conftest.err conftest.$ac_objext \
 +    conftest$ac_exeext
-   if ${ac_cv_search_tputs+:} false; then :
++  if test "${ac_cv_search_tputs+set}" = set; then :
 +  break
 +fi
 +done
- if ${ac_cv_search_tputs+:} false; then :
++if test "${ac_cv_search_tputs+set}" = set; then :
 +
 +else
 +  ac_cv_search_tputs=no
 +fi
 +rm conftest.$ac_ext
 +LIBS=$ac_func_search_save_LIBS
 +fi
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_tputs" >&5
 +$as_echo "$ac_cv_search_tputs" >&6; }
 +ac_res=$ac_cv_search_tputs
 +if test "$ac_res" != no; then :
 +  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 +
 +else
 +  have_tputs_et_al=false
 +fi
 +
 +if test "$have_tputs_et_al" != true; then
 +  as_fn_error $? "I couldn't find termcap functions (tputs and friends).
 +Maybe some development libraries/packages are missing?  Try installing
 +libncurses-dev(el), libterminfo-dev(el) or similar." "$LINENO" 5
 +fi
 +# Must define this when any termcap library is found.
 +
 +$as_echo "#define HAVE_LIBNCURSES 1" >>confdefs.h
 +
 +## FIXME This was the cpp logic, but I am not sure it is right.
 +## The above test has not necessarily found libncurses.
 +HAVE_LIBNCURSES=yes
 +
 +## Use terminfo instead of termcap?
 +## Note only system files NOT using terminfo are:
 +## freebsd < 40000, ms-w32, msdos, netbsd < 599002500, and
 +## darwin|gnu without ncurses.
 +TERMINFO=no
 +LIBS_TERMCAP=
 +case "$opsys" in
 +  ## cygwin: Fewer environment variables to go wrong, more terminal types.
 +  ## hpux10-20: Use the system provided termcap(3) library.
 +  ## openbsd: David Mazieres <dm@reeducation-labor.lcs.mit.edu> says this
 +  ##  is necessary.  Otherwise Emacs dumps core when run -nw.
 +  aix4-2|cygwin|hpux*|irix6-5|openbsd|sol2*|unixware) TERMINFO=yes ;;
 +
 +  ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
 +  ##  The ncurses library has been moved out of the System framework in
 +  ##  Mac OS X 10.2.  So if configure detects it, set the command-line
 +  ##  option to use it.
 +  darwin|gnu*)
 +    ## (HAVE_LIBNCURSES was not always true, but is since 2010-03-18.)
 +    if test "x$HAVE_LIBNCURSES" = "xyes"; then
 +      TERMINFO=yes
 +      LIBS_TERMCAP="-lncurses"
 +    fi
 +    ;;
 +
 +  freebsd)
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether FreeBSD is new enough to use terminfo" >&5
 +$as_echo_n "checking whether FreeBSD is new enough to use terminfo... " >&6; }
-     if ${emacs_cv_freebsd_terminfo+:} false; then :
++    if test "${emacs_cv_freebsd_terminfo+set}" = set; then :
 +  $as_echo_n "(cached) " >&6
 +else
 +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 +/* end confdefs.h.  */
 +#include <osreldate.h>
  int
  main ()
  {
 -return tparm ();
 +#if __FreeBSD_version < 400000
 +fail;
 +#endif
 +
    ;
    return 0;
  }
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
 -  ac_cv_lib_ncurses_tparm=yes
 +  emacs_cv_freebsd_terminfo=yes
  else
 -  ac_cv_lib_ncurses_tparm=no
 +  emacs_cv_freebsd_terminfo=no
  fi
  rm -f core conftest.err conftest.$ac_objext \
      conftest$ac_exeext conftest.$ac_ext
 -LIBS=$ac_check_lib_save_LIBS
  fi
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tparm" >&5
 -$as_echo "$ac_cv_lib_ncurses_tparm" >&6; }
 -if test "x$ac_cv_lib_ncurses_tparm" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBNCURSES 1
 -_ACEOF
  
 -  LIBS="-lncurses $LIBS"
  
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_cv_freebsd_terminfo" >&5
 +$as_echo "$emacs_cv_freebsd_terminfo" >&6; }
 +
 +    if test $emacs_cv_freebsd_terminfo = yes; then
 +      TERMINFO=yes
 +      LIBS_TERMCAP="-lncurses"
 +    else
 +      LIBS_TERMCAP="-ltermcap"
 +    fi
 +    ;;
 +
 +  netbsd)
 +    if test $ac_cv_search_tputs = -lterminfo; then
 +      TERMINFO=yes
 +      LIBS_TERMCAP="-lterminfo"
 +    else
 +      LIBS_TERMCAP="-ltermcap"
 +    fi
 +    ;;
 +
 +esac
 +
 +case "$opsys" in
 +  ## hpux: Make sure we get select from libc rather than from libcurses
 +  ##  because libcurses on HPUX 10.10 has a broken version of select.
 +  ##  We used to use -lc -lcurses, but this may be cleaner.
 +  hpux*) LIBS_TERMCAP="-ltermcap" ;;
 +
 +  openbsd) LIBS_TERMCAP="-lncurses" ;;
 +
 +  ## Must use system termcap, if we use any termcap.  It does special things.
 +  sol2*) test "$TERMINFO" != yes && LIBS_TERMCAP="-ltermcap" ;;
 +esac
 +
 +TERMCAP_OBJ=tparam.o
 +if test $TERMINFO = yes; then
 +
 +$as_echo "#define TERMINFO 1" >>confdefs.h
 +
 +
 +  ## Default used to be -ltermcap.  Add a case above if need something else.
 +  test "x$LIBS_TERMCAP" = "x" && LIBS_TERMCAP="-lcurses"
 +
 +  TERMCAP_OBJ=terminfo.o
  fi
  
  
 -# Do we have res_init, for detecting changes in /etc/resolv.conf?
  
 +
 +# Do we have res_init, for detecting changes in /etc/resolv.conf?
  resolv=no
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
@@@ -13215,20 -11885,19 +13195,20 @@@ $as_echo "#define HAVE_RES_INIT 1" >>co
  fi
  
  # Do we need the Hesiod library to provide the support routines?
 +LIBHESIOD=
  if test "$with_hesiod" != no ; then
 -  # Don't set $LIBS here -- see comments above.
 +  # Don't set $LIBS here -- see comments above.  FIXME which comments?
    ac_fn_c_check_func "$LINENO" "res_send" "ac_cv_func_res_send"
- if test "x$ac_cv_func_res_send" = xyes; then :
+ if test "x$ac_cv_func_res_send" = x""yes; then :
  
  else
    ac_fn_c_check_func "$LINENO" "__res_send" "ac_cv_func___res_send"
- if test "x$ac_cv_func___res_send" = xyes; then :
+ if test "x$ac_cv_func___res_send" = x""yes; then :
  
  else
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_send in -lresolv" >&5
  $as_echo_n "checking for res_send in -lresolv... " >&6; }
- if ${ac_cv_lib_resolv_res_send+:} false; then :
+ if test "${ac_cv_lib_resolv_res_send+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13262,12 -11931,12 +13242,12 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_send" >&5
  $as_echo "$ac_cv_lib_resolv_res_send" >&6; }
- if test "x$ac_cv_lib_resolv_res_send" = xyes; then :
+ if test "x$ac_cv_lib_resolv_res_send" = x""yes; then :
    resolv=yes
  else
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __res_send in -lresolv" >&5
  $as_echo_n "checking for __res_send in -lresolv... " >&6; }
- if ${ac_cv_lib_resolv___res_send+:} false; then :
+ if test "${ac_cv_lib_resolv___res_send+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13301,7 -11970,7 +13281,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___res_send" >&5
  $as_echo "$ac_cv_lib_resolv___res_send" >&6; }
- if test "x$ac_cv_lib_resolv___res_send" = xyes; then :
+ if test "x$ac_cv_lib_resolv___res_send" = x""yes; then :
    resolv=yes
  fi
  
      RESOLVLIB=
    fi
    ac_fn_c_check_func "$LINENO" "hes_getmailhost" "ac_cv_func_hes_getmailhost"
- if test "x$ac_cv_func_hes_getmailhost" = xyes; then :
+ if test "x$ac_cv_func_hes_getmailhost" = x""yes; then :
  
  else
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hes_getmailhost in -lhesiod" >&5
  $as_echo_n "checking for hes_getmailhost in -lhesiod... " >&6; }
- if ${ac_cv_lib_hesiod_hes_getmailhost+:} false; then :
+ if test "${ac_cv_lib_hesiod_hes_getmailhost+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13356,46 -12025,30 +13336,46 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hesiod_hes_getmailhost" >&5
  $as_echo "$ac_cv_lib_hesiod_hes_getmailhost" >&6; }
- if test "x$ac_cv_lib_hesiod_hes_getmailhost" = xyes; then :
+ if test "x$ac_cv_lib_hesiod_hes_getmailhost" = x""yes; then :
 -
 -$as_echo "#define HAVE_LIBHESIOD 1" >>confdefs.h
 -
 +  hesiod=yes
  else
    :
  fi
  
  fi
  
 +
 +  if test x"$hesiod" = xyes; then
 +
 +$as_echo "#define HAVE_LIBHESIOD 1" >>confdefs.h
 +
 +    LIBHESIOD=-lhesiod
 +  fi
  fi
  
 +
  # Do we need libresolv (due to res_init or Hesiod)?
  if test "$resolv" = yes ; then
  
  $as_echo "#define HAVE_LIBRESOLV 1" >>confdefs.h
  
 +  LIBRESOLV=-lresolv
 +else
 +  LIBRESOLV=
  fi
  
 +
  # These tell us which Kerberos-related libraries to use.
 +COM_ERRLIB=
 +CRYPTOLIB=
 +KRB5LIB=
 +DESLIB=
 +KRB4LIB=
 +
  if test "${with_kerberos}" != no; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for com_err in -lcom_err" >&5
  $as_echo_n "checking for com_err in -lcom_err... " >&6; }
- if ${ac_cv_lib_com_err_com_err+:} false; then :
+ if test "${ac_cv_lib_com_err_com_err+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13429,26 -12082,22 +13409,26 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_com_err_com_err" >&5
  $as_echo "$ac_cv_lib_com_err_com_err" >&6; }
- if test "x$ac_cv_lib_com_err_com_err" = xyes; then :
+ if test "x$ac_cv_lib_com_err_com_err" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBCOM_ERR 1
 -_ACEOF
 +  have_com_err=yes
 +else
 +  have_com_err=no
 +fi
  
 -  LIBS="-lcom_err $LIBS"
 +  if test $have_com_err = yes; then
 +    COM_ERRLIB=-lcom_err
 +    LIBS="$COM_ERRLIB $LIBS"
  
 -fi
 +$as_echo "#define HAVE_LIBCOM_ERR 1" >>confdefs.h
  
 -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mit_des_cbc_encrypt in -lk5crypto" >&5
 -$as_echo_n "checking for mit_des_cbc_encrypt in -lk5crypto... " >&6; }
 -if test "${ac_cv_lib_k5crypto_mit_des_cbc_encrypt+set}" = set; then :
 +  fi
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mit_des_cbc_encrypt in -lcrypto" >&5
 +$as_echo_n "checking for mit_des_cbc_encrypt in -lcrypto... " >&6; }
- if ${ac_cv_lib_crypto_mit_des_cbc_encrypt+:} false; then :
++if test "${ac_cv_lib_crypto_mit_des_cbc_encrypt+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
 -LIBS="-lk5crypto  $LIBS"
 +LIBS="-lcrypto  $LIBS"
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
  
@@@ -13468,36 -12117,32 +13448,36 @@@ return mit_des_cbc_encrypt ()
  }
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
 -  ac_cv_lib_k5crypto_mit_des_cbc_encrypt=yes
 +  ac_cv_lib_crypto_mit_des_cbc_encrypt=yes
  else
 -  ac_cv_lib_k5crypto_mit_des_cbc_encrypt=no
 +  ac_cv_lib_crypto_mit_des_cbc_encrypt=no
  fi
  rm -f core conftest.err conftest.$ac_objext \
      conftest$ac_exeext conftest.$ac_ext
  LIBS=$ac_check_lib_save_LIBS
  fi
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_k5crypto_mit_des_cbc_encrypt" >&5
 -$as_echo "$ac_cv_lib_k5crypto_mit_des_cbc_encrypt" >&6; }
 -if test "x$ac_cv_lib_k5crypto_mit_des_cbc_encrypt" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBK5CRYPTO 1
 -_ACEOF
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_mit_des_cbc_encrypt" >&5
 +$as_echo "$ac_cv_lib_crypto_mit_des_cbc_encrypt" >&6; }
- if test "x$ac_cv_lib_crypto_mit_des_cbc_encrypt" = xyes; then :
++if test "x$ac_cv_lib_crypto_mit_des_cbc_encrypt" = x""yes; then :
 +  have_crypto=yes
 +else
 +  have_crypto=no
 +fi
  
 -  LIBS="-lk5crypto $LIBS"
 +  if test $have_crypto = yes; then
 +    CRYPTOLIB=-lcrypto
 +    LIBS="$CRYPTOLIB $LIBS"
  
 -fi
 +$as_echo "#define HAVE_LIBCRYPTO 1" >>confdefs.h
  
 -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mit_des_cbc_encrypt in -lcrypto" >&5
 -$as_echo_n "checking for mit_des_cbc_encrypt in -lcrypto... " >&6; }
 -if test "${ac_cv_lib_crypto_mit_des_cbc_encrypt+set}" = set; then :
 +  fi
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mit_des_cbc_encrypt in -lk5crypto" >&5
 +$as_echo_n "checking for mit_des_cbc_encrypt in -lk5crypto... " >&6; }
- if ${ac_cv_lib_k5crypto_mit_des_cbc_encrypt+:} false; then :
++if test "${ac_cv_lib_k5crypto_mit_des_cbc_encrypt+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
 -LIBS="-lcrypto  $LIBS"
 +LIBS="-lk5crypto  $LIBS"
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
  
@@@ -13517,32 -12162,28 +13497,32 @@@ return mit_des_cbc_encrypt ()
  }
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
 -  ac_cv_lib_crypto_mit_des_cbc_encrypt=yes
 +  ac_cv_lib_k5crypto_mit_des_cbc_encrypt=yes
  else
 -  ac_cv_lib_crypto_mit_des_cbc_encrypt=no
 +  ac_cv_lib_k5crypto_mit_des_cbc_encrypt=no
  fi
  rm -f core conftest.err conftest.$ac_objext \
      conftest$ac_exeext conftest.$ac_ext
  LIBS=$ac_check_lib_save_LIBS
  fi
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_mit_des_cbc_encrypt" >&5
 -$as_echo "$ac_cv_lib_crypto_mit_des_cbc_encrypt" >&6; }
 -if test "x$ac_cv_lib_crypto_mit_des_cbc_encrypt" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBCRYPTO 1
 -_ACEOF
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_k5crypto_mit_des_cbc_encrypt" >&5
 +$as_echo "$ac_cv_lib_k5crypto_mit_des_cbc_encrypt" >&6; }
- if test "x$ac_cv_lib_k5crypto_mit_des_cbc_encrypt" = xyes; then :
++if test "x$ac_cv_lib_k5crypto_mit_des_cbc_encrypt" = x""yes; then :
 +  have_k5crypto=yes
 +else
 +  have_k5crypto=no
 +fi
  
 -  LIBS="-lcrypto $LIBS"
 +  if test $have_k5crypto = yes; then
 +    CRYPTOLIB=-lk5crypto
 +    LIBS="$CRYPTOLIB $LIBS"
  
 -fi
 +$as_echo "#define HAVE_LIBK5CRYPTO 1" >>confdefs.h
  
 +  fi
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
  $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
- if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
+ if test "${ac_cv_lib_krb5_krb5_init_context+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13576,23 -12217,19 +13556,23 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_init_context" >&5
  $as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; }
- if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then :
+ if test "x$ac_cv_lib_krb5_krb5_init_context" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBKRB5 1
 -_ACEOF
 +  have_krb5=yes
 +else
 +  have_krb5=no
 +fi
  
 -  LIBS="-lkrb5 $LIBS"
 +  if test $have_krb5=yes; then
 +    KRB5LIB=-lkrb5
 +    LIBS="$KRB5LIB $LIBS"
  
 -fi
 +$as_echo "#define HAVE_LIBKRB5 1" >>confdefs.h
  
 -  if test "${with_kerberos5}" = no; then
 +  fi
 +    if test "${with_kerberos5}" = no; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for des_cbc_encrypt in -ldes425" >&5
  $as_echo_n "checking for des_cbc_encrypt in -ldes425... " >&6; }
- if ${ac_cv_lib_des425_des_cbc_encrypt+:} false; then :
+ if test "${ac_cv_lib_des425_des_cbc_encrypt+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13626,22 -12263,17 +13606,22 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_des425_des_cbc_encrypt" >&5
  $as_echo "$ac_cv_lib_des425_des_cbc_encrypt" >&6; }
- if test "x$ac_cv_lib_des425_des_cbc_encrypt" = xyes; then :
+ if test "x$ac_cv_lib_des425_des_cbc_encrypt" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBDES425 1
 -_ACEOF
 +  have_des425=yes
 +else
 +  have_des425=no
 +fi
  
 -  LIBS="-ldes425 $LIBS"
 +    if test $have_des425 = yes; then
 +      DESLIB=-ldes425
 +      LIBS="$DESLIB $LIBS"
  
 -else
 -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for des_cbc_encrypt in -ldes" >&5
 +$as_echo "#define HAVE_LIBDES425 1" >>confdefs.h
 +
 +    else
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for des_cbc_encrypt in -ldes" >&5
  $as_echo_n "checking for des_cbc_encrypt in -ldes... " >&6; }
- if ${ac_cv_lib_des_des_cbc_encrypt+:} false; then :
+ if test "${ac_cv_lib_des_des_cbc_encrypt+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13675,23 -12307,20 +13655,23 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_des_des_cbc_encrypt" >&5
  $as_echo "$ac_cv_lib_des_des_cbc_encrypt" >&6; }
- if test "x$ac_cv_lib_des_des_cbc_encrypt" = xyes; then :
+ if test "x$ac_cv_lib_des_des_cbc_encrypt" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBDES 1
 -_ACEOF
 -
 -  LIBS="-ldes $LIBS"
 -
 +  have_des=yes
 +else
 +  have_des=no
  fi
  
 -fi
 +      if test $have_des = yes; then
 +        DESLIB=-ldes
 +        LIBS="$DESLIB $LIBS"
  
 +$as_echo "#define HAVE_LIBDES 1" >>confdefs.h
 +
 +      fi
 +    fi
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb_get_cred in -lkrb4" >&5
  $as_echo_n "checking for krb_get_cred in -lkrb4... " >&6; }
- if ${ac_cv_lib_krb4_krb_get_cred+:} false; then :
+ if test "${ac_cv_lib_krb4_krb_get_cred+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13725,22 -12354,17 +13705,22 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb4_krb_get_cred" >&5
  $as_echo "$ac_cv_lib_krb4_krb_get_cred" >&6; }
- if test "x$ac_cv_lib_krb4_krb_get_cred" = xyes; then :
+ if test "x$ac_cv_lib_krb4_krb_get_cred" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBKRB4 1
 -_ACEOF
 +  have_krb4=yes
 +else
 +  have_krb4=no
 +fi
  
 -  LIBS="-lkrb4 $LIBS"
 +    if test $have_krb4 = yes; then
 +      KRB4LIB=-lkrb4
 +      LIBS="$KRB4LIB $LIBS"
  
 -else
 -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb_get_cred in -lkrb" >&5
 +$as_echo "#define HAVE_LIBKRB4 1" >>confdefs.h
 +
 +    else
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb_get_cred in -lkrb" >&5
  $as_echo_n "checking for krb_get_cred in -lkrb... " >&6; }
- if ${ac_cv_lib_krb_krb_get_cred+:} false; then :
+ if test "${ac_cv_lib_krb_krb_get_cred+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13774,33 -12398,30 +13754,33 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb_krb_get_cred" >&5
  $as_echo "$ac_cv_lib_krb_krb_get_cred" >&6; }
- if test "x$ac_cv_lib_krb_krb_get_cred" = xyes; then :
+ if test "x$ac_cv_lib_krb_krb_get_cred" = x""yes; then :
 -  cat >>confdefs.h <<_ACEOF
 -#define HAVE_LIBKRB 1
 -_ACEOF
 -
 -  LIBS="-lkrb $LIBS"
 -
 +  have_krb=yes
 +else
 +  have_krb=no
  fi
  
 -fi
 +      if test $have_krb = yes; then
 +        KRB4LIB=-lkrb
 +        LIBS="$KRB4LIB $LIBS"
  
 +$as_echo "#define HAVE_LIBKRB 1" >>confdefs.h
 +
 +      fi
 +    fi
    fi
  
    if test "${with_kerberos5}" != no; then
      for ac_header in krb5.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "krb5.h" "ac_cv_header_krb5_h" "$ac_includes_default"
- if test "x$ac_cv_header_krb5_h" = xyes; then :
+ if test "x$ac_cv_header_krb5_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_KRB5_H 1
  _ACEOF
   ac_fn_c_check_member "$LINENO" "krb5_error" "text" "ac_cv_member_krb5_error_text" "#include <krb5.h>
  "
- if test "x$ac_cv_member_krb5_error_text" = xyes; then :
+ if test "x$ac_cv_member_krb5_error_text" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_KRB5_ERROR_TEXT 1
@@@ -13810,7 -12431,7 +13790,7 @@@ _ACEO
  fi
  ac_fn_c_check_member "$LINENO" "krb5_error" "e_text" "ac_cv_member_krb5_error_e_text" "#include <krb5.h>
  "
- if test "x$ac_cv_member_krb5_error_e_text" = xyes; then :
+ if test "x$ac_cv_member_krb5_error_e_text" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_KRB5_ERROR_E_TEXT 1
      for ac_header in des.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "des.h" "ac_cv_header_des_h" "$ac_includes_default"
- if test "x$ac_cv_header_des_h" = xyes; then :
+ if test "x$ac_cv_header_des_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_DES_H 1
  _ACEOF
    for ac_header in kerberosIV/des.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "kerberosIV/des.h" "ac_cv_header_kerberosIV_des_h" "$ac_includes_default"
- if test "x$ac_cv_header_kerberosIV_des_h" = xyes; then :
+ if test "x$ac_cv_header_kerberosIV_des_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_KERBEROSIV_DES_H 1
  _ACEOF
    for ac_header in kerberos/des.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "kerberos/des.h" "ac_cv_header_kerberos_des_h" "$ac_includes_default"
- if test "x$ac_cv_header_kerberos_des_h" = xyes; then :
+ if test "x$ac_cv_header_kerberos_des_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_KERBEROS_DES_H 1
  _ACEOF
      for ac_header in krb.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "krb.h" "ac_cv_header_krb_h" "$ac_includes_default"
- if test "x$ac_cv_header_krb_h" = xyes; then :
+ if test "x$ac_cv_header_krb_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_KRB_H 1
  _ACEOF
    for ac_header in kerberosIV/krb.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "kerberosIV/krb.h" "ac_cv_header_kerberosIV_krb_h" "$ac_includes_default"
- if test "x$ac_cv_header_kerberosIV_krb_h" = xyes; then :
+ if test "x$ac_cv_header_kerberosIV_krb_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_KERBEROSIV_KRB_H 1
  _ACEOF
    for ac_header in kerberos/krb.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "kerberos/krb.h" "ac_cv_header_kerberos_krb_h" "$ac_includes_default"
- if test "x$ac_cv_header_kerberos_krb_h" = xyes; then :
+ if test "x$ac_cv_header_kerberos_krb_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_KERBEROS_KRB_H 1
  _ACEOF
    for ac_header in com_err.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "com_err.h" "ac_cv_header_com_err_h" "$ac_includes_default"
- if test "x$ac_cv_header_com_err_h" = xyes; then :
+ if test "x$ac_cv_header_com_err_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_COM_ERR_H 1
  _ACEOF
  
  fi
  
 +
 +
 +
 +
 +
 +
  # Solaris requires -lintl if you want strerror (which calls dgettext)
  # to return localized messages.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
  $as_echo_n "checking for dgettext in -lintl... " >&6; }
- if ${ac_cv_lib_intl_dgettext+:} false; then :
+ if test "${ac_cv_lib_intl_dgettext+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    ac_check_lib_save_LIBS=$LIBS
@@@ -13959,7 -12574,7 +13939,7 @@@ LIBS=$ac_check_lib_save_LIB
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5
  $as_echo "$ac_cv_lib_intl_dgettext" >&6; }
- if test "x$ac_cv_lib_intl_dgettext" = xyes; then :
+ if test "x$ac_cv_lib_intl_dgettext" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBINTL 1
  _ACEOF
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether localtime caches TZ" >&5
  $as_echo_n "checking whether localtime caches TZ... " >&6; }
- if ${emacs_cv_localtime_cache+:} false; then :
+ if test "${emacs_cv_localtime_cache+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test x$ac_cv_func_tzset = xyes; then
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
  #include <time.h>
 -extern char **environ;
 -unset_TZ ()
 -{
 -  char **from, **to;
 -  for (to = from = environ; (*to = *from); from++)
 -    if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
 -      to++;
 -}
  char TZ_GMT0[] = "TZ=GMT0";
  char TZ_PST8[] = "TZ=PST8";
  main()
    if (putenv (TZ_GMT0) != 0)
      exit (1);
    hour_GMT0 = localtime (&now)->tm_hour;
 -  unset_TZ ();
 +  unsetenv("TZ");
    hour_unset = localtime (&now)->tm_hour;
    if (putenv (TZ_PST8) != 0)
      exit (1);
    if (localtime (&now)->tm_hour == hour_GMT0)
      exit (1);
 -  unset_TZ ();
 +  unsetenv("TZ");
    if (localtime (&now)->tm_hour != hour_unset)
      exit (1);
    exit (0);
@@@ -14030,7 -12653,7 +14010,7 @@@ if test "x$HAVE_TIMEVAL" = xyes; the
    for ac_func in gettimeofday
  do :
    ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
- if test "x$ac_cv_func_gettimeofday" = xyes; then :
+ if test "x$ac_cv_func_gettimeofday" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_GETTIMEOFDAY 1
  _ACEOF
    if test $ac_cv_func_gettimeofday = yes; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gettimeofday can accept two arguments" >&5
  $as_echo_n "checking whether gettimeofday can accept two arguments... " >&6; }
- if ${emacs_cv_gettimeofday_two_arguments+:} false; then :
+ if test "${emacs_cv_gettimeofday_two_arguments+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  ok_so_far=yes
  ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket"
- if test "x$ac_cv_func_socket" = xyes; then :
+ if test "x$ac_cv_func_socket" = x""yes; then :
  
  else
    ok_so_far=no
  
  if test $ok_so_far = yes; then
    ac_fn_c_check_header_mongrel "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default"
- if test "x$ac_cv_header_netinet_in_h" = xyes; then :
+ if test "x$ac_cv_header_netinet_in_h" = x""yes; then :
  
  else
    ok_so_far=no
  fi
  if test $ok_so_far = yes; then
    ac_fn_c_check_header_mongrel "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default"
- if test "x$ac_cv_header_arpa_inet_h" = xyes; then :
+ if test "x$ac_cv_header_arpa_inet_h" = x""yes; then :
  
  else
    ok_so_far=no
  for ac_header in sys/ioctl.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default"
- if test "x$ac_cv_header_sys_ioctl_h" = xyes; then :
+ if test "x$ac_cv_header_sys_ioctl_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_SYS_IOCTL_H 1
  _ACEOF
@@@ -14150,7 -12773,7 +14130,7 @@@ $as_echo "no" >&6; 
  fi
  
  ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
- if test "x$ac_cv_type_pid_t" = xyes; then :
+ if test "x$ac_cv_type_pid_t" = x""yes; then :
  
  else
  
  for ac_header in vfork.h
  do :
    ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default"
- if test "x$ac_cv_header_vfork_h" = xyes; then :
+ if test "x$ac_cv_header_vfork_h" = x""yes; then :
    cat >>confdefs.h <<_ACEOF
  #define HAVE_VFORK_H 1
  _ACEOF
  if test "x$ac_cv_func_fork" = xyes; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5
  $as_echo_n "checking for working fork... " >&6; }
- if ${ac_cv_func_fork_works+:} false; then :
+ if test "${ac_cv_func_fork_works+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test "$cross_compiling" = yes; then :
@@@ -14240,7 -12863,7 +14220,7 @@@ ac_cv_func_vfork_works=$ac_cv_func_vfor
  if test "x$ac_cv_func_vfork" = xyes; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5
  $as_echo_n "checking for working vfork... " >&6; }
- if ${ac_cv_func_vfork_works+:} false; then :
+ if test "${ac_cv_func_vfork_works+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    if test "$cross_compiling" = yes; then :
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
  $as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
- if ${emacs_cv_langinfo_codeset+:} false; then :
+ if test "${emacs_cv_langinfo_codeset+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -14408,7 -13031,7 +14388,7 @@@ $as_echo "#define HAVE_LANGINFO_CODESE
  fi
  
  ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
- if test "x$ac_cv_type_size_t" = xyes; then :
+ if test "x$ac_cv_type_size_t" = x""yes; then :
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_SIZE_T 1
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5
  $as_echo_n "checking for mbstate_t... " >&6; }
- if ${ac_cv_type_mbstate_t+:} false; then :
+ if test "${ac_cv_type_mbstate_t+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -14456,7 -13079,7 +14436,7 @@@ $as_echo "#define mbstate_t int" >>conf
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C restrict keyword" >&5
  $as_echo_n "checking for C restrict keyword... " >&6; }
- if ${emacs_cv_c_restrict+:} false; then :
+ if test "${emacs_cv_c_restrict+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C restricted array declarations" >&5
  $as_echo_n "checking for C restricted array declarations... " >&6; }
- if ${emacs_cv_c_restrict_arr+:} false; then :
+ if test "${emacs_cv_c_restrict_arr+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@@ -14550,25 -13173,24 +14530,25 @@@ if test "x$GCC" = xyes 
     && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
     && test x"`echo $CFLAGS | grep '\-O[23]'`" != x \
     && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
-    as_fn_error "GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'." "$LINENO" 5
+    as_fn_error $? "GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'." "$LINENO" 5
  fi
  
  #### Find out which version of Emacs this is.
 -version=`grep 'defconst[       ]*emacs-version' ${srcdir}/lisp/version.el \
 +version=`grep 'const char emacs_version' ${srcdir}/src/emacs.c \
         | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`
  if test x"${version}" = x; then
 -  as_fn_error $? "can't find current emacs version in \`${srcdir}/lisp/version.el'." "$LINENO" 5
 +  as_fn_error $? "can't find current emacs version in \`${srcdir}/src/emacs.c'." "$LINENO" 5
  fi
  if test x"${version}" != x"$PACKAGE_VERSION"; then
 -  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: version mismatch between \`${srcdir}/configure.in' and \`${srcdir}/lisp/version.el'." >&5
 -$as_echo "$as_me: WARNING: version mismatch between \`${srcdir}/configure.in' and \`${srcdir}/lisp/version.el'." >&2;}
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: version mismatch between \`${srcdir}/configure.in' and \`${srcdir}/src/emacs.c'." >&5
 +$as_echo "$as_me: WARNING: version mismatch between \`${srcdir}/configure.in' and \`${srcdir}/src/emacs.c'." >&2;}
  fi
  
  ### Specify what sort of things we'll be editing into Makefile and config.h.
  ### Use configuration here uncanonicalized to avoid exceeding size limits.
  
  
 +## Unused?
  
  
  
  
  
  
 +## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
 +## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
 +## end of LIBX_BASE, but nothing ever set it.
  
  
  
  
 -
 -
 -
 -
 -
 -
 +## Used in lwlib/Makefile.in.
  
  
  
@@@ -14629,31 -13253,32 +14609,31 @@@ cat >>confdefs.h <<_ACEO
  _ACEOF
  
  
 -cat >>confdefs.h <<_ACEOF
 -#define LD_SWITCH_X_SITE ${LD_SWITCH_X_SITE}
 -_ACEOF
 -
 -
 -cat >>confdefs.h <<_ACEOF
 -#define LD_SWITCH_X_SITE_AUX ${LD_SWITCH_X_SITE_AUX}
 -_ACEOF
 -
 +XMENU_OBJ=
 +XOBJ=
 +FONT_OBJ=
 +if test "${HAVE_X_WINDOWS}" = "yes" ; then
  
 -cat >>confdefs.h <<_ACEOF
 -#define C_SWITCH_X_SITE ${C_SWITCH_X_SITE}
 -_ACEOF
 +$as_echo "#define HAVE_X_WINDOWS 1" >>confdefs.h
  
 +  XMENU_OBJ=xmenu.o
 +  XOBJ="xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o xsettings.o xgselect.o"
 +  FONT_OBJ=xfont.o
 +  if test "$HAVE_XFT" = "yes"; then
 +    FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
 +  elif test "$HAVE_FREETYPE" = "yes"; then
 +    FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
 +  fi
  
 -cat >>confdefs.h <<_ACEOF
 -#define UNEXEC_SRC ${UNEXEC_SRC}
 -_ACEOF
 +fi
  
  
 -if test "${HAVE_X_WINDOWS}" = "yes" ; then
  
 -$as_echo "#define HAVE_X_WINDOWS 1" >>confdefs.h
  
 -fi
 +WIDGET_OBJ=
 +MOTIF_LIBW=
  if test "${USE_X_TOOLKIT}" != "none" ; then
 +  WIDGET_OBJ=widget.o
  
  $as_echo "#define USE_X_TOOLKIT 1" >>confdefs.h
  
@@@ -14665,282 -13290,32 +14645,282 @@@ $as_echo "#define USE_LUCID 1" >>confde
  
  $as_echo "#define USE_MOTIF 1" >>confdefs.h
  
 +    MOTIF_LIBW=-lXm
 +    case "$opsys" in
 +      gnu-linux)
 +        ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
 +        MOTIF_LIBW="$MOTIF_LIBW -lXpm"
 +        ;;
 +
 +      unixware)
 +        ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
 +        ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
 +        MOTIF_LIBW="MOTIF_LIBW -lXimp"
 +        ;;
 +
 +      aix4-2)
 +        ## olson@mcs.anl.gov says -li18n is needed by -lXm.
 +        MOTIF_LIBW="$MOTIF_LIBW -li18n"
 +        ;;
 +    esac
 +    MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
    fi
  fi
 +
 +
 +TOOLKIT_LIBW=
 +case "$USE_X_TOOLKIT" in
 +  MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
 +  LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
 +  none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
 +esac
 +
 +
 +if test "$USE_X_TOOLKIT" = "none"; then
 +  LIBXT_OTHER="\$(LIBXSM)"
 +  OLDXMENU_TARGET="really-oldXMenu"
 +else
 +  LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
 +  OLDXMENU_TARGET="really-lwlib"
 +fi
 +
 +
 +## The X Menu stuff is present in the X10 distribution, but missing
 +## from X11.  If we have X10, just use the installed library;
 +## otherwise, use our own copy.
  if test "${HAVE_X11}" = "yes" ; then
  
  $as_echo "#define HAVE_X11 1" >>confdefs.h
  
 +
 +  if test "$USE_X_TOOLKIT" = "none"; then
 +    OLDXMENU="\${oldXMenudir}/libXMenu11.a"
 +  else
 +    OLDXMENU="\${lwlibdir}/liblw.a"
 +  fi
 +  LIBXMENU="\$(OLDXMENU)"
 +  LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
 +  OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}"
 +else
 +  ## For a syntactically valid Makefile; not actually used for anything.
 +  ## See comments in src/Makefile.in.
 +  OLDXMENU=nothing
 +  ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?).
 +  if test "${HAVE_X_WINDOWS}" = "yes"; then
 +    LIBXMENU="-lXMenu"
 +  else
 +    LIBXMENU=
 +  fi
 +  LIBX_OTHER=
 +  OLDXMENU_DEPS=
 +fi
 +
 +if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
 +  OLDXMENU_TARGET=
 +  OLDXMENU=nothing
 +  LIBXMENU=
 +  OLDXMENU_DEPS=
  fi
 +
 +
 +
 +
 +
 +
 +
  if test "${HAVE_MENUS}" = "yes" ; then
  
  $as_echo "#define HAVE_MENUS 1" >>confdefs.h
  
  fi
 +
  if test "${GNU_MALLOC}" = "yes" ; then
  
  $as_echo "#define GNU_MALLOC 1" >>confdefs.h
  
  fi
 +
 +RALLOC_OBJ=
  if test "${REL_ALLOC}" = "yes" ; then
  
  $as_echo "#define REL_ALLOC 1" >>confdefs.h
  
 +
 +  test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
 +fi
 +
 +
 +if test "$opsys" = "cygwin"; then
 +  CYGWIN_OBJ="sheap.o"
 +  ## Cygwin differs because of its unexec().
 +  PRE_ALLOC_OBJ=
 +  POST_ALLOC_OBJ=lastfile.o
 +else
 +  CYGWIN_OBJ=
 +  PRE_ALLOC_OBJ=lastfile.o
 +  POST_ALLOC_OBJ=
 +fi
 +
 +
 +
 +
 +
 +case "$opsys" in
 +  aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
 +
 +  darwin)
 +   ## The -headerpad option tells ld (see man page) to leave room at the
 +   ## end of the header for adding load commands.  Needed for dumping.
 +   ## 0x690 is the total size of 30 segment load commands (at 56
 +   ## each); under Cocoa 31 commands are required.
 +   if test "$HAVE_NS" = "yes"; then
 +     libs_nsgui="-framework AppKit"
 +     headerpad_extra=6C8
 +   else
 +     libs_nsgui=
 +     headerpad_extra=690
 +   fi
 +   LD_SWITCH_SYSTEM_TEMACS="-prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
 +
 +   ## This is here because src/Makefile.in did some extra fiddling around
 +   ## with LD_SWITCH_SYSTEM.  The cpp logic was:
 +   ##   #ifndef LD_SWITCH_SYSTEM
 +   ##   #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
 +   ## Since all the *bsds define LD_SWITCH_SYSTEM, this simplifies to:
 +   ## not using gcc, darwin system not on an alpha (ie darwin, since
 +   ## darwin + alpha does not occur).
 +   ## Because this was done in src/Makefile.in, the resulting part of
 +   ## LD_SWITCH_SYSTEM was not used in configure (ie, in ac_link).
 +   ## It therefore seems cleaner to put this in LD_SWITCH_SYSTEM_TEMACS,
 +   ## rather than LD_SWITCH_SYSTEM.
 +   test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
 +     LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
 +   ;;
 +
 +  ## LD_SWITCH_X_SITE_AUX is a -R option saying where to find X at run-time.
 +  ## When handled by cpp, this was in LD_SWITCH_SYSTEM.  However, at
 +  ## the point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_AUX
 +  ## had not yet been defined and was expanded to null.  Hence LD_SWITCH_SYSTEM
 +  ## had different values in configure (in ac_link) and src/Makefile.in.
 +  ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
 +  gnu-linux) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_AUX)" ;;
 +
 +  *) LD_SWITCH_SYSTEM_TEMACS= ;;
 +esac
 +
 +if test "$NS_IMPL_GNUSTEP" = "yes"; then
 +  LD_SWITCH_SYSTEM_TEMACS="${LD_SWITCH_SYSTEM_TEMACS} -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES} -lgnustep-gui -lgnustep-base -lobjc -lpthread"
 +fi
 +
 +
 +
 +
 +LD_FIRSTFLAG=
 +ORDINARY_LINK=
 +case "$opsys" in
 +  ## gnu: GNU needs its own crt0.
 +  aix4-2|cygwin|darwin|gnu|hpux*|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
 +
 +  ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the
 +  ## library search parth, i.e. it won't search /usr/lib for libc and
 +  ## friends.  Using -nostartfiles instead avoids this problem, and
 +  ## will also work on earlier NetBSD releases.
 +  netbsd|openbsd) LD_FIRSTFLAG="-nostartfiles" ;;
 +
 +  ## macpcc: NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp> says
 +  ##   MkLinux/LinuxPPC needs this.
 +  ## ibms390x only supports opsys = gnu-linux so it can be added here.
 +  gnu-*)
 +    case "$machine" in
 +      macppc|ibms390x) LD_FIRSTFLAG="-nostdlib" ;;
 +    esac
 +    ;;
 +esac
 +
 +
 +if test "x$ORDINARY_LINK" = "xyes"; then
 +
 +  LD_FIRSTFLAG=""
 +
 +$as_echo "#define ORDINARY_LINK 1" >>confdefs.h
 +
 +
 +## The system files defining neither ORDINARY_LINK nor LD_FIRSTFLAG are:
 +## freebsd, gnu-* not on macppc|ibms390x.
 +elif test "x$GCC" = "xyes" && test "x$LD_FIRSTFLAG" = "x"; then
 +
 +  ## Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
 +  ## places that are difficult to figure out at make time.  Fortunately,
 +  ## these same versions allow you to pass arbitrary flags on to the
 +  ## linker, so there is no reason not to use it as a linker.
 +  ##
 +  ## Well, it is not quite perfect.  The "-nostdlib" keeps GCC from
 +  ## searching for libraries in its internal directories, so we have to
 +  ## ask GCC explicitly where to find libgcc.a (LIB_GCC below).
 +  LD_FIRSTFLAG="-nostdlib"
 +fi
 +
 +## FIXME? What setting of EDIT_LDFLAGS should this have?
 +test "$NS_IMPL_GNUSTEP" = "yes" && LD_FIRSTFLAG="-rdynamic"
 +
 +
 +
 +
 +## FIXME? The logic here is not precisely the same as that above.
 +## There is no check here for a pre-defined LD_FIRSTFLAG.
 +## Should we only be setting LIB_GCC if LD ~ -nostdlib?
 +LIB_GCC=
 +if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
 +
 +  case "$opsys" in
 +    freebsd|netbsd|openbsd) LIB_GCC= ;;
 +
 +    gnu-*)
 +      ## armin76@gentoo.org reported that the lgcc_s flag is necessary to
 +      ## build on ARM EABI under GNU/Linux.  (Bug#5518)
 +      ## Note that m/arm.h never bothered to undefine LIB_GCC first.
 +      if test "$machine" = "arm"; then
 +        LIB_GCC="-lgcc_s"
 +      else
 +        ## FIXME? s/gnu-linux.h used to define LIB_GCC as below, then
 +        ## immediately undefine it again and redefine it to empty.
 +        ## Was the C_SWITCH_X_SITE part really necessary?
 +##      LIB_GCC=`$CC $C_SWITCH_X_SITE -print-libgcc-file-name`
 +        LIB_GCC=
 +      fi
 +      ;;
 +
 +    ## Ask GCC where to find libgcc.a.
 +    *) LIB_GCC=`$CC -print-libgcc-file-name 2> /dev/null` ;;
 +  esac
 +fi
 +
 +
 +TOOLTIP_SUPPORT=
 +WINDOW_SUPPORT=
 +## If we're using X11/GNUstep, define some consequences.
 +if test "$HAVE_X_WINDOWS" = "yes" || test "$HAVE_NS" = "yes"; then
 +
 +$as_echo "#define HAVE_WINDOW_SYSTEM 1" >>confdefs.h
 +
 +
 +$as_echo "#define HAVE_MOUSE 1" >>confdefs.h
 +
 +  MOUSE_SUPPORT="\$(REAL_MOUSE_SUPPORT)"
 +  TOOLTIP_SUPPORT="\${lispsource}/mouse.elc"
 +
 +  WINDOW_SUPPORT="\$(BASE_WINDOW_SUPPORT)"
 +  test "$HAVE_X_WINDOWS" = "yes" && \
 +    WINDOW_SUPPORT="$WINDOW_SUPPORT \$(X_WINDOW_SUPPORT)"
 +
  fi
  
  
  
  
 +
 +
 +
  #### Report on what we decided to do.
  #### Report GTK as a toolkit, even if it doesn't use Xt.
  #### It makes printing result more understandable as using GTK sets
@@@ -14977,17 -13352,12 +14957,17 @@@ echo "  Does Emacs use -lXaw3d
  echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
  echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
  echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
 -echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $ac_gif_lib_name"
 +echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $LIBGIF"
  echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
  echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
 +echo "  Does Emacs use imagemagick?                             ${HAVE_IMAGEMAGICK}"
 +
  echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
  echo "  Does Emacs use -ldbus?                                  ${HAVE_DBUS}"
  echo "  Does Emacs use -lgconf?                                 ${HAVE_GCONF}"
 +echo "  Does Emacs use -lselinux?                               ${HAVE_LIBSELINUX}"
 +echo "  Does Emacs use -lgnutls?                                ${HAVE_GNUTLS}"
 +echo "  Does Emacs use -lxml2?                                  ${HAVE_LIBXML2}"
  
  echo "  Does Emacs use -lfreetype?                              ${HAVE_FREETYPE}"
  echo "  Does Emacs use -lm17n-flt?                              ${HAVE_M17N_FLT}"
@@@ -15019,11 -13389,6 +14999,6 @@@ to run if these resources are not insta
     echo
  fi
  
- if test "$HAVE_DBUS" = yes && test "${opsys}" != "gnu-linux"; then
-   echo "D-Bus integration has been tested for GNU/Linux only."
-   echo
- fi
  
  # Remove any trailing slashes in these variables.
  test "${prefix}" != NONE &&
  test "${exec_prefix}" != NONE &&
    exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`
  
 -# Now get this: Some word that is part of the ${srcdir} directory name
 -# or the ${configuration} value might, just might, happen to be an
 -# identifier like `sun4' or `i386' or something, and be predefined by
 -# the C preprocessor to some helpful value like 1, or maybe the empty
 -# string.  Needless to say consequent macro substitutions are less
 -# than conducive to the makefile finding the correct directory.
 -cpp_undefs="`echo $srcdir $configuration $canonical unix |
 -  sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/  *$//' \
 -  -e 's/  */ -U/g' -e 's/-U[0-9][^ ]*//g'`"
 -
 -## Check if the C preprocessor will convert `..' to `. .'.  If so, set
 -## CPP_NEED_TRADITIONAL to `yes' so that the code to generate Makefile
 -## from Makefile.c can correctly provide the arg `-traditional' to the
 -## C preprocessor.
 -
 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 -/* end confdefs.h.  */
 -yes..yes
 -_ACEOF
 -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 -  $EGREP "yes..yes" >/dev/null 2>&1; then :
 -  CPP_NEED_TRADITIONAL=no
 -else
 -  CPP_NEED_TRADITIONAL=yes
 -fi
 -rm -f conftest*
 -
 -
 -ac_config_files="$ac_config_files Makefile lib-src/Makefile.c:lib-src/Makefile.in oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile.c:src/Makefile.in lwlib/Makefile lisp/Makefile leim/Makefile"
 +ac_config_files="$ac_config_files Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile"
  
  ac_config_commands="$ac_config_commands default"
  
@@@ -15099,21 -13492,10 +15074,10 @@@ $as_echo "$as_me: WARNING: cache variab
       :end' >>confcache
  if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
    if test -w "$cache_file"; then
-     if test "x$cache_file" != "x/dev/null"; then
+     test "x$cache_file" != "x/dev/null" &&
        { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
  $as_echo "$as_me: updating cache $cache_file" >&6;}
-       if test ! -f "$cache_file" || test -h "$cache_file"; then
-       cat confcache >"$cache_file"
-       else
-         case $cache_file in #(
-         */* | ?:*)
-         mv -f confcache "$cache_file"$$ &&
-         mv -f "$cache_file"$$ "$cache_file" ;; #(
-         *)
-         mv -f confcache "$cache_file" ;;
-       esac
-       fi
-     fi
+     cat confcache >$cache_file
    else
      { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
  $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
@@@ -15145,8 -13527,7 +15109,8 @@@ LTLIBOBJS=$ac_ltlibobj
  
  
  
- : "${CONFIG_STATUS=./config.status}"
 +
+ : ${CONFIG_STATUS=./config.status}
  ac_write_fail=0
  ac_clean_files_save=$ac_clean_files
  ac_clean_files="$ac_clean_files $CONFIG_STATUS"
  IFS=" ""      $as_nl"
  
  # Find who we are.  Look in the path if we contain no directory separator.
- as_myself=
  case $0 in #((
    *[\\/]* ) as_myself=$0 ;;
    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@@ -15554,8 -13934,8 +15517,8 @@@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wr
  # report actual input values of CONFIG_FILES etc. instead of their
  # values after options handling.
  ac_log="
 -This file was extended by emacs $as_me 23.2.90, which was
 +This file was extended by emacs $as_me 24.0.50, which was
- generated by GNU Autoconf 2.68.  Invocation command line was
+ generated by GNU Autoconf 2.67.  Invocation command line was
  
    CONFIG_FILES    = $CONFIG_FILES
    CONFIG_HEADERS  = $CONFIG_HEADERS
@@@ -15620,8 -14000,8 +15583,8 @@@ _ACEO
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
  ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
  ac_cs_version="\\
 -emacs config.status 23.2.90
 +emacs config.status 24.0.50
- configured by $0, generated by GNU Autoconf 2.68,
+ configured by $0, generated by GNU Autoconf 2.67,
    with options \\"\$ac_cs_config\\"
  
  Copyright (C) 2010 Free Software Foundation, Inc.
@@@ -15737,7 -14117,7 +15700,7 @@@ cat >>$CONFIG_STATUS <<_ACEOF || ac_wri
  #
  # INIT-COMMANDS
  #
 -GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPP_NEED_TRADITIONAL="$CPP_NEED_TRADITIONAL" CPPFLAGS="$CPPFLAGS" cpp_undefs="$cpp_undefs"
 +GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"
  
  _ACEOF
  
    case $ac_config_target in
      "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h:src/config.in" ;;
      "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
 -    "lib-src/Makefile.c") CONFIG_FILES="$CONFIG_FILES lib-src/Makefile.c:lib-src/Makefile.in" ;;
 +    "lib-src/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src/Makefile" ;;
      "oldXMenu/Makefile") CONFIG_FILES="$CONFIG_FILES oldXMenu/Makefile" ;;
      "doc/emacs/Makefile") CONFIG_FILES="$CONFIG_FILES doc/emacs/Makefile" ;;
      "doc/misc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/misc/Makefile" ;;
      "doc/lispintro/Makefile") CONFIG_FILES="$CONFIG_FILES doc/lispintro/Makefile" ;;
      "doc/lispref/Makefile") CONFIG_FILES="$CONFIG_FILES doc/lispref/Makefile" ;;
 -    "src/Makefile.c") CONFIG_FILES="$CONFIG_FILES src/Makefile.c:src/Makefile.in" ;;
 +    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
      "lwlib/Makefile") CONFIG_FILES="$CONFIG_FILES lwlib/Makefile" ;;
      "lisp/Makefile") CONFIG_FILES="$CONFIG_FILES lisp/Makefile" ;;
      "leim/Makefile") CONFIG_FILES="$CONFIG_FILES leim/Makefile" ;;
      "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
  
--  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
++  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
    esac
  done
  
  # after its creation but before its name has been assigned to `$tmp'.
  $debug ||
  {
-   tmp= ac_tmp=
+   tmp=
    trap 'exit_status=$?
-   : "${ac_tmp:=$tmp}"
-   { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+   { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
  ' 0
    trap 'as_fn_exit 1' 1 2 13 15
  }
  
  {
    tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-   test -d "$tmp"
+   test -n "$tmp" && test -d "$tmp"
  }  ||
  {
    tmp=./conf$$-$RANDOM
    (umask 077 && mkdir "$tmp")
  } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
- ac_tmp=$tmp
  
  # Set up the scripts for CONFIG_FILES section.
  # No need to generate them if there are no CONFIG_FILES.
  # This happens for instance with `./config.status config.h'.
  if test -n "$CONFIG_FILES"; then
  
 -
 +if $AWK 'BEGIN { getline <"/dev/null" }' </dev/null 2>/dev/null; then
 +  ac_cs_awk_getline=:
 +  ac_cs_awk_pipe_init=
 +  ac_cs_awk_read_file='
 +      while ((getline aline < (F[key])) > 0)
 +      print(aline)
 +      close(F[key])'
 +  ac_cs_awk_pipe_fini=
 +else
 +  ac_cs_awk_getline=false
 +  ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\""
 +  ac_cs_awk_read_file='
 +      print "|#_!!_#|"
 +      print "cat " F[key] " &&"
 +      '$ac_cs_awk_pipe_init
 +  # The final `:' finishes the AND list.
 +  ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }'
 +fi
  ac_cr=`echo X | tr X '\015'`
  # On cygwin, bash can eat \r inside `` if the user requested igncr.
  # But we know of no other shell where ac_cr would be empty at this
    ac_cs_awk_cr=$ac_cr
  fi
  
- echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+ echo 'BEGIN {' >"$tmp/subs1.awk" &&
  _ACEOF
  
-   echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' &&
 +# Create commands to substitute file output variables.
 +{
 +  echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" &&
++  echo 'cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&' &&
 +  echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' &&
 +  echo "_ACAWK" &&
 +  echo "_ACEOF"
 +} >conf$$files.sh &&
 +. ./conf$$files.sh ||
 +  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 +rm -f conf$$files.sh
  
  {
    echo "cat >conf$$subs.awk <<_ACEOF" &&
  rm -f conf$$subs.sh
  
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+ cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
  _ACEOF
  sed -n '
  h
@@@ -15927,10 -14277,10 +15888,10 @@@ t deli
  rm -f conf$$subs.awk
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
  _ACAWK
- cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ cat >>"\$tmp/subs1.awk" <<_ACAWK &&
    for (key in S) S_is_set[key] = 1
    FS = "\a"
 -
 +  \$ac_cs_awk_pipe_init
  }
  {
    line = $ 0
      } else
        len += 1 + keylen
    }
 -
 +  if (nfields == 3 && !substed) {
 +    key = field[2]
 +    if (F[key] != "" && line ~ /^[     ]*@.*@[         ]*$/) {
 +      \$ac_cs_awk_read_file
 +      next
 +    }
 +  }
    print line
  }
 -
 +\$ac_cs_awk_pipe_fini
  _ACAWK
  _ACEOF
  cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@@ -15965,7 -14309,7 +15926,7 @@@ if sed "s/$ac_cr//" < /dev/null > /dev/
    sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
  else
    cat
- fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
    || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
  _ACEOF
  
@@@ -15999,7 -14343,7 +15960,7 @@@ fi # test -n "$CONFIG_FILES
  # No need to generate them if there are no CONFIG_HEADERS.
  # This happens for instance with `./config.status Makefile'.
  if test -n "$CONFIG_HEADERS"; then
- cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+ cat >"$tmp/defines.awk" <<\_ACAWK ||
  BEGIN {
  _ACEOF
  
  # handling of long lines.
  ac_delim='%!_!# '
  for ac_last_try in false false :; do
-   ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-   if test -z "$ac_tt"; then
+   ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+   if test -z "$ac_t"; then
      break
    elif $ac_last_try; then
      as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
    esac
    case $ac_mode$ac_tag in
    :[FHL]*:*);;
--  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
++  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
    :[FH]-) ac_tag=-:-;;
    :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
    esac
      for ac_f
      do
        case $ac_f in
-       -) ac_f="$ac_tmp/stdin";;
+       -) ac_f="$tmp/stdin";;
        *) # Look for the file first in the build tree, then in the source tree
         # (if the path is not absolute).  The absolute path cannot be DOS-style,
         # because $ac_f cannot contain `:'.
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
--         as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
++         as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
        esac
        case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
        as_fn_append ac_file_inputs " '$ac_f'"
@@@ -16167,8 -14511,8 +16128,8 @@@ $as_echo "$as_me: creating $ac_file" >&
      esac
  
      case $ac_tag in
-     *:-:* | *:-) cat >"$ac_tmp/stdin" \
-       || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+     *:-:* | *:-) cat >"$tmp/stdin" \
 -      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
++      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
      esac
      ;;
    esac
@@@ -16298,27 -14642,21 +16259,26 @@@ s&@abs_top_builddir@&$ac_abs_top_buildd
  s&@INSTALL@&$ac_INSTALL&;t t
  $ac_datarootdir_hack
  "
 -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
 +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" |
 +if $ac_cs_awk_getline; then
-   $AWK -f "$ac_tmp/subs.awk"
++  $AWK -f "$tmp/subs.awk"
 +else
-   $AWK -f "$ac_tmp/subs.awk" | $SHELL
- fi \
-   >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
++  $AWK -f "$tmp/subs.awk" | $SHELL
++fi >$tmp/out \
+   || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  
  test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-   { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-   { ac_out=`sed -n '/^[        ]*datarootdir[  ]*:*=/p' \
-       "$ac_tmp/out"`; test -z "$ac_out"; } &&
+   { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+   { ac_out=`sed -n '/^[        ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
  which seems to be undefined.  Please make sure it is defined" >&5
  $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
  which seems to be undefined.  Please make sure it is defined" >&2;}
  
-   rm -f "$ac_tmp/stdin"
+   rm -f "$tmp/stdin"
    case $ac_file in
-   -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-   *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+   -) cat "$tmp/out" && rm -f "$tmp/out";;
+   *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
    esac \
    || as_fn_error $? "could not create $ac_file" "$LINENO" 5
   ;;
    if test x"$ac_file" != x-; then
      {
        $as_echo "/* $configure_input  */" \
-       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-     } >"$ac_tmp/config.h" \
+       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+     } >"$tmp/config.h" \
        || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-     if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+     if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
  $as_echo "$as_me: $ac_file is unchanged" >&6;}
      else
        rm -f "$ac_file"
-       mv "$ac_tmp/config.h" "$ac_file" \
+       mv "$tmp/config.h" "$ac_file" \
        || as_fn_error $? "could not create $ac_file" "$LINENO" 5
      fi
    else
      $as_echo "/* $configure_input  */" \
-       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
        || as_fn_error $? "could not create -" "$LINENO" 5
    fi
   ;;
@@@ -16361,9 -14699,52 +16321,9 @@@ for dir in etc lisp ; d
    test -d ${dir} || mkdir ${dir}
  done
  
 -# Build src/Makefile from ${srcdir}/src/Makefile.c
 -# and lib-src/Makefile from ${srcdir}/lib-src/Makefile.c
 -# This must be done after src/config.h is built, since we rely on that file.
 -
  echo creating src/epaths.h
  ${MAKE-make} epaths-force
  
 -# As of 2000-11-19, newest development versions of GNU cpp preprocess
 -# `..' to `. .'  unless invoked with -traditional
 -
 -if test "x$GCC" = xyes && test "x$CPP_NEED_TRADITIONAL" = xyes; then
 -  CPPFLAGS="$CPPFLAGS -traditional"
 -fi
 -
 -echo creating lib-src/Makefile
 -( cd lib-src
 -  rm -f junk.c junk1.c junk2.c
 -  sed -e '/start of cpp stuff/q' \
 -      < Makefile.c > junk1.c
 -  sed -e '1,/start of cpp stuff/d'\
 -      -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
 -      < Makefile.c > junk.c
 -  $CPP -P $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
 -      sed -e 's/^ /   /' -e '/^#/d' -e '/^[   \f]*$/d' > junk2.c
 -  cat junk1.c junk2.c > Makefile.new
 -  rm -f junk.c junk1.c junk2.c
 -  chmod 444 Makefile.new
 -  mv -f Makefile.new Makefile
 -)
 -
 -echo creating src/Makefile
 -( cd src
 -  rm -f junk.c junk1.c junk2.c
 -  sed -e '/start of cpp stuff/q' \
 -      < Makefile.c > junk1.c
 -  sed -e '1,/start of cpp stuff/d'\
 -      -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
 -      < Makefile.c > junk.c
 -  $CPP -P $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
 -      sed -e 's/^ /   /' -e '/^#/d' -e '/^[   \f]*$/d' > junk2.c
 -  cat junk1.c junk2.c > Makefile.new
 -  rm -f junk.c junk1.c junk2.c
 -  chmod 444 Makefile.new
 -  mv -f Makefile.new Makefile
 -)
 -
  if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
    echo creating src/.gdbinit
    echo source $srcdir/src/.gdbinit > src/.gdbinit
diff --combined configure.in
index 3126a3766002e914fac159ef1a39c9901ac8703c,ca68db1b83d7c74c218d99a0a7da3842d6d09ee5..c018db912cefe6836fee270730ff8b6e7717ecdd
@@@ -2,11 -2,9 +2,11 @@@ dnl  Autoconf script for GNU Emac
  dnl To rebuild the `configure' script from this, execute the command
  dnl   autoconf
  dnl in the directory containing this script.
 +dnl If you changed any AC_DEFINES, also run autoheader.
  dnl
 -dnl  Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003,
 -dnl    2004, 2005, 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
 +dnl  Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004,
 +dnl    2005, 2006, 2007, 2008, 2009, 2010
 +dnl    Free Software Foundation, Inc.
  dnl
  dnl  This file is part of GNU Emacs.
  dnl
@@@ -23,8 -21,8 +23,8 @@@ dn
  dnl  You should have received a copy of the GNU General Public License
  dnl  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
  
 -AC_PREREQ(2.62)
 -AC_INIT(emacs, 23.2.90)
 +AC_PREREQ(2.65)
 +AC_INIT(emacs, 24.0.50)
  AC_CONFIG_HEADER(src/config.h:src/config.in)
  AC_CONFIG_SRCDIR(src/lisp.h)
  
@@@ -32,10 -30,6 +32,10 @@@ dnl Support for --program-prefix, --pro
  dnl --program-transform-name options
  AC_ARG_PROGRAM
  
 +dnl It is important that variables on the RHS not be expanded here,
 +dnl hence the single quotes.  This is per the GNU coding standards, see
 +dnl (autoconf) Installation Directory Variables
 +dnl See also epaths.h below.
  lispdir='${datadir}/emacs/${version}/lisp'
  locallisppath='${datadir}/emacs/${version}/site-lisp:'\
  '${datadir}/emacs/site-lisp'
@@@ -97,26 -91,10 +97,26 @@@ if test "${with_kerberos5}" != no; the
  fi
  
  OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
 +dnl FIXME hesiod support may not be present, so it seems like an error
 +dnl to define, or at least use, this unconditionally.
  if test "$with_hesiod" != no; then
    AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
  fi
  
 +OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
 +if test "$with_mmdf" != no; then
 +   AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
 +fi
 +
 +OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
 +if test "$with_mail_unlink" != no; then
 +   AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
 +fi
 +
 +AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
 +    [string giving default POP mail host])],
 +    AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
 +
  OPTION_DEFAULT_ON([sound],[don't compile with sound support])
  
  OPTION_DEFAULT_ON([sync-input],[process async input synchronously])
@@@ -129,7 -107,7 +129,7 @@@ dnl This should be the last --with opti
  dnl added later on when we find the path of X, and it's best to
  dnl keep them together visually.
  AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
 - [use an X toolkit (KIT one of: yes, lucid, athena, motif, gtk, no)])],
 + [use an X toolkit (KIT one of: yes or gtk, gtk3, lucid or athena, motif, no)])],
  [       case "${withval}" in
            y | ye | yes )      val=gtk ;;
            n | no )            val=no  ;;
            a | at | ath | athe | athen | athena )      val=athena ;;
            m | mo | mot | moti | motif )       val=motif ;;
            g | gt | gtk  )     val=gtk ;;
 +          gtk3  )     val=gtk3 ;;
            * )
  AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
 -this option's value should be `yes', `no', `lucid', `athena', `motif' or `gtk'.
 -`yes' and `gtk' are synonyms. `athena' and `lucid' are synonyms.])
 +this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk' or
 +`gtk3'.  `yes' and `gtk' are synonyms. `athena' and `lucid' are synonyms.])
            ;;
          esac
          with_x_toolkit=$val
@@@ -155,8 -132,6 +155,8 @@@ OPTION_DEFAULT_ON([tiff],[don't compil
  OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
  OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
  OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
 +OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
 +OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
  
  OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
  OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
@@@ -170,23 -145,20 +170,23 @@@ OPTION_DEFAULT_OFF([ns],[use nextstep (
  OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
  OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
  OPTION_DEFAULT_ON([gconf],[don't compile with GConf support])
 +OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support])
 +OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support])
  
  ## For the times when you want to build Emacs but don't have
  ## a suitable makeinfo, and can live without the manuals.
  dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
  OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
  
 -dnl Can remove these in Emacs 24.
 -AC_ARG_WITH([gtk],,
 -  [AC_MSG_ERROR([--with-gtk has been removed.  Use --with-x-toolkit to
 -specify a toolkit.])],,)
 -
 -AC_ARG_WITH([gcc],,
 -  [AC_MSG_ERROR([--with-gcc has been removed.  Set the `CC' environment
 -variable to specify a compiler.])],,)
 +## This is an option because I do not know if all info/man support
 +## compressed files, nor how to test if they do so.
 +OPTION_DEFAULT_ON([compress-info],[don't compress the installed Info pages])
 +if test $with_compress_info = yes; then
 +   GZIP_INFO=yes
 +else
 +   GZIP_INFO=
 +fi
 +AC_SUBST(GZIP_INFO)
  
  AC_ARG_WITH([pkg-config-prog],dnl
  [AS_HELP_STRING([--with-pkg-config-prog=PATH],
@@@ -200,7 -172,7 +200,7 @@@ f
  CRT_DIR=
  AC_ARG_WITH([crt-dir],dnl
  [AS_HELP_STRING([--with-crt-dir=DIR],[directory containing crtn.o etc.
 -This option is only used on x86-64 and s390x GNU/Linux architectures.])])
 +The default is /usr/lib, or /usr/lib64 on some platforms.])])
  CRT_DIR="${with_crt_dir}"
  
  AC_ARG_WITH([gnustep-conf],dnl
@@@ -308,16 -280,6 +308,16 @@@ if test x$ac_gc_check_cons_list != x ; 
  [Define this to check for errors in cons list.])
  fi
  
 +AC_ARG_ENABLE(use-lisp-union-type,
 +[AS_HELP_STRING([--enable-use-lisp-union-type],
 +                [use a union for the Lisp_Object data type.
 +              This is only useful for development for catching certain types of bugs.])],
 +if test "${enableval}" != "no"; then
 +   AC_DEFINE(USE_LISP_UNION_TYPE, 1,
 +   [Define this to use a lisp union for the Lisp_Object data type.])
 +fi)
 +
 +
  AC_ARG_ENABLE(profiling,
  [AS_HELP_STRING([--enable-profiling],
                [build emacs with profiling support.
  [ac_enable_profiling="${enableval}"],[])
  if test x$ac_enable_profiling != x ; then
     PROFILING_CFLAGS="-DPROFILING=1 -pg"
 -   PROFILING_LDFLAGS="-pg"
  else
     PROFILING_CFLAGS=
 -   PROFILING_LDFLAGS=
  fi
 +AC_SUBST(PROFILING_CFLAGS)
  
  AC_ARG_ENABLE(autodepend,
  [AS_HELP_STRING([--enable-autodepend],
@@@ -396,7 -359,7 +396,7 @@@ dnl quotation begin
  ### the appropriate operating system and machine description files.
  
  ### You would hope that you could choose an m/*.h file pretty much
 -### based on the machine portion of the configuration name, and an s-
 +### based on the machine portion of the configuration name, and an s/*.h
  ### file based on the operating system portion.  However, it turns out
  ### that each m/*.h file is pretty manufacturer-specific - for
  ### example mips.h is MIPS
  ### /etc/MACHINES doesn't say anything about version numbers, be
  ### prepared to handle anything reasonably.  If version numbers
  ### matter, be sure /etc/MACHINES says something about it.
 -###
 -### Eric Raymond says we should accept strings like "sysvr4" to mean
 -### "System V Release 4"; he writes, "The old convention encouraged
 -### confusion between `system' and `release' levels'."
  
  machine='' opsys='' unported=no
  case "${canonical}" in
    *-*-freebsd* )
      opsys=freebsd
      case "${canonical}" in
 -      alpha*-*-freebsd*)      machine=alpha ;;
 -      arm*-*-freebsd*)          machine=arm ;;
 -      ia64-*-freebsd*)                machine=ia64 ;;
 -      sparc-*-freebsd*)         machine=sparc ;;
 -      sparc64-*-freebsd*)     machine=sparc ;;
 -      powerpc-*-freebsd*)     machine=macppc ;;
 -      i[3456]86-*-freebsd*)   machine=intel386 ;;
 -      amd64-*-freebsd*|x86_64-*-freebsd*) machine=amdx86-64 ;;
 +      alpha*)           machine=alpha ;;
 +      amd64-*|x86_64-*) machine=amdx86-64 ;;
 +      arm*)             machine=arm ;;
 +      ia64-*)           machine=ia64 ;;
 +      i[3456]86-*)      machine=intel386 ;;
 +      powerpc-*)        machine=macppc ;;
 +      sparc-*)          machine=sparc ;;
 +      sparc64-*)        machine=sparc ;;
      esac
    ;;
  
    *-*-kfreebsd*gnu* )
      opsys=gnu-kfreebsd
      case "${canonical}" in
 -      alpha*-*-kfreebsd*)     machine=alpha ;;
 -      ia64-*-kfreebsd*)               machine=ia64 ;;
 -      sparc-*-kfreebsd*)      machine=sparc ;;
 -      sparc64-*-kfreebsd*)    machine=sparc ;;
 -      powerpc-*-kfreebsd*)    machine=macppc ;;
 -      i[3456]86-*-kfreebsd*)  machine=intel386 ;;
 -      amd64-*-kfreebsd*|x86_64-*-kfreebsd*) machine=amdx86-64 ;;
 +      alpha*)           machine=alpha ;;
 +      amd64-*|x86_64-*) machine=amdx86-64 ;;
 +      ia64-*)           machine=ia64 ;;
 +      i[3456]86-*)      machine=intel386 ;;
 +      powerpc-*)        machine=macppc ;;
 +      sparc-*)          machine=sparc ;;
 +      sparc64-*)        machine=sparc ;;
      esac
    ;;
  
    ## NetBSD ports
    *-*-netbsd* )
      opsys=netbsd
 -    if test -f /usr/lib/crti.o; then]
 -dnl The close and open brackets here are because this section is quoted --
 -dnl see the `changequote' comment above.
 -      AC_DEFINE(HAVE_CRTIN, [], [Define to 1 if you have /usr/lib/crti.o.])
 -[   fi
 -
      case "${canonical}" in
 -      alpha*-*-netbsd*)       machine=alpha ;;
 -      i[3456]86-*-netbsd*) machine=intel386 ;;
 -      mips-*-netbsd*) machine=mips ;;
 -      mipsel-*-netbsd*)       machine=mips ;;
 -      mipseb-*-netbsd*)       machine=mips ;;
 -      powerpc-*-netbsd*) machine=macppc ;;
 -      sparc*-*-netbsd*)       machine=sparc ;;
 -      vax-*-netbsd*)  machine=vax ;;
 -      arm-*-netbsd*)  machine=arm ;;
 -      x86_64-*-netbsd*)       machine=amdx86-64 ;;
 -      hppa-*-netbsd*) machine=hp800 ;;
 -      m68k-*-netbsd*) machine=m68k ;;
 +      alpha*)      machine=alpha ;;
 +      x86_64-*)    machine=amdx86-64 ;;
 +      arm-*)       machine=arm ;;
 +      hppa-*)      machine=hp800 ;;
 +      i[3456]86-*) machine=intel386 ;;
 +      m68k-*)      machine=m68k ;;
 +      powerpc-*)   machine=macppc ;;
 +      mips-*)      machine=mips ;;
 +      mipse[bl]-*) machine=mips ;;
 +      sparc*-)     machine=sparc ;;
 +      vax-*)       machine=vax ;;
      esac
    ;;
  
    *-*-openbsd* )
      opsys=openbsd
      case "${canonical}" in
 -      alpha*-*-openbsd*)      machine=alpha ;;
 -      arm-*-openbsd*)          machine=arm ;;
 -      i386-*-openbsd*)         machine=intel386 ;;
 -      powerpc-*-openbsd*)      machine=macppc ;;
 -      sparc*-*-openbsd*)       machine=sparc ;;
 -      vax-*-openbsd*)          machine=vax ;;
 -      x86_64-*-openbsd*)       machine=amdx86-64 ;;
 -      hppa-*-openbsd*)         machine=hp800 ;;
 -    esac
 -  ;;
 -
 -  ## LynxOS ports
 -  *-*-lynxos* )
 -    opsys=lynxos
 -    case "${canonical}" in
 -      i[3456]86-*-lynxos*) machine=intel386 ;;
 -      powerpc-*-lynxos*) machine=powerpc ;;
 +      alpha*)    machine=alpha ;;
 +      x86_64-*)  machine=amdx86-64 ;;
 +      arm-*)     machine=arm ;;
 +      hppa-*)    machine=hp800 ;;
 +      i386-*)    machine=intel386 ;;
 +      powerpc-*) machine=macppc ;;
 +      sparc*)    machine=sparc ;;
 +      vax-*)     machine=vax ;;
      esac
    ;;
  
    s390x-*-linux-gnu* )
      machine=ibms390x opsys=gnu-linux
    ;;
 -  rs6000-ibm-aix4.2* | powerpc-ibm-aix4.2*  )
 +  rs6000-ibm-aix4.[23]* )
      machine=ibmrs6000 opsys=aix4-2
    ;;
 -  rs6000-ibm-aix4.3* | powerpc-ibm-aix4.3*  )
 +  powerpc-ibm-aix4.[23]*  )
      machine=ibmrs6000 opsys=aix4-2
    ;;
 -  rs6000-ibm-aix5* | powerpc-ibm-aix5*  )
 +  rs6000-ibm-aix[56]* )
      machine=ibmrs6000 opsys=aix4-2
    ;;
 -  rs6000-ibm-aix6* | powerpc-ibm-aix6*  )
 +  powerpc-ibm-aix[56]*  )
      machine=ibmrs6000 opsys=aix4-2
    ;;
  
  
    *-sun-solaris* \
      | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
 -    | x86_64-*-solaris2*    | x86_64-*-sunos5*    \
 -    | powerpc*-*-solaris2*  | rs6000-*-solaris2*)
 +    | x86_64-*-solaris2*    | x86_64-*-sunos5*)
      case "${canonical}" in
        i[3456]86-*-* )     machine=intel386 ;;
        amd64-*-*|x86_64-*-*)   machine=amdx86-64 ;;
 -      powerpc* | rs6000* )  machine=ibmrs6000 ;;
        sparc* )                machine=sparc ;;
        * )             unported=yes ;;
      esac
      case "${canonical}" in
 -      *-sunos5.3* | *-solaris2.3* )
 -              opsys=sol2-3
 -              NON_GNU_CPP=/usr/ccs/lib/cpp
 -              ;;
 -      *-sunos5.4* | *-solaris2.4* )
 -              opsys=sol2-4
 -              NON_GNU_CPP=/usr/ccs/lib/cpp
 -              RANLIB="ar -ts"
 -              ;;
 -      *-sunos5.5* | *-solaris2.5* )
 -              opsys=sol2-5
 -              NON_GNU_CPP=/usr/ccs/lib/cpp
 -              RANLIB="ar -ts"
 -              ;;
        *-sunos5.6* | *-solaris2.6* )
                opsys=sol2-6
                NON_GNU_CPP=/usr/ccs/lib/cpp
      machine=ia64 opsys=gnu-linux
    ;;
  
 -  ## Intel 386 machines where we don't care about the manufacturer
 +  ## Intel 386 machines where we don't care about the manufacturer.
    i[3456]86-*-* )
      machine=intel386
      case "${canonical}" in
@@@ -655,6 -654,22 +655,6 @@@ esa
  if test x"${opsys}" = x; then
    case "${canonical}" in
      *-gnu* )                          opsys=gnu ;;
 -    *-sysv4.2uw* )                    opsys=unixware ;;
 -    *-sysv5uw* )                      opsys=unixware ;;
 -    *-sysv5OpenUNIX* )                        opsys=unixware ;;
 -    *-sysv4.1* | *-sysvr4.1* )
 -      NON_GNU_CPP=/usr/lib/cpp
 -      opsys=usg5-4 ;;
 -    *-sysv4.[2-9]* | *-sysvr4.[2-9]* )
 -      if [ x$NON_GNU_CPP = x ]; then
 -        if [ -f /usr/ccs/lib/cpp ]; then
 -          NON_GNU_CPP=/usr/ccs/lib/cpp
 -        else
 -          NON_GNU_CPP=/lib/cpp
 -        fi
 -      fi
 -      opsys=usg5-4-2 ;;
 -    *-sysv4* | *-sysvr4* )            opsys=usg5-4 ;;
      * )
        unported=yes
      ;;
@@@ -722,10 -737,14 +722,10 @@@ the
    CC="$NON_GNU_CC"
  fi
  
 -if test x$GCC = xyes && test "x$GCC_TEST_OPTIONS" != x
 -then
 -  CC="$CC $GCC_TEST_OPTIONS"
 -fi
 -
 -if test x$GCC = x && test "x$NON_GCC_TEST_OPTIONS" != x
 -then
 -  CC="$CC $NON_GCC_TEST_OPTIONS"
 +if test x$GCC = xyes; then
 +  test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
 +else
 +  test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
  fi
  
  dnl checks for Unix variants
@@@ -757,58 -776,15 +757,58 @@@ CFLAGS="$SAVE_CFLAGS
  unset has_option
  unset SAVE_CFLAGS
  
 +### Use -Wold-style-definition if the compiler supports it
 +# This can be removed when conversion to standard C is finished.
 +AC_MSG_CHECKING([whether gcc understands -Wold-style-definition])
 +SAVE_CFLAGS="$CFLAGS"
 +CFLAGS="$CFLAGS -Wold-style-definition"
 +AC_TRY_COMPILE([], [], has_option=yes, has_option=no,)
 +if test $has_option = yes; then
 +   C_WARNINGS_SWITCH="-Wold-style-definition $C_WARNINGS_SWITCH"
 +fi
 +AC_MSG_RESULT($has_option)
 +CFLAGS="$SAVE_CFLAGS"
 +unset has_option
 +unset SAVE_CFLAGS
 +
 +### Use -Wimplicit-function-declaration if the compiler supports it
 +AC_MSG_CHECKING([whether gcc understands -Wimplicit-function-declaration])
 +SAVE_CFLAGS="$CFLAGS"
 +CFLAGS="$CFLAGS -Wimplicit-function-declaration"
 +AC_TRY_COMPILE([], [], has_option=yes, has_option=no,)
 +if test $has_option = yes; then
 +   C_WARNINGS_SWITCH="-Wimplicit-function-declaration $C_WARNINGS_SWITCH"
 +fi
 +AC_MSG_RESULT($has_option)
 +CFLAGS="$SAVE_CFLAGS"
 +unset has_option
 +unset SAVE_CFLAGS
 +
 +AC_SUBST(C_WARNINGS_SWITCH)
 +
 +
  #### Some other nice autoconf tests.
  
  dnl checks for programs
 -AC_PROG_LN_S
  AC_PROG_CPP
  AC_PROG_INSTALL
  if test "x$RANLIB" = x; then
    AC_PROG_RANLIB
  fi
 +
 +## Although we're running on an amd64 kernel, we're actually compiling for
 +## the x86 architecture.  The user should probably have provided an
 +## explicit --build to `configure', but if everything else than the kernel
 +## is running in i386 mode, we can help them out.
 +if test "$machine" = "amdx86-64"; then
 +  AC_CHECK_DECL([i386])
 +  if test "$ac_cv_have_decl_i386" = "yes"; then
 +    canonical=`echo "$canonical" | sed -e 's/^amd64/i386/' -e 's/^x86_64/i386/'`
 +    machine=intel386
 +    machfile="m/${machine}.h"
 +  fi
 +fi
 +
  AC_PATH_PROG(INSTALL_INFO, install-info)
  AC_PATH_PROG(INSTALL_INFO, install-info,, /usr/sbin)
  AC_PATH_PROG(INSTALL_INFO, install-info,:, /sbin)
@@@ -837,7 -813,7 +837,7 @@@ f
  if test "$MAKEINFO" = "no"; then
    if test "x${with_makeinfo}" = "xno"; then
      MAKEINFO=off
 -  elif ! test -e $srcdir/info/emacs; then
 +  elif test ! -e $srcdir/info/emacs; then
      AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.6, and your
  source tree does not seem to have pre-built manuals in the `info' directory.
  Either install a suitable version of makeinfo, or re-run configure
  
  dnl Add our options to ac_link now, after it is set up.
  
 -if test x$GCC = xyes && test "x$GCC_LINK_TEST_OPTIONS" != x
 -then
 -  ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
 -fi
 -
 -if test x$GCC = x && test "x$NON_GCC_LINK_TEST_OPTIONS" != x
 -then
 -  ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
 +if test x$GCC = xyes; then
 +  test "x$GCC_LINK_TEST_OPTIONS" != x && \
 +    ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
 +else
 +  test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
 +    ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
  fi
  
  dnl We need -znocombreloc if we're using a relatively recent GNU ld.
@@@ -862,170 -840,160 +862,170 @@@ dnl Treat GCC specially since it just g
  dnl if not built to support GNU ld.
  
  late_LDFLAGS=$LDFLAGS
 -if test "$GCC" = yes; then
 +if test x$GCC = xyes; then
    LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
  else
    LDFLAGS="$LDFLAGS -znocombreloc"
  fi
  
  AC_MSG_CHECKING([for -znocombreloc])
 -AC_LINK_IFELSE([main(){return 0;}],
 +AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
    [AC_MSG_RESULT(yes)],
    LDFLAGS=$late_LDFLAGS
    [AC_MSG_RESULT(no)])
  
 -#### Extract some information from the operating system and machine files.
 -
 -AC_CHECKING([the machine- and system-dependent files to find out
 - - which libraries the lib-src programs will want, and
 - - whether the GNU malloc routines are usable])
 -
 -### First figure out CFLAGS (which we use for running the compiler here)
 -### and REAL_CFLAGS (which we use for real compilation).
 -### The two are the same except on a few systems, where they are made
 -### different to work around various lossages.  For example,
 -### GCC 2.5 on GNU/Linux needs them to be different because it treats -g
 -### as implying static linking.
 -
 -### If the CFLAGS env var is specified, we use that value
 -### instead of the default.
 -
 -### It's not important that this name contain the PID; you can't run
 -### two configures in the same directory and have anything work
 -### anyway.
 -tempcname="conftest.c"
 -
 -echo '
 -#include "'${srcdir}'/src/'${opsysfile}'"
 -#include "'${srcdir}'/src/'${machfile}'"
 -#ifndef LIBS_MACHINE
 -#define LIBS_MACHINE
 -#endif
 -#ifndef LIBS_SYSTEM
 -#define LIBS_SYSTEM
 -#endif
 -#ifndef C_SWITCH_SYSTEM
 -#define C_SWITCH_SYSTEM
 -#endif
 -#ifndef C_SWITCH_MACHINE
 -#define C_SWITCH_MACHINE
 -#endif
 -configure___ libsrc_libs=LIBS_MACHINE LIBS_SYSTEM
 -configure___ c_switch_system=C_SWITCH_SYSTEM
 -configure___ c_switch_machine=C_SWITCH_MACHINE
  
 -#ifndef LIB_X11_LIB
 -#define LIB_X11_LIB -lX11
 -#endif
 +# The value of CPP is a quoted variable reference, so we need to do this
 +# to get its actual value...
 +CPP=`eval "echo $CPP"`
  
 -#ifndef LIBX11_SYSTEM
 -#define LIBX11_SYSTEM
 -#endif
 -configure___ LIBX=LIB_X11_LIB LIBX11_SYSTEM
  
 -#ifdef UNEXEC
 -configure___ unexec=UNEXEC
 -#else
 -configure___ unexec=unexec.o
 -#endif
 +dnl Not used by any currently supported platform.
 +dnl The function dump-emacs will not be defined and temacs will do
 +dnl (load "loadup") automatically unless told otherwise.
 +CANNOT_DUMP=no
 +case "$opsys" in
 +  your-opsys-here)
 +   CANNOT_DUMP=yes
 +   AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
 +  ;;
 +esac
 +AC_SUBST(CANNOT_DUMP)
  
 -#ifdef SYSTEM_MALLOC
 -configure___ system_malloc=yes
 -#else
 -configure___ system_malloc=no
 -#endif
  
 -#ifdef USE_MMAP_FOR_BUFFERS
 -configure___ use_mmap_for_buffers=yes
 -#else
 -configure___ use_mmap_for_buffers=no
 -#endif
 +UNEXEC_OBJ=unexelf.o
 +case "$opsys" in
 +  # MSDOS uses unexcoff.o
 +  # MSWindows uses unexw32.o
 +  aix4-2)
 +   UNEXEC_OBJ=unexaix.o
 +   ;;
 +  cygwin)
 +   UNEXEC_OBJ=unexcw.o
 +   ;;
 +  darwin)
 +   UNEXEC_OBJ=unexmacosx.o
 +   ;;
 +  hpux10-20 | hpux11)
 +   UNEXEC_OBJ=unexhp9k800.o
 +   ;;
 +  sol2-10)
 +   # Use the Solaris dldump() function, called from unexsol.c, to dump
 +   # emacs, instead of the generic ELF dump code found in unexelf.c.
 +   # The resulting binary has a complete symbol table, and is better
 +   # for debugging and other observability tools (debuggers, pstack, etc).
 +   # 
 +   # If you encounter a problem using dldump(), please consider sending
 +   # a message to the OpenSolaris tools-linking mailing list:
 +   #      http://mail.opensolaris.org/mailman/listinfo/tools-linking
 +   # 
 +   # It is likely that dldump() works with older Solaris too, but this has
 +   # not been tested, so for now this change is for Solaris 10 or newer.
 +   UNEXEC_OBJ=unexsol.o
 +   ;;
 +esac
  
 -#ifndef C_DEBUG_SWITCH
 -#define C_DEBUG_SWITCH -g
 -#endif
 +LD_SWITCH_SYSTEM=
 +case "$opsys" in
 +  freebsd)
 +   ## Let `ld' find image libs and similar things in /usr/local/lib.
 +   ## The system compiler, GCC, has apparently been modified to not
 +   ## look there, contrary to what a stock GCC would do.
 +   LD_SWITCH_SYSTEM=-L/usr/local/lib
 +   ;;
  
 -#ifndef C_OPTIMIZE_SWITCH
 -#ifdef __GNUC__
 -#define C_OPTIMIZE_SWITCH -O2
 -#else
 -#define C_OPTIMIZE_SWITCH -O
 -#endif
 -#endif
 +  gnu-linux)
 +   ## cpp test was "ifdef __mips__", but presumably this is equivalent...
 +   test "$machine" = "mips" && LD_SWITCH_SYSTEM="-G 0"
 +   ;;
  
 -#ifndef C_WARNINGS_SWITCH
 -#define C_WARNINGS_SWITCH ${C_WARNINGS_SWITCH}
 -#endif
 +  netbsd)
 +   LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
 +   ;;
  
 -#ifndef LD_SWITCH_MACHINE
 -#define LD_SWITCH_MACHINE
 -#endif
 +  openbsd)
 +   ## Han Boetes <han@mijncomputer.nl> says this is necessary,
 +   ## otherwise Emacs dumps core on elf systems.
 +   LD_SWITCH_SYSTEM="-Z"
 +   ;;
 +esac
 +AC_SUBST(LD_SWITCH_SYSTEM)
 +
 +ac_link="$ac_link $LD_SWITCH_SYSTEM"
 +
 +## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_AUX,
 +## which has not been defined yet.  When this was handled with cpp,
 +## it was expanded to null when configure sourced the s/*.h file.
 +## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
 +## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
 +## (or somesuch), but because it is supposed to go at the _front_
 +## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
 +## Compare with the gnu-linux case below, which added to the end
 +## of LD_SWITCH_SYSTEM, and so can instead go at the front of
 +## LD_SWITCH_SYSTEM_TEMACS.
 +case "$opsys" in
 +  netbsd|openbsd)
 +   ## _AUX_RPATH is like _AUX, but uses -rpath instead of -R.
 +   LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_AUX_RPATH) $LD_SWITCH_SYSTEM" ;;
 +esac
  
 -#ifndef LD_SWITCH_SYSTEM
 -#define LD_SWITCH_SYSTEM
 -#endif
  
 -#ifndef LD_SWITCH_X_SITE_AUX
 -#define LD_SWITCH_X_SITE_AUX
 -#endif
 +C_SWITCH_MACHINE=
 +if test "$machine" = "alpha"; then
 +  AC_CHECK_DECL([__ELF__])
 +  if test "$ac_cv_have_decl___ELF__" = "yes"; then
 +    ## With ELF, make sure that all common symbols get allocated to in the
 +    ## data section.  Otherwise, the dump of temacs may miss variables in
 +    ## the shared library that have been initialized.  For example, with
 +    ## GNU libc, __malloc_initialized would normally be resolved to the
 +    ## shared library's .bss section, which is fatal.
 +    if test "x$GCC" = "xyes"; then
 +      C_SWITCH_MACHINE="-fno-common"
 +    else
 +      AC_MSG_ERROR([What gives?  Fix me if DEC Unix supports ELF now.])
 +    fi
 +  else
 +    UNEXEC_OBJ=unexalpha.o 
 +  fi
 +fi
 +AC_SUBST(C_SWITCH_MACHINE)
  
 -configure___ ld_switch_system=LD_SWITCH_SYSTEM
 -configure___ ld_switch_machine=LD_SWITCH_MACHINE
 +AC_SUBST(UNEXEC_OBJ)
  
 -#ifdef THIS_IS_CONFIGURE
 +C_SWITCH_SYSTEM=
 +## Some programs in src produce warnings saying certain subprograms
 +## are too complex and need a MAXMEM value greater than 2000 for
 +## additional optimization.  --nils@exp-math.uni-essen.de
 +test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
 +  C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
 +## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
 +## It is redundant in glibc2, since we define _GNU_SOURCE.
 +AC_SUBST(C_SWITCH_SYSTEM)
  
 -/* Get the CFLAGS for tests in configure.  */
 -#ifdef __GNUC__
 -configure___ CFLAGS=C_DEBUG_SWITCH C_OPTIMIZE_SWITCH '${SPECIFIED_CFLAGS}'
 -#else
 -configure___ CFLAGS=C_DEBUG_SWITCH '${SPECIFIED_CFLAGS}'
 -#endif
  
 -#else /* not THIS_IS_CONFIGURE */
 +LIBS_SYSTEM=
 +case "$opsys" in
 +  ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
 +  aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
  
 -/* Get the CFLAGS for real compilation.  */
 -#ifdef __GNUC__
 -configure___ REAL_CFLAGS=C_DEBUG_SWITCH C_OPTIMIZE_SWITCH C_WARNINGS_SWITCH ${PROFILING_CFLAGS} '${SPECIFIED_CFLAGS}'
 -#else
 -configure___ REAL_CFLAGS=C_DEBUG_SWITCH '${SPECIFIED_CFLAGS}'
 -#endif
 +  freebsd) LIBS_SYSTEM="-lutil" ;;
  
 -#endif /* not THIS_IS_CONFIGURE */
 -' > ${tempcname}
 +  hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
  
 -LDFLAGS="${LDFLAGS} ${PROFILING_LDFLAGS}"
 +  sol2*) LIBS_SYSTEM="-lsocket -lnsl -lkstat" ;;
  
 -# The value of CPP is a quoted variable reference, so we need to do this
 -# to get its actual value...
 -CPP=`eval "echo $CPP"`
 -[eval `${CPP} -Isrc ${tempcname} \
 -       | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
 -if test "x$SPECIFIED_CFLAGS" = x; then
 -  eval `${CPP} -Isrc -DTHIS_IS_CONFIGURE ${tempcname} \
 -       | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
 -else
 -  REAL_CFLAGS="$CFLAGS"
 -fi]
 -rm ${tempcname}
 +  ## Motif needs -lgen.
 +  unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
 +esac
 +AC_SUBST(LIBS_SYSTEM)
  
 -ac_link="$ac_link $ld_switch_machine $ld_switch_system"
  
  ### Make sure subsequent tests use flags consistent with the build flags.
  
  if test x"${OVERRIDE_CPPFLAGS}" != x; then
    CPPFLAGS="${OVERRIDE_CPPFLAGS}"
  else
 -  CPPFLAGS="$c_switch_system $c_switch_machine $CPPFLAGS"
 +  CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
  fi
  
  dnl For AC_FUNC_GETLOADAVG, at least:
@@@ -1034,84 -1002,30 +1034,84 @@@ AC_CONFIG_LIBOBJ_DIR(src
  dnl Do this early because it can frob feature test macros for Unix-98 &c.
  AC_SYS_LARGEFILE
  
 -## Note: at present CRT_DIR is only used for amdx86-64 and ibms390x.
 -## Other machine types hard-code the location in src/[ms]/*.h.
 -case "${canonical}" in
 -  x86_64-*-linux-gnu* | s390x-*-linux-gnu* )
 -   ## On x86-64 and s390x GNU/Linux distributions, the standard library
 -   ## can be in a variety of places.  We only try /usr/lib64 and /usr/lib.
 -   ## For anything else (eg /usr/lib32), it is up the user to specify
 -   ## the location (bug#5655).
 -   ## Test for crtn.o, not just the directory, because sometimes the
 -   ## directory exists but does not have the relevant files (bug#1287).
 -   ## If user specified a crt-dir, use that unconditionally.
 -   if test "X$CRT_DIR" = "X"; then
 -     CRT_DIR=/usr/lib
 -     test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64
 -   fi
  
 -   test -e $CRT_DIR/crtn.o || test -e $CRT_DIR/crt0.o || \
 -     AC_MSG_ERROR([crt*.o not found.  Use --with-crt-dir to specify the location.])
 -   ;;
 -esac
 -test "X$CRT_DIR" = "X" && CRT_DIR=/usr/lib
 +## If user specified a crt-dir, use that unconditionally.
 +if test "X$CRT_DIR" = "X"; then
 +
 +  case "$canonical" in
 +    x86_64-*-linux-gnu* | s390x-*-linux-gnu*)
 +    ## On x86-64 and s390x GNU/Linux distributions, the standard library
 +    ## can be in a variety of places.  We only try /usr/lib64 and /usr/lib.
 +    ## For anything else (eg /usr/lib32), it is up the user to specify
 +    ## the location (bug#5655).
 +    ## Test for crtn.o, not just the directory, because sometimes the
 +    ## directory exists but does not have the relevant files (bug#1287).
 +    ## FIXME better to test for binary compatibility somehow.
 +    test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64
 +    ;;
 +
 +    powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*) CRT_DIR=/usr/lib64 ;;
 +  esac
 +
 +  case "$opsys" in
 +    hpux10-20) CRT_DIR=/lib ;;
 +  esac
 +
 +  ## Default is /usr/lib.
 +  test "X$CRT_DIR" = "X" && CRT_DIR=/usr/lib
 +
 +else
 +
 +  ## Some platforms don't use any of these files, so it is not
 +  ## appropriate to put this test outside the if block.
 +  test -e $CRT_DIR/crtn.o || test -e $CRT_DIR/crt0.o || \
 +    AC_MSG_ERROR([crt*.o not found in specified location.])
 +
 +fi
 +
  AC_SUBST(CRT_DIR)
  
 -dnl This function defintion taken from Gnome 2.0
 +LIB_MATH=-lm
 +LIB_STANDARD=
 +START_FILES=
 +
 +case $opsys in
 +  cygwin )
 +    LIB_MATH=
 +    START_FILES='pre-crt0.o'
 +    ;;
 +  darwin )
 +    ## Adding -lm confuses the dynamic linker, so omit it.
 +    LIB_MATH=
 +    START_FILES='pre-crt0.o'
 +    ;;
 +  freebsd )
 +    LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
 +    START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
 +    ;;
 +  gnu-linux | gnu-kfreebsd )
 +    LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtn.o'
 +    START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o'
 +    ;;
 +  hpux10-20 | hpux11 )
 +    LIB_STANDARD=-lc
 +    START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o'
 +    ;;
 +  netbsd | openbsd )
 +    if test -f $CRT_DIR/crti.o; then
 +      LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
 +        START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
 +    else
 +      LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o'
 +      START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crtbegin.o'
 +    fi
 +    ;;
 +esac
 +
 +AC_SUBST(LIB_MATH)
 +AC_SUBST(START_FILES)
 +
 +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
@@@ -1167,8 -1081,7 +1167,8 @@@ AC_DEFUN([PKG_CHECK_MODULES], 
  
  if test "${with_sound}" != "no"; then
    # Sound support for GNU/Linux and the free BSDs.
 -  AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h)
 +  AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h, 
 +    have_sound_header=yes)
    # Emulation library used on NetBSD.
    AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
    AC_SUBST(LIBSOUND)
      CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
      AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
    fi
 +
 +  dnl Define HAVE_SOUND if we have sound support.  We know it works and
 +  dnl compiles only on the specified platforms.  For others, it
 +  dnl probably doesn't make sense to try.
 +  if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
 +     case "$opsys" in
 +       dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
 +       gnu-linux|freebsd|netbsd)
 +         AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
 +         ;;
 +     esac
 +  fi
 +
    AC_SUBST(CFLAGS_SOUND)
  fi
  
  dnl checks for header files
  AC_CHECK_HEADERS(sys/select.h sys/timeb.h sys/time.h unistd.h utime.h \
    linux/version.h sys/systeminfo.h termios.h limits.h string.h stdlib.h \
 -  termcap.h stdio_ext.h fcntl.h strings.h coff.h pty.h sys/mman.h \
 +  stdio_ext.h fcntl.h strings.h coff.h pty.h sys/mman.h \
    sys/param.h sys/vlimit.h sys/resource.h locale.h sys/_mbstate_t.h \
 -  sys/utsname.h pwd.h utmp.h)
 +  sys/utsname.h pwd.h utmp.h dirent.h util.h)
  
  AC_MSG_CHECKING(if personality LINUX32 can be set)
  AC_TRY_COMPILE([#include <sys/personality.h>], [personality (PER_LINUX32)],
@@@ -1357,15 -1257,15 +1357,15 @@@ AH_TEMPLATE(POINTER_TYPE
            [Define as `void' if your compiler accepts `void *'; otherwise
             define as `char'.])dnl
  
 -
 -
 -dnl This could be used for targets which can have both byte sexes.
 -dnl We could presumably replace the hardwired WORDS_BIG_ENDIAN generally.
 -dnl AC_C_BIGENDIAN
 +dnl Check for endianess
 +AC_C_BIGENDIAN
  
  dnl check for Make feature
  AC_PROG_MAKE_SET
  
 +DEPFLAGS=
 +MKDEPDIR=":"
 +deps_frag=deps.mk
  dnl check for GNU Make 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])
        AC_MSG_RESULT([$ac_enable_autodepend])
     fi
     if test $ac_enable_autodepend = yes; then
 -      AC_DEFINE(AUTO_DEPEND, 1, [Generate dependencies with gcc.])
 +      DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d'
 +      ## In parallel builds, another make might create depdir between
 +      ## the first test and mkdir, so stick another test on the end.
 +      ## Or use mkinstalldirs?  mkdir -p is not portable.
 +      MKDEPDIR='test -d ${DEPDIR} || mkdir ${DEPDIR} || test -d ${DEPDIR}'
 +      deps_frag=autodeps.mk
     fi
  fi
 +deps_frag=$srcdir/src/$deps_frag
 +AC_SUBST(MKDEPDIR)
 +AC_SUBST(DEPFLAGS)
 +AC_SUBST_FILE(deps_frag)
 +
  
  dnl checks for operating system services
  AC_SYS_LONG_FILE_NAMES
  ## Workaround for bug in autoconf <= 2.62.
  ## http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01551.html
  ## No need to do anything special for these standard directories.
 -## This is an experiment, take it out if it causes problems.
  if test -n "${x_libraries}" && test x"${x_libraries}" != xNONE; then
  
     x_libraries=`echo :${x_libraries}: | sed -e 's|:/usr/lib64:|:|g' -e 's|:/lib64:|:|g' -e 's|^:||' -e 's|:$||'`
  
  fi
  
 +LD_SWITCH_X_SITE_AUX=
 +LD_SWITCH_X_SITE_AUX_RPATH=
  if test "${x_libraries}" != NONE; then
    if test -n "${x_libraries}"; then
      LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
      LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"`
 +    LD_SWITCH_X_SITE_AUX_RPATH=`echo ${LD_SWITCH_X_SITE_AUX} | sed -e 's/-R/-Wl,-rpath,/'`
    fi
    x_default_search_path=""
    x_search_path=${x_libraries}
@@@ -1452,9 -1340,6 +1452,9 @@@ ${x_library}/X11/%T/%N%S
      fi
    done
  fi
 +AC_SUBST(LD_SWITCH_X_SITE_AUX)
 +AC_SUBST(LD_SWITCH_X_SITE_AUX_RPATH)
 +
  if test "${x_includes}" != NONE && test -n "${x_includes}"; then
    C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"`
  fi
@@@ -1484,39 -1369,27 +1484,39 @@@ tmp_CPPFLAGS="$CPPFLAGS
  tmp_CFLAGS="$CFLAGS"
  CPPFLAGS="$CPPFLAGS -x objective-c"
  CFLAGS="$CFLAGS -x objective-c"
 +TEMACS_LDFLAGS2="\${LDFLAGS}"
 +dnl I don't think it's especially important, but src/Makefile.in
 +dnl (now the only user of ns_appdir) used to go to the trouble of adding a
 +dnl trailing "/" to it, so now we do it here.
  if test "${with_ns}" != no; then
    if test "${opsys}" = darwin; then
       NS_IMPL_COCOA=yes
       ns_appdir=`pwd`/nextstep/Emacs.app
 -     ns_appbindir=`pwd`/nextstep/Emacs.app/Contents/MacOS
 -     ns_appresdir=`pwd`/nextstep/Emacs.app/Contents/Resources
 +     ns_appbindir=${ns_appdir}/Contents/MacOS/
 +     ns_appresdir=${ns_appdir}/Contents/Resources
       ns_appsrc=${srcdir}/nextstep/Cocoa/Emacs.base
    elif test -f $GNUSTEP_CONFIG_FILE; then
       NS_IMPL_GNUSTEP=yes
       ns_appdir=`pwd`/nextstep/Emacs.app
 -     ns_appbindir=`pwd`/nextstep/Emacs.app
 -     ns_appresdir=`pwd`/nextstep/Emacs.app/Resources
 +     ns_appbindir=${ns_appdir}
 +     ns_appresdir=${ns_appdir}/Resources
       ns_appsrc=${srcdir}/nextstep/GNUstep/Emacs.base
 -     dnl FIXME sourcing this 3 times in subshells seems inefficient.
 -     GNUSTEP_MAKEFILES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_MAKEFILES)"
 +     dnl FIXME sourcing this several times in subshells seems inefficient.
       GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
       GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
 -     CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
 -     CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
 -     REAL_CFLAGS="$REAL_CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
 -     LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES}"
 +     dnl I seemed to need these as well with GNUstep-startup 0.25.
 +     GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
 +     GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
 +     test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
 +       GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
 +     test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
 +       GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
 +     CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
 +     CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
 +     LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
 +     LIB_STANDARD=
 +     START_FILES=
 +     TEMACS_LDFLAGS2=
    fi
    AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
                  [AC_MSG_ERROR([`--with-ns' was specified, but the include
      NS_HAVE_NSINTEGER=no
    fi
  fi
 +AC_SUBST(TEMACS_LDFLAGS2)
 +
 +ns_frag=/dev/null
 +NS_OBJ=
 +NS_SUPPORT=
  if test "${HAVE_NS}" = yes; then
    window_system=nextstep
    with_xft=no
    if test "${EN_NS_SELF_CONTAINED}" = yes; then
       prefix=${ns_appresdir}
    fi
 +  ns_frag=$srcdir/src/ns.mk
 +  NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o"
 +  NS_SUPPORT="\${lispsource}/emacs-lisp/easymenu.elc \${lispsource}/term/ns-win.elc"
  fi
  CFLAGS="$tmp_CFLAGS"
  CPPFLAGS="$tmp_CPPFLAGS"
 +AC_SUBST(NS_OBJ)
 +AC_SUBST(NS_SUPPORT)
 +AC_SUBST(LIB_STANDARD)
 +AC_SUBST_FILE(ns_frag)
  
  case "${window_system}" in
    x11 )
  dnl Dont set this for GTK.  A lot of tests below assumes Xt when
  dnl USE_X_TOOLKIT is set.
              USE_X_TOOLKIT=none ;;
 +      gtk3 ) with_gtk3=yes
 +             USE_X_TOOLKIT=none ;;
        no ) USE_X_TOOLKIT=none ;;
  dnl If user did not say whether to use a toolkit, make this decision later:
  dnl use the toolkit if we have gtk, or X11R5 or newer.
@@@ -1617,29 -1476,11 +1617,29 @@@ AC_CACHE_CHECK(whether __after_morecore
  if test $emacs_cv_var___after_morecore_hook = no; then
    doug_lea_malloc=no
  fi
 +
 +
 +dnl See comments in aix4-2.h about maybe using system malloc there.
 +system_malloc=no
 +case "$opsys" in
 +  ## darwin ld insists on the use of malloc routines in the System framework.
 +  darwin|sol2-10) system_malloc=yes ;;
 +esac
 +
  if test "${system_malloc}" = "yes"; then
 +  AC_DEFINE(SYSTEM_MALLOC, 1, [Define to use system malloc.])
    GNU_MALLOC=no
    GNU_MALLOC_reason="
      (The GNU allocators don't work with this system configuration.)"
 +  GMALLOC_OBJ=
 +  VMLIMIT_OBJ=
 +else
 +  test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
 +  VMLIMIT_OBJ=vm-limit.o
  fi
 +AC_SUBST(GMALLOC_OBJ)
 +AC_SUBST(VMLIMIT_OBJ)
 +
  if test "$doug_lea_malloc" = "yes" ; then
    if test "$GNU_MALLOC" = yes ; then
      GNU_MALLOC_reason="
    fi
    AC_DEFINE(DOUG_LEA_MALLOC, 1,
            [Define to 1 if you are using the GNU C Library.])
 +
 +  ## Use mmap directly for allocating larger buffers.
 +  ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
 +  ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
 +  ## Does the AC_FUNC_MMAP test below make this check unecessary?
 +  case "$opsys" in
 +    gnu*) REL_ALLOC=no ;;
 +  esac
  fi
  
  if test x"${REL_ALLOC}" = x; then
    REL_ALLOC=${GNU_MALLOC}
  fi
  
 -dnl For now, need to use an explicit `#define USE_MMAP_FOR_BUFFERS 1'
 -dnl the system configuration file (s/*.h) to turn the use of mmap
 -dnl in the relocating allocator on.
 +use_mmap_for_buffers=no
 +case "$opsys" in
 +  freebsd|irix6-5) use_mmap_for_buffers=yes ;;
 +esac
  
  AC_FUNC_MMAP
  if test $use_mmap_for_buffers = yes; then
 +  AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.])
    REL_ALLOC=no
  fi
  
 -LIBS="$libsrc_libs $LIBS"
 +LIBS="$LIBS_SYSTEM $LIBS"
  
  dnl If found, this defines HAVE_LIBDNET, which m/pmax.h checks,
  dnl and also adds -ldnet to LIBS, which Autoconf uses for checks.
@@@ -1686,18 -1517,6 +1686,18 @@@ AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SI
  
  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
  # used for the tests that follow.  We set them back to REAL_CFLAGS and
  # REAL_CPPFLAGS later on.
  
 +REAL_CFLAGS="$CFLAGS"
  REAL_CPPFLAGS="$CPPFLAGS"
  
  if test "${HAVE_X11}" = "yes"; then
    DEFS="$C_SWITCH_X_SITE $DEFS"
    LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
 -  LIBS="$LIBX $LIBS"
 +  LIBS="-lX11 $LIBS"
    CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
    CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
  
@@@ -1800,15 -1618,6 +1800,15 @@@ fail
      AC_MSG_RESULT(6 or newer)
      AC_DEFINE(HAVE_X11R6, 1,
              [Define to 1 if you have the X11R6 or newer version of Xlib.])
 +    AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.])
 +    ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
 +    ## XIM support.
 +    case "$opsys" in
 +      sol2-*) : ;;
 +      *) AC_DEFINE(HAVE_X11R6_XIM, 1,
 +           [Define if you have usable X11R6-style XIM support.])
 +         ;;
 +    esac
    else
      AC_MSG_RESULT(before 6)
    fi
@@@ -1822,11 -1631,12 +1822,11 @@@ if test "${HAVE_X11}" = "yes" || test "
      RSVG_REQUIRED=2.11.0
      RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
  
 -    PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, :, :)
 +    PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, HAVE_RSVG=yes, :)
      AC_SUBST(RSVG_CFLAGS)
      AC_SUBST(RSVG_LIBS)
  
 -    if test ".${RSVG_CFLAGS}" != "."; then
 -      HAVE_RSVG=yes
 +    if test $HAVE_RSVG = yes; then
        AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
        CFLAGS="$CFLAGS $RSVG_CFLAGS"
        LIBS="$RSVG_LIBS $LIBS"
    fi
  fi
  
 +HAVE_IMAGEMAGICK=no
 +if test "${HAVE_X11}" = "yes"; then
 +  if test "${with_imagemagick}" != "no"; then
 +    IMAGEMAGICK_MODULE="Wand"
 +    PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
 +    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.])
 +      CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
 +      LIBS="$IMAGEMAGICK_LIBS $LIBS"
 +      AC_CHECK_FUNCS(MagickExportImagePixels)
 +    fi
 +  fi
 +fi
 +
  
  HAVE_GTK=no
 +if test "${with_gtk3}" = "yes"; then
 +  GLIB_REQUIRED=2.6
 +  GTK_REQUIRED=2.90
 +  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)
 +  if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
 +     AC_MSG_ERROR($GTK_PKG_ERRORS)
 +  fi
 +fi
 +
 +if test "$pkg_check_gtk" != "yes"; then
 +  HAVE_GTK=no
  if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
    GLIB_REQUIRED=2.6
    GTK_REQUIRED=2.6
       AC_MSG_ERROR($GTK_PKG_ERRORS)
    fi
  fi
 +fi
  
 -
 +GTK_OBJ=
  if test x"$pkg_check_gtk" = xyes; then
  
    AC_SUBST(GTK_CFLAGS)
    else
      HAVE_GTK=yes
      AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
 +    GTK_OBJ=gtkutil.o
      USE_X_TOOLKIT=none
      if $PKG_CONFIG --atleast-version=2.10 gtk+-2.0; then
        :
    fi
  
  fi
 +AC_SUBST(GTK_OBJ)
  
  
  if test "${HAVE_GTK}" = "yes"; then
      with_toolkit_scroll_bars=yes
    fi
  
 -  dnl  Check if we can use multiple displays with this GTK version.
 -  dnl  If gdk_display_open exists, assume all others are there also.
 -  HAVE_GTK_MULTIDISPLAY=no
 -  AC_CHECK_FUNCS(gdk_display_open, HAVE_GTK_MULTIDISPLAY=yes)
 -  if test "${HAVE_GTK_MULTIDISPLAY}" = "yes"; then
 -    AC_DEFINE(HAVE_GTK_MULTIDISPLAY, 1,
 -              [Define to 1 if GTK can handle more than one display.])
 -  fi
 -
    dnl  Check if we have the old file selection dialog declared and
    dnl  in the link library.  In 2.x it may be in the library,
    dnl  but not declared if deprecated featured has been selected out.
                     HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
  #include <gtk/gtk.h>])
    if test "$HAVE_GTK_FILE_SELECTION" = yes; then
 -    AC_CHECK_FUNCS(gtk_file_selection_new, HAVE_GTK_FILE_SELECTION=yes,
 -                   HAVE_GTK_FILE_SELECTION=no)
 -  fi
 -
 -  dnl  Check if we have the new file chooser dialog
 -  HAVE_GTK_FILE_CHOOSER=no
 -  AC_CHECK_DECL(GTK_TYPE_FILE_CHOOSER, HAVE_GTK_FILE_CHOOSER=yes,
 -                HAVE_GTK_FILE_CHOOSER=no, [AC_INCLUDES_DEFAULT
 -#include <gtk/gtk.h>])
 -  if test "$HAVE_GTK_FILE_CHOOSER" = yes; then
 -    AC_CHECK_FUNCS(gtk_file_chooser_dialog_new, HAVE_GTK_FILE_CHOOSER=yes,
 -                   HAVE_GTK_FILE_CHOOSER=no)
 -  fi
 -
 -  if test "$HAVE_GTK_FILE_SELECTION" = yes \
 -     && test "$HAVE_GTK_FILE_CHOOSER" = yes;  then
 -    AC_DEFINE(HAVE_GTK_FILE_BOTH, 1,
 -              [Define to 1 if GTK has both file selection and chooser dialog.])
 +    AC_CHECK_FUNCS(gtk_file_selection_new)
    fi
  
    dnl Check if pthreads are available.  Emacs only needs this when using
    dnl gtk_file_chooser under Gnome.
 -  if test "$HAVE_GTK_FILE_CHOOSER" = yes; then
      HAVE_GTK_AND_PTHREAD=no
      AC_CHECK_HEADERS(pthread.h)
      if test "$ac_cv_header_pthread_h"; then
        AC_DEFINE(HAVE_GTK_AND_PTHREAD, 1,
                 [Define to 1 if you have GTK and pthread (-lpthread).])
      fi
 -  fi
 +
 +  dnl Check for functions introduced in 2.14 and later.
 +  AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \
 +                 gtk_dialog_get_action_area gtk_widget_get_sensitive \
 +                 gtk_widget_get_mapped gtk_adjustment_get_page_size \
 +                 gtk_orientable_set_orientation)
 +
  fi
  
  dnl D-Bus has been tested under GNU/Linux only.  Must be adapted for
  dnl other platforms.  Support for higher D-Bus versions than 1.0 is
  dnl also not configured.
  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)
     if test "$HAVE_DBUS" = yes; then
       LIBS="$LIBS $DBUS_LIBS"
       AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
       AC_CHECK_FUNCS([dbus_watch_get_unix_fd])
 +     DBUS_OBJ=dbusbind.o
     fi
  fi
 +AC_SUBST(DBUS_OBJ)
  
  dnl GConf has been tested under GNU/Linux only.
  dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
@@@ -1985,32 -1779,9 +1985,32 @@@ if test "${HAVE_X11}" = "yes" && test "
     fi
  fi
  
 +dnl SELinux is available for GNU/Linux only.
 +HAVE_LIBSELINUX=no
 +LIBSELINUX_LIBS=
 +if test "${with_selinux}" = "yes"; then
 +   AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
 +   if test "$HAVE_LIBSELINUX" = yes; then
 +      AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
 +      LIBSELINUX_LIBS=-lselinux
 +   fi
 +fi
 +AC_SUBST(LIBSELINUX_LIBS)
 +
 +HAVE_GNUTLS=no
 +if test "${with_gnutls}" = "yes" ; then
 +  PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.2.4], HAVE_GNUTLS=yes, HAVE_GNUTLS=no)
 +  if test "${HAVE_GNUTLS}" = "yes"; then
 +    AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
 +  fi
 +fi
 +AC_SUBST(LIBGNUTLS_LIBS)
 +AC_SUBST(LIBGNUTLS_CFLAGS)
 +
  dnl Do not put whitespace before the #include statements below.
  dnl Older compilers (eg sunos4 cc) choke on it.
  HAVE_XAW3D=no
 +LUCID_LIBW=
  if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
    if test "$with_xaw3d" != no; then
      AC_MSG_CHECKING(for xaw3d)
      AC_MSG_RESULT([yes; using Lucid toolkit])
      USE_X_TOOLKIT=LUCID
      HAVE_XAW3D=yes
 +    LUCID_LIBW=-lXaw3d
      AC_DEFINE(HAVE_XAW3D, 1,
                [Define to 1 if you have the Xaw3d library (-lXaw3d).])
    else
      if test $emacs_cv_xaw = yes; then
        AC_MSG_RESULT([yes; using Lucid toolkit])
        USE_X_TOOLKIT=LUCID
 +      LUCID_LIBW=-lXaw
      elif test x"${USE_X_TOOLKIT}" = xLUCID; then
        AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
      else
  
  X_TOOLKIT_TYPE=$USE_X_TOOLKIT
  
 +LIBXTR6=
  if test "${USE_X_TOOLKIT}" != "none"; then
    AC_MSG_CHECKING(X11 toolkit version)
    AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
@@@ -2070,11 -1838,6 +2070,11 @@@ fail
      AC_MSG_RESULT(6 or newer)
      AC_DEFINE(HAVE_X11XTR6, 1,
              [Define to 1 if you have the X11R6 or newer version of Xt.])
 +    LIBXTR6="-lSM -lICE"
 +    case "$opsys" in
 +      ## Use libw.a along with X11R6 Xt.
 +      unixware) LIBXTR6="$LIBXTR6 -lw" ;;
 +    esac
    else
      AC_MSG_RESULT(before 6)
    fi
@@@ -2090,18 -1853,6 +2090,18 @@@ dnl tranle@intellicorp.com says libXmu.
    AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
    test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
  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 "$machine" in
 +  ## These machines don't supply Xmu.
 +  hpux* | aix4-2 )
 +    test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
 +    ;;
 +esac
 +AC_SUBST(LIBXMU)
  
  # On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
  if test "${HAVE_X11}" = "yes"; then
    fi
  fi
  
 +LIBXP=
  if test "${USE_X_TOOLKIT}" = "MOTIF"; then
    AC_CACHE_CHECK(for Motif version 2.1, emacs_cv_motif_version_2_1,
    [AC_TRY_COMPILE([#include <Xm/Xm.h>],
@@@ -2120,8 -1870,16 +2120,8 @@@ int x = 5
  Motif version prior to 2.1.
  #endif],
      emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
 -  HAVE_MOTIF_2_1=$emacs_cv_motif_version_2_1
    if test $emacs_cv_motif_version_2_1 = yes; then
 -    HAVE_LIBXP=no
 -    AC_DEFINE(HAVE_MOTIF_2_1, 1,
 -            [Define to 1 if you have Motif 2.1 or newer.])
 -    AC_CHECK_LIB(Xp, XpCreateContext, HAVE_LIBXP=yes)
 -    if test ${HAVE_LIBXP} = yes; then
 -      AC_DEFINE(HAVE_LIBXP, 1,
 -              [Define to 1 if you have the Xp library (-lXp).])
 -    fi
 +    AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
    else
      AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
      # We put this in CFLAGS temporarily to precede other -I options
@@@ -2323,7 -2081,6 +2323,7 @@@ els
      HAVE_LIBOTF=no
      HAVE_M17N_FLT=no
  fi
 +
  ### End of font-backend (under X11) section.
  
  AC_SUBST(FREETYPE_CFLAGS)
@@@ -2337,7 -2094,6 +2337,7 @@@ AC_SUBST(M17N_FLT_LIBS
  
  ### Use -lXpm if available, unless `--with-xpm=no'.
  HAVE_XPM=no
 +LIBXPM=
  if test "${HAVE_X11}" = "yes"; then
    if test "${with_xpm}" != "no"; then
      AC_CHECK_HEADER(X11/xpm.h,
@@@ -2361,14 -2117,11 +2361,14 @@@ no_return_alloc_pixel
  
    if test "${HAVE_XPM}" = "yes"; then
      AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm libary (-lXpm).])
 +    LIBXPM=-lXpm
    fi
  fi
 +AC_SUBST(LIBXPM)
  
  ### Use -ljpeg if available, unless `--with-jpeg=no'.
  HAVE_JPEG=no
 +LIBJPEG=
  if test "${HAVE_X11}" = "yes"; then
    if test "${with_jpeg}" != "no"; then
      dnl Checking for jpeglib.h can lose because of a redefinition of
          [AC_MSG_WARN([libjpeg found, but not version 6b or later])
          HAVE_JPEG=no])
    fi
 +  if test "${HAVE_JPEG}" = "yes"; then
 +    LIBJPEG=-ljpeg
 +  fi
  fi
 +AC_SUBST(LIBJPEG)
  
  ### Use -lpng if available, unless `--with-png=no'.
  HAVE_PNG=no
 +LIBPNG=
  if test "${HAVE_X11}" = "yes"; then
    if test "${with_png}" != "no"; then
      # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
  
    if test "${HAVE_PNG}" = "yes"; then
      AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
 +    LIBPNG="-lpng -lz -lm"
    fi
  fi
 +AC_SUBST(LIBPNG)
  
  ### Use -ltiff if available, unless `--with-tiff=no'.
  HAVE_TIFF=no
 +LIBTIFF=
  if test "${HAVE_X11}" = "yes"; then
    if test "${with_tiff}" != "no"; then
      AC_CHECK_HEADER(tiffio.h,
  
    if test "${HAVE_TIFF}" = "yes"; then
      AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
 +    dnl FIXME -lz -lm, as per libpng?
 +    LIBTIFF=-ltiff
    fi
  fi
 +AC_SUBST(LIBTIFF)
  
  ### Use -lgif or -lungif if available, unless `--with-gif=no'.
  HAVE_GIF=no
 +LIBGIF=
  if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
    AC_CHECK_HEADER(gif_lib.h,
  # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
  # Earlier versions can crash Emacs.
 -    [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, try_libungif=yes)])
 +    [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])
  
    if test "$HAVE_GIF" = yes; then
 -      ac_gif_lib_name="-lgif"
 -  fi
 -
 +    LIBGIF=-lgif
 +  elif test "$HAVE_GIF" = maybe; then
  # If gif_lib.h but no libgif, try libungif.
 -  if test x"$try_libungif" = xyes; then
 -    AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes)
 -
 -    if test "$HAVE_GIF" = yes; then
 -      AC_DEFINE(LIBGIF, -lungif, [Compiler option to link with the gif library (if not -lgif).])
 -      ac_gif_lib_name="-lungif"
 -    fi
 +    AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
 +    test "$HAVE_GIF" = yes && LIBGIF=-lungif
    fi
  
    if test "${HAVE_GIF}" = "yes"; then
 -    AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif library (default -lgif; otherwise specify with LIBGIF).])
 +    AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
    fi
  fi
 +AC_SUBST(LIBGIF)
  
  dnl Check for required libraries.
  if test "${HAVE_X11}" = "yes"; then
  
  ### Use -lgpm if available, unless `--with-gpm=no'.
  HAVE_GPM=no
 +LIBGPM=
 +MOUSE_SUPPORT=
  if test "${with_gpm}" != "no"; then
    AC_CHECK_HEADER(gpm.h,
      [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
 -fi
  
 -if test "${HAVE_GPM}" = "yes"; then
 -  AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
 +  if test "${HAVE_GPM}" = "yes"; then
 +    AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
 +    LIBGPM=-lgpm
 +    ## May be reset below.
 +    MOUSE_SUPPORT="\$(GPM_MOUSE_SUPPORT)"
 +  fi
  fi
 +AC_SUBST(LIBGPM)
  
  dnl Check for malloc/malloc.h on darwin
  AC_CHECK_HEADER(malloc/malloc.h, [AC_DEFINE(HAVE_MALLOC_MALLOC_H, 1, [Define to 1 if you have the <malloc/malloc.h> header file.])])
  
 +C_SWITCH_X_SYSTEM=
  ### Use NeXTstep API to implement GUI.
  if test "${HAVE_NS}" = "yes"; then
    AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
    fi
    if test "${NS_IMPL_GNUSTEP}" = "yes"; then
      AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
 +    # See also .m.o rule in Makefile.in */
 +    # FIXME: are all these flags really needed?  Document here why.  */
 +    C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing"
      GNU_OBJC_CFLAGS="-fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
    fi
    if test "${NS_HAVE_NSINTEGER}" = "yes"; then
  
  ### Use session management (-lSM -lICE) if available
  HAVE_X_SM=no
 +LIBXSM=
  if test "${HAVE_X11}" = "yes"; then
    AC_CHECK_HEADER(X11/SM/SMlib.h,
      [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
  
    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="-lSM -lICE $LIBS" ;;
 +      *)      LIBS="$LIBXSM $LIBS" ;;
      esac
    fi
  fi
 +AC_SUBST(LIBXSM)
 +
 +### Use libxml (-lxml2) if available
 +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.2.0, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
 +  if test "${HAVE_LIBXML2}" = "yes"; then
 +    LIBS="$LIBXML2_LIBS $LIBS"
 +    AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
 +    if test "${HAVE_LIBXML2}" = "yes"; then
 +      AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
 +    else
 +      LIBXML2_LIBS=""
 +      LIBXML2_CFLAGS=""
 +    fi
 +  fi
 +fi
 +AC_SUBST(LIBXML2_LIBS)
 +AC_SUBST(LIBXML2_CFLAGS)
  
  # If netdb.h doesn't declare h_errno, we must declare it by hand.
  AC_CACHE_CHECK(whether netdb declares h_errno,
@@@ -2587,24 -2302,13 +2587,24 @@@ AC_CHECK_LIB(m, sqrt
  
  # 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)
 +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).])
 +else
 +  LIBS_MAIL=
 +fi
  dnl Debian, at least:
 -AC_CHECK_LIB(lockfile, maillock)
 +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
  # locking (e.g. Debian).  If we couldn't link against liblockfile
  # (no liblockfile.a installed), ensure that we don't need to.
 -if test "$ac_cv_lib_lockfile_maillock" = no; then
    dnl This works for files generally, not just executables.
    dnl Should we look elsewhere for it?  Maybe examine /etc/ld.so.conf?
    AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
      AC_MSG_ERROR([Shared liblockfile found but can't link against it.
  This probably means that movemail could lose mail.
  There may be a `development' package to install containing liblockfile.])
 -  else :
    fi
  fi
  AC_CHECK_FUNCS(touchlock)
  AC_CHECK_HEADERS(maillock.h)
 +AC_SUBST(LIBS_MAIL)
 +
 +## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
 +## interlock access to the mail spool.  The alternative is a lock file named
 +## /usr/spool/mail/$USER.lock.
 +mail_lock=no
 +case "$opsys" in
 +  aix4-2) mail_lock="lockf" ;;
 +
 +  gnu|freebsd|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
 +
 +  ## On GNU/Linux systems, both methods are used by various mail programs.
 +  ## I assume most people are using newer mailers that have heard of flock.
 +  ## Change this if you need to.
 +  ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
 +  ## configure gets the right answers, and that means *NOT* using flock.
 +  ## Using flock is guaranteed to be the wrong thing. See Debian Policy
 +  ## for details.'' and then uses `#ifdef DEBIAN'.  Unfortunately the
 +  ## Debian maintainer hasn't provided a clean fix for Emacs.
 +  ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
 +  ## HAVE_MAILLOCK_H are defined, so the following appears to be the
 +  ## correct logic.  -- fx
 +  ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
 +  ## liblockfile is a Free Software replacement for libmail, used on
 +  ## Debian systems and elsewhere. -rfr.
 +  gnu-*)
 +    mail_lock="flock"
 +    if test $have_mail = yes || test $have_lockfile = yes; then
 +      test $ac_cv_header_maillock_h = yes && mail_lock=no
 +    fi
 +    ;;
 +esac
 +
 +BLESSMAIL_TARGET=
 +case "$mail_lock" in
 +  flock) AC_DEFINE(MAIL_USE_FLOCK, 1, [Define if the mailer uses flock to interlock the mail spool.]) ;;
 +
 +  lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
 +
 +  *) BLESSMAIL_TARGET="need-blessmail" ;;
 +esac
 +AC_SUBST(BLESSMAIL_TARGET)
 +
  
  AC_CHECK_FUNCS(gethostname getdomainname dup2 \
  rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \
 -random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime setsid \
 +random lrand48 logb frexp fmod rint cbrt ftime setsid \
  strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
  utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \
 -__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \
 +__fpending mblen mbrlen mbsinit strsignal setitimer ualarm strchr strrchr \
  sendto recvfrom getsockopt setsockopt getsockname getpeername \
 -gai_strerror mkstemp getline getdelim mremap memmove fsync sync bzero \
 +gai_strerror mkstemp getline getdelim mremap memmove fsync sync \
  memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \
 -cfmakeraw cfsetspeed)
 +cfmakeraw cfsetspeed isnan copysign __executable_start)
  
  AC_CHECK_HEADERS(sys/un.h)
  
@@@ -2706,102 -2368,10 +2706,102 @@@ AC_CHECK_FUNCS(getpt
  # That is because we have not set up to link ncurses in lib-src.
  # It's better to believe a function is not available
  # than to expect to find it in ncurses.
 -AC_CHECK_LIB(ncurses, tparm)
 +# Also we need tputs and friends to be able to build at all.
 +have_tputs_et_al=true
 +AC_SEARCH_LIBS(tputs, [ncurses terminfo termcap], , have_tputs_et_al=false)
 +if test "$have_tputs_et_al" != true; then
 +  AC_MSG_ERROR([I couldn't find termcap functions (tputs and friends).
 +Maybe some development libraries/packages are missing?  Try installing
 +libncurses-dev(el), libterminfo-dev(el) or similar.])
 +fi
 +# Must define this when any termcap library is found.
 +AC_DEFINE(HAVE_LIBNCURSES, 1,
 +          [Define to 1 if you have the `ncurses' library (-lncurses).])
 +## FIXME This was the cpp logic, but I am not sure it is right.
 +## The above test has not necessarily found libncurses.
 +HAVE_LIBNCURSES=yes
 +
 +## Use terminfo instead of termcap?
 +## Note only system files NOT using terminfo are:
 +## freebsd < 40000, ms-w32, msdos, netbsd < 599002500, and
 +## darwin|gnu without ncurses.
 +TERMINFO=no
 +LIBS_TERMCAP=
 +case "$opsys" in
 +  ## cygwin: Fewer environment variables to go wrong, more terminal types.
 +  ## hpux10-20: Use the system provided termcap(3) library.
 +  ## openbsd: David Mazieres <dm@reeducation-labor.lcs.mit.edu> says this
 +  ##  is necessary.  Otherwise Emacs dumps core when run -nw.
 +  aix4-2|cygwin|hpux*|irix6-5|openbsd|sol2*|unixware) TERMINFO=yes ;;
 +
 +  ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
 +  ##  The ncurses library has been moved out of the System framework in
 +  ##  Mac OS X 10.2.  So if configure detects it, set the command-line
 +  ##  option to use it.
 +  darwin|gnu*)
 +    ## (HAVE_LIBNCURSES was not always true, but is since 2010-03-18.)
 +    if test "x$HAVE_LIBNCURSES" = "xyes"; then
 +      TERMINFO=yes
 +      LIBS_TERMCAP="-lncurses"
 +    fi
 +    ;;
 +
 +  freebsd)
 +    AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
 +    AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
 +    [AC_TRY_LINK([#include <osreldate.h>],
 +[#if __FreeBSD_version < 400000
 +fail;
 +#endif
 +], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
 +
 +    AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
 +
 +    if test $emacs_cv_freebsd_terminfo = yes; then
 +      TERMINFO=yes
 +      LIBS_TERMCAP="-lncurses"
 +    else
 +      LIBS_TERMCAP="-ltermcap"
 +    fi
 +    ;;
 +
 +  netbsd)
 +    if test $ac_cv_search_tputs = -lterminfo; then
 +      TERMINFO=yes
 +      LIBS_TERMCAP="-lterminfo"
 +    else
 +      LIBS_TERMCAP="-ltermcap"
 +    fi
 +    ;;
 +
 +esac
 +
 +case "$opsys" in
 +  ## hpux: Make sure we get select from libc rather than from libcurses
 +  ##  because libcurses on HPUX 10.10 has a broken version of select.
 +  ##  We used to use -lc -lcurses, but this may be cleaner.
 +  hpux*) LIBS_TERMCAP="-ltermcap" ;;
 +
 +  openbsd) LIBS_TERMCAP="-lncurses" ;;
 +
 +  ## Must use system termcap, if we use any termcap.  It does special things.
 +  sol2*) test "$TERMINFO" != yes && LIBS_TERMCAP="-ltermcap" ;;
 +esac
 +
 +TERMCAP_OBJ=tparam.o
 +if test $TERMINFO = yes; then
 +  AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
 +
 +  ## Default used to be -ltermcap.  Add a case above if need something else.
 +  test "x$LIBS_TERMCAP" = "x" && LIBS_TERMCAP="-lcurses"
 +
 +  TERMCAP_OBJ=terminfo.o
 +fi
 +AC_SUBST(LIBS_TERMCAP)
 +AC_SUBST(TERMCAP_OBJ)
  
 -# Do we have res_init, for detecting changes in /etc/resolv.conf?
  
 +# Do we have res_init, for detecting changes in /etc/resolv.conf?
  resolv=no
  AC_TRY_LINK([#include <netinet/in.h>
  #include <arpa/nameser.h>
@@@ -2829,9 -2399,8 +2829,9 @@@ if test "$have_res_init" = yes; the
  fi
  
  # Do we need the Hesiod library to provide the support routines?
 +LIBHESIOD=
  if test "$with_hesiod" != no ; then
 -  # Don't set $LIBS here -- see comments above.
 +  # Don't set $LIBS here -- see comments above.  FIXME which comments?
    AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
       [AC_CHECK_LIB(resolv, res_send, resolv=yes,
                  [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
      RESOLVLIB=
    fi
    AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
 -      [AC_DEFINE(HAVE_LIBHESIOD, 1,
 -                [Define to 1 if you have the hesiod library (-lhesiod).])],
 -      :, $RESOLVLIB)])
 +      hesiod=yes, :, $RESOLVLIB)])
 +
 +  if test x"$hesiod" = xyes; then
 +    AC_DEFINE(HAVE_LIBHESIOD, 1,
 +              [Define to 1 if you have the hesiod library (-lhesiod).])
 +    LIBHESIOD=-lhesiod
 +  fi
  fi
 +AC_SUBST(LIBHESIOD)
  
  # Do we need libresolv (due to res_init or Hesiod)?
  if test "$resolv" = yes ; then
    AC_DEFINE(HAVE_LIBRESOLV, 1,
              [Define to 1 if you have the resolv library (-lresolv).])
 +  LIBRESOLV=-lresolv
 +else
 +  LIBRESOLV=
  fi
 +AC_SUBST(LIBRESOLV)
  
  # These tell us which Kerberos-related libraries to use.
 +COM_ERRLIB=
 +CRYPTOLIB=
 +KRB5LIB=
 +DESLIB=
 +KRB4LIB=
 +
  if test "${with_kerberos}" != no; then
 -  AC_CHECK_LIB(com_err, com_err)
 -  AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt)
 -  AC_CHECK_LIB(crypto, mit_des_cbc_encrypt)
 -  AC_CHECK_LIB(krb5, krb5_init_context)
 +  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
 +    LIBS="$COM_ERRLIB $LIBS"
 +    AC_DEFINE(HAVE_LIBCOM_ERR, 1, [Define to 1 if you have the `com_err' library (-lcom_err).])
 +  fi
 +  AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
 +  if test $have_crypto = yes; then
 +    CRYPTOLIB=-lcrypto
 +    LIBS="$CRYPTOLIB $LIBS"
 +    AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have the `crypto' library (-lcrypto).])
 +  fi
 +  AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
 +  if test $have_k5crypto = yes; then
 +    CRYPTOLIB=-lk5crypto
 +    LIBS="$CRYPTOLIB $LIBS"
 +    AC_DEFINE(HAVE_LIBK5CRYPTO, 1, [Define to 1 if you have the `k5crypto' library (-lk5crypto).])
 +  fi
 +  AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
 +  if test $have_krb5=yes; then
 +    KRB5LIB=-lkrb5
 +    LIBS="$KRB5LIB $LIBS"
 +    AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5).])
 +  fi
 +  dnl FIXME Simplify.  Does not match 22 logic, thanks to default_off?
    if test "${with_kerberos5}" = no; then
 -    AC_CHECK_LIB(des425, des_cbc_encrypt,,
 -               [AC_CHECK_LIB(des, des_cbc_encrypt)])
 -    AC_CHECK_LIB(krb4, krb_get_cred,,
 -               [AC_CHECK_LIB(krb, krb_get_cred)])
 +    AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
 +    if test $have_des425 = yes; then
 +      DESLIB=-ldes425
 +      LIBS="$DESLIB $LIBS"
 +      AC_DEFINE(HAVE_LIBDES425, 1, [Define to 1 if you have the `des425' library (-ldes425).])
 +    else
 +      AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
 +      if test $have_des = yes; then
 +        DESLIB=-ldes
 +        LIBS="$DESLIB $LIBS"
 +        AC_DEFINE(HAVE_LIBDES, 1, [Define to 1 if you have the `des' library (-ldes).])
 +      fi
 +    fi
 +    AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
 +    if test $have_krb4 = yes; then
 +      KRB4LIB=-lkrb4
 +      LIBS="$KRB4LIB $LIBS"
 +      AC_DEFINE(HAVE_LIBKRB4, 1, [Define to 1 if you have the `krb4' library (-lkrb4).])
 +    else
 +      AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
 +      if test $have_krb = yes; then
 +        KRB4LIB=-lkrb
 +        LIBS="$KRB4LIB $LIBS"
 +        AC_DEFINE(HAVE_LIBKRB, 1, [Define to 1 if you have the `krb' library (-lkrb).])
 +      fi
 +    fi
    fi
  
    if test "${with_kerberos5}" != no; then
    AC_CHECK_HEADERS(com_err.h)
  fi
  
 +AC_SUBST(COM_ERRLIB)
 +AC_SUBST(CRYPTOLIB)
 +AC_SUBST(KRB5LIB)
 +AC_SUBST(DESLIB)
 +AC_SUBST(KRB4LIB)
 +
  # Solaris requires -lintl if you want strerror (which calls dgettext)
  # to return localized messages.
  AC_CHECK_LIB(intl, dgettext)
@@@ -2952,6 -2457,14 +2952,6 @@@ AC_MSG_CHECKING(whether localtime cache
  AC_CACHE_VAL(emacs_cv_localtime_cache,
  [if test x$ac_cv_func_tzset = xyes; then
  AC_TRY_RUN([#include <time.h>
 -extern char **environ;
 -unset_TZ ()
 -{
 -  char **from, **to;
 -  for (to = from = environ; (*to = *from); from++)
 -    if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
 -      to++;
 -}
  char TZ_GMT0[] = "TZ=GMT0";
  char TZ_PST8[] = "TZ=PST8";
  main()
    if (putenv (TZ_GMT0) != 0)
      exit (1);
    hour_GMT0 = localtime (&now)->tm_hour;
 -  unset_TZ ();
 +  unsetenv("TZ");
    hour_unset = localtime (&now)->tm_hour;
    if (putenv (TZ_PST8) != 0)
      exit (1);
    if (localtime (&now)->tm_hour == hour_GMT0)
      exit (1);
 -  unset_TZ ();
 +  unsetenv("TZ");
    if (localtime (&now)->tm_hour != hour_unset)
      exit (1);
    exit (0);
@@@ -3112,20 -2625,19 +3112,20 @@@ if test "x$GCC" = xyes 
  fi
  
  #### Find out which version of Emacs this is.
 -[version=`grep 'defconst[      ]*emacs-version' ${srcdir}/lisp/version.el \
 +[version=`grep 'const char emacs_version' ${srcdir}/src/emacs.c \
         | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`]
  if test x"${version}" = x; then
 -  AC_MSG_ERROR([can't find current emacs version in `${srcdir}/lisp/version.el'.])
 +  AC_MSG_ERROR([can't find current emacs version in `${srcdir}/src/emacs.c'.])
  fi
  if test x"${version}" != x"$PACKAGE_VERSION"; then
 -  AC_MSG_WARN([version mismatch between `${srcdir}/configure.in' and `${srcdir}/lisp/version.el'.])
 +  AC_MSG_WARN([version mismatch between `${srcdir}/configure.in' and `${srcdir}/src/emacs.c'.])
  fi
  
  ### Specify what sort of things we'll be editing into Makefile and config.h.
  ### Use configuration here uncanonicalized to avoid exceeding size limits.
  AC_SUBST(version)
  AC_SUBST(configuration)
 +## Unused?
  AC_SUBST(canonical)
  AC_SUBST(srcdir)
  AC_SUBST(prefix)
@@@ -3146,14 -2658,12 +3146,14 @@@ AC_SUBST(docdir
  AC_SUBST(bitmapdir)
  AC_SUBST(gamedir)
  AC_SUBST(gameuser)
 -AC_SUBST(c_switch_system)
 -AC_SUBST(c_switch_machine)
 +## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
 +## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
 +## end of LIBX_BASE, but nothing ever set it.
  AC_SUBST(LD_SWITCH_X_SITE)
 -AC_SUBST(LD_SWITCH_X_SITE_AUX)
  AC_SUBST(C_SWITCH_X_SITE)
 +AC_SUBST(C_SWITCH_X_SYSTEM)
  AC_SUBST(CFLAGS)
 +## Used in lwlib/Makefile.in.
  AC_SUBST(X_TOOLKIT_TYPE)
  AC_SUBST(machfile)
  AC_SUBST(opsysfile)
@@@ -3162,7 -2672,11 +3162,7 @@@ AC_SUBST(ns_appdir
  AC_SUBST(ns_appbindir)
  AC_SUBST(ns_appresdir)
  AC_SUBST(ns_appsrc)
 -AC_SUBST(GNUSTEP_MAKEFILES)
 -AC_SUBST(GNUSTEP_SYSTEM_HEADERS)
 -AC_SUBST(GNUSTEP_SYSTEM_LIBRARIES)
  AC_SUBST(GNU_OBJC_CFLAGS)
 -AC_SUBST(LIB_SRC_EXTRA_INSTALLABLES)
  AC_SUBST(OTHER_FILES)
  
  AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION,  "${canonical}",
@@@ -3173,303 -2687,56 +3173,303 @@@ AC_DEFINE_UNQUOTED(config_machfile,  "$
                   [Define to the used machine dependent file.])
  AC_DEFINE_UNQUOTED(config_opsysfile, "${opsysfile}",
                   [Define to the used os dependent file.])
 -AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE, ${LD_SWITCH_X_SITE},
 -[Define LD_SWITCH_X_SITE to contain any special flags your loader
 - may need to deal with X Windows.  For instance, if you've defined
 - HAVE_X_WINDOWS above and your X libraries aren't in a place that
 - your loader can find on its own, you might want to add "-L/..." or
 - something similar.])
 -AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, ${LD_SWITCH_X_SITE_AUX},
 -                 [Define LD_SWITCH_X_SITE_AUX with an -R option
 -                  in case it's needed (for Solaris, for example).])
 -AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,  ${C_SWITCH_X_SITE},
 -[Define C_SWITCH_X_SITE to contain any special flags your compiler
 - may need to deal with X Windows.  For instance, if you've defined
 - HAVE_X_WINDOWS above and your X include files aren't in a place
 - that your compiler can find on its own, you might want to add
 - "-I/..." or something similar.])
 -AC_DEFINE_UNQUOTED(UNEXEC_SRC,       ${UNEXEC_SRC},
 -                 [Define to the unexec source file name.])
  
 +XMENU_OBJ=
 +XOBJ=
 +FONT_OBJ=
  if test "${HAVE_X_WINDOWS}" = "yes" ; then
    AC_DEFINE(HAVE_X_WINDOWS, 1,
            [Define to 1 if you want to use the X window system.])
 +  XMENU_OBJ=xmenu.o
 +  XOBJ="xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o xsettings.o xgselect.o"
 +  FONT_OBJ=xfont.o
 +  if test "$HAVE_XFT" = "yes"; then
 +    FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
 +  elif test "$HAVE_FREETYPE" = "yes"; then
 +    FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
 +  fi
 +  AC_SUBST(FONT_OBJ)
  fi
 +AC_SUBST(XMENU_OBJ)
 +AC_SUBST(XOBJ)
 +AC_SUBST(FONT_OBJ)
 +
 +WIDGET_OBJ=
 +MOTIF_LIBW=
  if test "${USE_X_TOOLKIT}" != "none" ; then
 +  WIDGET_OBJ=widget.o
    AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
    if test "${USE_X_TOOLKIT}" = "LUCID"; then
      AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
    elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
      AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
 +    MOTIF_LIBW=-lXm
 +    case "$opsys" in
 +      gnu-linux)
 +        ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
 +        MOTIF_LIBW="$MOTIF_LIBW -lXpm"
 +        ;;
 +
 +      unixware)
 +        ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
 +        ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
 +        MOTIF_LIBW="MOTIF_LIBW -lXimp"
 +        ;;
 +
 +      aix4-2)
 +        ## olson@mcs.anl.gov says -li18n is needed by -lXm.
 +        MOTIF_LIBW="$MOTIF_LIBW -li18n"
 +        ;;
 +    esac
 +    MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
    fi
  fi
 +AC_SUBST(WIDGET_OBJ)
 +
 +TOOLKIT_LIBW=
 +case "$USE_X_TOOLKIT" in
 +  MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
 +  LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
 +  none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
 +esac
 +AC_SUBST(TOOLKIT_LIBW)
 +
 +if test "$USE_X_TOOLKIT" = "none"; then
 +  LIBXT_OTHER="\$(LIBXSM)"
 +  OLDXMENU_TARGET="really-oldXMenu"
 +else
 +  LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
 +  OLDXMENU_TARGET="really-lwlib"
 +fi
 +AC_SUBST(LIBXT_OTHER)
 +
 +## The X Menu stuff is present in the X10 distribution, but missing
 +## from X11.  If we have X10, just use the installed library;
 +## otherwise, use our own copy.
  if test "${HAVE_X11}" = "yes" ; then
    AC_DEFINE(HAVE_X11, 1,
            [Define to 1 if you want to use version 11 of X windows.
             Otherwise, Emacs expects to use version 10.])
 +
 +  if test "$USE_X_TOOLKIT" = "none"; then
 +    OLDXMENU="\${oldXMenudir}/libXMenu11.a"
 +  else
 +    OLDXMENU="\${lwlibdir}/liblw.a"
 +  fi
 +  LIBXMENU="\$(OLDXMENU)"
 +  LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
 +  OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}"
 +else
 +  ## For a syntactically valid Makefile; not actually used for anything.
 +  ## See comments in src/Makefile.in.
 +  OLDXMENU=nothing
 +  ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?).
 +  if test "${HAVE_X_WINDOWS}" = "yes"; then
 +    LIBXMENU="-lXMenu"
 +  else
 +    LIBXMENU=
 +  fi
 +  LIBX_OTHER=
 +  OLDXMENU_DEPS=
 +fi
 +
 +if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
 +  OLDXMENU_TARGET=
 +  OLDXMENU=nothing  
 +  LIBXMENU=
 +  OLDXMENU_DEPS=
  fi
 +
 +AC_SUBST(OLDXMENU_TARGET)
 +AC_SUBST(OLDXMENU)
 +AC_SUBST(LIBXMENU)
 +AC_SUBST(LIBX_OTHER)
 +AC_SUBST(OLDXMENU_DEPS)
 +
  if test "${HAVE_MENUS}" = "yes" ; then
    AC_DEFINE(HAVE_MENUS, 1,
            [Define to 1 if you have mouse menus.
             (This is automatic if you use X, but the option to specify it remains.)
             It is also defined with other window systems that support xmenu.c.])
  fi
 +
  if test "${GNU_MALLOC}" = "yes" ; then
    AC_DEFINE(GNU_MALLOC, 1,
            [Define to 1 if you want to use the GNU memory allocator.])
  fi
 +
 +RALLOC_OBJ=
  if test "${REL_ALLOC}" = "yes" ; then
    AC_DEFINE(REL_ALLOC, 1,
            [Define REL_ALLOC if you want to use the relocating allocator for
             buffer space.])
 +
 +  test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
 +fi
 +AC_SUBST(RALLOC_OBJ)
 +
 +if test "$opsys" = "cygwin"; then
 +  CYGWIN_OBJ="sheap.o"
 +  ## Cygwin differs because of its unexec().
 +  PRE_ALLOC_OBJ=
 +  POST_ALLOC_OBJ=lastfile.o
 +else
 +  CYGWIN_OBJ=
 +  PRE_ALLOC_OBJ=lastfile.o
 +  POST_ALLOC_OBJ=
 +fi
 +AC_SUBST(CYGWIN_OBJ)
 +AC_SUBST(PRE_ALLOC_OBJ)
 +AC_SUBST(POST_ALLOC_OBJ)
 +
 +
 +case "$opsys" in
 +  aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
 +
 +  darwin)
 +   ## The -headerpad option tells ld (see man page) to leave room at the
 +   ## end of the header for adding load commands.  Needed for dumping.
 +   ## 0x690 is the total size of 30 segment load commands (at 56
 +   ## each); under Cocoa 31 commands are required.
 +   if test "$HAVE_NS" = "yes"; then
 +     libs_nsgui="-framework AppKit"
 +     headerpad_extra=6C8
 +   else
 +     libs_nsgui=
 +     headerpad_extra=690
 +   fi
 +   LD_SWITCH_SYSTEM_TEMACS="-prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
 + 
 +   ## This is here because src/Makefile.in did some extra fiddling around
 +   ## with LD_SWITCH_SYSTEM.  The cpp logic was:
 +   ##   #ifndef LD_SWITCH_SYSTEM
 +   ##   #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
 +   ## Since all the *bsds define LD_SWITCH_SYSTEM, this simplifies to:
 +   ## not using gcc, darwin system not on an alpha (ie darwin, since
 +   ## darwin + alpha does not occur).
 +   ## Because this was done in src/Makefile.in, the resulting part of
 +   ## LD_SWITCH_SYSTEM was not used in configure (ie, in ac_link).
 +   ## It therefore seems cleaner to put this in LD_SWITCH_SYSTEM_TEMACS,
 +   ## rather than LD_SWITCH_SYSTEM.
 +   test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
 +     LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
 +   ;;
 +
 +  ## LD_SWITCH_X_SITE_AUX is a -R option saying where to find X at run-time.
 +  ## When handled by cpp, this was in LD_SWITCH_SYSTEM.  However, at
 +  ## the point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_AUX
 +  ## had not yet been defined and was expanded to null.  Hence LD_SWITCH_SYSTEM
 +  ## had different values in configure (in ac_link) and src/Makefile.in.
 +  ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
 +  gnu-linux) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_AUX)" ;;
 +
 +  *) LD_SWITCH_SYSTEM_TEMACS= ;;
 +esac
 +
 +if test "$NS_IMPL_GNUSTEP" = "yes"; then
 +  LD_SWITCH_SYSTEM_TEMACS="${LD_SWITCH_SYSTEM_TEMACS} -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES} -lgnustep-gui -lgnustep-base -lobjc -lpthread"
 +fi
 +
 +AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
 +
 +
 +LD_FIRSTFLAG=
 +ORDINARY_LINK=
 +case "$opsys" in
 +  ## gnu: GNU needs its own crt0.
 +  aix4-2|cygwin|darwin|gnu|hpux*|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
 +
 +  ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the
 +  ## library search parth, i.e. it won't search /usr/lib for libc and
 +  ## friends.  Using -nostartfiles instead avoids this problem, and
 +  ## will also work on earlier NetBSD releases.
 +  netbsd|openbsd) LD_FIRSTFLAG="-nostartfiles" ;;
 +
 +  ## macpcc: NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp> says
 +  ##   MkLinux/LinuxPPC needs this.
 +  ## ibms390x only supports opsys = gnu-linux so it can be added here.
 +  gnu-*)
 +    case "$machine" in
 +      macppc|ibms390x) LD_FIRSTFLAG="-nostdlib" ;;
 +    esac
 +    ;;
 +esac
 +
 +
 +if test "x$ORDINARY_LINK" = "xyes"; then
 +
 +  LD_FIRSTFLAG=""
 +  AC_DEFINE(ORDINARY_LINK, 1, [Define if the C compiler is the linker.])
 +
 +## The system files defining neither ORDINARY_LINK nor LD_FIRSTFLAG are:
 +## freebsd, gnu-* not on macppc|ibms390x.
 +elif test "x$GCC" = "xyes" && test "x$LD_FIRSTFLAG" = "x"; then
 +
 +  ## Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
 +  ## places that are difficult to figure out at make time.  Fortunately,
 +  ## these same versions allow you to pass arbitrary flags on to the
 +  ## linker, so there is no reason not to use it as a linker.
 +  ##
 +  ## Well, it is not quite perfect.  The "-nostdlib" keeps GCC from
 +  ## searching for libraries in its internal directories, so we have to
 +  ## ask GCC explicitly where to find libgcc.a (LIB_GCC below).
 +  LD_FIRSTFLAG="-nostdlib"
 +fi
 +
 +## FIXME? What setting of EDIT_LDFLAGS should this have?
 +test "$NS_IMPL_GNUSTEP" = "yes" && LD_FIRSTFLAG="-rdynamic"
 +
 +AC_SUBST(LD_FIRSTFLAG)
 +
 +
 +## FIXME? The logic here is not precisely the same as that above.
 +## There is no check here for a pre-defined LD_FIRSTFLAG.
 +## Should we only be setting LIB_GCC if LD ~ -nostdlib?
 +LIB_GCC=
 +if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
 +
 +  case "$opsys" in
 +    freebsd|netbsd|openbsd) LIB_GCC= ;;
 +
 +    gnu-*)
 +      ## armin76@gentoo.org reported that the lgcc_s flag is necessary to
 +      ## build on ARM EABI under GNU/Linux.  (Bug#5518)
 +      ## Note that m/arm.h never bothered to undefine LIB_GCC first.
 +      if test "$machine" = "arm"; then
 +        LIB_GCC="-lgcc_s"
 +      else
 +        ## FIXME? s/gnu-linux.h used to define LIB_GCC as below, then
 +        ## immediately undefine it again and redefine it to empty.
 +        ## Was the C_SWITCH_X_SITE part really necessary?
 +##      LIB_GCC=`$CC $C_SWITCH_X_SITE -print-libgcc-file-name`
 +        LIB_GCC=
 +      fi
 +      ;;
 +
 +    ## Ask GCC where to find libgcc.a.
 +    *) LIB_GCC=`$CC -print-libgcc-file-name 2> /dev/null` ;;
 +  esac
 +fi                              dnl if $GCC
 +AC_SUBST(LIB_GCC)
 +
 +
 +TOOLTIP_SUPPORT=
 +WINDOW_SUPPORT=
 +## If we're using X11/GNUstep, define some consequences.
 +if test "$HAVE_X_WINDOWS" = "yes" || test "$HAVE_NS" = "yes"; then
 +  AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
 +  AC_DEFINE(HAVE_MOUSE, 1, [Define if you have mouse support.])
 +  MOUSE_SUPPORT="\$(REAL_MOUSE_SUPPORT)"
 +  TOOLTIP_SUPPORT="\${lispsource}/mouse.elc"
 +
 +  WINDOW_SUPPORT="\$(BASE_WINDOW_SUPPORT)"
 +  test "$HAVE_X_WINDOWS" = "yes" && \
 +    WINDOW_SUPPORT="$WINDOW_SUPPORT \$(X_WINDOW_SUPPORT)"
 +
  fi
 +AC_SUBST(MOUSE_SUPPORT)
 +AC_SUBST(TOOLTIP_SUPPORT)
 +AC_SUBST(WINDOW_SUPPORT)
  
  
  AH_TOP([/* GNU Emacs site configuration template file.
@@@ -3500,12 -2767,37 +3500,12 @@@ along with GNU Emacs.  If not, see <htt
  ])dnl
  
  AH_BOTTOM([
 -/* If we're using X11/Carbon/GNUstep, define some consequences.  */
 -#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
 -#define HAVE_WINDOW_SYSTEM
 -#define HAVE_MOUSE
 -#endif
 -
  /* Define AMPERSAND_FULL_NAME if you use the convention
     that & in the full name stands for the login id.  */
  /* Turned on June 1996 supposing nobody will mind it.  */
  #define AMPERSAND_FULL_NAME
  
 -/* Define HAVE_SOUND if we have sound support.  We know it works
 -   and compiles only on the specified platforms.   For others,
 -   it probably doesn't make sense to try.  */
 -
 -#if defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
 -#ifdef HAVE_MACHINE_SOUNDCARD_H
 -#define HAVE_SOUND 1
 -#endif
 -#ifdef HAVE_SYS_SOUNDCARD_H
 -#define HAVE_SOUND 1
 -#endif
 -#ifdef HAVE_SOUNDCARD_H
 -#define HAVE_SOUND 1
 -#endif
 -#ifdef HAVE_ALSA
 -#define HAVE_SOUND 1
 -#endif
 -#endif /* __FreeBSD__ || __NetBSD__ || __linux__  */
 -
 -/* If using GNU, then support inline function declarations. */
 +/* If using GNU, then support inline function declarations.  */
  /* Don't try to switch on inline handling as detected by AC_C_INLINE
     generally, because even if non-gcc compilers accept `inline', they
     may reject `extern inline'.  */
  #include config_opsysfile
  #include config_machfile
  
 -/* Set up some defines, C and LD flags for NeXTstep interface on GNUstep.
 -  (There is probably a better place to do this, but right now the Cocoa
 -   side does this in s/darwin.h and we cannot
 -   parallel this exactly since GNUstep is multi-OS. */
 -#ifdef HAVE_NS
 -# ifdef NS_IMPL_GNUSTEP
 -/* See also .m.o rule in Makefile.in */
 -/* FIXME: are all these flags really needed?  Document here why.  */
 -#  define C_SWITCH_X_SYSTEM -D_REENTRANT -fPIC -fno-strict-aliasing
  /* GNUstep needs a bit more pure memory.  Of the existing knobs,
 -SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems.  */
 +   SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems.
 +  (There is probably a better place to do this, but right now the
 +   Cocoa side does this in s/darwin.h and we cannot parallel this
 +   exactly since GNUstep is multi-OS.  */
 +#if defined HAVE_NS && defined NS_IMPL_GNUSTEP
  #  define SYSTEM_PURESIZE_EXTRA 30000
 -# endif /* NS_IMPL_GNUSTEP */
 -#endif /* HAVE_NS */
 +#endif
  
  /* SIGTYPE is the macro we actually use.  */
  #ifndef SIGTYPE
  
  #define my_strftime nstrftime /* for strftime.c */
  
 -/* The rest of the code currently tests the CPP symbol BSTRING.
 -   Override any claims made by the system-description files.
 -   Note that on some SCO version it is possible to have bcopy and not bcmp.  */
 -#undef BSTRING
 -#if defined (HAVE_BCOPY) && defined (HAVE_BCMP)
 -#define BSTRING
 -#endif
 -
 -/* Some of the files of Emacs which are intended for use with other
 -   programs assume that if you have a config.h file, you must declare
 -   the type of getenv.
 -
 -   This declaration shouldn't appear when alloca.s or Makefile.in
 -   includes config.h.  */
 -#ifndef NOT_C_CODE
 -extern char *getenv ();
 -#endif
 -
  /* These default definitions are good for almost all machines.
     The exceptions override them in m/MACHINE.h.  */
  
  #endif
  #endif
  
 -/* Define if the compiler supports function prototypes.  It may do so
 -   but not define __STDC__ (e.g. DEC C by default) or may define it as
 -   zero.  */
 +/* Define if the compiler supports function prototypes.  It may do so but
 +   not define __STDC__ (e.g. DEC C by default) or may define it as zero.  */
  #undef PROTOTYPES
 -/* For mktime.c:  */
 -#ifndef __P
 -# if defined PROTOTYPES
 -#  define __P(args) args
 -# else
 -#  define __P(args) ()
 -# endif  /* GCC.  */
 -#endif /* __P */
 -
 -/* Don't include "string.h" or <stdlib.h> in non-C code.  */
 -#ifndef NOT_C_CODE
 -#ifdef HAVE_STRING_H
 -#include "string.h"
 -#endif
 -#ifdef HAVE_STRINGS_H
 -#include "strings.h"  /* May be needed for bcopy & al. */
 -#endif
 -#ifdef HAVE_STDLIB_H
 +
 +#include <string.h>
  #include <stdlib.h>
 +
 +#ifdef HAVE_ALLOCA_H
 +# include <alloca.h>
 +#elif defined __GNUC__
 +# define alloca __builtin_alloca
 +#elif defined _AIX
 +# define alloca __alloca
 +#else
 +# include <stddef.h>
 +# ifdef  __cplusplus
 +extern "C"
 +# endif
 +void *alloca (size_t);
  #endif
 -#ifndef __GNUC__
 -# ifdef HAVE_ALLOCA_H
 -#  include <alloca.h>
 -# else /* AIX files deal with #pragma.  */
 -#  ifndef alloca /* predefined by HP cc +Olibcalls */
 -char *alloca ();
 -#  endif
 -# endif /* HAVE_ALLOCA_H */
 -#endif /* __GNUC__ */
 +
  #ifndef HAVE_SIZE_T
  typedef unsigned size_t;
  #endif
 -#endif /* NOT_C_CODE */
  
 -/* Define HAVE_X_I18N if we have usable i18n support.  */
 -
 -#ifdef HAVE_X11R6
 -#define HAVE_X_I18N
 -#elif !defined X11R5_INHIBIT_I18N
 -#define HAVE_X_I18N
 +#ifndef HAVE_STRCHR
 +#define strchr(a, b) index (a, b)
  #endif
  
 -/* Define HAVE_X11R6_XIM if we have usable X11R6-style XIM support.  */
 -
 -#if defined HAVE_X11R6 && !defined INHIBIT_X11R6_XIM
 -#define HAVE_X11R6_XIM
 +#ifndef HAVE_STRRCHR
 +#define strrchr(a, b) rindex (a, b)
  #endif
  
  #if defined __GNUC__ && (__GNUC__ > 2 \
  #define NO_RETURN     /* nothing */
  #endif
  
 +#if __GNUC__ >= 3  /* On GCC 3.0 we might get a warning.  */
 +#define NO_INLINE __attribute__((noinline))
 +#else
 +#define NO_INLINE
 +#endif
 +
 +/* Some versions of GNU/Linux define noinline in their headers.  */
 +#ifdef noinline
 +#undef noinline
 +#endif
 +
  /* These won't be used automatically yet.  We also need to know, at least,
     that the stack is continuous.  */
  #ifdef __GNUC__
  #  ifndef GC_SETJMP_WORKS
 -  /* GC_SETJMP_WORKS is nearly always appropriate for GCC --
 -     see NON_SAVING_SETJMP in the target descriptions.  */
 -  /* Exceptions (see NON_SAVING_SETJMP in target description) are
 -     SCO5 non-ELF (but Emacs specifies ELF) and SVR3 on x86.
 -     Fixme: Deal with SVR3.  */
 +  /* GC_SETJMP_WORKS is nearly always appropriate for GCC.  */
  #    define GC_SETJMP_WORKS 1
  #  endif
  #  ifndef GC_LISP_OBJECT_ALIGNMENT
  #  endif
  #endif
  
 -#ifndef HAVE_BCOPY
 -#define bcopy(a,b,s) memcpy (b,a,s)
 -#endif
 -#ifndef HAVE_BZERO
 -#define bzero(a,s) memset (a,0,s)
 -#endif
 -#ifndef HAVE_BCMP
 -#define BCMP memcmp
 -#endif
 -
  #endif /* EMACS_CONFIG_H */
  
  /*
@@@ -3695,17 -3033,12 +3695,17 @@@ echo "  Does Emacs use -lXaw3d
  echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
  echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
  echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
 -echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $ac_gif_lib_name"
 +echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $LIBGIF"
  echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
  echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
 +echo "  Does Emacs use imagemagick?                             ${HAVE_IMAGEMAGICK}"
 +
  echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
  echo "  Does Emacs use -ldbus?                                  ${HAVE_DBUS}"
  echo "  Does Emacs use -lgconf?                                 ${HAVE_GCONF}"
 +echo "  Does Emacs use -lselinux?                               ${HAVE_LIBSELINUX}"
 +echo "  Does Emacs use -lgnutls?                                ${HAVE_GNUTLS}"
 +echo "  Does Emacs use -lxml2?                                  ${HAVE_LIBXML2}"
  
  echo "  Does Emacs use -lfreetype?                              ${HAVE_FREETYPE}"
  echo "  Does Emacs use -lm17n-flt?                              ${HAVE_M17N_FLT}"
@@@ -3737,11 -3070,6 +3737,6 @@@ to run if these resources are not insta
     echo
  fi
  
- if test "$HAVE_DBUS" = yes && test "${opsys}" != "gnu-linux"; then
-   echo "D-Bus integration has been tested for GNU/Linux only."
-   echo
- fi
  
  # Remove any trailing slashes in these variables.
  [test "${prefix}" != NONE &&
  test "${exec_prefix}" != NONE &&
    exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
  
 -# Now get this: Some word that is part of the ${srcdir} directory name
 -# or the ${configuration} value might, just might, happen to be an
 -# identifier like `sun4' or `i386' or something, and be predefined by
 -# the C preprocessor to some helpful value like 1, or maybe the empty
 -# string.  Needless to say consequent macro substitutions are less
 -# than conducive to the makefile finding the correct directory.
 -[cpp_undefs="`echo $srcdir $configuration $canonical unix |
 -  sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/  *$//' \
 -  -e 's/  */ -U/g' -e 's/-U[0-9][^ ]*//g'`"]
 -
 -## Check if the C preprocessor will convert `..' to `. .'.  If so, set
 -## CPP_NEED_TRADITIONAL to `yes' so that the code to generate Makefile
 -## from Makefile.c can correctly provide the arg `-traditional' to the
 -## C preprocessor.
 -
 -AC_EGREP_CPP(yes..yes,
 -      [yes..yes],
 -      CPP_NEED_TRADITIONAL=no,
 -      CPP_NEED_TRADITIONAL=yes)
 -
 -AC_OUTPUT(Makefile lib-src/Makefile.c:lib-src/Makefile.in oldXMenu/Makefile \
 +dnl You might wonder (I did) why epaths.h is generated by running make,
 +dnl rather than just letting configure generate it from epaths.in.
 +dnl One reason is that the various paths are not fully expanded (see above);
 +dnl eg gamedir=${prefix}/var/games/emacs.
 +dnl Secondly, the GNU Coding standards require that one should be able
 +dnl to run `make prefix=/some/where/else' and override the values set
 +dnl by configure.  This also explains the `move-if-change' test and
 +dnl the use of force in the `epaths-force' rule in Makefile.in.
 +AC_OUTPUT(Makefile lib-src/Makefile oldXMenu/Makefile \
        doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
 -      doc/lispref/Makefile src/Makefile.c:src/Makefile.in \
 +      doc/lispref/Makefile src/Makefile \
        lwlib/Makefile lisp/Makefile leim/Makefile, [
  
  ### Make the necessary directories, if they don't exist.
@@@ -3767,13 -3107,59 +3762,13 @@@ for dir in etc lisp ; d
    test -d ${dir} || mkdir ${dir}
  done
  
 -# Build src/Makefile from ${srcdir}/src/Makefile.c
 -# and lib-src/Makefile from ${srcdir}/lib-src/Makefile.c
 -# This must be done after src/config.h is built, since we rely on that file.
 -
  echo creating src/epaths.h
  ${MAKE-make} epaths-force
  
 -# As of 2000-11-19, newest development versions of GNU cpp preprocess
 -# `..' to `. .'  unless invoked with -traditional
 -
 -if test "x$GCC" = xyes && test "x$CPP_NEED_TRADITIONAL" = xyes; then
 -  CPPFLAGS="$CPPFLAGS -traditional"
 -fi
 -
 -echo creating lib-src/Makefile
 -( cd lib-src
 -  rm -f junk.c junk1.c junk2.c
 -  sed -e '/start of cpp stuff/q' \
 -      < Makefile.c > junk1.c
 -  sed -e '1,/start of cpp stuff/d'\
 -      -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
 -      < Makefile.c > junk.c
 -  $CPP -P $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
 -      sed -e 's/^ /   /' -e '/^#/d' -e '/^[   \f]*$/d' > junk2.c
 -  cat junk1.c junk2.c > Makefile.new
 -  rm -f junk.c junk1.c junk2.c
 -  chmod 444 Makefile.new
 -  mv -f Makefile.new Makefile
 -)
 -
 -echo creating src/Makefile
 -( cd src
 -  rm -f junk.c junk1.c junk2.c
 -  sed -e '/start of cpp stuff/q' \
 -      < Makefile.c > junk1.c
 -  sed -e '1,/start of cpp stuff/d'\
 -      -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
 -      < Makefile.c > junk.c
 -  $CPP -P $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
 -      sed -e 's/^ /   /' -e '/^#/d' -e '/^[   \f]*$/d' > junk2.c
 -  cat junk1.c junk2.c > Makefile.new
 -  rm -f junk.c junk1.c junk2.c
 -  chmod 444 Makefile.new
 -  mv -f Makefile.new Makefile
 -)
 -
  if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
    echo creating src/.gdbinit
    echo source $srcdir/src/.gdbinit > src/.gdbinit
  fi
  
 -], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPP_NEED_TRADITIONAL="$CPP_NEED_TRADITIONAL" CPPFLAGS="$CPPFLAGS" cpp_undefs="$cpp_undefs"])
 +], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"])
  
 -m4_if(dnl     Do not change this comment
 -   arch-tag: 156a4dd5-bddc-4d18-96ac-f37742cf6a5e
 -)dnl
diff --combined doc/emacs/ChangeLog
index 5c0ff3da2067811862e2579b65da8457361ca944,18819f858fd72ed0e37be300e23ac0f9dfead0f3..fe9cd8a73b4b483427735cec763b86eb30a82835
@@@ -1,95 -1,8 +1,100 @@@
 -2010-11-06  Eli Zaretskii  <eliz@gnu.org>
++2010-11-09  Eli Zaretskii  <eliz@gnu.org>
+       * msdog.texi (Windows HOME): Add information regarding startup
+       directory when invoking Emacs from a desktop shortcut.  (bug#7300)
 +2010-10-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
 +
 +      * Makefile.in (.texi.dvi): Remove unnecessary suffix rule.
 +      (DVIPS): New variable.
 +      (.PHONY): Add html, ps.
 +      (html, emacs.html, ps, emacs.ps, emacs-xtra.ps): New targets.
 +      (clean): Delete html, ps files.
 +
 +2010-10-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (EMACSSOURCES): Add emacsver.texi.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (VPATH): Remove.
 +      (infodir): Make it absolute.
 +      (mkinfodir, $(infodir)/emacs, infoclean): No need to cd $srcdir.
 +
 +      * Makefile.in (dist): Anchor regexps.
 +
 +      * Makefile.in (EMACSSOURCES): Put emacs.texi first.
 +      ($(infodir)/emacs, emacs.dvi, emacs.pdf, emacs-xtra.dvi)
 +      (emacs-xtra.pdf): Use $<.
 +
 +      * Makefile.in (infoclean): Remove harmless, long-standing error.
 +
 +      * Makefile.in ($(infodir)): Delete rule.
 +      (mkinfodir): New.
 +      ($(infodir)/emacs): Use $mkinfodir instead of infodir.
 +
 +      * Makefile.in (distclean): Do not delete emacsver.texi.
 +      (dist): Remove reference to emacsver.texi.in.
 +      * emacsver.texi: New file, replacing emacsver.texi.in.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacsver.texi.in: New file.
 +      * emacs.texi: Set EMACSVER by including emacsver.texi.
 +      * Makefile.in (distclean): Delete emacsver.texi.
 +      (dist): Copy emacsver.texi.
 +      (EMACSSOURCES): Add emacsver.texi.
 +
 +      * ack.texi (Acknowledgments): No more b2m.c.
 +
 +      * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
 +      (emacs): Remove rule.
 +      (dist): No need to deal with the emacs rule any more.
 +
 +2010-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (version): New, set by configure.
 +      (clean): Delete dist tar file.
 +      (dist): Use version in tar name.
 +
 +2010-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (EMACS_XTRA): Add the main source file.
 +      (emacs-xtra.dvi, emacs-xtra.pdf): Remove explicit emacs-xtra.texi.
 +      (mostlyclean): No core files, reorder other files.
 +      (clean): Delete specific dvi and pdf files.
 +      (infoclean, dist): New rules.
 +      (maintainer-clean): Use infoclean.
 +      ($(infodir)): Add parallel build workaround.
 +
 +2010-10-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (SHELL): Set it.
 +      (INFO_TARGETS, DVI_TARGETS): Remove variables.
 +      (info, dvi): Replace above variables with their expansions.
 +      (info): Move mkdir from here...
 +      ($(infodir)/emacs): ... to here (for parallel builds).
 +      (pdf): New target.
 +      ($(infodir)/emacs): Pass -o option to makeinfo.
 +      (.PHONY): Declare clean rules.
 +      (maintainer-clean): Delete dvi and pdf files.
 +      Guard against cd failures.  Use a more restrictive delete.
 +
 +2010-10-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * misc.texi (Shell Mode): Remove reference to old function name.
 +
 +2010-09-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * maintaining.texi (VC Mode Line): Mention all the possible VC status
 +      indicator characters.
 +
 +2010-09-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (top_srcdir): Remove unused variable.
 +
  2010-09-14  Glenn Morris  <rgm@gnu.org>
  
        * cal-xtra.texi (Fancy Diary Display): Emphasize that sort should be
        * calendar.texi (Appointments): Also updated when a diary include file
        is saved.
  
 -2010-09-12  Glenn Morris  <rgm@gnu.org>
 +2010-09-14  Glenn Morris  <rgm@gnu.org>
  
        * trouble.texi (Bugs): Update the section intro.
        (Known Problems): New section.
        (Sending Patches): Bug fixes are best as responses to existing bugs.
        * emacs.texi (Known Problems): Add menu entry for new section.
  
 -2010-09-04  Chong Yidong  <cyd@stupidchicken.com>
 +2010-09-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * xresources.texi: Untabify.
 +
 +2010-09-06  Chong Yidong  <cyd@stupidchicken.com>
  
        * dired.texi (Dired Enter): Minor doc fix (Bug#6982).
  
 -2010-09-02  Glenn Morris  <rgm@gnu.org>
 +2010-09-06  Glenn Morris  <rgm@gnu.org>
  
        * misc.texi (Saving Emacs Sessions): Mention desktop-path.  (Bug#6948)
  
 +2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Cut/Paste Other App): Remove vut-buffer text.
 +
  2010-08-21  Glenn Morris  <rgm@gnu.org>
  
        * misc.texi (Amusements): Mention bubbles and animate.
  
 +2010-07-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (Visiting): Add more index entries for
 +      large-file-warning-threshold.
 +
 +2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Tool Bars): Add doc for tool-bar-position.
 +
  2010-06-23  Glenn Morris  <rgm@gnu.org>
  
        * abbrevs.texi, basic.texi, buffers.texi, building.texi, calendar.texi:
  
        * basic.texi (Inserting Text): Fix typo.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-06-10  Glenn Morris  <rgm@gnu.org>
  
 -      * Version 23.2 released.
 +      * ack.texi (Acknowledgments):
 +      * emacs.texi (Acknowledgments): Update for notifications.el.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-31  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * dired.texi (Operating on Files): Mention encryption commands
 +      (Bug#6315).
 +
 +2010-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * basic.texi (Moving Point): Update due to renaming of commands bound
 +      to arrows.  Document bidi-aware behavior of C-<right> and C-<left>.
 +
 +2010-05-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * display.texi (Fringes): Document reversal of fringe arrows for R2L
 +      paragraphs.
 +      (Line Truncation): Fix wording for bidi display.
 +
 +      * basic.texi (Moving Point): Document bidi-aware behavior of the arrow
 +      keys.
 +
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
  
        * building.texi (GDB Graphical Interface): Remove misleading comparison
        to an IDE (Bug#6128).
  
 -2010-05-03  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +2010-05-08  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
  
        * programs.texi (Man Page):
        * misc.texi (Invoking emacsclient):
        * mini.texi (Repetition):
        * mark.texi (Setting Mark): Fix typos.
  
 -2010-04-25  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
  
        * misc.texi (Printing): Document htmlfontify-buffer.
  
 -2010-04-21  Glenn Morris  <rgm@gnu.org>
 +2010-05-08  Glenn Morris  <rgm@gnu.org>
  
        * calendar.texi (Displaying the Diary, Format of Diary File):
        Fix external cross-references for TeX format output.
  
 +2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
 +
 +2010-05-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cmdargs.texi (Initial Options): Mention --chdir.
 +
 +2010-04-21  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Tool Bars): Add tool-bar-style.
 +
 +2010-04-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi, emacs.texi (Acknowledgments): Add SELinux support.
 +
  2010-04-18  Chong Yidong  <cyd@stupidchicken.com>
  
        * programs.texi (Semantic): New node.
  
        * misc.texi (Gnus): Use the `C-h i' keybinding for info.
  
 -2010-04-16  Glenn Morris  <rgm@gnu.org>
 +2010-04-18  Glenn Morris  <rgm@gnu.org>
  
        * emacs.texi (Acknowledgments): Remove duplicate.
  
        * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
  
 -2010-04-15  Glenn Morris  <rgm@gnu.org>
 +2010-04-18  Glenn Morris  <rgm@gnu.org>
  
        * dired.texi (Misc Dired Features): Mention VC diff and log.
        * maintaining.texi (Old Revisions, VC Change Log):
        * custom.texi (Specifying File Variables, Directory Variables):
        Document new commands for manipulating local variable lists.
  
 -2010-04-09  Glenn Morris  <rgm@gnu.org>
 +2010-04-18  Glenn Morris  <rgm@gnu.org>
  
        * trouble.texi (Contributing): Add cindex entry.
        Mention etc/CONTRIBUTE.
  
 -2010-04-06  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-18  Chong Yidong  <cyd@stupidchicken.com>
  
        * mark.texi (Persistent Mark): Copyedits.  Replace undo example with
        query-replace (Bug#5774).
  
 +2010-04-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi, emacs.texi (Acknowledgments): Update for Org changes.
 +
 +2010-04-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (Lucid Resources): Mention faceName for dialogs.
 +
 +2010-04-08  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (Lucid Resources): Mention faceName to set Xft fonts.
 +
  2010-03-30  Eli Zaretskii  <eliz@gnu.org>
  
        * mule.texi (Input Methods): Mention "C-x 8 RET" and add a
        * basic.texi (Inserting Text): Add an index entry for "C-x 8 RET".
        Mention completion provided by `ucs-insert'.
  
 -2010-03-28  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-30  Chong Yidong  <cyd@stupidchicken.com>
  
        * sending.texi (Sending Mail): Note variables that may need
        customizing.
        (Mail Sending): Expand discussion of send-mail-function.
  
 -2010-03-28  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-30  Chong Yidong  <cyd@stupidchicken.com>
  
        Document Message mode as the default mail mode.
  
  
        * emacs.texi (Top): Fix xrefs.
  
 -2010-03-25  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-30  Chong Yidong  <cyd@stupidchicken.com>
  
        * maintaining.texi (VC With A Merging VCS): C-x v v now creates a
        repository if there is none.
        * misc.texi (Navigation): Document doc-view-continuous.
        (Shell Ring): Document new M-r binding.  M-s is no longer bound.
  
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      * search.texi (Other Repeating Search): Remove line that `occur'
 +      can not handle multiline matches.
 +
 +2010-03-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mule.texi (International): Mention support of bidirectional editing.
 +      (Bidirectional Editing): New section.
 +
 +2010-03-28  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * emacs.texi (Top): Update node names to those in building.texi.
 +
 +2010-03-27  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      doc/emacs/building.texi: Describe restored GDB/MI fuctionality removed by 2009-12-29T07:15:34Z!nickrob@snap.net.nz.
 +      doc/emacs/emacs.texi: Update node names for building.texi.
 +
  2010-03-24  Glenn Morris  <rgm@gnu.org>
  
        * ack.texi (Acknowledgments):
        * xresources.texi (Table of Resources):
        * mule.texi (Defining Fontsets, Charsets): Update xrefs.
  
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
  2010-03-06  Chong Yidong  <cyd@stupidchicken.com>
  
        * custom.texi (Init Examples): Add xref to Locals.
  
  2009-06-23  Miles Bader  <miles@gnu.org>
  
 -      * display.texi (Scrolling): Document `recenter-redisplay'
 +      * display.texi (Scrolling): Document `recenter-redisplay'.
        (Temporary Face Changes): Document `text-scale-set'.
  
  2009-06-21  Chong Yidong  <cyd@stupidchicken.com>
        (Fortran Columns): Mention font-locking.
        (Fortran Abbrev): Word syntax not relevant with new-style abbrev.
  
 -2008-08-23  Johan Bockgard  <bojohan@muon>
 +2008-08-23  Johan Bockgård  <bojohan@muon>
  
        * basic.texi (Moving Point): Fix <prior>/<next> confusion.
  
  2005-03-05  Juri Linkov  <juri@jurta.org>
  
        * cmdargs.texi (Emacs Invocation): Add cindex
 -      "invocation (command line arguments)"
 +      "invocation (command line arguments)".
        (Misc X): Add -nbc, --no-blinking-cursor.
  
  2005-03-04  Ulf Jasper  <ulf.jasper@web.de>
  
  ;; Local Variables:
  ;; coding: utf-8
 -;; fill-column: 79
 -;; add-log-time-zone-rule: t
  ;; End:
  
 -    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
 -      2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
 +  Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
 +    2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 +    Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
  
    You should have received a copy of the GNU General Public License
    along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 -
 -;;; arch-tag: f1d62776-3ed5-4811-9d96-267252577dbd
diff --combined doc/misc/ChangeLog
index 9761e599d8fcf4f6846709f443a35f78d9441cc4,11da421603e8f92e7b836673c4c1e6b036dc3efc..e255b44f189e3fcde37b79ed53ae932bef6cecc1
 -2010-11-05  Michael Albinus  <michael.albinus@gmx.de>
++2010-11-09  Jay Belanger  <jay.p.belanger@gmail.com>
 -      * trampver.texi: Update release number.
++      * calc.texi: Use emacsver.texi to determine Emacs version.
 -2010-11-03  Jay Belanger  <jay.p.belanger@gmail.com>
 +2010-11-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * calc.texi: Use emacsver.texi to determine Emacs version.
 +      * gnus.texi (Customizing the IMAP Connection): Remove nnir mention,
 +      since that works by default.
 +
 +2010-11-03  Kan-Ru Chen  <kanru@kanru.info>  (tiny change)
 +
 +      * gnus.texi (Customizing the IMAP Connection): Document
 +      `nnimap-expunge' and remove `nnimap-expunge-inbox' from example.
 +
 +2010-11-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Remote shell setup): New item "Interactive shell
 +      prompt".  Reported by Christian Millour <cm@abtela.com>.
 +      (Remote shell setup, Remote processes): Use @code{} for
 +      environment variables.
 +
 +2010-11-03  Glenn Morris  <rgm@gnu.org>
  
 -2010-10-30  Glenn Morris  <rgm@gnu.org>
 +      * ediff.texi (Quick Help Commands, Miscellaneous):
 +      * gnus.texi (Agent Variables, Configuring nnmairix): Spelling fix.
 +
 +2010-10-31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Paging the Article): Document C-u g/C-u C-u g.
 +
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
  
        * mh-e.texi (Preface, From Bill Wohler): Change 23 to past tense.
  
 -2010-10-29  Glenn Morris  <rgm@gnu.org>
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
  
        * cc-mode.texi: Remove reference to defunct viewcvs URL.
  
 -2010-10-22  Juanma Barranquero  <lekktu@gmail.com>
 +2010-10-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Client-Side IMAP Splitting): Mention
 +      nnimap-unsplittable-articles.
 +
 +2010-10-29  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi (Finding the News): Remove references to obsoletes
 +      variables `gnus-nntp-server' and `gnus-secondary-servers'.
 +
 +2010-10-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (MAKEINFO): Add -I$(emacsdir).
 +      (ENVADD): Remove extra -I$(emacsdir), included in $(MAKEINFO).
 +      ($(infodir)/efaq): Remove -I$(emacsdir), included in $(MAKEINFO).
 +      ($(infodir)/calc, calc.dvi): Depend on $(emacsdir)/emacsver.texi.
 +
 +2010-10-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (MAKEINFO, ENVADD): Add $emacsdir to include path.
 +      (($(infodir)/calc, calc.dvi, calc.pdf): Depend on emacsver.texi.
 +      ($(infodir)/efaq): Remove -I option now in $MAKEINFO.
 +
 +2010-10-25  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.texi (Mail-mode integration): Add alternative key bindings
 +      for epa-mail commands; escape comma.
 +      Don't use the word "PGP", since it is a non-free program.
 +
 +2010-10-24  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi: Use emacsver.texi to determine Emacs version.
 +
 +2010-10-24  Juanma Barranquero  <lekktu@gmail.com>
  
        * gnus.texi (Group Parameters, Buttons): Fix typos.
  
 +2010-10-22  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * gnus.texi (Subscription Commands): Mention that you can also
 +      subscribe to new groups via the Server buffer, which is probably more
 +      convenient when subscribing to many groups.
 +
 +2010-10-21  Julien Danjou  <julien@danjou.info>
 +
 +      * message.texi (Message Headers): Allow message-default-headers to be a
 +      function.
 +
 +2010-10-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-news.texi: Mention new archive defaults.
 +
 +2010-10-21  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (RSS): Remove nnrss-wash-html-in-text-plain-parts.
 +
 +2010-10-20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (HTML): Document the function value of
 +      gnus-blocked-images.
 +      (Article Washing): shr and gnus-w3m, not the direct function names.
 +
 +2010-10-20  Julien Danjou  <julien@danjou.info>
 +
 +      * emacs-mime.texi (Flowed text): Add a note about mml-enable-flowed
 +      variable.
 +
 +2010-10-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Customizing the IMAP Connection): The port strings are
 +      strings.
 +      (Document Groups): Mention git.
 +
 +2010-10-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-coding.texi (Gnus Maintainance Guide): Update to mention Emacs
 +      bzr/Gnus git sync.
 +
 +2010-10-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix last
 +      change.
 +
 +2010-10-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix up the
 +      @item syntax for in-Emacs makeinfo.
 +
 +2010-10-13  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix syntax and
 +      trim sentence.
 +
 +2010-10-12  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.texi (Caching Passphrases):
 +      * auth.texi (GnuPG and EasyPG Assistant Configuration): Clarify
 +      some configurations require to set up gpg-agent.
 +
 +2010-10-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (.texi.dvi): Remove unnecessary suffix rule.
 +
 +2010-10-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Spam Package Introduction): Mention `$'.
 +
 +2010-10-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (emacsdir): New variable.
 +      ($(infodir)/efaq, faq.dvi): Depend on emacsver.texi.
 +      (ENVADD, $(infodir)/efaq): Add -I$(emacsdir).
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (mostlyclean): Delete *.toc.
 +
 +      * Makefile.in: Use $< in rules.
 +
 +      * Makefile.in (maintainer-clean): Remove harmless, long-standing error.
 +
 +      * Makefile.in ($(infodir)): Delete rule.
 +      (mkinfodir): New.  Use it in all the info rules, rather than depending
 +      on infodir.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * gnus.texi (Article Washing): Fix previous change.
 +
 +      * Makefile.in (emacsdir): New variable.
 +      ($(infodir)/efaq): Pass -I $(emacsdir) to makeinfo.
 +      Depend on emacsver.texi.
 +
 +      * faq.texi (VER): Replace with EMACSVER from emacsver.texi.
 +
 +      * Makefile.in (.PHONY): Declare info, dvi, pdf and the clean rules.
 +
 +2010-10-08  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi: Add mm-shr.
 +
 +2010-10-08  Ludovic Courtès  <ludo@gnu.org>
 +
 +      * gnus.texi (Finding the Parent, The Gnus Registry)
 +      (Registry Article Refer Method): Update docs for nnregistry.el.
 +
 +2010-10-08  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * auth.texi (Help for users)
 +      (GnuPG and EasyPG Assistant Configuration): Update docs.
 +
  2010-10-08  Glenn Morris  <rgm@gnu.org>
  
        * cl.texi (Organization, Installation, Old CL Compatibility):
        Deprecate cl-compat for new code.
 -
 -2010-10-07  Glenn Morris  <rgm@gnu.org>
 +      (Usage, Installation): Remove outdated information.
  
        * eudc.texi (CCSO PH/QI, LDAP Requirements): Remove old information.
  
 +2010-10-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (Gravatars): Document gnus-gravatar-too-ugly.
 +
 +2010-10-06  Julien Danjou  <julien@danjou.info>
 +
 +      * sieve.texi (Manage Sieve API): Document sieve-manage-authenticate.
 +
 +      * message.texi (PGP Compatibility): Remove reference to gpg-2comp,
 +      broken link.
 +
 +      * gnus-faq.texi (FAQ 8-3): Remove references to my.gnus.org.
 +
 +      * gnus.texi (Comparing Mail Back Ends): Remove broken link and allusion
 +      to ReiserFS.
 +
 +      * gnus-faq.texi (FAQ 5-5): Fix Flyspell URL.
 +      (FAQ 7-1): Fix getmail URL.
 +
 +2010-10-06  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.texi (Caching Passphrases): New section.
 +
  2010-10-06  Glenn Morris  <rgm@gnu.org>
  
 -      * cl.texi (Usage, Installation): Remove outdated information.
 +      * Makefile.in (SHELL): Set it.
 +      (info): Move the mkdir dependency to the individual info files.
 +      (mostlyclean): Tidy up.
 +      (clean): Only delete the specific dvi and pdf files.
 +      (maintainer-clean): Be more restrictive in what we delete.
 +      ($(infodir)): Add parallel build workaround.
 +
 +2010-10-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Misc Article): Document gnus-widen-article-window.
 +
 +2010-10-03  Julien Danjou  <julien@danjou.info>
 +
 +      * emacs-mime.texi (Display Customization): Update
 +      mm-inline-large-images documentation and add documentation for
 +      mm-inline-large-images-proportion.
 +
 +2010-10-03  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Frequently Asked Questions): Mention
 +      remote-file-name-inhibit-cache.
 +
 +2010-10-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Splitting Mail): Fix @xref syntax.
 +      (Splitting Mail): Really fix the @ref syntax.
 +
 +2010-10-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Splitting Mail): Mention the new fancy splitting
 +      function.
 +      (Article Hiding): Add google banner example.  Suggested by Benjamin
 +      Xu.
 +
 +2010-09-30  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus.texi (Spam Package Configuration Examples, SpamOracle): Remove
 +      nnimap-split-rule from examples.
 +
 +2010-09-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Mail Source Specifiers): Remove webmail.el mentions.
 +      (NNTP): Document nntp-server-list-active-group.  Suggested by Barry
 +      Fishman.
 +      (Client-Side IMAP Splitting): Add nnimap-split-fancy.
 +
 +2010-09-30  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi (Gravatars): Fix documentation about
 +      gnu-gravatar-properties.
 +
 +2010-09-29  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.texi (Bug Reports): New section.
 +
 +2010-09-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (top_srcdir): Remove unused variable.
 +
 +2010-09-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Using IMAP): Remove the @acronyms from the headings.
 +      (Client-Side IMAP Splitting): Document 'default.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Customizing the IMAP Connection): Document
 +      nnimap-fetch-partial-articles.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-news.texi: Mention nnimap-inbox.
 +
 +      * gnus.texi (Picons): Document gnus-picon-inhibit-top-level-domains.
 +
 +2010-09-26  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi (Oort Gnus): Remove mention of ssl.el.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Security): Remove gpg.el mention.
 +
 +2010-09-26  Andreas Seltenreich  <seltenreich@gmx.de>
 +
 +      * gnus.texi (Browse Foreign Server): New variable
 +      gnus-browse-subscribe-newsgroup-method.
 +
 +      * gnus-news.texi: Mention it.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (NoCeM): Removed.
 +      (Startup Variables): No jingle.
 +
 +2010-09-25  Ulrich Mueller  <ulm@gentoo.org>
 +
 +      * woman.texi (Interface Options): xz compression is now supported.
 +
 +2010-09-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Article Commands): Document gnus-fetch-partial-articles.
 +      (Unavailable Servers): Document gnus-server-copy-server.
 +      (Using IMAP): Document the new nnimap.
 +
 +2010-09-25  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi (Customizing Articles): Remove gnus-treat-translate.
 +
 +2010-09-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * url.texi (Disk Caching): Tweak previous change.
 +
 +2010-09-24  Julien Danjou  <julien@danjou.info>
 +
 +      * url.texi (Disk Caching): Mention url-cache-expire-time,
 +      url-cache-expired, and url-fetch-from-cache.
 +
 +2010-09-24  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi: Add Gravatars.
 +
 +2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Startup Variables): Mention gnus-use-backend-marks.
 +
 +2010-09-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Expunging mailboxes): Update name of the expunging
 +      command.
 +
 +2010-09-20  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * emacs-mime.texi (rfc2047): Update description for
 +      rfc2047-encode-parameter.
 +
 +2010-09-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Inline methods): Remove "ssh1_old", "ssh2_old" and
 +      "fish" methods.
 +      (External methods): Remove "scp1_old" and "scp2_old" methods.
 +
 +2010-09-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi: Remove Japanese manual.  Fix typo.
 +
 +      * trampver.texi: Update release number.  Remove japanesemanual.
 +
 +2010-09-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * org.texi: Restore clobbered changes (copyright years, untabify).
 +
 +2010-09-04  Julien Danjou  <julien@danjou.info>  (tiny change)
 +
 +      * gnus.texi (Adaptive Scoring): Fix typo.
 +
 +2010-09-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Article Display): Document gnus-html-show-images.
 +
 +2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cl.texi (Basic Setf): Remove x-get-cut-buffer and x-get-cutbuffer.
 +
 +2010-09-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (HTML): Document gnus-max-image-proportion.
 +
 +2010-08-31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (HTML): Document gnus-blocked-images.
 +
 +      * message.texi (Wide Reply): Document message-prune-recipient-rules.
 +
 +2010-08-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Summary Mail Commands): Note that only the addresses from
 +      the first message are used for wide replies.
 +      (Changing Servers): Remove documentation on gnus-change-server and
 +      friends, since it's been removed.
 +
 +2010-08-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Drafts): Mention B DEL.
 +
 +2010-08-29  Tim Landscheidt  <tim@tim-landscheidt.de>  (tiny change)
 +
 +      * gnus.texi (Delayed Articles): Mention that the Date header is the
 +      original one, even if you delay.
 +
 +2010-08-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Asynchronous Fetching): Document
 +      gnus-async-post-fetch-function.
 +      (HTML): Made into its own section.
  
  2010-08-26  Michael Albinus  <michael.albinus@gmx.de>
  
  
        * trampver.texi: Update release number.
  
 -2010-08-01  Juanma Barranquero  <lekktu@gmail.com>
 +2010-08-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbus.texi (Alternative Buses): New chapter.
 +
 +2010-08-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * cl.texi (Mapping over Sequences): Rename mapc => cl-mapc.
 +
 +2010-08-09  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (Customizing Calc): Rearrange description of new
 +      variables to match the presentation of other variables.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
  
        * org.texi (Footnotes, Tables in HTML export): Fix typos.
  
 -2010-07-23  Chong Yidong  <cyd@stupidchicken.com>
 +2010-08-08  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (Making Selections, Selecting Subformulas)
 +      (Customizing Calc): Mention how to use faces to emphasize selected
 +      sub-formulas.
 +
 +2010-08-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (External packages): File attributes cache flushing
 +      for asynchronous processes.
 +
 +2010-08-01  Alan Mackenzie  <acm@muc.de>
 +
 +      Enhance the manual for the latest Java Mode.
 +
 +      * cc-mode.texi (Syntactic Symbols): New symbols annotation-top-cont and
 +      annotation-var-cont.
 +      (Java Symbols): Page renamed from Anonymous Class Symbol.  Document the
 +      two new symbols.
 +
 +2010-07-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Traces and Profiles): Describe verbose level 9.
 +
 +2010-07-27  Chong Yidong  <cyd@stupidchicken.com>
  
        * nxml-mode.texi (Limitations): Remove obsolete discussion (Bug#6708).
  
 +2010-07-19  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * org.texi: Fix typo in previous change (2010-07-19T09:47:27Z!carsten.dominik@gmail.com).
 +
 +2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi: Add macros to get plain quotes in PDF output.
 +      List additional contributors.
 +      (Capture): New section, replaces the section about remember.
 +      (Working With Source Code): New chapter, focused on documenting Org
 +      Babel.
 +      (Code evaluation security): New section.
 +      (MobileOrg): Document DropBox support.
 +      (TaskJuggler export): Document taskjuggler and Gantt chart support.
 +      (Special symbols): Show how to display UTF8 characters for entities.
 +      (Global TODO list): Clarify the use of the "M" key and the differences
 +      to the "m" key.
 +      (RSS Feeds): Mention Atom feeds as well.
 +      (Setting tags): Remove paragraph about
 +      `org-complete-tags-always-offer-all-agenda-tags'.
 +
 +2010-07-17  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Inline methods): Remove remark about doubled "-t"
 +      argument.
 +      (Frequently Asked Questions): Recommend "sshx" and "scpx" for
 +      echoing shells.
 +
 +2010-07-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Inline methods): Remove "kludgy" phrase.
 +      (Filename Syntax): Describe port numbers.
 +
 +2010-07-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbus.texi (Top): Introduce Index.  Emphasize "nil" whereever
 +      forgotten.
 +      (Type Conversion): Precise conversion of natural numbers.
 +      (Errors and Events): Add "debugging" to concept index.  Add variable
 +      `dbus-debug'.
 +
 +2010-07-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbus.texi (Receiving Method Calls): Add optional argument
 +      EMITS-SIGNAL to `dbus-register-property'.
 +
  2010-06-27  Alex Schroeder  <alex@gnu.org>
  
        * nxml-mode.texi (Commands for locating a schema): Fix typo.
        * idlwave.texi (Load-Path Shadows):
        * org.texi (Handling links): Fix typos.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-06-07  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * Version 23.2 released.
 +      * gnus.texi (Interactive): Explain effect of gnus-expert-user better.
 +
 +2010-05-26  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * eshell.texi (Built-ins): Describe, how to disable a built-in command
 +      by an alias.  (Bug#6226)
 +
 +2010-05-16  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -2010-05-03  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +      * calc.texi (Manipulating Vectors): Mention that vectors can
 +      be used to determine bins for `calc-histogram'.
 +
 +2010-05-13  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi: Remove "\turnoffactive" commands throughout.
 +
 +2010-05-08  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
  
        * url.texi (HTTP language/coding, Customization):
        * message.texi (Header Commands, Responses):
        * cl.texi (Argument Lists): Fix typos.
  
 -2010-04-18  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * ede.texi (EDE Mode): Refer to init file rather than `.emacs'.  Note
 -      that Development menu is always available.
 +      * ede.texi (EDE Mode): Refer to init file rather than `.emacs'.
 +      Note that Development menu is always available.
        (Creating a project): Fix terminology.
        (Add/Remove files): Fix typo.
  
 -2010-04-17  Teodor Zlatanov  <tzz@lifelogs.com>
 +2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
 +
 +2010-05-01  Daniel E. Doherty  <ddoherty03@gmail.com>  (tiny change)
 +
 +      * calc.texi (Tutorial): Use "^{\prime}" to indicate primes.
 +
 +2010-05-01  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Inline methods, Default Method):
 +      Mention `tramp-inline-compress-start-size'.
 +
 +2010-04-18  Teodor Zlatanov  <tzz@lifelogs.com>
  
        * gnus.texi (Gnus Versions, Oort Gnus): Mention the Git repo instead of
        the CVS repo.  Put the Git repo in the news section.
  
 -      * gnus-coding.texi (Gnus Maintainance Guide): Fixed title typo.
 +      * gnus-coding.texi (Gnus Maintainance Guide): Fix title typo.
        Removed some mentions of CVS.  Mention the new Git repo.
  
 -2010-04-15  Andreas Seltenreich  <seltenreich@gmx.de>
 +2010-04-18  Andreas Seltenreich  <seltenreich@gmx.de>
  
        * gnus.texi (Score File Format): Fix typo.  Reported by Štěpán Němec.
        (Mail Group Commands): Add index entry.
  
 -2010-04-15  Glenn Morris  <rgm@gnu.org>
 +2010-04-18  Glenn Morris  <rgm@gnu.org>
  
        * info.texi (Search Index): Mention Emacs's Info-virtual-index.
  
 -2010-03-14  Michael Albinus  <michael.albinus@gmx.de>
 +2010-04-18  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (Radix modes): Mention that the option prefix will
 +      turn on twos-complement mode.
 +      (Inverse and Hyperbolic Flags): Mention the Option flag.
 +
 +2010-04-15  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (LaTeX and PDF export): Add a footnote about xetex.
 +      (LaTeX/PDF export commands): Rename and Move section.
 +      (Sectioning structure): Update.
 +      (References): New use case for field coordinates.
 +      (The export dispatcher): Rename from ASCII export.
 +      (Setting up the staging area): Document the availability of
 +      encryption for MobileOrg.
 +      (Images and tables): Document how to reference labels.
 +      (Index entries): New section.
 +      (Generating an index): New section.
 +      (Column width and alignment): Document that <N> now
 +      means a fixed width, not a maximum width.
 +      (Publishing options): Document the :email option.
 +      (Beamer class export): Fix bug in the BEAMER example.
 +      (Refiling notes): Document refile logging.
 +      (In-buffer settings): Document refile logging keywords.
 +      (Drawers): Document `C-c C-z' command.
 +      (Agenda commands): Mention the alternative key `C-c C-z'.
 +      (Special properties): Document the BLOCKED property.
 +      (The spreadsheet): Mention the formula editor.
 +      (References): Document field coordinates.
 +      (Publishing action): Correct the documentation for the
 +      publishing function.
 +      (The date/time prompt): Document that we accept dates
 +      like month/day/year.
 +      (Cooperation): Document the changes in table.el support.
 +      (Faces for TODO keywords, Faces for TODO keywords)
 +      (Priorities): Document the easy colors.
 +      (Visibility cycling): Document the new double prefix
 +      arg for `org-reveal'.
 +      (Cooperation): Remember.el is part of Emacs.
 +      (Clean view): Mention that `wrap-prefix' is also set by
 +      org-indent-mode.
 +      (Agenda commands): Add information about prefix args to
 +      scheduling and deadline commands.
 +      (Search view): Point to the docstring of
 +      `org-search-view' for more details.
 +      (Agenda commands): Document that `>' prompts for a date.
 +      (Setting tags): Document variable
 +      org-complete-tags-always-offer-all-agenda-tags.
 +      (Column attributes): Cross-reference special properties.
 +
 +2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Synchronize with Tramp repository.
 +
 +      * tramp.texi (Auto-save and Backup): Remove reference to Emacs 21.
 +      (Frequently Asked Questions): Adapt supported (X)Emacs versions.  Adapt
 +      supported MS Windows versions.  Remove obsolete URL.  Use the $()
 +      syntax, texi2dvi reports errors with the backquotes.
  
        * trampver.texi: Update release number.
  
 +2010-04-01  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus.texi (Finding the News): Add pointers to the Server buffer
 +      because it's essential.
 +
 +2010-03-31  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (MIME Commands): Update description of
 +      gnus-article-browse-html-article.
 +
 +2010-03-27  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth.texi (Secret Service API): Add TODO node.
 +      (Help for users): Explain the new source options for `auth-sources'.
 +
 +2010-03-24  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * trampver.texi: Update release number.
 +
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
  2010-03-03  Chong Yidong  <cyd@stupidchicken.com>
  
        * faq.texi (Escape sequences in shell output): Note that ansi-color is
  2010-01-17  Michael Albinus  <michael.albinus@gmx.de>
  
        * tramp.texi (Frequently Asked Questions): Add GNU Emacs 23 and
 -      SXEmacs 22 to the supported systems.  New item for hung ssh sessions.
 +      SXEmacs 22 to the supported systems.  New item for hung ssh sessions.
  
  2010-01-17  Glenn Morris  <rgm@gnu.org>
  
        (Agenda commands): Document new bulk commands.
        (Plain lists): Document new behavior of
        `org-cycle-include-plain-lists'.
 -       Hyphenation only in TeX.
 +      Hyphenation only in TeX.
        (Clocking work time): Document the key to update effort
        estimates.
        (Clocking work time): Document the clock time display.
  2008-06-15  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus.texi (Mail Source Customization): Correct values of
 -       `mail-source-delete-incoming'.  Reported by Tassilo Horn.
 +      `mail-source-delete-incoming'.  Reported by Tassilo Horn.
        (Oort Gnus): Fix version comment for mml-dnd-protocol-alist.
  
  2008-06-14  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-news.texi, gnus-coding.texi, sasl.texi: New files.
  
 -2007-10-28  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (tiny change)
 -
 -      * gnus-faq.texi ([5.12]): Remove reference to discontinued service.
 -
  2007-10-28  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus.texi (Sorting the Summary Buffer): Remove
  
        * org.texi (Progress logging): New section.
  
 -2006-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
 -      * viper.texi (Viper Specials):
 -      * gnus.texi (Example Setup):
 -      * faq.texi (Backspace invokes help):
 -      * dired-x.texi (Optional Installation Dired Jump):
 -      * calc.texi (Defining Simple Commands): Use ;; instead of ;;; to better
 -      follow coding conventions.
 -
 -2006-05-18  Reiner Steib  <Reiner.Steib@gmx.de>
 -
 -      * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail.
 -
  2006-06-06  Carsten Dominik  <dominik@science.uva.nl>
  
        * org.texi (ASCII export): Document indentation adaptation.
  
        * org.texi: Small typo fixes.
  
 +2006-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * viper.texi (Viper Specials):
 +      * gnus.texi (Example Setup):
 +      * faq.texi (Backspace invokes help):
 +      * dired-x.texi (Optional Installation Dired Jump):
 +      * calc.texi (Defining Simple Commands): Use ;; instead of ;;; to better
 +      follow coding conventions.
 +
  2006-05-29  Michael Albinus  <michael.albinus@gmx.de>
  
        * tramp.texi (Frequently Asked Questions): Disable zsh zle.
  
        * gnus.texi (Article Washing): Additions.
  
 -2006-01-08  Alex Schroeder  <alex@gnu.org>
 -
 -      * pgg.texi (Caching passphrase): Rewording.
 -
  2006-01-13  Carsten Dominik  <dominik@science.uva.nl>
  
        * org.texi (Agenda commands): Document tags command.
  
        * org.texi (FAQ): Document `org-table-tab-jumps-over-hlines'.
        (Agenda): Document commands `org-cycle-agenda-files' and
 -      `org-agenda-file-to-front'
 +      `org-agenda-file-to-front'.
        (Built-in table editor): Document `org-table-sort-lines'.
        (HTML formatting): Export of hand-formatted lists.
  
  
  2000-12-14  Dave Love  <fx@gnu.org>
  
 -      * Makefile.in (mostlyclean): Remove gnustmp.*
 +      * Makefile.in (mostlyclean): Remove gnustmp.*.
        (gnus.dvi): Change rule to remove @latex stuff.
  
  2000-10-19  Eric M. Ludlam  <zappo@ultranet.com>
  
  ;; Local Variables:
  ;; coding: utf-8
 -;; fill-column: 79
 -;; add-log-time-zone-rule: t
  ;; End:
  
 -    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
 -      2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
 +  Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
 +    2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 +    Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
  
    You should have received a copy of the GNU General Public License
    along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 -
 -;; arch-tag: 08b2903e-900c-4c72-a4a9-e76416a80803
diff --combined etc/NEWS.23
index e1e7ba79d41772d77441fc8bfddaeb7bde84b255,0000000000000000000000000000000000000000..aa8f47f2e2b3aa486718ca3f0b6bfbc4d1985e01
mode 100644,000000..100644
--- /dev/null
@@@ -1,2440 -1,0 +1,2443 @@@
 +GNU Emacs NEWS -- history of user-visible changes.
 +
 +Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 +See the end of the file for license conditions.
 +
 +Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
 +If possible, use M-x report-emacs-bug.
 +
 +This file is about changes in Emacs version 23.
 +
 +See files NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17
 +for changes in older Emacs versions.
 +
 +You can narrow news to a specific version by calling `view-emacs-news'
 +with a prefix argument or by typing C-u C-h C-n.
 +
 +\f
 +* Installation Changes in Emacs 23.3
 +
 +* Startup Changes in Emacs 23.3
 +
 +* Changes in Emacs 23.3
 +
 +** The nextstep port can have different modifiers for the left and right
 +alt/option key by customizing the value for ns-right-alternate-modifier.
 +
 +\f
 +* Editing Changes in Emacs 23.3
 +
 +\f
 +* Changes in Specialized Modes and Packages in Emacs 23.3
 +
 +---
 +** The appt-add command takes an optional argument for the warning time.
 +This can be used in place of the default appt-message-warning-time.
 +
 +** Obsolete packages
 +
 ++++
 +*** lmenu.el and cl-compat.el are now obsolete.
 +
 +\f
 +* New Modes and Packages in Emacs 23.3
++** smie.el is a generic navigation and indentation engine.
++It takes a simple BNF description of the grammar, and provides both
++sexp-style navigation (jumping over begin..end pairs) as well as
++indentation, which can be adjusted via ad-hoc indentation rules.
 +\f
 +* Incompatible Lisp Changes in Emacs 23.3
 +
 +\f
 +* Lisp changes in Emacs 23.3
 +
 +** `e' and `pi' are now called `float-e' and `float-pi'.
 +  The old names are obsolete.
 +** The use of unintern without an obarray arg is declared obsolete.
++** The function `princ-list' is declared obsolete.
 +** New function byte-to-string, like char-to-string but for bytes.
 +
 +\f
 +* Changes in Emacs 23.3 on non-free operating systems
 +
 +\f
 +* Installation Changes in Emacs 23.2
 +
 +** New configure options for Emacs developers.
 +These are not new features; only the configure flags are new.
 +
 +*** --enable-profiling builds Emacs with profiling enabled.
 +This might not work on all platforms.
 +
 +*** --enable-checking[=OPTIONS] builds emacs with extra runtime checks.
 +
 +** `make install' now consistently ignores umask, creating a
 +world-readable install.
 +
 +** Emacs compiles with Gconf support, if it is detected.
 +Use the configure option --without-gconf to disable this.
 +This is used by the `font-use-system-font' feature (see below).
 +
 +* Startup Changes in Emacs 23.2
 +
 +** The command-line option -Q (--quick) also inhibits loading X resources.
 +However, if Emacs is compiled with the Lucid or Motif toolkit, X
 +resource settings for the graphical widgets are still applied.
 +On Windows, the -Q option causes Emacs to ignore Registry settings,
 +but environment variables set on the Registry are still honored.
 +
 +*** The new variable `inhibit-x-resources' shows whether X resources
 +were loaded.
 +
 +** New command-line option -mm (--maximized) maximizes the initial frame.
 +
 +* Changes in Emacs 23.2
 +
 +** The maximum size of buffers (and the largest fixnum) is doubled.
 +On typical 32bit systems, buffers can now be up to 512MB.
 +
 +** The default value of `trash-directory' is now nil.
 +This means that `move-file-to-trash' trashes files according to
 +freedesktop.org specifications, the same method used by the Gnome,
 +KDE, and XFCE desktops.  (This change has no effect on Windows, which
 +uses `system-move-file-to-trash' for trashing.)
 +
 +** The pointer now becomes invisible when typing.
 +Customize `make-pointer-invisible' to disable this feature.
 +
 +** Font changes
 +
 +*** Emacs can use the system default monospaced font in Gnome.
 +To enable this feature, set `font-use-system-font' to non-nil (it is
 +nil by default).  If the system default changes, Emacs changes also.
 +This feature requires Gconf support, which is automatically included
 +at compile-time if configure detects the gconf libraries (you can
 +disable this with the configure option --without-gconf).
 +
 +*** On X11, Emacs reacts to Xft changes made by configuration tools,
 +via the XSETTINGS mechanism.  This includes antialias, hinting,
 +hintstyle, RGBA, DPI and lcdfilter changes.
 +
 +** Killing a buffer with a running process now asks for confirmation.
 +To remove this query, remove `process-kill-buffer-query-function' from
 +`kill-buffer-query-functions', or set the appropriate process flag
 +with `set-process-query-on-exit-flag'.
 +
 +** File-local variable changes
 +
 +*** Specifying a minor mode as a local variables enables that mode,
 +unconditionally.  The previous behavior, toggling the mode, was
 +neither reliable nor generally desirable.
 +
 +*** There are new commands for adding and removing file-local variables:
 +`add-file-local-variable', `delete-file-local-variable',
 +`add-file-local-variable-prop-line', and
 +`delete-file-local-variable-prop-line'.
 +
 +*** There are new commands for adding and removing directory-local variables,
 +and copying them to and from file-local variable lists:
 +`add-dir-local-variable', `delete-dir-local-variable',
 +`copy-dir-locals-to-file-locals',
 +`copy-dir-locals-to-file-locals-prop-line' and
 +`copy-file-locals-to-dir-locals'.
 +
 +** Internationalization changes
 +
 +*** Unibyte sessions are now considered obsolete.
 +This refers to the EMACS_UNIBYTE environment variable as well as the
 +--unibyte, --multibyte, --no-multibyte, and --no-unibyte command line
 +arguments.  Customizing enable-multibyte-characters and setting
 +default-enable-multibyte-characters are also deprecated.
 +
 +*** New coding system `utf-8-hfs'.
 +This is suitable for default-file-name-coding-system on Mac OS X; see
 +international/ucs-normalize.el.
 +
 +** Function arguments in *Help* buffers are now shown in upper-case.
 +Customize `help-downcase-arguments' to t to show them in lower-case.
 +
 +** New command `async-shell-command', bound globally to `M-&'.
 +This executes the command asynchronously, similar to calling `M-!' and
 +manually adding an ampersand to the end of the command.  With `M-&',
 +you don't need the ampersand.  The output appears in the buffer
 +`*Async Shell Command*'.
 +
 +** When running in a new enough xterm (newer than version 242), Emacs
 +asks xterm what the background color is and it sets up faces
 +accordingly for a dark background if needed (the current default is to
 +consider the background light).
 +
 +\f
 +* Editing Changes in Emacs 23.2
 +
 +** Kill-ring and selection changes
 +
 +*** If `select-active-regions' is t, any active region automatically
 +becomes the primary selection (for interaction with other window
 +applications).  If you enable this, you might want to bind
 +`mouse-yank-primary' to Mouse-2.
 +
 +*** When `save-interprogram-paste-before-kill' is non-nil, the kill
 +commands save the interprogram-paste selection into the kill ring
 +before doing anything else.  This avoids losing the selection.
 +
 +*** When `kill-do-not-save-duplicates' is non-nil, identical
 +subsequent kills are not duplicated in the `kill-ring'.
 +
 +** Completion changes
 +
 +*** The new command `completion-at-point' provides mode-sensitive completion.
 +
 +*** tab-always-indent set to `complete' lets TAB do completion as well.
 +
 +*** The new completion-style `initials' is available.
 +For instance, this can complete M-x lch to list-command-history.
 +
 +*** The new variable `completions-format' determines how completions
 +are displayed in the *Completions* buffer.  If you set it to
 +`vertical', completions are sorted vertically in columns.
 +
 +** The default value of `blink-matching-paren-distance' is increased.
 +
 +** M-n provides more default values in the minibuffer for commands
 +that read file names.  These include the file name at point (when ffap
 +is loaded without ffap-bindings), the file name on the current line
 +(in Dired buffers), and the directory names of adjacent Dired windows
 +(for Dired commands that operate on several directories, such as copy,
 +rename, or diff).
 +
 +** M-r is bound to the new `move-to-window-line-top-bottom'.
 +This moves point to the window center, top and bottom on successive
 +invocations, in the same spirit as the C-l (recenter-top-bottom)
 +command.
 +
 +** The new variable `recenter-positions' determines the default
 +cycling order of C-l (`recenter-top-bottom').
 +
 +** The abbrevs file is now a file named abbrev_defs in
 +user-emacs-directory; but the old location, ~/.abbrev_defs, is used if
 +that file exists.
 +
 +\f
 +* Changes in Specialized Modes and Packages in Emacs 23.2
 +
 +** The bookmark menu has a narrowing search via bookmark-bmenu-search.
 +
 +** Calc
 +
 +*** The Calc settings file is now a file named calc.el in
 +user-emacs-directory; but the old location, ~/.calc.el, is used if
 +that file exists.
 +
 +*** Graphing commands (`g f' etc.) now work on MS-Windows, if you have
 +the native Windows port of Gnuplot version 3.8 or later installed.
 +
 +** Calendar and diary
 +
 +*** Fancy diary display is now the default.
 +If you prefer the simple display, customize `diary-display-function'.
 +
 +*** The diary's fancy display now enables view-mode.
 +
 +*** The command `calendar-current-date' accepts an optional argument
 +giving an offset from today.
 +
 +** Desktop
 +
 +*** The default value for `desktop-buffers-not-to-save' is nil.
 +This means Desktop will try restoring all buffers, when you restart
 +your Emacs session.  Also, `desktop-buffers-not-to-save' is only
 +effective for buffers that have no associated file.  If you want to
 +exempt buffers that do correspond to files, customize the value of
 +`desktop-files-not-to-save' instead.
 +
 +** Dired
 +
 +*** The new variable `dired-auto-revert-buffer', if non-nil, causes
 +Dired buffers to be reverted automatically on revisiting them.
 +
 +** DocView
 +
 +*** When `doc-view-continuous' is non-nil, scrolling a line
 +on the page edge advances to the next/previous page.
 +
 +** Elint
 +
 +*** Elint now uses compilation-mode.
 +
 +*** Elint can now scan individual files and whole directories,
 +and can be run in batch mode.
 +
 +*** Elint does a more thorough initialization, and recognizes more built-in
 +functions and variables.  Customize `elint-scan-preloaded' if you want
 +to sacrifice some accuracy for a faster startup.
 +
 +*** Elint attempts some basic understanding of featurep and (f)boundp tests.
 +
 +*** Customize `elint-ignored-warnings' to suppress some warnings.
 +
 +** GDB-UI
 +
 +*** Toolbar functionality for reverse debugging.  Display of STL
 +collections as watch expressions.  These features require GDB 7.0 or later.
 +
 +** Grep
 +
 +*** A new command `zrgrep' searches recursively in gzipped files.
 +
 +** Info
 +
 +*** The new command `Info-virtual-index' bound to "I" displays a menu of
 +matched topics found in the index.
 +
 +*** The new command `info-finder' replaces finder.el with a virtual Info
 +manual that generates an Info file which gives the same information
 +through a menu structure.
 +
 +** LaTeX mode now provides completion (via completion-at-point).
 +
 +** Message mode is now the default mode for composing mail.
 +
 +The default for `mail-user-agent' is now message-user-agent, so the
 +C-x m (`compose-mail') command uses Message mode instead of Mail mode.
 +
 +Message mode has been included in Emacs, as part of the Gnus package,
 +for several years.  It provides several features that are absent in
 +Mail mode, such as MIME handling.
 +
 +*** If the user has not customized mail-user-agent, `compose-mail'
 +checks for Mail mode customizations, and issues a warning if these
 +customizations are found.  This alerts users who may otherwise be
 +unaware that their mail configuration has changed.
 +
 +To disable this check, set compose-mail-user-agent-warnings to nil.
 +
 +** The default value of mail-interactive is t, since Emacs 23.1.
 +(This was not announced at the time.)  It means that when sending mail,
 +Emacs will wait for the process sending mail to return.  If you
 +experience delays when sending mail, you may wish to set this to nil.
 +
 +** nXML mode is now the default for editing XML files.
 +
 +** pcomplete provides a new command `pcomplete-std-completion' which
 +is similar to `pcomplete' but using the standard completion UI code.
 +
 +** Shell (and other comint modes)
 +
 +*** M-s is no longer bound to `comint-next-matching-input'.
 +
 +*** M-r is now bound to `comint-history-isearch-backward-regexp'.
 +This starts an incremental search of the comint/shell input history.
 +
 +*** ansi-color is now enabled by default in Shell mode.
 +To disable it, set ansi-color-for-comint-mode to nil.
 +
 +** Tramp
 +
 +*** New connection methods "rsyncc", "imap" and "imaps".
 +On systems which support GVFS-Fuse, Tramp offers also the new
 +connection methods "dav", "davs", "obex" and "synce".
 +
 +** VC and related modes
 +
 +*** When using C-x v v or C-x v i on a unregistered file that is in a
 +directory not controlled by any VCS, ask the user what VC backend to
 +use to create a repository, create a new repository and register the
 +file.
 +
 +*** New command `vc-root-print-log', bound to `C-x v L'.
 +This displays a `*vc-change-log*' buffer showing the history of the
 +version-controlled directory tree as a whole.
 +
 +*** New command `vc-root-diff', bound to `C-x v D'.
 +This is similar to `vc-diff', but compares the entire directory tree
 +of the current VC directory with its working revision.
 +
 +*** `C-x v l' and `C-x v L' do not show the full log by default.
 +The number of entries shown can be chosen interactively with a prefix
 +argument, or by customizing vc-log-show-limit.  The `*vc-change-log*'
 +buffer now contains buttons at the end of the buffer, which can be
 +used to increase the number of entries shown.  RCS, SCCS, and CVS do
 +not support this feature.
 +
 +*** vc-annotate supports annotations through file copies and renames,
 +it displays the old names for the files and it can show logs/diffs for
 +the corresponding lines.  Currently only Git and Mercurial take
 +advantage of this feature.
 +
 +*** The log command in vc-annotate can display a single log entry
 +instead of redisplaying the full log.  The RCS, CVS and SCCS VC
 +backends do not support this.
 +
 +*** When a file is not found, VC will not try to check it out of RCS anymore.
 +
 +*** Diff and log operations can be used from Dired buffers.
 +
 +*** vc-git changes
 +
 +**** The short log format for git makes use of the graph display,
 +so it's not supported on git versions earlier than 1.5.6.
 +
 +**** vc-dir uses the --relative option of git, and so requires at least
 +git version 1.5.5.
 +
 +**** Support for operating with stashes has been added to vc-dir:
 +the stash list is displayed in the *vc-dir* header, stashes can be
 +created, removed, applied and their content displayed.
 +
 +*** vc-bzr supports operating with shelves: the shelve list is
 +displayed in the *vc-dir* header, shelves can be created, removed and applied.
 +
 +*** log-edit-strip-single-file-name controls whether or not single filenames
 +are stripped when copying text from the ChangeLog to the *VC-Log* buffer.
 +
 +** Miscellaneous
 +
 +*** Interactively `multi-isearch-buffers' and `multi-isearch-buffers-regexp'
 +read buffer names to search, one by one, ended with RET.  With a prefix
 +argument, they ask for a regexp, and search in buffers whose names match
 +the specified regexp.  Interactively `multi-isearch-files' and
 +`multi-isearch-files-regexp' read file names to search, one by one,
 +ended with RET.  With a prefix argument, they ask for a wildcard, and
 +search in file buffers whose file names match the specified wildcard.
 +
 +*** Autorevert Tail mode now works also for remote files.
 +
 +*** The new eshell built-in commands `su' and `sudo' support Tramp.
 +Thus, they change `default-directory' to reflect the new user id, and
 +let commands run under that user's permissions.  This works even when
 +`default-directory' is already remote.  Calling the external commands
 +is possible via `*su' or `*sudo', respectively.
 +
 +** Obsolete packages
 +
 +*** sym-comp.el is now obsolete, superseded by completion-at-point.
 +
 +*** lucid.el and levents.el are now obsolete.
 +
 +\f
 +* New Modes and Packages in Emacs 23.2
 +
 +** CEDET (the Collection of Emacs Development Tools) is now in Emacs.
 +This is a collection of packages to aid with using Emacs as an IDE
 +(integrated development environment):
 +
 +*** The Semantic package allows the use of parsers to intelligently
 +edit and navigate source code.  Parsers for C/C++, Java, Javascript,
 +and several other languages are included by default, and Semantic can
 +also interface with external tools such as GNU Global and GNU Idutils.
 +
 +To enable Semantic, use the global minor mode `semantic-mode'.
 +See the Semantic manual for details.
 +
 +*** EDE (Emacs Development Environment) is a package for managing code
 +projects, including features such as automatic Makefile generation.
 +
 +To enable EDE, use the minor mode `global-ede-mode'.
 +See the EDE manual for details.
 +
 +*** SRecode is a library for recoding Semantic tags back into source
 +code.  It is currently used by some parts of Semantic and EDE; in the
 +future, it may be used for code generation features.
 +
 +*** The EIEIO library implements a subset of the Common Lisp Object
 +System (CLOS).  It is used by the other CEDET packages.
 +
 +** mpc.el is a front end for the Music Player Daemon.  Run it with M-x mpc.
 +
 +** htmlfontify.el turns a fontified Emacs buffer into an HTML page.
 +
 +** js.el is a new major mode for JavaScript files.
 +
 +** imap-hash.el is a new library to address IMAP mailboxes as hashtables.
 +
 +\f
 +* Incompatible Lisp Changes in Emacs 23.2
 +
 +** The Lisp reader turns integers that are too large/small into floats.
 +For instance, on machines where `536870911' is the largest integer,
 +reading `536870912' gives the floating-point object `536870912.0'.
 +
 +This change only concerns the Lisp reader; it does not affect how
 +actual integer objects overflow.
 +
 +** Several obsolete functions removed.
 +The functions have been obsolete since Emacs 19, and are unlikely to
 +be in use:
 +
 +  time-stamp-month-dd-yyyy, time-stamp-dd/mm/yyyy, time-stamp-mon-dd-yyyy
 +  time-stamp-dd-mon-yy, time-stamp-yy/mm/dd, time-stamp-yyyy/mm/dd,
 +  time-stamp-yyyy-mm-dd, time-stamp-yymmdd, time-stamp-hh:mm:ss,
 +  time-stamp-hhmm, baud-rate
 +
 +** Support for generating Emacs 18 compatible bytecode (by setting
 +the variable `byte-compile-compatibility') has been removed.
 +
 +** In image-mode.el `image-mode-maybe' is obsolete.
 +Instead, you can either use `image-mode' (which displays an image file
 +as the actual image initially), or `image-mode-as-text' (when you want
 +to display an image file as text initially).  `image-mode-as-text' is a
 +combination of a non-image mode from `auto-mode-alist' (or Fundamental
 +mode) and `image-minor-mode'.  `image-minor-mode' provides a `C-c C-c'
 +key binding to toggle image display.
 +`image-toggle-display-text' removes image properties.
 +`image-toggle-display-image' adds image properties.
 +`image-toggle-display' toggles between `image-mode-as-text' and `image-mode'.
 +
 +\f
 +* Lisp changes in Emacs 23.2
 +
 +** All the default-FOO variables that hold the default value of the FOO
 +variable, are now declared obsolete.
 +
 +** read-key is a function halfway between read-event and read-key-sequence.
 +It reads a single key, but obeys input and escape sequence decoding.
 +
 +** Frame parameter changes
 +
 +*** You can give the `fullscreen' frame parameter the value `maximized'.
 +This maximizes the frame.
 +
 +*** The new frame parameter `sticky' makes Emacs frames sticky in
 +virtual desktops.
 +
 +** Completion changes
 +
 +*** completion-base-size is obsoleted by completion-base-position.
 +This change causes a few backward incompatibilities, mostly with
 +choose-completion-string-functions where the `mini-p' argument has
 +been replaced by a `base-position' argument, and where the `base-size'
 +argument is now always nil.
 +
 +*** New function `completion-in-region' to use the standard completion
 +facilities on a particular region of text.
 +
 +*** The 4th arg to all-completions (aka hide-spaces) is declared obsolete.
 +
 +*** completion-annotate-function specifies how to compute annotations
 +for completions displayed in *Completions*.
 +
 +** Minibuffer changes
 +
 +*** read-file-name-predicate is obsolete.  It was used to pass the predicate
 +to read-file-name-internal because read-file-name-internal abused its `pred'
 +argument to pass the current directory, but this hack is not needed
 +any more.
 +
 +** Changes to file-manipulation functions
 +
 +*** `delete-directory' has an optional parameter RECURSIVE.
 +
 +*** New function `copy-directory', which copies a directory recursively.
 +
 +** called-interactively-p now takes one argument and replaces interactive-p
 +which is now marked obsolete.
 +
 +** New function set-advertised-calling-convention makes it possible
 +to obsolete arguments as well as make some arguments mandatory.
 +
 +** You can control which binding is preferentially shown in menus and
 +docstrings by adding a `:advertised-binding' property to the corresponding
 +command's symbol.  That property can hold a single binding or a list
 +of bindings.
 +
 +** Network and process changes
 +
 +*** start-process-shell-command and start-file-process-shell-command
 +now only take a single `command' argument.
 +
 +*** The new variable `process-file-side-effects' should be set to nil
 +if a `process-file' call does not change a remote file.  This allows
 +file name handlers such as Tramp to optimizations.
 +
 +*** make-network-process can now also create `seqpacket' Unix sockets.
 +
 +** Loading changes
 +
 +*** eval-next-after-load is obsolete.
 +
 +*** New hook `after-load-functions' run after loading an Elisp file.
 +
 +** Byte compilation changes
 +
 +*** Changing the file-names generated by byte-compilation by redefining
 +the function `byte-compile-dest-file' before loading bytecomp.el is obsolete.
 +Instead, customize byte-compile-dest-file-function.
 +
 +*** `byte-compile-warnings' has new members, `constants' and `suspicious'.
 +
 +** New macro with-silent-modifications to tweak text properties without
 +affecting the buffer's modification state.
 +
 +** Hash tables have a new printed representation that is readable.
 +The feature `hashtable-print-readable' identifies this new
 +functionality.
 +
 +** New functions for performing Unicode normalization:
 +ucs-normalize-NFD-region, ucs-normalize-NFD-string,
 +ucs-normalize-NFC-region, ucs-normalize-NFC-string,
 +ucs-normalize-NFKD-region, ucs-normalize-NFKD-string,
 +ucs-normalize-NFKC-region, ucs-normalize-NFKC-string,
 +ucs-normalize-HFS-NFD-region, ucs-normalize-HFS-NFD-string,
 +ucs-normalize-HFS-NFC-region, ucs-normalize-HFS-NFC-string.
 +
 +** Face aliases can now be marked as obsolete, using the macro
 +`define-obsolete-face-alias'.
 +
 +** New function `window-full-height-p', analogous to the full-width version.
 +
 +\f
 +* Changes in Emacs 23.2 on non-free operating systems
 +
 +** On MS-Windows, `display-time' now displays the system load average
 +as well as the time, as it does on GNU and Unix.
 +
 +\f
 +* Installation Changes in Emacs 23.1
 +
 +** The default X toolkit is now Gtk+, rather than Lucid.
 +The configure option `--with-gtk' has been removed.  Gtk is now the
 +default toolkit, but you can use --with-x-toolkit=gtk if necessary.
 +
 +** New font code.
 +Fonts are handled by new code capable of dealing with multiple font
 +backends.  This uses the freetype and fontconfig libraries.
 +
 +*** Emacs now accepts font names supplied in the fontconfig format
 +(e.g. "monospace-12:bold") and GTK format (e.g. "Monospace Bold 12").
 +
 +*** Added support for local fonts (fonts installed on the machine
 +where Emacs is running).
 +
 +*** Added support for the Xft library for antialiasing.
 +
 +*** Added support for the otf library for complex text layout by
 +OpenType fonts.
 +
 +*** Added support for the m17n library for text shaping.
 +
 +** Changes to image support
 +
 +*** configure now checks for libgif before libungif when searching for
 +a GIF library.
 +
 +*** Emacs now supports the SVG image format through librsvg2.
 +
 +*** Emacs now supports multi-page TIFF images.
 +
 +** New NeXTSTEP-based port.
 +This provides support for GNUstep (via the GNUstep libraries) and Mac
 +OS X (via the Cocoa libraries).
 +
 +Specify --with-ns to configure for this.  By default, a self-contained
 +app will be built (containing all lisp).  To install/share lisp with
 +other emacsen (e.g. X11 build) use --disable-ns-self-contained.  See
 +nextstep/README and nextstep/INSTALL in the Emacs source directory.
 +
 +** Mac OS X is no longer supported via Carbon.
 +Use the NeXTSTEP port, described above.
 +
 +** The new configuration option "--with-dbus" enables D-Bus language
 +bindings for Emacs.
 +
 +** Support for many obsolete platforms has been removed.
 +See the list at the end of etc/MACHINES for details.
 +
 +*** Support for systems without alloca has been removed.
 +
 +*** Support for Sun windows has been removed.
 +
 +*** The `emacstool' utility has been removed.
 +
 +** The following platforms will be removed in a future Emacs version:
 +If you are still using Emacs on one of these platforms, please email
 +emacs-devel@gnu.org to inform the Emacs developers.
 +
 +*** Old GNU/Linux systems based on libc version 5.
 +
 +*** Old FreeBSD, NetBSD, and OpenBSD systems based on the COFF
 +executable format.
 +
 +*** Solaris versions 2.6 and below.
 +
 +*** Solaris on IBM RS6000 machines.
 +
 +*** UNIX System V (the original SysV, not later platforms based on it).
 +
 +*** Unixware on non-x86 machines.
 +
 +*** Platforms not supporting shared libraries (i.e., requiring the
 +NO_SHARED_LIBS compilation flag).
 +
 +** The configure options `--with-gcc', `--without-gcc' have been removed.
 +Configure will use gcc by default.  Set the CC environment variable if
 +you need control over which C compiler is used.
 +
 +** The refcards are now shipped as PDF files.
 +
 +** The manuals are now licensed under the GNU Free Documentation License v1.3,
 +or any later version.
 +
 +** Emacs 23 comes with a new set of default icons.
 +Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png.
 +The Emacs 22 icon is available as `emacs22.png' in the same location.
 +\f
 +* Changes in Emacs 23.1
 +
 +** Improved X Window System support
 +
 +*** Emacs now supports using both X displays and ttys in one session.
 +With an Emacs server active (M-x server-start), `emacsclient -t'
 +creates a tty frame connected to the running emacs server.  You can
 +use any number of different ttys.  `emacsclient -c' creates a new X11
 +frame on the current $DISPLAY (or a tty frame if $DISPLAY is not set).
 +There may be problems if a display exits unexpectedly and Emacs is compiled
 +with Gtk+, see etc/PROBLEMS.
 +
 +You can test for the presence of this feature in your Lisp code by
 +testing for the `multi-tty' feature.
 +
 +*** Emacs starts in the background, as a daemon, when given the
 +--daemon command line argument.  It disconnects from the terminal and
 +starts the server.  Clients can connect and create graphical or
 +terminal frames using emacsclient.
 +
 +**** emacsclient starts emacs in daemon mode and connects to it when
 +--alternate-editor="" is used (or when the evironment variable
 +ALTERNATE_EDITOR is set to "") and emacsclient cannot connect to an
 +emacs server.
 +
 +*** The new command close-display-connection closes a connection to a
 +remote display.  There are some bugs for Gtk+.  See etc/PROBLEMS.
 +
 +*** Emacs now supports the XEmbed specification.
 +You can embed Emacs in another application on X11.  The new command line
 +option --parent-id is used to pass the parent window id to Emacs.  See
 +http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html
 +for details about XEmbed.
 +
 +*** Emacs can now set the frame opacity.
 +The opacity of a frame can be controlled by setting the `alpha' frame
 +parameter.  This only takes effect on a compositing window manager for
 +the X Window System, such as Compiz, Beryl and Compiz Fusion, on Mac
 +OS X, or on Windows 2000 and later versions of Windows.
 +
 +The alpha parameter should be an integer between 0 (transparent) and
 +100 (opaque), or a float number between 0.0 and 1.0.  It can also be a
 +cons cell (ACTIVE . INACTIVE), where ACTIVE is the opacity of an
 +active frame and INACTIVE is the opacity of non-active frames.
 +
 +The variable `frame-alpha-lower-limit' defines a lower bound for the
 +opacity; the default is 20.
 +
 +** Internationalization changes
 +
 +*** The Emacs character set is now a superset of Unicode.
 +(It has about four times the code space, which should be plenty).
 +
 +The internal encoding used for buffers and strings is now
 +Unicode-based and called `utf-8-emacs' (`emacs-internal' is an alias
 +for this).  This encoding is backward-compatible with Unicode's UTF-8
 +encoding.  The internal encoding previously used by Emacs,
 +`emacs-mule', is still available for reading and writing files.
 +
 +During byte-compilation, Emacs 23 uses `utf-8-emacs' to write files.
 +As a result, byte-compiled files containing non-ASCII characters can't
 +be read by earlier versions of Emacs.  Files compiled by Emacs 20, 21,
 +or 22 are loaded correctly as `emacs-mule' (whether or not they
 +contain multibyte characters).  This takes somewhat more time, so it
 +may be worth recompiling existing .elc files which don't need to be
 +shared with older Emacsen.
 +
 +*** There are new coding systems/aliases; see M-x list-coding-systems.
 +
 +*** There is a new charset implementation with many new charsets.
 +See M-x list-character-sets.  New charsets can be defined conveniently
 +as tables of unicodes.
 +
 +*** There are new language environments for Chinese-GBK,
 +Chinese-GB18030, Khmer, Bengali, Punjabi, Gujarati, Oriya, Telugu,
 +Sinhala, and TaiViet.
 +
 +*** The minor modes unify-8859-on-encoding-mode and
 +unify-8859-on-decoding-mode are obsolete.
 +
 +*** `ucs-insert' is bound to `C-x 8 RET' and in addition to hex numbers
 +accepts numbers in hash notation (e.g. #o21430 for octal, or #10r8984 for
 +decimal).  It also accepts Unicode character names with completion.
 +
 +*** The `cyrillic-translit' input method supports many new characters.
 +Common typographical characters available from Unicode were added to
 +`cyrillic-translit': punctuation marks, accented characters, fractions,
 +and others.
 +
 +** Emacs now supports serial port access on GNU/Linux, Unix, and
 +Windows.  The new command `serial-term' starts an interactive terminal
 +on a serial port.  The serial port can be configured at runtime with
 +the mode-line mouse menu.
 +
 +** Menu Bar changes
 +
 +*** In the Options menu, the "Set Default Font" item applies the
 +selected font to the `default' face on all frames, not just the
 +current frame.  Furthermore, if Emacs is compiled with both GTK and
 +Fontconfig support, the "Set Default Font" item uses the GTK font
 +selection dialog instead of an Emacs pop-up menu.
 +
 +*** The font setting chosen by "Set Default Font" is saved if the
 +"Save Options" item is used.
 +
 +*** The Tools menu contains a new Encryption/Decryption submenu.
 +This contains commands provided by EasyPG, the newly-included
 +interface to GnuPG (see New Modes and Packages).
 +
 +*** In the Options menu, the "Truncate Long Lines in the Buffer" entry
 +has been replaced with a submenu offering three different ways to
 +handle long lines: truncation, continuation at the window edge, and
 +the new word wrapping behavior (see Editing Changes, below).
 +
 +*** Improvements to menus for major and minor modes
 +More major and minor modes now have a mode specific menu, and existing
 +mode menus have been improved to include more functionality.
 +
 +** Mode-line changes
 +
 +*** The mode-line displays a `@', instead of `-', if the
 +default-directory for the current buffer is on a remote machine.
 +
 +*** The mode-line displays a mode menu when mouse-1 is clicked on a
 +minor mode, in the same way as it already did for major modes.
 +
 +*** The `mode-line-emphasis' face is used to highlight certain
 +mode-line information (e.g. waiting for a VC command to finish).
 +
 +*** The mode-line tooltips have been improved to provide more details.
 +
 +*** The VC, line/colum number and minor mode indicators on the mode
 +line are now interactive: mouse-1 can be used on them to pop up a menu.
 +
 +** File deletion can make use of the Recycle Bin or system Trash folder.
 +Set `delete-by-moving-to-trash' non-nil to use this.  Deleted files
 +and directories will then be sent to the Recycle Bin on Windows, and
 +to `trash-directory' on other systems.
 +
 +** Directory-local variables can now be defined.
 +By default, Emacs looks in .dir-locals.el for directory-local
 +variables.  For more information, see `dir-locals-set-directory-class'
 +and `dir-locals-set-class-variables'.
 +
 +** Emacs can now use `auth-source' for authentication.
 +`smtpmail' and `url' (Tramp and Gnus also) use `auth-source' to obtain
 +login names and passwords.  The match, if found, is reported
 +in *Messages* with the password blanked out.
 +
 +** `where-is-preferred-modifier' can specify your favorite modifier.
 +
 +\f
 +* Startup Changes in Emacs 23.1
 +
 +** The option `inhibit-startup-screen' (with aliases to old names
 +`inhibit-splash-screen' and `inhibit-startup-message') doesn't inhibit
 +display of the initial message in the *scratch* buffer.  If you don't
 +want to display the initial message in the *scratch* buffer at startup,
 +you can set the option `initial-scratch-message' to nil.
 +
 +** New user option `initial-buffer-choice' specifies what to display
 +after starting Emacs: startup screen, *scratch* buffer, visiting a
 +file or directory.
 +
 +** New alias `argv' for `command-line-args-left'
 +This is a convenience alias, so that one can write `(pop argv)'
 +inside of --eval command line arguments in order to access
 +following arguments.
 +
 +** The abbrev file is no longer read at startup in batch mode.
 +
 +** Emacs now supports invocation by an X session manager.
 +It can save a session and restore it later.  See the documentation of
 +the functions `emacs-session-save' and `emacs-session-restore'.
 +(Actually, this feature was introduced with Emacs 22, but it was not
 +documented.)
 +\f
 +* Incompatible Editing Changes in Emacs 23.1
 +
 +** In Dired, `dired-flag-garbage-files' is rebound from `&' to `%&'
 +on the regexp command prefix map.
 +
 +** In Dired-x, all command guesses for ! are now added to the default
 +list accessible by M-n instead of pushing all guesses temporarily into
 +the history list.
 +
 +** In Isearch mode, a special case of typing `C-w' at the beginning of
 +the minibuffer that toggles word search (i.e. using key sequences
 +`C-s RET C-w' or `C-s M-e C-w') is obsolete.  You can use the global key
 +`M-s w' to start word search, or type `M-s w' in Isearch mode to
 +toggle word search.  To start nonincremental word search you can now use
 +`M-s w RET' and `M-s w C-r RET' instead of `C-s RET C-w' and `C-r RET C-w'.
 +
 +** In Info, `Info-search' is unbound from `M-s' to allow using `M-s w'
 +for word search as well as other search commands from the global prefix
 +key `M-s'.  `Info-search' is still bound to `s', and also incremental
 +search commands `C-s', `C-M-s', `C-r', `C-M-r' are available for searching
 +through multiple Info nodes, together with their nonincremental versions
 +`C-s RET', `C-r RET', `C-M-s RET', `C-M-r RET', `M-s w RET'.
 +
 +** In Text mode, `center-line' and `center-paragraph' are rebound from
 +`M-s' and `M-S' to global keys `M-o M-s' and `M-o M-S' on the global
 +prefix map `M-o', which is intended for such formatting commands.
 +
 +** The following input methods were removed in Emacs 22.2, but this was
 +not advertised: danish-alt-postfix, esperanto-alt-postfix,
 +finnish-alt-postfix, german-alt-postfix, icelandic-alt-postfix,
 +norwegian-alt-postfix, scandinavian-alt-postfix, spanish-alt-postfix,
 +and swedish-alt-postfix.  Use the versions without "alt-", which are
 +identical.
 +
 +\f
 +* Editing Changes in Emacs 23.1
 +
 +** The C-n and C-p line-motion commands now move by screen lines,
 +taking continued lines and variable-width characters into account.
 +Setting `line-move-visual' to nil reverts this to the previous
 +behavior (i.e., motion by logical lines based on buffer contents
 +alone).
 +
 +** C-x C-c now invokes `save-buffers-kill-terminal', and C-z now
 +invokes `suspend-frame'.  These changes are for compatibility with the
 +new multi-tty support (see `Improved X Window System support' above).
 +
 +** Mark changes
 +
 +*** Transient Mark mode is now on by default.
 +
 +*** mark-even-if-inactive now defaults to t
 +
 +*** When Transient Mark mode is on, C-SPC C-SPC pushes a mark without
 +activating it.
 +
 +*** When Transient Mark mode is on, M-q now fills the region if the
 +region is active.  Otherwise, it fills the current paragraph.
 +
 +*** When Transient Mark mode is on, M-$ now checks spelling of the
 +region if the region is active.  Otherwise, it checks spelling of the
 +word at point.
 +
 +*** When Transient Mark mode is on, TAB now indents the region if the
 +region is active.
 +
 +*** The variable `use-empty-active-region' controls whether an empty
 +active region in Transient Mark mode should make commands operate on
 +that empty region.
 +
 +** Temporarily active regions
 +
 +*** The new variable shift-select-mode, non-nil by default, controls
 +shift-selection.  When Shift Select mode is on, shift-translated
 +motion keys (e.g. S-left and S-down) activate and extend a temporary
 +region, similar to mouse-selection.
 +
 +*** Temporarily active regions, created using shift-selection or
 +mouse-selection, are not necessarily deactivated in the next command.
 +They are only deactivated after point motion commands that are not
 +shift-translated, or after commands that would ordinarily deactivate
 +the mark in Transient Mark mode (e.g., any command that modifies the
 +buffer).
 +
 +** Minibuffer and completion changes
 +
 +*** Emacs may ask for confirmation before opening a non-existent file
 +or buffer.  By default, Emacs requests confirmation if you type RET
 +immediately after TAB, and the resulting input is not an existing file
 +or buffer; this usually happens when the minibuffer input did not
 +complete far enough and you entered RET by mistake.  In that case,
 +Emacs puts the message "[Confirm]" in the minibuffer; type RET again
 +to create the file or buffer.
 +
 +The new variable confirm-nonexistent-file-or-buffer determines whether
 +Emacs asks for confirmation.  The default value is `after-completion'.
 +If you change it to t, Emacs always asks for confirmation; if you
 +change it to nil, Emacs never asks for confirmation.
 +
 +*** The rules for performing completion have been changed.
 +When generating completion alternatives, Emacs now takes the
 +minibuffer text after point, if any, into account: this text is
 +treated as a substring of the remaining part of the completion
 +alternative (i.e., the part not matched by the minibuffer text before
 +point).  If no completion alternatives are found this way, Emacs
 +attempts to perform partial-completion.  If still no completion
 +alternatives are found, we fall back on the Emacs 22 rules for
 +performing completion.
 +
 +The new variable `completion-styles' can be customized to choose your
 +favorite completion style.
 +
 +*** When M-n in the minibuffer reaches the end of the list of defaults,
 +it adds the completion list to the end, so next M-n continues putting
 +completion items to the minibuffer.  The same principle applies to
 +incremental search commands as well: C-s or C-M-s starts searching
 +the default values and after the end of defaults they continue
 +searching minibuffer completion items.
 +
 +*** Minibuffer input of shell commands now comes with completion.
 +
 +*** In the `C-x d' (Dired) prompt, typing M-n gives the visited file
 +name of the current buffer.
 +
 +*** In the M-! (shell-command) prompt, M-n provides some default commands.
 +These are guessed using the file extension of the current file, based
 +on the file-handlers specified in the operating system's `mailcap'
 +file.  The ! command in Dired (dired-do-shell-command) works
 +similarly, using the file displayed on the current line.
 +
 +*** A list of regexp default values is available via M-n for `occur',
 +`keep-lines', `flush-lines' and `how-many'.  This list includes the active
 +region in transient-mark-mode, the word under the cursor, the last Isearch
 +regexp, the last Isearch string and the last replacement regexp.
 +
 +*** When enable-recursive-minibuffers is non-nil, operations which use
 +switch-to-buffer (such as C-x b and C-x C-f) do not fail any more when
 +used in a minibuffer or a dedicated window.  Instead, they fallback on
 +using pop-to-buffer, which will use some other window.  This change
 +has no effect when enable-recursive-minibuffers is nil (the default).
 +
 +*** Isearch started in the minibuffer searches in the minibuffer history.
 +Reverse Isearch commands (C-r, C-M-r) search in previous minibuffer
 +history elements, and forward Isearch commands (C-s, C-M-s) search in
 +next history elements.  When the reverse search reaches the first history
 +element, it wraps to the last history element, and the forward search
 +wraps to the first history element.  When the search is terminated, the
 +history element containing the search string becomes the current.
 +
 +*** The variable read-file-name-completion-ignore-case overrides
 +completion-ignore-case for file name completion.
 +
 +*** The variable read-buffer-completion-ignore-case overrides
 +completion-ignore-case for buffer name completion.
 +
 +*** The new command `minibuffer-force-complete' chooses one of the
 +possible completions, rather than stopping at the common prefix.
 +
 +*** If `completion-auto-help' is `lazy', Emacs shows the completions
 +buffer only on the second attempt to complete.  This was already
 +supported in `partial-completion-mode'.
 +
 +** Face changes
 +
 +*** S-down-mouse-1 now pops up a menu for changing the font and text
 +size of the default face in the current buffer.  The face is changed
 +via face remapping (see Lisp changes, below).
 +
 +*** New commands to change the default face size in the current buffer.
 +To increase it, type `C-x C-+' or `C-x C-='.  To decrease it, type
 +`C-x C--'.  To restore the default (global) face size, type `C-x C-0'.
 +These work via Text Scale mode, a new minor mode.
 +
 +The final key in the above commands may be repeated without the
 +leading `C-x', e.g. `C-x C-= C-= C-=' increases the face height by
 +three steps.  Each step scales the height of the default face by the
 +value of the variable `text-scale-mode-step'.
 +
 +*** The commands buffer-face-mode and buffer-face-set can be used to
 +remap the default face in the current buffer.  See "Buffer Face mode",
 +under New Modes and Packages.
 +
 +** Primary selection changes
 +
 +*** You can disable kill ring commands from accessing the primary
 +selection by setting `x-select-enable-primary' to nil.
 +
 +** Continuation lines can now be wrapped at word boundaries
 +(word-wrapping).  This is controlled by the new per-buffer variable
 +`word-wrap'.  Word wrapping does not take place if continuation lines
 +are not shown, e.g. if truncate-lines is non-nil.  The most convenient
 +way to enable word-wrapping is using the new minor mode Visual Line
 +mode; in addition to setting `word-wrap' to t, this rebinds some
 +editing commands to work on screen lines rather than text lines.  See
 +New Modes and Packages, below.
 +
 +** Window management changes
 +
 +*** truncate-partial-width-windows now accepts integer values, which
 +specify a minimum window width for partial-width windows, below which
 +lines are truncated.  The default has been changed to 50.
 +
 +*** The new command balance-windows-area balances windows both
 +vertically and horizontally.
 +
 +*** pop-to-buffer now always sets input focus when the popped-to window
 +is on a different frame.
 +
 +** Miscellaneous changes:
 +
 +*** C-l is bound to the new command recenter-top-bottom, rather than recenter.
 +This moves the current line to window center, top and bottom on
 +successive invocations.
 +
 +*** scroll-preserve-screen-position also preserves the column position.
 +
 +*** If `yank-pop-change-selection' is t, rotating the kill ring also
 +updates the selection or clipboard to the current yank, just as M-w
 +would do so with the text it copies to the kill ring.
 +
 +*** C-M-% now shows replacement as it would look in the buffer, with
 +`\N' and `\&' substituted according to the match.  Old behavior can be
 +restored by customizing `query-replace-show-replacement'.
 +
 +*** The command shell prompts for the default directory, when it is
 +called with a prefix and the default directory is a remote file name.
 +This is because some file name handlers (like ange-ftp) are not able to
 +run processes remotely.
 +
 +*** The new command kill-matching-buffers kills buffers whose name
 +matches a regexp.
 +
 +*** The value of comment-style now defaults to `indent'.
 +Thefore, comment-start markers are inserted at the current indentation
 +of the region to comment, rather than the leftmost column.
 +
 +*** The new commands `pp-macroexpand-expression' and
 +`pp-macroexpand-last-sexp' pretty-print macro expansions.
 +
 +*** The new command `set-file-modes' allows to set file's mode bits.
 +The mode bits can be specified in symbolic notation, like with GNU
 +Coreutils, in addition to an octal number.  `chmod' is a new
 +convenience alias for this function.
 +
 +*** `next-error-recenter' specifies how next-error should recenter the
 +visited source file.  Its value can be a number (for example, 0 for
 +top line, -1 for bottom line), or nil for no recentering.
 +
 +*** When typing in a password in the echo area, C-y yanks the current
 +kill into the password.
 +
 +*** Tooltip frame parameters `font' and `color' in `tooltip-frame-parameters'
 +are ignored.  Customize the `tooltip' face instead.
 +
 +*** `mkdir' is a new convenience alias for `make-directory'.
 +\f
 +* New Modes and Packages in Emacs 23.1
 +
 +** Auto Composition Mode is a minor mode that composes characters
 +automatically when they are displayed.  It is globally on by default.
 +It uses `auto-composition-function' (default `auto-compose-chars').
 +
 +** Bubbles, a new game, is similar to SameGame.
 +
 +** Buffer Face mode is a minor mode for remapping the default face in
 +the current buffer.  The variable `buffer-face-mode-face' specifies
 +the face to remap to.  The command `buffer-face-set' prompts for a
 +face name, sets `buffer-face-mode-face' to it, and enables
 +buffer-face-mode.  See "Face changes", under Editing Changes, for a
 +description of face remapping.
 +
 +** butterfly flips the desired bit on the drive platter.
 +See http://xkcd.com/378/
 +
 +** bug-reference.el provides clickable links to bug reports.
 +
 +** dbus.el provides D-Bus language bindings.
 +D-Bus is an inter-process communication mechanism for applications
 +residing on the same host.  See the manual for details.
 +
 +** DocView mode allows viewing of PDF, PostScript and DVI documents.
 +One can also search for a regular expression in the document.  For
 +details, see the commentary in doc-view.el.
 +
 +PDF and DVI files are now opened in Doc View mode by default.
 +
 +In Postcript mode, C-c C-c launches Doc View minor mode for viewing
 +the postscript file.
 +
 +** EasyPG provides an interface to the GNU Privacy Guard (GnuPG).
 +It includes a GnuPG keyring browser, cryptographic operations on
 +regions and files, and automatic encryption of *.gpg files.  For
 +details, see the EasyPG Assistant User's Manual.
 +
 +** json.el is a library for parsing and generating JSON
 +(JavaScript Object Notation), a lightweight data-interchange format.
 +
 +** linum.el is a new minor mode to display line numbers for the
 +current buffer.
 +
 +** mairix.el is an interface to mairix, a free tool for indexing and
 +searching locally stored mail.  It allows you to query mairix and
 +display the search results with Rmail, Gnus and VM.  Note that there
 +is an existing Gnus back end, nnmairix.el, which should be used with
 +Maildir/MH setups.
 +
 +** minibuffer-depth-indicate-mode shows the minibuffer depth in the prompt.
 +
 +** nXML Mode
 +This is a new mode for editing XML documents.  It allows a schema to
 +be associated with the XML document being edited, using Relax NG as
 +the schema language.  The schema is used to provide two key features:
 +
 +*** Continuous validation.  nXML validates as you type, highlighting
 +any invalid parts of your document.
 +
 +*** Completion.  nXML can assist you in entering an element name,
 +attribute name or data value by using information about what is
 +allowed by the schema in that context.
 +
 +** proced.el provides a Dired-like interface for operating on
 +processes.  Proced makes an Emacs buffer containing a listing of the
 +current processes.  You can use the normal Emacs commands to move
 +around in this buffer, and special Proced commands to operate on the
 +processes listed.  It is currently only functional on GNU/Linux,
 +MS-Windows and Solaris.
 +
 +** Remember Mode is a mode for jotting down things to remember.
 +Notes can be saved to a Diary file.  For details, see the Remember
 +Manual.
 +
 +** RST mode is a major mode for editing reStructuredText files.
 +
 +** Ruby mode is a major mode for Ruby files.
 +
 +** Visual Line mode provides support for editing by visual lines.
 +It turns on word-wrapping in the current buffer, and rebinds C-a, C-e,
 +and C-k to commands that operate by visual lines instead of logical
 +lines.  This is a more reliable replacement for longlines-mode.
 +This can also be turned on using the menu bar, via
 +Options -> Line Wrapping in this Buffer -> Word Wrap
 +
 +** xesam.el is an implementation of Xesam, an interface to (desktop)
 +search engines like Beagle, Strigi, and Tracker.  The Xesam API
 +requires D-Bus for communication.
 +
 +** zeroconf.el offers service discovery and service publishing
 +interfaces according to the zeroconf specification.  It communicates
 +with Avahi, a zeroconf implementation, via D-Bus messages on systems
 +which have installed this software.
 +
 +** There is a new `whitespace' package.
 +(The pre-existing one has been renamed to `old-whitespace'.)
 +Now, besides reporting bogus blanks, the whitespace package has a
 +minor mode and a global minor mode to visualize blanks (TAB, (HARD)
 +SPACE and NEWLINE).  The visualization is made via faces and/or display
 +table.  It can also indicate lines that extend beyond a given column,
 +trailing blanks, and empty lines at the start or end of a buffer.
 +See `whitespace-style' for more details.  The `whitespace-action' option
 +specifies what to do when a buffer is visited, killed, or written.
 +
 +\f
 +* Changes in Specialized Modes and Packages in Emacs 23.1
 +
 +** Abbrev has been rewritten in Elisp and extended with more flexibility.
 +
 +*** New functions: abbrev-get, abbrev-put, abbrev-table-get, abbrev-table-put,
 +abbrev-table-p, abbrev-insert, abbrev-table-menu.
 +
 +*** Special hook `abbrev-expand-functions' obsoletes `pre-abbrev-expand-hook'.
 +
 +*** `make-abbrev-table', `define-abbrev', `define-abbrev-table' all take
 +extra arguments for arbitrary properties.
 +
 +*** New variable `abbrev-minor-mode-table-alist'.
 +
 +*** `local-abbrev-table' can hold a list of abbrev-tables.
 +
 +*** Abbrevs have now the following special properties:
 +`:count', `:system', `:enable-function', `:case-fixed'.
 +
 +*** Abbrev-tables have now the following special properties:
 +`:parents', `:case-fixed', `:enable-function', `:regexp',
 +`abbrev-table-modiff'.
 +
 +** Apropos
 +
 +*** `apropos-library' describes the elements defined in a given library.
 +
 +*** Set `apropos-compact-layout' is you want a more compact (but wider) layout.
 +
 +** Archive Mode has basic support to browse Rar archives.
 +Note, however, that the free version of the unrar command only handles
 +versions 1 and 2 of the Rar format.
 +
 +** BibTeX mode
 +
 +*** New command `bibtex-initialize' (re)initializes BibTeX buffers.
 +
 +*** New `bibtex-entry-format' options `whitespace', `braces', and
 +`string', disabled by default.
 +
 +*** New variable `bibtex-cite-matcher-alist' contains rules to
 +identify cited keys in BibTeX entries, used by `bibtex-find-crossref'.
 +
 +*** Command `bibtex-url' allows multiple URLs per entry.
 +
 +** Bookmarks
 +
 +*** bookmark.el saves bookmarks in a pre-Emacs-23-incompatible file format
 +bookmark.el can read a .emacs.bmk file saved by an older Emacs, but an
 +older Emacs cannot read one saved by Emacs 23.
 +
 +** Calendar and diary
 +
 +*** There is a new date style, `iso', essentially year/month/day.
 +The variable `european-calendar-style' is obsolete - use `calendar-date-style'.
 +Similarly, the commands `american-calendar' and `european-calendar'
 +should be replaced by `calendar-set-date-style'.
 +
 +*** The calendar namespace has been rationalized.
 +All functions and variables now begin with a `calendar-', `diary-', or
 +`holiday-' prefix.  The various calendar systems have secondary
 +prefixes, eg `calendar-french-'.  The old names you are likely to use
 +directly still exist, for the time being, as aliases, but please start
 +using the new names.
 +
 +*** The whitespace in the calendar layout can be customized.
 +See the variables:
 +calendar-left-margin, calendar-intermonth-spacing, calendar-column-width,
 +calendar-day-header-width, and calendar-day-digit-width.
 +
 +*** Text (e.g. ISO weeks) can be displayed between the calendar months.
 +See the variables calendar-intermonth-header and calendar-intermonth-text.
 +
 +*** The function `holiday-chinese' computes holidays on the Chinese calendar.
 +It has been used to add items to the list `holiday-oriental-holidays'.
 +
 +*** `diary-remind' accepts a negative number -DAYS as a shorthand for
 +the list (1 2 ... DAYS).
 +
 +** Change Log mode
 +
 +*** The new command C-c C-f (change-log-find-file) finds the file
 +associated with the current log entry.
 +
 +*** The new command C-c C-c (change-log-goto-source) goes to the
 +source code associated with a log entry.
 +
 +** Compile and grep modes
 +
 +*** The mode-line entry for the *compilation* and *grep* buffer is color coded.
 +It has different colors for to show that: (a) the command is still
 +running, (b) successful completion, (c) error.
 +
 +*** compilation-auto-jump-to-first-error tells `compile' to jump to
 +the first error encountered during compilations.
 +
 +*** compilation-scroll-output accepts a new value, `first-error', which
 +says to stop auto scrolling at the first error that occurs.
 +
 +*** The `cc' alias for C++ files in `grep-file-aliases' has been
 +improved.  `hh' can be used to match C++ header files and `cchh' both
 +C++ sources and headers.
 +
 +** Copyright
 +
 +*** You can specify your copyright holders' names.
 +Only copyright lines with holders matching `copyright-names-regexp' are
 +considered for update.
 +
 +*** Copyrights can be at the end of the buffer.
 +This is controlled by `copyright-at-end-flag' (used by, e.g., change-log-mode).
 +
 +** Custom
 +
 +*** defcustom accepts new keyword arguments, `:safe' and `:risky', which
 +set a variable's `safe-local-variable' and `risky-local-variable' property.
 +
 +** Diff mode
 +
 +*** diff-refine-hunk highlights word-level details of changes in a diff hunk.
 +It's used automatically as you move through hunks, see
 +diff-auto-refine-mode.  It is bound to `C-c C-b'.
 +
 +*** diff-add-change-log-entries-other-window iterates through the diff
 +buffer and tries to create ChangeLog entries for each change.
 +It is bound to `C-x 4 A'.
 +
 +*** Turning on `whitespace-mode' in a diff buffer will show trailing
 +whitespace problems in the modified lines.
 +
 +** Dired
 +
 +*** In Dired, C-x C-q now runs the command wdired-change-to-wdired-mode,
 +and C-x C-q in wdired-mode exits it with asking a question about
 +saving changes.
 +
 +*** `&' runs the command `dired-do-async-shell-command' that executes
 +the command asynchronously without the need to manually add ampersand
 +to the end of the command.  Its output appears in the buffer `*Async Shell
 +Command*'.
 +
 +*** `M-s f C-s' and `M-s f M-C-s' run Isearch that matches only at file names.
 +When a new user option `dired-isearch-filenames' is t, then even ordinary
 +Isearch started with `C-s' and `C-M-s' matches only at file names in the
 +Dired buffer.  When `dired-isearch-filenames' is `dwim' then activation of
 +file name Isearch depends on the position of point - if point is on a file
 +name initially, then Isearch matches only file names, otherwise it matches
 +everywhere in the Dired buffer.  You can toggle file names matching on or
 +off by typing `M-s f' in Isearch mode.
 +
 +*** `M-s a C-s' and `M-s a M-C-s' run multi-file Isearch on the marked files.
 +They visit the first marked file in the sequence and display the usual Isearch
 +prompt for a string or a regexp where all Isearch commands are available.
 +
 +*** `Q' in Dired provides two new keys for multi-file replacement.
 +The upper case key `Y' replaces all remaining matches in all remaining files
 +with no more questions.  The upper case key `N' stops doing replacements
 +in the current file and skips to the next file.  These multi-file keys
 +are available for all commands that use `tags-query-replace'
 +including `dired-do-query-replace-regexp', `vc-dir-query-replace-regexp',
 +`reftex-query-replace-document'.
 +
 +** Fortran
 +
 +*** The line length of fixed-form Fortran is not fixed at 72 any more.
 +Customize the variable `fortran-line-length' to change it.
 +
 +*** In Fortran mode, M-; is now bound to the standard comment-dwim,
 +rather than fortran-indent-comment.
 +
 +*** (The increasingly misnamed) F90 mode supports Fortran 2003 syntax.
 +
 +** Gnus
 +
 +*** The Gnus package has been updated
 +There are many new features, bug fixes and improvements; see the file
 +GNUS-NEWS or the node "No Gnus" in the Gnus manual for details.
 +
 +*** In Emacs 23, Gnus uses Emacs' new internal coding system `utf-8-emacs' for
 +saving articles, drafts, and ~/.newsrc.eld.  These file may not be read
 +correctly in Emacs 22 and below.  If you want to Gnus across different Emacs
 +versions, you may set `mm-auto-save-coding-system' to `emacs-mule'.
 +
 +*** Passwords are consistently loaded through `auth-source'
 +Gnus can use `auth-source' for POP and IMAP passwords.  Also see that
 +`smtpmail' and `url' support `auth-source' for SMTP and HTTP/HTTPS/RSS
 +authentication respectively.
 +
 +** Help mode
 +
 +*** New macro `with-help-window' should set up help windows better
 +than `with-output-to-temp-buffer' with `print-help-return-message'.
 +
 +*** New option `help-window-select' permits to customize whether help
 +window shall be automatically selected when invoking help.
 +
 +*** New variable `help-window-point-marker' permits one to specify a new
 +position for point in help window (for example in `view-lossage').
 +
 +** Isearch
 +
 +*** New command `isearch-forward-word' bound globally to `M-s w' starts
 +incremental word search.  New command `isearch-toggle-word' bound to the
 +same key `M-s w' in Isearch mode toggles word searching on or off
 +while Isearch is active.
 +
 +*** New command `isearch-highlight-regexp' bound to `M-s h r' in Isearch
 +mode runs `highlight-regexp' (`hi-lock-face-buffer') with the current
 +search string as its regexp argument.  The same key `M-s h r' and
 +other keys on the `M-s h' prefix are bound globally to the command
 +`highlight-regexp' and other hi-lock commands.
 +
 +*** New command `isearch-occur' bound to `M-s o' in Isearch mode
 +runs `occur' with the current search string.  The same key `M-s o'
 +is bound globally to the command `occur'.
 +
 +*** Isearch can now search through multiple ChangeLog files.
 +When running Isearch in a ChangeLog file, if the search fails,
 +then another C-s tries searching the previous ChangeLog,
 +if there is one (e.g. going from ChangeLog to ChangeLog.12).
 +This is enabled if multi-isearch-search is non-nil.
 +
 +*** Two new commands to start Isearch on a list of marked buffers
 +for buff-menu.el and ibuffer.el are bound to the keys `M-s a C-s' and
 +`M-s a M-C-s'.
 +
 +*** The part of an Isearch that failed to match is highlighted in
 +`isearch-fail' face.
 +
 +*** `C-h C-h' in Isearch mode displays isearch-specific Help screen,
 +`C-h b' displays all Isearch key bindings, `C-h k' displays the full
 +documentation of the given Isearch key sequence, `C-h m' displays
 +documentation for Isearch mode.  All the other Help commands exit
 +Isearch mode and execute their global definitions.
 +
 +*** When started in the minibuffer, Isearch searches in the minibuffer
 +history.  See `Minibuffer changes', above.
 +
 +** MH-E
 +
 +*** Upgraded to MH-E version 8.2.  See MH-E-NEWS for details.
 +
 +** Python
 +*** The file etc/emacs.py now supports both Python 2 and 3, meaning
 +that either version can be used as inferior Python by python.el.
 +
 +*** Python mode now has `pdbtrack' functionality.  When using pdb to
 +debug a Python program, pdbtrack notices the pdb prompt and displays
 +the source file and line that the program is stopped at, much the same
 +way as gud-mode does for debugging C programs with gdb.
 +
 +** Recentf
 +
 +*** The default value of `recentf-keep' prevents from checking of
 +remote files, if there is no established connection to the
 +corresponding remote host.
 +
 +** Rmail
 +
 +*** Rmail no longer converts the messages to Babyl format.
 +Instead, it uses UNIX mbox format, both on disk and in Rmail buffers,
 +and does conversion and decoding when a message is displayed.
 +
 +The first time you visit an Rmail file in Babyl format, Rmail
 +automatically converts it to mbox format.  This is a one-time
 +conversion, but it can take a few minutes, depending on how fast is
 +your machine and on the size of the file.  You should find the rest of
 +Rmail usage unaltered.
 +
 +However, M-x set-rmail-inbox-list now lasts only for one session
 +because there is no way to save the list of inbox files in an
 +mbox-format file.
 +
 +Also, whereas with Babyl format M-x find-file would switch to Rmail
 +mode, with mbox format this is no longer the case (there being no way
 +to add an "-*- rmail-*-" cookie to an mbox file).  Use C-u M-x rmail
 +instead.
 +
 +If you have written any extensions to Rmail, they are likely to need
 +updating.  Conceptually, the Rmail buffer that you see is no longer
 +just a narrowed portion of the whole.  So you cannot access the whole
 +of a message (or message collection) by a simple save-restriction and
 +widen.  Instead, there are two buffers: the rmail-buffer, and the
 +rmail-view-buffer.  The former is the buffer that you see, the latter
 +is invisible.  Most of the time, the invisible `view' buffer contains
 +the full contents of the Rmail file, and the Rmail buffer contains a
 +decoded copy of the current message (with only a subset of the
 +headers).  In this state, Rmail is said to be `swapped'.
 +
 +You may find the following functions useful:
 +
 +`rmail-get-header' and `rmail-set-header' get or set the value of a
 +message header, whether or not it is currently visible.
 +
 +`rmail-apply-in-message' is a general purpose function that calls a
 +function (with arguments) which you specify on the full text of a given
 +message.  To further narrow to just the headers, search forward for "\n\n".
 +
 +*** The new command `rmail-mime' displays MIME messages.
 +It is bound to `v' in Rmail buffers and summaries.  It displays plain
 +text and multipart messages in a temporary buffer, and offers buttons
 +to save attachments.
 +
 +*** The command `rmail-redecode-body' no longer accepts the optional arg RAW.
 +Since Rmail now holds messages in their original undecoded form in a
 +separate buffer, `rmail-redecode-body' no longer encodes the original
 +message, and therefore there should be no need to avoid encoding it.
 +
 +*** The o command is now `rmail-output'.  It is an all-purpose command
 +for copying messages from Rmail and appending them to files.  It
 +handles Babyl-format files as well as mbox-format files, and it
 +handles both kinds properly when they are visited in Emacs.  It always
 +copies the full headers of the message.
 +
 +*** The C-o command is now `rmail-output-as-seen'.  It uses
 +the message as displayed, appending it to an mbox file.
 +
 +*** The modified status of the Rmail buffer is reported in the mode-line.
 +Previously, this information was hidden.
 +
 +** TeX modes
 +
 +*** New option latex-indent-within-escaped-parens
 +permits to customize indentation of LaTeX environments delimited
 +by escaped parens.
 +
 +** T-mouse Mode
 +
 +*** If the gpm mouse server is running and t-mouse-mode is enabled,
 +Emacs uses a Unix socket in a GNU/Linux console to talk to server,
 +rather than faking events using the client program mev.  This C level
 +approach provides mouse highlighting and help echoing in the
 +minibuffer.
 +
 +** Tramp
 +
 +*** New connection methods.
 +The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have
 +been introduced.  There are also new so-called gateway methods
 +"tunnel" and "socks".
 +
 +*** IPv6 addresses.
 +IPv6 addresses are supported now as host names.  They must be embedded
 +in square brackets, like in "/ssh:[::1]:".
 +
 +*** Multihop syntax has been removed.
 +The pseudo-method "multi" has been removed.  Instead, multi hops
 +can be specified by the new variable `tramp-default-proxies-alist'.
 +
 +*** More default settings.
 +Default values can be set via the variables `tramp-default-user',
 +`tramp-default-user-alist' and `tramp-default-host'.
 +
 +*** Connection information is cached.
 +In order to reduce connection setup, information about used
 +connections is kept persistently in a file.  The name of this file is
 +defined in the variable `tramp-persistency-file-name'.
 +
 +*** Control of remote processes.
 +Running processes on a remote host can be controlled by settings in
 +`tramp-remote-path' and `tramp-remote-process-environment'.
 +
 +*** Success of remote copy is checked.
 +When the variable `file-precious-flag' is set, the success of a remote
 +file copy is checked via the file's checksum.
 +
 +*** Passwords can be read from an authentification file.
 +Tramp uses the package `auth-source' to read passwords from a file, if
 +necessary.
 +
 +** VC and related modes
 +
 +*** VC now supports applying VC operations to a set of files at a time.
 +This enables VC to work much more effectively with changeset-oriented
 +version-control systems such as Subversion, GNU Arch, Mercurial, Git
 +and Bzr.  VC will now pass a multiple-file commit to these systems as
 +a single changeset.
 +
 +*** vc-dir is a new command that displays file names and their VC
 +status.  It allows to apply various VC operations to a file, a
 +directory or a set of files/directories.
 +
 +*** VC switches are no longer appended, rather the first non-nil value is used.
 +(This was for the most part true in Emacs 22, but was not advertised).
 +This is because there is an increasing variety of VC systems, and they
 +do not all accept the same "common" options.  For example, a CVS diff
 +command used to append the values of `vc-cvs-diff-switches',
 +`vc-diff-switches', and `diff-switches'.  Now the first non-nil value
 +from that sequence is used.  The special value `t' means "no switches".
 +
 +*** Clicking on the VC mode-line entry now pops the VC menu.
 +
 +*** The VC mode-line entry now has a tooltip that explains the VC file status.
 +
 +*** In VC Annotate mode, the key bindings have changed to use lower
 +case keys instead of the upper case keys used in the past.
 +
 +*** In VC Annotate mode, for VC systems that support changesets, you can
 +see the diff for the whole changeset (not only for the current file)
 +by typing the D key.  Using the "Show changeset diff of revision at
 +line" menu entry does the same thing.
 +
 +*** In VC Annotate mode, you can type v to toggle the annotation visibility.
 +
 +*** In VC Annotate mode, you can type f to show the file revision on
 +the current line.
 +
 +*** Asynchronous VC commands display [Waiting...] in the mode-line
 +of the corresponding buffer as long as the asynchronous process is
 +active.
 +
 +*** Log entries can be modified using the key "e" in log-view.
 +For now only CVS, RCS, SCCS and SVN support this functionality.
 +This is done by the `modify-change-comment' backend function.
 +
 +*** In log-view-mode, for VC systems that support changesets, you can
 +see the diff for the whole changeset (not only for the current file)
 +by typing the D key or using the "Changeset Diff" menu entry.
 +
 +*** In Log Edit mode,  C-c C-d now shows the diff for the files involved.
 +
 +*** vc-git supports the "git grep" command.
 +
 +*** VC Support for Meta-CVS has been removed for lack of a maintainer able
 +to update it to the new VC.
 +
 +** Miscellaneous
 +
 +*** comint-mode uses `start-file-process' now (see Lisp Changes).
 +If `default-directory' is a remote file name, subprocesses are started
 +on the corresponding remote system.
 +
 +*** Eldoc highlights the function argument under point
 +with the face `eldoc-highlight-function-argument'.
 +
 +*** In Etags, the --members option is now the default.
 +Use --no-members if you want the old default behavior of not tagging
 +struct members in C, members variables in C++ and variables in PHP.
 +
 +*** The `gdb' command only works with the graphical interface now.
 +Use `gud-gdb' if you want the (old) text command mode.
 +
 +*** goto-address.el provides two new minor modes, goto-address-mode and
 +goto-address-prog-mode, which buttonize URLS and email addresses.
 +
 +*** The new command `eshell/info' runs info in an eshell buffer.
 +
 +*** The new variable `ffap-rfc-directories' specifies a list of local
 +directories in which `ffap-rfc' will first search for RFCs.
 +
 +*** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them.
 +See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'.
 +
 +*** `icomplete-prospects-height' now supercedes `icomplete-prospects-length'.
 +
 +*** Info displays breadcrumbs in the header of the page.
 +See Info-breadcrumbs-depth to control it.
 +
 +*** net-utils has an `iwconfig' command, similar to the existing `ifconfig'.
 +It is used to configure wireless interfaces.
 +
 +*** The pcmpl-unix package supports hostname completion for ssh and scp.
 +
 +*** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs.
 +
 +*** smerge-refine highlights word-level details of changes in conflict.
 +It's used automatically as you move through conflicts, see
 +smerge-auto-refine-mode.
 +
 +*** talk.el has been extended for multiple tty support.
 +
 +*** A new command `display-time-world' has been added to the Time
 +package.  It creates a buffer with an updating time display using
 +several time zones.
 +
 +*** The appearance of superscript and subscript in TeX is more customizable.
 +See the documentation of the variables: tex-fontify-script,
 +tex-font-script-display, tex-suscript-height-ratio, and
 +tex-suscript-height-minimum.
 +
 +*** view-remove-frame-by-deleting is now by default t
 +since users found iconification of view-mode frames distracting.
 +
 +*** WoMan tries to add locale-specific manual page directories to the
 +search path.  This can be disabled by setting `woman-locale' to nil.
 +
 +\f
 +* Changes in Emacs 23.1 on non-free operating systems
 +
 +** Case is now considered significant in completion on MS-Windows.
 +The default value of `completion-ignore-case' is now nil on
 +MS-Windows, the same as it is for other operating systems.  The
 +variable doesn't apply to reading a file name -- in that case Emacs
 +heeds `read-file-name-completion-ignore-case' instead.
 +
 +** IPv6 is supported on MS-Windows.
 +Emacs now supports IPv6 on Windows XP and later, and earlier versions
 +of Windows with third party IPv6 stacks installed.  In Emacs 22, IPv6 was
 +supported on other platforms, but not on Windows due to using the winsock
 +1.1 header file, even though Emacs was linking to the winsock 2 library.
 +
 +** Busy cursor (hourglass) now displays on MS-Windows.
 +When Emacs is busy, an hourglass mouse cursor is displayed on Windows.
 +In Emacs 22 only X supported the busy cursor.
 +
 +** Battery status is available on MS-Windows
 +Emacs can now display the battery status in the mode-line when enabled with
 +display-battery-mode or from the Options menu.  More verbose battery
 +information is also available with the command `battery'.  In Emacs 22
 +battery status was supported only on GNU/Linux and Mac.
 +
 +** More keys available on MS-Windows.
 +Keys normally associated with IMEs, and some exotic keys not normally found
 +on standard keyboards have been given names so they can be bound to functions
 +inside Emacs.  If there are keys on your keyboard that have not been exposed
 +to Emacs in the past, try C-h k to see if they are available now.
 +
 +Emacs can now bind functions to the extra buttons for media player and
 +browser control present on some keyboards.  These buttons are disabled
 +by default, since enabling them prevents their system-wide use when
 +Emacs has focus.  To enable them, set the variable
 +w32-pass-multimedia-buttons to nil.  See the doc string of that variable
 +for the list of extra keys that are available.
 +
 +** BDF fonts no longer supported on MS-Windows.
 +The font backend was completely rewritten for this release.  The focus
 +on Windows has been getting acceptable performance and full unicode
 +support, including complex script shaping for native Windows fonts.  A
 +rewrite of the BDF font support has not happened due to lack of time
 +and developers.  If demand still exists for such a backend even with
 +the improved language support for native Windows fonts, future
 +development in this direction will most likely be based on the
 +freetype library, giving access to a wider range of font formats.
 +
 +\f
 +* Incompatible Lisp Changes in Emacs 23.1
 +
 +** Variables cannot be both buffer-local and frame-local any more.
 +
 +** `functionp' returns nil for special forms.
 +I.e., it only returns t for objects that can be passed to `funcall'.
 +
 +** The behavior of map-char-table has changed.  It may call the
 +specified function with a cons (FROM . TO) as a key if characters in
 +that range have the same value.
 +
 +** Process changes
 +
 +*** The function `dired-call-process' has been removed.
 +
 +*** The multibyteness of process filters is now determined by the
 +coding-system used for decoding.  The functions
 +`process-filter-multibyte-p' and `set-process-filter-multibyte' are
 +obsolete.
 +
 +** The variable `byte-compile-warnings' can now be a list starting with `not',
 +meaning to disable the specified warnings.  The meaning of this list
 +may therefore be the reverse of what you expect (of course, this is
 +only an issue if you make use of the new `not' syntax).  Rather than
 +checking/manipulating elements directly, use the new functions
 +`byte-compile-warning-enabled-p', `byte-compile-disable-warning', and
 +`byte-compile-enable-warning.'
 +
 +** `mode-name' is no longer guaranteed to be a string.
 +Use `(format-mode-line mode-name)' to ensure a string value.
 +
 +** The function x-font-family-list has been removed.
 +Use the new function font-family-list (see Lisp Changes, below).
 +
 +** Internationalization changes
 +
 +*** The value of the function `charset-id' is now always 0.
 +
 +*** The functions `register-char-codings' and `coding-system-spec'
 +have been removed.
 +
 +*** The cpXXX coding systems are now supported automatically.
 +The functions cp-...-codepage, which you had to use in Emacs 22 to
 +enable support for these coding systems, have been deleted.
 +
 +*** The following features have been removed.  They were used for
 +displaying various scripts with specific fonts, and are no longer
 +needed now that OpenType font support is available:
 +
 +**** `devanagari' and `devan-util', and all associated devanagari-* and
 +dev-* functions and variables (formerly used for Devanagari script).
 +
 +**** `kannada' and `knd-util', and all associated kannada-* and knd-*
 +functions and variables (formerly used for Kannada script).
 +
 +**** `malayalam' and `mlm-util', and all associated malayalam-* and
 +mlm-* functions and variables (formerly used for Malayalam script).
 +
 +**** `tamil' and `tml-util, and all associated tamil-* and tml-*
 +functions and variables (formerly used for Tamil script).
 +
 +*** The meaning of NAME argument of `set-fontset-font' is changed.
 +Previously nil is accepted as the default fontset.  Now, nil is for
 +the fontset of the selected frame and t is for the default fontset.
 +
 +*** The meaning of FONTSET argument of `print-fontset' is changed.
 +Now, nil is for the fontset of the selected frame and t is for the
 +default fontset.
 +
 +** If a function in write-region-annotate-functions returns with a
 +different buffer current, Emacs no longer kills that buffer
 +automatically.  This behavior existed in previous versions of Emacs,
 +but was undocumented.  To kill a buffer after write-region, give the
 +variable `write-region-post-annotation-function' a buffer-local value
 +of `kill-buffer'.
 +
 +** The variable temp-file-name-pattern has been removed.
 +This variable was only used by call-process-region, which now uses
 +temporary-file-directory instead.
 +
 +** The COUNT and SYSTEM-FLAG arguments to define-abbrev have been
 +removed.  The function now takes extra arguments for specifying
 +arbitrary abbrev properties.
 +
 +** end-of-defun-function is now guaranteed to work only when called
 +from the start of a defun.  It must now leave point exactly at the end
 +of defun, since `end-of-defun' now itself moves forward over
 +whitespace after calling it.
 +
 +\f
 +* Lisp Changes in Emacs 23.1
 +
 +** The new variable `generate-autoload-cookie' controls the magic comment
 +string used by `update-file-autoloads' to find autoloaded forms.  The
 +variable `generated-autoload-file' similarly controls the name of the
 +file where `update-file-autoloads' writes the calls to `autoload'.
 +The default values are ";;;###autoload" and `loaddefs.el',
 +respectively.
 +
 +** New primitives `list-system-processes' and `process-attributes'
 +let Lisp programs access the processes that are running on the local
 +machine.  See the doc strings of these functions for more details.
 +Not all platforms support accessing this information; on those that
 +don't, these primitives will return nil.
 +
 +** New variable `user-emacs-directory'.
 +Use this instead of "~/.emacs.d".
 +
 +** If a local hook function has a non-nil `permanent-local-hook'
 +property, `kill-all-local-variables' does not remove it from the local
 +value of the hook variable; it remains even if you change major modes.
 +
 +** `frame-inherited-parameters' lets new frames inherit parameters from
 +the selected frame.
 +
 +** New keymap `input-decode-map' overrides like key-translation-map, but
 +applies before function-key-map.  Also it is terminal-local contrary to
 +key-translation-map.  Terminal-specific key-sequences are generally added to
 +this map rather than to function-key-map now.
 +
 +** `ignore-errors' is now a standard macro (does not require the CL package).
 +
 +** `interprogram-paste-function' can now return one string or a list
 +of strings.  In the latter case, Emacs puts the second and following
 +strings on the kill ring.
 +
 +** In `condition-case', a handler can specify "let the debugger run first".
 +You do this by writing `debug' in the list of conditions to be handled,
 +like this:
 +
 +    (condition-case nil
 +      (foo bar)
 +      ((debug error) nil))
 +
 +** clone-indirect-buffer now runs the clone-indirect-buffer-hook.
 +
 +** `beginning-of-defun-function' now takes one argument, the count given to
 +`beginning-of-defun'.  (N.B. `end-of-defun-function' doesn't take any
 +arguments.)
 +
 +** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED.
 +IDENTIFICATION specifies which part of the remote identifier has to be
 +returned.  With CONNECTED passed non-nil, it is checked whether a
 +remote connection has been established already.
 +
 +** The new macro `declare-function' suppresses compiler warnings about
 +undefined functions.
 +
 +** Changes to interactive function handling
 +
 +*** The new interactive spec code ^ says to first call
 +handle-shift-selection if shift-select-mode is non-nil, before reading
 +the command arguments.  This is used for shift-selection (see above).
 +
 +*** Built-in functions can now have an interactive specification that
 +is not a prompt string.  If the `intspec' parameter of a `DEFUN'
 +starts with a `(', the string is evaluated as a Lisp form.
 +
 +*** The interactive-form of a function can be added post-facto via the
 +`interactive-form' symbol property.  Mostly useful to add complex
 +interactive forms to subroutines.
 +
 +** Region changes
 +
 +*** Commands should use `use-region-p' to test whether there is
 +an active region that they should operate on.
 +
 +*** `region-active-p' returns non-nil when Transient Mark mode is
 +enabled and the mark is active.  Most commands that act specially on
 +the active region in Transient Mark mode should use `use-region-p'
 +instead of `region-active-p', because `use-region-p' obeys the new
 +user option `use-empty-active-region' (see Editing Changes, above).
 +
 +*** If a command sets `transient-mark-mode' to (only . OLDVAL), that
 +means to activate transient-mark-mode temporarily, until the next
 +unshifted point motion command or mark deactivation.  Afterwards,
 +reset transient-mark-mode to the value OLDVAL.  The values `only' and
 +`identity', introduced in Emacs 22, are now deprecated.
 +
 +** Emacs session information
 +
 +*** The new variables `before-init-time' and `after-init-time' record the
 +value of `current-time' before and after Emacs loads the init files.
 +
 +*** The new function `emacs-uptime' returns the uptime of an Emacs instance.
 +
 +*** The new function `emacs-init-time' returns the duration of the
 +Emacs initialization.
 +
 +** Changes affecting display-buffer
 +
 +*** display-buffer tries to be smarter when splitting windows.
 +The new option split-window-preferred-function lets you specify your own
 +function to pop up new windows.  Its default value split-window-sensibly
 +can split a window either vertically or horizontally, whichever seems
 +more suitable in the current configuration.  You can tune the behavior
 +of split-window-sensibly by customizing split-height-threshold and the
 +new option split-width-threshold.  Both options now take the value nil
 +to inhibit splitting in one direction.  Setting split-width-threshold to
 +nil inhibits horizontal splitting and gets you the behavior of Emacs 22
 +in this respect.  In any case, display-buffer may now split the largest
 +window vertically even when it is not as wide as the containing frame.
 +
 +*** If pop-up-frames has the value `graphic-only', display-buffer only
 +makes a separate frame on graphic displays.
 +
 +*** select-frame and set-frame-selected-window have a new optional
 +argument NORECORD.  If non-nil, this will avoid messing with the order
 +of recently selected windows and the buffer list.
 +
 +** Window parameters can now be defined.
 +These are analogous to frame parameters, but are associated with
 +individual windows.
 +
 +*** The new functions window-parameters, window-parameter, and
 +set-window-parameter are used to query and set window parameters.
 +
 +** Minibuffer and completion changes
 +
 +*** A list of default values can be specified for the DEFAULT argument of
 +functions `read-from-minibuffer', `read-string', `read-command',
 +`read-variable', `read-buffer', `completing-read'.  Elements of this list
 +are available for inserting into the minibuffer by typing `M-n'.
 +For empty input these functions return the first element of this list.
 +
 +*** New function `read-regexp' uses the regexp history and some useful
 +regexp defaults (string at point, last Isearch/replacement regexp/string)
 +via M-n when reading a regexp in the minibuffer.
 +
 +*** minibuffer-local-must-match-filename-map is now named
 +minibuffer-local-filename-must-match-map.
 +
 +*** The `require-match' argument to `completing-read' accepts the new
 +values `confirm-only' and `confirm-after-completion'.
 +
 +** Search and replacement changes
 +
 +*** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly.
 +
 +*** New function `match-substitute-replacement' returns the result of
 +`replace-match' without actually using it in the buffer.
 +
 +*** The new variable `replace-search-function' determines the function
 +to use for searching in query-replace and replace-string.  The
 +function it specifies is called by `perform-replace' when its 4th
 +argument is nil.
 +
 +*** The new variable `replace-re-search-function' determines the
 +function to use for searching in `query-replace-regexp',
 +`replace-regexp', `query-replace-regexp-eval', and
 +`map-query-replace-regexp'.  The function it specifies is called by
 +`perform-replace' when its 4th argument is non-nil.
 +
 +*** New keymap `search-map' bound to `M-s' provides global bindings
 +for search related commands.
 +
 +*** New keymap `multi-query-replace-map' contains additonal keys bound
 +to `automatic-all' and `exit-current' for multi-buffer interactive replacement.
 +
 +*** The variable `inhibit-changing-match-data', if non-nil, prevents
 +the search and match primitives from changing the match data.
 +
 +*** New functions `word-search-forward-lax' and `word-search-backward-lax'.
 +These are like `word-search-forward and `word-search-backward', except
 +that the end of the search string need not match a word boundary,
 +unless it ends in whitespace.
 +
 +** File handling changes
 +
 +*** set-file-modes is now interactive and can take the mode value in
 +symbolic notation thanks to auxiliary functions.
 +
 +*** file-local-variables-alist stores an alist of file-local
 +variables defined in the current buffer.
 +
 +** Face-remapping
 +
 +*** Each face can be remapped to a different face definition using the
 +variable `face-remapping-alist'.  This is an alist that maps faces to
 +replacement definitions (which can be face names, lists of face names,
 +or attribute/value plists.  If this variable is buffer-local, the
 +remapping occurs only in that buffer.
 +
 +*** text-scale-mode remaps the default face to a larger or smaller
 +size in the current buffer.  This feature is used by the Buffer Face
 +menu and the new `C-x C-+', `C-x C--', and `C-x C-0' commands (see
 +Editing Changes, above).
 +
 +*** New functions:
 +
 +**** `face-remap-add-relative' adds a face remapping entry to the
 +current buffer.
 +
 +**** ``face-remap-remove-relative' removes a face remapping entry from
 +the current buffer.
 +
 +**** `face-remap-reset-base' restores a face to its global definition.
 +
 +**** `face-remap-set-base' sets the base remapping of a face.
 +
 +** Process changes
 +
 +*** The new function `start-file-process' is similar to `start-process',
 +but obeys file handlers.  The file handler is chosen based on
 +`default-directory'.  The functions `start-file-process-shell-command'
 +and `process-file-shell-command' are also new; they call internally
 +`start-file-process' and `process-file', respectively.
 +
 +*** The new function `process-lines' executes an external program and
 +returns its output as a list of lines.
 +
 +** Character code, representation, and charset changes.
 +
 +*** In multibyte buffers and strings, characters are represented by
 +UTF-8 byte sequences.  The character code space is now 0x0..0x3FFFFF
 +with no gap; code points 0x0..0x10FFFF are Unicode characters of the
 +same code points, while code points 0x3FFF80..0x3FFFFF are raw 8-bit
 +bytes.
 +
 +*** Generic characters no longer exist.
 +
 +*** The concept of a charset has changed.  A single character may
 +belong to multiple charsets (e.g. a-grave, U+00E0, belongs to charsets
 +unicode, iso-8859-1, iso-8859-3, etc).
 +
 +**** The dimension of a charset is now 1, 2, 3, or 4, and the size of
 +each dimension is no longer limited to 94 or 96.
 +
 +**** A dynamic charset priority list is used to infer the charset of
 +characters for display.
 +
 +*** The functions `split-char' and `make-char' now accept up to 4
 +positional codes instead of just 2.
 +
 +*** The functions `encode-char' and `decode-char' now accept any character sets.
 +
 +*** The function `define-charset' now accepts a completely different
 +form of arguments (old-style arguments still work).
 +
 +*** The value of the function `char-charset' depends on the current
 +priorities of charsets.
 +
 +*** The function get-char-code-property now accepts many Unicode base
 +character properties.  They are `name', `general-category',
 +`canonical-combining-class', `bidi-class', `decomposition',
 +`decimal-digit-value', `digit-value', `numeric-value', `mirrored',
 +`old-name', `iso-10646-comment', `uppercase', `lowercase', and
 +`titlecase'.
 +
 +*** The functions `modify-syntax-entry' and `modify-category-entry' now
 +accept a cons of characters as the first argument, and modify all
 +entries in that range of characters.
 +
 +*** Use of `translation-table-for-input' for character code unification
 +is now obsolete, since Emacs 23.1 and later uses Unicode as basis for
 +internal representation of characters.
 +
 +*** New functions:
 +
 +**** `characterp' returns t if and only if the argument is a character.
 +This replaces `char-valid-p', which is now obsolete.
 +
 +**** `max-char' returns the maximum character code (currently #x3FFFFF).
 +
 +**** `define-charset-alias' defines an alias of a charset.
 +
 +**** `set-charset-priority' sets priorities of charsets.
 +
 +**** `charset-priority-list' returns a prioritized list of charsets.
 +
 +**** `unibyte-string' makes a unibyte string from bytes.
 +
 +**** `define-char-code-property' defines a character code property.
 +
 +**** `char-code-property-description' returns the description string of
 +a character code property.
 +
 +*** New variables:
 +
 +**** `find-word-boundary-function-table' is a char-table of functions to
 +search for a word boundary.
 +
 +**** `char-script-table' is a char-table of script names.
 +
 +**** `char-width-table' is a char-table of character widths.
 +
 +**** `print-charset-text-property' controls how to handle `charset' text
 +property on printing a string.
 +
 +**** `printable-chars' is a char-table of printable characters.
 +
 +** Code conversion changes
 +
 +*** The new function `define-coding-system' should be used to define a
 +coding system instead of `make-coding-system' (which is now obsolete).
 +
 +*** The functions `encode-coding-region' and `decode-coding-region'
 +have an optional 4th argument to specify where the result of
 +conversion should go.
 +
 +*** The functions `encode-coding-string' and `decode-coding-string'
 +have an optional 4th argument specifying a buffer to store the result
 +of conversion.
 +
 +*** The new variable `inhibit-null-byte-detection' controls whether to
 +consider text with null bytes as binary data.  By default, it is
 +`nil', and Emacs uses `no-conversion' for any text containing null
 +bytes.
 +
 +*** The functions `set-coding-priority' and `make-coding-system' are obsolete.
 +
 +*** New functions:
 +
 +**** `with-coding-priority' executes Lisp code using the specified
 +coding system priority order.
 +
 +**** `check-coding-systems-region' checks if the text in the region is
 +encodable by the specified coding systems.
 +
 +**** `coding-system-aliases' returns a list of aliases of a coding system.
 +
 +**** `coding-system-charset-list' returns a list of charsets supported
 +by a coding system.
 +
 +**** `coding-system-priority-list' returns a list of coding systems
 +ordered by their priorities.
 +
 +**** `set-coding-system-priority' sets priorities of coding systems.
 +
 +**** `coding-system-from-name' returns a coding system matching with
 +the argument name.
 +
 +** There is a new input method, Robin, different from Quail.
 +It has three functionalities:
 + i) a simple input method (converts an ASCII sequence into a string).
 +ii) converts an existing buffer substring into another string
 +iii) reverse conversion (each character produced by a
 +robin rule can hold the original ASCII sequence as a char-code-property)
 +
 +*** The new function `robin-define-package' defines a Robin package.
 +
 +*** The new function `robin-modify-package' modifies an existing Robin package.
 +
 +*** The new function `robin-use-package' starts using a Robin package
 +as an input method.
 +
 +*** The new function `string-to-unibyte' is like `string-as-unibyte'
 +but signals an error if STRING contains a non-ASCII, non-eight-bit
 +character.
 +
 +** Changes related to the new font backend
 +
 +*** Which font backends to use can be specified by the X resource
 +"FontBackend".  For instance, to use both X core fonts and Xft fonts:
 +
 +Emacs.FontBackend: x,xft
 +
 +If this resource is not set, Emacs tries to use all font backends
 +available on your graphic device.
 +
 +*** New frame parameter `font-backend' specifies a list of
 +font-backends supported by the frame's graphic device.  On X, they are
 +currently `x' and `xft'.
 +
 +*** The function `set-fontset-font' now accepts a script name as the
 +second argument, and has an optional 5th argument to control how to
 +set the font.
 +
 +*** New functions:
 +
 +**** `fontp' checks if the argument is a font-spec or font-entity.
 +
 +**** `font-spec' creates a new font-spec object.
 +
 +**** `font-get' returns a font property value.
 +
 +**** `font-put' sets a font property value.
 +
 +**** `font-face-attributes' returns a plist of face attributes set by a font.
 +
 +**** `list-fonts' returns a list of font-entities matching a font spec.
 +
 +**** `find-font' returns the font-entity best matching the given font spec.
 +
 +**** `font-family-list' returns a list of family names of available fonts.
 +
 +**** `font-xlfd-name' returns an XLFD name of a given font spec, font
 +entity, or font object.
 +
 +**** `clear-font-cache' clears all font caches.
 +
 +** Changes related to multiple-terminal (multi-tty) support
 +
 +*** $TERM is now set to `dumb' for subprocesses.  If you want to know the
 +$TERM inherited by Emacs you will have to look inside initial-environment.
 +
 +*** $DISPLAY is now dynamically inherited from the frame's `display'.
 +
 +*** The `window-system' variable is now frame-local.  The new
 +`initial-window-system' variable contains the `window-system' value
 +for the first frame.  `window-system' is also now a function that
 +takes a frame argument.
 +
 +*** The `keyboard-translate-table' variable and the terminal and
 +keyboard coding systems are now terminal-local.
 +
 +*** You can specify a terminal device (`tty' parameter) and a terminal
 +type (`tty-type' parameter) to `make-terminal-frame'.
 +
 +*** The function `make-frame-on-display' now works during a tty
 +session.
 +
 +*** A new `terminal' data type.
 +The functions `get-device-terminal', `terminal-parameters',
 +`terminal-parameter', `set-terminal-parameter' use this data type.
 +
 +*** Function key sequences are now mapped using `local-function-key-map',
 +a new variable.  This inherits from the global variable function-key-map,
 +which is not used directly any more.
 +
 +*** New hooks:
 +
 +**** before-hack-local-variables-hook is called after setting new
 +variable file-local-variables-alist, and before actually applying the
 +file-local variables.
 +
 +**** `suspend-tty-functions' and `resume-tty-functions' are called
 +after a tty frame has been suspended or resumed, respectively.  The
 +functions are called with the terminal id of the frame being
 +suspended/resumed as a parameter.
 +
 +**** The special hook `delete-terminal-functions' is called before
 +deleting a terminal.
 +
 +*** New functions:
 +
 +**** `delete-terminal'
 +
 +**** `suspend-tty'
 +
 +**** `resume-tty'.
 +
 +*** `initial-environment' holds the environment inherited from Emacs's parent.
 +
 +** Redisplay changes
 +
 +*** For underlined characters, the distance between the underline and
 +the baseline is controlled by a new variable, `underline-minimum-offset'.
 +
 +*** You can now pass the value of the `invisible' property to
 +invisible-p to check whether it would cause the text to be invisible.
 +This is convenient when checking invisibility of text with no buffer
 +position (e.g. in before/after-strings).
 +
 +*** `clear-image-cache' can be told to flush only images of a specific file.
 +
 +*** `vertical-motion' can now be given a goal column.
 +It now accepts a cons cell (COLS . LINES) in its first argument, which
 +says to stop, where possible, at a pixel x-position equal to COLS
 +times the default column width.
 +
 +*** redisplay-end-trigger-functions, set-window-redisplay-end-trigger,
 +and window-redisplay-end-trigger are obsolete.  Use `jit-lock-register'
 +instead.
 +
 +*** The new variables `wrap-prefix' and `line-prefix' specify display
 +specs which are appended at display-time to every continuation line
 +and non-continuation line, respectively.  In addition, Emacs
 +recognizes the `wrap-prefix' and `line-prefix' text or overlay
 +properties; these have the same effects as the variables of the same
 +name, but take precedence.
 +
 +** The Lisp interpreter now treats non-breaking space as whitespace.
 +
 +** Miscellaneous new functions
 +
 +*** `apply-partially' performs a "curried" application of a function.
 +
 +*** `buffer-swap-text' swaps text between two buffers.  This can be
 +useful for modes such as tar-mode, archive-mode, RMAIL.
 +
 +*** `combine-and-quote-strings' produces a single string from a list of strings
 +sticking a separator string in between each pair, and quoting those
 +strings that include the separator as their substring.  Useful for
 +consing shell command lines from the individual arguments.
 +
 +*** `custom-note-var-changed' tells Custom to treat the change in a
 +certain variable as having been made within Custom.
 +
 +*** `face-all-attributes' returns an alist describing all the basic
 +attributes of a given face.
 +
 +*** `format-seconds' converts a number of seconds into a readable
 +string of days, hours, etc.
 +
 +*** `image-refresh' refreshes all images associated with a given image
 +specification.
 +
 +*** `locate-user-emacs-file' helps packages to select the appropriate
 +place to save user-specific files.  It defaults to `user-emacs-directory'
 +unless the file already exists at $HOME.
 +
 +*** `read-color' reads a color name using the minibuffer.
 +
 +*** `read-shell-command' does what its name says, with completion.  It
 +uses the minibuffer-local-shell-command-map for that.
 +
 +*** `split-string-and-unquote' splits a string into a list of substrings
 +on the boundaries of a given delimiter, and unquotes the substrings that
 +are quoted.  Useful for taking apart shell commands.
 +
 +*** The two new functions `looking-at-p' and `string-match-p' can do
 +the same matching as `looking-at' and `string-match' without changing
 +the match data.
 +
 +*** The two new functions `make-serial-process' and
 +`serial-process-configure' provide a Lisp interface to the new serial
 +port support (see Emacs changes, above).
 +
 +** Miscellaneous new variables
 +
 +*** `auto-save-include-big-deletions', if non-nil, means auto-save is
 +not turned off automatically after a big deletion.
 +
 +*** `read-circle', if nil, disables the reading of recursive Lisp
 +structures using the #N= and #N# syntax.
 +
 +*** `this-command-keys-shift-translated' is non-nil if the key
 +sequence invoking the current command was found by shift-translation.
 +
 +*** `window-point-insertion-type' determines the insertion-type of the
 +marker used for window-point.
 +
 +*** bookmark provides `bookmark-make-record-function' so special major
 +modes like Info can teach bookmark.el how to save and restore the
 +relevant data.
 +
 +*** `fill-forward-paragraph-function' specifies which function the
 +filling code should use to find paragraph boundaries.
 +
 +\f
 +* New Packages for Lisp Programming in Emacs 23.1
 +
 +** The new package avl-tree.el deals with the AVL tree data structure.
 +
 +** The new package check-declare.el verifies the accuracy of
 +declare-function macros (see Lisp Changes, above).
 +
 +** find-cmd.el can build `find' commands using lisp syntax.
 +
 +** The package misearch.el has been added.  It allows Isearch to search
 +through multiple buffers.  A variable `multi-isearch-next-buffer-function'
 +defines the function to call to get the next buffer to search in the series
 +of multiple buffers.  Top-level functions `multi-isearch-buffers',
 +`multi-isearch-buffers-regexp', `multi-isearch-files' and
 +`multi-isearch-files-regexp' accept a single argument that specifies
 +a list of buffers/files to search for a string/regexp.
 +
 +** The new major mode `special-mode' is intended as a parent for
 +major modes such as those that set the "'mode-class 'special" property.
 +
 +\f
 +----------------------------------------------------------------------
 +This file is part of GNU Emacs.
 +
 +GNU Emacs is free software: you can redistribute it and/or modify
 +it under the terms of the GNU General Public License as published by
 +the Free Software Foundation, either version 3 of the License, or
 +(at your option) any later version.
 +
 +GNU Emacs is distributed in the hope that it will be useful,
 +but WITHOUT ANY WARRANTY; without even the implied warranty of
 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +GNU General Public License for more details.
 +
 +You should have received a copy of the GNU General Public License
 +along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 +
 +\f
 +Local variables:
 +mode: outline
 +paragraph-separate: "[        \f]*$"
 +end:
 +
 +arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2
diff --combined lisp/ChangeLog
index 33d50961912640188ee00b3742e94938b4230eb6,f4cf656fbf2e55119a3cffd43e4b4b58a34270e4..fa3bdfc378083fa729f832b9b7048ee6ba1dd3d7
 -2010-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+ 2010-11-09  Glenn Morris  <rgm@gnu.org>
+       * progmodes/tcl.el (tcl-hairy-scan-for-comment): Doc fix.
 -2010-11-08  Richard Levitte  <richard@levitte.org>  (tiny change)
++2010-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * minibuffer.el (minibuffer-completion-help): Specify the end of the
+       completion field (bug#7211).
+       * progmodes/python.el (python-font-lock-syntactic-keywords): (bug#7322)
+       Fix handling of backslash escapes.
+       (python-quote-syntax): Adjust accordingly.
 -2010-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
++2010-11-09  Richard Levitte  <richard@levitte.org>  (tiny change)
++2010-11-09  Richard Levitte  <richard@levitte.org>  (tiny patch)
+       * vc-mtn.el (vc-mtn-working-revision, vc-mtn-after-dir-status)
+       (vc-mtn-workfile-branch): Adjust to new output format.
 -2010-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
++2010-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * international/mule-cmds.el (princ-list): Mark as obsolete.
 -2010-11-06  Michael Albinus  <michael.albinus@gmx.de>
++2010-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * emacs-lisp/smie.el: New package.
 -2010-11-06  Eli Zaretskii  <eliz@gnu.org>
++2010-11-09  Michael Albinus  <michael.albinus@gmx.de>
+       * files.el (backup-by-copying-when-mismatch):
+       Set `permanent-local' property.
+       * net/tramp.el (tramp-handle-insert-file-contents): Do not set
+       `permanent-local' property for `backup-by-copying-when-mismatch'.
 -      (ls-lisp-classify-file): New function.
 -      (ls-lisp-insert-directory): Call it if switches include -F (bug#6294).
 -      (ls-lisp-classify): Call ls-lisp-classify-file.
 -      (insert-directory): Remove blanks from switches.
++2010-11-09  Eli Zaretskii  <eliz@gnu.org>
+       * ls-lisp.el (insert-directory): Doc fix.  (bug#7285)
 -2010-11-07  Wilson Snyder  <wsnyder@wsnyder.org>
 -2010-11-05  Michael Albinus  <michael.albinus@gmx.de>
 -
 -      * net/trampver.el: Update release number.
 -
 -2010-08-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 -
 -      * mouse.el (mouse-fixup-help-message): Match "mouse-2" only at the
 -      beginning of the string.  Use `string-match-p'.  (Bug#6765)
 -
 -2010-11-01  Glenn Morris  <rgm@gnu.org>
++2010-11-09  Wilson Snyder  <wsnyder@wsnyder.org>
+       * progmodes/verilog-mode.el (verilog-insert-one-definition)
+       (verilog-read-decls, verilog-read-sub-decls-sig): Fix AUTOWIRE and
+       AUTOINOUT for SV style multidimensional arrays, bug294.
+       Reported by Eric Mastromarchi.
+       (verilog-preprocess): Use with-current-buffer and
+       font-lock-fontify-buffer to cleanup style issues.
 -2010-11-01  Chong Yidong  <cyd@stupidchicken.com>
++2010-11-09  Glenn Morris  <rgm@gnu.org>
+       * locate.el (locate, locate-mode): Doc fixes.
 -2010-10-31  Stefan Monnier  <monnier@iro.umontreal.ca>
++2010-11-09  Chong Yidong  <cyd@stupidchicken.com>
+       * server.el (server-start): New arg INHIBIT-PROMPT prevents asking
+       user for confirmation.
+       (server-force-stop): Use it.
+       (server-start): Use server-force-stop for kill-emacs-hook, to
+       avoid user interaction while killing Emacs.
 +2010-11-09  Glenn Morris  <rgm@gnu.org>
  
 -      * vc/log-edit.el (log-edit-rewrite-fixes): New var.
 -      (log-edit-author): New dynamic var.
 -      (log-edit-changelog-ours-p, log-edit-insert-changelog-entries):
 -      Use it to return the author if different from committer.
 -      (log-edit-insert-changelog): Use them to add Author: and Fixes headers.
 +      * progmodes/meta-mode.el: Remove leading `*' from defcustom docs.
 +      (meta-indent-line): Simplify.
 +
 +      * vc/emerge.el (emerge-line-number-in-buf):
 +      * textmodes/ispell.el (ispell-region):
 +      * textmodes/fill.el (current-fill-column):
 +      * progmodes/xscheme.el (xscheme-send-current-line):
 +      * progmodes/vhdl-mode.el (vhdl-current-line, vhdl-line-copy):
 +      * progmodes/tcl.el (tcl-hairy-scan-for-comment):
 +      * progmodes/sh-script.el (sh-handle-prev-do):
 +      * progmodes/meta-mode.el (meta-indent-line):
 +      * progmodes/idlwave.el (idlwave-goto-comment, idlwave-fill-paragraph)
 +      (idlwave-in-quote):
 +      * progmodes/idlw-shell.el (idlwave-shell-current-frame)
 +      (idlwave-shell-update-bp-overlays, idlwave-shell-sources-filter):
 +      * progmodes/fortran.el (fortran-looking-at-if-then):
 +      * progmodes/etags.el (find-tag-in-order, etags-snarf-tag):
 +      * progmodes/cperl-mode.el (cperl-sniff-for-indent)
 +      (cperl-find-pods-heres):
 +      * progmodes/ada-mode.el (ada-get-current-indent, ada-narrow-to-defun):
 +      * net/quickurl.el (quickurl-list-insert):
 +      * net/ldap.el (ldap-search-internal):
 +      * net/eudc.el (eudc-expand-inline):
 +      * mail/sendmail.el (sendmail-send-it):
 +      * mail/mspools.el (mspools-visit-spool, mspools-get-spool-name):
 +      * emulation/viper-cmd.el (viper-paren-match, viper-backward-indent)
 +      (viper-brac-function):
 +      * calc/calc-yank.el (calc-do-grab-region):
 +      * calc/calc-keypd.el (calc-keypad-press):
 +      * term.el (term-move-columns, term-insert-spaces):
 +      * speedbar.el (speedbar-highlight-one-tag-line):
 +      * simple.el (current-word):
 +      * mouse-drag.el (mouse-drag-should-do-col-scrolling):
 +      * info.el (Info-find-node-in-buffer-1, Info-follow-reference)
 +      (Info-scroll-down):
 +      * hippie-exp.el (he-line-beg):
 +      * epa.el (epa--marked-keys):
 +      * dired-aux.el (dired-kill-line, dired-do-kill-lines)
 +      (dired-update-file-line, dired-add-entry, dired-remove-entry)
 +      (dired-relist-entry):
 +      * buff-menu.el (Buffer-menu-buffer):
 +      * array.el (current-line):
 +      * allout.el (allout-resolve-xref)
 +      (allout-latex-verbatim-quote-curr-line):
 +      Replace yet more uses of end-of-line etc with line-end-position, etc.
  
 -2010-10-31  Eli Zaretskii  <eliz@gnu.org>
 +2010-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * vc/vc-hooks.el (vc-default-mode-line-string): Doc fix.
 +      * emacs-lisp/checkdoc.el (checkdoc-display-status-buffer)
 +      (checkdoc-interactive-loop, checkdoc-recursive-edit): Avoid princ-list.
 +      (checkdoc-syntax-table): Initialize in the declaration.
 +      (emacs-lisp-mode-hook): Use just checkdoc-minor-mode now that it turns
 +      the mode on unconditionally.
  
 -2010-10-31  Chong Yidong  <cyd@stupidchicken.com>
 +      * emacs-lisp/cl-macs.el (extent-data, extent-face, extent-priority)
 +      (extent-end-position, extent-start-position): Remove setf method for
 +      non-existing functions (bug#7319).
  
 -      * vc/vc.el (vc-deduce-backend): New fun.  Handle diff buffers.
 -      (vc-root-diff, vc-print-root-log, vc-log-incoming)
 -      (vc-log-outgoing): Use it.
 -      (vc-diff-internal): Set diff-vc-backend.
 +2010-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * vc/diff-mode.el (diff-vc-backend): New var.
 +      * emacs-lisp/smie.el: Simplify the smie-rules-function return values.
 +      (smie-precs->prec2): Rename from smie-precs-precedence-table.
 +      (smie-bnf->prec2): Rename from smie-bnf-precedence-table.
 +      (smie-prec2->grammar): Rename from smie-prec2-levels.
 +      (smie-grammar): Rename from smie-op-levels.
 +      (smie-indent--hanging-p): Rename from smie-hanging-p.
 +      (smie-rule-hanging-p): New alias.
 +      (smie-indent--bolp): Rename from smie-bolp.
 +      (smie-indent--hanging-p): New alias.
 +      (smie--token): New dynamically bound variable.
 +      (smie-indent--parent): New function.
 +      (smie-rule-parent-p): Use it; rename from smie-parent-p.
 +      (smie-rule-next-p): Rename from smie-next-p.
 +      (smie-rule-prev-p): Rename from smie-prev-p.
 +      (smie-rule-sibling-p, smie-rule-parent)
 +      (smie-indent--separator-outdent, smie-rule-separator): New functions.
 +      (smie-rule-separator-outdent): New var.
 +      (smie-indent--rule): Merge with smie-indent--column.
 +      (smie-indent-forward-token, smie-indent-backward-token):
 +      Also recognize close parens.
 +      (smie-indent-keyword): Don't use smie-indent--column any more.
 +      (smie-indent-after-keyword): Ignore closers by default.
 +      (smie-indent-line): Use with-demoted-errors.
 +      * progmodes/octave-mod.el (octave-smie-grammar):
 +      Rename from octave-smie-op-levels.
 +      (octave-smie-rules): Adjust to new behavior.
 +      * progmodes/prolog.el (prolog-smie-grammar):
 +      Rename from prolog-smie-op-levels.
 +
 +2010-11-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * eshell/esh-util.el (subst-char-in-string)
 +      (directory-files-and-attributes): These compatibility definitions are
 +      not needed on any version of Emacs since at least 21.4.
 +
 +      * progmodes/verilog-mode.el (verilog-get-beg-of-line)
 +      (verilog-get-end-of-line): Remove.
 +      (verilog-within-string, verilog-re-search-forward-substr)
 +      (verilog-re-search-backward-substr, verilog-set-auto-endcomments)
 +      (verilog-surelint-off, verilog-getopt-file, verilog-highlight-region):
 +      Use point-at-bol, point-at-eol.
 +      * progmodes/pascal.el (pascal-get-beg-of-line, pascal-get-end-of-line):
 +      Remove.
 +      (pascal-declaration-end, pascal-declaration-beg, pascal-within-string)
 +      (electric-pascal-terminate-line, pascal-set-auto-comments)
 +      (pascal-indent-paramlist, pascal-indent-declaration)
 +      (pascal-get-lineup-indent, pascal-func-completion)
 +      (pascal-get-completion-decl, pascal-var-completion, pascal-completion):
 +      Use point-at-bol, point-at-eol.
 +      * progmodes/flymake.el (flymake-line-beginning-position)
 +      (flymake-line-end-position): Remove.
 +      (flymake-highlight-line): Use point-at-bol, point-at-eol.
 +      * eshell/esh-util.el (line-end-position, line-beginning-position):
 +      Remove compat definitions.
 +
 +      * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
 +      Use end-of-line N.
 +      (checkdoc-this-string-valid-engine, checkdoc-file-comments-engine):
 +      Use line-end-position.
 +
 +      * emacs-lisp/chart.el (chart-zap-chars):
 +      * play/decipher.el (decipher-set-map):
 +      * progmodes/ada-mode.el (ada-get-current-indent)
 +      (ada-search-ignore-string-comment, ada-tab-hard, ada-untab-hard):
 +      * progmodes/ada-prj.el (ada-prj-load-from-file, ada-prj-display-help):
 +      * progmodes/ada-xref.el (ada-initialize-runtime-library)
 +      (ada-get-all-references):
 +      * progmodes/cperl-mode.el (cperl-electric-paren)
 +      (cperl-electric-rparen, cperl-electric-keyword, cperl-electric-else)
 +      (cperl-linefeed, cperl-sniff-for-indent, cperl-to-comment-or-eol)
 +      (cperl-find-pods-heres, cperl-indent-exp, cperl-fix-line-spacing)
 +      (cperl-word-at-point-hard):
 +      * progmodes/idlw-shell.el (idlwave-shell-move-or-history)
 +      (idlwave-shell-filename-string, idlwave-shell-batch-command)
 +      (idlwave-shell-display-line):
 +      * progmodes/idlwave.el (idlwave-show-begin, idlwave-fill-paragraph)
 +      (idlwave-calc-hanging-indent, idlwave-auto-fill, idlwave-template):
 +      * progmodes/js.el (js--re-search-forward-inner)
 +      (js--re-search-backward-inner):
 +      * progmodes/vhdl-mode.el (vhdl-align-region-1, vhdl-align-region-2)
 +      (vhdl-fix-clause, vhdl-compose-configuration-architecture):
 +      * progmodes/ruby-mode.el (ruby-parse-partial, eval-when-compile):
 +      * textmodes/flyspell.el (flyspell-process-localwords):
 +      * textmodes/ispell.el (ispell-buffer-local-parsing)
 +      (ispell-buffer-local-dict, ispell-buffer-local-words):
 +      Use point-at-bol and point-at-eol.
 +
 +      * speedbar.el (speedbar-generic-item-info)
 +      (speedbar-item-info-tag-helper, speedbar-change-expand-button-char)
 +      (speedbar-add-indicator, speedbar-check-vc-this-line)
 +      (speedbar-check-obj-this-line, speedbar-extract-one-symbol)
 +      (speedbar-buffers-line-directory, speedbar-buffer-revert-buffer):
 +      Replace more uses of end-of-line etc with line-end-position.
 +
 +2010-11-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * textmodes/texnfo-upd.el (texinfo-start-menu-description)
 +      (texinfo-update-menu-region-beginning, texinfo-menu-first-node)
 +      (texinfo-delete-existing-pointers, texinfo-find-pointer)
 +      (texinfo-clean-up-node-line, texinfo-insert-node-lines)
 +      (texinfo-multiple-files-update):
 +      * textmodes/table.el (table--probe-cell-left-up)
 +      (table--probe-cell-right-bottom):
 +      * textmodes/picture.el (picture-tab-search):
 +      * textmodes/page-ext.el (pages-copy-header-and-position)
 +      (pages-directory-for-addresses):
 +      * progmodes/vera-mode.el (vera-get-offset):
 +      * progmodes/simula.el (simula-calculate-indent):
 +      * progmodes/python.el (python-pdbtrack-overlay-arrow):
 +      * progmodes/prolog.el (end-of-prolog-clause):
 +      * progmodes/perl-mode.el (perl-calculate-indent, perl-indent-exp):
 +      * progmodes/icon.el (indent-icon-exp):
 +      * progmodes/etags.el (tag-re-match-p):
 +      * progmodes/ebrowse.el (ebrowse-show-file-name-at-point):
 +      * progmodes/ebnf2ps.el (ebnf-begin-file):
 +      * progmodes/dcl-mode.el (dcl-back-to-indentation-1)
 +      (dcl-save-local-variable):
 +      * play/life.el (life-setup):
 +      * play/gametree.el (gametree-looking-at-ply):
 +      * nxml/nxml-maint.el (nxml-insert-target-repertoire-glyph-set):
 +      * mail/sendmail.el (mail-mode-auto-fill):
 +      * emacs-lisp/lisp-mode.el (calculate-lisp-indent):
 +      * emacs-lisp/edebug.el (edebug-overlay-arrow):
 +      * emacs-lisp/checkdoc.el (checkdoc-this-string-valid):
 +      * woman.el (woman-parse-numeric-value, woman2-TH, woman2-SH)
 +      (woman-tab-to-tab-stop, WoMan-warn-ignored):
 +      * type-break.el (type-break-file-keystroke-count):
 +      * term.el (term-replace-by-expanded-history-before-point)
 +      (term-skip-prompt, term-extract-string):
 +      * speedbar.el (speedbar-edit-line, speedbar-expand-line)
 +      (speedbar-contract-line, speedbar-toggle-line-expansion)
 +      (speedbar-parse-c-or-c++tag, speedbar-parse-tex-string)
 +      (speedbar-buffer-revert-buffer, speedbar-highlight-one-tag-line):
 +      * sort.el (sort-skip-fields):
 +      * skeleton.el (skeleton-internal-list):
 +      * simple.el (line-move-finish, line-move-to-column):
 +      * shell.el (shell-forward-command):
 +      * misc.el (copy-from-above-command):
 +      * makesum.el (double-column):
 +      * ebuff-menu.el (electric-buffer-update-highlight):
 +      * dired.el (dired-move-to-end-of-filename):
 +      * dframe.el (dframe-popup-kludge):
 +      * bookmark.el (bookmark-kill-line, bookmark-bmenu-show-filenames):
 +      * arc-mode.el (archive-get-lineno):
 +      Use line-end-position and line-beginning-position.
 +
 +      * progmodes/idlwave.el (idlwave-routine-entry-compare-twins):
 +      (idlwave-study-twins): Prefix dynamic local `class'.
 +      (idlwave-routine-twin-compare): Update for above name change.
 +
 +      * emacs-lisp/eieio-comp.el (byte-compile-file-form-defmethod):
 +      Use boundp tests to silence compiler.  Update for changed name of
 +      bytecomp-filename variable.
 +
 +      * emulation/viper-cmd.el (viper-read-string-with-history):
 +      Prefix dynamic local `initial'.
 +      (viper-minibuffer-standard-hook): Update for above name change.
 +
 +      * emacs-lisp/elint.el (elint-init-env): Prefix dynamic local `env'.
 +      (elint-init-form): Update for above name change.
 +
 +      * mail/mail-extr.el (mail-extract-address-components): Give dynamic
 +      local variables `cbeg' and `cend' a prefix.
 +      (mail-extr-voodoo): Update for above name change.
 +
 +      * textmodes/reftex-toc.el (reftex-toc-do-promote)
 +      (reftex-toc-promote-prepare): Pass `delta' as an explicit argument.
 +      (reftex-toc-promote-action): Doc fix.
 +
 +      * textmodes/reftex-sel.el (reftex-select-item): Give local variables
 +      `prompt', `data' a prefix.
 +      (reftex-select-post-command-hook, reftex-select-callback)
 +      (reftex-select-mouse-accept, reftex-select-read-cite):
 +      Update for above name changes.
 +
 +      * textmodes/reftex-ref.el (reftex-reference): Rename local variable
 +      `refstyle' to reftex-refstyle.
 +      (reftex-offer-label-menu): Update for above name change.
 +      * textmodes/reftex-sel.el (reftex-select-toggle-varioref): Update for
 +      `refstyle' name change.
 +
 +      * vc/emerge.el (emerge-eval-in-buffer): Remove, and replace all uses
 +      with with-current-buffer.
 +      (diff, template): Give dynamic local variables a prefix.
 +      (emerge-line-numbers): Rename local `diff' to emerge-line-diff.
 +      (emerge-line-number-in-buf): Update for above name change.
 +      (emerge-combine-versions-internal): Rename local `template' to
 +      emerge-combine-template.
 +      (emerge-combine-versions-edit): Update for above name change.
 +
 +2010-11-06  Ralf Angeli  <angeli@caeruleus.net>
 +
 +      * textmodes/reftex-cite.el
 +      (reftex-extract-bib-entries-from-thebibliography): Match bibitem
 +      entries with whitespace after \bibitem.
 +      (reftex-create-bibtex-file): Match entries containing numbers and
 +      symbol constituents.  Make sure that entries with whitespace at
 +      various places are found.
 +
 +2010-11-05  Christian Millour  <cm@abtela.com>  (tiny change)
 +
 +      * shell.el (shell-process-popd): Made aware of comint-file-name-prefix.
 +
 +2010-11-05  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * mouse.el (mouse-yank-primary): Update comment (Bug#6802).
 +
 +2010-11-05  Glenn Morris  <rgm@gnu.org>
 +
 +      * woman.el (woman0-roff-buffer, woman1-roff-buffer)
 +      (woman2-roff-buffer): Give local variable `request' a prefix.
 +      (woman0-macro): Rename argument `request' in the same way.
 +      (woman-request): New name for `request' dynamic variable.
 +      (woman-unquote, woman-forward-arg): Update for above name change.
 +      (woman1-roff-buffer): Give local variable `unquote' a prefix.
 +      (woman1-unquote): New name for `unquote' dynamic variable.
 +      (woman1-B-or-I, woman1-alt-fonts): Update for above name change.
 +      (woman-translations): Rename from `translations'.  No longer global.
 +      (woman2-tr, woman-translate): Update for above name change.
 +      (woman-translate): Check for bound variable.
 +      (woman2-roff-buffer): Give local variable `translations' a prefix.
 +
 +      * play/doctor.el: Give all local variables a prefix.  Update callers.
 +      (doc$, doctor-put-meaning): Use backquote.
 +
 +      * emacs-lisp/cl-macs.el (loop): Give local variable args a prefix.
 +      (cl-parse-loop-clause, cl-loop-handle-accum): Update for above change.
 +
 +      * emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Give local
 +      variables bytes, ptr, op a prefix.
 +      (disassemble-offset): Update for above change.
 +
 +2010-11-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-unpack): Remove no-op.
 +      (package--builtins, package--dir): Doc fix.
 +      (package-activate-1, package-activate, package-install)
 +      (package-compute-transaction): Fix error message.
 +      (package-delete): Use delete-directory.  Omit system packages.
 +      (package-initialize): Set package-alist to nil first.
 +      (package-menu-mark-delete, package-menu-mark-install): Don't add
 +      symbols that are inconsistent with the package state.
 +      (package-menu-execute): Perform deletions and installations as
 +      single batch operations.
  
 -2010-10-31  Juri Linkov  <juri@jurta.org>
 +2010-11-03  Glenn Morris  <rgm@gnu.org>
  
 -      * vc/vc.el (vc-diff-internal): Set `revert-buffer-function'
 -      buffer-locally to lambda that re-runs the vc diff command.
 -      (Bug#6447)
 +      * progmodes/idlwave.el (idlwave-pset): Only used on XEmacs.
 +      (props): Remove unnecessary declaration.
  
 -2010-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * textmodes/ispell.el (ispell-init-process): On Emacs, always use
 +      set-process-query-on-exit-flag.
  
 -      * vc/log-view.el (log-view-mode-map): Bind revert-buffer.
 +      * textmodes/reftex-toc.el (name1, dummy, dummy2): Remove unused decs.
 +      (reftex-toc-do-promote): Remove unused local `mpos'.
 +      (reftex-toc-restore-region): Make `mpos' local to this function.
  
 -      Make 'g' (AKA revert-buffer) rerun VC log, log-incoming and
 -      log-outgoing commands.
 -      * vc/vc.el (vc-log-internal-common): Add a new argument and use it
 -      to create a buffer local revert-buffer-function variable.
 -      (vc-print-log-internal, vc-log-incoming, vc-log-outgoing): Pass a
 -      revert-buffer-function lambda.
 +      * net/dbus.el (dbus-name-owner-changed-handler): Doc fix.
  
 -      Improve VC create/retrieve tag/branch.
 -      * vc.el (vc-create-tag): Do not read the directory name for VCs
 -      with repository revision granularity.  Adjust the tag/branch
 -      prompt.  Reset VC properties.
 -      (vc-retrieve-tag): Do not read the directory name for VCs
 -      with repository revision granularity.  Reset VC properties.
 +      * play/landmark.el (lm-losing-threshold): Correct spelling.
 +      (lm-human-plays): Use new name.
 +
 +      * play/gomoku.el (gomoku-loosing-threshold): Correct spelling.
 +      (gomoku-human-plays): Use new name.
  
 -      Add optional support for resetting VC properties.
 -      * vc-dispatcher.el (vc-resynch-window): Add new optional argument,
 -      call vc-file-clearprops when true.
 -      (vc-resynch-buffer): Add new optional argument, pass it down.
 -      (vc-resynch-buffers-in-directory): Likewise.
 +      * play/gomoku.el (nil-score, Xscore, XXscore, XXXscore, XXXXscore)
 +      (Oscore, OOscore, OOOscore, OOOOscore): Rename with gomoku- prefix.
 +      (gomoku-score-trans-table, gomoku-winning-threshold)
 +      (gomoku-loosing-threshold, gomoku-init-score-table): Use new names.
 +
 +2010-11-03  Chong Yidong  <cyd@stupidchicken.com>
  
 -      Improve support for special markup in the VC commit message.
 -      * vc-mtn.el (vc-mtn-checkin): Support Author: and Date: markup.
 -      * vc-hg.el (vc-hg-checkin): Add support for Date:.
 -      * vc-git.el (vc-git-checkin):
 -      * vc-bzr.el (vc-bzr-checkin): Likewise.
 +      * emacs-lisp/package.el: Don't put built-in packages in
 +      package-alist, to avoid loading inefficiencies.
 +      (package-built-in-p): Make VERSION optional, and treat it as a
 +      minimum acceptable version.
 +      (package-activate): Search separately for built-in packages.  Emit
 +      a warning if a dependency fails.
 +      (define-package): Handle most common case, where there is no
 +      obsolete package, first.
 +      (package-compute-transaction): Print required version in error.
 +      (package--initialized): New variable.
 +      (list-packages): Use it.
 +      (package-initialize): Optional arg NO-ACTIVATE.  Don't put
 +      built-in packages in packages-alist; keep it separate.  Set
 +      package--initialized.
 +      (describe-package): Avoid activating packages as a side-effect.
 +      Search separately for built-in packages.
 +      (describe-package-1): Handle the case where an elpa package is
 +      simultaneously built-in and available/installed.
 +      (package-installed-p, package--generate-package-list): Search
 +      separately for built-in packages.
 +      (package-load-descriptor): Doc fix.
  
 -      Add support for vc-log-incoming, improve vc-log-outgoing for Git.
 -      * vc-git.el (vc-git-log-view-mode): Fix font lock for
 -      incoming/outgoing logs.
 -      (vc-git-log-outgoing, vc-git-log-incoming): New functions.
 +2010-11-03  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * vc-git.el (vc-git-log-outgoing): Use the same format as the
 -      short log.
 -      (vc-git-log-incoming): Likewise.  Run "git fetch" before the log
 -      command
 +      * progmodes/perl-mode.el (perl-syntax-propertize-function):
 +      Handle __DATA__ and __END__.
  
 -      Add bindings for vc-log-incoming and vc-log-outgoing.
 -      * vc-hooks.el (vc-prefix-map): Add bindings for vc-log-incoming
 -      and vc-log-outgoing.
 -      * vc-dir.el (vc-dir-menu-map): Add menu bindings for vc-log-incoming
 -      and vc-log-outgoing.
 +2010-11-02  Noah Friedman  <friedman@splode.com>
  
 -      Improve state updating for VC tag commands.
 -      * vc.el (vc-create-tag, vc-retrieve-tag): Call vc-resynch-buffer
 -      to update the state of all buffers in the directory.
 +      * emacs-lisp/bytecomp.el (byte-recompile-file): If bytecomp-arg is
 +      nil, do not ask to recompile files that are not already compiled,
 +      and do not recompile them.
  
 -2010-05-19  Glenn Morris  <rgm@gnu.org>
 +2010-11-02  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * vc-dir.el (vc-dir): Don't pop-up-windows.  (Bug#6204)
 +      * emacs-lisp/package.el (package-initialize): Ensure that
 +      obsoleted built-in packages are not in package-activated-list
 +      during activation.
 +      (describe-package-1): Make the "installed" status override
 +      "built-in".
  
 -2010-10-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-11-01  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
  
 -      * vc.el (vc-checkin, vc-modify-change-comment):
 -      Adjust to new vc-start/finish-logentry.
 -      (vc-find-conflicted-file): New command.
 -      (vc-transfer-file): Adjust to new vc-checkin.
 -      (vc-next-action): Improve scoping.
 +      * subr.el (version-separator, version-regexp-alist): Remove '*'
 +      from docstring.
 +      (version-list-<=, version<=, version=): Doc fix.
  
 -      * vc-git.el (vc-git-checkin): Use log-edit-extract-headers.
 -      (vc-git-commits-coding-system): Rename from git-commits-coding-system.
 +2010-11-01  Kenichi Handa  <handa@m17n.org>
  
 -      * vc-dispatcher.el (vc-log-edit): Shorten names for
 -      log-edit-show-files.
 +      * faces.el (glyphless-char): Inherit underline for tty.
  
 -      * vc-bzr.el (vc-bzr-checkin): Use log-edit-extract-headers.
 -      (vc-bzr-conflicted-files): New function.
 +2010-11-01  Kenichi Handa  <handa@m17n.org>
  
 -      * log-edit.el (log-edit-summary, log-edit-header)
 -      (log-edit-unknown-header): New faces.
 -      (log-edit-headers-alist): New var.
 -      (log-edit-header-contents-regexp): New const.
 -      (log-edit-match-to-eoh): New function.
 -      (log-edit-font-lock-keywords): Use them.
 -      (log-edit): Insert a "Summary:" header as default.
 -      (log-edit-mode): Mark font-lock rules as case-insensitive.
 -      (log-edit-done): Cleanup headers.
 -      (log-edit-extract-headers): New function to replace it.
 +      Implement various display methods for glyphless characters.
  
 -      * vc-dispatcher.el (vc-finish-logentry): Don't mess so badly with
 -      the windows/frames.
 +      * international/characters.el (char-acronym-table): New variable.
 +      (glyphless-char-control): New variable.
 +      (update-glyphless-char-display): New funciton.
  
 -      * vc-bzr.el (vc-bzr-shelve-apply): Don't use *vc-bzr-shelve*.
 +      * faces.el (glyphless-char): New face.
  
 -      * vc-dir.el (vc-dir-kill-line): New command.
 -      (vc-dir-mode-map): Bind it to C-k.
 -      (vc-dir-headers): Abbreviate the working dir.
 +2010-11-01  Glenn Morris  <rgm@gnu.org>
  
 -      * vc-git.el (vc-git-revision-table): Include remote branches.
 +      * calendar/holidays.el (general-holidays, oriental-holidays)
 +      (local-holidays, other-holidays, hebrew-holidays, christian-holidays)
 +      (islamic-holidays, bahai-holidays, solar-holidays): Move aliases before
 +      the definitions of their targets.
  
 -2010-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * emacs-lisp/smie.el (smie): New custom group.
 +      (smie-blink-matching-inners, smie-indent-basic): Add :group.
  
 -      New VC methods: vc-log-incoming and vc-log-outgoing.
 -      * vc.el (vc-print-log-setup-buttons, vc-log-internal-common)
 -      (vc-incoming-outgoing-internal, vc-log-incoming, vc-log-outgoing):
 -      New functions.
 -      (vc-print-log-internal): Just call vc-log-internal-common.
 -      (vc-log-view-type): New permanent local variable.
 +      * faces.el (xw-defined-colors, x-setup-function-keys):
 +      * mouse-sel.el (x-select-text):
 +      * term/w32console.el (x-setup-function-keys): Update declarations.
  
 -      * vc-hooks.el (vc-menu-map): Bind vc-log-incoming and vc-log-outgoing.
 +      * progmodes/ruby-mode.el (ruby-syntax-propertize-heredoc): Declare.
  
 -      * vc-bzr.el (vc-bzr-log-view-mode): Use vc-log-view-type instead
 -      of the dynamic bound vc-short-log.
 -      (vc-bzr-log-incoming, vc-bzr-log-outgoing): New functions.
 +      * textmodes/ispell.el (comment-add): Declare.
  
 -      * vc-git.el (vc-git-log-outgoing): New function.
 -      (vc-git-log-view-mode): Use vc-log-view-type instead
 -      of the dynamic bound vc-short-log.
 +      * net/gnutls.el (gnutls-boot, gnutls-errorp, gnutls-error-string):
 +      Declare.
  
 -      * vc-hg.el (vc-hg-log-view-mode): Use vc-log-view-type instead of
 -      the dynamic bound vc-short-log.  Highlight the tag.
 -      (vc-hg-log-incoming, vc-hg-log-outgoing): New functions.
 -      (vc-hg-outgoing, vc-hg-incoming, vc-hg-outgoing-mode):
 -      (vc-hg-incoming-mode): Remove.
 -      (vc-hg-extra-menu-map): Do not bind vc-hg-incoming and vc-hg-outgoing.
 +      * info.el (finder-keywords-hash, package-alist): Declare.
  
 -      Fix default-directory for vc-root-diff.
 -      * vc.el (vc-root-diff): Bind default-directory to the root
 -      directory for the diff command.
 +2010-11-01  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-10-31  Sam Steingold  <sds@gnu.org>
 +      * finder.el (finder-compile-keywords): Don't use intern-soft,
 +      since package names may not yet exist in the obarray.
  
 -      * vc-hg.el (vc-hg-push, vc-hg-pull): Use `apply' when calling
 -      `vc-hg-command' with a list of flags.
 +2010-11-01  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-10-31  Glenn Morris  <rgm@gnu.org>
 +      * vc/vc-arch.el (vc-arch-checkin):
 +      * vc/vc-cvs.el (vc-cvs-checkin):
 +      * vc/vc-mtn.el (vc-mtn-checkin):
 +      * vc/vc-rcs.el (vc-rcs-checkin):
 +      * vc/vc-sccs.el (vc-sccs-checkin):
 +      * vc/vc-svn.el (vc-svn-checkin): Remove optional extra arg, unused
 +      since 2010-04-21 commit by Stefan Monnier.
  
 -      * vc-bzr.el (vc-bzr-log-edit-mode): Add --fixes support to
 -      log-edit-before-checkin-process.
 +2010-11-01  Glenn Morris  <rgm@gnu.org>
  
 -      * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
 +      * emacs-lisp/bytecomp.el (byte-recompile-file): Fix previous change.
  
 -      * vc-bzr.el, vc-hg.el (log-edit-mode): Declare.
 +      * startup.el (package-enable-at-startup, package-initialize):
 +      Silence compiler.
  
 -      * vc-dispatcher.el (vc-start-logentry): Doc fix.
 -      (log-view-process-buffer, log-edit-extra-flags): Declare.
 +      * progmodes/ada-mode.el (ada-font-lock-syntactic-keywords):
 +      Silence compiler.
  
 -2010-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-10-31  Julien Danjou  <julien@danjou.info>
  
 -      Add special markup processing for commit logs.
 -      * log-edit.el (log-edit): Add new argument MODE.  Use that mode
 -      when non-nil instead of the log-view-mode.
 +      * emacs-lisp/bytecomp.el (byte-recompile-file): New fun (bug#7297).
 +      (byte-recompile-directory):
 +      * emacs-lisp/lisp-mode.el (emacs-lisp-byte-compile-and-load):
 +      Use `byte-recompile-file'.
  
 -      * vc.el (vc-default-log-edit-mode): New function.
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
  
 -      * vc-dispatcher.el (vc-log-edit): Add a mode argument, pass it to
 -      log-edit.
 +      * cus-start.el: Handle standard values via a keyword.
 +      Only set version property if specified.
 +      (cursor-in-non-selected-windows, menu-bar-mode)
 +      (tool-bar-mode, show-trailing-whitespace):
 +      Do not specify standard values.
 +      (transient-mark-mode, temporary-file-directory): Use :standard.
  
 -      Support for shelving snapshots and for showing shelves.
 -      * vc-bzr.el (vc-bzr-shelve-show, vc-bzr-shelve-show-at-point)
 -      (vc-bzr-shelve-apply-and-keep-at-point, vc-bzr-shelve-snapshot):
 -      New functions.
 -      (vc-bzr-shelve-map, vc-bzr-shelve-menu-map)
 -      (vc-bzr-extra-menu-map): Map them.
 +2010-10-31  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-10-30  Michael Albinus  <michael.albinus@gmx.de>
 +      * term/x-win.el (x-get-selection-value): New function that gets
 +      PRIMARY with type as specified in x-select-request-type. (Bug#6802).
 +
 +2010-10-31  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp.el (tramp-handle-insert-file-contents): For root,
        preserve owner and group when editing files.  (Bug#7289)
  
 -2010-10-29  Glenn Morris  <rgm@gnu.org>
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
  
        * speedbar.el (speedbar-mode):
        * play/fortune.el (fortune-in-buffer, fortune):
        * textmodes/bibtex.el (bibtex-validate, bibtex-validate-globally):
        Replace inappropriate uses of toggle-read-only.  (Bug#7292)
  
 -2010-10-28  Glenn Morris  <rgm@gnu.org>
 -
        * select.el (x-selection): Mark it as an obsolete alias.
  
 -2010-10-27  Aaron S. Hawley  <aaron.s.hawley@gmail.com>
 +2010-10-31  Aaron S. Hawley  <aaron.s.hawley@gmail.com>
  
 -      * add-log.el (find-change-log): Use derived-mode-p rather than
 +      * vc/add-log.el (find-change-log): Use derived-mode-p rather than
        major-mode (bug#7284).
  
 -2010-10-27  Glenn Morris  <rgm@gnu.org>
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
  
        * menu-bar.el (menu-bar-files-menu): Make it into an actual alias,
        rather than just an unused variable that inherits from the real one.
  
 -2010-10-23  Michael McNamara  <mac@mail.brushroad.com>
 +2010-10-31  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-cmds.el (c-mask-paragraph): Fix an off-by-1 error.
 +      This fixes bug #7185.
 +
 +2010-10-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * startup.el (command-line): Search for package directories, and
 +      don't load package.el if none are found.
 +
 +      * emacs-lisp/package.el (describe-package, list-packages): Call
 +      package-initialize if it has not been called yet.
 +
 +2010-10-30  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-fonts.el (c-font-lock-enum-tail): New function
 +      which fontifies the tail of an enum.
 +      (c-basic-matchers-after): Insert a call to the above new function.
 +      This fixes bug #7264.
 +
 +2010-10-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * cus-start.el: Add :set properties for minor modes menu-bar-mode,
 +      tool-bar-mode, transient-mark-mode.  (Bug#7306)
 +      Include the :set property in the dumped Emacs.
 +
 +2010-10-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      SMIE: change indent rules format, improve smie-setup.
 +      * emacs-lisp/smie.el (smie-precs-precedence-table)
 +      (smie-merge-prec2s, smie-bnf-precedence-table, smie-prec2-levels):
 +      Mark them pure so the tables gets built at compile time.
 +      (smie-bnf-precedence-table): Store the closer-alist in the table.
 +      (smie-prec2-levels): Preserve the closer-alist.
 +      (smie-blink-matching-open): Be more forgiving in case of indentation.
 +      (smie-hanging-p): Rename from smie-indent--hanging-p.
 +      (smie-bolp): Rename from smie-indent--bolp.
 +      (smie--parent, smie--after): New dynamic vars.
 +      (smie-parent-p, smie-next-p, smie-prev-p): New funs.
 +      (smie-indent-rules): Remove.
 +      (smie-indent--offset-rule): Remove fun.
 +      (smie-rules-function): New var.
 +      (smie-indent--rule): New fun.
 +      (smie-indent--offset, smie-indent-keyword, smie-indent-after-keyword)
 +      (smie-indent-exps): Use it.
 +      (smie-setup): Setup paren blinking; add keyword args for token
 +      functions; extract closer-alist from op-levels.
 +      (smie-indent-debug-log): Remove var.
 +      (smie-indent-debug): Remove fun.
 +      * progmodes/prolog.el (prolog-smie-indent-rules): Remove.
 +      (prolog-smie-rules): New fun to replace it.
 +      (prolog-mode-variables): Simplify.
 +      * progmodes/octave-mod.el (octave-smie-closer-alist): Remove, now that
 +      it's setup automatically.
 +      (octave-smie-indent-rules): Remove.
 +      (octave-smie-rules): New fun to replace it.
 +      (octave-mode): Simplify.
 +
 +2010-10-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.el (temporary-file-directory): Remove (already defined in C).
 +      * cus-start.el: Add temporary-file-directory.
 +
 +      * abbrev.el (abbrev-mode):
 +      * composite.el (auto-composition-mode):
 +      * menu-bar.el (menu-bar-mode):
 +      * simple.el (transient-mark-mode):
 +      * tool-bar.el (tool-bar-mode): Adjust the define-minor-mode calls so
 +      that they do not define the associated variables twice.
 +      * simple.el (transient-mark-mode): Remove defvar.
 +      * composite.el (auto-composition-mode): Make variable auto-buffer-local.
 +      * cus-start.el: Add transient-mark-mode, menu-bar-mode, tool-bar-mode.
 +      Handle multiple groups, and also custom-delayed-init-variables.
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix.
 +
 +2010-10-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el (pcase): New `string' and `guard' patterns.
 +      (pcase-if): Add one minor optimization.
 +      (pcase-split-equal): Rename from pcase-split-eq.
 +      (pcase-split-member): Rename from pcase-split-memq.
 +      (pcase-u1): Add strings to the member optimization.
 +      Add `guard' variant of predicates.
 +      (pcase-q1): Add string patterns.
 +
 +2010-10-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/log-edit.el (log-edit-rewrite-fixes): State its safety pred.
 +
 +2010-10-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/ns-win.el (global-map, menu-bar-final-items, menu-bar-help-menu):
 +      Move menu-bar related settings to ../menu-bar.el.
 +      * menu-bar.el (global-map, menu-bar-final-items, menu-bar-help-menu):
 +      Move ns-specific settings here from term/ns-win.el.
 +
 +      * simple.el (x-selection-owner-p): Remove unused declaration.
 +
 +2010-10-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-cycling): New var (bug#7266).
 +      (minibuffer-complete, completion--do-completion):
 +      Use completion--flush-all-sorted-completions.
 +      (minibuffer-complete): Only cycle if completion-cycling is set.
 +      (completion--flush-all-sorted-completions): Unset completion-cycling.
 +      (minibuffer-force-complete): Set completion-cycling.
 +      (completion-all-sorted-completions): Move declaration before first use.
 +
 +2010-10-28  Leo  <sdl.web@gmail.com>
 +
 +      * iswitchb.el (iswitchb-kill-buffer): Avoid `iswitchb-make-buflist'
 +      which changes the order of matches seen by users (bug#7231).
 +
 +2010-10-28  Jes Bodi Klinke  <jes@bodi-klinke.dk>  (tiny change)
 +
 +      * progmodes/compile.el (compilation-mode-font-lock-keywords):
 +      Don't confuse -omega as "-o mega".
 +
 +2010-10-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/log-edit.el (log-edit-rewrite-fixes): New var.
 +      (log-edit-author): New dynamic var.
 +      (log-edit-changelog-ours-p, log-edit-insert-changelog-entries): Use it
 +      to return the author if different from committer.
 +      (log-edit-insert-changelog): Use them to add Author: and Fixes headers.
 +
 +      * play/landmark.el: Adjust commenting convention.
 +      (lm-nil-score): Rename from nil-score.
 +      (Xscore, XXscore, XXXscore, XXXXscore, Oscore, OOscore, OOOscore)
 +      (OOOOscore): Move into a let in lm-score-trans-table.
 +      (lm-winning-threshold, lm-loosing-threshold): Use lm-score-trans-table.
 +
 +      * electric.el (electric-indent-chars): Autoload.
 +      * progmodes/octave-mod.el (octave-mode):
 +      * progmodes/ruby-mode.el (ruby-mode): Take advantage of it.
 +      (ruby-mode-abbrev-table): Merge initialization and declaration.
 +
 +2010-10-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * abbrev.el (abbrev-mode): Remove one of the three definitions of this
 +      variable.
 +
 +      * server.el (server-host, server-port, server-auth-dir): Autoload risky.
 +
 +      * term/ns-win.el: Restore require of cl when compiling.
 +      (menu-bar-final-items): Remove non-existent `windows' menu.
 +      (ns-handle-nxopen): Optionally handle the temp-case.
 +      (ns-handle-nxopentemp): Just call ns-handle-nxopen.
 +      (ns-insert-file, ns-find-file): Use `pop'.
 +
 +2010-10-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/common-win.el (xw-defined-colors): Simplify the 'ns case.
 +
 +2010-10-26  Adrian Robert  <Adrian.B.Robert@gmail.com>
 +
 +      * term/ns-win.el (ns-new-frame, ns-show-prefs): Don't add to
 +      global map.
 +      * term/common-win.el (x-setup-function-keys): Remove most of the
 +      keymappings.  Comment on the remaining ones.
 +
 +2010-10-26  Peter Oliver  <p.d.oliver@mavit.org.uk>  (tiny change)
 +
 +      * server.el (server-port): New option.  (Bug#854)
 +      (server-start): Use server-port.
 +
 +2010-10-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/ns-win.el (ns-version-string): Remove unused declaration.
 +      (ns-invocation-args): Change to x-invocation-args.
 +      (ns-handle-switch, ns-handle-numeric-switch, ns-handle-iconic)
 +      (ns-handle-name-switch, ns-ignore-2-arg): Remove.
 +      (ns-handle-nxopen, ns-handle-nxopentemp, ns-ignore-1-arg):
 +      Use x-invocation-args instead of ns-invocation-args.
 +      (ns-initialize-window-system, handle-args-function-alist):
 +      Use x-handle-args instead of ns-handle-args.
 +      * term/common-win.el (x-handle-args): Also handle nextstep arguments.
 +      * startup.el (command-line-ns-option-alist): Replace
 +      ns-handle-name-switch, ns-handle-switch, ns-handle-numeric-switch,
 +      ns-handle-iconic with the x- equivalents.
 +
 +      * term/common-win.el (x-select-enable-clipboard):
 +      * term/pc-win.el (x-select-enable-clipboard): Doc fix.
 +
 +      * term/ns-win.el: No need to require cl when compiling.
 +      (x-display-name, x-setup-function-keys, x-select-text, x-colors)
 +      (xw-defined-colors): Use the common-win definitions.
 +      (ns-alternatives-map): Make it an obsolete alias for x-alternatives-map.
 +      (ns-handle-iconic): Make it an alias for x-handle-iconic.
 +      * term/common-win.el (x-select-text, x-alternatives-map)
 +      (x-setup-function-keys, x-colors, xw-defined-colors): Handle 'ns case.
 +      * loadup.el [ns]: Load common-win.
 +
 +2010-10-26  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-mail.el (epa-mail-encrypt): Handle local-part only
 +      recipients; expand mail aliases (Bug#7280).
 +
 +2010-10-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/common-win.el (x-handle-switch): Simplify with pop.
 +      Optionally handle numeric switches.
 +      (x-handle-numeric-switch): Just call x-handle-switch.
 +      (x-handle-initial-switch, x-handle-xrm-switch, x-handle-geometry)
 +      (x-handle-name-switch, x-handle-display, x-handle-args):
 +      Simplify with pop.
 +
 +      * term/ns-win.el: Do not require easymenu.
 +      (menu-bar-edit-menu) <copy, paste, paste-from-menu, separator-undo>:
 +      <spell>: Move adjustments to menu-bar.el.
 +      * menu-bar.el (menu-bar-edit-menu) <copy, paste, paste-from-menu>:
 +      <separator-undo, spell>: Move ns-win's adjustments here.
 +      * loadup.el [ns]: Do not load easymenu.
 +
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * image.el (image-checkbox-checked, image-checkbox-unchecked):
 +      Delete (Bug#7222).
 +
 +      * startup.el (fancy-startup-tail): Instead of using inline images,
 +      refer to image files from etc/.
 +
 +      * wid-edit.el (checkbox): Likewise.
 +      (widget-image-find): Center image specs.
 +
 +2010-10-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/ns-win.el (x-select-text): Doc fix.
 +      * w32-fns.el (x-alternatives-map, x-setup-function-keys)
 +      (x-select-text): Move to term/common-win.
 +      * term/w32-win.el (xw-defined-colors): Move to common-win.
 +      * term/x-win.el (xw-defined-colors, x-alternatives-map)
 +      (x-setup-function-keys, x-select-text): Move to common-win.
 +      * term/common-win.el (x-select-text, x-alternatives-map)
 +      (x-setup-function-keys, xw-defined-colors): Merge x- and w32-
 +      definitions here.
 +
 +2010-10-24  T.V. Raman  <tv.raman.tv@gmail.com>  (tiny change)
 +
 +      * net/mairix.el (mairix-searches-mode-map):
 +      * mail/mspools.el (mspools-mode-map): Fix 2010-10-10 change.
 +
 +2010-10-24  Michael McNamara  <mac@mail.brushroad.com>
  
        * verilog-mode.el (verilog-directive-re): Make this variable
        auto-built for efficiency of execution and updating.
        (verilog-calc-1): Fix for clocking block in modport
        declaration. Reported by Brian Hunter.
  
 -2010-10-23  Wilson Snyder  <wsnyder@wsnyder.org>
 +2010-10-24  Wilson Snyder  <wsnyder@wsnyder.org>
  
        * verilog-mode.el (verilog-auto-inst, verilog-gate-ios)
        (verilog-gate-keywords, verilog-read-sub-decls)
        (verilog-read-sub-decls-expr): Fix AUTOOUTPUT not detecting
        submodule connections with replications "{#{a},#{b}}".
  
 -2010-10-23  Glenn Morris  <rgm@gnu.org>
 -
 -      * comint.el (comint-password-prompt-regexp):
 -      Match "enter the password".  (Bug#7224)
 -
 -2010-10-22  Juanma Barranquero  <lekktu@gmail.com>
 +2010-10-24  Juanma Barranquero  <lekktu@gmail.com>
  
        * progmodes/dcl-mode.el (dcl-electric-reindent-regexps):
        Fix typo in docstring.
  
 -2010-10-21  Michael Albinus  <michael.albinus@gmx.de>
 -
 -      * net/tramp.el (tramp-get-inline-coding): Return `nil' in case of
 -      errors.
 -
 -      * net/trampver.el: Update release number.
 -
 -2010-10-20  Kenichi Handa  <handa@m17n.org>
 +2010-10-24  Kenichi Handa  <handa@m17n.org>
  
        * face-remap.el (text-scale-adjust): Call read-event with a proper
        prompt.
  
 -2010-10-19  Michael Albinus  <michael.albinus@gmx.de>
 -
 -      * net/tramp.el (tramp-do-file-attributes-with-stat)
 -      (tramp-do-directory-files-and-attributes-with-stat): Use "e0" in
 -      order to make stat results a float.  Patch by Andreas Schwab
 -      <schwab@linux-m68k.org>.
 -
 -2010-10-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
 -      * repeat.el (repeat): Use read-key (bug#6256).
 -
 -2010-10-18  Chong Yidong  <cyd@stupidchicken.com>
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * emacs-lisp/unsafep.el: Don't mark functions that display
        messages as safe.  Suggested by Johan Bockgård.
  
 -2010-10-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-10-24  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/regexp-opt.el (regexp-opt-group, regexp-opt-charset):
        Turn comments into docstrings.
        * minibuffer.el (completion--replace): Move point where it belongs
        when there's a common suffix (bug#7215).
  
 -2010-10-15  Michael Albinus  <michael.albinus@gmx.de>
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * net/tramp.el (tramp-open-connection-setup-interactive-shell):
 -      Suppress expansion of tabs to spaces.  Reported by Dale Sedivec
 -      <dale@codefu.org>.
 +      Merge read-color and facemenu-read-color (Bug#7242).
  
 -2010-10-15  Kenichi Handa  <handa@m17n.org>
 +      * faces.el (read-color): Use the completion code from
 +      facemenu-read-color.  Require match in completion.  Doc fix.
  
 -      * international/characters.el: Add category '|' (word breakable)
 -      to fullwidth characters.
 +      * facemenu.el (facemenu-read-color): Alias for read-color.
 +      (facemenu-set-foreground, facemenu-set-background): Use
 +      read-color.
  
 -2010-10-14  Kenichi Handa  <handa@m17n.org>
 +      * frame.el (set-background-color, set-foreground-color)
 +      (set-cursor-color, set-mouse-color, set-border-color): Use
 +      read-color.
  
 -      * mail/rmail.el (rmail-show-message-1): Catch an error of
 -      base64-decode-region and just show an error message (bug#7165).
 +2010-10-24  Leo  <sdl.web@gmail.com>
  
 -      * ps-mule.el (ps-mule-font-spec-list): Delete it.  Not used anymore.
 -      (ps-mule-begin-job): Fix for the case that only ENCODING is set in
 -      a font-spec (bug#7197).
 +      * eshell/em-unix.el (eshell-remove-entries): Use the TRASH
 +      argument of delete-file and delete-directory (Bug#7011).
  
 -2010-10-13  Glenn Morris  <rgm@gnu.org>
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * mail/emacsbug.el (report-emacs-bug): Mention debbugs.gnu.org.
 +      * emacs-lisp/package.el (package-menu-mode-map): Inherit from
 +      button-buffer-map.
  
 -2010-10-12  Juanma Barranquero  <lekktu@gmail.com>
 +2010-10-24  Ralf Angeli  <angeli@caeruleus.net>
  
 -      * international/mule.el (define-coding-system):
 -      * international/titdic-cnv.el (quail-cxterm-package-ext-info):
 -      * composite.el (compose-region): Fix typo in docstring.
 +      * emacs-lisp/package.el (package--generate-package-list): Make the
 +      *Packages* buffer read-only.
  
 -2010-10-10  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-10-24  Alan Mackenzie  <acm@muc.de>
  
 -      * term/ns-win.el (ns-right-alternate-modifier): New defvar.
 -      (ns-right-option-modifier): New alias for ns-right-alternate-modifier.
 -      (mac-right-option-modifier): New alias for ns-right-option-modifier.
 +      * progmodes/cc-fonts.el (c-font-lock-declarations): Cache the
 +      result of `c-beginning-of-decl-1' between invocations of a lambda
 +      function (Bug #7265).
  
 -      * cus-start.el (all): ns-right-alternate-modifier is new.
 +2010-10-24  Daiki Ueno  <ueno@unixuser.org>
  
 -2010-10-10  Andreas Schwab  <schwab@linux-m68k.org>
 +      * epg-config.el (epg-gpg-program): Try to use "gpg2" if "gpg"
 +      executable is not available on the system (Bug#7268).
  
 -      * Makefile.in (ELCFILES): Update.
 +2010-10-24  Glenn Morris  <rgm@gnu.org>
  
 -2010-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * select.el (selection-coding-system, next-selection-coding-system):
 +      Sync doc with C versions.
  
 -      * emacs-lisp/lisp.el (lisp-completion-at-point):
 -      Use emacs-lisp-mode-syntax-table for the whole function.
 +      * w32-vars.el (x-select-enable-clipboard):
 +      * term/x-win.el (x-select-enable-clipboard): Move to common-win.
 +      * term/common-win.el (x-select-enable-clipboard): Move here.
  
 -2010-10-09  Richard Sharman  <richard_sharman@mitel.com>  (tiny change)
 +      * term/tty-colors.el (tty-defined-color-alist): Remove duplicate
 +      definition of C variable.
  
 -      * progmodes/gdb-ui.el (gdb-mouse-toggle-breakpoint-margin)
 -      (gdb-mouse-toggle-breakpoint-fringe): Correct regexp to
 -      work when breakpoint number exceeds nine.
 +      * frame.el (show-trailing-whitespace, auto-hscroll-mode)
 +      (display-hourglass, hourglass-delay, cursor-in-non-selected-windows):
 +      Don't redefine things that are defined in C.
 +      * cus-start.el: Also handle :risky, :safe, :set, and :tag.
 +      (show-trailing-whitespace, auto-hscroll-mode)
 +      (display-hourglass, hourglass-delay, cursor-in-non-selected-windows):
 +      Set up the appropriate custom properties.
  
 -2010-10-05  David Koppelman  <koppel@ece.lsu.edu>
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * hi-lock.el (hi-lock-font-lock-hook): Check font-lock-fontified
 -      instead of font-lock-mode before adding keywords.
 -      Remove hi-lock-mode off code.  Remove inhibit hack.
 -      (hi-lock-set-pattern): Only add keywords if font-lock-fontified
 -      non-nil; removed hook inhibit hack.
 +      Bind "C-c ]" to ...
 +      * progmodes/f90.el (f90-mode-map): ... f90-insert-end.
 +      * nxml/nxml-mode.el (nxml-mode-map): ... nxml-finish-element.
 +      * textmodes/tex-mode.el (tex-mode-map): ... latex-close-block.
 +      * textmodes/sgml-mode.el (sgml-mode-map): ... sgml-close-tag.
  
 -2010-10-09  Glenn Morris  <rgm@gnu.org>
 +2010-10-23  Glenn Morris  <rgm@gnu.org>
  
 -      * emacs-lisp/shadow.el (find-emacs-lisp-shadows): Rename it...
 -      (load-path-shadows-find): ... to this.
 -      (list-load-path-shadows): Update for above change.
 +      * textmodes/flyspell.el (flyspell-mode): If there was an error,
 +      say what it was.
  
 -      * mail/mail-utils.el (mail-mbox-from): Also try return-path.
 +      * frame.el (auto-hscroll-mode, cursor-in-non-selected-windows):
 +      Sync docs with C version.
  
 -2010-10-08  Glenn Morris  <rgm@gnu.org>
 +      * term/ns-win.el (xw-defined-colors):
 +      * term/x-win.el (xw-defined-colors): Make docs identical to w32-win.
  
 -      * emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/.
 +      * term/pc-win.el (x-select-enable-clipboard):
 +      * term/x-win.el (x-select-enable-clipboard):
 +      * w32-vars.el (x-select-enable-clipboard): Make doc-strings identical.
  
 -      * emacs-lisp/shadow.el (lisp-shadow): Change prefix.
 -      (shadows-compare-text-p): Make it an obsolete alias for...
 -      (load-path-shadows-compare-text): ... new name.
 -      (find-emacs-lisp-shadows): Update for above name change.
 -      (load-path-shadows-same-file-or-nonexistent): New name for the old
 -      shadow-same-file-or-nonexistent.
 +      * comint.el (comint-password-prompt-regexp): Make it less vague.
 +      Bump version.
  
 -2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
 +      * help-fns.el (doc-file-to-man, doc-file-to-info): New commands.
  
 -      * minibuffer.el (completion--some, completion--do-completion)
 -      (minibuffer-complete-and-exit, minibuffer-completion-help)
 -      (completion-basic-try-completion)
 -      (completion-basic-all-completions)
 -      (completion-pcm--find-all-completions): Use lexical-let to
 -      avoid some false matches in variable completion (Bug#7056)
 +      * help.el (finder-by-keyword): Remove unnecessary autoload.
  
 -2010-10-03  Olof Ohlsson Sax  <olof.ohlsson.sax@gmail.com>  (tiny change)
 +2010-10-22  Glenn Morris  <rgm@gnu.org>
  
 -      * vc-svn.el (vc-svn-merge-news): Use --non-interactive.  (Bug#7152)
 +      * loadup.el: Unconditionally load float-sup.
 +      * paren.el (show-paren-delay):
 +      * emacs-lisp/float-sup.el:
 +      * emulation/cua-base.el (cua-prefix-override-inhibit-delay):
 +      * obsolete/lazy-lock.el (lazy-lock-defer-time, lazy-lock-stealth-nice)
 +      (lazy-lock-stealth-verbose): Assume float support.
 +      * ps-print.el: Assume float support on Emacs.
 +      * emacs-lisp/timer.el (timer-next-integral-multiple-of-time):
 +      Remove non-float branch.
  
 -2010-10-03  Leo  <sdl.web@gmail.com>
 +      * emacs-lisp/autoload.el (batch-update-autoloads): Update for
 +      src/Makefile no longer being pre-processed.
  
 -      * dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only
 -      return non-nil if the file exists (Bug#7090).
 +2010-10-22  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-09-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/find-func.el (find-library): Use test-completion.
  
 -      * minibuffer.el (completion--replace):
 -      Better preserve markers (bug#7138).
 +2010-10-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -2010-09-29  Juanma Barranquero  <lekktu@gmail.com>
 +      * newcomment.el (comment-dwim): Fix the intentation in the doc string.
  
 -      * server.el (server-process-filter): Doc fix.
 +010-10-21  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-09-27  Drew Adams  <drew.adams@oracle.com>
 +      * net/tramp-sh.el (tramp-do-file-attributes-with-stat): Do not use
 +      space in stat format string.
 +      (tramp-send-command): Unset $PS1 when using here documents, in
 +      order not to get several prompts.
 +      (tramp-get-inline-coding): Return `nil' in case of errors.
  
 -      * dired.el (dired-save-positions): Doc fix.  (Bug#7119)
 +2010-10-21  Daiki Ueno  <ueno@unixuser.org>
  
 -2010-09-27  Andreas Schwab  <schwab@linux-m68k.org>
 +      * hexl.el (hexl-mode, hexl-mode-exit):
 +      Tweak revert-buffer-function to inhibit auto-mode-alist (Bug#7252).
 +      (hexl-revert-buffer-function): New function.
 +      (hexl-before-revert-hook, hexl-after-revert-hook): Abolish.
  
 -      * Makefile.in (ELCFILES): Update.
 +2010-10-19  Alan Mackenzie  <acm@muc.de>
  
 -      * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
 -      Avoid infinite recursion on erroneous lambda form.  (Bug#7114)
 +      * progmodes/cc-langs.el (c-type-decl-prefix-key): C++ bit:
 +      Move "\(const\|throw\|volatile\)\>" nearer the start of the regexp, so
 +      that these keywords aren't wrongly matched as identifiers.
  
 -2010-09-27  Kenichi Handa  <handa@m17n.org>
 +      * progmodes/cc-mode.el (c-before-change, c-after-change): Move the
 +      setting of c-new-BEG and c-new-END from c-before-change to
 +      c-after-change.  (Bug#7181)
  
 -      * tar-mode.el (tar-header-block-tokenize): Decode filenames in
 -      "ustar" format.
 +2010-10-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-09-27  Kenichi Handa  <handa@m17n.org>
 +      * cus-face.el (custom-theme-set-faces): Revert 2010-10-18 change.
 +      Don't mark as safe.
  
 -      * international/mule.el (define-coding-system): Docstring fixed.
 +      * custom.el (custom-theme-set-variables): Likewise.
 +      (load-theme): Add custom-theme-set-faces and
 +      custom-theme-set-variables to safe-functions while loading.
 +      (custom-enabled-themes): Mark as risky.
  
 -      * international/mule-diag.el (describe-character-set): Use princ
 -      with proper print-length and print-level instead of insert.
 +2010-10-18  Julien Danjou  <julien@danjou.info>
  
 -2010-09-26  Juanma Barranquero  <lekktu@gmail.com>
 +      * bindings.el: Remove end dashes in default mode-line-format.
  
 -      * window.el (walk-windows): Doc fix (bug#7105).
 +2010-10-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-09-23  Glenn Morris  <rgm@gnu.org>
 +      * bindings.el (global-map): Bind C-d to delete-char and deletechar
 +      to delete-forward-char.
  
 -      * isearch.el (isearch-lazy-highlight-cleanup)
 -      (isearch-lazy-highlight-initial-delay)
 -      (isearch-lazy-highlight-interval)
 -      (isearch-lazy-highlight-max-at-a-time, isearch-lazy-highlight-face):
 -      * net/net-utils.el (ipconfig-program-options):
 -      Move aliases to options before the associated definitions.
 +      * simple.el (normal-erase-is-backspace-mode): Remap delete to
 +      deletechar, and hence delete-forward-char.
  
 -2010-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * newcomment.el (comment-normalize-vars): Better test validity of
 -      comment-end-skip.
 +      * repeat.el (repeat): Use read-key (bug#6256).
  
 -2010-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-10-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * emacs-lisp/float-sup.el (float-pi): New name for `pi'.
 -      (float-e): New name for `e'.
 -      (degrees-to-radians, radians-to-degrees):
 -      * calendar/solar.el (solar-longitude):
 -      * calculator.el (calculator-registers, calculator-funcall):
 -      * textmodes/artist.el (artist-spray-random-points):
 -      * play/bubbles.el (bubbles--initialize-images): Use new names.
 +      * emacs-lisp/unsafep.el: Don't mark functions that display
 +      messages as safe.  Suggested by Johan Bockgård.
  
 -2010-09-19  Eric M. Ludlam  <zappo@gnu.org>
 +2010-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      Update to CEDET 1.0's version of EIEIO.
 +      * minibuffer.el (completion--replace): Move point where it belongs
 +      when there's a common suffix (bug#7215).
  
 -      * emacs-lisp/eieio.el (eieio-specialized-key-to-generic-key):
 -      New function.
 -      (eieio-defmethod, eieio-generic-form, eieio-generic-call): Use it.
 -      (eieio-default-eval-maybe): Eval val instead of unquoting only.
 -      (class-precedence-list): If class is nil, return nil.
 -      (eieio-generic-call): If class of first input arg is nil, don't
 -      look up static methods, and do check for primary methods.
 -      (initialize-instance): See if the default needs to be evaluated
 -      during the constructor.
 -      (eieio-perform-slot-validation-for-default): Don't do the check
 -      for values that will eventually be evaluated.
 -      (eieio-eval-default-p): New function.
 -      (eieio-default-eval-maybe): Use it.
 +2010-10-19  Kenichi Handa  <handa@m17n.org>
  
 -2010-07-03  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +      * international/characters.el: Add category '|' (word breakable)
 +      to fullwidth characters.
  
 -      * emacs-lisp/eieio.el (eieio-defclass): Allow :c3
 -      method-invocation-order.
 -      (eieio-c3-candidate, eieio-c3-merge-lists): New functions.
 -      (eieio-class-precedence-dfs): Compute class precedence list using
 -      dfs algorithm.
 -      (eieio-class-precedence-bfs): Compute class precedence list using
 -      bfs algorithm.
 -      (eieio-class-precedence-c3): Compute class precedence list using
 -      c3 algorithm.
 -      (class-precedence-list): New function.
 -      (eieiomt-method-list, eieiomt-sym-optimize): Use it.
 -      (inconsistent-class-hierarchy): New error symbol.
 -      (call-next-method): Stow the replacement argument list for future
 -      call-next-method invocations.
 +2010-10-19  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-09-15  Glenn Morris  <rgm@gnu.org>
 +      * net/tramp-sh.el (tramp-do-file-attributes-with-stat)
 +      (tramp-do-directory-files-and-attributes-with-stat): Use "e0" in
 +      order to make stat results a float.  Patch by Andreas Schwab
 +      <schwab@linux-m68k.org>.
  
 -      * calendar/appt.el (appt-check): If not displaying the diary,
 -      use (diary 1) to only get the entries we need.
 -      (appt-make-list): Sort diary-list-entries, if we cannot guarantee
 -      that it is in day order.  (Bug#7019)
 +2010-10-18  Julien Danjou  <julien@danjou.info>
  
 -      * calendar/appt.el (appt-check): Rather than showing the diary,
 -      just turn off invisible display, and only if needed.
 +      * avoid.el (mouse-avoidance-ignore-p): Ignore mouse when it is
 +      hidden by `make-pointer-invisible'.
  
 -      * calendar/diary-lib.el (diary-list-entries): Doc fix.  (Bug#7019)
 +2010-10-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * files.el (locate-file-completion-table): Strip non-matching elements
 +      before checking length of list (bug#7238).
  
 -      * emacs-lisp/byte-run.el (set-advertised-calling-convention):
 -      Add `when' argument.  Update callers.
 +2010-10-18  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * subr.el (unintern): Declare the obarray arg mandatory.
 +      * custom.el (custom-theme-set-variables): Mark as a safe function.
 +      (load-theme): Check forms using unsafep.
 +
 +      * cus-face.el (custom-theme-set-faces): Mark as a safe function.
 +
 +2010-10-17  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-aspell-find-dictionary):
 +      Fix aspell data file searching (bug#7230).
 +
 +2010-10-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-theme.el (custom-theme--migrate-settings): New var.
 +      (customize-create-theme): Allow editing the `user' theme.
 +      (custom-theme-add-variable, custom-theme-add-var-1)
 +      (custom-theme-add-face, custom-theme-add-face-1): Add a checkbox
 +      to the front of each variable or face widget.
 +      (custom-theme-write): Save theme settings in the correct order.
 +      Optionally, remove saved settings from user customizations.
 +      (custom-theme-write-variables, custom-theme-write-faces):
 +      Save only the checked widgets.
 +      (customize-themes): Add a link for migrating custom settings.
 +
 +      * custom.el (custom-declare-theme, provide-theme):
 +      Use custom-theme-name-valid-p.
 +      (custom-theme-name-valid-p): Remove checks that are now
 +      unnecessary since themes no longer obey load-path.
 +
 +      * cus-edit.el (custom-variable-value-create): For the simple
 +      style, hide documentation string when hidden.
 +
 +2010-10-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-variable, custom-face): Combine the
 +      :inhibit-magic and :display-style properties into a single
 +      :custom-style property.
 +      (custom-toggle-hide-variable, custom-toggle-hide-face):
 +      New functions.  If hiding an edited value, save it to :shown-value.
 +      (custom-variable-value-create, custom-face-value-create): Use them.
 +      (custom-magic-reset): Allow magic property to be unset.
 +
 +      * custom.el: Custom themes no longer use load-path.
 +      (custom-theme-load-path): New option.  Change built-in theme
 +      directory to etc/.
 +      (custom-enabled-themes): Add custom-theme-load-path dependency.
 +      (custom-theme--load-path): New function.
 +      (load-theme, custom-available-themes): Use it.
 +
 +      * cus-theme.el (describe-theme-1): Use custom-theme--load-path.
 +      (customize-themes): Link to custom-theme-load-path variable.
 +      (custom-theme-add-var-1, custom-theme-add-face-1): Use the
 +      :custom-style property.
 +
 +      * themes/*.el: Moved to etc/.
 +
 +2010-10-16  Ralf Angeli  <angeli@caeruleus.net>
 +
 +      * textmodes/reftex-cite.el
 +      (reftex-extract-bib-entries-from-thebibliography): Do not move
 +      point when searching for \bibitem entries.  Match entries with
 +      spaces or tabs in front of arguments.
 +
 +2010-10-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-theme.el (customize-create-theme): Delete overlays after
 +      erasing.  If given a THEME arg, display only the faces of that arg
 +      instead of custom-theme--listed-faces.
 +      (custom-theme-variable-menu, custom-theme-variable-action)
 +      (custom-variable-reset-theme, custom-theme-delete-variable): Delete.
 +      (custom-theme-add-variable, custom-theme-add-face): Apply value
 +      from the theme settings, instead of the current value.
 +      (custom-theme-add-var-1, custom-theme-add-face-1): New functions.
 +      (custom-theme-visit-theme): Allow calling outside theme buffers.
 +      (custom-theme-merge-theme): Don't enable the theme when merging.
 +      (custom-theme-write-variables, custom-theme-write-faces): Use the
 +      :shown-value properties to save buffer values, not global ones.
 +      (customize-themes): Display a warning about user customizations.
 +
 +      * cus-edit.el (custom-variable-value-create)
 +      (custom-face-value-create): Obey new special properties
 +      :shown-value and :inhibit-magic.
  
 -2010-09-14  Glenn Morris  <rgm@gnu.org>
 +2010-10-15  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * calendar/diary-lib.el (diary-list-entries-hook, diary-sort-entries):
 -      Doc fixes.
 +      * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
 +      Suppress expansion of tabs to spaces.  Reported by Dale Sedivec
 +      <dale@codefu.org>.
  
 -      * calendar/diary-lib.el (diary-included-files): New variable.
 -      (diary-list-entries): Maybe initialize diary-included-files.
 -      (diary-include-other-diary-files): Append to diary-included-files.
 -      * calendar/appt.el (appt-update-list): Also check the members of
 -      diary-included-files.  (Bug#6999)
 -      (appt-check): Doc fix.
 +2010-10-14  Kenichi Handa  <handa@m17n.org>
  
 -2010-09-12  David Reitter  <david.reitter@gmail.com>
 +      * mail/rmail.el (rmail-show-message-1): Catch an error of
 +      base64-decode-region and just show an error message (bug#7165).
  
 -      * simple.el (line-move-visual): Do not truncate goal column to
 -      integer size.  (Bug#7020)
 +      * ps-mule.el (ps-mule-font-spec-list): Delete it.  Not used anymore.
 +      (ps-mule-begin-job): Fix for the case that only ENCODING is set in
 +      a font-spec (bug#7197).
  
 -2010-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-10-14  Glenn Morris  <rgm@gnu.org>
  
 -      * repeat.el (repeat): Allow repeating when the last event is a click.
 -      Suggested by Drew Adams (bug#6256).
 +      * mail/emacsbug.el (report-emacs-bug): Mention debbugs.gnu.org.
  
 -2010-09-11  Sascha Wilde  <wilde@sha-bang.de>
 +2010-10-14  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * vc/vc-hg.el (vc-hg-state,vc-hg-working-revision):
 -      Replace setting HGRCPATH to "" by some less invasive --config options.
 +      * international/mule.el (define-coding-system):
 +      * international/titdic-cnv.el (quail-cxterm-package-ext-info):
 +      * composite.el (compose-region): Fix typo in docstring.
  
 -2010-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-10-14  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * font-lock.el (font-lock-beginning-of-syntax-function):
 -      Mark as obsolete.
 +      * cus-face.el (custom-theme-set-faces): Call custom-push-theme
 +      only after checking the theme-face property.
  
 -2010-09-10  Glenn Morris  <rgm@gnu.org>
 +      * faces.el (face-spec-reset-face): Reset all attributes in one
 +      single call to set-face-attribute.
 +      (face-spec-match-p): Make it a defsubst.
 +      (frame-set-background-mode): New arg KEEP-FACE-SPECS.
 +      (x-create-frame-with-faces, tty-create-frame-with-faces)
 +      (tty-set-up-initial-frame-faces): Don't recompute face specs in
 +      frame-set-background-mode, since they are recomputed immediately
 +      afterwards in face-set-after-frame-default.
 +      (face-set-after-frame-default): Minor optimization.
 +      (cursor): Provide non-trivial defface spec.
  
 -      * menu-bar.el (menu-bar-options-save): Fix handling of menu-bar
 -      and tool-bar modes.  (Bug#6211)
 -      (menu-bar-mode): Move setting of standard-value after the
 -      minor-mode definition, otherwise it seems to have no effect.
 +      * custom.el (custom-theme-recalc-face): Simplify.
  
 -2010-09-08  Masatake YAMATO  <yamato@redhat.com>
 +2010-10-14  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -      * progmodes/antlr-mode.el (antlr-font-lock-additional-keywords):
 -      Fix typo.  (Bug#6976)
 +      * calc/calc-alg.el (math-var): Rename from `var'.
 +      (math-is-polynomial, math-is-poly-rec): Replace `var'
 +      with `math-var'.
  
 -2010-09-06  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +      * calc/calcalg2.el (math-var): Rename from `var'.
 +      (calcFunc-table, math-scan-for-limits): Replace `var'
 +      with `math-var'.
  
 -      * whitespace.el: Allow cleaning up blanks without blank
 -      visualization (Bug#6651).  Adjust help window for
 -      whitespace-toggle-options (Bug#6479).  Allow to use fill-column
 -      instead of whitespace-line-column (from EmacsWiki).  New version 13.1.
 -      (whitespace-style): Add new value 'face.  Adjust docstring.
 -      (whitespace-space, whitespace-hspace, whitespace-tab):
 -      Adjust foreground property face.
 -      (whitespace-line-column): Adjust docstring and type declaration.
 -      (whitespace-style-value-list, whitespace-toggle-option-alist)
 -      (whitespace-help-text): Adjust const initialization.
 -      (whitespace-toggle-options, global-whitespace-toggle-options):
 -      Adjust docstring.
 -      (whitespace-display-window, whitespace-interactive-char)
 -      (whitespace-style-face-p, whitespace-color-on): Adjust code.
 -      (whitespace-help-scroll): New fun.
 +2010-10-13  Glenn Morris  <rgm@gnu.org>
  
 -2010-09-05  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +      * subr.el (last): Deal with dotted lists (reported in bug#7174).
  
 -      * files.el (directory-abbrev-alist): Use \` as default regexp.
 +2010-10-13  Stephen Berman  <stephen.berman@gmx.net>
  
 -      * emacs-lisp/rx.el (rx-any): Don't explode ranges that end in special
 -      chars like - or ] (bug#6984).
 -      (rx-any-condense-range): Explode 2-char ranges.
 +      * subr.el (last): Use `safe-length' instead of `length' (bug#7206).
  
 -2010-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-10-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * textmodes/bibtex.el:
 -      * proced.el: Update to new email for Roland Winkler <winkler@gnu.org>.
 +      * net/tls.el (tls-program): Remove spurious %s from openssl.
 +      (tls-starttls-switches): Remove starttls hack.
 +      (open-tls-stream): Ditto.
 +      (tls-find-starttls-argument): Ditto.
  
 -2010-09-02  Glenn Morris  <rgm@gnu.org>
 +2010-10-13  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * desktop.el (desktop-path): Bump :version after 2009-09-15 change.
 +      * image.el (image-library-alist): Declare as obsolete alias.
 +      (image-type-available-p): Use `dynamic-library-alist'.
  
 -2010-08-31  Kenichi Handa  <handa@m17n.org>
 +      * term/w32-win.el (dynamic-library-alist):
 +      Use instead of `image-library-alist'.
  
 -      * international/mule-cmds.el (standard-display-european-internal):
 -      Setup standard-display-table for 8-bit characters by storing 8-bit
 -      characters in the element vector.
 +2010-10-13  IRIE Shinsuke  <irieshinsuke@yahoo.co.jp>  (tiny change)
  
 -      * disp-table.el (standard-display-8bit):
 -      Setup standard-display-table for 8-bit characters by storing 8-bit
 -      characters in the element vector.
 -      (standard-display-european): Likewise.
 +      * subr.el (last): Make it faster.  (Bug#7174)
  
 -2010-08-26  Michael Albinus  <michael.albinus@gmx.de>
 +2010-10-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>  (tiny change)
  
 -      Sync with Tramp 2.1.19.
 +      * Makefile.in (compile-clean): Use `` instead of $().  (Bug#7178)
  
 -      * net/tramp-cmds.el (tramp-cleanup-all-connections)
 -      (tramp-reporter-dump-variable, tramp-load-report-modules)
 -      (tramp-append-tramp-buffers): Use `tramp-compat-funcall'.
 -      (tramp-bug): Recommend setting of `tramp-verbose' to 9.
 +2010-10-12  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * net/tramp-compat.el (top): Do not autoload
 -      `tramp-handle-file-remote-p'.  Load tramp-util.el and tramp-vc.el
 -      only when `start-file-process' is not bound.
 -      (byte-compile-not-obsolete-vars): Define if not bound.
 -      (tramp-compat-funcall): New defmacro.
 -      (tramp-compat-line-beginning-position)
 -      (tramp-compat-line-end-position)
 -      (tramp-compat-temporary-file-directory)
 -      (tramp-compat-make-temp-file, tramp-compat-file-attributes)
 -      (tramp-compat-copy-file, tramp-compat-copy-directory)
 -      (tramp-compat-delete-file, tramp-compat-delete-directory)
 -      (tramp-compat-number-sequence, tramp-compat-process-running-p):
 -      Use it.
 -      (tramp-advice-file-expand-wildcards): Do not use
 -      `tramp-handle-file-remote-p'.
 -      (tramp-compat-make-temp-file): Simplify fallback implementation.
 -      (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 -      (tramp-compat-copy-tree): Remove function.
 -      (tramp-compat-delete-file): New defun.
 -      (tramp-compat-delete-directory): Provide implementation for older
 -      Emacsen.
 -      (tramp-compat-file-attributes): Handle only
 -      `wrong-number-of-arguments' error.
 +      * cus-theme.el (custom-theme--listed-faces): Add cursor face.
 +      (describe-theme-1): Extract doc from unloaded themes.
  
 -      * net/tramp-fish.el (tramp-fish-handle-copy-file):
 -      Add PRESERVE_SELINUX_CONTEXT.
 -      (tramp-fish-handle-delete-file): Add TRASH arg.
 -      (tramp-fish-handle-directory-files-and-attributes):
 -      Do not use `tramp-fish-handle-file-attributes.
 -      (tramp-fish-handle-file-local-copy)
 -      (tramp-fish-handle-insert-file-contents)
 -      (tramp-fish-maybe-open-connection): Use `with-progress-reporter'.
 +      * custom.el (custom-theme-name-valid-p): Don't list color-themes.
  
 -      * net/tramp-gvfs.el (top): Require url-util.
 -      (tramp-gvfs-mount-point): Remove.
 -      (tramp-gvfs-file-name-handler-alist): Add `file-selinux-context'
 -      and `set-file-selinux-context'.
 -      (tramp-gvfs-stringify-dbus-message, tramp-gvfs-send-command)
 -      (tramp-gvfs-handle-file-selinux-context)
 -      (tramp-gvfs-handle-set-file-selinux-context): New defuns.
 -      (with-tramp-dbus-call-method): Format trace message.
 -      (tramp-gvfs-handle-copy-file): Handle PRESERVE-SELINUX-CONTEXT.
 -      (tramp-gvfs-handle-copy-file, tramp-gvfs-handle-rename-file):
 -      Implement backup call, when operation on local files fails.
 -      Use progress reporter.  Flush properties of changed files.
 -      (tramp-gvfs-handle-delete-file): Add TRASH arg.
 -      Use `tramp-compat-delete-file'.
 -      (tramp-gvfs-handle-expand-file-name): Expand "~/".
 -      (tramp-gvfs-handle-make-directory): Make more traces.
 -      (tramp-gvfs-handle-write-region): Protect deleting tmpfile.
 -      (tramp-gvfs-url-file-name): Hexify file name in url.
 -      (tramp-gvfs-fuse-file-name): Take also prefix (like dav shares)
 -      into account for the resulting file name.
 -      (tramp-gvfs-handler-askquestion): Preserve current message, in
 -      order to let progress reporter continue afterwards.  (Bug#6257)
 -      Return dummy mountpoint, when the answer is "no".
 -      See `tramp-gvfs-maybe-open-connection'.
 -      (tramp-gvfs-handler-mounted-unmounted)
 -      (tramp-gvfs-connection-mounted-p): Test also for new mountspec
 -      attribute "default_location".  Set "prefix" property.
 -      Handle default-location.
 -      (tramp-gvfs-mount-spec): Return both prefix and mountspec.
 -      (tramp-gvfs-maybe-open-connection): Test, whether mountpoint
 -      exists.  Raise an error, if not (due to a corresponding answer
 -      "no" in interactive questions, for example).
 -      Use `tramp-compat-funcall'.
 +      * themes/tango-theme.el:
 +      * themes/tango-dark-theme.el:
 +      * themes/wheatgrass-theme.el: New files.
  
 -      * net/tramp-imap.el (top): Autoload `epg-make-context'.
 -      (tramp-imap-handle-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 -      (tramp-imap-do-copy-or-rename-file)
 -      (tramp-imap-handle-insert-file-contents)
 -      (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'.
 -      (tramp-imap-handle-delete-file): Add TRASH arg.
 +2010-10-12  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * net/tramp-smb.el (tramp-smb-handle-copy-file):
 -      Add PRESERVE-SELINUX-CONTEXT.
 -      (tramp-smb-handle-copy-file)
 -      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 -      (tramp-smb-handle-write-region, tramp-smb-maybe-open-connection):
 -      Use `with-progress-reporter'.
 -      (tramp-smb-handle-delete-file): Add TRASH arg.
 +      * cus-theme.el (describe-theme, customize-themes)
 +      (custom-theme-save): New commands.
 +      (custom-new-theme-mode-map): Bind C-x C-s.
 +      (custom-new-theme-mode): Use custom--initialize-widget-variables.
 +      (customize-create-theme): New optional arg THEME.
 +      (custom-theme-revert): Use it.
 +      (custom-theme-visit-theme): Remove dead code.
 +      (custom-theme-merge-theme): Use custom-available-themes.
 +      (custom-theme-write): Make interactive.
 +      (custom-theme-write): Use custom-theme-name-valid-p.
 +      (describe-theme-1, custom-theme-choose-revert)
 +      (custom-theme-checkbox-toggle, custom-theme-selections-toggle):
 +      New funs.
 +      (custom-theme-allow-multiple-selections): New option.
 +      (custom-theme-choose-mode): New major mode.
  
 -      * net/tramp.el (tramp-methods): Move hostname to the end in all
 -      ssh `tramp-login-args'.  Add `tramp-async-args' attribute where
 -      appropriate.
 -      (tramp-verbose): Describe verbose level 9.
 -      (tramp-completion-function-alist)
 -      (tramp-file-name-regexp, tramp-chunksize)
 -      (tramp-local-coding-commands, tramp-remote-coding-commands)
 -      (with-connection-property, tramp-completion-mode-p)
 -      (tramp-action-process-alive, tramp-action-out-of-band)
 -      (tramp-check-for-regexp, tramp-file-name-p, tramp-equal-remote)
 -      (tramp-exists-file-name-handler): Fix docstring.
 +      * custom.el (custom-theme-set-variables): Remove dead code.
 +      Obey custom--inhibit-theme-enable.
 +      (custom--inhibit-theme-enable): New var.
 +      (provide-theme): Obey it.
 +      (load-theme): Replace load with manual read/eval, in order to
 +      check for correctness.  Use custom-theme-name-valid-p.
 +      (custom-theme-name-valid-p): New function.
 +      (custom-available-themes): Use it.
 +
 +      * cus-edit.el (custom--initialize-widget-variables): New function.
 +      (Custom-mode): Use it.
 +
 +      * cus-face.el (custom-theme-set-faces): Remove dead code.
 +      Obey custom--inhibit-theme-enable.
 +
 +      * help-mode.el (help-theme-def, help-theme-edit): New buttons.
 +
 +2010-10-12  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * net/telnet.el (telnet-mode-map): Fix previous change (bug#7193).
 +
 +2010-10-12  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * term/ns-win.el (ns-right-alternate-modifier): New defvar.
 +      (ns-right-option-modifier): New alias for ns-right-alternate-modifier.
 +      (mac-right-option-modifier): New alias for ns-right-option-modifier.
 +
 +      * cus-start.el (all): ns-right-alternate-modifier is new.
 +
 +2010-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/lisp.el (lisp-completion-at-point):
 +      Use emacs-lisp-mode-syntax-table for the whole function.
 +
 +2010-10-12  David Koppelman  <koppel@ece.lsu.edu>
 +
 +      * hi-lock.el (hi-lock-font-lock-hook): Check font-lock-fontified
 +      instead of font-lock-mode before adding keywords.
 +      Remove hi-lock-mode off code.  Remove inhibit hack.
 +      (hi-lock-set-pattern): Only add keywords if font-lock-fontified
 +      non-nil; removed hook inhibit hack.
 +
 +2010-10-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/shadow.el (find-emacs-lisp-shadows): Rename it...
 +      (load-path-shadows-find): ... to this.
 +      (list-load-path-shadows): Update for above change.
 +
 +      * mail/mail-utils.el (mail-mbox-from): Also try return-path.
 +
 +2010-10-11  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mail/hashcash.el, net/imap.el, pgg-parse.el, pgg.el:
 +      Fix comment for declare-function.
 +
 +2010-10-11  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.el (custom-fix-face-spec): New function; code moved from
 +      custom-face-edit-fix-value.
 +      (custom-push-theme): Use it when checking if a face has been
 +      changed outside customize.
 +      (custom-available-themes): New function.
 +      (load-theme): Use it.
 +
 +      * cus-edit.el (custom-face-edit-fix-value): Use custom-fix-face-spec.
 +
 +      * custom.el (custom-push-theme): Cleanup (use cond).
 +      (disable-theme): Recompute the saved-face property.
 +      (custom-theme-recalc-face): Follow face alias before setting prop.
 +
 +      * image.el (image-checkbox-checked, image-checkbox-unchecked):
 +      New variables, containing checkbox images.
 +
 +      * startup.el (fancy-startup-tail):
 +      * wid-edit.el (checkbox): Use them.
 +
 +2010-10-10  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * shell.el (shell-mode-map):
 +      * progmodes/modula2.el (m2-mode-map):
 +      * progmodes/inf-lisp.el (inferior-lisp-mode-map):
 +      * play/mpuz.el (mpuz-mode-map):
 +      * play/landmark.el (lm-mode-map):
 +      * play/decipher.el (decipher-mode-map):
 +      * play/5x5.el (5x5-mode-map):
 +      * net/telnet.el (telnet-mode-map):
 +      * net/quickurl.el (quickurl-list-mode-map):
 +      * net/mairix.el (mairix-searches-mode-map):
 +      * net/eudc-hotlist.el (eudc-hotlist-mode-map):
 +      * net/dig.el (dig-mode-map):
 +      * mail/mspools.el (mspools-mode-map):
 +      * hexl.el (hexl-mode-map):
 +      * emulation/ws-mode.el (wordstar-C-k-map, wordstar-mode-map)
 +      (wordstar-C-o-map, wordstar-C-q-map):
 +      * emacs-lisp/edebug.el (edebug-eval-mode-map):
 +      * emacs-lisp/chart.el (chart-map):
 +      * edmacro.el (edmacro-mode-map):
 +      * erc/erc-list.el (erc-list-menu-mode-map):
 +      * array.el (array-mode-map): Declare and define in one step.
 +
 +      * vc/log-view.el (log-view-mode-map): Bind revert-buffer.
 +
 +2010-10-10  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.el (epa-passphrase-callback-function): Display filename
 +      passed as the 3rd arg.
 +      * epa-file.el (epa-file-passphrase-callback-function):
 +      Pass filename to epa-passphrase-callback-function.
 +
 +2010-10-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-face-widget-to-spec)
 +      (custom-face-get-current-spec, custom-face-state): New functions.
 +      (custom-face-set, custom-face-mark-to-save)
 +      (custom-face-value-create, custom-face-state-set): Use them.
 +
 +      * cus-theme.el (custom-theme--listed-faces): New var.
 +      (customize-create-theme): Use *Custom Theme* as the buffer name.
 +      Set revert-buffer-function.  Optional arg BUFFER.  Insert all
 +      faces listed in custom-theme--listed-faces.
 +      (custom-theme-revert): New function.
 +      (custom-theme-add-variable, custom-theme-add-face): Insert at the
 +      bottom of the list.
 +      (custom-theme-write): Prompt for theme name if empty.
 +      (custom-theme-write-variables): Use dolist.
 +      (custom-theme-write-faces): Handle hidden (collapsed) widgets.
 +
 +2010-10-09  Alan Mackenzie  <acm@muc.de>
 +
 +      Enhance fontification of declarators to take account of the
 +      presence/absence of "typedef".
 +
 +      * cc-engine.el (c-forward-type): New &optional param
 +      "brace-block-too".
 +      (c-forward-decl-or-cast-1): cdr of return value now indicates the
 +      presence of either or both of a "struct"-like keyword and "typedef".
 +
 +      * cc-fonts.el (c-complex-decl-matchers): Remove the heuristic
 +      fontification of declarators which follow a "}".
 +      (c-font-lock-declarations): Fontify declarators according to the
 +      presence/absence of "typedef".
 +
 +      * cc-langs.el (c-typedef-kwds c-typedef-key): New lang variable
 +      for "typedef".
 +      (c-typedef-decl-key): New lang variable built from
 +      c-typedef-decl-kwds.
 +
 +2010-10-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * ibuffer.el (ibuffer-mode-map): Don't redefine the cursor keys,
 +      since that's too annoying.  Move the filter groups commands to
 +      TAB/backtab.
 +
 +      * epa.el (epa-passphrase-callback-function): Say what we're
 +      querying the password for.
 +
 +      * ibuffer.el (ibuffer-visit-buffer): To mimick list-buffers
 +      behaviour, don't bury the ibuffer buffer when visiting other buffers.
 +
 +2010-10-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-commands, custom-buffer-create-internal)
 +      (custom-magic-value-create): Pad button tags with spaces.
 +      (custom-face-edit): New variable.
 +      (custom-face-value-create): Determine whether to use the usual
 +      face editor here, instead of using custom-face-selected.
 +      Pass face defaults to custom-face-edit widget.
 +      (custom-face-selected, custom-display-unselected): Delete widgets.
 +      (custom-display-unselected-match): Function removed.
 +      (custom-face-set, custom-face-mark-to-save):
 +      Accept custom-face-edit widgets as the direct widget child.
 +
 +      * wid-edit.el (widget--completing-widget): New var.
 +      (widget-default-complete): Bind it when doing completion.
 +      (widget-string-complete, widget-file-complete): Use it.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/cal-hebrew.el (holiday-hebrew-rosh-hashanah)
 +      (holiday-hebrew-passover, holiday-hebrew-tisha-b-av)
 +      (holiday-hebrew-misc): Small simplifications.
 +
 +      * emacs-lisp/authors.el (authors-valid-file-names): Add b2m.c.
 +
 +      * net/browse-url.el: Don't require thingatpt, term, dired,
 +      executable, or w3-auto when compiling.
 +      (dired-get-filename, term-char-mode, term-send-down, term-send-string):
 +      Declare.
 +      (browse-url-text-emacs): Require term.
 +
 +2010-10-08  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * net/browse-url.el (browse-url-xdg-open): Remove use of /bin/sh.
 +
 +2010-10-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/.
 +
 +      * emacs-lisp/shadow.el (lisp-shadow): Change prefix.
 +      (shadows-compare-text-p): Make it an obsolete alias for...
 +      (load-path-shadows-compare-text): ... new name.
 +      (find-emacs-lisp-shadows): Update for above name change.
 +      (load-path-shadows-same-file-or-nonexistent): New name for the old
 +      shadow-same-file-or-nonexistent.
 +
 +2010-10-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * minibuffer.el (completion--some, completion--do-completion)
 +      (minibuffer-complete-and-exit, minibuffer-completion-help)
 +      (completion-basic-try-completion)
 +      (completion-basic-all-completions)
 +      (completion-pcm--find-all-completions): Use lexical-let to
 +      avoid some false matches in variable completion (Bug#7056)
 +
 +2010-10-08  Olof Ohlsson Sax  <olof.ohlsson.sax@gmail.com>  (tiny change)
 +
 +      * vc-svn.el (vc-svn-merge-news): Use --non-interactive.  (Bug#7152)
 +
 +2010-10-08  Leo  <sdl.web@gmail.com>
 +
 +      * dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only
 +      return non-nil if the file exists (Bug#7090).
 +
 +2010-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion--replace):
 +      Better preserve markers (bug#7138).
 +
 +2010-10-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * server.el (server-process-filter): Doc fix.
 +
 +2010-10-08  Drew Adams  <drew.adams@oracle.com>
 +
 +      * dired.el (dired-save-positions): Doc fix.  (Bug#7119)
 +
 +2010-10-08  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * Makefile.in (ELCFILES): Update.
 +
 +2010-10-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc/ediff-wind.el (ediff-setup-control-frame):
 +      * vc/ediff-ptch.el (ediff-default-backup-extension):
 +      * vc/ediff-diff.el (ediff-shell, ediff-diff-options)
 +      (ediff-exec-process): Remove system-types emx, windows-95.
 +
 +      * net/browse-url.el (browse-url-xdg-open): Shell-quote url.  (Bug#7166)
 +
 +2010-10-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-variable, custom-face): Doc fix.
 +      (custom-face-edit): Add value-create attribute.
 +      (custom-face-edit-value-create)
 +      (custom-face-edit-value-visibility-action): New functions.
 +      Hide unused face attributes by default, and add a visibility toggle.
 +      (custom-face-edit-deactivate): Show empty values with shadow face.
 +      (custom-face-selected): Only use this for face specs with default
 +      attributes.
 +      (custom-face-value-create): Cleanup.
 +
 +      * wid-edit.el (widget-checklist-value-create): Use dolist.
 +      (widget-checklist-match-find): Make second arg optional.
 +
 +2010-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * hilit-chg.el (hilit-chg-get-diff-info, hilit-chg-get-diff-list-hk):
 +      Prefix things.
 +
 +      * emacs-lisp/shadow.el (shadow-font-lock-keywords)
 +      (load-path-shadows-mode, list-load-path-shadows): Rename shadow-mode to
 +      load-path-shadows-mode, update references.
 +      (load-path-shadows-font-lock-keywords, load-path-shadows-find-file):
 +      Rename variable and button.
 +      (list-load-path-shadows): Update button caller.
 +
 +2010-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-bnf-classify): New function.
 +      (smie-bnf-precedence-table): Use it to remember the closers/openers.
 +      (smie-merge-prec2s): Handle those new entries.
 +      (smie-prec2-levels): Only set precedence to nil for actual
 +      openers/closers.
 +      * progmodes/octave-mod.el (octave-smie-op-levels): Remove dummy entry
 +      that is now unnecessary.
 +
 +2010-10-07  Miles Bader  <miles@gnu.org>
 +
 +      * emacs-lisp/regexp-opt.el (regexp-opt): Add `symbols' mode.
 +
 +2010-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * mail/rmail.el (mail-sendmail-delimit-header, mail-header-end)
 +      (mail-position-on-field): Remove declarations.
 +      (mail-position-on-field): Autoload it.
 +      (rmail-retry-failure): Replace use of mail-sendmail-delimit-header
 +      and mail-header-end.  Don't require sendmail.
 +
 +      * emacs-lisp/shadow.el (shadow-font-lock-keywords): New variable.
 +      (shadow-mode): New mode.
 +      (shadow-find-file): New button.
 +      (list-load-path-shadows): Use shadow-mode and buttons.
 +
 +      * iimage.el (iimage-version): Remove.
 +      (iimage-mode-image-search-path, iimage-mode-image-regex-alist):
 +      Turn into defcustoms.
 +      (iimage-mode-map): Give it a doc string.
 +
 +      * calendar/appt.el (appt-activate): Give a warning rather than an error
 +      if there is no diary-file.
 +
 +2010-10-06  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-sh-file-name-handler-alist):
 +      Use `tramp-handle-find-backup-file-name'.
 +
 +2010-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * font-core.el (font-lock-defaults-alist): Remove variable.
 +      (font-lock-mode): Doc fix.
 +      (font-lock-default-function): Do not consult font-lock-defaults-alist.
 +      * font-lock.el (font-lock-refresh-defaults): Doc fix.
 +      (font-lock-set-defaults): Doc fix.
 +      Do not consult font-lock-defaults-alist.
 +
 +      * hilit-chg.el (hilit-chg-get-diff-list-hk): Declare `e' for compiler.
 +
 +      * emacs-lisp/cl.el: No longer provide cl-19.
 +
 +2010-10-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-directory-files-and-attributes)
 +      (tramp-handle-file-exists-p, tramp-handle-file-newer-than-file-p):
 +      New defuns, taken from tramp-smb.el.
 +      (tramp-coding-system-change-eol-conversion)
 +      (tramp-set-process-query-on-exit-flag): Remove.
 +
 +      * net/tramp-compat.el (top): Do not check for byte-compiler objects.
 +      (tramp-compat-coding-system-change-eol-conversion)
 +      (tramp-compat-set-process-query-on-exit-flag): New defuns, taken
 +      from tramp.el.
 +
 +      * net/tramp-gvfs.el:
 +      * net/tramp-gw.el: Replace `tramp-set-process-query-on-exit-flag'
 +      by `tramp-compat-set-process-query-on-exit-flag'.
 +
 +      * net/tramp-imap.el (tramp-imap-file-name-handler-alist):
 +      Use `tramp-handle-directory-files-and-attributes',
 +      `tramp-handle-file-exists-p' and
 +      `tramp-handle-file-newer-than-file-p'.
 +      (tramp-imap-handle-file-exists-p)
 +      (tramp-imap-handle-file-executable-p)
 +      (tramp-imap-handle-file-readable-p)
 +      (tramp-imap-handle-directory-files-and-attributes)
 +      (tramp-imap-handle-file-newer-than-file-p): Remove.
 +
 +      * net/tramp-sh.el: Replace `tramp-set-process-query-on-exit-flag'
 +      by `tramp-compat-set-process-query-on-exit-flag' and
 +      `tramp-coding-system-change-eol-conversion' by
 +      `tramp-compat-coding-system-change-eol-conversion'.
 +
 +      * net/tramp-smb.el (tramp-smb-file-name-handler-alist):
 +      Use `tramp-handle-directory-files-and-attributes',
 +      `tramp-handle-file-exists-p' and
 +      `tramp-handle-file-newer-than-file-p'.
 +      (tramp-smb-handle-directory-files-and-attributes)
 +      (tramp-smb-handle-file-exists-p)
 +      (tramp-smb-handle-file-newer-than-file-p): Remove.
 +      (tramp-smb-maybe-open-connection):
 +      Replace `tramp-set-process-query-on-exit-flag' by
 +      `tramp-compat-set-process-query-on-exit-flag'.
 +
 +2010-10-05  Glenn Morris  <rgm@gnu.org>
 +
 +      * obsolete/rnews.el, obsolete/rnewspost.el: Remove files.
 +
 +2010-10-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Continue reorganization of load dependencies.  (Bug#7156)
 +
 +      * net/tramp.el (tramp-handle-file-local-copy-hook)
 +      (tramp-delete-temp-file-function): Move down.
 +      (tramp-exists-file-name-handler): Move up.
 +      (tramp-register-file-name-handlers): Simplify autoload.
 +      (tramp-handle-write-region-hook, tramp-handle-directory-file-name)
 +      (tramp-handle-directory-files, tramp-handle-dired-uncache)
 +      (tramp-handle-file-modes, tramp-handle-file-name-as-directory)
 +      (tramp-handle-file-name-completion)
 +      (tramp-handle-file-name-directory)
 +      (tramp-handle-file-name-nondirectory, tramp-handle-file-regular-p)
 +      (tramp-handle-file-remote-p, tramp-handle-file-symlink-p)
 +      (tramp-handle-find-backup-file-name)
 +      (tramp-handle-insert-file-contents, tramp-handle-load)
 +      (tramp-handle-substitute-in-file-name)
 +      (tramp-handle-unhandled-file-name-directory)
 +      (tramp-mode-string-to-int, tramp-local-host-p)
 +      (tramp-make-tramp-temp-file): Move from tramp-sh.el.
 +
 +      * net/tramp-gvfs.el (top):
 +      * net/tramp-smb.el (top): Do not require 'tramp-sh.
 +
 +      * net/tramp-sh.el (all): Move several objects to tramp.el, see
 +      there.  Rename `tramp-handle-*' to `tramp-sh-handle-*'.
 +
 +2010-10-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/appt.el (appt-add): Ensure reminders are enabled.
 +      (appt-activate): Give status messages.
 +
 +2010-10-03  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el: Improve docs.  Remove starttls and ssl emulation.
 +      Provide only `open-gnutls-stream' (formerly `open-ssl-stream') and
 +      `gnutls-negotiate' (formerly `starttls-negotiate').
 +      Remove trivial wrapper `starttls-open-stream'.
 +
 +2010-10-03  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
 +      log-outgoing commands.
 +      * vc/vc.el (vc-log-internal-common): Add a new argument and use it
 +      to create a buffer local revert-buffer-function variable.
 +      (vc-print-log-internal, vc-log-incoming, vc-log-outgoing): Pass a
 +      revert-buffer-function lambda.
 +
 +2010-10-03  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el (starttls-negotiate): Use the plist interface to
 +      `gnutls-boot'.  Make TYPE the only required parameter.
 +      Allow TRUSTFILES and KEYFILES to be lists.
 +      (open-ssl-stream): Use it.
 +
 +2010-10-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * subr.el (directory-sep-char): Remove obsolete variable.
 +      * net/tramp-compat.el: Don't mess about with the byte-compiler unless
 +      it is "necessary".
 +
 +      * vc/vc-hooks.el (vc-header-alist): Remove obsolete variable.
 +      * vc/vc.el (vc-static-header-alist): Doc fix.
 +      * vc/vc-cvs.el (vc-cvs-header):
 +      * vc/vc-rcs.el (vc-rcs-header):
 +      * vc/vc-sccs.el (vc-sccs-header):
 +      * vc/vc-svn.el (vc-svn-header): Do not consult vc-header-alist.
 +      * obsolete/vc-mcvs.el (vc-mcvs-header):
 +      * progmodes/cperl-mode.el (cperl-mode): Only set vc-header-alist
 +      on XEmacs.
 +
 +2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-from-buffer):
 +      Remove obsolete use of binary-overwrite-mode (Bug#7001).
 +
 +2010-10-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * obsolete/x-menu.el: Remove file, obsolete since 21.1
 +
 +      * textmodes/rst.el (rst-font-lock-keywords-function):
 +      Drop Emacs 20 code.
 +
 +      * textmodes/artist.el (artist-replace-char): Drop Emacs 20 code.
 +
 +      * printing.el: Drop Emacs 20 code.
 +
 +      * calendar/appt.el (appt-delete): Don't autoload it (you can't use it
 +      without having used appt.el already).
 +
 +      * subr.el (make-local-hook): Remove function obsolete since 21.1.
 +      * progmodes/cc-mode.el (make-local-hook): Don't do cc-bytecomp stuff.
 +      (c-basic-common-init, c-font-lock-init): Only call make-local-hook on
 +      XEmacs.
 +      * progmodes/cc-styles.el (make-local-hook): Don't do cc-bytecomp stuff.
 +      (c-make-styles-buffer-local): Only call make-local-hook on XEmacs.
 +
 +      * ps-def.el (leading-code-private-22, charset-bytes, charset-id)
 +      (charset-width, find-charset-region, chars-in-region, forward-point)
 +      (encode-coding-string, coding-system-p, ccl-execute-on-string)
 +      (define-ccl-program, multibyte-string-p, string-make-multibyte):
 +      Remove compatibility cruft (none of these are used by ps*.el).
 +
 +2010-10-03  Kevin Rodgers  <kevin.d.rodgers@gmail.com>
 +
 +      * subr.el (booleanp): Return t instead of a list (Bug#7086).
 +
 +2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * server.el (server-process-filter, server-return-error):
 +      Give emacsclient time to shut down after receiving an error string.
 +
 +2010-10-02  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.el (remote-file-name-inhibit-cache): New defcustom.
 +
 +      * time.el (display-time-file-nonempty-p):
 +      Use `remote-file-name-inhibit-cache'.
 +
 +      * net/tramp.el (tramp-completion-reread-directory-timeout):
 +      Fix docstring.
 +
 +      * net/tramp-cache.el (tramp-cache-inhibit-cache): Remove.
 +      (tramp-get-file-property): Replace `tramp-cache-inhibit-cache' by
 +      `remote-file-name-inhibit-cache'.  Check also for an integer
 +      value.  Add/increase counter when `tramp-verbose' >= 10.
 +      (tramp-set-file-property): Add/increase counter when
 +      `tramp-verbose' >= 10.
 +
 +      * net/tramp-cmds.el (tramp-cleanup-all-connections)
 +      (tramp-cleanup-all-buffers): Set tramp-autoload cookie.
 +      (tramp-bug): Set tramp-autoload cookie.  Report all interned
 +      tramp-* variables.  Report also `remote-file-name-inhibit-cache'.
 +      (tramp-reporter-dump-variable): Fix docstring.  Mask non-7bit
 +      characters only in strings.
 +
 +      * net/tramp-compat.el (remote-file-name-inhibit-cache): Define due
 +      to backward compatibility.
 +
 +      * net/tramp-sh.el (tramp-handle-verify-visited-file-modtime)
 +      (tramp-handle-file-name-all-completions)
 +      (tramp-handle-vc-registered): Use `remote-file-name-inhibit-cache'.
 +      (tramp-open-connection-setup-interactive-shell):
 +      Call `tramp-cleanup-connection' directly.
 +
 +2010-10-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/checkdoc.el (checkdoc-minor-keymap): Remove obsolete alias.
 +
 +      * subr.el (char-bytes): Remove obsolete function.
 +
 +      * isearch.el (isearch-return-char): Remove obsolete function.
 +
 +      * mouse.el: No longer provide mldrag.
 +      (mldrag-drag-mode-line, mldrag-drag-vertical-line):
 +      Remove obsolete aliases.
 +
 +      * comint.el (comint-kill-output): Remove obsolete alias.
 +
 +      * composite.el (decompose-composite-char): Remove obsolete function.
 +      * ps-def.el (decompose-composite-char): Remove unused function.
 +
 +      * iswitchb.el (iswitchb-default-keybindings): Remove obsolete function.
 +
 +      * outline.el (outline-visible): Remove obsolete function.
 +
 +      * term/pc-win.el (x-frob-font-slant, x-frob-font-weight):
 +      * faces.el (internal-find-face, internal-get-face)
 +      (frame-update-faces, frame-update-face-colors)
 +      (x-frob-font-weight, x-frob-font-slant)
 +      (internal-frob-font-weight, internal-frob-font-slant)
 +      (x-make-font-bold, x-make-font-demibold, x-make-font-unbold)
 +      (x-make-font-italic, x-make-font-oblique, x-make-font-unitalic)
 +      (x-make-font-bold-italic): Remove functions and aliases, obsolete
 +      since Emacs 21.1.
 +      * emulation/viper-util.el (viper-get-face):
 +      * obsolete/lucid.el (find-face, get-face): Use facep.
 +      * vc/ediff-init.el (ediff-valid-color-p, ediff-get-face):
 +      Remove unused functions.
 +      * vc/ediff-util.el (ediff-submit-report): Doc fix.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-file): Use kill-emacs-hook to
 +      delete tempfile if interrupted during compilation.
 +
 +2010-10-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/tls.el (tls-starttls-switches): Give up on using starttls with
 +      gnutls-cli.
 +      (tls-program): Add --insecure to be consistent with the defaults from
 +      openssl s_client.  Now all three commands are insecure.
 +
 +2010-10-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (DEST, TAGS, TAGS-LISP, TAGS-nmake)
 +      (TAGS-LISP-nmake, TAGS-gmake, TAGS-LISP-gmake, TAGS-SH)
 +      (TAGS-LISP-SH, TAGS-CMD, TAGS-LISP-CMD): New targets.
 +
 +2010-10-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * obsolete/sc.el: Remove file.
 +
 +      * files.el (temporary-file-directory): On darwin, also try
 +      DARWIN_USER_TEMP_DIR (see discussion in bug#7135).
 +
 +2010-10-01  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * server.el (server-start): Revert part of 2010-09-30T02:53:26Z!lekktu@gmail.com.
 +      Let's not break compatibility gratuitously, shall we?
 +
 +2010-09-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/tls.el (tls-starttls-switches): New variable.
 +      (tls-find-starttls-argument): Use it.
 +      (open-tls-stream): Ditto.
 +
 +      * net/netrc.el (netrc-credentials): Return the value of the "default"
 +      entry.
 +      (netrc-machine): Ditto.
 +
 +2010-09-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * vc/vc-hooks.el (vc-default-mode-line-string): Doc fix.
 +
 +2010-09-30  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * server.el (server-start): Don't write pid to the authentication file.
 +      (server-create-tty-frame): Don't send pid.
 +      (server-process-filter): Send pid at the start of every connection.
 +
 +2010-09-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (view-diary-entries, list-diary-entries)
 +      (show-all-diary-entries): Remove obsolete function aliases.
 +
 +      * calendar/appt.el (appt-issue-message, appt-visible, appt-msg-window):
 +      Remove options, obsolete since 22.1.
 +      (appt-display-format, appt-display-message): Remove
 +      backwards-compatibility code.
 +      (appt-check): No longer check appt-issue-message.
 +      (appt-make-list): No longer autoload it.  Doc fix.  No longer
 +      activate the package.
 +
 +2010-09-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/gnutls.el (starttls-negotiate): Loop a lot longer.
 +      (starttls-negotiate): Just call boot, and let the handshake be
 +      triggered from the read loop.
 +
 +2010-09-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (diary-list-entries): Use temp buffers when
 +      not displaying the diary.
 +      (diary-add-to-list): If no buffer-file-name, fall back to diary-file.
 +      * calendar/appt.el (appt-check): No longer need to kill diary.
 +
 +      * calendar/diary-lib.el (diary-list-entries): Move the
 +      "Preparing..." message entirely here.
 +      (diary-simple-display, diary-fancy-display): Move "Preparing..."
 +      messages to diary-list-entries.
 +      (diary-include-other-diary-files): Use LIST-ONLY rather than setting
 +      diary-display-function.
 +
 +      * calendar/diary-lib.el (diary-include-other-diary-files):
 +      Trap some recursive includes.
 +
 +      * calendar/appt.el (appt-activate): Check diary file.
 +
 +2010-09-29  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * pgg.el (pgg-run-at-time-1): Define it for XEmacs only; fix if/else
 +      construction.
 +
 +      * calendar/time-date.el: No need to require cl for Emacs 21.
 +
 +2010-09-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/appt.el (appt-check): Minor simplification.
 +
 +2010-09-28  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mail/sendmail.el (mail-citation-prefix-regexp): Remove "}" from
 +      citation prefix.
 +
 +2010-09-27  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
 +      Avoid infinite recursion on erroneous lambda form.  (Bug#7114)
 +
 +2010-09-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * tar-mode.el (tar-header-block-tokenize): Decode filenames in
 +      "ustar" format.
 +
 +2010-09-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/mule.el (define-coding-system): Docstring fixed.
 +
 +      * international/mule-diag.el (describe-character-set): Use princ
 +      with proper print-length and print-level instead of insert.
 +
 +2010-09-27  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * window.el (walk-windows): Doc fix (bug#7105).
 +
 +2010-09-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/float-sup.el (e): Remove.
 +
 +2010-09-27  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el (gnutls, gnutls-log-level): Add group and custom
 +      variable.
 +      (starttls-negotiate): Use it.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/gnutls.el (starttls-negotiate): Stop looping when we get a t
 +      back.
 +
 +2010-09-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el (pcase-let*, pcase-let): plet -> pcase-let.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/gnutls.el (starttls-negotiate): Avoid the cl.el decf function.
 +
 +      * net/netrc.el (netrc-store-data): New function.
 +
 +2010-09-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el: GnuTLS glue code to set up a connection.
 +
 +2010-09-25  Julien Danjou  <julien@danjou.info>
 +
 +      * notifications.el: Call dbus-register-signal only if it is bound.
 +
 +2010-09-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * eshell/em-alias.el, eshell/em-banner.el, eshell/em-basic.el:
 +      * eshell/em-cmpl.el, eshell/em-dirs.el, eshell/em-glob.el:
 +      * eshell/em-hist.el, eshell/em-ls.el, eshell/em-pred.el:
 +      * eshell/em-prompt.el, eshell/em-rebind.el, eshell/em-script.el:
 +      * eshell/em-smart.el, eshell/em-term.el, eshell/em-unix.el:
 +      * eshell/esh-cmd.el, eshell/esh-ext.el, eshell/esh-io.el:
 +      * eshell/esh-mode.el, eshell/esh-proc.el, eshell/esh-test.el:
 +      * eshell/esh-util.el, eshell/esh-var.el:
 +      Remove leading `*' from docs of faces and defcustoms.
 +
 +2010-09-25  Ulrich Mueller  <ulm@gentoo.org>
 +
 +      * eshell/em-ls.el (eshell-ls-archive-regexp):
 +      * eshell/esh-util.el (eshell-tar-regexp):
 +      * ibuffer.el (ibuffer-compressed-file-name-regexp):
 +      * info.el (Info-suffix-list):
 +      * international/mule.el (auto-coding-alist):
 +      * woman.el (woman-file-regexp, woman-file-compression-regexp):
 +      * progmodes/etags.el (tags-compression-info-list):
 +      Support xz compression.
 +
 +2010-09-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * files.el (get-free-disk-space): Don't assume the "df" output
 +      columns line up (Bug#6995).
 +
 +2010-09-25  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * finder.el (finder-unknown-keywords):
 +      * progmodes/gdb-mi.el (gdb-jsonify-buffer, gdb-running-threads-count):
 +      * progmodes/etags.el (tags-table-including): Fix typos in docstrings.
 +
 +2010-09-25  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * server.el (server-start): Revert part of 2010-08-08 change.  Using
 +      address 127.0.0.1 for local host is now done in Fmake_network_process.
 +
 +2010-09-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * image-mode.el, progmodes/compile.el, progmodes/gud.el:
 +      * progmodes/mixal-mode.el, textmodes/bibtex-style.el:
 +      * textmodes/css-mode.el, textmodes/dns-mode.el:
 +      Move autoloaded auto-mode-alist entries to files.el.
 +      * files.el (auto-mode-alist): Move entries here.
 +
 +2010-09-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * isearch.el (isearch-lazy-highlight-cleanup)
 +      (isearch-lazy-highlight-initial-delay)
 +      (isearch-lazy-highlight-interval)
 +      (isearch-lazy-highlight-max-at-a-time, isearch-lazy-highlight-face):
 +      * net/net-utils.el (ipconfig-program-options):
 +      Move aliases to options before the associated definitions.
 +
 +2010-09-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * newcomment.el (comment-normalize-vars): Better test validity of
 +      comment-end-skip.
 +
 +2010-09-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/float-sup.el (float-pi): New name for `pi'.
 +      (float-e): New name for `e'.
 +      (degrees-to-radians, radians-to-degrees):
 +      * calendar/solar.el (solar-longitude):
 +      * calculator.el (calculator-registers, calculator-funcall):
 +      * textmodes/artist.el (artist-spray-random-points):
 +      * play/bubbles.el (bubbles--initialize-images): Use new names.
 +
 +2010-09-23  Eric M. Ludlam  <zappo@gnu.org>
 +
 +      Update to CEDET 1.0's version of EIEIO.
 +
 +      * emacs-lisp/eieio.el (eieio-specialized-key-to-generic-key):
 +      New function.
 +      (eieio-defmethod, eieio-generic-form, eieio-generic-call): Use it.
 +      (eieio-default-eval-maybe): Eval val instead of unquoting only.
 +      (class-precedence-list): If class is nil, return nil.
 +      (eieio-generic-call): If class of first input arg is nil, don't
 +      look up static methods, and do check for primary methods.
 +      (initialize-instance): See if the default needs to be evaluated
 +      during the constructor.
 +      (eieio-perform-slot-validation-for-default): Don't do the check
 +      for values that will eventually be evaluated.
 +      (eieio-eval-default-p): New function.
 +      (eieio-default-eval-maybe): Use it.
 +
 +2010-09-23  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +
 +      * emacs-lisp/eieio.el (eieio-defclass): Allow :c3
 +      method-invocation-order.
 +      (eieio-c3-candidate, eieio-c3-merge-lists): New functions.
 +      (eieio-class-precedence-dfs): Compute class precedence list using
 +      dfs algorithm.
 +      (eieio-class-precedence-bfs): Compute class precedence list using
 +      bfs algorithm.
 +      (eieio-class-precedence-c3): Compute class precedence list using
 +      c3 algorithm.
 +      (class-precedence-list): New function.
 +      (eieiomt-method-list, eieiomt-sym-optimize): Use it.
 +      (inconsistent-class-hierarchy): New error symbol.
 +      (call-next-method): Stow the replacement argument list for future
 +      call-next-method invocations.
 +
 +2010-09-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/appt.el (appt-check): If not displaying the diary,
 +      use (diary 1) to only get the entries we need.
 +      (appt-make-list): Sort diary-list-entries, if we cannot guarantee
 +      that it is in day order.  (Bug#7019)
 +
 +      * calendar/appt.el (appt-check): Rather than showing the diary,
 +      just turn off invisible display, and only if needed.
 +
 +      * calendar/diary-lib.el (diary-list-entries): Doc fix.  (Bug#7019)
 +
 +2010-09-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar):
 +      (byte-compile-defvar, byte-compile-cl-warn):
 +      Start warnings with lower-case, like the majority.
 +
 +      * files.el (auto-mode-alist): Add .xa, .xw, .xsw for ld-script-mode.
 +
 +      * files.el (auto-mode-alist): Prefer C-mode for .xs.  (Bug#7071)
 +
 +      * progmodes/ld-script.el (auto-mode-alist): Move to files.el.
 +      * files.el (auto-mode-alist): Move ld-script entries here, further down
 +      the list.
 +
 +      * vc/add-log.el: Don't require timezone when compiling.
 +      (timezone-make-date-sortable): Autoload it.
 +      (change-log-sortable-date-at): Don't require timezone.
 +      Use `ignore-errors'.
 +
 +      * comint.el (comint-use-prompt-regexp-instead-of-fields):
 +      Move alias before definition, so it does not need autoloading.
 +
 +      * emulation/crisp.el, emulation/cua-base.el, emulation/edt.el:
 +      * emulation/pc-select.el, emulation/vip.el, international/iso-ascii.el:
 +      * international/kkc.el, international/ogonek.el, mail/feedmail.el:
 +      * net/browse-url.el, net/eudc-vars.el, net/net-utils.el:
 +      * net/rcompile.el, net/rlogin.el, textmodes/enriched.el:
 +      * textmodes/makeinfo.el, textmodes/page-ext.el, textmodes/picture.el:
 +      * textmodes/refer.el, textmodes/spell.el, textmodes/table.el:
 +      * textmodes/tex-mode.el, textmodes/two-column.el:
 +      Remove leading `*' from docs of defcustoms etc.
 +
 +2010-09-23  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/netrc.el (netrc-parse): Remove encrypt.el mentions.
 +
 +2010-09-22  Dan Christensen  <jdc@uwo.ca>
 +
 +      * calendar/time-date.el (date-to-time): Try using parse-time-string
 +      first before using the slower timezone-make-date-arpa-standard.
 +
 +2010-09-22  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * calendar/time-date.el (format-seconds): Comment fix.
 +
 +2010-09-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/package.el (package-menu-mode): `revert-buffer-function'
 +      is not automatically buffer-local.
 +
 +2010-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-debug--describe-cycle): Fix typo.
 +      (smie-indent-comment): Be more careful with comment-start-skip.
 +      (smie-indent-comment-close, smie-indent-comment-inside): New funs.
 +      (smie-indent-functions): Use them.
 +
 +2010-09-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/ange-ftp.el (ange-ftp-skip-msgs): Add "^504 ..." message.
 +
 +2010-09-21  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * menu-bar.el (menu-bar-set-tool-bar-position): customize-set-variable
 +      tool-bar-position.  Don't modify frame parameters here.
 +      (menu-bar-options-save): Add tool-bar-position.
 +
 +      * tool-bar.el (tool-bar-position): New defcustom (Bug#7049).
 +
 +2010-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/reftex-parse.el (reftex-what-macro)
 +      (reftex-context-substring): Let-bind forward-sexp-function to nil
 +      since we don't need/want to treat \begin...\end as a block (bug#7053).
 +
 +      * emacs-lisp/lisp.el (up-list): Don't do nothing silently.
 +
 +      * simple.el (blink-matching-open): Use syntax-class.
 +
 +      * progmodes/pascal.el (pascal-mode): Use define-derived-mode.
 +      Set invisibility spec for pascal's outline mode.
 +      (pascal-outline-change): Clean up calling convention.
 +      (pascal-show-all, pascal-hide-other-defuns): Update callers.
 +
 +      * progmodes/prolog.el (prolog-smie-forward-token)
 +      (prolog-smie-backward-token): New functions.
 +      (prolog-mode-variables): Use them to parse "!," correctly.
 +      Set up smie-blink-matching for ".".
 +
 +      * textmodes/ispell.el (ispell-start, ispell-end): Rename from `start'
 +      and `end'.
 +      (ispell-region, ispell-process-line): Update users.
 +
 +      * textmodes/reftex-parse.el (reftex-what-macro): Don't hardcode
 +      point-min==1.
 +
 +      * textmodes/ispell.el: Fix commenting convention.
 +      (ispell-parse-output): Simplify, use push.
 +      (ispell-region): Use match-string-no-properties.
 +      (ispell-begin-skip-region-regexp): Use mapconcat to simplify.
 +      (ispell-minor-mode): Use define-minor-mode.
 +      (ispell-message): Remove unused var `skip-regexp'.
 +      (ispell-add-per-file-word-list): Use dynamic let-binding.
 +      Try and use the proper comment marker.
 +
 +      * mail/sendmail.el: Fix commenting convention.
 +      (sendmail-send-it): Use line-beginning-position.
 +
 +      * help-fns.el (describe-variable): Add original value, if applicable.
 +
 +2010-09-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * subr.el (y-or-n-p): Remove leftover code from 2010-09-17T13:30:30Z!monnier@iro.umontreal.ca.
 +
 +      * emacs-lisp/smie.el (smie-indent--hanging-p): Use `smie-indent--bolp'.
 +
 +2010-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-bnf-precedence-table): Improve error message.
 +      (smie-debug--prec2-cycle, smie-debug--describe-cycle): New functions.
 +      (smie-prec2-levels): Use them to better diagnose precedence cycles.
 +      (smie-blink-matching-check): Don't signal a mismatch if car is t.
 +      (smie-blink-matching-open): Rewrite to remove assumptions, so that
 +      something like "." can also be a closer.
 +      (smie--associative-p, smie-indent--hanging-p, smie-indent--bolp)
 +      (smie-indent--offset, smie-indent--offset-rule, smie-indent--column):
 +      Rename internal functions to use "--".  Update callers.
 +
 +      * frame.el (make-frame-names-alist): Don't list frames on other displays.
 +
 +      * fringe.el (fringe-styles): New var.
 +      (fringe-mode, fringe-query-style): Use it.
 +
 +2010-09-18  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.8
 +      (sql-login-params): Update widget structure; changes still needed.
 +      (sql-product-alist): Add :list-all and :list-table features for
 +      SQLite, Postgres and MySQL products.
 +      (sql-redirect): Handle default value.
 +      (sql-execute, sql-execute-feature): New functions.
 +      (sql-read-table-name): New function.
 +      (sql-list-all, sql-list-table): New functions.  User API.
 +      (sql-mode-map, sql-interactive-mode-map): Add key definitions
 +      for above functions.
 +      (sql-mode-menu, sql-interactive-mode-menu): Add menu definitions
 +      for above functions.
 +      (sql-postgres-login-params): Add user and database defaults.
 +      (sql-buffer-live-p): Bug fix.
 +      (sql-product-history): New variable.
 +      (sql-read-product): New function. Use it.
 +      (sql-set-product, sql-product-interactive): Use it.
 +      (sql-connection-history): New variable.
 +      (sql-read-connection): New function.  Use it.
 +      (sql-connect): New function.
 +      (sql-for-each-login): Redesign function interface.
 +      (sql-make-alternate-buffer-name, sql-save-connection): Use it.
 +      (sql-get-login-ext, sql-get-login): Use it.  Handle default values.
 +      (sql-comint): Check for program.  Existing live buffer.
 +      (sql-comint-postgres): Add port parameter.
 +
 +2010-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/warnings.el: Fix commenting convention.
 +      (display-warning): Use special mode and make the buffer read-only.
 +
 +2010-09-18  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-prog.el (calc-read-parse-table-part): Don't "fix" the
 +      empty string when it follows a repeated or optional pattern.
 +
 +2010-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * indent.el (indent-according-to-mode): Apply syntax-propertize.
 +      (indent-region): Use indent-according-to-mode.
 +
 +2010-09-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fringe.el (fringe-mode): Doc fix.
 +
 +2010-09-14  Kan-Ru Chen  <kanru@kanru.info>  (tiny change)
 +
 +      * textmodes/nroff-mode.el (nroff-view): Kill old buffer before
 +      refreshing the preview buffer.
 +
 +2010-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/tex-mode.el (tex-syntax-propertize-rules)
 +      (latex-syntax-propertize-rules): New consts; replace
 +      tex-font-lock-syntactic-keywords.
 +      (tex-env-mark, latex-env-before-change): New functions.
 +      (latex-electric-env-pair-mode): New minor mode.
 +      (tex-font-lock-verb): Change arguments; do move point.
 +      (tex-font-lock-syntactic-face-function): Adjust to new verbatim
 +      representation as a form of comment.
 +      (tex-font-lock-keywords-1): Remove workaround, now unneeded.
 +      (doctex-syntax-propertize-rules): New const; replaces
 +      doctex-font-lock-syntactic-keywords.
 +      (tex-common-initialization, doctex-mode): Use syntax-propertize-rules.
 +
 +      * progmodes/fortran.el (fortran--font-lock-syntactic-keywords): Remove.
 +      (fortran-make-syntax-propertize-function): New function; replaces
 +      fortran-font-lock-syntactic-keywords.
 +      (fortran-mode): Use it.
 +      (fortran-line-length): Use it.  Improve interactive spec.
 +
 +      * emacs-lisp/syntax.el (syntax-propertize-precompile-rules): New macro.
 +      (syntax-propertize-rules): Add var-ref case.  Fix offset computation
 +      when adding surrounding \(..\).
 +
 +      * progmodes/js.el (js-mode): Fix last change (bug#7054).
 +
 +2010-09-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * obsolete/old-whitespace.el (whitespace-rescan-files-in-buffers):
 +      Use with-current-buffer.
 +
 +      * isearch.el (isearch-face): Rename from `isearch'.
 +      (isearch-highlight): Use new name.
 +
 +2010-09-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fringe.el (fringe-mode, fringe-query-style): Use 4 pixels, not
 +      5, for `half' width fringes.  (Bug#6933)
 +
 +2010-09-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar)
 +      (byte-compile-defvar): "foo/bar" does not lack a prefix.
 +
 +      * subr.el (y-or-n-p): Add the "(y or n)" that was lost somehow.
 +
 +2010-09-17  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * dframe.el (dframe-reposition-frame-emacs): Use tool-bar-pixel-width
 +      in calculating new frame position.  Add more space between new and
 +      parent on the left (Bug#7048).
 +
 +2010-09-17  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-compat.el (tramp-compat-with-temp-message): Make it a
 +      defmacro.
 +
 +2010-09-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mail/sendmail.el: Add "*unsent mail*" to same-window-buffer-names.
 +
 +      * term/x-win.el (x-cut-buffer-or-selection-value): Define as
 +      obsolete alias for x-selection-value.
 +
 +      * ido.el (ido-make-buffer-list): Fix error in 2010-08-22 merge.
 +
 +2010-09-16  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-cmds.el (tramp-cleanup-connection): Set tramp-autoload
 +      cookie.
 +
 +2010-09-15  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-compat.el (tramp-compat-with-temp-message)
 +      (tramp-compat-font-lock-add-keywords, tramp-compat-process-get)
 +      (tramp-compat-process-put): New defuns.
 +
 +      * net/tramp.el (top):
 +      * net/tramp-gvfs.el (top):
 +      * net/tramp-cache.el (top): Use `tramp-compat-font-lock-add-keywords'.
 +
 +      * net/tramp.el (tramp-progress-reporter-update):
 +      Use `tramp-compat-funcall'.
 +
 +      * net/tramp.el (tramp-process-actions):
 +      * net/tramp-gvfs.el (tramp-handle-vc-registered):
 +      * net/tramp-sh.el (tramp-gvfs-handler-askquestion)
 +      (tramp-get-remote-stat, tramp-get-remote-readlink):
 +      Use `tramp-compat-with-temp-message'.
 +
 +      * net/tramp-sh.el (top): Require 'cl.
 +      (tramp-handle-start-file-process): Use `tramp-compat-process-get'.
 +      (tramp-open-connection-setup-interactive-shell):
 +      Use `tramp-compat-process-put'.
 +
 +2010-09-15  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-engine.el (c-forward-<>-arglist-recur): Correct the
 +      indentation.
 +      (c-forward-<>-arglist-recur): Fix an infinite recursion.
 +
 +2010-09-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-warning-types): New type
 +      `lexical' for warnings related to lexical scoping.
 +      (byte-compile-file-form-defvar, byte-compile-defvar): Warn about
 +      global vars which don't have a prefix and could hence affect lexical
 +      scoping in unrelated files.
 +
 +2010-09-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/imap.el: Revert back to version
 +      cb950ed8ff3e0f40dac437a51b269166f9ffb60d, since some of the changes
 +      seem problematic.
 +
 +2010-09-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * obsolete/old-whitespace.el (whitespace-unload-function):
 +      Explicitly pass `obarray' to `unintern' to avoid a warning.
 +
 +2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/byte-run.el (set-advertised-calling-convention):
 +      Add `when' argument.  Update callers.
 +
 +      * subr.el (unintern): Declare the obarray arg mandatory.
 +
 +2010-09-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (diary-list-entries-hook, diary-sort-entries):
 +      Doc fixes.
 +
 +      * calendar/diary-lib.el (diary-included-files): New variable.
 +      (diary-list-entries): Maybe initialize diary-included-files.
 +      (diary-include-other-diary-files): Append to diary-included-files.
 +      * calendar/appt.el (appt-update-list): Also check the members of
 +      diary-included-files.  (Bug#6999)
 +      (appt-check): Doc fix.
 +
 +2010-09-14  David Reitter  <david.reitter@gmail.com>
 +
 +      * simple.el (line-move-visual): Do not truncate goal column to
 +      integer size.  (Bug#7020)
 +
 +2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * repeat.el (repeat): Allow repeating when the last event is a click.
 +      Suggested by Drew Adams (bug#6256).
 +
 +2010-09-14  Sascha Wilde  <wilde@sha-bang.de>
 +
 +      * vc/vc-hg.el (vc-hg-state,vc-hg-working-revision):
 +      Replace setting HGRCPATH to "" by some less invasive --config options.
 +
 +2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * font-lock.el (font-lock-beginning-of-syntax-function):
 +      Mark as obsolete.
 +
 +2010-09-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * menu-bar.el (menu-bar-options-save): Fix handling of menu-bar
 +      and tool-bar modes.  (Bug#6211)
 +      (menu-bar-mode): Move setting of standard-value after the
 +      minor-mode definition, otherwise it seems to have no effect.
 +
 +2010-09-14  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * progmodes/antlr-mode.el (antlr-font-lock-additional-keywords):
 +      Fix typo.  (Bug#6976)
 +
 +2010-09-14  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * whitespace.el: Allow cleaning up blanks without blank
 +      visualization (Bug#6651).  Adjust help window for
 +      whitespace-toggle-options (Bug#6479).  Allow to use fill-column
 +      instead of whitespace-line-column (from EmacsWiki).  New version 13.1.
 +      (whitespace-style): Add new value 'face.  Adjust docstring.
 +      (whitespace-space, whitespace-hspace, whitespace-tab):
 +      Adjust foreground property face.
 +      (whitespace-line-column): Adjust docstring and type declaration.
 +      (whitespace-style-value-list, whitespace-toggle-option-alist)
 +      (whitespace-help-text): Adjust const initialization.
 +      (whitespace-toggle-options, global-whitespace-toggle-options):
 +      Adjust docstring.
 +      (whitespace-display-window, whitespace-interactive-char)
 +      (whitespace-style-face-p, whitespace-color-on): Adjust code.
 +      (whitespace-help-scroll): New fun.
 +
 +2010-09-14  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * calendar/time-date.el (format-seconds): Comment fix.
 +
 +2010-09-13  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.7.
 +      (sql-buffer-live-p): Improve detection.
 +      (sql-find-sqli-buffer, sql-set-sqli-buffer-generally)
 +      (sql-set-sqli-buffer): Use it.
 +      (sql-product-interactive): Run `sql-set-sqli-hook'.
 +      (sql-rename-buffer): Code cleanup.
 +      (sql-redirect, sql-redirect-value): New functions.  More to come.
 +
 +2010-09-13  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Port tramp-related Makefile changes of 2010-09-08T14:42:54Z!michael.albinus@gmx.de, 2010-09-13T15:17:01Z!michael.albinus@gmx.de to Windows.
 +      * makefile.w32-in (LOADDEFS): Add $(lisp)/net/tramp-loaddefs.el.
 +      (TRAMP_SRC): New macro.
 +      ($(lisp)/net/tramp-loaddefs.el): New target.
 +
 +2010-09-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Major code cleanup.  Split tramp.el into tramp.el and tramp-sh.el.
 +
 +      * Makefile.in (TRAMP_SRC): Remove tramp-fish.el.  Add tramp-sh.el.
 +
 +      * net/tramp.el (top): Don't show loading message.  Require just
 +      'tramp-compat, everything else is required there.
 +      Use `ignore-errors' where appropriate.
 +      (tramp-inline-compress-start-size, tramp-copy-size-limit)
 +      (tramp-terminal-type, tramp-end-of-output)
 +      (tramp-initial-end-of-output, tramp-completion-function-alist-rsh)
 +      (tramp-completion-function-alist-ssh)
 +      (tramp-completion-function-alist-telnet)
 +      (tramp-completion-function-alist-su)
 +      (tramp-completion-function-alist-putty, tramp-remote-path)
 +      (tramp-remote-process-environment, tramp-sh-extra-args)
 +      (tramp-actions-before-shell, tramp-uudecode)
 +      (tramp-perl-file-truename, tramp-perl-file-name-all-completions)
 +      (tramp-perl-file-attributes)
 +      (tramp-perl-directory-files-and-attributes)
 +      (tramp-perl-encode-with-module, tramp-perl-decode-with-module)
 +      (tramp-perl-encode, tramp-perl-decode)
 +      (tramp-vc-registered-read-file-names, tramp-file-mode-type-map)
 +      (tramp-file-name-handler-alist, tramp-make-tramp-temp-file)
 +      (tramp-handle-make-symbolic-link, tramp-handle-load)
 +      (tramp-handle-file-name-as-directory)
 +      (tramp-handle-file-name-directory)
 +      (tramp-handle-file-name-nondirectory, tramp-handle-file-truename)
 +      (tramp-handle-file-exists-p, tramp-handle-file-attributes)
 +      (tramp-do-file-attributes-with-ls)
 +      (tramp-do-file-attributes-with-perl)
 +      (tramp-do-file-attributes-with-stat)
 +      (tramp-handle-set-visited-file-modtime)
 +      (tramp-handle-verify-visited-file-modtime)
 +      (tramp-handle-set-file-modes, tramp-handle-set-file-times)
 +      (tramp-set-file-uid-gid, tramp-remote-selinux-p)
 +      (tramp-handle-file-selinux-context)
 +      (tramp-handle-set-file-selinux-context)
 +      (tramp-handle-file-executable-p, tramp-handle-file-readable-p)
 +      (tramp-handle-file-newer-than-file-p, tramp-handle-file-modes)
 +      (tramp-handle-file-directory-p, tramp-handle-file-regular-p)
 +      (tramp-handle-file-symlink-p, tramp-handle-file-writable-p)
 +      (tramp-handle-file-ownership-preserved-p)
 +      (tramp-handle-directory-file-name, tramp-handle-directory-files)
 +      (tramp-handle-directory-files-and-attributes)
 +      (tramp-do-directory-files-and-attributes-with-perl)
 +      (tramp-do-directory-files-and-attributes-with-stat)
 +      (tramp-handle-file-name-all-completions)
 +      (tramp-handle-file-name-completion, tramp-handle-add-name-to-file)
 +      (tramp-handle-copy-file, tramp-handle-copy-directory)
 +      (tramp-handle-rename-file, tramp-do-copy-or-rename-file)
 +      (tramp-do-copy-or-rename-file-via-buffer)
 +      (tramp-do-copy-or-rename-file-directly)
 +      (tramp-do-copy-or-rename-file-out-of-band)
 +      (tramp-handle-make-directory, tramp-handle-delete-directory)
 +      (tramp-handle-delete-file)
 +      (tramp-handle-dired-recursive-delete-directory)
 +      (tramp-handle-dired-compress-file, tramp-handle-dired-uncache)
 +      (tramp-handle-insert-directory)
 +      (tramp-handle-unhandled-file-name-directory)
 +      (tramp-handle-expand-file-name)
 +      (tramp-handle-substitute-in-file-name)
 +      (tramp-handle-executable-find, tramp-process-sentinel)
 +      (tramp-handle-start-file-process, tramp-handle-process-file)
 +      (tramp-handle-call-process-region, tramp-handle-shell-command)
 +      (tramp-handle-file-local-copy, tramp-handle-file-remote-p)
 +      (tramp-handle-insert-file-contents)
 +      (tramp-handle-insert-file-contents-literally)
 +      (tramp-handle-find-backup-file-name)
 +      (tramp-handle-make-auto-save-file-name, tramp-handle-write-region)
 +      (tramp-vc-registered-file-names, tramp-handle-vc-registered)
 +      (tramp-sh-file-name-handler, tramp-vc-file-name-handler)
 +      (tramp-maybe-send-script, tramp-set-auto-save, tramp-run-test)
 +      (tramp-run-test2, tramp-find-executable, tramp-set-remote-path)
 +      (tramp-find-file-exists-command, tramp-open-shell)
 +      (tramp-find-shell, tramp-barf-if-no-shell-prompt)
 +      (tramp-open-connection-setup-interactive-shell)
 +      (tramp-local-coding-commands, tramp-remote-coding-commands)
 +      (tramp-find-inline-encoding, tramp-call-local-coding-command)
 +      (tramp-inline-compress-commands, tramp-find-inline-compress)
 +      (tramp-compute-multi-hops, tramp-maybe-open-connection)
 +      (tramp-send-command, tramp-wait-for-output)
 +      (tramp-send-command-and-check, tramp-barf-unless-okay)
 +      (tramp-send-command-and-read, tramp-mode-string-to-int)
 +      (tramp-convert-file-attributes, tramp-check-cached-permissions)
 +      (tramp-file-mode-from-int, tramp-file-mode-permissions)
 +      (tramp-shell-case-fold, tramp-make-copy-program-file-name)
 +      (tramp-method-out-of-band-p, tramp-local-host-p)
 +      (tramp-get-remote-path, tramp-get-remote-tmpdir)
 +      (tramp-get-ls-command, tramp-get-ls-command-with-dired)
 +      (tramp-get-test-command, tramp-get-test-nt-command)
 +      (tramp-get-file-exists-command, tramp-get-remote-ln)
 +      (tramp-get-remote-perl, tramp-get-remote-stat)
 +      (tramp-get-remote-readlink, tramp-get-remote-trash)
 +      (tramp-get-remote-id, tramp-get-remote-uid, tramp-get-remote-gid)
 +      (tramp-get-local-uid, tramp-get-local-gid)
 +      (tramp-get-inline-compress, tramp-get-inline-coding): Move to
 +      tramp-sh.el.
 +      (tramp-methods, tramp-default-method-alist)
 +      (tramp-default-user-alist, tramp-foreign-file-name-handler-alist):
 +      Move initialization to tramp-sh.el.
 +      (tramp-temp-name-prefix): Make it a defconst.
 +      (tramp-dissect-file-name): Don't check anymore for multi-hop
 +      methods.
 +      (tramp-debug-outline-regexp): Add a docstring.
 +      (tramp-debug-outline-level): Rename from `tramp-outline-level'.
 +      (tramp-get-debug-buffer): Use it.
 +
 +      * net/tramp-cache.el (top): Set tramp-autoload cookie for
 +      initialization forms.
 +      (tramp-set-connection-property): Don't protect `tramp-message'
 +      call, it isn't necessary any longer.
 +      (tramp-dump-connection-properties): Use `ignore-errors'.
 +
 +      * net/tramp-compat.el (top): Require 'advice, 'format-spec,
 +      'password-cache and 'auth-source.
 +
 +      * net/tramp-gvfs.el (top):
 +      * net/tramp-smb.el (top): Require 'tramp-sh.
 +
 +      * net/tramp-gw.el (tramp-gw-open-network-stream): Use `ignore-errors'.
 +
 +      * net/tramp-sh.el: New file, derived from tramp.el.
 +      (top): Initialize `tramp-methods', `tramp-default-method-alist',
 +      `tramp-default-user-alist', `tramp-foreign-file-name-handler-alist'.
 +      Remove "scp1_old", "scp2_old", "ssh1_old", "ssh2_old".
 +      Use `ignore-errors' where appropriate.
 +      (tramp-sh-file-name-handler-alist): Rename from
 +      `tramp-file-name-handler-alist'.
 +      (tramp-send-command-and-check): Return t or nil.  Remove all
 +      `zerop' checks, where called.
 +      (tramp-handle-set-file-modes)
 +      (tramp-do-copy-or-rename-file-directly)
 +      (tramp-handle-delete-directory, tramp-handle-delete-file)
 +      (tramp-maybe-send-script): Use `tramp-barf-unless-okay'.
 +      (tramp-sh-file-name-handler, tramp-send-command-and-check)
 +      (tramp-get-remote-ln): Set tramp-autoload cookie.
 +
 +      * net/tramp-fish.el: Remove file.
 +
 +2010-09-13  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-file.el (epa-file-insert-file-contents): If visiting, bind
 +      buffer-file-name to avoid file-locking.  (Bug#7026)
 +
 +2010-09-13  Julien Danjou  <julien@danjou.info>
 +
 +      * notifications.el (notifications-notify): Add support for
 +      image-path and sound-name.
 +      (notifications-specification-version): Add this variable.
 +
 +2010-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (y-or-n-p): New function, moved from src/fns.c; use read-key.
 +
 +2010-09-12  Leo  <sdl.web@gmail.com>
 +
 +      * net/rcirc.el (rcirc-server-commands, rcirc-client-commands)
 +      (rcirc-completion-start): New variables.
 +      (rcirc-nick-completions): Rename to rcirc-completions.
 +      (rcirc-nick-completion-start-offset): Delete.
 +      (rcirc-completion-at-point): New function for constructing
 +      completion data for both nicks and irc commands.  Add to
 +      completion-at-point-functions in rcirc mode.
 +      (rcirc-complete): Rename from rcirc-nick-complete; use
 +      rcirc-completion-at-point.
 +      (defun-rcirc-command): Update rcirc-client-commands.
 +
 +2010-09-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-file): Create .elc files
 +      atomically, to avoid parallel build errors.  (Bug#4196)
 +
 +2010-09-11  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.6
 +      (sql-dialect): Synonym for "sql-product".
 +      (sql-find-sqli-buffer, sql-set-sqli-buffer-generally)
 +      (sql-set-sqli-buffer, sql-show-sqli-buffer, sql-interactive-mode):
 +      Set "sql-buffer" to buffer name not buffer object so multiple sql
 +      interactive buffers work properly.  Reverts misguided changes in
 +      earlier work.
 +      (sql-comint): Make sure different buffer name is used if "*SQL*"
 +      buffer is for a different product.
 +      (sql-make-alternate-buffer-name): Fix bug with "sql-database"
 +      login param.
 +      (sql-oracle, sql-sybase, sql-informix, sql-sqlite, sql-mysql)
 +      (sql-solid, sql-ingres, sql-ms, sql-postgres, sql-interbase)
 +      (sql-db2, sql-linter, sql-product-interactive, sql-rename-buffer):
 +      Accept new buffer name or prompt for one.
 +      (sql-port): Default to zero.
 +      (sql-comint-mysql): Handle "sql-port" as a numeric.
 +      (sql-port-history): Delete unused variable.
 +      (sql-get-login): Default "sql-port" to a number.
 +      (sql-product-alist): Correct Postgres prompt and terminator regexp.
 +      (sql-sqlite-program): Dynamically detect presence of "sqlite" or
 +      "sqlite3" executables.
 +      (sql-sqlite-login-params): Add "*.sqlite[23]?" database name pattern.
 +      (sql-buffer-live-p): New function.
 +      (sql-mode-menu, sql-send-string): Use it.
 +      (sql-mode-oracle-font-lock-keywords): Improve SQL*Plus REMARK
 +      syntax pattern.
 +      (sql-mode-postgres-font-lock-keywords): Support Postgres V9.
 +      (sql-mode-sqlite-font-lock-keywords): Hilight sqlite commands.
 +
 +2010-09-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/netrc.el (netrc-credentials): New convenience function.
 +
 +2010-09-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/texinfo.el (texinfo-syntax-propertize-function): New fun
 +      to replace texinfo-font-lock-syntactic-keywords.
 +      (texinfo-mode): Use it.
 +
 +      * textmodes/tex-mode.el (tex-common-initialization, doctex-mode):
 +      Use syntax-propertize-function.
 +
 +      * textmodes/sgml-mode.el (sgml-syntax-propertize-function): New var to
 +      replace sgml-font-lock-syntactic-keywords.
 +      (sgml-mode): Use it.
 +
 +      * textmodes/reftex.el (font-lock-syntactic-keywords): Don't declare
 +      since we don't use it.
 +
 +      * textmodes/bibtex.el (bibtex-mode): Use syntax-propertize-function.
 +
 +      * progmodes/vhdl-mode.el (vhdl-mode): Use syntax-propertize-function
 +      if available.
 +      (vhdl-fontify-buffer): Adjust.
 +
 +      * progmodes/tcl.el (tcl-syntax-propertize-function): New var to
 +      replace tcl-font-lock-syntactic-keywords.
 +      (tcl-mode): Use it.
 +
 +      * progmodes/simula.el (simula-syntax-propertize-function): New var to
 +      replace simula-font-lock-syntactic-keywords.
 +      (simula-mode): Use it.
 +
 +      * progmodes/sh-script.el (sh-st-symbol): Remove.
 +      (sh-font-lock-close-heredoc, sh-font-lock-open-heredoc): Add eol arg.
 +      (sh-font-lock-flush-syntax-ppss-cache, sh-font-lock-here-doc): Remove.
 +      (sh-font-lock-quoted-subshell): Assume we've already matched $(.
 +      (sh-font-lock-paren): Set syntax-multiline.
 +      (sh-font-lock-syntactic-keywords): Remove.
 +      (sh-syntax-propertize-function): New function to replace it.
 +      (sh-mode): Use it.
 +
 +      * progmodes/ruby-mode.el (ruby-here-doc-beg-re):
 +      Define while compiling.
 +      (ruby-here-doc-end-re, ruby-here-doc-beg-match)
 +      (ruby-font-lock-syntactic-keywords, ruby-comment-beg-syntax)
 +      (syntax-ppss, ruby-in-ppss-context-p, ruby-in-here-doc-p)
 +      (ruby-here-doc-find-end, ruby-here-doc-beg-syntax)
 +      (ruby-here-doc-end-syntax): Only define when
 +      syntax-propertize is not available.
 +      (ruby-syntax-propertize-function, ruby-syntax-propertize-heredoc):
 +      New functions.
 +      (ruby-in-ppss-context-p): Update to new syntax of heredocs.
 +      (electric-indent-chars): Silence bytecompiler.
 +      (ruby-mode): Use prog-mode, syntax-propertize-function, and
 +      electric-indent-chars.
 +
 +      * progmodes/python.el (python-syntax-propertize-function): New var to
 +      replace python-font-lock-syntactic-keywords.
 +      (python-mode): Use it.
 +      (python-quote-syntax): Simplify and adjust to new use.
 +
 +      * progmodes/perl-mode.el (perl-syntax-propertize-function): New fun to
 +      replace perl-font-lock-syntactic-keywords.
 +      (perl-syntax-propertize-special-constructs): New fun to replace
 +      perl-font-lock-special-syntactic-constructs.
 +      (perl-font-lock-syntactic-face-function): New fun.
 +      (perl-mode): Use it.
 +
 +      * progmodes/octave-mod.el (octave-syntax-propertize-sqs): New function
 +      to replace octave-font-lock-close-quotes.
 +      (octave-syntax-propertize-function): New function to replace
 +      octave-font-lock-syntactic-keywords.
 +      (octave-mode): Use it.
 +
 +      * progmodes/mixal-mode.el (mixal-syntax-propertize-function): New var;
 +      replaces mixal-font-lock-syntactic-keywords.
 +      (mixal-mode): Use it.
 +
 +      * progmodes/make-mode.el (makefile-syntax-propertize-function):
 +      New var; replaces makefile-font-lock-syntactic-keywords.
 +      (makefile-mode): Use it.
 +      (makefile-imake-mode): Adjust.
 +
 +      * progmodes/js.el (js--regexp-literal): Define while compiling.
 +      (js-syntax-propertize-function): New var; replaces
 +      js-font-lock-syntactic-keywords.
 +      (js-mode): Use it.
 +
 +      * progmodes/gud.el (gdb-script-syntax-propertize-function): New var;
 +      replaces gdb-script-font-lock-syntactic-keywords.
 +      (gdb-script-mode): Use it.
 +
 +      * progmodes/fortran.el (fortran-mode): Use syntax-propertize-function.
 +      (fortran--font-lock-syntactic-keywords): New var.
 +      (fortran-line-length): Update syntax-propertize-function and
 +      fortran--font-lock-syntactic-keywords.
 +
 +      * progmodes/cperl-mode.el (cperl-mode): Use syntax-propertize-function.
 +
 +      * progmodes/cfengine.el (cfengine-mode):
 +      Use syntax-propertize-function.
 +      (cfengine-font-lock-syntactic-keywords): Remove.
 +
 +      * progmodes/autoconf.el (autoconf-mode):
 +      Use syntax-propertize-function.
 +      (autoconf-font-lock-syntactic-keywords): Remove.
 +
 +      * progmodes/ada-mode.el (ada-set-syntax-table-properties)
 +      (ada-after-change-function, ada-initialize-syntax-table-properties)
 +      (ada-handle-syntax-table-properties): Only define when
 +      syntax-propertize is not available.
 +      (ada-mode): Use syntax-propertize-function.
 +
 +      * font-lock.el (font-lock-syntactic-keywords): Make obsolete.
 +      (font-lock-fontify-syntactic-keywords-region): Move handling of
 +      font-lock-syntactically-fontified to...
 +      (font-lock-default-fontify-region): ...here.
 +      Let syntax-propertize-function take precedence.
 +      (font-lock-fontify-syntactically-region): Cal syntax-propertize.
 +
 +      * emacs-lisp/syntax.el (syntax-propertize-function)
 +      (syntax-propertize-chunk-size, syntax-propertize--done)
 +      (syntax-propertize-extend-region-functions): New vars.
 +      (syntax-propertize-wholelines, syntax-propertize-multiline)
 +      (syntax-propertize--shift-groups, syntax-propertize-via-font-lock)
 +      (syntax-propertize): New functions.
 +      (syntax-propertize-rules): New macro.
 +      (syntax-ppss-flush-cache): Set syntax-propertize--done.
 +      (syntax-ppss): Call syntax-propertize.
 +
 +      * emacs-lisp/regexp-opt.el (regexp-opt-depth): Skip named groups.
 +
 +2010-09-10  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-init-process): Improve comments.
 +      XEmacs compatibility changes regarding (add-hook) 'local option
 +      and (set-process-query-on-exit-flag).
 +
 +2010-09-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-cache.el (tramp-parse-connection-properties):
 +      Set tramp-autoload cookie.
 +
 +2010-09-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * image.el (imagemagick-types-inhibit): Add :type, :version, :group.
 +      (imagemagick-register-types): Doc fix.
 +
 +2010-09-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/octave-mod.el (electric-indent-chars): Silence bytecomp.
 +
 +      * progmodes/js.el (require): Require is already "eval-and-compile".
 +      (js--re-search-forward): Avoid `eval'.  Preserve the error data.
 +      (js--re-search-backward): Use js--re-search-forward.
 +
 +      * progmodes/fortran.el (fortran-line-length): Don't recompute
 +      syntactic keywords redundantly a second time.
 +
 +      * progmodes/ada-mode.el: Replace "(set '" with setq.
 +      (ada-mode): Simplify.
 +      (ada-create-case-exception, ada-adjust-case-interactive)
 +      (ada-adjust-case-region, ada-format-paramlist, ada-indent-current)
 +      (ada-search-ignore-string-comment, ada-move-to-start)
 +      (ada-move-to-end): Use with-syntax-table.
 +
 +      * font-lock.el (save-buffer-state): Remove `varlist' arg.
 +      (font-lock-unfontify-region, font-lock-default-fontify-region):
 +      Update usage correspondingly.
 +      (font-lock-fontify-syntactic-keywords-region):
 +      Set parse-sexp-lookup-properties buffer-locally here.
 +      (font-lock-fontify-syntactically-region): Remove unused `ppss' arg.
 +
 +      * simple.el (blink-matching-open): Don't burp if we can't find a match.
 +
 +2010-09-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-report-ops):
 +      Error if not compiled with -DBYTE_CODE_METER.
 +
 +      * emacs-lisp/bytecomp.el (byte-recompile-directory):
 +      Ignore dir-locals-file.
 +
 +2010-09-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist):
 +      Not a const.
 +      (compilation-error-regexp-alist-alist): Rule out ": " in file names
 +      for the `gnu' messages.
 +      (compilation-set-skip-threshold): New command.
 +      (compilation-start): Use \' rather than $.
 +      (compilation-forget-errors): Use clrhash.
 +
 +2010-09-08  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-valid-dictionary-list):
 +      Simplify logic.
 +
 +2010-09-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Migrate to Tramp 2.2.  Rearrange load dependencies.
 +      (Bug#1529, Bug#5448, Bug#5705)
 +
 +      * Makefile.in (TRAMP_DIR, TRAMP_SRC): New variables.
 +      ($(TRAMP_DIR)/tramp-loaddefs.el): New target.
 +      (LOADDEFS): Add $(lisp)/net/tramp-loaddefs.el.
 +
 +      * net/tramp.el (top): Remove all other tramp-* loads except
 +      tramp-compat.el.  Remove all changes to tramp-unload-hook for
 +      other tramp-* packages.  Rearrange defun order.  Change calls of
 +      `tramp-compat-call-process', `tramp-compat-decimal-to-octal',
 +      `tramp-compat-octal-to-decimal' to new function names.
 +      (tramp-terminal-type, tramp-initial-end-of-output)
 +      (tramp-methods, tramp-foreign-file-name-handler-alist)
 +      (tramp-tramp-file-p, tramp-completion-mode-p)
 +      (tramp-send-command-and-check, tramp-get-remote-path)
 +      (tramp-get-remote-tmpdir, tramp-get-remote-ln)
 +      (tramp-shell-quote-argument): Set tramp-autoload cookie.
 +      (with-file-property, with-connection-property): Move to
 +      tramp-cache.el.
 +      (tramp-local-call-process, tramp-decimal-to-octal)
 +      (tramp-octal-to-decimal): Move to tramp-compat.el.
 +      (tramp-handle-shell-command): Do not require 'shell.
 +      (tramp-compute-multi-hops): No special handling for tramp-gw-*
 +      symbols.
 +      (tramp-unload-tramp): Do not call `tramp-unload-file-name-handlers'.
 +
 +      * net/tramp-cache.el (top): Require 'tramp.  Add to
 +      `tramp-unload-hook'.
 +      (tramp-cache-data, tramp-get-file-property)
 +      (tramp-set-file-property, tramp-flush-file-property)
 +      (tramp-flush-directory-property, tramp-get-connection-property)
 +      (tramp-set-connection-property, tramp-flush-connection-property)
 +      (tramp-cache-print, tramp-list-connections): Set tramp-autoload
 +      cookie.
 +      (with-file-property, with-connection-property): New defuns, moved
 +      from tramp.el.
 +      (tramp-flush-file-function): Use `with-parsed-tramp-file-name'
 +      macro.
 +
 +      * net/tramp-cmds.el (top): Add to `tramp-unload-hook'.
 +      (tramp-version): Set tramp-autoload cookie.
 +
 +      * net/tramp-compat.el (top): Require 'tramp-loaddefs.  Remove all
 +      changes to tramp-unload-hook for other tramp-* packages.  Add to
 +      `tramp-unload-hook'.
 +      (tramp-compat-decimal-to-octal, tramp-compat-octal-to-decimal)
 +      (tramp-compat-call-process): New defuns, moved from tramp.el.
 +
 +      * net/tramp-fish.el (top) Require just 'tramp.  Add objects to
 +      `tramp-methods' and `tramp-foreign-file-name-handler-alist'.  Add
 +      to `tramp-unload-hook'.  Change call of
 +      `tramp-compat-decimal-to-octal' to new function name.
 +      (tramp-fish-method): Make it a defconst.
 +      (tramp-fish-file-name-p): Make it a defsubst.
 +      (tramp-fish-method, tramp-fish-file-name-handler)
 +      (tramp-fish-file-name-p): Set tramp-autoload cookie.
 +
 +      * net/tramp-ftp.el (top) Add objects to `tramp-methods' and
 +      `tramp-foreign-file-name-handler-alist'.  Add to
 +      `tramp-unload-hook'.
 +      (tramp-ftp-method): Make it a defconst.
 +      (tramp-ftp-file-name-p): Make it a defsubst.
 +      (tramp-ftp-method, tramp-ftp-file-name-handler)
 +      (tramp-ftp-file-name-p): Set tramp-autoload cookie.
 +
 +      * net/tramp-gvfs.el (top) Add objects to `tramp-methods' and
 +      `tramp-foreign-file-name-handler-alist'.  Add to
 +      `tramp-unload-hook'.  Change checks, whether package can be
 +      loaded.
 +      (tramp-gvfs-file-name-p): Make it a defsubst.
 +      (tramp-gvfs-methods, tramp-gvfs-file-name-handler)
 +      (tramp-gvfs-file-name-p): Set tramp-autoload cookie.
 +      (tramp-gvfs-handle-file-directory-p): New defun.
 +      (tramp-gvfs-file-name-handler-alist): Use it.
 +
 +      * net/tramp-gw.el (top) Add objects to `tramp-methods' and
 +      `tramp-foreign-file-name-handler-alist'.  Add to
 +      `tramp-unload-hook'.
 +      (tramp-gw-tunnel-method, tramp-gw-default-tunnel-port)
 +      (tramp-gw-socks-method, tramp-gw-default-socks-port): Make it a
 +      defconst.
 +      (tramp-gw-tunnel-method, tramp-gw-socks-method)
 +      (tramp-gw-open-connection): Set tramp-autoload cookie.
 +
 +      * net/tramp-imap.el (top) Require just 'tramp.  Add objects to
 +      `tramp-methods' and `tramp-foreign-file-name-handler-alist'.  Add
 +      to `tramp-unload-hook'.  Change checks, whether package can be
 +      loaded.
 +      (tramp-imap-file-name-p): Make it a defsubst.
 +      (tramp-imap-method, tramp-imaps-method)
 +      (tramp-imap-file-name-handler)
 +      (tramp-imap-file-name-p): Set tramp-autoload cookie.
 +
 +      * net/tramp-smb.el (top) Require just 'tramp.  Add objects to
 +      `tramp-methods' and `tramp-foreign-file-name-handler-alist'.  Add
 +      to `tramp-unload-hook'.  Change checks, whether package can be
 +      loaded.  Change call of `tramp-compat-decimal-to-octal' to new
 +      function name.
 +      (tramp-smb-tunnel-method): Make it a defconst.
 +      (tramp-smb-file-name-p): Make it a defsubst.
 +      (tramp-smb-method, tramp-smb-file-name-handler)
 +      (tramp-smb-file-name-p): Set tramp-autoload cookie.
 +
 +      * net/tramp-uu.el (top) Add to `tramp-unload-hook'.
 +      (tramp-uuencode-region): Set tramp-autoload cookie.
 +
 +      * net/trampver.el (top) Add to `tramp-unload-hook'.
 +      (tramp-version, tramp-bug-report-address): Set tramp-autoload
 +      cookie.  Update release number.
 +
 +2010-09-07  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-start-process): Make sure original
 +      arg list is properly initialized (Bug#6993, Bug#6994).
 +
 +2010-09-06  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +
 +      * files.el (directory-abbrev-alist): Use \` as default regexp.
 +
 +      * emacs-lisp/rx.el (rx-any): Don't explode ranges that end in special
 +      chars like - or ] (bug#6984).
 +      (rx-any-condense-range): Explode 2-char ranges.
 +
 +2010-09-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * desktop.el (desktop-path): Bump :version after 2009-09-15 change.
 +
 +2010-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/bibtex.el:
 +      * proced.el: Update to new email for Roland Winkler <winkler@gnu.org>.
 +
 +2010-09-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/imap.el (imap-message-map): Remove optional buffer parameter,
 +      since no callers use it.
 +      (imap-message-get): Ditto.
 +      (imap-message-put): Ditto.
 +      (imap-mailbox-map): Ditto.
 +      (imap-mailbox-put): Ditto.
 +      (imap-mailbox-get): Ditto.
 +      (imap-mailbox-get): Revert last change for this function.
 +
 +2010-09-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/imap.el (imap-fetch-safe): Remove function, and alter all
 +      callers to use `imap-fetch' instead.  According to the comments, this
 +      should be safe, since all other IMAP clients use the 1:* syntax.
 +      (imap-enable-exchange-bug-workaround): Remove.
 +      (imap-debug): Remove -- doesn't seem very useful.
 +
 +2010-09-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/imap.el (imap-log): New convenience function used throughout
 +      instead of repeating the same code all over the place.
 +
 +2010-09-05  David De La Harpe Golden  <david@harpegolden.net>
 +
 +      * mouse.el (mouse-save-then-kill): Save region to kill-ring
 +      when mouse-drag-copy-region is non-nil (Bug#6956).
 +
 +2010-09-05  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * dired.el (dired-ls-sorting-switches, dired-sort-by-name-regexp):
 +      Improve regexps (Bug#6987).
 +      (dired-sort-toggle): Search more robustly for -t flag.
 +
 +      * files.el (get-free-disk-space): Search more robustly for
 +      "available" column.  Suggested by Ehud Karni
 +      <ehud@unix.mvs.co.il>.
 +
 +2010-09-05  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * international/uni-bidi.el:
 +      * international/uni-category.el:
 +      * international/uni-combining.el:
 +      * international/uni-decimal.el:
 +      * international/uni-mirrored.el:
 +      * international/uni-name.el: Regenerate.
 +
 +2010-09-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * electric.el (electric-indent-post-self-insert-function):
 +      Don't reindent with a sloppy indentation function.
 +
 +      * emacs-lisp/syntax.el (syntax-ppss): More sanity check to catch
 +      border case in change-log-mode.
 +
 +2010-09-04  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist):
 +      Remove ruby regexp; handle Ruby errors with gcc-include and gnu.
 +      Recognize leading tab in gcc-include regexp.  Ignore names with
 +      leading "from" or "in" in gnu regexp (Bug#6937).
 +
 +2010-09-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Avoid global recursive calls to kill-buffer-hooks; fit into 80 cols.
 +      * textmodes/ispell.el (ispell-process-buffer-name): Remove.
 +      (ispell-start-process): Avoid setq and simplify logic.
 +      (ispell-init-process): Setup kill-buffer-hook locally when needed.
 +      (kill-buffer-hook): Don't use it globally with code that uses
 +      expand-file-name since that may call kill-buffer via
 +      code_conversion_restore.
 +
 +2010-09-04  Noorul Islam K M  <noorul@noorul.com>  (tiny change)
 +
 +      * emacs-lisp/package.el (package-directory-list): Only call
 +      file-name-nondirectory on a string.
 +
 +2010-09-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package--download-one-archive):
 +      Ensure that archive-contents is valid before saving it.
 +      (package-activate-1, package-mark-obsolete, define-package)
 +      (package-compute-transaction, package-list-maybe-add): Use push.
 +
 +2010-09-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use SMIE's blink-paren for octave-mode.
 +      * progmodes/octave-mod.el (octave-font-lock-close-quotes):
 +      Backslashes do not escape single-quotes, single-quotes do.
 +      (octave-block-else-regexp, octave-block-end-regexp)
 +      (octave-block-match-alist): Remove.
 +      (octave-smie-bnf-table): New var, with old content.
 +      (octave-smie-op-levels): Use it.
 +      (octave-smie-closer-alist): New var.
 +      (octave-mode): Use it.  Setup smie-blink-matching and electric-indent.
 +      (octave-blink-matching-block-open): Remove.
 +      (octave-reindent-then-newline-and-indent, octave-electric-semi)
 +      (octave-electric-space): Let self-insert-command run expand-abbrev and
 +      blink parens.
 +
 +      * electric.el (electricity): New group.
 +      (electric-indent-chars): New var.
 +      (electric-indent-post-self-insert-function): New fun.
 +      (electric-indent-mode): New minor mode.
 +      (electric-pair-skip-self): New custom.
 +      (electric-pair-post-self-insert-function): New function.
 +      (electric-pair-mode): New minor mode.
 +
 +      * calc/calc-aent.el (calcAlg-blink-matching-check): New fun, to replace
 +      calcAlg-blink-matching-open.
 +      (calc-alg-ent-map, calc-alg-ent-esc-map): Initialize in the declaration.
 +      (calc-do-alg-entry): Only touch the part of the keymap that varies.
 +      Use the new blink-matching-check-function.
 +
 +      Provide blink-matching support to SMIE.
 +      * emacs-lisp/smie.el (smie-bnf-closer-alist): New function.
 +      (smie-blink-matching-triggers, smie-blink-matching-inners): New vars.
 +      (smie-blink-matching-check, smie-blink-matching-open): New functions.
 +
 +      * simple.el (newline): Fix last change to properly remove itself from
 +      the hook.
 +
 +2010-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (newline): Eliminate optimization.
 +      Use post-self-insert-hook to set hard-newline and things before
 +      running post-self-insert-hook.
 +      (blink-matching-check-mismatch): New function.
 +      (blink-matching-check-function): New variable.
 +      (blink-matching-open): Use them.
 +      Skip back forward over prefix chars skipped by forward-sexp.
 +      Don't check if the parens are backslash escaped.
 +      (blink-paren-post-self-insert-function): Check backslash escaping here.
 +
 +2010-09-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-menu-mode-map):
 +      Change package-menu-revert bindings to revert-buffer.
 +      (package-menu-mode): Set revert-buffer-function.
 +      (package-menu-revert): Doc fix.
 +
 +2010-09-02  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-init-process): Use "~/" as
 +      `default-directory' unless using Ispell per-directory personal
 +      dictionaries and not in a mini-buffer under XEmacs.
 +      (kill-buffer-hook): Do not kill ispell process on exit when
 +      `ispell-process-directory' is "~/".  (Bug#6143)
 +
 +2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * simple.el (kill-new): Call interprogram-cut-function with only
 +      one argument.
 +
 +      * term.el (term-mouse-paste): Don't call x-get-cutbuffer.
 +      Remove cut buffer from error message.
 +
 +      * term/x-win.el (x-select-text):
 +      * term/pc-win.el (x-selection-value):
 +      * term/ns-win.el (x-selection-value):
 +      * eshell/em-term.el:
 +      * w32-fns.el (x-get-selection-value):
 +      * mouse-sel.el (mouse-sel-set-selection-function):
 +      * frame.el (display-selections-p): Remove cut-buffer in documentation.
 +
 +      * term/x-win.el: Update documentation for x-last-selected-text-*.
 +      (x-last-selected-text-cut, x-last-selected-text-cut-encoded)
 +      (x-last-cut-buffer-coding, x-cut-buffer-max): Remove.
 +      (x-select-text): Remove argument PUSH, update documentation.  Remove
 +      cut-buffer code.
 +      (x-selection-value-internal): Was previously x-selection-value.
 +      (x-selection-value): Rename from x-cut-buffer-or-selection-value.
 +      Update documentation, remove cut-buffer code.  Call
 +      x-selection-value-internal.
 +      (x-clipboard-yank): Call x-selection-value-internal.
 +      (x-initialize-window-system): Remove setting of x-cut-buffer-max.
 +
 +      * term/pc-win.el (x-last-selected-text):
 +      x-cut-buffer-or-selection-value renamed to x-selection-value
 +      (x-select-text): Remove argument PUSH, update documentation.
 +
 +      * term/ns-win.el (x-setup-function-keys, ns-last-selected-text):
 +      x-cut-buffer-or-selection-value renamed to x-selection-value
 +      (x-selection-value): Renamed from x-cut-buffer-or-selection-value.
 +      (x-select-text): Remove argument PUSH, update documentation.
 +
 +      * emacs-lisp/cl-macs.el (x-get-cutbuffer, x-get-cut-buffer): Remove.
 +
 +      * w32-fns.el (x-last-selected-text):
 +      x-cut-buffer-or-selection-value renamed to x-selection-value.
 +      (x-cut-buffer-max): Remove.
 +      (x-select-text): Remove argument PUSH, update documentation.
 +
 +      * simple.el (interprogram-cut-function): Remove mention of PUSH.
 +
 +      * select.el (x-get-cut-buffer, x-set-cut-buffer): Remove.
 +
 +      * mouse-sel.el (mouse-sel-get-selection-function):
 +      x-cut-buffer-or-selection-value renamed to x-selection-value.
 +      (x-select-text): Remove optional push.
 +
 +2010-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (blink-paren-function): Move from C to here.
 +      (blink-paren-post-self-insert-function): New function.
 +      (post-self-insert-hook): Use it.
 +
 +      * emacs-lisp/pcase.el (pcase-split-memq):
 +      Fix overenthusiastic optimisation.
 +      (pcase-u1): Handle the case of a lambda pred.
 +
 +2010-08-31  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/mule-cmds.el (standard-display-european-internal):
 +      Setup standard-display-table for 8-bit characters by storing 8-bit
 +      characters in the element vector.
 +
 +      * disp-table.el (standard-display-8bit):
 +      Setup standard-display-table for 8-bit characters by storing 8-bit
 +      characters in the element vector.
 +      (standard-display-european): Likewise.
 +
 +2010-08-31  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * textmodes/nroff-mode.el (nroff-view): New command.
 +      (nroff-mode-map): Bind it to C-c C-c.
 +
 +2010-08-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-down-list): New command.
 +
 +      Remove old indentation and navigation code on octave-mode.
 +      * progmodes/octave-mod.el (octave-mode-map): Remap down-list to
 +      smie-down-list rather than add a binding for octave-down-block.
 +      (octave-mark-block, octave-blink-matching-block-open):
 +      Rely on forward-sexp-function.
 +      (octave-fill-paragraph): Don't narrow, so you can use
 +      indent-according-to-mode.
 +      (octave-block-begin-regexp, octave-block-begin-or-end-regexp): Remove.
 +      (octave-in-block-p, octave-re-search-forward-kw)
 +      (octave-re-search-backward-kw, octave-indent-calculate)
 +      (octave-end-as-array-index-p, octave-block-end-offset)
 +      (octave-scan-blocks, octave-forward-block, octave-backward-block)
 +      (octave-down-block, octave-backward-up-block, octave-up-block)
 +      (octave-before-magic-comment-p, octave-indent-line): Remove.
 +
 +2010-08-31  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package--read-archive-file): Just use
 +      `read', to avoid copying an additional string.
 +      (package-menu-mode): Set header-line-format here.
 +      (package-menu-refresh, package-menu-revert): Signal an error if
 +      not in the Package Menu.
 +      (package-menu-package-list): New var.
 +      (package--generate-package-list): Operate on the current buffer;
 +      don't assume that it is *Packages*, since the user may rename it.
 +      Allow persistent package listings and sort keys using
 +      package-menu-package-list and package-menu-package-sort-key.
 +      (package-menu--version-predicate): Fix version calculation.
 +      (package-menu-sort-by-column): Don't select the window.
 +      (package--list-packages): Create the *Packages* buffer.
 +      Set package-menu-package-list-key.
 +      (list-packages): Sorting by status is now the default.
 +      (package-buffer-info): Use match-string-no-properties.
 +      (define-package): Add a &rest argument for future proofing, but
 +      don't use it yet.
 +      (package-install-from-buffer, package-install-buffer-internal):
 +      Merge into a single function, package-install-from-buffer.
 +      (package-install-file): Change caller.
 +
 +      * finder.el: Load finder-inf using `require'.
 +      (finder-list-matches): Sorting by status is now the default.
 +      (finder-compile-keywords): Simpify printing.
 +
 +2010-08-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/octave-mod.el (octave-font-lock-keywords): Use regexp-opt.
 +      (octave-mode-map): Remove special bindings for forward/backward-block
 +      and octave-backward-up-block.  Use smie-close-block.
 +      (octave-continuation-marker-regexp): New var.
 +      (octave-continuation-regexp): Use it.
 +      (octave-operator-table, octave-smie-op-levels)
 +      (octave-operator-regexp, octave-smie-indent-rules): New vars.
 +      (octave-smie-backward-token, octave-smie-forward-token): New funs.
 +      (octave-mode): Use SMIE.
 +      (octave-close-block): Delete.
 +
 +2010-08-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * menu-bar.el (menu-bar-edit-menu) <"Paste">: Check selection in
 +      CLIPBOARD, not in PRIMARY.  (Bug#6944)
 +
 +2010-08-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-offset-rule): Let :parent take
 +      a list of parents.
 +      (smie-indent-column): Allow indirection through variables.
 +
 +      * composite.el (save-buffer-state): Delete, unused.
 +      * font-lock.el (save-buffer-state): Use with-silent-modifications.
 +      (font-lock-default-fontify-region): Use with-syntax-table.
 +      * jit-lock.el (with-buffer-unmodified): Remove.
 +      (with-buffer-prepared-for-jit-lock): Use with-silent-modifications.
 +
 +      Use `declare' in defmacros.
 +      * window.el (save-selected-window):
 +      * subr.el (with-temp-file, with-temp-message, with-syntax-table):
 +      * progmodes/python.el (def-python-skeleton):
 +      * net/dbus.el (dbus-ignore-errors):
 +      * jka-cmpr-hook.el (with-auto-compression-mode):
 +      * international/mule.el (with-category-table):
 +      * emacs-lisp/timer.el (with-timeout):
 +      * emacs-lisp/lisp-mnt.el (lm-with-file):
 +      * emacs-lisp/eieio.el (with-slots):
 +      * emacs-lisp/easymenu.el (easy-menu-define):
 +      * emacs-lisp/debug.el (debugger-env-macro):
 +      * emacs-lisp/cl-compat.el (Multiple-value-bind, Multiple-value-setq)
 +      (Multiple-value-call, Multiple-value-prog1):
 +      * emacs-lisp/cl-seq.el (cl-parsing-keywords, cl-check-key)
 +      (cl-check-test-nokey, cl-check-test, cl-check-match): Move indent and
 +      edebug rule to definition.
 +      * emacs-lisp/lisp-mode.el (save-selected-window)
 +      (with-current-buffer, combine-after-change-calls)
 +      (with-output-to-string, with-temp-file, with-temp-buffer)
 +      (with-temp-message, with-syntax-table, read-if, eval-after-load)
 +      (dolist, dotimes, when, unless):
 +      * emacs-lisp/byte-run.el (inline): Remove indent rule, redundant.
 +
 +2010-08-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * finder.el: Require `package'.
 +      (finder-known-keywords): Tweak descriptions.  Retire `oop' keyword.
 +      (finder-package-info): Var deleted.
 +      (finder-keywords-hash, finder--builtins-alist): New vars.
 +      (finder-compile-keywords): Compute package--builtins and
 +      finder-keywords-hash instead of finder-keywords-hash, respecting
 +      the "Package" header.
 +      (finder-unknown-keywords, finder-list-matches):
 +      Use finder-keywords-hash and package--list-packages.
 +      (finder-mode): Don't set font-lock-defaults.
 +      (finder-exit): We don't use "*Finder-package*" and "*Finder
 +      Category*" buffers anymore.
 +
 +      * emacs-lisp/package.el (package--builtins-base): Var deleted.
 +      (package--builtins): Set default value to nil.
 +      (package-initialize): Load precomputed value of package--builtins
 +      from finder-inf.el.
 +      (package-alist, package-compute-transaction)
 +      (package-download-transaction): Improve docstring.
 +      (package-read-all-archive-contents): Do not change
 +      package--builtins here.
 +      (list-packages): Make package-list-packages an alias for this.
 +      Sort by status by default.
 +      (package--list-packages): Add optional PACKAGES arg.
 +      (describe-package-1): Use font-lock-face property.  For built-in
 +      packages, insert file commentary.
 +      (package--generate-package-list): Rename from
 +      package-list-packages-internal; all callers changed.  Add optional
 +      PACKAGES arg.  Add alphabetical sort fallbacks.
 +      (package-menu--version-predicate, package-menu--status-predicate)
 +      (package-menu--description-predicate)
 +      (package-menu--name-predicate): New functions.
 +
 +      * info.el (Info-finder-find-node): Search package-alist instead of
 +      finder-package-info.
 +
 +2010-08-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * subr.el (version-regexp-alist): Don't use "a" and "b" for
 +      "alpha" and "beta".
 +      (version-to-list): Handle versions like "10.3d".
 +
 +2010-08-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/macroexp.el (macroexpand-all-1): Use pcase.
 +      (macroexp-accumulate): Use `declare'.
 +
 +2010-08-27  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * whitespace.el (whitespace-style): Adjust type declaration.
 +
 +2010-08-26  Magnus Henoch  <magnus.henoch@gmail.com>
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
 +      empty argument to gvfs-copy.
 +
 +2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * net/tramp-compat.el (tramp-compat-delete-file): Rewrite to
 +      handle new TRASH arg of `delete-file'.
 +
 +2010-08-26  Christian Lynbech  <christian.lynbech@tieto.com>  (tiny change)
 +
 +      * net/tramp.el (tramp-handle-insert-directory): Don't use
 +      `forward-word', its default syntax could be changed.
 +
 +2010-08-26  Toru TSUNEYOSHI  <t_tuneyosi@hotmail.com>
 +            Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Implement compression for inline methods.
 +
 +      * net/tramp.el (tramp-inline-compress-start-size): New defcustom.
 +      (tramp-copy-size-limit): Allow also nil.
 +      (tramp-inline-compress-commands): New defconst.
 +      (tramp-find-inline-compress, tramp-get-inline-compress)
 +      (tramp-get-inline-coding): New defuns.
 +      (tramp-get-remote-coding, tramp-get-local-coding): Remove,
 +      replaced by `tramp-get-inline-coding'.
 +      (tramp-handle-file-local-copy, tramp-handle-write-region)
 +      (tramp-method-out-of-band-p): Use `tramp-get-inline-coding'.
 +
 +2010-08-26  Noah Lavine  <noah549@gmail.com>  (tiny change)
 +
 +      Detect ssh 'ControlMaster' argument automatically in some cases.
 +
 +      * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
 +      (tramp-default-method): Use it.
 +
 +2010-08-26  Karel Klíč  <kklic@redhat.com>
 +
 +      * net/tramp.el (tramp-file-name-for-operation):
 +      Add file-selinux-context.
 +
 +2010-08-26  Łukasz Stelmach  <lukasz.stelmach@iem.pw.edu.pl>  (tiny change)
 +
 +      * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921).
 +
 +2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (beginning-of-buffer, end-of-buffer): Doc fix
 +      (Bug#6907).
 +
 +2010-08-26  Nathan Weizenbaum  <nweiz@cressida.sea.corp.google.com>  (tiny change)
 +
 +      * progmodes/js.el: Make indentation more customizable (Bug#6914).
 +      (js-paren-indent-offset, js-square-indent-offset)
 +      (js-curly-indent-offset): New options.
 +      (js--proper-indentation): Use them.
 +
 +2010-08-26  Daniel Colascione  <dan.colascione@gmail.com>
 +
 +      * progmodes/sh-script.el (sh-get-indent-info): Use syntax-ppss
 +      instead of inspecting font-lock properties (Bug#6916).
 +
 +2010-08-26  David Reitter  <david.reitter@gmail.com>
 +
 +      * server.el (server-visit-files): Run pre-command-hook and
 +      post-command-hook for each buffer while it is current (Bug#6910).
 +      (server-execute): Do not run hooks here.
 +
 +2010-08-26  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Sync with Tramp 2.1.19.
 +
 +      * net/tramp-cmds.el (tramp-cleanup-all-connections)
 +      (tramp-reporter-dump-variable, tramp-load-report-modules)
 +      (tramp-append-tramp-buffers): Use `tramp-compat-funcall'.
 +      (tramp-bug): Recommend setting of `tramp-verbose' to 9.
 +
 +      * net/tramp-compat.el (top): Do not autoload
 +      `tramp-handle-file-remote-p'.  Load tramp-util.el and tramp-vc.el
 +      only when `start-file-process' is not bound.
 +      (byte-compile-not-obsolete-vars): Define if not bound.
 +      (tramp-compat-funcall): New defmacro.
 +      (tramp-compat-line-beginning-position)
 +      (tramp-compat-line-end-position)
 +      (tramp-compat-temporary-file-directory)
 +      (tramp-compat-make-temp-file, tramp-compat-file-attributes)
 +      (tramp-compat-copy-file, tramp-compat-copy-directory)
 +      (tramp-compat-delete-file, tramp-compat-delete-directory)
 +      (tramp-compat-number-sequence, tramp-compat-process-running-p):
 +      Use it.
 +      (tramp-advice-file-expand-wildcards): Do not use
 +      `tramp-handle-file-remote-p'.
 +      (tramp-compat-make-temp-file): Simplify fallback implementation.
 +      (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 +      (tramp-compat-copy-tree): Remove function.
 +      (tramp-compat-delete-file): New defun.
 +      (tramp-compat-delete-directory): Provide implementation for older
 +      Emacsen.
 +      (tramp-compat-file-attributes): Handle only
 +      `wrong-number-of-arguments' error.
 +
 +      * net/tramp-fish.el (tramp-fish-handle-copy-file):
 +      Add PRESERVE_SELINUX_CONTEXT.
 +      (tramp-fish-handle-delete-file): Add TRASH arg.
 +      (tramp-fish-handle-directory-files-and-attributes):
 +      Do not use `tramp-fish-handle-file-attributes.
 +      (tramp-fish-handle-file-local-copy)
 +      (tramp-fish-handle-insert-file-contents)
 +      (tramp-fish-maybe-open-connection): Use `with-progress-reporter'.
 +
 +      * net/tramp-gvfs.el (top): Require url-util.
 +      (tramp-gvfs-mount-point): Remove.
 +      (tramp-gvfs-file-name-handler-alist): Add `file-selinux-context'
 +      and `set-file-selinux-context'.
 +      (tramp-gvfs-stringify-dbus-message, tramp-gvfs-send-command)
 +      (tramp-gvfs-handle-file-selinux-context)
 +      (tramp-gvfs-handle-set-file-selinux-context): New defuns.
 +      (with-tramp-dbus-call-method): Format trace message.
 +      (tramp-gvfs-handle-copy-file): Handle PRESERVE-SELINUX-CONTEXT.
 +      (tramp-gvfs-handle-copy-file, tramp-gvfs-handle-rename-file):
 +      Implement backup call, when operation on local files fails.
 +      Use progress reporter.  Flush properties of changed files.
 +      (tramp-gvfs-handle-delete-file): Add TRASH arg.  Use
 +      `tramp-compat-delete-file'.
 +      (tramp-gvfs-handle-expand-file-name): Expand "~/".
 +      (tramp-gvfs-handle-make-directory): Make more traces.
 +      (tramp-gvfs-handle-write-region): Protect deleting tmpfile.
 +      (tramp-gvfs-url-file-name): Hexify file name in url.
 +      (tramp-gvfs-fuse-file-name): Take also prefix (like dav shares)
 +      into account for the resulting file name.
 +      (tramp-gvfs-handler-askquestion): Preserve current message, in
 +      order to let progress reporter continue afterwards.  (Bug#6257)
 +      Return dummy mountpoint, when the answer is "no".
 +      See `tramp-gvfs-maybe-open-connection'.
 +      (tramp-gvfs-handler-mounted-unmounted)
 +      (tramp-gvfs-connection-mounted-p): Test also for new mountspec
 +      attribute "default_location".  Set "prefix" property.
 +      Handle default-location.
 +      (tramp-gvfs-mount-spec): Return both prefix and mountspec.
 +      (tramp-gvfs-maybe-open-connection): Test, whether mountpoint
 +      exists.  Raise an error, if not (due to a corresponding answer
 +      "no" in interactive questions, for example).
 +      Use `tramp-compat-funcall'.
 +
 +      * net/tramp-imap.el (top): Autoload `epg-make-context'.
 +      (tramp-imap-handle-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 +      (tramp-imap-do-copy-or-rename-file)
 +      (tramp-imap-handle-insert-file-contents)
 +      (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'.
 +      (tramp-imap-handle-delete-file): Add TRASH arg.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file):
 +      Add PRESERVE-SELINUX-CONTEXT.
 +      (tramp-smb-handle-copy-file)
 +      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 +      (tramp-smb-handle-write-region, tramp-smb-maybe-open-connection):
 +      Use `with-progress-reporter'.
 +      (tramp-smb-handle-delete-file): Add TRASH arg.
 +
 +      * net/tramp.el (tramp-methods): Move hostname to the end in all
 +      ssh `tramp-login-args'.  Add `tramp-async-args' attribute where
 +      appropriate.
 +      (tramp-verbose): Describe verbose level 9.
 +      (tramp-completion-function-alist)
 +      (tramp-file-name-regexp, tramp-chunksize)
 +      (tramp-local-coding-commands, tramp-remote-coding-commands)
 +      (with-connection-property, tramp-completion-mode-p)
 +      (tramp-action-process-alive, tramp-action-out-of-band)
 +      (tramp-check-for-regexp, tramp-file-name-p, tramp-equal-remote)
 +      (tramp-exists-file-name-handler): Fix docstring.
        (tramp-remote-process-environment): Use `format' instead of
        `concat'.  Protect version string by apostroph.
        (tramp-shell-prompt-pattern): Do not use a shy group in case of
        XEmacs.
 -      (tramp-file-name-regexp-unified)
 -      (tramp-completion-file-name-regexp-unified): On W32 systems, do
 -      not regard the volume letter as remote filename.  (Bug#5447)
 -      (tramp-perl-file-attributes)
 -      (tramp-perl-directory-files-and-attributes): Don't pass "$3".
 -      (tramp-vc-registered-read-file-names): Read input as
 -      here-document, otherwise the command could exceed maximum length
 -      of command line.
 -      (tramp-file-name-handler-alist): Add `file-selinux-context' and
 -      `set-file-selinux-context'.
 -      (tramp-debug-message): Add `tramp-compat-funcall' to ignored
 -      backtrace functions.
 -      (tramp-error-with-buffer): Don't show the connection buffer when
 -      we are in completion mode.
 -      (tramp-progress-reporter-update, tramp-remote-selinux-p)
 -      (tramp-handle-file-selinux-context)
 -      (tramp-handle-set-file-selinux-context, tramp-process-sentinel)
 -      (tramp-connectable-p, tramp-open-shell, tramp-get-remote-trash):
 +      (tramp-file-name-regexp-unified)
 +      (tramp-completion-file-name-regexp-unified): On W32 systems, do
 +      not regard the volume letter as remote filename.  (Bug#5447)
 +      (tramp-perl-file-attributes)
 +      (tramp-perl-directory-files-and-attributes): Don't pass "$3".
 +      (tramp-vc-registered-read-file-names): Read input as
 +      here-document, otherwise the command could exceed maximum length
 +      of command line.
 +      (tramp-file-name-handler-alist): Add `file-selinux-context' and
 +      `set-file-selinux-context'.
 +      (tramp-debug-message): Add `tramp-compat-funcall' to ignored
 +      backtrace functions.
 +      (tramp-error-with-buffer): Don't show the connection buffer when
 +      we are in completion mode.
 +      (tramp-progress-reporter-update, tramp-remote-selinux-p)
 +      (tramp-handle-file-selinux-context)
 +      (tramp-handle-set-file-selinux-context, tramp-process-sentinel)
 +      (tramp-connectable-p, tramp-open-shell, tramp-get-remote-trash):
 +      New defuns.
 +      (with-progress-reporter): New defmacro.
 +      (tramp-debug-outline-regexp): New defconst.
 +      (top, tramp-rfn-eshadow-setup-minibuffer)
 +      (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times)
 +      (tramp-handle-dired-compress-file, tramp-handle-shell-command)
 +      (tramp-completion-mode-p, tramp-check-for-regexp)
 +      (tramp-open-connection-setup-interactive-shell)
 +      (tramp-compute-multi-hops, tramp-read-passwd, tramp-clear-passwd)
 +      (tramp-time-diff, tramp-coding-system-change-eol-conversion)
 +      (tramp-set-process-query-on-exit-flag, tramp-unload-tramp):
 +      Use `tramp-compat-funcall'.
 +      (tramp-handle-make-symbolic-link): Flush file properties.
 +      (tramp-handle-load, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-handle-vc-registered, tramp-maybe-send-script)
 +      (tramp-find-shell): Use `with-progress-reporter'.
 +      (tramp-do-file-attributes-with-stat): Add space in format string,
 +      in order to work around a bug in pdksh.  Reported by Gilles Pion
 +      <gpion@lfdj.com>.
 +      (tramp-handle-verify-visited-file-modtime): Do not send a command
 +      when the connection is not established.
 +      (tramp-handle-set-file-times): Simplify the check for utc.
 +      (tramp-handle-directory-files-and-attributes)
 +      (tramp-get-remote-path): Use `copy-tree'.
 +      (tramp-completion-handle-file-name-all-completions): Ensure, that
 +      non remote files are still checked.  Oops.
 +      (tramp-handle-copy-file, tramp-do-copy-or-rename-file):
 +      Handle PRESERVE-SELINUX-CONTEXT.
 +      (tramp-do-copy-or-rename-file): Add progress reporter.
 +      (tramp-do-copy-or-rename-file-directly): Do not use
 +      `tramp-handle-file-remote-p'.
 +      (tramp-do-copy-or-rename-file-out-of-band):
 +      Use `tramp-compat-delete-directory'.
 +      (tramp-do-copy-or-rename-file-out-of-band)
 +      (tramp-compute-multi-hops, tramp-maybe-open-connection):
 +      Use `format-spec-make'.
 +      (tramp-handle-delete-file): Add TRASH arg.
 +      (tramp-handle-dired-uncache): Flush directory cache, not only file
 +      cache.
 +      (tramp-handle-expand-file-name)
 +      (tramp-completion-handle-file-name-all-completions)
 +      (tramp-completion-handle-file-name-completion):
 +      Use `tramp-connectable-p'.
 +      (tramp-handle-start-file-process): Set connection property "vec".
 +      Use it, in order to invalidate file caches.  Check only for
 +      `remote-tty' process property.
 +      Implement tty setting.  (Bug#4604, Bug#6360)
 +      (tramp-file-name-for-operation): Add `call-process-region' and
 +      `set-file-selinux-context'.
 +      (tramp-find-foreign-file-name-handler)
 +      (tramp-advice-make-auto-save-file-name)
 +      (tramp-set-auto-save-file-modes): Remove superfluous check for
 +      `stringp'.  This is done inside `tramp-tramp-file-p'.
 +      (tramp-file-name-handler): Trace 'quit.  Catch the error for some
 +      operations when we are in completion mode.  This gives the user
 +      the chance to correct the file name in the minibuffer.
 +      (tramp-completion-mode-p): Use `non-essential'.
 +      (tramp-handle-file-name-all-completions): Backward/ XEmacs
 +      compatibility: Use `completion-ignore-case' if
 +      `read-file-name-completion-ignore-case' does not exist.
 +      (tramp-get-debug-buffer): Use `tramp-debug-outline-regexp'.
 +      (tramp-find-shell, tramp-open-connection-setup-interactive-shell):
 +      `tramp-open-shell'.
 +      (tramp-action-password): Hide password prompt before next run.
 +      (tramp-process-actions): Widen connection buffer for the trace.
 +      (tramp-open-connection-setup-interactive-shell): Set `remote-tty'
 +      process property.  Trace stty settings if `tramp-verbose' >= 9.
 +      Apply workaround for IRIX64 bug.  Move argument of last
 +      `tramp-send-command' where it belongs to.
 +      (tramp-maybe-open-connection): Use `async-args' and `gw-args' in
 +      front of `login-args'.
 +      (tramp-get-ls-command, tramp-get-ls-command-with-dired): Run tests
 +      on "/dev/null" instead of "/".
 +      (tramp-get-ls-command-with-dired): Make test for "--dired"
 +      stronger.
 +      (tramp-set-auto-save-file-modes): Adapt version check.
 +      (tramp-set-process-query-on-exit-flag): Fix wrong parentheses.
 +      (tramp-handle-process-file): Call the program in a subshell, in
 +      order to preserve working directory.
 +      (tramp-handle-shell-command): Don't use hard-wired "/bin/sh" but
 +      `tramp-remote-sh' from `tramp-methods'.
 +      (tramp-get-ls-command): Make test for "--color=never" stronger.
 +      (tramp-check-for-regexp): Use (forward-line 1).
 +
 +      * net/trampver.el: Update release number.
 +
 +2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * help.el (help-map): Bind `C-h P' to describe-package.
 +
 +      * menu-bar.el (menu-bar-describe-menu): Add describe-package.
 +
 +      * emacs-lisp/package.el (package-refresh-contents): Catch errors
 +      when downloading archives.
 +      (describe-package-1): Add package commentary.
 +      (package-install-button-action): New function.
 +      (package-menu-mode-map): Bind ? to package-menu-describe-package.
 +      (package-menu-view-commentary): Function removed.
 +      (package-list-packages-internal): Hide the `package' package too.
 +
 +2010-08-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/misc-lang.el ("Arabic"): New language environment.
 +      Setup composition-function-table for Arabic characters.
 +
 +      * international/fontset.el (setup-default-fontset): Fix typo for
 +      arabic OTF spec (fini->fina).
 +
 +2010-08-25  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * menu-bar.el (menu-bar-set-tool-bar-position): Set frame parameter
 +      on all frames.
 +
 +2010-08-24  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * whitespace.el: Allow cleaning up blanks without blank
 +      visualization (Bug#6651).  Adjust help window for
 +      whitespace-toggle-options (Bug#6479).  Allow to use fill-column
 +      instead of whitespace-line-column (from EmacsWiki).  New version
 +      13.1.
 +      (whitespace-style): Added new value 'face.  Adjust docstring.
 +      (whitespace-space, whitespace-hspace, whitespace-tab): Adjust
 +      foreground property face.
 +      (whitespace-line-column): Adjust docstring and type declaration.
 +      (whitespace-style-value-list, whitespace-toggle-option-alist)
 +      (whitespace-help-text): Adjust const initialization.
 +      (whitespace-toggle-options, global-whitespace-toggle-options):
 +      Adjust docstring.
 +      (whitespace-display-window, whitespace-interactive-char)
 +      (whitespace-style-face-p, whitespace-color-on): Adjust code.
 +      (whitespace-help-scroll): New fun.
 +
 +2010-08-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (list-packages): Alias for
 +      package-list-packages.
 +
 +2010-08-24  Kevin Ryde  <user42@zip.com.au>
 +
 +      * textmodes/flyspell.el (flyspell-check-tex-math-command): Doc fix
 +      (Bug#5651).
 +
 +      * progmodes/ruby-mode.el (ruby): Add defgroup.
 +
 +2010-08-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/python.el: Add Ipython support (Bug#5390).
 +      (python-shell-prompt-alist)
 +      (python-shell-continuation-prompt-alist): New options.
 +      (python--set-prompt-regexp): New function.
 +      (inferior-python-mode, run-python, python-shell): Require
 +      ansi-color.  Use python--set-prompt-regexp to set the comint
 +      prompt based on the Python interpreter.
 +      (python--prompt-regexp): New var.
 +      (python-check-comint-prompt)
 +      (python-comint-output-filter-function): Use it.
 +      (run-python): Use a pipe (Bug#5694).
 +
 +2010-08-24  Fabian Ezequiel Gallina  <galli.87@gmail.com>  (tiny change)
 +
 +      * progmodes/python.el (python-send-region): Send a different
 +      Python command if Ipython is in use.
 +      (python-check-version): Use a Python command to find the version.
 +
 +2010-08-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-yank-primary): Avoid setting primary when
 +      deactivating the mark (Bug#6872).
 +
 +2010-08-23  Chris Foote  <chris@foote.com.au>  (tiny change)
 +
 +      * progmodes/python.el (python-block-pairs): Allow use of "finally"
 +      with "else" (Bug#3991).
 +
 +2010-08-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/dbus.el: Accept UNIX domain sockets as bus address.
 +      (top): Don't initialize `dbus-registered-objects-table' anymore,
 +      this is done in dbusbind,c.
 +      (dbus-check-event): Adapt test for bus.
 +      (dbus-return-values-table, dbus-unregister-service)
 +      (dbus-event-bus-name, dbus-introspect, dbus-register-property):
 +      Adapt doc string.
 +
 +2010-08-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * ido.el (ido-use-virtual-buffers): Fix typo in docstring.
 +
 +2010-08-22  Juri Linkov  <juri@jurta.org>
 +
 +      * simple.el (read-extended-command): New function with the logic
 +      for `completing-read' moved to Elisp from `execute-extended-command'.
 +      Use `function-called-at-point' in `minibuffer-default-add-function'
 +      to get a command name for M-n (bug#5364, bug#5214).
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * startup.el (command-line-1): Issue warning for ignored arguments
 +      --unibyte, etc (Bug#6886).
 +
 +2010-08-22  Leo  <sdl.web@gmail.com>
 +
 +      * net/rcirc.el (rcirc-add-or-remove): Accept a list of elements.
 +      (ignore, bright, dim, keyword): Split list of nicknames before
 +      passing to rcirc-add-or-remove (Bug#6894).
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix (Bug#6880).
 +
 +2010-08-22  Leo  <sdl.web@gmail.com>
 +
 +      Fix buffer-list rename&refresh after killing a buffer in ido.
 +      * ido.el: Revert Óscar's.
 +      (ido-kill-buffer-at-head): Exit the minibuffer with ido-exit=refresh.
 +      Remember the buffers at head, rather than their name.
 +      * iswitchb.el (iswitchb-kill-buffer): Re-make the list.
 +
 +2010-08-22  Kirk Kelsey  <kirk.kelsey@0x4b.net>  (tiny change)
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/make-mode.el (makefile-fill-paragraph): Account for the
 +      extra backslash added to each line (bug#6890).
 +
 +2010-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (read-key): Don't echo keystrokes (bug#6883).
 +
 +2010-08-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * menu-bar.el (menu-bar-games-menu): Add landmark.
 +
 +2010-08-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * align.el (align-regexp): Make group and spacing arguments
 +      use the interactive defaults when non-interactive.  (Bug#6698)
 +
 +      * mail/rmail.el (rmail-forward): Replace mail-text-start with its
 +      expansion, so as not to need sendmail.
 +      (mail-text-start): Remove declaration.
 +      (rmail-retry-failure): Require sendmail.
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * subr.el (read-key): Don't hide the menu-bar entries (bug#6881).
 +
 +2010-08-22  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * progmodes/flymake.el (flymake-start-syntax-check-process):
 +      Use `start-file-process' in order to let it run also on remote hosts.
 +
 +2010-08-22  Kenichi Handa  <handa@m17n.org>
 +
 +      * files.el: Add `word-wrap' as safe local variable.
 +
 +2010-08-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * woman.el (woman-translate): Case matters.  (Bug#6849)
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (kill-region): Doc fix (Bug#6787).
 +
 +2010-08-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (diary-header-line-format):
 +      Fit it to the window, not the frame.
 +
 +2010-08-22  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * subr.el (ignore-errors): Add debug declaration.
 +
 +2010-08-22  Geoff Gole  <geoffgole@gmail.com>  (tiny change)
 +
 +      * whitespace.el (whitespace-color-off): Remove post-command-hook
 +      locally.
 +
 +2010-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/add-log.el (add-log-file-name): Don't get confused by symlinks.
 +
 +2010-08-21  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-group-value-create): Add extra newline
 +      before end line (Bug#6876).
 +
 +2010-08-21  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-save-then-kill): Don't save region to kill ring
 +      when extending it.  Before killing on the second click, check if
 +      the buffer is the correct one.  Doc fix.
 +      (mouse-secondary-save-then-kill): Allow usage without first
 +      calling mouse-start-secondary, by defaulting to point.  Don't save
 +      an empty secondary selection.  Doc fix.
 +
 +2010-08-21  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * whitespace.el: Fix slow cursor movement (Bug#6172).  Reported by
 +      Christoph Groth <cwg@falma.de> and Liu Xin <x_liu@neusoft.com>.
 +      New version 13.0.
 +      (whitespace-empty-at-bob-regexp, whitespace-empty-at-eob-regexp):
 +      Adjust initialization.
 +      (whitespace-bob-marker, whitespace-eob-marker)
 +      (whitespace-buffer-changed): New vars.
 +      (whitespace-cleanup, whitespace-color-on, whitespace-color-off)
 +      (whitespace-empty-at-bob-regexp, whitespace-empty-at-eob-regexp)
 +      (whitespace-post-command-hook, whitespace-display-char-on):
 +      Adjust code.
 +      (whitespace-looking-back, whitespace-buffer-changed): New funs.
 +      (whitespace-space-regexp, whitespace-tab-regexp): Fun eliminated.
 +
 +2010-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * files.el (locate-file-completion-table): Only list the .el and .elc
 +      extensions if there's no other choice (bug#5955).
 +
 +      * facemenu.el (facemenu-self-insert-data): New var.
 +      (facemenu-post-self-insert-function, facemenu-set-self-insert-face):
 +      New functions.
 +      (facemenu-add-face): Use them.
 +
 +      * simple.el (blink-matching-open): Obey forward-sexp-function.
 +
 +2010-08-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (prog-mode-map): New var.
 +      (prog-indent-sexp): New command.
 +
 +      * progmodes/octave-mod.el (octave-mode-menu): Make toggle buttons.
 +
 +      * progmodes/prolog.el (smie): Require.
 +
 +      * emacs-lisp/smie.el (smie-default-backward-token)
 +      (smie-default-forward-token): Strip properties.
 +      (smie-next-sexp): Be more careful with associative operators.
 +      (smie-forward-sexp-command): Generalize.
 +      (smie-backward-sexp-command): Simplify.
 +      (smie-closer-alist): New var.
 +      (smie-close-block): New command.
 +      (smie-indent-debug-log): New var.
 +      (smie-indent-offset-rule): Add a few more cases.
 +      (smie-indent-column): New function.
 +      (smie-indent-after-keyword): Use it.
 +      (smie-indent-keyword): Use it.
 +      Fix up the opener code's point position.
 +      (smie-indent-comment): Only applies at BOL.
 +      (smie-indent-debug): New command.
 +
 +      * emacs-lisp/autoload.el (make-autoload): Preload the macros's
 +      declarations that are useful before running the macro.
 +
 +2010-08-18  Joakim Verona  <joakim@verona.se>
 +
 +      * image.el (imagemagick-types-inhibit): New variable.
 +      (imagemagick-register-types): New function.
 +      * image-mode.el (image-transform-properties): New function.
 +      (image-transform-set-scale, image-transform-fit-to-height)
 +      (image-transform-set-rotation, image-transform-set-resize)
 +      (image-transform-fit-to-width, image-transform-fit-to-height):
 +      New functions.
 +      (image-toggle-display-image): Support image transforms.
 +
 +2010-08-18  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * image.el (create-animated-image): Don't add heuristic mask to image
 +      (Bug#6839).
 +
 +2010-08-18  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * term/ns-win.el (ns-get-pasteboard, ns-set-pasteboard):
 +      Use QCLIPBOARD instead of QPRIMARY (Bug#6677).
 +
 +2010-08-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/lisp.el (up-list): Obey forward-sexp-function if set.
 +
 +      Font-lock '...' strings, plus various simplifications and fixes.
 +      * progmodes/octave-mod.el (octave-font-lock-keywords): Use regexp-opt.
 +      (octave-font-lock-close-quotes): New function.
 +      (octave-font-lock-syntactic-keywords): New var.
 +      (octave-mode): Use it.  Set beginning-of-defun-function.
 +      (octave-mode-map): Don't override the <foo>-defun commands.
 +      (octave-mode-menu): Pass it directly to easy-menu-define;
 +      remove (now generic) <foo>-defun commands; use info-lookup-symbol.
 +      (octave-block-match-alist): Fix up last change so that
 +      octave-close-block uses the more specific keyword.
 +      (info-lookup-mode): Silence byte-compiler.
 +      (octave-beginning-of-defun): Not interactive any more.
 +      Optimize slightly.
 +      (octave-end-of-defun, octave-mark-defun, octave-in-defun-p): Remove.
 +      (octave-indent-defun, octave-send-defun): Use mark-defun instead.
 +      (octave-completion-at-point-function): Make sure point is within
 +      beg..end.
 +      (octave-reindent-then-newline-and-indent):
 +      Use reindent-then-newline-and-indent.
 +      (octave-add-octave-menu): Remove.
 +
 +2010-08-17  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * mail/emacsbug.el (report-emacs-bug-insert-to-mailer)
 +      (report-emacs-bug-can-use-xdg-email): New functions.
 +      (report-emacs-bug): Set can-xdg-email to result of
 +      report-emacs-bug-can-use-xdg-email.  If can-xdg-email bind
 +      \C-cm to report-emacs-bug-insert-to-mailer and add help text
 +      about it.
 +
 +      * net/browse-url.el (browse-url-default-browser): Add cond
 +      for browse-url-xdg-open.
 +      (browse-url-can-use-xdg-open, browse-url-xdg-open): New functions.
 +
 +2010-08-17  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/cc-engine.el (c-new-BEG, c-new-END)
 +      (c-fontify-recorded-types-and-refs): Define for compiler.
 +      * progmodes/cc-mode.el (c-new-BEG, c-new-END): Move definitions
 +      before use.
 +
 +      * calendar/icalendar.el (icalendar--convert-recurring-to-diary):
 +      Fix format call.
 +
 +2010-08-17  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-make-symbolic-link): Flush file
 +      properties.
 +      (tramp-handle-process-file): Call the program in a subshell, in
 +      order to preserve working directory.
 +      (tramp-action-password): Hide password prompt before next run.
 +      (tramp-process-actions): Widen connection buffer for the trace.
 +
 +2010-08-16  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * net/rcirc.el (rcirc-log-process-buffers): New option.
 +      (rcirc-print): Use it.
 +      (rcirc-generate-log-filename): New function.
 +      (rcirc-log-filename-function): Change default to
 +      rcirc-generate-log-filename (Bug#6828).
 +
 +2010-08-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (deactivate-mark): If select-active-regions is `only',
 +      only set selection for temporarily active regions.
 +
 +      * cus-start.el: Change defcustom for select-active-regions.
 +
 +2010-08-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse--drag-set-mark-and-point): New function.
 +      (mouse-drag-track): Use LOCATION arg to push-mark.
 +      Use mouse--drag-set-mark-and-point to take click-count into
 +      consideration when updating point and mark (Bug#6840).
 +
 +2010-08-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist):
 +      Give the Ruby rule a lower priority than Gnu (Bug#6778).
 +
 +2010-08-14  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +
 +      * font-lock.el (lisp-font-lock-keywords-2):
 +      Add combine-after-change-calls, condition-case-no-debug,
 +      with-demoted-errors, and with-silent-modifications (Bug#6025).
 +
 +2010-08-14  Kevin Ryde  <user42@zip.com.au>
 +
 +      * emacs-lisp/copyright.el (copyright-update-year)
 +      (copyright-update): Temporary switch-to-buffer to ensure the
 +      buffer change being queried is visible (Bug#5394).
 +
 +2010-08-14  Tom Tromey  <tromey@redhat.com>
 +
 +      * progmodes/etags.el (tags-file-name): Mark safe if stringp
 +      (Bug#6733).
 +
 +2010-08-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mouse.el (mouse-yank-primary): Fix mouse-2 on MS-Windows and
 +      MS-DOS.  (Bug#6689)
 +
 +2010-08-13  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * menu-bar.el (menu-bar-set-tool-bar-position): New function.
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-left)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-right)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-top)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-bottom):
 +      Call menu-bar-set-tool-bar-position.
 +
 +2010-08-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/octave-mod.el (octave-mode-syntax-table): Use the new "c"
 +      comment style (bug#6834).
 +      * progmodes/scheme.el (scheme-mode-syntax-table):
 +      * emacs-lisp/lisp-mode.el (lisp-mode-syntax-table): Remove spurious
 +      "b" flag in "' 14b" syntax.
 +
 +      * progmodes/octave-mod.el (octave-mode-map): Remove special bindings
 +      for (un)commenting the region and performing completion.
 +      (octave-mode-menu): Use standard commands for help and completion.
 +      (octave-mode-syntax-table): Support %{..%} comments (sort of).
 +      (octave-mode): Use define-derived-mode.
 +      Set completion-at-point-functions and don't set columns.
 +      Don't disable adaptive-fill-regexp.
 +      (octave-describe-major-mode, octave-comment-region)
 +      (octave-uncomment-region, octave-comment-indent)
 +      (octave-indent-for-comment): Remove.
 +      (octave-indent-calculate): Rename from calculate-octave-indent.
 +      (octave-indent-line, octave-fill-paragraph): Update caller.
 +      (octave-initialize-completions): No need to make an alist.
 +      (octave-completion-at-point-function): New function.
 +      (octave-complete-symbol): Use it.
 +      (octave-insert-defun): Use define-skeleton.
 +
 +      * progmodes/octave-mod.el (octave-mode): Set comment-add.
 +      (octave-mode-map): Use comment-dwim (bug#6829).
 +
 +2010-08-12  Antoine Levitt  <antoine.levitt@gmail.com>  (tiny change)
 +
 +      * cus-edit.el (custom-save-variables, custom-save-faces): Fix up
 +      indentation of inserted comment.
 +
 +2010-08-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * faces.el (region): Add type gtk that uses gtk colors.
 +
 +      * dynamic-setting.el (dynamic-setting-handle-config-changed-event):
 +      Handle theme-name change.
 +
 +2010-08-10  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.5
 +      (sql-product-alist): Add :prompt-cont-regexp property for several
 +      database products.
 +      (sql-prompt-cont-regexp): New variable.
 +      (sql-output-newline-count, sql-output-by-send):
 +      New variables.  Record number of newlines in input text.
 +      (sql-send-string): Handle multiple filters and count newlines.
 +      (sql-send-magic-terminator): Count terminator newline.
 +      (sql-interactive-remove-continuation-prompt): Filters output to
 +      remove continuation prompts; one for each newline.
 +      (sql-interactive-mode): Set up new variables, prompt regexp and
 +      output filter.
 +      (sql-mode-sqlite-font-lock-keywords): Correct some keywords.
 +      (sql-make-alternate-buffer-name): Correct buffer name in edge cases.
 +
 +2010-08-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el: New file.
 +
 +2010-08-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-vc-registered-read-file-names): Read input
 +      as here-document, otherwise the command could exceed maximum
 +      length of command line.
 +      (tramp-handle-vc-registered): Call script accordingly.
 +      Reported by Toru TSUNEYOSHI <t_tuneyosi@hotmail.com>.
 +
 +2010-08-10  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el: Exclude U+05C3 (Hebrew SOF PASUQ) from the
 +      composable pattern.
 +
 +2010-08-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-version-split)
 +      (package--version-first-nonzero, package-version-compare):
 +      Functions removed.
 +      (package-directory-list, package-load-all-descriptors)
 +      (package--built-in, package-activate, define-package)
 +      (package-installed-p, package-compute-transaction)
 +      (package-read-all-archive-contents)
 +      (package--add-to-archive-contents, package-buffer-info)
 +      (package-tar-file-info, package-list-packages-internal):
 +      Use version-to-list and version-list-*.
 +
 +      * emacs-lisp/package-x.el (package-upload-buffer-internal):
 +      Use version-to-list.
 +      (package-upload-buffer-internal): Use version-list-<=.
 +
 +2010-08-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el: Exclude U+05BD (Hebrew MAQAF) from the
 +      composable pattern.
 +
 +2010-08-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * tutorial.el (tutorial--default-keys): C-d is now bound to
 +      delete-forward-char (Bug#6826).
 +
 +      * mouse.el (mouse-drag-track): Remove accidentally-removed check
 +      for `double' value of mouse-1-click-follows-link (Bug#6807).
 +
 +2010-08-08  Johan Bockgård  <bojohan@gnu.org>
 +
 +      * replace.el (replace-highlight): Bind isearch-forward and
 +      isearch-error, ensuring that highlighting is updated if the user
 +      switches the search direction (Bug#6808).
 +
 +      * isearch.el (isearch-lazy-highlight-forward): New var.
 +      (isearch-lazy-highlight-new-loop, isearch-lazy-highlight-search):
 +      (isearch-lazy-highlight-update): Use it.
 +
 +2010-08-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/mule.el (define-charset): Store NAME as :base property.
 +      (ctext-non-standard-encodings-table): Pay attention to charset aliases.
 +      (ctext-pre-write-conversion): Sort ctext-standard-encodings by the
 +      current priority.  Force using the designation of the specific
 +      charset by adding `charset' text property.  Improve the whole algorithm.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emulation/pc-select.el (pc-selection-mode-hook)
 +      (copy-region-as-kill-nomark, beginning-of-buffer-mark)
 +      (pc-selection-mode): Fix typos in docstrings.
 +
 +2010-08-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/cyrillic.el: Don't add "microsoft-cp1251" to
 +      ctext-non-standard-encodings-alist here.
 +
 +      * international/mule.el (ctext-non-standard-encodings-alist):
 +      Add "koi8-r" and "microsoft-cp1251".
 +      (ctext-standard-encodings): New variable.
 +      (ctext-non-standard-encodings-table): List only elements for
 +      non-standard encodings.
 +      (ctext-pre-write-conversion): Adjust for the above change.
 +      Check ctext-standard-encodings.
 +
 +      * international/mule-conf.el (compound-text): Doc fix.
 +      (ctext-no-compositions): Doc fix.
 +      (compound-text-with-extensions): Doc fix.
 +
 +2010-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (exchange-dot-and-mark): Mark obsolete, finally.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/which-func.el (which-func-format): Split help-echo text
 +      into lines, like other mode-line tooltips.
 +
 +      * server.el (server-start): When using TCP sockets, force IPv4
 +      and use a literal 127.0.0.1 for localhost.  (Related to bug#6781.)
 +
 +2010-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * bindings.el (complete-symbol): Run completion-at-point as a fallback.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * term.el (term-delimiter-argument-list): Reflow docstring.
 +      (term-read-input-ring, term-write-input-ring, term-send-input)
 +      (term-bol, term-erase-in-display, serial-supported-or-barf):
 +      Fix typos in docstrings.
 +
 +2010-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * bindings.el (function-key-map): Add a S-tab => backtab fallback.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * dabbrev.el (dabbrev-completion): Fix typo in docstring.
 +
 +2010-08-08  MON KEY  <monkey@sandpframing.com>  (tiny change)
 +
 +      * emacs-lisp/syntax.el (syntax-ppss-toplevel-pos):
 +      Fix typo in docstring (bug#6747).
 +
 +2010-08-08  Leo  <sdl.web@gmail.com>
 +
 +      * eshell/esh-io.el (eshell-get-target): Better detection of
 +      read-only file (Bug#6762).
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * align.el (align-default-spacing): Doc fix.
 +      (align-region-heuristic, align-regexp): Fix typos in docstrings.
 +
 +2010-08-08  Stephen Peters  <speters@itasoftware.com>
 +
 +      * calendar/icalendar.el
 +      (icalendar--split-value): Fix splitting regexp.  (Bug#6766)
 +      (icalendar--get-weekday-numbers): New.
 +      (icalendar--convert-recurring-to-diary): Handle multiple byday
 +      values in weekly rules.  (Bug#6766)
 +
 +2010-08-08  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * calendar/icalendar.el (icalendar-uid-format): Doc fix.
 +      (icalendar--create-uid, icalendar-export-region)
 +      (icalendar--parse-summary-and-rest): Code formatting.
 +
 +2010-08-08  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc.el (calc-trail-mode,calc-refresh): Use `face' property
 +      to italicize headers.
 +      (calc-highlight-selections-with-faces): New variable.
 +      (calc-selected-face, calc-nonselected-face): New faces.
 +
 +      * calc/calccomp.el (math-comp-highlight-string): Use
 +      `calc-highlight-selections-with-faces' to determine how to highlight
 +      sub-formulas.
 +
 +      * calc/calc-sel.el (calc-show-selections): Change message to when
 +      using faces to highlight selections.
 +
 +2010-08-07  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el (sql-mode-sqlite-font-lock-keywords):
 +      Add SQLite 3 keywords, functions and datatypes.
 +      (sql-interactive-mode): Remove `comint-process-echoes' set to t
 +      (Bug#6686).
 +
 +2010-08-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (select-active-regions): Move to keyboard.c.
 +      (deactivate-mark): Used saved-region-selection.
 +      (select-active-region): Function removed.
 +      (activate-mark, set-mark, push-mark-command)
 +      (handle-shift-selection): Don't call it.
 +      (keyboard-quit): Avoid adding the region to the window selection.
 +
 +      * mouse.el (mouse-drag-track): Remove hacks to deal with old
 +      select-active-regions implementation.
 +      (mouse-yank-at-click): Doc fix.
 +
 +      * cus-start.el: Add custom declaration for select-active-regions.
 +
 +2010-08-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * simple.el (delete-forward-char): Doc fix.
 +
 +      * tutorial.el (help-with-tutorial): Hack safe file-local variables
 +      after reading the tutorial.
 +
 +2010-08-06  Alan Mackenzie  <bug-cc-mode@gnu.org>
 +
 +      * progmodes/cc-cmds.el (c-mask-paragraph, c-fill-paragraph): Fix
 +      for the case that a C style comment has its delimiters alone on
 +      their respective lines.
 +
 +2010-08-06  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-start-file-process): Set connection
 +      property "vec".
 +      (tramp-process-sentinel): Use it for flushing the cache.  We
 +      cannot do it via the process buffer, the buffer could be deleted
 +      already when running the sentinel.
 +
 +2010-08-06  Jürgen Hötzel  <juergen@archlinux.org>  (tiny change)
 +
 +      * comint.el (comint-mode): Make directory tracking functions
 +      functional on remote files.  (Bug#6764)
 +
 +2010-08-06  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vc/diff-mode.el (diff-mode-shared-map): Bind g to revert-buffer.
 +
 +2010-08-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * emacs-lisp/find-gc.el (find-gc-source-files): Rename
 +      unexec.c => unexcoff.c.
 +
 +      * emacs-lisp/authors.el (authors-fixed-entries): Rename
 +      unexec.c => unexcoff.c.
 +
 +2010-08-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-dired-uncache): Flush directory
 +      cache, not only file cache.
 +      (tramp-process-sentinel): New defun.
 +      (tramp-handle-start-file-process): Use it, in order to invalidate
 +      file caches.
 +
 +2010-08-03  Leo  <sdl.web@gmail.com>
 +
 +      * server.el (server-start): Simplify loop.
 +
 +2010-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * frame.el (screen-height, screen-width, set-screen-width)
 +      (set-screen-height): Remove ancient compatibility aliases.
 +
 +      * textmodes/fill.el (justify-current-line): Don't add 1 to nspaces
 +      when justifying.  It seems useless and harmful for ncols=1 (bug#6738).
 +
 +      * emacs-lisp/timer.el (timer-event-handler): Protect against timers
 +      that change current buffer.
 +
 +2010-08-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * mouse.el (mouse-fixup-help-message): Match "mouse-2" only at the
 +      beginning of the string.  Use `string-match-p'.  (Bug#6765)
 +
 +2010-08-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cus-start.el (x-gtk-use-system-tooltips): New variable.
 +
 +2010-08-01  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package--list-packages): Fix column alignment.
 +      (package--builtins): Tweak descriptions.
 +      (package-print-package): Upcase descriptions if necessary.
 +      Show all built-in packages in font-lock-builtin-face.
 +      (package-list-packages-internal): Omit "emacs" package.
 +      Show status of built-in packages as "built-in".
 +
 +2010-07-31  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-save-then-kill): Doc fix.  Deactivate mark
 +      before killing to preserve the primary selection (Bug#6701).
 +
 +      * term/x-win.el (x-select-text): Doc fix.
 +
 +2010-07-31  Nathaniel Flath  <flat0103@gmail.com>
 +
 +      Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
 +      The following functions were modified or created:
 +
 +      * progmodes/cc-vars.el (c-offsets-alist, c-inside-block-syms)
 +      (objc-font-lock-extra-types):
 +      * progmodes/cc-mode.el (c-basic-common-init):
 +      * progmodes/cc-langs.el (c-make-mode-syntax-table)
 +      (c++-make-template-syntax-table)
 +      (c-identifier-syntax-modifications, c-symbol-start, c-operators)
 +      (c-<-op-cont-regexp, c->-op-cont-regexp, c-class-decl-kwds)
 +      (c-brace-list-decl-kwds, c-modifier-kwds, c-prefix-spec-kwds-re)
 +      (c-type-list-kwds, c-decl-prefix-re, c-opt-type-suffix-key):
 +      * progmodes/cc-fonts.el (c-make-inverse-face)
 +      (c-basic-matchers-after):
 +      * progmodes/cc-engine.el (c-forward-keyword-clause)
 +      (c-forward-<>-arglist, c-forward-<>-arglist-recur)
 +      (c-forward-name, c-forward-type, c-forward-decl-or-cast-1)
 +      (c-guess-continued-construct, c-guess-basic-syntax):
 +
 +2010-07-31  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * faces.el (face-all-attributes): Improve documentation (Bug#6767).
 +
 +2010-07-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.el (bidi-paragraph-direction): Define safe local values.
 +
 +      * language/hebrew.el ("Hebrew"): Add TUTORIAL.he to
 +      language-info-alist.  Remove outdated FIXME in a comment.
 +
 +2010-07-31  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-cmds.el (c-mask-paragraph): Fix bug #6688:
 +      Auto-fill broken in C/C++ modes.
 +
 +2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * menu-bar.el (menu-bar-showhide-tool-bar-menu-customize-enable-left)
 +      (menu-bar-showhide-tool-bar-menu-customize-disable)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-right)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-bottom)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-top): New functions
 +      (menu-bar-showhide-tool-bar-menu): If tool bar is moveable,
 +      make a menu for Options => toolbar that can move it.
 +
 +2010-07-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package-x.el (package--make-rss-entry):
 +      (package-maint-add-news-item, package--update-news)
 +      (package-upload-buffer-internal): New arg ARCHIVE-URL.
 +
 +      * emacs-lisp/package.el (package-archive-url): Rename from
 +      package-archive-id.
 +      (package-install): Doc fix.
 +      (package-download-single, package-download-tar, package-install)
 +      (package-menu-view-commentary): Callers changed.
 +
 +2010-07-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-start-file-process): Check only for
 +      `remote-tty' process property.
 +      (tramp-open-shell): Don't check for tty.
 +      (tramp-open-connection-setup-interactive-shell): Set `remote-tty'
 +      process property.
 +
 +      * progmodes/gdb-mi.el (gdb-init-1): Check also for tty on a remote
 +      host.
 +
 +2010-07-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-load-list, package-archives)
 +      (package-archive-contents, package-user-dir)
 +      (package-directory-list, package--builtins, package-alist)
 +      (package-activated-list, package-obsolete-alist): Mark as risky.
 +
 +2010-07-28  Phil Hagelberg  <phil@evri.com>
 +
 +      Add support for non-default package repositories.
 +      * emacs-lisp/package.el (package-archive-base): Var deleted.
 +      (package-archives): New variable.
 +      (package-archive-contents): Doc fix.
 +      (package-load-descriptor): Do nothing if descriptor file is missing.
 +      (package--write-file-no-coding): New function.
 +      (package-unpack-single): Use it.
 +      (package-archive-id): New function.
 +      (package-download-single, package-download-tar)
 +      (package-menu-view-commentary): Use it.
 +      (package-installed-p): Make second argument optional.
 +      (package-read-all-archive-contents): New function.
 +      (package-initialize): Use it.
 +      (package-read-archive-contents): Add ARCHIVE argument.
 +      (package--add-to-archive-contents): New function.
 +      (package-install): Don't call package-read-archive-contents.
 +      (package--download-one-archive): Store archive file in a
 +      subdirectory of package-user-dir.
 +      (package-menu-execute): Remove spurious line movement.
 +
 +2010-07-28  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cus-start.el (tool-bar-style): Add text-image-horiz.
 +
 +2010-07-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * progmodes/gud.el (gud-common-init): Check for remoteness of
 +      `file', and not of `default-directory'.
 +
 +2010-07-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-methods): Move hostname to the end in all
 +      ssh `tramp-login-args'.
 +      (tramp-verbose): Describe verbose level 9.
 +      (tramp-open-shell): Check for tty if `tramp-verbose' >= 9.
 +      (tramp-open-connection-setup-interactive-shell): Trace stty
 +      settings if `tramp-verbose' >= 9.
 +      (tramp-handle-start-file-process): Implement tty setting.
 +      (Bug#4604, Bug#6360)
 +
 +      * net/tramp-cmds.el (tramp-bug): Recommend setting of
 +      `tramp-verbose' to 9.
 +
 +2010-07-27  Aaron S. Hawley  <ashawley@burlingtontelecom.net>
 +
 +      * emacs-lisp/re-builder.el (reb-re-syntax, reb-lisp-mode)
 +      (reb-lisp-syntax-p, reb-change-syntax, reb-cook-regexp):
 +      Remove references to package `lisp-re' (bug#4369).
 +
 +2010-07-27  Tom Tromey  <tromey@redhat.com>
 +
 +      * progmodes/js.el (js-mode):
 +      * progmodes/make-mode.el (makefile-mode):
 +      * progmodes/simula.el (simula-mode):
 +      * progmodes/tcl.el (tcl-mode): Derive from prog-mode.
 +
 +2010-07-27  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * help-fns.el (find-lisp-object-file-name): Doc fix (bug#6494).
 +
 +      * time.el (display-time-day-and-date): Remove spurious * in docstring.
 +      (display-time-world-buffer-name, display-time-world-mode-map):
 +      Fix typos in docstrings.
 +
 +2010-07-27  Shyam Karanatt  <shyam@swathanthran.in>  (tiny change)
 +
 +      * image-mode.el (image-display-size): New function.
 +      (image-forward-hscroll, image-next-line, image-eol, image-eob)
 +      (image-mode-fit-frame): Use it (Bug#6639).
 +
 +2010-07-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * dired.el (dired-buffers-for-dir): Handle list values of
 +      dired-directory (Bug#6636).
 +
 +2010-07-26  Sam Steingold  <sds@gnu.org>
 +
 +      * mouse.el (mouse-yank-primary, mouse-yank-secondary):
 +      Do not call `x-get-selection' the second time, reuse the value.
 +
 +2010-07-26  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-mail.el (epa-mail-mode-map): Add alternative key bindings
 +      which consist of control chars only.  Suggested by Richard Stallman.
 +
 +2010-07-25  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-file.el (epa-file-insert-file-contents): Check if LOCAL-FILE
 +      exists before passing an error to find-file-not-found-functions
 +      (bug#6723).
 +
 +2010-07-23  Lukas Huonker  <l.huonker@gmail.com>
 +
 +      * play/tetris.el (tetris-tty-colors, tetris-x-colors, tetris-blank):
 +      Remove leading nil element, adjust values.
 +      (tetris-shapes, tetris-shape-scores):
 +      Change representation of shapes and remove some redundancy.
 +      (tetris-get-shape-cell, tetris-shape-width, tetris-draw-next-shape)
 +      (tetris-draw-shape, tetris-erase-shape, tetris-test-shape):
 +      Adjust for working with new representation of shapes.
 +      (tetris-shape-rotations): New function.
 +      (tetris-move-bottom, tetris-move-left, tetris-move-right)
 +      (tetris-rotate-prev, tetris-rotate-next):
 +      Adjust for working with the new version of tetris-test-shape.
 +
 +2010-07-23  Markus Triska  <markus.triska@gmx.at>
 +
 +      * progmodes/ps-mode.el: Use comint (bug#5954).
 +      (ps-run-mode-map): Adapt for comint-mode; omit "\r", [return]..
 +      (ps-mode-other-newline): Simplify.
 +      (ps-run-mode): Derive from comint-mode instead of
 +      fundamental-mode, yielding input history etc.
 +      (ps-run-start, ps-run-quit, ps-run-clear, ps-run-region)
 +      (ps-run-send-string): Adapt for comint-mode.
 +      (ps-run-newline): Remove now unneeded function.
 +
 +2010-07-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-methods): Move hostname to the end in all
 +      plink `tramp-login-args'.
 +
 +2010-07-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-open-shell): New defun.
 +      (tramp-find-shell, tramp-open-connection-setup-interactive-shell):
 +      Use it.
 +
 +2010-07-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-file-name-regexp-unified)
 +      (tramp-completion-file-name-regexp-unified): On W32 systems, do
 +      not regard the volume letter as remote filename.  (Bug#5447)
 +
 +2010-07-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * custom.el (custom-declare-variable): Give a clearer error message
 +      when the docstring is missing (bug#6476).
 +
 +2010-07-22  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.4.  Improved Login prompting.
 +      (sql-login-params): New widget definition.
 +      (sql-oracle-login-params, sql-mysql-login-params)
 +      (sql-solid-login-params, sql-sybase-login-params)
 +      (sql-informix-login-params, sql-ingres-login-params)
 +      (sql-ms-login-params, sql-postgres-login-params)
 +      (sql-interbase-login-params, sql-db2-login-params)
 +      (sql-linter-login-params): Use it.
 +      (sql-sqlite-login-params): Use it; Define "database" parameter as
 +      a file name.
 +      (sql-sqlite-program): Change to "sqlite3".
 +      (sql-comint-sqlite): Make sure database name is complete.
 +      (sql-for-each-login): New function.
 +      (sql-connect, sql-save-connection): Use it.
 +      (sql-get-login-ext): New function.
 +      (sql-get-login): Use it.
 +      (sql-make-alternate-buffer-name): Handle :file parameters.
 +
 +2010-07-22  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * dired.el (dired-no-confirm): Document value t and fix defcustom to
 +      accept it (bug#6597).  Suggested by Drew Adams <drew.adams@oracle.com>.
 +
 +2010-07-22  Teemu Likonen  <tlikonen@iki.fi>  (tiny change)
 +
 +      * dired.el (dired-mode-map): Use command remapping (bug#6632).
 +
 +2010-07-22  Lawrence Mitchell  <wence@gmx.li>
 +
 +      * term/vt100.el (vt100-wide-mode): Fix :init-value keyword (bug#6620).
 +
 +2010-07-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-get-ls-command)
 +      (tramp-get-ls-command-with-dired): Run tests on "/dev/null"
 +      instead of "/".
 +
 +2010-07-20  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.3.
 +      (sql-connection-alist): Changed keys from symbols to strings;
 +      enhanced the widget definition.
 +      (sql-mode-menu): Added submenu to select connections.
 +      (sql-interactive-mode-menu): Added "Save Connection" item.
 +      (sql-add-product): Fixed menu item.
 +      (sql-get-product-feature): Improved error handling.
 +      (sql--alt-buffer-part, sql--alt-if-not-empty): Removed.
 +      (sql-make-alternate-buffer-name): Simplified.
 +      (sql-product-interactive): Handle missing product.
 +      (sql-connect): Support string keys, minor improvements.
 +      (sql-save-connection): New function.
 +      (sql-connection-menu-filter): New function.
 +
 +2010-07-20  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-file-name-handler): Trace 'quit.
 +      (tramp-open-connection-setup-interactive-shell): Apply
 +      workaround for IRIX64 bug.  Move argument of last
 +      `tramp-send-command' where it belongs to.
 +
 +2010-07-20  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-perl-file-attributes)
 +      (tramp-perl-directory-files-and-attributes): Don't pass "$3".
 +      (tramp-maybe-open-connection): Use `async-args' and `gw-args' in
 +      front of `login-args'.
 +
 +2010-07-19  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * time.el (display-time-world-mode): Define with `define-derived-mode'.
 +      Set `show-trailing-whitespace' to nil.
 +      (display-time-world-display): Simplify.
 +
 +2010-07-18  Alan Mackenzie  <acm@muc.de>
 +
 +      Enhance `c-file-style' in file/directory local variables.
 +      * progmodes/cc-mode.el (c-count-cfss): New function.
 +      (c-before-hack-hook): Call `c-set-style' differently according to
 +      whether c-file-style was set in file or directory local
 +      variables.
 +
 +2010-07-18  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.2.
 +      (sql-product, sql-user, sql-database, sql-server, sql-port): Use
 +      defcustom :safe keyword rather than putting safe-local-variable
 +      property.
 +      (sql-password): Use defcustom :risky keyword rather than putting
 +      risky-local-variable property.
 +      (sql-oracle-login-params, sql-sqlite-login-params)
 +      (sql-solid-login-params, sql-sybase-login-params)
 +      (sql-informix-login-params, sql-ingres-login-params)
 +      (sql-ms-login-params, sql-postgres-login-params)
 +      (sql-interbase-login-params, sql-db2-login-params)
 +      (sql-linter-login-params): Add `port' option.
 +      (sql-get-product-feature): Added NO-INDIRECT parameter.
 +      (sql-comint-oracle, sql-comint-sybase)
 +      (sql-comint-informix, sql-comint-sqlite, sql-comint-mysql)
 +      (sql-comint-solid, sql-comint-ingres, sql-comint-ms)
 +      (sql-comint-postgres, sql-comint-interbase, sql-comint-db2)
 +      (sql-comint-linter): Renamed sql-connect-* functions to
 +      sql-comint-*.
 +      (sql-product-alist, sql-mode-menu): Renamed as above and
 +      :sqli-connect-func to :sqli-comint-func.
 +      (sql-connection): New variable.
 +      (sql-interactive-mode): Set it.
 +      (sql-connection-alist): New variable.
 +      (sql-connect): New function.
 +      (sql--alt-buffer-part, sql--alt-if-not-empty)
 +      (sql-make-alternate-buffer-name): Improved alternative buffer name.
 +
 +2010-07-17  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * image-mode.el (image-bookmark-make-record): Do not set context
 +      in an image (Bug#6650).
 +
 +2010-07-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (select-active-region): New function.
 +      (push-mark-command, set-mark, activate-mark)
 +      (handle-shift-selection): Use it.
 +      (deactivate-mark): Don't check for size of region.
 +
 +      * mouse.el (mouse-drag-track): Use select-active-region.
 +
 +2010-07-17  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-get-ls-command-with-dired): Make test for
 +      "--dired" stronger.
 +
 +2010-07-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * term/x-win.el (x-select-enable-primary): Change default to nil.
 +      (x-select-enable-clipboard): Add :version keyword.
 +
 +      * mouse.el (mouse-drag-copy-region):
 +      * simple.el (select-active-regions): Likewise.
 +
 +2010-07-16  Reiner Steib  <Reiner.Steib@gmx.de>
 +
 +      * vc/vc.el (vc-coding-system-inherit-eol): New defvar.
 +      (vc-coding-system-for-diff): Use it to decide whether to inherit
 +      from the file the EOL format for reading the diffs of that file.
 +      (Bug#4451)
 +
 +2010-07-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mail/rmailmm.el (rmail-mime-save): Make the temp buffer
 +      unibyte, so compressed attachments are not compressed again.
 +
 +2010-07-16  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-shell-command): Don't use hard-wired
 +      "/bin/sh" but `tramp-remote-sh' from `tramp-methods'.
 +      (tramp-find-shell): Simplify setting connection property.
 +      (tramp-get-ls-command): Make test for "--color=never" stronger.
 +
 +2010-07-15  Simon South  <ssouth@member.fsf.org>
 +
 +      * progmodes/delphi.el (delphi-previous-indent-of): Indent case
 +      blocks within record declarations (i.e. variant parts) correctly.
 +
 +2010-07-15  Simon South  <ssouth@member.fsf.org>
 +
 +      * progmodes/delphi.el (delphi-token-at): Give newlines precedence
 +      over literal tokens when parsing so newlines aren't "absorbed" by
 +      single-line comments.  Corrects the indentation of case blocks
 +      that have a comment on the first line.
 +
 +2010-07-14  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * bookmark.el (bookmark-load-hook): Fix doc string as suggested
 +      by Drew Adams (Bug#5504).
 +
 +2010-07-14  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xt-mouse.el (xterm-mouse-event-read): Fix for characters > 127
 +      now that Unicode is used (Bug#6594).
 +
 +2010-07-14  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * term/x-win.el (x-select-enable-clipboard): Default to t.
 +      (x-initialize-window-system): Don't overwrite Paste menu item.
 +
 +      * simple.el (select-active-regions): Default to t.
 +      (push-mark-command): Don't overwrite primary with empty string.
 +
 +      * mouse.el: Bind mouse-2 to mouse-yank-primary.
 +      (mouse-drag-copy-region): Default to nil.
 +
 +      * menu-bar.el (menu-bar-enable-clipboard): Don't overwrite
 +      Cut/Copy/Paste menu bar items.
 +
 +2010-07-13  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      Allow C-w when setting a bookmark in a Gnus Article buffer (Bug#5975).
 +      Patch applied by Karl Fogel.
 +
 +      * bookmark.el (bookmark-set): Don't set `bookmark-yank-point'
 +      and `bookmark-current-buffer' if they have been already set in
 +      another buffer (e.g gnus-art).
 +
 +2010-07-13  Karl Fogel  <kfogel@red-bean.com>
 +            Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      Preparation for setting bookmarks in Gnus article buffers (Bug#5975).
 +
 +      * bookmark.el (bookmark-make-record-default): Allow unneeded
 +      information to be omitted from the record.
 +
 +      Adjust declarations and calls:
 +
 +      * info.el (bookmark-make-record-default): Adjust declaration.
 +      (Info-bookmark-make-record): Adjust call.
 +
 +      * woman.el (bookmark-make-record-default): Adjust declaration.
 +      (woman-bookmark-make-record): Adjust call.
 +
 +      * man.el (bookmark-make-record-default): Adjust declaration.
 +      (Man-bookmark-make-record): Adjust call.
 +
 +      * image-mode.el (bookmark-make-record-default): Adjust declaration.
 +
 +      * doc-view.el (bookmark-make-record-default): Adjust declaration.
 +
 +2010-07-13  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * bookmark.el (bookmark-show-annotation): Use `when' instead of `if'.
 +      This is also from Thierry Volpiatto's patch in bug #6444.  However,
 +      because it was extraneous to the functional change in that patch,
 +      and causes a re-indendation, I am committing it separately.
 +
 +2010-07-13  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * bookmark.el (bookmark-show-annotation): Ensure annotations show,
 +      e.g. in Info bookmarks, by using `switch-to-buffer-other-window'.
 +      Patch applied by Karl Fogel (Bug#6444).
 +
 +2010-07-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frame.el (make-frame): Fix typo in 2010-06-30 change (Bug#6625).
 +
 +2010-07-13  Adrian Robert  <Adrian.B.Robert@gmail.com>
 +
 +      * term/ns-win.el: Bind M-~ to 'ns-prev-frame (due to Matthew
 +      Dempsky; bug#5084).  Remove incorrect binding for S-tab.
 +      (ns-alternatives-map): Change S-tab binding to backtab
 +      (bug#6616).
 +
 +      * simple.el (normal-erase-is-backspace-setup-frame): Set mode on
 +      under ns.
 +
 +2010-07-12  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * language/tai-viet.el ("TaiViet"): Try to fix re-encoding bugs.
 +      (Bug#5806)
 +
 +      * language/tv-util.el (tai-viet-re): Remove format.
 +
 +2010-07-12  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el: Remove no-byte-compile declaration.
 +      Change coding: tag to utf-8.  Register hebrew-shape-gstring in
 +      composition-function-table for 3-character looking back.
 +      (hebrew-font-get-precomposed): New function.
 +      (hebrew-shape-gstring): Utilize precomposed glyphs if available.
 +
 +2010-07-11  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-drag-track): Handle select-active-regions
 +      (Bug#6612).
 +
 +2010-07-11  Magnus Henoch  <magnus.henoch@gmail.com>
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
 +      empty argument to gvfs-copy.
 +
 +2010-07-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/calendar.el (calendar-week-end-day): New function.
 +      * calendar/cal-tex.el (cal-tex-cursor-month): Remove unused vars.
 +      Respect calendar-week-start-day.  (Bug#6606)
 +      (cal-tex-insert-day-names, cal-tex-insert-blank-days)
 +      (cal-tex-insert-blank-days-at-end): Respect calendar-week-start-day.
 +      (cal-tex-first-blank-p, cal-tex-last-blank-p): Simplify, and
 +      respect calendar-week-start-day.
 +
 +2010-07-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (use-region-p): Doc fix (Bug#6607).
 +
 +2010-07-10  Aleksei Gusev  <aleksei.gusev@gmail.com>  (tiny change)
 +
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist): Add
 +      regexps for cucumber and ruby.
 +
 +2010-07-08  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-file.el (epa-file-error, epa-file--find-file-not-found-function)
 +      (epa-file-insert-file-contents): Hack to prevent
 +      find-file from opening empty buffer when decryption failed
 +      (bug#6568).
 +
 +2010-07-07  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-alternate-dictionary):
 +      Use file-readable-p.
 +      Return nil if no word-list is found at default locations.
 +      (ispell-complete-word-dict): Default to nil.
 +      (ispell-command-loop): Use 'word-list' when using lookup-words.
 +      (lookup-words): Use ispell-complete-word-dict or
 +      ispell-alternate-dictionary.  Check for word-list availability
 +      and handle errors if needed with better messages (Bug#6539).
 +      (ispell-complete-word): Use ispell-complete-word-dict or
 +      ispell-alternate-dictionary.
 +
 +2010-07-07  Christoph Scholtes  <cschol2112@gmail.com>
 +
 +      * progmodes/python.el (python-font-lock-keywords): Add Python 2.7
 +      builtins (BufferError, BytesWarning, WindowsError; callables
 +      bin, bytearray, bytes, format, memoryview, next, print; __package__).
 +
 +2010-07-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * play/zone.el (top-level): Do not require timer, tabify, or cl.
 +      (zone-shift-left): Ignore intangibility, and any errors from
 +      forward-char.
 +      (zone-shift-right): Remove no-op end-of-line.  Ignore intangibility.
 +      (zone-pgm-putz-with-case): Use upcase-region rather than inserting,
 +      deleting, and copying text properties.
 +      (zone-line-specs, zone-pgm-stress): Check forward-line exit status.
 +      (zone-pgm-rotate): Handle odd buffers like that of gomoku, where getting
 +      to point-max is hard.
 +      (zone-fret, zone-fill-out-screen): Replace cl's do with dotimes.
 +      (zone-fill-out-screen): Ignore intangibility.
 +
 +2010-07-05  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * menu-bar.el (menu-bar-mode):
 +      * tool-bar.el (tool-bar-mode): Replace default-frame-alist element
 +      if it has been set.
 +
 +      * mouse.el (mouse-drag-track): Call mouse-start-end to handle
 +      word/line selection (Bug#6565).
 +
 +2010-07-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * net/dbus.el (dbus-send-signal): Declare function.
 +
 +2010-07-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/dbus.el: Implement signal "PropertiesChanged" (from D-Bus 1.3.1).
 +      (dbus-register-property): New optional argument EMITS-SIGNAL.
 +      (dbus-property-handler): Send signal "PropertiesChanged" if requested.
 +
 +2010-07-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-drag-overlay): Variable deleted.
 +      (mouse-move-drag-overlay, mouse-show-mark): Functions deleted.
 +      (mouse--remap-link-click-p): New function.
 +      (mouse-drag-track): Handle dragging by using temporary Transient
 +      Mark mode, instead of a special overlay.
 +      (mouse-kill-ring-save, mouse-save-then-kill): Don't call
 +      mouse-show-mark.
 +
 +      * mouse-sel.el (mouse-sel-selection-alist): mouse-drag-overlay
 +      deleted.
 +
 +2010-07-02  Juri Linkov  <juri@jurta.org>
 +
 +      * autoinsert.el (auto-insert-alist): Fix readability
 +      by using dotted pair notation for lambda.
 +
 +2010-07-02  Juri Linkov  <juri@jurta.org>
 +
 +      * faces.el (read-face-name): Rename arg `string-describing-default'
 +      to `default'.  Doc fix.  Display the default value in quotes
 +      in the prompt.  With empty input, return the `default' arg,
 +      unless the default value is a string (in which case return nil).
 +      (describe-face): Replace the string `default' arg of `read-face-name'
 +      with the symbol `default'.
 +
 +2010-07-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emulation/viper-cmd.el (viper-delete-backward-char)
 +      (viper-del-backward-char-in-insert)
 +      (viper-del-backward-char-in-replace, viper-change)
 +      (viper-backward-indent): Replace delete-backward-char with
 +      delete-char (Bug#6552).
 +
 +2010-07-01  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ruler-mode.el (ruler--save-header-line-format): Fix typos.
 +
 +2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frame.el (make-frame): Add default-frame-alist to the PARAMETERS
 +      argument passed to frame-creation-function (Bug#5378).
 +
 +      * faces.el (x-handle-named-frame-geometry)
 +      (x-handle-reverse-video, x-create-frame-with-faces)
 +      (face-set-after-frame-default, tty-create-frame-with-faces): Don't
 +      separately consult default-frame-alist.  It is now passed as the
 +      PARAMETER argument.
 +
 +2010-06-30  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * startup.el (command-line): Don't call tool-bar-setup in a
 +      tty-only build.
 +
 +2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ruler-mode.el (ruler--save-header-line-format): New fun.
 +      (ruler-mode): Use it as a setter function, so as not to overwrite
 +      ruler-mode-header-line-format-old if Ruler mode is on (Bug#5370).
 +
 +2010-06-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * vc/vc.el (vc-deduce-backend): New fun.  Handle diff buffers.
 +      (vc-root-diff, vc-print-root-log, vc-log-incoming)
 +      (vc-log-outgoing): Use it.
 +      (vc-diff-internal): Set diff-vc-backend.
 +
 +      * vc/diff-mode.el (diff-vc-backend): New var.
 +
 +2010-06-28  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * dynamic-setting.el (font-setting-change-default-font): Remove
 +      call to message.
 +
 +2010-06-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/quail.el (quail-insert-kbd-layout): Fix the
 +      showing of untranslated characters.
 +
 +2010-06-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (delete-active-region): New option.
 +      (delete-backward-char): Implement in Lisp.
 +      (delete-forward-char): New command.
 +
 +      * mouse.el (mouse-region-delete-keys): Deleted.
 +      (mouse-show-mark): Simplify.
 +
 +      * bindings.el (global-map): Bind delete and DEL, the former to
 +      delete-forward-char.
 +
 +2010-06-27  Lennart Borgman  <lennart.borgman@gmail.com>
 +
 +      * progmodes/ruby-mode.el (ruby-mode-map): Don't bind TAB.
 +      (ruby-mode): Bind indent-line-function (Bug#5119).
 +
 +2010-06-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * startup.el (command-line): Recognize "0" X resource value.
 +
 +2010-06-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * startup.el (command-line): Use X resources to set the value of
 +      menu-bar-mode and tool-bar-mode, before calling frame-initialize.
 +
 +      * menu-bar.el (menu-bar-mode):
 +      * tool-bar.el (tool-bar-mode): Don't change default-frame-alist.
 +      Set init-value to t.
 +
 +      * frame.el (frame-notice-user-settings): Don't change
 +      default-frame-alist based on menu-bar-mode and tool-bar-mode, or
 +      vice versa (Bug#2249).
 +
 +2010-06-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32-fns.el (w32-convert-standard-filename): Doc fix.
 +
 +2010-06-25  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/flyspell.el (flyspell-check-previous-highlighted-word):
 +      Make sure `flyspell-word' re-checks word after function run (Bug#6504).
 +
 +      * textmodes/ispell.el (ispell-init-process): Make sure ispell and
 +      default directories are expanded (Bug#6143).
 +
 +2010-06-24  Juri Linkov  <juri@jurta.org>
 +
 +      * minibuffer.el (completions-format): Change default from nil to
 +      `horizontal'.  Remove `nil' value from :type.  Doc fix.  (Bug#6459)
 +
 +2010-06-24  Juri Linkov  <juri@jurta.org>
 +
 +      * vc/vc.el (vc-diff-internal): Set `revert-buffer-function'
 +      buffer-locally to lambda that re-runs the vc diff command.
 +      (Bug#6447)
 +
 +2010-06-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * kmacro.el (kmacro-call-macro): Don't issue hint message if the
 +      echo area is in use (Bug#3412).
 +
 +2010-06-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * textmodes/texinfmt.el (texinfo-format-region)
 +      (texinfo-raise-lower-sections, texinfo-format-separate-node)
 +      (texinfo-itemize-item, texinfo-multitable-item, texinfo-alias)
 +      (texinfo-format-option, texinfo-noindent):
 +      Use line-beginning-position and line-end-position.
 +
 +      * calc/calc-aent.el, calc/calc-ext.el, calc/calc-lang.el:
 +      * calc/calc-store.el, calc/calc-units.el, calc/calc.el:
 +      * calc/calccomp.el: Add explicit utf-8 coding cookies to files with
 +      utf-8 characters.
 +
 +2010-06-21  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * play/zone.el (zone-fall-through-ws): Fix next-line ->
 +      forward-line fallout.
 +
 +2010-07-06  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-appearance-menu): Add docstring.
 +
 +      * help.el (describe-key): Print up-event using key-description.
 +
 +2010-07-03  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/zeroconf.el (zeroconf-resolve-service)
 +      (zeroconf-service-resolver-handler): Use `dbus-byte-array-to-string'.
 +      (zeroconf-publish-service): Use `dbus-string-to-byte-array'.
 +
 +2010-07-03  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +
 +      * net/zeroconf.el (zeroconf-service-remove-hook): New defun.
 +
 +2010-06-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Avoid displaying files with a nil state in vc-dir.
 +      * vc/vc-dir.el (vc-dir-update): Obey the noinsert argument in all
 +      cases that cause insertion.
 +      (vc-dir-resynch-file): Tell vc-dir-update to avoid inserting files
 +      with a nil state.
 +
 +2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xml.el (xml-parse-region): Avoid infloop (Bug#5281).
 +
 +2010-06-29  Leo  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/rx.el (rx): Doc fix.  (Bug#6537)
 +
 +2010-06-27  Oleksandr Gavenko  <gavenkoa@gmail.com>  (tiny change)
 +
 +      * generic-x.el (bat-generic-mode): Fix regexp for command line
 +      switches (Bug#5719).
 +
 +2010-06-27  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * htmlfontify.el (hfy-face-attr-for-class): Use append instead
 +      of nconc to avoid pure storage error (Bug#6239).
 +
 +2010-06-27  Christoph  <cschol2112@googlemail.com>  (tiny change)
 +
 +      * bookmark.el (bookmark-bmenu-2-window, bookmark-bmenu-other-window)
 +      (bookmark-bmenu-other-window-with-mouse): Remove unnecessary
 +      bindings of bookmark-automatically-show-annotations (Bug#6515).
 +
 +2010-06-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * arc-mode.el (archive-zip-extract): Don't quote the file name on
 +      MS-Windows and MS-DOS.  (Bug#6467, Bug#6144)
 +
 +2010-06-24  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +
 +      * comint.el (make-comint, make-comint-in-buffer): Mention return
 +      value in the docstrings.  (Bug#6498)
 +
 +2010-06-24  Yoni Rabkin  <yoni@rabkins.net>
 +
 +      * bs.el (bs-mode-font-lock-keywords): Remove "by" from Dired pattern,
 +      since it is not present when using some non-default switches.
 +
 +2010-06-23  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * simple.el (compose-mail): Fix doc string to refer to
 +      `compose-mail-user-agent-warnings', instead of to the
 +      nonexistent `compose-mail-check-user-agent'.
 +
 +2010-06-21  Alan Mackenzie  <bug-cc-mode@gnu.org>
 +
 +      Fix an indentation bug:
 +
 +      * progmodes/cc-mode.el (c-common-init): Initialise c-new-BEG/END.
 +      (c-neutralize-syntax-in-and-mark-CPP): c-new-BEG/END: Take account
 +      of existing values.
 +
 +      * progmodes/cc-engine.el (c-clear-<-pair-props-if-match-after)
 +      (c-clear->-pair-props-if-match-before): now return t when they've
 +      cleared properties, nil otherwise.
 +      (c-before-change-check-<>-operators): Set c-new-beg/end correctly
 +      by taking account of the existing value.
 +
 +      * progmodes/cc-defs.el
 +      (c-clear-char-property-with-value-function): Fix this to clear the
 +      property rather than overwriting it with nil.
 +
 +2010-06-20  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-print-package): Add link to
 +      package description via describe-package.
 +      (describe-package-1): List package requirements.  Add button to
 +      perform installation.
 +      (package-menu-describe-package): New command.
 +
 +      * help-mode.el (help-package): New button type.
 +
 +2010-06-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el: Move package-list-packages binding to
 +      menu-bar.el.
 +      (describe-package, describe-package-1, package--dir): New funs.
 +      (package-activate-1): Use package--dir.
 +
 +      * emacs-lisp/package-x.el (gnus-article-buffer): Require package.
 +
 +      * help-mode.el (help-package-def): New button type.
 +
 +      * menu-bar.el: Move package-list-packages binding here from
 +      package.el.
 +
 +2010-06-19  Gustav Hållberg  <gustav@gmail.com>  (tiny change)
 +
 +      * descr-text.el (describe-char): Avoid trailing whitespace.  (Bug#6423)
 +
 +2010-06-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/edebug.el (edebug-read-list):
 +      Phase out old-style backquotes.
 +
 +2010-06-17  Juri Linkov  <juri@jurta.org>
 +
 +      * help-mode.el (help-mode): Set buffer-local variable
 +      revert-buffer-function to help-mode-revert-buffer.
 +      (help-mode-revert-buffer): New function.
 +
 +      * info.el (Info-revert-find-node): Check for major-mode Info-mode
 +      before popping to "*info*" (like in other Info functions).
 +      Keep buffer-name in old-buffer-name.  Keep Info-history-forward in
 +      old-history-forward.  Pop to old-buffer-name or "*info*" to
 +      recreate the killed buffer.  Set Info-history-forward from
 +      old-history-forward.
 +      (Info-breadcrumbs-depth): Add :group and :version.
 +
 +2010-06-17  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * emacs-lisp/package.el (package-menu-mode-map): Add a menu.
 +
 +2010-06-17  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-aspell-find-dictionary): Fix regexp
 +      for languages like Portuguese with pt_{BR,PT} and no plain pt.
 +
 +2010-06-17  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emacs-lisp/package.el (package-menu-mode-map):
 +      Move initialization into declaration.
 +
 +      * menu-bar.el (menu-bar-options-menu): Fix typo in menu entry.
 +
 +2010-06-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-archive-base): Point to
 +      elpa.gnu.org.
 +      (package-enable, package-load-list): New defcustoms.
 +      (package-user-dir, package-directory-list): Turn into defcustoms.
 +      Don't include package-user-dir in package-directory-list.
 +      (package--builtins-base): Don't include Emacs as a "package".
 +      (package-subdirectory-regexp): New var.
 +      (package-load-all-descriptors, package-compute-transaction)
 +      (package-download-transaction): Obey package-load-list.
 +      (package-activate-1): Rename from package-do-activate.
 +      (package-list-packages-internal): Check package-load-list.
 +      (package-load-descriptor, package-generate-autoloads)
 +      (package-unpack, package-unpack-single)
 +      (package--read-archive-file, package-delete): Use
 +      expand-file-name.
 +
 +      * emacs-lisp/package-x.el: New file.  Package uploading
 +      functionality split out from package.el.
 +
 +      * startup.el (command-line): Load packages after reading init file.
 +
 +2010-06-17  Tom Tromey  <tromey@redhat.com>
 +
 +      * emacs-lisp/package.el: New file.
 +
 +2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix vc-annotate for renamed files when using Git.
 +      * vc/vc-git.el (vc-git-find-revision): Deal with empty results from
 +      ls-files.  Doe not pass the object as a file name to cat-file, it
 +      is not a file name.
 +      (vc-git-annotate-command): Pass the file name using -- to avoid
 +      ambiguity with the revision.
 +      (vc-git-previous-revision): Pass a relative file name.
 +
 +2010-06-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/js.el (js-mode-map): Use standard capitalization and
 +      ellipses for menu entries.
 +
 +      * wid-edit.el (widget-complete): Doc fix.
 +
 +2010-06-22  Jürgen Hötzel  <juergen@hoetzel.info>  (tiny change)
 +
 +      * wid-edit.el (widget-complete): Fix typo in 2009-12-02 change.
 +
 +2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix annotating other revisions for renamed files in vc-annotate.
 +      * vc/vc-annotate.el (vc-annotate): Add an optional argument for the
 +      VC backend.  Use it when non-nil.
 +      (vc-annotate-warp-revision): Pass the VC backend to vc-annotate.
 +      (Bug#6487)
 +
 +      Fix vc-annotate-show-changeset-diff-revision-at-line for git.
 +      * vc/vc-annotate.el (vc-annotate-show-diff-revision-at-line-internal):
 +      Do not pass the file name to the 'previous-revision call when we
 +      don't want a file diff.  (Bug#6489)
 +
 +2010-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix finding revisions for renamed files in vc-annotate.
 +      * vc/vc.el (vc-find-revision): Add an optional argument for
 +      the VC backend.  Use it when non-nil.
 +      * vc/vc-annotate.el (vc-annotate-find-revision-at-line): Pass the VC
 +      backend to vc-find-revision.  (Bug#6487)
 +
 +2010-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix reading file names in Git annotate buffers.
 +      * vc/vc-git.el (vc-git-annotate-extract-revision-at-line):
 +      Remove trailing whitespace.  Suggested by Eric Hanchrow.  (Bug#6481)
 +
 +2010-06-20  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-mode.el (c-before-hack-hook): When the mode is set
 +      in file local variables, set it first.
 +
 +2010-06-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * descr-text.el (describe-char-unicode-data): Insert separating
 +      space when needed.  (Bug#6422)
 +
 +      * progmodes/idlwave.el (idlwave-action-and-binding):
 +      Fix typo in 2009-12-03 change.  (Bug#6450)
 +
 +2010-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/macroexp.el (macroexpand-all-1): Put back special
 +      handling for `lambda' (misunderstanding).
 +
 +2010-06-16  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-poly.el (math-accum-factors): Make sure that
 +      constants aren't distributed after they are factored out.
 +
 +2010-06-16  Juri Linkov  <juri@jurta.org>
 +
 +      * facemenu.el (list-colors-display): Call `pop-to-buffer' before
 +      `list-colors-print'.  (Bug#6332)
 +
 +      * subr.el (read-quoted-char): Fix up last change (bug#6290).
 +
 +2010-06-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/macroexp.el (macroexpand-all-1): Don't handle `lambda'
 +      specially, since it's a macro.  Fix up wrong hint passed to maybe-cons.
 +
 +      * font-lock.el (font-lock-major-mode): Rename from
 +      font-lock-mode-major-mode to distinguish it from
 +      global-font-lock-mode's own font-lock-mode-major-mode (bug#6135).
 +      (font-lock-set-defaults):
 +      * font-core.el (font-lock-default-function): Adjust users.
 +      (font-lock-mode): Don't set it at all.
 +
 +2010-06-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/vc-annotate.el (vc-annotate): Use vc-read-revision.
 +
 +2010-06-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/appt.el (appt-time-msg-list): Doc fix.
 +      (appt-check): Let-bind appt-warn-time.
 +      (appt-add): Make the 3rd argument optional.
 +      Simplify argument names.  Doc fix.  Check for integer WARNTIME.
 +      Only add WARNTIME to the output list if non-nil.
 +
 +2010-06-16  Ivan Kanis  <apple@kanis.eu>
 +
 +      * calendar/appt.el (appt-check): Let the 3rd element of
 +      appt-time-msg-list specify the warning time.
 +      (appt-add): Add new argument with the warning time.  (Bug#5176)
 +
 +2010-06-16  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
 +
 +      * vc/vc-svn.el (vc-svn-after-dir-status): Fix regexp for Subversions
 +      older than version 1.6.  (Bug#6361)
 +
 +2010-06-16  Helmut Eller  <eller.helmut@gmail.com>
 +
 +      * emacs-lisp/cl-macs.el (destructuring-bind): Bind `bind-enquote',
 +      used by cl-do-arglist.  (Bug#6408)
 +
 +2010-06-16  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-dictionary-base-alist): Fix
 +      portuguese casechars/not-casechars for missing 'çÇ'.
 +      Suggested by Rolando Pereira (bug#6434).
 +
 +2010-06-15  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * facemenu.el (list-colors-sort): Doc fix.
 +
 +2010-06-15  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
 +
 +      * progmodes/sql.el (sql-connect-mysql): Fix typo.
 +
 +2010-06-14  Juri Linkov  <juri@jurta.org>
 +
 +      Add sort option `list-colors-sort'.  (Bug#6332)
 +      * facemenu.el (color-rgb-to-hsv): New function.
 +      (list-colors-sort): New defcustom.
 +      (list-colors-sort-key): New function.
 +      (list-colors-display): Doc fix.  Sort list according to the option
 +      `list-colors-sort'.
 +      (list-colors-print): Add HSV values to `help-echo' property of
 +      RGB strings.
 +
 +2010-06-14  Juri Linkov  <juri@jurta.org>
 +
 +      * compare-w.el: Move to the "vc" subdirectory.
 +
 +2010-06-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * image-mode.el (image-mode-map): Remap left-char and right-char.
 +
 +      * nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior.
 +
 +2010-06-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * term/common-win.el (x-colors): Add all the color names defined
 +      in rgb.txt (Bug#6332).
 +
 +      * facemenu.el (list-colors-print): Don't print extra names if it
 +      will overflow the window width.
 +
 +      * vc/log-edit.el (log-edit-font-lock-keywords): Revert 2010-06-02
 +      change (Bug#6343).
 +
 +2010-06-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.el (make-directory): Doc fix (bug#6396).
 +
 +2010-06-12  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-remote-process-environment): Protect version
 +      string by apostroph.
 +      (tramp-shell-prompt-pattern): Do not use a shy group in case of
 +      XEmacs.
 +      (tramp-file-name-for-operation): Add `call-process-region'.
 +      (tramp-set-process-query-on-exit-flag): Fix wrong parentheses.
 +
 +      * net/tramp-compat.el (top): Do not autoload
 +      `tramp-handle-file-remote-p'.  Load tramp-util.el and tramp-vc.el
 +      only when `start-file-process' is not bound.
 +      (tramp-advice-file-expand-wildcards): Do not use
 +      `tramp-handle-file-remote-p'.
 +      (tramp-compat-make-temp-file): Handle the case, that
 +      `make-temp-file' has no third argument EXTENSION.
 +
 +2010-06-11  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (WINS_BASIC): Include new directory vc.
 +
 +      * loadup.el ("vc-hooks", "ediff-hook"): Load from lisp/vc/.
 +
 +2010-06-11  Juri Linkov  <juri@jurta.org>
 +
 +      * finder.el (finder-known-keywords): Add keyword "vc"
 +      for version control.
 +
 +      * add-log.el, cvs-status.el, diff.el, diff-mode.el, ediff.el,
 +      * emerge.el, log-edit.el, log-view.el, pcvs.el, smerge-mode.el,
 +      * vc-annotate.el, vc-bzr.el, vc-dir.el, vc-dispatcher.el, vc-git.el,
 +      * vc-hg.el, vc-mtn.el, vc.el: Add keyword "vc".
 +
 +2010-06-11  Juri Linkov  <juri@jurta.org>
 +
 +      Move version control related files to the "vc" subdirectory.
 +      * add-log.el, cvs-status.el, diff.el, diff-mode.el, ediff-diff.el,
 +      * ediff.el, ediff-help.el, ediff-hook.el, ediff-init.el,
 +      * ediff-merg.el, ediff-mult.el, ediff-ptch.el, ediff-util.el,
 +      * ediff-vers.el, ediff-wind.el, emerge.el, log-edit.el, log-view.el,
 +      * pcvs-defs.el, pcvs.el, pcvs-info.el, pcvs-parse.el, pcvs-util.el,
 +      * smerge-mode.el, vc-annotate.el, vc-arch.el, vc-bzr.el, vc-cvs.el,
 +      * vc-dav.el, vc-dir.el, vc-dispatcher.el, vc.el, vc-git.el,
 +      * vc-hg.el, vc-hooks.el, vc-mtn.el, vc-rcs.el, vc-sccs.el, vc-svn.el:
 +      Move files to the "vc" subdirectory.
 +
 +2010-06-11  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * comint.el (comint-password-prompt-regexp): Fix 2010-04-10 change
 +      (Bug#6367).
 +
 +2010-06-11  Stephen Eglen  <stephen@gnu.org>
 +
 +      * shell.el: Bind `shell-resync-dirs' to M-RET.
 +
 +2010-06-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * notifications.el: Move file from lisp/net, because it is
 +      supposed to talk locally to the user.
 +
 +2010-06-10  Julien Danjou  <julien@danjou.info>
 +
 +      * net/notifications.el (notifications-on-action-signal)
 +      (notifications-on-closed-signal): Pass notification id as first
 +      argument to the callback functions.  Add docstrings.
 +      (notifications-notify): Fix docstring.
 +
 +2010-06-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/authors.el (authors-ignored-files)
 +      (authors-valid-file-names): Add some files.
 +
 +2010-06-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * net/rcirc.el (rcirc-server-alist, rcirc, rcirc-connect): Resolve
 +      merge conflict, giving preference to the emacs-23 version of the code.
 +
 +2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/advice.el (ad-compile-function):
 +      Define warning-suppress-types before we let-bind it (bug#6275).
 +
 +      * vc-dispatcher.el: Rename mode-line-hook to vc-mode-line-hook;
 +      declare it, make it buffer-local and permanent-local (bug#6324).
 +      (vc-resynch-window): Adjust name.
 +      * vc-hooks.el (vc-find-file-hook): Adjust name.
 +
 +2010-06-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/notifications.el (notifications-notify): Fix docstring.
 +
 +2010-06-09  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Update to Unicode 6.0.0 beta.
 +      * international/charprop.el: Update copyright.
 +      * international/mule-cmds.el (ucs-names): Update character ranges.
 +      * international/uni-bidi.el:
 +      * international/uni-category.el:
 +      * international/uni-combining.el:
 +      * international/uni-comment.el:
 +      * international/uni-decimal.el:
 +      * international/uni-decomposition.el:
 +      * international/uni-digit.el:
 +      * international/uni-lowercase.el:
 +      * international/uni-mirrored.el:
 +      * international/uni-name.el:
 +      * international/uni-numeric.el:
 +      * international/uni-old-name.el:
 +      * international/uni-titlecase.el:
 +      * international/uni-uppercase.el: Regenerate.
 +
 +2010-06-09  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emacs-lisp/smie.el (comment-string-strip): Declare function.
 +      (smie-precs-precedence-table): Fix typo in docstring.
 +
 +      * vc-mtn.el (log-edit-extract-headers): Declare function.
 +
 +      * vc-hg.el (log-edit-extract-headers): Remove duplicate declaration.
 +
 +      * net/notifications.el (dbus-register-signal): Declare function.
 +      (notifications-notify): Fix typos and reflow docstring.
 +
 +2010-06-09  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Improve VC create/retrieve tag/branch.
 +      * vc.el (vc-create-tag): Do not read the directory name for VCs
 +      with repository revision granularity.  Adjust the tag/branch
 +      prompt.  Reset VC properties.
 +      (vc-retrieve-tag): Do not read the directory name for VCs
 +      with repository revision granularity.  Reset VC properties.
 +
 +2010-06-09  Julien Danjou  <julien@danjou.info>
 +
 +      * net/notifications.el: New file.
 +
 +2010-06-09  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add optional support for resetting VC properties.
 +      * vc-dispatcher.el (vc-resynch-window): Add new optional argument,
 +      call vc-file-clearprops when true.
 +      (vc-resynch-buffer): Add new optional argument, pass it down.
 +      (vc-resynch-buffers-in-directory): Likewise.
 +
 +      Improve support for special markup in the VC commit message.
 +      * vc-mtn.el (vc-mtn-checkin): Add support for Author: and Date: markup.
 +      * vc-hg.el (vc-hg-checkin): Add support for Date:.
 +      * vc-git.el (vc-git-checkin):
 +      * vc-bzr.el (vc-bzr-checkin): Likewise.
 +
 +2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-keyword): Remove special case that
 +      can be handled with a ((:before "fn") (:prev "=>" parent)) rule.
 +
 +2010-06-07  Martin Pohlack  <mp26@os.inf.tu-dresden.de>
 +
 +      * iimage.el: Remove images as soon as the underlying text is modified.
 +      (iimage-modification-hook): New function.
 +      (iimage-mode-buffer): Use it.
 +
 +2010-06-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-offset-rule): Rename from
 +      smie-indent-offset-after.  Add :prev case.  Make a bit more generic.
 +      (smie-indent-virtual): Remove `virtual' arg.  Update callers.
 +      (smie-indent-keyword): Add handling of open-paren keywords.
 +      (smie-indent-comment-continue): Don't assume comment-continue.
 +
 +2010-06-07  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.el (pop-to-buffer): Remove the conditional that
 +      compares new-window and old-window, so it will reselect
 +      the selected window unconditionally.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00078.html
 +
 +2010-06-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-offset-after)
 +      (smie-indent-forward-token, smie-indent-backward-token): New functions.
 +      (smie-indent-after-keyword): Use them.
 +      (smie-indent-fixindent): Only applies to the indentation of the BOL.
 +      (smie-indent-keyword): Tweak the black magic.
 +      (smie-indent-comment-continue): Strip comment-continue before use.
 +      (smie-indent-functions): Indent comments before keywords.
 +
 +2010-06-06  Juri Linkov  <juri@jurta.org>
 +
 +      * isearch.el (isearch-lazy-highlight-search): Fix looping
 +      by checking for empty match.  This syncs this loop with the
 +      similar loop in `isearch-search'.  (Bug#6362)
 +
 +2010-06-05  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * net/dbus.el (dbus-register-method): Declare function.
 +      (dbus-handle-event, dbus-property-handler): Fix typos in docstrings.
 +      (dbus-introspect): Doc fix.
 +      (dbus-event-bus-name, dbus-introspect-get-interface)
 +      (dbus-introspect-get-argument): Reflow docstrings.
 +
 +2010-06-05  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      vc-log-incoming/vc-log-outgoing fixes for Git.
 +      * vc-git.el (vc-git-log-view-mode): Fix font lock for
 +      incoming/outgoing logs.
 +      (vc-git-log-outgoing, vc-git-log-incoming): Use @{upstream}
 +      instead of vc-git-compute-remote.
 +      (vc-git-compute-remote): Remove.
 +
 +2010-06-04  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * term/common-win.el (x-colors): Add "dark green" and "dark
 +      turquoise" (Bug#6332).
 +
 +2010-06-04  Juri Linkov  <juri@jurta.org>
 +
 +      * simple.el (kill-new): Fix logic of kill-do-not-save-duplicates.
 +      Instead of setting `replace' to t and replacing the same string
 +      with itself, don't do certain actions when
 +      kill-do-not-save-duplicates is non-nil and string is equal to car
 +      of kill-ring: don't call menu-bar-update-yank-menu, don't push
 +      interprogram-paste strings to kill-ring, and don't push the input
 +      argument `string' to kill-ring.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00072.html
 +
 +2010-06-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * subr.el (directory-sep-char): Move from fileio.c and make a defconst.
 +
 +2010-06-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-expand-file-name): Expand "~/".
 +      (tramp-gvfs-handler-mounted-unmounted)
 +      (tramp-gvfs-connection-mounted-p): Handle default-location.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-delete-directory): Don't try to
 +      move files to trash.
 +
 +2010-06-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * international/mule-cmds.el (nonascii-insert-offset)
 +      (nonascii-translation-table): Add obsolescence information.
 +
 +      * international/mule.el (make-translation-table-from-vector): Doc fix.
 +
 +2010-06-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * desktop.el (desktop-clear-preserve-buffers):
 +      Add "*Warnings*" buffer.  (Bug#6336)
 +
 +2010-06-03  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      vc-log-incoming/vc-log-outgoing improvements for Git.
 +      * vc-git.el (vc-git-log-outgoing): Use the same format as the
 +      short log.
 +      (vc-git-log-incoming): Likewise.  Run "git fetch" before the log command.
 +
 +      Add bindings for vc-log-incoming and vc-log-outgoing.
 +      * vc-hooks.el (vc-prefix-map): Add bindings for vc-log-incoming
 +      and vc-log-outgoing.
 +      * vc-dir.el (vc-dir-menu-map): Add menu bindings for vc-log-incoming
 +      and vc-log-outgoing.
 +
 +2010-06-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * net/rcirc.el (rcirc-sort-nicknames): Remove.
 +      (rcirc-handler-366): Always sort nicknames.
 +
 +2010-06-03  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emacs-lisp/smie.el (comment-continue): Declare for byte-compiler.
 +
 +2010-06-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * net/rcirc.el (rcirc-nickname<, rcirc-sort-nicknames-join): Doc fix.
 +
 +2010-06-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * net/rcirc.el (rcirc-sort-nicknames): Change default.
 +      (rcirc-sort-nicknames-join): Avoid setq.
 +
 +2010-06-03  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * net/rcirc.el (rcirc-sort-nicknames): New custom.
 +      (rcirc-nickname<, rcirc-sort-nicknames-join): New funs.
 +      (rcirc-handler-366): Use them.
 +
 +2010-06-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Split smie-indent-calculate into more manageable chunks.
 +      * emacs-lisp/smie.el (smie-indent-virtual, smie-indent-fixindent)
 +      (smie-indent-comment, smie-indent-after-keyword, smie-indent-keyword)
 +      (smie-indent-close, smie-indent-comment-continue, smie-indent-bob)
 +      (smie-indent-exps): Extract from smie-indent-calculate.
 +      (smie-indent-functions): New var.
 +      (smie-indent-functions): Use them.
 +
 +2010-06-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-hanging-p): Use smie-bolp.
 +      (smie-indent-calculate): Simplify and cleanup.
 +
 +2010-06-02  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-gvfs.el (top): Require url-util.
 +      (tramp-gvfs-mount-point): Remove.
 +      (tramp-gvfs-stringify-dbus-message, tramp-gvfs-send-command):
        New defuns.
 -      (with-progress-reporter): New defmacro.
 -      (tramp-debug-outline-regexp): New defconst.
 -      (top, tramp-rfn-eshadow-setup-minibuffer)
 +      (with-tramp-dbus-call-method): Format trace message.
 +      (tramp-gvfs-handle-copy-file, tramp-gvfs-handle-rename-file):
 +      Implement backup call, when operation on local files fails.
 +      Use progress reporter.  Flush properties of changed files.
 +      (tramp-gvfs-handle-make-directory): Make more traces.
 +      (tramp-gvfs-url-file-name): Hexify file name in url.
 +      (tramp-gvfs-fuse-file-name): Take also prefix (like dav shares)
 +      into account for the resulting file name.
 +      (tramp-gvfs-handler-askquestion): Return dummy mountpoint, when
 +      the answer is "no".  See `tramp-gvfs-maybe-open-connection'.
 +      (tramp-gvfs-handler-mounted-unmounted)
 +      (tramp-gvfs-connection-mounted-p): Test also for new mountspec
 +      attribute "default_location".  Set "prefix" property.
 +      (tramp-gvfs-mount-spec): Return both prefix and mountspec.
 +      (tramp-gvfs-maybe-open-connection): Test, whether mountpoint
 +      exists.  Raise an error, if not (due to a corresponding answer
 +      "no" in interactive questions, for example).
 +
 +2010-06-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * log-edit.el (log-edit-font-lock-keywords): Make group 4 match lax.
 +
 +2010-06-01  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emacs-lisp/eldoc.el: Add completions for new commands left-* and
 +      right-*.  (Bug#6265)
 +
 +2010-06-01  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add support for vc-log-incoming, improve vc-log-outgoing for Git.
 +      * vc-git.el (vc-git-compute-remote): New function.
 +      (vc-git-log-outgoing): Use it instead of hard coding a value.
 +      (vc-git-log-incoming): New function.
 +
 +      Improve state updating for VC tag commands.
 +      * vc.el (vc-create-tag, vc-retrieve-tag): Call vc-resynch-buffer
 +      to update the state of all buffers in the directory.
 +
 +      * vc-dir.el (vc-dir-update): Remove entries with a nil state (bug#5539).
 +
 +2010-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc-bzr.el (vc-bzr-revision-completion-table): Apply
 +      `file-directory-p' to the filename part rather than to the whole text.
 +
 +2010-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * man.el (Man-completion-table): Let the user type "-k " (bug#6319).
 +
 +2010-05-31  Drew Adams  <drew.adams@oracle.com>
 +
 +      * files.el (directory-files-no-dot-files-regexp): Doc fix (bug#6298).
 +
 +2010-05-31  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * subr.el (momentary-string-display): Just use read-event to read
 +      the exit event (Bug#6238).
 +
 +2010-05-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/mule.el (define-coding-system): Doc fix (bug#6313).
 +
 +2010-05-30  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emulation/cua-base.el: Recognize also `right-word' and `left-word'.
 +      Suggested by Eli Zaretskii <eliz@gnu.org>.
 +
 +2010-05-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-file-name-table): Don't return a boundary
 +      past the end of `string' (bug#6299).
 +      (completion--file-name-table): Delegate to completion-file-name-table
 +      for the `boundaries' case.
 +
 +2010-05-30  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emulation/cua-base.el: Recognize `right-char' and `left-char' as
 +      movement commands.
 +
 +      * progmodes/ada-xref.el (ada-prj-ada-project-path-sep): Set from
 +      `path-separator', but maintain compatibility with Emacs 20.2.
 +
 +2010-05-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * server.el (server-process-filter): Receive parent-id argument
 +      from emacsclient.
 +      (server-create-window-system-frame): New arg.  Pass parent-id as
 +      frame parameter.
 +
 +2010-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Bidi-sensitive word movement with arrow keys.
 +      * subr.el (right-arrow-command, left-arrow-command): Move to
 +      bindings.el.
 +
 +      * bindings.el (right-char, left-char): Move from subr.el and
 +      rename from right-arrow-command and left-arrow-command.
 +      (right-word, left-word): New functions.
 +      (global-map) <right>: Bind to right-char.
 +      (global-map) <left>: Bind to left-char.
 +      (global-map) <C-right>: Bind to right-word.
 +      (global-map) <C-left>: Bind to left-word.
 +
 +      * ls-lisp.el (ls-lisp-classify-file): New function.
 +      (ls-lisp-insert-directory): Call it if switches include -F (bug#6294).
 +      (ls-lisp-classify): Call ls-lisp-classify-file.
 +      (insert-directory): Remove blanks from switches.
 +
 +2010-05-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ansi-color.el: Delete unused escape sequences (Bug#6085).
 +      (ansi-color-drop-regexp): New constant.
 +      (ansi-color-apply, ansi-color-filter-region)
 +      (ansi-color-apply-on-region): Delete unrecognized control sequences.
 +      (ansi-color-apply): Build string list before calling concat.
 +
 +2010-05-28  Juri Linkov  <juri@jurta.org>
 +
 +      * image-dired.el (image-dired-dired-toggle-marked-thumbs):
 +      Replace LOCALP arg of `dired-get-filename' 'no-dir with nil.
 +      (Bug#5270)
 +
 +2010-05-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-debug-message): Add `tramp-compat-funcall'
 +      to ignored backtrace functions.
 +      (with-progress-reporter): Expand docstring.
 +      (tramp-handle-delete-file): Implement TRASH argument.
 +      (tramp-get-remote-trash): New defun.
 +
 +2010-05-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-compat.el (tramp-compat-delete-file): Use
 +      `symbol-value' for backward compatibility.
 +
 +      * net/tramp.el (tramp-handle-make-symbolic-link)
 +      (tramp-handle-load)
 +      (tramp-do-copy-or-rename-file-via-buffer)
 +      (tramp-do-copy-or-rename-file-directly)
 +      (tramp-do-copy-or-rename-file-out-of-band)
 +      (tramp-handle-process-file, tramp-handle-call-process-region)
 +      (tramp-handle-shell-command, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-delete-temp-file-function): Use `delete-file' instead
 +      of `tramp-compat-delete-file'.
 +
 +      * net/tramp-fish.el (tramp-fish-handle-delete-directory)
 +      (tramp-fish-handle-make-symbolic-link)
 +      (tramp-fish-handle-process-file): Use `delete-file' instead
 +      of `tramp-compat-delete-file'.
 +
 +      * net/tramp-ftp.el (tramp-ftp-file-name-handler): Use
 +      `delete-file' instead of `tramp-compat-delete-file'.
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Rename arg.
 +      (tramp-gvfs-handle-write-region): Use `delete-file' instead of
 +      `tramp-compat-delete-file'.
 +
 +      * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file): Use
 +      `delete-file' instead of `tramp-compat-delete-file'.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file)
 +      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 +      (tramp-smb-handle-write-region): Use `delete-file' instead of
 +      `tramp-compat-delete-file'.
 +      (tramp-smb-handle-delete-directory): Use 'trash as arg.
 +
 +2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * dired.el (dired-delete-file): New arg TRASH.
 +      (dired-internal-do-deletions): New arg TRASH.  Use progress reporter.
 +      (dired-do-flagged-delete, dired-do-delete): Use trash.
 +
 +      * speedbar.el (speedbar-item-delete): Allow trashing.
 +
 +      * files.el (delete-directory): New arg TRASH.
 +
 +      * net/ange-ftp.el (ange-ftp-del-tmp-name, ange-ftp-delete-file)
 +      (ange-ftp-rename-remote-to-remote)
 +      (ange-ftp-rename-local-to-remote)
 +      (ange-ftp-rename-remote-to-local, ange-ftp-load)
 +      (ange-ftp-compress, ange-ftp-uncompress): Remove optional arg from
 +      `delete-file'.
 +      (ange-ftp-delete-directory): Add optional arg to `delete-file', to
 +      allow trashing.
 +
 +      * net/tramp-compat.el (tramp-compat-delete-file): Rewrite to
 +      handle new TRASH arg of `delete-file'.
 +
 +      * net/tramp.el (tramp-handle-delete-file): Change FORCE arg to TRASH.
 +      (tramp-handle-make-symbolic-link, tramp-handle-load)
 +      (tramp-do-copy-or-rename-file-via-buffer)
 +      (tramp-do-copy-or-rename-file-directly)
 +      (tramp-do-copy-or-rename-file-out-of-band)
 +      (tramp-handle-process-file, tramp-handle-call-process-region)
 +      (tramp-handle-shell-command, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-delete-temp-file-function): Use null TRASH arg in
 +      tramp-compat-delete-file call.
 +
 +      * net/tramp-fish.el (tramp-fish-handle-delete-directory)
 +      (tramp-fish-handle-delete-file)
 +      (tramp-fish-handle-make-symbolic-link)
 +      (tramp-fish-handle-process-file): Use null TRASH arg in
 +      `tramp-compat-delete-file' call.
 +
 +      * net/tramp-ftp.el (tramp-ftp-file-name-handler): Use null TRASH
 +      arg in `tramp-compat-delete-file' call.
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Rename arg.
 +      (tramp-gvfs-handle-write-region): Use null TRASH arg in
 +      `tramp-compat-delete-file' call.
 +
 +      * net/tramp-imap.el (tramp-imap-handle-delete-file): Rename arg.
 +      (tramp-imap-do-copy-or-rename-file): Use null TRASH arg in
 +      `tramp-compat-delete-file' call.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file)
 +      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 +      (tramp-smb-handle-write-region): Use null TRASH arg in
 +      tramp-compat-delete-file call.
 +      (tramp-smb-handle-delete-directory): Use tramp-compat-delete-file.
 +      (tramp-smb-handle-delete-file): Rename arg.
 +
 +      * diff.el (diff-sentinel):
 +      * epg.el (epg--make-temp-file, epg-decrypt-string)
 +      (epg-verify-string, epg-sign-string, epg-encrypt-string):
 +      * jka-compr.el (jka-compr-partial-uncompress)
 +      (jka-compr-call-process, jka-compr-write-region):
 +      * server.el (server-sentinel): Remove optional arg from
 +      delete-file, reverting 2010-05-03 change.
 +
 +2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/verilog-mode.el (verilog-type-font-keywords): Use
 +      font-lock-constant-face, not obsolete font-lock-reference-face.
 +
 +2010-05-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el (hebrew-shape-gstring): Check if a glyph
 +      element of GSTRING is nil.
 +
 +2010-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-forward-token-function)
 +      (smie-backward-token-function): New vars.
 +      (smie-backward-sexp, smie-forward-sexp)
 +      (smie-indent-hanging-p, smie-indent-calculate): Use them.
 +      (smie-default-backward-token): Rename from smie-backward-token and
 +      skip comments.
 +      (smie-default-forward-token): Rename from smie-forward-token and
 +      skip comments.
 +      (smie-next-sexp): Handle nil results from next-token.
 +      (smie-indent-calculate): Add a new case for special `fixindent' comments.
 +
 +2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/verilog-mode.el (verilog-type-font-keywords):
 +      Use font-lock-constant-face, not obsolete font-lock-reference-face.
 +
 +2010-05-27  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * htmlfontify.el (hfy-face-resolve-face): New function.
 +      (hfy-face-to-style): Use it (Bug#6279).
 +
 +2010-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/ada-xref.el (ada-gnat-parse-gpr):
 +      * emulation/edt.el (edt-load-keys): Avoid (expand-file-name ".").
 +
 +2010-05-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * emulation/edt.el (edt-load-keys): Use locate-library.
 +
 +2010-05-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * log-edit.el (log-edit-strip-single-file-name): Default to nil.
 +      (log-edit-changelog-entries): Doc fix.
 +      (log-edit-changelog-insert-entries): Args changed.
 +      Rename relative filenames in ChangeLog entries.  Delete tabs.
 +      (log-edit-insert-changelog-entries): Reorganize return value of
 +      `log-edit-changelog-entries' to pass filenames to
 +      log-edit-changelog-insert-entries.
 +
 +2010-05-25  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * dired.el (dired-mode-map): Rebind "\C-t\C-t" from
 +      `image-dired-dired-insert-marked-thumbs' to
 +      `image-dired-dired-toggle-marked-thumbs'.
 +
 +      * image-dired.el: Require cl when compiling.
 +      (image-dired-dired-toggle-marked-thumbs): Rename from
 +      `image-dired-dired-insert-marked-thumbs'.  Add ARG.  Doc fix.
 +      Use interactive spec "P".  Set LOCALP arg of `dired-get-filename'
 +      to 'no-dir.  Skip files whose names don't match
 +      `image-file-name-regexp'.  When file has a thumbnail overlay,
 +      delete it.  (Bug#5270)
 +
 +2010-05-25  Juri Linkov  <juri@jurta.org>
 +
 +      * image-mode.el (image-mode): Add image-after-revert-hook to
 +      after-revert-hook.
 +      (image-after-revert-hook): New function.  (Bug#5669)
 +
 +2010-05-25  Juri Linkov  <juri@jurta.org>
 +
 +      * image.el (image-animated-p): When delay between animated images
 +      is 0, set it to 10 (0.1 sec).  (Bug#6258)
 +
 +2010-05-25  Christian Lynbech  <christian.lynbech@tieto.com>  (tiny change)
 +
 +      * net/tramp.el (tramp-handle-insert-directory): Don't use
 +      `forward-word', its default syntax could be changed.
 +
 +2010-05-25  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-progress-reporter-update): New defun.
 +      (with-progress-reporter): Use it.
 +      (tramp-process-actions):
 +      * net/tramp-gvfs.el (tramp-gvfs-handler-askquestion): Preserve
 +      current message, in order to let progress reporter continue
 +      afterwards.  (Bug#6257)
 +
 +2010-05-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * net/rcirc.el (rcirc-default-user-name, rcirc-default-full-name):
 +      Add :version.
 +
 +2010-05-25  Ryan Yeske  <rcyeske@gmail.com>
 +
 +      * net/rcirc.el (rcirc-default-user-name): Change to "user".
 +      (rcirc-default-full-name): Change to "unknown".
 +      (rcirc-user-name-history): Add variable.
 +
 +2010-05-25  Ryan Yeske  <rcyeske@gmail.com>
 +            Jonathan Rockway  <jon@jrock.us>
 +
 +      * net/rcirc.el (rcirc-server-alist): Add :pass.
 +      (rcirc): When prompting for connection parameters, also prompt for
 +      username and password.
 +      (rcirc-connect): Take a PASS argument.  If PASS is non-nil, send
 +      value to server when connecting.
 +
 +2010-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-set-prec2tab): Check override before use.
 +      (smie-merge-prec2s): Pass the tables as separate args.
 +      (smie-bnf-precedence-table): Adjust call accordingly.
 +      (smie-prec2-levels): Set levels at the end.
 +
 +      Replace Lisp calls to delete-backward-char by delete-char.
 +      * bs.el, expand.el, ido.el, image-dired.el, lpr.el, pcomplete.el,
 +      * skeleton.el, term.el, time.el, wid-edit.el, woman.el,
 +      * calc/calc-graph.el, calc/calc-help.el, calc/calc-incom.el,
 +      * calc/calc.el, emacs-lisp/cl-extra.el, emacs-lips/cl-loaddefs.el,
 +      * emulation/cua-rect.el, emulation/viper-ex.el, eshell/esh-test.el,
 +      * eshell/eshell.el, gnus/gnus-uu.el, gnus/nndoc.el, gnus/nnrss.el,
 +      * gnus/rfc2047.el, gnus/utf7.el, international/utf-7.el,
 +      * language/ethio-util.el, mh-e/mh-alias.el, mh-e/mh-search.el,
 +      * net/imap.el, net/rcirc.el, obsolete/complete.el, play/decipher.el,
 +      * progmodes/ada-mode.el, progmodes/cc-awk.el, progmodes/dcl-mode.el,
 +      * progmodes/ps-mode.el, progmodes/verilog-mode.el,
 +      * progmodes/vhdl-mode.el, textmodes/bibtex.el, textmodes/fill.el,
 +      * textmodes/reftex-auc.el, textmodes/rst.el, textmodes/sgml-mode.el,
 +      * textmodes/table.el, textmodes/texinfmt.el: Replace Lisp calls to
 +      delete-backward-char by calls to delete-char.
 +
 +2010-05-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el (hebrew-shape-gstring): New function.
 +      Register it in composition-function-table for all Hebrew combining
 +      characters.
 +
 +2010-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * epa.el (epa--select-keys): Don't explicitly delete the window since
 +      that can fail (e.g. sole window in frame).  Use dedication instead.
 +
 +2010-05-24  Uday S Reddy  <u.s.reddy@cs.bham.ac.uk>  (tiny change)
 +
 +      * textmodes/fill.el (fill-region): Don't fill past the end (bug#6201).
 +
 +2010-05-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * image.el (image-refresh): Define as an alias for image-flush.
 +
 +      * image-mode.el (image-toggle-display-image): Caller changed.
 +
 +2010-05-21  Juri Linkov  <juri@jurta.org>
 +
 +      * progmodes/grep.el (grep-read-files): Fix multi-pattern aliases.
 +      Remove "all" from grep-files-aliases.  Split grep-files-aliases by
 +      whitespace, call wildcard-to-regexp on substrings and concat them
 +      with "\\|".  (Bug#6114)
 +
 +2010-05-21  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-engine.el (c-parse-state-get-strategy):
 +      Replace parameter `here' with `here-' and `here-plus', which sandwich
 +      any pertinent CPP construct.
 +      (c-remove-stale-state-cache-backwards): Fix a bug which happens
 +      when doing (c-parse-state) in a CPP construct: Exclude any "new"
 +      CPP construct from taking part in the scanning.
 +
 +2010-05-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-do-copy-or-rename-file)
 +      (tramp-handle-file-local-copy, tramp-maybe-open-connection):
 +      Tune `with-progress-reporter' messages.
 +      (tramp-handle-vc-registered):
 +      * net/tramp-fish.el (tramp-fish-handle-file-local-copy)
 +      (tramp-fish-handle-insert-file-contents)
 +      (tramp-fish-maybe-open-connection):
 +      * net/tramp-gvfs.el (tramp-gvfs-maybe-open-connection):
 +      * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file)
 +      (tramp-imap-handle-insert-file-contents)
 +      (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'.
 +
 +2010-05-21  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * add-log.el (change-log-font-lock-keywords):
 +      Highlight all authors in multi-author entries.
 +
 +      * smerge-mode.el (smerge-refine-ignore-whitespace)
 +      (smerge-refine-weight-hack, smerge-refine, smerge-makeup-conflict):
 +      Fix typos in docstrings.
 +      (smerge-resolve, smerge-refine-subst): Reflow docstrings.
 +
 +2010-05-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/fortran.el (fortran-mode):
 +      * progmodes/f90.el (f90-mode): Derive from prog-mode.
 +
 +      * loadup.el [CANNOT_DUMP]: Update for bootstrap-emacs no longer
 +      having a relative path in src/Makefile.in.
 +
 +2010-05-20  Kevin Ryde  <user42@zip.com.au>
 +
 +      * help-mode.el (help-make-xrefs): For Info node links turn
 +      newlines into spaces.  Link node names with newlines are matched
 +      by help-xref-info-regexp and buttonized, this change ensures they
 +      can be followed successfully with RET.  (Bug#6206)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * locate.el (locate): Use pop-to-buffer instead of
 +      switch-to-buffer-other-window.  (Bug#6204)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * replace.el (replace-highlight): Fix lazy-highlighting
 +      for `M-s w str M-% str RET'.
 +
 +2009-12-15  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * isearch.el (isearch-yank-word-or-char): Pull next subword
 +      when `subword-mode' is activated.  (Bug#6220)
 +
 +2010-05-20  Mark A. Hershberger  <mah@everybody.org>
 +
 +      * isearch.el (isearch-update-post-hook): New hook.
 +      (isearch-update): Use the new hook.  (Bug#6225)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * isearch.el (isearch-mode-map): Bind more keys to isearch-help-map:
 +      [f1], [help], and (char-to-string help-char) instead of "\C-h".
 +      (Bug#6222)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * isearch.el (isearch-yank-string): Use isearch-process-search-string.
 +      (Bug#6223)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * dired-x.el (dired-jump, dired-jump-other-window): Add arg
 +      FILE-NAME to read from the minibuffer when called interactively
 +      with prefix argument instead of using buffer-file-name.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00534.html
 +
 +      * dired.el: Update autoloads.
 +
 +2010-05-20  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * nxml/nxml-mode.el (nxml-mode-map): Bind C-c / to
 +      nxml-finish-element, for consistency with SGML mode.
 +
 +      * progmodes/octave-mod.el (octave-mode-map): Bind C-c / to
 +      octave-close-block.
 +
 +2010-05-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * composite.el: Require cl when compiling.
 +      (reference-point-alist, compose-gstring-for-graphic)
 +      (compose-gstring-for-terminal): Fix typos in docstrings.
 +
 +2010-05-19  Juri Linkov  <juri@jurta.org>
 +
 +      * emacs-lisp/cl-macs.el (window-parameter): Add defsetf with
 +      set-window-parameter.
 +
 +2010-05-19  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-methods): Add `tramp-async-args' attribute
 +      where appropriate.
 +      (tramp-maybe-open-connection): Use it.
 +
 +2010-05-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * simple.el (move-end-of-line): Make sure we are at line beginning
 +      before backing up to end of previous line.
 +
 +2010-05-19  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * password-cache.el (password-cache-remove): Fix docstring.
 +
 +      * net/secrets.el: Autoload the widget functions.
 +      (secrets-search-items, secrets-create-item)
 +      (secrets-get-attributes, secrets-expand-item): Attributes will be
 +      stored on the password database without leading ":", as all other
 +      clients do as well.
 +      (secrets-mode): Fix docstring.
 +      (secrets-show-secrets): Provide it as autoloaded command only when
 +      D-Bus support is available.  Check existence of Secret Service API.
 +
 +2010-05-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * indent.el (indent-region): Deactivate region (bug#6200).
 +
 +2010-05-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc-dir.el (vc-dir): Don't pop-up-windows.  (Bug#6204)
 +
 +2010-05-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.el: Register compose-gstring-for-graphic in
 +      composition-function-table only for combining characters (Mn, Mc, Me).
 +
 +2010-05-18  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-trail.el (calc-trail-isearch-forward)
 +      (calc-trail-isearch-backward): Ensure that the new window
 +      point is set correctly.
 +
 +2010-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (read-quoted-char): Resolve modifiers after key
 +      remapping (bug#6212).
 +
 +2010-05-18  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Add visualization code for secrets.
 +      * net/secrets.el (secrets-mode): New major mode.
 +      (secrets-show-secrets, secrets-show-collections)
 +      (secrets-expand-collection, secrets-expand-item)
 +      (secrets-tree-widget-after-toggle-function)
 +      (secrets-tree-widget-show-password): New defuns.
 +
 +2010-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-next-sexp): Break inf-loop at BOB.
 +      (smie-backward-sexp, smie-forward-sexp): Remove boundary condition now
 +      handled in smie-next-sexp.
 +      (smie-indent-calculate): Provide a starting indentation (so the
 +      recursion is well-founded ;-).
 +
 +      Fix handling of non-associative equal levels.
 +      * emacs-lisp/smie.el (smie-prec2-levels): Choose distinct levels even
 +      when it's not needed.
 +      (smie-op-left, smie-op-right): New functions.
 +      (smie-next-sexp): New function, extracted from smie-backward-sexp.
 +      Better handle equal levels to distinguish the associative case from
 +      the "multi-keyword construct" case.
 +      (smie-backward-sexp, smie-forward-sexp): Use it.
 +
 +2010-05-18  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/prolog.el (smie-indent-basic): Declare for byte-compiler.
 +
 +      * emacs-lisp/smie.el (smie-precs-precedence-table, smie-backward-sexp)
 +      (smie-forward-sexp, smie-indent-calculate): Fix typos in docstrings.
 +
 +2010-05-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Provide a simple generic indentation engine and use it for Prolog.
 +      * emacs-lisp/smie.el: New file.
 +      * progmodes/prolog.el (prolog-smie-op-levels)
 +      (prolog-smie-indent-rules): New var.
 +      (prolog-mode-variables): Use them to configure SMIE.
 +      (prolog-indent-line, prolog-indent-level): Remove.
 +
 +2010-05-17  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-vec.el (math-vector-avg): Put the vector elements in
 +      order before computing the averages.
 +
 +2010-05-16  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-vec.el (calc-histogram):
 +      (calcFunc-histogram): Allow vectors as inputs.
 +      (math-vector-avg): New function.
 +
 +      * calc/calc-ext.el (math-group-float): Have the number of digits
 +      being grouped depend on the radix (Bug#6189).
 +
 +2010-05-15  Ken Raeburn  <raeburn@raeburn.org>
 +
 +      * version.el (emacs-copyright, emacs-version): Don't define here,
 +      now that emacs.c defines it.
 +
 +2010-05-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/mule-cmds.el (mule-menu-keymap): Fix definition of
 +      "Describe Language Environment" menu item.
 +
 +      * language/hebrew.el ("Hebrew", "Windows-1255"): Doc fix.
 +
 +      Bidi-sensitive movement with arrow keys.
 +      * subr.el (right-arrow-command, left-arrow-command): New functions.
 +
 +      * bindings.el (global-map): Bind them to right and left arrow keys.
 +
 +      Don't override standard definition of convert-standard-filename.
 +      * files.el (convert-standard-filename): Call
 +      w32-convert-standard-filename and dos-convert-standard-filename on
 +      the corresponding systems.
 +
 +      * w32-fns.el (w32-convert-standard-filename): Rename from
 +      convert-standard-filename.  Doc fix.
 +
 +      * dos-fns.el (dos-convert-standard-filename): Doc fix.
 +      (convert-standard-filename): Don't defalias.
 +      (register-name-alist, make-register, register-value)
 +      (set-register-value, intdos): Obsolete aliases for the
 +      corresponding dos-* functions and variables.
 +      (dos-intdos): Add a doc string.
 +
 +2010-05-15  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-aent.el (math-read-token, math-find-user-tokens):
 +      * calc/calc-lang.el (math-read-big-rec, math-lang-read-symbol):
 +      (math-compose-tex-func):
 +      * calc/calccomp.el (math-compose-expr):
 +      * calc/calc-ext.el (math-format-flat-expr-fancy):
 +      * calc/calc-store.el (calc-read-var-name):
 +      * calc/calc-units.el (calc-explain-units-rec): Allow Greek letters.
 +
 +      * calc/calc.el (var-π, var-φ, var-γ): New variables.
 +      * calc/calc-aent.el (math-read-replacement-list): Add "micro" symbol.
 +      * calc/calc-units.el (math-unit-prefixes): Add mu for micro.
 +      (math-standard-units): Add units.
 +
 +2010-05-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/asm-mode.el (asm-mode):
 +      * progmodes/prolog.el (prolog-mode): Use define-derived-mode.
 +
 +      * pcomplete.el (pcomplete-completions-at-point): New function,
 +      extracted from pcomplete-std-complete.
 +      (pcomplete-std-complete): Use it.
 +
 +2010-05-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (setwins, setwins_almost, setwins_for_subdirs):
 +      Remove references to CVS, RCS and Old directories.
 +
 +2010-05-14  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-bin.el (math-format-twos-complement): Group digits when
 +      appropriate.
 +
 +2010-05-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/sh-script.el (sh-mode-default-syntax-table): Remove.
 +      (sh-mode-syntax-table): Give it a default value instead.
 +      (sh-header-marker): Make buffer-local.
 +      (sh-mode): Move make-local-variable to the corresponding setq.
 +      (sh-add-completer): Avoid gratuitously let-binding a buffer-local var.
 +      Use complete-with-action.
 +
 +      * simple.el (prog-mode): New (abstract) major mode.
 +      * emacs-lisp/lisp-mode.el (emacs-lisp-mode, lisp-mode): Use it.
 +      * progmodes/sh-script.el (sh-mode): Remove redundant var assignment.
 +
 +2010-05-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/sql.el (sql-oracle-program): Reflow docstring.
 +      (sql-oracle-scan-on, sql-sybase-program, sql-product-font-lock)
 +      (sql-add-product-keywords, sql-highlight-product, sql-set-product)
 +      (sql-make-alternate-buffer-name, sql-placeholders-filter)
 +      (sql-escape-newlines-filter, sql-input-sender)
 +      (sql-send-magic-terminator, sql-sybase): Fix typos in docstrings.
 +
 +2010-05-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      Add TeX open-block and close-block keybindings to SGML, and vice versa.
 +
 +      * textmodes/tex-mode.el (tex-mode-map): Bind C-c C-t to
 +      latex-open-block and C-c / to latex-close-block.
 +
 +      * textmodes/sgml-mode.el (sgml-mode-map): Bind C-c C-o to sgml-tag
 +      and C-c C-e to sgml-close-tag.
 +
 +2010-05-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (with-progress-reporter): Create reporter object
 +      only when the message would be displayed.  Handle nested calls.
 +      (tramp-handle-load, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-maybe-send-script, tramp-find-shell):
 +      Use `with-progress-reporter'.
 +      (tramp-handle-dired-compress-file, tramp-maybe-open-connection):
 +      Fix message text.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file)
 +      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 +      (tramp-smb-handle-write-region, tramp-smb-maybe-open-connection):
 +      Use `with-progress-reporter'.
 +
 +2010-05-13  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-init-process): Do not kill ispell
 +      process everytime when spellchecking from the minibuffer (bug#6143).
 +
 +2010-05-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/sh-script.el (sh-mode): Use define-derived-mode.
 +
 +      * dos-fns.el: Add "dos-" prefix for namespace control.
 +      (convert-standard-filename): Define as alias for
 +      dos-convert-standard-filename but only if applicable.
 +
 +2010-05-12  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-cmds.el (c-beginning-of-defun, c-end-of-defun):
 +      Push the mark at the start of these functions when appropriate.
 +
 +2010-05-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-cycle-threshold): New custom var.
 +      (completion--do-completion): Use it.
 +      (minibuffer-complete): Use cycling if appropriate.
 +
 +2010-05-11  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * dirtrack.el (dirtrackp): Remove defcustom; don't make automatically
 +      buffer-local (it's an obsolete alias for `dirtrack-mode') (bug#6173).
 +
 +2010-05-11  Juri Linkov  <juri@jurta.org>
 +
 +      * scroll-all.el (scroll-all-check-to-scroll):
 +      Add `scroll-up-command' and `scroll-down-command' (bug#6164).
 +
 +2010-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * iimage.el (iimage-mode-map): Move initialization into declaration.
 +      (iimage-mode-buffer): Use with-silent-modifications.
 +      Simplify calling convention.  Adjust callers.
 +      (iimage-mode): Don't run hook redundantly.
 +
 +      * minibuffer.el (completion-pcm--pattern->regex):
 +      Fix last change (bug#6160).
 +
 +2010-05-10  Juri Linkov  <juri@jurta.org>
 +
 +      Remove nodes visited during Isearch from the Info history.
 +      * info.el (Info-isearch-initial-history)
 +      (Info-isearch-initial-history-list): New variables.
 +      (Info-isearch-start): Record initial values of
 +      Info-isearch-initial-history and Info-isearch-initial-history-list.
 +      Add Info-isearch-end to isearch-mode-end-hook.
 +      (Info-isearch-end): New function.
 +
 +2010-05-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-do-file-attributes-with-stat): Add space in
 +      format string, in order to work around a bug in pdksh.
 +      Reported by Gilles Pion <gpion@lfdj.com>.
 +      (tramp-handle-verify-visited-file-modtime): Do not send a command
 +      when the connection is not established.
 +      (tramp-handle-set-file-times): Simplify the check for utc.
 +
 +2010-05-10  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Fix use of `filter-buffer-substring' (rework previous change).
 +      * emulation/cua-base.el (cua--filter-buffer-noprops): New function.
 +      (cua-repeat-replace-region):
 +      * emulation/cua-rect.el (cua--extract-rectangle, cua-incr-rectangle):
 +      * emulation/cua-gmrk.el (cua-copy-region-to-global-mark)
 +      (cua-cut-region-to-global-mark): Use it.
 +
 +2010-05-09  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.1.
 +      (sql-product-alist): Redesign structure of product info.
 +      (sql-product, sql-user, sql-server, sql-database): Safe variables.
 +      (sql-port, sql-port-history): New variables.
 +      (sql-interactive-product): New variable.
 +      (sql-send-terminator): New variable.
 +      (sql-imenu-generic-expression): Add "Types" imenu entry.
 +      (sql-oracle-login-params, sql-sqlite-login-params)
 +      (sql-mysql-login-params, sql-solid-login-params)
 +      (sql-sybase-login-params, sql-informix-login-params)
 +      (sql-ingres-login-params, sql-ms-login-params)
 +      (sql-postgres-login-params, sql-interbase-login-params)
 +      (sql-db2-login-params, sql-linter-login-params)
 +      (sql-oracle-scan-on): New variables.
 +      (sql-mode-map): Add C-c C-i to start interactive mode.
 +      (sql-mode-menu): Update existing menu entries.
 +      (sql-font-lock-keywords-builder): Compile-time font-lock optimization.
 +      (sql-mode-oracle-font-lock-keywords)
 +      (sql-mode-postgres-font-lock-keywords)
 +      (sql-mode-ms-font-lock-keywords)
 +      (sql-mode-sybase-font-lock-keywords)
 +      (sql-mode-informix-font-lock-keywords)
 +      (sql-mode-interbase-font-lock-keywords)
 +      (sql-mode-ingres-font-lock-keywords)
 +      (sql-mode-solid-font-lock-keywords)
 +      (sql-mode-mysql-font-lock-keywords)
 +      (sql-mode-sqlite-font-lock-keywords)
 +      (sql-mode-db2-font-lock-keywords)
 +      (sql-mode-linter-font-lock-keywords): Update initialization to
 +      reduce run-time complexity.
 +      (sql-add-product, sql-del-product): New functions.
 +      (sql-set-product-feature, sql-get-product-feature): New functions.
 +      (sql-product-font-lock): Update product API.
 +      (sql-add-product-keywords): New function.
 +      (sql-highlight-product): Update product API.
 +      (sql-help-list-products): New function.
 +      (sql-help): Dynamically lists free and non-free products.
 +      (sql-get-login): Correct bug in handling history and added
 +      prompt for port.
 +      (sql-copy-column): Copy without properties.
 +      (sqli-input-sender): Apply filters to SQLi input.
 +      (sql-query-placeholders-and-send): Obey `sql-oracle-scan-on' setting.
 +      Implement as a filter.
 +      (sql-escape-newlines-filter): Implement as a filter.
 +      (sql-remove-tabs-filter): New function.
 +      (sql-send-magic-terminator): New function.
 +      (sql-send-string): Implement magic terminator.
 +      (sql-send-region): Use `sql-send-string'.
 +      (sql-interactive-mode): Use product API.
 +      (sql-product-interactive): Use product API.
 +      (sql-oracle, sql-sybase, sql-informix, sql-sqlite, sql-mysql)
 +      (sql-solid, sql-ingres, sql-ms, sql-postgres, sql-interbase)
 +      (sql-db2, sql-linter): Use `sql-product-interactive'.
 +      (sql-connect): New function.
 +      (sql-connect-oracle, sql-connect-sybase, sql-connect-informix)
 +      (sql-connect-sqlite, sql-connect-mysql, sql-connect-solid)
 +      (sql-connect-ingres, sql-connect-ms, sql-connect-postgres)
 +      (sql-connect-interbase, sql-connect-db2, sql-connect-linter):
 +      Use `sql-connect'.
 +
 +2010-05-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-pcm-complete-word-inserts-delimiters):
 +      New custom variable.
 +      (completion-pcm--string->pattern): Use it.
 +      (completion-pcm--pattern->regex, completion-pcm--pattern->string):
 +      Make it handle any symbol as `any'.
 +      (completion-pcm--merge-completions): Extract common suffix for the new
 +      `prefix' symbol as well.
 +      (completion-substring--all-completions): Use the new `prefix' symbol.
 +
 +2010-05-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-compat.el (byte-compile-not-obsolete-vars): Define if
 +      not bound.
 +      (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 +      (tramp-compat-funcall): New defmacro.
 +      (tramp-compat-line-beginning-position)
 +      (tramp-compat-line-end-position)
 +      (tramp-compat-temporary-file-directory)
 +      (tramp-compat-make-temp-file, tramp-compat-file-attributes)
 +      (tramp-compat-copy-file, tramp-compat-copy-directory)
 +      (tramp-compat-delete-file, tramp-compat-delete-directory)
 +      (tramp-compat-number-sequence, tramp-compat-process-running-p)
 +      * net/tramp.el (top, with-progress-reporter)
 +      (tramp-rfn-eshadow-setup-minibuffer)
        (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times)
        (tramp-handle-dired-compress-file, tramp-handle-shell-command)
        (tramp-completion-mode-p, tramp-check-for-regexp)
        (tramp-open-connection-setup-interactive-shell)
        (tramp-compute-multi-hops, tramp-read-passwd, tramp-clear-passwd)
        (tramp-time-diff, tramp-coding-system-change-eol-conversion)
 -      (tramp-set-process-query-on-exit-flag, tramp-unload-tramp):
 -      Use `tramp-compat-funcall'.
 -      (tramp-handle-make-symbolic-link): Flush file properties.
 -      (tramp-handle-load, tramp-handle-file-local-copy)
 -      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 -      (tramp-handle-vc-registered, tramp-maybe-send-script)
 -      (tramp-find-shell): Use `with-progress-reporter'.
 -      (tramp-do-file-attributes-with-stat): Add space in format string,
 -      in order to work around a bug in pdksh.  Reported by Gilles Pion
 -      <gpion@lfdj.com>.
 -      (tramp-handle-verify-visited-file-modtime): Do not send a command
 -      when the connection is not established.
 -      (tramp-handle-set-file-times): Simplify the check for utc.
 -      (tramp-handle-directory-files-and-attributes)
 -      (tramp-get-remote-path): Use `copy-tree'.
 -      (tramp-completion-handle-file-name-all-completions): Ensure, that
 -      non remote files are still checked.  Oops.
 -      (tramp-handle-copy-file, tramp-do-copy-or-rename-file):
 -      Handle PRESERVE-SELINUX-CONTEXT.
 -      (tramp-do-copy-or-rename-file): Add progress reporter.
 -      (tramp-do-copy-or-rename-file-directly): Do not use
 -      `tramp-handle-file-remote-p'.
 -      (tramp-do-copy-or-rename-file-out-of-band):
 -      Use `tramp-compat-delete-directory'.
 -      (tramp-do-copy-or-rename-file-out-of-band)
 -      (tramp-compute-multi-hops, tramp-maybe-open-connection):
 -      Use `format-spec-make'.
 -      (tramp-handle-delete-file): Add TRASH arg.
 -      (tramp-handle-dired-uncache): Flush directory cache, not only file
 -      cache.
 -      (tramp-handle-expand-file-name)
 -      (tramp-completion-handle-file-name-all-completions)
 -      (tramp-completion-handle-file-name-completion):
 -      Use `tramp-connectable-p'.
 -      (tramp-handle-start-file-process): Set connection property "vec".
 -      Use it, in order to invalidate file caches.  Check only for
 -      `remote-tty' process property.
 -      Implement tty setting.  (Bug#4604, Bug#6360)
 -      (tramp-file-name-for-operation): Add `call-process-region' and
 -      `set-file-selinux-context'.
 -      (tramp-find-foreign-file-name-handler)
 -      (tramp-advice-make-auto-save-file-name)
 -      (tramp-set-auto-save-file-modes): Remove superfluous check for
 -      `stringp'.  This is done inside `tramp-tramp-file-p'.
 -      (tramp-file-name-handler): Trace 'quit.  Catch the error for some
 -      operations when we are in completion mode.  This gives the user
 -      the chance to correct the file name in the minibuffer.
 -      (tramp-completion-mode-p): Use `non-essential'.
 -      (tramp-handle-file-name-all-completions): Backward/ XEmacs
 -      compatibility: Use `completion-ignore-case' if
 -      `read-file-name-completion-ignore-case' does not exist.
 -      (tramp-get-debug-buffer): Use `tramp-debug-outline-regexp'.
 -      (tramp-find-shell, tramp-open-connection-setup-interactive-shell):
 -      `tramp-open-shell'.
 -      (tramp-action-password): Hide password prompt before next run.
 -      (tramp-process-actions): Widen connection buffer for the trace.
 -      (tramp-open-connection-setup-interactive-shell): Set `remote-tty'
 -      process property.  Trace stty settings if `tramp-verbose' >= 9.
 -      Apply workaround for IRIX64 bug.  Move argument of last
 -      `tramp-send-command' where it belongs to.
 -      (tramp-maybe-open-connection): Use `async-args' and `gw-args' in
 -      front of `login-args'.
 -      (tramp-get-ls-command, tramp-get-ls-command-with-dired): Run tests
 -      on "/dev/null" instead of "/".
 -      (tramp-get-ls-command-with-dired): Make test for "--dired"
 -      stronger.
 -      (tramp-set-auto-save-file-modes): Adapt version check.
 -      (tramp-set-process-query-on-exit-flag): Fix wrong parentheses.
 -      (tramp-handle-process-file): Call the program in a subshell, in
 -      order to preserve working directory.
 -      (tramp-handle-shell-command): Don't use hard-wired "/bin/sh" but
 -      `tramp-remote-sh' from `tramp-methods'.
 -      (tramp-get-ls-command): Make test for "--color=never" stronger.
 -      (tramp-check-for-regexp): Use (forward-line 1).
 +      (tramp-set-process-query-on-exit-flag, tramp-unload-tramp)
 +      * net/tramp-cmds.el (tramp-cleanup-all-connections)
 +      (tramp-reporter-dump-variable, tramp-load-report-modules)
 +      (tramp-append-tramp-buffers)
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-file-selinux-context): Use it.
 +
 +      * net/tramp-imap.el (top): Autoload `epg-make-context'.
 +
 +2010-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el (compilation-buffer-modtime): Rename from
 +      buffer-modtime.  Adjust users.
 +
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * international/mule.el (auto-coding-alist): Only purecopy
 +      car of each item, not the whole list (Bug#6083).
 +
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/js.el (js-mode): Make paragraph variables local before
 +      calling c-setup-paragraph-variables (Bug#6071).
 +
 +2010-05-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * composite.el (compose-region, reference-point-alist): Fix typos
 +      in the doc strings.
 +
 +2010-05-08  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +
 +      * calc/calc-graph.el (calc-graph-plot): Use the proper form for
 +      gnuplot's "set" command.
 +
 +2010-05-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * abbrev.el (last-abbrev-text): Doc fix.
 +      (abbrev-prefix-mark): Don't escape parenthesis.
 +
 +2010-05-08  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * composite.el (find-composition): Doc fix.
 +
 +2010-05-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/sql.el (sql-electric-stuff): Fix typo in tag.
 +      (sql-oracle-program, sql-sqlite-options)
 +      (sql-query-placeholders-and-send): Doc fixes.
 +      (sql-set-product, sql-interactive-mode): Reflow docstrings.
 +      (sql-imenu-generic-expression, sql-buffer)
 +      (sql-mode-ansi-font-lock-keywords, sql-mode-oracle-font-lock-keywords)
 +      (sql-mode-postgres-font-lock-keywords, sql-mode-ms-font-lock-keywords)
 +      (sql-mode-sybase-font-lock-keywords)
 +      (sql-mode-informix-font-lock-keywords)
 +      (sql-mode-interbase-font-lock-keywords)
 +      (sql-mode-ingres-font-lock-keywords, sql-mode-solid-font-lock-keywords)
 +      (sql-mode-mysql-font-lock-keywords, sql-mode-sqlite-font-lock-keywords)
 +      (sql-mode-db2-font-lock-keywords, sql-mode-font-lock-keywords)
 +      (sql-product-feature, sql-highlight-product)
 +      (comint-line-beginning-position, sql-rename-buffer)
 +      (sql-toggle-pop-to-buffer-after-send-region sql-oracle)
 +      (sql-sybase, sql-informix, sql-sqlite, sql-mysql, sql-solid)
 +      (sql-ingres, sql-ms, sql-postgres, sql-interbase, sql-db2, sql-linter):
 +      Fix typos in docstrings.
 +
 +2010-05-08  Juri Linkov  <juri@jurta.org>
 +
 +      * info.el (Info-fontify-node): Put Info-breadcrumbs to the `display'
 +      property instead of `invisible' and `after-string' (bug#5998).
 +
 +2010-05-08  Juri Linkov  <juri@jurta.org>
 +
 +      * image-mode.el (image-mode-as-text): Fix typo in docstring.
 +
 +2010-05-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * filecache.el (file-cache-add-directory-list)
 +      (file-cache-add-directory-recursively): Fix typos in docstrings.
 +
 +2010-05-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/indian.el (gurmukhi-composable-pattern): Fix typo.
 +      (gujarati-composable-pattern): Fix typo.
 +
 +2010-05-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/indian.el (oriya-composable-pattern)
 +      (tamil-composable-pattern, malayalam-composable-pattern):
 +      Add two-part vowels to "v" (vowel sign).
 +
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * files.el (copy-directory): Handle symlinks (Bug#5982).
 +
 +2010-05-08  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vc-hg.el (vc-hg-state): Use HGRCPATH, not HGRC.
 +      (vc-hg-working-revision): Likewise.  Use hg parents, not hg parent
 +      (Bug#5846).
 +
 +2010-05-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/lisp.el (lisp-completion-at-point): Give it a doc string.
 +
 +      * minibuffer.el (completion-at-point): Doc fix.
 +
 +2010-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * electric.el (Electric-command-loop): Minor tweak.
 +
 +      * ebuff-menu.el (electric-buffer-list): Try and make it behave a bit
 +      better with dedicated windows.
 +
 +2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
  
 -      * net/trampver.el: Update release number.
 +2010-05-07  Deniz Dogan  <deniz.a.m.dogan@gmail.com>  (tiny change)
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-08-26  Magnus Henoch  <magnus.henoch@gmail.com>
 +      Highlight vendor specific properties.
 +      * textmodes/css-mode.el (css-proprietary-nmstart-re): New var.
 +      (css-proprietary-property): New face.
 +      (css-font-lock-keywords): Use them.
  
 -      * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
 -      empty argument to gvfs-copy.
 +2010-05-07  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +      * cus-start.el (all): Add native condition for tool-bar-* symbols.
  
 -      * net/tramp-compat.el (tramp-compat-delete-file): Rewrite to
 -      handle new TRASH arg of `delete-file'.
 +2010-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-08-26  Christian Lynbech  <christian.lynbech@tieto.com>  (tiny change)
 +      * textmodes/dns-mode.el (auto-mode-alist): Add entry for .zone files.
 +      * files.el (auto-mode-alist): Remove redundant entries.
  
 -      * net/tramp.el (tramp-handle-insert-directory): Don't use
 -      `forward-word', its default syntax could be changed.
 +      * files.el (auto-save-mode): Move to simple.el to fix bootstrap.
 +      * simple.el (auto-save-mode): Move from files.el.
 +      * minibuffer.el (completion--common-suffix): Fix copy&paste error.
  
 -2010-08-26  Toru TSUNEYOSHI  <t_tuneyosi@hotmail.com>
 +2010-05-07  Christian von Roques  <roques@mti.ag>  (tiny change)
 +
 +      * epg.el (epg-key-capablity-alist): Add "D" flag (Bug#5592).
 +
 +2010-05-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mail/binhex.el (binhex-decode-region-internal)
 +      * mail/uudecode.el (uudecode-decode-region-internal)
 +      * net/dns.el (dns-read-string-name, dns-write, dns-read)
 +      (dns-read-type, dns-query)
 +      * pgg-parse.el (pgg-parse-armor)
 +      * pgg.el (pgg-verify-region)
 +      * sha1.el (sha1-string-external): Don't run set-buffer-multibyte for
 +      XEmacs.
 +
 +      * net/imap.el (imap-disable-multibyte): Redefine it as a macro.
 +
 +2010-05-07  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/cperl-mode.el (cperl-mode-unload-function): New function.
 +
 +      Fix use of `filter-buffer-substring' (4th arg NOPROPS removed).
 +      * emulation/cua-base.el (cua-repeat-replace-region):
 +      * emulation/cua-gmrk.el (cua-copy-region-to-global-mark)
 +      (cua-cut-region-to-global-mark):
 +      Remove text properties with `set-text-properties'.
 +
 +2010-05-06  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (top, with-progress-reporter):
 +      Use `symbol-function' inside `funcall'.
 +
 +      * net/tramp-compat.el (tramp-compat-file-attributes)
 +      (tramp-compat-delete-file, tramp-compat-delete-directory):
 +      Handle only `wrong-number-of-arguments' error.
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Fix typo.
 +      (tramp-gvfs-handle-file-selinux-context): Use `symbol-function'
 +      inside `funcall'.
 +
 +2010-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion--sreverse, completion--common-suffix):
 +      New functions.
 +      (completion-pcm--merge-completions): Extract common suffix when safe.
 +
 +      * emacs-lisp/easy-mmode.el (define-minor-mode):
 +      Make :variable more flexible.
 +      * files.el (auto-save-mode): Use it to define using define-minor-mode.
 +
 +2010-05-05  Juri Linkov  <juri@jurta.org>
 +
 +      Add `slow' and `history' tags to the desktop data.
 +
 +      * info.el (Info-virtual-nodes) [*Index*]: Add `slow' tag.
 +      (Info-virtual-files) [*Apropos*]: Add `slow' tag.
 +      (Info-finder-find-node): Require `finder.el' to be able
 +      to restore node from the desktop.
 +      (Info-desktop-buffer-misc-data): Save all nodes.  Save additional
 +      data `Info-history' and `slow' tag in the assoc list.
 +      (Info-restore-desktop-buffer): Don't restore nodes with the
 +      `slow' tag.  Restore `Info-history'.
 +
 +2010-05-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Add FORCE argument to `delete-file'.
 +
 +      * net/ange-ftp.el (ange-ftp-del-tmp-name): Make it a defun,
 +      forcing to delete the temporary file.
 +      (ange-ftp-delete-file): Add FORCE arg.
 +      (ange-ftp-rename-remote-to-remote)
 +      (ange-ftp-rename-local-to-remote, ange-ftp-rename-remote-to-local)
 +      (ange-ftp-load, ange-ftp-compress, ange-ftp-uncompress):
 +      Force file deletion.
 +
 +      * net/tramp-compat.el (tramp-compat-delete-file): New defun.
 +
 +      * net/tramp.el (tramp-handle-delete-file): Add FORCE arg.
 +      (tramp-handle-make-symbolic-link, tramp-handle-load)
 +      (tramp-do-copy-or-rename-file-via-buffer)
 +      (tramp-do-copy-or-rename-file-directly)
 +      (tramp-do-copy-or-rename-file-out-of-band)
 +      (tramp-handle-process-file, tramp-handle-call-process-region)
 +      (tramp-handle-shell-command, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-delete-temp-file-function): Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-fish.el (tramp-fish-handle-delete-file): Add FORCE arg.
 +      (tramp-fish-handle-make-symbolic-link)
 +      (tramp-fish-handle-process-file): Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-ftp.el (tramp-ftp-file-name-handler):
 +      Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Add FORCE arg.
 +      (tramp-gvfs-handle-write-region): Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-imap.el (tramp-imap-handle-delete-file): Add FORCE arg.
 +      (tramp-imap-do-copy-or-rename-file): Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-delete-file): Add FORCE arg.
 +      (tramp-smb-handle-copy-file, tramp-smb-handle-file-local-copy)
 +      (tramp-smb-handle-rename-file, tramp-smb-handle-write-region): Use
 +      `tramp-compat-delete-file'.
 +
 +2010-05-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Minor cleanups.
 +      * subr.el (add-minor-mode): Use push.
 +      * mail/supercite.el (sc-electric-mode): Use more descriptive arg name.
 +      * emulation/edt.el (edt-select-mode): Simplify.
 +
 +      Use define-minor-mode in more cases.
 +      * term/tvi970.el (tvi970-set-keypad-mode):
 +      * simple.el (auto-fill-mode, overwrite-mode, binary-overwrite-mode)
 +      (normal-erase-is-backspace-mode):
 +      * scroll-bar.el (scroll-bar-mode): Use it and define-minor-mode.
 +      (set-scroll-bar-mode-1): (Re)move to its sole caller.
 +      (get-scroll-bar-mode): New function.
 +      * emacs-lisp/cl-macs.el (eq): Handle a non-variable first arg.
 +
 +      Use define-minor-mode for less obvious cases.
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Add :variable keyword.
 +      * emacs-lisp/cl-macs.el (terminal-parameter, eq): Add setf method.
 +      * international/iso-ascii.el (iso-ascii-mode):
 +      * frame.el (auto-raise-mode, auto-lower-mode):
 +      * composite.el (global-auto-composition-mode): Use define-minor-mode.
 +
 +2010-05-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-methods): Remove "-q" from `tramp-login-args'
 +      in order to see error messages for failed logins.
 +
 +2010-05-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * diff.el (diff-sentinel):
 +
 +      * epg.el (epg--make-temp-file, epg-decrypt-string)
 +      (epg-verify-string, epg-sign-string, epg-encrypt-string):
 +
 +      * jka-compr.el (jka-compr-partial-uncompress)
 +      (jka-compr-call-process, jka-compr-write-region, jka-compr-load):
 +
 +      * server.el (server-sentinel): Use delete-file's new FORCE arg
 +      (Bug#6070).
 +
 +2010-05-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use define-minor-mode where applicable.
 +      * view.el (view-mode):
 +      * type-break.el (type-break-query-mode)
 +      (type-break-mode-line-message-mode):
 +      * textmodes/reftex.el (reftex-mode):
 +      * term/vt100.el (vt100-wide-mode):
 +      * tar-mode.el (tar-subfile-mode):
 +      * savehist.el (savehist-mode):
 +      * ibuf-ext.el (ibuffer-auto-mode):
 +      * composite.el (auto-composition-mode):
 +      * progmodes/vhdl-mode.el (vhdl-electric-mode, vhdl-stutter-mode):
 +      Use define-minor-mode.
 +      (vhdl-mode): Use static mode-line format.
 +      (vhdl-mode-line-update): Delete.
 +      (vhdl-create-mode-menu, vhdl-activate-customizations)
 +      (vhdl-hs-minor-mode): Don't bother calling it.
 +
 +2010-05-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (with-wrapper-hook): Move.
 +      (buffer-substring-filters): Mark obsolete.
 +      (filter-buffer-substring-functions): New variable.
 +      (filter-buffer-substring): Use it.  Remove unused arg `noprops'.
 +
 +2010-05-01  Toru TSUNEYOSHI  <t_tuneyosi@hotmail.com>
              Michael Albinus  <michael.albinus@gmx.de>
  
        Implement compression for inline methods.
        (tramp-handle-file-local-copy, tramp-handle-write-region)
        (tramp-method-out-of-band-p): Use `tramp-get-inline-coding'.
  
 -2010-08-26  Noah Lavine  <noah549@gmail.com>  (tiny change)
 -
 -      Detect ssh 'ControlMaster' argument automatically in some cases.
 +2010-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
 -      (tramp-default-method): Use it.
 +      * bindings.el (mode-line-abbrev-mode, mode-line-auto-fill-mode):
 +      Remove unused functions.
  
 -2010-08-26  Karel Klíč  <kklic@redhat.com>
 +      * emacs-lisp/lisp-mode.el (lisp-mode): Use define-derived-mode.
 +      Set find-tag-default-function as a variable rather than a property.
  
 -      * net/tramp.el (tramp-file-name-for-operation):
 -      Add file-selinux-context.
 +      * minibuffer.el (tags-completion-at-point-function): Move to etags.el.
 +      * progmodes/etags.el (tags-completion-at-point-function):
 +      Remove left over interactive spec.  Add autoloading stub.
 +      (complete-tag): Use tags-completion-at-point-function.
  
 -2010-08-26  Łukasz Stelmach  <lukasz.stelmach@iem.pw.edu.pl>  (tiny change)
 +2010-04-30  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921).
 +      * minibuffer.el (tags-completion-at-point-function): Fix return value.
  
 -2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-29  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * simple.el (beginning-of-buffer, end-of-buffer): Doc fix
 -      (Bug#6907).
 +      * ido.el (ido-init-completion-maps): Remove C-v binding.
 +      (ido-minibuffer-setup): Don't set cua-inhibit-cua-keys (Bug#5765).
  
 -2010-08-23  Chris Foote <chris@foote.com.au>  (tiny change)
 +2010-04-29  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * progmodes/python.el (python-block-pairs): Allow use of "finally"
 -      with "else" (Bug#3991).
 +      * minibuffer.el (tags-completion-at-point-function): New function.
 +      (completion-at-point-functions): Use it.
  
 -2010-08-22  Leo  <sdl.web@gmail.com>
 +      * progmodes/etags.el (complete-tag): Revert last change.
  
 -      * net/rcirc.el (rcirc-add-or-remove): Accept a list of elements.
 -      (ignore, bright, dim, keyword): Split list of nicknames before
 -      passing to rcirc-add-or-remove (Bug#6894).
 +2010-04-29  Alan Mackenzie  <acm@muc.de>
  
 -2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +      * progmodes/cc-mode.el (c-extend-region-for-CPP): Fix an
 +      off-by-one error (in end of macro position).
  
 -      * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix (Bug#6880).
 +2010-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-08-21  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +      * net/browse-url.el (browse-url-firefox-program): Use iceweasel if
 +      firefox is absent.  Don't autoload.
 +      (browse-url-galeon-program): Don't autoload.
  
 -      * whitespace.el: Fix slow cursor movement (Bug#6172).  Reported by
 -      Christoph Groth <cwg@falma.de> and Liu Xin <x_liu@neusoft.com>.
 -      New version 13.0.
 -      (whitespace-empty-at-bob-regexp, whitespace-empty-at-eob-regexp):
 -      Adjust initialization.
 -      (whitespace-bob-marker, whitespace-eob-marker)
 -      (whitespace-buffer-changed): New vars.
 -      (whitespace-cleanup, whitespace-color-on, whitespace-color-off)
 -      (whitespace-empty-at-bob-regexp, whitespace-empty-at-eob-regexp)
 -      (whitespace-post-command-hook, whitespace-display-char-on):
 -      Adjust code.
 -      (whitespace-looking-back, whitespace-buffer-changed): New funs.
 -      (whitespace-space-regexp, whitespace-tab-regexp): Eliminate funs.
 +2010-04-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-08-21  Leo  <sdl.web@gmail.com>
 +      * bindings.el (complete-symbol): Move into minibuffer.el.
  
 -      Fix buffer-list rename&refresh after killing a buffer in ido.
 -      * lisp/ido.el: Revert Óscar's.
 -      (ido-kill-buffer-at-head): Exit the minibuffer with ido-exit=refresh.
 -      Remember the buffers at head, rather than their name.
 -      * lisp/iswitchb.el (iswitchb-kill-buffer): Re-make the list.
 +      * minibuffer.el (complete-tag): Move from etags.el.  If tags
 +      completion cannot be performed, return nil instead of signalling
 +      an error.
 +      (completion-at-point): Make it an alias for complete-symbol.
 +      (complete-symbol): Move from bindings.el, and replace with the
 +      body of completion-at-point.
  
 -2010-08-21  Kirk Kelsey  <kirk.kelsey@0x4b.net>  (tiny change)
 -            Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * progmodes/etags.el (complete-tag): Move to minibuffer.el.
  
 -      * progmodes/make-mode.el (makefile-fill-paragraph): Account for the
 -      extra backslash added to each line (bug#6890).
 +2010-04-28  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp.el (tramp-remote-selinux-p): New defun.
 +      (tramp-handle-file-selinux-context)
 +      (tramp-handle-set-file-selinux-context): Use it.
  
 -      * subr.el (read-key): Don't echo keystrokes (bug#6883).
 +2010-04-28  Sam Steingold  <sds@gnu.org>
  
 -2010-08-21  Glenn Morris  <rgm@gnu.org>
 +      * progmodes/bug-reference.el (bug-reference-url-format): Mark as
 +      `safe-local-variable' if the value is a string or a symbol with
 +      the property `bug-reference-url-format'.
  
 -      * menu-bar.el (menu-bar-games-menu): Add landmark.
 +2010-04-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-08-20  Glenn Morris  <rgm@gnu.org>
 +      * progmodes/bug-reference.el (bug-reference-url-format):
 +      Revert 2010-04-27 change due to security risk.
  
 -      * align.el (align-regexp): Make group and spacing arguments
 -      use the interactive defaults when non-interactive.  (Bug#6698)
 +2010-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * mail/rmail.el (rmail-forward): Replace mail-text-start with its
 -      expansion, so as not to need sendmail.
 -      (mail-text-start): Remove declaration.
 -      (rmail-retry-failure): Require sendmail.
 +      Make it possible to locally disable a globally enabled mode.
 +      * simple.el (fundamental-mode): Run fundamental-mode-hook.
 +      * emacs-lisp/derived.el (define-derived-mode): Use fundamental-mode
 +      rather than kill-all-local-variables so it runs fundamental-mode-hook.
 +      * emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
 +      Use fundamental-mode-hook to run MODE-enable-in-buffers earlier, so
 +      that subsequent hooks get a chance to disable it.
  
 -2010-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-27  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * subr.el (read-key): Don't hide the menu-bar entries (bug#6881).
 +      * emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
 +      Avoid re-enabling a minor mode after the user turned the minor mode
 +      off if MODE-enable-in-buffers is run twice (typically once from
 +      fundamental-mode's after-change-major-mode-hook and a second time from
 +      run-mode-hook's own after-change-major-mode-hook).
  
 -2010-08-18  Michael Albinus  <michael.albinus@gmx.de>
 +      * emacs-lisp/lisp.el (lisp-complete-symbol): Fail gracefully.
  
 -      * progmodes/flymake.el (flymake-start-syntax-check-process):
 -      Use `start-file-process' in order to let it run also on remote hosts.
 +2010-04-27  Sam Steingold  <sds@gnu.org>
  
 -2010-08-18  Kenichi Handa  <handa@m17n.org>
 +      * progmodes/bug-reference.el (bug-reference-url-format): Mark as
 +      `safe-local-variable' if the value is a string or a function, as
 +      documented and implemented on 2010-04-02.
  
 -      * files.el: Add `word-wrap' as safe local variable.
 +2010-04-27  Juanma Barranquero  <lekktu@gmail.com>
  
 -2010-08-18  Glenn Morris  <rgm@gnu.org>
 +      * ido.el (ido-buffer-internal): Bind `ido-use-virtual-buffers' to nil
 +      when method is 'kill.
  
 -      * woman.el (woman-translate): Case matters.  (Bug#6849)
 +2010-04-27  Agustín Martín  <agustin.martin@hispalinux.es>
  
 -2010-08-14  Chong Yidong  <cyd@stupidchicken.com>
 +      * textmodes/ispell.el (ispell-init-process): Fix personal dictionary
 +      condition in default directory check.
 +      (ispell-init-process,ispell-kill-ispell,kill-buffer-hook):
 +      Kill ispell process when killing its associated buffer.
  
 -      * simple.el (kill-region): Doc fix (Bug#6787).
 +2010-04-27  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-08-14  Glenn Morris  <rgm@gnu.org>
 +      * desktop.el (desktop-kill): ask-if-new: Ask if desktop file exists,
 +      but we aren't using it.
  
 -      * calendar/diary-lib.el (diary-header-line-format):
 -      Fit it to the window, not the frame.
 +2010-04-25  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-08-11  Andreas Schwab  <schwab@linux-m68k.org>
 +      * tool-bar.el (tool-bar-local-item-from-menu): Revert unintended
 +      checkin in 2010-04-23T16:26:11Z!monnier@iro.umontreal.ca.
  
 -      * subr.el (ignore-errors): Add debug declaration.
 +2010-04-24  Glenn Morris  <rgm@gnu.org>
  
 -2010-08-09  Geoff Gole  <geoffgole@gmail.com>  (tiny change)
 +      * emacs-lisp/authors.el (authors-obsolete-files-regexps):
 +      Ignore VCS-ignore files, and deleted nextstep preferences files.
 +      (authors-ignored-files): Ignore deleted cedet test files, and "*.el".
 +      (authors-ambiguous-files): New list.
 +      (authors-valid-file-names): Add some deleted files.
 +      (authors-renamed-files-alist): Add font-setting.el, edt-user.doc.
 +      (authors-disambiguate-file-name): New function.  (Bug#5501)
 +      (authors-canonical-file-name): Doc fix.
 +      Don't warn about obsolete files.
 +      (authors-canonical-file-name, authors-scan-el):
 +      Use authors-disambiguate-file-name.
  
 -      * whitespace.el (whitespace-color-off): Remove post-command-hook
 -      locally.
 +      * hfy-cmap.el (htmlfontify-load-rgb-file, hfy-fallback-colour-values):
 +      Add autoload cookies.
 +      (htmlfontify-unload-rgb-file, hfy-fallback-colour-values): Add docs.
 +      (generated-autoload-file): Set file-local value to "htmlfontify.el".
 +      * htmlfontify.el (caddr, cadddr): Remove fallback definitions.
 +      They have definitions / compiler macros in cl.el.
 +      (htmlfontify-load-rgb-file, hfy-fallback-colour-values):
 +      Replace manual autoloads with generated ones.
 +      (htmlfontify-unload-rgb-file): Remove autoload.
 +      * Makefile.in (autoloads): Ensure htmlfontify.el is writable.
  
 -2010-08-08  Johan Bockgård  <bojohan@gnu.org>
 +2010-04-23  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * replace.el (replace-highlight): Bind isearch-forward and
 -      isearch-error, ensuring that highlighting is updated if the user
 -      switches the search direction (Bug#6808).
 +      * emacs-lisp/bytecomp.el (byte-compile-set-default): New function.
 +      (byte-compile-setq-default): Optimize for the
 +      single-var case and don't call byte-compile-form in this case to avoid
 +      inf-loop with byte-compile-set-default.
  
 -      * isearch.el (isearch-lazy-highlight-forward): New var.
 -      (isearch-lazy-highlight-new-loop, isearch-lazy-highlight-search):
 -      (isearch-lazy-highlight-update): Use it.
 +      * progmodes/compile.el (compilation-start): Abbreviate default directory.
  
 -2010-08-06  Kenichi Handa  <handa@m17n.org>
 +2010-04-23  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * international/mule.el (define-charset): Store NAME as :base property.
 -      (ctext-non-standard-encodings-table): Pay attention to charset aliases.
 -      (ctext-pre-write-conversion): Sort ctext-standard-encodings by the
 -      current priority.  Force using the designation of the specific
 -      charset by adding `charset' text property.  Improve the whole
 -      algorithm.
 +      Implement SELINUX backends.
  
 -2010-08-05  Juanma Barranquero  <lekktu@gmail.com>
 +      * net/tramp.el (tramp-file-name-handler-alist):
 +      Add `file-selinux-context' and `set-file-selinux-context'.
 +      (tramp-handle-file-selinux-context)
 +      (tramp-handle-set-file-selinux-context): New defuns.
 +      (tramp-handle-copy-file, tramp-do-copy-or-rename-file):
 +      Handle PRESERVE-SELINUX-CONTEXT.
  
 -      * emulation/pc-select.el (pc-selection-mode-hook)
 -      (copy-region-as-kill-nomark, beginning-of-buffer-mark)
 -      (pc-selection-mode): Fix typos in docstrings.
 +      * net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist):
 +      Add `file-selinux-context' and `set-file-selinux-context'.
 +      (tramp-gvfs-handle-file-selinux-context)
 +      (tramp-gvfs-handle-set-file-selinux-context): New defuns.
 +      (tramp-gvfs-handle-copy-file): Handle PRESERVE-SELINUX-CONTEXT.
  
 -2010-08-04  Kenichi Handa  <handa@m17n.org>
 +      * net/ange-ftp.el (ange-ftp-copy-file):
 +      * net/tramp-fish.el (tramp-fish-handle-copy-file):
 +      * net/tramp-imap.el (tramp-imap-handle-copy-file):
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file):
 +      Add PRESERVE-SELINUX-CONTEXT.
  
 -      * language/cyrillic.el: Don't add "microsoft-cp1251" to
 -      ctext-non-standard-encodings-alist here.
 +2010-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * international/mule.el (ctext-non-standard-encodings-alist):
 -      Add "koi8-r" and "microsoft-cp1251".
 -      (ctext-standard-encodings): New variable.
 -      (ctext-non-standard-encodings-table): List only elements for
 -      non-standard encodings.
 -      (ctext-pre-write-conversion): Adjust for the above change.
 -      Check ctext-standard-encodings.
 +      Synchronize with Tramp repository.
  
 -      * international/mule-conf.el (compound-text): Doc fix.
 -      (ctext-no-compositions): Doc fix.
 -      (compound-text-with-extensions): Doc fix.
 +      * net/tramp.el (with-connection-property, tramp-completion-mode-p)
 +      (tramp-action-process-alive, tramp-action-out-of-band)
 +      (tramp-check-for-regexp, tramp-file-name-p, tramp-equal-remote)
 +      (tramp-exists-file-name-handler): Fix docstring.
 +      (with-progress-reporter): New defmacro.
 +      (tramp-do-copy-or-rename-file, tramp-handle-dired-compress-file)
 +      (tramp-maybe-open-connection): Use it.
  
 -2010-08-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-22  Noah Lavine  <noah549@gmail.com>  (tiny change)
  
 -      * simple.el (exchange-dot-and-mark): Mark obsolete, finally.
 +      Detect ssh 'ControlMaster' argument automatically in some cases.
  
 -2010-08-03  Juanma Barranquero  <lekktu@gmail.com>
 +      * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
 +      (tramp-default-method): Use it.
  
 -      * progmodes/which-func.el (which-func-format): Split help-echo text
 -      into lines, like other mode-line tooltips.
 +2010-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * server.el (server-start): When using TCP sockets, force IPv4
 -      and use a literal 127.0.0.1 for localhost.  (Related to bug#6781.)
 +      * net/tramp.el (tramp-handle-copy-file): Add new optional
 +      parameter `preserve-selinux-context'.
 +      (tramp-file-name-for-operation): Add `set-file-selinux-context'.
  
 -2010-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * bindings.el (complete-symbol): Run completion-at-point as a fallback.
 +      * net/tramp.el (tramp-completion-handle-file-name-all-completions):
 +      Ensure, that non remote files are still checked.  Oops.
  
 -2010-08-02  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-21  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * term.el (term-delimiter-argument-list): Reflow docstring.
 -      (term-read-input-ring, term-write-input-ring, term-send-input)
 -      (term-bol, term-erase-in-display, serial-supported-or-barf):
 -      Fix typos in docstrings.
 +      Fix Bug#5840.
  
 -2010-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * icomplete.el (icomplete-completions): Use `non-essential'.
  
 -      * bindings.el (function-key-map): Add a S-tab => backtab fallback.
 +      * net/tramp.el (tramp-connectable-p): New defun.
 +      (tramp-handle-expand-file-name)
 +      (tramp-completion-handle-file-name-all-completions)
 +      (tramp-completion-handle-file-name-completion): Use it.
  
 -2010-08-01  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * dabbrev.el (dabbrev-completion): Fix typo in docstring.
 +      * emacs-lisp/lisp.el (lisp-completion-at-point): Try and handle errors.
  
 -2010-08-01  MON KEY  <monkey@sandpframing.com>  (tiny change)
 +2010-04-21  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * emacs-lisp/syntax.el (syntax-ppss-toplevel-pos):
 -      Fix typo in docstring (bug#6747).
 +      * vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
  
 -2010-07-30  Leo  <sdl.web@gmail.com>
 +      * tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
  
 -      * eshell/esh-io.el (eshell-get-target): Better detection of
 -      read-only file (Bug#6762).
 +      * loadup.el: Load dynamic-setting.el if feature dynamic-setting
 +      is present.
  
 -2010-07-30  Juanma Barranquero  <lekktu@gmail.com>
 +      * info.el (info-tool-bar-map): Add labels.
  
 -      * align.el (align-default-spacing): Doc fix.
 -      (align-region-heuristic, align-regexp): Fix typos in docstrings.
 +      * cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
  
 -2010-07-23  Juanma Barranquero  <lekktu@gmail.com>
 +      * cus-edit.el (custom-commands): Add labels for tool bar.
 +      (custom-buffer-create-internal, Custom-mode): Adjust for
 +      labels in custom-commands.
  
 -      * help-fns.el (find-lisp-object-file-name): Doc fix (bug#6494).
 +      * dynamic-setting.el: Renamed from font-setting.el.
  
 -2010-07-19  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-21  John Wiegley  <jwiegley@gmail.com>
  
 -      * time.el (display-time-day-and-date): Remove spurious * in docstring.
 -      (display-time-world-buffer-name, display-time-world-mode-map):
 -      Fix typos in docstrings.
 +      * ido.el (ido-init-completion-maps): For ido-switch-buffer, C-o
 +      toggles the use of virtual buffers.
 +      (ido-buffer-internal): Guard `ido-use-virtual-buffers' global value.
 +      (ido-toggle-virtual-buffers): New function.
  
 -2010-07-17  Shyam Karanatt  <shyam@swathanthran.in>  (tiny change)
 +2010-04-21  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * image-mode.el (image-display-size): New function.
 -      (image-forward-hscroll, image-next-line, image-eol, image-eob)
 -      (image-mode-fit-frame): Use it (Bug#6639).
 +      Use `define-derived-mode'; fix window selection; doc fixes.
 +      * play/tetris.el (tetris, tetris-update-speed-function)
 +      (tetris-tty-colors, tetris-x-colors, tetris-move-bottom)
 +      (tetris-move-left, tetris-move-right, tetris-rotate-prev)
 +      (tetris-rotate-next, tetris-end-game, tetris-start-game)
 +      (tetris-pause-game): Fix typos in docstrings.
 +      (tetris-mode-map, tetris-null-map):
 +      Move initialization into declaration.
 +      (tetris-mode): Define with `define-derived-mode';
 +      set show-trailing-whitespace to nil.
 +      (tetris): Prefer window already displaying the "*Tetris*" buffer.
  
 -2010-07-17  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-21  Karel Klíč  <kklic@redhat.com>
  
 -      * dired.el (dired-buffers-for-dir): Handle list values of
 -      dired-directory (Bug#6636).
 +      * files.el (backup-buffer): Handle SELinux context, and return it
 +      if a backup was made by renaming.
 +      (backup-buffer-copy): Set SELinux context to the target file.
 +      (basic-save-buffer): Set SELinux context of the newly written file.
 +      (basic-save-buffer-1): Now it also returns any SELinux context.
 +      (basic-save-buffer-2): Set SELinux context of the newly created file,
 +      and return it.
 +      * net/tramp.el (tramp-file-name-for-operation):
 +      Add file-selinux-context.
  
 -2010-07-16  Reiner Steib  <Reiner.Steib@gmx.de>
 +2010-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * vc.el (vc-coding-system-inherit-eol): New defvar.
 -      (vc-coding-system-for-diff): Use it to decide whether to inherit
 -      from the file the EOL format for reading the diffs of that file.
 -      (Bug#4451)
 +      Make the log-edit comments use RFC822 format throughout.
  
 -2010-07-16  Eli Zaretskii  <eliz@gnu.org>
 +      * vc.el (vc-checkin, vc-modify-change-comment):
 +      Adjust to new vc-start/finish-logentry.
 +      (vc-find-conflicted-file): New command.
 +      (vc-transfer-file): Adjust to new vc-checkin.
 +      (vc-next-action): Improve scoping.
  
 -      * mail/rmailmm.el (rmail-mime-save): Make the temp buffer
 -      unibyte, so compressed attachments are not compressed again.
 +      * vc-hg.el (vc-hg-log-edit-mode): Remove.
 +      (vc-hg-checkin): Remove extra arg.  Use log-edit-extract-headers.
  
 -2010-07-14  Jan Djärv  <jan.h.d@swipnet.se>
 +      * vc-git.el (vc-git-log-edit-mode): Remove.
 +      (vc-git-checkin): Remove extra arg.  Use log-edit-extract-headers.
 +      (vc-git-commits-coding-system): Rename from git-commits-coding-system.
  
 -      * xt-mouse.el (xterm-mouse-event-read): Fix for characters > 127
 -      now that unicode is used (Bug#6594).
 +      * vc-dispatcher.el (vc-log-edit): Shorten names for log-edit-show-files.
 +      (vc-start-logentry): Remove argument `extra'.
 +      (vc-finish-logentry): Remove extra args.
  
 -2010-07-14  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc-bzr.el (vc-bzr-log-edit-mode): Remove.
 +      (vc-bzr-checkin): Remove extra arg.  Use log-edit-extract-headers.
 +      (vc-bzr-conflicted-files): New function.
  
 -      * simple.el (push-mark-command): Set the selection if
 -      select-active-regions is non-nil.
 +      * log-edit.el (log-edit-extra-flags)
 +      (log-edit-before-checkin-process): Remove.
 +      (log-edit-summary, log-edit-header, log-edit-unknown-header): New faces.
 +      (log-edit-headers-alist): New var.
 +      (log-edit-header-contents-regexp): New const.
 +      (log-edit-match-to-eoh): New function.
 +      (log-edit-font-lock-keywords): Use them.
 +      (log-edit): Insert a "Summary:" header as default.
 +      (log-edit-mode): Mark font-lock rules as case-insensitive.
 +      (log-edit-done): Cleanup headers.
 +      (log-view-process-buffer): Remove.
 +      (log-edit-extract-headers): New function to replace it.
  
 -2010-07-10  Glenn Morris  <rgm@gnu.org>
 +2010-04-20  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * calendar/calendar.el (calendar-week-end-day): New function.
 -      * calendar/cal-tex.el (cal-tex-cursor-month): Remove unused vars.
 -      Respect calendar-week-start-day.  (Bug#6606)
 -      (cal-tex-insert-day-names, cal-tex-insert-blank-days)
 -      (cal-tex-insert-blank-days-at-end): Respect calendar-week-start-day.
 -      (cal-tex-first-blank-p, cal-tex-last-blank-p): Simplify, and
 -      respect calendar-week-start-day.
 +      * subr.el (default-direction-reversed): Remove obsolescence info.
  
 -2010-07-10  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * simple.el (use-region-p): Doc fix (Bug#6607).
 +      * vc-dispatcher.el (vc-finish-logentry): Don't mess so badly with the
 +      windows/frames.
  
 -2010-07-07  Christoph Scholtes  <cschol2112@gmail.com>
 +      * emacs-lisp/lisp.el (lisp-completion-at-point): Complete around point.
 +      I.e. include text after point in the completion region.
 +      Also, return nil when we're not after/in a symbol.
  
 -      * progmodes/python.el (python-font-lock-keywords): Add Python 2.7
 -      builtins (BufferError, BytesWarning, WindowsError; callables
 -      bin, bytearray, bytes, format, memoryview, next, print; __package__).
 +      * international/mule-cmds.el (view-hello-file): Don't fiddle with the
 +      default enable-multibyte-characters.
  
 -2010-07-07  Glenn Morris  <rgm@gnu.org>
 +2010-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * play/zone.el (zone-fall-through-ws): Fix next-line ->
 -      forward-line fallout.
 +      * international/mule.el: Help the user choose a valid coding-system.
 +      (read-buffer-file-coding-system): New function.
 +      (set-buffer-file-coding-system): Use it.  Prompt the user if the
 +      coding-system cannot encode all the chars.
  
 -2010-07-06  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc-bzr.el: Use standard *vc* and *vc-diff* buffers.
 +      (vc-bzr-shelve-show, vc-bzr-shelve-apply)
 +      (vc-bzr-shelve-apply-and-keep, vc-bzr-shelve-snapshot):
 +      Don't use *vc-bzr-shelve*.
  
 -      * mouse.el (mouse-appearance-menu): Add docstring.
 +2010-04-19  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * help.el (describe-key): Print up-event using key-description.
 +      Fix the version number for added files.
 +      * vc-hg.el (vc-hg-working-revision): Check if the file is
 +      registered after hg parent fails (Bug#5961).
  
 -2010-07-03  Michael Albinus  <michael.albinus@gmx.de>
 +2010-04-19  Glenn Morris  <rgm@gnu.org>
  
 -      * net/zeroconf.el (zeroconf-resolve-service)
 -      (zeroconf-service-resolver-handler): Use `dbus-byte-array-to-string'.
 -      (zeroconf-publish-service): Use `dbus-string-to-byte-array'.
 +      * htmlfontify.el (htmlfontify-buffer)
 +      (htmlfontify-copy-and-link-dir): Autoload entry points.
  
 -2010-07-03  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +2010-04-19  Magnus Henoch  <magnus.henoch@gmail.com>
  
 -      * net/zeroconf.el (zeroconf-service-remove-hook): New defun.
 +      * vc-hg.el (vc-hg-annotate-extract-revision-at-line): Expand file
 +      name relative to the project root (Bug#5960).
  
 -2010-06-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-19  Glenn Morris  <rgm@gnu.org>
  
 -      Avoid displaying files with a nil state in vc-dir.
 -      * vc-dir.el (vc-dir-update): Obey the noinsert argument in all
 -      cases that cause insertion.
 -      (vc-dir-resynch-file): Tell vc-dir-update to avoid inserting files
 -      with a nil state.
 +      * vc-git.el (vc-git-print-log): Doc fix.
  
 -2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-19  Óscar Fuentes  <ofv@wanadoo.es>
  
 -      * xml.el (xml-parse-region): Avoid infloop (Bug#5281).
 +      * ido.el (ido-file-internal): Fix 2009-12-02 change.
  
 -2010-06-29  Leo  <sdl.web@gmail.com>
 +2010-04-19  Christoph  <cschol2112@googlemail.com>  (tiny change)
  
 -      * emacs-lisp/rx.el (rx): Doc fix.  (Bug#6537)
 +      * progmodes/grep.el (grep-compute-defaults): Fix handling of host
 +      default settings (Bug#5928).
  
 -2010-06-27  Oleksandr Gavenko  <gavenkoa@gmail.com>  (tiny change)
 +2010-04-19  Glenn Morris  <rgm@gnu.org>
  
 -      * generic-x.el (bat-generic-mode): Fix regexp for command line
 -      switches (Bug#5719).
 +      * progmodes/fortran.el (fortran-match-and-skip-declaration):
 +      New function.
 +      (fortran-font-lock-keywords-3): Use it.  (Bug#1385)
  
 -2010-06-27  Masatake YAMATO  <yamato@redhat.com>
 +2010-04-19  Kenichi Handa  <handa@m17n.org>
  
 -      * htmlfontify.el (hfy-face-attr-for-class): Use append instead
 -      of nconc to avoid pure storage error (Bug#6239).
 +      * language/indian.el (malayalam-composable-pattern): Fix previous
 +      change (add U+0D4D "SIGN VIRAMA").
 +      (oriya-composable-pattern): Add U+0B30 and fix typo in the regexp.
 +      (tamil-composable-pattern): Fix typo in the regexp.
 +      (telugu-composable-pattern): Fix U+0C4D and typo in the regexp.
 +      (kannada-composable-pattern): Fix U+0CB0 and typo in the regexp.
 +      (malayalam-composable-pattern): Fix U+0D4D and typo in the regexp.
  
 -2010-06-27  Christoph  <cschol2112@googlemail.com>  (tiny change)
 +2010-04-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * bookmark.el (bookmark-bmenu-2-window, bookmark-bmenu-other-window)
 -      (bookmark-bmenu-other-window-with-mouse): Remove unnecessary
 -      bindings of bookmark-automatically-show-annotations (Bug#6515).
 +      * textmodes/tex-mode.el (latex-mode): Revert 2008-03-03 change to
 +      paragraph-separate (Bug#5821).
  
 -2010-06-25  Eli Zaretskii  <eliz@gnu.org>
 +2010-04-19  Juri Linkov  <juri@jurta.org>
  
 -      * arc-mode.el (archive-zip-extract): Don't quote the file name on
 -      MS-Windows and MS-DOS.  (Bug#6467, Bug#6144)
 +      Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
  
 -2010-06-24  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +      * info.el (Info-find-node-2): Comment out code that skips
 +      breadcrumbs line.
 +      (Info-mouse-follow-link): New command.
 +      (Info-link-keymap): New keymap.
 +      (Info-breadcrumbs): Rename from `Info-insert-breadcrumbs'.
 +      Return a string with links instead of inserting breadcrumbs
 +      to the Info buffer.
 +      (Info-fontify-node): Comment out code that inserts breadcrumbs.
 +      Instead of putting the `invisible' text property over the Info
 +      header, make an overlay over the Info header with the `invisible'
 +      property and `after-string' set to the string returned by
 +      `Info-breadcrumbs'.
  
 -      * comint.el (make-comint, make-comint-in-buffer): Mention return
 -      value in the docstrings.  (Bug#6498)
 +2010-04-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-06-24  Yoni Rabkin  <yoni@rabkins.net>
 +      * help.el (help-window-setup-finish): Doc fix (Bug#5830).
 +      Reported by monkey@sandpframing.com.
  
 -      * bs.el (bs-mode-font-lock-keywords): Remove "by" from Dired pattern,
 -      since it is not present when using some non-default switches.
 +2010-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-06-23  Karl Fogel  <kfogel@red-bean.com>
 +      * tmm.el (tmm-prompt): Remove obsolete call to x-popup-menu.
 +      (tmm-get-keymap): Add key-binding shortcuts now that they're not
 +      available in the "keyseq cache" any more.
  
 -      * simple.el (compose-mail): Fix doc string to refer to
 -      `compose-mail-user-agent-warnings', instead of to the
 -      nonexistent `compose-mail-check-user-agent'.
 +      * custom.el (defcustom): Add edebug spec.
  
 -2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-18  Juri Linkov  <juri@jurta.org>
  
 -      Fix vc-annotate for renamed files when using Git.
 -      * vc-git.el (vc-git-find-revision): Deal with empty results from
 -      ls-files.  Doe not pass the object as a file name to cat-file, it
 -      is not a file name.
 -      (vc-git-annotate-command): Pass the file name using -- to avoid
 -      ambiguity with the revision.
 -      (vc-git-previous-revision): Pass a relative file name.
 +      Test for special mode-class in view-buffer instead of view-file (bug#5513).
  
 -2010-06-22  Glenn Morris  <rgm@gnu.org>
 +      * view.el (view-file, view-buffer): Move test for special mode-class
 +      from view-file to view-buffer.
  
 -      * progmodes/js.el (js-mode-map): Use standard capitalization and
 -      ellipses for menu entries.
 +      * tar-mode.el (tar-extract): Turn if's into one cond
 +      like in arc-mode.el.
  
 -      * wid-edit.el (widget-complete): Doc fix.
 +2010-04-18  Juri Linkov  <juri@jurta.org>
  
 -2010-06-22  Jürgen Hötzel  <juergen@hoetzel.info>  (tiny change)
 +      Add 7z archive format support (bug#5475).
  
 -      * wid-edit.el (widget-complete): Fix typo in 2009-12-02 change.
 +      * arc-mode.el (archive-zip-extract): Try to find 7z executable.
 +      (archive-7z-extract): New defcustom.
 +      (archive-find-type): Add magic string for 7z.
 +      (archive-extract-by-stdout): Add new optional arg `stderr-file'.
 +      If `stderr-file' is non-nil, use `(t stderr-file)' for the
 +      `buffer' arg of `call-process'.
 +      (archive-zip-extract): Check `archive-zip-extract' for "7z" and
 +      call the function `archive-7z-extract' with the variable
 +      `archive-7z-extract' let-bound to `archive-zip-extract'.
 +      (archive-7z-summarize, archive-7z-extract): New functions.
  
 -2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * international/mule.el (auto-coding-alist):
 +      * files.el (auto-mode-alist): Add 7z file extension.
  
 -      Fix annotating other revisions for renamed files in vc-annotate.
 -      * vc-annotate.el (vc-annotate): Add an optional argument for the
 -      VC backend.  Use it when non-nil.
 -      (vc-annotate-warp-revision): Pass the VC backend to vc-annotate.  (Bug#6487)
 +2010-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      Fix vc-annotate-show-changeset-diff-revision-at-line for git.
 -      * vc-annotate.el (vc-annotate-show-diff-revision-at-line-internal):
 -      Do not pass the file name to the 'previous-revision call when we
 -      don't want a file diff.  (Bug#6489)
 +      * loadup.el: Setup hash-cons for pure data.
  
 -2010-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +      Fix duplicate entries in cedet's loaddefs.el files.
 +      * emacs-lisp/autoload.el (autoload-file-load-name): Be more clever.
 +      Should make most file-local generated-autoload-file unnecessary.
 +      (print-readably): Silence warnings.
 +      (autoload-find-destination): Take load-name as an arg to make sure
 +      it's the same as the one that will be in the file.
 +      (autoload-generate-file-autoloads): Adjust to above changes.
 +      Try to make the dataflow a bit simpler.
  
 -      Fix finding revisions for renamed files in vc-annotate.
 -      * vc.el (vc-find-revision): Add an optional argument for
 -      the VC backend.  Use it when non-nil.
 -      * vc-annotate.el (vc-annotate-find-revision-at-line): Pass the VC
 -      backend to vc-find-revision.  (Bug#6487)
 +      * cvs-status.el (cvs-refontify): Remove unused.
  
 -2010-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-18  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -      Fix reading file names in Git annotate buffers.
 -      * vc-git.el (vc-git-annotate-extract-revision-at-line):
 -      Remove trailing whitespace.  Suggested by Eric Hanchrow.  (Bug#6481)
 +      * calc/calc.el (calc-mode-map): Bind "O" to `calc-missing-key'.
  
 -2010-06-20  Alan Mackenzie  <acm@muc.de>
 +      * calc/calc-bin.el (calc-radix): Have the "O" option turn on
 +      twos-complement mode.
  
 -      * progmodes/cc-mode.el (c-before-hack-hook): When the mode is set
 -      in file local variables, set it first.
 +2010-04-17  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -2010-06-19  Glenn Morris  <rgm@gnu.org>
 +      * calc/calc-ext.el (calc-init-extensions): Add keybinding for
 +      'calc-option'.  Add `calc-option-prefix-help' to calc-help autoloads.
 +      (calc-inverse): Add "Option" to message, as appropriate.
 +      (calc-hyperbolic): Add "Option" to message, as appropriate.
 +      (calc-option, calc-is-option): New functions.
  
 -      * descr-text.el (describe-char-unicode-data): Insert separating
 -      space when needed.  (Bug#6422)
 +      * calc/calc-help.el (calc-full-help): Add `calc-option-help'.
 +      (calc-option-prefix-help): New function.
  
 -      * progmodes/idlwave.el (idlwave-action-and-binding):
 -      Fix typo in 2009-12-03 change.  (Bug#6450)
 +      * calc/calc-misc.el (calc-help): Add "Option" entry.
  
 -2010-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * calc/calc.el (calc-local-var-list): Add `calc-option-flag'.
 +      (calc-option-flag): New variable.
 +      (calc-do): Set `calc-option-flag to nil.
 +      (calc-set-mode-line): Add "Opt " as appropriate.
  
 -      * subr.el (read-quoted-char): Fix up last change (bug#6290).
 +2010-04-16  Juri Linkov  <juri@jurta.org>
  
 -2010-06-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      Move scrolling commands from simple.el to window.el
 +      because their primitives are implemented in window.c.
  
 -      * font-lock.el (font-lock-major-mode): Rename from
 -      font-lock-mode-major-mode to distinguish it from
 -      global-font-lock-mode's own font-lock-mode-major-mode (bug#6135).
 -      (font-lock-set-defaults):
 -      * font-core.el (font-lock-default-function): Adjust users.
 -      (font-lock-mode): Don't set it at all.
 +      * simple.el (scroll-error-top-bottom)
 +      (scroll-up-command, scroll-down-command, scroll-up-line)
 +      (scroll-down-line, scroll-other-window-down)
 +      (beginning-of-buffer-other-window, end-of-buffer-other-window):
 +      * window.el (scroll-error-top-bottom)
 +      (scroll-up-command, scroll-down-command, scroll-up-line)
 +      (scroll-down-line, scroll-other-window-down)
 +      (beginning-of-buffer-other-window, end-of-buffer-other-window):
 +      Move from simple.el to window.el because their primitives are
 +      implemented in window.c.
  
 -2010-06-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-16  Juri Linkov  <juri@jurta.org>
  
 -      * vc-annotate.el (vc-annotate): Use vc-read-revision.
 +      * isearch.el (isearch-lookup-scroll-key): Check both
 +      `isearch-scroll' and `scroll-command' properties.
 +      (scroll-up, scroll-down): Remove `isearch-scroll' property.
  
 -2010-06-15  Glenn Morris  <rgm@gnu.org>
 +      * mwheel.el (mwheel-scroll): Remove `isearch-scroll' property.
  
 -      * calendar/appt.el (appt-time-msg-list): Doc fix.
 -      (appt-check): Let-bind appt-warn-time.
 -      (appt-add): Make the 3rd argument optional.
 -      Simplify argument names.  Doc fix.  Check for integer WARNTIME.
 -      Only add WARNTIME to the output list if non-nil.
 +      * simple.el (scroll-up-command, scroll-down-command)
 +      (scroll-up-line, scroll-down-line): Remove `isearch-scroll' property.
  
 -2010-06-15  Ivan Kanis  <apple@kanis.eu>
 +2010-04-15  Juri Linkov  <juri@jurta.org>
  
 -      * calendar/appt.el (appt-check): Let the 3rd element of
 -      appt-time-msg-list specify the warning time.
 -      (appt-add): Add new argument with the warning time.  (Bug#5176)
 +      * simple.el (scroll-up-command, scroll-down-command)
 +      (scroll-up-line, scroll-down-line): Put `scroll-command'
 +      property on the these symbols.  Remove them from
 +      `scroll-preserve-screen-position-commands'.
  
 -2010-06-12  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
 +      * mwheel.el (mwheel-scroll): Put `scroll-command' and
 +      `isearch-scroll' properties on the `mwheel-scroll' symbol.
 +      Remove it from `scroll-preserve-screen-position-commands'.
  
 -      * vc-svn.el (vc-svn-after-dir-status): Fix regexp for Subversions
 -      older than version 1.6.  (Bug#6361)
 +      * isearch.el (isearch-allow-scroll): Doc fix.
  
 -2010-06-12  Helmut Eller  <eller.helmut@gmail.com>
 +2010-04-15  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * emacs-lisp/cl-macs.el (destructuring-bind): Bind `bind-enquote',
 -      used by cl-do-arglist.  (Bug#6408)
 +      * net/tramp.el (tramp-error-with-buffer): Don't show the
 +      connection buffer when we are in completion mode.
 +      (tramp-file-name-handler): Catch the error for some operations
 +      when we are in completion mode.  This gives the user the chance to
 +      correct the file name in the minibuffer.
  
 -2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-15  Glenn Morris  <rgm@gnu.org>
  
 -      * emacs-lisp/advice.el (ad-compile-function):
 -      Define warning-suppress-types before we let-bind it (bug#6275).
 +      * progmodes/verilog-mode.el (verilog-forward-sexp): Avoid free variable.
  
 -      * vc-dispatcher.el: Rename mode-line-hook to vc-mode-line-hook;
 -      declare it, make it buffer-local and permanent-local (bug#6324).
 -      (vc-resynch-window): Adjust name.
 -      * vc-hooks.el (vc-find-file-hook): Adjust name.
 +2010-04-15  Juanma Barranquero  <lekktu@gmail.com>
  
 -2010-06-07  Jonathan Rockway  <jon@jrock.us>
 +      Simplify by using `define-derived-mode'.
 +      * info.el (Info-mode):
 +      * calendar/todo-mode.el (todo-mode):
 +      * play/gomoku.el (gomoku-mode): Define with `define-derived-mode'.
 +      (gomoku-mode-map): Move initialization into declaration.
  
 -      * net/rcirc.el: Add support for password authentication.
 -      (rcirc-server-alist): Add :password keyword.
 -      (rcirc): Ask for a password, or get it from the server's alist.
 -      (rcirc-connect): Add password argument.  Pass it to server.
 +2010-04-14  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-06-05  Juanma Barranquero  <lekktu@gmail.com>
 +      Fix Bug#5840.
 +      * ido.el (ido-file-name-all-completions-1):
 +      * minibuffer.el (minibuffer-completion-help):
 +      * net/tramp.el (tramp-completion-mode-p): Use `non-essential'.
  
 -      * net/dbus.el (dbus-register-method): Declare function.
 -      (dbus-handle-event, dbus-property-handler): Fix typos in docstrings.
 -      (dbus-introspect): Doc fix.
 -      (dbus-event-bus-name, dbus-introspect-get-interface)
 -      (dbus-introspect-get-argument): Reflow docstrings.
 +2010-04-14  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-06-04  Chong Yidong  <cyd@stupidchicken.com>
 +      * simple.el (non-essential): New var.
  
 -      * term/common-win.el (x-colors): Add "dark green" and "dark
 -      turquoise" (Bug#6332).
 +      Add a new field `location' to bookmarks for non-file bookmarks.
 +      * bookmark.el (bookmark-location): Use the new field, if present.
 +      (bookmark-insert-location): Undo last change, not needed any more.
 +      * man.el (Man-bookmark-make-record):
 +      * woman.el (woman-bookmark-make-record): Add `location' field.
  
 -2010-06-03  Glenn Morris  <rgm@gnu.org>
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -      * desktop.el (desktop-clear-preserve-buffers):
 -      Add "*Warnings*" buffer.  (Bug#6336)
 +      * simple.el (scroll-error-top-bottom): New defcustom.
 +      (scroll-up-command, scroll-down-command): Use it.  Doc fix.
  
 -2010-06-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * emulation/pc-select.el (pc-select-override-scroll-error):
 +      Obsolete in favor of `scroll-error-top-bottom'.
  
 -      * vc-dir.el (vc-dir-update): Remove entries with a nil state (bug#5539).
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -2010-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * tutorial.el (tutorial--default-keys): Rebind `C-v' to
 +      `scroll-up-command' and `M-v' to `scroll-down-command'.
  
 -      * vc-bzr.el (vc-bzr-revision-completion-table): Apply
 -      `file-directory-p' to the filename part rather than to the whole text.
 +      * emulation/cua-rect.el (cua--init-rectangles):
 +      * forms.el (forms--change-commands):
 +      * image-mode.el (image-mode-map):
 +      Remap scroll-down-command and scroll-up-command
 +      in addition to scroll-down and scroll-up.
  
 -2010-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -      * man.el (Man-completion-table): Let the user type "-k " (bug#6319).
 +      * mwheel.el (scroll-preserve-screen-position-commands):
 +      Add mwheel-scroll to this list of commands.
  
 -2010-05-31  Drew Adams  <drew.adams@oracle.com>
 +      * simple.el (scroll-preserve-screen-position-commands):
 +      Add scroll-up-command, scroll-down-command, scroll-up-line,
 +      scroll-down-line to this list of commands.
  
 -      * files.el (directory-files-no-dot-files-regexp): Doc fix (bug#6298).
 +2010-04-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-05-31  Juanma Barranquero  <lekktu@gmail.com>
 +      * obsolete/complete.el: Move from lisp/complete.el.
  
 -      * subr.el (momentary-string-display): Just use read-event to read
 -      the exit event (Bug#6238).
 +      * pcomplete.el (pcomplete-here*): Fix mistaken change (bug#5935).
  
 -2010-05-29  Chong Yidong  <cyd@stupidchicken.com>
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Passing a nil argument
 +      to the minor mode function now turns the mode ON unconditionally.
  
 -      * ansi-color.el: Delete unused escape sequences (Bug#6085).
 -      (ansi-color-drop-regexp): New constant.
 -      (ansi-color-apply, ansi-color-filter-region)
 -      (ansi-color-apply-on-region): Delete unrecognized control sequences.
 -      (ansi-color-apply): Build string list before calling concat.
 +2010-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc-dir.el (vc-dir-kill-line): New command.
 +      (vc-dir-mode-map): Bind it to C-k.
  
 -      * progmodes/verilog-mode.el (verilog-type-font-keywords):
 -      Use font-lock-constant-face, not obsolete font-lock-reference-face.
 +      * bookmark.el (bookmark-insert-location): Handle a nil filename.
 +
 +      * woman.el: Add bookmark declarations to silence the compiler.
 +      (bookmark-prop-get): Use `man-args' rather than `filename' as a first
 +      step to compatibility between man and woman bookmarks.
 +      Adjust for Man-default-bookmark-title renaming.
 +      (woman-bookmark-jump): Adjust accordingly.  Don't forget to autoload.
 +
 +      * man.el: Add bookmark declarations to silence the compiler.
 +      (Man-name-local-regexp): Make it match NAME as well.
 +      (Man-getpage-in-background): Return the buffer.
 +      (Man-notify-when-ready): Use `case'.
 +      (man-set-default-bookmark-title): Rename to Man-default-bookmark-title.
 +      Don't hardcode "NAME".  Simplify.
 +      (Man-bookmark-make-record): Use Man-arguments rather than buffer-name.
 +      Rename from Man-bookmark-make-record.
 +      (Man-bookmark-jump): Rename from man-bookmark-jump.  Simplify now that
 +      we have the actual man-args.  Use Man-getpage-in-background rather
 +      than `man' since the arg is already processed.  Let bookmark.el do the
 +      window handling.  Only wait for the relevant process.
 +      Don't forget to autoload.
 +
 +      * bookmark.el (bookmark-default-file): Use locate-user-emacs-file.
 +
 +2010-04-12  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * woman.el (woman-bookmark-make-record, woman-bookmark-jump):
 +      New functions.
 +      (woman-mode): Setup bookmark support.
  
 -2010-05-27  Masatake YAMATO  <yamato@redhat.com>
 +      * man.el (man-set-default-bookmark-title, man-bookmark-make-record)
 +      (man-bookmark-jump): New functions.
 +      (Man-mode): Setup bookmark support.
  
 -      * htmlfontify.el (hfy-face-resolve-face): New function.
 -      (hfy-face-to-style): Use it (Bug#6279).
 +2010-04-10  Jari Aalto  <jari.aalto@cante.net>
  
 -2010-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * comint.el (comint-password-prompt-regexp): Use regexp-opt, and
 +      recognize ssh-keygen prompt (Bug#2817).
  
 -      * epa.el (epa--select-keys): Don't explicitly delete the window since
 -      that can fail (e.g. sole window in frame).  Use dedication instead.
 +2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-05-19  Uday S Reddy  <u.s.reddy@cs.bham.ac.uk>  (tiny change)
 +      * net/tramp.el (tramp-do-copy-or-rename-file): Add progress reporter.
  
 -      * textmodes/fill.el (fill-region): Don't fill past the end (bug#6201).
 +2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      Synchronize with Tramp repository.
  
 -      * subr.el (read-quoted-char): Resolve modifiers after key
 -      remapping (bug#6212).
 +      * net/tramp.el (tramp-completion-function-alist)
 +      (tramp-file-name-regexp, tramp-chunksize)
 +      (tramp-local-coding-commands, tramp-remote-coding-commands):
 +      Fix docstring.
 +      (tramp-remote-process-environment): Use `format' instead of `concat'.
 +      (tramp-handle-directory-files-and-attributes)
 +      (tramp-get-remote-path): Use `copy-tree'.
 +      (tramp-handle-file-name-all-completions): Backward/ XEmacs
 +      compatibility: Use `completion-ignore-case' if
 +      `read-file-name-completion-ignore-case' does not exist.
 +      (tramp-do-copy-or-rename-file-directly): Do not use
 +      `tramp-handle-file-remote-p'.
 +      (tramp-do-copy-or-rename-file-out-of-band):
 +      Use `tramp-compat-delete-directory'.
 +      (tramp-do-copy-or-rename-file-out-of-band)
 +      (tramp-compute-multi-hops, tramp-maybe-open-connection):
 +      Use `format-spec-make'.
 +      (tramp-find-foreign-file-name-handler)
 +      (tramp-advice-make-auto-save-file-name)
 +      (tramp-set-auto-save-file-modes): Remove superfluous check for
 +      `stringp'.  This is done inside `tramp-tramp-file-p'.
 +      (tramp-debug-outline-regexp): New defconst.
 +      (tramp-get-debug-buffer): Use it.
 +      (tramp-check-for-regexp): Use (forward-line 1).
 +      (tramp-set-auto-save-file-modes): Adapt version check.
  
 -2010-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp-compat.el (tramp-advice-file-expand-wildcards):
 +      Wrap call of `featurep' for 2nd argument.
 +      (tramp-compat-make-temp-file): Simplify fallback implementation.
 +      (tramp-compat-copy-tree): Remove function.
 +      (tramp-compat-delete-directory): Provide implementation for older
 +      Emacsen.
  
 -      * tmm.el (tmm-prompt): Don't try to precompute bindings.
 -      (tmm-get-keymap): Compute shortcuts (bug#6171).
 +      * net/tramp-fish.el (tramp-fish-handle-directory-files-and-attributes):
 +      Do not use `tramp-fish-handle-file-attributes.
  
 -2010-05-10  Glenn Morris  <rgm@gnu.org>
 +      * net/trampver.el: Update release number.
  
 -      * desktop.el (desktop-save-buffer-p): Don't mistakenly include
 -      all dired buffers, even tramp ones.  (Bug#5755)  [Backport from trunk]
 +2010-04-10  Glenn Morris  <rgm@gnu.org>
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +      * progmodes/compile.el (compilation-save-buffers-predicate):
 +      Add missing :version tag.
  
 -      * Version 23.2 released.
 +2010-04-09  Sam Steingold  <sds@gnu.org>
  
 -2010-05-03  Chong Yidong  <cyd@stupidchicken.com>
 +      * progmodes/compile.el (compilation-save-buffers-predicate):
 +      Remove the "autoload" cookie.
  
 -      * international/mule.el (auto-coding-alist): Only purecopy
 -      car of each item, not the whole list (Bug#6083).
 +      * progmodes/bug-reference.el (turn-on-bug-reference-mode)
 +      (turn-on-bug-reference-prog-mode): Remove, `bug-reference-mode'
 +      and `bug-reference-prog-mode' can be used in hooks directly.
  
 -2010-05-02  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * progmodes/js.el (js-mode): Make paragraph variables local before
 -      calling c-setup-paragraph-variables (Bug#6071).
 +      Add --author support to git commit.
 +      * vc-git.el (vc-git-checkin): Pass extra-args to the commit command.
 +      (vc-git-log-edit-mode): New minor mode.
 +      (log-edit-mode, log-edit-extra-flags, log-edit-mode):
 +      New declarations.
  
 -2010-05-01  Eli Zaretskii  <eliz@gnu.org>
 +2010-04-09  Eric Raymond  <esr@snark.thyrsus.com>
  
 -      * composite.el (compose-region, reference-point-alist): Fix typos
 -      in the doc strings.
 +      * vc-hooks.el, vc-git.el: Improve documentation comments.
  
 -2010-04-28  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +2010-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * calc/calc-graph.el (calc-graph-plot): Use the proper form for
 -      gnuplot's "set" command.
 +      Fix some of the problems in defsubst* (bug#5728).
 +      * emacs-lisp/cl-macs.el (defsubst*): Don't substitute non-trivial args.
 +      (cl-defsubst-expand): Do the substitutions simultaneously (bug#5728).
  
 -2010-04-26  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-07  Sam Steingold  <sds@gnu.org>
  
 -      * abbrev.el (last-abbrev-text): Doc fix.
 -      (abbrev-prefix-mark): Don't escape parenthesis.
 +      * progmodes/compile.el (compilation-save-buffers-predicate):
 +      New custom variable.
 +      (compile, recompile): Pass it to `save-some-buffers'.
  
 -2010-04-24  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-04-07  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * composite.el (find-composition): Doc fix.
 +      * wid-edit.el (widget-choose): Move cursor to the second line of
 +      the buffer (Bug#5695).
  
 -2010-04-24  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-07  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * progmodes/sql.el (sql-electric-stuff): Fix typo in tag.
 -      (sql-oracle-program, sql-sqlite-options)
 -      (sql-query-placeholders-and-send): Doc fixes.
 -      (sql-set-product, sql-interactive-mode): Reflow docstrings.
 -      (sql-imenu-generic-expression, sql-buffer)
 -      (sql-mode-ansi-font-lock-keywords, sql-mode-oracle-font-lock-keywords)
 -      (sql-mode-postgres-font-lock-keywords, sql-mode-ms-font-lock-keywords)
 -      (sql-mode-sybase-font-lock-keywords)
 -      (sql-mode-informix-font-lock-keywords)
 -      (sql-mode-interbase-font-lock-keywords)
 -      (sql-mode-ingres-font-lock-keywords, sql-mode-solid-font-lock-keywords)
 -      (sql-mode-mysql-font-lock-keywords, sql-mode-sqlite-font-lock-keywords)
 -      (sql-mode-db2-font-lock-keywords, sql-mode-font-lock-keywords)
 -      (sql-product-feature, sql-highlight-product)
 -      (comint-line-beginning-position, sql-rename-buffer)
 -      (sql-toggle-pop-to-buffer-after-send-region)
 -      (sql-oracle, sql-sybase, sql-informix, sql-sqlite, sql-mysql, sql-solid)
 -      (sql-ingres, sql-ms, sql-postgres, sql-interbase, sql-db2, sql-linter):
 -      Fix typos in docstrings.
 +      Add new VC methods: vc-log-incoming and vc-log-outgoing.
 +      * vc.el (vc-print-log-setup-buttons): New function split out from
 +      vc-print-log-internal.
 +      (vc-log-internal-common): New function, a parametrized version of
 +      vc-print-log-internal.
 +      (vc-print-log-internal): Just call vc-log-internal-common with the
 +      right arguments.
 +      (vc-incoming-outgoing-internal):
 +      (vc-log-incoming, vc-log-outgoing): New functions.
 +      (vc-log-view-type): New permanent local variable.
  
 -2010-04-23  Juri Linkov  <juri@jurta.org>
 +      * vc-hooks.el (vc-menu-map): Bind vc-log-incoming and vc-log-outgoing.
  
 -      * info.el (Info-fontify-node): Put Info-breadcrumbs to the `display'
 -      property instead of `invisible' and `after-string' (bug#5998).
 +      * vc-bzr.el (vc-bzr-log-view-mode): Use vc-log-view-type instead
 +      of the dynamic bound vc-short-log.
 +      (vc-bzr-log-incoming, vc-bzr-log-outgoing): New functions.
  
 -2010-04-23  Juri Linkov  <juri@jurta.org>
 +      * vc-git.el (vc-git-log-outgoing): New function.
 +      (vc-git-log-view-mode): Use vc-log-view-type instead
 +      of the dynamic bound vc-short-log.
  
 -      * image-mode.el (image-mode-as-text): Fix typo in docstring.
 +      * vc-hg.el (vc-hg-log-view-mode): Use vc-log-view-type instead
 +      of the dynamic bound vc-short-log.  Highlight the tag.
 +      (vc-hg-log-incoming, vc-hg-log-outgoing): New functions.
 +      (vc-hg-outgoing, vc-hg-incoming, vc-hg-outgoing-mode):
 +      (vc-hg-incoming-mode): Remove.
 +      (vc-hg-extra-menu-map): Do not bind vc-hg-incoming and vc-hg-outgoing.
  
 -2010-04-23  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-07  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * filecache.el (file-cache-add-directory-list)
 -      (file-cache-add-directory-recursively): Fix typos in docstrings.
 +      Fix default-directory for vc-root-diff.
 +      * vc.el (vc-root-diff): Bind default-directory to the root
 +      directory for the diff command.
  
 -2010-04-22  Kenichi Handa  <handa@m17n.org>
 +2010-04-07  Michael McNamara  <mac@mail.brushroad.com>
 +
 +      * progmodes/verilog-mode.el (verilog-forward-sexp):
 +      (verilog-calc-1): Support "disable fork" and "fork wait" multi
 +      word keywords, suggested by Steve Pearlmutter.
 +      (verilog-pretty-declarations): Support lineup of declarations in
 +      port lists.
 +      (verilog-skip-backward-comments, verilog-skip-forward-comment-p):
 +      fix bug for /* / comments.
 +      (verilog-backward-syntactic-ws, verilog-forward-syntactic-ws):
 +      Speed up and simplfy as this is never called with a bound.
 +      (verilog-pretty-declarations): Enhance to line up declarations
 +      inside a parameter list, suggested by Alan Morgan.
 +      (verilog-pretty-expr): Tune assignment regular expression match
 +      string for corner cases; also use markers instead of character
 +      number as indent changes the later.
 +
 +2010-04-07  Wilson Snyder  <wsnyder@wsnyder.org>
 +
 +      * progmodes/verilog-mode.el (verilog-type-keywords): Fix pulldown
 +      as missing keyword.
 +      (verilog-read-sub-decls-line): Fix comments in AUTO_TEMPLATE
 +      causing truncation of AUTOWIRE signals.  Reported by Bruce Tennant.
 +      (verilog-auto-inst, verilog-auto-inst-port): Add vl_mbits for
 +      AUTO_TEMPLATEs needing multiple array bits.  Suggested by Bruce
 +      Tennant.
 +      (verilog-keywords):
 +      (verilog-1800-2005-keywords, verilog-1800-2009-keywords): Add IEEE
 +      1800-2009 keywords, including "global.".
 +
 +2010-04-06  John Wiegley  <jwiegley@gmail.com>
 +
 +      * ido.el (ido-add-virtual-buffers-to-list): Fix duplicated names
 +      appearing in buffer list (if a live buffer name matched a recentf
 +      file basename).  Should use uniquify to offer a real solution.
 +
 +2010-04-06  John Wiegley  <jwiegley@gmail.com>
 +
 +      * ido.el (ido-use-virtual-buffers, ido-virtual): Move a ChangeLog
 +      comment to code, and add a :version tag.
 +      (ido-virtual-buffers): Move defvar to fix byte-compiler warning.
 +
 +2010-04-06  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Enable recentf-mode if using virtual buffers.
 +      * ido.el (recentf-list): Declare for byte-compiler.
 +      (ido-virtual-buffers): Move up to silence byte-compiler.  Add docstring.
 +      (ido-make-buffer-list): Simplify.
 +      (ido-add-virtual-buffers-to-list): Simplify.  Enable recentf-mode.
  
 -      * language/indian.el (gurmukhi-composable-pattern): Fix typo.
 -      (gujarati-composable-pattern): Fix typo.
 +2010-04-05  Juri Linkov  <juri@jurta.org>
  
 -2010-04-20  Kenichi Handa  <handa@m17n.org>
 +      Scrolling commands which scroll a line instead of full screen.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01452.html
  
 -      * language/indian.el (oriya-composable-pattern)
 -      (tamil-composable-pattern, malayalam-composable-pattern):
 -      Add two-part vowels to "v" (vowel sign).
 +      * simple.el (scroll-up-line, scroll-down-line): New commands.
 +      Put property isearch-scroll=t on them.
  
 -2010-04-20  Chong Yidong  <cyd@stupidchicken.com>
 +      * emulation/ws-mode.el (scroll-down-line, scroll-up-line):
 +      Remove commands.
  
 -      * files.el (copy-directory): Handle symlinks (Bug#5982).
 +2010-04-05  Juri Linkov  <juri@jurta.org>
  
 -      * progmodes/compile.el (compilation-next-error-function):
 -      Revert 2009-10-12 change (Bug#5983).
 +      Scrolling commands which do not signal errors at top/bottom.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01452.html
  
 -2010-04-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * simple.el (scroll-up-command, scroll-down-command): New commands.
 +      Put property isearch-scroll=t on them.
  
 -      * vc-hg.el (vc-hg-state): Use HGRCPATH, not HGRC.
 -      (vc-hg-working-revision): Likewise.  Use hg parents, not hg parent
 -      (Bug#5846).
 +      * bindings.el (global-map): Rebind [prior] from `scroll-down' to
 +      `scroll-down-command' and [next] from `scroll-up' to
 +      `scroll-up-command'.
  
 -2010-04-20  Glenn Morris  <rgm@gnu.org>
 +      * emulation/cua-base.el: Put property CUA=move on
 +      `scroll-up-command' and `scroll-down-command'.
 +      (cua--init-keymaps): Remap `scroll-up-command' to `cua-scroll-up'
 +      and `scroll-down-command' to `cua-scroll-down'.
  
 -      * emacs-lisp/lisp.el (lisp-completion-at-point): Give it a doc string.
 +2010-04-05  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * minibuffer.el (completion-at-point): Doc fix.
 +      * help.el (describe-mode): Return nil.
  
 -2010-04-17  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-04  John Wiegley  <jwiegley@gmail.com>
  
 -      Fix the version number for added files.
 -      * vc-hg.el (vc-hg-working-revision): Check if the file is
 -      registered after hg parent fails (Bug#5961).
 +      * ido.el (ido-use-virtual-buffers): New variable to indicate
 +      whether "virtual buffer" support is enabled for IDO.
 +      (ido-virtual): Face used to indicate virtual buffers in the list.
 +      (ido-buffer-internal): If a buffer is chosen, and no such buffer
 +      exists, but a virtual buffer of that name does (which would be why
 +      it was in the list), recreate the buffer by reopening the file.
 +      (ido-make-buffer-list): If virtual buffers are being used, call
 +      `ido-add-virtual-buffers-to-list' before the make list hook.
 +      (ido-virtual-buffers): New variable which contains a copy of the
 +      current contents of the `recentf-list', albeit pared down for the
 +      sake of speed, and with proper faces applied.
 +      (ido-add-virtual-buffers-to-list): Using the `recentf-list',
 +      create a list of "virtual buffers" to present to the user in
 +      addition to the currently open set.  Note that this logic could
 +      get rather slow if that list is too large.  With the default
 +      `recentf-max-saved-items' of 200, there is little speed penalty.
  
 -2010-04-17  Glenn Morris  <rgm@gnu.org>
 +2010-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * htmlfontify.el (htmlfontify-buffer)
 -      (htmlfontify-copy-and-link-dir): Autoload entry points.
 +      * font-lock.el: Require CL when compiling.
 +      (font-lock-turn-on-thing-lock): Use `case'.
  
 -2010-04-17  Magnus Henoch  <magnus.henoch@gmail.com>
 +2010-04-03  Eli Zaretskii  <eliz@gnu.org>
  
 -      * vc-hg.el (vc-hg-annotate-extract-revision-at-line): Expand file
 -      name relative to the project root (Bug#5960).
 +      * emacs-lisp/authors.el (authors-fixed-entries): Add entry for Eli
 +      Zaretskii.
  
 -2010-04-16  Glenn Morris  <rgm@gnu.org>
 +2010-04-02  Juri Linkov  <juri@jurta.org>
  
 -      * vc-git.el (vc-git-print-log): Doc fix.
 +      * ehelp.el (electric-help-orig-major-mode):
 +      New buffer-local variable.
 +      (electric-help-mode): Set it to original major-mode.  Doc fix.
 +      (with-electric-help): Use `electric-help-orig-major-mode' instead
 +      of (default-value 'major-mode).  Doc fix.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00069.html
  
 -2010-04-14  Óscar Fuentes  <ofv@wanadoo.es>
 +2010-04-02  Sam Steingold  <sds@gnu.org>
  
 -      * ido.el (ido-file-internal): Fix 2009-12-02 change.
 +      * vc-hg.el (vc-hg-push, vc-hg-pull): Use `apply' when calling
 +      `vc-hg-command' with a list of flags.
  
 -2010-04-14  Christoph  <cschol2112@googlemail.com>  (tiny change)
 +      * progmodes/bug-reference.el (bug-reference-bug-regexp):
 +      Also accept "patch" and "RFE".
 +      (bug-reference-fontify): `bug-reference-url-format' can also be a
 +      function to be able to handle the bug kind.
 +      (turn-on-bug-reference-mode, turn-on-bug-reference-prog-mode): Add.
  
 -      * progmodes/grep.el (grep-compute-defaults): Fix handling of host
 -      default settings (Bug#5928).
 +2010-04-02  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-04-10  Glenn Morris  <rgm@gnu.org>
 +      * tmm.el (tmm-get-keymap): Check with symbolp before passing
 +      value to fboundp, it may not be a symbol.
  
 -      * progmodes/fortran.el (fortran-match-and-skip-declaration):
 -      New function.
 -      (fortran-font-lock-keywords-3): Use it.  (Bug#1385)
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-04-07  Kenichi Handa  <handa@m17n.org>
 +      * cus-edit.el (custom-buffer-sort-alphabetically): Update :version.
  
 -      * language/indian.el (malayalam-composable-pattern): Fix previous
 -      change (add U+0D4D "SIGN VIRAMA").
 -      (oriya-composable-pattern): Add U+0B30 and fix typo in the regexp.
 -      (tamil-composable-pattern): Fix typo in the regexp.
 -      (telugu-composable-pattern): Fix U+0C4D and typo in the regexp.
 -      (kannada-composable-pattern): Fix U+0CB0 and typo in the regexp.
 -      (malayalam-composable-pattern): Fix U+0D4D and typo in the regexp.
 +2010-03-31  Juri Linkov  <juri@jurta.org>
  
 -2010-04-06  Chong Yidong  <cyd@stupidchicken.com>
 +      * simple.el (next-line, previous-line): Re-throw a signal
 +      with `signal' instead of using `ding'.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01432.html
  
 -      * textmodes/tex-mode.el (latex-mode): Revert 2008-03-03 change to
 -      paragraph-separate (Bug#5821).
 +2010-03-31  Juri Linkov  <juri@jurta.org>
  
 -2010-04-05  Juri Linkov  <juri@jurta.org>
 +      * simple.el (keyboard-escape-quit): Raise deselecting the active
 +      region higher than exiting the minibuffer.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg00904.html
  
 -      Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
 +2010-03-31  Juri Linkov  <juri@jurta.org>
  
 -      * info.el (Info-find-node-2): Comment out code that skips
 -      breadcrumbs line.
 -      (Info-mouse-follow-link): New command.
 -      (Info-link-keymap): New keymap.
 -      (Info-breadcrumbs): Rename from `Info-insert-breadcrumbs'.
 -      Return a string with links instead of inserting breadcrumbs
 -      to the Info buffer.
 -      (Info-fontify-node): Comment out code that inserts breadcrumbs.
 -      Instead of putting the `invisible' text property over the Info
 -      header, make an overlay over the Info header with the `invisible'
 -      property and `after-string' set to the string returned by
 -      `Info-breadcrumbs'.
 +      * image.el (image-animated-p): Use `image-metadata' instead of
 +      `image-extension-data'.  Get GIF extenstion data from metadata
 +      property `extension-data'.
  
 -2010-04-03  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * help.el (help-window-setup-finish): Doc fix (Bug#5830).
 -      Reported by monkey@sandpframing.com.
 +      * simple.el (append-to-buffer): Simplify.
  
 -2010-03-30  Tomas Abrahamsson  <tab@lysator.liu.se>
 +2010-03-31  Tomas Abrahamsson  <tab@lysator.liu.se>
  
        * textmodes/artist.el (artist-mode): Fix typo in docstring.
        Reported by Alex Schröder <kensanata@gmail.com>.  (Bug#5807)
  
 -2010-03-30  Kenichi Handa  <handa@m17n.org>
 +2010-03-31  Kenichi Handa  <handa@m17n.org>
  
        * language/sinhala.el (composition-function-table): Fix regexp for
        the new Unicode specification.
        (telugu-composable-pattern): New variables to cope with the new
        Unicode specification.  Use them in composition-function-table.
  
 -2010-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        Make tmm-menubar work for the Buffers menu again (bug#5726).
        * tmm.el (tmm-prompt): Also handle keymap entries in the form of
        vectors rather than cons cells, as used in menu-bar-update-buffers.
  
 -2010-03-28  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * progmodes/js.el (js-auto-indent-flag, js-mode-map)
        (js-insert-and-indent): Revert 2009-08-15 change, restoring
  
        * mail/sendmail.el (mail-default-directory): Doc fix.
  
 -2010-03-27  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * mail/sendmail.el (mail-default-directory): Doc fix.
  
 -2010-03-27  Eli Zaretskii  <eliz@gnu.org>
 +2010-03-31  Eli Zaretskii  <eliz@gnu.org>
  
        * subr.el (version-regexp-alist, version-to-list)
        (version-list-<, version-list-=, version-list-<=)
        (version-list-not-zero, version<, version<=, version=): Doc fix.
        (Bug#5744).
  
 -2010-03-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 -            Nick Roberts  <nickrob@snap.net.nz>
 -
 -      * progmodes/gdb-ui.el (gdb-apple-test): New function.
 -      (gdb-init-1): Use it.
 -
 -2010-02-10  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-02-31  Dan Nicolaescu  <dann@ics.uci.edu>
  
        * vc.el (vc-root-diff): Doc fix.
  
 -2010-03-25  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * vc.el (vc-print-log, vc-print-root-log): Doc fix.
  
        * simple.el (append-to-buffer): Fix last change.
  
 -2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * simple.el (append-to-buffer): Ensure that point is preserved if
        BUFFER is the current buffer.  Suggested by YAMAMOTO Mitsuharu.
        (Bug#5749)
  
 +2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * files.el (auto-mode-case-fold): Change default to t.
 +
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      * dired-x.el (dired-omit-mode): Doc fix.
 +
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      * replace.el (occur-accumulate-lines): Move occur-engine related
 +      functions `occur-accumulate-lines' and `occur-engine-add-prefix'
 +      to be located after `occur-engine'.
 +
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      Make occur handle multi-line matches cleanly with context.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01280.html
 +
 +      * replace.el (occur-accumulate-lines): Add optional arg `pt'.
 +      (occur-engine): Add local variables `ret', `prev-after-lines',
 +      `prev-lines'.  Use more arguments for `occur-context-lines'.
 +      Set first elem of its returned list to `data', and the second elem
 +      to `prev-after-lines'.  Don't print the separator line.
 +      In the end, print remaining context after-lines.
 +      (occur-context-lines): Add new arguments `begpt', `endpt',
 +      `lines', `prev-lines', `prev-after-lines'.  Rewrite to combine
 +      after-lines of the previous match with before-lines of the
 +      current match and not overlap them.  Return a list with two
 +      values: the output line and the list of context after-lines.
 +
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      * replace.el (occur-accumulate-lines): Fix a bug where the first
 +      context line at the beginning of the buffer was missing.
 +
 +2010-03-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.el: Make bidi-display-reordering safe variable for boolean
 +      values.
 +
 +2010-03-29  Phil Hagelberg  <phil@evri.com>
 +            Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * subr.el: Extend progress reporters to perform "spinning".
 +      (progress-reporter-update, progress-reporter-do-update):
 +      Handle non-numeric value arguments.
 +      (progress-reporter--pulse-characters): New var.
 +
 +2010-03-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/compile.el (compilation-start): Fix regexp detection
 +      of initial cd command (Bug#5771).
 +
 +2010-03-28  Stefan Guath  <stefan@automata.se>  (tiny change)
 +
 +      * find-dired.el (find-dired): Use read-directory-name (Bug#5777).
 +
 +2010-03-27  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      Restore GDB/MI fuctionality removed by 2009-12-29T07:15:34Z!nickrob@snap.net.nz.
 +      * progmodes/gdb-mi.el: Restore.
 +      * progmodes/gdb-ui.el: Remove.
 +      * progmodes/gud.el: Re-accommodate for gdb-mi.el.
 +
 +2010-03-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * desktop.el (desktop-save-buffer-p): Don't mistakenly include
 +      all dired buffers, even tramp ones.  (Bug#5755)
 +
 +2010-03-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Add "union tags" in mpc.el.
 +      * mpc.el: Remove backward compatibility code.
 +      (mpc-browser-tags): Change default.
 +      (mpc--find-memoize-union-tags): New var.
 +      (mpc-cmd-flush, mpc-cmd-special-tag-p): New fun.
 +      (mpc-cmd-find): Handle the case where the playlist does not exist.
 +      Handle union-tags.
 +      (mpc-cmd-list): Use mpc-cmd-special-tag-p.  Handle union-tags.
 +      (mpc-cmd-add): Use mpc-cmd-flush.
 +      (mpc-tagbrowser-tag-name): New fun.
 +      (mpc-tagbrowser-buf): Use it.
 +      (mpc-songs-refresh): Use cond.  Move to point-min as a fallback.
 +
  2010-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 +      Misc cleanup.
 +      * progmodes/make-mode.el (makefile-bsdmake-rule-action-regex):
 +      Use replace-regexp-in-string.
 +      (makefile-mode-abbrev-table): Merge defvar and define-abbrev-table.
 +      (makefile-imake-mode-syntax-table): Move init into defvar.
 +      (makefile-mode): Use define-derived-mode.
 +
        * progmodes/make-mode.el (makefile-rule-action-regex): Backtrack less.
        (makefile-make-font-lock-keywords): Adjust rule since submatch 1 may
        not be present any more.
        * faces.el (set-face-attribute): Fix typo in docstring.
        (face-valid-attribute-values): Reflow docstring.
  
 -2010-03-23  Glenn Morris  <rgm@gnu.org>
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
  
        * textmodes/flyspell.el (sgml-lexical-context): Autoload it (Bug#5752).
  
 -2010-03-21  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * indent.el (indent-for-tab-command): Doc fix.
  
 -2010-03-22  Juanma Barranquero  <lekktu@gmail.com>
 +2010-03-24  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-engine.el (c-remove-stale-state-cache):
 +      Fix off-by-one error.  Fixes bug #5747.
 +
 +2010-03-24  Juanma Barranquero  <lekktu@gmail.com>
  
        * image-dired.el (image-dired-display-thumbs): Fix typo in docstring.
        (image-dired-read-comment): Doc fix.
        (reftex-cite-punctuation, reftex-search-unrecursed-path-first)
        (reftex-highlight-selection): Fix typos in docstrings.
  
 -2010-03-19  Juanma Barranquero  <lekktu@gmail.com>
 +2010-03-24  Juanma Barranquero  <lekktu@gmail.com>
  
        * minibuffer.el (completion-in-region-functions): Fix docstring typos.
  
 -2010-03-18  Glenn Morris  <rgm@gnu.org>
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
  
        * mail/rmail.el (rmail-highlight-face): Restore option deleted
        2008-02-13 without comment; mark it obsolete.
        (rmail-highlight-headers): Use rmail-highlight-face once more.
  
 -2010-03-16  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * woman.el (woman2-process-escapes): Only consume the newline if
        the filler character is on a line by itself (Bug#5729).
  
 -2010-03-16  Kenichi Handa  <handa@m17n.org>
 +2010-03-24  Kenichi Handa  <handa@m17n.org>
  
        * language/indian.el (devanagari-composable-pattern): Add more
        consonants.
  
 -2010-03-14  Michael Albinus  <michael.albinus@gmx.de>
 +2010-03-24  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/trampver.el: Update release number.
  
 -2010-03-13  Glenn Morris  <rgm@gnu.org>
 -
 -      * Makefile.in (ELCFILES): Add cedet/semantic/imenu.el.
 -
 -2010-03-13  Michael Albinus  <michael.albinus@gmx.de>
 +2010-03-24  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp.el (tramp-find-executable):
        Use `tramp-get-connection-buffer'.  Make the regexp for checking
        (tramp-open-connection-setup-interactive-shell): Remove workaround
        for OpenSolaris bug, it is not needed anymore.
  
 -2010-03-12  Glenn Morris  <rgm@gnu.org>
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/cl-macs.el (defsubst*): Add autoload cookie.  (Bug#4427)
  
 -2010-03-11  Wilson Snyder  <wsnyder@wsnyder.org>
 +2010-03-24  Wilson Snyder  <wsnyder@wsnyder.org>
  
        * files.el (auto-mode-alist): Accept more verilog file patterns.
  
 +2010-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc-dir.el (vc-dir-headers): Abbreviate the working dir.
 +
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc-bzr.el (vc-bzr-log-edit-mode): Add --fixes support to
 +      log-edit-before-checkin-process.
 +
 +      * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
 +
 +      * vc.el, vc-bzr.el, vc-hg.el (log-edit-mode): Declare.
 +
 +      * vc-dispatcher.el (vc-start-logentry): Doc fix.
 +      (log-view-process-buffer, log-edit-extra-flags): Declare.
 +
 +      * log-edit.el (log-edit-before-checkin-process): Doc fix.
 +
 +2010-03-23  Sam Steingold  <sds@gnu.org>
 +
 +      Fix bug#5620: recalculate all markers on compilation buffer
 +      modifications, not on file modifications.
 +      * progmodes/compile.el (buffer-modtime): New buffer-local variable:
 +      the buffer modification time, for buffers not associated with files.
 +      (compilation-mode): Create it.
 +      (compilation-filter): Update it.
 +      (compilation-next-error-function): Use it instead of
 +      `visited-file-modtime' for timestamp.
 +
 +2010-03-23  Juri Linkov  <juri@jurta.org>
 +
 +      Implement Occur multi-line matches.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01044.html
 +
 +      * replace.el (occur): Doc fix.
 +      (occur-engine): Set `begpt' to the beginning of the first line.
 +      Set `endpt' to the end of the last match line.  At first, count
 +      line numbers between `origpt' and `begpt'.  Split out code from
 +      `out-line' variable to new let-bindings `match-prefix' and
 +      `match-str'.  In `out-line' add non-numeric prefix to all
 +      non-first lines of multi-line matches.  Finally, count lines
 +      between `begpt' and `endpt' and add to `lines'.
 +
 +2010-03-23  Juri Linkov  <juri@jurta.org>
 +
 +      * replace.el (occur-accumulate-lines, occur-engine):
 +      Use `occur-engine-line' instead of duplicate code.
 +      (occur-engine-line): New function created from duplicate code
 +      in `occur-accumulate-lines' and `occur-engine'.
 +
 +      * replace.el (occur-engine-line): Add optional arg `keep-props'.
 +      (occur-accumulate-lines, occur-engine): Add arg `keep-props'.
 +
 +2010-03-23  Juri Linkov  <juri@jurta.org>
 +
 +      * finder.el: Remove TODO tasks.
 +
 +      * info.el (Info-finder-find-node): Add node "all"
 +      with all package info.  Handle a list of multiple keywords
 +      separated by comma.
 +      (info-finder): In interactive use with a prefix argument,
 +      use `completing-read-multiple' to read a list of keywords
 +      separated by comma.
 +
 +2010-03-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Add a new completion style `substring'.
 +      * minibuffer.el (completion-basic--pattern): New function.
 +      (completion-basic-try-completion, completion-basic-all-completions):
 +      Use it.
 +      (completion-substring--all-completions)
 +      (completion-substring-try-completion)
 +      (completion-substring-all-completions): New functions.
 +      (completion-styles-alist): New style `substring'.
 +
 +2010-03-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Get rid of .elc files after removal of the corresponding .el.
 +      * Makefile.in (compile-clean): New target.
 +      (compile-main): Use it.
 +
 +2010-03-22  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * Makefile.in (compile-main): cd to $(lisp) in a sub-shell, so we
 +      don't do make there.  When compiling with separate object dir, there
 +      is no Makefile there.
 +
 +2010-03-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Get rid of the ELCFILES abomination, again.
 +      * Makefile.in (update-elclist, ELCFILES, compile-last): Remove.
 +      (all, compile): Don't call compile-last.
 +      (compile-main): Build the "elcfiles" list dynamically.
 +      (compile-targets): New (internal) target.
 +
 +2010-03-21  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * Makefile.in (top_srcdir): Define.
 +      (abs_top_builddir): Define.
 +      (srcdir): Don't append `/..'.
 +      (EMACS): Use ${abs_top_builddir}.
 +      (all, compile, compile-always, compile-last): Don't set emacswd.
 +      (update-subdirs, update-authors): Use $(top_srcdir) instead of
 +      $(srcdir).
 +      (lisp): Use $(srcdir) instead of @srcdir@.
 +
 +2010-03-21  Juri Linkov  <juri@jurta.org>
 +
 +      Fix message of multi-line occur regexps and multi-buffer header lines.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg00457.html
 +
 +      * replace.el (occur-1): Don't display regexp if it is longer
 +      than window-width.  Use `query-replace-descr' to display regexp.
 +      (occur-engine): Don't display regexp in the buffer header for
 +      multi-buffer occur.  Display a separate header line with total
 +      match count and regexp for multi-buffer occur.
 +      Use `query-replace-descr' to display regexp.
 +
 +2010-03-20  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/secrets.el: Fix parenthesis.
 +      (secrets-enabled): Fix parenthesis.
 +
 +2010-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use more relative file and directory names.
 +      * Makefile.in (EMACS): Arrange for it to work when we chdir.
 +      (setwins, setwins_almost, setwins_for_subdirs):
 +      Don't `cd'; output relative names.
 +      (all, compile, compile-always, compile-last): Set emacswd.
 +      (custom-deps, finder-data, autoloads, update-subdirs, compile-last):
 +      Just cd to the lisp source dir so we can use relative file names.
 +
 +      * outline.el (hide-sublevels): Unfix the paren non-typo! (bug#5738).
 +
 +2010-03-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * textmodes/rst.el: Use faces for font-lock customization, and make the
 +      old -face variables obsolete.
 +      (rst-block, rst-external, rst-definition, rst-directive, rst-comment)
 +      (rst-emphasis1, rst-emphasis2, rst-literal, rst-reference): New faces.
 +      (rst-block-face, rst-external-face, rst-definition-face)
 +      (rst-directive-face, rst-comment-face, rst-emphasis1-face)
 +      (rst-emphasis2-face, rst-literal-face, rst-reference-face):
 +      Make obsolete.
 +      (rst-font-lock-keywords-function): Update for above changes.
 +
 +2010-03-20  Juri Linkov  <juri@jurta.org>
 +
 +      * s-region.el:
 +      * obsolete/s-region.el: Move to obsolete.
 +
 +2010-03-19  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * vc-dispatcher.el (vc-do-command): Remove reference to `vc-path'.
 +
 +2010-03-19  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vc-hooks.el (vc-path): Remove variable and obsolete declaration.
 +
 +2010-03-19  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add special markup processing for commit logs.
 +      * log-edit.el (log-edit-extra-flags): New variable.
 +      (log-edit): Add new argument MODE.  Use that mode when non-nil
 +      instead of the log-view-mode.
 +      (log-view-process-buffer): New function.
 +
 +      * vc.el: Document that the checkin method takes optional
 +      arguments.  Document new backend specific method: log-view-mode.
 +      (vc-default-log-edit-mode): New function.
 +      (vc-checkin): Use a backend specific log-view-mode.
 +      Pass extra arguments to the checkin method.
 +      (vc-modify-change-comment): Pass a dummy extra argument.
 +
 +      * vc-dispatcher.el (vc-log-edit): Add a mode argument, pass it to
 +      log-edit.
 +      (vc-start-logentry): Add a mode argument, pass it to vc-log-edit.
 +      (vc-finish-logentry): Process the log buffer before passing it
 +      down.  Pass log-edit-extra-flags.
 +
 +      * vc-bzr.el (vc-bzr-checkin): Pass extra arguments to the commit
 +      command.
 +      (log-edit-extra-flags, log-edit-before-checkin-process):
 +      New declarations.
 +
 +      * vc-hg.el (vc-hg-checkin): Pass extra arguments to the commit
 +      command.
 +      (log-edit-extra-flags, log-edit-before-checkin-process):
 +      New declarations.
 +      (vc-hg-log-edit-mode): New derived mode.
 +
 +      * vc-arch.el (vc-arch-checkin):
 +      * vc-cvs.el (vc-cvs-checkin):
 +      * vc-git.el (vc-git-checkin):
 +      * vc-mtn.el (vc-mtn-checkin):
 +      * vc-rcs.el (vc-rcs-checkin):
 +      * vc-sccs.el (vc-sccs-checkin):
 +      * vc-svn.el (vc-svn-checkin): Add an optional ignored argument.
 +
 +2010-03-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * outline.el (hide-sublevels): Don't hide trailing newline (and fix
 +      parent typo).
 +
 +2010-03-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * password-cache.el (password-cache, password-cache-expiry): Autoload.
 +
 +2010-03-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/autoload.el (autoload-rubric): Doc fix.
 +
 +      * replace.el (query-replace-history): Give it a doc string.
 +      (map-query-replace-regexp): Use query-replace-from-history-variable
 +      and query-replace-to-history-variable.
 +
 +      * mail/hashcash.el (declare-function): Remove duplicate definition.
 +
 +      * mail/emacsbug.el (report-emacs-bug-pretest-address):
 +      Make it an obsolete alias for report-emacs-bug-address.
 +      (message-strip-special-text-properties): Declare.
 +      (report-emacs-bug): Remove test for a pretest bug address.
 +      Combine message-mode-specific code.
 +
 +      * mail/supercite.el: Don't require sendmail.
 +      (mh-in-header-p): Declare rather than using with-no-warnings.
 +      (sc-no-blank-line-or-header): Use rfc822-goto-eoh rather than
 +      mail-header-end.  Don't bind mysterious variable `kill-lines-magic'.
 +
 +      * calendar/cal-french.el: Convert to utf-8.
 +
 +      * files.el (interpreter-mode-alist): Use emacs-lisp-mode for
 +      Emacs scripts.
 +
 +2010-03-16  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/secrets.el (secrets-enabled): New variable.  Use it instead
 +      of a subfeature.
 +
 +2010-03-15  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/secrets.el (top): Register the D-Bus signals only when the
 +      service "org.freedesktop.secrets" can be pinged.
 +      Provide subfeature `enabled'.
 +
 +2010-03-14  Juri Linkov  <juri@jurta.org>
 +
 +      Add finder unknown keywords.
 +
 +      * finder.el (finder-unknown-keywords): New function.
 +
 +      * info.el (Info-finder-find-node): Use `finder-unknown-keywords'
 +      to create a Finder node with unknown keywords.
 +
 +2010-03-14  Juri Linkov  <juri@jurta.org>
 +
 +      * finder.el (finder-compile-keywords): Replace `princ' with
 +      `prin1' on a list of symbols interned from keyword strings.
 +
 +      * emacs-lisp/lisp-mnt.el (lm-keywords-list): If `keywords' contains
 +      a comma, then split keywords using a comma and optional whitespace.
 +      Otherwise, split by whitespace.
 +
 +      * complete.el:
 +      * face-remap.el:
 +      * log-view.el:
 +      * net/hmac-def.el:
 +      * net/hmac-md5.el:
 +      * net/netrc.el:
 +      * progmodes/mixal-mode.el: Fix keywords.
 +
 +2010-03-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * Makefile.in (ELCFILES): Add net/secrets.elc.
 +
 +      * net/secrets.el: New file.
 +
 +2010-03-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * facemenu.el (list-colors-display, list-colors-print): New arg
 +      callback.  Use it to allow selecting colors.
 +
 +      * wid-edit.el (widget-image-insert): Insert image prop even if the
 +      current display is non-graphic.
 +      (widget-field-value-set): New fun.
 +      (editable-field): Use it.
 +      (widget-field-value-get): Clean up unused var.
 +      (widget-color-value-create, widget-color--choose-action):
 +      New funs.  Allow using list-colors-display to choose color.
 +
 +2010-03-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el: Resort topmost custom groups.
 +      (custom-buffer-sort-alphabetically): Default to t.
 +      (customize-apropos): Use apropos-parse-pattern.
 +      (custom-search-field): New var.
 +      (custom-buffer-create-internal): Add custom-apropos search field.
 +      (custom-add-parent-links): Don't display parent doc.
 +      (custom-group-value-create): Don't sort top-level custom group.
 +      (custom-magic-value-create): Show visibility button before option name.
 +
 +      (custom-variable-state): New fun, from custom-variable-state-set.
 +      (custom-variable-state-set): Use it.
 +      (custom-group-value-create): Hide options with standard values
 +      using the :hidden-states property.  Use progress reporter.
 +
 +      (custom-show): Simplify.
 +      (custom-visibility): Disable images by default.
 +      (custom-variable): New property :hidden-states.
 +      (custom-variable-value-create): Enable images for
 +      custom-visibility widgets.  Use :hidden-states property to
 +      determine initial visibility.
 +
 +      * wid-edit.el (widget-image-find): Give images center ascent.
 +      (visibility): Add :on-image and :off-image properties.
 +      (widget-visibility-value-create): Use them.
 +
 +2010-03-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (processes): Remove from development group.
 +      (oop, hypermedia): Delete group.
 +      (comm): Promote to top-level group.
 +
 +      * net/browse-url.el (browse-url):
 +      * net/xesam.el (xesam):
 +      * net/tramp.el (tramp):
 +      * net/goto-addr.el (goto-address):
 +      * net/ange-ftp.el (ange-ftp): Put in comm group.
 +
 +      * view.el (view): Remove from editing group.
 +
 +      * uniquify.el (uniquify): Put in files group.
 +
 +      * net/browse-url.el (browse-url):
 +      * ps-print.el (postscript): Put in external group.
 +
 +      * cus-edit.el (outlines):
 +      * textmodes/text-mode.el (text-mode-hook):
 +      * textmodes/table.el (table):
 +      * textmodes/picture.el (picture):
 +      * outline.el (outlines): Put in wp group.
 +
 +      * nxml/nxml-mode.el (nxml): Remove from wp group.
 +
 +      * net/tramp-imap.el (tramp-imap): Put in tramp group.
 +
 +      * mail/metamail.el (metamail): Remove from hypermedia group.
 +
 +      * cus-edit.el (abbrev):
 +      * whitespace.el (whitespace):
 +      * vcursor.el (vcursor):
 +      * reveal.el (reveal):
 +      * hl-line.el (hl-line): Put in convenience group.
 +
 +      * epg-config.el (epg): Put in data group.
 +
 +      * emulation/pc-select.el (pc-select): Put in emulations group.
 +
 +      * calculator.el (calculator): Put in applications group.
 +
 +2010-03-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add .dir-locals.el support for file-less buffers.
 +      * files.el (hack-local-variables): Split out code to apply local
 +      variable settings ...
 +      (hack-local-variables-apply): ... here.  New function.
 +      (hack-dir-local-variables): Use the default directory for when the
 +      buffer does not have an associated file.
 +      (hack-dir-local-variables-non-file-buffer): New function.
 +      * diff-mode.el (diff-mode):
 +      * vc-annotate.el (vc-annotate-mode):
 +      * vc-dir.el (vc-dir-mode):
 +      * log-edit.el (log-edit-mode):
 +      * log-view.el (log-view-mode): Call hack-dir-local-variables-non-file-buffer.
 +
 +2010-03-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add support for shelving snapshots and for showing shelves.
 +      * vc-bzr.el (vc-bzr-shelve-show, vc-bzr-shelve-show-at-point)
 +      (vc-bzr-shelve-apply-and-keep-at-point, vc-bzr-shelve-snapshot):
 +      New functions.
 +      (vc-bzr-shelve-map, vc-bzr-shelve-menu-map)
 +      (vc-bzr-extra-menu-map): Map them.
 +
 +2010-03-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * cus-edit.el (customize-changed-options-previous-release):
 +      Bump to 23.1.
 +
 +      * image.el (image-animate-max-time): Fix :version tag.
 +
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
 +2010-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc-git.el (vc-git-revision-table): Include remote branches.
 +
 +2010-03-10  Kim F. Storm  <storm@cua.dk>
 +
 +      Animated image API.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg00211.html
 +
 +      * image.el (image-animate-max-time): New defcustom.
 +      (image-animated-types): New defconst.
 +      (create-animated-image, image-animate-timer)
 +      (image-animate-start, image-animate-stop, image-animate-timeout)
 +      (image-animated-p): New functions.
 +
 +      * image-mode.el (image-toggle-display-image):
 +      Replace `create-image' with `create-animated-image'.
 +
  2010-03-09  Miles Bader  <miles@gnu.org>
  
        * vc-git.el (vc-git-print-log): Use "tformat:" for shortlog,
  2010-02-28  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/dbus.el (dbus-introspect, dbus-get-property)
 -      (dbus-set-property, dbus-get-all-properties): Use
 -      `dbus-call-method' when noninteractive.  (Bug#5645)
 +      (dbus-set-property, dbus-get-all-properties):
 +      Use `dbus-call-method' when noninteractive.  (Bug#5645)
  
  2010-02-28  Chong Yidong  <cyd@stupidchicken.com>
  
        * files.el (hack-local-variables-filter): For eval forms, also
        check safe-local-variable-p (Bug#5636).
  
 -2010-02-24  Eduard Wiebe  <usenet@pusto.de>
 -
 -      * javascript.el (wisent-javascript-jv-expand-tag): Avoid c(ad)ddr
 -      and use c(ad)r of cddr (Bug#5640).
 -
  2010-02-22  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Protect
  2010-02-03  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/ange-ftp.el (ange-ftp-insert-directory): Parse directory
 -      also in case of (and (not full) (not wildcard)). This is needed,
 +      also in case of (and (not full) (not wildcard)).  This is needed
        when dired is called with a list of files, which are not in
        `default-directory'.  (Bug#5478)
  
  2010-01-21  Alan Mackenzie  <acm@muc.de>
  
        Fix a situation where deletion of a cpp construct throws an error.
 -      * progmodes/cc-engine.el (c-invalidate-state-cache): Before
 -      invoking c-with-all-but-one-cpps-commented-out, check that the
 +      * progmodes/cc-engine.el (c-invalidate-state-cache):
 +      Before invoking c-with-all-but-one-cpps-commented-out, check that the
        special cpp construct is still in the buffer.
        (c-parse-state): Record the special cpp with markers, not numbers.
  
  
  2010-01-02  Karl Fogel  <kfogel@red-bean.com>
  
 -      * bookmark.el (bookmark-bmenu-any-marks): New function
 +      * bookmark.el (bookmark-bmenu-any-marks): New function.
        (bookmark-bmenu-save): Clear buffer modification if no marks.
  
  2010-01-02  Karl Fogel  <kfogel@red-bean.com>
  
  2009-12-18  Ulf Jasper  <ulf.jasper@web.de>
  
 -      * calendar/icalendar.el (icalendar--convert-tz-offset): Fixed
 -      timezone names.
 -      (icalendar--convert-tz-offset): Fixed the "last-day-problem".
 +      * calendar/icalendar.el (icalendar--convert-tz-offset):
 +      Fix timezone names.
 +      (icalendar--convert-tz-offset): Fix the "last-day-problem".
        (icalendar--add-diary-entry): Remove the trailing blank that
        diary-make-entry inserts.
  
        (tramp-advice-file-expand-wildcards): Remove it.
  
        * net/tramp-compat.el (top): Autoload `tramp-handle-file-remote-p'.
 -      (tramp-advice-file-expand-wildcards): Moved from tramp.el.
 +      (tramp-advice-file-expand-wildcards): Move from tramp.el.
        Activate advice for older GNU Emacs versions.  (Bug#5237)
  
  2009-12-17  Juanma Barranquero  <lekktu@gmail.com>
  
        * files.el (hack-local-variables-filter): While ignoring duplicates,
        don't take `mode' into account.
 -      (hack-local-variables-filter, hack-dir-local-variables): Don't
 -      remove duplicate `mode' from local-variables-alist (like `eval').
 +      (hack-local-variables-filter, hack-dir-local-variables):
 +      Don't remove duplicate `mode' from local-variables-alist (like `eval').
  
  2009-12-17  Juri Linkov  <juri@jurta.org>
  
 -      Make `dired-diff' more safe.  (Bug#5225)
 +      Make `dired-diff' safer.  (Bug#5225)
  
        * dired-aux.el (dired-diff): Signal an error when `file' equals to
        `current' or when `file' is a directory of the `current' file.
  
  2009-12-10  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
  
 -      * whitespace.el (whitespace-display-char-on): Ensure
 -      `buffer-display-table' is unique when two or more windows are
 +      * whitespace.el (whitespace-display-char-on):
 +      Ensure `buffer-display-table' is unique when two or more windows are
        visible.  Reported by Martin Pohlack <mp26@os.inf.tu-dresden.de>.
        New version 12.1.
  
  
  2009-12-09  Vivek Dasmohapatra  <vivek@etla.org>
  
 -      Drop some properties to avoid surprises.
 +      Drop some properties to avoid surprises (bug#5002).
        * htmlfontify.el (hfy-ignored-properties): New defcustom.
        (hfy-fontify-buffer): Use it.
  
        * Makefile.in (ELCFILES): Adapt to subword.el move.
  
  2009-11-21  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 -          Stefan Monnier  <monnier@iro.umontreal.ca>
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * bookmark.el (bookmark-bmenu-bookmark-column): Remove var.
        (bookmark-bmenu-list): Save name on `bookmark-name-prop' text-prop.
        (tar-header-block-tokenize): Decode the username and groupname.
        (tar-chown-entry, tar-chgrp-entry): Encode the names (bug#4730).
  
 +2009-10-17  Eric Ludlam  <zappo@gnu.org>
 +
 +      * emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer
 +      contains multibyte characters, choose first applicable coding
 +      system automatically.
 +
  2009-10-17  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * international/mule-cmds.el (select-safe-coding-system): If the file
        * term/w32-win.el (setup-default-fontset, set-fontset-font):
        Remove unused declarations.
  
 +2009-09-30  Eric Ludlam  <zappo@gnu.org>
 +
 +      * emacs-lisp/eieio.el (boolean-p): Delete.
 +
  2009-09-30  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/authors.el (authors-ignored-files): Add "js2-mode.el".
  
        * net/tramp-imap.el: New package.
  
 +2009-09-28  Eric Ludlam  <zappo@gnu.org>
 +
 +      * emacs-lisp/chart.el:
 +      * emacs-lisp/eieio-base.el:
 +      * emacs-lisp/eieio-comp.el:
 +      * emacs-lisp/eieio-custom.el:
 +      * emacs-lisp/eieio-datadebug.el:
 +      * emacs-lisp/eieio-opt.el:
 +      * emacs-lisp/eieio-speedbar.el:
 +      * emacs-lisp/eieio.el: New files.
 +
  2009-09-27  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
  
        * whitespace.el (whitespace-trailing-regexp)
  
        * textmodes/fill.el: Convert to utf-8 encoding.
        (fill-french-nobreak-p): Remove redundant » and « inherited from our
 -      pre-unicode days.
 +      pre-Unicode days.
  
        * add-log.el (change-log-fill-forward-paragraph): New function.
        (change-log-mode): Use it so fill-region DTRT.
        indent buffer only if called interactively (Bug#4452).
  
  2009-09-19  Juanma Barranquero  <lekktu@gmail.com>
 -          Eli Zaretskii  <eliz@gnu.org>
 +            Eli Zaretskii  <eliz@gnu.org>
  
        This fixes bug#4197 (merged to bug#865, though not identical).
        * server.el (server-auth-dir): Add docstring note about FAT32.
        Don't call substitute-in-file-name on diary-file.
  
  2009-09-03  Eduard Wiebe  <usenet@pusto.de>
 -          Stefan Monnier  <monnier@iro.umontreal.ca>
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * mail/footnote.el (footnote-prefix): Make it a defcustom.
        (footnote-mode-map): Move initialization into the declaration.
        * progmodes/hideshow.el (hs-special-modes-alist): Add js-mode entry.
  
  2009-08-14  Daniel Colascione  <dan.colascione@gmail.com>
 -          Karl Landstrom  <karl.landstrom@brgeight.se>
 +            Karl Landstrom  <karl.landstrom@brgeight.se>
  
        * progmodes/js.el: New file.
  
        XZ is the successor to LZMA: <http://tukaani.org/xz/>
  
  2009-06-22  Dmitry Dzhus  <dima@sphinx.net.ru>
 -          Nick Roberts  <nickrob@snap.net.nz>
 +            Nick Roberts  <nickrob@snap.net.nz>
  
        * progmodes/gdb-mi.el: Pull further modified changes from Dmitry's
        repository (http://sphinx.net.ru/hg/gdb-mi/).
@@@ -18640,7 -11876,7 +18700,7 @@@ See ChangeLog.14 for earlier changes
  ;; coding: utf-8
  ;; End:
  
 -    Copyright (C) 2009, 2010  Free Software Foundation, Inc.
 +  Copyright (C) 2009, 2010  Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
  
    You should have received a copy of the GNU General Public License
    along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 -
 -;; arch-tag: d3e45e38-19e2-49b6-8dc2-7cb26adcc5a1
diff --combined lisp/Makefile.in
index 2b2081a25d0d28ff521be01c1ab863380a27f30f,dd93ec44e93f71863979760c15b4da9e1633d06d..7c42d1a94b11cfdb215e59b139e39ea9d2d59cf0
  
  SHELL = /bin/sh
  
 -lisp=@srcdir@
 -VPATH=@srcdir@
 -srcdir=@srcdir@/..
 +srcdir = @srcdir@
 +top_srcdir = @top_srcdir@
 +abs_top_builddir = @abs_top_builddir@
 +lisp = $(srcdir)
 +VPATH = $(srcdir)
  
  # You can specify a different executable on the make command line,
  # e.g. "make EMACS=../src/emacs ...".
  
 -EMACS = ../src/emacs
 +# We sometimes change directory before running Emacs (typically when
 +# building out-of-tree, we chdir to the source directory), so we need
 +# to use an absolute file name.
 +EMACS = ${abs_top_builddir}/src/emacs
  
 -# Command line flags for Emacs.  This must include --multibyte,
 -# otherwise some files will not compile.
 +# Command line flags for Emacs.
  
 -EMACSOPT = -batch --no-site-file --multibyte
 +EMACSOPT = -batch --no-site-file
  
  # Extra flags to pass to the byte compiler
  BYTE_COMPILE_EXTRA_FLAGS =
@@@ -56,8 -52,7 +56,8 @@@ ETAGS = ../lib-src/etag
  LOADDEFS = $(lisp)/calendar/cal-loaddefs.el \
        $(lisp)/calendar/diary-loaddefs.el \
        $(lisp)/calendar/hol-loaddefs.el \
 -      $(lisp)/mh-e/mh-loaddefs.el
 +      $(lisp)/mh-e/mh-loaddefs.el \
 +      $(lisp)/net/tramp-loaddefs.el
  
  # Elisp files auto-generated.
  AUTOGENEL = loaddefs.el \
@@@ -84,26 -79,29 +84,26 @@@ COMPILE_FIRST = 
  emacs = EMACSLOADPATH=$(lisp) LC_ALL=C $(EMACS) $(EMACSOPT)
  
  # Common command to find subdirectories
 -
 -setwins=subdirs=`(cd $$wd; find . -type d -print)`; \
 +setwins=subdirs=`(find . -type d -print)`; \
        for file in $$subdirs; do \
 -         case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* ) ;; \
 -              *) wins="$$wins $$wd/$$file" ;; \
 +         case $$file in */.* | */.*/* | */=* ) ;; \
 +              *) wins="$$wins $$file" ;; \
           esac; \
          done
  
  # Find all subdirectories except `obsolete' and `term'.
 -
 -setwins_almost=subdirs=`(cd $$wd; find . -type d -print)`; \
 +setwins_almost=subdirs=`(find . -type d -print)`; \
        for file in $$subdirs; do \
 -         case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */obsolete | */term ) ;; \
 -              *) wins="$$wins $$wd/$$file" ;; \
 +         case $$file in */.* | */.*/* | */=* | */obsolete | */term ) ;; \
 +              *) wins="$$wins $$file" ;; \
           esac; \
          done
  
  # Find all subdirectories in which we might want to create subdirs.el
 -
 -setwins_for_subdirs=subdirs=`(cd $$wd; find . -type d -print)`; \
 +setwins_for_subdirs=subdirs=`(find . -type d -print)`; \
        for file in $$subdirs; do \
 -         case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */cedet* ) ;; \
 -              *) wins="$$wins $$wd/$$file" ;; \
 +         case $$file in */.* | */.*/* | */=* | */cedet* ) ;; \
 +              *) wins="$$wins $$file" ;; \
           esac; \
          done
  
  # cus-load and finder-inf are not explicitly requested by anything, so
  # we add them here to make sure they get built.
  all: compile-main $(lisp)/cus-load.el $(lisp)/finder-inf.el
 -      @: Let us check that we byte-compiled all the files.
 -      $(MAKE) $(MFLAGS) compile-last EMACS=$(EMACS)
  
  doit:
  
  $(lisp)/cus-load.el:
        $(MAKE) $(MFLAGS) custom-deps
  custom-deps: doit
 -      wd=$(lisp); $(setwins_almost); \
 +      cd $(lisp); $(setwins_almost); \
        echo Directories: $$wins; \
        $(emacs) -l cus-dep --eval '(setq generated-custom-dependencies-file "$(lisp)/cus-load.el")' -f custom-make-dependencies $$wins
  
  $(lisp)/finder-inf.el:
        $(MAKE) $(MFLAGS) finder-data
  finder-data: doit
 -      wd=$(lisp); $(setwins_almost); \
 +      cd $(lisp); $(setwins_almost); \
        echo Directories: $$wins; \
        $(emacs) -l finder --eval '(setq generated-finder-keywords-file "$(lisp)/finder-inf.el")' -f finder-compile-keywords-make-dist $$wins
  
  autoloads: $(LOADDEFS) doit
        chmod +w $(lisp)/ps-print.el $(lisp)/emulation/tpu-edt.el \
          $(lisp)/emacs-lisp/cl-loaddefs.el $(lisp)/mail/rmail.el \
 -        $(lisp)/dired.el $(lisp)/ibuffer.el
 -      wd=$(lisp); $(setwins_almost); \
 +        $(lisp)/dired.el $(lisp)/ibuffer.el $(lisp)/htmlfontify.el
 +      cd $(lisp); $(setwins_almost); \
        echo Directories: $$wins; \
        $(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins
  
  $(lisp)/subdirs.el:
        $(MAKE) $(MFLAGS) update-subdirs
  update-subdirs: doit
 -      wd=$(lisp); $(setwins_for_subdirs); \
 +      cd $(lisp); $(setwins_for_subdirs); \
        for file in $$wins; do \
 -         $(srcdir)/update-subdirs $$file; \
 +         $(top_srcdir)/update-subdirs $$file; \
        done;
  
  updates: update-subdirs autoloads finder-data custom-deps
@@@ -174,12 -174,1295 +174,13 @@@ cvs-update: bzr-updat
  # Update the AUTHORS file.
  
  update-authors:
 -      $(emacs) -l authors -f batch-update-authors $(srcdir)/etc/AUTHORS $(srcdir)
 +      $(emacs) -l authors -f batch-update-authors $(top_srcdir)/etc/AUTHORS $(top_srcdir)
  
  TAGS TAGS-LISP: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
        els=`echo $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) | sed -e "s,$(lisp)/[^ ]*loaddefs[^ ]*,," -e "s,$(lisp)/ldefs-boot[^ ]*,,"`; \
        ${ETAGS} -o $@ $$els
  
 -.PHONY: update-elclist
 -
 -## Post-bootstrap, find the list of .elc files and use sed to update
 -## ELCFILES in Makefile.in.
 -## Errors in the final sed are non-fatal, since they have no effect on
 -## building Emacs.  chmod +w is for CVSREAD=1.
 -## "echo" is non-portable with regards to backslashes, eg between zsh
 -## and bash.  Hence the use of sed on line 2 below (line 1 seems to be OK).
 -## http://lists.gnu.org/archive/html/emacs-devel/2008-05/msg01535.html
 -update-elclist:
 -      echo "/^ELCFILES/,/^$$/c\\" > temp.sed
 -      echo "ELCFILES =" | sed -e 's/$$/ \\\\\\/' >> temp.sed
 -      LC_COLLATE=C ls $(lisp)/*.elc $(lisp)/*/*.elc $(lisp)/*/*/*.elc $(lisp)/*/*/*/*.elc | sed -e "s|^$(lisp)|       \$$(lisp)|" -e 's/$$/ \\\\\\/' -e '$$ s/ \\\\//' >> temp.sed
 -      echo "" >> temp.sed
 -      -sed -f temp.sed $(lisp)/Makefile.in > temp-elcfiles || rm temp-elcfiles
 -      rm temp.sed
 -      @test -f temp-elcfiles || echo "Maintainer warning: failed to update Makefile.in.  You can ignore this if you are not an Emacs developer."
 -      if test -f temp-elcfiles; then \
 -        chmod +w $(lisp)/Makefile.in; \
 -        mv -f temp-elcfiles $(lisp)/Makefile.in; \
 -      fi
 -      -(LC_COLLATE=C ls $(lisp)/*.elc $(lisp)/*/*.elc $(lisp)/*/*/*.elc $(lisp)/*/*/*/*.elc | sed 's/elc$$/el/';  \
 -        LC_COLLATE=C ls $(lisp)/*.el $(lisp)/*/*.el $(lisp)/*/*/*.el $(lisp)/*/*/*/*.el; \
 -        LC_COLLATE=C ls $(lisp)/*.el $(lisp)/*/*.el $(lisp)/*/*/*.el $(lisp)/*/*/*/*.el) |       \
 -           sort | uniq -u | while read extra; do                         \
 -               echo "Found left over byte-compiled file: $${extra}c !!" ;\
 -           done
 -
 -## Explicitly list the .elc files, for the sake of parallel builds.
 -## http://lists.gnu.org/archive/html/bug-gnu-emacs/2008-05/msg00016.html
 -## This can probably be done more elegantly, but needs to be portable.
 -ELCFILES = \
 -      $(lisp)/abbrev.elc \
 -      $(lisp)/abbrevlist.elc \
 -      $(lisp)/add-log.elc \
 -      $(lisp)/align.elc \
 -      $(lisp)/allout.elc \
 -      $(lisp)/ansi-color.elc \
 -      $(lisp)/apropos.elc \
 -      $(lisp)/arc-mode.elc \
 -      $(lisp)/array.elc \
 -      $(lisp)/autoarg.elc \
 -      $(lisp)/autoinsert.elc \
 -      $(lisp)/autorevert.elc \
 -      $(lisp)/avoid.elc \
 -      $(lisp)/battery.elc \
 -      $(lisp)/bindings.elc \
 -      $(lisp)/bookmark.elc \
 -      $(lisp)/bs.elc \
 -      $(lisp)/buff-menu.elc \
 -      $(lisp)/button.elc \
 -      $(lisp)/calc/calc-aent.elc \
 -      $(lisp)/calc/calc-alg.elc \
 -      $(lisp)/calc/calc-arith.elc \
 -      $(lisp)/calc/calc-bin.elc \
 -      $(lisp)/calc/calc-comb.elc \
 -      $(lisp)/calc/calc-cplx.elc \
 -      $(lisp)/calc/calc-embed.elc \
 -      $(lisp)/calc/calc-ext.elc \
 -      $(lisp)/calc/calc-fin.elc \
 -      $(lisp)/calc/calc-forms.elc \
 -      $(lisp)/calc/calc-frac.elc \
 -      $(lisp)/calc/calc-funcs.elc \
 -      $(lisp)/calc/calc-graph.elc \
 -      $(lisp)/calc/calc-help.elc \
 -      $(lisp)/calc/calc-incom.elc \
 -      $(lisp)/calc/calc-keypd.elc \
 -      $(lisp)/calc/calc-lang.elc \
 -      $(lisp)/calc/calc-macs.elc \
 -      $(lisp)/calc/calc-map.elc \
 -      $(lisp)/calc/calc-math.elc \
 -      $(lisp)/calc/calc-menu.elc \
 -      $(lisp)/calc/calc-misc.elc \
 -      $(lisp)/calc/calc-mode.elc \
 -      $(lisp)/calc/calc-mtx.elc \
 -      $(lisp)/calc/calc-nlfit.elc \
 -      $(lisp)/calc/calc-poly.elc \
 -      $(lisp)/calc/calc-prog.elc \
 -      $(lisp)/calc/calc-rewr.elc \
 -      $(lisp)/calc/calc-rules.elc \
 -      $(lisp)/calc/calc-sel.elc \
 -      $(lisp)/calc/calc-stat.elc \
 -      $(lisp)/calc/calc-store.elc \
 -      $(lisp)/calc/calc-stuff.elc \
 -      $(lisp)/calc/calc-trail.elc \
 -      $(lisp)/calc/calc-undo.elc \
 -      $(lisp)/calc/calc-units.elc \
 -      $(lisp)/calc/calc-vec.elc \
 -      $(lisp)/calc/calc-yank.elc \
 -      $(lisp)/calc/calc.elc \
 -      $(lisp)/calc/calcalg2.elc \
 -      $(lisp)/calc/calcalg3.elc \
 -      $(lisp)/calc/calccomp.elc \
 -      $(lisp)/calc/calcsel2.elc \
 -      $(lisp)/calculator.elc \
 -      $(lisp)/calendar/appt.elc \
 -      $(lisp)/calendar/cal-bahai.elc \
 -      $(lisp)/calendar/cal-china.elc \
 -      $(lisp)/calendar/cal-coptic.elc \
 -      $(lisp)/calendar/cal-dst.elc \
 -      $(lisp)/calendar/cal-french.elc \
 -      $(lisp)/calendar/cal-hebrew.elc \
 -      $(lisp)/calendar/cal-html.elc \
 -      $(lisp)/calendar/cal-islam.elc \
 -      $(lisp)/calendar/cal-iso.elc \
 -      $(lisp)/calendar/cal-julian.elc \
 -      $(lisp)/calendar/cal-mayan.elc \
 -      $(lisp)/calendar/cal-menu.elc \
 -      $(lisp)/calendar/cal-move.elc \
 -      $(lisp)/calendar/cal-persia.elc \
 -      $(lisp)/calendar/cal-tex.elc \
 -      $(lisp)/calendar/cal-x.elc \
 -      $(lisp)/calendar/calendar.elc \
 -      $(lisp)/calendar/diary-lib.elc \
 -      $(lisp)/calendar/holidays.elc \
 -      $(lisp)/calendar/icalendar.elc \
 -      $(lisp)/calendar/lunar.elc \
 -      $(lisp)/calendar/parse-time.elc \
 -      $(lisp)/calendar/solar.elc \
 -      $(lisp)/calendar/time-date.elc \
 -      $(lisp)/calendar/timeclock.elc \
 -      $(lisp)/calendar/todo-mode.elc \
 -      $(lisp)/case-table.elc \
 -      $(lisp)/cdl.elc \
 -      $(lisp)/cedet/cedet-cscope.elc \
 -      $(lisp)/cedet/cedet-files.elc \
 -      $(lisp)/cedet/cedet-global.elc \
 -      $(lisp)/cedet/cedet-idutils.elc \
 -      $(lisp)/cedet/cedet.elc \
 -      $(lisp)/cedet/data-debug.elc \
 -      $(lisp)/cedet/ede.elc \
 -      $(lisp)/cedet/ede/auto.elc \
 -      $(lisp)/cedet/ede/autoconf-edit.elc \
 -      $(lisp)/cedet/ede/base.elc \
 -      $(lisp)/cedet/ede/cpp-root.elc \
 -      $(lisp)/cedet/ede/custom.elc \
 -      $(lisp)/cedet/ede/dired.elc \
 -      $(lisp)/cedet/ede/emacs.elc \
 -      $(lisp)/cedet/ede/files.elc \
 -      $(lisp)/cedet/ede/generic.elc \
 -      $(lisp)/cedet/ede/linux.elc \
 -      $(lisp)/cedet/ede/locate.elc \
 -      $(lisp)/cedet/ede/make.elc \
 -      $(lisp)/cedet/ede/makefile-edit.elc \
 -      $(lisp)/cedet/ede/pconf.elc \
 -      $(lisp)/cedet/ede/pmake.elc \
 -      $(lisp)/cedet/ede/proj-archive.elc \
 -      $(lisp)/cedet/ede/proj-aux.elc \
 -      $(lisp)/cedet/ede/proj-comp.elc \
 -      $(lisp)/cedet/ede/proj-elisp.elc \
 -      $(lisp)/cedet/ede/proj-info.elc \
 -      $(lisp)/cedet/ede/proj-misc.elc \
 -      $(lisp)/cedet/ede/proj-obj.elc \
 -      $(lisp)/cedet/ede/proj-prog.elc \
 -      $(lisp)/cedet/ede/proj-scheme.elc \
 -      $(lisp)/cedet/ede/proj-shared.elc \
 -      $(lisp)/cedet/ede/proj.elc \
 -      $(lisp)/cedet/ede/project-am.elc \
 -      $(lisp)/cedet/ede/shell.elc \
 -      $(lisp)/cedet/ede/simple.elc \
 -      $(lisp)/cedet/ede/source.elc \
 -      $(lisp)/cedet/ede/speedbar.elc \
 -      $(lisp)/cedet/ede/srecode.elc \
 -      $(lisp)/cedet/ede/system.elc \
 -      $(lisp)/cedet/ede/util.elc \
 -      $(lisp)/cedet/inversion.elc \
 -      $(lisp)/cedet/mode-local.elc \
 -      $(lisp)/cedet/pulse.elc \
 -      $(lisp)/cedet/semantic.elc \
 -      $(lisp)/cedet/semantic/analyze.elc \
 -      $(lisp)/cedet/semantic/analyze/complete.elc \
 -      $(lisp)/cedet/semantic/analyze/debug.elc \
 -      $(lisp)/cedet/semantic/analyze/fcn.elc \
 -      $(lisp)/cedet/semantic/analyze/refs.elc \
 -      $(lisp)/cedet/semantic/bovine.elc \
 -      $(lisp)/cedet/semantic/bovine/c-by.elc \
 -      $(lisp)/cedet/semantic/bovine/c.elc \
 -      $(lisp)/cedet/semantic/bovine/debug.elc \
 -      $(lisp)/cedet/semantic/bovine/el.elc \
 -      $(lisp)/cedet/semantic/bovine/gcc.elc \
 -      $(lisp)/cedet/semantic/bovine/make-by.elc \
 -      $(lisp)/cedet/semantic/bovine/make.elc \
 -      $(lisp)/cedet/semantic/bovine/scm-by.elc \
 -      $(lisp)/cedet/semantic/bovine/scm.elc \
 -      $(lisp)/cedet/semantic/chart.elc \
 -      $(lisp)/cedet/semantic/complete.elc \
 -      $(lisp)/cedet/semantic/ctxt.elc \
 -      $(lisp)/cedet/semantic/db-debug.elc \
 -      $(lisp)/cedet/semantic/db-ebrowse.elc \
 -      $(lisp)/cedet/semantic/db-el.elc \
 -      $(lisp)/cedet/semantic/db-file.elc \
 -      $(lisp)/cedet/semantic/db-find.elc \
 -      $(lisp)/cedet/semantic/db-global.elc \
 -      $(lisp)/cedet/semantic/db-javascript.elc \
 -      $(lisp)/cedet/semantic/db-mode.elc \
 -      $(lisp)/cedet/semantic/db-ref.elc \
 -      $(lisp)/cedet/semantic/db-typecache.elc \
 -      $(lisp)/cedet/semantic/db.elc \
 -      $(lisp)/cedet/semantic/debug.elc \
 -      $(lisp)/cedet/semantic/decorate.elc \
 -      $(lisp)/cedet/semantic/decorate/include.elc \
 -      $(lisp)/cedet/semantic/decorate/mode.elc \
 -      $(lisp)/cedet/semantic/dep.elc \
 -      $(lisp)/cedet/semantic/doc.elc \
 -      $(lisp)/cedet/semantic/ede-grammar.elc \
 -      $(lisp)/cedet/semantic/edit.elc \
 -      $(lisp)/cedet/semantic/find.elc \
 -      $(lisp)/cedet/semantic/format.elc \
 -      $(lisp)/cedet/semantic/fw.elc \
 -      $(lisp)/cedet/semantic/grammar-wy.elc \
 -      $(lisp)/cedet/semantic/grammar.elc \
 -      $(lisp)/cedet/semantic/html.elc \
 -      $(lisp)/cedet/semantic/ia-sb.elc \
 -      $(lisp)/cedet/semantic/ia.elc \
 -      $(lisp)/cedet/semantic/idle.elc \
 -      $(lisp)/cedet/semantic/imenu.elc \
 -      $(lisp)/cedet/semantic/java.elc \
 -      $(lisp)/cedet/semantic/lex-spp.elc \
 -      $(lisp)/cedet/semantic/lex.elc \
 -      $(lisp)/cedet/semantic/mru-bookmark.elc \
 -      $(lisp)/cedet/semantic/sb.elc \
 -      $(lisp)/cedet/semantic/scope.elc \
 -      $(lisp)/cedet/semantic/senator.elc \
 -      $(lisp)/cedet/semantic/sort.elc \
 -      $(lisp)/cedet/semantic/symref.elc \
 -      $(lisp)/cedet/semantic/symref/cscope.elc \
 -      $(lisp)/cedet/semantic/symref/filter.elc \
 -      $(lisp)/cedet/semantic/symref/global.elc \
 -      $(lisp)/cedet/semantic/symref/grep.elc \
 -      $(lisp)/cedet/semantic/symref/idutils.elc \
 -      $(lisp)/cedet/semantic/symref/list.elc \
 -      $(lisp)/cedet/semantic/tag-file.elc \
 -      $(lisp)/cedet/semantic/tag-ls.elc \
 -      $(lisp)/cedet/semantic/tag-write.elc \
 -      $(lisp)/cedet/semantic/tag.elc \
 -      $(lisp)/cedet/semantic/texi.elc \
 -      $(lisp)/cedet/semantic/util-modes.elc \
 -      $(lisp)/cedet/semantic/util.elc \
 -      $(lisp)/cedet/semantic/wisent.elc \
 -      $(lisp)/cedet/semantic/wisent/comp.elc \
 -      $(lisp)/cedet/semantic/wisent/java-tags.elc \
 -      $(lisp)/cedet/semantic/wisent/javascript.elc \
 -      $(lisp)/cedet/semantic/wisent/javat-wy.elc \
 -      $(lisp)/cedet/semantic/wisent/js-wy.elc \
 -      $(lisp)/cedet/semantic/wisent/python-wy.elc \
 -      $(lisp)/cedet/semantic/wisent/python.elc \
 -      $(lisp)/cedet/semantic/wisent/wisent.elc \
 -      $(lisp)/cedet/srecode.elc \
 -      $(lisp)/cedet/srecode/args.elc \
 -      $(lisp)/cedet/srecode/compile.elc \
 -      $(lisp)/cedet/srecode/cpp.elc \
 -      $(lisp)/cedet/srecode/ctxt.elc \
 -      $(lisp)/cedet/srecode/dictionary.elc \
 -      $(lisp)/cedet/srecode/document.elc \
 -      $(lisp)/cedet/srecode/el.elc \
 -      $(lisp)/cedet/srecode/expandproto.elc \
 -      $(lisp)/cedet/srecode/extract.elc \
 -      $(lisp)/cedet/srecode/fields.elc \
 -      $(lisp)/cedet/srecode/filters.elc \
 -      $(lisp)/cedet/srecode/find.elc \
 -      $(lisp)/cedet/srecode/getset.elc \
 -      $(lisp)/cedet/srecode/insert.elc \
 -      $(lisp)/cedet/srecode/java.elc \
 -      $(lisp)/cedet/srecode/map.elc \
 -      $(lisp)/cedet/srecode/mode.elc \
 -      $(lisp)/cedet/srecode/semantic.elc \
 -      $(lisp)/cedet/srecode/srt-mode.elc \
 -      $(lisp)/cedet/srecode/srt-wy.elc \
 -      $(lisp)/cedet/srecode/srt.elc \
 -      $(lisp)/cedet/srecode/table.elc \
 -      $(lisp)/cedet/srecode/template.elc \
 -      $(lisp)/cedet/srecode/texi.elc \
 -      $(lisp)/chistory.elc \
 -      $(lisp)/cmuscheme.elc \
 -      $(lisp)/comint.elc \
 -      $(lisp)/compare-w.elc \
 -      $(lisp)/complete.elc \
 -      $(lisp)/completion.elc \
 -      $(lisp)/composite.elc \
 -      $(lisp)/cus-dep.elc \
 -      $(lisp)/cus-edit.elc \
 -      $(lisp)/cus-face.elc \
 -      $(lisp)/cus-start.elc \
 -      $(lisp)/cus-theme.elc \
 -      $(lisp)/custom.elc \
 -      $(lisp)/cvs-status.elc \
 -      $(lisp)/dabbrev.elc \
 -      $(lisp)/delim-col.elc \
 -      $(lisp)/delsel.elc \
 -      $(lisp)/descr-text.elc \
 -      $(lisp)/desktop.elc \
 -      $(lisp)/dframe.elc \
 -      $(lisp)/diff-mode.elc \
 -      $(lisp)/diff.elc \
 -      $(lisp)/dired-aux.elc \
 -      $(lisp)/dired-x.elc \
 -      $(lisp)/dired.elc \
 -      $(lisp)/dirtrack.elc \
 -      $(lisp)/disp-table.elc \
 -      $(lisp)/dnd.elc \
 -      $(lisp)/doc-view.elc \
 -      $(lisp)/dos-fns.elc \
 -      $(lisp)/dos-vars.elc \
 -      $(lisp)/dos-w32.elc \
 -      $(lisp)/double.elc \
 -      $(lisp)/ebuff-menu.elc \
 -      $(lisp)/echistory.elc \
 -      $(lisp)/ediff-diff.elc \
 -      $(lisp)/ediff-help.elc \
 -      $(lisp)/ediff-hook.elc \
 -      $(lisp)/ediff-init.elc \
 -      $(lisp)/ediff-merg.elc \
 -      $(lisp)/ediff-mult.elc \
 -      $(lisp)/ediff-ptch.elc \
 -      $(lisp)/ediff-util.elc \
 -      $(lisp)/ediff-vers.elc \
 -      $(lisp)/ediff-wind.elc \
 -      $(lisp)/ediff.elc \
 -      $(lisp)/edmacro.elc \
 -      $(lisp)/ehelp.elc \
 -      $(lisp)/electric.elc \
 -      $(lisp)/elide-head.elc \
 -      $(lisp)/emacs-lisp/advice.elc \
 -      $(lisp)/emacs-lisp/assoc.elc \
 -      $(lisp)/emacs-lisp/authors.elc \
 -      $(lisp)/emacs-lisp/autoload.elc \
 -      $(lisp)/emacs-lisp/avl-tree.elc \
 -      $(lisp)/emacs-lisp/backquote.elc \
 -      $(lisp)/emacs-lisp/benchmark.elc \
 -      $(lisp)/emacs-lisp/bindat.elc \
 -      $(lisp)/emacs-lisp/byte-opt.elc \
 -      $(lisp)/emacs-lisp/byte-run.elc \
 -      $(lisp)/emacs-lisp/bytecomp.elc \
 -      $(lisp)/emacs-lisp/chart.elc \
 -      $(lisp)/emacs-lisp/check-declare.elc \
 -      $(lisp)/emacs-lisp/checkdoc.elc \
 -      $(lisp)/emacs-lisp/cl-extra.elc \
 -      $(lisp)/emacs-lisp/cl-indent.elc \
 -      $(lisp)/emacs-lisp/cl-macs.elc \
 -      $(lisp)/emacs-lisp/cl-seq.elc \
 -      $(lisp)/emacs-lisp/cl.elc \
 -      $(lisp)/emacs-lisp/copyright.elc \
 -      $(lisp)/emacs-lisp/crm.elc \
 -      $(lisp)/emacs-lisp/cust-print.elc \
 -      $(lisp)/emacs-lisp/debug.elc \
 -      $(lisp)/emacs-lisp/derived.elc \
 -      $(lisp)/emacs-lisp/disass.elc \
 -      $(lisp)/emacs-lisp/easy-mmode.elc \
 -      $(lisp)/emacs-lisp/easymenu.elc \
 -      $(lisp)/emacs-lisp/edebug.elc \
 -      $(lisp)/emacs-lisp/eieio-base.elc \
 -      $(lisp)/emacs-lisp/eieio-comp.elc \
 -      $(lisp)/emacs-lisp/eieio-custom.elc \
 -      $(lisp)/emacs-lisp/eieio-datadebug.elc \
 -      $(lisp)/emacs-lisp/eieio-opt.elc \
 -      $(lisp)/emacs-lisp/eieio-speedbar.elc \
 -      $(lisp)/emacs-lisp/eieio.elc \
 -      $(lisp)/emacs-lisp/eldoc.elc \
 -      $(lisp)/emacs-lisp/elint.elc \
 -      $(lisp)/emacs-lisp/elp.elc \
 -      $(lisp)/emacs-lisp/ewoc.elc \
 -      $(lisp)/emacs-lisp/find-func.elc \
 -      $(lisp)/emacs-lisp/find-gc.elc \
 -      $(lisp)/emacs-lisp/float-sup.elc \
 -      $(lisp)/emacs-lisp/generic.elc \
 -      $(lisp)/emacs-lisp/gulp.elc \
 -      $(lisp)/emacs-lisp/helper.elc \
 -      $(lisp)/emacs-lisp/lisp-mnt.elc \
 -      $(lisp)/emacs-lisp/lisp-mode.elc \
 -      $(lisp)/emacs-lisp/lisp.elc \
 -      $(lisp)/emacs-lisp/macroexp.elc \
 -      $(lisp)/emacs-lisp/map-ynp.elc \
 -      $(lisp)/emacs-lisp/pp.elc \
 -      $(lisp)/emacs-lisp/re-builder.elc \
 -      $(lisp)/emacs-lisp/regexp-opt.elc \
 -      $(lisp)/emacs-lisp/regi.elc \
 -      $(lisp)/emacs-lisp/ring.elc \
 -      $(lisp)/emacs-lisp/rx.elc \
 -      $(lisp)/emacs-lisp/shadow.elc \
+       $(lisp)/emacs-lisp/smie.elc \
 -      $(lisp)/emacs-lisp/sregex.elc \
 -      $(lisp)/emacs-lisp/syntax.elc \
 -      $(lisp)/emacs-lisp/tcover-ses.elc \
 -      $(lisp)/emacs-lisp/tcover-unsafep.elc \
 -      $(lisp)/emacs-lisp/testcover.elc \
 -      $(lisp)/emacs-lisp/timer.elc \
 -      $(lisp)/emacs-lisp/tq.elc \
 -      $(lisp)/emacs-lisp/trace.elc \
 -      $(lisp)/emacs-lisp/unsafep.elc \
 -      $(lisp)/emacs-lisp/warnings.elc \
 -      $(lisp)/emacs-lock.elc \
 -      $(lisp)/emerge.elc \
 -      $(lisp)/emulation/crisp.elc \
 -      $(lisp)/emulation/cua-base.elc \
 -      $(lisp)/emulation/cua-gmrk.elc \
 -      $(lisp)/emulation/cua-rect.elc \
 -      $(lisp)/emulation/edt-lk201.elc \
 -      $(lisp)/emulation/edt-mapper.elc \
 -      $(lisp)/emulation/edt-pc.elc \
 -      $(lisp)/emulation/edt-vt100.elc \
 -      $(lisp)/emulation/edt.elc \
 -      $(lisp)/emulation/keypad.elc \
 -      $(lisp)/emulation/pc-mode.elc \
 -      $(lisp)/emulation/pc-select.elc \
 -      $(lisp)/emulation/tpu-edt.elc \
 -      $(lisp)/emulation/tpu-extras.elc \
 -      $(lisp)/emulation/tpu-mapper.elc \
 -      $(lisp)/emulation/vi.elc \
 -      $(lisp)/emulation/vip.elc \
 -      $(lisp)/emulation/viper-cmd.elc \
 -      $(lisp)/emulation/viper-ex.elc \
 -      $(lisp)/emulation/viper-init.elc \
 -      $(lisp)/emulation/viper-keym.elc \
 -      $(lisp)/emulation/viper-macs.elc \
 -      $(lisp)/emulation/viper-mous.elc \
 -      $(lisp)/emulation/viper-util.elc \
 -      $(lisp)/emulation/viper.elc \
 -      $(lisp)/emulation/ws-mode.elc \
 -      $(lisp)/env.elc \
 -      $(lisp)/epa-dired.elc \
 -      $(lisp)/epa-file.elc \
 -      $(lisp)/epa-hook.elc \
 -      $(lisp)/epa-mail.elc \
 -      $(lisp)/epa.elc \
 -      $(lisp)/epg-config.elc \
 -      $(lisp)/epg.elc \
 -      $(lisp)/erc/erc-autoaway.elc \
 -      $(lisp)/erc/erc-backend.elc \
 -      $(lisp)/erc/erc-button.elc \
 -      $(lisp)/erc/erc-capab.elc \
 -      $(lisp)/erc/erc-compat.elc \
 -      $(lisp)/erc/erc-dcc.elc \
 -      $(lisp)/erc/erc-ezbounce.elc \
 -      $(lisp)/erc/erc-fill.elc \
 -      $(lisp)/erc/erc-goodies.elc \
 -      $(lisp)/erc/erc-hecomplete.elc \
 -      $(lisp)/erc/erc-ibuffer.elc \
 -      $(lisp)/erc/erc-identd.elc \
 -      $(lisp)/erc/erc-imenu.elc \
 -      $(lisp)/erc/erc-join.elc \
 -      $(lisp)/erc/erc-lang.elc \
 -      $(lisp)/erc/erc-list.elc \
 -      $(lisp)/erc/erc-log.elc \
 -      $(lisp)/erc/erc-match.elc \
 -      $(lisp)/erc/erc-menu.elc \
 -      $(lisp)/erc/erc-netsplit.elc \
 -      $(lisp)/erc/erc-networks.elc \
 -      $(lisp)/erc/erc-notify.elc \
 -      $(lisp)/erc/erc-page.elc \
 -      $(lisp)/erc/erc-pcomplete.elc \
 -      $(lisp)/erc/erc-replace.elc \
 -      $(lisp)/erc/erc-ring.elc \
 -      $(lisp)/erc/erc-services.elc \
 -      $(lisp)/erc/erc-sound.elc \
 -      $(lisp)/erc/erc-speedbar.elc \
 -      $(lisp)/erc/erc-spelling.elc \
 -      $(lisp)/erc/erc-stamp.elc \
 -      $(lisp)/erc/erc-track.elc \
 -      $(lisp)/erc/erc-truncate.elc \
 -      $(lisp)/erc/erc-xdcc.elc \
 -      $(lisp)/erc/erc.elc \
 -      $(lisp)/eshell/em-alias.elc \
 -      $(lisp)/eshell/em-banner.elc \
 -      $(lisp)/eshell/em-basic.elc \
 -      $(lisp)/eshell/em-cmpl.elc \
 -      $(lisp)/eshell/em-dirs.elc \
 -      $(lisp)/eshell/em-glob.elc \
 -      $(lisp)/eshell/em-hist.elc \
 -      $(lisp)/eshell/em-ls.elc \
 -      $(lisp)/eshell/em-pred.elc \
 -      $(lisp)/eshell/em-prompt.elc \
 -      $(lisp)/eshell/em-rebind.elc \
 -      $(lisp)/eshell/em-script.elc \
 -      $(lisp)/eshell/em-smart.elc \
 -      $(lisp)/eshell/em-term.elc \
 -      $(lisp)/eshell/em-unix.elc \
 -      $(lisp)/eshell/em-xtra.elc \
 -      $(lisp)/eshell/esh-arg.elc \
 -      $(lisp)/eshell/esh-cmd.elc \
 -      $(lisp)/eshell/esh-ext.elc \
 -      $(lisp)/eshell/esh-io.elc \
 -      $(lisp)/eshell/esh-mode.elc \
 -      $(lisp)/eshell/esh-module.elc \
 -      $(lisp)/eshell/esh-opt.elc \
 -      $(lisp)/eshell/esh-proc.elc \
 -      $(lisp)/eshell/esh-test.elc \
 -      $(lisp)/eshell/esh-util.elc \
 -      $(lisp)/eshell/esh-var.elc \
 -      $(lisp)/eshell/eshell.elc \
 -      $(lisp)/expand.elc \
 -      $(lisp)/ezimage.elc \
 -      $(lisp)/face-remap.elc \
 -      $(lisp)/facemenu.elc \
 -      $(lisp)/faces.elc \
 -      $(lisp)/ffap.elc \
 -      $(lisp)/filecache.elc \
 -      $(lisp)/files-x.elc \
 -      $(lisp)/files.elc \
 -      $(lisp)/filesets.elc \
 -      $(lisp)/find-cmd.elc \
 -      $(lisp)/find-dired.elc \
 -      $(lisp)/find-file.elc \
 -      $(lisp)/find-lisp.elc \
 -      $(lisp)/finder.elc \
 -      $(lisp)/flow-ctrl.elc \
 -      $(lisp)/foldout.elc \
 -      $(lisp)/follow.elc \
 -      $(lisp)/font-core.elc \
 -      $(lisp)/font-lock.elc \
 -      $(lisp)/font-setting.elc \
 -      $(lisp)/format-spec.elc \
 -      $(lisp)/format.elc \
 -      $(lisp)/forms.elc \
 -      $(lisp)/frame.elc \
 -      $(lisp)/fringe.elc \
 -      $(lisp)/generic-x.elc \
 -      $(lisp)/gnus/auth-source.elc \
 -      $(lisp)/gnus/canlock.elc \
 -      $(lisp)/gnus/compface.elc \
 -      $(lisp)/gnus/deuglify.elc \
 -      $(lisp)/gnus/earcon.elc \
 -      $(lisp)/gnus/ecomplete.elc \
 -      $(lisp)/gnus/flow-fill.elc \
 -      $(lisp)/gnus/gmm-utils.elc \
 -      $(lisp)/gnus/gnus-agent.elc \
 -      $(lisp)/gnus/gnus-art.elc \
 -      $(lisp)/gnus/gnus-async.elc \
 -      $(lisp)/gnus/gnus-audio.elc \
 -      $(lisp)/gnus/gnus-bcklg.elc \
 -      $(lisp)/gnus/gnus-bookmark.elc \
 -      $(lisp)/gnus/gnus-cache.elc \
 -      $(lisp)/gnus/gnus-cite.elc \
 -      $(lisp)/gnus/gnus-cus.elc \
 -      $(lisp)/gnus/gnus-delay.elc \
 -      $(lisp)/gnus/gnus-demon.elc \
 -      $(lisp)/gnus/gnus-diary.elc \
 -      $(lisp)/gnus/gnus-dired.elc \
 -      $(lisp)/gnus/gnus-draft.elc \
 -      $(lisp)/gnus/gnus-dup.elc \
 -      $(lisp)/gnus/gnus-eform.elc \
 -      $(lisp)/gnus/gnus-ems.elc \
 -      $(lisp)/gnus/gnus-fun.elc \
 -      $(lisp)/gnus/gnus-group.elc \
 -      $(lisp)/gnus/gnus-int.elc \
 -      $(lisp)/gnus/gnus-kill.elc \
 -      $(lisp)/gnus/gnus-logic.elc \
 -      $(lisp)/gnus/gnus-mh.elc \
 -      $(lisp)/gnus/gnus-ml.elc \
 -      $(lisp)/gnus/gnus-mlspl.elc \
 -      $(lisp)/gnus/gnus-move.elc \
 -      $(lisp)/gnus/gnus-msg.elc \
 -      $(lisp)/gnus/gnus-nocem.elc \
 -      $(lisp)/gnus/gnus-picon.elc \
 -      $(lisp)/gnus/gnus-range.elc \
 -      $(lisp)/gnus/gnus-registry.elc \
 -      $(lisp)/gnus/gnus-salt.elc \
 -      $(lisp)/gnus/gnus-score.elc \
 -      $(lisp)/gnus/gnus-setup.elc \
 -      $(lisp)/gnus/gnus-sieve.elc \
 -      $(lisp)/gnus/gnus-soup.elc \
 -      $(lisp)/gnus/gnus-spec.elc \
 -      $(lisp)/gnus/gnus-srvr.elc \
 -      $(lisp)/gnus/gnus-start.elc \
 -      $(lisp)/gnus/gnus-sum.elc \
 -      $(lisp)/gnus/gnus-topic.elc \
 -      $(lisp)/gnus/gnus-undo.elc \
 -      $(lisp)/gnus/gnus-util.elc \
 -      $(lisp)/gnus/gnus-uu.elc \
 -      $(lisp)/gnus/gnus-vm.elc \
 -      $(lisp)/gnus/gnus-win.elc \
 -      $(lisp)/gnus/gnus.elc \
 -      $(lisp)/gnus/html2text.elc \
 -      $(lisp)/gnus/ietf-drums.elc \
 -      $(lisp)/gnus/legacy-gnus-agent.elc \
 -      $(lisp)/gnus/mail-parse.elc \
 -      $(lisp)/gnus/mail-prsvr.elc \
 -      $(lisp)/gnus/mail-source.elc \
 -      $(lisp)/gnus/mailcap.elc \
 -      $(lisp)/gnus/message.elc \
 -      $(lisp)/gnus/messcompat.elc \
 -      $(lisp)/gnus/mm-bodies.elc \
 -      $(lisp)/gnus/mm-decode.elc \
 -      $(lisp)/gnus/mm-encode.elc \
 -      $(lisp)/gnus/mm-extern.elc \
 -      $(lisp)/gnus/mm-partial.elc \
 -      $(lisp)/gnus/mm-url.elc \
 -      $(lisp)/gnus/mm-util.elc \
 -      $(lisp)/gnus/mm-uu.elc \
 -      $(lisp)/gnus/mm-view.elc \
 -      $(lisp)/gnus/mml-sec.elc \
 -      $(lisp)/gnus/mml-smime.elc \
 -      $(lisp)/gnus/mml.elc \
 -      $(lisp)/gnus/mml1991.elc \
 -      $(lisp)/gnus/mml2015.elc \
 -      $(lisp)/gnus/nnagent.elc \
 -      $(lisp)/gnus/nnbabyl.elc \
 -      $(lisp)/gnus/nndb.elc \
 -      $(lisp)/gnus/nndiary.elc \
 -      $(lisp)/gnus/nndir.elc \
 -      $(lisp)/gnus/nndoc.elc \
 -      $(lisp)/gnus/nndraft.elc \
 -      $(lisp)/gnus/nneething.elc \
 -      $(lisp)/gnus/nnfolder.elc \
 -      $(lisp)/gnus/nngateway.elc \
 -      $(lisp)/gnus/nnheader.elc \
 -      $(lisp)/gnus/nnimap.elc \
 -      $(lisp)/gnus/nnir.elc \
 -      $(lisp)/gnus/nnkiboze.elc \
 -      $(lisp)/gnus/nnlistserv.elc \
 -      $(lisp)/gnus/nnmail.elc \
 -      $(lisp)/gnus/nnmaildir.elc \
 -      $(lisp)/gnus/nnmairix.elc \
 -      $(lisp)/gnus/nnmbox.elc \
 -      $(lisp)/gnus/nnmh.elc \
 -      $(lisp)/gnus/nnml.elc \
 -      $(lisp)/gnus/nnnil.elc \
 -      $(lisp)/gnus/nnoo.elc \
 -      $(lisp)/gnus/nnrss.elc \
 -      $(lisp)/gnus/nnslashdot.elc \
 -      $(lisp)/gnus/nnsoup.elc \
 -      $(lisp)/gnus/nnspool.elc \
 -      $(lisp)/gnus/nntp.elc \
 -      $(lisp)/gnus/nnultimate.elc \
 -      $(lisp)/gnus/nnvirtual.elc \
 -      $(lisp)/gnus/nnwarchive.elc \
 -      $(lisp)/gnus/nnweb.elc \
 -      $(lisp)/gnus/nnwfm.elc \
 -      $(lisp)/gnus/pop3.elc \
 -      $(lisp)/gnus/qp.elc \
 -      $(lisp)/gnus/rfc1843.elc \
 -      $(lisp)/gnus/rfc2045.elc \
 -      $(lisp)/gnus/rfc2047.elc \
 -      $(lisp)/gnus/rfc2104.elc \
 -      $(lisp)/gnus/rfc2231.elc \
 -      $(lisp)/gnus/score-mode.elc \
 -      $(lisp)/gnus/sieve-manage.elc \
 -      $(lisp)/gnus/sieve-mode.elc \
 -      $(lisp)/gnus/sieve.elc \
 -      $(lisp)/gnus/smiley.elc \
 -      $(lisp)/gnus/smime.elc \
 -      $(lisp)/gnus/spam-report.elc \
 -      $(lisp)/gnus/spam-stat.elc \
 -      $(lisp)/gnus/spam-wash.elc \
 -      $(lisp)/gnus/spam.elc \
 -      $(lisp)/gnus/starttls.elc \
 -      $(lisp)/gnus/utf7.elc \
 -      $(lisp)/gnus/webmail.elc \
 -      $(lisp)/gnus/yenc.elc \
 -      $(lisp)/gs.elc \
 -      $(lisp)/help-at-pt.elc \
 -      $(lisp)/help-fns.elc \
 -      $(lisp)/help-macro.elc \
 -      $(lisp)/help-mode.elc \
 -      $(lisp)/help.elc \
 -      $(lisp)/hex-util.elc \
 -      $(lisp)/hexl.elc \
 -      $(lisp)/hfy-cmap.elc \
 -      $(lisp)/hi-lock.elc \
 -      $(lisp)/hilit-chg.elc \
 -      $(lisp)/hippie-exp.elc \
 -      $(lisp)/hl-line.elc \
 -      $(lisp)/htmlfontify.elc \
 -      $(lisp)/ibuf-ext.elc \
 -      $(lisp)/ibuf-macs.elc \
 -      $(lisp)/ibuffer.elc \
 -      $(lisp)/icomplete.elc \
 -      $(lisp)/ido.elc \
 -      $(lisp)/ielm.elc \
 -      $(lisp)/iimage.elc \
 -      $(lisp)/image-dired.elc \
 -      $(lisp)/image-file.elc \
 -      $(lisp)/image-mode.elc \
 -      $(lisp)/image.elc \
 -      $(lisp)/imenu.elc \
 -      $(lisp)/indent.elc \
 -      $(lisp)/info-look.elc \
 -      $(lisp)/info-xref.elc \
 -      $(lisp)/info.elc \
 -      $(lisp)/informat.elc \
 -      $(lisp)/international/ccl.elc \
 -      $(lisp)/international/characters.elc \
 -      $(lisp)/international/fontset.elc \
 -      $(lisp)/international/isearch-x.elc \
 -      $(lisp)/international/iso-ascii.elc \
 -      $(lisp)/international/iso-cvt.elc \
 -      $(lisp)/international/iso-transl.elc \
 -      $(lisp)/international/ja-dic-cnv.elc \
 -      $(lisp)/international/ja-dic-utl.elc \
 -      $(lisp)/international/kinsoku.elc \
 -      $(lisp)/international/kkc.elc \
 -      $(lisp)/international/latexenc.elc \
 -      $(lisp)/international/latin1-disp.elc \
 -      $(lisp)/international/mule-cmds.elc \
 -      $(lisp)/international/mule-conf.elc \
 -      $(lisp)/international/mule-diag.elc \
 -      $(lisp)/international/mule-util.elc \
 -      $(lisp)/international/mule.elc \
 -      $(lisp)/international/ogonek.elc \
 -      $(lisp)/international/quail.elc \
 -      $(lisp)/international/robin.elc \
 -      $(lisp)/international/titdic-cnv.elc \
 -      $(lisp)/international/ucs-normalize.elc \
 -      $(lisp)/international/utf-7.elc \
 -      $(lisp)/isearch.elc \
 -      $(lisp)/isearchb.elc \
 -      $(lisp)/iswitchb.elc \
 -      $(lisp)/jit-lock.elc \
 -      $(lisp)/jka-cmpr-hook.elc \
 -      $(lisp)/jka-compr.elc \
 -      $(lisp)/json.elc \
 -      $(lisp)/kermit.elc \
 -      $(lisp)/kmacro.elc \
 -      $(lisp)/language/china-util.elc \
 -      $(lisp)/language/chinese.elc \
 -      $(lisp)/language/cyril-util.elc \
 -      $(lisp)/language/cyrillic.elc \
 -      $(lisp)/language/ethio-util.elc \
 -      $(lisp)/language/ethiopic.elc \
 -      $(lisp)/language/european.elc \
 -      $(lisp)/language/hanja-util.elc \
 -      $(lisp)/language/ind-util.elc \
 -      $(lisp)/language/indian.elc \
 -      $(lisp)/language/japan-util.elc \
 -      $(lisp)/language/korea-util.elc \
 -      $(lisp)/language/lao-util.elc \
 -      $(lisp)/language/thai-util.elc \
 -      $(lisp)/language/thai-word.elc \
 -      $(lisp)/language/tibet-util.elc \
 -      $(lisp)/language/tibetan.elc \
 -      $(lisp)/language/tv-util.elc \
 -      $(lisp)/language/viet-util.elc \
 -      $(lisp)/language/vietnamese.elc \
 -      $(lisp)/ledit.elc \
 -      $(lisp)/linum.elc \
 -      $(lisp)/loadhist.elc \
 -      $(lisp)/locate.elc \
 -      $(lisp)/log-edit.elc \
 -      $(lisp)/log-view.elc \
 -      $(lisp)/longlines.elc \
 -      $(lisp)/lpr.elc \
 -      $(lisp)/ls-lisp.elc \
 -      $(lisp)/macros.elc \
 -      $(lisp)/mail/binhex.elc \
 -      $(lisp)/mail/emacsbug.elc \
 -      $(lisp)/mail/feedmail.elc \
 -      $(lisp)/mail/footnote.elc \
 -      $(lisp)/mail/hashcash.elc \
 -      $(lisp)/mail/mail-extr.elc \
 -      $(lisp)/mail/mail-hist.elc \
 -      $(lisp)/mail/mail-utils.elc \
 -      $(lisp)/mail/mailabbrev.elc \
 -      $(lisp)/mail/mailalias.elc \
 -      $(lisp)/mail/mailclient.elc \
 -      $(lisp)/mail/mailheader.elc \
 -      $(lisp)/mail/mailpost.elc \
 -      $(lisp)/mail/metamail.elc \
 -      $(lisp)/mail/mspools.elc \
 -      $(lisp)/mail/reporter.elc \
 -      $(lisp)/mail/rfc2368.elc \
 -      $(lisp)/mail/rfc822.elc \
 -      $(lisp)/mail/rmail-spam-filter.elc \
 -      $(lisp)/mail/rmail.elc \
 -      $(lisp)/mail/rmailedit.elc \
 -      $(lisp)/mail/rmailkwd.elc \
 -      $(lisp)/mail/rmailmm.elc \
 -      $(lisp)/mail/rmailmsc.elc \
 -      $(lisp)/mail/rmailout.elc \
 -      $(lisp)/mail/rmailsort.elc \
 -      $(lisp)/mail/rmailsum.elc \
 -      $(lisp)/mail/sendmail.elc \
 -      $(lisp)/mail/smtpmail.elc \
 -      $(lisp)/mail/supercite.elc \
 -      $(lisp)/mail/uce.elc \
 -      $(lisp)/mail/undigest.elc \
 -      $(lisp)/mail/unrmail.elc \
 -      $(lisp)/mail/uudecode.elc \
 -      $(lisp)/makesum.elc \
 -      $(lisp)/man.elc \
 -      $(lisp)/master.elc \
 -      $(lisp)/mb-depth.elc \
 -      $(lisp)/md4.elc \
 -      $(lisp)/menu-bar.elc \
 -      $(lisp)/mh-e/mh-alias.elc \
 -      $(lisp)/mh-e/mh-buffers.elc \
 -      $(lisp)/mh-e/mh-comp.elc \
 -      $(lisp)/mh-e/mh-e.elc \
 -      $(lisp)/mh-e/mh-folder.elc \
 -      $(lisp)/mh-e/mh-funcs.elc \
 -      $(lisp)/mh-e/mh-identity.elc \
 -      $(lisp)/mh-e/mh-inc.elc \
 -      $(lisp)/mh-e/mh-junk.elc \
 -      $(lisp)/mh-e/mh-letter.elc \
 -      $(lisp)/mh-e/mh-limit.elc \
 -      $(lisp)/mh-e/mh-mime.elc \
 -      $(lisp)/mh-e/mh-print.elc \
 -      $(lisp)/mh-e/mh-scan.elc \
 -      $(lisp)/mh-e/mh-search.elc \
 -      $(lisp)/mh-e/mh-seq.elc \
 -      $(lisp)/mh-e/mh-show.elc \
 -      $(lisp)/mh-e/mh-speed.elc \
 -      $(lisp)/mh-e/mh-thread.elc \
 -      $(lisp)/mh-e/mh-tool-bar.elc \
 -      $(lisp)/mh-e/mh-utils.elc \
 -      $(lisp)/mh-e/mh-xface.elc \
 -      $(lisp)/midnight.elc \
 -      $(lisp)/minibuf-eldef.elc \
 -      $(lisp)/minibuffer.elc \
 -      $(lisp)/misc.elc \
 -      $(lisp)/misearch.elc \
 -      $(lisp)/mouse-copy.elc \
 -      $(lisp)/mouse-drag.elc \
 -      $(lisp)/mouse-sel.elc \
 -      $(lisp)/mouse.elc \
 -      $(lisp)/mpc.elc \
 -      $(lisp)/msb.elc \
 -      $(lisp)/mwheel.elc \
 -      $(lisp)/net/ange-ftp.elc \
 -      $(lisp)/net/browse-url.elc \
 -      $(lisp)/net/dbus.elc \
 -      $(lisp)/net/dig.elc \
 -      $(lisp)/net/dns.elc \
 -      $(lisp)/net/eudc-bob.elc \
 -      $(lisp)/net/eudc-export.elc \
 -      $(lisp)/net/eudc-hotlist.elc \
 -      $(lisp)/net/eudc-vars.elc \
 -      $(lisp)/net/eudc.elc \
 -      $(lisp)/net/eudcb-bbdb.elc \
 -      $(lisp)/net/eudcb-ldap.elc \
 -      $(lisp)/net/eudcb-mab.elc \
 -      $(lisp)/net/eudcb-ph.elc \
 -      $(lisp)/net/goto-addr.elc \
 -      $(lisp)/net/hmac-def.elc \
 -      $(lisp)/net/hmac-md5.elc \
 -      $(lisp)/net/imap-hash.elc \
 -      $(lisp)/net/imap.elc \
 -      $(lisp)/net/ldap.elc \
 -      $(lisp)/net/mairix.elc \
 -      $(lisp)/net/net-utils.elc \
 -      $(lisp)/net/netrc.elc \
 -      $(lisp)/net/newst-backend.elc \
 -      $(lisp)/net/newst-plainview.elc \
 -      $(lisp)/net/newst-reader.elc \
 -      $(lisp)/net/newst-ticker.elc \
 -      $(lisp)/net/newst-treeview.elc \
 -      $(lisp)/net/newsticker.elc \
 -      $(lisp)/net/ntlm.elc \
 -      $(lisp)/net/quickurl.elc \
 -      $(lisp)/net/rcirc.elc \
 -      $(lisp)/net/rcompile.elc \
 -      $(lisp)/net/rlogin.elc \
 -      $(lisp)/net/sasl-cram.elc \
 -      $(lisp)/net/sasl-digest.elc \
 -      $(lisp)/net/sasl-ntlm.elc \
 -      $(lisp)/net/sasl.elc \
 -      $(lisp)/net/snmp-mode.elc \
 -      $(lisp)/net/socks.elc \
 -      $(lisp)/net/telnet.elc \
 -      $(lisp)/net/tls.elc \
 -      $(lisp)/net/tramp-cache.elc \
 -      $(lisp)/net/tramp-cmds.elc \
 -      $(lisp)/net/tramp-compat.elc \
 -      $(lisp)/net/tramp-fish.elc \
 -      $(lisp)/net/tramp-ftp.elc \
 -      $(lisp)/net/tramp-gvfs.elc \
 -      $(lisp)/net/tramp-gw.elc \
 -      $(lisp)/net/tramp-imap.elc \
 -      $(lisp)/net/tramp-smb.elc \
 -      $(lisp)/net/tramp-uu.elc \
 -      $(lisp)/net/tramp.elc \
 -      $(lisp)/net/trampver.elc \
 -      $(lisp)/net/webjump.elc \
 -      $(lisp)/net/xesam.elc \
 -      $(lisp)/net/zeroconf.elc \
 -      $(lisp)/newcomment.elc \
 -      $(lisp)/novice.elc \
 -      $(lisp)/nxml/nxml-enc.elc \
 -      $(lisp)/nxml/nxml-glyph.elc \
 -      $(lisp)/nxml/nxml-maint.elc \
 -      $(lisp)/nxml/nxml-mode.elc \
 -      $(lisp)/nxml/nxml-ns.elc \
 -      $(lisp)/nxml/nxml-outln.elc \
 -      $(lisp)/nxml/nxml-parse.elc \
 -      $(lisp)/nxml/nxml-rap.elc \
 -      $(lisp)/nxml/nxml-uchnm.elc \
 -      $(lisp)/nxml/nxml-util.elc \
 -      $(lisp)/nxml/rng-cmpct.elc \
 -      $(lisp)/nxml/rng-dt.elc \
 -      $(lisp)/nxml/rng-loc.elc \
 -      $(lisp)/nxml/rng-maint.elc \
 -      $(lisp)/nxml/rng-match.elc \
 -      $(lisp)/nxml/rng-nxml.elc \
 -      $(lisp)/nxml/rng-parse.elc \
 -      $(lisp)/nxml/rng-pttrn.elc \
 -      $(lisp)/nxml/rng-uri.elc \
 -      $(lisp)/nxml/rng-util.elc \
 -      $(lisp)/nxml/rng-valid.elc \
 -      $(lisp)/nxml/rng-xsd.elc \
 -      $(lisp)/nxml/xmltok.elc \
 -      $(lisp)/nxml/xsd-regexp.elc \
 -      $(lisp)/obsolete/awk-mode.elc \
 -      $(lisp)/obsolete/cl-compat.elc \
 -      $(lisp)/obsolete/fast-lock.elc \
 -      $(lisp)/obsolete/iso-acc.elc \
 -      $(lisp)/obsolete/iso-insert.elc \
 -      $(lisp)/obsolete/iso-swed.elc \
 -      $(lisp)/obsolete/lazy-lock.elc \
 -      $(lisp)/obsolete/levents.elc \
 -      $(lisp)/obsolete/lmenu.elc \
 -      $(lisp)/obsolete/lucid.elc \
 -      $(lisp)/obsolete/old-whitespace.elc \
 -      $(lisp)/obsolete/options.elc \
 -      $(lisp)/obsolete/resume.elc \
 -      $(lisp)/obsolete/rnews.elc \
 -      $(lisp)/obsolete/rnewspost.elc \
 -      $(lisp)/obsolete/sc.elc \
 -      $(lisp)/obsolete/scribe.elc \
 -      $(lisp)/obsolete/swedish.elc \
 -      $(lisp)/obsolete/sym-comp.elc \
 -      $(lisp)/obsolete/vc-mcvs.elc \
 -      $(lisp)/obsolete/x-menu.elc \
 -      $(lisp)/org/org-agenda.elc \
 -      $(lisp)/org/org-archive.elc \
 -      $(lisp)/org/org-ascii.elc \
 -      $(lisp)/org/org-attach.elc \
 -      $(lisp)/org/org-bbdb.elc \
 -      $(lisp)/org/org-bibtex.elc \
 -      $(lisp)/org/org-clock.elc \
 -      $(lisp)/org/org-colview.elc \
 -      $(lisp)/org/org-compat.elc \
 -      $(lisp)/org/org-crypt.elc \
 -      $(lisp)/org/org-datetree.elc \
 -      $(lisp)/org/org-docbook.elc \
 -      $(lisp)/org/org-exp-blocks.elc \
 -      $(lisp)/org/org-exp.elc \
 -      $(lisp)/org/org-faces.elc \
 -      $(lisp)/org/org-feed.elc \
 -      $(lisp)/org/org-footnote.elc \
 -      $(lisp)/org/org-freemind.elc \
 -      $(lisp)/org/org-gnus.elc \
 -      $(lisp)/org/org-habit.elc \
 -      $(lisp)/org/org-html.elc \
 -      $(lisp)/org/org-icalendar.elc \
 -      $(lisp)/org/org-id.elc \
 -      $(lisp)/org/org-indent.elc \
 -      $(lisp)/org/org-info.elc \
 -      $(lisp)/org/org-inlinetask.elc \
 -      $(lisp)/org/org-install.elc \
 -      $(lisp)/org/org-irc.elc \
 -      $(lisp)/org/org-jsinfo.elc \
 -      $(lisp)/org/org-latex.elc \
 -      $(lisp)/org/org-list.elc \
 -      $(lisp)/org/org-mac-message.elc \
 -      $(lisp)/org/org-macs.elc \
 -      $(lisp)/org/org-mew.elc \
 -      $(lisp)/org/org-mhe.elc \
 -      $(lisp)/org/org-mobile.elc \
 -      $(lisp)/org/org-mouse.elc \
 -      $(lisp)/org/org-plot.elc \
 -      $(lisp)/org/org-protocol.elc \
 -      $(lisp)/org/org-publish.elc \
 -      $(lisp)/org/org-remember.elc \
 -      $(lisp)/org/org-rmail.elc \
 -      $(lisp)/org/org-src.elc \
 -      $(lisp)/org/org-table.elc \
 -      $(lisp)/org/org-timer.elc \
 -      $(lisp)/org/org-vm.elc \
 -      $(lisp)/org/org-w3m.elc \
 -      $(lisp)/org/org-wl.elc \
 -      $(lisp)/org/org-xoxo.elc \
 -      $(lisp)/org/org.elc \
 -      $(lisp)/outline.elc \
 -      $(lisp)/paren.elc \
 -      $(lisp)/password-cache.elc \
 -      $(lisp)/pcmpl-cvs.elc \
 -      $(lisp)/pcmpl-gnu.elc \
 -      $(lisp)/pcmpl-linux.elc \
 -      $(lisp)/pcmpl-rpm.elc \
 -      $(lisp)/pcmpl-unix.elc \
 -      $(lisp)/pcomplete.elc \
 -      $(lisp)/pcvs-defs.elc \
 -      $(lisp)/pcvs-info.elc \
 -      $(lisp)/pcvs-parse.elc \
 -      $(lisp)/pcvs-util.elc \
 -      $(lisp)/pcvs.elc \
 -      $(lisp)/pgg-def.elc \
 -      $(lisp)/pgg-gpg.elc \
 -      $(lisp)/pgg-parse.elc \
 -      $(lisp)/pgg-pgp.elc \
 -      $(lisp)/pgg-pgp5.elc \
 -      $(lisp)/pgg.elc \
 -      $(lisp)/play/5x5.elc \
 -      $(lisp)/play/animate.elc \
 -      $(lisp)/play/blackbox.elc \
 -      $(lisp)/play/bubbles.elc \
 -      $(lisp)/play/cookie1.elc \
 -      $(lisp)/play/decipher.elc \
 -      $(lisp)/play/dissociate.elc \
 -      $(lisp)/play/doctor.elc \
 -      $(lisp)/play/dunnet.elc \
 -      $(lisp)/play/fortune.elc \
 -      $(lisp)/play/gamegrid.elc \
 -      $(lisp)/play/gametree.elc \
 -      $(lisp)/play/gomoku.elc \
 -      $(lisp)/play/handwrite.elc \
 -      $(lisp)/play/hanoi.elc \
 -      $(lisp)/play/landmark.elc \
 -      $(lisp)/play/life.elc \
 -      $(lisp)/play/meese.elc \
 -      $(lisp)/play/morse.elc \
 -      $(lisp)/play/mpuz.elc \
 -      $(lisp)/play/pong.elc \
 -      $(lisp)/play/snake.elc \
 -      $(lisp)/play/solitaire.elc \
 -      $(lisp)/play/spook.elc \
 -      $(lisp)/play/studly.elc \
 -      $(lisp)/play/tetris.elc \
 -      $(lisp)/play/yow.elc \
 -      $(lisp)/play/zone.elc \
 -      $(lisp)/printing.elc \
 -      $(lisp)/proced.elc \
 -      $(lisp)/progmodes/ada-mode.elc \
 -      $(lisp)/progmodes/ada-prj.elc \
 -      $(lisp)/progmodes/ada-stmt.elc \
 -      $(lisp)/progmodes/ada-xref.elc \
 -      $(lisp)/progmodes/antlr-mode.elc \
 -      $(lisp)/progmodes/asm-mode.elc \
 -      $(lisp)/progmodes/autoconf.elc \
 -      $(lisp)/progmodes/bug-reference.elc \
 -      $(lisp)/progmodes/cap-words.elc \
 -      $(lisp)/progmodes/cc-align.elc \
 -      $(lisp)/progmodes/cc-awk.elc \
 -      $(lisp)/progmodes/cc-bytecomp.elc \
 -      $(lisp)/progmodes/cc-cmds.elc \
 -      $(lisp)/progmodes/cc-compat.elc \
 -      $(lisp)/progmodes/cc-defs.elc \
 -      $(lisp)/progmodes/cc-engine.elc \
 -      $(lisp)/progmodes/cc-fonts.elc \
 -      $(lisp)/progmodes/cc-langs.elc \
 -      $(lisp)/progmodes/cc-menus.elc \
 -      $(lisp)/progmodes/cc-mode.elc \
 -      $(lisp)/progmodes/cc-styles.elc \
 -      $(lisp)/progmodes/cc-vars.elc \
 -      $(lisp)/progmodes/cfengine.elc \
 -      $(lisp)/progmodes/cmacexp.elc \
 -      $(lisp)/progmodes/compile.elc \
 -      $(lisp)/progmodes/cperl-mode.elc \
 -      $(lisp)/progmodes/cpp.elc \
 -      $(lisp)/progmodes/cwarn.elc \
 -      $(lisp)/progmodes/dcl-mode.elc \
 -      $(lisp)/progmodes/delphi.elc \
 -      $(lisp)/progmodes/ebnf-abn.elc \
 -      $(lisp)/progmodes/ebnf-bnf.elc \
 -      $(lisp)/progmodes/ebnf-dtd.elc \
 -      $(lisp)/progmodes/ebnf-ebx.elc \
 -      $(lisp)/progmodes/ebnf-iso.elc \
 -      $(lisp)/progmodes/ebnf-otz.elc \
 -      $(lisp)/progmodes/ebnf-yac.elc \
 -      $(lisp)/progmodes/ebnf2ps.elc \
 -      $(lisp)/progmodes/ebrowse.elc \
 -      $(lisp)/progmodes/etags.elc \
 -      $(lisp)/progmodes/executable.elc \
 -      $(lisp)/progmodes/f90.elc \
 -      $(lisp)/progmodes/flymake.elc \
 -      $(lisp)/progmodes/fortran.elc \
 -      $(lisp)/progmodes/gdb-ui.elc \
 -      $(lisp)/progmodes/glasses.elc \
 -      $(lisp)/progmodes/grep.elc \
 -      $(lisp)/progmodes/gud.elc \
 -      $(lisp)/progmodes/hideif.elc \
 -      $(lisp)/progmodes/hideshow.elc \
 -      $(lisp)/progmodes/icon.elc \
 -      $(lisp)/progmodes/idlw-complete-structtag.elc \
 -      $(lisp)/progmodes/idlw-help.elc \
 -      $(lisp)/progmodes/idlw-shell.elc \
 -      $(lisp)/progmodes/idlw-toolbar.elc \
 -      $(lisp)/progmodes/idlwave.elc \
 -      $(lisp)/progmodes/inf-lisp.elc \
 -      $(lisp)/progmodes/js.elc \
 -      $(lisp)/progmodes/ld-script.elc \
 -      $(lisp)/progmodes/m4-mode.elc \
 -      $(lisp)/progmodes/make-mode.elc \
 -      $(lisp)/progmodes/mantemp.elc \
 -      $(lisp)/progmodes/meta-mode.elc \
 -      $(lisp)/progmodes/mixal-mode.elc \
 -      $(lisp)/progmodes/modula2.elc \
 -      $(lisp)/progmodes/octave-inf.elc \
 -      $(lisp)/progmodes/octave-mod.elc \
 -      $(lisp)/progmodes/pascal.elc \
 -      $(lisp)/progmodes/perl-mode.elc \
 -      $(lisp)/progmodes/prolog.elc \
 -      $(lisp)/progmodes/ps-mode.elc \
 -      $(lisp)/progmodes/python.elc \
 -      $(lisp)/progmodes/ruby-mode.elc \
 -      $(lisp)/progmodes/scheme.elc \
 -      $(lisp)/progmodes/sh-script.elc \
 -      $(lisp)/progmodes/simula.elc \
 -      $(lisp)/progmodes/sql.elc \
 -      $(lisp)/progmodes/subword.elc \
 -      $(lisp)/progmodes/tcl.elc \
 -      $(lisp)/progmodes/vera-mode.elc \
 -      $(lisp)/progmodes/verilog-mode.elc \
 -      $(lisp)/progmodes/vhdl-mode.elc \
 -      $(lisp)/progmodes/which-func.elc \
 -      $(lisp)/progmodes/xscheme.elc \
 -      $(lisp)/ps-bdf.elc \
 -      $(lisp)/ps-def.elc \
 -      $(lisp)/ps-mule.elc \
 -      $(lisp)/ps-print.elc \
 -      $(lisp)/ps-samp.elc \
 -      $(lisp)/recentf.elc \
 -      $(lisp)/rect.elc \
 -      $(lisp)/register.elc \
 -      $(lisp)/repeat.elc \
 -      $(lisp)/replace.elc \
 -      $(lisp)/reposition.elc \
 -      $(lisp)/reveal.elc \
 -      $(lisp)/rfn-eshadow.elc \
 -      $(lisp)/rot13.elc \
 -      $(lisp)/ruler-mode.elc \
 -      $(lisp)/s-region.elc \
 -      $(lisp)/savehist.elc \
 -      $(lisp)/saveplace.elc \
 -      $(lisp)/sb-image.elc \
 -      $(lisp)/scroll-all.elc \
 -      $(lisp)/scroll-bar.elc \
 -      $(lisp)/scroll-lock.elc \
 -      $(lisp)/select.elc \
 -      $(lisp)/server.elc \
 -      $(lisp)/ses.elc \
 -      $(lisp)/sha1.elc \
 -      $(lisp)/shadowfile.elc \
 -      $(lisp)/shell.elc \
 -      $(lisp)/simple.elc \
 -      $(lisp)/skeleton.elc \
 -      $(lisp)/smerge-mode.elc \
 -      $(lisp)/sort.elc \
 -      $(lisp)/soundex.elc \
 -      $(lisp)/speedbar.elc \
 -      $(lisp)/startup.elc \
 -      $(lisp)/strokes.elc \
 -      $(lisp)/subr.elc \
 -      $(lisp)/t-mouse.elc \
 -      $(lisp)/tabify.elc \
 -      $(lisp)/talk.elc \
 -      $(lisp)/tar-mode.elc \
 -      $(lisp)/tempo.elc \
 -      $(lisp)/term.elc \
 -      $(lisp)/term/common-win.elc \
 -      $(lisp)/term/internal.elc \
 -      $(lisp)/term/ns-win.elc \
 -      $(lisp)/term/pc-win.elc \
 -      $(lisp)/term/rxvt.elc \
 -      $(lisp)/term/sun.elc \
 -      $(lisp)/term/sup-mouse.elc \
 -      $(lisp)/term/tty-colors.elc \
 -      $(lisp)/term/tvi970.elc \
 -      $(lisp)/term/vt100.elc \
 -      $(lisp)/term/w32-win.elc \
 -      $(lisp)/term/w32console.elc \
 -      $(lisp)/term/x-win.elc \
 -      $(lisp)/term/xterm.elc \
 -      $(lisp)/terminal.elc \
 -      $(lisp)/textmodes/artist.elc \
 -      $(lisp)/textmodes/bib-mode.elc \
 -      $(lisp)/textmodes/bibtex-style.elc \
 -      $(lisp)/textmodes/bibtex.elc \
 -      $(lisp)/textmodes/conf-mode.elc \
 -      $(lisp)/textmodes/css-mode.elc \
 -      $(lisp)/textmodes/dns-mode.elc \
 -      $(lisp)/textmodes/enriched.elc \
 -      $(lisp)/textmodes/fill.elc \
 -      $(lisp)/textmodes/flyspell.elc \
 -      $(lisp)/textmodes/ispell.elc \
 -      $(lisp)/textmodes/makeinfo.elc \
 -      $(lisp)/textmodes/nroff-mode.elc \
 -      $(lisp)/textmodes/page-ext.elc \
 -      $(lisp)/textmodes/page.elc \
 -      $(lisp)/textmodes/paragraphs.elc \
 -      $(lisp)/textmodes/picture.elc \
 -      $(lisp)/textmodes/po.elc \
 -      $(lisp)/textmodes/refbib.elc \
 -      $(lisp)/textmodes/refer.elc \
 -      $(lisp)/textmodes/refill.elc \
 -      $(lisp)/textmodes/reftex-auc.elc \
 -      $(lisp)/textmodes/reftex-cite.elc \
 -      $(lisp)/textmodes/reftex-dcr.elc \
 -      $(lisp)/textmodes/reftex-global.elc \
 -      $(lisp)/textmodes/reftex-index.elc \
 -      $(lisp)/textmodes/reftex-parse.elc \
 -      $(lisp)/textmodes/reftex-ref.elc \
 -      $(lisp)/textmodes/reftex-sel.elc \
 -      $(lisp)/textmodes/reftex-toc.elc \
 -      $(lisp)/textmodes/reftex-vars.elc \
 -      $(lisp)/textmodes/reftex.elc \
 -      $(lisp)/textmodes/remember.elc \
 -      $(lisp)/textmodes/rst.elc \
 -      $(lisp)/textmodes/sgml-mode.elc \
 -      $(lisp)/textmodes/spell.elc \
 -      $(lisp)/textmodes/table.elc \
 -      $(lisp)/textmodes/tex-mode.elc \
 -      $(lisp)/textmodes/texinfmt.elc \
 -      $(lisp)/textmodes/texinfo.elc \
 -      $(lisp)/textmodes/texnfo-upd.elc \
 -      $(lisp)/textmodes/text-mode.elc \
 -      $(lisp)/textmodes/tildify.elc \
 -      $(lisp)/textmodes/two-column.elc \
 -      $(lisp)/textmodes/underline.elc \
 -      $(lisp)/thingatpt.elc \
 -      $(lisp)/thumbs.elc \
 -      $(lisp)/time-stamp.elc \
 -      $(lisp)/time.elc \
 -      $(lisp)/timezone.elc \
 -      $(lisp)/tmm.elc \
 -      $(lisp)/tool-bar.elc \
 -      $(lisp)/tooltip.elc \
 -      $(lisp)/tree-widget.elc \
 -      $(lisp)/tutorial.elc \
 -      $(lisp)/type-break.elc \
 -      $(lisp)/uniquify.elc \
 -      $(lisp)/url/url-about.elc \
 -      $(lisp)/url/url-auth.elc \
 -      $(lisp)/url/url-cache.elc \
 -      $(lisp)/url/url-cid.elc \
 -      $(lisp)/url/url-cookie.elc \
 -      $(lisp)/url/url-dav.elc \
 -      $(lisp)/url/url-dired.elc \
 -      $(lisp)/url/url-expand.elc \
 -      $(lisp)/url/url-file.elc \
 -      $(lisp)/url/url-ftp.elc \
 -      $(lisp)/url/url-gw.elc \
 -      $(lisp)/url/url-handlers.elc \
 -      $(lisp)/url/url-history.elc \
 -      $(lisp)/url/url-http.elc \
 -      $(lisp)/url/url-imap.elc \
 -      $(lisp)/url/url-irc.elc \
 -      $(lisp)/url/url-ldap.elc \
 -      $(lisp)/url/url-mailto.elc \
 -      $(lisp)/url/url-methods.elc \
 -      $(lisp)/url/url-misc.elc \
 -      $(lisp)/url/url-news.elc \
 -      $(lisp)/url/url-nfs.elc \
 -      $(lisp)/url/url-ns.elc \
 -      $(lisp)/url/url-parse.elc \
 -      $(lisp)/url/url-privacy.elc \
 -      $(lisp)/url/url-proxy.elc \
 -      $(lisp)/url/url-util.elc \
 -      $(lisp)/url/url-vars.elc \
 -      $(lisp)/url/url.elc \
 -      $(lisp)/userlock.elc \
 -      $(lisp)/vc-annotate.elc \
 -      $(lisp)/vc-arch.elc \
 -      $(lisp)/vc-bzr.elc \
 -      $(lisp)/vc-cvs.elc \
 -      $(lisp)/vc-dav.elc \
 -      $(lisp)/vc-dir.elc \
 -      $(lisp)/vc-dispatcher.elc \
 -      $(lisp)/vc-git.elc \
 -      $(lisp)/vc-hg.elc \
 -      $(lisp)/vc-hooks.elc \
 -      $(lisp)/vc-mtn.elc \
 -      $(lisp)/vc-rcs.elc \
 -      $(lisp)/vc-sccs.elc \
 -      $(lisp)/vc-svn.elc \
 -      $(lisp)/vc.elc \
 -      $(lisp)/vcursor.elc \
 -      $(lisp)/view.elc \
 -      $(lisp)/vt-control.elc \
 -      $(lisp)/vt100-led.elc \
 -      $(lisp)/w32-fns.elc \
 -      $(lisp)/w32-vars.elc \
 -      $(lisp)/wdired.elc \
 -      $(lisp)/whitespace.elc \
 -      $(lisp)/wid-browse.elc \
 -      $(lisp)/wid-edit.elc \
 -      $(lisp)/widget.elc \
 -      $(lisp)/windmove.elc \
 -      $(lisp)/window.elc \
 -      $(lisp)/winner.elc \
 -      $(lisp)/woman.elc \
 -      $(lisp)/x-dnd.elc \
 -      $(lisp)/xml.elc \
 -      $(lisp)/xt-mouse.elc
 -
  # The src/Makefile.in has its own set of dependencies and when they decide
  # that one Lisp file needs to be re-compiled, we had better recompile it as
  # well, otherwise every subsequent make will again call us, until we finally
@@@ -208,53 -1491,17 +209,53 @@@ compile-onefile
  
  # An old-fashioned suffix rule, which, according to the GNU Make manual,
  # cannot have prerequisites.
 -# Note that if a .el file is removed from the repository without
 -# updating ELCFILES, make will abort.
  .el.elc:
        @echo Compiling $<
        @$(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $<
  
 -.PHONY: compile-first compile-main compile-last compile compile-always
 +.PHONY: compile-first compile-main compile compile-always
  
  compile-first: $(COMPILE_FIRST)
  
 -compile-main: $(ELCFILES)
 +# In `compile-main' we could directly do
 +#    ... | xargs $(MAKE) $(MFLAGS) EMACS="$(EMACS)"
 +# and it works, but it generates a lot of messages like
 +#    make[2]: « gnus/gnus-mlspl.elc » is up to date.
 +# so instead, we use "xargs echo" to split the list of file into manageable
 +# chunks and then use an intermediate `compile-targets' target so the
 +# actual targets (the .elc files) are not mentioned as targets on the
 +# make command line.
 +
 +
 +.PHONY: compile-targets
 +# TARGETS is set dynamically in the recursive call from `compile-main'.
 +compile-targets: $(TARGETS)
 +
 +# Compile all the Elisp files that need it.  Beware: it approximates
 +# `no-byte-compile', so watch out for false-positives!
 +compile-main: compile-clean
 +      @(cd $(lisp); $(setwins); \
 +      els=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \
 +      for el in $$els; do \
 +        test -f $$el || continue; \
 +        test ! -f $${el}c && GREP_OPTIONS= grep '^;.*no-byte-compile: t' $$el > /dev/null && continue; \
 +        echo "$${el}c"; \
 +      done | xargs echo) | \
 +      while read chunk; do \
 +        $(MAKE) $(MFLAGS) compile-targets EMACS="$(EMACS)" TARGETS="$$chunk"; \
 +      done
 +
 +.PHONY: compile-clean
 +# Erase left-over .elc files that do not have a corresponding .el file.
 +compile-clean:
 +      @cd $(lisp); $(setwins); \
 +      elcs=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.elc |g'`; \
 +      for el in `echo $$elcs | sed -e 's/\.elc/\.el/g'`; do \
 +        if test -f "$$el" -o \! -f "$${el}c"; then :; else \
 +          echo rm "$${el}c"; \
 +          rm "$${el}c"; \
 +        fi \
 +      done
  
  # Compile all Lisp files, but don't recompile those that are up to
  # date.  Some .el files don't get compiled because they set the
  # sub-makes that run rules that use it, for the sake of some non-GNU makes.
  compile: $(LOADDEFS) autoloads compile-first
        $(MAKE) $(MFLAGS) compile-main EMACS=$(EMACS)
 -      $(MAKE) $(MFLAGS) compile-last EMACS=$(EMACS)
 -
 -## Doing this causes make install to dump another emacs.
 -#     $(MAKE) $(MFLAGS) update-elclist
  
  # Compile all Lisp files.  This is like `compile' but compiles files
  # unconditionally.  Some files don't actually get compiled because they
@@@ -272,6 -1523,20 +273,6 @@@ compile-always: doi
        cd $(lisp); rm -f *.elc */*.elc */*/*.elc */*/*/*.elc
        $(MAKE) $(MFLAGS) compile EMACS=$(EMACS)
  
 -## In case any files are missing from ELCFILES.
 -compile-last:
 -      @wd=$(lisp); $(setwins); \
 -      els=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \
 -      for el in $$els; do \
 -        test -f $$el || continue; \
 -        test -f $${el}c && continue; \
 -        GREP_OPTIONS= grep 'no-byte-compile: t' $$el > /dev/null && continue; \
 -        sel=`echo $$el | sed "s|^$(lisp)|\\$$(lisp)|"`; \
 -        echo "Maintainer warning: $$sel missing from \$$ELCFILES?"; \
 -        echo "Compiling $$el"; \
 -        $(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $$el || exit 1; \
 -      done
 -
  compile-calc:
        for el in $(lisp)/calc/*.el; do \
          echo Compiling $$el; \
@@@ -291,7 -1556,8 +292,7 @@@ compile-after-backup: backup-compiled-f
  
  # Recompile all Lisp files which are newer than their .elc files and compile
  # new ones.
 -# This has the same effect as compile-main (followed up with compile-last,
 -# if ELCFILES is out of date).  recompile has some advantages:
 +# This has the same effect as compile-main.  recompile has some advantages:
  # i) It is faster (on a single processor), since it only has to start
  # Emacs once.  It was 33% faster on a test with a random 10% of the .el
  # files needing recompilation.
@@@ -330,24 -1596,6 +331,24 @@@ $(MH_E_DIR)/mh-loaddefs.el: $(MH_E_SRC
           --eval "(setq make-backup-files nil)" \
           -f batch-update-autoloads $(MH_E_DIR)
  
 +# Update TRAMP internal autoloads. Maybe we could move trmp*.el into
 +# an own subdirectory. OTOH, it does not hurt to keep them in
 +# lisp/net.
 +TRAMP_DIR = $(lisp)/net
 +TRAMP_SRC = $(TRAMP_DIR)/tramp.el  $(TRAMP_DIR)/tramp-cache.el  \
 +      $(TRAMP_DIR)/tramp-cmds.el $(TRAMP_DIR)/tramp-compat.el \
 +      $(TRAMP_DIR)/tramp-ftp.el  $(TRAMP_DIR)/tramp-gvfs.el   \
 +      $(TRAMP_DIR)/tramp-gw.el   $(TRAMP_DIR)/tramp-imap.el   \
 +      $(TRAMP_DIR)/tramp-sh.el   $(TRAMP_DIR)/tramp-smb.el    \
 +      $(TRAMP_DIR)/tramp-uu.el   $(TRAMP_DIR)/trampver.el
 +
 +$(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC)
 +      $(emacs) -l autoload \
 +         --eval "(setq generate-autoload-cookie \";;;###tramp-autoload\")" \
 +         --eval "(setq generated-autoload-file \"$@\")" \
 +         --eval "(setq make-backup-files nil)" \
 +         -f batch-update-autoloads $(TRAMP_DIR)
 +
  CAL_DIR = $(lisp)/calendar
  ## Those files that may contain internal calendar autoload cookies.
  ## Avoids circular dependency warning for *-loaddefs.el.
diff --combined lisp/dired.el
index 345956f029fa17f09500ca689f628a06479b5201,bb0cc2232811d2c0775d2e9a926498604840de02..04ba6083c2156b4a16f07433d7f87a0982ef1046
@@@ -7,7 -7,6 +7,7 @@@
  ;; Author: Sebastian Kremer <sk@thp.uni-koeln.de>
  ;; Maintainer: FSF
  ;; Keywords: files
 +;; Package: emacs
  
  ;; This file is part of GNU Emacs.
  
@@@ -1381,8 -1380,10 +1381,8 @@@ Do so according to the former subdir al
      (define-key map ">" 'dired-next-dirline)
      (define-key map "^" 'dired-up-directory)
      (define-key map " "  'dired-next-line)
 -    (define-key map "\C-n" 'dired-next-line)
 -    (define-key map "\C-p" 'dired-previous-line)
 -    (define-key map [down] 'dired-next-line)
 -    (define-key map [up] 'dired-previous-line)
 +    (define-key map [remap next-line] 'dired-next-line)
 +    (define-key map [remap previous-line] 'dired-previous-line)
      ;; hiding
      (define-key map "$" 'dired-hide-subdir)
      (define-key map "\M-$" 'dired-hide-all)
      (define-key map (kbd "M-s f C-s")   'dired-isearch-filenames)
      (define-key map (kbd "M-s f M-C-s") 'dired-isearch-filenames-regexp)
      ;; misc
 -    (define-key map "\C-x\C-q" 'dired-toggle-read-only)
 +    (define-key map [remap toggle-read-only] 'dired-toggle-read-only)
      (define-key map "?" 'dired-summary)
      (define-key map "\177" 'dired-unmark-backward)
      (define-key map [remap undo] 'dired-undo)
      (define-key map "\C-t." 'image-dired-display-thumb)
      (define-key map "\C-tc" 'image-dired-dired-comment-files)
      (define-key map "\C-tf" 'image-dired-mark-tagged-files)
 -    (define-key map "\C-t\C-t" 'image-dired-dired-insert-marked-thumbs)
 +    (define-key map "\C-t\C-t" 'image-dired-dired-toggle-marked-thumbs)
      (define-key map "\C-te" 'image-dired-dired-edit-comment-and-tags)
      ;; encryption and decryption (epa-dired)
      (define-key map ":d" 'epa-dired-do-decrypt)
@@@ -2138,7 -2139,7 +2138,7 @@@ Return the position of the beginning o
        ;; case-fold-search is nil now, so we can test for capital F:
        (setq used-F (string-match "F" dired-actual-switches)
            opoint (point)
 -          eol (save-excursion (end-of-line) (point))
 +          eol (line-end-position)
            hidden (and selective-display
                        (save-excursion (search-forward "\r" eol t))))
        (if hidden
@@@ -2580,7 -2581,7 +2580,7 @@@ Anything else means ask for each direct
  ;; Delete file, possibly delete a directory and all its files.
  ;; This function is usefull outside of dired.  One could change it's name
  ;; to e.g. recursive-delete-file and put it somewhere else.
 -(defun dired-delete-file (file &optional recursive) "\
 +(defun dired-delete-file (file &optional recursive trash) "\
  Delete FILE or directory (possibly recursively if optional RECURSIVE is true.)
  RECURSIVE determines what to do with a non-empty directory.  If RECURSIVE is:
  nil, do not delete.
@@@ -2591,19 -2592,15 +2591,19 @@@ Anything else, ask for each sub-directo
    ;; (and (file-directory-p fn) (not (file-symlink-p fn)))
    ;; but more efficient
    (if (not (eq t (car (file-attributes file))))
 -      (delete-file file)
 +      (delete-file file trash)
      (if (and recursive
             (directory-files file t dired-re-no-dot) ; Not empty.
             (or (eq recursive 'always)
 -               (yes-or-no-p (format "Recursive delete of %s? "
 +               (yes-or-no-p (format "Recursively %s %s? "
 +                                    (if (and trash
 +                                             delete-by-moving-to-trash)
 +                                        "trash"
 +                                      "delete")
                                      (dired-make-relative file)))))
        (if (eq recursive 'top) (setq recursive 'always)) ; Don't ask again.
        (setq recursive nil))
 -    (delete-directory file recursive)))
 +    (delete-directory file recursive trash)))
  
  (defun dired-do-flagged-delete (&optional nomessage)
    "In Dired, delete the files flagged for deletion.
@@@ -2621,7 -2618,7 +2621,7 @@@ non-empty directories is allowed.
         ;; this can't move point since ARG is nil
         (dired-map-over-marks (cons (dired-get-filename) (point))
                               nil)
 -       nil)
 +       nil t)
        (or nomessage
          (message "(No deletions requested)")))))
  
@@@ -2636,11 -2633,11 +2636,11 @@@ non-empty directories is allowed.
     ;; this may move point if ARG is an integer
     (dired-map-over-marks (cons (dired-get-filename) (point))
                         arg)
 -   arg))
 +   arg t))
  
  (defvar dired-deletion-confirmer 'yes-or-no-p) ; or y-or-n-p?
  
 -(defun dired-internal-do-deletions (l arg)
 +(defun dired-internal-do-deletions (l arg &optional trash)
    ;; L is an alist of files to delete, with their buffer positions.
    ;; ARG is the prefix arg.
    ;; Filenames are absolute.
    ;; lines still to be changed, so the (point) values in L stay valid.
    ;; Also, for subdirs in natural order, a subdir's files are deleted
    ;; before the subdir itself - the other way around would not work.
 -  (let ((files (mapcar (function car) l))
 -      (count (length l))
 -      (succ 0))
 +  (let* ((files (mapcar (function car) l))
 +       (count (length l))
 +       (succ 0)
 +       (trashing (and trash delete-by-moving-to-trash))
 +       (progress-reporter
 +        (make-progress-reporter
 +         (if trashing "Trashing..." "Deleting...")
 +         succ count)))
      ;; canonicalize file list for pop up
      (setq files (nreverse (mapcar (function dired-make-relative) files)))
      (if (dired-mark-pop-up
         " *Deletions*" 'delete files dired-deletion-confirmer
 -       (format "Delete %s " (dired-mark-prompt arg files)))
 +       (format "%s %s "
 +               (if trashing "Trash" "Delete")
 +               (dired-mark-prompt arg files)))
        (save-excursion
          (let (failures);; files better be in reverse order for this loop!
            (while l
              (let ((inhibit-read-only t))
                (condition-case err
                    (let ((fn (car (car l))))
 -                    (dired-delete-file fn dired-recursive-deletes)
 +                    (dired-delete-file fn dired-recursive-deletes trash)
                      ;; if we get here, removing worked
                      (setq succ (1+ succ))
 -                    (message "%s of %s deletions" succ count)
 +                    (progress-reporter-update progress-reporter succ)
                      (dired-fun-in-all-buffers
                       (file-name-directory fn) (file-name-nondirectory fn)
                       (function dired-delete-entry) fn))
                   (setq failures (cons (car (car l)) failures)))))
              (setq l (cdr l)))
            (if (not failures)
 -              (message "%d deletion%s done" count (dired-plural-s count))
 +              (progress-reporter-done progress-reporter)
              (dired-log-summary
               (format "%d of %d deletion%s failed"
                       (length failures) count
@@@ -2766,19 -2756,17 +2766,19 @@@ name, or the marker and a count of mark
      (fit-window-to-buffer (get-buffer-window buf) nil 1)))
  
  (defcustom dired-no-confirm nil
 -  "A list of symbols for commands Dired should not confirm.
 +  "A list of symbols for commands Dired should not confirm, or t.
  Command symbols are `byte-compile', `chgrp', `chmod', `chown', `compress',
  `copy', `delete', `hardlink', `load', `move', `print', `shell', `symlink',
 -`touch' and `uncompress'."
 +`touch' and `uncompress'.
 +If t, confirmation is never needed."
    :group 'dired
 -  :type '(set (const byte-compile) (const chgrp)
 -            (const chmod) (const chown) (const compress)
 -            (const copy) (const delete) (const hardlink)
 -            (const load) (const move) (const print)
 -            (const shell) (const symlink) (const touch)
 -            (const uncompress)))
 +  :type '(choice (const :tag "Confirmation never needed" t)
 +               (set (const byte-compile) (const chgrp)
 +                    (const chmod) (const chown) (const compress)
 +                    (const copy) (const delete) (const hardlink)
 +                    (const load) (const move) (const print)
 +                    (const shell) (const symlink) (const touch)
 +                    (const uncompress))))
  
  (defun dired-mark-pop-up (bufname op-symbol files function &rest args)
    "Return FUNCTION's result on ARGS after showing which files are marked.
@@@ -3249,16 -3237,12 +3249,16 @@@ variable `dired-listing-switches'.  To 
  format, use `\\[universal-argument] \\[dired]'.")
  
  (defvar dired-sort-by-date-regexp
 -  (concat "^-[^" dired-ls-sorting-switches
 -        "]*t[^" dired-ls-sorting-switches "]*$")
 +  (concat "\\(\\`\\| \\)-[^- ]*t"
 +        ;; `dired-ls-sorting-switches' after -t overrides -t.
 +        "[^ " dired-ls-sorting-switches "]*"
 +        "\\(\\(\\`\\| +\\)\\(--[^ ]+\\|-[^- t"
 +        dired-ls-sorting-switches "]+\\)\\)* *$")
    "Regexp recognized by Dired to set `by date' mode.")
  
  (defvar dired-sort-by-name-regexp
 -  (concat "^-[^t" dired-ls-sorting-switches "]+$")
 +  (concat "\\`\\(\\(\\`\\| +\\)\\(--[^ ]+\\|"
 +        "-[^- t" dired-ls-sorting-switches "]+\\)\\)* *$")
    "Regexp recognized by Dired to set `by name' mode.")
  
  (defvar dired-sort-inhibit nil
@@@ -3284,8 -3268,8 +3284,8 @@@ The idea is to set this buffer-locally 
      (force-mode-line-update)))
  
  (defun dired-sort-toggle-or-edit (&optional arg)
 -  "Toggle between sort by date/name and refresh the dired buffer.
 -With a prefix argument you can edit the current listing switches instead."
 +  "Toggle sorting by date, and refresh the Dired buffer.
 +With a prefix argument, edit the current listing switches instead."
    (interactive "P")
    (when dired-sort-inhibit
      (error "Cannot sort this dired buffer"))
  
  (defun dired-sort-toggle ()
    ;; Toggle between sort by date/name.  Reverts the buffer.
 -  (setq dired-actual-switches
 -      (let (case-fold-search)
 -        (if (string-match " " dired-actual-switches)
 -            ;; New toggle scheme: add/remove a trailing " -t"
 -            (if (string-match " -t\\'" dired-actual-switches)
 -                (substring dired-actual-switches 0 (match-beginning 0))
 -              (concat dired-actual-switches " -t"))
 -          ;; old toggle scheme: look for some 't' switch and add/remove it
 -          (concat
 -           "-l"
 -           (dired-replace-in-string (concat "[-lt"
 -                                            dired-ls-sorting-switches "]")
 -                                    ""
 -                                    dired-actual-switches)
 -           (if (string-match (concat "[t" dired-ls-sorting-switches "]")
 -                             dired-actual-switches)
 -               ""
 -             "t")))))
 +  (let ((sorting-by-date (string-match dired-sort-by-date-regexp
 +                                     dired-actual-switches))
 +      ;; Regexp for finding (possibly embedded) -t switches.
 +      (switch-regexp "\\(\\`\\| \\)-\\([a-su-zA-Z]*\\)\\(t\\)\\([^ ]*\\)")
 +      case-fold-search)
 +    ;; Remove the -t switch.
 +    (while (string-match switch-regexp dired-actual-switches)
 +      (if (and (equal (match-string 2 dired-actual-switches) "")
 +             (equal (match-string 4 dired-actual-switches) ""))
 +        ;; Remove a stand-alone -t switch.
 +        (setq dired-actual-switches
 +              (replace-match "" t t dired-actual-switches))
 +      ;; Remove a switch of the form -XtY for some X and Y.
 +      (setq dired-actual-switches
 +            (replace-match "" t t dired-actual-switches 3))))
 +    ;; Now, if we weren't sorting by date before, add the -t switch.
 +    (unless sorting-by-date
 +      (setq dired-actual-switches (concat dired-actual-switches " -t"))))
    (dired-sort-set-modeline)
    (revert-buffer))
  
@@@ -3539,7 -3523,7 +3539,7 @@@ Ask means pop up a menu for the user t
  ;;;;;;  dired-run-shell-command dired-do-shell-command dired-do-async-shell-command
  ;;;;;;  dired-clean-directory dired-do-print dired-do-touch dired-do-chown
  ;;;;;;  dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff
- ;;;;;;  dired-diff) "dired-aux" "dired-aux.el" "416d272299fd4774c47c2f677ee640a4")
 -;;;;;;  dired-diff) "dired-aux" "dired-aux.el" "07676ea25af17f5d50cc5db4f53bddc0")
++;;;;;;  dired-diff) "dired-aux" "dired-aux.el" "1628b7a7d379fb4da8ae4bf29faad4b5")
  ;;; Generated autoloads from dired-aux.el
  
  (autoload 'dired-diff "dired-aux" "\
@@@ -3992,7 -3976,7 +3992,7 @@@ true then the type of the file linked t
  ;;;***
  \f
  ;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
 -;;;;;;  "bb37ec379c0a523368794491b691fd8d")
 +;;;;;;  "27c312d6d5d40d8cb4ef8d62e30d5f4a")
  ;;; Generated autoloads from dired-x.el
  
  (autoload 'dired-jump "dired-x" "\
@@@ -4001,11 -3985,8 +4001,11 @@@ If in a file, dired the current directo
  If in Dired already, pop up a level and goto old directory's line.
  In case the proper dired file line cannot be found, refresh the dired
  buffer and try again.
 +When OTHER-WINDOW is non-nil, jump to dired buffer in other window.
 +Interactively with prefix argument, read FILE-NAME and
 +move to its line in dired.
  
 -\(fn &optional OTHER-WINDOW)" t nil)
 +\(fn &optional OTHER-WINDOW FILE-NAME)" t nil)
  
  (autoload 'dired-do-relsymlink "dired-x" "\
  Relative symlink all marked (or next ARG) files into a directory.
@@@ -4030,4 -4011,5 +4030,4 @@@ For absolute symlinks, use \\[dired-do-
  
  (run-hooks 'dired-load-hook)          ; for your customizations
  
 -;; arch-tag: e1af7a8f-691c-41a0-aac1-ddd4d3c87517
  ;;; dired.el ends here
index 4bda6ceb759c7943f07fbefca4dc4a891ff34cd1,7640a0b1575833f5e2c694f70b345461434fc21c..b1d934f08e026f91f229dbe574ea0470ce0e40e5
@@@ -10,7 -10,7 +10,7 @@@
  ;;;;;;  ceiling* floor* isqrt lcm gcd cl-progv-before cl-set-frame-visible-p
  ;;;;;;  cl-map-overlays cl-map-intervals cl-map-keymap-recursively
  ;;;;;;  notevery notany every some mapcon mapcan mapl maplist map
 -;;;;;;  cl-mapcar-many equalp coerce) "cl-extra" "cl-extra.el" "d93072a26c59f663a92b10df8bc28187")
 +;;;;;;  cl-mapcar-many equalp coerce) "cl-extra" "cl-extra.el" "20c8c875ff1d11dd819e15a1f25afd73")
  ;;; Generated autoloads from cl-extra.el
  
  (autoload 'coerce "cl-extra" "\
@@@ -277,12 -277,12 +277,12 @@@ Not documente
  ;;;;;;  assert check-type typep deftype cl-struct-setf-expander defstruct
  ;;;;;;  define-modify-macro callf2 callf letf* letf rotatef shiftf
  ;;;;;;  remf cl-do-pop psetf setf get-setf-method defsetf define-setf-method
 -;;;;;;  declare the locally multiple-value-setq multiple-value-bind
 -;;;;;;  lexical-let* lexical-let symbol-macrolet macrolet labels
 -;;;;;;  flet progv psetq do-all-symbols do-symbols dotimes dolist
 -;;;;;;  do* do loop return-from return block etypecase typecase ecase
 -;;;;;;  case load-time-value eval-when destructuring-bind function*
 -;;;;;;  defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "49b7d96626dd8ba5d39551909edbd4c7")
 +;;;;;;  declare locally multiple-value-setq multiple-value-bind lexical-let*
 +;;;;;;  lexical-let symbol-macrolet macrolet labels flet progv psetq
 +;;;;;;  do-all-symbols do-symbols dotimes dolist do* do loop return-from
 +;;;;;;  return block etypecase typecase ecase case load-time-value
 +;;;;;;  eval-when destructuring-bind function* defmacro* defun* gentemp
- ;;;;;;  gensym) "cl-macs" "cl-macs.el" "82f8370745a60dc26536a0237cba893f")
++;;;;;;  gensym) "cl-macs" "cl-macs.el" "979862b54946a5fcbbccdd90fa3f84d8")
  ;;; Generated autoloads from cl-macs.el
  
  (autoload 'gensym "cl-macs" "\
@@@ -535,6 -535,11 +535,6 @@@ Not documente
  
  \(fn &rest BODY)" nil (quote macro))
  
 -(autoload 'the "cl-macs" "\
 -Not documented
 -
 -\(fn TYPE FORM)" nil (quote macro))
 -
  (autoload 'declare "cl-macs" "\
  Not documented
  
@@@ -754,7 -759,7 +754,7 @@@ surrounded by (block NAME ...)
  ;;;;;;  find nsubstitute-if-not nsubstitute-if nsubstitute substitute-if-not
  ;;;;;;  substitute-if substitute delete-duplicates remove-duplicates
  ;;;;;;  delete-if-not delete-if delete* remove-if-not remove-if remove*
 -;;;;;;  replace fill reduce) "cl-seq" "cl-seq.el" "ec3ea1c77742734db8496272fe5721be")
 +;;;;;;  replace fill reduce) "cl-seq" "cl-seq.el" "7b7531276ddf8457abecdd487d3cf0b7")
  ;;; Generated autoloads from cl-seq.el
  
  (autoload 'reduce "cl-seq" "\
@@@ -1237,6 -1242,7 +1237,6 @@@ Keywords supported:  :test :test-not :k
  ;; version-control: never
  ;; no-byte-compile: t
  ;; no-update-autoloads: t
 +;; coding: utf-8
  ;; End:
 -
 -;; arch-tag: 08cc5aab-e992-47f6-992e-12a7428c1a0e
  ;;; cl-loaddefs.el ends here
diff --combined lisp/files.el
index 0c5640d13a406101ce3bf96f44ff31813bd44eb5,0664bfd3844198bec8a57024156dbe300b422400..ca698cab33dd732730f9443ab0844aac118bf6a9
@@@ -1,11 -1,10 +1,11 @@@
  ;;; files.el --- file input and output commands for Emacs
  
  ;; Copyright (C) 1985, 1986, 1987, 1992, 1993, 1994, 1995, 1996,
 -;;   1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
 -;;   2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 +;;   1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 +;;   2007, 2008, 2009, 2010  Free Software Foundation, Inc.
  
  ;; Maintainer: FSF
 +;; Package: emacs
  
  ;; This file is part of GNU Emacs.
  
@@@ -124,6 -123,7 +124,7 @@@ the default for a new file created ther
  This variable is relevant only if `backup-by-copying' is nil."
    :type 'boolean
    :group 'backup)
+ (put 'backup-by-copying-when-mismatch 'permanent-local t)
  
  (defcustom backup-by-copying-when-privileged-mismatch 200
    "Non-nil means create backups by copying to preserve a privileged owner.
@@@ -188,6 -188,17 +189,6 @@@ If the buffer is visiting a new file, t
    "Non-nil if visited file was read-only when visited.")
  (make-variable-buffer-local 'buffer-file-read-only)
  
 -(defcustom temporary-file-directory
 -  (file-name-as-directory
 -   (cond ((memq system-type '(ms-dos windows-nt))
 -        (or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP") "c:/temp"))
 -       (t
 -        (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "/tmp"))))
 -  "The directory for writing temporary files."
 -  :group 'files
 -  :initialize 'custom-initialize-delay
 -  :type 'directory)
 -
  (defcustom small-temporary-file-directory
    (if (eq system-type 'ms-dos) (getenv "TMPDIR"))
    "The directory for writing small temporary files.
@@@ -564,9 -575,6 +565,9 @@@ Runs the usual ange-ftp hook, but only 
          (inhibit-file-name-operation op))
        (apply op args))))
  
 +(declare-function dos-convert-standard-filename "dos-fns.el" (filename))
 +(declare-function w32-convert-standard-filename "w32-fns.el" (filename))
 +
  (defun convert-standard-filename (filename)
    "Convert a standard file's name to something suitable for the OS.
  This means to guarantee valid names and perhaps to canonicalize
@@@ -584,20 -592,15 +585,20 @@@ and also turn slashes into backslashes 
  `w32-shell-dos-semantics').
  
  See Info node `(elisp)Standard File Names' for more details."
 -  (if (eq system-type 'cygwin)
 -      (let ((name (copy-sequence filename))
 -          (start 0))
 -      ;; Replace invalid filename characters with !
 -      (while (string-match "[?*:<>|\"\000-\037]" name start)
 -             (aset name (match-beginning 0) ?!)
 -        (setq start (match-end 0)))
 -      name)
 -    filename))
 +  (cond
 +   ((eq system-type 'cygwin)
 +    (let ((name (copy-sequence filename))
 +        (start 0))
 +      ;; Replace invalid filename characters with !
 +      (while (string-match "[?*:<>|\"\000-\037]" name start)
 +      (aset name (match-beginning 0) ?!)
 +      (setq start (match-end 0)))
 +      name))
 +   ((eq system-type 'windows-nt)
 +    (w32-convert-standard-filename filename))
 +   ((eq system-type 'ms-dos)
 +    (dos-convert-standard-filename filename))
 +   (t filename)))
  
  (defun read-directory-name (prompt &optional dir default-dirname mustmatch initial)
    "Read directory name, prompting with PROMPT and completing in directory DIR.
@@@ -747,45 -750,21 +748,45 @@@ one or more of those symbols.
               (let ((x (file-name-directory suffix)))
                 (if x (1- (length x)) (length suffix))))))
     (t
 -    (let ((names nil)
 +    (let ((names '())
 +          ;; If we have files like "foo.el" and "foo.elc", we could load one of
 +          ;; them with "foo.el", "foo.elc", or "foo", where just "foo" is the
 +          ;; preferred way.  So if we list all 3, that gives a lot of redundant
 +          ;; entries for the poor soul looking just for "foo".  OTOH, sometimes
 +          ;; the user does want to pay attention to the extension.  We try to
 +          ;; diffuse this tension by stripping the suffix, except when the
 +          ;; result is a single element (i.e. usually we only list "foo" unless
 +          ;; it's the only remaining element in the list, in which case we do
 +          ;; list "foo", "foo.elc" and "foo.el").
 +          (fullnames '())
          (suffix (concat (regexp-opt suffixes t) "\\'"))
          (string-dir (file-name-directory string))
            (string-file (file-name-nondirectory string)))
        (dolist (dir dirs)
 -      (unless dir
 -        (setq dir default-directory))
 -      (if string-dir (setq dir (expand-file-name string-dir dir)))
 -      (when (file-directory-p dir)
 -        (dolist (file (file-name-all-completions
 -                       string-file dir))
 -          (push file names)
 -          (when (string-match suffix file)
 -            (setq file (substring file 0 (match-beginning 0)))
 -              (push file names)))))
 +        (unless dir
 +          (setq dir default-directory))
 +        (if string-dir (setq dir (expand-file-name string-dir dir)))
 +        (when (file-directory-p dir)
 +          (dolist (file (file-name-all-completions
 +                         string-file dir))
 +            (if (not (string-match suffix file))
 +                (push file names)
 +              (push file fullnames)
 +              (push (substring file 0 (match-beginning 0)) names)))))
 +      ;; Switching from names to names+fullnames creates a non-monotonicity
 +      ;; which can cause problems with things like partial-completion.
 +      ;; To minimize the problem, filter out completion-regexp-list, so that
 +      ;; M-x load-library RET t/x.e TAB finds some files.  Also remove elements
 +      ;; from `names' which only matched `string' when they still had
 +      ;; their suffix.
 +      (setq names (all-completions string names))
 +      ;; Remove duplicates of the first element, so that we can easily check
 +      ;; if `names' really only contains a single element.
 +      (when (cdr names) (setcdr names (delete (car names) (cdr names))))
 +      (unless (cdr names)
 +        ;; There's no more than one matching non-suffixed element, so expand
 +        ;; the list by adding the suffixed elements as well.
 +        (setq names (nconc names fullnames)))
        (completion-table-with-context
         string-dir names string-file pred action)))))
  
@@@ -924,36 -903,6 +925,36 @@@ to that remote system
        (funcall handler 'file-remote-p file identification connected)
        nil)))
  
 +(defcustom remote-file-name-inhibit-cache 10
 +  "Whether to use the remote file-name cache for read access.
 +
 +When `nil', always use the cached values.
 +When `t', never use them.
 +A number means use them for that amount of seconds since they were
 +cached.
 +
 +File attributes of remote files are cached for better performance.
 +If they are changed out of Emacs' control, the cached values
 +become invalid, and must be invalidated.
 +
 +In case a remote file is checked regularly, it might be
 +reasonable to let-bind this variable to a value less then the
 +time period between two checks.
 +Example:
 +
 +  \(defun display-time-file-nonempty-p \(file)
 +    \(let \(\(remote-file-name-inhibit-cache \(- display-time-interval 5)))
 +      \(and \(file-exists-p file)
 +           \(< 0 \(nth 7 \(file-attributes \(file-chase-links file)))))))"
 +  :group 'files
 +  :version "24.1"
 +  :type `(choice
 +        (const   :tag "Do not inhibit file name cache" nil)
 +        (const   :tag "Do not use file name cache" t)
 +        (integer :tag "Do not use file name cache"
 +                 :format "Do not use file name cache older then %v seconds"
 +                 :value 10)))
 +
  (defun file-local-copy (file)
    "Copy the file FILE into a temporary file on this machine.
  Returns the name of the local copy, or nil, if FILE is directly
@@@ -2211,7 -2160,7 +2212,7 @@@ in that case, this function acts as if 
    (if (fboundp 'ucs-set-table-for-input) ; don't lose when building
        (ucs-set-table-for-input)))
  
 -(defcustom auto-mode-case-fold nil
 +(defcustom auto-mode-case-fold t
    "Non-nil means to try second pass through `auto-mode-alist'.
  This means that if the first case-sensitive search through the alist fails
  to find a matching major mode, a second case-insensitive search is made.
@@@ -2231,15 -2180,6 +2232,15 @@@ since only a single case-insensitive se
       (cons (purecopy (car elt)) (cdr elt)))
     `(;; do this first, so that .html.pl is Polish html, not Perl
       ("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . html-mode)
 +     ("\\.svgz?\\'" . image-mode)
 +     ("\\.svgz?\\'" . xml-mode)
 +     ("\\.x[bp]m\\'" . image-mode)
 +     ("\\.x[bp]m\\'" . c-mode)
 +     ("\\.p[bpgn]m\\'" . image-mode)
 +     ("\\.tiff?\\'" . image-mode)
 +     ("\\.gif\\'" . image-mode)
 +     ("\\.png\\'" . image-mode)
 +     ("\\.jpe?g\\'" . image-mode)
       ("\\.te?xt\\'" . text-mode)
       ("\\.[tT]e[xX]\\'" . tex-mode)
       ("\\.ins\\'" . tex-mode)         ;Installation files for TeX packages.
       ("\\.te?xi\\'" . texinfo-mode)
       ("\\.[sS]\\'" . asm-mode)
       ("\\.asm\\'" . asm-mode)
 +     ("\\.css\\'" . css-mode)
 +     ("\\.mixal\\'" . mixal-mode)
 +     ("\\.gcov\\'" . compilation-mode)
 +     ;; Besides .gdbinit, gdb documents other names to be usable for init
 +     ;; files, cross-debuggers can use something like
 +     ;; .PROCESSORNAME-gdbinit so that the host and target gdbinit files
 +     ;; don't interfere with each other.
 +     ("/\\.[a-z0-9-]*gdbinit" . gdb-script-mode)
       ("[cC]hange\\.?[lL]og?\\'" . change-log-mode)
       ("[cC]hange[lL]og[-.][0-9]+\\'" . change-log-mode)
       ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
       ("\\.cl[so]\\'" . latex-mode)            ;LaTeX 2e class option
       ("\\.bbl\\'" . latex-mode)
       ("\\.bib\\'" . bibtex-mode)
 +     ("\\.bst\\'" . bibtex-style-mode)
       ("\\.sql\\'" . sql-mode)
       ("\\.m[4c]\\'" . m4-mode)
       ("\\.mf\\'" . metafont-mode)
       ;; The list of archive file extensions should be in sync with
       ;; `auto-coding-alist' with `no-conversion' coding system.
       ("\\.\\(\
 -arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|\
 -ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\)\\'" . archive-mode)
 +arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|7z\\|\
 +ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'" . archive-mode)
       ("\\.\\(sx[dmicw]\\|od[fgpst]\\|oxt\\)\\'" . archive-mode) ;OpenOffice.org
       ("\\.\\(deb\\|[oi]pk\\)\\'" . archive-mode) ; Debian/Opkg packages.
       ;; Mailer puts message to be edited in
       ;; /tmp/Re.... or Message
       ("\\`/tmp/Re" . text-mode)
       ("/Message[0-9]*\\'" . text-mode)
 -     ("\\.zone\\'" . zone-mode)
       ;; some news reader is reported to use this
       ("\\`/tmp/fol/" . text-mode)
       ("\\.oak\\'" . scheme-mode)
       ("[:/]_emacs\\'" . emacs-lisp-mode)
       ("/crontab\\.X*[0-9]+\\'" . shell-script-mode)
       ("\\.ml\\'" . lisp-mode)
 +     ;; Linux-2.6.9 uses some different suffix for linker scripts:
 +     ;; "ld", "lds", "lds.S", "lds.in", "ld.script", and "ld.script.balo".
 +     ;; eCos uses "ld" and "ldi".  Netbsd uses "ldscript.*".
 +     ("\\.ld[si]?\\'" . ld-script-mode)
 +     ("ld\\.?script\\'" . ld-script-mode)
 +     ;; .xs is also used for ld scripts, but seems to be more commonly
 +     ;; associated with Perl .xs files (C with Perl bindings).  (Bug#7071)
 +     ("\\.xs\\'" . c-mode)
 +     ;; Explained in binutils ld/genscripts.sh.  Eg:
 +     ;; A .x script file is the default script.
 +     ;; A .xr script is for linking without relocation (-r flag).  Etc.
 +     ("\\.x[abdsru]?[cnw]?\\'" . ld-script-mode)
 +     ("\\.zone\\'" . dns-mode)
 +     ("\\.soa\\'" . dns-mode)
       ;; Common Lisp ASDF package system.
       ("\\.asd\\'" . lisp-mode)
       ("\\.\\(asn\\|mib\\|smi\\)\\'" . snmp-mode)
       ("#\\*mail\\*" . mail-mode)
       ("\\.g\\'" . antlr-mode)
       ("\\.ses\\'" . ses-mode)
 -     ("\\.\\(soa\\|zone\\)\\'" . dns-mode)
       ("\\.docbook\\'" . sgml-mode)
       ("\\.com\\'" . dcl-mode)
       ("/config\\.\\(?:bat\\|log\\)\\'" . fundamental-mode)
@@@ -2486,8 -2405,7 +2487,8 @@@ and `magic-mode-alist', which determine
       ("pg" . text-mode)
       ("make" . makefile-gmake-mode)           ; Debian uses this
       ("guile" . scheme-mode)
 -     ("clisp" . lisp-mode)))
 +     ("clisp" . lisp-mode)
 +     ("emacs" . emacs-lisp-mode)))
    "Alist mapping interpreter names to major modes.
  This is used for files whose first lines match `auto-mode-interpreter-regexp'.
  Each element looks like (INTERPRETER . MODE).
@@@ -2850,19 -2768,15 +2851,19 @@@ asking you for confirmation.
  
  (mapc (lambda (pair)
        (put (car pair) 'safe-local-variable (cdr pair)))
 -      '((buffer-read-only     . booleanp)   ;; C source code
 -      (default-directory    . stringp)    ;; C source code
 -      (fill-column          . integerp)   ;; C source code
 -      (indent-tabs-mode     . booleanp)   ;; C source code
 -      (left-margin          . integerp)   ;; C source code
 -      (no-update-autoloads  . booleanp)
 -      (tab-width            . integerp)   ;; C source code
 -      (truncate-lines       . booleanp)   ;; C source code
 -      (word-wrap            . booleanp))) ;; C source code
 +      '((buffer-read-only        . booleanp)   ;; C source code
 +      (default-directory       . stringp)    ;; C source code
 +      (fill-column             . integerp)   ;; C source code
 +      (indent-tabs-mode        . booleanp)   ;; C source code
 +      (left-margin             . integerp)   ;; C source code
 +      (no-update-autoloads     . booleanp)
 +      (tab-width               . integerp)   ;; C source code
 +      (truncate-lines          . booleanp)   ;; C source code
 +      (word-wrap               . booleanp) ;; C source code
 +      (bidi-display-reordering . booleanp))) ;; C source code
 +
 +(put 'bidi-paragraph-direction 'safe-local-variable
 +     (lambda (v) (memq v '(nil right-to-left left-to-right))))
  
  (put 'c-set-style 'safe-local-eval-function t)
  
@@@ -3200,17 -3114,14 +3201,17 @@@ is specified, returning t if it is spec
          ;; Otherwise, set the variables.
          (enable-local-variables
           (hack-local-variables-filter result nil)
 -         (when file-local-variables-alist
 -           ;; Any 'evals must run in the Right sequence.
 -           (setq file-local-variables-alist
 -                 (nreverse file-local-variables-alist))
 -           (run-hooks 'before-hack-local-variables-hook)
 -           (dolist (elt file-local-variables-alist)
 -             (hack-one-local-variable (car elt) (cdr elt))))
 -         (run-hooks 'hack-local-variables-hook)))))
 +         (hack-local-variables-apply)))))
 +
 +(defun hack-local-variables-apply ()
 +  (when file-local-variables-alist
 +    ;; Any 'evals must run in the Right sequence.
 +    (setq file-local-variables-alist
 +        (nreverse file-local-variables-alist))
 +    (run-hooks 'before-hack-local-variables-hook)
 +    (dolist (elt file-local-variables-alist)
 +      (hack-one-local-variable (car elt) (cdr elt))))
 +  (run-hooks 'hack-local-variables-hook))
  
  (defun safe-local-variable-p (sym val)
    "Non-nil if SYM is safe as a file-local variable with value VAL.
@@@ -3504,14 -3415,15 +3505,14 @@@ is found.  Returns the new class name.
  Store the directory-local variables in `dir-local-variables-alist'
  and `file-local-variables-alist', without applying them."
    (when (and enable-local-variables
 -           (buffer-file-name)
 -           (not (file-remote-p (buffer-file-name))))
 +           (not (file-remote-p (or (buffer-file-name) default-directory))))
      ;; Find the variables file.
 -    (let ((variables-file (dir-locals-find-file (buffer-file-name)))
 +    (let ((variables-file (dir-locals-find-file (or (buffer-file-name) default-directory)))
          (class nil)
          (dir-name nil))
        (cond
         ((stringp variables-file)
 -      (setq dir-name (file-name-directory (buffer-file-name)))
 +      (setq dir-name (if (buffer-file-name) (file-name-directory (buffer-file-name)) default-directory))
        (setq class (dir-locals-read-from-file variables-file)))
         ((consp variables-file)
        (setq dir-name (nth 0 variables-file))
              (push elt dir-local-variables-alist))
            (hack-local-variables-filter variables dir-name)))))))
  
 +(defun hack-dir-local-variables-non-file-buffer ()
 +  (hack-dir-local-variables)
 +  (hack-local-variables-apply))
 +
  \f
  (defcustom change-major-mode-with-file-name t
    "Non-nil means \\[write-file] should set the major mode from the file name.
@@@ -3711,13 -3619,10 +3712,13 @@@ variable `make-backup-files'.  If it's 
  no longer accessible under its old name.
  
  The value is non-nil after a backup was made by renaming.
 -It has the form (MODES . BACKUPNAME).
 +It has the form (MODES SELINUXCONTEXT BACKUPNAME).
  MODES is the result of `file-modes' on the original
  file; this means that the caller, after saving the buffer, should change
  the modes of the new file to agree with the old modes.
 +SELINUXCONTEXT is the result of `file-selinux-context' on the original
 +file; this means that the caller, after saving the buffer, should change
 +the SELinux context of the new file to agree with the old context.
  BACKUPNAME is the backup file name, which is the old file renamed."
    (if (and make-backup-files (not backup-inhibited)
           (not buffer-backed-up)
                            (or delete-old-versions
                                (y-or-n-p (format "Delete excess backup versions of %s? "
                                                  real-file-name)))))
 -                    (modes (file-modes buffer-file-name)))
 +                    (modes (file-modes buffer-file-name))
 +                    (context (file-selinux-context buffer-file-name)))
                  ;; Actually write the back up file.
                  (condition-case ()
                      (if (or file-precious-flag
                                                   (<= (nth 2 attr) backup-by-copying-when-privileged-mismatch)))
                                          (or (nth 9 attr)
                                              (not (file-ownership-preserved-p real-file-name)))))))
 -                        (backup-buffer-copy real-file-name backupname modes)
 +                        (backup-buffer-copy real-file-name backupname modes context)
                        ;; rename-file should delete old backup.
                        (rename-file real-file-name backupname t)
 -                      (setq setmodes (cons modes backupname)))
 +                      (setq setmodes (list modes context backupname)))
                    (file-error
                     ;; If trouble writing the backup, write it in ~.
                     (setq backupname (expand-file-name
                     (message "Cannot write backup file; backing up in %s"
                              backupname)
                     (sleep-for 1)
 -                   (backup-buffer-copy real-file-name backupname modes)))
 +                   (backup-buffer-copy real-file-name backupname modes context)))
                  (setq buffer-backed-up t)
                  ;; Now delete the old versions, if desired.
                  (if delete-old-versions
                  setmodes)
            (file-error nil))))))
  
 -(defun backup-buffer-copy (from-name to-name modes)
 +(defun backup-buffer-copy (from-name to-name modes context)
    (let ((umask (default-file-modes)))
      (unwind-protect
        (progn
        ;; Reset the umask.
        (set-default-file-modes umask)))
    (and modes
 -       (set-file-modes to-name (logand modes #o1777))))
 +       (set-file-modes to-name (logand modes #o1777)))
 +  (and context
 +       (set-file-selinux-context to-name context)))
  
  (defun file-name-sans-versions (name &optional keep-backup-version)
    "Return file NAME sans backup versions or strings.
@@@ -4349,9 -4251,7 +4350,9 @@@ Before and after saving the buffer, thi
                  (nthcdr 10 (file-attributes buffer-file-name)))
            (if setmodes
                (condition-case ()
 -                  (set-file-modes buffer-file-name (car setmodes))
 +                  (progn
 +                    (set-file-modes buffer-file-name (car setmodes))
 +                    (set-file-selinux-context buffer-file-name (nth 1 setmodes)))
                  (error nil))))
          ;; If the auto-save file was recent before this command,
          ;; delete it now.
  ;; This does the "real job" of writing a buffer into its visited file
  ;; and making a backup file.  This is what is normally done
  ;; but inhibited if one of write-file-functions returns non-nil.
 -;; It returns a value (MODES . BACKUPNAME), like backup-buffer.
 +;; It returns a value (MODES SELINUXCONTEXT BACKUPNAME), like backup-buffer.
  (defun basic-save-buffer-1 ()
    (prog1
        (if save-buffer-coding-system
        (setq buffer-file-coding-system-explicit
            (cons last-coding-system-used nil)))))
  
 -;; This returns a value (MODES . BACKUPNAME), like backup-buffer.
 +;; This returns a value (MODES SELINUXCONTEXT BACKUPNAME), like backup-buffer.
  (defun basic-save-buffer-2 ()
    (let (tempsetmodes setmodes)
      (if (not (file-writable-p buffer-file-name))
            ;; Since we have created an entirely new file,
            ;; make sure it gets the right permission bits set.
            (setq setmodes (or setmodes
 -                             (cons (or (file-modes buffer-file-name)
 +                             (list (or (file-modes buffer-file-name)
                                         (logand ?\666 umask))
 +                                   (file-selinux-context buffer-file-name)
                                     buffer-file-name)))
            ;; We succeeded in writing the temp file,
            ;; so rename it.
        ;; (setmodes is set) because that says we're superseding.
        (cond ((and tempsetmodes (not setmodes))
               ;; Change the mode back, after writing.
 -             (setq setmodes (cons (file-modes buffer-file-name) buffer-file-name))
 -             (set-file-modes buffer-file-name (logior (car setmodes) 128))))
 +             (setq setmodes (list (file-modes buffer-file-name)
 +                                  (file-selinux-context buffer-file-name)
 +                                  buffer-file-name))
 +             (set-file-modes buffer-file-name (logior (car setmodes) 128))
 +             (set-file-selinux-context buffer-file-name (nth 1 setmodes)))))
        (let (success)
          (unwind-protect
              (progn
            ;; the backup by renaming, undo the backing-up.
            (and setmodes (not success)
                 (progn
 -                 (rename-file (cdr setmodes) buffer-file-name t)
 -                 (setq buffer-backed-up nil)))))))
 +                 (rename-file (nth 2 setmodes) buffer-file-name t)
 +                 (setq buffer-backed-up nil))))))
      setmodes))
  
  (defun diff-buffer-with-file (&optional buffer)
@@@ -4715,17 -4611,16 +4716,17 @@@ or multiple mail buffers, etc.
        (force-mode-line-update))))
  
  (defun make-directory (dir &optional parents)
 -  "Create the directory DIR and any nonexistent parent dirs.
 -If DIR already exists as a directory, signal an error, unless PARENTS is set.
 +  "Create the directory DIR and optionally any nonexistent parent dirs.
 +If DIR already exists as a directory, signal an error, unless
 +PARENTS is non-nil.
  
 -Interactively, the default choice of directory to create
 -is the current default directory for file names.
 -That is useful when you have visited a file in a nonexistent directory.
 +Interactively, the default choice of directory to create is the
 +current buffer's default directory.  That is useful when you have
 +visited a file in a nonexistent directory.
  
 -Noninteractively, the second (optional) argument PARENTS says whether
 -to create parent directories if they don't exist.  Interactively,
 -this happens by default."
 +Noninteractively, the second (optional) argument PARENTS, if
 +non-nil, says whether to create parent directories that don't
 +exist.  Interactively, this happens by default."
    (interactive
     (list (read-file-name "Make directory: " default-directory default-directory
                         nil nil)
    "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"
    "Regexp matching any file name except \".\" and \"..\".")
  
 -(defun delete-directory (directory &optional recursive)
 +(defun delete-directory (directory &optional recursive trash)
    "Delete the directory named DIRECTORY.  Does not follow symlinks.
 -If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well."
 +If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well.
 +TRASH non-nil means to trash the directory instead, provided
 +`delete-by-moving-to-trash' is non-nil.
 +
 +When called interactively, TRASH is t if no prefix argument is
 +given.  With a prefix argument, TRASH is nil."
    (interactive
 -   (let ((dir (expand-file-name
 -             (read-file-name
 -              "Delete directory: "
 -              default-directory default-directory nil nil))))
 +   (let* ((trashing (and delete-by-moving-to-trash
 +                       (null current-prefix-arg)))
 +        (dir (expand-file-name
 +              (read-file-name
 +               (if trashing
 +                   "Move directory to trash: "
 +                 "Delete directory: ")
 +               default-directory default-directory nil nil))))
       (list dir
           (if (directory-files dir nil directory-files-no-dot-files-regexp)
               (y-or-n-p
 -              (format "Directory `%s' is not empty, really delete? " dir))
 -           nil))))
 +              (format "Directory `%s' is not empty, really %s? "
 +                      dir (if trashing "trash" "delete")))
 +           nil)
 +         (null current-prefix-arg))))
    ;; If default-directory is a remote directory, make sure we find its
    ;; delete-directory handler.
    (setq directory (directory-file-name (expand-file-name directory)))
      (cond
       (handler
        (funcall handler 'delete-directory directory recursive))
 -     (delete-by-moving-to-trash
 +     ((and delete-by-moving-to-trash trash)
        ;; Only move non-empty dir to trash if recursive deletion was
        ;; requested.  This mimics the non-`delete-by-moving-to-trash'
        ;; case, where the operation fails in delete-directory-internal.
                  ;; (and (file-directory-p fn) (not (file-symlink-p fn)))
                  ;; but more efficient
                  (if (eq t (car (file-attributes file)))
 -                    (delete-directory file recursive)
 -                  (delete-file file)))
 +                    (delete-directory file recursive nil)
 +                  (delete-file file nil)))
                ;; We do not want to delete "." and "..".
                (directory-files
                 directory 'full directory-files-no-dot-files-regexp)))
@@@ -5252,6 -5136,30 +5253,6 @@@ The optional second argument indicates 
          (kill-buffer-ask buffer)))))
  
  \f
 -(defun auto-save-mode (arg)
 -  "Toggle auto-saving of contents of current buffer.
 -With prefix argument ARG, turn auto-saving on if positive, else off."
 -  (interactive "P")
 -  (setq buffer-auto-save-file-name
 -        (and (if (null arg)
 -               (or (not buffer-auto-save-file-name)
 -                   ;; If auto-save is off because buffer has shrunk,
 -                   ;; then toggling should turn it on.
 -                   (< buffer-saved-size 0))
 -             (or (eq arg t) (listp arg) (and (integerp arg) (> arg 0))))
 -           (if (and buffer-file-name auto-save-visited-file-name
 -                    (not buffer-read-only))
 -               buffer-file-name
 -             (make-auto-save-file-name))))
 -  ;; If -1 was stored here, to temporarily turn off saving,
 -  ;; turn it back on.
 -  (and (< buffer-saved-size 0)
 -       (setq buffer-saved-size 0))
 -  (if (called-interactively-p 'interactive)
 -      (message "Auto-save %s (in this buffer)"
 -             (if buffer-auto-save-file-name "on" "off")))
 -  buffer-auto-save-file-name)
 -
  (defun rename-auto-save-file ()
    "Adjust current buffer's auto save file name for current conditions.
  Also rename any existing auto save file, if it was made in this session."
@@@ -5615,14 -5523,12 +5616,14 @@@ preference to the program given by thi
  
  (defun get-free-disk-space (dir)
    "Return the amount of free space on directory DIR's file system.
 -The result is a string that gives the number of free 1KB blocks,
 -or nil if the system call or the program which retrieve the information
 -fail.  It returns also nil when DIR is a remote directory.
 -
 -This function calls `file-system-info' if it is available, or invokes the
 -program specified by `directory-free-space-program' if that is non-nil."
 +The return value is a string describing the amount of free
 +space (normally, the number of free 1KB blocks).
 +
 +This function calls `file-system-info' if it is available, or
 +invokes the program specified by `directory-free-space-program'
 +and `directory-free-space-args'.  If the system call or program
 +is unsuccessful, or if DIR is a remote directory, this function
 +returns nil."
    (unless (file-remote-p dir)
      ;; Try to find the number of free blocks.  Non-Posix systems don't
      ;; always have df, but might have an equivalent system call.
                                         directory-free-space-args
                                         dir)
                           0)))
 -          ;; Usual format is a header line followed by a line of
 -          ;; numbers.
 +          ;; Assume that the "available" column is before the
 +          ;; "capacity" column.  Find the "%" and scan backward.
            (goto-char (point-min))
            (forward-line 1)
 -          (if (not (eobp))
 -              (progn
 -                ;; Move to the end of the "available blocks" number.
 -                (skip-chars-forward "^ \t")
 -                (forward-word 3)
 -                ;; Copy it into AVAILABLE.
 -                (let ((end (point)))
 -                  (forward-word -1)
 -                  (buffer-substring (point) end))))))))))
 +          (when (re-search-forward
 +                 "[[:space:]]+[^[:space:]]+%[^%]*$"
 +                 (line-end-position) t)
 +            (goto-char (match-beginning 0))
 +            (let ((endpt (point)))
 +              (skip-chars-backward "^[:space:]")
 +              (buffer-substring-no-properties (point) endpt)))))))))
  
  ;; The following expression replaces `dired-move-to-filename-regexp'.
  (defvar directory-listing-before-filename-regexp
@@@ -6444,4 -6352,5 +6445,4 @@@ Otherwise, trash FILENAME using the fre
  (define-key ctl-x-5-map "r" 'find-file-read-only-other-frame)
  (define-key ctl-x-5-map "\C-o" 'display-buffer-other-frame)
  
 -;; arch-tag: bc68d3ea-19ca-468b-aac6-3a4a7766101f
  ;;; files.el ends here
index a3609c0ccfc053936b40141d87ccca78e278ac60,049a3fcc1cb699deba5fbc1894235e5dd542130e..2b193fbe42a8f8ded897393ec8c4560acbb40e0e
  
      (define-key-after map [describe-language-environment]
        `(menu-item ,(purecopy "Describe Language Environment")
 -            describe-language-environment-map
 +            ,describe-language-environment-map
              :help ,(purecopy "Show multilingual settings for a specific language")))
      (define-key-after map [describe-input-method]
        `(menu-item ,(purecopy "Describe Input Method...") describe-input-method
@@@ -286,8 -286,9 +286,8 @@@ wrong, use this command again to toggl
    "Display the HELLO file, which lists many languages and characters."
    (interactive)
    ;; We have to decode the file in any environment.
 -  (letf (((default-value 'enable-multibyte-characters) t)
 -       (coding-system-for-read 'iso-2022-7bit))
 -      (view-file (expand-file-name "HELLO" data-directory))))
 +  (letf ((coding-system-for-read 'iso-2022-7bit))
 +    (view-file (expand-file-name "HELLO" data-directory))))
  
  (defun universal-coding-system-argument (coding-system)
    "Execute an I/O command using the specified coding system."
@@@ -2033,10 -2034,11 +2033,11 @@@ See `set-language-info-alist' for use i
    "Do various unibyte-mode setups for language environment LANGUAGE-NAME."
    (set-display-table-and-terminal-coding-system language-name))
  
- (defsubst princ-list (&rest args)
+ (defun princ-list (&rest args)
    "Print all arguments with `princ', then print \"\\n\"."
    (while args (princ (car args)) (setq args (cdr args)))
    (princ "\n"))
+ (make-obsolete 'princ-list "use mapc and princ instead" "23.3")
  
  (put 'describe-specified-language-support 'apropos-inhibit t)
  
      ("af" . "Latin-1") ; Afrikaans
      ("am" "Ethiopic" utf-8) ; Amharic
      ("an" . "Latin-9") ; Aragonese
 -    ; ar Arabic glibc uses 8859-6
 +    ("ar" . "Arabic")
      ; as Assamese
      ; ay Aymara
      ("az" . "UTF-8") ; Azerbaijani
@@@ -2882,10 -2884,8 +2883,10 @@@ on encoding.
    :group 'mule
    :global t)
  
 -(defvar nonascii-insert-offset 0 "This variable is obsolete.")
 -(defvar nonascii-translation-table nil "This variable is obsolete.")
 +(defvar nonascii-insert-offset 0)
 +(make-obsolete-variable 'nonascii-insert-offset "do not use it." "23.1")
 +(defvar nonascii-translation-table nil)
 +(make-obsolete-variable 'nonascii-translation-table "do not use it." "23.1")
  
  (defvar ucs-names nil
    "Alist of cached (CHAR-NAME . CHAR-CODE) pairs.")
    (or ucs-names
        (let ((bmp-ranges
             '((#x0000 . #x33FF)
 -             ;; (#x3400 . #x4DBF) CJK Ideograph Extension A
 +             ;; (#x3400 . #x4DBF) CJK Ideographs Extension A
               (#x4DC0 . #x4DFF)
 -             ;; (#x4E00 . #x9FFF) CJK Ideograph
 -             (#xA000 . #x0D7FF)
 +             ;; (#x4E00 . #x9FFF) CJK Unified Ideographs
 +             (#xA000 . #xD7FF)
               ;; (#xD800 . #xFAFF) Surrogate/Private
               (#xFB00 . #xFFFD)))
            (upper-ranges
             '((#x10000 . #x134FF)
 -             ;; (#x13500 . #x1CFFF) unused
 +             ;; (#x13500 . #x167FF) unused
 +             (#x16800 . #x16A3F)
 +             ;; (#x16A40 . #x1AFFF) unused
 +             (#x1B000 . #x1B0FF)
 +             ;; (#x1B100 . #x1CFFF) unused
               (#x1D000 . #x1FFFF)
               ;; (#x20000 . #xDFFFF) CJK Ideograph Extension A, B, etc, unused
               (#xE0000 . #xE01FF)))
diff --combined lisp/locate.el
index f1983a3e18a28c0f404bdf32e50421bf5f4a6304,ce1154c97399889d25dc4c304bee279190f58421..f58b95710e24f17aeef86ab339f8c28cf1c2bab1
@@@ -270,7 -270,7 +270,7 @@@ that is, with a prefix arg, you get th
  (defun locate (search-string &optional filter arg)
    "Run the program `locate', putting results in `*Locate*' buffer.
  Pass it SEARCH-STRING as argument.  Interactively, prompt for SEARCH-STRING.
- With prefix arg, prompt for the exact shell command to run instead.
+ With prefix arg ARG, prompt for the exact shell command to run instead.
  
  This program searches for those file names in a database that match
  SEARCH-STRING and normally outputs all matching absolute file names,
@@@ -286,7 -286,8 +286,8 @@@ the variables `locate-command' or `loca
  The main use of FILTER is to implement `locate-with-filter'.  See
  the docstring of that function for its meaning.
  
- ARG is the interactive prefix arg."
+ After preparing the results buffer, this runs `dired-mode-hook' and
+ then `locate-post-command-hook'."
    (interactive
     (list
      (locate-prompt-for-search-string)
         (locate-cmd-args (cdr locate-cmd-list))
         (run-locate-command
          (or (and arg (not locate-prompt-for-command))
-             (and (not arg) locate-prompt-for-command)))
-        )
+             (and (not arg) locate-prompt-for-command))))
  
      ;; Find the Locate buffer
      (save-window-excursion
        (and filter
             (locate-filter-output filter))
  
-       (locate-do-setup search-string)
-       ))
+       (locate-do-setup search-string)))
      (and (not (string-equal (buffer-name) locate-buffer-name))
 -      (switch-to-buffer-other-window locate-buffer-name))
 +      (pop-to-buffer locate-buffer-name))
  
      (run-hooks 'dired-mode-hook)
      (dired-next-line 3)                       ;move to first matching file.
-     (run-hooks 'locate-post-command-hook)
-     )
-   )
+     (run-hooks 'locate-post-command-hook)))
  
  ;;;###autoload
  (defun locate-with-filter (search-string filter &optional arg)
@@@ -447,6 -444,7 +444,7 @@@ file name or is inside a subdirectory.
  \\<locate-mode-map>\
  In that buffer, you can use almost all the usual dired bindings.
  \\[locate-find-directory] visits the directory of the file on the current line.
+ This function runs `locate-mode-hook' before returning.
  
  Operating on listed files works, but does not always
  automatically update the buffer as in ordinary Dired.
@@@ -687,5 -685,4 +685,4 @@@ the database on the command line.
  
  (provide 'locate)
  
- ;; arch-tag: 60c4d098-b5d5-4b3c-a3e0-51a2e9f43898
  ;;; locate.el ends here
diff --combined lisp/ls-lisp.el
index f19143228c50e6ea6628e268c4e2cbbe25079410,b01ad6f9510105c2e972ad7d8ee7ef6e0551ccc5..15299bc304ef7e91f18b8218d470df56f5987963
@@@ -7,7 -7,6 +7,7 @@@
  ;; Modified by: Francis J. Wright <F.J.Wright@maths.qmw.ac.uk>
  ;; Maintainer: FSF
  ;; Keywords: unix, dired
 +;; Package: emacs
  
  ;; This file is part of GNU Emacs.
  
@@@ -220,7 -219,8 +220,8 @@@ The Lisp emulation does not run any ext
  supports ordinary shell wildcards if `ls-lisp-support-shell-wildcards'
  is non-nil; otherwise, it interprets wildcards as regular expressions
  to match file names.  It does not support all `ls' switches -- those
- that work are: A a c i r S s t u U X g G B C R n and F partly."
+ that work are: A a B C c F G g h i n R r S s t U u X.  The l switch
+ is assumed to be always present and cannot be turned off."
    (if ls-lisp-use-insert-directory-program
        (funcall original-insert-directory
               file switches wildcard full-directory-p)
diff --combined lisp/minibuffer.el
index 2612dfd672cf6c5d9ad1590b03314eb76b5b84e6,006e873ac5707d220d8a67f1e29c254d56c9f12e..0275dc1923b5ce9fe6599f4e5907b73b42e1aca9
@@@ -3,7 -3,6 +3,7 @@@
  ;; Copyright (C) 2008, 2009, 2010  Free Software Foundation, Inc.
  
  ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 +;; Package: emacs
  
  ;; This file is part of GNU Emacs.
  
@@@ -42,7 -41,7 +42,7 @@@
  ;;   provide the start info but not the end info in
  ;;   completion-base-position.
  ;; - quoting is problematic.  E.g. the double-dollar quoting used in
- ;;   substitie-in-file-name (and hence read-file-name-internal) bumps
+ ;;   substitute-in-file-name (and hence read-file-name-internal) bumps
  ;;   into various bugs:
  ;; - choose-completion doesn't know how to quote the text it inserts.
  ;;   E.g. it fails to double the dollars in file-name completion, or
@@@ -77,9 -76,6 +77,9 @@@
  ;;     the provided string (as is the case in filecache.el), in which
  ;;     case partial-completion (for example) doesn't make any sense
  ;;     and neither does the completions-first-difference highlight.
 +;;   - indicate how to display the completions in *Completions* (turn
 +;;     \n into something else, add special boundaries between
 +;;     completions).  E.g. when completing from the kill-ring.
  
  ;; - make partial-completion-mode obsolete:
  ;;   - (?) <foo.h> style completion for file names.
@@@ -411,12 -407,6 +411,12 @@@ Furthermore, for completions that are d
  the method is applied to all the preceding fields that do not yet match.
  E.g. C-x C-f /u/mo/s TAB could complete to /usr/monnier/src.
  Additionally the user can use the char \"*\" as a glob pattern.")
 +    (substring
 +     completion-substring-try-completion completion-substring-all-completions
 +     "Completion of the string taken as a substring.
 +I.e. when completing \"foo_bar\" (where _ is the position of point),
 +it will consider all completions candidates matching the glob
 +pattern \"*foo*bar*\".")
      (initials
       completion-initials-try-completion completion-initials-all-completions
       "Completion of acronyms and initialisms.
@@@ -514,22 -504,6 +514,22 @@@ Moves point to the end of the new text.
      (delete-region (point) (+ (point) (- end beg)))
      (forward-char suffix-len)))
  
 +(defcustom completion-cycle-threshold nil
 +  "Number of completion candidates below which cycling is used.
 +Depending on this setting `minibuffer-complete' may use cycling,
 +like `minibuffer-force-complete'.
 +If nil, cycling is never used.
 +If t, cycling is always used.
 +If an integer, cycling is used as soon as there are fewer completion
 +candidates than this number."
 +  :type '(choice (const :tag "No cycling" nil)
 +          (const :tag "Always cycle" t)
 +          (integer :tag "Threshold")))
 +
 +(defvar completion-all-sorted-completions nil)
 +(make-variable-buffer-local 'completion-all-sorted-completions)
 +(defvar completion-cycling nil)
 +
  (defun completion--do-completion (&optional try-completion-function)
    "Do the completion and return a summary of what happened.
  M = completion was performed, the text was Modified.
@@@ -562,7 -536,7 +562,7 @@@ E = after completion we now have an Exa
       ((eq t comp)
        (minibuffer-hide-completions)
        (goto-char (field-end))
 -      (minibuffer--bitset nil nil t)) ;Exact and unique match.
 +      (minibuffer--bitset nil nil t))   ;Exact and unique match.
       (t
        ;; `completed' should be t if some completion was done, which doesn't
        ;; include simply changing the case of the entered string.  However,
        (forward-char (- comp-pos (length completion)))
  
          (if (not (or unchanged completed))
 -         ;; The case of the string changed, but that's all.  We're not sure
 -         ;; whether this is a unique completion or not, so try again using
 -         ;; the real case (this shouldn't recurse again, because the next
 -         ;; time try-completion will return either t or the exact string).
 -           (completion--do-completion try-completion-function)
 +            ;; The case of the string changed, but that's all.  We're not sure
 +            ;; whether this is a unique completion or not, so try again using
 +            ;; the real case (this shouldn't recurse again, because the next
 +            ;; time try-completion will return either t or the exact string).
 +            (completion--do-completion try-completion-function)
  
            ;; It did find a match.  Do we match some possibility exactly now?
            (let ((exact (test-completion completion
                                        minibuffer-completion-table
 -                                      minibuffer-completion-predicate)))
 -            (if completed
 -                ;; We could also decide to refresh the completions,
 -                ;; if they're displayed (and assuming there are
 -                ;; completions left).
 -                (minibuffer-hide-completions)
 -              ;; Show the completion table, if requested.
 -              (cond
 -               ((not exact)
 -                (if (case completion-auto-help
 -                      (lazy (eq this-command last-command))
 -                      (t completion-auto-help))
 -                    (minibuffer-completion-help)
 -                  (minibuffer-message "Next char not unique")))
 -               ;; If the last exact completion and this one were the same, it
 -               ;; means we've already given a "Next char not unique" message
 -               ;; and the user's hit TAB again, so now we give him help.
 -               ((eq this-command last-command)
 -                (if completion-auto-help (minibuffer-completion-help)))))
 +                                      minibuffer-completion-predicate))
 +                (comps
 +                 ;; Check to see if we want to do cycling.  We do it
 +                 ;; here, after having performed the normal completion,
 +                 ;; so as to take advantage of the difference between
 +                 ;; try-completion and all-completions, for things
 +                 ;; like completion-ignored-extensions.
 +                 (when (and completion-cycle-threshold
 +                            ;; Check that the completion didn't make
 +                            ;; us jump to a different boundary.
 +                            (or (not completed)
 +                                (< (car (completion-boundaries
 +                                         (substring completion 0 comp-pos)
 +                                         minibuffer-completion-table
 +                                         minibuffer-completion-predicate
 +                                         ""))
 +                                   comp-pos)))
 +                   (completion-all-sorted-completions))))
 +            (completion--flush-all-sorted-completions)
 +            (cond
 +             ((and (consp (cdr comps)) ;; There's something to cycle.
 +                   (not (ignore-errors
 +                          ;; This signal an (intended) error if comps is too
 +                          ;; short or if completion-cycle-threshold is t.
 +                          (consp (nthcdr completion-cycle-threshold comps)))))
 +              ;; Fewer than completion-cycle-threshold remaining
 +              ;; completions: let's cycle.
 +              (setq completed t exact t)
 +              (setq completion-all-sorted-completions comps)
 +              (minibuffer-force-complete))
 +             (completed
 +              ;; We could also decide to refresh the completions,
 +              ;; if they're displayed (and assuming there are
 +              ;; completions left).
 +              (minibuffer-hide-completions))
 +             ;; Show the completion table, if requested.
 +             ((not exact)
 +              (if (case completion-auto-help
 +                    (lazy (eq this-command last-command))
 +                    (t completion-auto-help))
 +                  (minibuffer-completion-help)
 +                (minibuffer-message "Next char not unique")))
 +             ;; If the last exact completion and this one were the same, it
 +             ;; means we've already given a "Next char not unique" message
 +             ;; and the user's hit TAB again, so now we give him help.
 +             ((eq this-command last-command)
 +              (if completion-auto-help (minibuffer-completion-help))))
  
              (minibuffer--bitset completed t exact))))))))
  
@@@ -651,26 -597,21 +651,26 @@@ scroll the window of possible completio
    ;; If the previous command was not this,
    ;; mark the completion buffer obsolete.
    (unless (eq this-command last-command)
 +    (completion--flush-all-sorted-completions)
      (setq minibuffer-scroll-window nil))
  
 -  (let ((window minibuffer-scroll-window))
 +  (cond
      ;; If there's a fresh completion window with a live buffer,
      ;; and this command is repeated, scroll that window.
 -    (if (window-live-p window)
 +   ((window-live-p minibuffer-scroll-window)
 +    (let ((window minibuffer-scroll-window))
          (with-current-buffer (window-buffer window)
            (if (pos-visible-in-window-p (point-max) window)
              ;; If end is in view, scroll up to the beginning.
              (set-window-start window (point-min) nil)
            ;; Else scroll down one screen.
            (scroll-other-window))
 -        nil)
 -
 -      (case (completion--do-completion)
 +        nil)))
 +   ;; If we're cycling, keep on cycling.
 +   ((and completion-cycling completion-all-sorted-completions)
 +    (minibuffer-force-complete)
 +    t)
 +   (t (case (completion--do-completion)
          (#b000 nil)
          (#b001 (minibuffer-message "Sole completion")
                 t)
                 t)
          (t     t)))))
  
 -(defvar completion-all-sorted-completions nil)
 -(make-variable-buffer-local 'completion-all-sorted-completions)
 -
  (defun completion--flush-all-sorted-completions (&rest ignore)
 +  (setq completion-cycling nil)
    (setq completion-all-sorted-completions nil))
  
  (defun completion-all-sorted-completions ()
@@@ -721,7 -664,6 +721,7 @@@ Repeated uses step through the possibl
           (all (completion-all-sorted-completions)))
      (if (not (consp all))
          (minibuffer-message (if all "No more completions" "No completions"))
 +      (setq completion-cycling t)
        (goto-char end)
        (insert (car all))
        (delete-region (+ start (cdr (last all))) end)
@@@ -917,13 -859,13 +917,13 @@@ Return nil if there is no valid complet
  (defface completions-annotations '((t :inherit italic))
    "Face to use for annotations in the *Completions* buffer.")
  
 -(defcustom completions-format nil
 +(defcustom completions-format 'horizontal
    "Define the appearance and sorting of completions.
  If the value is `vertical', display completions sorted vertically
  in columns in the *Completions* buffer.
 -If the value is `horizontal' or nil, display completions sorted
 +If the value is `horizontal', display completions sorted
  horizontally in alphabetical order, rather than down the screen."
 -  :type '(choice (const nil) (const horizontal) (const vertical))
 +  :type '(choice (const horizontal) (const vertical))
    :group 'minibuffer
    :version "23.2")
  
@@@ -1133,6 -1075,7 +1133,7 @@@ variables."
    (interactive)
    (message "Making completion list...")
    (lexical-let* ((start (field-beginning))
+                  (end (field-end))
                 (string (field-string))
                 (completions (completion-all-completions
                               string
                              completions)))
              (with-current-buffer standard-output
                (set (make-local-variable 'completion-base-position)
-                    ;; FIXME: We should provide the END part as well, but
-                    ;; currently completion-all-completions does not give
-                    ;; us the necessary information.
-                    (list (+ start base-size) nil)))
+                    (list (+ start base-size)
+                          ;; FIXME: We should pay attention to completion
+                          ;; boundaries here, but currently
+                          ;; completion-all-completions does not give us the
+                          ;; necessary information.
+                          end)))
              (display-completion-list completions)))
  
        ;; If there are no completions, or if the current input is already the
@@@ -1231,7 -1176,7 +1234,7 @@@ Point needs to be somewhere between STA
            (call-interactively 'minibuffer-complete)
          (delete-overlay ol)))))
  
 -(defvar completion-at-point-functions nil
 +(defvar completion-at-point-functions '(tags-completion-at-point-function)
    "Special hook to find the completion table for the thing at point.
  It is called without any argument and should return either nil,
  or a function of no argument to perform completion (discouraged),
@@@ -1243,31 -1188,24 +1246,31 @@@ Currently supported properties are
   `:predicate'           a predicate that completion candidates need to satisfy.
   `:annotation-function' the value to use for `completion-annotate-function'.")
  
 -(defun completion-at-point ()
 -  "Complete the thing at point according to local mode.
 -This runs the hook `completion-at-point-functions' until a member returns
 -non-nil."
 -  (interactive)
 -  (let ((res (run-hook-with-args-until-success
 -              'completion-at-point-functions)))
 -    (cond
 -     ((functionp res) (funcall res))
 -     (res
 -      (let* ((plist (nthcdr 3 res))
 -             (start (nth 0 res))
 -             (end (nth 1 res))
 -             (completion-annotate-function
 -              (or (plist-get plist :annotation-function)
 -                  completion-annotate-function)))
 -        (completion-in-region start end (nth 2 res)
 -                              (plist-get plist :predicate)))))))
 +(defun completion-at-point (&optional arg)
 +  "Perform completion on the text around point.
 +The completion method is determined by `completion-at-point-functions'.
 +
 +With a prefix argument, this command does completion within
 +the collection of symbols listed in the index of the manual for the
 +language you are using."
 +  (interactive "P")
 +  (if arg
 +      (info-complete-symbol)
 +    (let ((res (run-hook-with-args-until-success
 +              'completion-at-point-functions)))
 +      (cond
 +       ((functionp res) (funcall res))
 +       (res
 +      (let* ((plist (nthcdr 3 res))
 +             (start (nth 0 res))
 +             (end (nth 1 res))
 +             (completion-annotate-function
 +              (or (plist-get plist :annotation-function)
 +                  completion-annotate-function)))
 +        (completion-in-region start end (nth 2 res)
 +                              (plist-get plist :predicate))))))))
 +
 +(define-obsolete-function-alias 'complete-symbol 'completion-at-point "24.1")
  
  ;;; Key bindings.
  
@@@ -1367,19 -1305,12 +1370,19 @@@ same as `substitute-in-file-name'.
     ((eq (car-safe action) 'boundaries)
      (let ((start (length (file-name-directory string)))
            (end (string-match-p "/" (cdr action))))
 -      (list* 'boundaries start end)))
 -
 -     ((eq action 'lambda)
 -      (if (zerop (length string))
 -          nil    ;Not sure why it's here, but it probably doesn't harm.
 -        (funcall (or pred 'file-exists-p) string)))
 +      (list* 'boundaries
 +             ;; if `string' is "C:" in w32, (file-name-directory string)
 +             ;; returns "C:/", so `start' is 3 rather than 2.
 +             ;; Not quite sure what is The Right Fix, but clipping it
 +             ;; back to 2 will work for this particular case.  We'll
 +             ;; see if we can come up with a better fix when we bump
 +             ;; into more such problematic cases.
 +             (min start (length string)) end)))
 +
 +   ((eq action 'lambda)
 +    (if (zerop (length string))
 +        nil    ;Not sure why it's here, but it probably doesn't harm.
 +      (funcall (or pred 'file-exists-p) string)))
  
     (t
        (let* ((name (file-name-nondirectory string))
@@@ -1427,20 -1358,19 +1430,20 @@@ except that it passes the file name thr
    (cond
     ((eq (car-safe action) 'boundaries)
      ;; For the boundaries, we can't really delegate to
 -    ;; completion-file-name-table and then fix them up, because it
 -    ;; would require us to track the relationship between `str' and
 +    ;; substitute-in-file-name+completion-file-name-table and then fix
 +    ;; them up (as we do for the other actions), because it would
 +    ;; require us to track the relationship between `str' and
      ;; `string', which is difficult.  And in any case, if
 -    ;; substitute-in-file-name turns "fo-$TO-ba" into "fo-o/b-ba", there's
 -    ;; no way for us to return proper boundaries info, because the
 -    ;; boundary is not (yet) in `string'.
 -    ;; FIXME: Actually there is a way to return correct boundaries info,
 -    ;; at the condition of modifying the all-completions return accordingly.
 -    (let ((start (length (file-name-directory string)))
 -          (end (string-match-p "/" (cdr action))))
 -      (list* 'boundaries start end)))
 +    ;; substitute-in-file-name turns "fo-$TO-ba" into "fo-o/b-ba",
 +    ;; there's no way for us to return proper boundaries info, because
 +    ;; the boundary is not (yet) in `string'.
 +    ;;
 +    ;; FIXME: Actually there is a way to return correct boundaries
 +    ;; info, at the condition of modifying the all-completions
 +    ;; return accordingly. But for now, let's not bother.
 +    (completion-file-name-table string pred action))
  
 -       (t
 +   (t
      (let* ((default-directory
               (if (stringp pred)
                   ;; It used to be that `pred' was abused to pass `dir'
                      (substitute-in-file-name string)
                    (error string)))
             (comp (completion-file-name-table
 -                  str (or pred read-file-name-predicate) action)))
 +                  str
 +                (with-no-warnings (or pred read-file-name-predicate))
 +                action)))
  
        (cond
         ((stringp comp)
@@@ -1784,12 -1712,6 +1787,12 @@@ Return the new suffix.
      ;; Nothing to merge.
      suffix))
  
 +(defun completion-basic--pattern (beforepoint afterpoint bounds)
 +  (delete
 +   "" (list (substring beforepoint (car bounds))
 +            'point
 +            (substring afterpoint 0 (cdr bounds)))))
 +
  (defun completion-basic-try-completion (string table pred point)
    (lexical-let*
        ((beforepoint (substring string 0 point))
@@@ -1860,14 -1782,6 +1863,14 @@@ expression (not containing character ra
    :group 'minibuffer
    :type 'string)
  
 +(defcustom completion-pcm-complete-word-inserts-delimiters nil
 +  "Treat the SPC or - inserted by `minibuffer-complete-word' as delimiters.
 +Those chars are treated as delimiters iff this variable is non-nil.
 +I.e. if non-nil, M-x SPC will just insert a \"-\" in the minibuffer, whereas
 +if nil, it will list all possible commands in *Completions* because none of
 +the commands start with a \"-\" or a SPC."
 +  :type 'boolean)
 +
  (defun completion-pcm--pattern-trivial-p (pattern)
    (and (stringp (car pattern))
         ;; It can be followed by `point' and "" and still be trivial.
  (defun completion-pcm--string->pattern (string &optional point)
    "Split STRING into a pattern.
  A pattern is a list where each element is either a string
 -or a symbol chosen among `any', `star', `point'."
 +or a symbol chosen among `any', `star', `point', `prefix'."
    (if (and point (< point (length string)))
        (let ((prefix (substring string 0 point))
              (suffix (substring string point)))
  
        (while (and (setq p (string-match completion-pcm--delim-wild-regex
                                          string p))
 -                  ;; If the char was added by minibuffer-complete-word, then
 -                  ;; don't treat it as a delimiter, otherwise "M-x SPC"
 -                  ;; ends up inserting a "-" rather than listing
 -                  ;; all completions.
 -                  (not (get-text-property p 'completion-try-word string)))
 +                  (or completion-pcm-complete-word-inserts-delimiters
 +                      ;; If the char was added by minibuffer-complete-word,
 +                      ;; then don't treat it as a delimiter, otherwise
 +                      ;; "M-x SPC" ends up inserting a "-" rather than listing
 +                      ;; all completions.
 +                      (not (get-text-property p 'completion-try-word string))))
          ;; Usually, completion-pcm--delim-wild-regex matches a delimiter,
          ;; meaning that something can be added *before* it, but it can also
          ;; match a prefix and postfix, in which case something can be added
           (concat "\\`"
                   (mapconcat
                    (lambda (x)
 -                    (case x
 -                      ((star any point)
 -                       (if (if (consp group) (memq x group) group)
 -                           "\\(.*?\\)" ".*?"))
 -                      (t (regexp-quote x))))
 +                    (cond
 +                     ((stringp x) (regexp-quote x))
 +                     ((if (consp group) (memq x group) group) "\\(.*?\\)")
 +                   (t ".*?")))
                    pattern
                    ""))))
      ;; Avoid pathological backtracking.
@@@ -2083,17 -1997,6 +2086,17 @@@ 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))))
 +
  (defun completion-pcm--merge-completions (strs pattern)
    "Extract the commonality in STRS, with the help of PATTERN."
    ;; When completing while ignoring case, we want to try and avoid
                  ;; `any' into a `star' because the surrounding context has
                  ;; changed such that string->pattern wouldn't add an `any'
                  ;; here any more.
 -                (unless unique (push elem res))
 +                (unless unique
 +                  (push elem res)
 +                  (when (memq elem '(star point prefix))
 +                    ;; Extract common suffix additionally to common prefix.
 +                    ;; Only do it for `point', `star', and `prefix' since for
 +                    ;; `any' it could lead to a merged completion that
 +                    ;; doesn't itself match the candidates.
 +                    (let ((suffix (completion--common-suffix comps)))
 +                      (assert (stringp suffix))
 +                      (unless (equal suffix "")
 +                        (push suffix res)))))
                  (setq fixed "")))))
          ;; We return it in reverse order.
          res)))))
    (mapconcat (lambda (x) (cond
                       ((stringp x) x)
                       ((eq x 'star) "*")
 -                     ((eq x 'any) "")
 -                     ((eq x 'point) "")))
 +                     (t "")))           ;any, point, prefix.
               pattern
               ""))
  
               (pointpat (or (memq 'point mergedpat)
                             (memq 'any   mergedpat)
                             (memq 'star  mergedpat)
 +                           ;; Not `prefix'.
                           mergedpat))
               ;; New pos from the start.
               (newpos (length (completion-pcm--pattern->string pointpat)))
             'completion-pcm--filename-try-filter))
      (completion-pcm--merge-try pattern all prefix suffix)))
  
 -;;; Initials completion
 +;;; Substring completion
 +;; Mostly derived from the code of `basic' completion.
 +
 +(defun completion-substring--all-completions (string table pred point)
 +  (let* ((beforepoint (substring string 0 point))
 +         (afterpoint (substring string point))
 +         (bounds (completion-boundaries beforepoint table pred afterpoint))
 +         (suffix (substring afterpoint (cdr bounds)))
 +         (prefix (substring beforepoint 0 (car bounds)))
 +         (basic-pattern (completion-basic--pattern
 +                         beforepoint afterpoint bounds))
 +         (pattern (if (not (stringp (car basic-pattern)))
 +                      basic-pattern
 +                    (cons 'prefix basic-pattern)))
 +         (all (completion-pcm--all-completions prefix pattern table pred)))
 +    (list all pattern prefix suffix (car bounds))))
 +
 +(defun completion-substring-try-completion (string table pred point)
 +  (destructuring-bind (all pattern prefix suffix carbounds)
 +      (completion-substring--all-completions string table pred point)
 +    (if minibuffer-completing-file-name
 +        (setq all (completion-pcm--filename-try-filter all)))
 +    (completion-pcm--merge-try pattern all prefix suffix)))
 +
 +(defun completion-substring-all-completions (string table pred point)
 +  (destructuring-bind (all pattern prefix suffix carbounds)
 +      (completion-substring--all-completions string table pred point)
 +    (when all
 +      (nconc (completion-pcm--hilit-commonality pattern all)
 +             (length prefix)))))
 +
 +;; Initials completion
  ;; Complete /ums to /usr/monnier/src or lch to list-command-history.
  
  (defun completion-initials-expand (str table pred)
diff --combined lisp/net/tramp.el
index 1ca46d213d3a959df4b7ed06584802ddbdf5c3c3,17c8c074c464668c0912a299e78eb67b15a1f31f..e5ebe81ce292b5e1b3410987bc83cbe3f85152e4
@@@ -3,10 -3,11 +3,10 @@@
  ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
  ;;   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
  
 -;; (copyright statements below in code to be updated with the above notice)
 -
  ;; Author: Kai Großjohann <kai.grossjohann@gmx.net>
  ;;         Michael Albinus <michael.albinus@gmx.de>
  ;; Keywords: comm, processes
 +;; Package: tramp
  
  ;; This file is part of GNU Emacs.
  
  
  ;;; Code:
  
 -;; Since Emacs 23.1, loading messages have been disabled during
 -;; autoload.  However, loading Tramp takes a while, and it could
 -;; happen while typing a filename in the minibuffer.  Therefore, Tramp
 -;; shall inform about.
 -(when (and load-in-progress (null (current-message)))
 -  (message "Loading tramp..."))
 -
 -;; The Tramp version number and bug report address, as prepared by configure.
 -(require 'trampver)
 -(add-hook 'tramp-unload-hook
 -        (lambda ()
 -          (when (featurep 'trampver)
 -            (unload-feature 'trampver 'force))))
 -
  (require 'tramp-compat)
 -(add-hook 'tramp-unload-hook
 -        (lambda ()
 -          (when (featurep 'tramp-compat)
 -            (unload-feature 'tramp-compat 'force))))
 -
 -(require 'format-spec)
 -;; As long as password.el is not part of (X)Emacs, it shouldn't
 -;; be mandatory
 -(if (featurep 'xemacs)
 -    (load "password" 'noerror)
 -  (or (require 'password-cache nil 'noerror)
 -      (require 'password nil 'noerror))) ; from No Gnus, also in tar ball
 -
 -(require 'shell)
 -(require 'advice)
 -
 -(eval-and-compile
 -  (if (featurep 'xemacs)
 -      (load "auth-source" 'noerror)
 -    (require 'auth-source nil 'noerror)))
 -
 -;; Requiring 'tramp-cache results in an endless loop.
 -(autoload 'tramp-get-file-property "tramp-cache")
 -(autoload 'tramp-set-file-property "tramp-cache")
 -(autoload 'tramp-flush-file-property "tramp-cache")
 -(autoload 'tramp-flush-directory-property "tramp-cache")
 -(autoload 'tramp-get-connection-property "tramp-cache")
 -(autoload 'tramp-set-connection-property "tramp-cache")
 -(autoload 'tramp-flush-connection-property "tramp-cache")
 -(autoload 'tramp-parse-connection-properties "tramp-cache")
 -(add-hook 'tramp-unload-hook
 -        (lambda ()
 -          (when (featurep 'tramp-cache)
 -            (unload-feature 'tramp-cache 'force))))
 -
 -(autoload 'tramp-uuencode-region "tramp-uu"
 -  "Implementation of `uuencode' in Lisp.")
 -(add-hook 'tramp-unload-hook
 -        (lambda ()
 -          (when (featurep 'tramp-uu)
 -            (unload-feature 'tramp-uu 'force))))
 -
 -(autoload 'uudecode-decode-region "uudecode")
 -
 -;; The following Tramp packages must be loaded after tramp.el, because
 -;; they require it as well.
 -(eval-after-load "tramp"
 -  '(dolist
 -       (feature
 -      (list
 -
 -       ;; Tramp interactive commands.
 -       'tramp-cmds
 -
 -       ;; Load foreign FTP method.
 -       (if (featurep 'xemacs) 'tramp-efs 'tramp-ftp)
 -
 -       ;; tramp-smb uses "smbclient" from Samba.  Not available
 -       ;; under Cygwin and Windows, because they don't offer
 -       ;; "smbclient".  And even not necessary there, because Emacs
 -       ;; supports UNC file names like "//host/share/localname".
 -       (unless (memq system-type '(cygwin windows-nt)) 'tramp-smb)
 -
 -       ;; Load foreign FISH method.
 -       'tramp-fish
 -
 -       ;; tramp-gvfs needs D-Bus messages.  Available since Emacs 23
 -       ;; on some system types.  We don't call `dbus-ping', because
 -       ;; this would load dbus.el.
 -       (when (and (featurep 'dbusbind)
 -                  (condition-case nil
 -                      (tramp-compat-funcall 'dbus-get-unique-name :session)
 -                    (error nil))
 -                  (tramp-compat-process-running-p "gvfs-fuse-daemon"))
 -         'tramp-gvfs)
 -
 -       ;; Load gateways.  It needs `make-network-process' from Emacs 22.
 -       (when (functionp 'make-network-process) 'tramp-gw)
 -
 -       ;; tramp-imap needs both epa (from Emacs 23.1) and imap-hash
 -       ;; (from Emacs 23.2).
 -       (when (and (locate-library "epa") (locate-library "imap-hash"))
 -         'tramp-imap)))
 -
 -     (when feature
 -       ;; We have used just some basic tests, whether a package shall
 -       ;; be added.  There might still be other errors during loading,
 -       ;; which we will catch here.
 -       (catch 'tramp-loading
 -       (require feature)
 -       (add-hook 'tramp-unload-hook
 -                 `(lambda ()
 -                    (when (featurep (quote ,feature))
 -                      (unload-feature (quote ,feature) 'force)))))
 -       (unless (featurep feature)
 -       (message "Loading %s failed, ignoring this package" feature)))))
  
  ;;; User Customizable Internal Variables:
  
@@@ -175,8 -286,379 +175,8 @@@ See the variable `tramp-encoding-shell
    :group 'tramp
    :type 'string)
  
 -(defcustom tramp-inline-compress-start-size 4096
 -  "*The minimum size of compressing where inline transfer.
 -When inline transfer, compress transfered data of file
 -whose size is this value or above (up to `tramp-copy-size-limit').
 -If it is nil, no compression at all will be applied."
 -  :group 'tramp
 -  :type '(choice (const nil) integer))
 -
 -(defcustom tramp-copy-size-limit 10240
 -  "*The maximum file size where inline copying is preferred over an out-of-the-band copy.
 -If it is nil, inline out-of-the-band copy will be used without a check."
 -  :group 'tramp
 -  :type '(choice (const nil) integer))
 -
 -(defcustom tramp-terminal-type "dumb"
 -  "*Value of TERM environment variable for logging in to remote host.
 -Because Tramp wants to parse the output of the remote shell, it is easily
 -confused by ANSI color escape sequences and suchlike.  Often, shell init
 -files conditionalize this setup based on the TERM environment variable."
 -  :group 'tramp
 -  :type 'string)
 -
 -;; ksh on OpenBSD 4.5 requires, that PS1 contains a `#' character for
 -;; root users.  It uses the `$' character for other users.  In order
 -;; to guarantee a proper prompt, we use "#$" for the prompt.
 -
 -(defvar tramp-end-of-output
 -  (format
 -   "///%s#$"
 -   (md5 (concat (prin1-to-string process-environment) (current-time-string))))
 -  "String used to recognize end of output.
 -The '$' character at the end is quoted; the string cannot be
 -detected as prompt when being sent on echoing hosts, therefore.")
 -
 -(defconst tramp-initial-end-of-output "#$ "
 -  "Prompt when establishing a connection.")
 -
 -(defvar tramp-methods
 -  `(("rcp"   (tramp-login-program        "rsh")
 -             (tramp-login-args           (("%h") ("-l" "%u")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "rcp")
 -           (tramp-copy-args            (("-p" "%k") ("-r")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-copy-recursive       t)
 -           (tramp-password-end-of-line nil))
 -    ("scp"   (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "scp")
 -           (tramp-copy-args            (("-P" "%p") ("-p" "%k")
 -                                        ("-q") ("-r")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-copy-recursive       t)
 -           (tramp-password-end-of-line nil)
 -           (tramp-gw-args              (("-o"
 -                                         "GlobalKnownHostsFile=/dev/null")
 -                                        ("-o" "UserKnownHostsFile=/dev/null")
 -                                        ("-o" "StrictHostKeyChecking=no")))
 -           (tramp-default-port         22))
 -    ("scp1"  (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-1") ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "scp")
 -           (tramp-copy-args            (("-1") ("-P" "%p") ("-p" "%k")
 -                                        ("-q") ("-r")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-copy-recursive       t)
 -           (tramp-password-end-of-line nil)
 -           (tramp-gw-args              (("-o"
 -                                         "GlobalKnownHostsFile=/dev/null")
 -                                        ("-o" "UserKnownHostsFile=/dev/null")
 -                                        ("-o" "StrictHostKeyChecking=no")))
 -           (tramp-default-port         22))
 -    ("scp2"  (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-2") ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "scp")
 -           (tramp-copy-args            (("-2") ("-P" "%p") ("-p" "%k")
 -                                        ("-q") ("-r")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-copy-recursive       t)
 -           (tramp-password-end-of-line nil)
 -           (tramp-gw-args              (("-o"
 -                                         "GlobalKnownHostsFile=/dev/null")
 -                                        ("-o" "UserKnownHostsFile=/dev/null")
 -                                        ("-o" "StrictHostKeyChecking=no")))
 -           (tramp-default-port         22))
 -    ("scp1_old"
 -             (tramp-login-program        "ssh1")
 -           (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "scp1")
 -           (tramp-copy-args            (("-p" "%k") ("-r")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-copy-recursive       t)
 -           (tramp-password-end-of-line nil))
 -    ("scp2_old"
 -             (tramp-login-program        "ssh2")
 -           (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "scp2")
 -           (tramp-copy-args            (("-p" "%k") ("-r")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-copy-recursive       t)
 -           (tramp-password-end-of-line nil))
 -    ("sftp"  (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "sftp")
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil))
 -    ("rsync" (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "rsync")
 -           (tramp-copy-args            (("-e" "ssh") ("-t" "%k") ("-r")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-copy-keep-tmpfile    t)
 -           (tramp-copy-recursive       t)
 -           (tramp-password-end-of-line nil))
 -    ("rsyncc"
 -             (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-o" "ControlPath=%t.%%r@%%h:%%p")
 -                                        ("-o" "ControlMaster=yes")
 -                                        ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "rsync")
 -           (tramp-copy-args            (("-t" "%k") ("-r")))
 -           (tramp-copy-env             (("RSYNC_RSH")
 -                                        (,(concat
 -                                           "ssh"
 -                                           " -o ControlPath=%t.%%r@%%h:%%p"
 -                                           " -o ControlMaster=auto"))))
 -           (tramp-copy-keep-date       t)
 -           (tramp-copy-keep-tmpfile    t)
 -           (tramp-copy-recursive       t)
 -           (tramp-password-end-of-line nil))
 -    ("remcp" (tramp-login-program        "remsh")
 -             (tramp-login-args           (("%h") ("-l" "%u")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "rcp")
 -           (tramp-copy-args            (("-p" "%k")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-password-end-of-line nil))
 -    ("rsh"   (tramp-login-program        "rsh")
 -             (tramp-login-args           (("%h") ("-l" "%u")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil))
 -    ("ssh"   (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil)
 -           (tramp-gw-args              (("-o"
 -                                         "GlobalKnownHostsFile=/dev/null")
 -                                        ("-o" "UserKnownHostsFile=/dev/null")
 -                                        ("-o" "StrictHostKeyChecking=no")))
 -           (tramp-default-port         22))
 -    ("ssh1"  (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-1") ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil)
 -           (tramp-gw-args              (("-o"
 -                                         "GlobalKnownHostsFile=/dev/null")
 -                                        ("-o" "UserKnownHostsFile=/dev/null")
 -                                        ("-o" "StrictHostKeyChecking=no")))
 -           (tramp-default-port         22))
 -    ("ssh2"  (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-2") ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil)
 -           (tramp-gw-args              (("-o"
 -                                         "GlobalKnownHostsFile=/dev/null")
 -                                        ("-o" "UserKnownHostsFile=/dev/null")
 -                                        ("-o" "StrictHostKeyChecking=no")))
 -           (tramp-default-port         22))
 -    ("ssh1_old"
 -             (tramp-login-program        "ssh1")
 -           (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil))
 -    ("ssh2_old"
 -             (tramp-login-program        "ssh2")
 -           (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil))
 -    ("remsh" (tramp-login-program        "remsh")
 -             (tramp-login-args           (("%h") ("-l" "%u")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil))
 -    ("telnet"
 -             (tramp-login-program        "telnet")
 -           (tramp-login-args           (("%h") ("%p")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil)
 -           (tramp-default-port         23))
 -    ("su"    (tramp-login-program        "su")
 -             (tramp-login-args           (("-") ("%u")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil))
 -    ("sudo"  (tramp-login-program        "sudo")
 -             (tramp-login-args           (("-u" "%u")
 -                                        ("-s") ("-H") ("-p" "Password:")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil))
 -    ("scpc"  (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-o" "ControlPath=%t.%%r@%%h:%%p")
 -                                        ("-o" "ControlMaster=yes")
 -                                        ("-e" "none") ("%h")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "scp")
 -           (tramp-copy-args            (("-P" "%p") ("-p" "%k") ("-q")
 -                                        ("-o" "ControlPath=%t.%%r@%%h:%%p")
 -                                        ("-o" "ControlMaster=auto")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-password-end-of-line nil)
 -           (tramp-gw-args              (("-o"
 -                                         "GlobalKnownHostsFile=/dev/null")
 -                                        ("-o" "UserKnownHostsFile=/dev/null")
 -                                        ("-o" "StrictHostKeyChecking=no")))
 -           (tramp-default-port         22))
 -    ("scpx"  (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none") ("-t" "-t")
 -                                        ("%h") ("/bin/sh")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "scp")
 -           (tramp-copy-args            (("-p" "%k")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-password-end-of-line nil)
 -           (tramp-gw-args              (("-o"
 -                                         "GlobalKnownHostsFile=/dev/null")
 -                                        ("-o" "UserKnownHostsFile=/dev/null")
 -                                        ("-o" "StrictHostKeyChecking=no")))
 -           (tramp-default-port         22))
 -    ("sshx"  (tramp-login-program        "ssh")
 -             (tramp-login-args           (("-l" "%u") ("-p" "%p")
 -                                        ("-e" "none") ("-t" "-t")
 -                                        ("%h") ("/bin/sh")))
 -           (tramp-async-args           (("-q")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil)
 -           (tramp-gw-args              (("-o"
 -                                         "GlobalKnownHostsFile=/dev/null")
 -                                        ("-o" "UserKnownHostsFile=/dev/null")
 -                                        ("-o" "StrictHostKeyChecking=no")))
 -           (tramp-default-port         22))
 -    ("krlogin"
 -           (tramp-login-program        "krlogin")
 -           (tramp-login-args           (("%h") ("-l" "%u") ("-x")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil))
 -    ("plink" (tramp-login-program        "plink")
 -           (tramp-login-args           (("-l" "%u") ("-P" "%p")
 -                                        ("-ssh") ("%h")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line "xy") ;see docstring for "xy"
 -           (tramp-default-port         22))
 -    ("plink1"
 -           (tramp-login-program        "plink")
 -           (tramp-login-args           (("-l" "%u") ("-P" "%p")
 -                                        ("-1" "-ssh") ("%h")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line "xy") ;see docstring for "xy"
 -           (tramp-default-port         22))
 -    ("plinkx"
 -             (tramp-login-program        "plink")
 -           ;; ("%h") must be a single element, see
 -           ;; `tramp-compute-multi-hops'.
 -           (tramp-login-args           (("-load") ("%h") ("-t")
 -                                        (,(format
 -                                           "env 'TERM=%s' 'PROMPT_COMMAND=' 'PS1=%s'"
 -                                           tramp-terminal-type
 -                                           tramp-initial-end-of-output))
 -                                        ("/bin/sh")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         nil)
 -           (tramp-copy-args            nil)
 -           (tramp-copy-keep-date       nil)
 -           (tramp-password-end-of-line nil))
 -    ("pscp"  (tramp-login-program        "plink")
 -           (tramp-login-args           (("-l" "%u") ("-P" "%p")
 -                                        ("-ssh") ("%h")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "pscp")
 -           (tramp-copy-args            (("-P" "%p") ("-scp") ("-p" "%k")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-password-end-of-line "xy") ;see docstring for "xy"
 -           (tramp-default-port         22))
 -    ("psftp" (tramp-login-program        "plink")
 -           (tramp-login-args           (("-l" "%u") ("-P" "%p")
 -                                        ("-ssh") ("%h")))
 -           (tramp-remote-sh            "/bin/sh")
 -           (tramp-copy-program         "pscp")
 -           (tramp-copy-args            (("-P" "%p") ("-sftp") ("-p" "%k")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-password-end-of-line "xy")) ;see docstring for "xy"
 -    ("fcp"   (tramp-login-program        "fsh")
 -             (tramp-login-args           (("%h") ("-l" "%u") ("sh" "-i")))
 -           (tramp-remote-sh            "/bin/sh -i")
 -           (tramp-copy-program         "fcp")
 -           (tramp-copy-args            (("-p" "%k")))
 -           (tramp-copy-keep-date       t)
 -           (tramp-password-end-of-line nil)))
 +;;;###tramp-autoload
 +(defvar tramp-methods nil
    "*Alist of methods for remote files.
  This is a list of entries of the form (NAME PARAM1 PARAM2 ...).
  Each NAME stands for a remote access method.  Each PARAM is a
@@@ -318,7 -800,8 +318,7 @@@ Also see `tramp-default-method-alist'.
    :group 'tramp
    :type 'string)
  
 -(defcustom tramp-default-method-alist
 -  '(("\\`localhost\\'" "\\`root\\'" "su"))
 +(defcustom tramp-default-method-alist nil
    "*Default method to use for specific host/user pairs.
  This is an alist of items (HOST USER METHOD).  The first matching item
  specifies the method to use for a file name which does not specify a
@@@ -335,7 -818,8 +335,7 @@@ See `tramp-methods' for a list of possi
                       (regexp :tag "User regexp")
                       (string :tag "Method"))))
  
 -(defcustom tramp-default-user
 -  nil
 +(defcustom tramp-default-user nil
    "*Default user to use for transferring files.
  It is nil by default; otherwise settings in configuration files like
  \"~/.ssh/config\" would be overwritten.  Also see `tramp-default-user-alist'.
@@@ -344,7 -828,10 +344,7 @@@ This variable is regarded as obsolete, 
    :group 'tramp
    :type '(choice (const nil) string))
  
 -(defcustom tramp-default-user-alist
 -  `(("\\`su\\(do\\)?\\'" nil "root")
 -    ("\\`r\\(em\\)?\\(cp\\|sh\\)\\|telnet\\|plink1?\\'"
 -     nil ,(user-login-name)))
 +(defcustom tramp-default-user-alist nil
    "*Default user to use for specific method/host pairs.
  This is an alist of items (METHOD HOST USER).  The first matching item
  specifies the user to use for a file name which does not specify a
@@@ -359,7 -846,8 +359,7 @@@ empty string for the method name.
                       (regexp :tag "Host regexp")
                       (string :tag "User"))))
  
 -(defcustom tramp-default-host
 -  (system-name)
 +(defcustom tramp-default-host (system-name)
    "*Default host to use for transferring files.
  Useful for su and sudo methods mostly."
    :group 'tramp
@@@ -389,6 -877,39 +389,6 @@@ interpreted as a regular expression whi
     "^" (regexp-opt (list "localhost" (system-name) "127\.0\.0\.1" "::1") t) "$")
    "*Host names which are regarded as local host.")
  
 -(defconst tramp-completion-function-alist-rsh
 -  '((tramp-parse-rhosts "/etc/hosts.equiv")
 -    (tramp-parse-rhosts "~/.rhosts"))
 -  "Default list of (FUNCTION FILE) pairs to be examined for rsh methods.")
 -
 -(defconst tramp-completion-function-alist-ssh
 -  '((tramp-parse-rhosts      "/etc/hosts.equiv")
 -    (tramp-parse-rhosts      "/etc/shosts.equiv")
 -    (tramp-parse-shosts      "/etc/ssh_known_hosts")
 -    (tramp-parse-sconfig     "/etc/ssh_config")
 -    (tramp-parse-shostkeys   "/etc/ssh2/hostkeys")
 -    (tramp-parse-sknownhosts "/etc/ssh2/knownhosts")
 -    (tramp-parse-rhosts      "~/.rhosts")
 -    (tramp-parse-rhosts      "~/.shosts")
 -    (tramp-parse-shosts      "~/.ssh/known_hosts")
 -    (tramp-parse-sconfig     "~/.ssh/config")
 -    (tramp-parse-shostkeys   "~/.ssh2/hostkeys")
 -    (tramp-parse-sknownhosts "~/.ssh2/knownhosts"))
 -  "Default list of (FUNCTION FILE) pairs to be examined for ssh methods.")
 -
 -(defconst tramp-completion-function-alist-telnet
 -  '((tramp-parse-hosts "/etc/hosts"))
 -  "Default list of (FUNCTION FILE) pairs to be examined for telnet methods.")
 -
 -(defconst tramp-completion-function-alist-su
 -  '((tramp-parse-passwd "/etc/passwd"))
 -  "Default list of (FUNCTION FILE) pairs to be examined for su methods.")
 -
 -(defconst tramp-completion-function-alist-putty
 -  '((tramp-parse-putty
 -     "HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions"))
 -  "Default list of (FUNCTION REGISTRY) pairs to be examined for putty methods.")
 -
  (defvar tramp-completion-function-alist nil
    "*Alist of methods for remote files.
  This is a list of entries of the form \(NAME PAIR1 PAIR2 ...\).
@@@ -409,6 -930,63 +409,6 @@@ names from FILE for completion.  The fo
  FUNCTION can also be a customer defined function.  For more details see
  the info pages.")
  
 -(eval-after-load "tramp"
 -  '(progn
 -     (tramp-set-completion-function
 -      "rcp" tramp-completion-function-alist-rsh)
 -     (tramp-set-completion-function
 -      "scp" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "scp1" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "scp2" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "scp1_old" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "scp2_old" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "rsync" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "rsyncc" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "remcp" tramp-completion-function-alist-rsh)
 -     (tramp-set-completion-function
 -      "rsh" tramp-completion-function-alist-rsh)
 -     (tramp-set-completion-function
 -      "ssh" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "ssh1" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "ssh2" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "ssh1_old" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "ssh2_old" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "remsh" tramp-completion-function-alist-rsh)
 -     (tramp-set-completion-function
 -      "telnet" tramp-completion-function-alist-telnet)
 -     (tramp-set-completion-function
 -      "su" tramp-completion-function-alist-su)
 -     (tramp-set-completion-function
 -      "sudo" tramp-completion-function-alist-su)
 -     (tramp-set-completion-function
 -      "scpx" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "sshx" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "krlogin" tramp-completion-function-alist-rsh)
 -     (tramp-set-completion-function
 -      "plink" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "plink1" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "plinkx" tramp-completion-function-alist-putty)
 -     (tramp-set-completion-function
 -      "pscp" tramp-completion-function-alist-ssh)
 -     (tramp-set-completion-function
 -      "fcp" tramp-completion-function-alist-ssh)))
 -
  (defconst tramp-echo-mark-marker "_echo"
    "String marker to surround echoed commands.")
  
@@@ -457,6 -1035,55 +457,6 @@@ The default value is to use the same va
    :group 'tramp
    :type 'string)
  
 -;; "getconf PATH" yields:
 -;; HP-UX: /usr/bin:/usr/ccs/bin:/opt/ansic/bin:/opt/langtools/bin:/opt/fortran/bin
 -;; Solaris: /usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin
 -;; GNU/Linux (Debian, Suse): /bin:/usr/bin
 -;; FreeBSD: /usr/bin:/bin:/usr/sbin:/sbin: - beware trailing ":"!
 -;; IRIX64: /usr/bin
 -(defcustom tramp-remote-path
 -  '(tramp-default-remote-path "/usr/sbin" "/usr/local/bin"
 -    "/local/bin" "/local/freeware/bin" "/local/gnu/bin"
 -    "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin")
 -  "*List of directories to search for executables on remote host.
 -For every remote host, this variable will be set buffer local,
 -keeping the list of existing directories on that host.
 -
 -You can use `~' in this list, but when searching for a shell which groks
 -tilde expansion, all directory names starting with `~' will be ignored.
 -
 -`Default Directories' represent the list of directories given by
 -the command \"getconf PATH\".  It is recommended to use this
 -entry on top of this list, because these are the default
 -directories for POSIX compatible commands.
 -
 -`Private Directories' are the settings of the $PATH environment,
 -as given in your `~/.profile'."
 -  :group 'tramp
 -  :type '(repeat (choice
 -                (const :tag "Default Directories" tramp-default-remote-path)
 -                (const :tag "Private Directories" tramp-own-remote-path)
 -                (string :tag "Directory"))))
 -
 -(defcustom tramp-remote-process-environment
 -  `("HISTFILE=$HOME/.tramp_history" "HISTSIZE=1" "LC_ALL=C"
 -    ,(format "TERM=%s" tramp-terminal-type)
 -    "EMACS=t" ;; Deprecated.
 -    ,(format "INSIDE_EMACS='%s,tramp:%s'" emacs-version tramp-version)
 -    "CDPATH=" "HISTORY=" "MAIL=" "MAILCHECK=" "MAILPATH="
 -    "autocorrect=" "correct=")
 -
 -  "*List of environment variables to be set on the remote host.
 -
 -Each element should be a string of the form ENVVARNAME=VALUE.  An
 -entry ENVVARNAME= diables the corresponding environment variable,
 -which might have been set in the init files like ~/.profile.
 -
 -Special handling is applied to the PATH environment, which should
 -not be set here. Instead of, it should be set via `tramp-remote-path'."
 -  :group 'tramp
 -  :type '(repeat string))
 -
  (defcustom tramp-login-prompt-regexp
    ".*ogin\\( .*\\)?: *"
    "*Regexp matching login-like prompts.
@@@ -584,13 -1211,15 +584,13 @@@ The answer will be provided by `tramp-a
    :group 'tramp
    :type 'regexp)
  
 -(defcustom tramp-temp-name-prefix "tramp."
 +(defconst tramp-temp-name-prefix "tramp."
    "*Prefix to use for temporary files.
  If this is a relative file name (such as \"tramp.\"), it is considered
  relative to the directory name returned by the function
  `tramp-compat-temporary-file-directory' (which see).  It may also be an
  absolute file name; don't forget to include a prefix for the filename
 -part, though."
 -  :group 'tramp
 -  :type 'string)
 +part, though.")
  
  (defconst tramp-temp-buffer-name " *tramp temp*"
    "Buffer name for a temporary buffer.
@@@ -601,6 -1230,22 +601,6 @@@ It shall be used in combination with `g
  Useful for \"rsync\" like methods.")
  (make-variable-buffer-local 'tramp-temp-buffer-file-name)
  
 -(defcustom tramp-sh-extra-args '(("/bash\\'" . "-norc -noprofile"))
 -  "*Alist specifying extra arguments to pass to the remote shell.
 -Entries are (REGEXP . ARGS) where REGEXP is a regular expression
 -matching the shell file name and ARGS is a string specifying the
 -arguments.
 -
 -This variable is only used when Tramp needs to start up another shell
 -for tilde expansion.  The extra arguments should typically prevent the
 -shell from reading its init file."
 -  :group 'tramp
 -  ;; This might be the wrong way to test whether the widget type
 -  ;; `alist' is available.  Who knows the right way to test it?
 -  :type (if (get 'alist 'widget-type)
 -          '(alist :key-type string :value-type string)
 -        '(repeat (cons string string))))
 -
  ;; XEmacs is distributed with few Lisp packages.  Further packages are
  ;; installed using EFS.  If we use a unified filename format, then
  ;; Tramp is required in addition to EFS.  (But why can't Tramp just
@@@ -659,7 -1304,8 +659,7 @@@ Used in `tramp-make-tramp-file-name'."
    "*Regexp matching delimeter between method and user or host names.
  Derived from `tramp-postfix-method-format'.")
  
 -(defconst tramp-user-regexp
 -  "[^:/ \t]+"
 +(defconst tramp-user-regexp "[^:/ \t]+"
    "*Regexp matching user names.")
  
  (defconst tramp-prefix-domain-format "%"
    "*Regexp matching delimeter between user and domain names.
  Derived from `tramp-prefix-domain-format'.")
  
 -(defconst tramp-domain-regexp
 -  "[-a-zA-Z0-9_.]+"
 +(defconst tramp-domain-regexp "[-a-zA-Z0-9_.]+"
    "*Regexp matching domain names.")
  
  (defconst tramp-user-with-domain-regexp
          "\\(" tramp-domain-regexp "\\)")
    "*Regexp matching user names with domain names.")
  
 -(defconst tramp-postfix-user-format
 -  "@"
 +(defconst tramp-postfix-user-format "@"
    "*String matching delimeter between user and host names.
  Used in `tramp-make-tramp-file-name'.")
  
    "*Regexp matching delimeter between user and host names.
  Derived from `tramp-postfix-user-format'.")
  
 -(defconst tramp-host-regexp
 -  "[a-zA-Z0-9_.-]+"
 +(defconst tramp-host-regexp "[a-zA-Z0-9_.-]+"
    "*Regexp matching host names.")
  
  (defconst tramp-prefix-ipv6-format
@@@ -736,7 -1385,8 +736,7 @@@ Derived from `tramp-postfix-ipv6-format
    "*Regexp matching delimeter between host names and port numbers.
  Derived from `tramp-prefix-port-format'.")
  
 -(defconst tramp-port-regexp
 -  "[0-9]+"
 +(defconst tramp-port-regexp "[0-9]+"
    "*Regexp matching port numbers.")
  
  (defconst tramp-host-with-port-regexp
@@@ -758,10 -1408,11 +758,10 @@@ Used in `tramp-make-tramp-file-name'."
    "*Regexp matching delimeter between host names and localnames.
  Derived from `tramp-postfix-host-format'.")
  
 -(defconst tramp-localname-regexp
 -  ".*$"
 +(defconst tramp-localname-regexp ".*$"
    "*Regexp matching localnames.")
  
 -;; File name format.
 +;;; File name format:
  
  (defconst tramp-file-name-structure
    (list
@@@ -806,13 -1457,15 +806,13 @@@ Tramp.  See `tramp-file-name-structure
  On W32 systems, the volume letter must be ignored.")
  
  ;;;###autoload
 -(defconst tramp-file-name-regexp-separate
 -  "\\`/\\[.*\\]"
 +(defconst tramp-file-name-regexp-separate "\\`/\\[.*\\]"
    "Value for `tramp-file-name-regexp' for separate remoting.
  XEmacs uses a separate filename syntax for Tramp and EFS.
  See `tramp-file-name-structure' for more explanations.")
  
  ;;;###autoload
 -(defconst tramp-file-name-regexp-url
 -  "\\`/[^/:]+://"
 +(defconst tramp-file-name-regexp-url "\\`/[^/:]+://"
    "Value for `tramp-file-name-regexp' for URL-like remoting.
  See `tramp-file-name-structure' for more explanations.")
  
@@@ -886,6 -1539,38 +886,6 @@@ updated after changing this variable
  
  Also see `tramp-file-name-structure'.")
  
 -(defconst tramp-actions-before-shell
 -  '((tramp-login-prompt-regexp tramp-action-login)
 -    (tramp-password-prompt-regexp tramp-action-password)
 -    (tramp-wrong-passwd-regexp tramp-action-permission-denied)
 -    (shell-prompt-pattern tramp-action-succeed)
 -    (tramp-shell-prompt-pattern tramp-action-succeed)
 -    (tramp-yesno-prompt-regexp tramp-action-yesno)
 -    (tramp-yn-prompt-regexp tramp-action-yn)
 -    (tramp-terminal-prompt-regexp tramp-action-terminal)
 -    (tramp-process-alive-regexp tramp-action-process-alive))
 -  "List of pattern/action pairs.
 -Whenever a pattern matches, the corresponding action is performed.
 -Each item looks like (PATTERN ACTION).
 -
 -The PATTERN should be a symbol, a variable.  The value of this
 -variable gives the regular expression to search for.  Note that the
 -regexp must match at the end of the buffer, \"\\'\" is implicitly
 -appended to it.
 -
 -The ACTION should also be a symbol, but a function.  When the
 -corresponding PATTERN matches, the ACTION function is called.")
 -
 -(defconst tramp-actions-copy-out-of-band
 -  '((tramp-password-prompt-regexp tramp-action-password)
 -    (tramp-wrong-passwd-regexp tramp-action-permission-denied)
 -    (tramp-copy-failed-regexp tramp-action-permission-denied)
 -    (tramp-process-alive-regexp tramp-action-out-of-band))
 -  "List of pattern/action pairs.
 -This list is used for copying/renaming with out-of-band methods.
 -
 -See `tramp-actions-before-shell' for more info.")
 -
  ;; Chunked sending kludge.  We set this to 500 for black-listed constellations
  ;; known to have a bug in `process-send-string'; some ssh connections appear
  ;; to drop bytes when data is sent too quickly.  There is also a connection
@@@ -974,8 -1659,8 +974,8 @@@ A remote directory might have changed i
  make it visible during file name completion in the minibuffer,
  Tramp flushes its cache and rereads the directory contents when
  more than `tramp-completion-reread-directory-timeout' seconds
 -have been gone since last remote command execution.  A value of 0
 -would require an immediate reread during filename completion, nil
 +have been gone since last remote command execution.  A value of `t'
 +would require an immediate reread during filename completion, `nil'
  means to use always cached values for the directory contents."
    :group 'tramp
    :type '(choice (const nil) integer))
  (defvar tramp-current-host nil
    "Remote host for this *tramp* buffer.")
  
 -(defconst tramp-uudecode
 -  "(echo begin 600 /tmp/tramp.$$; tail +2) | uudecode
 -cat /tmp/tramp.$$
 -rm -f /tmp/tramp.$$"
 -  "Shell function to implement `uudecode' to standard output.
 -Many systems support `uudecode -o /dev/stdout' or `uudecode -o -'
 -for this or `uudecode -p', but some systems don't, and for them
 -we have this shell function.")
 -
 -(defconst tramp-perl-file-truename
 -  "%s -e '
 -use File::Spec;
 -use Cwd \"realpath\";
 -
 -sub recursive {
 -    my ($volume, @dirs) = @_;
 -    my $real = realpath(File::Spec->catpath(
 -                   $volume, File::Spec->catdir(@dirs), \"\"));
 -    if ($real) {
 -        my ($vol, $dir) = File::Spec->splitpath($real, 1);
 -        return ($vol, File::Spec->splitdir($dir));
 -    }
 -    else {
 -        my $last = pop(@dirs);
 -        ($volume, @dirs) = recursive($volume, @dirs);
 -        push(@dirs, $last);
 -        return ($volume, @dirs);
 -    }
 -}
 -
 -$result = realpath($ARGV[0]);
 -if (!$result) {
 -    my ($vol, $dir) = File::Spec->splitpath($ARGV[0], 1);
 -    ($vol, @dirs) = recursive($vol, File::Spec->splitdir($dir));
 -
 -    $result = File::Spec->catpath($vol, File::Spec->catdir(@dirs), \"\");
 -}
 -
 -if ($ARGV[0] =~ /\\/$/) {
 -    $result = $result . \"/\";
 -}
 -
 -print \"\\\"$result\\\"\\n\";
 -' \"$1\" 2>/dev/null"
 -  "Perl script to produce output suitable for use with `file-truename'
 -on the remote file system.
 -Escape sequence %s is replaced with name of Perl binary.
 -This string is passed to `format', so percent characters need to be doubled.")
 -
 -(defconst tramp-perl-file-name-all-completions
 -  "%s -e 'sub case {
 - my $str = shift;
 - if ($ARGV[2]) {
 -  return lc($str);
 - }
 - else {
 -  return $str;
 - }
 -}
 -opendir(d, $ARGV[0]) || die(\"$ARGV[0]: $!\\nfail\\n\");
 -@files = readdir(d); closedir(d);
 -foreach $f (@files) {
 - if (case(substr($f, 0, length($ARGV[1]))) eq case($ARGV[1])) {
 -  if (-d \"$ARGV[0]/$f\") {
 -   print \"$f/\\n\";
 -  }
 -  else {
 -   print \"$f\\n\";
 -  }
 - }
 -}
 -print \"ok\\n\"
 -' \"$1\" \"$2\" \"$3\" 2>/dev/null"
 -  "Perl script to produce output suitable for use with
 -`file-name-all-completions' on the remote file system.  Escape
 -sequence %s is replaced with name of Perl binary.  This string is
 -passed to `format', so percent characters need to be doubled.")
 -
 -;; Perl script to implement `file-attributes' in a Lisp `read'able
 -;; output.  If you are hacking on this, note that you get *no* output
 -;; unless this spits out a complete line, including the '\n' at the
 -;; end.
 -;; The device number is returned as "-1", because there will be a virtual
 -;; device number set in `tramp-handle-file-attributes'.
 -(defconst tramp-perl-file-attributes
 -  "%s -e '
 -@stat = lstat($ARGV[0]);
 -if (!@stat) {
 -    print \"nil\\n\";
 -    exit 0;
 -}
 -if (($stat[2] & 0170000) == 0120000)
 -{
 -    $type = readlink($ARGV[0]);
 -    $type = \"\\\"$type\\\"\";
 -}
 -elsif (($stat[2] & 0170000) == 040000)
 -{
 -    $type = \"t\";
 -}
 -else
 -{
 -    $type = \"nil\"
 -};
 -$uid = ($ARGV[1] eq \"integer\") ? $stat[4] : \"\\\"\" . getpwuid($stat[4]) . \"\\\"\";
 -$gid = ($ARGV[1] eq \"integer\") ? $stat[5] : \"\\\"\" . getgrgid($stat[5]) . \"\\\"\";
 -printf(
 -    \"(%%s %%u %%s %%s (%%u %%u) (%%u %%u) (%%u %%u) %%u.0 %%u t (%%u . %%u) -1)\\n\",
 -    $type,
 -    $stat[3],
 -    $uid,
 -    $gid,
 -    $stat[8] >> 16 & 0xffff,
 -    $stat[8] & 0xffff,
 -    $stat[9] >> 16 & 0xffff,
 -    $stat[9] & 0xffff,
 -    $stat[10] >> 16 & 0xffff,
 -    $stat[10] & 0xffff,
 -    $stat[7],
 -    $stat[2],
 -    $stat[1] >> 16 & 0xffff,
 -    $stat[1] & 0xffff
 -);' \"$1\" \"$2\" 2>/dev/null"
 -  "Perl script to produce output suitable for use with `file-attributes'
 -on the remote file system.
 -Escape sequence %s is replaced with name of Perl binary.
 -This string is passed to `format', so percent characters need to be doubled.")
 -
 -(defconst tramp-perl-directory-files-and-attributes
 -  "%s -e '
 -chdir($ARGV[0]) or printf(\"\\\"Cannot change to $ARGV[0]: $''!''\\\"\\n\"), exit();
 -opendir(DIR,\".\") or printf(\"\\\"Cannot open directory $ARGV[0]: $''!''\\\"\\n\"), exit();
 -@list = readdir(DIR);
 -closedir(DIR);
 -$n = scalar(@list);
 -printf(\"(\\n\");
 -for($i = 0; $i < $n; $i++)
 -{
 -    $filename = $list[$i];
 -    @stat = lstat($filename);
 -    if (($stat[2] & 0170000) == 0120000)
 -    {
 -        $type = readlink($filename);
 -        $type = \"\\\"$type\\\"\";
 -    }
 -    elsif (($stat[2] & 0170000) == 040000)
 -    {
 -        $type = \"t\";
 -    }
 -    else
 -    {
 -        $type = \"nil\"
 -    };
 -    $uid = ($ARGV[1] eq \"integer\") ? $stat[4] : \"\\\"\" . getpwuid($stat[4]) . \"\\\"\";
 -    $gid = ($ARGV[1] eq \"integer\") ? $stat[5] : \"\\\"\" . getgrgid($stat[5]) . \"\\\"\";
 -    printf(
 -        \"(\\\"%%s\\\" %%s %%u %%s %%s (%%u %%u) (%%u %%u) (%%u %%u) %%u.0 %%u t (%%u . %%u) (%%u . %%u))\\n\",
 -        $filename,
 -        $type,
 -        $stat[3],
 -        $uid,
 -        $gid,
 -        $stat[8] >> 16 & 0xffff,
 -        $stat[8] & 0xffff,
 -        $stat[9] >> 16 & 0xffff,
 -        $stat[9] & 0xffff,
 -        $stat[10] >> 16 & 0xffff,
 -        $stat[10] & 0xffff,
 -        $stat[7],
 -        $stat[2],
 -        $stat[1] >> 16 & 0xffff,
 -        $stat[1] & 0xffff,
 -        $stat[0] >> 16 & 0xffff,
 -        $stat[0] & 0xffff);
 -}
 -printf(\")\\n\");' \"$1\" \"$2\" 2>/dev/null"
 -  "Perl script implementing `directory-files-attributes' as Lisp `read'able
 -output.
 -Escape sequence %s is replaced with name of Perl binary.
 -This string is passed to `format', so percent characters need to be doubled.")
 -
 -;; ;; These two use uu encoding.
 -;; (defvar tramp-perl-encode "%s -e'\
 -;; print qq(begin 644 xxx\n);
 -;; my $s = q();
 -;; my $res = q();
 -;; while (read(STDIN, $s, 45)) {
 -;;     print pack(q(u), $s);
 -;; }
 -;; print qq(`\n);
 -;; print qq(end\n);
 -;; '"
 -;;   "Perl program to use for encoding a file.
 -;; Escape sequence %s is replaced with name of Perl binary.")
 -
 -;; (defvar tramp-perl-decode "%s -ne '
 -;; print unpack q(u), $_;
 -;; '"
 -;;   "Perl program to use for decoding a file.
 -;; Escape sequence %s is replaced with name of Perl binary.")
 -
 -;; These two use base64 encoding.
 -(defconst tramp-perl-encode-with-module
 -  "%s -MMIME::Base64 -0777 -ne 'print encode_base64($_)' 2>/dev/null"
 -  "Perl program to use for encoding a file.
 -Escape sequence %s is replaced with name of Perl binary.
 -This string is passed to `format', so percent characters need to be doubled.
 -This implementation requires the MIME::Base64 Perl module to be installed
 -on the remote host.")
 -
 -(defconst tramp-perl-decode-with-module
 -  "%s -MMIME::Base64 -0777 -ne 'print decode_base64($_)' 2>/dev/null"
 -  "Perl program to use for decoding a file.
 -Escape sequence %s is replaced with name of Perl binary.
 -This string is passed to `format', so percent characters need to be doubled.
 -This implementation requires the MIME::Base64 Perl module to be installed
 -on the remote host.")
 -
 -(defconst tramp-perl-encode
 -  "%s -e '
 -# This script contributed by Juanma Barranquero <lektu@terra.es>.
 -# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 -#   Free Software Foundation, Inc.
 -use strict;
 -
 -my %%trans = do {
 -    my $i = 0;
 -    map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)}
 -      split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/);
 -};
 -
 -binmode(\\*STDIN);
 -
 -# We read in chunks of 54 bytes, to generate output lines
 -# of 72 chars (plus end of line)
 -$/ = \\54;
 -
 -while (my $data = <STDIN>) {
 -    my $pad = q();
 -
 -    # Only for the last chunk, and only if did not fill the last three-byte packet
 -    if (eof) {
 -        my $mod = length($data) %% 3;
 -        $pad = q(=) x (3 - $mod) if $mod;
 -    }
 -
 -    # Not the fastest method, but it is simple: unpack to binary string, split
 -    # by groups of 6 bits and convert back from binary to byte; then map into
 -    # the translation table
 -    print
 -      join q(),
 -        map($trans{$_},
 -            (substr(unpack(q(B*), $data) . q(00000), 0, 432) =~ /....../g)),
 -              $pad,
 -                qq(\\n);
 -}' 2>/dev/null"
 -  "Perl program to use for encoding a file.
 -Escape sequence %s is replaced with name of Perl binary.
 -This string is passed to `format', so percent characters need to be doubled.")
 -
 -(defconst tramp-perl-decode
 -  "%s -e '
 -# This script contributed by Juanma Barranquero <lektu@terra.es>.
 -# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 -#   Free Software Foundation, Inc.
 -use strict;
 -
 -my %%trans = do {
 -    my $i = 0;
 -    map {($_, substr(unpack(q(B8), chr $i++), 2, 6))}
 -      split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)
 -};
 -
 -my %%bytes = map {(unpack(q(B8), chr $_), chr $_)} 0 .. 255;
 -
 -binmode(\\*STDOUT);
 -
 -# We are going to accumulate into $pending to accept any line length
 -# (we do not check they are <= 76 chars as the RFC says)
 -my $pending = q();
 -
 -while (my $data = <STDIN>) {
 -    chomp $data;
 -
 -    # If we find one or two =, we have reached the end and
 -    # any following data is to be discarded
 -    my $finished = $data =~ s/(==?).*/$1/;
 -    $pending .= $data;
 -
 -    my $len = length($pending);
 -    my $chunk = substr($pending, 0, $len & ~3);
 -    $pending = substr($pending, $len & ~3 + 1);
 -
 -    # Easy method: translate from chars to (pregenerated) six-bit packets, join,
 -    # split in 8-bit chunks and convert back to char.
 -    print join q(),
 -      map $bytes{$_},
 -        ((join q(), map {$trans{$_} || q()} split //, $chunk) =~ /......../g);
 -
 -    last if $finished;
 -}' 2>/dev/null"
 -  "Perl program to use for decoding a file.
 -Escape sequence %s is replaced with name of Perl binary.
 -This string is passed to `format', so percent characters need to be doubled.")
 -
 -(defconst tramp-vc-registered-read-file-names
 -  "echo \"(\"
 -while read file; do
 -    if %s \"$file\"; then
 -      echo \"(\\\"$file\\\" \\\"file-exists-p\\\" t)\"
 -    else
 -      echo \"(\\\"$file\\\" \\\"file-exists-p\\\" nil)\"
 -    fi
 -    if %s \"$file\"; then
 -      echo \"(\\\"$file\\\" \\\"file-readable-p\\\" t)\"
 -    else
 -      echo \"(\\\"$file\\\" \\\"file-readable-p\\\" nil)\"
 -    fi
 -done
 -echo \")\""
 -  "Script to check existence of VC related files.
 -It must be send formatted with two strings; the tests for file
 -existence, and file readability.  Input shall be read via
 -here-document, otherwise the command could exceed maximum length
 -of command line.")
 -
 -(defconst tramp-file-mode-type-map
 -  '((0  . "-")  ; Normal file (SVID-v2 and XPG2)
 -    (1  . "p")  ; fifo
 -    (2  . "c")  ; character device
 -    (3  . "m")  ; multiplexed character device (v7)
 -    (4  . "d")  ; directory
 -    (5  . "?")  ; Named special file (XENIX)
 -    (6  . "b")  ; block device
 -    (7  . "?")  ; multiplexed block device (v7)
 -    (8  . "-")  ; regular file
 -    (9  . "n")  ; network special file (HP-UX)
 -    (10 . "l")  ; symlink
 -    (11 . "?")  ; ACL shadow inode (Solaris, not userspace)
 -    (12 . "s")  ; socket
 -    (13 . "D")  ; door special (Solaris)
 -    (14 . "w")) ; whiteout (BSD)
 -  "A list of file types returned from the `stat' system call.
 -This is used to map a mode number to a permission string.")
 -
 -;; New handlers should be added here.  The following operations can be
 -;; handled using the normal primitives: file-name-sans-versions,
 -;; get-file-buffer.
 -(defconst tramp-file-name-handler-alist
 -  '((load . tramp-handle-load)
 -    (make-symbolic-link . tramp-handle-make-symbolic-link)
 -    (file-name-as-directory . tramp-handle-file-name-as-directory)
 -    (file-name-directory . tramp-handle-file-name-directory)
 -    (file-name-nondirectory . tramp-handle-file-name-nondirectory)
 -    (file-truename . tramp-handle-file-truename)
 -    (file-exists-p . tramp-handle-file-exists-p)
 -    (file-directory-p . tramp-handle-file-directory-p)
 -    (file-executable-p . tramp-handle-file-executable-p)
 -    (file-readable-p . tramp-handle-file-readable-p)
 -    (file-regular-p . tramp-handle-file-regular-p)
 -    (file-symlink-p . tramp-handle-file-symlink-p)
 -    (file-writable-p . tramp-handle-file-writable-p)
 -    (file-ownership-preserved-p . tramp-handle-file-ownership-preserved-p)
 -    (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
 -    (file-attributes . tramp-handle-file-attributes)
 -    (file-modes . tramp-handle-file-modes)
 -    (directory-files . tramp-handle-directory-files)
 -    (directory-files-and-attributes . tramp-handle-directory-files-and-attributes)
 -    (file-name-all-completions . tramp-handle-file-name-all-completions)
 -    (file-name-completion . tramp-handle-file-name-completion)
 -    (add-name-to-file . tramp-handle-add-name-to-file)
 -    (copy-file . tramp-handle-copy-file)
 -    (copy-directory . tramp-handle-copy-directory)
 -    (rename-file . tramp-handle-rename-file)
 -    (set-file-modes . tramp-handle-set-file-modes)
 -    (set-file-times . tramp-handle-set-file-times)
 -    (make-directory . tramp-handle-make-directory)
 -    (delete-directory . tramp-handle-delete-directory)
 -    (delete-file . tramp-handle-delete-file)
 -    (directory-file-name . tramp-handle-directory-file-name)
 -    ;; `executable-find' is not official yet.
 -    (executable-find . tramp-handle-executable-find)
 -    (start-file-process . tramp-handle-start-file-process)
 -    (process-file . tramp-handle-process-file)
 -    (shell-command . tramp-handle-shell-command)
 -    (insert-directory . tramp-handle-insert-directory)
 -    (expand-file-name . tramp-handle-expand-file-name)
 -    (substitute-in-file-name . tramp-handle-substitute-in-file-name)
 -    (file-local-copy . tramp-handle-file-local-copy)
 -    (file-remote-p . tramp-handle-file-remote-p)
 -    (insert-file-contents . tramp-handle-insert-file-contents)
 -    (insert-file-contents-literally
 -     . tramp-handle-insert-file-contents-literally)
 -    (write-region . tramp-handle-write-region)
 -    (find-backup-file-name . tramp-handle-find-backup-file-name)
 -    (make-auto-save-file-name . tramp-handle-make-auto-save-file-name)
 -    (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
 -    (dired-compress-file . tramp-handle-dired-compress-file)
 -    (dired-recursive-delete-directory
 -     . tramp-handle-dired-recursive-delete-directory)
 -    (dired-uncache . tramp-handle-dired-uncache)
 -    (set-visited-file-modtime . tramp-handle-set-visited-file-modtime)
 -    (verify-visited-file-modtime . tramp-handle-verify-visited-file-modtime)
 -    (file-selinux-context . tramp-handle-file-selinux-context)
 -    (set-file-selinux-context . tramp-handle-set-file-selinux-context)
 -    (vc-registered . tramp-handle-vc-registered))
 -  "Alist of handler functions.
 -Operations not mentioned here will be handled by the normal Emacs functions.")
 -
 -;; Handlers for partial Tramp file names.  For Emacs just
 -;; `file-name-all-completions' is needed.
  ;;;###autoload
  (defconst tramp-completion-file-name-handler-alist
    '((file-name-all-completions . tramp-completion-handle-file-name-all-completions)
      (file-name-completion . tramp-completion-handle-file-name-completion))
    "Alist of completion handler functions.
 -Used for file names matching `tramp-file-name-regexp'. Operations not
 -mentioned here will be handled by `tramp-file-name-handler-alist' or the
 -normal Emacs functions.")
 +Used for file names matching `tramp-file-name-regexp'. Operations
 +not mentioned here will be handled by Tramp's file name handler
 +functions, or the normal Emacs functions.")
  
  ;; Handlers for foreign methods, like FTP or SMB, shall be plugged here.
 -(defvar tramp-foreign-file-name-handler-alist
 -  ;; (identity . tramp-sh-file-name-handler) should always be the last
 -  ;; entry, because `identity' always matches.
 -  '((identity . tramp-sh-file-name-handler))
 +;;;###tramp-autoload
 +(defvar tramp-foreign-file-name-handler-alist nil
    "Alist of elements (FUNCTION . HANDLER) for foreign methods handled specially.
  If (FUNCTION FILENAME) returns non-nil, then all I/O on that file is done by
  calling HANDLER.")
  
  ;;; Internal functions which must come first:
  
 -(defsubst tramp-debug-message (vec fmt-string &rest args)
 -  "Append message to debug buffer.
 -Message is formatted with FMT-STRING as control string and the remaining
 -ARGS to actually emit the message (if applicable)."
 -  (when (get-buffer (tramp-buffer-name vec))
 -    (with-current-buffer (tramp-get-debug-buffer vec)
 -      (goto-char (point-max))
 -      ;; Headline.
 -      (when (bobp)
 -      (insert
 -       (format
 -        ";; %sEmacs: %s Tramp: %s -*- mode: outline; -*-"
 -        (if (featurep 'sxemacs) "SX" (if (featurep 'xemacs) "X" "GNU "))
 -        emacs-version tramp-version)))
 -      (unless (bolp)
 -      (insert "\n"))
 -      ;; Timestamp.
 -      (let ((now (current-time)))
 -        (insert (format-time-string "%T." now))
 -        (insert (format "%06d " (nth 2 now))))
 -      ;; Calling function.
 -      (let ((btn 1) btf fn)
 -      (while (not fn)
 -        (setq btf (nth 1 (backtrace-frame btn)))
 -        (if (not btf)
 -            (setq fn "")
 -          (when (symbolp btf)
 -            (setq fn (symbol-name btf))
 -            (unless (and (string-match "^tramp" fn)
 -                         (not (string-match
 -                               "^tramp\\(-debug\\)?\\(-message\\|-error\\|-compat-funcall\\)$"
 -                               fn)))
 -              (setq fn nil)))
 -          (setq btn (1+ btn))))
 -      ;; The following code inserts filename and line number.
 -      ;; Should be deactivated by default, because it is time
 -      ;; consuming.
 -;     (let ((ffn (find-function-noselect (intern fn))))
 -;       (insert
 -;        (format
 -;         "%s:%d: "
 -;         (file-name-nondirectory (buffer-file-name (car ffn)))
 -;         (with-current-buffer (car ffn)
 -;           (1+ (count-lines (point-min) (cdr ffn)))))))
 -      (insert (format "%s " fn)))
 -      ;; The message.
 -      (insert (apply 'format fmt-string args)))))
 +;; Conversion functions between external representation and
 +;; internal data structure.  Convenience functions for internal
 +;; data structure.
  
 -(defvar tramp-message-show-message t
 -  "Show Tramp message in the minibuffer.
 -This variable is used to disable messages from `tramp-error'.
 -The messages are visible anyway, because an error is raised.")
 +(defun tramp-file-name-p (vec)
 +  "Check, whether VEC is a Tramp object."
 +  (and (vectorp vec) (= 4 (length vec))))
  
 -(defsubst tramp-message (vec-or-proc level fmt-string &rest args)
 -  "Emit a message depending on verbosity level.
 -VEC-OR-PROC identifies the Tramp buffer to use.  It can be either a
 -vector or a process.  LEVEL says to be quiet if `tramp-verbose' is
 -less than LEVEL.  The message is emitted only if `tramp-verbose' is
 -greater than or equal to LEVEL.
 +(defun tramp-file-name-method (vec)
 +  "Return method component of VEC."
 +  (and (tramp-file-name-p vec) (aref vec 0)))
  
 -The message is also logged into the debug buffer when `tramp-verbose'
 -is greater than or equal 4.
 +(defun tramp-file-name-user (vec)
 +  "Return user component of VEC."
 +  (and (tramp-file-name-p vec) (aref vec 1)))
  
 -Calls functions `message' and `tramp-debug-message' with FMT-STRING as
 -control string and the remaining ARGS to actually emit the message (if
 -applicable)."
 -  (condition-case nil
 -      (when (<= level tramp-verbose)
 -      ;; Match data must be preserved!
 -      (save-match-data
 -        ;; Display only when there is a minimum level.
 -        (when (and tramp-message-show-message (<= level 3))
 -          (apply 'message
 -                 (concat
 -                  (cond
 -                   ((= level 0) "")
 -                   ((= level 1) "")
 -                   ((= level 2) "Warning: ")
 -                   (t           "Tramp: "))
 -                  fmt-string)
 -                 args))
 -        ;; Log only when there is a minimum level.
 -        (when (>= tramp-verbose 4)
 -          (when (and vec-or-proc
 -                     (processp vec-or-proc)
 -                     (buffer-name (process-buffer vec-or-proc)))
 -            (with-current-buffer (process-buffer vec-or-proc)
 -              ;; Translate proc to vec.
 -              (setq vec-or-proc (tramp-dissect-file-name default-directory))))
 -          (when (and vec-or-proc (vectorp vec-or-proc))
 -            (apply 'tramp-debug-message
 -                   vec-or-proc
 -                   (concat (format "(%d) # " level) fmt-string)
 -                   args)))))
 -    ;; Suppress all errors.
 -    (error nil)))
 +(defun tramp-file-name-host (vec)
 +  "Return host component of VEC."
 +  (and (tramp-file-name-p vec) (aref vec 2)))
  
 -(defsubst tramp-error (vec-or-proc signal fmt-string &rest args)
 -  "Emit an error.
 -VEC-OR-PROC identifies the connection to use, SIGNAL is the
 -signal identifier to be raised, remaining args passed to
 -`tramp-message'.  Finally, signal SIGNAL is raised."
 -  (let (tramp-message-show-message)
 -    (tramp-message
 -     vec-or-proc 1 "%s"
 -     (error-message-string
 -      (list signal
 -          (get signal 'error-message)
 -          (apply 'format fmt-string args))))
 -    (signal signal (list (apply 'format fmt-string args)))))
 +(defun tramp-file-name-localname (vec)
 +  "Return localname component of VEC."
 +  (and (tramp-file-name-p vec) (aref vec 3)))
  
 -(defsubst tramp-error-with-buffer
 -  (buffer vec-or-proc signal fmt-string &rest args)
 -  "Emit an error, and show BUFFER.
 -If BUFFER is nil, show the connection buffer.  Wait for 30\", or until
 -an input event arrives.  The other arguments are passed to `tramp-error'."
 -  (save-window-excursion
 -    (unwind-protect
 -      (apply 'tramp-error vec-or-proc signal fmt-string args)
 -      (when (and vec-or-proc
 -               (not (zerop tramp-verbose))
 -               (not (tramp-completion-mode-p)))
 -      (let ((enable-recursive-minibuffers t))
 -        (pop-to-buffer
 -         (or (and (bufferp buffer) buffer)
 -             (and (processp vec-or-proc) (process-buffer vec-or-proc))
 -             (tramp-get-buffer vec-or-proc)))
 -        (sit-for 30))))))
 +;; The user part of a Tramp file name vector can be of kind
 +;; "user%domain".  Sometimes, we must extract these parts.
 +(defun tramp-file-name-real-user (vec)
 +  "Return the user name of VEC without domain."
 +  (save-match-data
 +    (let ((user (tramp-file-name-user vec)))
 +      (if (and (stringp user)
 +             (string-match tramp-user-with-domain-regexp user))
 +        (match-string 1 user)
 +      user))))
  
 -(defmacro with-parsed-tramp-file-name (filename var &rest body)
 -  "Parse a Tramp filename and make components available in the body.
 +(defun tramp-file-name-domain (vec)
 +  "Return the domain name of VEC."
 +  (save-match-data
 +    (let ((user (tramp-file-name-user vec)))
 +      (and (stringp user)
 +         (string-match tramp-user-with-domain-regexp user)
 +         (match-string 2 user)))))
  
 -First arg FILENAME is evaluated and dissected into its components.
 -Second arg VAR is a symbol.  It is used as a variable name to hold
 -the filename structure.  It is also used as a prefix for the variables
 -holding the components.  For example, if VAR is the symbol `foo', then
 -`foo' will be bound to the whole structure, `foo-method' will be bound to
 -the method component, and so on for `foo-user', `foo-host', `foo-localname'.
 +;; The host part of a Tramp file name vector can be of kind
 +;; "host#port".  Sometimes, we must extract these parts.
 +(defun tramp-file-name-real-host (vec)
 +  "Return the host name of VEC without port."
 +  (save-match-data
 +    (let ((host (tramp-file-name-host vec)))
 +      (if (and (stringp host)
 +             (string-match tramp-host-with-port-regexp host))
 +        (match-string 1 host)
 +      host))))
  
 -Remaining args are Lisp expressions to be evaluated (inside an implicit
 -`progn').
 +(defun tramp-file-name-port (vec)
 +  "Return the port number of VEC."
 +  (save-match-data
 +    (let ((host (tramp-file-name-host vec)))
 +      (and (stringp host)
 +         (string-match tramp-host-with-port-regexp host)
 +         (string-to-number (match-string 2 host))))))
  
 -If VAR is nil, then we bind `v' to the structure and `method', `user',
 -`host', `localname' to the components."
 -  `(let* ((,(or var 'v) (tramp-dissect-file-name ,filename))
 -        (,(if var (intern (concat (symbol-name var) "-method")) 'method)
 -         (tramp-file-name-method ,(or var 'v)))
 -        (,(if var (intern (concat (symbol-name var) "-user")) 'user)
 -         (tramp-file-name-user ,(or var 'v)))
 -        (,(if var (intern (concat (symbol-name var) "-host")) 'host)
 -         (tramp-file-name-host ,(or var 'v)))
 -        (,(if var (intern (concat (symbol-name var) "-localname")) 'localname)
 -         (tramp-file-name-localname ,(or var 'v))))
 -     ,@body))
 +;;;###tramp-autoload
 +(defun tramp-tramp-file-p (name)
 +  "Return t if NAME is a string with Tramp file name syntax."
 +  (save-match-data
 +    (and (stringp name) (string-match tramp-file-name-regexp name))))
  
 -(put 'with-parsed-tramp-file-name 'lisp-indent-function 2)
 -(put 'with-parsed-tramp-file-name 'edebug-form-spec '(form symbolp body))
 -(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-parsed-tramp-file-name\\>"))
 -
 -(defmacro with-file-property (vec file property &rest body)
 -  "Check in Tramp cache for PROPERTY, otherwise execute BODY and set cache.
 -FILE must be a local file name on a connection identified via VEC."
 -  `(if (file-name-absolute-p ,file)
 -      (let ((value (tramp-get-file-property ,vec ,file ,property 'undef)))
 -      (when (eq value 'undef)
 -        ;; We cannot pass @body as parameter to
 -        ;; `tramp-set-file-property' because it mangles our
 -        ;; debug messages.
 -        (setq value (progn ,@body))
 -        (tramp-set-file-property ,vec ,file ,property value))
 -      value)
 -     ,@body))
 +(defun tramp-find-method (method user host)
 +  "Return the right method string to use.
 +This is METHOD, if non-nil. Otherwise, do a lookup in
 +`tramp-default-method-alist'."
 +  (or method
 +      (let ((choices tramp-default-method-alist)
 +          lmethod item)
 +      (while choices
 +        (setq item (pop choices))
 +        (when (and (string-match (or (nth 0 item) "") (or host ""))
 +                   (string-match (or (nth 1 item) "") (or user "")))
 +          (setq lmethod (nth 2 item))
 +          (setq choices nil)))
 +      lmethod)
 +      tramp-default-method))
  
 -(put 'with-file-property 'lisp-indent-function 3)
 -(put 'with-file-property 'edebug-form-spec t)
 -(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-file-property\\>"))
 -
 -(defmacro with-connection-property (key property &rest body)
 -  "Check in Tramp for property PROPERTY, otherwise executes BODY and set."
 -  `(let ((value (tramp-get-connection-property ,key ,property 'undef)))
 -    (when (eq value 'undef)
 -      ;; We cannot pass ,@body as parameter to
 -      ;; `tramp-set-connection-property' because it mangles our debug
 -      ;; messages.
 -      (setq value (progn ,@body))
 -      (tramp-set-connection-property ,key ,property value))
 -    value))
 -
 -(put 'with-connection-property 'lisp-indent-function 2)
 -(put 'with-connection-property 'edebug-form-spec t)
 -(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-connection-property\\>"))
 +(defun tramp-find-user (method user host)
 +  "Return the right user string to use.
 +This is USER, if non-nil. Otherwise, do a lookup in
 +`tramp-default-user-alist'."
 +  (or user
 +      (let ((choices tramp-default-user-alist)
 +          luser item)
 +      (while choices
 +        (setq item (pop choices))
 +        (when (and (string-match (or (nth 0 item) "") (or method ""))
 +                   (string-match (or (nth 1 item) "") (or host "")))
 +          (setq luser (nth 2 item))
 +          (setq choices nil)))
 +      luser)
 +      tramp-default-user))
  
 -(defun tramp-progress-reporter-update (reporter &optional value)
 -  (let* ((parameters (cdr reporter))
 -       (message (aref parameters 3)))
 -    (when (string-match message (or (current-message) ""))
 -      (funcall 'progress-reporter-update reporter value))))
 +(defun tramp-find-host (method user host)
 +  "Return the right host string to use.
 +This is HOST, if non-nil. Otherwise, it is `tramp-default-host'."
 +  (or (and (> (length host) 0) host)
 +      tramp-default-host))
  
 -(defmacro with-progress-reporter (vec level message &rest body)
 -  "Executes BODY, spinning a progress reporter with MESSAGE.
 -If LEVEL does not fit for visible messages, or if this is a
 -nested call of the macro, there are only traces without a visible
 -progress reporter."
 -  `(let (pr tm)
 -     (tramp-message ,vec ,level "%s..." ,message)
 -     ;; We start a pulsing progress reporter after 3 seconds.  Feature
 -     ;; introduced in Emacs 24.1.
 -     (when (and tramp-message-show-message
 -              ;; Display only when there is a minimum level.
 +(defun tramp-dissect-file-name (name &optional nodefault)
 +  "Return a `tramp-file-name' structure.
 +The structure consists of remote method, remote user, remote host
 +and localname (file name on remote host).  If NODEFAULT is
 +non-nil, the file name parts are not expanded to their default
 +values."
 +  (save-match-data
 +    (let ((match (string-match (nth 0 tramp-file-name-structure) name)))
 +      (unless match (error "Not a Tramp file name: %s" name))
 +      (let ((method    (match-string (nth 1 tramp-file-name-structure) name))
 +          (user      (match-string (nth 2 tramp-file-name-structure) name))
 +          (host      (match-string (nth 3 tramp-file-name-structure) name))
 +          (localname (match-string (nth 4 tramp-file-name-structure) name)))
 +      (when host
 +        (when (string-match tramp-prefix-ipv6-regexp host)
 +          (setq host (replace-match "" nil t host)))
 +        (when (string-match tramp-postfix-ipv6-regexp host)
 +          (setq host (replace-match "" nil t host))))
 +      (if nodefault
 +          (vector method user host localname)
 +        (vector
 +         (tramp-find-method method user host)
 +         (tramp-find-user   method user host)
 +         (tramp-find-host   method user host)
 +         localname))))))
 +
 +(defun tramp-buffer-name (vec)
 +  "A name for the connection buffer VEC."
 +  ;; We must use `tramp-file-name-real-host', because for gateway
 +  ;; methods the default port will be expanded later on, which would
 +  ;; tamper the name.
 +  (let ((method (tramp-file-name-method vec))
 +      (user   (tramp-file-name-user vec))
 +      (host   (tramp-file-name-real-host vec)))
 +    (if (not (zerop (length user)))
 +      (format "*tramp/%s %s@%s*" method user host)
 +      (format "*tramp/%s %s*" method host))))
 +
 +(defun tramp-make-tramp-file-name (method user host localname)
 +  "Constructs a Tramp file name from METHOD, USER, HOST and LOCALNAME."
 +  (concat tramp-prefix-format
 +        (when (not (zerop (length method)))
 +          (concat method tramp-postfix-method-format))
 +        (when (not (zerop (length user)))
 +          (concat user tramp-postfix-user-format))
 +        (when host
 +          (if (string-match tramp-ipv6-regexp host)
 +              (concat tramp-prefix-ipv6-format host tramp-postfix-ipv6-format)
 +            host))
 +        tramp-postfix-host-format
 +        (when localname localname)))
 +
 +(defun tramp-completion-make-tramp-file-name (method user host localname)
 +  "Constructs a Tramp file name from METHOD, USER, HOST and LOCALNAME.
 +It must not be a complete Tramp file name, but as long as there are
 +necessary only.  This function will be used in file name completion."
 +  (concat tramp-prefix-format
 +        (when (not (zerop (length method)))
 +          (concat method tramp-postfix-method-format))
 +        (when (not (zerop (length user)))
 +          (concat user tramp-postfix-user-format))
 +        (when (not (zerop (length host)))
 +          (concat
 +           (if (string-match tramp-ipv6-regexp host)
 +               (concat
 +                tramp-prefix-ipv6-format host tramp-postfix-ipv6-format)
 +             host)
 +           tramp-postfix-host-format))
 +        (when localname localname)))
 +
 +(defun tramp-get-buffer (vec)
 +  "Get the connection buffer to be used for VEC."
 +  (or (get-buffer (tramp-buffer-name vec))
 +      (with-current-buffer (get-buffer-create (tramp-buffer-name vec))
 +      (setq buffer-undo-list t)
 +      (setq default-directory
 +            (tramp-make-tramp-file-name
 +             (tramp-file-name-method vec)
 +             (tramp-file-name-user vec)
 +             (tramp-file-name-host vec)
 +             "/"))
 +      (current-buffer))))
 +
 +(defun tramp-get-connection-buffer (vec)
 +  "Get the connection buffer to be used for VEC.
 +In case a second asynchronous communication has been started, it is different
 +from `tramp-get-buffer'."
 +  (or (tramp-get-connection-property vec "process-buffer" nil)
 +      (tramp-get-buffer vec)))
 +
 +(defun tramp-get-connection-process (vec)
 +  "Get the connection process to be used for VEC.
 +In case a second asynchronous communication has been started, it is different
 +from the default one."
 +  (get-process
 +   (or (tramp-get-connection-property vec "process-name" nil)
 +       (tramp-buffer-name vec))))
 +
 +(defun tramp-debug-buffer-name (vec)
 +  "A name for the debug buffer for VEC."
 +  ;; We must use `tramp-file-name-real-host', because for gateway
 +  ;; methods the default port will be expanded later on, which would
 +  ;; tamper the name.
 +  (let ((method (tramp-file-name-method vec))
 +      (user   (tramp-file-name-user vec))
 +      (host   (tramp-file-name-real-host vec)))
 +    (if (not (zerop (length user)))
 +      (format "*debug tramp/%s %s@%s*" method user host)
 +      (format "*debug tramp/%s %s*" method host))))
 +
 +(defconst tramp-debug-outline-regexp
 +  "[0-9]+:[0-9]+:[0-9]+\\.[0-9]+ [a-z0-9-]+ (\\([0-9]+\\)) #"
 +  "Used for highlighting Tramp debug buffers in `outline-mode'.")
 +
 +(defun tramp-debug-outline-level ()
 +  "Return the depth to which a statement is nested in the outline.
 +Point must be at the beginning of a header line.
 +
 +The outline level is equal to the verbosity of the Tramp message."
 +  (1+ (string-to-number (match-string 1))))
 +
 +(defun tramp-get-debug-buffer (vec)
 +  "Get the debug buffer for VEC."
 +  (with-current-buffer
 +      (get-buffer-create (tramp-debug-buffer-name vec))
 +    (when (bobp)
 +      (setq buffer-undo-list t)
 +      ;; Activate `outline-mode'.  This runs `text-mode-hook' and
 +      ;; `outline-mode-hook'.  We must prevent that local processes
 +      ;; die.  Yes: I've seen `flyspell-mode', which starts "ispell".
 +      ;; Furthermore, `outline-regexp' must have the correct value
 +      ;; already, because it is used by `font-lock-compile-keywords'.
 +      (let ((default-directory (tramp-compat-temporary-file-directory))
 +          (outline-regexp tramp-debug-outline-regexp))
 +      (outline-mode))
 +      (set (make-local-variable 'outline-regexp) tramp-debug-outline-regexp)
 +      (set (make-local-variable 'outline-level) 'tramp-debug-outline-level))
 +    (current-buffer)))
 +
 +(defsubst tramp-debug-message (vec fmt-string &rest args)
 +  "Append message to debug buffer.
 +Message is formatted with FMT-STRING as control string and the remaining
 +ARGS to actually emit the message (if applicable)."
 +  (when (get-buffer (tramp-buffer-name vec))
 +    (with-current-buffer (tramp-get-debug-buffer vec)
 +      (goto-char (point-max))
 +      ;; Headline.
 +      (when (bobp)
 +      (insert
 +       (format
 +        ";; %sEmacs: %s Tramp: %s -*- mode: outline; -*-"
 +        (if (featurep 'sxemacs) "SX" (if (featurep 'xemacs) "X" "GNU "))
 +        emacs-version tramp-version)))
 +      (unless (bolp)
 +      (insert "\n"))
 +      ;; Timestamp.
 +      (let ((now (current-time)))
 +        (insert (format-time-string "%T." now))
 +        (insert (format "%06d " (nth 2 now))))
 +      ;; Calling function.
 +      (let ((btn 1) btf fn)
 +      (while (not fn)
 +        (setq btf (nth 1 (backtrace-frame btn)))
 +        (if (not btf)
 +            (setq fn "")
 +          (when (symbolp btf)
 +            (setq fn (symbol-name btf))
 +            (unless (and (string-match "^tramp" fn)
 +                         (not (string-match
 +                               "^tramp\\(-debug\\)?\\(-message\\|-error\\|-compat-funcall\\)$"
 +                               fn)))
 +              (setq fn nil)))
 +          (setq btn (1+ btn))))
 +      ;; The following code inserts filename and line number.
 +      ;; Should be deactivated by default, because it is time
 +      ;; consuming.
 +;     (let ((ffn (find-function-noselect (intern fn))))
 +;       (insert
 +;        (format
 +;         "%s:%d: "
 +;         (file-name-nondirectory (buffer-file-name (car ffn)))
 +;         (with-current-buffer (car ffn)
 +;           (1+ (count-lines (point-min) (cdr ffn)))))))
 +      (insert (format "%s " fn)))
 +      ;; The message.
 +      (insert (apply 'format fmt-string args)))))
 +
 +(defvar tramp-message-show-message t
 +  "Show Tramp message in the minibuffer.
 +This variable is used to disable messages from `tramp-error'.
 +The messages are visible anyway, because an error is raised.")
 +
 +(defsubst tramp-message (vec-or-proc level fmt-string &rest args)
 +  "Emit a message depending on verbosity level.
 +VEC-OR-PROC identifies the Tramp buffer to use.  It can be either a
 +vector or a process.  LEVEL says to be quiet if `tramp-verbose' is
 +less than LEVEL.  The message is emitted only if `tramp-verbose' is
 +greater than or equal to LEVEL.
 +
 +The message is also logged into the debug buffer when `tramp-verbose'
 +is greater than or equal 4.
 +
 +Calls functions `message' and `tramp-debug-message' with FMT-STRING as
 +control string and the remaining ARGS to actually emit the message (if
 +applicable)."
 +  (ignore-errors
 +    (when (<= level tramp-verbose)
 +      ;; Match data must be preserved!
 +      (save-match-data
 +      ;; Display only when there is a minimum level.
 +      (when (and tramp-message-show-message (<= level 3))
 +        (apply 'message
 +               (concat
 +                (cond
 +                 ((= level 0) "")
 +                 ((= level 1) "")
 +                 ((= level 2) "Warning: ")
 +                 (t           "Tramp: "))
 +                fmt-string)
 +               args))
 +      ;; Log only when there is a minimum level.
 +      (when (>= tramp-verbose 4)
 +        (when (and vec-or-proc
 +                   (processp vec-or-proc)
 +                   (buffer-name (process-buffer vec-or-proc)))
 +          (with-current-buffer (process-buffer vec-or-proc)
 +            ;; Translate proc to vec.
 +            (setq vec-or-proc (tramp-dissect-file-name default-directory))))
 +        (when (and vec-or-proc (vectorp vec-or-proc))
 +          (apply 'tramp-debug-message
 +                 vec-or-proc
 +                 (concat (format "(%d) # " level) fmt-string)
 +                 args)))))))
 +
 +(defsubst tramp-error (vec-or-proc signal fmt-string &rest args)
 +  "Emit an error.
 +VEC-OR-PROC identifies the connection to use, SIGNAL is the
 +signal identifier to be raised, remaining args passed to
 +`tramp-message'.  Finally, signal SIGNAL is raised."
 +  (let (tramp-message-show-message)
 +    (tramp-message
 +     vec-or-proc 1 "%s"
 +     (error-message-string
 +      (list signal
 +          (get signal 'error-message)
 +          (apply 'format fmt-string args))))
 +    (signal signal (list (apply 'format fmt-string args)))))
 +
 +(defsubst tramp-error-with-buffer
 +  (buffer vec-or-proc signal fmt-string &rest args)
 +  "Emit an error, and show BUFFER.
 +If BUFFER is nil, show the connection buffer.  Wait for 30\", or until
 +an input event arrives.  The other arguments are passed to `tramp-error'."
 +  (save-window-excursion
 +    (unwind-protect
 +      (apply 'tramp-error vec-or-proc signal fmt-string args)
 +      (when (and vec-or-proc
 +               (not (zerop tramp-verbose))
 +               (not (tramp-completion-mode-p)))
 +      (let ((enable-recursive-minibuffers t))
 +        (pop-to-buffer
 +         (or (and (bufferp buffer) buffer)
 +             (and (processp vec-or-proc) (process-buffer vec-or-proc))
 +             (tramp-get-buffer vec-or-proc)))
 +        (sit-for 30))))))
 +
 +(defmacro with-parsed-tramp-file-name (filename var &rest body)
 +  "Parse a Tramp filename and make components available in the body.
 +
 +First arg FILENAME is evaluated and dissected into its components.
 +Second arg VAR is a symbol.  It is used as a variable name to hold
 +the filename structure.  It is also used as a prefix for the variables
 +holding the components.  For example, if VAR is the symbol `foo', then
 +`foo' will be bound to the whole structure, `foo-method' will be bound to
 +the method component, and so on for `foo-user', `foo-host', `foo-localname'.
 +
 +Remaining args are Lisp expressions to be evaluated (inside an implicit
 +`progn').
 +
 +If VAR is nil, then we bind `v' to the structure and `method', `user',
 +`host', `localname' to the components."
 +  `(let* ((,(or var 'v) (tramp-dissect-file-name ,filename))
 +        (,(if var (intern (concat (symbol-name var) "-method")) 'method)
 +         (tramp-file-name-method ,(or var 'v)))
 +        (,(if var (intern (concat (symbol-name var) "-user")) 'user)
 +         (tramp-file-name-user ,(or var 'v)))
 +        (,(if var (intern (concat (symbol-name var) "-host")) 'host)
 +         (tramp-file-name-host ,(or var 'v)))
 +        (,(if var (intern (concat (symbol-name var) "-localname")) 'localname)
 +         (tramp-file-name-localname ,(or var 'v))))
 +     ,@body))
 +
 +(put 'with-parsed-tramp-file-name 'lisp-indent-function 2)
 +(put 'with-parsed-tramp-file-name 'edebug-form-spec '(form symbolp body))
 +(tramp-compat-font-lock-add-keywords
 + 'emacs-lisp-mode '("\\<with-parsed-tramp-file-name\\>"))
 +
 +(defun tramp-progress-reporter-update (reporter &optional value)
 +  (let* ((parameters (cdr reporter))
 +       (message (aref parameters 3)))
 +    (when (string-match message (or (current-message) ""))
 +      (tramp-compat-funcall 'progress-reporter-update reporter value))))
 +
 +(defmacro with-progress-reporter (vec level message &rest body)
 +  "Executes BODY, spinning a progress reporter with MESSAGE.
 +If LEVEL does not fit for visible messages, or if this is a
 +nested call of the macro, there are only traces without a visible
 +progress reporter."
 +  `(let (pr tm)
 +     (tramp-message ,vec ,level "%s..." ,message)
 +     ;; We start a pulsing progress reporter after 3 seconds.  Feature
 +     ;; introduced in Emacs 24.1.
 +     (when (and tramp-message-show-message
 +              ;; Display only when there is a minimum level.
                (<= ,level (min tramp-verbose 3)))
 -       (condition-case nil
 -         (setq pr (tramp-compat-funcall 'make-progress-reporter ,message)
 -               tm (when pr
 -                    (run-at-time 3 0.1 'tramp-progress-reporter-update pr)))
 -       (error nil)))
 +       (ignore-errors
 +       (setq pr (tramp-compat-funcall 'make-progress-reporter ,message)
 +             tm (when pr
 +                  (run-at-time 3 0.1 'tramp-progress-reporter-update pr)))))
       (unwind-protect
         ;; Execute the body.  Unset `tramp-message-show-message' when
         ;; the timer object is created, in order to suppress
  
  (put 'with-progress-reporter 'lisp-indent-function 3)
  (put 'with-progress-reporter 'edebug-form-spec t)
 -(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-progress-reporter\\>"))
 +(tramp-compat-font-lock-add-keywords
 + 'emacs-lisp-mode '("\\<with-progress-reporter\\>"))
  
  (eval-and-compile                     ;; Silence compiler.
    (if (memq system-type '(cygwin windows-nt))
@@@ -1465,6 -2352,34 +1465,6 @@@ letter into the file name.  This functi
  
      (defalias 'tramp-drop-volume-letter 'identity)))
  
 -(defsubst tramp-make-tramp-temp-file (vec)
 -  "Create a temporary file on the remote host identified by VEC.
 -Return the local name of the temporary file."
 -  (let ((prefix
 -       (tramp-make-tramp-file-name
 -        (tramp-file-name-method vec)
 -        (tramp-file-name-user vec)
 -        (tramp-file-name-host vec)
 -        (tramp-drop-volume-letter
 -         (expand-file-name
 -          tramp-temp-name-prefix (tramp-get-remote-tmpdir vec)))))
 -      result)
 -    (while (not result)
 -      ;; `make-temp-file' would be the natural choice for
 -      ;; implementation.  But it calls `write-region' internally,
 -      ;; which also needs a temporary file - we would end in an
 -      ;; infinite loop.
 -      (setq result (make-temp-name prefix))
 -      (if (file-exists-p result)
 -        (setq result nil)
 -      ;; This creates the file by side effect.
 -      (set-file-times result)
 -      (set-file-modes result (tramp-octal-to-decimal "0700"))))
 -
 -    ;; Return the local part.
 -    (with-parsed-tramp-file-name result nil localname)))
 -
 -
  ;;; Config Manipulation Functions:
  
  (defun tramp-set-completion-function (method function-list)
@@@ -1499,7 -2414,7 +1499,7 @@@ Example
                       ;; Windows registry.
                       (and (memq system-type '(cygwin windows-nt))
                            (zerop
 -                           (tramp-local-call-process
 +                           (tramp-compat-call-process
                              "reg" nil nil nil "query" (nth 1 (car v)))))
                     ;; Configuration file.
                     (file-exists-p (nth 1 (car v)))))
@@@ -1587,28 -2502,1927 +1587,28 @@@ been set up by `rfn-eshadow-setup-minib
              (remove-hook 'rfn-eshadow-update-overlay-hook
                           'tramp-rfn-eshadow-update-overlay))))
  
 -
 -;;; Integration of eshell.el:
 -
 -(eval-when-compile
 -  (defvar eshell-path-env))
 -
 -;; eshell.el keeps the path in `eshell-path-env'.  We must change it
 -;; when `default-directory' points to another host.
 -(defun tramp-eshell-directory-change ()
 -  "Set `eshell-path-env' to $PATH of the host related to `default-directory'."
 -  (setq eshell-path-env
 -      (if (file-remote-p default-directory)
 -          (with-parsed-tramp-file-name default-directory nil
 -            (mapconcat
 -             'identity
 -             (tramp-get-remote-path v)
 -             ":"))
 -        (getenv "PATH"))))
 -
 -(eval-after-load "esh-util"
 -  '(progn
 -     (tramp-eshell-directory-change)
 -     (add-hook 'eshell-directory-change-hook
 -             'tramp-eshell-directory-change)
 -     (add-hook 'tramp-unload-hook
 -             (lambda ()
 -               (remove-hook 'eshell-directory-change-hook
 -                            'tramp-eshell-directory-change)))))
 -
 -
 -;;; File Name Handler Functions:
 -
 -(defun tramp-handle-make-symbolic-link
 -  (filename linkname &optional ok-if-already-exists)
 -  "Like `make-symbolic-link' for Tramp files.
 -If LINKNAME is a non-Tramp file, it is used verbatim as the target of
 -the symlink.  If LINKNAME is a Tramp file, only the localname component is
 -used as the target of the symlink.
 -
 -If LINKNAME is a Tramp file and the localname component is relative, then
 -it is expanded first, before the localname component is taken.  Note that
 -this can give surprising results if the user/host for the source and
 -target of the symlink differ."
 -  (with-parsed-tramp-file-name linkname l
 -    (let ((ln (tramp-get-remote-ln l))
 -        (cwd (tramp-run-real-handler
 -              'file-name-directory (list l-localname))))
 -      (unless ln
 -      (tramp-error
 -       l 'file-error
 -       "Making a symbolic link.  ln(1) does not exist on the remote host."))
 -
 -      ;; Do the 'confirm if exists' thing.
 -      (when (file-exists-p linkname)
 -      ;; What to do?
 -      (if (or (null ok-if-already-exists) ; not allowed to exist
 -              (and (numberp ok-if-already-exists)
 -                   (not (yes-or-no-p
 -                         (format
 -                          "File %s already exists; make it a link anyway? "
 -                          l-localname)))))
 -          (tramp-error
 -           l 'file-already-exists "File %s already exists" l-localname)
 -        (delete-file linkname)))
 -
 -      ;; If FILENAME is a Tramp name, use just the localname component.
 -      (when (tramp-tramp-file-p filename)
 -      (setq filename
 -            (tramp-file-name-localname
 -             (tramp-dissect-file-name (expand-file-name filename)))))
 -
 -      (tramp-flush-file-property l (file-name-directory l-localname))
 -      (tramp-flush-file-property l l-localname)
 -
 -      ;; Right, they are on the same host, regardless of user, method, etc.
 -      ;; We now make the link on the remote machine. This will occur as the user
 -      ;; that FILENAME belongs to.
 -      (zerop
 -       (tramp-send-command-and-check
 -      l
 -      (format
 -       "cd %s && %s -sf %s %s"
 -       (tramp-shell-quote-argument cwd)
 -       ln
 -       (tramp-shell-quote-argument filename)
 -       (tramp-shell-quote-argument l-localname))
 -      t)))))
 -
 -(defun tramp-handle-load (file &optional noerror nomessage nosuffix must-suffix)
 -  "Like `load' for Tramp files."
 -  (with-parsed-tramp-file-name (expand-file-name file) nil
 -    (unless nosuffix
 -      (cond ((file-exists-p (concat file ".elc"))
 -           (setq file (concat file ".elc")))
 -          ((file-exists-p (concat file ".el"))
 -           (setq file (concat file ".el")))))
 -    (when must-suffix
 -      ;; The first condition is always true for absolute file names.
 -      ;; Included for safety's sake.
 -      (unless (or (file-name-directory file)
 -                (string-match "\\.elc?\\'" file))
 -      (tramp-error
 -       v 'file-error
 -       "File `%s' does not include a `.el' or `.elc' suffix" file)))
 -    (unless noerror
 -      (when (not (file-exists-p file))
 -      (tramp-error v 'file-error "Cannot load nonexistent file `%s'" file)))
 -    (if (not (file-exists-p file))
 -      nil
 -      (let ((tramp-message-show-message (not nomessage)))
 -      (with-progress-reporter v 0 (format "Loading %s" file)
 -        (let ((local-copy (file-local-copy file)))
 -          ;; MUST-SUFFIX doesn't exist on XEmacs, so let it default to nil.
 -          (unwind-protect
 -              (load local-copy noerror t t)
 -            (delete-file local-copy)))))
 -      t)))
 -
 -;; Localname manipulation functions that grok Tramp localnames...
 -(defun tramp-handle-file-name-as-directory (file)
 -  "Like `file-name-as-directory' but aware of Tramp files."
 -  ;; `file-name-as-directory' would be sufficient except localname is
 -  ;; the empty string.
 -  (let ((v (tramp-dissect-file-name file t)))
 -    ;; Run the command on the localname portion only.
 -    (tramp-make-tramp-file-name
 -     (tramp-file-name-method v)
 -     (tramp-file-name-user v)
 -     (tramp-file-name-host v)
 -     (tramp-run-real-handler
 -      'file-name-as-directory (list (or (tramp-file-name-localname v) ""))))))
 -
 -(defun tramp-handle-file-name-directory (file)
 -  "Like `file-name-directory' but aware of Tramp files."
 -  ;; Everything except the last filename thing is the directory.  We
 -  ;; cannot apply `with-parsed-tramp-file-name', because this expands
 -  ;; the remote file name parts.  This is a problem when we are in
 -  ;; file name completion.
 -  (let ((v (tramp-dissect-file-name file t)))
 -    ;; Run the command on the localname portion only.
 -    (tramp-make-tramp-file-name
 -     (tramp-file-name-method v)
 -     (tramp-file-name-user v)
 -     (tramp-file-name-host v)
 -     (tramp-run-real-handler
 -      'file-name-directory (list (or (tramp-file-name-localname v) ""))))))
 -
 -(defun tramp-handle-file-name-nondirectory (file)
 -  "Like `file-name-nondirectory' but aware of Tramp files."
 -  (with-parsed-tramp-file-name file nil
 -    (tramp-run-real-handler 'file-name-nondirectory (list localname))))
 -
 -(defun tramp-handle-file-truename (filename &optional counter prev-dirs)
 -  "Like `file-truename' for Tramp files."
 -  (with-parsed-tramp-file-name (expand-file-name filename) nil
 -    (with-file-property v localname "file-truename"
 -      (let ((result nil))                     ; result steps in reverse order
 -      (tramp-message v 4 "Finding true name for `%s'" filename)
 -      (cond
 -       ;; Use GNU readlink --canonicalize-missing where available.
 -       ((tramp-get-remote-readlink v)
 -        (setq result
 -              (tramp-send-command-and-read
 -               v
 -               (format "echo \"\\\"`%s --canonicalize-missing %s`\\\"\""
 -                       (tramp-get-remote-readlink v)
 -                       (tramp-shell-quote-argument localname)))))
 -
 -       ;; Use Perl implementation.
 -       ((and (tramp-get-remote-perl v)
 -             (tramp-get-connection-property v "perl-file-spec" nil)
 -             (tramp-get-connection-property v "perl-cwd-realpath" nil))
 -        (tramp-maybe-send-script
 -         v tramp-perl-file-truename "tramp_perl_file_truename")
 -        (setq result
 -              (tramp-send-command-and-read
 -               v
 -               (format "tramp_perl_file_truename %s"
 -                       (tramp-shell-quote-argument localname)))))
 -
 -       ;; Do it yourself.  We bind `directory-sep-char' here for
 -       ;; XEmacs on Windows, which would otherwise use backslash.
 -       (t (let* ((directory-sep-char ?/)
 -                 (steps (tramp-compat-split-string localname "/"))
 -                 (localnamedir (tramp-run-real-handler
 -                                'file-name-as-directory (list localname)))
 -                 (is-dir (string= localname localnamedir))
 -                 (thisstep nil)
 -                 (numchase 0)
 -                 ;; Don't make the following value larger than
 -                 ;; necessary.  People expect an error message in a
 -                 ;; timely fashion when something is wrong;
 -                 ;; otherwise they might think that Emacs is hung.
 -                 ;; Of course, correctness has to come first.
 -                 (numchase-limit 20)
 -                 symlink-target)
 -            (while (and steps (< numchase numchase-limit))
 -              (setq thisstep (pop steps))
 -              (tramp-message
 -               v 5 "Check %s"
 -               (mapconcat 'identity
 -                          (append '("") (reverse result) (list thisstep))
 -                          "/"))
 -              (setq symlink-target
 -                    (nth 0 (file-attributes
 -                            (tramp-make-tramp-file-name
 -                             method user host
 -                             (mapconcat 'identity
 -                                        (append '("")
 -                                                (reverse result)
 -                                                (list thisstep))
 -                                        "/")))))
 -              (cond ((string= "." thisstep)
 -                     (tramp-message v 5 "Ignoring step `.'"))
 -                    ((string= ".." thisstep)
 -                     (tramp-message v 5 "Processing step `..'")
 -                     (pop result))
 -                    ((stringp symlink-target)
 -                     ;; It's a symlink, follow it.
 -                     (tramp-message v 5 "Follow symlink to %s" symlink-target)
 -                     (setq numchase (1+ numchase))
 -                     (when (file-name-absolute-p symlink-target)
 -                       (setq result nil))
 -                     ;; If the symlink was absolute, we'll get a string like
 -                     ;; "/user@host:/some/target"; extract the
 -                     ;; "/some/target" part from it.
 -                     (when (tramp-tramp-file-p symlink-target)
 -                       (unless (tramp-equal-remote filename symlink-target)
 -                         (tramp-error
 -                          v 'file-error
 -                          "Symlink target `%s' on wrong host" symlink-target))
 -                       (setq symlink-target localname))
 -                     (setq steps
 -                           (append (tramp-compat-split-string
 -                                    symlink-target "/")
 -                                   steps)))
 -                    (t
 -                     ;; It's a file.
 -                     (setq result (cons thisstep result)))))
 -            (when (>= numchase numchase-limit)
 -              (tramp-error
 -               v 'file-error
 -               "Maximum number (%d) of symlinks exceeded" numchase-limit))
 -            (setq result (reverse result))
 -            ;; Combine list to form string.
 -            (setq result
 -                  (if result
 -                      (mapconcat 'identity (cons "" result) "/")
 -                    "/"))
 -            (when (and is-dir (or (string= "" result)
 -                                  (not (string= (substring result -1) "/"))))
 -              (setq result (concat result "/"))))))
 -
 -        (tramp-message v 4 "True name of `%s' is `%s'" filename result)
 -        (tramp-make-tramp-file-name method user host result)))))
 -
 -;; Basic functions.
 -
 -(defun tramp-handle-file-exists-p (filename)
 -  "Like `file-exists-p' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    (with-file-property v localname "file-exists-p"
 -      (or (not (null (tramp-get-file-property
 -                      v localname "file-attributes-integer" nil)))
 -          (not (null (tramp-get-file-property
 -                      v localname "file-attributes-string" nil)))
 -          (zerop (tramp-send-command-and-check
 -                  v
 -                  (format
 -                   "%s %s"
 -                   (tramp-get-file-exists-command v)
 -                   (tramp-shell-quote-argument localname))))))))
 -
  ;; Inodes don't exist for some file systems.  Therefore we must
  ;; generate virtual ones.  Used in `find-buffer-visiting'.  The method
  ;; applied might be not so efficient (Ange-FTP uses hashes). But
  ;; performance isn't the major issue given that file transfer will
  ;; take time.
 -(defvar tramp-inodes nil
 -  "Keeps virtual inodes numbers.")
 -
 -;; Devices must distinguish physical file systems.  The device numbers
 -;; provided by "lstat" aren't unique, because we operate on different hosts.
 -;; So we use virtual device numbers, generated by Tramp.  Both Ange-FTP and
 -;; EFS use device number "-1".  In order to be different, we use device number
 -;; (-1 . x), whereby "x" is unique for a given (method user host).
 -(defvar tramp-devices nil
 -  "Keeps virtual device numbers.")
 -
 -;; CCC: This should check for an error condition and signal failure
 -;;      when something goes wrong.
 -;; Daniel Pittman <daniel@danann.net>
 -(defun tramp-handle-file-attributes (filename &optional id-format)
 -  "Like `file-attributes' for Tramp files."
 -  (unless id-format (setq id-format 'integer))
 -  ;; Don't modify `last-coding-system-used' by accident.
 -  (let ((last-coding-system-used last-coding-system-used))
 -    (with-parsed-tramp-file-name (expand-file-name filename) nil
 -      (with-file-property v localname (format "file-attributes-%s" id-format)
 -      (save-excursion
 -        (tramp-convert-file-attributes
 -         v
 -         (cond
 -          ((tramp-get-remote-stat v)
 -           (tramp-do-file-attributes-with-stat v localname id-format))
 -          ((tramp-get-remote-perl v)
 -           (tramp-do-file-attributes-with-perl v localname id-format))
 -          (t
 -           (tramp-do-file-attributes-with-ls v localname id-format)))))))))
 -
 -(defun tramp-do-file-attributes-with-ls (vec localname &optional id-format)
 -  "Implement `file-attributes' for Tramp files using the ls(1) command."
 -  (let (symlinkp dirp
 -               res-inode res-filemodes res-numlinks
 -               res-uid res-gid res-size res-symlink-target)
 -    (tramp-message vec 5 "file attributes with ls: %s" localname)
 -    (tramp-send-command
 -     vec
 -     (format "(%s %s || %s -h %s) && %s %s %s"
 -           (tramp-get-file-exists-command vec)
 -           (tramp-shell-quote-argument localname)
 -           (tramp-get-test-command vec)
 -           (tramp-shell-quote-argument localname)
 -           (tramp-get-ls-command vec)
 -           (if (eq id-format 'integer) "-ildn" "-ild")
 -           (tramp-shell-quote-argument localname)))
 -    ;; parse `ls -l' output ...
 -    (with-current-buffer (tramp-get-buffer vec)
 -      (when (> (buffer-size) 0)
 -        (goto-char (point-min))
 -        ;; ... inode
 -        (setq res-inode
 -              (condition-case err
 -                  (read (current-buffer))
 -                (invalid-read-syntax
 -                 (when (and (equal (cadr err)
 -                                   "Integer constant overflow in reader")
 -                            (string-match
 -                             "^[0-9]+\\([0-9][0-9][0-9][0-9][0-9]\\)\\'"
 -                             (car (cddr err))))
 -                   (let* ((big (read (substring (car (cddr err)) 0
 -                                                (match-beginning 1))))
 -                          (small (read (match-string 1 (car (cddr err)))))
 -                          (twiddle (/ small 65536)))
 -                     (cons (+ big twiddle)
 -                           (- small (* twiddle 65536))))))))
 -        ;; ... file mode flags
 -        (setq res-filemodes (symbol-name (read (current-buffer))))
 -        ;; ... number links
 -        (setq res-numlinks (read (current-buffer)))
 -        ;; ... uid and gid
 -        (setq res-uid (read (current-buffer)))
 -        (setq res-gid (read (current-buffer)))
 -        (if (eq id-format 'integer)
 -            (progn
 -              (unless (numberp res-uid) (setq res-uid -1))
 -              (unless (numberp res-gid) (setq res-gid -1)))
 -          (progn
 -            (unless (stringp res-uid) (setq res-uid (symbol-name res-uid)))
 -            (unless (stringp res-gid) (setq res-gid (symbol-name res-gid)))))
 -        ;; ... size
 -        (setq res-size (read (current-buffer)))
 -        ;; From the file modes, figure out other stuff.
 -        (setq symlinkp (eq ?l (aref res-filemodes 0)))
 -        (setq dirp (eq ?d (aref res-filemodes 0)))
 -        ;; if symlink, find out file name pointed to
 -        (when symlinkp
 -          (search-forward "-> ")
 -          (setq res-symlink-target
 -                (buffer-substring (point) (tramp-compat-line-end-position))))
 -        ;; return data gathered
 -        (list
 -         ;; 0. t for directory, string (name linked to) for symbolic
 -         ;; link, or nil.
 -         (or dirp res-symlink-target)
 -         ;; 1. Number of links to file.
 -         res-numlinks
 -         ;; 2. File uid.
 -         res-uid
 -         ;; 3. File gid.
 -         res-gid
 -         ;; 4. Last access time, as a list of two integers. First
 -         ;; integer has high-order 16 bits of time, second has low 16
 -         ;; bits.
 -         ;; 5. Last modification time, likewise.
 -         ;; 6. Last status change time, likewise.
 -         '(0 0) '(0 0) '(0 0)         ;CCC how to find out?
 -         ;; 7. Size in bytes (-1, if number is out of range).
 -         res-size
 -         ;; 8. File modes, as a string of ten letters or dashes as in ls -l.
 -         res-filemodes
 -         ;; 9. t if file's gid would change if file were deleted and
 -         ;; recreated.  Will be set in `tramp-convert-file-attributes'
 -         t
 -         ;; 10. inode number.
 -         res-inode
 -         ;; 11. Device number.  Will be replaced by a virtual device number.
 -         -1
 -         )))))
 -
 -(defun tramp-do-file-attributes-with-perl
 -  (vec localname &optional id-format)
 -  "Implement `file-attributes' for Tramp files using a Perl script."
 -  (tramp-message vec 5 "file attributes with perl: %s" localname)
 -  (tramp-maybe-send-script
 -   vec tramp-perl-file-attributes "tramp_perl_file_attributes")
 -  (tramp-send-command-and-read
 -   vec
 -   (format "tramp_perl_file_attributes %s %s"
 -         (tramp-shell-quote-argument localname) id-format)))
 -
 -(defun tramp-do-file-attributes-with-stat
 -  (vec localname &optional id-format)
 -  "Implement `file-attributes' for Tramp files using stat(1) command."
 -  (tramp-message vec 5 "file attributes with stat: %s" localname)
 -  (tramp-send-command-and-read
 -   vec
 -   (format
 -    ;; On Opsware, pdksh (which is the true name of ksh there) doesn't
 -    ;; parse correctly the sequence "((".  Therefore, we add a space.
 -    "( (%s %s || %s -h %s) && %s -c '( (\"%%N\") %%h %s %s %%Xe0 %%Ye0 %%Ze0 %%se0 \"%%A\" t %%ie0 -1)' %s || echo nil)"
 -    (tramp-get-file-exists-command vec)
 -    (tramp-shell-quote-argument localname)
 -    (tramp-get-test-command vec)
 -    (tramp-shell-quote-argument localname)
 -    (tramp-get-remote-stat vec)
 -    (if (eq id-format 'integer) "%u" "\"%U\"")
 -    (if (eq id-format 'integer) "%g" "\"%G\"")
 -    (tramp-shell-quote-argument localname))))
 -
 -(defun tramp-handle-set-visited-file-modtime (&optional time-list)
 -  "Like `set-visited-file-modtime' for Tramp files."
 -  (unless (buffer-file-name)
 -    (error "Can't set-visited-file-modtime: buffer `%s' not visiting a file"
 -         (buffer-name)))
 -  (if time-list
 -      (tramp-run-real-handler 'set-visited-file-modtime (list time-list))
 -    (let ((f (buffer-file-name))
 -        coding-system-used)
 -      (with-parsed-tramp-file-name f nil
 -      (let* ((attr (file-attributes f))
 -             ;; '(-1 65535) means file doesn't exists yet.
 -             (modtime (or (nth 5 attr) '(-1 65535))))
 -        (when (boundp 'last-coding-system-used)
 -          (setq coding-system-used (symbol-value 'last-coding-system-used)))
 -        ;; We use '(0 0) as a don't-know value.  See also
 -        ;; `tramp-do-file-attributes-with-ls'.
 -        (if (not (equal modtime '(0 0)))
 -            (tramp-run-real-handler 'set-visited-file-modtime (list modtime))
 -          (progn
 -            (tramp-send-command
 -             v
 -             (format "%s -ild %s"
 -                     (tramp-get-ls-command v)
 -                     (tramp-shell-quote-argument localname)))
 -            (setq attr (buffer-substring (point)
 -                                         (progn (end-of-line) (point)))))
 -          (tramp-set-file-property
 -           v localname "visited-file-modtime-ild" attr))
 -        (when (boundp 'last-coding-system-used)
 -          (set 'last-coding-system-used coding-system-used))
 -        nil)))))
 -
 -;; This function makes the same assumption as
 -;; `tramp-handle-set-visited-file-modtime'.
 -(defun tramp-handle-verify-visited-file-modtime (buf)
 -  "Like `verify-visited-file-modtime' for Tramp files.
 -At the time `verify-visited-file-modtime' calls this function, we
 -already know that the buffer is visiting a file and that
 -`visited-file-modtime' does not return 0.  Do not call this
 -function directly, unless those two cases are already taken care
 -of."
 -  (with-current-buffer buf
 -    (let ((f (buffer-file-name)))
 -      ;; There is no file visiting the buffer, or the buffer has no
 -      ;; recorded last modification time, or there is no established
 -      ;; connection.
 -      (if (or (not f)
 -            (eq (visited-file-modtime) 0)
 -            (not (tramp-file-name-handler 'file-remote-p f nil 'connected)))
 -        t
 -      (with-parsed-tramp-file-name f nil
 -        (tramp-flush-file-property v localname)
 -        (let* ((attr (file-attributes f))
 -               (modtime (nth 5 attr))
 -               (mt (visited-file-modtime)))
 -
 -          (cond
 -           ;; File exists, and has a known modtime.
 -           ((and attr (not (equal modtime '(0 0))))
 -            (< (abs (tramp-time-diff
 -                     modtime
 -                     ;; For compatibility, deal with both the old
 -                     ;; (HIGH . LOW) and the new (HIGH LOW) return
 -                     ;; values of `visited-file-modtime'.
 -                     (if (atom (cdr mt))
 -                         (list (car mt) (cdr mt))
 -                       mt)))
 -               2))
 -           ;; Modtime has the don't know value.
 -           (attr
 -            (tramp-send-command
 -             v
 -             (format "%s -ild %s"
 -                     (tramp-get-ls-command v)
 -                     (tramp-shell-quote-argument localname)))
 -            (with-current-buffer (tramp-get-buffer v)
 -              (setq attr (buffer-substring
 -                          (point) (progn (end-of-line) (point)))))
 -            (equal
 -             attr
 -             (tramp-get-file-property
 -              v localname "visited-file-modtime-ild" "")))
 -           ;; If file does not exist, say it is not modified if and
 -           ;; only if that agrees with the buffer's record.
 -           (t (equal mt '(-1 65535))))))))))
 -
 -(defun tramp-handle-set-file-modes (filename mode)
 -  "Like `set-file-modes' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    (tramp-flush-file-property v localname)
 -    (unless (zerop (tramp-send-command-and-check
 -                  v
 -                  (format "chmod %s %s"
 -                          (tramp-decimal-to-octal mode)
 -                          (tramp-shell-quote-argument localname))))
 -      ;; FIXME: extract the proper text from chmod's stderr.
 -      (tramp-error
 -       v 'file-error "Error while changing file's mode %s" filename))))
 -
 -(defun tramp-handle-set-file-times (filename &optional time)
 -  "Like `set-file-times' for Tramp files."
 -  (zerop
 -   (if (file-remote-p filename)
 -       (with-parsed-tramp-file-name filename nil
 -       (tramp-flush-file-property v localname)
 -       (let ((time (if (or (null time) (equal time '(0 0)))
 -                       (current-time)
 -                     time))
 -             ;; With GNU Emacs, `format-time-string' has an optional
 -             ;; parameter UNIVERSAL.  This is preferred, because we
 -             ;; could handle the case when the remote host is
 -             ;; located in a different time zone as the local host.
 -             (utc (not (featurep 'xemacs))))
 -         (tramp-send-command-and-check
 -          v (format "%s touch -t %s %s"
 -                    (if utc "TZ=UTC; export TZ;" "")
 -                    (if utc
 -                        (format-time-string "%Y%m%d%H%M.%S" time t)
 -                      (format-time-string "%Y%m%d%H%M.%S" time))
 -                    (tramp-shell-quote-argument localname)))))
 -
 -     ;; We handle also the local part, because in older Emacsen,
 -     ;; without `set-file-times', this function is an alias for this.
 -     ;; We are local, so we don't need the UTC settings.
 -     (tramp-local-call-process
 -      "touch" nil nil nil "-t"
 -      (format-time-string "%Y%m%d%H%M.%S" time)
 -      (tramp-shell-quote-argument filename)))))
 -
 -(defun tramp-set-file-uid-gid (filename &optional uid gid)
 -  "Set the ownership for FILENAME.
 -If UID and GID are provided, these values are used; otherwise uid
 -and gid of the corresponding user is taken.  Both parameters must be integers."
 -  ;; Modern Unices allow chown only for root.  So we might need
 -  ;; another implementation, see `dired-do-chown'.  OTOH, it is mostly
 -  ;; working with su(do)? when it is needed, so it shall succeed in
 -  ;; the majority of cases.
 -  ;; Don't modify `last-coding-system-used' by accident.
 -  (let ((last-coding-system-used last-coding-system-used))
 -    (if (file-remote-p filename)
 -      (with-parsed-tramp-file-name filename nil
 -        (if (and (zerop (user-uid)) (tramp-local-host-p v))
 -            ;; If we are root on the local host, we can do it directly.
 -            (tramp-set-file-uid-gid localname uid gid)
 -          (let ((uid (or (and (integerp uid) uid)
 -                         (tramp-get-remote-uid v 'integer)))
 -                (gid (or (and (integerp gid) gid)
 -                         (tramp-get-remote-gid v 'integer))))
 -            (tramp-send-command
 -             v (format
 -                "chown %d:%d %s" uid gid
 -                (tramp-shell-quote-argument localname))))))
 -
 -      ;; We handle also the local part, because there doesn't exist
 -      ;; `set-file-uid-gid'.  On W32 "chown" might not work.
 -      (let ((uid (or (and (integerp uid) uid) (tramp-get-local-uid 'integer)))
 -          (gid (or (and (integerp gid) gid) (tramp-get-local-gid 'integer))))
 -      (tramp-local-call-process
 -       "chown" nil nil nil
 -         (format "%d:%d" uid gid) (tramp-shell-quote-argument filename))))))
 -
 -(defun tramp-remote-selinux-p (vec)
 -  "Check, whether SELINUX is enabled on the remote host."
 -  (with-connection-property (tramp-get-connection-process vec) "selinux-p"
 -    (let ((result (tramp-find-executable
 -                 vec "getenforce" (tramp-get-remote-path vec) t t)))
 -      (and result
 -         (string-equal
 -          (tramp-send-command-and-read
 -           vec (format "echo \\\"`%S`\\\"" result))
 -          "Enforcing")))))
 -
 -(defun tramp-handle-file-selinux-context (filename)
 -  "Like `file-selinux-context' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    (with-file-property v localname "file-selinux-context"
 -      (let ((context '(nil nil nil nil))
 -          (regexp (concat "\\([a-z0-9_]+\\):" "\\([a-z0-9_]+\\):"
 -                          "\\([a-z0-9_]+\\):" "\\([a-z0-9_]+\\)")))
 -      (when (and (tramp-remote-selinux-p v)
 -                 (zerop (tramp-send-command-and-check
 -                         v (format
 -                            "%s -d -Z %s"
 -                            (tramp-get-ls-command v)
 -                            (tramp-shell-quote-argument localname)))))
 -        (with-current-buffer (tramp-get-connection-buffer v)
 -          (goto-char (point-min))
 -          (when (re-search-forward regexp (tramp-compat-line-end-position) t)
 -            (setq context (list (match-string 1) (match-string 2)
 -                                (match-string 3) (match-string 4))))))
 -      ;; Return the context.
 -      context))))
 -
 -(defun tramp-handle-set-file-selinux-context (filename context)
 -  "Like `set-file-selinux-context' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    (if (and (consp context)
 -           (tramp-remote-selinux-p v)
 -           (zerop (tramp-send-command-and-check
 -                   v (format "chcon %s %s %s %s %s"
 -                             (if (stringp (nth 0 context))
 -                                 (format "--user=%s" (nth 0 context)) "")
 -                             (if (stringp (nth 1 context))
 -                                 (format "--role=%s" (nth 1 context)) "")
 -                             (if (stringp (nth 2 context))
 -                                 (format "--type=%s" (nth 2 context)) "")
 -                             (if (stringp (nth 3 context))
 -                                 (format "--range=%s" (nth 3 context)) "")
 -                             (tramp-shell-quote-argument localname)))))
 -      (tramp-set-file-property v localname "file-selinux-context" context)
 -      (tramp-set-file-property v localname "file-selinux-context" 'undef)))
 -  ;; We always return nil.
 -  nil)
 -
 -;; Simple functions using the `test' command.
 -
 -(defun tramp-handle-file-executable-p (filename)
 -  "Like `file-executable-p' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    (with-file-property v localname "file-executable-p"
 -      ;; Examine `file-attributes' cache to see if request can be
 -      ;; satisfied without remote operation.
 -      (or (tramp-check-cached-permissions v ?x)
 -          (zerop (tramp-run-test "-x" filename))))))
 -
 -(defun tramp-handle-file-readable-p (filename)
 -  "Like `file-readable-p' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    (with-file-property v localname "file-readable-p"
 -      ;; Examine `file-attributes' cache to see if request can be
 -      ;; satisfied without remote operation.
 -      (or (tramp-check-cached-permissions v ?r)
 -          (zerop (tramp-run-test "-r" filename))))))
 -
 -;; When the remote shell is started, it looks for a shell which groks
 -;; tilde expansion.  Here, we assume that all shells which grok tilde
 -;; expansion will also provide a `test' command which groks `-nt' (for
 -;; newer than).  If this breaks, tell me about it and I'll try to do
 -;; something smarter about it.
 -(defun tramp-handle-file-newer-than-file-p (file1 file2)
 -  "Like `file-newer-than-file-p' for Tramp files."
 -  (cond ((not (file-exists-p file1))
 -         nil)
 -        ((not (file-exists-p file2))
 -         t)
 -        ;; We are sure both files exist at this point.
 -        (t
 -         (save-excursion
 -         ;; We try to get the mtime of both files.  If they are not
 -         ;; equal to the "dont-know" value, then we subtract the times
 -         ;; and obtain the result.
 -         (let ((fa1 (file-attributes file1))
 -               (fa2 (file-attributes file2)))
 -           (if (and (not (equal (nth 5 fa1) '(0 0)))
 -                    (not (equal (nth 5 fa2) '(0 0))))
 -               (> 0 (tramp-time-diff (nth 5 fa2) (nth 5 fa1)))
 -             ;; If one of them is the dont-know value, then we can
 -             ;; still try to run a shell command on the remote host.
 -             ;; However, this only works if both files are Tramp
 -             ;; files and both have the same method, same user, same
 -             ;; host.
 -             (unless (tramp-equal-remote file1 file2)
 -               (with-parsed-tramp-file-name
 -                   (if (tramp-tramp-file-p file1) file1 file2) nil
 -                 (tramp-error
 -                  v 'file-error
 -                  "Files %s and %s must have same method, user, host"
 -                  file1 file2)))
 -             (with-parsed-tramp-file-name file1 nil
 -               (zerop (tramp-run-test2
 -                       (tramp-get-test-nt-command v) file1 file2)))))))))
 -
 -;; Functions implemented using the basic functions above.
 -
 -(defun tramp-handle-file-modes (filename)
 -  "Like `file-modes' for Tramp files."
 -  (let ((truename (or (file-truename filename) filename)))
 -    (when (file-exists-p truename)
 -      (tramp-mode-string-to-int (nth 8 (file-attributes truename))))))
 -
 -(defun tramp-default-file-modes (filename)
 -  "Return file modes of FILENAME as integer.
 -If the file modes of FILENAME cannot be determined, return the
 -value of `default-file-modes', without execute permissions."
 -  (or (file-modes filename)
 -      (logand (default-file-modes) (tramp-octal-to-decimal "0666"))))
 -
 -(defun tramp-handle-file-directory-p (filename)
 -  "Like `file-directory-p' for Tramp files."
 -  ;; Care must be taken that this function returns `t' for symlinks
 -  ;; pointing to directories.  Surely the most obvious implementation
 -  ;; would be `test -d', but that returns false for such symlinks.
 -  ;; CCC: Stefan Monnier says that `test -d' follows symlinks.  And
 -  ;; I now think he's right.  So we could be using `test -d', couldn't
 -  ;; we?
 -  ;;
 -  ;; Alternatives: `cd %s', `test -d %s'
 -  (with-parsed-tramp-file-name filename nil
 -    (with-file-property v localname "file-directory-p"
 -      (zerop (tramp-run-test "-d" filename)))))
 -
 -(defun tramp-handle-file-regular-p (filename)
 -  "Like `file-regular-p' for Tramp files."
 -  (and (file-exists-p filename)
 -       (eq ?- (aref (nth 8 (file-attributes filename)) 0))))
 -
 -(defun tramp-handle-file-symlink-p (filename)
 -  "Like `file-symlink-p' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    (let ((x (car (file-attributes filename))))
 -      (when (stringp x)
 -      ;; When Tramp is running on VMS, then `file-name-absolute-p'
 -      ;; might do weird things.
 -      (if (file-name-absolute-p x)
 -          (tramp-make-tramp-file-name method user host x)
 -        x)))))
 -
 -(defun tramp-handle-file-writable-p (filename)
 -  "Like `file-writable-p' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    (with-file-property v localname "file-writable-p"
 -      (if (file-exists-p filename)
 -        ;; Examine `file-attributes' cache to see if request can be
 -        ;; satisfied without remote operation.
 -          (or (tramp-check-cached-permissions v ?w)
 -              (zerop (tramp-run-test "-w" filename)))
 -      ;; If file doesn't exist, check if directory is writable.
 -      (and (zerop (tramp-run-test
 -                   "-d" (file-name-directory filename)))
 -           (zerop (tramp-run-test
 -                   "-w" (file-name-directory filename))))))))
 -
 -(defun tramp-handle-file-ownership-preserved-p (filename)
 -  "Like `file-ownership-preserved-p' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    (with-file-property v localname "file-ownership-preserved-p"
 -      (let ((attributes (file-attributes filename)))
 -      ;; Return t if the file doesn't exist, since it's true that no
 -      ;; information would be lost by an (attempted) delete and create.
 -      (or (null attributes)
 -          (= (nth 2 attributes) (tramp-get-remote-uid v 'integer)))))))
 -
 -;; Other file name ops.
 -
 -(defun tramp-handle-directory-file-name (directory)
 -  "Like `directory-file-name' for Tramp files."
 -  ;; If localname component of filename is "/", leave it unchanged.
 -  ;; Otherwise, remove any trailing slash from localname component.
 -  ;; Method, host, etc, are unchanged.  Does it make sense to try
 -  ;; to avoid parsing the filename?
 -  (with-parsed-tramp-file-name directory nil
 -    (if (and (not (zerop (length localname)))
 -           (eq (aref localname (1- (length localname))) ?/)
 -           (not (string= localname "/")))
 -      (substring directory 0 -1)
 -      directory)))
 -
 -;; Directory listings.
 -
 -(defun tramp-handle-directory-files
 -  (directory &optional full match nosort files-only)
 -  "Like `directory-files' for Tramp files."
 -  ;; FILES-ONLY is valid for XEmacs only.
 -  (when (file-directory-p directory)
 -    (setq directory (file-name-as-directory (expand-file-name directory)))
 -    (let ((temp (nreverse (file-name-all-completions "" directory)))
 -        result item)
 -
 -      (while temp
 -      (setq item (directory-file-name (pop temp)))
 -      (when (and (or (null match) (string-match match item))
 -                 (or (null files-only)
 -                     ;; Files only.
 -                     (and (equal files-only t) (file-regular-p item))
 -                     ;; Directories only.
 -                     (file-directory-p item)))
 -        (push (if full (concat directory item) item)
 -              result)))
 -      (if nosort result (sort result 'string<)))))
 -
 -(defun tramp-handle-directory-files-and-attributes
 -  (directory &optional full match nosort id-format)
 -  "Like `directory-files-and-attributes' for Tramp files."
 -  (unless id-format (setq id-format 'integer))
 -  (when (file-directory-p directory)
 -    (setq directory (expand-file-name directory))
 -    (let* ((temp
 -          (copy-tree
 -           (with-parsed-tramp-file-name directory nil
 -             (with-file-property
 -                 v localname
 -                 (format "directory-files-and-attributes-%s" id-format)
 -               (save-excursion
 -                 (mapcar
 -                  (lambda (x)
 -                    (cons (car x)
 -                          (tramp-convert-file-attributes v (cdr x))))
 -                  (cond
 -                   ((tramp-get-remote-stat v)
 -                    (tramp-do-directory-files-and-attributes-with-stat
 -                     v localname id-format))
 -                   ((tramp-get-remote-perl v)
 -                    (tramp-do-directory-files-and-attributes-with-perl
 -                     v localname id-format)))))))))
 -         result item)
 -
 -      (while temp
 -      (setq item (pop temp))
 -      (when (or (null match) (string-match match (car item)))
 -        (when full
 -          (setcar item (expand-file-name (car item) directory)))
 -        (push item result)))
 -
 -      (if nosort
 -        result
 -      (sort result (lambda (x y) (string< (car x) (car y))))))))
 -
 -(defun tramp-do-directory-files-and-attributes-with-perl
 -  (vec localname &optional id-format)
 -  "Implement `directory-files-and-attributes' for Tramp files using a Perl script."
 -  (tramp-message vec 5 "directory-files-and-attributes with perl: %s" localname)
 -  (tramp-maybe-send-script
 -   vec tramp-perl-directory-files-and-attributes
 -   "tramp_perl_directory_files_and_attributes")
 -  (let ((object
 -       (tramp-send-command-and-read
 -        vec
 -        (format "tramp_perl_directory_files_and_attributes %s %s"
 -                (tramp-shell-quote-argument localname) id-format))))
 -    (when (stringp object) (tramp-error vec 'file-error object))
 -    object))
 -
 -(defun tramp-do-directory-files-and-attributes-with-stat
 -  (vec localname &optional id-format)
 -  "Implement `directory-files-and-attributes' for Tramp files using stat(1) command."
 -  (tramp-message vec 5 "directory-files-and-attributes with stat: %s" localname)
 -  (tramp-send-command-and-read
 -   vec
 -   (format
 -    (concat
 -     ;; We must care about filenames with spaces, or starting with
 -     ;; "-"; this would confuse xargs.  "ls -aQ" might be a solution,
 -     ;; but it does not work on all remote systems.  Therefore, we
 -     ;; quote the filenames via sed.
 -     "cd %s; echo \"(\"; (%s -a | sed -e s/\\$/\\\"/g -e s/^/\\\"/g | xargs "
 -     "%s -c '(\"%%n\" (\"%%N\") %%h %s %s %%Xe0 %%Ye0 %%Ze0 %%se0 \"%%A\" t %%ie0 -1)'); "
 -     "echo \")\"")
 -    (tramp-shell-quote-argument localname)
 -    (tramp-get-ls-command vec)
 -    (tramp-get-remote-stat vec)
 -    (if (eq id-format 'integer) "%u" "\"%U\"")
 -    (if (eq id-format 'integer) "%g" "\"%G\""))))
 -
 -;; This function should return "foo/" for directories and "bar" for
 -;; files.
 -(defun tramp-handle-file-name-all-completions (filename directory)
 -  "Like `file-name-all-completions' for Tramp files."
 -  (unless (save-match-data (string-match "/" filename))
 -    (with-parsed-tramp-file-name (expand-file-name directory) nil
 -
 -      (all-completions
 -       filename
 -       (mapcar
 -      'list
 -        (or
 -         ;; Try cache first
 -         (and
 -          ;; Ignore if expired
 -          (or (not (integerp tramp-completion-reread-directory-timeout))
 -              (<= (tramp-time-diff
 -                   (current-time)
 -                   (tramp-get-file-property
 -                    v localname "last-completion" '(0 0 0)))
 -                  tramp-completion-reread-directory-timeout))
 -
 -          ;; Try cache entries for filename, filename with last
 -          ;; character removed, filename with last two characters
 -          ;; removed, ..., and finally the empty string - all
 -          ;; concatenated to the local directory name
 -
 -          ;; This is inefficient for very long filenames, pity
 -          ;; `reduce' is not available...
 -          (car
 -           (apply
 -            'append
 -            (mapcar
 -             (lambda (x)
 -               (let ((cache-hit
 -                      (tramp-get-file-property
 -                       v
 -                       (concat localname (substring filename 0 x))
 -                       "file-name-all-completions"
 -                       nil)))
 -                 (when cache-hit (list cache-hit))))
 -             (tramp-compat-number-sequence (length filename) 0 -1)))))
 -
 -         ;; Cache expired or no matching cache entry found so we need
 -         ;; to perform a remote operation
 -         (let (result)
 -           ;; Get a list of directories and files, including reliably
 -           ;; tagging the directories with a trailing '/'.  Because I
 -           ;; rock.  --daniel@danann.net
 -
 -           ;; Changed to perform `cd' in the same remote op and only
 -           ;; get entries starting with `filename'. Capture any `cd'
 -           ;; error messages.  Ensure any `cd' and `echo' aliases are
 -           ;; ignored.
 -           (tramp-send-command
 -            v
 -            (if (tramp-get-remote-perl v)
 -                (progn
 -                  (tramp-maybe-send-script
 -                   v tramp-perl-file-name-all-completions
 -                   "tramp_perl_file_name_all_completions")
 -                  (format "tramp_perl_file_name_all_completions %s %s %d"
 -                          (tramp-shell-quote-argument localname)
 -                          (tramp-shell-quote-argument filename)
 -                          (if (symbol-value
 -                             ;; `read-file-name-completion-ignore-case'
 -                             ;; is introduced with Emacs 22.1.
 -                             (if (boundp
 -                                  'read-file-name-completion-ignore-case)
 -                                 'read-file-name-completion-ignore-case
 -                               'completion-ignore-case))
 -                            1 0)))
 -
 -              (format (concat
 -                       "(\\cd %s 2>&1 && (%s %s -a 2>/dev/null"
 -                       ;; `ls' with wildcard might fail with `Argument
 -                       ;; list too long' error in some corner cases; if
 -                       ;; `ls' fails after `cd' succeeded, chances are
 -                       ;; that's the case, so let's retry without
 -                       ;; wildcard.  This will return "too many" entries
 -                       ;; but that isn't harmful.
 -                       " || %s -a 2>/dev/null)"
 -                       " | while read f; do"
 -                       " if %s -d \"$f\" 2>/dev/null;"
 -                       " then \\echo \"$f/\"; else \\echo \"$f\"; fi; done"
 -                       " && \\echo ok) || \\echo fail")
 -                      (tramp-shell-quote-argument localname)
 -                      (tramp-get-ls-command v)
 -                      ;; When `filename' is empty, just `ls' without
 -                      ;; filename argument is more efficient than `ls *'
 -                      ;; for very large directories and might avoid the
 -                      ;; `Argument list too long' error.
 -                      ;;
 -                      ;; With and only with wildcard, we need to add
 -                      ;; `-d' to prevent `ls' from descending into
 -                      ;; sub-directories.
 -                      (if (zerop (length filename))
 -                          "."
 -                        (concat (tramp-shell-quote-argument filename) "* -d"))
 -                      (tramp-get-ls-command v)
 -                      (tramp-get-test-command v))))
 -
 -           ;; Now grab the output.
 -           (with-current-buffer (tramp-get-buffer v)
 -             (goto-char (point-max))
 -
 -             ;; Check result code, found in last line of output
 -             (forward-line -1)
 -             (if (looking-at "^fail$")
 -                 (progn
 -                   ;; Grab error message from line before last line
 -                   ;; (it was put there by `cd 2>&1')
 -                   (forward-line -1)
 -                   (tramp-error
 -                    v 'file-error
 -                    "tramp-handle-file-name-all-completions: %s"
 -                    (buffer-substring
 -                     (point) (tramp-compat-line-end-position))))
 -               ;; For peace of mind, if buffer doesn't end in `fail'
 -               ;; then it should end in `ok'.  If neither are in the
 -               ;; buffer something went seriously wrong on the remote
 -               ;; side.
 -               (unless (looking-at "^ok$")
 -                 (tramp-error
 -                  v 'file-error
 -                  "\
 -tramp-handle-file-name-all-completions: internal error accessing `%s': `%s'"
 -                  (tramp-shell-quote-argument localname) (buffer-string))))
 -
 -             (while (zerop (forward-line -1))
 -               (push (buffer-substring
 -                      (point) (tramp-compat-line-end-position))
 -                     result)))
 -
 -           ;; Because the remote op went through OK we know the
 -           ;; directory we `cd'-ed to exists
 -           (tramp-set-file-property
 -            v localname "file-exists-p" t)
 -
 -           ;; Because the remote op went through OK we know every
 -           ;; file listed by `ls' exists.
 -           (mapc (lambda (entry)
 -                 (tramp-set-file-property
 -                  v (concat localname entry) "file-exists-p" t))
 -               result)
 -
 -           (tramp-set-file-property
 -            v localname "last-completion" (current-time))
 -
 -           ;; Store result in the cache
 -           (tramp-set-file-property
 -            v (concat localname filename)
 -            "file-name-all-completions"
 -            result))))))))
 -
 -(defun tramp-handle-file-name-completion
 -  (filename directory &optional predicate)
 -  "Like `file-name-completion' for Tramp files."
 -  (unless (tramp-tramp-file-p directory)
 -    (error
 -     "tramp-handle-file-name-completion invoked on non-tramp directory `%s'"
 -     directory))
 -  (try-completion
 -   filename
 -   (mapcar 'list (file-name-all-completions filename directory))
 -   (when predicate
 -     (lambda (x) (funcall predicate (expand-file-name (car x) directory))))))
 -
 -;; cp, mv and ln
 -
 -(defun tramp-handle-add-name-to-file
 -  (filename newname &optional ok-if-already-exists)
 -  "Like `add-name-to-file' for Tramp files."
 -  (unless (tramp-equal-remote filename newname)
 -    (with-parsed-tramp-file-name
 -      (if (tramp-tramp-file-p filename) filename newname) nil
 -      (tramp-error
 -       v 'file-error
 -       "add-name-to-file: %s"
 -       "only implemented for same method, same user, same host")))
 -  (with-parsed-tramp-file-name filename v1
 -    (with-parsed-tramp-file-name newname v2
 -      (let ((ln (when v1 (tramp-get-remote-ln v1))))
 -      (when (and (not ok-if-already-exists)
 -                 (file-exists-p newname)
 -                 (not (numberp ok-if-already-exists))
 -                 (y-or-n-p
 -                  (format
 -                   "File %s already exists; make it a new name anyway? "
 -                   newname)))
 -        (tramp-error
 -         v2 'file-error
 -         "add-name-to-file: file %s already exists" newname))
 -      (tramp-flush-file-property v2 (file-name-directory v2-localname))
 -      (tramp-flush-file-property v2 v2-localname)
 -      (tramp-barf-unless-okay
 -       v1
 -       (format "%s %s %s" ln (tramp-shell-quote-argument v1-localname)
 -               (tramp-shell-quote-argument v2-localname))
 -       "error with add-name-to-file, see buffer `%s' for details"
 -       (buffer-name))))))
 -
 -(defun tramp-handle-copy-file
 -  (filename newname &optional ok-if-already-exists keep-date
 -          preserve-uid-gid preserve-selinux-context)
 -  "Like `copy-file' for Tramp files."
 -  (setq filename (expand-file-name filename))
 -  (setq newname (expand-file-name newname))
 -  (cond
 -   ;; At least one file a Tramp file?
 -   ((or (tramp-tramp-file-p filename)
 -      (tramp-tramp-file-p newname))
 -    (tramp-do-copy-or-rename-file
 -     'copy filename newname ok-if-already-exists keep-date
 -     preserve-uid-gid preserve-selinux-context))
 -   ;; Compat section.
 -   (preserve-selinux-context
 -    (tramp-run-real-handler
 -     'copy-file
 -     (list filename newname ok-if-already-exists keep-date
 -         preserve-uid-gid preserve-selinux-context)))
 -   (preserve-uid-gid
 -    (tramp-run-real-handler
 -     'copy-file
 -     (list filename newname ok-if-already-exists keep-date preserve-uid-gid)))
 -   (t
 -    (tramp-run-real-handler
 -     'copy-file (list filename newname ok-if-already-exists keep-date)))))
 -
 -(defun tramp-handle-copy-directory (dirname newname &optional keep-date parents)
 -  "Like `copy-directory' for Tramp files."
 -  (let ((t1 (tramp-tramp-file-p dirname))
 -      (t2 (tramp-tramp-file-p newname)))
 -    (with-parsed-tramp-file-name (if t1 dirname newname) nil
 -      (if (and (tramp-get-method-parameter method 'tramp-copy-recursive)
 -             ;; When DIRNAME and NEWNAME are remote, they must have
 -             ;; the same method.
 -             (or (null t1) (null t2)
 -                 (string-equal
 -                  (tramp-file-name-method (tramp-dissect-file-name dirname))
 -                  (tramp-file-name-method (tramp-dissect-file-name newname)))))
 -        ;; scp or rsync DTRT.
 -        (progn
 -          (setq dirname (directory-file-name (expand-file-name dirname))
 -                newname (directory-file-name (expand-file-name newname)))
 -          (if (and (file-directory-p newname)
 -                   (not (string-equal (file-name-nondirectory dirname)
 -                                      (file-name-nondirectory newname))))
 -              (setq newname
 -                    (expand-file-name
 -                     (file-name-nondirectory dirname) newname)))
 -          (if (not (file-directory-p (file-name-directory newname)))
 -              (make-directory (file-name-directory newname) parents))
 -          (tramp-do-copy-or-rename-file-out-of-band
 -           'copy dirname newname keep-date))
 -      ;; We must do it file-wise.
 -      (tramp-run-real-handler
 -       'copy-directory (list dirname newname keep-date parents)))
 -
 -      ;; When newname did exist, we have wrong cached values.
 -      (when t2
 -      (with-parsed-tramp-file-name newname nil
 -        (tramp-flush-file-property v (file-name-directory localname))
 -        (tramp-flush-file-property v localname))))))
 -
 -(defun tramp-handle-rename-file
 -  (filename newname &optional ok-if-already-exists)
 -  "Like `rename-file' for Tramp files."
 -  ;; Check if both files are local -- invoke normal rename-file.
 -  ;; Otherwise, use Tramp from local system.
 -  (setq filename (expand-file-name filename))
 -  (setq newname (expand-file-name newname))
 -  ;; At least one file a Tramp file?
 -  (if (or (tramp-tramp-file-p filename)
 -          (tramp-tramp-file-p newname))
 -      (tramp-do-copy-or-rename-file
 -       'rename filename newname ok-if-already-exists t t)
 -    (tramp-run-real-handler
 -     'rename-file (list filename newname ok-if-already-exists))))
 -
 -(defun tramp-do-copy-or-rename-file
 -  (op filename newname &optional ok-if-already-exists keep-date
 -      preserve-uid-gid preserve-selinux-context)
 -  "Copy or rename a remote file.
 -OP must be `copy' or `rename' and indicates the operation to perform.
 -FILENAME specifies the file to copy or rename, NEWNAME is the name of
 -the new file (for copy) or the new name of the file (for rename).
 -OK-IF-ALREADY-EXISTS means don't barf if NEWNAME exists already.
 -KEEP-DATE means to make sure that NEWNAME has the same timestamp
 -as FILENAME.  PRESERVE-UID-GID, when non-nil, instructs to keep
 -the uid and gid if both files are on the same host.
 -PRESERVE-SELINUX-CONTEXT activates selinux commands.
 -
 -This function is invoked by `tramp-handle-copy-file' and
 -`tramp-handle-rename-file'.  It is an error if OP is neither of `copy'
 -and `rename'.  FILENAME and NEWNAME must be absolute file names."
 -  (unless (memq op '(copy rename))
 -    (error "Unknown operation `%s', must be `copy' or `rename'" op))
 -  (let ((t1 (tramp-tramp-file-p filename))
 -      (t2 (tramp-tramp-file-p newname))
 -      (context (and preserve-selinux-context
 -                    (apply 'file-selinux-context (list filename))))
 -      pr tm)
 -
 -    (with-parsed-tramp-file-name (if t1 filename newname) nil
 -      (when (and (not ok-if-already-exists) (file-exists-p newname))
 -      (tramp-error
 -       v 'file-already-exists "File %s already exists" newname))
 -
 -      (with-progress-reporter
 -        v 0 (format "%s %s to %s"
 -                    (if (eq op 'copy) "Copying" "Renaming")
 -                    filename newname)
 -
 -      (cond
 -       ;; Both are Tramp files.
 -       ((and t1 t2)
 -        (with-parsed-tramp-file-name filename v1
 -          (with-parsed-tramp-file-name newname v2
 -            (cond
 -             ;; Shortcut: if method, host, user are the same for
 -             ;; both files, we invoke `cp' or `mv' on the remote
 -             ;; host directly.
 -             ((tramp-equal-remote filename newname)
 -              (tramp-do-copy-or-rename-file-directly
 -               op filename newname
 -               ok-if-already-exists keep-date preserve-uid-gid))
 -
 -             ;; Try out-of-band operation.
 -             ((tramp-method-out-of-band-p
 -               v1 (nth 7 (file-attributes filename)))
 -              (tramp-do-copy-or-rename-file-out-of-band
 -               op filename newname keep-date))
 -
 -             ;; No shortcut was possible.  So we copy the file
 -             ;; first.  If the operation was `rename', we go back
 -             ;; and delete the original file (if the copy was
 -             ;; successful).  The approach is simple-minded: we
 -             ;; create a new buffer, insert the contents of the
 -             ;; source file into it, then write out the buffer to
 -             ;; the target file.  The advantage is that it doesn't
 -             ;; matter which filename handlers are used for the
 -             ;; source and target file.
 -             (t
 -              (tramp-do-copy-or-rename-file-via-buffer
 -               op filename newname keep-date))))))
 -
 -       ;; One file is a Tramp file, the other one is local.
 -       ((or t1 t2)
 -        (cond
 -         ;; Fast track on local machine.
 -         ((tramp-local-host-p v)
 -          (tramp-do-copy-or-rename-file-directly
 -           op filename newname
 -           ok-if-already-exists keep-date preserve-uid-gid))
 -
 -         ;; If the Tramp file has an out-of-band method, the
 -         ;; corresponding copy-program can be invoked.
 -         ((tramp-method-out-of-band-p v (nth 7 (file-attributes filename)))
 -          (tramp-do-copy-or-rename-file-out-of-band
 -           op filename newname keep-date))
 -
 -         ;; Use the inline method via a Tramp buffer.
 -         (t (tramp-do-copy-or-rename-file-via-buffer
 -             op filename newname keep-date))))
 -
 -       (t
 -        ;; One of them must be a Tramp file.
 -        (error "Tramp implementation says this cannot happen")))
 -
 -      ;; Handle `preserve-selinux-context'.
 -      (when context (apply 'set-file-selinux-context (list newname context)))
 -
 -      ;; In case of `rename', we must flush the cache of the source file.
 -      (when (and t1 (eq op 'rename))
 -        (with-parsed-tramp-file-name filename v1
 -          (tramp-flush-file-property v1 (file-name-directory localname))
 -          (tramp-flush-file-property v1 localname)))
 -
 -      ;; When newname did exist, we have wrong cached values.
 -      (when t2
 -        (with-parsed-tramp-file-name newname v2
 -          (tramp-flush-file-property v2 (file-name-directory localname))
 -          (tramp-flush-file-property v2 localname)))))))
 -
 -(defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date)
 -  "Use an Emacs buffer to copy or rename a file.
 -First arg OP is either `copy' or `rename' and indicates the operation.
 -FILENAME is the source file, NEWNAME the target file.
 -KEEP-DATE is non-nil if NEWNAME should have the same timestamp as FILENAME."
 -  (with-temp-buffer
 -    ;; We must disable multibyte, because binary data shall not be
 -    ;; converted.
 -    (set-buffer-multibyte nil)
 -    (let ((coding-system-for-read 'binary)
 -        (jka-compr-inhibit t))
 -      (insert-file-contents-literally filename))
 -    ;; We don't want the target file to be compressed, so we let-bind
 -    ;; `jka-compr-inhibit' to t.
 -    (let ((coding-system-for-write 'binary)
 -        (jka-compr-inhibit t))
 -      (write-region (point-min) (point-max) newname)))
 -  ;; KEEP-DATE handling.
 -  (when keep-date (set-file-times newname (nth 5 (file-attributes filename))))
 -  ;; Set the mode.
 -  (set-file-modes newname (tramp-default-file-modes filename))
 -  ;; If the operation was `rename', delete the original file.
 -  (unless (eq op 'copy) (delete-file filename)))
 -
 -(defun tramp-do-copy-or-rename-file-directly
 - (op filename newname ok-if-already-exists keep-date preserve-uid-gid)
 -  "Invokes `cp' or `mv' on the remote system.
 -OP must be one of `copy' or `rename', indicating `cp' or `mv',
 -respectively.  FILENAME specifies the file to copy or rename,
 -NEWNAME is the name of the new file (for copy) or the new name of
 -the file (for rename).  Both files must reside on the same host.
 -KEEP-DATE means to make sure that NEWNAME has the same timestamp
 -as FILENAME.  PRESERVE-UID-GID, when non-nil, instructs to keep
 -the uid and gid from FILENAME."
 -  (let ((t1 (tramp-tramp-file-p filename))
 -      (t2 (tramp-tramp-file-p newname))
 -      (file-times (nth 5 (file-attributes filename)))
 -      (file-modes (tramp-default-file-modes filename)))
 -    (with-parsed-tramp-file-name (if t1 filename newname) nil
 -      (let* ((cmd (cond ((and (eq op 'copy) preserve-uid-gid) "cp -f -p")
 -                      ((eq op 'copy) "cp -f")
 -                      ((eq op 'rename) "mv -f")
 -                      (t (tramp-error
 -                          v 'file-error
 -                          "Unknown operation `%s', must be `copy' or `rename'"
 -                          op))))
 -           (localname1
 -            (if t1
 -                (tramp-file-name-handler 'file-remote-p filename 'localname)
 -              filename))
 -           (localname2
 -            (if t2
 -                (tramp-file-name-handler 'file-remote-p newname 'localname)
 -              newname))
 -           (prefix (file-remote-p (if t1 filename newname)))
 -             cmd-result)
 -
 -      (cond
 -       ;; Both files are on a remote host, with same user.
 -       ((and t1 t2)
 -          (setq cmd-result
 -                (tramp-send-command-and-check
 -                 v
 -                 (format "%s %s %s" cmd
 -                         (tramp-shell-quote-argument localname1)
 -                         (tramp-shell-quote-argument localname2))))
 -        (with-current-buffer (tramp-get-buffer v)
 -          (goto-char (point-min))
 -          (unless
 -              (or
 -               (and keep-date
 -                    ;; Mask cp -f error.
 -                    (re-search-forward
 -                     tramp-operation-not-permitted-regexp nil t))
 -               (zerop cmd-result))
 -            (tramp-error-with-buffer
 -             nil v 'file-error
 -             "Copying directly failed, see buffer `%s' for details."
 -             (buffer-name)))))
 -
 -       ;; We are on the local host.
 -       ((or t1 t2)
 -        (cond
 -         ;; We can do it directly.
 -         ((let (file-name-handler-alist)
 -            (and (file-readable-p localname1)
 -                 (file-writable-p (file-name-directory localname2))
 -                 (or (file-directory-p localname2)
 -                     (file-writable-p localname2))))
 -          (if (eq op 'copy)
 -              (tramp-compat-copy-file
 -               localname1 localname2 ok-if-already-exists
 -               keep-date preserve-uid-gid)
 -            (tramp-run-real-handler
 -             'rename-file (list localname1 localname2 ok-if-already-exists))))
 -
 -         ;; We can do it directly with `tramp-send-command'
 -         ((and (file-readable-p (concat prefix localname1))
 -               (file-writable-p
 -                (file-name-directory (concat prefix localname2)))
 -               (or (file-directory-p (concat prefix localname2))
 -                   (file-writable-p (concat prefix localname2))))
 -          (tramp-do-copy-or-rename-file-directly
 -           op (concat prefix localname1) (concat prefix localname2)
 -           ok-if-already-exists keep-date t)
 -          ;; We must change the ownership to the local user.
 -          (tramp-set-file-uid-gid
 -           (concat prefix localname2)
 -           (tramp-get-local-uid 'integer)
 -           (tramp-get-local-gid 'integer)))
 -
 -         ;; We need a temporary file in between.
 -         (t
 -          ;; Create the temporary file.
 -          (let ((tmpfile (tramp-compat-make-temp-file localname1)))
 -            (unwind-protect
 -                (progn
 -                  (cond
 -                   (t1
 -                    (or
 -                     (zerop
 -                      (tramp-send-command-and-check
 -                       v (format
 -                          "%s %s %s" cmd
 -                          (tramp-shell-quote-argument localname1)
 -                          (tramp-shell-quote-argument tmpfile))))
 -                     (tramp-error-with-buffer
 -                      nil v 'file-error
 -                      "Copying directly failed, see buffer `%s' for details."
 -                      (tramp-get-buffer v)))
 -                    ;; We must change the ownership as remote user.
 -                    ;; Since this does not work reliable, we also
 -                    ;; give read permissions.
 -                    (set-file-modes
 -                     (concat prefix tmpfile) (tramp-octal-to-decimal "0777"))
 -                    (tramp-set-file-uid-gid
 -                     (concat prefix tmpfile)
 -                     (tramp-get-local-uid 'integer)
 -                     (tramp-get-local-gid 'integer)))
 -                   (t2
 -                    (if (eq op 'copy)
 -                        (tramp-compat-copy-file
 -                         localname1 tmpfile t
 -                         keep-date preserve-uid-gid)
 -                      (tramp-run-real-handler
 -                       'rename-file
 -                       (list localname1 tmpfile t)))
 -                    ;; We must change the ownership as local user.
 -                    ;; Since this does not work reliable, we also
 -                    ;; give read permissions.
 -                    (set-file-modes tmpfile (tramp-octal-to-decimal "0777"))
 -                    (tramp-set-file-uid-gid
 -                     tmpfile
 -                     (tramp-get-remote-uid v 'integer)
 -                     (tramp-get-remote-gid v 'integer))))
 -
 -                  ;; Move the temporary file to its destination.
 -                  (cond
 -                   (t2
 -                    (or
 -                     (zerop
 -                      (tramp-send-command-and-check
 -                       v (format
 -                          "cp -f -p %s %s"
 -                          (tramp-shell-quote-argument tmpfile)
 -                          (tramp-shell-quote-argument localname2))))
 -                     (tramp-error-with-buffer
 -                      nil v 'file-error
 -                      "Copying directly failed, see buffer `%s' for details."
 -                      (tramp-get-buffer v))))
 -                   (t1
 -                    (tramp-run-real-handler
 -                     'rename-file
 -                     (list tmpfile localname2 ok-if-already-exists)))))
 -
 -              ;; Save exit.
 -              (condition-case nil
 -                  (delete-file tmpfile)
 -                (error)))))))))
 -
 -      ;; Set the time and mode. Mask possible errors.
 -      (condition-case nil
 -        (when keep-date
 -          (set-file-times newname file-times)
 -          (set-file-modes newname file-modes))
 -      (error)))))
 -
 -(defun tramp-do-copy-or-rename-file-out-of-band (op filename newname keep-date)
 -  "Invoke rcp program to copy.
 -The method used must be an out-of-band method."
 -  (let ((t1 (tramp-tramp-file-p filename))
 -      (t2 (tramp-tramp-file-p newname))
 -      copy-program copy-args copy-env copy-keep-date port spec
 -      source target)
 -
 -    (with-parsed-tramp-file-name (if t1 filename newname) nil
 -      (if (and t1 t2)
 -
 -        ;; Both are Tramp files.  We shall optimize it, when the
 -        ;; methods for filename and newname are the same.
 -        (let* ((dir-flag (file-directory-p filename))
 -               (tmpfile (tramp-compat-make-temp-file localname dir-flag)))
 -          (if dir-flag
 -              (setq tmpfile
 -                    (expand-file-name
 -                     (file-name-nondirectory newname) tmpfile)))
 -          (unwind-protect
 -              (progn
 -                (tramp-do-copy-or-rename-file-out-of-band
 -                 op filename tmpfile keep-date)
 -                (tramp-do-copy-or-rename-file-out-of-band
 -                 'rename tmpfile newname keep-date))
 -            ;; Save exit.
 -            (condition-case nil
 -                (if dir-flag
 -                    (tramp-compat-delete-directory
 -                     (expand-file-name ".." tmpfile) 'recursive)
 -                  (delete-file tmpfile))
 -              (error))))
 -
 -      ;; Expand hops.  Might be necessary for gateway methods.
 -      (setq v (car (tramp-compute-multi-hops v)))
 -      (aset v 3 localname)
 -
 -      ;; Check which ones of source and target are Tramp files.
 -      (setq source (if t1 (tramp-make-copy-program-file-name v) filename)
 -            target (funcall
 -                    (if (and (file-directory-p filename)
 -                             (string-equal
 -                              (file-name-nondirectory filename)
 -                              (file-name-nondirectory newname)))
 -                        'file-name-directory
 -                      'identity)
 -                    (if t2 (tramp-make-copy-program-file-name v) newname)))
 -
 -      ;; Check for port number.  Until now, there's no need for handling
 -      ;; like method, user, host.
 -      (setq host (tramp-file-name-real-host v)
 -            port (tramp-file-name-port v)
 -            port (or (and port (number-to-string port)) ""))
 -
 -      ;; Compose copy command.
 -      (setq spec (format-spec-make
 -                  ?h host ?u user ?p port
 -                  ?t (tramp-get-connection-property
 -                      (tramp-get-connection-process v) "temp-file" "")
 -                  ?k (if keep-date " " ""))
 -            copy-program (tramp-get-method-parameter
 -                          method 'tramp-copy-program)
 -            copy-keep-date (tramp-get-method-parameter
 -                            method 'tramp-copy-keep-date)
 -            copy-args
 -            (delq
 -             nil
 -             (mapcar
 -              (lambda (x)
 -                (setq
 -                 x
 -                 ;; " " is indication for keep-date argument.
 -                 (delete " " (mapcar (lambda (y) (format-spec y spec)) x)))
 -                (unless (member "" x) (mapconcat 'identity x " ")))
 -              (tramp-get-method-parameter method 'tramp-copy-args)))
 -            copy-env
 -            (delq
 -             nil
 -             (mapcar
 -              (lambda (x)
 -                (setq x (mapcar (lambda (y) (format-spec y spec)) x))
 -                (unless (member "" x) (mapconcat 'identity x " ")))
 -              (tramp-get-method-parameter method 'tramp-copy-env))))
 -
 -      ;; Check for program.
 -      (when (and (fboundp 'executable-find)
 -                 (not (let ((default-directory
 -                              (tramp-compat-temporary-file-directory)))
 -                        (executable-find copy-program))))
 -        (tramp-error
 -         v 'file-error "Cannot find copy program: %s" copy-program))
 -
 -      ;; Set variables for computing the prompt for reading
 -      ;; password.
 -      (setq tramp-current-method (tramp-file-name-method v)
 -            tramp-current-user   (tramp-file-name-user v)
 -            tramp-current-host   (tramp-file-name-host v))
 -
 -      (unwind-protect
 -          (with-temp-buffer
 -            ;; The default directory must be remote.
 -            (let ((default-directory
 -                    (file-name-directory (if t1 filename newname)))
 -                  (process-environment (copy-sequence process-environment)))
 -              ;; Set the transfer process properties.
 -              (tramp-set-connection-property
 -               v "process-name" (buffer-name (current-buffer)))
 -              (tramp-set-connection-property
 -               v "process-buffer" (current-buffer))
 -              (while copy-env
 -                (tramp-message v 5 "%s=\"%s\"" (car copy-env) (cadr copy-env))
 -                (setenv (pop copy-env) (pop copy-env)))
 -
 -              ;; Use an asynchronous process.  By this, password can
 -              ;; be handled.  The default directory must be local, in
 -              ;; order to apply the correct `copy-program'.  We don't
 -              ;; set a timeout, because the copying of large files can
 -              ;; last longer than 60 secs.
 -              (let ((p (let ((default-directory
 -                               (tramp-compat-temporary-file-directory)))
 -                         (apply 'start-process
 -                                (tramp-get-connection-property
 -                                 v "process-name" nil)
 -                                (tramp-get-connection-property
 -                                 v "process-buffer" nil)
 -                                copy-program
 -                                (append copy-args (list source target))))))
 -                (tramp-message
 -                 v 6 "%s" (mapconcat 'identity (process-command p) " "))
 -                (tramp-set-process-query-on-exit-flag p nil)
 -                (tramp-process-actions p v tramp-actions-copy-out-of-band))))
 -
 -        ;; Reset the transfer process properties.
 -        (tramp-set-connection-property v "process-name" nil)
 -        (tramp-set-connection-property v "process-buffer" nil))
 -
 -      ;; Handle KEEP-DATE argument.
 -      (when (and keep-date (not copy-keep-date))
 -        (set-file-times newname (nth 5 (file-attributes filename))))
 -
 -      ;; Set the mode.
 -      (unless (and keep-date copy-keep-date)
 -        (ignore-errors
 -          (set-file-modes newname (tramp-default-file-modes filename)))))
 -
 -      ;; If the operation was `rename', delete the original file.
 -      (unless (eq op 'copy)
 -      (if (file-regular-p filename)
 -          (delete-file filename)
 -        (tramp-compat-delete-directory filename 'recursive))))))
 -
 -(defun tramp-handle-make-directory (dir &optional parents)
 -  "Like `make-directory' for Tramp files."
 -  (setq dir (expand-file-name dir))
 -  (with-parsed-tramp-file-name dir nil
 -    (tramp-flush-directory-property v (file-name-directory localname))
 -    (save-excursion
 -      (tramp-barf-unless-okay
 -       v
 -       (format "%s %s"
 -             (if parents "mkdir -p" "mkdir")
 -             (tramp-shell-quote-argument localname))
 -       "Couldn't make directory %s" dir))))
 -
 -(defun tramp-handle-delete-directory (directory &optional recursive)
 -  "Like `delete-directory' for Tramp files."
 -  (setq directory (expand-file-name directory))
 -  (with-parsed-tramp-file-name directory nil
 -    (tramp-flush-file-property v (file-name-directory localname))
 -    (tramp-flush-directory-property v localname)
 -    (unless (zerop (tramp-send-command-and-check
 -                  v
 -                  (format
 -                   "%s %s"
 -                   (if recursive "rm -rf" "rmdir")
 -                   (tramp-shell-quote-argument localname))))
 -      (tramp-error v 'file-error "Couldn't delete %s" directory))))
 -
 -(defun tramp-handle-delete-file (filename &optional trash)
 -  "Like `delete-file' for Tramp files."
 -  (setq filename (expand-file-name filename))
 -  (with-parsed-tramp-file-name filename nil
 -    (tramp-flush-file-property v (file-name-directory localname))
 -    (tramp-flush-file-property v localname)
 -    (unless
 -      (zerop
 -       (tramp-send-command-and-check
 -        v (format "%s %s"
 -                  (or (and trash (tramp-get-remote-trash v)) "rm -f")
 -                  (tramp-shell-quote-argument localname))))
 -      (tramp-error v 'file-error "Couldn't delete %s" filename))))
 -
 -;; Dired.
 -
 -;; CCC: This does not seem to be enough. Something dies when
 -;;      we try and delete two directories under Tramp :/
 -(defun tramp-handle-dired-recursive-delete-directory (filename)
 -  "Recursively delete the directory given.
 -This is like `dired-recursive-delete-directory' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    ;; Run a shell command 'rm -r <localname>'
 -    ;; Code shamelessly stolen from the dired implementation and, um, hacked :)
 -    (unless (file-exists-p filename)
 -      (tramp-error v 'file-error "No such directory: %s" filename))
 -    ;; Which is better, -r or -R? (-r works for me <daniel@danann.net>)
 -    (tramp-send-command
 -     v
 -     (format "rm -rf %s" (tramp-shell-quote-argument localname))
 -     ;; Don't read the output, do it explicitely.
 -     nil t)
 -    ;; Wait for the remote system to return to us...
 -    ;; This might take a while, allow it plenty of time.
 -    (tramp-wait-for-output (tramp-get-connection-process v) 120)
 -    ;; Make sure that it worked...
 -    (tramp-flush-file-property v (file-name-directory localname))
 -    (tramp-flush-directory-property v localname)
 -    (and (file-exists-p filename)
 -       (tramp-error
 -        v 'file-error "Failed to recursively delete %s" filename))))
 -
 -(defun tramp-handle-dired-compress-file (file &rest ok-flag)
 -  "Like `dired-compress-file' for Tramp files."
 -  ;; OK-FLAG is valid for XEmacs only, but not implemented.
 -  ;; Code stolen mainly from dired-aux.el.
 -  (with-parsed-tramp-file-name file nil
 -    (tramp-flush-file-property v localname)
 -    (save-excursion
 -      (let ((suffixes
 -           (if (not (featurep 'xemacs))
 -               ;; Emacs case
 -               (symbol-value 'dired-compress-file-suffixes)
 -             ;; XEmacs has `dired-compression-method-alist', which is
 -             ;; transformed into `dired-compress-file-suffixes' structure.
 -             (mapcar
 -              (lambda (x)
 -                (list (concat (regexp-quote (nth 1 x)) "\\'")
 -                      nil
 -                      (mapconcat 'identity (nth 3 x) " ")))
 -              (symbol-value 'dired-compression-method-alist))))
 -          suffix)
 -      ;; See if any suffix rule matches this file name.
 -      (while suffixes
 -        (let (case-fold-search)
 -          (if (string-match (car (car suffixes)) localname)
 -              (setq suffix (car suffixes) suffixes nil))
 -          (setq suffixes (cdr suffixes))))
 -
 -      (cond ((file-symlink-p file)
 -             nil)
 -            ((and suffix (nth 2 suffix))
 -             ;; We found an uncompression rule.
 -             (with-progress-reporter v 0 (format "Uncompressing %s" file)
 -               (when (zerop
 -                      (tramp-send-command-and-check
 -                       v (concat (nth 2 suffix) " "
 -                                 (tramp-shell-quote-argument localname))))
 -                 ;; `dired-remove-file' is not defined in XEmacs.
 -                 (tramp-compat-funcall 'dired-remove-file file)
 -                 (string-match (car suffix) file)
 -                 (concat (substring file 0 (match-beginning 0))))))
 -            (t
 -             ;; We don't recognize the file as compressed, so compress it.
 -             ;; Try gzip.
 -             (with-progress-reporter v 0 (format "Compressing %s" file)
 -               (when (zerop
 -                      (tramp-send-command-and-check
 -                       v (concat "gzip -f "
 -                                 (tramp-shell-quote-argument localname))))
 -                 ;; `dired-remove-file' is not defined in XEmacs.
 -                 (tramp-compat-funcall 'dired-remove-file file)
 -                 (cond ((file-exists-p (concat file ".gz"))
 -                        (concat file ".gz"))
 -                       ((file-exists-p (concat file ".z"))
 -                        (concat file ".z"))
 -                       (t nil))))))))))
 -
 -(defun tramp-handle-dired-uncache (dir &optional dir-p)
 -  "Like `dired-uncache' for Tramp files."
 -  ;; DIR-P is valid for XEmacs only.
 -  (with-parsed-tramp-file-name
 -      (if (or dir-p (file-directory-p dir)) dir (file-name-directory dir)) nil
 -    (tramp-flush-directory-property v localname)))
 -
 -;; Pacify byte-compiler.  The function is needed on XEmacs only.  I'm
 -;; not sure at all that this is the right way to do it, but let's hope
 -;; it works for now, and wait for a guru to point out the Right Way to
 -;; achieve this.
 -;;(eval-when-compile
 -;;  (unless (fboundp 'dired-insert-set-properties)
 -;;    (fset 'dired-insert-set-properties 'ignore)))
 -;; Gerd suggests this:
 -(eval-when-compile (require 'dired))
 -;; Note that dired is required at run-time, too, when it is needed.
 -;; It is only needed on XEmacs for the function
 -;; `dired-insert-set-properties'.
 -
 -(defun tramp-handle-insert-directory
 -  (filename switches &optional wildcard full-directory-p)
 -  "Like `insert-directory' for Tramp files."
 -  (setq filename (expand-file-name filename))
 -  (with-parsed-tramp-file-name filename nil
 -    (if (and (featurep 'ls-lisp)
 -           (not (symbol-value 'ls-lisp-use-insert-directory-program)))
 -      (tramp-run-real-handler
 -       'insert-directory (list filename switches wildcard full-directory-p))
 -      (when (stringp switches)
 -        (setq switches (split-string switches)))
 -      (when (and (member "--dired" switches)
 -               (not (tramp-get-ls-command-with-dired v)))
 -      (setq switches (delete "--dired" switches)))
 -      (when wildcard
 -        (setq wildcard (tramp-run-real-handler
 -                      'file-name-nondirectory (list localname)))
 -        (setq localname (tramp-run-real-handler
 -                       'file-name-directory (list localname))))
 -      (unless full-directory-p
 -        (setq switches (add-to-list 'switches "-d" 'append)))
 -      (setq switches (mapconcat 'tramp-shell-quote-argument switches " "))
 -      (when wildcard
 -      (setq switches (concat switches " " wildcard)))
 -      (tramp-message
 -       v 4 "Inserting directory `ls %s %s', wildcard %s, fulldir %s"
 -       switches filename (if wildcard "yes" "no")
 -       (if full-directory-p "yes" "no"))
 -      ;; If `full-directory-p', we just say `ls -l FILENAME'.
 -      ;; Else we chdir to the parent directory, then say `ls -ld BASENAME'.
 -      (if full-directory-p
 -        (tramp-send-command
 -         v
 -         (format "%s %s %s 2>/dev/null"
 -                 (tramp-get-ls-command v)
 -                 switches
 -                 (if wildcard
 -                     localname
 -                   (tramp-shell-quote-argument (concat localname ".")))))
 -      (tramp-barf-unless-okay
 -       v
 -       (format "cd %s" (tramp-shell-quote-argument
 -                        (tramp-run-real-handler
 -                         'file-name-directory (list localname))))
 -       "Couldn't `cd %s'"
 -       (tramp-shell-quote-argument
 -        (tramp-run-real-handler 'file-name-directory (list localname))))
 -      (tramp-send-command
 -       v
 -       (format "%s %s %s"
 -               (tramp-get-ls-command v)
 -               switches
 -               (if (or wildcard
 -                       (zerop (length
 -                               (tramp-run-real-handler
 -                                'file-name-nondirectory (list localname)))))
 -                   ""
 -                 (tramp-shell-quote-argument
 -                  (tramp-run-real-handler
 -                   'file-name-nondirectory (list localname)))))))
 -      (let ((beg (point)))
 -      ;; We cannot use `insert-buffer-substring' because the Tramp
 -      ;; buffer changes its contents before insertion due to calling
 -      ;; `expand-file' and alike.
 -      (insert
 -       (with-current-buffer (tramp-get-buffer v)
 -         (buffer-string)))
 -
 -      ;; Check for "--dired" output.
 -      (forward-line -2)
 -      (when (looking-at "//SUBDIRED//")
 -        (forward-line -1))
 -      (when (looking-at "//DIRED//\\s-+")
 -        (let ((databeg (match-end 0))
 -              (end (tramp-compat-line-end-position)))
 -          ;; Now read the numeric positions of file names.
 -          (goto-char databeg)
 -          (while (< (point) end)
 -            (let ((start (+ beg (read (current-buffer))))
 -                  (end (+ beg (read (current-buffer)))))
 -              (if (memq (char-after end) '(?\n ?\ ))
 -                  ;; End is followed by \n or by " -> ".
 -                  (put-text-property start end 'dired-filename t))))))
 -      ;; Remove trailing lines.
 -      (goto-char (tramp-compat-line-beginning-position))
 -      (while (looking-at "//")
 -        (forward-line 1)
 -        (delete-region (match-beginning 0) (point)))
 -
 -      ;; The inserted file could be from somewhere else.
 -      (when (and (not wildcard) (not full-directory-p))
 -        (goto-char (point-max))
 -        (when (file-symlink-p filename)
 -          (goto-char (search-backward "->" beg 'noerror)))
 -        (search-backward
 -         (if (zerop (length (file-name-nondirectory filename)))
 -             "."
 -           (file-name-nondirectory filename))
 -         beg 'noerror)
 -        (replace-match (file-relative-name filename) t))
 -
 -      (goto-char (point-max))))))
 +(defvar tramp-inodes nil
 +  "Keeps virtual inodes numbers.")
  
 -(defun tramp-handle-unhandled-file-name-directory (filename)
 -  "Like `unhandled-file-name-directory' for Tramp files."
 -  ;; With Emacs 23, we could simply return `nil'.  But we must keep it
 -  ;; for backward compatibility.
 -  (expand-file-name "~/"))
 +;; Devices must distinguish physical file systems.  The device numbers
 +;; provided by "lstat" aren't unique, because we operate on different hosts.
 +;; So we use virtual device numbers, generated by Tramp.  Both Ange-FTP and
 +;; EFS use device number "-1".  In order to be different, we use device number
 +;; (-1 . x), whereby "x" is unique for a given (method user host).
 +(defvar tramp-devices nil
 +  "Keeps virtual device numbers.")
  
 -;; Canonicalization of file names.
 -
 -(defun tramp-handle-expand-file-name (name &optional dir)
 -  "Like `expand-file-name' for Tramp files.
 -If the localname part of the given filename starts with \"/../\" then
 -the result will be a local, non-Tramp, filename."
 -  ;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
 -  (setq dir (or dir default-directory "/"))
 -  ;; Unless NAME is absolute, concat DIR and NAME.
 -  (unless (file-name-absolute-p name)
 -    (setq name (concat (file-name-as-directory dir) name)))
 -  ;; If NAME is not a Tramp file, run the real handler.
 -  (if (not (tramp-connectable-p name))
 -      (tramp-run-real-handler 'expand-file-name (list name nil))
 -    ;; Dissect NAME.
 -    (with-parsed-tramp-file-name name nil
 -      (unless (tramp-run-real-handler 'file-name-absolute-p (list localname))
 -      (setq localname (concat "~/" localname)))
 -      ;; Tilde expansion if necessary.  This needs a shell which
 -      ;; groks tilde expansion!  The function `tramp-find-shell' is
 -      ;; supposed to find such a shell on the remote host.  Please
 -      ;; tell me about it when this doesn't work on your system.
 -      (when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname)
 -      (let ((uname (match-string 1 localname))
 -            (fname (match-string 2 localname)))
 -        ;; We cannot simply apply "~/", because under sudo "~/" is
 -        ;; expanded to the local user home directory but to the
 -        ;; root home directory.  On the other hand, using always
 -        ;; the default user name for tilde expansion is not
 -        ;; appropriate either, because ssh and companions might
 -        ;; use a user name from the config file.
 -        (when (and (string-equal uname "~")
 -                   (string-match "\\`su\\(do\\)?\\'" method))
 -          (setq uname (concat uname user)))
 -        (setq uname
 -              (with-connection-property v uname
 -                (tramp-send-command
 -                 v (format "cd %s; pwd" (tramp-shell-quote-argument uname)))
 -                (with-current-buffer (tramp-get-buffer v)
 -                  (goto-char (point-min))
 -                  (buffer-substring
 -                   (point) (tramp-compat-line-end-position)))))
 -        (setq localname (concat uname fname))))
 -      ;; There might be a double slash, for example when "~/"
 -      ;; expands to "/".  Remove this.
 -      (while (string-match "//" localname)
 -      (setq localname (replace-match "/" t t localname)))
 -      ;; No tilde characters in file name, do normal
 -      ;; `expand-file-name' (this does "/./" and "/../").  We bind
 -      ;; `directory-sep-char' here for XEmacs on Windows, which would
 -      ;; otherwise use backslash.  `default-directory' is bound,
 -      ;; because on Windows there would be problems with UNC shares or
 -      ;; Cygwin mounts.
 -      (let ((directory-sep-char ?/)
 -          (default-directory (tramp-compat-temporary-file-directory)))
 -      (tramp-make-tramp-file-name
 -       method user host
 -       (tramp-drop-volume-letter
 -        (tramp-run-real-handler
 -         'expand-file-name (list localname))))))))
 +(defun tramp-default-file-modes (filename)
 +  "Return file modes of FILENAME as integer.
 +If the file modes of FILENAME cannot be determined, return the
 +value of `default-file-modes', without execute permissions."
 +  (or (file-modes filename)
 +      (logand (default-file-modes) (tramp-compat-octal-to-decimal "0666"))))
  
  (defun tramp-replace-environment-variables (filename)
    "Replace environment variables in FILENAME.
@@@ -1625,6 -4439,38 +1625,6 @@@ Return the string with the replaced var
               t nil filename)))
        filename)))
  
 -(defun tramp-handle-substitute-in-file-name (filename)
 -  "Like `substitute-in-file-name' for Tramp files.
 -\"//\" and \"/~\" substitute only in the local filename part.
 -If the URL Tramp syntax is chosen, \"//\" as method delimeter and \"/~\" at
 -beginning of local filename are not substituted."
 -  ;; First, we must replace environment variables.
 -  (setq filename (tramp-replace-environment-variables filename))
 -  (with-parsed-tramp-file-name filename nil
 -    (if (equal tramp-syntax 'url)
 -      ;; We need to check localname only.  The other parts cannot contain
 -      ;; "//" or "/~".
 -      (if (and (> (length localname) 1)
 -               (or (string-match "//" localname)
 -                   (string-match "/~" localname 1)))
 -          (tramp-run-real-handler 'substitute-in-file-name (list filename))
 -        (tramp-make-tramp-file-name
 -         (when method (substitute-in-file-name method))
 -         (when user (substitute-in-file-name user))
 -         (when host (substitute-in-file-name host))
 -         (when localname
 -           (tramp-run-real-handler
 -            'substitute-in-file-name (list localname)))))
 -      ;; Ignore in LOCALNAME everything before "//" or "/~".
 -      (when (and (stringp localname) (string-match ".+?/\\(/\\|~\\)" localname))
 -      (setq filename
 -            (concat (file-remote-p filename)
 -                    (replace-match "\\1" nil nil localname)))
 -      ;; "/m:h:~" does not work for completion.  We use "/m:h:~/".
 -      (when (string-match "~$" filename)
 -        (setq filename (concat filename "/"))))
 -      (tramp-run-real-handler 'substitute-in-file-name (list filename)))))
 -
  ;; In XEmacs, electricity is implemented via a key map for ?/ and ?~,
  ;; which calls corresponding functions (see minibuf.el).
  (when (fboundp 'minibuffer-electric-separator)
     '(minibuffer-electric-separator
       minibuffer-electric-tilde)))
  
 -
 -;;; Remote commands:
 -
 -(defun tramp-handle-executable-find (command)
 -  "Like `executable-find' for Tramp files."
 -  (with-parsed-tramp-file-name default-directory nil
 -    (tramp-find-executable v command (tramp-get-remote-path v) t)))
 -
 -(defun tramp-process-sentinel (proc event)
 -  "Flush file caches."
 -  (unless (memq (process-status proc) '(run open))
 -    (let ((vec (tramp-get-connection-property proc "vector" nil)))
 -      (when vec
 -      (tramp-message vec 5 "Sentinel called: `%s' `%s'" proc event)
 -        (tramp-flush-directory-property vec "")))))
 -
 -;; We use BUFFER also as connection buffer during setup. Because of
 -;; this, its original contents must be saved, and restored once
 -;; connection has been setup.
 -(defun tramp-handle-start-file-process (name buffer program &rest args)
 -  "Like `start-file-process' for Tramp files."
 -  (with-parsed-tramp-file-name default-directory nil
 -    (unwind-protect
 -      ;; When PROGRAM is nil, we just provide a tty.
 -      (let ((command
 -             (when (stringp program)
 -               (format "cd %s; exec %s"
 -                       (tramp-shell-quote-argument localname)
 -                       (mapconcat 'tramp-shell-quote-argument
 -                                  (cons program args) " "))))
 -            (tramp-process-connection-type
 -             (or (null program) tramp-process-connection-type))
 -            (name1 name)
 -            (i 0))
 -        (unless buffer
 -          ;; BUFFER can be nil.  We use a temporary buffer.
 -          (setq buffer (generate-new-buffer tramp-temp-buffer-name)))
 -        (while (get-process name1)
 -          ;; NAME must be unique as process name.
 -          (setq i (1+ i)
 -                name1 (format "%s<%d>" name i)))
 -        (setq name name1)
 -        ;; Set the new process properties.
 -        (tramp-set-connection-property v "process-name" name)
 -        (tramp-set-connection-property v "process-buffer" buffer)
 -        ;; Activate narrowing in order to save BUFFER contents.
 -        ;; Clear also the modification time; otherwise we might be
 -        ;; interrupted by `verify-visited-file-modtime'.
 -        (with-current-buffer (tramp-get-connection-buffer v)
 -          (clear-visited-file-modtime)
 -          (narrow-to-region (point-max) (point-max)))
 -        (if command
 -            ;; Send the command.
 -            (tramp-send-command v command nil t) ; nooutput
 -          ;; Check, whether a pty is associated.
 -          (tramp-maybe-open-connection v)
 -          (unless (process-get (tramp-get-connection-process v) 'remote-tty)
 -            (tramp-error
 -             v 'file-error "pty association is not supported for `%s'" name)))
 -        (let ((p (tramp-get-connection-process v)))
 -          ;; Set sentinel and query flag for this process.
 -          (tramp-set-connection-property p "vector" v)
 -          (set-process-sentinel p 'tramp-process-sentinel)
 -          (tramp-set-process-query-on-exit-flag p t)
 -          ;; Return process.
 -          p))
 -      ;; Save exit.
 -      (with-current-buffer (tramp-get-connection-buffer v)
 -      (if (string-match tramp-temp-buffer-name (buffer-name))
 -          (progn
 -            (set-process-buffer (tramp-get-connection-process v) nil)
 -            (kill-buffer (current-buffer)))
 -        (widen)
 -        (goto-char (point-max))))
 -      (tramp-set-connection-property v "process-name" nil)
 -      (tramp-set-connection-property v "process-buffer" nil))))
 -
 -(defun tramp-handle-process-file
 -  (program &optional infile destination display &rest args)
 -  "Like `process-file' for Tramp files."
 -  ;; The implementation is not complete yet.
 -  (when (and (numberp destination) (zerop destination))
 -    (error "Implementation does not handle immediate return"))
 -
 -  (with-parsed-tramp-file-name default-directory nil
 -    (let (command input tmpinput stderr tmpstderr outbuf ret)
 -      ;; Compute command.
 -      (setq command (mapconcat 'tramp-shell-quote-argument
 -                             (cons program args) " "))
 -      ;; Determine input.
 -      (if (null infile)
 -        (setq input "/dev/null")
 -      (setq infile (expand-file-name infile))
 -      (if (tramp-equal-remote default-directory infile)
 -          ;; INFILE is on the same remote host.
 -          (setq input (with-parsed-tramp-file-name infile nil localname))
 -        ;; INFILE must be copied to remote host.
 -        (setq input (tramp-make-tramp-temp-file v)
 -              tmpinput (tramp-make-tramp-file-name method user host input))
 -        (copy-file infile tmpinput t)))
 -      (when input (setq command (format "%s <%s" command input)))
 -
 -      ;; Determine output.
 -      (cond
 -       ;; Just a buffer.
 -       ((bufferp destination)
 -      (setq outbuf destination))
 -       ;; A buffer name.
 -       ((stringp destination)
 -      (setq outbuf (get-buffer-create destination)))
 -       ;; (REAL-DESTINATION ERROR-DESTINATION)
 -       ((consp destination)
 -      ;; output.
 -      (cond
 -       ((bufferp (car destination))
 -        (setq outbuf (car destination)))
 -       ((stringp (car destination))
 -        (setq outbuf (get-buffer-create (car destination))))
 -       ((car destination)
 -        (setq outbuf (current-buffer))))
 -      ;; stderr.
 -      (cond
 -       ((stringp (cadr destination))
 -        (setcar (cdr destination) (expand-file-name (cadr destination)))
 -        (if (tramp-equal-remote default-directory (cadr destination))
 -            ;; stderr is on the same remote host.
 -            (setq stderr (with-parsed-tramp-file-name
 -                             (cadr destination) nil localname))
 -          ;; stderr must be copied to remote host.  The temporary
 -          ;; file must be deleted after execution.
 -          (setq stderr (tramp-make-tramp-temp-file v)
 -                tmpstderr (tramp-make-tramp-file-name
 -                           method user host stderr))))
 -       ;; stderr to be discarded.
 -       ((null (cadr destination))
 -        (setq stderr "/dev/null"))))
 -       ;; 't
 -       (destination
 -      (setq outbuf (current-buffer))))
 -      (when stderr (setq command (format "%s 2>%s" command stderr)))
 -
 -      ;; Send the command.  It might not return in time, so we protect
 -      ;; it.  Call it in a subshell, in order to preserve working
 -      ;; directory.
 -      (condition-case nil
 -        (unwind-protect
 -              (setq ret
 -                    (tramp-send-command-and-check
 -                     v (format "\\cd %s; %s"
 -                               (tramp-shell-quote-argument localname)
 -                               command)
 -                   t t))
 -          ;; We should show the output anyway.
 -          (when outbuf
 -            (with-current-buffer outbuf
 -                (insert
 -                 (with-current-buffer (tramp-get-connection-buffer v)
 -                   (buffer-string))))
 -            (when display (display-buffer outbuf))))
 -      ;; When the user did interrupt, we should do it also.  We use
 -      ;; return code -1 as marker.
 -      (quit
 -       (kill-buffer (tramp-get-connection-buffer v))
 -       (setq ret -1))
 -      ;; Handle errors.
 -      (error
 -       (kill-buffer (tramp-get-connection-buffer v))
 -       (setq ret 1)))
 -
 -      ;; Provide error file.
 -      (when tmpstderr (rename-file tmpstderr (cadr destination) t))
 -
 -      ;; Cleanup.  We remove all file cache values for the connection,
 -      ;; because the remote process could have changed them.
 -      (when tmpinput (delete-file tmpinput))
 -
 -      ;; `process-file-side-effects' has been introduced with GNU
 -      ;; Emacs 23.2.  If set to `nil', no remote file will be changed
 -      ;; by `program'.  If it doesn't exist, we assume its default
 -      ;; value 't'.
 -      (unless (and (boundp 'process-file-side-effects)
 -                 (not (symbol-value 'process-file-side-effects)))
 -        (tramp-flush-directory-property v ""))
 -
 -      ;; Return exit status.
 -      (if (equal ret -1)
 -        (keyboard-quit)
 -      ret))))
 -
 -(defun tramp-local-call-process
 -  (program &optional infile destination display &rest args)
 -  "Calls `call-process' on the local host.
 -This is needed because for some Emacs flavors Tramp has
 -defadviced `call-process' to behave like `process-file'.  The
 -Lisp error raised when PROGRAM is nil is trapped also, returning 1."
 -  (let ((default-directory
 -        (if (file-remote-p default-directory)
 -            (tramp-compat-temporary-file-directory)
 -          default-directory)))
 -    (if (executable-find program)
 -      (apply 'call-process program infile destination display args)
 -      1)))
 -
 -(defun tramp-handle-call-process-region
 -  (start end program &optional delete buffer display &rest args)
 -  "Like `call-process-region' for Tramp files."
 -  (let ((tmpfile (tramp-compat-make-temp-file "")))
 -    (write-region start end tmpfile)
 -    (when delete (delete-region start end))
 -    (unwind-protect
 -      (apply 'call-process program tmpfile buffer display args)
 -      (delete-file tmpfile))))
 -
 -(defun tramp-handle-shell-command
 -  (command &optional output-buffer error-buffer)
 -  "Like `shell-command' for Tramp files."
 -  (let* ((asynchronous (string-match "[ \t]*&[ \t]*\\'" command))
 -       ;; We cannot use `shell-file-name' and `shell-command-switch',
 -       ;; they are variables of the local host.
 -       (args (list
 -              (tramp-get-method-parameter
 -               (tramp-file-name-method
 -                (tramp-dissect-file-name default-directory))
 -               'tramp-remote-sh)
 -              "-c" (substring command 0 asynchronous)))
 -       current-buffer-p
 -       (output-buffer
 -        (cond
 -         ((bufferp output-buffer) output-buffer)
 -         ((stringp output-buffer) (get-buffer-create output-buffer))
 -         (output-buffer
 -          (setq current-buffer-p t)
 -          (current-buffer))
 -         (t (get-buffer-create
 -             (if asynchronous
 -                 "*Async Shell Command*"
 -               "*Shell Command Output*")))))
 -       (error-buffer
 -        (cond
 -         ((bufferp error-buffer) error-buffer)
 -         ((stringp error-buffer) (get-buffer-create error-buffer))))
 -       (buffer
 -        (if (and (not asynchronous) error-buffer)
 -            (with-parsed-tramp-file-name default-directory nil
 -              (list output-buffer (tramp-make-tramp-temp-file v)))
 -          output-buffer))
 -       (p (get-buffer-process output-buffer)))
 -
 -    ;; Check whether there is another process running.  Tramp does not
 -    ;; support 2 (asynchronous) processes in parallel.
 -    (when p
 -      (if (yes-or-no-p "A command is running.  Kill it? ")
 -        (condition-case nil
 -            (kill-process p)
 -          (error nil))
 -      (error "Shell command in progress")))
 -
 -    (if current-buffer-p
 -      (progn
 -        (barf-if-buffer-read-only)
 -        (push-mark nil t))
 -      (with-current-buffer output-buffer
 -      (setq buffer-read-only nil)
 -      (erase-buffer)))
 -
 -    (if (and (not current-buffer-p) (integerp asynchronous))
 -      (prog1
 -          ;; Run the process.
 -          (apply 'start-file-process "*Async Shell*" buffer args)
 -        ;; Display output.
 -        (pop-to-buffer output-buffer)
 -        (setq mode-line-process '(":%s"))
 -        (require 'shell) (shell-mode))
 -
 -      (prog1
 -        ;; Run the process.
 -        (apply 'process-file (car args) nil buffer nil (cdr args))
 -      ;; Insert error messages if they were separated.
 -      (when (listp buffer)
 -        (with-current-buffer error-buffer
 -          (insert-file-contents (cadr buffer)))
 -        (delete-file (cadr buffer)))
 -      (if current-buffer-p
 -          ;; This is like exchange-point-and-mark, but doesn't
 -          ;; activate the mark.  It is cleaner to avoid activation,
 -          ;; even though the command loop would deactivate the mark
 -          ;; because we inserted text.
 -          (goto-char (prog1 (mark t)
 -                       (set-marker (mark-marker) (point)
 -                                   (current-buffer))))
 -        ;; There's some output, display it.
 -        (when (with-current-buffer output-buffer (> (point-max) (point-min)))
 -          (if (functionp 'display-message-or-buffer)
 -              (tramp-compat-funcall 'display-message-or-buffer output-buffer)
 -            (pop-to-buffer output-buffer))))))))
 -
 -;; File Editing.
 -
 -(defvar tramp-handle-file-local-copy-hook nil
 -  "Normal hook to be run at the end of `tramp-handle-file-local-copy'.")
 -
 -(defun tramp-handle-file-local-copy (filename)
 -  "Like `file-local-copy' for Tramp files."
 -
 -  (with-parsed-tramp-file-name filename nil
 -    (unless (file-exists-p filename)
 -      (tramp-error
 -       v 'file-error
 -       "Cannot make local copy of non-existing file `%s'" filename))
 -
 -    (let* ((size (nth 7 (file-attributes filename)))
 -         (rem-enc (tramp-get-inline-coding v "remote-encoding" size))
 -         (loc-dec (tramp-get-inline-coding v "local-decoding" size))
 -         (tmpfile (tramp-compat-make-temp-file filename)))
 -
 -      (condition-case err
 -        (cond
 -         ;; `copy-file' handles direct copy and out-of-band methods.
 -         ((or (tramp-local-host-p v)
 -              (tramp-method-out-of-band-p v size))
 -          (copy-file filename tmpfile t t))
 -
 -         ;; Use inline encoding for file transfer.
 -         (rem-enc
 -          (save-excursion
 -            (with-progress-reporter
 -             v 3 (format "Encoding remote file %s" filename)
 -             (tramp-barf-unless-okay
 -              v (format rem-enc (tramp-shell-quote-argument localname))
 -              "Encoding remote file failed"))
 -
 -            (if (functionp loc-dec)
 -                ;; If local decoding is a function, we call it.  We
 -                ;; must disable multibyte, because
 -                ;; `uudecode-decode-region' doesn't handle it
 -                ;; correctly.
 -                (with-temp-buffer
 -                  (set-buffer-multibyte nil)
 -                  (insert-buffer-substring (tramp-get-buffer v))
 -                  (with-progress-reporter
 -                      v 3 (format "Decoding remote file %s with function %s"
 -                                  filename loc-dec)
 -                    (funcall loc-dec (point-min) (point-max))
 -                    ;; Unset `file-name-handler-alist'.  Otherwise,
 -                    ;; epa-file gets confused.
 -                    (let (file-name-handler-alist
 -                          (coding-system-for-write 'binary))
 -                      (write-region (point-min) (point-max) tmpfile))))
 -
 -              ;; If tramp-decoding-function is not defined for this
 -              ;; method, we invoke tramp-decoding-command instead.
 -              (let ((tmpfile2 (tramp-compat-make-temp-file filename)))
 -                ;; Unset `file-name-handler-alist'.  Otherwise,
 -                ;; epa-file gets confused.
 -                (let (file-name-handler-alist
 -                      (coding-system-for-write 'binary))
 -                  (write-region (point-min) (point-max) tmpfile2))
 -                (with-progress-reporter
 -                    v 3 (format "Decoding remote file %s with command %s"
 -                                filename loc-dec)
 -                  (unwind-protect
 -                      (tramp-call-local-coding-command
 -                       loc-dec tmpfile2 tmpfile)
 -                    (delete-file tmpfile2)))))
 -
 -            ;; Set proper permissions.
 -            (set-file-modes tmpfile (tramp-default-file-modes filename))
 -            ;; Set local user ownership.
 -            (tramp-set-file-uid-gid tmpfile)))
 -
 -         ;; Oops, I don't know what to do.
 -         (t (tramp-error
 -             v 'file-error "Wrong method specification for `%s'" method)))
 -
 -      ;; Error handling.
 -      ((error quit)
 -       (delete-file tmpfile)
 -       (signal (car err) (cdr err))))
 -
 -      (run-hooks 'tramp-handle-file-local-copy-hook)
 -      tmpfile)))
 -
 -(defun tramp-handle-file-remote-p (filename &optional identification connected)
 -  "Like `file-remote-p' for Tramp files."
 -  (let ((tramp-verbose 3))
 -    (when (tramp-tramp-file-p filename)
 -      (let* ((v (tramp-dissect-file-name filename))
 -           (p (tramp-get-connection-process v))
 -           (c (and p (processp p) (memq (process-status p) '(run open)))))
 -      ;; We expand the file name only, if there is already a connection.
 -      (with-parsed-tramp-file-name
 -          (if c (expand-file-name filename) filename) nil
 -        (and (or (not connected) c)
 -             (cond
 -              ((eq identification 'method) method)
 -              ((eq identification 'user) user)
 -              ((eq identification 'host) host)
 -              ((eq identification 'localname) localname)
 -              (t (tramp-make-tramp-file-name method user host "")))))))))
 -
  (defun tramp-find-file-name-coding-system-alist (filename tmpname)
    "Like `find-operation-coding-system' for Tramp filenames.
  Tramp's `insert-file-contents' and `write-region' work over
@@@ -1669,6 -4915,535 +1669,6 @@@ coding system might not be determined
        (add-to-list
         'result (cons (regexp-quote tmpname) (cdr elt)) 'append)))))
  
 -(defun tramp-handle-insert-file-contents
 -  (filename &optional visit beg end replace)
 -  "Like `insert-file-contents' for Tramp files."
 -  (barf-if-buffer-read-only)
 -  (setq filename (expand-file-name filename))
 -  (let (result local-copy remote-copy)
 -    (with-parsed-tramp-file-name filename nil
 -      (unwind-protect
 -        (if (not (file-exists-p filename))
 -            ;; We don't raise a Tramp error, because it might be
 -            ;; suppressed, like in `find-file-noselect-1'.
 -            (signal 'file-error
 -                    (list "File not found on remote host" filename))
 -
 -          (if (and (tramp-local-host-p v)
 -                   (let (file-name-handler-alist)
 -                     (file-readable-p localname)))
 -              ;; Short track: if we are on the local host, we can
 -              ;; run directly.
 -              (setq result
 -                    (tramp-run-real-handler
 -                     'insert-file-contents
 -                     (list localname visit beg end replace)))
 -
 -            ;; When we shall insert only a part of the file, we copy
 -            ;; this part.
 -            (when (or beg end)
 -              (setq remote-copy (tramp-make-tramp-temp-file v))
 -              (tramp-send-command
 -               v
 -               (cond
 -                ((and beg end)
 -                 (format "tail -c +%d %s | head -c +%d >%s"
 -                         (1+ beg) (tramp-shell-quote-argument localname)
 -                         (- end beg) remote-copy))
 -                (beg
 -                 (format "tail -c +%d %s >%s"
 -                         (1+ beg) (tramp-shell-quote-argument localname)
 -                         remote-copy))
 -                (end
 -                 (format "head -c +%d %s >%s"
 -                         (1+ end) (tramp-shell-quote-argument localname)
 -                         remote-copy)))))
 -
 -            ;; `insert-file-contents-literally' takes care to avoid
 -            ;; calling jka-compr.  By let-binding
 -            ;; `inhibit-file-name-operation', we propagate that care
 -            ;; to the `file-local-copy' operation.
 -            (setq local-copy
 -                  (let ((inhibit-file-name-operation
 -                         (when (eq inhibit-file-name-operation
 -                                   'insert-file-contents)
 -                           'file-local-copy)))
 -                    (cond
 -                     ((stringp remote-copy)
 -                      (file-local-copy
 -                       (tramp-make-tramp-file-name
 -                        method user host remote-copy)))
 -                     ((stringp tramp-temp-buffer-file-name)
 -                      (copy-file filename tramp-temp-buffer-file-name 'ok)
 -                      tramp-temp-buffer-file-name)
 -                     (t (file-local-copy filename)))))
 -
 -            ;; When the file is not readable for the owner, it
 -            ;; cannot be inserted, even it is redable for the group
 -            ;; or for everybody.
 -            (set-file-modes local-copy (tramp-octal-to-decimal "0600"))
 -
 -            (when (and (null remote-copy)
 -                       (tramp-get-method-parameter
 -                        method 'tramp-copy-keep-tmpfile))
 -              ;; We keep the local file for performance reasons,
 -              ;; useful for "rsync".
 -              (setq tramp-temp-buffer-file-name local-copy)
 -              (put 'tramp-temp-buffer-file-name 'permanent-local t))
 -
 -            (with-progress-reporter
 -                v 3 (format "Inserting local temp file `%s'" local-copy)
 -              ;; We must ensure that `file-coding-system-alist'
 -              ;; matches `local-copy'.
 -              (let ((file-coding-system-alist
 -                     (tramp-find-file-name-coding-system-alist
 -                      filename local-copy)))
 -                (setq result
 -                      (insert-file-contents
 -                       local-copy nil nil nil replace))))))
 -
 -      ;; Save exit.
 -      (progn
 -        (when visit
 -          (setq buffer-file-name filename)
 -          (setq buffer-read-only (not (file-writable-p filename)))
 -          (set-visited-file-modtime)
 -          (set-buffer-modified-p nil)
 -          ;; For root, preserve owner and group when editing files.
 -          (when (string-equal (file-remote-p filename 'user) "root")
 -            (set (make-local-variable 'backup-by-copying-when-mismatch) t)))
 -        (when (and (stringp local-copy)
 -                   (or remote-copy (null tramp-temp-buffer-file-name)))
 -          (delete-file local-copy))
 -        (when (stringp remote-copy)
 -          (delete-file
 -           (tramp-make-tramp-file-name method user host remote-copy))))))
 -
 -    ;; Result.
 -    (list (expand-file-name filename)
 -        (cadr result))))
 -
 -;; This is needed for XEmacs only.  Code stolen from files.el.
 -(defun tramp-handle-insert-file-contents-literally
 -  (filename &optional visit beg end replace)
 -  "Like `insert-file-contents-literally' for Tramp files."
 -  (let ((format-alist nil)
 -      (after-insert-file-functions nil)
 -      (coding-system-for-read 'no-conversion)
 -      (coding-system-for-write 'no-conversion)
 -      (find-buffer-file-type-function
 -       (if (fboundp 'find-buffer-file-type)
 -           (symbol-function 'find-buffer-file-type)
 -         nil))
 -      (inhibit-file-name-handlers '(jka-compr-handler image-file-handler))
 -      (inhibit-file-name-operation 'insert-file-contents))
 -    (unwind-protect
 -      (progn
 -        (fset 'find-buffer-file-type (lambda (filename) t))
 -        (insert-file-contents filename visit beg end replace))
 -      ;; Save exit.
 -      (if find-buffer-file-type-function
 -        (fset 'find-buffer-file-type find-buffer-file-type-function)
 -      (fmakunbound 'find-buffer-file-type)))))
 -
 -(defun tramp-handle-find-backup-file-name (filename)
 -  "Like `find-backup-file-name' for Tramp files."
 -  (with-parsed-tramp-file-name filename nil
 -    ;; We set both variables. It doesn't matter whether it is
 -    ;; Emacs or XEmacs.
 -    (let ((backup-directory-alist
 -         ;; Emacs case.
 -         (when (boundp 'backup-directory-alist)
 -           (if (symbol-value 'tramp-backup-directory-alist)
 -               (mapcar
 -                (lambda (x)
 -                  (cons
 -                   (car x)
 -                   (if (and (stringp (cdr x))
 -                            (file-name-absolute-p (cdr x))
 -                            (not (tramp-file-name-p (cdr x))))
 -                       (tramp-make-tramp-file-name method user host (cdr x))
 -                     (cdr x))))
 -                (symbol-value 'tramp-backup-directory-alist))
 -             (symbol-value 'backup-directory-alist))))
 -
 -        (bkup-backup-directory-info
 -         ;; XEmacs case.
 -         (when (boundp 'bkup-backup-directory-info)
 -           (if (symbol-value 'tramp-bkup-backup-directory-info)
 -               (mapcar
 -                (lambda (x)
 -                  (nconc
 -                   (list (car x))
 -                   (list
 -                    (if (and (stringp (car (cdr x)))
 -                             (file-name-absolute-p (car (cdr x)))
 -                             (not (tramp-file-name-p (car (cdr x)))))
 -                        (tramp-make-tramp-file-name
 -                         method user host (car (cdr x)))
 -                      (car (cdr x))))
 -                   (cdr (cdr x))))
 -                (symbol-value 'tramp-bkup-backup-directory-info))
 -             (symbol-value 'bkup-backup-directory-info)))))
 -
 -      (tramp-run-real-handler 'find-backup-file-name (list filename)))))
 -
 -(defun tramp-handle-make-auto-save-file-name ()
 -  "Like `make-auto-save-file-name' for Tramp files.
 -Returns a file name in `tramp-auto-save-directory' for autosaving this file."
 -  (let ((tramp-auto-save-directory tramp-auto-save-directory)
 -      (buffer-file-name
 -       (tramp-subst-strs-in-string
 -        '(("_" . "|")
 -          ("/" . "_a")
 -          (":" . "_b")
 -          ("|" . "__")
 -          ("[" . "_l")
 -          ("]" . "_r"))
 -        (buffer-file-name))))
 -    ;; File name must be unique.  This is ensured with Emacs 22 (see
 -    ;; UNIQUIFY element of `auto-save-file-name-transforms'); but for
 -    ;; all other cases we must do it ourselves.
 -    (when (boundp 'auto-save-file-name-transforms)
 -      (mapc
 -       (lambda (x)
 -       (when (and (string-match (car x) buffer-file-name)
 -                  (not (car (cddr x))))
 -         (setq tramp-auto-save-directory
 -               (or tramp-auto-save-directory
 -                   (tramp-compat-temporary-file-directory)))))
 -       (symbol-value 'auto-save-file-name-transforms)))
 -    ;; Create directory.
 -    (when tramp-auto-save-directory
 -      (setq buffer-file-name
 -          (expand-file-name buffer-file-name tramp-auto-save-directory))
 -      (unless (file-exists-p tramp-auto-save-directory)
 -      (make-directory tramp-auto-save-directory t)))
 -    ;; Run plain `make-auto-save-file-name'.  There might be an advice when
 -    ;; it is not a magic file name operation (since Emacs 22).
 -    ;; We must deactivate it temporarily.
 -    (if (not (ad-is-active 'make-auto-save-file-name))
 -      (tramp-run-real-handler 'make-auto-save-file-name nil)
 -      ;; else
 -      (ad-deactivate 'make-auto-save-file-name)
 -      (prog1
 -       (tramp-run-real-handler 'make-auto-save-file-name nil)
 -       (ad-activate 'make-auto-save-file-name)))))
 -
 -(defvar tramp-handle-write-region-hook nil
 -  "Normal hook to be run at the end of `tramp-handle-write-region'.")
 -
 -;; CCC grok LOCKNAME
 -(defun tramp-handle-write-region
 -  (start end filename &optional append visit lockname confirm)
 -  "Like `write-region' for Tramp files."
 -  (setq filename (expand-file-name filename))
 -  (with-parsed-tramp-file-name filename nil
 -    ;; Following part commented out because we don't know what to do about
 -    ;; file locking, and it does not appear to be a problem to ignore it.
 -    ;; Ange-ftp ignores it, too.
 -    ;;  (when (and lockname (stringp lockname))
 -    ;;    (setq lockname (expand-file-name lockname)))
 -    ;;  (unless (or (eq lockname nil)
 -    ;;              (string= lockname filename))
 -    ;;    (error
 -    ;;     "tramp-handle-write-region: LOCKNAME must be nil or equal FILENAME"))
 -
 -    ;; XEmacs takes a coding system as the seventh argument, not `confirm'.
 -    (when (and (not (featurep 'xemacs)) confirm (file-exists-p filename))
 -      (unless (y-or-n-p (format "File %s exists; overwrite anyway? " filename))
 -      (tramp-error v 'file-error "File not overwritten")))
 -
 -    (let ((uid (or (nth 2 (tramp-compat-file-attributes filename 'integer))
 -                 (tramp-get-remote-uid v 'integer)))
 -        (gid (or (nth 3 (tramp-compat-file-attributes filename 'integer))
 -                 (tramp-get-remote-gid v 'integer))))
 -
 -      (if (and (tramp-local-host-p v)
 -             ;; `file-writable-p' calls `file-expand-file-name'.  We
 -             ;; cannot use `tramp-run-real-handler' therefore.
 -             (let (file-name-handler-alist)
 -               (and
 -                (file-writable-p (file-name-directory localname))
 -                (or (file-directory-p localname)
 -                    (file-writable-p localname)))))
 -        ;; Short track: if we are on the local host, we can run directly.
 -        (tramp-run-real-handler
 -         'write-region
 -         (list start end localname append 'no-message lockname confirm))
 -
 -      (let ((modes (save-excursion (tramp-default-file-modes filename)))
 -            ;; We use this to save the value of
 -            ;; `last-coding-system-used' after writing the tmp
 -            ;; file.  At the end of the function, we set
 -            ;; `last-coding-system-used' to this saved value.  This
 -            ;; way, any intermediary coding systems used while
 -            ;; talking to the remote shell or suchlike won't hose
 -            ;; this variable.  This approach was snarfed from
 -            ;; ange-ftp.el.
 -            coding-system-used
 -            ;; Write region into a tmp file.  This isn't really
 -            ;; needed if we use an encoding function, but currently
 -            ;; we use it always because this makes the logic
 -            ;; simpler.
 -            (tmpfile (or tramp-temp-buffer-file-name
 -                         (tramp-compat-make-temp-file filename))))
 -
 -        ;; If `append' is non-nil, we copy the file locally, and let
 -        ;; the native `write-region' implementation do the job.
 -        (when append (copy-file filename tmpfile 'ok))
 -
 -        ;; We say `no-message' here because we don't want the
 -        ;; visited file modtime data to be clobbered from the temp
 -        ;; file.  We call `set-visited-file-modtime' ourselves later
 -        ;; on.  We must ensure that `file-coding-system-alist'
 -        ;; matches `tmpfile'.
 -        (let (file-name-handler-alist
 -              (file-coding-system-alist
 -               (tramp-find-file-name-coding-system-alist filename tmpfile)))
 -          (condition-case err
 -              (tramp-run-real-handler
 -               'write-region
 -               (list start end tmpfile append 'no-message lockname confirm))
 -            ((error quit)
 -             (setq tramp-temp-buffer-file-name nil)
 -             (delete-file tmpfile)
 -             (signal (car err) (cdr err))))
 -
 -          ;; Now, `last-coding-system-used' has the right value.  Remember it.
 -          (when (boundp 'last-coding-system-used)
 -            (setq coding-system-used
 -                  (symbol-value 'last-coding-system-used))))
 -
 -        ;; The permissions of the temporary file should be set.  If
 -        ;; filename does not exist (eq modes nil) it has been
 -        ;; renamed to the backup file.  This case `save-buffer'
 -        ;; handles permissions.
 -        ;; Ensure, that it is still readable.
 -        (when modes
 -          (set-file-modes
 -           tmpfile (logior (or modes 0) (tramp-octal-to-decimal "0400"))))
 -
 -        ;; This is a bit lengthy due to the different methods
 -        ;; possible for file transfer.  First, we check whether the
 -        ;; method uses an rcp program.  If so, we call it.
 -        ;; Otherwise, both encoding and decoding command must be
 -        ;; specified.  However, if the method _also_ specifies an
 -        ;; encoding function, then that is used for encoding the
 -        ;; contents of the tmp file.
 -        (let* ((size (nth 7 (file-attributes tmpfile)))
 -               (rem-dec (tramp-get-inline-coding v "remote-decoding" size))
 -               (loc-enc (tramp-get-inline-coding v "local-encoding" size)))
 -          (cond
 -           ;; `copy-file' handles direct copy and out-of-band methods.
 -           ((or (tramp-local-host-p v)
 -                (tramp-method-out-of-band-p v size))
 -            (if (and (not (stringp start))
 -                     (= (or end (point-max)) (point-max))
 -                     (= (or start (point-min)) (point-min))
 -                     (tramp-get-method-parameter
 -                      method 'tramp-copy-keep-tmpfile))
 -                (progn
 -                  (setq tramp-temp-buffer-file-name tmpfile)
 -                  (condition-case err
 -                      ;; We keep the local file for performance
 -                      ;; reasons, useful for "rsync".
 -                      (copy-file tmpfile filename t)
 -                    ((error quit)
 -                     (setq tramp-temp-buffer-file-name nil)
 -                     (delete-file tmpfile)
 -                     (signal (car err) (cdr err)))))
 -              (setq tramp-temp-buffer-file-name nil)
 -              ;; Don't rename, in order to keep context in SELinux.
 -              (unwind-protect
 -                  (copy-file tmpfile filename t)
 -                (delete-file tmpfile))))
 -
 -           ;; Use inline file transfer.
 -           (rem-dec
 -            ;; Encode tmpfile.
 -            (unwind-protect
 -                (with-temp-buffer
 -                  (set-buffer-multibyte nil)
 -                  ;; Use encoding function or command.
 -                  (if (functionp loc-enc)
 -                      (with-progress-reporter
 -                          v 3 (format "Encoding region using function `%s'"
 -                                      loc-enc)
 -                        (let ((coding-system-for-read 'binary))
 -                          (insert-file-contents-literally tmpfile))
 -                        ;; The following `let' is a workaround for the
 -                        ;; base64.el that comes with pgnus-0.84.  If
 -                        ;; both of the following conditions are
 -                        ;; satisfied, it tries to write to a local
 -                        ;; file in default-directory, but at this
 -                        ;; point, default-directory is remote.
 -                        ;; (`call-process-region' can't write to
 -                        ;; remote files, it seems.)  The file in
 -                        ;; question is a tmp file anyway.
 -                        (let ((default-directory
 -                                (tramp-compat-temporary-file-directory)))
 -                          (funcall loc-enc (point-min) (point-max))))
 -
 -                    (with-progress-reporter
 -                        v 3 (format "Encoding region using command `%s'"
 -                                    loc-enc)
 -                      (unless (zerop (tramp-call-local-coding-command
 -                                      loc-enc tmpfile t))
 -                        (tramp-error
 -                         v 'file-error
 -                         (concat "Cannot write to `%s', "
 -                                 "local encoding command `%s' failed")
 -                         filename loc-enc))))
 -
 -                  ;; Send buffer into remote decoding command which
 -                  ;; writes to remote file.  Because this happens on
 -                  ;; the remote host, we cannot use the function.
 -                  (with-progress-reporter
 -                      v 3
 -                      (format "Decoding region into remote file %s" filename)
 -                    (goto-char (point-max))
 -                    (unless (bolp) (newline))
 -                    (tramp-send-command
 -                     v
 -                     (format
 -                      (concat rem-dec " <<'EOF'\n%sEOF")
 -                      (tramp-shell-quote-argument localname)
 -                      (buffer-string)))
 -                    (tramp-barf-unless-okay
 -                     v nil
 -                     "Couldn't write region to `%s', decode using `%s' failed"
 -                     filename rem-dec)
 -                    ;; When `file-precious-flag' is set, the region is
 -                    ;; written to a temporary file.  Check that the
 -                    ;; checksum is equal to that from the local tmpfile.
 -                    (when file-precious-flag
 -                      (erase-buffer)
 -                      (and
 -                       ;; cksum runs locally, if possible.
 -                       (zerop (tramp-local-call-process "cksum" tmpfile t))
 -                       ;; cksum runs remotely.
 -                       (zerop
 -                        (tramp-send-command-and-check
 -                         v
 -                         (format
 -                          "cksum <%s"
 -                          (tramp-shell-quote-argument localname))))
 -                       ;; ... they are different.
 -                       (not
 -                        (string-equal
 -                         (buffer-string)
 -                         (with-current-buffer (tramp-get-buffer v)
 -                           (buffer-string))))
 -                       (tramp-error
 -                        v 'file-error
 -                        (concat "Couldn't write region to `%s',"
 -                                " decode using `%s' failed")
 -                        filename rem-dec)))))
 -
 -              ;; Save exit.
 -              (delete-file tmpfile)))
 -
 -           ;; That's not expected.
 -           (t
 -            (tramp-error
 -             v 'file-error
 -             (concat "Method `%s' should specify both encoding and "
 -                     "decoding command or an rcp program")
 -             method))))
 -
 -        ;; Make `last-coding-system-used' have the right value.
 -        (when coding-system-used
 -          (set 'last-coding-system-used coding-system-used))))
 -
 -      (tramp-flush-file-property v (file-name-directory localname))
 -      (tramp-flush-file-property v localname)
 -
 -      ;; We must protect `last-coding-system-used', now we have set it
 -      ;; to its correct value.
 -      (let (last-coding-system-used (need-chown t))
 -      ;; Set file modification time.
 -      (when (or (eq visit t) (stringp visit))
 -          (let ((file-attr (file-attributes filename)))
 -            (set-visited-file-modtime
 -             ;; We must pass modtime explicitely, because filename can
 -             ;; be different from (buffer-file-name), f.e. if
 -             ;; `file-precious-flag' is set.
 -             (nth 5 file-attr))
 -            (when (and (eq (nth 2 file-attr) uid)
 -                       (eq (nth 3 file-attr) gid))
 -              (setq need-chown nil))))
 -
 -      ;; Set the ownership.
 -        (when need-chown
 -          (tramp-set-file-uid-gid filename uid gid))
 -      (when (or (eq visit t) (null visit) (stringp visit))
 -        (tramp-message v 0 "Wrote %s" filename))
 -      (run-hooks 'tramp-handle-write-region-hook)))))
 -
 -(defvar tramp-vc-registered-file-names nil
 -  "List used to collect file names, which are checked during `vc-registered'.")
 -
 -;; VC backends check for the existence of various different special
 -;; files.  This is very time consuming, because every single check
 -;; requires a remote command (the file cache must be invalidated).
 -;; Therefore, we apply a kind of optimization.  We install the file
 -;; name handler `tramp-vc-file-name-handler', which does nothing but
 -;; remembers all file names for which `file-exists-p' or
 -;; `file-readable-p' has been applied.  A first run of `vc-registered'
 -;; is performed.  Afterwards, a script is applied for all collected
 -;; file names, using just one remote command.  The result of this
 -;; script is used to fill the file cache with actual values.  Now we
 -;; can reset the file name handlers, and we make a second run of
 -;; `vc-registered', which returns the expected result without sending
 -;; any other remote command.
 -(defun tramp-handle-vc-registered (file)
 -  "Like `vc-registered' for Tramp files."
 -  (with-temp-message ""
 -    (with-parsed-tramp-file-name file nil
 -      (with-progress-reporter
 -        v 3 (format "Checking `vc-registered' for %s" file)
 -
 -      ;; There could be new files, created by the vc backend.  We
 -      ;; cannot reuse the old cache entries, therefore.
 -      (let (tramp-vc-registered-file-names
 -            (tramp-cache-inhibit-cache (current-time))
 -            (file-name-handler-alist
 -             `((,tramp-file-name-regexp . tramp-vc-file-name-handler))))
 -
 -        ;; Here we collect only file names, which need an operation.
 -        (tramp-run-real-handler 'vc-registered (list file))
 -        (tramp-message v 10 "\n%s" tramp-vc-registered-file-names)
 -
 -        ;; Send just one command, in order to fill the cache.
 -        (when tramp-vc-registered-file-names
 -          (tramp-maybe-send-script
 -           v
 -           (format tramp-vc-registered-read-file-names
 -                   (tramp-get-file-exists-command v)
 -                   (format "%s -r" (tramp-get-test-command v)))
 -           "tramp_vc_registered_read_file_names")
 -
 -          (dolist
 -              (elt
 -               (tramp-send-command-and-read
 -                v
 -                (format
 -                 "tramp_vc_registered_read_file_names <<'EOF'\n%s\nEOF\n"
 -                 (mapconcat 'tramp-shell-quote-argument
 -                            tramp-vc-registered-file-names
 -                            "\n"))))
 -
 -            (tramp-set-file-property
 -             v (car elt) (cadr elt) (cadr (cdr elt))))))
 -
 -      ;; Second run.  Now all `file-exists-p' or `file-readable-p'
 -      ;; calls shall be answered from the file cache.  We unset
 -      ;; `process-file-side-effects' in order to keep the cache when
 -      ;; `process-file' calls appear.
 -      (let (process-file-side-effects)
 -        (tramp-run-real-handler 'vc-registered (list file)))))))
 -
  ;;;###autoload
  (progn (defun tramp-run-real-handler (operation args)
    "Invoke normal file name handler for OPERATION.
@@@ -1829,7 -5604,8 +1829,7 @@@ Falls back to normal file name handler 
                (condition-case err
                    (apply foreign operation args)
  
 -                ;; Trace that somebody has interrupted the
 -                ;; operation.
 +                ;; Trace, that somebody has interrupted the operation.
                  (quit
                   (let (tramp-message-show-message)
                     (tramp-message
@@@ -1887,6 -5663,48 +1887,6 @@@ preventing reentrant calls of Tramp."
  Together with `tramp-locked', this implements a locking mechanism
  preventing reentrant calls of Tramp.")
  
 -(defun tramp-sh-file-name-handler (operation &rest args)
 -  "Invoke remote-shell Tramp file name handler.
 -Fall back to normal file name handler if no Tramp handler exists."
 -  (when (and tramp-locked (not tramp-locker))
 -    (setq tramp-locked nil)
 -    (signal 'file-error (list "Forbidden reentrant call of Tramp")))
 -  (let ((tl tramp-locked))
 -    (unwind-protect
 -      (progn
 -        (setq tramp-locked t)
 -        (let ((tramp-locker t))
 -          (save-match-data
 -            (let ((fn (assoc operation tramp-file-name-handler-alist)))
 -              (if fn
 -                  (apply (cdr fn) args)
 -                (tramp-run-real-handler operation args))))))
 -      (setq tramp-locked tl))))
 -
 -(defun tramp-vc-file-name-handler (operation &rest args)
 -  "Invoke special file name handler, which collects files to be handled."
 -  (save-match-data
 -    (let ((filename
 -         (tramp-replace-environment-variables
 -          (apply 'tramp-file-name-for-operation operation args)))
 -        (fn (assoc operation tramp-file-name-handler-alist)))
 -      (with-parsed-tramp-file-name filename nil
 -      (cond
 -       ;; That's what we want: file names, for which checks are
 -       ;; applied.  We assume, that VC uses only `file-exists-p' and
 -       ;; `file-readable-p' checks; otherwise we must extend the
 -       ;; list.  We do not perform any action, but return nil, in
 -       ;; order to keep `vc-registered' running.
 -       ((and fn (memq operation '(file-exists-p file-readable-p)))
 -        (add-to-list 'tramp-vc-registered-file-names localname 'append)
 -        nil)
 -       ;; Tramp file name handlers like `expand-file-name'.  They
 -       ;; must still work.
 -       (fn
 -        (save-match-data (apply (cdr fn) args)))
 -       ;; Default file name handlers, we don't care.
 -       (t (tramp-run-real-handler operation args)))))))
 -
  ;;;###autoload
  (progn (defun tramp-completion-file-name-handler (operation &rest args)
    "Invoke Tramp file name completion handler.
@@@ -1945,29 -5763,9 +1945,29 @@@ Falls back to normal file name handler 
  ;; `tramp-file-name-handler' must be registered before evaluation of
  ;; site-start and init files, because there might exist remote files
  ;; already, f.e. files kept via recentf-mode.
 -;;;###autoload(tramp-register-file-name-handlers)
 +;;;###autoload
  (tramp-register-file-name-handlers)
  
 +(defun tramp-exists-file-name-handler (operation &rest args)
 +  "Check, whether OPERATION runs a file name handler."
 +  ;; The file name handler is determined on base of either an
 +  ;; argument, `buffer-file-name', or `default-directory'.
 +  (ignore-errors
 +    (let* ((buffer-file-name "/")
 +         (default-directory "/")
 +         (fnha file-name-handler-alist)
 +         (check-file-name-operation operation)
 +         (file-name-handler-alist
 +          (list
 +           (cons "/"
 +                 (lambda (operation &rest args)
 +                   "Returns OPERATION if it is the one to be checked."
 +                   (if (equal check-file-name-operation operation)
 +                       operation
 +                     (let ((file-name-handler-alist fnha))
 +                       (apply operation args))))))))
 +      (equal (apply operation args) operation))))
 +
  ;;;###autoload
  (defun tramp-unload-file-name-handlers ()
    (setq file-name-handler-alist
@@@ -2000,7 -5798,6 +2000,7 @@@ should never be set globally, the inten
  ;; Tramp file name syntax. Maybe another variable should be introduced
  ;; overwriting this check in such cases. Or we change Tramp file name
  ;; syntax in order to avoid ambiguities, like in XEmacs ...
 +;;;###tramp-autoload
  (defun tramp-completion-mode-p ()
    "Check, whether method / user name / host name completion is active."
    (or
@@@ -2105,11 -5902,12 +2105,11 @@@ not in completion mode.
      ;; Complete local parts.
      (append
       result1
 -     (condition-case nil
 -       (apply (if (tramp-connectable-p fullname)
 -                  'tramp-completion-run-real-handler
 -                'tramp-run-real-handler)
 -              'file-name-all-completions (list (list filename directory)))
 -       (error nil)))))
 +     (ignore-errors
 +       (apply (if (tramp-connectable-p fullname)
 +                'tramp-completion-run-real-handler
 +              'tramp-run-real-handler)
 +            'file-name-all-completions (list (list filename directory)))))))
  
  ;; Method, host name and user name completion for a file.
  ;;;###autoload
@@@ -2549,7 -6347,7 +2549,7 @@@ User is always nil.
    (let ((default-directory (tramp-compat-temporary-file-directory))
        res)
      (with-temp-buffer
 -      (when (zerop (tramp-local-call-process "reg" nil t nil "query" registry))
 +      (when (zerop (tramp-compat-call-process "reg" nil t nil "query" registry))
        (goto-char (point-min))
        (while (not (eobp))
          (push (tramp-parse-putty-group registry) res))))
@@@ -2567,385 -6365,326 +2567,384 @@@ User is always nil.
       (forward-line 1)
       result))
  
 -;;; Internal Functions:
 +;;; Common file name handler functions for different backends:
  
 -(defun tramp-maybe-send-script (vec script name)
 -  "Define in remote shell function NAME implemented as SCRIPT.
 -Only send the definition if it has not already been done."
 -  (let* ((p (tramp-get-connection-process vec))
 -       (scripts (tramp-get-connection-property p "scripts" nil)))
 -    (unless (member name scripts)
 -      (with-progress-reporter vec 5 (format "Sending script `%s'" name)
 -      ;; The script could contain a call of Perl.  This is masked with `%s'.
 -      (tramp-send-command-and-check
 -       vec
 -       (format "%s () {\n%s\n}" name
 -               (format script (tramp-get-remote-perl vec))))
 -      (tramp-set-connection-property p "scripts" (cons name scripts))))))
 -
 -(defun tramp-set-auto-save ()
 -  (when (and ;; ange-ftp has its own auto-save mechanism
 -           (eq (tramp-find-foreign-file-name-handler (buffer-file-name))
 -               'tramp-sh-file-name-handler)
 -             auto-save-default)
 -    (auto-save-mode 1)))
 -(add-hook 'find-file-hooks 'tramp-set-auto-save t)
 -(add-hook 'tramp-unload-hook
 -        (lambda ()
 -          (remove-hook 'find-file-hooks 'tramp-set-auto-save)))
 +(defvar tramp-handle-file-local-copy-hook nil
 +  "Normal hook to be run at the end of `tramp-*-handle-file-local-copy'.")
 +
 +(defvar tramp-handle-write-region-hook nil
 +  "Normal hook to be run at the end of `tramp-*-handle-write-region'.")
 +
 +(defun tramp-handle-directory-file-name (directory)
 +  "Like `directory-file-name' for Tramp files."
 +  ;; If localname component of filename is "/", leave it unchanged.
 +  ;; Otherwise, remove any trailing slash from localname component.
 +  ;; Method, host, etc, are unchanged.  Does it make sense to try
 +  ;; to avoid parsing the filename?
 +  (with-parsed-tramp-file-name directory nil
 +    (if (and (not (zerop (length localname)))
 +           (eq (aref localname (1- (length localname))) ?/)
 +           (not (string= localname "/")))
 +      (substring directory 0 -1)
 +      directory)))
 +
 +(defun tramp-handle-directory-files
 +  (directory &optional full match nosort files-only)
 +  "Like `directory-files' for Tramp files."
 +  ;; FILES-ONLY is valid for XEmacs only.
 +  (when (file-directory-p directory)
 +    (setq directory (file-name-as-directory (expand-file-name directory)))
 +    (let ((temp (nreverse (file-name-all-completions "" directory)))
 +        result item)
 +
 +      (while temp
 +      (setq item (directory-file-name (pop temp)))
 +      (when (and (or (null match) (string-match match item))
 +                 (or (null files-only)
 +                     ;; Files only.
 +                     (and (equal files-only t) (file-regular-p item))
 +                     ;; Directories only.
 +                     (file-directory-p item)))
 +        (push (if full (concat directory item) item)
 +              result)))
 +      (if nosort result (sort result 'string<)))))
 +
 +(defun tramp-handle-directory-files-and-attributes
 +  (directory &optional full match nosort id-format)
 +  "Like `directory-files-and-attributes' for Tramp files."
 +  (mapcar
 +   (lambda (x)
 +     (cons x (tramp-compat-file-attributes
 +            (if full x (expand-file-name x directory)) id-format)))
 +   (directory-files directory full match nosort)))
 +
 +(defun tramp-handle-dired-uncache (dir &optional dir-p)
 +  "Like `dired-uncache' for Tramp files."
 +  ;; DIR-P is valid for XEmacs only.
 +  (with-parsed-tramp-file-name
 +      (if (or dir-p (file-directory-p dir)) dir (file-name-directory dir)) nil
 +    (tramp-flush-directory-property v localname)))
 +
 +(defun tramp-handle-file-exists-p (filename)
 +  "Like `file-exists-p' for Tramp files."
 +  (not (null (file-attributes filename))))
 +
 +(defun tramp-handle-file-modes (filename)
 +  "Like `file-modes' for Tramp files."
 +  (let ((truename (or (file-truename filename) filename)))
 +    (when (file-exists-p truename)
 +      (tramp-mode-string-to-int (nth 8 (file-attributes truename))))))
 +
 +;; Localname manipulation functions that grok Tramp localnames...
 +(defun tramp-handle-file-name-as-directory (file)
 +  "Like `file-name-as-directory' but aware of Tramp files."
 +  ;; `file-name-as-directory' would be sufficient except localname is
 +  ;; the empty string.
 +  (let ((v (tramp-dissect-file-name file t)))
 +    ;; Run the command on the localname portion only.
 +    (tramp-make-tramp-file-name
 +     (tramp-file-name-method v)
 +     (tramp-file-name-user v)
 +     (tramp-file-name-host v)
 +     (tramp-run-real-handler
 +      'file-name-as-directory (list (or (tramp-file-name-localname v) ""))))))
 +
 +(defun tramp-handle-file-name-completion
 +  (filename directory &optional predicate)
 +  "Like `file-name-completion' for Tramp files."
 +  (unless (tramp-tramp-file-p directory)
 +    (error
 +     "tramp-handle-file-name-completion invoked on non-tramp directory `%s'"
 +     directory))
 +  (try-completion
 +   filename
 +   (mapcar 'list (file-name-all-completions filename directory))
 +   (when predicate
 +     (lambda (x) (funcall predicate (expand-file-name (car x) directory))))))
 +
 +(defun tramp-handle-file-name-directory (file)
 +  "Like `file-name-directory' but aware of Tramp files."
 +  ;; Everything except the last filename thing is the directory.  We
 +  ;; cannot apply `with-parsed-tramp-file-name', because this expands
 +  ;; the remote file name parts.  This is a problem when we are in
 +  ;; file name completion.
 +  (let ((v (tramp-dissect-file-name file t)))
 +    ;; Run the command on the localname portion only.
 +    (tramp-make-tramp-file-name
 +     (tramp-file-name-method v)
 +     (tramp-file-name-user v)
 +     (tramp-file-name-host v)
 +     (tramp-run-real-handler
 +      'file-name-directory (list (or (tramp-file-name-localname v) ""))))))
 +
 +(defun tramp-handle-file-name-nondirectory (file)
 +  "Like `file-name-nondirectory' but aware of Tramp files."
 +  (with-parsed-tramp-file-name file nil
 +    (tramp-run-real-handler 'file-name-nondirectory (list localname))))
 +
 +(defun tramp-handle-file-newer-than-file-p (file1 file2)
 +  "Like `file-newer-than-file-p' for Tramp files."
 +  (cond
 +   ((not (file-exists-p file1)) nil)
 +   ((not (file-exists-p file2)) t)
 +   (t (tramp-time-less-p (nth 5 (file-attributes file2))
 +                       (nth 5 (file-attributes file1))))))
 +
 +(defun tramp-handle-file-regular-p (filename)
 +  "Like `file-regular-p' for Tramp files."
 +  (and (file-exists-p filename)
 +       (eq ?- (aref (nth 8 (file-attributes filename)) 0))))
 +
 +(defun tramp-handle-file-remote-p (filename &optional identification connected)
 +  "Like `file-remote-p' for Tramp files."
 +  (let ((tramp-verbose 3))
 +    (when (tramp-tramp-file-p filename)
 +      (let* ((v (tramp-dissect-file-name filename))
 +           (p (tramp-get-connection-process v))
 +           (c (and p (processp p) (memq (process-status p) '(run open)))))
 +      ;; We expand the file name only, if there is already a connection.
 +      (with-parsed-tramp-file-name
 +          (if c (expand-file-name filename) filename) nil
 +        (and (or (not connected) c)
 +             (cond
 +              ((eq identification 'method) method)
 +              ((eq identification 'user) user)
 +              ((eq identification 'host) host)
 +              ((eq identification 'localname) localname)
 +              (t (tramp-make-tramp-file-name method user host "")))))))))
  
 -(defun tramp-run-test (switch filename)
 -  "Run `test' on the remote system, given a SWITCH and a FILENAME.
 -Returns the exit code of the `test' program."
 +(defun tramp-handle-file-symlink-p (filename)
 +  "Like `file-symlink-p' for Tramp files."
    (with-parsed-tramp-file-name filename nil
 -    (tramp-send-command-and-check
 -     v
 -     (format
 -      "%s %s %s"
 -      (tramp-get-test-command v)
 -      switch
 -      (tramp-shell-quote-argument localname)))))
 -
 -(defun tramp-run-test2 (format-string file1 file2)
 -  "Run `test'-like program on the remote system, given FILE1, FILE2.
 -FORMAT-STRING contains the program name, switches, and place holders.
 -Returns the exit code of the `test' program.  Barfs if the methods,
 -hosts, or files, disagree."
 -  (unless (tramp-equal-remote file1 file2)
 -    (with-parsed-tramp-file-name (if (tramp-tramp-file-p file1) file1 file2) nil
 -      (tramp-error
 -       v 'file-error
 -       "tramp-run-test2 only implemented for same method, user, host")))
 -  (with-parsed-tramp-file-name file1 v1
 -    (with-parsed-tramp-file-name file1 v2
 -      (tramp-send-command-and-check
 -       v1
 -       (format format-string
 -             (tramp-shell-quote-argument v1-localname)
 -             (tramp-shell-quote-argument v2-localname))))))
 +    (let ((x (car (file-attributes filename))))
 +      (when (stringp x)
 +      ;; When Tramp is running on VMS, then `file-name-absolute-p'
 +      ;; might do weird things.
 +      (if (file-name-absolute-p x)
 +          (tramp-make-tramp-file-name method user host x)
 +        x)))))
  
 -(defun tramp-buffer-name (vec)
 -  "A name for the connection buffer VEC."
 -  ;; We must use `tramp-file-name-real-host', because for gateway
 -  ;; methods the default port will be expanded later on, which would
 -  ;; tamper the name.
 -  (let ((method (tramp-file-name-method vec))
 -      (user   (tramp-file-name-user vec))
 -      (host   (tramp-file-name-real-host vec)))
 -    (if (not (zerop (length user)))
 -      (format "*tramp/%s %s@%s*" method user host)
 -      (format "*tramp/%s %s*" method host))))
 +(defun tramp-handle-find-backup-file-name (filename)
 +  "Like `find-backup-file-name' for Tramp files."
 +  (with-parsed-tramp-file-name filename nil
 +    ;; We set both variables. It doesn't matter whether it is
 +    ;; Emacs or XEmacs.
 +    (let ((backup-directory-alist
 +         ;; Emacs case.
 +         (when (boundp 'backup-directory-alist)
 +           (if (symbol-value 'tramp-backup-directory-alist)
 +               (mapcar
 +                (lambda (x)
 +                  (cons
 +                   (car x)
 +                   (if (and (stringp (cdr x))
 +                            (file-name-absolute-p (cdr x))
 +                            (not (tramp-file-name-p (cdr x))))
 +                       (tramp-make-tramp-file-name method user host (cdr x))
 +                     (cdr x))))
 +                (symbol-value 'tramp-backup-directory-alist))
 +             (symbol-value 'backup-directory-alist))))
  
 -(defun tramp-delete-temp-file-function ()
 -  "Remove temporary files related to current buffer."
 -  (when (stringp tramp-temp-buffer-file-name)
 -    (condition-case nil
 -      (delete-file tramp-temp-buffer-file-name)
 -      (error nil))))
 +        (bkup-backup-directory-info
 +         ;; XEmacs case.
 +         (when (boundp 'bkup-backup-directory-info)
 +           (if (symbol-value 'tramp-bkup-backup-directory-info)
 +               (mapcar
 +                (lambda (x)
 +                  (nconc
 +                   (list (car x))
 +                   (list
 +                    (if (and (stringp (car (cdr x)))
 +                             (file-name-absolute-p (car (cdr x)))
 +                             (not (tramp-file-name-p (car (cdr x)))))
 +                        (tramp-make-tramp-file-name
 +                         method user host (car (cdr x)))
 +                      (car (cdr x))))
 +                   (cdr (cdr x))))
 +                (symbol-value 'tramp-bkup-backup-directory-info))
 +             (symbol-value 'bkup-backup-directory-info)))))
  
 -(add-hook 'kill-buffer-hook 'tramp-delete-temp-file-function)
 -(add-hook 'tramp-cache-unload-hook
 -        (lambda ()
 -          (remove-hook 'kill-buffer-hook
 -                       'tramp-delete-temp-file-function)))
 +      (tramp-run-real-handler 'find-backup-file-name (list filename)))))
  
 -(defun tramp-get-buffer (vec)
 -  "Get the connection buffer to be used for VEC."
 -  (or (get-buffer (tramp-buffer-name vec))
 -      (with-current-buffer (get-buffer-create (tramp-buffer-name vec))
 -      (setq buffer-undo-list t)
 -      (setq default-directory
 -            (tramp-make-tramp-file-name
 -             (tramp-file-name-method vec)
 -             (tramp-file-name-user vec)
 -             (tramp-file-name-host vec)
 -             "/"))
 -      (current-buffer))))
 +(defun tramp-handle-insert-file-contents
 +  (filename &optional visit beg end replace)
 +  "Like `insert-file-contents' for Tramp files."
 +  (barf-if-buffer-read-only)
 +  (setq filename (expand-file-name filename))
 +  (let (result local-copy remote-copy)
 +    (with-parsed-tramp-file-name filename nil
 +      (unwind-protect
 +        (if (not (file-exists-p filename))
 +            ;; We don't raise a Tramp error, because it might be
 +            ;; suppressed, like in `find-file-noselect-1'.
 +            (signal 'file-error
 +                    (list "File not found on remote host" filename))
  
 -(defun tramp-get-connection-buffer (vec)
 -  "Get the connection buffer to be used for VEC.
 -In case a second asynchronous communication has been started, it is different
 -from `tramp-get-buffer'."
 -  (or (tramp-get-connection-property vec "process-buffer" nil)
 -      (tramp-get-buffer vec)))
 +          (if (and (tramp-local-host-p v)
 +                   (let (file-name-handler-alist)
 +                     (file-readable-p localname)))
 +              ;; Short track: if we are on the local host, we can
 +              ;; run directly.
 +              (setq result
 +                    (tramp-run-real-handler
 +                     'insert-file-contents
 +                     (list localname visit beg end replace)))
 +
 +            ;; When we shall insert only a part of the file, we copy
 +            ;; this part.
 +            (when (or beg end)
 +              (setq remote-copy (tramp-make-tramp-temp-file v))
 +              ;; This is defined in tramp-sh.el.  Let's assume this
 +              ;; is loaded already.
 +              (tramp-compat-funcall 'tramp-send-command
 +               v
 +               (cond
 +                ((and beg end)
 +                 (format "tail -c +%d %s | head -c +%d >%s"
 +                         (1+ beg) (tramp-shell-quote-argument localname)
 +                         (- end beg) remote-copy))
 +                (beg
 +                 (format "tail -c +%d %s >%s"
 +                         (1+ beg) (tramp-shell-quote-argument localname)
 +                         remote-copy))
 +                (end
 +                 (format "head -c +%d %s >%s"
 +                         (1+ end) (tramp-shell-quote-argument localname)
 +                         remote-copy)))))
  
 -(defun tramp-get-connection-process (vec)
 -  "Get the connection process to be used for VEC.
 -In case a second asynchronous communication has been started, it is different
 -from the default one."
 -  (get-process
 -   (or (tramp-get-connection-property vec "process-name" nil)
 -       (tramp-buffer-name vec))))
 +            ;; `insert-file-contents-literally' takes care to avoid
 +            ;; calling jka-compr.  By let-binding
 +            ;; `inhibit-file-name-operation', we propagate that care
 +            ;; to the `file-local-copy' operation.
 +            (setq local-copy
 +                  (let ((inhibit-file-name-operation
 +                         (when (eq inhibit-file-name-operation
 +                                   'insert-file-contents)
 +                           'file-local-copy)))
 +                    (cond
 +                     ((stringp remote-copy)
 +                      (file-local-copy
 +                       (tramp-make-tramp-file-name
 +                        method user host remote-copy)))
 +                     ((stringp tramp-temp-buffer-file-name)
 +                      (copy-file filename tramp-temp-buffer-file-name 'ok)
 +                      tramp-temp-buffer-file-name)
 +                     (t (file-local-copy filename)))))
  
 -(defun tramp-debug-buffer-name (vec)
 -  "A name for the debug buffer for VEC."
 -  ;; We must use `tramp-file-name-real-host', because for gateway
 -  ;; methods the default port will be expanded later on, which would
 -  ;; tamper the name.
 -  (let ((method (tramp-file-name-method vec))
 -      (user   (tramp-file-name-user vec))
 -      (host   (tramp-file-name-real-host vec)))
 -    (if (not (zerop (length user)))
 -      (format "*debug tramp/%s %s@%s*" method user host)
 -      (format "*debug tramp/%s %s*" method host))))
 +            ;; When the file is not readable for the owner, it
 +            ;; cannot be inserted, even it is redable for the group
 +            ;; or for everybody.
 +            (set-file-modes local-copy (tramp-compat-octal-to-decimal "0600"))
  
 -(defconst tramp-debug-outline-regexp
 -  "[0-9]+:[0-9]+:[0-9]+\\.[0-9]+ [a-z0-9-]+ (\\([0-9]+\\)) #")
 +            (when (and (null remote-copy)
 +                       (tramp-get-method-parameter
 +                        method 'tramp-copy-keep-tmpfile))
 +              ;; We keep the local file for performance reasons,
 +              ;; useful for "rsync".
 +              (setq tramp-temp-buffer-file-name local-copy)
 +              (put 'tramp-temp-buffer-file-name 'permanent-local t))
  
 -(defun tramp-get-debug-buffer (vec)
 -  "Get the debug buffer for VEC."
 -  (with-current-buffer
 -      (get-buffer-create (tramp-debug-buffer-name vec))
 -    (when (bobp)
 -      (setq buffer-undo-list t)
 -      ;; Activate `outline-mode'.  This runs `text-mode-hook' and
 -      ;; `outline-mode-hook'.  We must prevent that local processes
 -      ;; die.  Yes: I've seen `flyspell-mode', which starts "ispell".
 -      ;; Furthermore, `outline-regexp' must have the correct value
 -      ;; already, because it is used by `font-lock-compile-keywords'.
 -      (let ((default-directory (tramp-compat-temporary-file-directory))
 -          (outline-regexp tramp-debug-outline-regexp))
 -      (outline-mode))
 -      (set (make-local-variable 'outline-regexp) tramp-debug-outline-regexp)
 -      (set (make-local-variable 'outline-level) 'tramp-outline-level))
 -    (current-buffer)))
 +            (with-progress-reporter
 +                v 3 (format "Inserting local temp file `%s'" local-copy)
 +              ;; We must ensure that `file-coding-system-alist'
 +              ;; matches `local-copy'.
 +              (let ((file-coding-system-alist
 +                     (tramp-find-file-name-coding-system-alist
 +                      filename local-copy)))
 +                (setq result
 +                      (insert-file-contents
 +                       local-copy nil nil nil replace))))))
  
 -(defun tramp-outline-level ()
 -  "Return the depth to which a statement is nested in the outline.
 -Point must be at the beginning of a header line.
 +      ;; Save exit.
 +      (progn
 +        (when visit
 +          (setq buffer-file-name filename)
 +          (setq buffer-read-only (not (file-writable-p filename)))
 +          (set-visited-file-modtime)
 +          (set-buffer-modified-p nil)
 +          ;; For root, preserve owner and group when editing files.
 +          (when (string-equal (file-remote-p filename 'user) "root")
-             (set (make-local-variable 'backup-by-copying-when-mismatch) t)
-             (put 'backup-by-copying-when-mismatch 'permanent-local t)))
++            (set (make-local-variable 'backup-by-copying-when-mismatch) t)))
 +        (when (and (stringp local-copy)
 +                   (or remote-copy (null tramp-temp-buffer-file-name)))
 +          (delete-file local-copy))
 +        (when (stringp remote-copy)
 +          (delete-file
 +           (tramp-make-tramp-file-name method user host remote-copy))))))
  
 -The outline level is equal to the verbosity of the Tramp message."
 -  (1+ (string-to-number (match-string 1))))
 +    ;; Result.
 +    (list (expand-file-name filename)
 +        (cadr result))))
  
 -(defun tramp-find-executable
 -  (vec progname dirlist &optional ignore-tilde ignore-path)
 -  "Searches for PROGNAME in $PATH and all directories mentioned in DIRLIST.
 -First arg VEC specifies the connection, PROGNAME is the program
 -to search for, and DIRLIST gives the list of directories to
 -search.  If IGNORE-TILDE is non-nil, directory names starting
 -with `~' will be ignored. If IGNORE-PATH is non-nil, searches
 -only in DIRLIST.
 +(defun tramp-handle-load (file &optional noerror nomessage nosuffix must-suffix)
 +  "Like `load' for Tramp files."
 +  (with-parsed-tramp-file-name (expand-file-name file) nil
 +    (unless nosuffix
 +      (cond ((file-exists-p (concat file ".elc"))
 +           (setq file (concat file ".elc")))
 +          ((file-exists-p (concat file ".el"))
 +           (setq file (concat file ".el")))))
 +    (when must-suffix
 +      ;; The first condition is always true for absolute file names.
 +      ;; Included for safety's sake.
 +      (unless (or (file-name-directory file)
 +                (string-match "\\.elc?\\'" file))
 +      (tramp-error
 +       v 'file-error
 +       "File `%s' does not include a `.el' or `.elc' suffix" file)))
 +    (unless noerror
 +      (when (not (file-exists-p file))
 +      (tramp-error v 'file-error "Cannot load nonexistent file `%s'" file)))
 +    (if (not (file-exists-p file))
 +      nil
 +      (let ((tramp-message-show-message (not nomessage)))
 +      (with-progress-reporter v 0 (format "Loading %s" file)
 +        (let ((local-copy (file-local-copy file)))
 +          ;; MUST-SUFFIX doesn't exist on XEmacs, so let it default to nil.
 +          (unwind-protect
 +              (load local-copy noerror t t)
 +            (delete-file local-copy)))))
 +      t)))
  
 -Returns the absolute file name of PROGNAME, if found, and nil otherwise.
 +(defun tramp-handle-substitute-in-file-name (filename)
 +  "Like `substitute-in-file-name' for Tramp files.
 +\"//\" and \"/~\" substitute only in the local filename part.
 +If the URL Tramp syntax is chosen, \"//\" as method delimeter and \"/~\" at
 +beginning of local filename are not substituted."
 +  ;; First, we must replace environment variables.
 +  (setq filename (tramp-replace-environment-variables filename))
 +  (with-parsed-tramp-file-name filename nil
 +    (if (equal tramp-syntax 'url)
 +      ;; We need to check localname only.  The other parts cannot contain
 +      ;; "//" or "/~".
 +      (if (and (> (length localname) 1)
 +               (or (string-match "//" localname)
 +                   (string-match "/~" localname 1)))
 +          (tramp-run-real-handler 'substitute-in-file-name (list filename))
 +        (tramp-make-tramp-file-name
 +         (when method (substitute-in-file-name method))
 +         (when user (substitute-in-file-name user))
 +         (when host (substitute-in-file-name host))
 +         (when localname
 +           (tramp-run-real-handler
 +            'substitute-in-file-name (list localname)))))
 +      ;; Ignore in LOCALNAME everything before "//" or "/~".
 +      (when (and (stringp localname) (string-match ".+?/\\(/\\|~\\)" localname))
 +      (setq filename
 +            (concat (file-remote-p filename)
 +                    (replace-match "\\1" nil nil localname)))
 +      ;; "/m:h:~" does not work for completion.  We use "/m:h:~/".
 +      (when (string-match "~$" filename)
 +        (setq filename (concat filename "/"))))
 +      (tramp-run-real-handler 'substitute-in-file-name (list filename)))))
  
 -This function expects to be in the right *tramp* buffer."
 -  (with-current-buffer (tramp-get-connection-buffer vec)
 -    (let (result)
 -      ;; Check whether the executable is in $PATH. "which(1)" does not
 -      ;; report always a correct error code; therefore we check the
 -      ;; number of words it returns.
 -      (unless ignore-path
 -      (tramp-send-command vec (format "which \\%s | wc -w" progname))
 -      (goto-char (point-min))
 -      (if (looking-at "^\\s-*1$")
 -          (setq result (concat "\\" progname))))
 -      (unless result
 -      (when ignore-tilde
 -        ;; Remove all ~/foo directories from dirlist.  In XEmacs,
 -        ;; `remove' is in CL, and we want to avoid CL dependencies.
 -        (let (newdl d)
 -          (while dirlist
 -            (setq d (car dirlist))
 -            (setq dirlist (cdr dirlist))
 -            (unless (char-equal ?~ (aref d 0))
 -              (setq newdl (cons d newdl))))
 -          (setq dirlist (nreverse newdl))))
 -      (tramp-send-command
 -       vec
 -       (format (concat "while read d; "
 -                       "do if test -x $d/%s -a -f $d/%s; "
 -                       "then echo tramp_executable $d/%s; "
 -                       "break; fi; done <<'EOF'\n"
 -                       "%s\nEOF")
 -               progname progname progname (mapconcat 'identity dirlist "\n")))
 -      (goto-char (point-max))
 -      (when (search-backward "tramp_executable " nil t)
 -        (skip-chars-forward "^ ")
 -        (skip-chars-forward " ")
 -        (setq result (buffer-substring
 -                      (point) (tramp-compat-line-end-position)))))
 -    result)))
 -
 -(defun tramp-set-remote-path (vec)
 -  "Sets the remote environment PATH to existing directories.
 -I.e., for each directory in `tramp-remote-path', it is tested
 -whether it exists and if so, it is added to the environment
 -variable PATH."
 -  (tramp-message vec 5 (format "Setting $PATH environment variable"))
 -  (tramp-send-command
 -   vec (format "PATH=%s; export PATH"
 -             (mapconcat 'identity (tramp-get-remote-path vec) ":"))))
 -
 -;; ------------------------------------------------------------
 -;; -- Communication with external shell --
 -;; ------------------------------------------------------------
 -
 -(defun tramp-find-file-exists-command (vec)
 -  "Find a command on the remote host for checking if a file exists.
 -Here, we are looking for a command which has zero exit status if the
 -file exists and nonzero exit status otherwise."
 -  (let ((existing "/")
 -        (nonexisting
 -       (tramp-shell-quote-argument "/ this file does not exist "))
 -      result)
 -    ;; The algorithm is as follows: we try a list of several commands.
 -    ;; For each command, we first run `$cmd /' -- this should return
 -    ;; true, as the root directory always exists.  And then we run
 -    ;; `$cmd /this\ file\ does\ not\ exist ', hoping that the file indeed
 -    ;; does not exist.  This should return false.  We use the first
 -    ;; command we find that seems to work.
 -    ;; The list of commands to try is as follows:
 -    ;; `ls -d'            This works on most systems, but NetBSD 1.4
 -    ;;                    has a bug: `ls' always returns zero exit
 -    ;;                    status, even for files which don't exist.
 -    ;; `test -e'          Some Bourne shells have a `test' builtin
 -    ;;                    which does not know the `-e' option.
 -    ;; `/bin/test -e'     For those, the `test' binary on disk normally
 -    ;;                    provides the option.  Alas, the binary
 -    ;;                    is sometimes `/bin/test' and sometimes it's
 -    ;;                    `/usr/bin/test'.
 -    ;; `/usr/bin/test -e' In case `/bin/test' does not exist.
 -    (unless (or
 -             (and (setq result (format "%s -e" (tramp-get-test-command vec)))
 -                (zerop (tramp-send-command-and-check
 -                        vec (format "%s %s" result existing)))
 -                  (not (zerop (tramp-send-command-and-check
 -                             vec (format "%s %s" result nonexisting)))))
 -             (and (setq result "/bin/test -e")
 -                (zerop (tramp-send-command-and-check
 -                        vec (format "%s %s" result existing)))
 -                  (not (zerop (tramp-send-command-and-check
 -                             vec (format "%s %s" result nonexisting)))))
 -             (and (setq result "/usr/bin/test -e")
 -                (zerop (tramp-send-command-and-check
 -                        vec (format "%s %s" result existing)))
 -                  (not (zerop (tramp-send-command-and-check
 -                             vec (format "%s %s" result nonexisting)))))
 -             (and (setq result (format "%s -d" (tramp-get-ls-command vec)))
 -                (zerop (tramp-send-command-and-check
 -                        vec (format "%s %s" result existing)))
 -                  (not (zerop (tramp-send-command-and-check
 -                             vec (format "%s %s" result nonexisting))))))
 -      (tramp-error
 -       vec 'file-error "Couldn't find command to check if file exists"))
 -    result))
 +(defun tramp-handle-unhandled-file-name-directory (filename)
 +  "Like `unhandled-file-name-directory' for Tramp files."
 +  ;; With Emacs 23, we could simply return `nil'.  But we must keep it
 +  ;; for backward compatibility.
 +  (expand-file-name "~/"))
  
 -(defun tramp-open-shell (vec shell)
 -  "Opens shell SHELL."
 -  (with-progress-reporter vec 5 (format "Opening remote shell `%s'" shell)
 -    ;; Find arguments for this shell.
 -    (let ((tramp-end-of-output tramp-initial-end-of-output)
 -        (alist tramp-sh-extra-args)
 -        item extra-args)
 -      (while (and alist (null extra-args))
 -      (setq item (pop alist))
 -      (when (string-match (car item) shell)
 -        (setq extra-args (cdr item))))
 -      (when extra-args (setq shell (concat shell " " extra-args)))
 -      (tramp-send-command
 -       vec (format "exec env ENV='' PROMPT_COMMAND='' PS1=%s PS2='' PS3='' %s"
 -                 (shell-quote-argument tramp-end-of-output) shell)
 -       t))
 -    ;; Setting prompts.
 -    (tramp-send-command
 -     vec (format "PS1=%s" (shell-quote-argument tramp-end-of-output)) t)
 -    (tramp-send-command vec "PS2=''" t)
 -    (tramp-send-command vec "PS3=''" t)
 -    (tramp-send-command vec "PROMPT_COMMAND=''" t)))
 -
 -(defun tramp-find-shell (vec)
 -  "Opens a shell on the remote host which groks tilde expansion."
 -  (unless (tramp-get-connection-property vec "remote-shell" nil)
 -    (let (shell)
 -      (with-current-buffer (tramp-get-buffer vec)
 -      (tramp-send-command vec "echo ~root" t)
 -      (cond
 -       ((or (string-match "^~root$" (buffer-string))
 -            ;; The default shell (ksh93) of OpenSolaris is buggy.
 -            (string-equal (tramp-get-connection-property vec "uname" "")
 -                          "SunOS 5.11"))
 -        (setq shell
 -              (or (tramp-find-executable
 -                   vec "bash" (tramp-get-remote-path vec) t t)
 -                  (tramp-find-executable
 -                   vec "ksh" (tramp-get-remote-path vec) t t)))
 -        (unless shell
 -          (tramp-error
 -           vec 'file-error
 -           "Couldn't find a shell which groks tilde expansion"))
 -        (tramp-message
 -         vec 5 "Starting remote shell `%s' for tilde expansion" shell)
 -        (tramp-open-shell vec shell))
 -
 -       (t (tramp-message
 -           vec 5 "Remote `%s' groks tilde expansion, good"
 -           (tramp-set-connection-property
 -            vec "remote-shell"
 -            (tramp-get-method-parameter
 -             (tramp-file-name-method vec) 'tramp-remote-sh)))))))))
 -
 -;; ------------------------------------------------------------
 -;; -- Functions for establishing connection --
 -;; ------------------------------------------------------------
 +;;; Functions for establishing connection:
  
  ;; The following functions are actions to be taken when seeing certain
  ;; prompts from the remote host.  See the variable
@@@ -3044,7 -6783,7 +3043,7 @@@ The terminal type can be configured wit
             (throw 'tramp-action 'process-died))))
        (t nil)))
  
 -;; Functions for processing the actions.
 +;;; Functions for processing the actions:
  
  (defun tramp-process-one-action (proc vec actions)
    "Wait for output from the shell and perform one action."
  (defun tramp-process-actions (proc vec actions &optional timeout)
    "Perform actions until success or TIMEOUT."
    ;; Preserve message for `progress-reporter'.
 -  (with-temp-message ""
 +  (tramp-compat-with-temp-message ""
      ;; Enable auth-source and password-cache.
      (tramp-set-connection-property vec "first-password-request" t)
      (let (exit)
          ((eq exit 'process-died) "Process died")
          (t "Login failed")))))))
  
 -;; Utility functions.
 +:;; Utility functions:
  
  (defun tramp-accept-process-output (&optional proc timeout timeout-msecs)
    "Like `accept-process-output' for Tramp processes.
@@@ -3176,6 -6915,17 +3175,6 @@@ nil.
          (tramp-error proc 'file-error "[[Regexp `%s' not found]]" regexp)))
        found)))
  
 -(defun tramp-barf-if-no-shell-prompt (proc timeout &rest error-args)
 -  "Wait for shell prompt and barf if none appears.
 -Looks at process PROC to see if a shell prompt appears in TIMEOUT
 -seconds.  If not, it produces an error message with the given ERROR-ARGS."
 -  (unless
 -      (tramp-wait-for-regexp
 -       proc timeout
 -       (format
 -      "\\(%s\\|%s\\)\\'" shell-prompt-pattern tramp-shell-prompt-pattern))
 -    (apply 'tramp-error-with-buffer nil proc 'file-error error-args)))
 -
  ;; We don't call `tramp-send-string' in order to hide the password
  ;; from the debug buffer, and because end-of-line handling of the
  ;; string.
                     'tramp-password-end-of-line)
                    tramp-default-password-end-of-line))))
  
 -(defun tramp-open-connection-setup-interactive-shell (proc vec)
 -  "Set up an interactive shell.
 -Mainly sets the prompt and the echo correctly.  PROC is the shell
 -process to set up.  VEC specifies the connection."
 -  (let ((tramp-end-of-output tramp-initial-end-of-output))
 -    ;; It is useful to set the prompt in the following command because
 -    ;; some people have a setting for $PS1 which /bin/sh doesn't know
 -    ;; about and thus /bin/sh will display a strange prompt.  For
 -    ;; example, if $PS1 has "${CWD}" in the value, then ksh will
 -    ;; display the current working directory but /bin/sh will display
 -    ;; a dollar sign.  The following command line sets $PS1 to a sane
 -    ;; value, and works under Bourne-ish shells as well as csh-like
 -    ;; shells.  Daniel Pittman reports that the unusual positioning of
 -    ;; the single quotes makes it work under `rc', too.  We also unset
 -    ;; the variable $ENV because that is read by some sh
 -    ;; implementations (eg, bash when called as sh) on startup; this
 -    ;; way, we avoid the startup file clobbering $PS1.  $PROMP_COMMAND
 -    ;; is another way to set the prompt in /bin/bash, it must be
 -    ;; discarded as well.
 -    (tramp-open-shell
 -     vec
 -     (tramp-get-method-parameter (tramp-file-name-method vec) 'tramp-remote-sh))
 -
 -    ;; Disable echo.
 -    (tramp-message vec 5 "Setting up remote shell environment")
 -    (tramp-send-command vec "stty -inlcr -echo kill '^U' erase '^H'" t)
 -    ;; Check whether the echo has really been disabled.  Some
 -    ;; implementations, like busybox of embedded GNU/Linux, don't
 -    ;; support disabling.
 -    (tramp-send-command vec "echo foo" t)
 -    (with-current-buffer (process-buffer proc)
 -      (goto-char (point-min))
 -      (when (looking-at "echo foo")
 -      (tramp-set-connection-property proc "remote-echo" t)
 -      (tramp-message vec 5 "Remote echo still on. Ok.")
 -      ;; Make sure backspaces and their echo are enabled and no line
 -      ;; width magic interferes with them.
 -      (tramp-send-command vec "stty icanon erase ^H cols 32767" t))))
 -
 -  (tramp-message vec 5 "Setting shell prompt")
 -  (tramp-send-command
 -   vec (format "PS1=%s" (shell-quote-argument tramp-end-of-output)) t)
 -  (tramp-send-command vec "PS2=''" t)
 -  (tramp-send-command vec "PS3=''" t)
 -  (tramp-send-command vec "PROMPT_COMMAND=''" t)
 -
 -  ;; Try to set up the coding system correctly.
 -  ;; CCC this can't be the right way to do it.  Hm.
 -  (tramp-message vec 5 "Determining coding system")
 -  (tramp-send-command vec "echo foo ; echo bar" t)
 -  (with-current-buffer (process-buffer proc)
 -    (goto-char (point-min))
 -    (if (featurep 'mule)
 -      ;; Use MULE to select the right EOL convention for communicating
 -      ;; with the process.
 -      (let* ((cs (or (tramp-compat-funcall 'process-coding-system proc)
 -                     (cons 'undecided 'undecided)))
 -             cs-decode cs-encode)
 -        (when (symbolp cs) (setq cs (cons cs cs)))
 -        (setq cs-decode (car cs))
 -        (setq cs-encode (cdr cs))
 -        (unless cs-decode (setq cs-decode 'undecided))
 -        (unless cs-encode (setq cs-encode 'undecided))
 -        (setq cs-encode (tramp-coding-system-change-eol-conversion
 -                         cs-encode 'unix))
 -        (when (search-forward "\r" nil t)
 -          (setq cs-decode (tramp-coding-system-change-eol-conversion
 -                           cs-decode 'dos)))
 -        (tramp-compat-funcall
 -         'set-buffer-process-coding-system cs-decode cs-encode)
 -        (tramp-message
 -         vec 5 "Setting coding system to `%s' and `%s'" cs-decode cs-encode))
 -      ;; Look for ^M and do something useful if found.
 -      (when (search-forward "\r" nil t)
 -      ;; We have found a ^M but cannot frob the process coding system
 -      ;; because we're running on a non-MULE Emacs.  Let's try
 -      ;; stty, instead.
 -      (tramp-send-command vec "stty -onlcr" t))))
 -
 -  (tramp-send-command vec "set +o vi +o emacs" t)
 -
 -  ;; Check whether the output of "uname -sr" has been changed.  If
 -  ;; yes, this is a strong indication that we must expire all
 -  ;; connection properties.  We start again with
 -  ;; `tramp-maybe-open-connection', it will be catched there.
 -  (tramp-message vec 5 "Checking system information")
 -  (let ((old-uname (tramp-get-connection-property vec "uname" nil))
 -      (new-uname
 -       (tramp-set-connection-property
 -        vec "uname"
 -        (tramp-send-command-and-read vec "echo \\\"`uname -sr`\\\""))))
 -    (when (and (stringp old-uname) (not (string-equal old-uname new-uname)))
 -      (with-current-buffer (tramp-get-debug-buffer vec)
 -      ;; Keep the debug buffer.
 -      (rename-buffer
 -       (generate-new-buffer-name tramp-temp-buffer-name) 'unique)
 -      (tramp-compat-funcall 'tramp-cleanup-connection vec)
 -      (if (= (point-min) (point-max))
 -          (kill-buffer nil)
 -        (rename-buffer (tramp-debug-buffer-name vec) 'unique))
 -      ;; We call `tramp-get-buffer' in order to keep the debug buffer.
 -      (tramp-get-buffer vec)
 -      (tramp-message
 -       vec 3
 -       "Connection reset, because remote host changed from `%s' to `%s'"
 -       old-uname new-uname)
 -      (throw 'uname-changed (tramp-maybe-open-connection vec)))))
 -
 -  ;; Check whether the remote host suffers from buggy
 -  ;; `send-process-string'.  This is known for FreeBSD (see comment in
 -  ;; `send_process', file process.c).  I've tested sending 624 bytes
 -  ;; successfully, sending 625 bytes failed.  Emacs makes a hack when
 -  ;; this host type is detected locally.  It cannot handle remote
 -  ;; hosts, though.
 -  (with-connection-property proc "chunksize"
 -    (cond
 -     ((and (integerp tramp-chunksize) (> tramp-chunksize 0))
 -      tramp-chunksize)
 -     (t
 -      (tramp-message
 -       vec 5 "Checking remote host type for `send-process-string' bug")
 -      (if (string-match
 -         "^FreeBSD" (tramp-get-connection-property vec "uname" ""))
 -        500 0))))
 -
 -  ;; Set remote PATH variable.
 -  (tramp-set-remote-path vec)
 -
 -  ;; Search for a good shell before searching for a command which
 -  ;; checks if a file exists. This is done because Tramp wants to use
 -  ;; "test foo; echo $?" to check if various conditions hold, and
 -  ;; there are buggy /bin/sh implementations which don't execute the
 -  ;; "echo $?"  part if the "test" part has an error.  In particular,
 -  ;; the OpenSolaris /bin/sh is a problem.  There are also other
 -  ;; problems with /bin/sh of OpenSolaris, like redirection of stderr
 -  ;; in function declarations, or changing HISTFILE in place.
 -  ;; Therefore, OpenSolaris' /bin/sh is replaced by bash, when
 -  ;; detected.
 -  (tramp-find-shell vec)
 -
 -  ;; Disable unexpected output.
 -  (tramp-send-command vec "mesg n; biff n" t)
 -
 -  ;; IRIX64 bash expands "!" even when in single quotes.  This
 -  ;; destroys our shell functions, we must disable it.  See
 -  ;; <http://stackoverflow.com/questions/3291692/irix-bash-shell-expands-expression-in-single-quotes-yet-shouldnt>.
 -  (when (string-match "^IRIX64" (tramp-get-connection-property vec "uname" ""))
 -    (tramp-send-command vec "set +H" t))
 -
 -  ;; On BSD-like systems, ?\t is expanded to spaces.  Suppress this.
 -  (when (string-match "BSD\\|Darwin"
 -                    (tramp-get-connection-property vec "uname" ""))
 -    (tramp-send-command vec "stty -oxtabs" t))
 -
 -  ;; Set `remote-tty' process property.
 -  (ignore-errors
 -    (let ((tty (tramp-send-command-and-read vec "echo \\\"`tty`\\\"")))
 -      (unless (zerop (length tty)) (process-put proc 'remote-tty tty))))
 -
 -  ;; Dump stty settings in the traces.
 -  (when (>= tramp-verbose 9)
 -    (tramp-send-command vec "stty -a" t))
 -
 -  ;; Set the environment.
 -  (tramp-message vec 5 "Setting default environment")
 -
 -  (let ((env (copy-sequence tramp-remote-process-environment))
 -      unset item)
 -    (while env
 -      (setq item (tramp-compat-split-string (car env) "="))
 -      (setcdr item (mapconcat 'identity (cdr item) "="))
 -      (if (and (stringp (cdr item)) (not (string-equal (cdr item) "")))
 -        (tramp-send-command
 -         vec (format "%s=%s; export %s" (car item) (cdr item) (car item)) t)
 -      (push (car item) unset))
 -      (setq env (cdr env)))
 -    (when unset
 -      (tramp-send-command
 -       vec (format "unset %s" (mapconcat 'identity unset " ")) t))))
 -
 -;; CCC: We should either implement a Perl version of base64 encoding
 -;; and decoding.  Then we just use that in the last item.  The other
 -;; alternative is to use the Perl version of UU encoding.  But then
 -;; we need a Lisp version of uuencode.
 -;;
 -;; Old text from documentation of tramp-methods:
 -;; Using a uuencode/uudecode inline method is discouraged, please use one
 -;; of the base64 methods instead since base64 encoding is much more
 -;; reliable and the commands are more standardized between the different
 -;; Unix versions.  But if you can't use base64 for some reason, please
 -;; note that the default uudecode command does not work well for some
 -;; Unices, in particular AIX and Irix.  For AIX, you might want to use
 -;; the following command for uudecode:
 -;;
 -;;     sed '/^begin/d;/^[` ]$/d;/^end/d' | iconv -f uucode -t ISO8859-1
 -;;
 -;; For Irix, no solution is known yet.
 -
 -(defconst tramp-local-coding-commands
 -  '((b64 base64-encode-region base64-decode-region)
 -    (uu  tramp-uuencode-region uudecode-decode-region)
 -    (pack
 -     "perl -e 'binmode STDIN; binmode STDOUT; print pack(q{u*}, join q{}, <>)'"
 -     "perl -e 'binmode STDIN; binmode STDOUT; print unpack(q{u*}, join q{}, <>)'"))
 -  "List of local coding commands for inline transfer.
 -Each item is a list that looks like this:
 -
 -\(FORMAT ENCODING DECODING\)
 -
 -FORMAT is  symbol describing the encoding/decoding format.  It can be
 -`b64' for base64 encoding, `uu' for uu encoding, or `pack' for simple packing.
 -
 -ENCODING and DECODING can be strings, giving commands, or symbols,
 -giving functions.  If they are strings, then they can contain
 -the \"%s\" format specifier.  If that specifier is present, the input
 -filename will be put into the command line at that spot.  If the
 -specifier is not present, the input should be read from standard
 -input.
 -
 -If they are functions, they will be called with two arguments, start
 -and end of region, and are expected to replace the region contents
 -with the encoded or decoded results, respectively.")
 -
 -(defconst tramp-remote-coding-commands
 -  '((b64 "base64" "base64 -d")
 -    (b64 "mimencode -b" "mimencode -u -b")
 -    (b64 "mmencode -b" "mmencode -u -b")
 -    (b64 "recode data..base64" "recode base64..data")
 -    (b64 tramp-perl-encode-with-module tramp-perl-decode-with-module)
 -    (b64 tramp-perl-encode tramp-perl-decode)
 -    (uu  "uuencode xxx" "uudecode -o /dev/stdout")
 -    (uu  "uuencode xxx" "uudecode -o -")
 -    (uu  "uuencode xxx" "uudecode -p")
 -    (uu  "uuencode xxx" tramp-uudecode)
 -    (pack
 -     "perl -e 'binmode STDIN; binmode STDOUT; print pack(q{u*}, join q{}, <>)'"
 -     "perl -e 'binmode STDIN; binmode STDOUT; print unpack(q{u*}, join q{}, <>)'"))
 -  "List of remote coding commands for inline transfer.
 -Each item is a list that looks like this:
 -
 -\(FORMAT ENCODING DECODING\)
 -
 -FORMAT is  symbol describing the encoding/decoding format.  It can be
 -`b64' for base64 encoding, `uu' for uu encoding, or `pack' for simple packing.
 -
 -ENCODING and DECODING can be strings, giving commands, or symbols,
 -giving variables.  If they are strings, then they can contain
 -the \"%s\" format specifier.  If that specifier is present, the input
 -filename will be put into the command line at that spot.  If the
 -specifier is not present, the input should be read from standard
 -input.
 -
 -If they are variables, this variable is a string containing a Perl
 -implementation for this functionality.  This Perl program will be transferred
 -to the remote host, and it is available as shell function with the same name.")
 -
 -(defun tramp-find-inline-encoding (vec)
 -  "Find an inline transfer encoding that works.
 -Goes through the list `tramp-local-coding-commands' and
 -`tramp-remote-coding-commands'."
 -  (save-excursion
 -    (let ((local-commands tramp-local-coding-commands)
 -        (magic "xyzzy")
 -        loc-enc loc-dec rem-enc rem-dec litem ritem found)
 -      (while (and local-commands (not found))
 -      (setq litem (pop local-commands))
 -      (catch 'wont-work-local
 -        (let ((format (nth 0 litem))
 -              (remote-commands tramp-remote-coding-commands))
 -          (setq loc-enc (nth 1 litem))
 -          (setq loc-dec (nth 2 litem))
 -          ;; If the local encoder or decoder is a string, the
 -          ;; corresponding command has to work locally.
 -          (if (not (stringp loc-enc))
 -              (tramp-message
 -               vec 5 "Checking local encoding function `%s'" loc-enc)
 -            (tramp-message
 -             vec 5 "Checking local encoding command `%s' for sanity" loc-enc)
 -            (unless (zerop (tramp-call-local-coding-command
 -                            loc-enc nil nil))
 -              (throw 'wont-work-local nil)))
 -          (if (not (stringp loc-dec))
 -              (tramp-message
 -               vec 5 "Checking local decoding function `%s'" loc-dec)
 -            (tramp-message
 -             vec 5 "Checking local decoding command `%s' for sanity" loc-dec)
 -            (unless (zerop (tramp-call-local-coding-command
 -                            loc-dec nil nil))
 -              (throw 'wont-work-local nil)))
 -          ;; Search for remote coding commands with the same format
 -          (while (and remote-commands (not found))
 -            (setq ritem (pop remote-commands))
 -            (catch 'wont-work-remote
 -              (when (equal format (nth 0 ritem))
 -                (setq rem-enc (nth 1 ritem))
 -                (setq rem-dec (nth 2 ritem))
 -                ;; Check if remote encoding and decoding commands can be
 -                ;; called remotely with null input and output.  This makes
 -                ;; sure there are no syntax errors and the command is really
 -                ;; found.  Note that we do not redirect stdout to /dev/null,
 -                ;; for two reasons: when checking the decoding command, we
 -                ;; actually check the output it gives.  And also, when
 -                ;; redirecting "mimencode" output to /dev/null, then as root
 -                ;; it might change the permissions of /dev/null!
 -                (when (not (stringp rem-enc))
 -                  (let ((name (symbol-name rem-enc)))
 -                    (while (string-match (regexp-quote "-") name)
 -                      (setq name (replace-match "_" nil t name)))
 -                    (tramp-maybe-send-script vec (symbol-value rem-enc) name)
 -                    (setq rem-enc name)))
 -                (tramp-message
 -                 vec 5
 -                 "Checking remote encoding command `%s' for sanity" rem-enc)
 -                (unless (zerop (tramp-send-command-and-check
 -                                vec (format "%s </dev/null" rem-enc) t))
 -                  (throw 'wont-work-remote nil))
 -
 -                (when (not (stringp rem-dec))
 -                  (let ((name (symbol-name rem-dec)))
 -                    (while (string-match (regexp-quote "-") name)
 -                      (setq name (replace-match "_" nil t name)))
 -                    (tramp-maybe-send-script vec (symbol-value rem-dec) name)
 -                    (setq rem-dec name)))
 -                (tramp-message
 -                 vec 5
 -                 "Checking remote decoding command `%s' for sanity" rem-dec)
 -                (unless (zerop (tramp-send-command-and-check
 -                                vec
 -                                (format "echo %s | %s | %s"
 -                                        magic rem-enc rem-dec)
 -                                t))
 -                  (throw 'wont-work-remote nil))
 -
 -                (with-current-buffer (tramp-get-buffer vec)
 -                  (goto-char (point-min))
 -                  (unless (looking-at (regexp-quote magic))
 -                    (throw 'wont-work-remote nil)))
 -
 -                ;; `rem-enc' and `rem-dec' could be a string meanwhile.
 -                (setq rem-enc (nth 1 ritem))
 -                (setq rem-dec (nth 2 ritem))
 -                (setq found t)))))))
 -
 -      ;; Did we find something?
 -      (unless found
 -      (tramp-error
 -       vec 'file-error "Couldn't find an inline transfer encoding"))
 -
 -      ;; Set connection properties.
 -      (tramp-message vec 5 "Using local encoding `%s'" loc-enc)
 -      (tramp-set-connection-property vec "local-encoding" loc-enc)
 -      (tramp-message vec 5 "Using local decoding `%s'" loc-dec)
 -      (tramp-set-connection-property vec "local-decoding" loc-dec)
 -      (tramp-message vec 5 "Using remote encoding `%s'" rem-enc)
 -      (tramp-set-connection-property vec "remote-encoding" rem-enc)
 -      (tramp-message vec 5 "Using remote decoding `%s'" rem-dec)
 -      (tramp-set-connection-property vec "remote-decoding" rem-dec))))
 -
 -(defun tramp-call-local-coding-command (cmd input output)
 -  "Call the local encoding or decoding command.
 -If CMD contains \"%s\", provide input file INPUT there in command.
 -Otherwise, INPUT is passed via standard input.
 -INPUT can also be nil which means `/dev/null'.
 -OUTPUT can be a string (which specifies a filename), or t (which
 -means standard output and thus the current buffer), or nil (which
 -means discard it)."
 -  (tramp-local-call-process
 -   tramp-encoding-shell
 -   (when (and input (not (string-match "%s" cmd))) input)
 -   (if (eq output t) t nil)
 -   nil
 -   tramp-encoding-command-switch
 -   (concat
 -    (if (string-match "%s" cmd) (format cmd input) cmd)
 -    (if (stringp output) (concat "> " output) ""))))
 -
 -(defconst tramp-inline-compress-commands
 -  '(("gzip" "gzip -d")
 -    ("bzip2" "bzip2 -d")
 -    ("compress" "compress -d"))
 -  "List of compress and decompress commands for inline transfer.
 -Each item is a list that looks like this:
 -
 -\(COMPRESS DECOMPRESS\)
 -
 -COMPRESS or DECOMPRESS are strings with the respective commands.")
 -
 -(defun tramp-find-inline-compress (vec)
 -  "Find an inline transfer compress command that works.
 -Goes through the list `tramp-inline-compress-commands'."
 -  (save-excursion
 -    (let ((commands tramp-inline-compress-commands)
 -        (magic "xyzzy")
 -        item compress decompress
 -        found)
 -      (while (and commands (not found))
 -      (catch 'next
 -        (setq item (pop commands)
 -              compress (nth 0 item)
 -              decompress (nth 1 item))
 -        (tramp-message
 -         vec 5
 -         "Checking local compress command `%s', `%s' for sanity"
 -         compress decompress)
 -        (unless (zerop (tramp-call-local-coding-command
 -                        (format "echo %s | %s | %s"
 -                                magic compress decompress) nil nil))
 -          (throw 'next nil))
 -        (tramp-message
 -         vec 5
 -         "Checking remote compress command `%s', `%s' for sanity"
 -         compress decompress)
 -        (unless (zerop (tramp-send-command-and-check
 -                        vec (format "echo %s | %s | %s"
 -                                    magic compress decompress) t))
 -          (throw 'next nil))
 -        (setq found t)))
 -
 -      ;; Did we find something?
 -      (if found
 -        (progn
 -          ;; Set connection properties.
 -          (tramp-message
 -           vec 5 "Using inline transfer compress command `%s'" compress)
 -          (tramp-set-connection-property vec "inline-compress" compress)
 -          (tramp-message
 -           vec 5 "Using inline transfer decompress command `%s'" decompress)
 -          (tramp-set-connection-property vec "inline-decompress" decompress))
 -
 -      (tramp-set-connection-property vec "inline-compress" nil)
 -      (tramp-set-connection-property vec "inline-decompress" nil)
 -      (tramp-message
 -       vec 2 "Couldn't find an inline transfer compress command")))))
 -
 -(defun tramp-compute-multi-hops (vec)
 -  "Expands VEC according to `tramp-default-proxies-alist'.
 -Gateway hops are already opened."
 -  (let ((target-alist `(,vec))
 -      (choices tramp-default-proxies-alist)
 -      item proxy)
 -
 -    ;; Look for proxy hosts to be passed.
 -    (while choices
 -      (setq item (pop choices)
 -          proxy (eval (nth 2 item)))
 -      (when (and
 -           ;; host
 -           (string-match (or (eval (nth 0 item)) "")
 -                         (or (tramp-file-name-host (car target-alist)) ""))
 -           ;; user
 -           (string-match (or (eval (nth 1 item)) "")
 -                         (or (tramp-file-name-user (car target-alist)) "")))
 -      (if (null proxy)
 -          ;; No more hops needed.
 -          (setq choices nil)
 -        ;; Replace placeholders.
 -        (setq proxy
 -              (format-spec
 -               proxy
 -               (format-spec-make
 -                ?u (or (tramp-file-name-user (car target-alist)) "")
 -                ?h (or (tramp-file-name-host (car target-alist)) ""))))
 -        (with-parsed-tramp-file-name proxy l
 -          ;; Add the hop.
 -          (add-to-list 'target-alist l)
 -          ;; Start next search.
 -          (setq choices tramp-default-proxies-alist)))))
 -
 -    ;; Handle gateways.
 -    (when (and (boundp 'tramp-gw-tunnel-method)
 -             (string-match (format
 -                            "^\\(%s\\|%s\\)$"
 -                            (symbol-value 'tramp-gw-tunnel-method)
 -                            (symbol-value 'tramp-gw-socks-method))
 -                           (tramp-file-name-method (car target-alist))))
 -      (let ((gw (pop target-alist))
 -          (hop (pop target-alist)))
 -      ;; Is the method prepared for gateways?
 -      (unless (tramp-get-method-parameter
 -               (tramp-file-name-method hop) 'tramp-default-port)
 -        (tramp-error
 -         vec 'file-error
 -         "Method `%s' is not supported for gateway access."
 -         (tramp-file-name-method hop)))
 -      ;; Add default port if needed.
 -      (unless
 -          (string-match
 -           tramp-host-with-port-regexp (tramp-file-name-host hop))
 -        (aset hop 2
 -              (concat
 -               (tramp-file-name-host hop) tramp-prefix-port-format
 -               (number-to-string
 -                (tramp-get-method-parameter
 -                 (tramp-file-name-method hop) 'tramp-default-port)))))
 -      ;; Open the gateway connection.
 -      (add-to-list
 -       'target-alist
 -       (vector
 -        (tramp-file-name-method hop) (tramp-file-name-user hop)
 -        (tramp-compat-funcall 'tramp-gw-open-connection vec gw hop) nil))
 -      ;; For the password prompt, we need the correct values.
 -      ;; Therefore, we must remember the gateway vector.  But we
 -      ;; cannot do it as connection property, because it shouldn't
 -      ;; be persistent.  And we have no started process yet either.
 -      (tramp-set-file-property (car target-alist) "" "gateway" hop)))
 -
 -    ;; Foreign and out-of-band methods are not supported for multi-hops.
 -    (when (cdr target-alist)
 -      (setq choices target-alist)
 -      (while choices
 -      (setq item (pop choices))
 -      (when
 -          (or
 -           (not
 -            (tramp-get-method-parameter
 -             (tramp-file-name-method item) 'tramp-login-program))
 -           (tramp-get-method-parameter
 -            (tramp-file-name-method item) 'tramp-copy-program))
 -        (tramp-error
 -         vec 'file-error
 -         "Method `%s' is not supported for multi-hops."
 -         (tramp-file-name-method item)))))
 -
 -    ;; In case the host name is not used for the remote shell
 -    ;; command, the user could be misguided by applying a random
 -    ;; hostname.
 -    (let* ((v (car target-alist))
 -         (method (tramp-file-name-method v))
 -         (host (tramp-file-name-host v)))
 -      (unless
 -        (or
 -         ;; There are multi-hops.
 -         (cdr target-alist)
 -         ;; The host name is used for the remote shell command.
 -         (member
 -          '("%h") (tramp-get-method-parameter method 'tramp-login-args))
 -         ;; The host is local.  We cannot use `tramp-local-host-p'
 -         ;; here, because it opens a connection as well.
 -         (string-match tramp-local-host-regexp host))
 -      (tramp-error
 -       v 'file-error
 -       "Host `%s' looks like a remote host, `%s' can only use the local host"
 -       host method)))
 -
 -    ;; Result.
 -    target-alist))
 -
 -(defun tramp-maybe-open-connection (vec)
 -  "Maybe open a connection VEC.
 -Does not do anything if a connection is already open, but re-opens the
 -connection if a previous connection has died for some reason."
 -  (catch 'uname-changed
 -    (let ((p (tramp-get-connection-process vec))
 -        (process-name (tramp-get-connection-property vec "process-name" nil))
 -        (process-environment (copy-sequence process-environment)))
 -
 -      ;; If too much time has passed since last command was sent, look
 -      ;; whether process is still alive.  If it isn't, kill it.  When
 -      ;; using ssh, it can sometimes happen that the remote end has
 -      ;; hung up but the local ssh client doesn't recognize this until
 -      ;; it tries to send some data to the remote end.  So that's why
 -      ;; we try to send a command from time to time, then look again
 -      ;; whether the process is really alive.
 -      (condition-case nil
 -        (when (and (> (tramp-time-diff
 -                       (current-time)
 -                       (tramp-get-connection-property
 -                        p "last-cmd-time" '(0 0 0)))
 -                      60)
 -                   p (processp p) (memq (process-status p) '(run open)))
 -          (tramp-send-command vec "echo are you awake" t t)
 -          (unless (and (memq (process-status p) '(run open))
 -                       (tramp-wait-for-output p 10))
 -            ;; The error will be catched locally.
 -            (tramp-error vec 'file-error "Awake did fail")))
 -      (file-error
 -       (tramp-flush-connection-property vec)
 -       (tramp-flush-connection-property p)
 -       (delete-process p)
 -       (setq p nil)))
 -
 -      ;; New connection must be opened.
 -      (unless (and p (processp p) (memq (process-status p) '(run open)))
 -
 -      ;; We call `tramp-get-buffer' in order to get a debug buffer for
 -      ;; messages from the beginning.
 -      (tramp-get-buffer vec)
 -      (with-progress-reporter
 -          vec 3
 -          (if (zerop (length (tramp-file-name-user vec)))
 -              (format "Opening connection for %s using %s"
 -                      (tramp-file-name-host vec)
 -                      (tramp-file-name-method vec))
 -            (format "Opening connection for %s@%s using %s"
 -                    (tramp-file-name-user vec)
 -                    (tramp-file-name-host vec)
 -                    (tramp-file-name-method vec)))
 -
 -        ;; Start new process.
 -        (when (and p (processp p))
 -          (delete-process p))
 -        (setenv "TERM" tramp-terminal-type)
 -        (setenv "LC_ALL" "C")
 -        (setenv "PROMPT_COMMAND")
 -        (setenv "PS1" tramp-initial-end-of-output)
 -        (let* ((target-alist (tramp-compute-multi-hops vec))
 -               (process-connection-type tramp-process-connection-type)
 -               (process-adaptive-read-buffering nil)
 -               (coding-system-for-read nil)
 -               ;; This must be done in order to avoid our file name handler.
 -               (p (let ((default-directory
 -                          (tramp-compat-temporary-file-directory)))
 -                    (start-process
 -                     (or process-name (tramp-buffer-name vec))
 -                     (tramp-get-connection-buffer vec)
 -                     tramp-encoding-shell))))
 -
 -          (tramp-message
 -           vec 6 "%s" (mapconcat 'identity (process-command p) " "))
 -
 -          ;; Check whether process is alive.
 -          (tramp-set-process-query-on-exit-flag p nil)
 -          (tramp-barf-if-no-shell-prompt
 -           p 60 "Couldn't find local shell prompt %s" tramp-encoding-shell)
 -
 -          ;; Now do all the connections as specified.
 -          (while target-alist
 -            (let* ((hop (car target-alist))
 -                   (l-method (tramp-file-name-method hop))
 -                   (l-user (tramp-file-name-user hop))
 -                   (l-host (tramp-file-name-host hop))
 -                   (l-port nil)
 -                   (login-program
 -                    (tramp-get-method-parameter
 -                     l-method 'tramp-login-program))
 -                   (login-args
 -                    (tramp-get-method-parameter l-method 'tramp-login-args))
 -                   (async-args
 -                    (tramp-get-method-parameter l-method 'tramp-async-args))
 -                   (gw-args
 -                    (tramp-get-method-parameter l-method 'tramp-gw-args))
 -                   (gw (tramp-get-file-property hop "" "gateway" nil))
 -                   (g-method (and gw (tramp-file-name-method gw)))
 -                   (g-user (and gw (tramp-file-name-user gw)))
 -                   (g-host (and gw (tramp-file-name-host gw)))
 -                   (command login-program)
 -                   ;; We don't create the temporary file.  In fact,
 -                   ;; it is just a prefix for the ControlPath option
 -                   ;; of ssh; the real temporary file has another
 -                   ;; name, and it is created and protected by ssh.
 -                   ;; It is also removed by ssh, when the connection
 -                   ;; is closed.
 -                   (tmpfile
 -                    (tramp-set-connection-property
 -                     p "temp-file"
 -                     (make-temp-name
 -                      (expand-file-name
 -                       tramp-temp-name-prefix
 -                       (tramp-compat-temporary-file-directory)))))
 -                   spec)
 -
 -              ;; Add arguments for asynchrononous processes.
 -              (when (and process-name async-args)
 -                (setq login-args (append async-args login-args)))
 -
 -              ;; Add gateway arguments if necessary.
 -              (when (and gw gw-args)
 -                (setq login-args (append gw-args login-args)))
 -
 -              ;; Check for port number.  Until now, there's no need
 -              ;; for handling like method, user, host.
 -              (when (string-match tramp-host-with-port-regexp l-host)
 -              (setq l-port (match-string 2 l-host)
 -                    l-host (match-string 1 l-host)))
 -
 -              ;; Set variables for computing the prompt for reading
 -              ;; password.  They can also be derived from a gateway.
 -              (setq tramp-current-method (or g-method l-method)
 -                    tramp-current-user   (or g-user   l-user)
 -                    tramp-current-host   (or g-host   l-host))
 -
 -              ;; Replace login-args place holders.
 -              (setq
 -               l-host (or l-host "")
 -               l-user (or l-user "")
 -               l-port (or l-port "")
 -               spec (format-spec-make
 -                     ?h l-host ?u l-user ?p l-port ?t tmpfile)
 -               command
 -               (concat
 -                ;; We do not want to see the trailing local prompt in
 -                ;; `start-file-process'.
 -                (unless (memq system-type '(windows-nt)) "exec ")
 -                command " "
 -                (mapconcat
 -                 (lambda (x)
 -                   (setq x (mapcar (lambda (y) (format-spec y spec)) x))
 -                   (unless (member "" x) (mapconcat 'identity x " ")))
 -                 login-args " ")
 -                ;; Local shell could be a Windows COMSPEC.  It
 -                ;; doesn't know the ";" syntax, but we must exit
 -                ;; always for `start-file-process'.  "exec" does not
 -                ;; work either.
 -                (if (memq system-type '(windows-nt)) " && exit || exit")))
 -
 -              ;; Send the command.
 -              (tramp-message vec 3 "Sending command `%s'" command)
 -              (tramp-send-command vec command t t)
 -              (tramp-process-actions p vec tramp-actions-before-shell 60)
 -              (tramp-message
 -               vec 3 "Found remote shell prompt on `%s'" l-host))
 -            ;; Next hop.
 -            (setq target-alist (cdr target-alist)))
 -
 -          ;; Make initial shell settings.
 -          (tramp-open-connection-setup-interactive-shell p vec)))))))
 -
 -(defun tramp-send-command (vec command &optional neveropen nooutput)
 -  "Send the COMMAND to connection VEC.
 -Erases temporary buffer before sending the command.  If optional
 -arg NEVEROPEN is non-nil, never try to open the connection.  This
 -is meant to be used from `tramp-maybe-open-connection' only.  The
 -function waits for output unless NOOUTPUT is set."
 -  (unless neveropen (tramp-maybe-open-connection vec))
 -  (let ((p (tramp-get-connection-process vec)))
 -    (when (tramp-get-connection-property p "remote-echo" nil)
 -      ;; We mark the command string that it can be erased in the output buffer.
 -      (tramp-set-connection-property p "check-remote-echo" t)
 -      (setq command (format "%s%s%s" tramp-echo-mark command tramp-echo-mark)))
 -    (tramp-message vec 6 "%s" command)
 -    (tramp-send-string vec command)
 -    (unless nooutput (tramp-wait-for-output p))))
 -
 -(defun tramp-wait-for-output (proc &optional timeout)
 -  "Wait for output from remote command."
 -  (unless (buffer-live-p (process-buffer proc))
 -    (delete-process proc)
 -    (tramp-error proc 'file-error "Process `%s' not available, try again" proc))
 -  (with-current-buffer (process-buffer proc)
 -    (let* (;; Initially, `tramp-end-of-output' is "#$ ".  There might
 -         ;; be leading escape sequences, which must be ignored.
 -         (regexp (format "[^#$\n]*%s\r?$" (regexp-quote tramp-end-of-output)))
 -         ;; Sometimes, the commands do not return a newline but a
 -         ;; null byte before the shell prompt, for example "git
 -         ;; ls-files -c -z ...".
 -         (regexp1 (format "\\(^\\|\000\\)%s" regexp))
 -         (found (tramp-wait-for-regexp proc timeout regexp1)))
 -      (if found
 -        (let (buffer-read-only)
 -          ;; A simple-minded busybox has sent " ^H" sequences.
 -          ;; Delete them.
 -          (goto-char (point-min))
 -          (when (re-search-forward
 -                 "^\\(.\b\\)+$" (tramp-compat-line-end-position) t)
 -            (forward-line 1)
 -            (delete-region (point-min) (point)))
 -          ;; Delete the prompt.
 -          (goto-char (point-max))
 -          (re-search-backward regexp nil t)
 -          (delete-region (point) (point-max)))
 -      (if timeout
 -          (tramp-error
 -           proc 'file-error
 -           "[[Remote prompt `%s' not found in %d secs]]"
 -           tramp-end-of-output timeout)
 -        (tramp-error
 -         proc 'file-error
 -         "[[Remote prompt `%s' not found]]" tramp-end-of-output)))
 -      ;; Return value is whether end-of-output sentinel was found.
 -      found)))
 -
 -(defun tramp-send-command-and-check
 -  (vec command &optional subshell dont-suppress-err)
 -  "Run COMMAND and check its exit status.
 -Sends `echo $?' along with the COMMAND for checking the exit status.  If
 -COMMAND is nil, just sends `echo $?'.  Returns the exit status found.
 -
 -If the optional argument SUBSHELL is non-nil, the command is
 -executed in a subshell, ie surrounded by parentheses.  If
 -DONT-SUPPRESS-ERR is non-nil, stderr won't be sent to /dev/null."
 -  (tramp-send-command
 -   vec
 -   (concat (if subshell "( " "")
 -         command
 -         (if command (if dont-suppress-err "; " " 2>/dev/null; ") "")
 -         "echo tramp_exit_status $?"
 -         (if subshell " )" "")))
 -  (with-current-buffer (tramp-get-connection-buffer vec)
 -    (goto-char (point-max))
 -    (unless (re-search-backward "tramp_exit_status [0-9]+" nil t)
 -      (tramp-error
 -       vec 'file-error "Couldn't find exit status of `%s'" command))
 -    (skip-chars-forward "^ ")
 -    (prog1
 -     (read (current-buffer))
 -     (let (buffer-read-only) (delete-region (match-beginning 0) (point-max))))))
 -
 -(defun tramp-barf-unless-okay (vec command fmt &rest args)
 -  "Run COMMAND, check exit status, throw error if exit status not okay.
 -Similar to `tramp-send-command-and-check' but accepts two more arguments
 -FMT and ARGS which are passed to `error'."
 -  (unless (zerop (tramp-send-command-and-check vec command))
 -    (apply 'tramp-error vec 'file-error fmt args)))
 -
 -(defun tramp-send-command-and-read (vec command)
 -  "Run COMMAND and return the output, which must be a Lisp expression.
 -In case there is no valid Lisp expression, it raises an error"
 -  (tramp-barf-unless-okay vec command "`%s' returns with error" command)
 -  (with-current-buffer (tramp-get-connection-buffer vec)
 -    ;; Read the expression.
 -    (goto-char (point-min))
 -    (condition-case nil
 -      (prog1 (read (current-buffer))
 -        ;; Error handling.
 -        (when (re-search-forward "\\S-" (tramp-compat-line-end-position) t)
 -          (error nil)))
 -      (error (tramp-error
 -            vec 'file-error
 -            "`%s' does not return a valid Lisp expression: `%s'"
 -            command (buffer-string))))))
 -
  ;; It seems that Tru64 Unix does not like it if long strings are sent
  ;; to it in one go.  (This happens when sending the Perl
  ;; `file-attributes' implementation, for instance.)  Therefore, we
@@@ -3230,56 -7801,6 +3229,56 @@@ the remote host use line-endings as def
              (setq pos (+ pos chunksize))))
        (process-send-string p string)))))
  
 +(defun tramp-get-inode (vec)
 +  "Returns the virtual inode number.
 +If it doesn't exist, generate a new one."
 +  (let ((string (tramp-make-tramp-file-name
 +               (tramp-file-name-method vec)
 +               (tramp-file-name-user vec)
 +               (tramp-file-name-host vec)
 +               "")))
 +    (unless (assoc string tramp-inodes)
 +      (add-to-list 'tramp-inodes
 +                 (list string (length tramp-inodes))))
 +    (nth 1 (assoc string tramp-inodes))))
 +
 +(defun tramp-get-device (vec)
 +  "Returns the virtual device number.
 +If it doesn't exist, generate a new one."
 +  (let ((string (tramp-make-tramp-file-name
 +               (tramp-file-name-method vec)
 +               (tramp-file-name-user vec)
 +               (tramp-file-name-host vec)
 +               "")))
 +    (unless (assoc string tramp-devices)
 +      (add-to-list 'tramp-devices
 +                 (list string (length tramp-devices))))
 +    (cons -1 (nth 1 (assoc string tramp-devices)))))
 +
 +(defun tramp-equal-remote (file1 file2)
 +  "Check, whether the remote parts of FILE1 and FILE2 are identical.
 +The check depends on method, user and host name of the files.  If
 +one of the components is missing, the default values are used.
 +The local file name parts of FILE1 and FILE2 are not taken into
 +account.
 +
 +Example:
 +
 +  (tramp-equal-remote \"/ssh::/etc\" \"/<your host name>:/home\")
 +
 +would yield `t'.  On the other hand, the following check results in nil:
 +
 +  (tramp-equal-remote \"/sudo::/etc\" \"/su::/etc\")"
 +  (and (stringp (file-remote-p file1))
 +       (stringp (file-remote-p file2))
 +       (string-equal (file-remote-p file1) (file-remote-p file2))))
 +
 +(defun tramp-get-method-parameter (method param)
 +  "Return the method parameter PARAM.
 +If the `tramp-methods' entry does not exist, return nil."
 +  (let ((entry (assoc param (assoc method tramp-methods))))
 +    (when entry (cadr entry))))
 +
  (defun tramp-mode-string-to-int (mode-string)
    "Converts a ten-letter `drwxrwxrwx'-style mode string into mode bits."
    (let* (case-fold-search
      (save-match-data
        (logior
         (cond
 -      ((char-equal owner-read ?r) (tramp-octal-to-decimal "00400"))
 +      ((char-equal owner-read ?r) (tramp-compat-octal-to-decimal "00400"))
        ((char-equal owner-read ?-) 0)
        (t (error "Second char `%c' must be one of `r-'" owner-read)))
         (cond
 -      ((char-equal owner-write ?w) (tramp-octal-to-decimal "00200"))
 +      ((char-equal owner-write ?w) (tramp-compat-octal-to-decimal "00200"))
        ((char-equal owner-write ?-) 0)
        (t (error "Third char `%c' must be one of `w-'" owner-write)))
         (cond
        ((char-equal owner-execute-or-setid ?x)
 -       (tramp-octal-to-decimal "00100"))
 +       (tramp-compat-octal-to-decimal "00100"))
        ((char-equal owner-execute-or-setid ?S)
 -       (tramp-octal-to-decimal "04000"))
 +       (tramp-compat-octal-to-decimal "04000"))
        ((char-equal owner-execute-or-setid ?s)
 -       (tramp-octal-to-decimal "04100"))
 +       (tramp-compat-octal-to-decimal "04100"))
        ((char-equal owner-execute-or-setid ?-) 0)
        (t (error "Fourth char `%c' must be one of `xsS-'"
                  owner-execute-or-setid)))
         (cond
 -      ((char-equal group-read ?r) (tramp-octal-to-decimal "00040"))
 +      ((char-equal group-read ?r) (tramp-compat-octal-to-decimal "00040"))
        ((char-equal group-read ?-) 0)
        (t (error "Fifth char `%c' must be one of `r-'" group-read)))
         (cond
 -      ((char-equal group-write ?w) (tramp-octal-to-decimal "00020"))
 +      ((char-equal group-write ?w) (tramp-compat-octal-to-decimal "00020"))
        ((char-equal group-write ?-) 0)
        (t (error "Sixth char `%c' must be one of `w-'" group-write)))
         (cond
        ((char-equal group-execute-or-setid ?x)
 -       (tramp-octal-to-decimal "00010"))
 +       (tramp-compat-octal-to-decimal "00010"))
        ((char-equal group-execute-or-setid ?S)
 -       (tramp-octal-to-decimal "02000"))
 +       (tramp-compat-octal-to-decimal "02000"))
        ((char-equal group-execute-or-setid ?s)
 -       (tramp-octal-to-decimal "02010"))
 +       (tramp-compat-octal-to-decimal "02010"))
        ((char-equal group-execute-or-setid ?-) 0)
        (t (error "Seventh char `%c' must be one of `xsS-'"
                  group-execute-or-setid)))
         (cond
        ((char-equal other-read ?r)
 -       (tramp-octal-to-decimal "00004"))
 +       (tramp-compat-octal-to-decimal "00004"))
        ((char-equal other-read ?-) 0)
        (t (error "Eighth char `%c' must be one of `r-'" other-read)))
         (cond
 -         ((char-equal other-write ?w) (tramp-octal-to-decimal "00002"))
 +         ((char-equal other-write ?w) (tramp-compat-octal-to-decimal "00002"))
         ((char-equal other-write ?-) 0)
           (t (error "Nineth char `%c' must be one of `w-'" other-write)))
         (cond
        ((char-equal other-execute-or-sticky ?x)
 -       (tramp-octal-to-decimal "00001"))
 +       (tramp-compat-octal-to-decimal "00001"))
        ((char-equal other-execute-or-sticky ?T)
 -       (tramp-octal-to-decimal "01000"))
 +       (tramp-compat-octal-to-decimal "01000"))
        ((char-equal other-execute-or-sticky ?t)
 -       (tramp-octal-to-decimal "01001"))
 +       (tramp-compat-octal-to-decimal "01001"))
        ((char-equal other-execute-or-sticky ?-) 0)
        (t (error "Tenth char `%c' must be one of `xtT-'"
                  other-execute-or-sticky)))))))
  
 -(defun tramp-convert-file-attributes (vec attr)
 -  "Convert file-attributes ATTR generated by perl script, stat or ls.
 -Convert file mode bits to string and set virtual device number.
 -Return ATTR."
 -  (when attr
 -    ;; Convert last access time.
 -    (unless (listp (nth 4 attr))
 -      (setcar (nthcdr 4 attr)
 -              (list (floor (nth 4 attr) 65536)
 -                    (floor (mod (nth 4 attr) 65536)))))
 -    ;; Convert last modification time.
 -    (unless (listp (nth 5 attr))
 -      (setcar (nthcdr 5 attr)
 -              (list (floor (nth 5 attr) 65536)
 -                    (floor (mod (nth 5 attr) 65536)))))
 -    ;; Convert last status change time.
 -    (unless (listp (nth 6 attr))
 -      (setcar (nthcdr 6 attr)
 -              (list (floor (nth 6 attr) 65536)
 -                    (floor (mod (nth 6 attr) 65536)))))
 -    ;; Convert file size.
 -    (when (< (nth 7 attr) 0)
 -      (setcar (nthcdr 7 attr) -1))
 -    (when (and (floatp (nth 7 attr))
 -               (<= (nth 7 attr) (tramp-compat-most-positive-fixnum)))
 -      (setcar (nthcdr 7 attr) (round (nth 7 attr))))
 -    ;; Convert file mode bits to string.
 -    (unless (stringp (nth 8 attr))
 -      (setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr)))
 -      (when (stringp (car attr))
 -        (aset (nth 8 attr) 0 ?l)))
 -    ;; Convert directory indication bit.
 -    (when (string-match "^d" (nth 8 attr))
 -      (setcar attr t))
 -    ;; Convert symlink from `tramp-do-file-attributes-with-stat'.
 -    (when (consp (car attr))
 -      (if (and (stringp (caar attr))
 -               (string-match ".+ -> .\\(.+\\)." (caar attr)))
 -          (setcar attr (match-string 1 (caar attr)))
 -        (setcar attr nil)))
 -    ;; Set file's gid change bit.
 -    (setcar (nthcdr 9 attr)
 -            (if (numberp (nth 3 attr))
 -                (not (= (nth 3 attr)
 -                        (tramp-get-remote-gid vec 'integer)))
 -              (not (string-equal
 -                    (nth 3 attr)
 -                    (tramp-get-remote-gid vec 'string)))))
 -    ;; Convert inode.
 -    (unless (listp (nth 10 attr))
 -      (setcar (nthcdr 10 attr)
 -              (condition-case nil
 -                  (cons (floor (nth 10 attr) 65536)
 -                        (floor (mod (nth 10 attr) 65536)))
 -                ;; Inodes can be incredible huge.  We must hide this.
 -                (error (tramp-get-inode vec)))))
 -    ;; Set virtual device number.
 -    (setcar (nthcdr 11 attr)
 -            (tramp-get-device vec))
 -    attr))
 -
 -(defun tramp-check-cached-permissions (vec access)
 -  "Check `file-attributes' caches for VEC.
 -Return t if according to the cache access type ACCESS is known to
 -be granted."
 -  (let ((result nil)
 -        (offset (cond
 -                 ((eq ?r access) 1)
 -                 ((eq ?w access) 2)
 -                 ((eq ?x access) 3))))
 -    (dolist (suffix '("string" "integer") result)
 -      (setq
 -       result
 -       (or
 -        result
 -        (let ((file-attr
 -               (tramp-get-file-property
 -                vec (tramp-file-name-localname vec)
 -                (concat "file-attributes-" suffix) nil))
 -              (remote-uid
 -               (tramp-get-connection-property
 -                vec (concat "uid-" suffix) nil))
 -              (remote-gid
 -               (tramp-get-connection-property
 -                vec (concat "gid-" suffix) nil)))
 -          (and
 -           file-attr
 -           (or
 -            ;; Not a symlink
 -            (eq t (car file-attr))
 -            (null (car file-attr)))
 -           (or
 -            ;; World accessible.
 -            (eq access (aref (nth 8 file-attr) (+ offset 6)))
 -            ;; User accessible and owned by user.
 -            (and
 -             (eq access (aref (nth 8 file-attr) offset))
 -             (equal remote-uid (nth 2 file-attr)))
 -            ;; Group accessible and owned by user's
 -            ;; principal group.
 -            (and
 -             (eq access (aref (nth 8 file-attr) (+ offset 3)))
 -             (equal remote-gid (nth 3 file-attr)))))))))))
 -
 -(defun tramp-get-inode (vec)
 -  "Returns the virtual inode number.
 -If it doesn't exist, generate a new one."
 -  (let ((string (tramp-make-tramp-file-name
 -               (tramp-file-name-method vec)
 -               (tramp-file-name-user vec)
 -               (tramp-file-name-host vec)
 -               "")))
 -    (unless (assoc string tramp-inodes)
 -      (add-to-list 'tramp-inodes
 -                 (list string (length tramp-inodes))))
 -    (nth 1 (assoc string tramp-inodes))))
 -
 -(defun tramp-get-device (vec)
 -  "Returns the virtual device number.
 -If it doesn't exist, generate a new one."
 -  (let ((string (tramp-make-tramp-file-name
 -               (tramp-file-name-method vec)
 -               (tramp-file-name-user vec)
 -               (tramp-file-name-host vec)
 -               "")))
 -    (unless (assoc string tramp-devices)
 -      (add-to-list 'tramp-devices
 -                 (list string (length tramp-devices))))
 -    (cons -1 (nth 1 (assoc string tramp-devices)))))
 -
 -(defun tramp-file-mode-from-int (mode)
 -  "Turn an integer representing a file mode into an ls(1)-like string."
 -  (let ((type (cdr (assoc (logand (lsh mode -12) 15) tramp-file-mode-type-map)))
 -      (user   (logand (lsh mode -6) 7))
 -      (group  (logand (lsh mode -3) 7))
 -      (other  (logand (lsh mode -0) 7))
 -      (suid   (> (logand (lsh mode -9) 4) 0))
 -      (sgid   (> (logand (lsh mode -9) 2) 0))
 -      (sticky (> (logand (lsh mode -9) 1) 0)))
 -    (setq user  (tramp-file-mode-permissions user  suid "s"))
 -    (setq group (tramp-file-mode-permissions group sgid "s"))
 -    (setq other (tramp-file-mode-permissions other sticky "t"))
 -    (concat type user group other)))
 -
 -(defun tramp-file-mode-permissions (perm suid suid-text)
 -  "Convert a permission bitset into a string.
 -This is used internally by `tramp-file-mode-from-int'."
 -  (let ((r (> (logand perm 4) 0))
 -      (w (> (logand perm 2) 0))
 -      (x (> (logand perm 1) 0)))
 -    (concat (or (and r "r") "-")
 -          (or (and w "w") "-")
 -          (or (and suid x suid-text)  ; suid, execute
 -              (and suid (upcase suid-text)) ; suid, !execute
 -              (and x "x") "-"))))     ; !suid
 -
 -(defun tramp-decimal-to-octal (i)
 -  "Return a string consisting of the octal digits of I.
 -Not actually used.  Use `(format \"%o\" i)' instead?"
 -  (cond ((< i 0) (error "Cannot convert negative number to octal"))
 -        ((not (integerp i)) (error "Cannot convert non-integer to octal"))
 -        ((zerop i) "0")
 -        (t (concat (tramp-decimal-to-octal (/ i 8))
 -                   (number-to-string (% i 8))))))
 -
 -;; Kudos to Gerd Moellmann for this suggestion.
 -(defun tramp-octal-to-decimal (ostr)
 -  "Given a string of octal digits, return a decimal number."
 -  (let ((x (or ostr "")))
 -    ;; `save-match' is in `tramp-mode-string-to-int' which calls this.
 -    (unless (string-match "\\`[0-7]*\\'" x)
 -      (error "Non-octal junk in string `%s'" x))
 -    (string-to-number ostr 8)))
 -
 -(defun tramp-shell-case-fold (string)
 -  "Converts STRING to shell glob pattern which ignores case."
 -  (mapconcat
 -   (lambda (c)
 -     (if (equal (downcase c) (upcase c))
 -         (vector c)
 -       (format "[%c%c]" (downcase c) (upcase c))))
 -   string
 -   ""))
 -
 -
 -;; ------------------------------------------------------------
 -;; -- Tramp file names --
 -;; ------------------------------------------------------------
 -;; Conversion functions between external representation and
 -;; internal data structure.  Convenience functions for internal
 -;; data structure.
 -
 -(defun tramp-file-name-p (vec)
 -  "Check, whether VEC is a Tramp object."
 -  (and (vectorp vec) (= 4 (length vec))))
 -
 -(defun tramp-file-name-method (vec)
 -  "Return method component of VEC."
 -  (and (tramp-file-name-p vec) (aref vec 0)))
 -
 -(defun tramp-file-name-user (vec)
 -  "Return user component of VEC."
 -  (and (tramp-file-name-p vec) (aref vec 1)))
 -
 -(defun tramp-file-name-host (vec)
 -  "Return host component of VEC."
 -  (and (tramp-file-name-p vec) (aref vec 2)))
 -
 -(defun tramp-file-name-localname (vec)
 -  "Return localname component of VEC."
 -  (and (tramp-file-name-p vec) (aref vec 3)))
 -
 -;; The user part of a Tramp file name vector can be of kind
 -;; "user%domain".  Sometimes, we must extract these parts.
 -(defun tramp-file-name-real-user (vec)
 -  "Return the user name of VEC without domain."
 -  (save-match-data
 -    (let ((user (tramp-file-name-user vec)))
 -      (if (and (stringp user)
 -             (string-match tramp-user-with-domain-regexp user))
 -        (match-string 1 user)
 -      user))))
 -
 -(defun tramp-file-name-domain (vec)
 -  "Return the domain name of VEC."
 -  (save-match-data
 -    (let ((user (tramp-file-name-user vec)))
 -      (and (stringp user)
 -         (string-match tramp-user-with-domain-regexp user)
 -         (match-string 2 user)))))
 -
 -;; The host part of a Tramp file name vector can be of kind
 -;; "host#port".  Sometimes, we must extract these parts.
 -(defun tramp-file-name-real-host (vec)
 -  "Return the host name of VEC without port."
 -  (save-match-data
 -    (let ((host (tramp-file-name-host vec)))
 -      (if (and (stringp host)
 -             (string-match tramp-host-with-port-regexp host))
 -        (match-string 1 host)
 -      host))))
 -
 -(defun tramp-file-name-port (vec)
 -  "Return the port number of VEC."
 -  (save-match-data
 -    (let ((host (tramp-file-name-host vec)))
 -      (and (stringp host)
 -         (string-match tramp-host-with-port-regexp host)
 -         (string-to-number (match-string 2 host))))))
 -
 -(defun tramp-tramp-file-p (name)
 -  "Return t if NAME is a string with Tramp file name syntax."
 -  (save-match-data
 -    (and (stringp name) (string-match tramp-file-name-regexp name))))
 -
 -(defun tramp-find-method (method user host)
 -  "Return the right method string to use.
 -This is METHOD, if non-nil. Otherwise, do a lookup in
 -`tramp-default-method-alist'."
 -  (or method
 -      (let ((choices tramp-default-method-alist)
 -          lmethod item)
 -      (while choices
 -        (setq item (pop choices))
 -        (when (and (string-match (or (nth 0 item) "") (or host ""))
 -                   (string-match (or (nth 1 item) "") (or user "")))
 -          (setq lmethod (nth 2 item))
 -          (setq choices nil)))
 -      lmethod)
 -      tramp-default-method))
 -
 -(defun tramp-find-user (method user host)
 -  "Return the right user string to use.
 -This is USER, if non-nil. Otherwise, do a lookup in
 -`tramp-default-user-alist'."
 -  (or user
 -      (let ((choices tramp-default-user-alist)
 -          luser item)
 -      (while choices
 -        (setq item (pop choices))
 -        (when (and (string-match (or (nth 0 item) "") (or method ""))
 -                   (string-match (or (nth 1 item) "") (or host "")))
 -          (setq luser (nth 2 item))
 -          (setq choices nil)))
 -      luser)
 -      tramp-default-user))
 -
 -(defun tramp-find-host (method user host)
 -  "Return the right host string to use.
 -This is HOST, if non-nil. Otherwise, it is `tramp-default-host'."
 -  (or (and (> (length host) 0) host)
 -      tramp-default-host))
 -
 -(defun tramp-dissect-file-name (name &optional nodefault)
 -  "Return a `tramp-file-name' structure.
 -The structure consists of remote method, remote user, remote host
 -and localname (file name on remote host).  If NODEFAULT is
 -non-nil, the file name parts are not expanded to their default
 -values."
 -  (save-match-data
 -    (let ((match (string-match (nth 0 tramp-file-name-structure) name)))
 -      (unless match (error "Not a Tramp file name: %s" name))
 -      (let ((method    (match-string (nth 1 tramp-file-name-structure) name))
 -          (user      (match-string (nth 2 tramp-file-name-structure) name))
 -          (host      (match-string (nth 3 tramp-file-name-structure) name))
 -          (localname (match-string (nth 4 tramp-file-name-structure) name)))
 -      (when (member method '("multi" "multiu"))
 -        (error
 -         "`%s' method is no longer supported, see (info \"(tramp)Multi-hops\")"
 -         method))
 -      (when host
 -        (when (string-match tramp-prefix-ipv6-regexp host)
 -          (setq host (replace-match "" nil t host)))
 -        (when (string-match tramp-postfix-ipv6-regexp host)
 -          (setq host (replace-match "" nil t host))))
 -      (if nodefault
 -          (vector method user host localname)
 -        (vector
 -         (tramp-find-method method user host)
 -         (tramp-find-user   method user host)
 -         (tramp-find-host   method user host)
 -         localname))))))
 -
 -(defun tramp-equal-remote (file1 file2)
 -  "Check, whether the remote parts of FILE1 and FILE2 are identical.
 -The check depends on method, user and host name of the files.  If
 -one of the components is missing, the default values are used.
 -The local file name parts of FILE1 and FILE2 are not taken into
 -account.
 -
 -Example:
 -
 -  (tramp-equal-remote \"/ssh::/etc\" \"/<your host name>:/home\")
 -
 -would yield `t'.  On the other hand, the following check results in nil:
 -
 -  (tramp-equal-remote \"/sudo::/etc\" \"/su::/etc\")"
 -  (and (stringp (file-remote-p file1))
 -       (stringp (file-remote-p file2))
 -       (string-equal (file-remote-p file1) (file-remote-p file2))))
 -
 -(defun tramp-make-tramp-file-name (method user host localname)
 -  "Constructs a Tramp file name from METHOD, USER, HOST and LOCALNAME."
 -  (concat tramp-prefix-format
 -        (when (not (zerop (length method)))
 -          (concat method tramp-postfix-method-format))
 -        (when (not (zerop (length user)))
 -          (concat user tramp-postfix-user-format))
 -        (when host
 -          (if (string-match tramp-ipv6-regexp host)
 -              (concat tramp-prefix-ipv6-format host tramp-postfix-ipv6-format)
 -            host))
 -        tramp-postfix-host-format
 -        (when localname localname)))
 -
 -(defun tramp-completion-make-tramp-file-name (method user host localname)
 -  "Constructs a Tramp file name from METHOD, USER, HOST and LOCALNAME.
 -It must not be a complete Tramp file name, but as long as there are
 -necessary only.  This function will be used in file name completion."
 -  (concat tramp-prefix-format
 -        (when (not (zerop (length method)))
 -          (concat method tramp-postfix-method-format))
 -        (when (not (zerop (length user)))
 -          (concat user tramp-postfix-user-format))
 -        (when (not (zerop (length host)))
 -          (concat
 -           (if (string-match tramp-ipv6-regexp host)
 -               (concat tramp-prefix-ipv6-format host tramp-postfix-ipv6-format)
 -             host)
 -           tramp-postfix-host-format))
 -        (when localname localname)))
 -
 -(defun tramp-make-copy-program-file-name (vec)
 -  "Create a file name suitable to be passed to `rcp' and workalikes."
 -  (let ((user (tramp-file-name-user vec))
 -      (host (tramp-file-name-real-host vec))
 -      (localname (tramp-shell-quote-argument
 -                  (tramp-file-name-localname vec))))
 -    (if (not (zerop (length user)))
 -        (format "%s@%s:%s" user host localname)
 -      (format "%s:%s" host localname))))
 -
 -(defun tramp-method-out-of-band-p (vec size)
 -  "Return t if this is an out-of-band method, nil otherwise."
 -  (and
 -   ;; It shall be an out-of-band method.
 -   (tramp-get-method-parameter (tramp-file-name-method vec) 'tramp-copy-program)
 -   ;; Either the file size is large enough, or (in rare cases) there
 -   ;; does not exist a remote encoding.
 -   (or (null tramp-copy-size-limit)
 -       (> size tramp-copy-size-limit)
 -       (null (tramp-get-inline-coding vec "remote-encoding" size)))))
 -
  (defun tramp-local-host-p (vec)
    "Return t if this points to the local host, nil otherwise."
    ;; We cannot use `tramp-file-name-real-host'.  A port is an
         (tramp-compat-temporary-file-directory)))
       ;; On some systems, chown runs only for root.
       (or (zerop (user-uid))
 -       (zerop (tramp-get-remote-uid vec 'integer))))))
 -
 -;; Variables local to connection.
 -
 -(defun tramp-get-remote-path (vec)
 -  (with-connection-property
 -      ;; When `tramp-own-remote-path' is in `tramp-remote-path', we
 -      ;; cache the result for the session only.  Otherwise, the result
 -      ;; is cached persistently.
 -      (if (memq 'tramp-own-remote-path tramp-remote-path)
 -        (tramp-get-connection-process vec)
 -      vec)
 -      "remote-path"
 -    (let* ((remote-path (copy-tree tramp-remote-path))
 -         (elt1 (memq 'tramp-default-remote-path remote-path))
 -         (elt2 (memq 'tramp-own-remote-path remote-path))
 -         (default-remote-path
 -           (when elt1
 -             (condition-case nil
 -                 (tramp-send-command-and-read
 -                  vec "echo \\\"`getconf PATH`\\\"")
 -               ;; Default if "getconf" is not available.
 -               (error
 -                (tramp-message
 -                 vec 3
 -                 "`getconf PATH' not successful, using default value \"%s\"."
 -                 "/bin:/usr/bin")
 -                "/bin:/usr/bin"))))
 -         (own-remote-path
 -           (when elt2
 -             (condition-case nil
 -                 (tramp-send-command-and-read vec "echo \\\"$PATH\\\"")
 -               ;; Default if "getconf" is not available.
 -               (error
 -                (tramp-message
 -                 vec 3 "$PATH not set, ignoring `tramp-own-remote-path'.")
 -                nil)))))
 -
 -      ;; Replace place holder `tramp-default-remote-path'.
 -      (when elt1
 -      (setcdr elt1
 -              (append
 -               (tramp-compat-split-string default-remote-path ":")
 -               (cdr elt1)))
 -      (setq remote-path (delq 'tramp-default-remote-path remote-path)))
 -
 -      ;; Replace place holder `tramp-own-remote-path'.
 -      (when elt2
 -      (setcdr elt2
 -              (append
 -               (tramp-compat-split-string own-remote-path ":")
 -               (cdr elt2)))
 -      (setq remote-path (delq 'tramp-own-remote-path remote-path)))
 +       ;; This is defined in tramp-sh.el.  Let's assume this is
 +       ;; loaded already.
 +       (zerop (tramp-compat-funcall 'tramp-get-remote-uid vec 'integer))))))
  
 -      ;; Remove double entries.
 -      (setq elt1 remote-path)
 -      (while (consp elt1)
 -      (while (and (car elt1) (setq elt2 (member (car elt1) (cdr elt1))))
 -        (setcar elt2 nil))
 -      (setq elt1 (cdr elt1)))
 -
 -      ;; Remove non-existing directories.
 -      (delq
 -       nil
 -       (mapcar
 -      (lambda (x)
 -        (and
 -         (stringp x)
 -         (file-directory-p
 -          (tramp-make-tramp-file-name
 -           (tramp-file-name-method vec)
 -           (tramp-file-name-user vec)
 -           (tramp-file-name-host vec)
 -           x))
 -         x))
 -      remote-path)))))
 -
 -(defun tramp-get-remote-tmpdir (vec)
 -  (with-connection-property vec "tmp-directory"
 -    (let ((dir (tramp-shell-quote-argument "/tmp")))
 -      (if (and (zerop
 -              (tramp-send-command-and-check
 -               vec (format "%s -d %s" (tramp-get-test-command vec) dir)))
 -             (zerop
 -              (tramp-send-command-and-check
 -               vec (format "%s -w %s" (tramp-get-test-command vec) dir))))
 -        dir
 -      (tramp-error vec 'file-error "Directory %s not accessible" dir)))))
 -
 -(defun tramp-get-ls-command (vec)
 -  (with-connection-property vec "ls"
 -    (tramp-message vec 5 "Finding a suitable `ls' command")
 -    (or
 -     (catch 'ls-found
 -       (dolist (cmd '("ls" "gnuls" "gls"))
 -       (let ((dl (tramp-get-remote-path vec))
 -             result)
 -         (while (and dl (setq result (tramp-find-executable vec cmd dl t t)))
 -           ;; Check parameters.  On busybox, "ls" output coloring is
 -           ;; enabled by default sometimes.  So we try to disable it
 -           ;; when possible.  $LS_COLORING is not supported there.
 -           ;; Some "ls" versions are sensible wrt the order of
 -           ;; arguments, they fail when "-al" is after the
 -           ;; "--color=never" argument (for example on FreeBSD).
 -           (when (zerop (tramp-send-command-and-check
 -                         vec (format "%s -lnd /" result)))
 -             (when (zerop (tramp-send-command-and-check
 -                           vec (format
 -                                "%s --color=never -al /dev/null" result)))
 -               (setq result (concat result " --color=never")))
 -             (throw 'ls-found result))
 -           (setq dl (cdr dl))))))
 -     (tramp-error vec 'file-error "Couldn't find a proper `ls' command"))))
 -
 -(defun tramp-get-ls-command-with-dired (vec)
 -  (save-match-data
 -    (with-connection-property vec "ls-dired"
 -      (tramp-message vec 5 "Checking, whether `ls --dired' works")
 -      ;; Some "ls" versions are sensible wrt the order of arguments,
 -      ;; they fail when "-al" is after the "--dired" argument (for
 -      ;; example on FreeBSD).
 -      (zerop (tramp-send-command-and-check
 -            vec (format "%s --dired -al /dev/null"
 -                        (tramp-get-ls-command vec)))))))
 -
 -(defun tramp-get-test-command (vec)
 -  (with-connection-property vec "test"
 -    (tramp-message vec 5 "Finding a suitable `test' command")
 -    (if (zerop (tramp-send-command-and-check vec "test 0"))
 -      "test"
 -      (tramp-find-executable vec "test" (tramp-get-remote-path vec)))))
 -
 -(defun tramp-get-test-nt-command (vec)
 -  ;; Does `test A -nt B' work?  Use abominable `find' construct if it
 -  ;; doesn't.  BSD/OS 4.0 wants the parentheses around the command,
 -  ;; for otherwise the shell crashes.
 -  (with-connection-property vec "test-nt"
 -    (or
 -     (progn
 -       (tramp-send-command
 -      vec (format "( %s / -nt / )" (tramp-get-test-command vec)))
 -       (with-current-buffer (tramp-get-buffer vec)
 -       (goto-char (point-min))
 -       (when (looking-at (regexp-quote tramp-end-of-output))
 -         (format "%s %%s -nt %%s" (tramp-get-test-command vec)))))
 -     (progn
 -       (tramp-send-command
 -      vec
 -      (format
 -       "tramp_test_nt () {\n%s -n \"`find $1 -prune -newer $2 -print`\"\n}"
 -       (tramp-get-test-command vec)))
 -       "tramp_test_nt %s %s"))))
 -
 -(defun tramp-get-file-exists-command (vec)
 -  (with-connection-property vec "file-exists"
 -    (tramp-message vec 5 "Finding command to check if file exists")
 -    (tramp-find-file-exists-command vec)))
 -
 -(defun tramp-get-remote-ln (vec)
 -  (with-connection-property vec "ln"
 -    (tramp-message vec 5 "Finding a suitable `ln' command")
 -    (tramp-find-executable vec "ln" (tramp-get-remote-path vec))))
 -
 -(defun tramp-get-remote-perl (vec)
 -  (with-connection-property vec "perl"
 -    (tramp-message vec 5 "Finding a suitable `perl' command")
 -    (let ((result
 -         (or (tramp-find-executable vec "perl5" (tramp-get-remote-path vec))
 -             (tramp-find-executable
 -              vec "perl" (tramp-get-remote-path vec)))))
 -      ;; We must check also for some Perl modules.
 -      (when result
 -      (with-connection-property vec "perl-file-spec"
 -        (zerop
 -         (tramp-send-command-and-check
 -          vec (format "%s -e 'use File::Spec;'" result))))
 -      (with-connection-property vec "perl-cwd-realpath"
 -        (zerop
 -         (tramp-send-command-and-check
 -          vec (format "%s -e 'use Cwd \"realpath\";'" result)))))
 -      result)))
 -
 -(defun tramp-get-remote-stat (vec)
 -  (with-connection-property vec "stat"
 -    (tramp-message vec 5 "Finding a suitable `stat' command")
 -    (let ((result (tramp-find-executable
 -                 vec "stat" (tramp-get-remote-path vec)))
 -        tmp)
 -      ;; Check whether stat(1) returns usable syntax.  %s does not
 -      ;; work on older AIX systems.
 -      (when result
 -      (setq tmp
 -            ;; We don't want to display an error message.
 -            (with-temp-message (or (current-message) "")
 -              (condition-case nil
 -                  (tramp-send-command-and-read
 -                   vec (format "%s -c '(\"%%N\" %%s)' /" result))
 -                (error nil))))
 -      (unless (and (listp tmp) (stringp (car tmp))
 -                   (string-match "^./.$" (car tmp))
 -                   (integerp (cadr tmp)))
 -        (setq result nil)))
 -      result)))
 -
 -(defun tramp-get-remote-readlink (vec)
 -  (with-connection-property vec "readlink"
 -    (tramp-message vec 5 "Finding a suitable `readlink' command")
 -    (let ((result (tramp-find-executable
 -                 vec "readlink" (tramp-get-remote-path vec))))
 -      (when (and result
 -               ;; We don't want to display an error message.
 -               (with-temp-message (or (current-message) "")
 -                 (condition-case nil
 -                     (zerop
 -                      (tramp-send-command-and-check
 -                       vec (format "%s --canonicalize-missing /" result)))
 -                   (error nil))))
 -      result))))
 +(defun tramp-make-tramp-temp-file (vec)
 +  "Create a temporary file on the remote host identified by VEC.
 +Return the local name of the temporary file."
 +  (let ((prefix
 +       (tramp-make-tramp-file-name
 +        (tramp-file-name-method vec)
 +        (tramp-file-name-user vec)
 +        (tramp-file-name-host vec)
 +        (tramp-drop-volume-letter
 +         (expand-file-name
 +          tramp-temp-name-prefix
 +          ;; This is defined in tramp-sh.el.  Let's assume this is
 +          ;; loaded already.
 +          (tramp-compat-funcall 'tramp-get-remote-tmpdir vec)))))
 +      result)
 +    (while (not result)
 +      ;; `make-temp-file' would be the natural choice for
 +      ;; implementation.  But it calls `write-region' internally,
 +      ;; which also needs a temporary file - we would end in an
 +      ;; infinite loop.
 +      (setq result (make-temp-name prefix))
 +      (if (file-exists-p result)
 +        (setq result nil)
 +      ;; This creates the file by side effect.
 +      (set-file-times result)
 +      (set-file-modes result (tramp-compat-octal-to-decimal "0700"))))
  
 -(defun tramp-get-remote-trash (vec)
 -  (with-connection-property vec "trash"
 -    (tramp-message vec 5 "Finding a suitable `trash' command")
 -    (tramp-find-executable vec "trash" (tramp-get-remote-path vec))))
 -
 -(defun tramp-get-remote-id (vec)
 -  (with-connection-property vec "id"
 -    (tramp-message vec 5 "Finding POSIX `id' command")
 -    (or
 -     (catch 'id-found
 -       (let ((dl (tramp-get-remote-path vec))
 -           result)
 -       (while (and dl (setq result (tramp-find-executable vec "id" dl t t)))
 -         ;; Check POSIX parameter.
 -         (when (zerop (tramp-send-command-and-check
 -                       vec (format "%s -u" result)))
 -           (throw 'id-found result))
 -         (setq dl (cdr dl)))))
 -     (tramp-error vec 'file-error "Couldn't find a POSIX `id' command"))))
 -
 -(defun tramp-get-remote-uid (vec id-format)
 -  (with-connection-property vec (format "uid-%s" id-format)
 -    (let ((res (tramp-send-command-and-read
 -              vec
 -              (format "%s -u%s %s"
 -                      (tramp-get-remote-id vec)
 -                      (if (equal id-format 'integer) "" "n")
 -                      (if (equal id-format 'integer)
 -                          "" "| sed -e s/^/\\\"/ -e s/\$/\\\"/")))))
 -      ;; The command might not always return a number.
 -      (if (and (equal id-format 'integer) (not (integerp res))) -1 res))))
 -
 -(defun tramp-get-remote-gid (vec id-format)
 -  (with-connection-property vec (format "gid-%s" id-format)
 -    (let ((res (tramp-send-command-and-read
 -              vec
 -              (format "%s -g%s %s"
 -                      (tramp-get-remote-id vec)
 -                      (if (equal id-format 'integer) "" "n")
 -                      (if (equal id-format 'integer)
 -                          "" "| sed -e s/^/\\\"/ -e s/\$/\\\"/")))))
 -      ;; The command might not always return a number.
 -      (if (and (equal id-format 'integer) (not (integerp res))) -1 res))))
 -
 -(defun tramp-get-local-uid (id-format)
 -  (if (equal id-format 'integer) (user-uid) (user-login-name)))
 -
 -(defun tramp-get-local-gid (id-format)
 -  (nth 3 (tramp-compat-file-attributes "~/" id-format)))
 -
 -;; Some predefined connection properties.
 -(defun tramp-get-inline-compress (vec prop size)
 -  "Return the compress command related to PROP.
 -PROP is either `inline-compress' or `inline-decompress'. SIZE is
 -the length of the file to be compressed.
 -
 -If no corresponding command is found, nil is returned."
 -  (when (and (integerp tramp-inline-compress-start-size)
 -           (> size tramp-inline-compress-start-size))
 -    (with-connection-property vec prop
 -      (tramp-find-inline-compress vec)
 -      (tramp-get-connection-property vec prop nil))))
 -
 -(defun tramp-get-inline-coding (vec prop size)
 -  "Return the coding command related to PROP.
 -PROP is either `remote-encoding', `remode-decoding',
 -`local-encoding' or `local-decoding'.
 -
 -SIZE is the length of the file to be coded.  Depending on SIZE,
 -compression might be applied.
 -
 -If no corresponding command is found, nil is returned.
 -Otherwise, either a string is returned which contains a `%s' mark
 -to be used for the respective input or output file; or a Lisp
 -function cell is returned to be applied on a buffer."
 -  ;; We must catch the errors, because we want to return `nil', when
 -  ;; no inline coding is found.
 -  (ignore-errors
 -    (let ((coding
 -         (with-connection-property vec prop
 -           (tramp-find-inline-encoding vec)
 -           (tramp-get-connection-property vec prop nil)))
 -        (prop1 (if (string-match "encoding" prop)
 -                   "inline-compress" "inline-decompress"))
 -        compress)
 -      ;; The connection property might have been cached.  So we must
 -      ;; send the script to the remote side - maybe.
 -      (when (and coding (symbolp coding) (string-match "remote" prop))
 -      (let ((name (symbol-name coding)))
 -        (while (string-match (regexp-quote "-") name)
 -          (setq name (replace-match "_" nil t name)))
 -        (tramp-maybe-send-script vec (symbol-value coding) name)
 -        (setq coding name)))
 -      (when coding
 -      ;; Check for the `compress' command.
 -      (setq compress (tramp-get-inline-compress vec prop1 size))
 -      ;; Return the value.
 -      (cond
 -       ((and compress (symbolp coding))
 -        (if (string-match "decompress" prop1)
 -            `(lambda (beg end)
 -               (,coding beg end)
 -               (let ((coding-system-for-write 'binary)
 -                     (coding-system-for-read 'binary))
 -                 (apply
 -                  'call-process-region (point-min) (point-max)
 -                  (car (split-string ,compress)) t t nil
 -                  (cdr (split-string ,compress)))))
 -          `(lambda (beg end)
 -             (let ((coding-system-for-write 'binary)
 -                   (coding-system-for-read 'binary))
 -               (apply
 -                'call-process-region beg end
 -                (car (split-string ,compress)) t t nil
 -                (cdr (split-string ,compress))))
 -             (,coding (point-min) (point-max)))))
 -       ((symbolp coding)
 -        coding)
 -       ((and compress (string-match "decoding" prop))
 -        (format "(%s | %s >%%s)" coding compress))
 -       (compress
 -        (format "(%s <%%s | %s)" compress coding))
 -       ((string-match "decoding" prop)
 -        (format "%s >%%s" coding))
 -       (t
 -        (format "%s <%%s" coding)))))))
 +    ;; Return the local part.
 +    (with-parsed-tramp-file-name result nil localname)))
  
 -(defun tramp-get-method-parameter (method param)
 -  "Return the method parameter PARAM.
 -If the `tramp-methods' entry does not exist, return nil."
 -  (let ((entry (assoc param (assoc method tramp-methods))))
 -    (when entry (cadr entry))))
 +(defun tramp-delete-temp-file-function ()
 +  "Remove temporary files related to current buffer."
 +  (when (stringp tramp-temp-buffer-file-name)
 +    (ignore-errors (delete-file tramp-temp-buffer-file-name))))
  
 -;; Auto saving to a special directory.
 +(add-hook 'kill-buffer-hook 'tramp-delete-temp-file-function)
 +(add-hook 'tramp-cache-unload-hook
 +        (lambda ()
 +          (remove-hook 'kill-buffer-hook
 +                       'tramp-delete-temp-file-function)))
  
 -(defun tramp-exists-file-name-handler (operation &rest args)
 -  "Check, whether OPERATION runs a file name handler."
 -  ;; The file name handler is determined on base of either an
 -  ;; argument, `buffer-file-name', or `default-directory'.
 -  (condition-case nil
 -      (let* ((buffer-file-name "/")
 -           (default-directory "/")
 -           (fnha file-name-handler-alist)
 -           (check-file-name-operation operation)
 -           (file-name-handler-alist
 -            (list
 -             (cons "/"
 -                   (lambda (operation &rest args)
 -                     "Returns OPERATION if it is the one to be checked."
 -                     (if (equal check-file-name-operation operation)
 -                         operation
 -                       (let ((file-name-handler-alist fnha))
 -                         (apply operation args))))))))
 -      (equal (apply operation args) operation))
 -    (error nil)))
 +;;; Auto saving to a special directory:
  
  (unless (tramp-exists-file-name-handler 'make-auto-save-file-name)
    (defadvice make-auto-save-file-name
      (around tramp-advice-make-auto-save-file-name () activate)
 -    "Invoke `tramp-handle-make-auto-save-file-name' for Tramp files."
 +    "Invoke `tramp-*-handle-make-auto-save-file-name' for Tramp files."
      (if (tramp-tramp-file-p (buffer-file-name))
        ;; We cannot call `tramp-handle-make-auto-save-file-name'
        ;; directly, because this would bypass the locking mechanism.
        ;; Permissions should be set always, because there might be an old
        ;; auto-saved file belonging to another original file.  This could
        ;; be a security threat.
 -      (set-file-modes buffer-auto-save-file-name
 -                    (or (file-modes bfn) (tramp-octal-to-decimal "0600"))))))
 +      (set-file-modes
 +       buffer-auto-save-file-name
 +       (or (file-modes bfn) (tramp-compat-octal-to-decimal "0600"))))))
  
  (unless (and (featurep 'xemacs)
             (= emacs-major-version 21)
@@@ -3478,7 -8719,9 +3477,7 @@@ ALIST is of the form ((FROM . TO) ...).
          (setq alist (cdr alist))))
      string))
  
 -;; ------------------------------------------------------------
 -;; -- Compatibility functions section --
 -;; ------------------------------------------------------------
 +;;; Compatibility functions section:
  
  (defun tramp-read-passwd (proc &optional prompt)
    "Read a password from user (compat function).
@@@ -3557,6 -8800,7 +3556,6 @@@ Return the difference in the format of 
  (defun tramp-time-diff (t1 t2)
    "Return the difference between the two times, in seconds.
  T1 and T2 are time values (as returned by `current-time' for example)."
 -  ;; Pacify byte-compiler with `symbol-function'.
    (cond ((and (fboundp 'subtract-time)
              (fboundp 'float-time))
           (tramp-compat-funcall
              (cadr time)
              (/ (or (nth 2 time) 0) 1000000.0))))))
  
 -(defun tramp-coding-system-change-eol-conversion (coding-system eol-type)
 -  "Return a coding system like CODING-SYSTEM but with given EOL-TYPE.
 -EOL-TYPE can be one of `dos', `unix', or `mac'."
 -  (cond ((fboundp 'coding-system-change-eol-conversion)
 -         (tramp-compat-funcall
 -        'coding-system-change-eol-conversion coding-system eol-type))
 -        ((fboundp 'subsidiary-coding-system)
 -         (tramp-compat-funcall
 -        'subsidiary-coding-system coding-system
 -        (cond ((eq eol-type 'dos) 'crlf)
 -              ((eq eol-type 'unix) 'lf)
 -              ((eq eol-type 'mac) 'cr)
 -              (t
 -               (error "Unknown EOL-TYPE `%s', must be %s"
 -                      eol-type
 -                      "`dos', `unix', or `mac'")))))
 -        (t (error "Can't change EOL conversion -- is MULE missing?"))))
 -
 -(defun tramp-set-process-query-on-exit-flag (process flag)
 -  "Specify if query is needed for process when Emacs is exited.
 -If the second argument flag is non-nil, Emacs will query the user before
 -exiting if process is running."
 -  (if (fboundp 'set-process-query-on-exit-flag)
 -      (tramp-compat-funcall 'set-process-query-on-exit-flag process flag)
 -    (tramp-compat-funcall 'process-kill-without-query process flag)))
 -
 -
 -;; ------------------------------------------------------------
 -;; -- Kludges section --
 -;; ------------------------------------------------------------
 -
  ;; Currently (as of Emacs 20.5), the function `shell-quote-argument'
  ;; does not deal well with newline characters.  Newline is replaced by
  ;; backslash newline.  But if, say, the string `a backslash newline b'
  ;; CCC: This function should be rewritten so that
  ;; `shell-quote-argument' is not used.  This way, we are safe from
  ;; changes in `shell-quote-argument'.
 +;;;###tramp-autoload
  (defun tramp-shell-quote-argument (s)
    "Similar to `shell-quote-argument', but groks newlines.
  Only works for Bourne-like shells."
  (defun tramp-unload-tramp ()
    "Discard Tramp from loading remote files."
    (interactive)
 -  ;; When Tramp is not loaded yet, its autoloads are still active.
 -  (tramp-unload-file-name-handlers)
    ;; ange-ftp settings must be enabled.
    (tramp-compat-funcall 'tramp-ftp-enable-ange-ftp)
 -  ;; Maybe its not loaded yet.
 -  (condition-case nil
 -      (unload-feature 'tramp 'force)
 -    (error nil)))
 -
 -(when (and load-in-progress
 -         (string-match "Loading tramp..." (or (current-message) "")))
 -  (message "Loading tramp...done"))
 +  ;; Maybe it's not loaded yet.
 +  (ignore-errors (unload-feature 'tramp 'force)))
  
  (provide 'tramp)
  
  ;;; TODO:
  
 -;; * Handle nonlocal exits such as C-g.
 -;; * But it would probably be better to use with-local-quit at the
 -;;   place where it's actually needed: around any potentially
 -;;   indefinitely blocking piece of code.  In this case it would be
 -;;   within Tramp around one of its calls to accept-process-output (or
 -;;   around one of the loops that calls accept-process-output)
 -;;   (Stefan Monnier).
  ;; * Rewrite `tramp-shell-quote-argument' to abstain from using
  ;;   `shell-quote-argument'.
  ;; * In Emacs 21, `insert-directory' shows total number of bytes used
  ;;   by the files in that directory.  Add this here.
  ;; * Avoid screen blanking when hitting `g' in dired.  (Eli Tziperman)
  ;; * Make ffap.el grok Tramp filenames.  (Eli Tziperman)
 -;; * Don't use globbing for directories with many files, as this is
 -;;   likely to produce long command lines, and some shells choke on
 -;;   long command lines.
 -;; * How to deal with MULE in `insert-file-contents' and `write-region'?
  ;; * abbreviate-file-name
  ;; * Better error checking.  At least whenever we see something
  ;;   strange when doing zerop, we should kill the process and start
  ;;   again.  (Greg Stark)
 -;; * Remove unneeded parameters from methods.
 -;; * Make it work for different encodings, and for different file name
 -;;   encodings, too.  (Daniel Pittman)
 -;; * Don't search for perl5 and perl.  Instead, only search for perl and
 -;;   then look if it's the right version (with `perl -v').
 -;; * When editing a remote CVS controlled file as a different user, VC
 -;;   gets confused about the file locking status.  Try to find out why
 -;;   the workaround doesn't work.
  ;; * Username and hostname completion.
  ;; ** Try to avoid usage of `last-input-event' in `tramp-completion-mode-p'.
  ;; ** Unify `tramp-parse-{rhosts,shosts,sconfig,hosts,passwd,netrc}'.
  ;;    Code is nearly identical.
 -;; * Allow out-of-band methods as _last_ multi-hop.  Open a connection
 -;;   until the last but one hop via `start-file-process'.  Apply it
 -;;   also for ftp and smb.
 -;; * WIBNI if we had a command "trampclient"?  If I was editing in
 -;;   some shell with root priviledges, it would be nice if I could
 -;;   just call
 -;;     trampclient filename.c
 -;;   as an editor, and the _current_ shell would connect to an Emacs
 -;;   server and would be used in an existing non-priviledged Emacs
 -;;   session for doing the editing in question.
 -;;   That way, I need not tell Emacs my password again and be afraid
 -;;   that it makes it into core dumps or other ugly stuff (I had Emacs
 -;;   once display a just typed password in the context of a keyboard
 -;;   sequence prompt for a question immediately following in a shell
 -;;   script run within Emacs -- nasty).
 -;;   And if I have some ssh session running to a different computer,
 -;;   having the possibility of passing a local file there to a local
 -;;   Emacs session (in case I can arrange for a connection back) would
 -;;   be nice.
 -;;   Likely the corresponding Tramp server should not allow the
 -;;   equivalent of the emacsclient -eval option in order to make this
 -;;   reasonably unproblematic.  And maybe trampclient should have some
 -;;   way of passing credentials, like by using an SSL socket or
 -;;   something.  (David Kastrup)
 -;; * Reconnect directly to a compliant shell without first going
 -;;   through the user's default shell.  (Pete Forman)
  ;; * Make `tramp-default-user' obsolete.
 -;; * How can I interrupt the remote process with a signal
 -;;   (interrupt-process seems not to work)?  (Markus Triska)
 -;; * Avoid the local shell entirely for starting remote processes.  If
 -;;   so, I think even a signal, when delivered directly to the local
 -;;   SSH instance, would correctly be propagated to the remote process
 -;;   automatically; possibly SSH would have to be started with
 -;;   "-t".  (Markus Triska)
 -;; * It makes me wonder if tramp couldn't fall back to ssh when scp
 -;;   isn't on the remote host.  (Mark A. Hershberger)
 -;; * Use lsh instead of ssh.  (Alfred M. Szmidt)
  ;; * Implement a general server-local-variable mechanism, as there are
  ;;   probably other variables that need different values for different
  ;;   servers too.  The user could then configure a variable (such as
  ;;   tramp-server-local-variable-alist) to define any such variables
  ;;   that they need to, which would then be let bound as appropriate
  ;;   in tramp functions.  (Jason Rumney)
 -;; * Optimize out-of-band copying, when both methods are scp-like (not
 -;;   rsync).
 -;; * Keep a second connection open for out-of-band methods like scp or
 -;;   rsync.
  ;; * IMHO, it's a drawback that currently Tramp doesn't support
  ;;   Unicode in Dired file names by default.  Is it possible to
  ;;   improve Tramp to set LC_ALL to "C" only for commands where Tramp
  ;;   expects English?  Or just to set LC_MESSAGES to "C" if Tramp
  ;;   expects only English messages?  (Juri Linkov)
  ;; * Make shadowfile.el grok Tramp filenames.  (Bug#4526, Bug#4846)
 -;; * Load Tramp subpackages only when needed.  (Bug#1529, Bug#5448, Bug#5705)
 -;; * Try telnet+curl as new method.  It might be useful for busybox,
 -;;   without built-in uuencode/uudecode.
  ;; * Load ~/.emacs_SHELLNAME on the remote host for `shell'.
  ;; * I was wondering it it would be possible to use tramp even if I'm
  ;;   actually using sshfs.  But when I launch a command I would like
diff --combined lisp/progmodes/python.el
index e72b18afd6101ab3df43d543daa37aade48ece6c,dba8fe5572b56450240b2b6d96e96543642ae5fc..d2bb82e0580a6aa0333af332c35064852d3e5616
            symbol-end)
       . font-lock-builtin-face)))
  
 -(defconst python-font-lock-syntactic-keywords
 +(defconst python-syntax-propertize-function
    ;; Make outer chars of matching triple-quote sequences into generic
    ;; string delimiters.  Fixme: Is there a better way?
    ;; First avoid a sequence preceded by an odd number of backslashes.
 -  `((,(concat "\\(?:\\([RUru]\\)[Rr]?\\|^\\|[^\\]\\(?:\\\\.\\)*\\)" ;Prefix.
 +  (syntax-propertize-rules
-    (;; (rx (not (any ?\\))
-     ;;     ?\\ (* (and ?\\ ?\\))
-     ;;     (group (syntax string-quote))
-     ;;     (backref 1)
-     ;;     (group (backref 1)))
-     ;; ¡Backrefs don't work in syntax-propertize-rules!
-     "[^\\]\\\\\\(\\\\\\\\\\)*\\(?:''\\('\\)\\|\"\"\\(?2:\"\\)\\)"
-     (2 "\""))                           ; dummy
-    (;; (rx (optional (group (any "uUrR"))) ; prefix gets syntax property
-     ;;     (optional (any "rR"))           ; possible second prefix
-     ;;     (group (syntax string-quote))   ; maybe gets property
-     ;;     (backref 2)                     ; per first quote
-     ;;     (group (backref 2)))            ; maybe gets property
-     ;; ¡Backrefs don't work in syntax-propertize-rules!
-     "\\([RUru]\\)?[Rr]?\\(?:\\('\\)'\\('\\)\\|\\(?2:\"\\)\"\\(?3:\"\\)\\)"
++   (;; ¡Backrefs don't work in syntax-propertize-rules!
++    (concat "\\(?:\\([RUru]\\)[Rr]?\\|^\\|[^\\]\\(?:\\\\.\\)*\\)" ;Prefix.
+               "\\(?:\\('\\)'\\('\\)\\|\\(?2:\"\\)\"\\(?3:\"\\)\\)")
 -     (1 (python-quote-syntax 1) nil lax)
 -     (2 (python-quote-syntax 2))
 -     (3 (python-quote-syntax 3)))
 -    ;; This doesn't really help.
 -;;;     (,(rx (and ?\\ (group ?\n))) (1 " "))
 -    ))
 -
 -(defun python-quote-syntax (n)
 +    (3 (ignore (python-quote-syntax))))
 +   ;; This doesn't really help.
 +   ;;((rx (and ?\\ (group ?\n))) (1 " "))
 +   ))
 +
 +(defun python-quote-syntax ()
    "Put `syntax-table' property correctly on triple quote.
  Used for syntactic keywords.  N is the match number (1, 2 or 3)."
    ;; Given a triple quote, we have to check the context to know
    ;; x '"""' x """ \"""" x
    (save-excursion
      (goto-char (match-beginning 0))
 -    (cond
 -     ;; Consider property for the last char if in a fenced string.
 -     ((= n 3)
 -      (let* ((font-lock-syntactic-keywords nil)
 -           (syntax (syntax-ppss)))
 -      (when (eq t (nth 3 syntax))     ; after unclosed fence
 -        (goto-char (nth 8 syntax))    ; fence position
 -        (skip-chars-forward "uUrR")   ; skip any prefix
 -        ;; Is it a matching sequence?
 -        (if (eq (char-after) (char-after (match-beginning 2)))
 -            (eval-when-compile (string-to-syntax "|"))))))
 -     ;; Consider property for initial char, accounting for prefixes.
 -     ((or (and (= n 2)                        ; leading quote (not prefix)
 -             (not (match-end 1)))     ; prefix is null
 -        (and (= n 1)                  ; prefix
 -             (match-end 1)))          ; non-empty
 -      (let ((font-lock-syntactic-keywords nil))
 -      (unless (eq 'string (syntax-ppss-context (syntax-ppss)))
 -        (eval-when-compile (string-to-syntax "|")))))
 -     ;; Otherwise (we're in a non-matching string) the property is
 -     ;; nil, which is OK.
 -     )))
 +    (let ((syntax (save-match-data (syntax-ppss))))
 +      (cond
 +       ((eq t (nth 3 syntax))           ; after unclosed fence
 +        ;; Consider property for the last char if in a fenced string.
 +        (goto-char (nth 8 syntax))    ; fence position
 +        (skip-chars-forward "uUrR")   ; skip any prefix
 +        ;; Is it a matching sequence?
 +        (if (eq (char-after) (char-after (match-beginning 2)))
 +            (put-text-property (match-beginning 3) (match-end 3)
 +                               'syntax-table (string-to-syntax "|"))))
 +       ((match-end 1)
 +        ;; Consider property for initial char, accounting for prefixes.
 +        (put-text-property (match-beginning 1) (match-end 1)
 +                           'syntax-table (string-to-syntax "|")))
 +       (t
 +        ;; Consider property for initial char, accounting for prefixes.
 +        (put-text-property (match-beginning 2) (match-end 2)
 +                           'syntax-table (string-to-syntax "|"))))
 +      )))
  
  ;; This isn't currently in `font-lock-defaults' as probably not worth
  ;; it -- we basically only mess with a few normally-symbol characters.
@@@ -579,33 -570,6 +567,33 @@@ having to restart the program.
    "Queue of Python temp files awaiting execution.
  Currently-active file is at the head of the list.")
  
 +(defcustom python-shell-prompt-alist
 +  '(("ipython" . "^In \\[[0-9]+\\]: *")
 +    (t . "^>>> "))
 +  "Alist of Python input prompts.
 +Each element has the form (PROGRAM . REGEXP), where PROGRAM is
 +the value of `python-python-command' for the python process and
 +REGEXP is a regular expression matching the Python prompt.
 +PROGRAM can also be t, which specifies the default when no other
 +element matches `python-python-command'."
 +  :type 'string
 +  :group 'python
 +  :version "24.1")
 +
 +(defcustom python-shell-continuation-prompt-alist
 +  '(("ipython" . "^   [.][.][.]+: *")
 +    (t . "^[.][.][.] "))
 +  "Alist of Python continued-line prompts.
 +Each element has the form (PROGRAM . REGEXP), where PROGRAM is
 +the value of `python-python-command' for the python process and
 +REGEXP is a regular expression matching the Python prompt for
 +continued lines.
 +PROGRAM can also be t, which specifies the default when no other
 +element matches `python-python-command'."
 +  :type 'string
 +  :group 'python
 +  :version "24.1")
 +
  (defvar python-pdbtrack-is-tracking-p nil)
  
  (defconst python-pdbtrack-stack-entry-regexp
@@@ -1338,9 -1302,13 +1326,9 @@@ See `python-check-command' for the defa
  \f
  ;;;; Inferior mode stuff (following cmuscheme).
  
 -;; Fixme: Make sure we can work with IPython.
 -
  (defcustom python-python-command "python"
    "Shell command to run Python interpreter.
 -Any arguments can't contain whitespace.
 -Note that IPython may not work properly; it must at least be used
 -with the `-cl' flag, i.e. use `ipython -cl'."
 +Any arguments can't contain whitespace."
    :group 'python
    :type 'string)
  
@@@ -1418,23 -1386,6 +1406,23 @@@ local value."
  ;; Autoloaded.
  (declare-function compilation-shell-minor-mode "compile" (&optional arg))
  
 +(defvar python--prompt-regexp nil)
 +
 +(defun python--set-prompt-regexp ()
 +  (let ((prompt  (cdr-safe (or (assoc python-python-command
 +                                    python-shell-prompt-alist)
 +                             (assq t python-shell-prompt-alist))))
 +      (cprompt (cdr-safe (or (assoc python-python-command
 +                                    python-shell-continuation-prompt-alist)
 +                             (assq t python-shell-continuation-prompt-alist)))))
 +    (set (make-local-variable 'comint-prompt-regexp)
 +       (concat "\\("
 +               (mapconcat 'identity
 +                          (delq nil (list prompt cprompt "^([Pp]db) "))
 +                          "\\|")
 +               "\\)"))
 +    (set (make-local-variable 'python--prompt-regexp) prompt)))
 +
  ;; Fixme: This should inherit some stuff from `python-mode', but I'm
  ;; not sure how much: at least some keybindings, like C-c C-f;
  ;; syntax?; font-locking, e.g. for triple-quoted strings?
@@@ -1457,12 -1408,14 +1445,12 @@@ For running multiple processes in multi
  
  \\{inferior-python-mode-map}"
    :group 'python
 +  (require 'ansi-color) ; for ipython
    (setq mode-line-process '(":%s"))
    (set (make-local-variable 'comint-input-filter) 'python-input-filter)
    (add-hook 'comint-preoutput-filter-functions #'python-preoutput-filter
            nil t)
 -  ;; Still required by `comint-redirect-send-command', for instance
 -  ;; (and we need to match things like `>>> ... >>> '):
 -  (set (make-local-variable 'comint-prompt-regexp)
 -       (rx line-start (1+ (and (or (repeat 3 (any ">.")) "(Pdb)") " "))))
 +  (python--set-prompt-regexp)
    (set (make-local-variable 'compilation-error-regexp-alist)
         python-compilation-regexp-alist)
    (compilation-shell-minor-mode 1))
@@@ -1559,12 -1512,12 +1547,12 @@@ Don't save anything for STR matching `i
                                     cmd)))
      (unless (shell-command-to-string cmd)
        (error "Can't run Python command `%s'" cmd))
 -    (let* ((res (shell-command-to-string (concat cmd " --version"))))
 -      (string-match "Python \\([0-9]\\)\\.\\([0-9]\\)" res)
 -      (unless (and (equal "2" (match-string 1 res))
 -                 (match-beginning 2)
 -                 (>= (string-to-number (match-string 2 res)) 2))
 -      (error "Only Python versions >= 2.2 and < 3.0 supported")))
 +    (let* ((res (shell-command-to-string
 +                 (concat cmd
 +                         " -c \"from sys import version_info;\
 +print version_info >= (2, 2) and version_info < (3, 0)\""))))
 +      (unless (string-match "True" res)
 +      (error "Only Python versions >= 2.2 and < 3.0 are supported")))
      (setq python-version-checked t)))
  
  ;;;###autoload
@@@ -1587,7 -1540,6 +1575,7 @@@ buffer for a list of commands.)
    (interactive (if current-prefix-arg
                   (list (read-string "Run Python: " python-command) nil t)
                 (list python-command)))
 +  (require 'ansi-color) ; for ipython
    (unless cmd (setq cmd python-command))
    (python-check-version cmd)
    (setq python-command cmd)
                              (if path (concat path path-separator))
                              data-directory)
                      process-environment))
 -             ;; Suppress use of pager for help output:
 -             (process-connection-type nil))
 +               ;; If we use a pipe, unicode characters are not printed
 +               ;; correctly (Bug#5794) and IPython does not work at
 +               ;; all (Bug#5390).
 +             (process-connection-type t))
          (apply 'make-comint-in-buffer "Python"
                 (generate-new-buffer "*Python*")
                 (car cmdlist) nil (cdr cmdlist)))
    ;; non-ASCII.
    (interactive "r")
    (let* ((f (make-temp-file "py"))
 -       (command (format "emacs.eexecfile(%S)" f))
 +       (command
 +          ;; IPython puts the FakeModule module into __main__ so
 +          ;; emacs.eexecfile becomes useless.
 +          (if (string-match "^ipython" python-command)
 +              (format "execfile %S" f)
 +            (format "emacs.eexecfile(%S)" f)))
         (orig-start (copy-marker start)))
      (when (save-excursion
            (goto-char start)
@@@ -1869,9 -1814,7 +1857,9 @@@ If there isn't, it's probably not appro
  information etc.  If PROC is non-nil, check the buffer for that process."
    (with-current-buffer (process-buffer (or proc (python-proc)))
      (save-excursion
 -      (save-match-data (re-search-backward ">>> \\=" nil t)))))
 +      (save-match-data
 +      (re-search-backward (concat python--prompt-regexp " *\\=")
 +                          nil t)))))
  
  ;; Fixme:  Is there anything reasonable we can do with random methods?
  ;; (Currently only works with functions.)
@@@ -2285,7 -2228,6 +2273,7 @@@ the if condition.
  (eval-when-compile
    ;; Define a user-level skeleton and add it to the abbrev table.
  (defmacro def-python-skeleton (name &rest elements)
 +  (declare (indent 2))
    (let* ((name (symbol-name name))
         (function (intern (concat "python-insert-" name))))
      `(progn
         (define-skeleton ,function
         ,(format "Insert Python \"%s\" template." name)
         ,@elements)))))
 -(put 'def-python-skeleton 'lisp-indent-function 2)
  
  ;; From `skeleton-further-elements' set below:
  ;;  `<': outdent a level;
@@@ -2495,12 -2438,12 +2483,12 @@@ with skeleton expansions for compound s
    :group 'python
    (set (make-local-variable 'font-lock-defaults)
         '(python-font-lock-keywords nil nil nil nil
 -                                 (font-lock-syntactic-keywords
 -                                  . python-font-lock-syntactic-keywords)
 -                                 ;; This probably isn't worth it.
 -                                 ;; (font-lock-syntactic-face-function
 -                                 ;;  . python-font-lock-syntactic-face-function)
 -                                 ))
 +         ;; This probably isn't worth it.
 +         ;; (font-lock-syntactic-face-function
 +         ;;  . python-font-lock-syntactic-face-function)
 +         ))
 +  (set (make-local-variable 'syntax-propertize-function)
 +       python-syntax-propertize-function)
    (set (make-local-variable 'parse-sexp-lookup-properties) t)
    (set (make-local-variable 'parse-sexp-ignore-comments) t)
    (set (make-local-variable 'comment-start) "# ")
@@@ -2587,7 -2530,9 +2575,7 @@@ Runs `jython-mode-hook' after `python-m
    "Watch output for Python prompt and exec next file waiting in queue.
  This function is appropriate for `comint-output-filter-functions'."
    ;; TBD: this should probably use split-string
 -  (when (and (or (string-equal string ">>> ")
 -               (and (>= (length string) 5)
 -                    (string-equal (substring string -5) "\n>>> ")))
 +  (when (and (string-match python--prompt-regexp string)
             python-file-queue)
      (condition-case nil
          (delete-file (car python-file-queue))
                overlay-arrow-string "=>"
                python-pdbtrack-is-tracking-p t)
          (set-marker overlay-arrow-position
 -                    (save-excursion (beginning-of-line) (point))
 +                    (line-beginning-position)
                      (current-buffer)))
      (setq overlay-arrow-position nil
            python-pdbtrack-is-tracking-p nil)))
@@@ -2799,7 -2744,6 +2787,7 @@@ comint believe the user typed this stri
          (funcall (process-filter proc) proc msg))
        (set-buffer curbuf))
      (process-send-string proc cmd)))
 +
  ;;;###autoload
  (defun python-shell (&optional argprompt)
    "Start an interactive Python interpreter in another window.
@@@ -2839,7 -2783,6 +2827,7 @@@ interaction between undo and process fi
  non-Python process buffers using the default (Emacs-supplied) process
  filter."
    (interactive "P")
 +  (require 'ansi-color) ; For ipython
    ;; Set the default shell if not already set
    (when (null python-which-shell)
      (python-toggle-shells python-default-interpreter))
                               ))))
      (switch-to-buffer-other-window
       (apply 'make-comint python-which-bufname python-which-shell nil args))
 -    (make-local-variable 'comint-prompt-regexp)
      (set-process-sentinel (get-buffer-process (current-buffer))
                            'python-sentinel)
 -    (setq comint-prompt-regexp "^>>> \\|^[.][.][.] \\|^(pdb) ")
 +    (python--set-prompt-regexp)
      (add-hook 'comint-output-filter-functions
              'python-comint-output-filter-function nil t)
      ;; pdbtrack
  (provide 'python)
  (provide 'python-21)
  
 -;; arch-tag: 6fce1d99-a704-4de9-ba19-c6e4912b0554
  ;;; python.el ends here
diff --combined lisp/progmodes/tcl.el
index 10fe0e7885e9886074c9e731c4df811d1a66c639,cb69d49fcbd4be664614e86aa5bfde1364992d37..620d236078b6a8cbee7471e2076029783a927909
@@@ -411,10 -411,9 +411,10 @@@ This variable is generally set from `tc
  `tcl-typeword-list', and `tcl-keyword-list' by the function
  `tcl-set-font-lock-keywords'.")
  
 -(defvar tcl-font-lock-syntactic-keywords
 -  ;; Mark the few `#' that are not comment-markers.
 -  '(("[^;[{ \t\n][ \t]*\\(#\\)" (1 ".")))
 +(defconst tcl-syntax-propertize-function
 +  (syntax-propertize-rules
 +   ;; Mark the few `#' that are not comment-markers.
 +   ("[^;[{ \t\n][ \t]*\\(#\\)" (1 ".")))
    "Syntactic keywords for `tcl-mode'.")
  
  ;; FIXME need some way to recognize variables because array refs look
@@@ -546,7 -545,7 +546,7 @@@ Uses variables `tcl-proc-regexp' and `t
  ;;
  
  ;;;###autoload
 -(define-derived-mode tcl-mode nil "Tcl"
 +(define-derived-mode tcl-mode prog-mode "Tcl"
    "Major mode for editing Tcl code.
  Expression and list commands understand all Tcl brackets.
  Tab indents for Tcl code.
@@@ -594,9 -593,9 +594,9 @@@ Commands
    (set (make-local-variable 'outline-level) 'tcl-outline-level)
  
    (set (make-local-variable 'font-lock-defaults)
 -       '(tcl-font-lock-keywords nil nil nil beginning-of-defun
 -       (font-lock-syntactic-keywords . tcl-font-lock-syntactic-keywords)
 -       (parse-sexp-lookup-properties . t)))
 +       '(tcl-font-lock-keywords nil nil nil beginning-of-defun))
 +  (set (make-local-variable 'syntax-propertize-function)
 +       tcl-syntax-propertize-function)
  
    (set (make-local-variable 'imenu-generic-expression)
         tcl-imenu-generic-expression)
    (set (make-local-variable 'dabbrev-abbrev-skip-leading-regexp) "[$!]")
    (set (make-local-variable 'dabbrev-abbrev-char-regexp) "\\sw\\|\\s_")
  
-   ;; This can only be set to t in Emacs 19 and XEmacs.
-   ;; Emacs 18 and Epoch lose.
    (set (make-local-variable 'parse-sexp-ignore-comments) t)
    ;; XEmacs has defun-prompt-regexp, but I don't believe
    ;; that it works for end-of-defun -- only for
    ;; beginning-of-defun.
    (set (make-local-variable 'defun-prompt-regexp) tcl-omit-ws-regexp)
-   ;; The following doesn't work in Lucid Emacs 19.6, but maybe
-   ;; it will appear in later versions.
    (set (make-local-variable 'add-log-current-defun-function)
         'tcl-add-log-defun)
  
@@@ -1201,14 -1196,11 +1197,10 @@@ semicolon, opening brace, or opening br
    "Determine if point is in a comment.
  Returns a list of the form `(FLAG . STATE)'.  STATE can be used
  as input to future invocations.  FLAG is nil if not in comment,
- t otherwise.  If in comment, leaves point at beginning of comment.
- This function does not work in Emacs 18.
- See also `tcl-simple-scan-for-comment', a
- simpler version that is often right, and works in Emacs 18."
+ t otherwise.  If in comment, leaves point at beginning of comment."
    (let ((bol (save-excursion
               (goto-char end)
 -             (beginning-of-line)
 -             (point)))
 +             (line-beginning-position)))
        real-comment
        last-cstart)
      (while (and (not last-cstart) (< (point) end))
@@@ -1556,4 -1548,5 +1548,4 @@@ The first line is assumed to look like 
  
  (provide 'tcl)
  
 -;; arch-tag: 8a032554-c3ef-422e-b84c-acec0522179d
  ;;; tcl.el ends here
index 2bd4021a85f8126d3eb3e194791e1601fcbfbdf4,a75ed1b47d3e75b7348acde4a7a4c38615f745ea..42527ff60eb932ea1815b7383893215e961625c1
  ;;; Code:
  
  ;; This variable will always hold the version number of the mode
- (defconst verilog-mode-version "647"
+ (defconst verilog-mode-version "650"
    "Version of this Verilog mode.")
- (defconst verilog-mode-release-date "2010-10-20-GNU"
+ (defconst verilog-mode-release-date "2010-11-05-GNU"
    "Release date of this Verilog mode.")
  (defconst verilog-mode-release-emacs t
    "If non-nil, this version of Verilog mode was released with Emacs itself.")
@@@ -1378,8 -1378,19 +1378,8 @@@ If set will become buffer local."
  ;;  Macros
  ;;
  
 -(defsubst verilog-get-beg-of-line (&optional arg)
 -  (save-excursion
 -    (beginning-of-line arg)
 -    (point)))
 -
 -(defsubst verilog-get-end-of-line (&optional arg)
 -  (save-excursion
 -    (end-of-line arg)
 -    (point)))
 -
  (defsubst verilog-within-string ()
 -  (save-excursion
 -    (nth 3 (parse-partial-sexp (verilog-get-beg-of-line) (point)))))
 +  (nth 3 (parse-partial-sexp (point-at-bol) (point))))
  
  (defsubst verilog-string-replace-matches (from-string to-string fixedcase literal string)
    "Replace occurrences of FROM-STRING with TO-STRING.
@@@ -1469,7 -1480,7 +1469,7 @@@ This speeds up complicated regexp match
                (search-forward substr bound noerror))
        (save-excursion
        (beginning-of-line)
 -      (setq done (re-search-forward regexp (verilog-get-end-of-line) noerror)))
 +      (setq done (re-search-forward regexp (point-at-eol) noerror)))
        (unless (and (<= (match-beginning 0) (point))
                   (>= (match-end 0) (point)))
        (setq done nil)))
@@@ -1489,7 -1500,7 +1489,7 @@@ This speeds up complicated regexp match
                (search-backward substr bound noerror))
        (save-excursion
        (end-of-line)
 -      (setq done (re-search-backward regexp (verilog-get-beg-of-line) noerror)))
 +      (setq done (re-search-backward regexp (point-at-bol) noerror)))
        (unless (and (<= (match-beginning 0) (point))
                   (>= (match-end 0) (point)))
        (setq done nil)))
@@@ -2908,7 -2919,7 +2908,7 @@@ Use filename, if current buffer being e
          (catch 'skip
            (if (eq nest 'yes)
                (let ((depth 1)
 -                    here )
 +                    here)
                  (while (verilog-re-search-forward reg nil 'move)
                    (cond
                     ((match-end md) ; a closer in regular expression, so we are climbing out
@@@ -3914,7 -3925,7 +3914,7 @@@ primitive or interface named NAME.
         (or  kill-existing-comment
            (not (save-excursion
                   (end-of-line)
 -                 (search-backward "//" (verilog-get-beg-of-line) t)))))
 +                 (search-backward "//" (point-at-bol) t)))))
        (let ((nest 1) b e
            m
            (else (if (match-end 2) "!" " ")))
           (or kill-existing-comment
               (not (save-excursion
                      (end-of-line)
 -                    (search-backward "//" (verilog-get-beg-of-line) t)))))
 +                    (search-backward "//" (point-at-bol) t)))))
        (let ((type (car indent-str)))
        (unless (eq type 'declaration)
          (unless (looking-at (concat "\\(" verilog-end-block-ordered-re "\\)[ \t]*:")) ;; ignore named ends
@@@ -4501,7 -4512,7 +4501,7 @@@ becomes
                  (cond
                   ((looking-at "// surefire lint_off_line ")
                    (goto-char (match-end 0))
 -                  (let ((lim (save-excursion (end-of-line) (point))))
 +                  (let ((lim (point-at-eol)))
                      (if (re-search-forward code lim 'move)
                          (throw 'already t)
                        (insert (concat " " code)))))
@@@ -4551,16 -4562,18 +4551,18 @@@ FILENAME or defaults to `buffer-file-na
                                 default nil nil
                                 'verilog-preprocess-history default)))))
    (unless command (setq command (verilog-expand-command verilog-preprocessor)))
-   (let* ((dir (file-name-directory (or filename buffer-file-name)))
+   (let* ((fontlocked (and (boundp 'font-lock-mode) font-lock-mode))
+        (dir (file-name-directory (or filename buffer-file-name)))
         (file (file-name-nondirectory (or filename buffer-file-name)))
         (cmd (concat "cd " dir "; " command " " file)))
      (with-output-to-temp-buffer "*Verilog-Preprocessed*"
-       (save-excursion
-       (set-buffer "*Verilog-Preprocessed*")
+       (with-current-buffer (get-buffer "*Verilog-Preprocessed*")
        (insert (concat "// " cmd "\n"))
        (shell-command cmd "*Verilog-Preprocessed*")
        (verilog-mode)
-       (font-lock-mode)))))
+       ;; Without this force, it takes a few idle seconds
+       ;; to get the color, which is very jarring
+       (when fontlocked (font-lock-fontify-buffer))))))
  \f
  
  ;;
@@@ -7266,7 -7279,10 +7268,10 @@@ Return a array of [outputs inouts input
         ((looking-at "\\s-*\\(\\[[^]]+\\]\\)")
          (goto-char (match-end 0))
          (cond (newsig ; Memory, not just width.  Patch last signal added's memory (nth 3)
-                (setcar (cdr (cdr (cdr newsig))) (match-string 1)))
+                (setcar (cdr (cdr (cdr newsig)))
+                        (if (verilog-sig-memory newsig)
+                            (concat (verilog-sig-memory newsig) (match-string 1))
+                          (match-string 1))))
                (vec ;; Multidimensional
                 (setq multidim (cons vec multidim))
                 (setq vec (verilog-string-replace-matches
                     (cons (verilog-sig-new
                            sig
                            (if dotname (verilog-sig-bits portdata) vec)
-                           (concat "To/From " comment) nil nil
+                           (concat "To/From " comment)
+                           (verilog-sig-memory portdata)
+                           nil
                            (verilog-sig-signed portdata)
                            (verilog-sig-type portdata)
                            multidim nil)
                     (cons (verilog-sig-new
                            sig
                            (if dotname (verilog-sig-bits portdata) vec)
-                           (concat "From " comment) nil nil
+                           (concat "From " comment)
+                           (verilog-sig-memory portdata)
+                           nil
                            (verilog-sig-signed portdata)
                            (verilog-sig-type portdata)
                            multidim nil)
                     (cons (verilog-sig-new
                            sig
                            (if dotname (verilog-sig-bits portdata) vec)
-                           (concat "To " comment) nil nil
+                           (concat "To " comment)
+                           (verilog-sig-memory portdata)
+                           nil
                            (verilog-sig-signed portdata)
                            (verilog-sig-type portdata)
                            multidim nil)
                     (cons (verilog-sig-new
                            sig
                            (if dotname (verilog-sig-bits portdata) vec)
-                           (concat "To/From " comment) nil nil
+                           (concat "To/From " comment)
+                           (verilog-sig-memory portdata)
+                           nil
                            (verilog-sig-signed portdata)
                            (verilog-sig-type portdata)
                            multidim nil)
                     (cons (verilog-sig-new
                            sig
                            (if dotname (verilog-sig-bits portdata) vec)
-                           (concat "To/From " comment) nil nil
+                           (concat "To/From " comment)
+                           (verilog-sig-memory portdata)
+                           nil
                            (verilog-sig-signed portdata)
                            (verilog-sig-type portdata)
                            multidim nil)
@@@ -8261,7 -8287,8 +8276,7 @@@ Some macros and such are also found an
                       ": Can't find verilog-getopt-file -f file: " filename)))
        (goto-char (point-min))
        (while (not (eobp))
 -      (setq line (buffer-substring (point)
 -                                   (save-excursion (end-of-line) (point))))
 +      (setq line (buffer-substring (point) (point-at-eol)))
        (forward-line 1)
        (when (string-match "//" line)
          (setq line (substring line 0 (match-beginning 0))))
@@@ -8862,7 -8889,9 +8877,9 @@@ with appropriate INDENT-PT indentation.
    (indent-to (max 24 (+ indent-pt 16)))
    (unless (= (char-syntax (preceding-char)) ?\  )
      (insert " "))  ; Need space between "]name" if indent-to did nothing
-   (insert (verilog-sig-name sig)))
+   (insert (verilog-sig-name sig))
+   (when (verilog-sig-memory sig)
+     (insert " " (verilog-sig-memory sig))))
  
  (defun verilog-insert-definition (sigs direction indent-pt v2k &optional dont-sort)
    "Print out a definition for a list of SIGS of the given DIRECTION,
@@@ -11886,7 -11915,7 +11903,7 @@@ Clicking on the middle-mouse button loa
         (verilog-save-scan-cache
          (let (end-point)
            (goto-char end)
 -          (setq end-point (verilog-get-end-of-line))
 +          (setq end-point (point-at-eol))
            (goto-char beg)
            (beginning-of-line)  ; scan entire line
            ;; delete overlays existing on this line
@@@ -12110,4 -12139,5 +12127,4 @@@ but instead, [[Fill in here]] happens!
  ;; checkdoc-force-docstrings-flag:nil
  ;; End:
  
 -;; arch-tag: 87923725-57b3-41b5-9494-be21118c6a6f
  ;;; verilog-mode.el ends here
diff --combined lisp/server.el
index 6fbef70768d949d7bc3ba13f196622654755780c,17d6743a0f77fbb04cc4006c035bc7b57221b94a..ecc9b16cce7e001d3b9a4c86da5ba7cf6fdebf76
@@@ -110,19 -110,8 +110,19 @@@ If set, the server accepts remote conne
            (string :tag "Name or IP address")
            (const :tag "Local" nil))
    :version "22.1")
 +;;;###autoload
  (put 'server-host 'risky-local-variable t)
  
 +(defcustom server-port nil
 +  "The port number that the server process should listen on."
 +  :group 'server
 +  :type '(choice
 +          (string :tag "Port number")
 +          (const :tag "Random" nil))
 +  :version "24.1")
 +;;;###autoload
 +(put 'server-port 'risky-local-variable t)
 +
  (defcustom server-auth-dir (locate-user-emacs-file "server/")
    "Directory for server authentication files.
  
@@@ -133,7 -122,6 +133,7 @@@ directory residing in a NTFS partition 
    :group 'server
    :type 'directory
    :version "22.1")
 +;;;###autoload
  (put 'server-auth-dir 'risky-local-variable t)
  
  (defcustom server-raise-frame t
@@@ -356,8 -344,7 +356,8 @@@ If CLIENT is non-nil, add a descriptio
    ;; for possible servers before doing anything, so it *should* be ours.
    (and (process-contact proc :server)
         (eq (process-status proc) 'closed)
 -       (ignore-errors (delete-file (process-get proc :server-file))))
 +       (ignore-errors
 +      (delete-file (process-get proc :server-file))))
    (server-log (format "Status changed to %s: %s" (process-status proc) msg) proc)
    (server-delete-client proc))
  
@@@ -498,7 -485,7 +498,7 @@@ See variable `server-auth-dir' for deta
        (error "The directory `%s' is unsafe" dir)))))
  
  ;;;###autoload
- (defun server-start (&optional leave-dead)
+ (defun server-start (&optional leave-dead inhibit-prompt)
    "Allow this Emacs process to be a server for client processes.
  This starts a server communications subprocess through which
  client \"editors\" can send your editing commands to this Emacs
@@@ -508,7 -495,10 +508,10 @@@ Emacs distribution as your standard \"e
  Optional argument LEAVE-DEAD (interactively, a prefix arg) means just
  kill any existing server communications subprocess.
  
- If a server is already running, the server is not started.
+ If a server is already running, restart it.  If clients are
+ running, ask the user for confirmation first, unless optional
+ argument INHIBIT-PROMPT is non-nil.
  To force-start a server, do \\[server-force-delete] and then
  \\[server-start]."
    (interactive "P")
            ;; Ask the user before deleting existing clients---except
            ;; when we can't get user input, which may happen when
            ;; doing emacsclient --eval "(kill-emacs)" in daemon mode.
-           (if (and (daemonp)
-                    (null (cdr (frame-list)))
-                    (eq (selected-frame) terminal-frame))
-               leave-dead
-             (yes-or-no-p
-              "The current server still has clients; delete them? ")))
+           (cond
+            ((and (daemonp)
+                  (null (cdr (frame-list)))
+                  (eq (selected-frame) terminal-frame))
+             leave-dead)
+            (inhibit-prompt t)
+            (t (yes-or-no-p
+                "The current server still has clients; delete them? "))))
      (let* ((server-dir (if server-use-tcp server-auth-dir server-socket-dir))
           (server-file (expand-file-name server-name server-dir)))
        (when server-process
        ;; Delete the socket files made by previous server invocations.
        (if (not (eq t (server-running-p server-name)))
          ;; Remove any leftover socket or authentication file
 -        (ignore-errors (delete-file server-file))
 +        (ignore-errors
 +         (let (delete-by-moving-to-trash)
 +           (delete-file server-file)))
        (setq server-mode nil) ;; already set by the minor mode code
        (display-warning
         'server
@@@ -560,7 -550,7 +565,7 @@@ server or call `M-x server-force-delete
          (add-hook 'delete-frame-functions 'server-handle-delete-frame)
          (add-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function)
          (add-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function)
-         (add-hook 'kill-emacs-hook (lambda () (server-mode -1))) ;Cleanup upon exit.
+         (add-hook 'kill-emacs-hook 'server-force-stop) ;Cleanup upon exit.
          (setq server-process
                (apply #'make-network-process
                       :name server-name
                       ;; The other args depend on the kind of socket used.
                       (if server-use-tcp
                           (list :family 'ipv4  ;; We're not ready for IPv6 yet
 -                               :service t
 -                               :host (or server-host "127.0.0.1") ;; See bug#6781
 +                               :service (or server-port t)
 +                               :host (or server-host 'local)
                                 :plist '(:authenticated nil))
                         (list :family 'local
                               :service server-file
                   (loop
                      ;; The auth key is a 64-byte string of random chars in the
                      ;; range `!'..`~'.
 -                    for i below 64
 +                    repeat 64
                      collect (+ 33 (random 94)) into auth
                      finally return (concat auth))))
              (process-put server-process :auth-key auth-key)
                (setq buffer-file-coding-system 'no-conversion)
                (insert (format-network-address
                         (process-contact server-process :local))
 -                      " " (int-to-string (emacs-pid))
 +                      " " (number-to-string (emacs-pid)) ; Kept for compatibility
                        "\n" auth-key)))))))))
  
+ (defun server-force-stop ()
+   "Kill all connections to the current server.
+ This function is meant to be called from `kill-emacs-hook'."
+   (server-start nil t))
  ;;;###autoload
  (defun server-force-delete (&optional name)
    "Unconditionally delete connection file for server NAME.
@@@ -615,7 -610,7 +625,7 @@@ NAME defaults to `server-name'.  With a
                                    server-auth-dir
                                  server-socket-dir))))
      (condition-case nil
 -      (progn
 +      (let (delete-by-moving-to-trash)
          (delete-file file)
          (message "Connection file %S deleted" file))
        (file-error
@@@ -718,9 -713,12 +728,9 @@@ Server mode runs a process that accept
      ;; Display *scratch* by default.
      (switch-to-buffer (get-buffer-create "*scratch*") 'norecord)
  
 -    ;; Reply with our pid.
 -    (server-send-string proc (concat "-emacs-pid "
 -                                     (number-to-string (emacs-pid)) "\n"))
      frame))
  
 -(defun server-create-window-system-frame (display nowait proc)
 +(defun server-create-window-system-frame (display nowait proc parent-id)
    (add-to-list 'frame-inherited-parameters 'client)
    (if (not (fboundp 'make-frame-on-display))
        (progn
      (let* ((params `((client . ,(if nowait 'nowait proc))
                       ;; This is a leftover, see above.
                       (environment . ,(process-get proc 'env))))
 -           (frame (make-frame-on-display
 -                   (or display
 -                       (frame-parameter nil 'display)
 -                       (getenv "DISPLAY")
 -                       (error "Please specify display"))
 -                   params)))
 +         (display (or display
 +                      (frame-parameter nil 'display)
 +                      (getenv "DISPLAY")
 +                      (error "Please specify display")))
 +         frame)
 +      (if parent-id
 +        (push (cons 'parent-id (string-to-number parent-id)) params))
 +      (setq frame (make-frame-on-display display params))
        (server-log (format "%s created" frame) proc)
        (select-frame frame)
        (process-put proc 'frame frame)
@@@ -888,9 -884,6 +898,9 @@@ The following commands are accepted by 
        (server-log "Authentication failed" proc)
        (server-send-string
         proc (concat "-error " (server-quote-arg "Authentication failed")))
 +      ;; Before calling `delete-process', give emacsclient time to
 +      ;; receive the error string and shut down on its own.
 +      (sit-for 1)
        (delete-process proc)
        ;; We return immediately
        (return-from server-process-filter)))
    (condition-case err
        (progn
        (server-add-client proc)
 +      ;; Send our pid
 +      (server-send-string proc (concat "-emacs-pid "
 +                                       (number-to-string (emacs-pid)) "\n"))
        (if (not (string-match "\n" string))
              ;; Save for later any partial line that remains.
              (when (> (length string) 0)
                (coding-system (and (default-value 'enable-multibyte-characters)
                                    (or file-name-coding-system
                                        default-file-name-coding-system)))
 -              nowait ; t if emacsclient does not want to wait for us.
 -              frame ; The frame that was opened for the client (if any).
 -              display              ; Open the frame on this display.
 -              dontkill       ; t if the client should not be killed.
 +              nowait     ; t if emacsclient does not want to wait for us.
 +              frame      ; Frame opened for the client (if any).
 +              display    ; Open frame on this display.
 +              parent-id  ; Window ID for XEmbed
 +              dontkill   ; t if client should not be killed.
                commands
                dir
                use-current-frame
 -              tty-name       ;nil, `window-system', or the tty name.
 -              tty-type             ;string.
 +              tty-name   nil, `window-system', or the tty name.
 +              tty-type   string.
                files
                filepos
                command-line-args-left
                  (setq display (pop command-line-args-left))
                    (if (zerop (length display)) (setq display nil)))
  
 +               ;; -parent-id ID:
 +               ;; Open X frame within window ID, via XEmbed.
 +               ((and (equal "-parent-id" arg) command-line-args-left)
 +                (setq parent-id (pop command-line-args-left))
 +                  (if (zerop (length parent-id)) (setq parent-id nil)))
 +
                 ;; -window-system:  Open a new X frame.
                 ((equal "-window-system" arg)
                    (setq dontkill t)
                    (setq tty-name nil tty-type nil)
                    (if display (server-select-display display)))
                   ((eq tty-name 'window-system)
 -                  (server-create-window-system-frame display nowait proc))
 +                  (server-create-window-system-frame display nowait proc
 +                                                     parent-id))
                   ;; When resuming on a tty, tty-name is nil.
                   (tty-name
                    (server-create-tty-frame tty-name tty-type proc))))
      (condition-case err
          (let* ((buffers
                  (when files
 -                  (run-hooks 'pre-command-hook)
 -                  (prog1 (server-visit-files files proc nowait)
 -                    (run-hooks 'post-command-hook)))))
 +                  (server-visit-files files proc nowait))))
  
            (mapc 'funcall (nreverse commands))
  
       proc (concat "-error " (server-quote-arg
                               (error-message-string err))))
      (server-log (error-message-string err) proc)
 +    ;; Before calling `delete-process', give emacsclient time to
 +    ;; receive the error string and shut down on its own.
 +    (sit-for 5)
      (delete-process proc)))
  
  (defun server-goto-line-column (line-col)
@@@ -1182,13 -1163,8 +1192,13 @@@ so don't mark these buffers specially, 
               (obuf (get-file-buffer filen)))
          (add-to-history 'file-name-history filen)
          (if (null obuf)
 -              (set-buffer (find-file-noselect filen))
 +            (progn
 +              (run-hooks 'pre-command-hook)  
 +              (set-buffer (find-file-noselect filen)))
              (set-buffer obuf)
 +          ;; separately for each file, in sync with post-command hooks,
 +          ;; with the new buffer current:
 +          (run-hooks 'pre-command-hook)  
              (cond ((file-exists-p filen)
                     (when (not (verify-visited-file-modtime obuf))
                       (revert-buffer t nil)))
              (unless server-buffer-clients
                (setq server-existing-buffer t)))
            (server-goto-line-column (cdr file))
 -          (run-hooks 'server-visit-hook))
 +          (run-hooks 'server-visit-hook)
 +        ;; hooks may be specific to current buffer:
 +        (run-hooks 'post-command-hook)) 
        (unless nowait
          ;; When the buffer is killed, inform the clients.
          (add-hook 'kill-buffer-hook 'server-kill-buffer nil t)
@@@ -1485,4 -1459,5 +1495,4 @@@ only these files will be asked to be sa
  \f
  (provide 'server)
  
 -;; arch-tag: 1f7ecb42-f00a-49f8-906d-61995d84c8d6
  ;;; server.el ends here
diff --combined lisp/vc/vc-mtn.el
index 3d76d34f3d82129043445fdca8f288782dca881d,f89b6a34d21affe03b52d440eed22c717deaa3af..a1ca6ab4d6540564c0e27be4d6908b6a970f2dc8
@@@ -3,8 -3,7 +3,8 @@@
  ;; Copyright (C) 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
  
  ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 -;; Keywords: 
 +;; Keywords: vc
 +;; Package: vc
  
  ;; This file is part of GNU Emacs.
  
@@@ -23,7 -22,7 +23,7 @@@
  
  ;;; Commentary:
  
 -;; 
 +;;
  
  ;;; TODO:
  
@@@ -110,7 -109,7 +110,7 @@@ If nil, use the value of `vc-diff-switc
  (defun vc-mtn-after-dir-status (update-function)
    (let (result)
      (goto-char (point-min))
-     (re-search-forward "Current branch: \\(.*\\)\nChanges against parent \\(.*\\)" nil t)
+     (re-search-forward "\\(?:Current b\\|B\\)ranch:  *\\(.*\\)\n?\nChanges against parent \\(.*\\)" nil t)
      (while (re-search-forward
            "^  \\(?:\\(patched  \\)\\|\\(added    \\)\\)\\(.*\\)$" nil t)
        (cond  ((match-end 1) (push (list (match-string 3) 'edited) result))
      (with-temp-buffer
        (vc-mtn-command t 0 file "status")
        (goto-char (point-min))
-       (re-search-forward "Current branch: \\(.*\\)\nChanges against parent \\(.*\\)")
+       (re-search-forward "\\(?:Current b\\|B\\)ranch:  *\\(.*\\)\n?\nChanges against parent \\(.*\\)")
        (match-string 2))))
  
  (defun vc-mtn-workfile-branch (file)
      (with-temp-buffer
        (vc-mtn-command t 0 file "status")
        (goto-char (point-min))
-       (re-search-forward "Current branch: \\(.*\\)\nChanges against parent \\(.*\\)")
+       (re-search-forward "\\(?:Current b\\|B\\)ranch:  *\\(.*\\)\n?\nChanges against parent \\(.*\\)")
        (match-string 1))))
  
  (defun vc-mtn-workfile-unchanged-p (file)
diff --combined oldXMenu/ChangeLog
index f05553a38b3b5aacacc1a248503d931895e005e6,62cd79446e1f626ed7ec9df1c2b43e8c272033ec..329a4ac95653ccef4db9befed7354de384f7138b
@@@ -1,83 -1,13 +1,89 @@@
 -2010-11-01  Elias Pipping  <pipping.elias@googlemail.com>  (tiny change)
++2010-11-09  Elias Pipping  <pipping.elias@googlemail.com>  (tiny change)
+       Make Emacs compile with clang (bug#7309).
+       * XMakeAssoc.c (XMakeAssoc):
+       * XDelAssoc.c (XDeleteAssoc): Declare the return type.
 +2010-07-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * XMenu.h: Include <stdlib.h>.
 +
 +2010-07-12  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * Makefile.in (C_WARNINGS_SWITCH, PROFILING_CFLAGS): Set from
 +      substitution.
 +      (ALL_CFLAGS): Add ${C_WARNINGS_SWITCH} and ${PROFILING_CFLAGS}.
 +
 +2010-07-04  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Activate.c: Convert function definitions to standard C.
 +      * AddPane.c:
 +      * AddSel.c:
 +      * ChgPane.c:
 +      * ChgSel.c:
 +      * Create.c:
 +      * DelPane.c:
 +      * DelSel.c:
 +      * Destroy.c:
 +      * Error.c:
 +      * EvHand.c:
 +      * FindPane.c:
 +      * FindSel.c:
 +      * InsPane.c:
 +      * InsSel.c:
 +      * Internal.c:
 +      * Locate.c:
 +      * Post.c:
 +      * Recomp.c:
 +      * SetAEQ.c:
 +      * SetFrz.c:
 +      * SetPane.c:
 +      * SetSel.c:
 +      * X10.h:
 +      * XCrAssoc.c:
 +      * XDelAssoc.c:
 +      * XDestAssoc.c:
 +      * XLookAssoc.c:
 +      * XMakeAssoc.c:
 +      * XMenu.h:
 +      * XMenuInt.h:
 +      * insque.c: Likewise.
 +
  2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
  
        * Version 23.2 released.
  
 +2010-05-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (RANLIB): Let configure set it.
 +      (libXMenu11.a): Configure sets RANLIB = : on systems without it.
 +
 +      * Makefile.in (CPP, LN_S, AS, LD, MV, LS, LINTOPTS, LINTLIBFLAG, MAKE)
 +      (STD_DEFINES, CDEBUGFLAGS, RM_CMD): Remove unused variables.
 +
 +2010-05-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (C_SWITCH_SYSTEM, C_SWITCH_MACHINE):
 +      Use @C_SWITCH_SYSTEM@, @C_SWITCH_MACHINE@ rather than
 +      @c_switch_system@, @c_switch_machine@.
 +
 +2010-04-27  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in (C_SWITCH_X_SYSTEM): Define using autoconf.
 +
 +2010-04-23  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in (ALL_CFLAGS): Remove C_SWITCH_X_MACHINE, unused.
 +
 +2010-04-11  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in (C_SWITCH_SYSTEM, C_SWITCH_MACHINE)
 +      (C_SWITCH_X_SITE): Define using autoconf.
 +
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
  2009-06-21  Chong Yidong  <cyd@stupidchicken.com>
  
        * Branch for 23.1.
        * Activate.c: Add calls to GrabKeyboard to remove strange
        interactions with window managers that steal keypresses.
        Call ungrab_all instead of XtUngrabPointer.
 -      (XMenuActivate): Add call to XGrabKeyboard
 -      (XMenuActivate): Add call to XUngrabKeyboard
 +      (XMenuActivate): Add call to XGrabKeyboard.
 +      (XMenuActivate): Add call to XUngrabKeyboard.
  
  2001-10-20  Gerd Moellmann  <gerd@gnu.org>
  
diff --combined oldXMenu/XDelAssoc.c
index 7aca50aa56b10199c776b7f3aac8d055b1085b1c,e0f78b6acaa34ec6a2b5cc3a95b3001c9e3d9be8..43446ae8a251be2c5f391ba83ed569bf7c7d088a
@@@ -5,19 -5,23 +5,20 @@@
  
  #include <X11/Xlib.h>
  #include "X10.h"
 -void emacs_remque();
  struct qelem {
        struct    qelem *q_forw;
        struct    qelem *q_back;
        char q_data[1];
  };
 +void emacs_remque(struct qelem*);
  
  /*
   * XDeleteAssoc - Delete an association in an XAssocTable keyed on
   * an XId.  An association may be removed only once.  Redundant
   * deletes are meaningless (but cause no problems).
   */
 -XDeleteAssoc(dpy, table, x_id)
 -        register Display *dpy;
 -      register XAssocTable *table;
 -      register XID x_id;
+ void
 +XDeleteAssoc(register Display *dpy, register XAssocTable *table, register XID x_id)
  {
        int hash;
        register XAssoc *bucket;
diff --combined oldXMenu/XMakeAssoc.c
index 84157399b43923eb777e80ff4665ad28fbc18d7c,e46674db605d50622ce3f556cdd0b9f3f2bc0355..3c79d17dc6a333c235404c6f9d33ca10769c6319
  #define NULL 0
  #endif
  
 -extern int errno;
 -
 -void emacs_insque();
  struct qelem {
        struct    qelem *q_forw;
        struct    qelem *q_back;
        char q_data[1];
  };
 +void emacs_insque (struct qelem *elem, struct qelem *prev);
 +
  /*
   * XMakeAssoc - Insert data into an XAssocTable keyed on an XId.
   * Data is inserted into the table only once.  Redundant inserts are
   * meaningless (but cause no problems).  The queue in each association
   * bucket is sorted (lowest XId to highest XId).
   */
 -XMakeAssoc(dpy, table, x_id, data)
 -      register Display *dpy;
 -      register XAssocTable *table;
 -      register XID x_id;
 -      register caddr_t data;
+ void
 +XMakeAssoc(register Display *dpy, register XAssocTable *table, register XID x_id, register caddr_t data)
  {
        int hash;
        register XAssoc *bucket;
diff --combined src/ChangeLog
index 5a0d859ac27a63f63f58f9786b9ddd183060f1c6,c52c84961fa544a057f86842a8e2461da1f164ef..985a07c4ea330b267d50564b9790a951831cbdb6
 -2010-11-05  Chong Yidong  <cyd@stupidchicken.com>
+ 2010-11-09  Eli Zaretskii  <eliz@gnu.org>
+       * xfns.c (x_real_positions): Fix declaration-after-statement
+       problem.
 -2010-11-04  Chong Yidong  <cyd@stupidchicken.com>
++2010-11-09  Chong Yidong  <cyd@stupidchicken.com>
+       * image.c (free_image): Don't garbage the frame here, since this
+       function can be called while redisplaying (Bug#7210).
+       (uncache_image): Garbage the frame here (Bug#6426).
 -      * process.c (Fmake_network_process): Don't apply Bug#5173 fix for
 -      Windows.
++2010-11-09  Jan Djärv  <jan.h.d@swipnet.se>
 -2010-11-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
++      * xfns.c (x_real_positions): Only use _NET_FRAME_EXTENTS if our
++      parent is the root window.  Check this after traversing window tree.
 -      * process.c (Fmake_network_process): Don't call turn_on_atimers around
 -      `connect' (Bug#5723).
++      * xterm.c (x_term_init): Initialize Xatom_net_frame_extents.
 -2010-11-04  Helmut Eller  <eller.helmut@gmail.com>
++      * xterm.h (struct x_display_info): Xatom_net_frame_extents is new.
 -      * process.c (Fmake_network_process): Call `select' for interrupted
 -      `connect' rather than creating new socket (Bug#5173).
++      * xfns.c (x_real_positions): Try to get _NET_FRAME_EXTENTS first
++      before traversing window tree (Bug#5721).
 +2010-11-07  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-11-04  Kenichi Handa  <handa@m17n.org>
 +      * xfns.c (set_machine_and_pid_properties): Let X set WM_CLIENT_MACHINE.
  
 -      * font.c (font_delete_unmatched): Check Vface_ignored_fonts.
 -      Don't sheck SPEC if it is nil.
 -      (font_list_entities): Call font_delete_unmatched if
 -      Vface_ignored_fonts is non-nil.
 +      * xdisp.c (note_mode_line_or_margin_highlight): Initialize
 +      Cursor to No_Cursor for HAVE_WINDOW_SYSTEM also.
  
 -2010-11-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +2010-11-06  Eli Zaretskii  <eliz@gnu.org>
  
 -      * dispextern.h (TRY_WINDOW_CHECK_MARGINS)
 -      (TRY_WINDOW_IGNORE_FONTS_CHANGE): New defines.
 +      * xfns.c (Fx_show_tip): If any of the tool-tip text lines is R2L,
 +      adjust width of tool-tip frame to the width of text, excluding the
 +      stretch glyph at the beginning of R2L glyph rows.
  
 -      * xdisp.c (try_window): Change arg from CHECK_MARGINS to FLAGS.
 -      Don't abort with fonts change if TRY_WINDOW_IGNORE_FONTS_CHANGE is
 -      set in FLAGS.  Callers with non-zero CHECK_MARGINS changed to use
 -      TRY_WINDOW_CHECK_MARGINS.
 +      * w32fns.c (Fx_show_tip): Likewise.
  
 -      * xfns.c (Fx_show_tip): Undo last change.  Call try_window with
 -      TRY_WINDOW_IGNORE_FONTS_CHANGE (Bug#2423).
 +2010-11-06  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-11-04  Jan Djärv  <jan.h.d@swipnet.se>
 +      * nsfont.m: Include termchar for new mouse-highlight.
 +      (nsfont_draw): Use MOUSE_HL_INFO.
  
 -      * xfns.c (x_real_positions): Only use _NET_FRAME_EXTENTS if our
 -      parent is the root window.  Check this after traversing window tree.
 +2010-11-05  Eli Zaretskii  <eliz@gnu.org>
  
 -      * xterm.c (x_term_init): Initialize Xatom_net_frame_extents.
 +      Unify mouse-highlight code for all GUI and TTY sessions.
  
 -      * xterm.h (struct x_display_info): Xatom_net_frame_extents is new.
 +      * term.c: Remove static mouse_face_* variables.  All users
 +      changed.
 +      (term_show_mouse_face, term_clear_mouse_face)
 +      (fast_find_position, term_mouse_highlight): Functions deleted.
 +      (tty_draw_row_with_mouse_face): New function.
 +      (term_mouse_movement): Call note_mouse_highlight instead of
 +      term_mouse_highlight.
 +
 +      * nsterm.m (ns_update_window_begin, ns_update_window_end)
 +      (ns_update_end, x_destroy_window, ns_frame_up_to_date)
 +      (ns_dumpglyphs_box_or_relief, ns_maybe_dumpglyphs_background)
 +      (ns_dumpglyphs_image, ns_dumpglyphs_stretch)
 +      (ns_initialize_display_info, keyDown, mouseMoved, mouseExited):
 +      Replace Display_Info with Mouse_HLInfo everywhere where
 +      mouse_face_* members were accessed for mouse highlight purposes.
 +
 +      * xterm.c (x_update_window_begin, x_update_window_end)
 +      (x_update_end, XTframe_up_to_date, x_set_mouse_face_gc)
 +      (handle_one_xevent, x_free_frame_resources, x_term_init): Replace
 +      Display_Info with Mouse_HLInfo everywhere where mouse_face_*
 +      members were accessed for mouse highlight purposes.
 +
 +      * w32term.c (x_update_window_begin, x_update_window_end)
 +      (x_update_end, w32_read_socket, x_free_frame_resources)
 +      (w32_initialize_display_info): Replace Display_Info with
 +      Mouse_HLInfo everywhere where mouse_face_* members were accessed
 +      for mouse highlight purposes.
 +
 +      * xdisp.c (show_mouse_face, note_mode_line_or_margin_highlight)
 +      (note_mouse_highlight) [HAVE_WINDOW_SYSTEM]: Don't run GUI code
 +      unless the frame is on a window-system.
 +      (get_tool_bar_item, handle_tool_bar_click)
 +      (note_tool_bar_highlight, draw_glyphs, erase_phys_cursor)
 +      (show_mouse_face, clear_mouse_face, coords_in_mouse_face_p)
 +      (note_mode_line_or_margin_highlight, note_mouse_highlight)
 +      (x_clear_window_mouse_face, cancel_mouse_face, expose_frame):
 +      Replace Display_Info with Mouse_HLInfo everywhere where
 +      mouse_face_* members were accessed for mouse highlight purposes.
 +      (coords_in_mouse_face_p): Move prototype out of the
 +      HAVE_WINDOW_SYSTEM conditional.
 +      (x_y_to_hpos_vpos, frame_to_window_pixel_xy): Move out of the
 +      HAVE_WINDOW_SYSTEM block.
 +      (try_window_id) [HAVE_GPM || MSDOS]: Call
 +      x_clear_window_mouse_face.
 +      (draw_row_with_mouse_face): Implementation for HAVE_WINDOW_SYSTEM
 +      systems.  Call tty_draw_row_with_mouse_face for TTY systems.
 +      (show_mouse_face): Call draw_row_with_mouse_face, instead of
 +      calling draw_glyphs directly.
 +      (show_mouse_face, clear_mouse_face, coords_in_mouse_face_p)
 +      (cursor_in_mouse_face_p, rows_from_pos_range)
 +      (mouse_face_from_buffer_pos, mouse_face_from_string_pos)
 +      (note_mode_line_or_margin_highlight, note_mouse_highlight)
 +      (x_clear_window_mouse_face, cancel_mouse_face): Move out of the
 +      HAVE_WINDOW_SYSTEM block.  Ifdef away window-system specific
 +      fragments.
 +      (note_mouse_highlight): Call popup_activated for MSDOS as well.
 +      Clear mouse highlight if pointer is over glyphs whose OBJECT is an
 +      integer.
 +      (mouse_face_from_buffer_pos): Add parentheses around && within ||.
 +      (x_consider_frame_title, tool_bar_lines_needed): Move
 +      prototypes to HAVE_WINDOW_SYSTEM-only part.
 +      (get_window_cursor_type): Move inside a HAVE_WINDOW_SYSTEM-only
 +      part.  Remove "#ifdef HAVE_WINDOW_SYSTEM" from body of function.
 +      (null_glyph_slice): Move declaration into HAVE_WINDOW_SYSTEM-only
 +      part.
 +
 +      * dispnew.c (mirror_make_current): Set Y coordinate of the
 +      mode-line and header-line rows.
 +      (init_display): Setup initial frame's output_data for text
 +      terminal frames.
 +
 +      * xmenu.c (popup_activated): Don't define on MSDOS, which now has
 +      its own definition on msdos.c.
 +
 +      * msdos.c (show_mouse_face, clear_mouse_face)
 +      (fast_find_position, IT_note_mode_line_highlight)
 +      (IT_note_mouse_highlight): Functions deleted.
 +      (IT_frame_up_to_date, dos_rawgetc): Call note_mouse_highlight
 +      instead of IT_note_mouse_highlight.
 +      (draw_row_with_mouse_face, popup_activated): New functions.
 +      (dos_set_window_size, draw_row_with_mouse_face, IT_update_begin)
 +      (IT_update_end, IT_frame_up_to_date, internal_terminal_init)
 +      (dos_rawgetc): Replace Display_Info with Mouse_HLInfo everywhere
 +      where mouse_face_* members were accessed for mouse highlight
 +      purposes.
 +
 +      * msdos.h (initialize_msdos_display): Add prototype.
 +
 +      * frame.h (MOUSE_HL_INFO): New macro.
 +
 +      * lisp.h (Mouse_HLInfo): New data type.
 +
 +      * xterm.h (struct x_display_info):
 +      * w32term.h (struct w32_display_info):
 +      * nsterm.h (struct ns_display_info):
 +      * termchar.h (struct tty_display_info): Use it instead of
 +      mouse_face_* members.
 +
 +      * dispextern.h (show_mouse_face, clear_mouse_face): Update type of
 +      1st argument.
 +      (frame_to_window_pixel_xy, note_mouse_highlight)
 +      (x_clear_window_mouse_face, cancel_mouse_face, clear_mouse_face)
 +      (show_mouse_face, cursor_in_mouse_face_p): Move prototypes out of
 +      HAVE_WINDOW_SYSTEM conditional.
 +      (draw_row_with_mouse_face): Declare prototype.
 +      (tty_draw_row_with_mouse_face): Declare prototype.
 +
 +2010-11-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * term.c (append_glyphless_glyph, produce_glyphless_glyph): Remove
 +      unused variables.
 +
 +2010-11-05  Adrian Robert  <Adrian.B.Robert@gmail.com>
 +
 +      * nsterm.m (EmacsView-mouseExited:): Correct error in conditional
 +      logic pointed out by Eli Zaretskii.
 +
 +2010-11-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * coding.c (coding-category-list): Refer to set-coding-system-priority
 +      instead of the obsolete set-coding-priority in the doc string.
 +
 +
 +2010-11-04  Adrian Robert  <Adrian.B.Robert@gmail.com>
 +
 +      * nsfont.m (nsfont_draw):  Correct previous patch to return
 +      correct value.
 +      * nsimage.m (EmacsImage-setXBMColor:): Correct previous patch:
 +      don't change the method signature, change the return.
 +
 +2010-11-04  Ismail Donmez  <ismail@namtrac.org>  (tiny change)
 +
 +      * nsfont.m (nsfont_draw)
 +      * nsimage.m (EmacsImage-setXBMColor:)
 +      * nsterm.m (EmacsView-performDragOperation:): Correct empty return.
 +
 +2010-11-03  Julien Danjou  <julien@danjou.info>
 +
 +      * image.c (gif_load): Add support for transparency and specified
 +      :background.
 +
 +2010-11-01  Kenichi Handa  <handa@m17n.org>
 +
 +      * dispextern.h (lookup_glyphless_char_display): Extern it.
 +
 +      * termhooks.h (struct terminal): New member charset_list.
 +
 +      * coding.c (Fset_terminal_coding_system_internal): Set the
 +      `charset_list' member of struct terminal.
  
 -      * xfns.c (x_real_positions): Try to get _NET_FRAME_EXTENTS first
 -      before traversing window tree (Bug#5721).
 +      * term.c (produce_glyphs): Handle the case it->what == IT_GLYPHLESS.
 +      (append_glyphless_glyph, produce_glyphless_glyph): New functions.
  
 -2010-11-03  Glenn Morris  <rgm@gnu.org>
 +      * xdisp.c (lookup_glyphless_char_display): Make it non-static.
 +      (lookup_glyphless_char_display): Set it->what at the end.
 +      (last_glyphless_glyph_frame, last_glyphless_glyph_face_id)
 +      (last_glyphless_glyph_merged_face_id): Make them non-static.
  
 -      * Makefile.in (CRT_DIR): New variable, set by configure.
 -      * m/amdx86-64.h, m/ibms390x.h (START_FILES, LIB_STANDARD):
 -      Use $CRT_DIR rather than HAVE_LIB64_DIR.  (Bug#5655)
 +      * w32term.c (x_draw_glyphless_glyph_string_foreground):
 +      Fix the arg with_background for font->driver->draw.
  
 -2010-11-01  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-11-01  Kenichi Handa  <handa@m17n.org>
  
 -      * process.c (kbd_is_on_hold): New variable.
 -      (hold_keyboard_input, unhold_keyboard_input, kbd_on_hold_p):
 -      New functions.
 -      (wait_reading_process_output): If kbd_on_hold_p returns non-zero,
 -      select on empty input mask.
 -      (init_process): Initialize kbd_is_on_hold to 0.
 +      * w32gui.h (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2):
 +      Surround chp by parentheses.
  
 -      * process.h (hold_keyboard_input, unhold_keyboard_input)
 -      (kbd_on_hold_p): Declare.
 +2010-11-01  Kenichi Handa  <handa@m17n.org>
  
 -      * keyboard.c (input_available_signal): Declare.
 -      (kbd_buffer_nr_stored): New function.
 -      (kbd_buffer_store_event_hold): If kbd_buffer_nr_stored returns
 -      more than KBD_BUFFER_SIZE/2, stop reding input (Bug#6571).
 -      (kbd_buffer_get_event): If input is suspended and kbd_buffer_nr_stored
 -      returns less than KBD_BUFFER_SIZE/4, resume reding input (Bug#6571).
 -      (tty_read_avail_input): If input is on hold, return.
 -      Don't read more that free slots in kbd_buffer (Bug#6571).
 +      Implement various display methods for glyphless characters.
 +
 +      * xdisp.c (Qglyphless_char, Vglyphless_char_display)
 +      (Qglyphless_char_display, Qhexa_code, Qempty_box, Qthin_space)
 +      (Qzero_width): New variables.
 +      (THIN_SPACE_WIDTH): New macro.
 +      (lookup_glyphless_char_display): New funciton.
 +      (last_glyphless_glyph_frame, last_glyphless_glyph_face_id)
 +      (last_glyphless_glyph_merged_face_id): New variables.
 +      (get_next_display_element): Check glyphless characters.
 +      (redisplay_internal): Initialize last_glyphless_glyph_frame and
 +      last_glyphless_glyph_face_id.
 +      (fill_glyphless_glyph_string): New function.
 +      (BUILD_GLYPHLESS_GLYPH_STRING): New macro.
 +      (BUILD_GLYPH_STRINGS): Handle the case GLYPHLESS_GLYPH.
 +      (append_glyphless_glyph, produce_glyphless_glyph): New functions.
 +      (x_produce_glyphs): If a suitable font is not found, produce a
 +      glyphless glyph.  Handle the case it->what == IT_GLYPHLESS.
 +      (syms_of_xdisp): Intern and staticpro Qglyphless_char,
 +      Qglyphless_char_display, Qhexa_code, Qempty_box, Qthin_space, and
 +      Qzero_width.
 +      (Vglyphless_char_display): Declare it as a Lisp variable.
 +
 +      * dispextern.h (enum glyph_type): Add GLYPHLESS_GLYPH.
 +      (struct glyph): Change the size of the member "type" to 3.
 +      Add glyphless to the union slice and u.
 +      (enum display_element_type): Add IT_GLYPHLESS.
 +      (enum glyphless_display_method): New enum.
 +      (struct it): New member glyphless_method.
 +      (Vglyphless_char_display): Extern it.
 +
 +      * xterm.c (x_draw_glyphless_glyph_string_foreground): New function.
 +      (x_draw_glyph_string): Handle the case GLYPHLESS_GLYPH.
 +
 +      * w32term.c (x_draw_glyphless_glyph_string_foreground): New function.
 +      (x_draw_glyph_string): Handle the case GLYPHLESS_GLYPH.
 +
 +      * nsterm.m (ns_draw_glyph_string): Handle the case
 +      GLYPHLESS_GLYPH (the detail is not yet implemented).
 +
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
 +
 +      * xterm.c (x_connection_closed) [USE_X_TOOLKIT]: Fix merge, maybe.
 +
 +      * frame.c (syms_of_frame) <tool-bar-mode>:
 +      Default to nil if !HAVE_WINDOW_SYSTEM.  (Bug#7299)
  
  2010-10-31  Chong Yidong  <cyd@stupidchicken.com>
  
        when aborting on GTK.  This requires using shut_down_emacs
        directly instead of Fkill_emacs.
  
 -2010-10-25  Michael Albinus  <michael.albinus@gmx.de>
 +2010-10-29  Eli Zaretskii  <eliz@gnu.org>
  
 -      * dbusbind.c (Fdbus_call_method_asynchronously)
 -      (Fdbus_register_signal, Fdbus_register_method): Check, whether
 -      `dbus-registered-objects-table' is initialized.
 +      * emacs.c (main): Call syms_of_filelock unconditionally.
 +
 +      * filelock.c (syms_of_filelock): Move out of #ifdef CLASH_DETECTION
 +      clause, but keep part of it conditioned on CLASH_DETECTION.
 +
 +2010-10-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * nsfns.m (Fx-display-save-under, Fx-open-connection)
 +      (Fxw-color-defined-p, Fxw-display-color-p, Fx-show-tip):
 +      * w32fns.c (Fxw_color_defined_p, Fx_open_connection):
 +      * xfns.c (Fxw_color_defined_p, Fx_open_connection):
 +      Sync docs between X, W32, NS.
 +
 +      * buffer.c (syms_of_buffer) <abbrev-mode, transient-mark-mode>:
 +      * frame.c (syms_of_frame) <tool-bar-mode>: Move doc here from Lisp.
 +
 +2010-10-26  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * eval.c (init_eval_once): Set max_lisp_eval_depth to 600;
 +      otherwise, bootstrapping on Windows fails to compile macroexp.el.
 +
 +2010-10-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * cmds.c (internal_self_insert): Don't insert if argument N is
 +      zero or negative.  (Bug#7281)
 +
 +2010-10-26  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (qttip_cb): Set title to empty for ATK (Bug#7278).
 +
 +2010-10-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (SOME_MACHINE_LISP): Remove easymenu.elc.
 +
 +2010-10-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * w32fns.c (Fx_synchronize, Fx_change_window_property)
 +      (Fx_window_property, Fx_file_dialog):
 +      * xfns.c (Fx_synchronize, Fx_change_window_property)
 +      (Fx_window_property, Fx_file_dialog): Sync docs between w32 and X.
  
  2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * xterm.c (x_connection_closed): Kill Emacs unconditionally.
  
 -2010-10-22  Eli Zaretskii  <eliz@gnu.org>
 +2010-10-24  Eli Zaretskii  <eliz@gnu.org>
  
        * frame.c (Fframep, Fwindow_system): Deprecate use as a predicate.
  
        * dispnew.c (syms_of_display) <initial-window-system, window-system>:
        Deprecate use as a boolean flag.
  
 -2010-10-18  Ken Brown  <kbrown@cornell.edu>
 +2010-10-24  Jim Meyering  <jim@meyering.net>
 +
 +      * emacs.c (argmatch): Don't treat "--" as "--chdir".
 +
 +2010-10-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * w16select.c (syms_of_win16select) <selection-coding-system>:
 +      <next-selection-coding-system>:
 +      * w32select.c (syms_of_w32select) <selection-coding-system>:
 +      <next-selection-coding-system>:
 +      Sync docs with select.el.
 +
 +      * xfaces.c (syms_of_xfaces) <tty-defined-color-alist>: Sync doc with
 +      Lisp version.
 +
 +      * w32term.c (syms_of_w32term) <x-use-underline-position-properties>:
 +      Sync doc with the xterm.c version.
 +
 +      * w32term.c (syms_of_w32term) <x-toolkit-scroll-bars>:
 +      * xterm.c (syms_of_xterm) <x-toolkit-scroll-bars>: Sync docs.
 +
 +2010-10-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * buffer.c (syms_of_buffer) <cursor-in-non-selected-windows>:
 +      * frame.c (syms_of_frame) <menu-bar-mode>:
 +      * xdisp.c (syms_of_xdisp) <auto-hscroll-mode, display-hourglass>:
 +      <hourglass-delay>: Sync docs with Lisp.
 +
 +2010-10-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Implement mouse highlight for bidi-reordered lines.
 +
 +      * xdisp.c (fast_find_string_pos): #ifdef away, not used anymore.
 +      (mouse_face_from_string_pos): New function, replaces
 +      fast_find_string_pos.
 +      (note_mouse_highlight): Call it instead of fast_find_string_pos.
 +      (note_mode_line_or_margin_highlight): Support bidi-reordered
 +      strings and R2L glyph rows.  Fix comments.
 +      (note_mouse_highlight): When bidi reordering is turned on in a
 +      buffer, call next-single-property-change and
 +      previous-single-property-change with last argument nil.  Clear
 +      mouse highlight when mouse pointer is in a R2L row on the stretch
 +      glyph that stands for no text beyond the line end.
 +      (row_containing_pos): Don't return too early when CHARPOS is in a
 +      bidi-reordered continued line.  Return immediately when the first
 +      hit is found in a line that is not continued, or when an exact
 +      match for CHARPOS is found.
 +      (rows_from_pos_range): New function.
 +      (mouse_face_from_buffer_pos): Use it instead of calling
 +      row_containing_pos for START_CHARPOS and END_CHARPOS.  Rewrite the
 +      function to support mouse highlight in bidi-reordered lines and
 +      not to assume that START_CHARPOS is always in mouse_face_beg_row.
 +      If necessary, swap mouse_face_beg_row and mouse_face_end_row so
 +      that the former is always above the latter or identical to it.
 +      (show_mouse_face): Support drawing highlighted R2L lines.
 +      (coords_in_mouse_face_p): New function, bidi-aware.
 +      (cursor_in_mouse_face_p, note_mouse_highlight, erase_phys_cursor):
 +      Call it instead of comparing with mouse-face members of dpyinfo.
 +      (note_mode_line_or_margin_highlight): Fix confusingly swapped
 +      usage of hpos and vpos.
 +
 +2010-10-22  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xrdb.c: Include keyboard.h for MOTIF.
 +
 +      * xmenu.c: Revert 2010-07-27 change: lwlib.h is needed for
 +      MOTIF (Bug#7263).
 +
 +      * xfns.c: Include Xm/TextF and Xm/List.
 +      (file_dialog_cb, file_dialog_unmap_cb, clean_up_file_dialog): Make
 +      ANSI prototypes.
 +
 +2010-10-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (SOME_MACHINE_LISP): Add w32-vars.
 +      Remove ccl and duplicate mouse.
 +
 +2010-10-21  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * insdel.c (prepare_to_modify_buffer): Don't set
 +      saved-region-selection if modification hooks are disabled.
 +
 +2010-10-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cmds.c (Fdelete_char): Doc fix.
 +
 +2010-10-19  Ken Brown  <kbrown@cornell.edu>
  
        * s/cygwin.h (SIGNALS_VIA_CHARACTERS): New define (bug#7225).
  
 -2010-10-15  Kenichi Handa  <handa@m17n.org>
 +2010-10-19  Kenichi Handa  <handa@m17n.org>
  
        Fix incorrect font metrics when the same font is opened with
        different pixelsizes.
        (xftfont_shape): New function.
        (syms_of_xftfont): Set xftfont_driver.shape.
  
 -2010-10-13  Damyan Pepper  <damyanp@gmail.com>
 +2010-10-18  Julien Danjou  <julien@danjou.info>
 +
 +      * frame.c (Fframe_pointer_visible_p):
 +      Add `frame-pointer-visible-p' to get the pointer visibility.
 +
 +2010-10-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (emacs_gnutls_read): Return 0 if we get a
 +      non-"EAGAIN"-like error to signal to Emacs that the socket should
 +      be closed.
 +
 +2010-10-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * unexcoff.c (make_hdr): Fix prototype according to changes in
 +      2010-10-03T13:59:56Z!dann@ics.uci.edu.
 +
 +      * image.c (tiff_load): Cast 3rd argument to avoid compiler warning.
 +
 +2010-10-15  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * Makefile.in (really-oldXMenu): Fix typo in variable name that
 +      made building the X menu fail.
 +      (really-oldXMenu): Fix my previous fix.
 +
 +2010-10-14  Damyan Pepper  <damyanp@gmail.com>
  
        Fix handling of font properties on Windows (bug#6303).
        * font.c (font_filter_properties): New function, refactored from
        (w32font_filter_properties): New function.
        (w32font_driver): Add w32font_filter_properties.
  
 -2010-10-12  Juanma Barranquero  <lekktu@gmail.com>
 +2010-10-14  Juanma Barranquero  <lekktu@gmail.com>
  
        * font.c (Ffont_variation_glyphs):
        * ccl.c (Fccl_execute_on_string): Fix typo in docstring.
  
 -2010-10-10  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-10-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32fns.c (w32_wnd_proc, file_dialog_callback):
 +      * w32font.c (w32_generic_family):
 +      * w32inevt.c (key_event):
 +      * w32menu.c (fill_in_menu):
 +      * w32proc.c (reader_thread, w32_executable_type, compare_env)
 +      (merge_and_sort_env, int_from_hex, enum_locale_fn, enum_codepage_fn):
 +      * w32term.c (w32_read_socket): Make static.
 +
 +2010-10-13  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * image.c (DEF_IMGLIB_FN): Add argument to adapt to strict
 +      prototypes; all callers changed.
 +
 +2010-10-13  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (TLIB2): Rename from TLIBW32.
 +      (OBJ2): New macro.
 +      (WIN32OBJ, FONTOBJ): Remove.
 +      (OBJ1): Redistribute object files with OBJ2.
 +      (LIBS, $(TEMACS)): Use TLIB2.
 +      (make-buildobj-CMD, make-buildobj-SH): Use OBJ2.
 +      ($(TLIB2), TAGS, TAGS-LISP, TAGS-gmake): Depend on OBJ2.
 +
 +2010-10-13  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emacs.c (Vdynamic_library_alist)
 +      (syms_of_emacs) <dynamic-library-alist>: Move from image.c and rename.
 +      Doc fix.
 +
 +      * lisp.h (Vdynamic_library_alist): Declare extern.
 +
 +      * image.c (Vimage_library_alist)
 +      (syms_of_image) <image-library-alist>: Move to emacs.c and rename.
 +      (lookup_image_type): Use Vdynamic_library_alist.
 +      (Finit_image_library): Doc fix.
 +
 +2010-10-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in (lispsource, libsrc, etc, oldxmenudir, lwlibdir)
 +      (lispdir): Remove trailing /, update all uses.
 +
 +2010-10-12  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsterm.m (Qleft): Declare.
        (ns_right_alternate_modifier): New variable
        as emacs modifier for NSRightAlternateKeyMask.
        (syms_of_nsterm): DEFVAR_LISP ns-right-alternate-modifier.
  
 +2010-10-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (emacs_gnutls_write): If we're trying to write before
 +      gnutls is ready, return EAGAIN as the errno.
 +
 +2010-10-10  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vm-limit.c:
 +      * unexhp9k800.c:
 +      * unexelf.c:
 +      * unexaix.c:
 +      * termcap.c: Remove #ifdef emacs / #ifndef emacs code, unused.
 +
 +      * Makefile.in (temacs): Use $(ALL_CFLAGS) on the link line.
 +      (PROFILING_LDFLAGS): Remove, not needed anymore.
 +
 +      * Makefile.in: Use $(...) everywhere instead of ${...}
 +      (CRT_DIR): Move near potential user.
 +      (START_FILE): Move near CRT_DIR, it might use it.
 +
 +      * sysdep.c (LPASS8): Remove, unused.
 +      (emacs_ospeed): Change from being a global to a local in the only
 +      user: init_baud_rate.
 +
 +2010-10-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (syms_of_gnutls): All the bootprops are keywords.
 +      (emacs_gnutls_write): Remove the debuggin fsync call.
 +      (emacs_gnutls_read): Return -1 if we got an error from
 +      gnutls_read.  This allows us to actually read lots of data from
 +      the GnuTLS stream.
 +      (emacs_gnutls_write): Check for GNUTLS_E_AGAIN and not EINTR.
 +      According to the documentation, this is correct, and it seems to
 +      make things work.
 +
 +2010-10-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xterm.c (x_draw_relief_rect): Clear corner pixels.
 +
  2010-10-08  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * dbusbind.c (xd_get_dispatch_status): Return a Lisp_Object.
 -      (xd_pending_messages): Catch xd_get_dispatch_status calls.
 +      * keyboard.c: Revert last change; it was not intended to be
 +      synchronized with the trunk.
  
  2010-10-08  Kenichi Handa  <handa@m17n.org>
  
        * coding.c (complement_process_encoding_system): Fix previous change.
  
 -2010-10-03  Michael Albinus  <michael.albinus@gmx.de>
 +2010-10-08  Michael Albinus  <michael.albinus@gmx.de>
  
        * dbusbind.c (syms_of_dbusbind): Move putenv call ...
        (Fdbus_init_bus): ... here.  (Bug#7113)
  
 -2010-10-03  Glenn Morris  <rgm@gnu.org>
 +2010-10-08  Glenn Morris  <rgm@gnu.org>
  
        * buffer.c (before-change-functions, after-change-functions):
        Three-year overdue doc fix following 2007-08-13 change.
  
 -2010-10-02  Kenichi Handa  <handa@m17n.org>
 +2010-10-08  Kenichi Handa  <handa@m17n.org>
  
        * coding.c (coding_inherit_eol_type): If parent doesn't specify
        eol-format, inherit from the system's default.
        (complement_process_encoding_system): Make a new coding system
        inherit the original eol-format.
  
 -2010-09-30  Kenichi Handa  <handa@m17n.org>
 +2010-10-08  Kenichi Handa  <handa@m17n.org>
  
        * coding.c (complement_process_encoding_system): New function.
  
        (send_process): Complement the coding system for encoding what
        sent to the process.
  
 -2010-09-29  Kenichi Handa  <handa@m17n.org>
 +2010-10-08  Kenichi Handa  <handa@m17n.org>
  
        * xfont.c (xfont_open): Fix setting of font->average_width from
        :avgwidth property (Bug#7123).
  
 -2010-09-28  Michael Albinus  <michael.albinus@gmx.de>
 +2010-10-08  Michael Albinus  <michael.albinus@gmx.de>
  
        * dbusbind.c (syms_of_dbusbind): Use putenv instead of setenv, it
        is more portable.
        (kbd_buffer_get_event): ... here. This is needed for cygwin, which
        has not defined SIGIO.
  
 -2010-09-27  Michael Albinus  <michael.albinus@gmx.de>
 +2010-10-08  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * dbusbind.c (syms_of_dbusbind): Set $DBUS_FATAL_WARNINGS to "0".
 -      (Bug#7113)
 +      * xterm.c (x_draw_relief_rect): If box width is larger than 1,
 +      draw the outermost line using the black relief, for legibility.
 +      Omit drawing the four corner pixels.
  
 -2010-09-26  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-10-04  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * xgselect.c (xg_select): Clear file descriptors not set from
 -      rfds and wfds.
 +      * keyboard.c (echo_prompt): Function moved into read_key_sequence.
 +      (read_key_sequence): Inline echo_prompt.
 +      (echo_dash): Add a dash only if key is continued (Bug#7137).
  
 -2010-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-10-04  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * syntax.c (back_comment): Detect the case where a 1-char comment
 -      starter is also the 2nd char of a 2-char comment ender.
 +      Remove O_RDONLY, O_WRONLY definitions, not needed.
 +      * unexcoff.c:
 +      * lread.c:
 +      * fileio.c:
 +      * doc.c:
 +      * callproc.c:
 +      * alloc.c:
 +      * termcap.c: Remove O_RDONLY O_WRONLY definitions.
  
 -2010-09-17  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-10-03  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * gtkutil.c (xg_tool_bar_menu_proxy): Set gtk-menu-items to TRUE.
 +      * gnutls.h (GNUTLS_LOG2): Convenience macro.
  
 -2010-09-12  Jan Djärv  <jan.h.d@swipnet.se>
 +      * gnutls.c: Add property list symbol holders.
 +      (emacs_gnutls_handshake): Clarify how sockets are passed to
 +      GnuTLS.
 +      (gnutls_log_function2): Convenience function using GNUTLS_LOG2.
 +      (Fgnutls_boot): Get all parameters from a plist.  Require trustfiles
 +      and keyfiles to be a list of file names.  Default to "NORMAL" for
 +      the priority string.  Improve logging.
  
 -      * xterm.c (get_current_vm_state): New function.
 -      (do_ewmh_fullscreen): Call get_current_vm_state and compare with
 -      want_fullscreen so set_wm_state calls are few (Bug#7013).
 -      (x_handle_net_wm_state): Move code to get_current_vm_state and
 -      call that function.
 +2010-10-03  Glenn Morris  <rgm@gnu.org>
  
 -2010-09-11  Courtney Bane  <emacs-bugs-7626@cbane.org>  (tiny change)
 +      * fileio.c (Vdirectory_sep_char): Remove.
  
 -      * term.c (tty_set_terminal_modes): Don't initialize twice (bug#7002).
 +2010-10-03  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-09-08  Kenichi Handa  <handa@m17n.org>
 +      * termhooks.h: Remove #ifdef CONSP.
  
 -      * coding.c (encode_coding_iso_2022): Don't optimize for ASCII if
 -      we may use designation or locking-shift.
 +      * xterm.c (NO_INLINE, noinline): Move definitions to ../configure.in.
  
 -2010-09-07  Kenichi Handa  <handa@m17n.org>
 +      Include <fcntl.h> unconditionally.
 +      * termcap.c:
 +      * sysdep.c:
 +      * lread.c:
 +      * keyboard.c:
 +      * filelock.c:
 +      * fileio.c:
 +      * doc.c:
 +      * callproc.c:
 +      * alloc.c: Remove include guards for <fcntl.h>, process.c already
 +      does it.
 +
 +      * process.c: Do not include <sys/wait.h>, syswait.h does it.
 +
 +      * sysdep.c (flush_pending_output): Remove code, does not do
 +      anything on any platform.
 +
 +      Remove unused code.
 +      * sysdep.c (select_alarm, sys_select, read_input_waiting): Remove
 +      select emulation, all systems support select.
 +      (set_exclusive_use): Remove, the only user is in an #if 0 block.
 +      * process.c (create_process): Remove #if 0 code.
 +
 +      Remove unused arguments for unexec.
 +      The third one is never used, and the last two are always passed as zero.
 +      * emacs.c (unexec): Add declaration.
 +      (Fdump_emacs): Only pass the first two arguments to unexec.
 +      Simplify #ifdef.
 +      * unexw32.c (unexec):
 +      * unexsol.c (unexec):
 +      * unexhp9k800.c (unexec):
 +      * unexcw.c (unexec): Remove the last 3 arguments, unused.
 +      * unexelf.c (unexec): Remove the last 3 arguments, unused.
 +      (find_section): Use const.
 +      * unexmacosx.c (unexec): Remove the last 3 arguments, unused.
 +      (unexec_error): Declare it NO_RETURN.
 +      * unexcoff.c (make_hdr): Assume bss_start is always zero, remove
 +      it as an argument, remove data_start and entry_address arguments, unused.
 +      (unexec): Remove bss_start, data_start and
 +      entry_address arguments.
 +      * unexaix.c (make_hdr): Assume bss_start is always zero, remove
 +      it as an argument, remove data_start and entry_address arguments, unused.
 +      (unexec): Remove bss_start, data_start and
 +      entry_address arguments.
 +
 +2010-10-03  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (TAGS, TAGS-LISP, TAGS-gmake): Add $(FONTOBJ).
 +
 +      * gnutls.c (emacs_gnutls_handshake, gnutls_make_error)
 +      (gnutls_emacs_global_init, gnutls_emacs_global_deinit): Make static.
 +      (Fgnutls_get_initstage, Fgnutls_deinit, Fgnutls_boot, Fgnutls_bye):
 +      Fix typos in docstrings.
 +      (Fgnutls_error_fatalp, Fgnutls_error_string): Doc fixes.
 +      (Fgnutls_errorp): Doc fix; use ERR for the argument name.
  
 -      * coding.c (detect_coding_emacs_mule): Fix checking of multibyte
 -      sequence when the source is multibyte.
 +2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-08-31  Kenichi Handa  <handa@m17n.org>
 +      * keyboard.c (command_loop_1): Make sure the mark is really alive
 +      before using it (Bug#7044).
  
 -      * dispextern.h (FACE_FOR_CHAR): Use an ASCII face for 8-bit
 -      characters.
 +2010-10-02  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * term.c (encode_terminal_code): Fix the previous change.
 -      (produce_glyphs): Don't set it->char_to_display here.
 -      Don't handle unibyte-display-via-language-environment here.
 -      (produce_special_glyphs): Set temp_it.char_to_display before
 -      calling produce_glyphs.
 +      * makefile.w32-in (tags): Rename target to full-tags.
  
 -      * xdisp.c (get_next_display_element): Set it->char_to_display
 -      here.  Convert all 8-bit bytes from unibyte buffer/string to 8-bit
 -      characters.
 -      (get_overlay_arrow_glyph_row): Set it.char_to_display too before
 -      calling PRODUCE_GLYPHS.
 -      (append_space_for_newline): Save and store it->char_to_display.
 -      Set it->char_to_display before calling PRODUCE_GLYPHS.
 -      (extend_face_to_end_of_line): Set it->char_to_display before
 -      calling PRODUCE_GLYPHS.
 -      (get_glyph_face_and_encoding): Set the glyph code an 8-bit
 -      character to its byte value.
 -      (get_char_glyph_code): New function.
 -      (produce_stretch_glyph): Set it2.char_to_display too before
 -      calling x_produce_glyphs.
 -      (x_produce_glyphs): Simplify by using the same code for ASCII and
 -      non-ASCII characters.  Don't set it->char_to_display here.
 -      Don't handle unibyte-display-via-language-environment here.  For a
 -      character of no glyph, use font->space_width instead of FONT_WIDTH.
 +2010-10-02  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-08-29  Kenichi Handa  <handa@m17n.org>
 +      * emacs.c (main): Remove !WINDOWSNT conditional.
 +      (Fkill_emacs): Don't mention exemption on MS-Windows.
  
 -      * term.c (encode_terminal_code): Encode byte chars to the
 -      correspnding bytes.
 +2010-10-02  Glenn Morris  <rgm@gnu.org>
  
 -2010-08-17  Andreas Schwab  <schwab@linux-m68k.org>
 +      * character.c (Fchar_bytes): Remove obsolete function.
 +      (syms_of_character): Remove Schar_bytes.
  
 -      * eval.c (Flet, Feval, Fapply, apply_lambda): Use SAFE_ALLOCA_LISP
 -      instead of SAFE_ALLOCA.
 +      * emacs.c (fatal_error_signal): Also run Fkill_emacs on SIGINT.
 +      (main) [!WINDOWSNT]: Handle SIGINT with fatal_error_signal
 +      in batch-mode.
 +      (Fkill_emacs): Doc fix.  Also run the hook in batch mode.
 +      (kill-emacs-hook): Doc fix.
 +
 +2010-10-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * xml.c (Flibxml_parse_xml_region, Flibxml_parse_html_region)
 +      (parse_region): Reworked to take regions instead of strings, and
 +      renamed to reflect that these are the libxml functions.
 +
 +2010-10-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * term.c (init_tty) [DOS_NT]: Don't call Wcm_clear after setting
 +      screen dimensions in tty->Wcm.
 +
 +      * xdisp.c (set_cursor_from_row): When the row is truncated and
 +      point is outside the range of displayed characters, position the
 +      cursor inside the scroll margin.  (Bug#6349)
 +
 +2010-10-01  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Do not include stdlib.h and string.h, config.h does it.
 +      * xfont.c:
 +      * w32term.c:
 +      * w32reg.c:
 +      * w32inevt.c:
 +      * w32heap.c:
 +      * w32console.c:
 +      * w16select.c:
 +      * unexsol.c:
 +      * term.c:
 +      * sound.c:
 +      * scroll.c (m):
 +      * gtkutil.c:
 +      * font.c:
 +      * filelock.c:
 +      * fileio.c:
 +      * dosfns.c:
 +      * dbusbind.c:
 +      * bidi.c:
 +      * callproc.c:
 +      * process.c:
 +      * msdos.c:
 +      * charset.c: Do not include stdlib.h and string.h, config.h does it.
 +
 +      * callproc.c (SIGCHLD): Remove conditional definition, syssignal.h defines it.
 +
 +      * process.c: Move #include <pty.h> earlier.
 +      (SIGCHLD): Remove conditional definition, syssignal.h defines it.
 +      (pty_name): Move definition later.
 +
 +      * nsselect.m (syms_of_nsselect):
 +      * nsmenu.m (syms_of_nsmenu):
 +      * nsfns.m (syms_of_nsfns):
 +      * msdos.c (syms_of_msdos):
 +
 +      * image.c (syms_of_image):
 +      * charset.c (syms_of_charset): Use intern_c_string instead of intern.
 +
 +      * point.h: Remove, unused.
 +
 +2010-10-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (TAGS, frc, TAGS-LISP, ../nt/TAGS, tags)
 +      (TAGS-gmake, TAGS-nmake, TAGS-LISP-gmake, TAGS-LISP-nmake)
 +      (nt-TAGS-gmake, nt-TAGS-nmake): New targets.
 +
 +2010-09-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * xml.c (parse_string): Use const.
 +
 +2010-09-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * eval.c (Fbacktrace): Don't overwrite print-level on exit.  Also
 +      only override Vprint_level if it isn't already bound, and increase
 +      the level to 8 to produce more useful backtraces for bug reports.
 +
 +2010-09-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in: ecrt0.c does not exist anymore, do not mention it.
 +
 +2010-09-30  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32console.c (vga_stdcolor_name): Remove unused function;
 +      presumed dead after 2007-11-30T13:57:21Z!jasonr@gnu.org.
 +
 +2010-09-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (emacs_gnutls_handshake): Made into internal function.
 +      (Fgnutls_boot): Start the handshake.
 +      (emacs_gnutls_read): Perform the handshake from the reader loop.
 +      (Fgnutls_boot): Remove some debugging messages.
 +      Change indentation throughout to use the Emacs style.
 +      (emacs_gnutls_handshake): Cast the fds to something that's
 +      possibly the expected length.
 +      (emacs_gnutls_write): Return -1 if we try to write before handshake.
 +
 +      * process.h (Lisp_Process): Add a gnutls_p field to Lisp_Process.
 +
 +      * process.c (make_process): Set the gnutls_p field to zero by
 +      default.
 +      (read_process_output): Always call the gnutls_read function if the
 +      stream is a gnutls stream.
 +      (send_process): Ditto for writes.
 +
 +      * gnutls.c (emacs_gnutls_write, emacs_gnutls_read): Refuse to read
 +      or write anything until the state is GNUTLS_STAGE_READY.
 +      (Fgnutls_boot): Mark the stream as being a gnutls stream.
 +
 +2010-09-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (reseat_1): Initialize bidi_it.paragraph_dir to
 +      NEUTRAL_DIR.
 +      (handle_invisible_prop, iterate_out_of_display_property)
 +      (next_element_from_buffer): If bidi_it.first_elt is set, call
 +      bidi_paragraph_init with NO_DEFAULT_P argument non-zero.
 +      (Bug#7128)
 +
 +      * print.c (print_object): Fix format string and argument types for
 +      printing a Lisp_Misc_Marker.
 +
 +      * xdisp.c (pos_visible_p, c_string_pos, number_of_chars)
 +      (load_overlay_strings, get_overlay_strings_1)
 +      (get_overlay_strings, forward_to_next_line_start)
 +      (back_to_previous_visible_line_start, reseat, reseat_to_string)
 +      (get_next_display_element, next_element_from_string)
 +      (next_element_from_c_string, next_element_from_buffer)
 +      (move_it_vertically_backward, move_it_by_lines, add_to_log)
 +      (message_dolog, message_log_check_duplicate, message2_nolog)
 +      (message3, message3_nolog, vmessage, set_message, set_message_1)
 +      (hscroll_window_tree, text_outside_line_unchanged_p)
 +      (set_cursor_from_row, set_vertical_scroll_bar, redisplay_window)
 +      (find_last_unchanged_at_beg_row)
 +      (find_first_unchanged_at_end_row, row_containing_pos)
 +      (trailing_whitespace_p, display_mode_element, decode_mode_spec)
 +      (display_count_lines, x_produce_glyphs, note_mouse_highlight): Use
 +      EMACS_INT for buffer and string positions.
 +
 +      * dispextern.h (struct it) <string_nchars>: Declare EMACS_INT.
 +      (row_containing_pos): Adjust prototype.
 +
 +      * lisp.h (pos_visible_p, message2, message2_nolog, message3)
 +      (message2_nolog, set_message): Adjust prototypes.
 +
 +2010-09-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gnutls.c (Fgnutls_boot): Remove unused vars `data' and `srp_cred'.
 +      (Fgnutls_boot): Use SDATA.
 +      (Fgnutls_handshake): Remove unused var `max_log_level'.
 +
 +2010-09-27  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-08-17  Chong Yidong  <cyd@stupidchicken.com>
 +      * dbusbind.c (syms_of_dbusbind): Set $DBUS_FATAL_WARNINGS to "0".
 +      (Bug#7113)
 +
 +2010-09-27  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xgselect.c (xg_select): Clear file descriptors not set from
 +      rfds and wfds.
 +
 +      * process.c (wait_reading_process_output): Add missing FD_CLR
 +      for write_mask (must mirror connect_wait_mask).
 +
 +2010-09-27  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnutls.c (gnutls_log_function): Show level and "gnutls.c"
 +      prefix.
 +      (Fgnutls_boot): Use changed process members.  Use log level with a
 +      function parameter to set it.  Bring back Emacs-level debugging
 +      messages at log level 1 and 2.
 +
 +      * process.c (make_process): Initialize gnutls_log_level.
 +
 +      * process.h: Add gnutls_log_level and rename x509_cred and
 +      anon_cred to have the gnutls_ prefix for consistency.
 +
 +      * gnutls.h (GNUTLS_LOG): Add convenience macro.
 +
 +2010-09-27  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32.c (g_b_init_get_sid_identifier_authority)
 +      (GetSidIdentifierAuthority_Proc, get_sid_identifier_authority):
 +      Remove, not used.
 +      (globals_of_w32): Don't set g_b_init_get_sid_identifier_authority.
 +      (init_winsock): Remove useless assignment.
 +      (open_process_token, get_token_information, lookup_account_sid)
 +      (get_sid_sub_authority, get_sid_sub_authority_count, get_file_security)
 +      (get_security_descriptor_owner, get_security_descriptor_group)
 +      (is_valid_sid, equal_sid, get_length_sid, copy_sid)
 +      (get_native_system_info, get_system_times, init_user_info, crlf_to_lf)
 +      (is_unc_volume, GetCachedVolumeInformation, get_volume_info)
 +      (is_fat_volume, open_unc_volume, read_unc_volume, close_unc_volume)
 +      (unc_volume_file_attributes, convert_from_time_t)
 +      (create_toolhelp32_snapshot, process32_first, process32_next)
 +      (open_thread_token, impersonate_self, revert_to_self)
 +      (get_process_memory_info, get_process_working_set_size)
 +      (global_memory_status, global_memory_status_ex, socket_to_fd)
 +      (shutdown_handler): Make static.
 +
 +2010-09-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbusbind.c (dbus_fd_cb, xd_get_dispatch_status)
 +      (xd_pending_messages): Functions removed.
 +      (xd_read_queued_messages): Add parameters fd, *data, for_read in
 +      order to be compatible with add_read_fd.  Determine bus from data,
 +      and call xd_read_message just for this bus.
 +      (xd_add_watch): Use xd_read_queued_messages as callback function.
 +      Add data.
 +
 +      * lisp.h (xd_pending_messages, xd_read_queued_messages): Remove.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (gnutls_log_function): Added more debugging.
 +      (emacs_gnutls_read): Don't infloop while reading.
 +
 +2010-09-27  Kenichi Handa  <handa@m17n.org>
 +
 +      These changes are to remove restriction on the number of glyphs in
 +      one composition.
 +
 +      * dispextern.h (struct glyph): Change the member "slice" to union.
 +      Remove u.cmp.from and u.cmp.to.  Give more bits to u.cmp.id.
 +      (GLYPH_SLICE_EQUAL_P): Adjusted for the above change.
 +
 +      * dispnew.c (buffer_posn_from_coords): Use glyph->slice.img
 +      instead of glyph->slice.
 +      (marginal_area_string): Likewise.
 +
 +      * term.c (encode_terminal_code): Use glyph->slice.cmp instead of
 +      glyph->u.cmp.
 +      (append_composite_glyph): Likewise.
 +
 +      * xdisp.c (dump_glyph): Use glyph->slice.cmp instead of
 +      glyph->u.cmp.
 +      (fill_gstring_glyph_string, x_get_glyph_overhangs)
 +      (append_composite_glyph): Likewise.
 +      (fill_image_glyph_string): Use glyph->slice.img instead of
 +      glyph->slice.
 +      (append_glyph, produce_image_glyph, append_stretch_glyph)
 +      (note_mouse_highlight): Likewise.
 +
 +2010-09-26  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * process.c (add_keyboard_wait_descriptor)
 +      (delete_keyboard_wait_descriptor): Reinstate ifdef subprocesses.
 +      (wait_reading_process_output): Don't pass write_mask to select
 +      if SELECT_CANT_DO_WRITE_MASK is defined.
 +      (SELECT_CANT_DO_WRITE_MASK): Define if SELECT_CANT_DO_WRITE_MASK.
 +
 +      * process.h (add_read_fd, delete_read_fd, add_write_fd)
 +      (delete_write_fd): Declare.
 +
 +      * process.c (gpm_wait_mask, max_gpm_desc): Remove.
 +      (write_mask): New variable.
 +      (max_input_desc): Renamed from max_keyboard_desc.
 +      (fd_callback_info): New variable.
 +      (add_read_fd, delete_read_fd, add_write_fd, delete_write_fd):
 +      New functions.
 +      (Fmake_network_process): FD_SET write_mask.
 +      (deactivate_process): FD_CLR write_mask.
 +      (wait_reading_process_output): Connecting renamed to Writeok.
 +      check_connect removed.  check_write is new.  Remove references to gpm.
 +      Use Writeok/check_write unconditionally (i.e. no #ifdef
 +      NON_BLOCKING_CONNECT) instead of Connecting.
 +      Loop over file descriptors and call callbacks in fd_callback_info
 +      if file descriptor is ready for I/O.
 +      (add_gpm_wait_descriptor): Just call add_keyboard_wait_descriptor.
 +      (delete_gpm_wait_descriptor): Just call delete_keyboard_wait_descriptor.
 +      (keyboard_bit_set): Use max_input_desc.
 +      (add_keyboard_wait_descriptor, delete_keyboard_wait_descriptor):
 +      Remove #ifdef subprocesses.  Use max_input_desc.
 +      (init_process): Initialize write_mask and fd_callback_info.
 +
 +      * keyboard.c (readable_events, gobble_input): Remove DBUS code.
 +
 +      * dbusbind.c: Include process.h.
 +      (dbus_fd_cb, xd_find_watch_fd, xd_toggle_watch)
 +      (xd_read_message_1): New functions.
 +      (xd_add_watch, xd_remove_watch): Call xd_find_watch_fd.
 +      Handle watch for both read and write.
 +      (Fdbus_init_bus): Also register xd_toggle_watch.
 +      (Fdbus_call_method_asynchronously, Fdbus_method_return_internal)
 +      (Fdbus_method_error_internal, Fdbus_send_signal): Remove call
 +      to dbus_connection_flush.
 +      (xd_read_message): Move most of the code to xd_read_message_1.
 +      Call xd_read_message_1 until status is COMPLETE.
 +
 +2010-09-26  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * term.c: Do not include sys/ioctl.h, not needed.
 +      (init_tty): Reorder code to reduce the number of #ifdefs.
 +      No code changes.
 +
 +2010-09-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * process.h: Set up GnuTLS support.
 +
 +      * process.c (make_process, Fstart_process)
 +      (read_process_output, send_process): Set up GnuTLS support for
 +      process input/output file descriptors.
 +
 +      * gnutls.h: The GnuTLS glue for Emacs, macros and enums.
 +
 +      * gnutls.c: The source code for GnuTLS support in Emacs.
 +
 +      * emacs.c: Set up GnuTLS support and call syms_of_gnutls.
 +
 +      * config.in: Set up GnuTLS support.
 +
 +      * Makefile.in (LIBGNUTLS_LIBS, LIBGNUTLS_CFLAGS, ALL_CFLAGS)
 +      (obj, LIBES): Set up GnuTLS support.
 +
 +2010-09-26  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32.c (get_emacs_configuration_options): Fix previous change.
 +
 +2010-09-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * insdel.c (prepare_to_modify_buffer): Ensure the mark marker is
 +      alive before using it (Bug#6977).
 +
 +2010-09-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * xdisp.c (face_before_or_after_it_pos): EMACS_INT/int fixup.
 +
 +      * dispextern.h: EMACS_INT/int fixup.
 +
 +      * xdisp.c (string_pos_nchars_ahead, init_iterator): EMACS_INT/int
 +      fixup.
 +
 +      * xrdb.c (magic_file_p): EMACS_INT/int fixup.
 +
 +2010-09-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * window.c (Fpos_visible_in_window_p, Fdelete_other_windows)
 +      (Fselect_window, window_scroll_pixel_based)
 +      (window_scroll_line_based, Frecenter, Fset_window_configuration):
 +      Use EMACS_INT for buffer positions.
 +
 +      * textprop.c (validate_interval_range, interval_of)
 +      (property_change_between_p, Fadd_text_properties)
 +      (set_text_properties_1, Fremove_text_properties)
 +      (Fremove_list_of_text_properties, Ftext_property_any)
 +      (Ftext_property_not_all, copy_text_properties)
 +      (text_property_list, extend_property_ranges)
 +      (verify_interval_modification): Use EMACS_INT for buffer
 +      positions.
 +
 +      * term.c (fast_find_position, term_mouse_highlight): Use EMACS_INT
 +      for buffer positions.
 +
 +      * process.c (read_process_output, send_process)
 +      (Fprocess_send_region, status_notify): Use EMACS_INT for buffer
 +      and string positions and size.
 +
 +      * print.c (print_object, print_string, strout): Use EMACS_INT for
 +      string indices.
 +
 +      * minibuf.c (string_to_object): Use EMACS_INT for string position
 +      and size.
 +
 +      * marker.c (verify_bytepos): Use EMACS_INT for buffer positions.
 +
 +      * lread.c <read_from_string_index, read_from_string_index_byte>
 +      <read_from_string_limit, readchar_count>: Define EMACS_INT.
 +      (readchar, unreadchar, read_internal_start): Use EMACS_INT for
 +      buffer positions and string length.
 +
 +      * keyboard.c <last_point_position, last_non_minibuf_size>: Declare
 +      EMACS_INT.
 +      (echo_truncate, adjust_point_for_property, read_char)
 +      (gen_help_event, make_lispy_event, modify_event_symbol)
 +      (Fexecute_extended_command, stuff_buffered_input): Use EMACS_INT
 +      for buffer positions and string length.
 +
 +      * keyboard.h (gen_help_event): Adjust prototype.
 +
 +      * termhooks.h <struct input_event>: Make `code' member EMACS_INT.
 +
 +      * commands.h <last_point_position>: Declare EMACS_INT.
 +
 +      * xdisp.c <help_echo_pos>: Define as EMACS_INT.
 +      (truncate_echo_area): Accept EMACS_INT argument.
 +
 +      * dispextern.h <help_echo_pos>: Declare EMACS_INT.
 +
 +      * lisp.h (truncate_echo_area): Adjust prototype.
 +
 +      * composite.c (composition_adjust_point): Return EMACS_INT.
 +
 +      * composite.h (composition_adjust_point): Adjust prototype.
 +
 +2010-09-25  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * process.c (Fmake_network_process): When arg :host is 'local,
 +      use address 127.0.0.1, not name "localhost".  (Bug#6781)
 +
 +2010-09-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * indent.c (Fcurrent_indentation, indented_beyond_p)
 +      (compute_motion): Use EMACS_INT for buffer position variables.
 +
 +      * lisp.h (indented_beyond_p): Adjust prototype.
 +
 +      * buffer.c (overlay_strings): Return EMACS_INT.
 +
 +      * buffer.h (overlay_strings): Adjust prototype.
 +
 +      * region-cache.c (pp_cache): Adjust format to arguments.
 +
 +      * eval.c <specpdl_size, lisp_eval_depth>: Declare EMACS_INT.
 +      (call_debugger): Use EMACS_INT for specpdl_size related variables.
 +      (verror): Use EMACS_INT for size of allocated buffer.
 +
 +      * keyboard.c (make_lispy_position): Use EMACS_INT for buffer
 +      positions.
 +
 +      * xdisp.c (redisplay_internal, try_window_id)
 +      (set_cursor_from_row, find_first_unchanged_at_end_row): Use
 +      EMACS_INT for buffer positions.
 +
 +      * dispextern.h (set_cursor_from_row): Adjust prototype.
 +
 +      * dispnew.c (increment_matrix_positions)
 +      (increment_row_positions, copy_glyph_row_contents)
 +      (mode_line_string, marginal_area_string): Use EMACS_INT for buffer
 +      positions.
 +
 +      * dispextern.h (mode_line_string, marginal_area_string)
 +      (increment_matrix_positions, increment_row_positions): Adjust
 +      prototypes.
 +
 +      * data.c (Faref, Faset): Use EMACS_INT for string length and
 +      positions.
 +
 +      * cmds.c (internal_self_insert): Use EMACS_INT for the count of
 +      characters to insert.
 +
 +      * ccl.c (Fccl_execute_on_string): Use EMACS_INT for string
 +      position and size.
 +
 +      * syntax.c (scan_words, update_syntax_table)
 +      (prev_char_comend_first, back_comment, skip_chars)
 +      (skip_syntaxes, Fforward_comment, Fbackward_prefix_chars): Use
 +      EMACS_INT for buffer and string positions.
 +
 +      * syntax.h (scan_words, update_syntax_table): Adjust prototypes.
 +
 +      * casefiddle.c (operate_on_word): Use EMACS_INT for buffer
 +      positions.
 +
 +2010-09-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * scroll.c (calculate_scrolling, line_ins_del)
 +      (calculate_direct_scrolling, scroll_cost): Fix EMACS_INT/int
 +      conversion.
 +
 +      * region-cache.c (move_cache_gap, set_cache_region, pp_cache)
 +      (region_cache_backward, region_cache_forward)
 +      (revalidate_region_cache, set_cache_region): FIX EMACS_INT/int
 +      conversion.
 +
 +      * xdisp.c (message_dolog): Fix EMACS_INT/int conversion.
 +
 +      * eval.c (verror): Fix EMACS_INT/int conversion.
 +
 +      * print.c (PRINTDECLARE, PRINTPREPARE, strout, print_string)
 +      (print_preprocess, print_check_string_charset_prop)
 +      (print_object): Fix EMACS_INT/int conversion.
 +
 +      * xdisp.c (message_dolog): Fix EMACS_INT/int conversion.
 +
 +2010-09-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * callproc.c (Fcall_process): Use EMACS_INT for count of
 +      characters read from the subprocess.
 +
 +      * bidi.c (struct bidi_paragraph_info): Use EMACS_INT for buffer
 +      positions.
 +      (bidi_cache_search, bidi_cache_find): Use EMACS_INT for buffer
 +      positions.
 +
 +      * buffer.c (struct sortvec): Use EMACS_INT for buffer positions.
 +      (struct sortstrlist, overlay_str_len): Use EMACS_INT for string
 +      length.
 +      (advance_to_char_boundary, Fset_buffer_multibyte)
 +      (overlays_at, overlays_in, mouse_face_overlay_overlaps)
 +      (overlay_touches_p, record_overlay_string, overlay_strings)
 +      (recenter_overlay_lists, fix_start_end_in_overlays)
 +      (modify_overlay, Fmove_overlay, report_overlay_modification)
 +      (evaporate_overlays): Use EMACS_INT for buffer positions.
 +
 +      * lisp.h (fix_start_end_in_overlays, overlay_touches_p): Adjust
 +      prototypes.
 +
 +      * dispextern.h (struct bidi_saved_info): Use EMACS_INT for buffer
 +      positions.
 +
 +      * fns.c (Fcompare_strings, Fstring_lessp, concat)
 +      (string_make_unibyte, Fstring_as_unibyte, Fsubstring)
 +      (Fsubstring_no_properties, substring_both, Ffillarray)
 +      (Fclear_string, mapcar1, Fmapconcat, Fmapcar, Fmapc)
 +      (Fbase64_encode_region, Fbase64_encode_string, base64_encode_1)
 +      (Fbase64_decode_region, Fbase64_decode_string, base64_decode_1)
 +      (Fmd5): Use EMACS_INT for buffer and string positions and length
 +      variables and arguments.
 +
 +      * lisp.h (substring_both): Adjust prototype.
 +
 +2010-09-24  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Remove W32 API function pointer unused since 2005-02-15 (revno 2005-02-15T23:19:26Z!jasonr@gnu.org).
 +      * w32fns.c (clipboard_sequence_fn): Don't declare.
 +      (globals_of_w32fns): Don't initialize it.
 +
 +2010-09-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * syntax.c (back_comment): Detect the case where a 1-char comment
 +      starter is also the 2nd char of a 2-char comment ender.
 +
 +2010-09-23  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (xg_tool_bar_menu_proxy): Set gtk-menu-items to TRUE.
 +
 +2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * eval.c (verror): EMACS_INT/int cleanup.
 +
 +      * lisp.h (SPECPDL_INDEX): Cast to int, since we're not going to
 +      unwind_protect more than 2GB worth of functions.
 +
 +      * editfns.c (Finsert_char): EMACS_INT/int cleanup.
 +
 +      * lisp.h: Have oblookup take EMACS_INT to allow interning big
 +      string and avoid compiler warnings.
 +      (USE_SAFE_ALLOCA): Cast to int to avoid compilation warnings in
 +      all users.
 +
 +      * lread.c (oblookup): EMACS_INT/int cleanup.
 +
 +      * cmds.c (Fforward_line, Fdelete_char): EMACS_INT/int cleanup.
 +
 +2010-09-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * editfns.c (clip_to_bounds): Return an EMACS_INT value.
 +
 +      * lisp.h (clip_to_bounds): Adjust prototype.
 +
 +      * intervals.c (adjust_for_invis_intang): Return EMACS_INT value.
 +
 +2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * lisp.h: doprnt.c EMACS_INT/int cleanup.
 +
 +      * doprnt.c (doprnt): EMACS_INT/int cleanup.
 +
 +      * doc.c (Fsnarf_documentation, get_doc_string): EMACS_INT/int
 +      cleanup.
 +
 +      * lisp.h: Change the definition of all marker.c functions that
 +      take and return buffer stuff to be EMACS_INT instead of int.
 +
 +      * marker.c (buf_charpos_to_bytepos, CONSIDER, set_marker_both)
 +      (buf_charpos_to_bytepos, bytepos_to_charpos)
 +      (buf_bytepos_to_charpos, Fbuffer_has_markers_at)
 +      (set_marker_restricted, set_marker_both): Convert int to EMACS_INT
 +      for all buffer positions.
 +
 +2010-09-23  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * intervals.c (traverse_intervals, rotate_right, rotate_left)
 +      (split_interval_right, find_interval, next_interval)
 +      (delete_node, delete_interval, interval_deletion_adjustment)
 +      (adjust_intervals_for_deletion, merge_interval_right)
 +      (merge_interval_left, graft_intervals_into_buffer)
 +      (copy_intervals): Convert EMACS_UINTs to EMACS_INT.
 +
 +      * intervals.h (traverse_intervals): Update prototype.
 +
 +2010-09-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * indent.c (compute_motion): Use EMACS_INT for arguments to
 +      region_cache_forward.
 +
 +      * region-cache.c (struct boundary, struct region_cache): Use
 +      EMACS_INT for positions.
 +      (find_cache_boundary, move_cache_gap, insert_cache_boundary)
 +      (delete_cache_boundaries, set_cache_region)
 +      (invalidate_region_cache, know_region_cache)
 +      (region_cache_forward, region_cache_backward, pp_cache): Use
 +      EMACS_INT for buffer positions.
 +
 +      * region-cache.h (know_region_cache, invalidate_region_cache)
 +      (region_cache_forward, region_cache_backward): Adjust prototypes.
 +
 +      * search.c (string_match_1, fast_c_string_match_ignore_case)
 +      (looking_at_1, scan_buffer, scan_newline)
 +      (find_next_newline_no_quit, find_before_next_newline)
 +      (search_command, trivial_regexp_p, search_buffer, simple_search)
 +      (boyer_moore, wordify, Freplace_match): Use EMACS_INT for buffer
 +      and string positions and length.
 +
 +      * lisp.h (scan_buffer, scan_newline, find_next_newline_no_quit)
 +      (find_before_next_newline): Adjust prototypes.
 +
 +      * editfns.c (transpose_markers, update_buffer_properties)
 +      (buildmark, clip_to_bounds, Fgoto_char, overlays_around)
 +      (get_pos_property, Fconstrain_to_field)
 +      (Fline_beginning_position, Fline_end_position, Fprevious_char)
 +      (Fchar_after, Fchar_before, Finsert_char)
 +      (Finsert_buffer_substring, Fcompare_buffer_substrings)
 +      (Fsubst_char_in_region, Fformat, Ftranspose_regions): Use
 +      EMACS_INT for buffer and string position variables.
 +      (Finsert_char): Protect against too large insertions.
 +
 +      * lisp.h (clip_to_bounds): Adjust prototype.
 +
 +      * intervals.c (traverse_intervals, rotate_right, rotate_left)
 +      (balance_an_interval, split_interval_right, split_interval_left)
 +      (find_interval, next_interval, update_interval)
 +      (adjust_intervals_for_insertion, delete_node, delete_interval)
 +      (interval_deletion_adjustment, adjust_intervals_for_deletion)
 +      (offset_intervals, merge_interval_right, merge_interval_left)
 +      (graft_intervals_into_buffer, adjust_for_invis_intang)
 +      (move_if_not_intangible, get_local_map, copy_intervals)
 +      (copy_intervals_to_string, compare_string_intervals)
 +      (set_intervals_multibyte_1): Use EMACS_INT for buffer positions
 +      and for interval tree size.
 +
 +      * intervals.h (traverse_intervals, split_interval_right)
 +      (split_interval_left, find_interval, offset_intervals)
 +      (graft_intervals_into_buffer, copy_intervals)
 +      (copy_intervals_to_string, move_if_not_intangible, get_local_map)
 +      (update_interval): Adjust prototypes.
 +
 +      * xdisp.c (check_point_in_composition, reconsider_clip_changes):
 +      Use EMACS_INT for buffer position variables and arguments.
 +
 +      * composite.c (get_composition_id, find_composition)
 +      (run_composition_function, compose_text)
 +      (composition_gstring_width, autocmp_chars)
 +      (composition_update_it, Ffind_composition_internal): Use EMACS_INT
 +      for buffer positions and string length variables and arguments.
 +
 +      * composite.h (get_composition_id, find_composition, compose_text)
 +      (composition_gstring_width): Adjust prototypes.
 +
 +      * editfns.c (Fformat): Use EMACS_INT for string size variables.
 +
 +      * xdisp.c (store_mode_line_noprop, display_mode_element): Use
 +      EMACS_INT for string positions.
 +
 +      * intervals.c (get_property_and_range): Use EMACS_INT for buffer
 +      position arguments.
 +
 +      * intervals.h (get_property_and_range): Adjust prototype.
 +
 +      * character.c (parse_str_as_multibyte, str_as_multibyte)
 +      (parse_str_to_multibyte, str_to_multibyte, str_as_unibyte)
 +      (string_count_byte8, string_escape_byte8, c_string_width)
 +      (strwidth, lisp_string_width, multibyte_chars_in_text): Use
 +      EMACS_INT for string length variables and arguments.
 +
 +      * character.h (parse_str_as_multibyte, str_as_multibyte)
 +      (parse_str_to_multibyte, str_to_multibyte, str_as_unibyte)
 +      (c_string_width, strwidth, lisp_string_width): Adjust
 +      prototypes.
 +
 +      * font.c (font_intern_prop): Use EMACS_INT for string length
 +      variables.
 +
 +      * font.c (font_intern_prop): Use EMACS_INT for string length
 +      variables.
 +
 +      * fns.c (Fstring_as_multibyte): Use EMACS_INT for string length
 +      variables.
 +
 +      * alloc.c <total_string_size>: Declare as EMACS_INT, not int.
 +      (Fmake_string): Protect against too large strings.
 +      (live_string_p, live_cons_p, live_symbol_p, live_float_p)
 +      (live_misc_p): Use ptrdiff_t instead of int for pointer
 +      differences.
 +      (string_bytes, check_sblock, check_string_free_list)
 +      (allocate_string_data, compact_small_strings, Fmake_string)
 +      (Fmake_bool_vector, make_string, make_unibyte_string)
 +      (make_multibyte_string, make_string_from_bytes)
 +      (make_specified_string_string, Fmake_list, Fmake_vector): Use
 +      EMACS_INT for string length variables and arguments.
 +      (find_string_data_in_pure, make_pure_string, make_pure_c_string)
 +      (Fpurecopy): Use EMACS_INT for string size.
 +      (mark_vectorlike, mark_char_table, mark_object): Use EMACS_UINT
 +      for vector size.
 +
 +      * lisp.h (make_string, make_unibyte_string, make_multibyte_string)
 +      (make_string_from_bytes, make_specified_string_string)
 +      (make_pure_string, string_bytes, check_point_in_composition):
 +      Adjust prototypes.
 +
 +2010-09-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * editfns.c (Fsubst_char_in_region, Ftranslate_region_internal)
 +      (check_translation): Use EMACS_INT for buffer positions and
 +      length.
 +
 +      * undo.c (record_marker_adjustment, record_delete)
 +      (record_change, record_point, record_insert)
 +      (record_property_change, Fprimitive_undo): Use EMACS_INT for
 +      buffer positions.
 +
 +      * lisp.h (record_marker_adjustment, record_delete)
 +      (record_change, record_point, record_insert)
 +      (record_property_change, Fprimitive_undo): Adjust prototypes.
 +
 +2010-09-22  Juanma Barranquero  <lekktu@gmail.com>
 +            Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (get_emacs_configuration_options): Fix buffer overrun.
 +
 +2010-09-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * minibuf.c (Fminibuffer_contents)
 +      (Fminibuffer_contents_no_properties)
 +      (Fminibuffer_completion_contents): Use EMACS_INT for minibuffer
 +      positions.
 +
 +      * keyboard.c (command_loop_1): Use EMACS_INT to compare point with
 +      mark.
 +
 +      * alloc.c (make_uninit_string, make_uninit_multibyte_string)
 +      (allocate_string_data): Accept EMACS_INT for string length.
 +
 +      * editfns.c (Ffield_string, Ffield_string_no_properties)
 +      (make_buffer_string, make_buffer_string_both, Fbuffer_substring)
 +      (Fbuffer_substring_no_properties, find_field, Fdelete_field)
 +      (Ffield_string, Ffield_string_no_properties, Ffield_beginning)
 +      (Ffield_end): Use EMACS_INT for buffer positions.
 +
 +      * insdel.c (prepare_to_modify_buffer): Use EMACS_INT to compare
 +      point with mark.
 +
 +      * lisp.h (allocate_string_data, make_uninit_string)
 +      (make_uninit_multibyte_string, make_buffer_string)
 +      (make_buffer_string_both): Adjust prototypes.
 +
 +2010-09-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xml.c: Switch to GNU indentation.
 +      (make_dom): Change parse tree format to match xml.el.
 +      (Fxml_parse_html_string_internal): Rename from html-parse-string.
 +      (Fxml_parse_string_internal): Rename from xml-parse-string.
 +
 +2010-09-22  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (compute_stop_pos): Call composition_compute_stop_pos
 +      only if we are not at a composition.
 +      (set_iterator_to_next): Give it->end_charpos to
 +      composition_compute_stop_pos.
 +      (set_iterator_to_next, next_element_from_buffer): Likewise.
 +
 +      * dispnew.c (buffer_posn_from_coords): Fix position when the
 +      current display element is a grapheme cluster in bidi-reordered
 +      region.
 +
 +2010-09-21  Ari Roponen  <ari.roponen@gmail.com>  (tiny change)
 +
 +      * doc.c (Fsnarf_documentation): Use memmove instead of memcpy as
 +      the regions may overlap.
 +
 +2010-09-21  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in ($(BLD)/sysdep.$(O)): Update dependencies.
 +
 +2010-09-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * emacs.c: Do not include sys/ioctl.h, not needed.
 +
 +      * doprnt.c: Do not include stdlib.h, config.h does it.
 +      Move #include before macro definition.
 +
 +2010-09-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in (temacs): Link using $(CC) not $(LD).
 +      (LD_FIRSTFLAG): Define using autoconf.
 +      (LD): Remove.
 +
 +      Remove HAVE_TERMIOS definitions.
 +      * s/usg5-4-common.h (HAVE_TERMIOS):
 +      * s/template.h (HAVE_TERMIOS):
 +      * s/gnu-linux.h (HAVE_TERMIOS):
 +      * s/darwin.h (HAVE_TERMIOS):
 +      * s/cygwin.h (HAVE_TERMIOS):
 +      * s/bsd-common.h (HAVE_TERMIOS):
 +      * s/aix4-2.h (HAVE_TERMIOS):
 +      * s/hpux10-20.h (HAVE_TERMIOS): Do not define, it is assumed
 +      defined on all non-MS platforms.
 +      (HAVE_PSTAT_GETDYNAMIC): Do not define, autoconf does it.
 +
 +      * xterm.c (xt_action_hook): Use const.
 +
 +2010-09-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Don't make W32 code conditional on HAVE_SOCKETS, it's always defined.
 +      * w32.c: Remove top-level uses of #ifdef HAVE_SOCKETS.
 +      (gethostname) [!HAVE_SOCKETS]: Remove.
 +      (SOCK_REPLACE_HANDLE): Remove macro.
 +      (socket_to_fd, sys_close, _sys_read_ahead, sys_read, sys_write)
 +      (term_ntproc, init_ntproc): Don't conditionalize on HAVE_SOCKETS.
 +      * w32proc.c: Remove top-level uses of #ifdef HAVE_SOCKETS.
 +      (syms_of_ntproc): Don't conditionalize on HAVE_SOCKETS.
 +
 +2010-09-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * deps.mk (xml.o): Add dependencies.
 +
 +      * xdisp.c (Fcurrent_bidi_paragraph_direction):
 +      Call bidi_paragraph_init with NO_DEFAULT_P non-zero.  (Bug#7038)
 +
 +      * bidi.c (bidi_paragraph_init): Accept an additional argument
 +      NO_DEFAULT_P; all callers changed.  If NO_DEFAULT_P is non-zero,
 +      search back until a paragraph with a strong directional character
 +      is found, and use that to determine paragraph's base direction.
 +
 +      * dispextern.h (bidi_paragraph_init): Update prototype.
 +
 +2010-09-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (_PROCESS_MEMORY_COUNTERS_EX): Don't define with versions
 +      of w32api >= 3.15.  (Bug#6989)
 +
 +2010-09-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * process.c (wait_reading_process_output): Don't message about
 +      accept-process-output unless the time limit really is zero.
 +
 +2010-09-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * frame.c (Ftool_bar_pixel_width): YAILOM (Yet another
 +      int/Lisp_Object mixup).
 +
 +2010-09-17  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * keyboard.c (parse_tool_bar_item): For QClabel, set TOOL_BAR_ITEM_LABEL
 +      not HELP.
 +
 +2010-09-17  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * frame.c (Ftool_bar_pixel_width): New function to expose tool
 +      bar's pixel width to Lisp (Bug#7048).
 +
 +2010-09-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * cmds.c (syms_of_cmds) <post-self-insert-hook>: Fix typos in docstring.
 +
 +2010-09-17  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (xg_pack_tool_bar): Call gtk_handle_box_set_handle_position
 +      with argument top/left if tool bar is vertical/horizontal (Bug#7051).
 +
 +2010-09-17  Kenichi Handa  <handa@m17n.org>
 +
 +      * ftfont.c (ftfont_check_otf): Fix previous change.
 +
 +2010-09-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * ftfont.c (ftfont_check_otf): Fix the case of checking just
 +      existence of GSUB or GPOS.
 +
 +2010-09-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * cmds.c (syms_of_cmds) <post-self-insert-hook>: Fix typos in docstring.
 +
 +2010-09-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * xml.c (parse_buffer): Renamed to parse_string(), since that's
 +      what it does.
 +      (parse_string): Return nil when the document can't be parsed.
 +
 +2010-09-14  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (get_current_vm_state): New function.
 +      (do_ewmh_fullscreen): Call get_current_vm_state and compare with
 +      want_fullscreen so set_wm_state calls are few (Bug#7013).
 +      (x_handle_net_wm_state): Move code to get_current_vm_state and
 +      call that function.
 +
 +2010-09-14  Courtney Bane  <emacs-bugs-7626@cbane.org>  (tiny change)
 +
 +      * term.c (tty_set_terminal_modes): Don't initialize twice (bug#7002).
 +
 +2010-09-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (encode_coding_iso_2022): Don't optimize for ASCII if
 +      we may use designation or locking-shift.
 +
 +2010-09-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (detect_coding_emacs_mule): Fix checking of multibyte
 +      sequence when the source is multibyte.
 +
 +2010-09-14  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * xml.c (Fxml_parse_string, Fxml_parse_string): Revert last change.
 +      Don't make first argument optional.  Doc fix.
 +
 +2010-09-14  Leo  <sdl.web@gmail.com>  (tiny change)
 +
 +      * xml.c (Fxml_parse_string, Fhtml_parse_string): Fix up the
 +      parameters for the doc string.
 +
 +2010-09-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * xml.c (Fhtml_parse_string, Fxml_parse_string): Mention BASE-URL.
 +
 +2010-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * fns.c (Fy_or_n_p): Move to lisp/subr.el.
 +      (syms_of_fns): Don't defsubr Sy_or_n_p.
 +      * lisp.h: Don't declare Fy_or_n_p.
 +      * fileio.c (barf_or_query_if_file_exists): Fy_or_n_p -> y-or-n-p.
 +
 +2010-09-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * xml.c (Fxml_parse_buffer): New function to parse XML files.
 +
 +2010-09-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * xml.c: New file.
 +      (Fhtml_parse_buffer): New function to interface to the libxml2
 +      html parsing function.
 +
 +2010-09-05  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * biditype.h: Regenerate.
 +
 +2010-09-04  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * nsimage.m (ns_load_image): Check argument types.
 +
 +      * image.c: Remove all uses of gcpro.
 +      (xpm_load): Check all lisp types.
 +      (pbm_load): Likewise.
 +      (png_load): Likewise.
 +      (jpeg_load): Likewise.
 +      (tiff_load): Likewise.
 +      (gif_load): Likewise.
 +      (imagemagick_load_image): Likewise.
 +      (imagemagick_load): Likewise.
 +      (svg_load): Likewise.
 +      (gs_load): Likewise.
 +
 +2010-09-04  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32uniscribe.c (uniscribe_shape): Update commentary.  Don't
 +      try to reorder grapheme clusters, since LGSTRING should always
 +      hold them in the logical order.
 +      (uniscribe_encode_char, uniscribe_shape): Force ScriptShape to
 +      return glyph codes in the logical order.
 +
 +2010-09-04  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * image.c (imagemagick_image_p): Replace bcopy by memcpy.
 +      (imagemagick_load_image): Fix type mismatch.
 +      (Fimagemagick_types): Likewise.  Doc fix.
 +
 +2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.h (struct dpyinfo): Remove cut_buffers_initialized.
 +
 +      * xterm.c (x_term_init): Don't set dpyinfo->cut_buffers_initialized.
 +
 +      * xselect.c: Remove declaration of cut-buffer objects and functions.
 +      (symbol_to_x_atom): Remove mapping to XA_CUT_BUFFERn.
 +      (x_atom_to_symbol): Remove mapping to QCUT_BUFFERn.
 +      (Fx_get_cut_buffer_internal, Fx_store_cut_buffer_internal)
 +      (Fx_rotate_cut_buffers_internal): Remove.
 +      (syms_of_xselect): Remove defsubr of above.
 +      Remove intern of QCUT_BUFFERn.
 +
 +2010-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * cmds.c (Vblink_paren_function): Remove.
 +      (internal_self_insert): Make it insert N chars at a time.
 +      Don't call blink-paren-function.
 +      (Fself_insert_command): Adjust accordingly.
 +      (syms_of_cmds): Don't declare blink-paren-function.
 +
 +2010-08-31  Kenichi Handa  <handa@m17n.org>
 +
 +      * dispextern.h (FACE_FOR_CHAR): Use an ASCII face for 8-bit
 +      characters.
 +
 +      * term.c (encode_terminal_code): Fix the previous change.
 +      (produce_glyphs): Don't set it->char_to_display here.
 +      Don't handle unibyte-display-via-language-environment here.
 +      (produce_special_glyphs): Set temp_it.char_to_display before
 +      calling produce_glyphs.
 +
 +      * xdisp.c (get_next_display_element): Set it->char_to_display
 +      here.  Convert all 8-bit bytes from unibyte buffer/string to 8-bit
 +      characters.
 +      (get_overlay_arrow_glyph_row): Set it.char_to_display too before
 +      calling PRODUCE_GLYPHS.
 +      (append_space_for_newline): Save and store it->char_to_display.
 +      Set it->char_to_display before calling PRODUCE_GLYPHS.
 +      (extend_face_to_end_of_line): Set it->char_to_display before
 +      calling PRODUCE_GLYPHS.
 +      (get_glyph_face_and_encoding): Set the glyph code an 8-bit
 +      character to its byte value.
 +      (get_char_glyph_code): New function.
 +      (produce_stretch_glyph): Set it2.char_to_display too before
 +      calling x_produce_glyphs.
 +      (x_produce_glyphs): Simplify by using the same code for ASCII and
 +      non-ASCII characters.  Don't set it->char_to_display here.
 +      Don't handle unibyte-display-via-language-environment here.  For a
 +      character of no glyph, use font->space_width instead of FONT_WIDTH.
 +
 +2010-08-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (Fwindow_system): Fix compilation for USE_LISP_UNION_TYPE.
 +
 +2010-08-31  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keyboard.c (command_loop_1): Don't call x-set-selection on tty.
 +
 +2010-08-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * marker.c (Fcopy_marker): Make the first arg optional.
 +
 +2010-08-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.c (composition_update_it): Fix computing of
 +      cmp_it->width.
 +
 +2010-08-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * term.c (encode_terminal_code): Encode byte chars to the
 +      corresponding bytes.
 +
 +2010-08-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (ns_draw_window_cursor): Draw BAR_CURSOR correct for R2L.
 +
 +2010-08-26  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (compute_stop_pos): Pay attention to bidi scan direction
 +      on calling composition_compute_stop_pos.
 +
 +2010-08-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (reorder_font_vector): Prefer a font-spec specifying
 +      :otf.
 +
 +      * composite.c (composition_compute_stop_pos): Don't break
 +      composition at PT.
 +      (composition_reseat_it): Likewise.  Fix calculation of character
 +      position starting a composition.
 +      (Fcomposition_get_gstring): Don't limit the number of components
 +      for automatic composition.
 +
 +2010-08-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.c (composition_compute_stop_pos): In forward search,
 +      pay attention to the possibility that some character after ENDPOS
 +      will be composed with charactrs before ENDPOS.
 +
 +2010-08-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keyboard.c (command_loop_1): Don't clobber primary selection
 +      during handle-switch-frame (Bug#6872).
 +
 +2010-08-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbusbind.c: Accept UNIX domain sockets as bus address.
 +      (Fdbus_close_bus): New function.
 +      (Vdbus_registered_buses): New variable.
 +      (xd_initialize): Implement string as bus address.
 +      (Fdbus_init_bus): Add bus to Vdbus_registered_buses).
 +      (Fdbus_get_unique_name, Fdbus_call_method)
 +      (Fdbus_call_method_asynchronously, Fdbus_method_return_internal)
 +      (Fdbus_method_error_internal, Fdbus_send_signal)
 +      (Fdbus_register_signal, Fdbus_register_method): Remove bus type
 +      check.  This is done in xd_initialize_bus.  Adapt doc string, if
 +      necessary.
 +      (xd_pending_messages, xd_read_queued_messages): Loop over buses in
 +      Vdbus_registered_buses.
 +      (Vdbus_registered_objects_table): Create hash.
 +
 +2010-08-22  Juri Linkov  <juri@jurta.org>
 +
 +      * keyboard.c (Fexecute_extended_command): Move reading a command name
 +      with `completing-read' to a new Elisp function `read-extended-command'.
 +      Call it to read a command to `function'  (bug#5364, bug#5214).
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs.c (main): Remove handling of --unibyte arg (Bug#6886).
 +
 +2010-08-22  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * eval.c (Flet, Feval, Fapply, apply_lambda): Use SAFE_ALLOCA_LISP
 +      instead of SAFE_ALLOCA.
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * eval.c (Flet, Feval, Fapply, apply_lambda): Use SAFE_ALLOCA
 +      (Bug#6214).
 +
 +2010-08-22  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * doc.c (Fsnarf_documentation): Set skip_file only if p[1] is S.
 +
 +2010-08-22  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * doc.c (Fsnarf_documentation): Initialize skip_file before
 +      build-files test.
 +
 +2010-08-22  Peter O'Gorman  <pogma@thewrittenword.com>  (tiny change)
 +
 +      * s/hpux10-20.h (HAVE_TERMIOS, NO_TERMIO, ORDINARY_LINK):
 +      New definitions.
 +      (HAVE_TERMIO): Remove.
 +
 +2010-08-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * deps.mk (sysdep.o, msdos.o): Depend on sysselect.h.
 +
 +      * sysselect.h [WINDOWSNT]: Don't define the FD_* and select stuff
 +      for w32.
 +
 +      * s/ms-w32.h (HAVE_SYS_TIMEB_H): Don't #undef HAVE_SYS_SELECT_H,
 +      it's done in nt/config.nt.
 +
 +      * makefile.w32-in ($(BLD)/sysdep.$(O)): Depend on sysselect.h.
 +
 +      * unexcoff.c (report_error, make_hdr, write_segment)
 +      (copy_text_and_data, copy_sym, mark_x, adjust_lnnoptrs, unexec):
 +      Convert argument lists and prototypes to ANSI C.
 +      (make_hdr, write_segment): Remove unused variables.
 +      (unexec): Remove commented-out line.  Initialize `new' to shut up
 +      compiler warnings.
 +
 +2010-08-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Simplify termio code.
 +      All non-MSDOS non-WINDOWSNT platforms define HAVE_TERMIOS, so
 +      HAVE_TERMIO code is obsolete.
 +      Replace HAVE_TERMIOS conditionals with !DOS_NT.
 +      * systty.h: Do not define HAVE_TCATTR.
 +      Remove HAVE_TERMIO, HAVE_LTCHARS and HAVE_TCHARS code.
 +      Do not define EMACS_HAVE_TTY_PGRP.  Only define
 +      EMACS_GET_TTY_PGRP for !DOS_NT.
 +      * sysdep.c: Include sysselect.h unconditionally.  Do not include
 +      sys/ioctl.h and termios.h, systty.h does it.  Use
 +      HAVE_SYS_UTSNAME_H instead of USG as an include guard.
 +      (init_baud_rate): Remove HAVE_TERMIO code.
 +      (child_setup_tty): Remove HAVE_TERMIO code.
 +      (emacs_get_tty, emacs_set_tty): Remove HAVE_TERMIO, HAVE_TCHARS
 +      and HAVE_LTCHARS code.  Use !DOS_NT instead of HAVE_TCATTR.
 +      (new_ltchars, new_tchars): Remove, unused.
 +      (init_sys_modes): Remove HAVE_TERMIO, HAVE_TCHARS and HAVE_LTCHARS
 +      code.  Remove special casing for __mips__, it was a no-op.  Remove
 +      HAVE_TCATTR conditional, it is implied by HAVE_TERMIOS.
 +      (init_sys_modes): Remove HPUX special case.
 +      * process.c: Include stdlib.h unconditionally.  Do not include
 +      fcntl.h, systty.h does it.  Remove conditional code for
 +      HAVE_SERIAL, it is always true.
 +      (process_send_signal): Remove HAVE_TERMIOS conditional, it's
 +      always true when SIGNALS_VIA_CHARACTERS is true.
 +      (Fcontinue_process, Fprocess_send_eof): Simplify conditionals:
 +      !WINDOWSNT means HAVE_TERMIOS.
 +      (create_process): Remove HAVE_TERMIOS, it's inside a HAVE_PTYS
 +      conditional, which is true for all HAVE_TERMIOS systems.
 +      * keyboard.c (init_keyboard): Do not use HAVE_TERMIO, use !DOS_NT
 +      instead of HAVE_TERMIOS.
 +      * emacs.c (shut_down_emacs): Use !defined DOS_NT instead of
 +      EMACS_HAVE_TTY_PGRP.
 +      * callproc.c (child_setup): Move EMACS_SET_TTY_PGRP use to the
 +      non-MSDOS, non-WINDOWSNT code, it's only defined for such systems
 +      anyway.
 +
 +2010-08-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (buffer_posn_from_coords): Fix off-by-one error in
 +      mirroring pixel positions.
 +
 +2010-08-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * alloc.c (malloc_sbrk_used, malloc_sbrk_unused): Remove,
 +      write only.
 +      (init_alloc_once): Remove writes to malloc_sbrk_unused, and
 +      malloc_sbrk_used, nothing uses them.
 +
 +      * puresize.h: Remove code assuming PNTR_COMPARISON_TYPE is not
 +      defined, unconditionally defined in lisp.h.
 +
 +      * term.c: Do not include <termios.h>, systty.h does it.
 +
 +      * s/unixware.h (HAVE_TCATTR):
 +      * s/aix4-2.h (HAVE_TCATTR): Remove definitions, not needed.
 +      systty.h defines it when HAVE_TERMIOS is defined.
 +
 +2010-08-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (buffer_posn_from_coords): Fix last change for text
 +      terminals: add one-character offset for R2L lines.
 +
 +      * emacs.c <emacs_version>: Add a comment regarding
 +      msdos/mainmake.v2's dependency on the syntax of this declaration.
 +
 +2010-08-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (buffer_posn_from_coords): Fix calculation of buffer
 +      position for R2L lines by mirroring the pixel position wrt the
 +      text are box.  Improve commentary.
 +
 +2010-08-20  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * image.c (imagemagick_clear_image): Remove debugging output.
 +
 +2010-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * cmds.c (Vself_insert_face, Vself_insert_face_command): Remove.
 +      (Qpost_self_insert_hook, Vpost_self_insert_hook): New vars.
 +      (internal_self_insert): Run Qpost_self_insert_hook rather than handle
 +      self-insert-face.
 +      (syms_of_cmds): Initialize the new vars.
 +
 +2010-08-19  Jason Rumney  <jasonr@gnu.org>
 +
 +      * w32menu.c (set_frame_menubar): Remove call to undefined function.
 +
 +      * w32fns.c (w32_wnd_proc): Don't check context before initializing.
 +
 +2010-08-19  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsselect.m (nxatoms_of_nsselect): Use "Selection" and "Secondary".
 +
 +2010-08-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xterm.c (x_draw_bar_cursor):
 +      * w32term.c (x_draw_bar_cursor): If the character under cursor is
 +      R2L, draw the bar cursor on its right rather than on its left.
 +
 +2010-08-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * eval.c (Fdefmacro): Only obey one declaration.
 +
 +      * casefiddle.c (casify_region): Setup gl_state.
 +
 +2010-08-18  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (ns_define_frame_cursor): Call x_update_cursor (Bug#6868).
 +
 +2010-08-18  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (update_frame_tool_bar): Literal strings are const char*.
 +
 +2010-08-18  David De La Harpe Golden  <david@harpegolden.net>
 +
 +      * nsselect.m (QCLIPBOARD, NXPrimaryPboard): Define.
 +      (symbol_to_nsstring): Map QCLIPBOARD => NSGeneralPboard,
 +      QPRIMARY => NXPrimaryPboard.
 +      (ns_string_to_symbol): NSGeneralPboard => QCLIPBOARD,
 +      NXPrimaryPboard => QPRIMARY.
 +      (nxatoms_of_nsselect): NXPrimaryPboard = PrimarySelection,
 +      NXSecondaryPboard = SecondarySelection.
 +      (syms_of_nsselect): Intern QCLIPBOARD (Bug#6677).
 +
 +2010-08-18  Joakim Verona  <joakim@verona.se>
 +
 +      * image.c: Add support for ImageMagick.  When HAVE_IMAGEMAGICK is
 +      defined:
 +      (imagemagick_image_p): New function to test for ImageMagic image.
 +      (imagemagick_load): New function to load ImageMagick image.
 +      (imagemagick_load_image): New function, helper for imagemagick_load.
 +      (imagemagick-types): New function.
 +      (Qimagemagick): New Lisp_object.
 +      (imagemagick-render-type): New variable, decides which renderer to use.
 +
 +2010-08-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gtkutil.c (update_frame_tool_bar): Don't assume TOOL_BAR_ITEM_LABEL
 +      is a string.
 +
 +2010-08-17  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m (ns_frame_parm_handlers): Add a slot for the
 +      x_set_tool_bar_position handler.
 +
 +2010-08-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c <w32_frame_parm_handlers>: Add a slot for the
 +      x_set_tool_bar_position handler, needed to support changes from
 +      2010-07-29T16:49:59Z!jan.h.d@swipnet.se for positioning the tool bar.  (Bug#6796)
 +
 +2010-08-16  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsselect.m: include keyboard.h for QPRIMARY, remove its
 +      declaration (Bug#6863).
 +      (syms_of_nsselect): Don't intern QPRIMARY.
 +
 +      * xselect.c: Remove declaration of QPRIMARY (Bug#6864).
 +
 +      * keyboard.h (QPRIMARY): Declare (Bug#6864).
 +
 +2010-08-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keyboard.c (command_loop_1): Avoid setting selection twice,
 +      since it's done in deactivate-mark as well.
 +      (Vselect_active_regions): Change default to t.  Replace `lazy'
 +      with non-default value `only', meaning only set PRIMARY for
 +      temporarily active regions.
 +
 +      * insdel.c (prepare_to_modify_buffer): Handle `only' value of
 +      select-active-regions.
 +
 +2010-08-15  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * keyboard.c (parse_tool_bar_item): Put in a bad label if :label
 +      isn't a string.
 +
 +2010-08-15  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * keyboard.c (parse_tool_bar_item): Avoid excessive use of strlen.
 +
 +2010-08-15  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * keyboard.c (parse_tool_bar_item): malloc buf.
 +      Set TOOL_BAR_ITEM_LABEL to empty string if not set to
 +      new_lbl (Bug#6855).
 +
 +2010-08-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xterm.c (x_draw_stretch_glyph_string):
 +      * w32term.c (x_draw_stretch_glyph_string): In R2L rows, display
 +      the cursor on the right edge of the stretch glyph.
 +
 +      * xdisp.c (window_box_right_offset, window_box_right):
 +      Fix commentary.
 +
 +      * xdisp.c (Fcurrent_bidi_paragraph_direction): Fix paragraph
 +      direction when point is inside a run of whitespace characters.
 +
 +      * bidi.c (bidi_at_paragraph_end): Remove obsolete comment.
 +
 +2010-08-14  Jason Rumney  <jasonr@gnu.org>
 +
 +      * keyboard.c (lispy_function_keys): Do not define VK_PACKET (bug#4836)
 +
 +2010-08-14  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * fns.c (Fmake_hash_table): Doc fix (Bug#6851).
 +
 +2010-08-13  Jason Rumney  <jasonr@gnu.org>
 +
 +      * w32menu.c (simple_dialog_show): Use unicode message box if available.
 +      (MessageBoxW_Proc): New function typedef.
 +      (unicode-message-box): New function pointer.
 +      (globals_of_w32menu): Import it from user32.dll. (Bug#5629)
 +
 +2010-08-13  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frame.h (Qtool_bar_position): Declare.
 +
 +      * xfns.c (Fx_create_frame): Call x_default_parameter for
 +      Qtool_bar_position.
 +
 +2010-08-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * unexcoff.c: Remove the parts used when "emacs" is not defined.
 +      (report_error, report_error_1): Ditto.
 +      (write_segment): Remove "#if 0" unused code.
 +      (make_hdr): Remove code that was "#ifndef NO_REMAP" before
 +      NO_REMAP was removed (in 2010-07-29T03:25:08Z!dann@ics.uci.edu).
 +      (start_of_text): Remove unused function (was used only if NO_REMAP
 +      was NOT defined).
 +
 +      * msdos.c (IT_set_face): Fix format string to match argument
 +      types.
 +      (IT_write_glyphs, IT_note_mode_line_highlight)
 +      (IT_set_frame_parameters): Remove unused variables.
 +      (x_set_menu_bar_lines): Declare set_menu_bar_lines.
 +      (IT_set_terminal_modes): Disambiguate expression in if clause.
 +      (Fmsdos_remember_default_colors): Return Qnil.
 +      (IT_set_frame_parameters): Add parens to disambiguate boolean
 +      expression for logging the cursor type to termscript.
 +      (keyboard_layout_list, keypad_translate_map)
 +      (grey_key_translate_map): Add braces in inner initializers.
 +      (dos_rawgetc): Add parens in condition for mouse-3 button-press.
 +      (dos_rawgetc): Remove unused label.
 +      (XMenuActivate): Add braces to remove ambiguous `else'.
 +      (dos_ttraw): Always return a value.
 +      (spawnve): Declare.
 +      (run_msdos_command): Cast 3rd arg of spawnve to "char **".
 +
 +      * dosfns.h (x_set_title): Declare.
 +
 +      * w16select.c (Fw16_set_clipboard_data, Fw16_get_clipboard_data):
 +      Remove unused variables.
 +
 +      * dosfns.c (Fint86, Fdos_memget, Fdos_memput): Remove unused
 +      variables.
 +      (init_dosfns): Declare get_lim_data.
 +      (system_process_attributes): Declare Fget_internal_run_time.
 +
 +      * xmenu.c (xmenu_show) [!USE_X_TOOLKIT && !USE_GTK]: Fix argument
 +      list to be consistent with menu.h.
 +
 +      * w32menu.c (add_menu_item, name_is_separator): Shut up compiler
 +      warnings due to mixing of "char *" and "const char *".
 +
 +2010-08-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Introduce a new comment style "c" flag.
 +      * syntax.c (SYNTAX_FLAGS_COMMENT_STYLEB)
 +      (SYNTAX_FLAGS_COMMENT_STYLEC): New macros.
 +      (SYNTAX_FLAGS_COMMENT_STYLE): Use them, add an argument.
 +      (syntax_prefix_flag_p): New function.
 +      (Fstring_to_syntax): Understand new "c" flag.
 +      (Finternal_describe_syntax_value): Recognize new flag; use the
 +      SYNTAX_FLAGS_* macros.
 +      (scan_sexps_forward, Fparse_partial_sexp): Change representation of
 +      comment style to accomodate the new styles.
 +      (back_comment, forw_comment, Fforward_comment, scan_lists)
 +      (scan_sexps_forward): Update code to obey the new comment style flag.
 +
 +      * syntax.h: Move SYNTAX_FLAGS_FOO() macros to syntax.c.
 +
 +      * casefiddle.c (casify_region): Use the new syntax_prefix_flag_p.
 +
 +2010-08-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xfns.c (x_defined_color): If USE_GTK, call xg_check_special_colors
 +      first.
 +      (Fx_hide_tip): Check FRAME_LIVE_P (f) before calling xg_hide_tooltip.
 +
 +      * gtkutil.h (xg_check_special_colors): Declare.
 +
 +      * gtkutil.c (xg_check_special_colors, style_changed_cb): New functions.
 +      (xg_create_frame_widgets): Connect theme name changes to
 +      style_changed_cb.
 +
 +      * xterm.c (emacs_class): New char[] for EMACS_CLASS.
 +      (xim_open_dpy, xim_initialize, xim_close_dpy): Use emacs_class.
 +      (x_term_init): Use char[] display_opt and name_opt instead of
 +      string literal.  file is const char*.
 +
 +      * xsmfns.c (NOSPLASH_OPT): Change to char[].
 +      (smc_save_yourself_CB): Do xstrdup on all ->type and ->name for
 +      props.  Free them at the end.
 +
 +      * xselect.c (Fx_get_atom_name): Use char empty[] instead of literal "".
 +
 +      * xrdb.c (get_system_app): Make path const and use char *p for
 +      non-const char.
 +
 +      * xmenu.c (Fx_popup_dialog): error_name is const char*.
 +      (xmenu_show): error parameter is const char **.  pane_string is const
 +      char *.
 +      (button_names): Is const char *.
 +      (xdialog_show): error_name and pane_string is const.
 +
 +      * process.h (synch_process_death): Is const char*.
 +
 +      * w32menu.c (w32_menu_show):
 +      * nsmenu.m (ns_menu_show): error parameter is const char **.
 +
 +      * menu.h (w32_menu_show, ns_menu_show, xmenu_show): error parameter
 +      is const char **.
 +
 +      * menu.c (Fx_popup_menu): error_name is const.
 +
 +      * keyboard.h (_widget_value): Add defined USE_GTK.  Replace Boolean
 +      with unsigned char and XtPointer with void *.
 +
 +      * gtkutil.h: Replace widget_value with struct _widget_value.
 +      (enum button_type, struct _widget_value): Remove and use the one from
 +      keyboard.h.
 +
 +      * gtkutil.c (get_utf8_string): Always return an allocated string.
 +      Parameter is const.
 +      (create_dialog, xg_create_one_menuitem, create_menus)
 +      (xg_item_label_same_p, xg_update_menu_item): Free result from
 +      get_utf8_string.
 +      (xg_separator_p, xg_item_label_same_p): label is const.
 +
 +      * font.h (font_open_by_name): Make name const.
 +
 +      * font.c (font_open_by_name): Make name const.
 +
 +      * floatfns.c (matherr): Use a const char* variable for x->name.
 +
 +      * emacs.c (main): Pass char[] to putenv instead of literal.
 +
 +      * callproc.c (synch_process_death): Make const.
 +      (Fcall_process): Make signame const.
 +
 +      * nsterm.h (parseKeyEquiv, addSubmenuWithTitle)
 +      (addDisplayItemWithImage): Use const char*.
 +
 +      * nsmenu.m (parseKeyEquiv, addSubmenuWithTitle)
 +      (addDisplayItemWithImage, update_frame_tool_bar): Use const char*.
 +
 +      * nsfont.m (ns_descriptor_to_entity): Use const char*.
 +
 +      * keyboard.h (_widget_value): name, value and key are const char*.
 +
 +      * unexmacosx.c (unexec_error): Use const char *.
 +
 +2010-08-09  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * font.h (font_parse_xlfd, font_parse_fcname, font_unparse_fcname)
 +      (font_parse_name, font_open_by_name):
 +      * font.c (font_parse_xlfd, font_parse_fcname, font_unparse_fcname)
 +      (font_parse_name, font_open_by_name): Remove const.
 +
 +2010-08-09  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      Use autoconf determined WORDS_BIGENDIAN instead of hardcoded
 +      definition.
 +
 +      * m/alpha.h: Don't define/undef WORDS_BIG_ENDIAN.
 +      * m/amdx86-64.h: Likewise.
 +      * m/arm.h: Likewise.
 +      * m/hp800.h: Likewise.
 +      * m/ia64.h: Likewise.
 +      * m/ibmrs6000.h: Likewise.
 +      * m/ibms390.h: Likewise.
 +      * m/intel386.h: Likewise.
 +      * m/iris4d.h: Likewise.
 +      * m/m68k.h: Likewise.
 +      * m/macppc.h: Likewise.
 +      * m/mips.h: Likewise.
 +      * m/sh3.h: Likewise.
 +      * m/sparc.h: Likewise.
 +      * m/template.h: Likewise.
 +      * m/vax.h: Likewise.
 +      * m/xtensa.h: Likewise.
 +      * fringe.c (init_fringe_bitmap): Test WORDS_BIGENDIAN instead of
 +      WORDS_BIG_ENDIAN.
 +      * lisp.h: Likewise.
 +      * md5.c: Likewise.
 +      * sound.c (le2hl, le2hs, be2hl, be2hs): Likewise.
 +
 +2010-08-09  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Use const char* instead of char*.
 +      Reduce the number of warnings with -Wwrite-strings.
 +      * xrdb.c (get_environ_db, get_system_name):
 +      * unexelf.c (find_section):
 +      * term.c (string_cost, string_cost_one_line, per_line_cost)
 +      (get_named_tty, init_tty):
 +      * sysdep.c (sys_subshell):
 +      * sound.c (sound_perror, sound_warning, vox_open, vox_init)
 +      (alsa_sound_perror, alsa_open, alsa_configure, alsa_init):
 +      * search.c (Freplace_match):
 +      * process.c (Fmake_network_process, send_process, init_process):
 +      * lread.c (Fload, init_lread):
 +      * keymap.c (Fdescribe_buffer_bindings, describe_map_tree):
 +      * keyboard.c (parse_tool_bar_item, struct event_head):
 +      * gtkutil.h (xg_get_font_name):
 +      * gtkutil.c (get_dialog_title, create_dialog, xg_get_font_name)
 +      (make_widget_for_menu_item, make_menu_item, create_menus)
 +      (xg_make_tool_item):
 +      * font.c (parse_matrix, font_parse_name):
 +      * floatfns.c (rounding_driver, float_error_fn_name):
 +      * filelock.c (get_boot_time_1, lock_file_1):
 +      * fileio.c (barf_or_query_if_file_exists, check_writable):
 +      * editfns.c (get_system_name, get_operating_system_release)
 +      (Fencode_time, Fset_time_zone_rule):
 +      * dispextern.h (string_cost, per_line_cost, get_named_tty, init_tty):
 +      * buffer.c (defvar_per_buffer): Use const.
 +
 +2010-08-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c: Include <stdlib.h>.
 +      (struct charset_sort_data): New struct.
 +      (charset_compare): New function.
 +      (Fsort_charsets): New function.
 +      (syms_of_charset): Declare Fsort_charsets as a Lisp function.
 +
 +      * coding.c (decode_coding_iso_2022): Fix checking of dimension
 +      number in CTEXT extended segment.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32fns.c (syms_of_w32fns) <x-max-tooltip-size>: Fix typo in docstring.
 +      * xfns.c (syms_of_xfns) <x-max-tooltip-size>: Reflow docstring.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * fns.c (Fsubstring_no_properties, Fnthcdr, Ffeaturep)
 +      (Fhash_table_size): Fix typos in docstrings.
 +      (Fmake_hash_table): Doc fix.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * minibuf.c (syms_of_minibuf) <read-buffer-function>:
 +      Doc fix (bug#5625).
 +
 +2010-08-08  Ken Brown  <kbrown@cornell.edu>
 +
 +      * dired.c (DIRENTRY_NONEMPTY) [cygwin]: Use d_ino instead of
 +      the MSDOS definition.
 +
 +2010-08-08  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Use const char* instead of char*.
 +      * xterm.c (x_create_toolkit_scroll_bar):
 +      * xfont.c (xfont_list_pattern):
 +      * xfns.c (x_default_scroll_bar_color_parameter)
 +      (xic_create_fontsetname, x_default_font_parameter)
 +      (x_screen_planes):
 +      * xdisp.c (c_string_pos, number_of_chars, reseat_to_string)
 +      (store_mode_line_string, decode_mode_spec, display_string):
 +      * menu.c (digest_single_submenu):
 +      * keymap.h (initial_define_key, initial_define_lispy_key):
 +      * keymap.c (initial_define_key, initial_define_lispy_key):
 +      * image.c (image_error, image_keyword):
 +      * gtkutil.h (xg_create_widget, xg_create_scroll_bar):
 +      * gtkutil.c (xg_create_widget, xg_create_scroll_bar):
 +      * ftfont.c (struct fc_charset_table, ftfont_spec_pattern)
 +      (ftfont_list, ftfont_match):
 +      * frame.c (frame_parm_table):
 +      * font.h (font_intern_prop, font_parse_xlfd, font_parse_fcname)
 +      (font_unparse_fcname, font_unparse_fcname, font_open_by_name)
 +      (font_add_log, font_deferred_log):
 +      * font.c (font_intern_prop, font_parse_xlfd, font_parse_fcname)
 +      (font_unparse_fcname, font_unparse_fcname, font_open_by_name)
 +      (font_add_log, font_deferred_log):
 +      * emacs.c (argmatch):
 +      * dispextern.h (struct it):
 +      * coding.c (ENCODE_DESIGNATION):
 +      * charset.c (define_charset_internal): Use const.
 +
 +      * s/freebsd.h (DECLARE_GETPWUID_WITH_UID_T): Remove, unused.
 +
 +      * xrdb.c: Remove include guard.
 +      Remove DECLARE_GETPWUID_WITH_UID_T conditional it had no effect.
 +      Remove #if 0 code.  Replace malloc->xmalloc, free->xfree,
 +      realloc->xrealloc instead of using #defines.
 +
 +2010-08-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * cmds.c (Fforward_line, Fbeginning_of_line, Fend_of_line):
 +      * editfns.c (Fline_beginning_position, Fline_end_position):
 +      State in the doc strings that start and end of line are in the
 +      logical order.
 +
 +      * xdisp.c (display_line): Move the handling of overlay arrow after
 +      the call to find_row_edges.  (Bug#6699)
 +
 +2010-08-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keyboard.c (command_loop_1):
 +      * insdel.c (prepare_to_modify_buffer): Don't call validate_region.
 +
 +2010-08-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * insdel.c (prepare_to_modify_buffer): Save active region text to
 +      Vsaved_region_selection.
 +
 +      * xselect.c (QPRIMARY): Move to keyboard.c.
 +
 +      * keyboard.c (Vselect_active_regions): Move from simple.el.
 +      (Vsaved_region_selection, Qx_set_selection, QPRIMARY, Qlazy): New vars.
 +      (command_loop_1): Set window selection prior to deactivating the mark.
 +
 +2010-08-07  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * alloc.c (lisp_malloc):
 +      * buffer.c (set_buffer_internal, set_buffer_internal_1):
 +      * charset.h (emacs_mule_charset):
 +      * dispextern.h (inhibit_free_realized_faces, redraw_frame)
 +      (redraw_garbaged_frames, scroll_cost, update_frame, scrolling)
 +      (bitch_at_user):
 +      * lisp.h (Fcheck_coding_system, Fget_text_property)
 +      (Qfunction, Qcompletion_ignore_case, QCwidth, QCsize):
 +      Remove duplicate declarations.
 +
 +2010-08-06  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * process.c: Simplify include logic.
 +
 +      * keyboard.h (quit_char): Add declaration.
 +      * process.h (QCport, QCspeed, QCprocess, QCbytesize, QCstopbits)
 +      (QCparity, Qodd, Qeven, QCflowcontrol, Qhw, Qsw, QCsummary):
 +      Add declarations.
 +      * sysdep.c:
 +      * w32.c: Remove the above declarations.
 +
 +      Remove extern declarations in .c files, .h files have them.
 +      * xterm.c:
 +      * xdisp.c:
 +      * msdos.c:
 +      * image.c:
 +      * gtkutil.c:
 +      * fileio.c:
 +      * eval.c: Remove declarations.
 +
 +      * frame.c (frame_params): Make const.
 +
 +      * lisp.h (fatal_error_signal, emacs_root_dir): Add declaration.
 +
 +      * emacs.c (emacs_copyright, emacs_version): Make static.
 +      (Vinitial_window_system, Vauto_save_list_file_name)
 +      (Vinhibit_redisplay): Remove declarations.
 +      (main): Remove HAVE_SHM code, unused.  Remove _I386 conditional
 +      for AIX.
 +
 +      Use const for some arrays and functions.
 +      * xterm.h (xg_set_icon_from_xpm_data):
 +      * xfns.c (xg_set_icon_from_xpm_data):
 +      * term.c (fkeys):
 +      * keyboard.c (lispy_accent_keys, lispy_function_keys)
 +      (lispy_multimedia_keys, lispy_kana_keys, iso_lispy_function_keys)
 +      (lispy_drag_n_drop_names, scroll_bar_parts, modify_event_symbol)
 +      (frame.c frame_parms):
 +      * emacs-icon.h (gnu_xpm_bits):
 +      * callint.c (callint_argfuns): Use const.
 +
 +2010-08-06  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * sysdep.c: Move include term.h last of includes (Bug#6812).
 +
 +2010-08-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (realloc_glyph_pool): Zero out newly allocated glyphs.
 +
 +      * msdos.c (IT_display_cursor): Log cursor position on termscript.
 +
 +      * .gdbinit (pgx): Display the avoid_cursor_p flag.
 +
 +2010-08-06  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in ($(BLD)/xdisp.$(O)): Update dependencies.
 +
 +2010-08-06  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.h (x_get_focus_frame): Declare.
 +
 +      * keyboard.h (poll_for_input_1): Unconditionally declare.
 +
 +      * nsterm.h (x_set_menu_bar_lines): Declare.
 +
 +      * window.c: Don't include menu.h, it depends on lots of other .h-files.
 +
 +      * xfaces.c (x_create_gc, x_free_gc): Convert to ANSI C prototypes.
 +
 +      * window.c: Include menu.h.
 +
 +      * unexmacosx.c (print_region_list, print_regions)
 +      (build_region_list, find_emacs_zone_regions)
 +      (unexec_regions_merge, read_load_commands, dump_it)
 +      (unexec_init_emacs_zone): Convert to ANSI C prototypes.
 +
 +      * term.c: Check HAVE_SYS_IOCTL_H.
 +
 +      * sysdep.c: Check HAVE_TERM_H.
 +
 +      * process.c: Check HAVE_UTIL_H.  Include nsterm.h if HAVE_NS.
 +
 +      * nsterm.m (ns_init_paths, ns_alloc_autorelease_pool)
 +      (ns_ring_bell, ns_defined_color, hide_hourglass)
 +      (x_display_pixel_height, x_display_pixel_width, syms_of_nsterm):
 +      Convert to ANSI C prototypes.
 +      (x_set_window_size, ns_draw_fringe_bitmap, judge): Move declarations
 +      before code.
 +
 +      * nsterm.h : Include sysselect.h.
 +      (x_sync, x_get_focus_frame, x_set_mouse_position)
 +      (x_set_mouse_pixel_position, x_make_frame_visible)
 +      (x_make_frame_invisible, x_iconify_frame, x_char_width, x_char_height)
 +      (x_pixel_width, x_pixel_height, x_set_frame_alpha, x_set_tool_bar_lines)
 +      (x_activate_menubar, free_frame_menubar, ns_init_paths, ns_select)
 +      (syms_of_nsterm, syms_of_nsfns, syms_of_nsmenu, syms_of_nsselect):
 +      Declare.
 +
 +      * nsmenu.m (popup_activated, name_is_separator)
 +      (syms_of_nsmenu): Convert to ANSI C prototypes.
 +      (runMenuAt): Prototypes and move declarations before code.
 +
 +      * nsimage.m (ns_load_image): Move NSTRACE after declarations.
 +
 +      * nsfont.m (ns_fallback_entity, syms_of_nsfont): Convert to ANSI C
 +      prototypes.
 +
 +      * nsfns.m (have_menus_p, ns_display_info_for_name)
 +      (x_set_cursor_type, ns_appkit_version_str)
 +      (ns_appkit_version_int, ns_do_applescript)
 +      (x_set_scroll_bar_default_width, x_sync, compute_tip_xy)
 +      (syms_of_nsfns): Convert to ANSI C prototypes.
 +
 +      * menu.h (x_set_menu_bar_line): Declare.
 +      (free_menubar_widget_value_tree et.al): Add HAVE_NS for these functions.
 +
 +      * lisp.h (fmod_float): Declare.
 +
 +      * image.c (xpm_scan, xpm_make_color_table_v)
 +      (xpm_put_color_table_v, xpm_get_color_table_v)
 +      (xpm_make_color_table_h, xpm_put_color_table_h)
 +      (xpm_get_color_table_h, xpm_str_to_color_key, xpm_load_image)
 +      (xpm_load): Convert to ANSI C prototypes.
 +
 +      * emacs.c: Include nsterm.h if HAVE_NS.
 +
 +      * bidi.c (bidi_dump_cached_states): Fix fprintf warning.
 +
 +2010-08-06  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * process.c: Remove HAVE_SOCKETS #ifdefs inside #ifdef
 +      subprocesses, only MSDOS does not define HAVE_SOCKETS.
 +      (socket_options): Use const char* for name.
 +
 +2010-08-06  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Fix changes in 2010-08-05T23:15:24Z!dann@ics.uci.edu..2010-08-05T23:34:12Z!dann@ics.uci.edu for Windows build.
 +
 +      * xmenu.c [USE_X_TOOLKIT || USE_GTK]:
 +      Don't declare xmalloc_widget_value and digest_single_submenu.
 +
 +      * w32font.c (Qlatin): Remove declaration.
 +
 +      * menu.h (xmalloc_widget_value, digest_single_submenu): Declare.
 +
 +      * dired.c (compile_pattern): Restore declaration.
 +
 +2010-08-05  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove extern declarations in .c files, .h files have them.
 +      * data.c:
 +      * dired.c:
 +      * editfns.c:
 +      * filelock.c:
 +      * fns.c:
 +      * font.c:
 +      * fontset.c:
 +      * frame.c:
 +      * fringe.c:
 +      * ftfont.c:
 +      * gtkutil.c:
 +      * indent.c:
 +      * keyboard.c:
 +      * keymap.c:
 +      * lread.c:
 +      * menu.c:
 +      * print.c:
 +      * search.c:
 +      * sound.c:
 +      * window.c:
 +      * xdisp.c:
 +      * xfaces.c:
 +      * xfns.c:
 +      * xfont.c:
 +      * xftfont.c:
 +      * xmenu.c:
 +      * xterm.c: Remove declarations.
 +
 +      Cleanup syssignal.h.
 +      * syssignal.h (sighold, sigrelse, RETSIGTYPE): Remove, unused.
 +      (main_thread): Move down to remove #ifdef.
 +      (SIGMASKTYPE, SIGEMPTYMASK, SIGFULLMASK, sigmask, sigunblock):
 +      Remove conditional definition following unconditional ones.
 +
 +      * lisp.h: Remove HAVE_SHM code, unused.
 +      (QCmap, QCrehash_size, QCrehash_threshold, QCsize, QCtest)
 +      (QCweakness, Qabove_handle, Qbackquote, Qbar, Qbelow_handle)
 +      (Qborder, Qbottom, Qbox, Qcircular_list, Qcomma, Qcomma_at)
 +      (Qcomma_dot, Qcursor, Qdefault, Qdown, Qend_scroll, Qeq, Qeql)
 +      (Qequal, Qfile_exists_p, Qfont_param, Qfringe, Qfunction)
 +      (Qfunction_documentation, Qhandle, Qhbar, Qheader_line, Qhollow)
 +      (Qidentity, Qleft_margin, Qmenu, Qmenu_bar_update_hook)
 +      (Qmode_line_inactive, Qmouse, Qoverriding_local_map)
 +      (Qoverriding_terminal_local_map, Qratio, Qregion, Qright_margin)
 +      (Qscroll_bar, Qtool_bar, Qtop, Qup, Qvertical_border, Qwhen)
 +      (Qwindow_scroll_functions, Vafter_load_alist)
 +      (Vauto_save_list_file_name, Vface_alternative_font_family_alist)
 +      (Vface_alternative_font_registry_alist, Vface_font_rescale_alist)
 +      (Vface_ignored_fonts, Vinhibit_redisplay, Vminibuffer_list)
 +      (Vprint_length, Vprint_level, Vscalable_fonts_allowed)
 +      (Vshell_file_name, Vsystem_name, Vwindow_scroll_functions)
 +      (Vwindow_system_version, Vx_no_window_manager, initial_argc)
 +      (initial_argv, last_nonmenu_event, load_in_progress)
 +      (noninteractive_need_newline, scroll_margin): Add declarations.
 +
 +      * keyboard.h (xmalloc_widget_value, digest_single_submenu): Remove
 +      declarations, menu.h has them.
 +      (QCbutton, QCtoggle, QCradio, QClabel, extra_keyboard_modifiers)
 +      (Vinput_method_function, Qinput_method_function)
 +      (Qevent_symbol_element_mask, last_event_timestamp):
 +      * dispextern.h (Voverflow_newline_into_fringe):
 +      * font.h (QCantialias, Qp, syms_of_ftfont, syms_of_xfns)
 +      (syms_of_ftxfont, syms_of_xftfont, syms_of_bdffont)
 +      (syms_of_w32font, syms_of_nsfont):
 +      * fontset.h (find_font_encoding, Qlatin):
 +      * frame.h (Qtooltip, Qrun_hook_with_args, Vmenu_bar_mode)
 +      (Vtool_bar_mode, set_frame_menubar):
 +      * ftfont.h (ftfont_font_format, ftfont_get_fc_charset):
 +      * xterm.h (Qx_gtk_map_stock):
 +      * keymap.h (meta_prefix_char): Add declarations.
 +
 +      * term.c: Remove dead code.
 +
 +      Fix emacs -Q -f server-start & emacsclient -t on GNU/Linux.
 +      * term.c (dissociate_if_controlling_tty): Use USG5 instead of
 +      USG.  This is equivalent to defined (USG) && !defined (BSD_PGRPS),
 +      which is what was there before BSD_PGRPS was removed.
 +
 +2010-08-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * deps.mk (unexcoff.o): Rename unexec.[co] => unexcoff.[co].
 +
 +      * unexcoff.c: Renamed from unexec.c.
 +
 +2010-08-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
 +
 +2010-08-03  Johan Bockgård  <bojohan@gnu.org>
 +
 +      * data.c (Flocal_variable_p): Handle variable aliases correctly.
 +      (Bug#6744)
 +
 +2010-08-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (x_create_toolkit_scroll_bar): Only set XtNbeNiceToColormap
 +      to TRUE if depth of screen is < 16.
 +
 +      * gtkutil.c (hierarchy_ch_cb, qttip_cb): Do not define unless
 +      USE_GTK_TOOLTIP.
 +      (xg_prepare_tooltip): Return 0 unless USE_GTK_TOOLTIP.
 +      (xg_show_tooltip, xg_hide_tooltip): Do nothing unless USE_GTK_TOOLTIP.
 +      (xg_create_frame_widgets): Surround tooltip-related code with ifdef
 +      USE_GTK_TOOLTIP.
 +      (xg_free_frame_widgets): Don't delete ttip_* unless USE_GTK_TOOLTIP.
 +
 +      * xterm.h (USE_GTK_TOOLTIP): New define.
 +      (struct x_output): Put ttip_* inside ifdef USE_GTK_TOOLTIP.
 +
 +      * sysdep.c (child_setup_tty): Enable ICANON in lflags and set VEOF
 +      to Control-D (Bug#6771).
 +
 +2010-08-02  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * editfns.c (Fregion_beginning, Fregion_end): Doc fixes (bug#6493).
 +      Wording by Drew Adams <drew.adams@oracle.com>.
 +
 +2010-08-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.h (struct x_output): Add ttip_widget, ttip_window and
 +      ttip_lbl.
 +
 +      * xterm.c (x_clear_frame): Check FRAME_GTK_WIDGET (f) before
 +      calling gtk_widget_queue_draw.
 +      (x_free_frame_resources): Call xg_free_frame_widgets.
 +
 +      * xfns.c (x_gtk_use_system_tooltips): New variable.
 +      (Fx_show_tip): If USE_GTK and x_gtk_use_system_tooltips, call
 +      new gtkutil tooltip functions to show the tooltip.
 +      (Fx_hide_tip): Call xg_hide_tooltip.
 +      (syms_of_xfns): Defvar x-gtk-use-system-tooltips.
 +
 +      * gtkutil.h (xg_free_frame_widgets, xg_prepare_tooltip)
 +      (xg_show_tooltip, xg_hide_tooltip): Declare.
 +
 +      * gtkutil.c (hierarchy_ch_cb, qttip_cb, xg_prepare_tooltip)
 +      (xg_show_tooltip, xg_hide_tooltip, xg_free_frame_widgets):
 +      New functions.
 +      (xg_create_frame_widgets): Set ttip_* to 0.  Set a dummy tooltip
 +      text so qttip_cb is called.  Connect query-tooltip to qttip_cb.
 +      Remove code that is commented out.
 +
 +2010-08-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keymap.c (Fdefine_key, Flookup_key): Say what event is invalid.
 +
 +2010-07-31  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xselect.c (x_own_selection): Use list4.
 +
 +2010-07-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * buffer.c (Qwindow): Do not define, already defined in data.c.
 +      (syms_of_buffer): Do not intern and staticpro Qwindow.  (Bug#6760)
 +
 +2010-07-29  Chad Brown  <yandros@mit.edu>
 +
 +      Replace tests for SYSV_SYSTEM_DIR with HAVE_DIRENT_H, set via autoconf.
 +      * dired.c, sysdep.c: Test HAVE_DIRENT_H instead of SYSV_SYSTEM_DIR.
 +      * config.in: Undef HAVE_DIRENT_H.
 +      * s/aix4-2.h, s/bsd-common.h, s/cygwin.h, s/gnu-linux.h,
 +      * s/msdos.h, s/usg5-4.h: Don't define SYSV_SYSTEM_DIR.
 +
 +2010-07-29  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Rename s/usg5-4.h -> s/usg5-4-common.h.
 +      * s/usg5-4.h: Rename file to ...
 +      * s/usg5-4-common.h: ... this for consistency with what we do for BSD.
 +      * s/unixware.h:
 +      * s/sol2-6.h:
 +      * s/irix6-5.h: Update includes accordingly.
 +
 +2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xfns.c (x_set_tool_bar_position): Remove debug fprintf.
 +
 +      * xterm.h (struct x_output): Add toolbar_top_height,
 +      toolbar_bottom_height, toolbar_left_width, toolbar_right_width.
 +      Remove toolbar_height.
 +      If USE_GTK: Add hbox_widget and toolbar_in_hbox.
 +      (FRAME_TOOLBAR_TOP_HEIGHT, FRAME_TOOLBAR_BOTTOM_HEIGHT)
 +      (FRAME_TOOLBAR_LEFT_WIDTH, FRAME_TOOLBAR_RIGHT_WIDTH): New macros.
 +      (FRAME_TOOLBAR_HEIGHT): Is now TOP_HEIGHT + BOTTOM_HEIGHT.
 +
 +      * xterm.c (x_set_window_size_1): Add FRAME_TOOLBAR_WIDTH to pixelwidth.
 +
 +      * xfns.c (x_set_tool_bar_position): New function.
 +      (xic_set_statusarea): Use FRAME_TOOLBAR_TOP_HEIGHT.
 +      (x_frame_parm_handlers): Add x_set_tool_bar_position.
 +      (syms_of_xfns): If USE_GTK, provide move-toolbar.
 +
 +      * window.c (calc_absolute_offset): Check for FRAME_TOOLBAR_TOP_HEIGHT
 +      and FRAME_TOOLBAR_LEFT_WIDTH.
 +
 +      * gtkutil.h (xg_change_toolbar_position): Declare.
 +
 +      * gtkutil.c (FRAME_TOTAL_PIXEL_WIDTH): New macro.
 +      (xg_frame_set_char_size): Add FRAME_TOOLBAR_WIDTH to pixelwidth.
 +      (xg_height_or_width_changed): Use FRAME_TOTAL_PIXEL_WIDTH.
 +      (xg_create_frame_widgets): Create a hobox for placing widgets
 +      vertically.  Use gtk_box_pack_start.
 +      (xg_height_or_width_changed): Renamed from xg_height_changed.
 +      (x_wm_set_size_hint): Add FRAME_TOOLBAR_WIDTH to base_width.
 +      (xg_update_frame_menubar, free_frame_menubar): Change to
 +      xg_height_or_width_changed.
 +      (xg_tool_bar_detach_callback): Update left/right/top/bottom tool bar
 +      size correctly.  Remove hardcoded 4, instead use handlebox size -
 +      toolbar size.
 +      (xg_tool_bar_attach_callback): Update left/right/top/bottom tool bar
 +      size correctly.  Use handlebox size + toolbar size as additional size.
 +      (xg_pack_tool_bar): POS is a new parameter.
 +      Set orientation of tool bar based on pos.
 +      Only make handlebox_widget if NULL.
 +      Check if tool bar goes to vbox or hbox depending on pos.
 +      (xg_update_tool_bar_sizes): New function.
 +      (update_frame_tool_bar): Remove old_req, new_req.  Do not get tool bar
 +      height, call xg_update_tool_bar_sizes instead.
 +      (free_frame_tool_bar): Remove from hbox or vbox depending on
 +      toolbar_in_hbox,  Set all FRAME_TOOLBAR_*_(WIDTH|HEIGHT) to zero.
 +      (xg_change_toolbar_position): New function.
 +
 +      * frame.h (struct frame): Add tool_bar_position.
 +      (Qbottom): Declare.
 +
 +      * frame.c (Qtool_bar_position): New variable.
 +      (make_frame): Set tool_bar_position to Qtop.
 +      (frame_parms): Add tool-bar-position.
 +      (x_report_frame_params): Store tool_bar_position.
 +      (x_set_fringe_width): Reset wm size hint after fringe changes.
 +
 +2010-07-29  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Make lisp_time_argument declaration work on all systems.
 +      * lisp.h (lisp_time_argument): Move declaration ...
 +      * systime.h (lisp_time_argument): ... here
 +      * editfns.c (lisp_time_argument): Remove declaration.  (Bug#6751)
 +
 +2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * vm-limit.c (POINTER): Add typedef for it.
 +      (start_of_data): Change return type from POINTER to char *.
 +
 +      * frame.h (Qtty_color_mode): Move declaration out of ifdef
 +      HAVE_WINDOW_SYSTEM.
 +
 +2010-07-29  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vm-limit.c: Do not include sys/resource.h, mem-limits.h does it.
 +      Remove reference to __osf__, unused.
 +
 +      * mem-limits.h: Remove duplicated includes.
 +      (NULL): Remove definition, unused.
 +      (POINTER): Remove definition.
 +      (start_of_data): Use char* in prototype, as the function
 +      definition does.
 +
 +      Remove extern declarations from .c files, and them to .h files.
 +      * keyboard.h (Qhelp_echo, waiting_for_input)
 +      (input_available_clear_time, ignore_mouse_drag_p)
 +      (Vdouble_click_time, real_this_command, Vthis_original_command):
 +      * keymap.h (Qremap, Qmenu_item, Voverriding_local_map)
 +      (Voverriding_local_map_menu_flag):
 +      * lisp.h (Qinteractive_form, use_file_dialog)
 +      (Qcursor_in_echo_area, QCascent, QCmargin, QCrelief, Qcount)
 +      (Qextension_data, QCconversion, QCcolor_symbols, QCheuristic_mask)
 +      (QCindex, QCmatrix, QCcolor_adjustment, QCmask)
 +      (Qrisky_local_variable, map_char_table_for_charset, Vprint_level)
 +      (Qfunction, debug_on_next_call, Qfield)
 +      (Vinhibit_field_text_motion, Vuser_login_name, lisp_time_argument)
 +      (Qpriority, Qwindow, Qevaporate, Qbefore_string, Qafter_string)
 +      (Qfile_directory_p, Qinsert_file_contents)
 +      (Qcompletion_ignore_case, Qcompletion_ignore_case)
 +      (Vcompletion_regexp_list, Vhistory_length, completion_ignore_case)
 +      (history_delete_duplicates, minibuffer_auto_raise, Qonly)
 +      (Qfile_name_handler_alist, Qfront_sticky, Qrear_nonsticky)
 +      (Qminibuffer_prompt)
 +      (Vtemporary_file_directory,char_ins_del_vector, Qface):
 +      * xterm.h (gray_bitmap_width, gray_bitmap_height)
 +      (gray_bitmap_bits, xic_create_fontsetname):
 +      * coding.h (Vtranslation_table_for_input): Add extern declarations.
 +
 +      * xsmfns.c (Vuser_login_name):
 +      * xrdb.c (Vdouble_click_time):
 +      * xfaces.c (xic_create_fontsetname):
 +      * w32select.c (waiting_for_input):
 +      * print.c (minibuffer_auto_raise):
 +      * msdos.c (Qhelp_echo):
 +      * macros.c (real_this_command):
 +      * keymap.c (Voverriding_local_map):
 +      * xterm.c (poll_for_input_1, gray_bitmap_width)
 +      (gray_bitmap_height, gray_bitmap_bits;
 +      * xmenu.c ( Voverriding_local_map)
 +      (Voverriding_local_map_menu_flag; Qmenu_item; use_dialog_box)
 +      (use_file_dialog, Xt_app_con):
 +      * xdisp.c (minibuffer_auto_raise, Voverriding_local_map)
 +      (Voverriding_local_map_menu_flag, Qmenu_item, Qface, Qinvisible)
 +      (Qwidth, Qinvisible, Qwindow, Qpriority, Qtool_bar_lines)
 +      (Qtool_bar_lines, ignore_mouse_drag_p):
 +      * minibuf.c (Voverriding_local_map, Qfield, Qfront_sticky)
 +      (Qrear_nonsticky, nconc2):
 +      * keyboard.c (current_global_map, minibuf_level, Qmenu_item)
 +      (Vhistory_length, Vtranslation_table_for_input, Qcomposition)
 +      (Qdisplay, Qafter_string, Qbefore_string, Qundefined):
 +      * fileio.c (use_dialog_box, use_file_dialog, Vuser_login_name)
 +      (minibuf_level, minibuffer_auto_raise, lisp_time_argument):
 +      * eval.c (Qinteractive_form, Qrisky_local_variable, Qfunction)
 +      (gc_in_progress):
 +      * doc.c (Voverriding_local_map, Qremap):
 +      * dired.c (completion_ignore_case, Qcompletion_ignore_case)
 +      (Vcompletion_regexp_list):
 +      * coding.c (Qmac, Qinsert_file_contents, Qwrite_region)
 +      (Qcompletion_ignore_case):
 +      * callint.c (Qcursor_in_echo_area, Qfile_directory_p, Qonly)
 +      (Vhistory_length, Vthis_original_command, real_this_command)
 +      (Qface, Qminibuffer_prompt, history_delete_duplicates):
 +      * image.c (Qrisky_local_variable):
 +      * fontset.c (QCname):
 +      * fns.c (minibuffer_auto_raise, QCname):
 +      * dispnew.c (char_ins_del_cost):
 +      * composite.c (font_fill_lglyph_metrics):
 +      * cmds.c (Qface, Vtranslation_table_for_input):
 +      * charset.c (map_char_table_for_charset, Qfile_name_handler_alist):
 +      * ccl.c (charset_unicode):
 +      * callproc.c (Vtemporary_file_directory):
 +      * buffer.c (emacs_strerror): Remove extern declarations.
 +
 +      * data.c (Qwindow): Make non-static, used from other files too.
 +      * frame.c (validate_x_resource_name): Remove shadow definition for i.
 +
 +      * unexec.c (make_hdr): Remove references to NO_REMAP, COFF,
 +      SEGMENT_MASK, SECTION_ALIGNMENT, ADJUST_EXEC_HEADER.
 +      * s/usg5-4.h (COFF):
 +      * s/template.h:
 +      * s/msdos.h (COFF, NO_REMAP):
 +      * s/ms-w32.h (NO_REMAP):
 +      * s/hpux10-20.h (NO_REMAP):
 +      * m/sparc.h (SEGMENT_MASK):
 +      * m/m68k.h (NO_REMAP):
 +      * m/intel386.h (SEGMENT_MASK):
 +      * m/arm.h (NO_REMAP):
 +      * m/alpha.h (COFF):
 +      * m/template.h: Remove references to unused defines.
 +
 +2010-07-28  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xsettings.c (Ftool_bar_get_system_style): Also check for
 +      Qtext_image_horiz.
 +
 +      * xdisp.c (Qtext_image_horiz): Define.
 +      (syms_of_xdisp): Initialize Qtext_image_horiz.  Add text-image-horiz
 +      to documentation of tool-bar-style.
 +
 +      * lisp.h (Qtext_image_horiz): Declare.
 +
 +      * gtkutil.c (xg_make_tool_item, xg_show_toolbar_item): Handle tool bar
 +      style text_image_horiz.
 +
 +2010-07-27  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * emacs.c (Fkill_emacs): Remove return statement.
 +
 +      * term.c (Qspace, QCalign_to, QCwidth): Remove declarations.
 +      (encode_terminal_code, produce_composite_glyph): Remove unused variables.
 +      (set_tty_color_mode, term_mouse_highlight, term_get_fkeys): Remove
 +      local extern declarations.
 +
 +      * xmenu.c: Do not included lwlib.h, not needed.
 +
 +      * m/iris4d.h (XUINT, XSET): Remove, not needed.
 +
 +      * process.c: Move definitions earlier to minimize #ifdefs.
 +
 +      * xterm.h (x_get_customization_string, x_load_resources)
 +      (x_get_resource, x_text_icon, x_text_icon, x_check_errors)
 +      (x_check_errors, x_property_data_to_lisp, defined_color)
 +      (xic_set_xfontset, x_defined_color): Use const.
 +
 +      * xterm.c (xlwmenu_window_p, xlwmenu_redisplay): Remove declarations.
 +      (x_text_icon, x_check_errors, x_connection_closed): Use const.
 +
 +      * xselect.c (selection_data_to_lisp_data)
 +      (x_property_data_to_lisp):
 +      * xrdb.c (x_get_string_resource, file_p)
 +      (x_get_customization_string, magic_file_p, search_magic_path)
 +      (get_system_app, get_user_app, x_load_resources, x_get_resource)
 +      (x_get_string_resource): Use const.
 +
 +      * xfns.c: Include xlwmenu.h when USE_LUCID.
 +      (x_defined_color, xic_set_xfontset): Use const.
 +      (Fx_hide_tip): Remove local extern declaration.
 +
 +      * xfaces.c (Qmouse_face): Remove declaration.
 +      (face_color_gray_p, tty_defined_color, defined_color)
 +      (face_color_gray_p, face_color_supported_p): Add const.
 +
 +      * xdisp.c (do_mouse_tracking): Remove declaration.
 +      (add_to_log): Use const.
 +
 +      * minibuf.c (Qmouse_face): Remove declaration.
 +
 +      * msdos.c (IT_note_mouse_highlight): Remove local extern declaration.
 +
 +      * keyboard.h (do_mouse_tracking): Add declaration.
 +
 +      * image.c (QCwidth, QCheight, QCforeground, QCbackground, QCfile)
 +      (QCdata, QCtype, Qcenter): Remove declarations.
 +
 +      * frame.c (x_get_resource_string, x_get_string_resource)
 +      (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
 +      (x_default_parameter): Use const.
 +
 +      * font.c (Qnormal, QCtype, QCfamily, QCweight, QCslant, QCwidth)
 +      (QCheight, QCsize, QCname): Remove declarations.
 +
 +      * emacs.c (main): Remove local extern declaration.
 +
 +      * editfns.c (region_limit, syms_of_editfns): Remove local extern
 +      declarations.
 +
 +      * dispnew.c: Remove duplicate #include <unistd.h>.
 +      (update_window, update_frame_1, init_display): Remove local extern
 +      declarations.
 +
 +      * dispextern.h (add_to_log): Remove declaration.
 +      (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
 +      (x_frame_get_and_record_arg, x_default_parameter): Add const.
 +
 +      * dired.c (scmp): Add const.
 +      (directory_files_internal): Remove local extern declaration.
 +
 +      * data.c (Finteractive_form): Use const.
 +
 +      * composite.c (syms_of_composite): Remove local extern declarations.
 +
 +      * charset.c (add_to_log): Remove declaration.
 +
 +      * character.c (strwidth, parse_str_to_multibyte): Add const.
 +
 +      * character.h (strwidth, parse_str_to_multibyte): Likewise.
 +
 +      * buffer.c (Fset_buffer_multibyte): Remove local extern declaration.
 +
 +      * lisp.h (Fkill_emacs): Mark as NO_RETURN.
 +      (Lisp_Subr): Make doc and intspec constant.
 +      (QCsize, Qspace, Qcenter, QCalign_to, QCdata, QCfile, QCtype)
 +      (Qlocal, Qapply, Qnormal, QCfamily, QCweight, QCslant, QCwidth)
 +      (QCheight, QCsize, QCname, QCwidth, QCforeground)
 +      (QCbackground, add_to_log, stack_base, Vmark_even_if_inactive)
 +      (display_arg): Add declarations.
 +
 +2010-07-27  Christoph Scholtes  <cschol2112@gmail.com>
 +
 +      * minibuf.c (Fread_buffer): Doc fix (bug#6528).
 +
 +      * window.c (Fwindow_height): Doc fix (bug#6518).
 +
 +2010-07-27  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * buffer.c (syms_of_buffer) <fringe-indicator-alist>: Doc fix.
 +
 +2010-07-26  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * keyboard.c (Ftop_level, Fexit_recursive_edit)
 +      (Fabort_recursive_edit): Remove return statements in NO_RETURN
 +      functions.
 +
 +      * frame.h (Qtty_color_mode): Add declaration.
 +
 +      * lisp.h (Ftop_level, Fexit_recursive_edit)
 +      (Fabort_recursive_edit): Mark as NO_RETURN.
 +
 +2010-07-26  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.c (Ffont_shape_gstring): Terminate GSTRING by nil if the
 +      number of glyphs gets smaller than the original length.  (Bug#6621)
 +
 +2010-07-26  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * lread.c (unreadpure, mapatoms_1): Make static.
 +
 +2010-07-25  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * terminfo.c (tparam): Fix prototype of tparm.
 +
 +2010-07-25  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * emacs.c (main) [PROFILING]: Use __executable_start if defined to
 +      find start of text segment.
 +      * dispnew.c (safe_bcopy): Don't define if HAVE___EXECUTABLE_START
 +      is defined.
 +
 +      * callproc.c (set_initial_environment): Avoid unbalanced braces.
 +
 +2010-07-25  Ken Brown  <kbrown@cornell.edu>
 +
 +      * vm-limit.c (check_memory_limits): Fix previous change;
 +      accidentally reverted an earlier change.
 +
 +2010-07-25  Ken Brown  <kbrown@cornell.edu>
 +
 +      * mem-limits.h (BSD4_2) [cygwin]: Don't define here; instead...
 +      * vm-limit.c: ...add 'defined (CYGWIN)' here (Bug#6715).
 +
 +2010-07-25  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * callproc.c (relocate_fd): Set inside #ifndef WINDOWSNT.
 +      * dired.c (opendir, readdir): Fix prototypes.
 +      * editfns.c (w32_get_internal_run_time): Fix prototypes.
 +      * keyboard.c (input_available_signal): Declare inside #ifdef SIGIO.
 +      * ndir.h (opendir, readdir, seekdir, closedir): Fix prototypes.
 +      (telldir): Remove declaration.
 +      * ralloc.c (real_morecore, __morecore): Fix prototypes.
 +      * sound.c (alsa_sound_perror): Declare inside #ifdef HAVE_ALSA.
 +      * syssignal.h (strsignal): Fix prototype.
 +      * term.c (tparam): Fix prototype.
 +      (term_get_fkeys_address, term_get_fkeys_kboard, term_get_fkeys_1)
 +      (term_get_fkeys): Set inside "#ifndef DOS_NT".
 +      * vm-limit.c (check_memory_limits): Fix prototypes of real_morecore
 +      and __morecore.
 +      * w32gui.h (XParseGeometry): Fix prototype.
 +      * w32heap.h (get_data_start, get_data_end, init_heap): Fix prototypes.
 +      * w32term.c (my_set_focus): Declare inside #if 0.
 +      * w32term.h (x_window_to_frame, x_display_info_for_name, w32_term_init)
 +      (w32_fill_rect, w32_clear_window, init_crit, delete_crit, signal_quit)
 +      (drain_message_queue, get_next_msg, post_msg, parse_button)
 +      (ClipboardSequence_Proc): Fix prototypes.
 +      (wait_for_sync): Remove declaration.
 +
 +2010-07-24  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32fns.c (w32_to_x_color): Remove, unused.
 +
 +2010-07-24  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * lisp.h: Remove leftover P_.
 +
 +2010-07-24  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * ecrt0.c, unexalpha.c: Remove files, unused.
 +
 +2010-07-24  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * cmds.c (internal_self_insert): Make static.
 +      * lisp.h (internal_self_insert): Remove declaration.
 +
 +2010-07-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * alloc.c (free_float):
 +      * font.c [ENABLE_CHECKING] (font_match_xlfd, font_check_xlfd_parse):
 +      * frame.c (delete_frame_handler):
 +      * ralloc.c (reorder_bloc):
 +      * w32menu.c (menubar_id_to_frame, add_left_right_boundary):
 +      Remove unused static functions.
 +
 +      * menu.c (cleanup_popup_menu): Set inside "#ifdef HAVE_NS";
 +      it is called only from NS code.
 +
 +      * w32term.c (my_set_focus): #ifdef away; it is called only from
 +      "#ifdef 0" code.
 +
 +      * w32fns.c (x_edge_detection):
 +      * xfaces.c (may_use_scalable_font_p):
 +      Remove obsolete static declarations.
 +
 +2010-07-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * alloc.c (emacs_blocked_free, emacs_blocked_malloc)
 +      (emacs_blocked_realloc, uninterrupt_malloc):
 +      * fringe.c (w32_reset_fringes):
 +      * image.c (convert_mono_to_color_image, lookup_rgb_color)
 +      (init_color_table, XPutPixel, jpeg_resync_to_restart_wrapper):
 +      * sound.c (be2hs, do_play_sound):
 +      * vm-limit.c (get_lim_data, ret_lim_data):
 +      * w32term.c (x_free_frame_resources):
 +      * xfaces.c (x_create_gc, x_free_gc):
 +      Convert definitions to standard C.
 +
 +2010-07-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * eval.c (Feval, Ffuncall): Use the new names.
 +
 +      * lisp.h (struct Lisp_Subr): Rename `am' to aMANY and add aUNEVALLED.
 +      (DEFUN): Add braces around the union initialisation and use ## to
 +      specify the right union alternative and avoid a cast.
 +
 +2010-07-18  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in ($(BLD)/keyboard.$(O)): Update dependencies.
 +
 +2010-07-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frame.c (make_initial_frame): Use set_menu_bar_lines (Bug#6660).
 +
 +2010-07-17  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (xg_event_is_for_menubar): Also check that event window
 +      is related to the menu bar (Bug#6499).
 +      (xg_frame_resized): GTK_IS_MAPPED => gtk_widget_get_mapped, for Gtk 3.0.
 +
 +2010-07-16  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.h (x_menubar_window_to_frame): Second parameter is XEvent*.
 +
 +      * xterm.c (handle_one_xevent): Pass event to x_menubar_window_to_frame.
 +
 +      * xmenu.c (x_activate_menubar): Revert previous fix for Bug#6499,
 +      i.e. don't put back ButtonRelease (Bug#6608).
 +
 +      * xfns.c (x_menubar_window_to_frame): Take XEvent as second parameter
 +      instead of Window.  Call xg_event_is_for_menubar when
 +      USE_GTK (Bug#6499).
 +
 +      * gtkutil.h (xg_event_is_for_menubar): Declare.
 +
 +      * gtkutil.c (xg_event_is_for_menubar): New function (Bug#6499).
 +
 +2010-07-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c (x_set_foreground_color): Fix setting the cursor color
 +      when it's the same as the old foreground.  (Bug#6609)
 +
 +2010-07-16  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xmenu.c (free_frame_menubar): Only call x_set_window_size if
 +      widget is non-null (Bug#6645).
 +
 +2010-07-15  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * xterm.c (x_fully_uncatch_errors, x_trace_wire, x_check_font):
 +      Convert old-style definition.
 +
 +      * xmenu.c (create_and_show_popup_menu, xmenu_show): Fix type of
 +      timestamp argument.
 +
 +2010-07-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fringe.c (update_window_fringes): Restore mistakenly reverted
 +      code from 2010-04-17T12:33:05Z!eliz@gnu.org merged in 2010-04-20T13:31:28Z!eliz@gnu.org.
 +
 +2010-07-14  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (xm_scroll_callback, x_process_timeouts): K&R => prototype.
 +      (SET_SAVED_KEY_EVENT): Remove (not used).
 +      (SET_SAVED_MENU_EVENT): Rename to SET_SAVED_BUTTON_EVENT and
 +      remove size parameter.
 +      (handle_one_xevent): Check popup_activated () for menu for Xt also.
 +      Remove #ifdef USE_GTK around finish = X_EVENT_DROP.
 +      Remove #ifdef USE_MOTIF code that did SET_SAVED_BUTTON_EVENT for
 +      ButtonRelease.
 +      (x_set_window_size_1): scroll_bar_actual_width is always
 +      SCROLL_BAR_COLS * COLUMN_WIDTH for the purpose of frame sizing.
 +
 +      * xdisp.c (pending_menu_activation): Remove extern declaration.
 +      (prepare_menu_bars): Remove setting of pending_menu_activation.
 +
 +      * xmenu.c (pending_menu_activation): Remove.
 +      (x_activate_menubar): Set popup_activated_flag for Xt also.
 +      Remove setting of pending_menu_activation.
 +      (set_frame_menubar): Remove check of pending_menu_activation.
 +      Declare menubar_size before code.  Correct spelling in comment.
 +
 +2010-07-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.c (font_open_entity): Cancel previous change.
 +      (Ffont_get): Don't check FONT_ENTITY_INDEX of a font-object.
 +
 +2010-07-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Remove subprocesses #ifdefs.
 +      * process.c <inhibit_sentinels>: Move to the common part.
 +      (Fwaiting_for_user_input_p): Move to the common part; return nil
 +      if async subprocesses aren't supported.
 +      * sysdep.c (wait_for_termination) [!MSDOS]: Don't compile on
 +      MS-DOS.  Remove "#ifdef subprocesses".
 +      (sys_subshell, sys_select): Remove "#ifdef subprocesses".
 +      (gettimeofday): Remove "#ifdef subprocesses".
 +      (wait_without_blocking): Remove function.
 +      (flush_pending_output, child_setup_tty): Don't compile on MS-DOS.
 +      Remove "#ifdef subprocesses".
 +      (child_setup_tty): Use WINDOWSNT instead of DOS_NT, since not
 +      compiled on MS-DOS.
 +      * callproc.c (Fcall_process) [!MSDOS]: Don't call
 +      wait_for_termination on MS-DOS.
 +      * emacs.c (shut_down_emacs): Remove "#ifndef subprocesses" from
 +      initialization of inhibit_sentinels.
 +      * keyboard.c (record_asynch_buffer_change): Remove "#ifdef
 +      subprocesses" conditional.
 +      * callproc.c (Fcall_process) [!subprocesses]: Don't call
 +      wait_for_termination, since `buffer' cannot be an integer when
 +      async subprocesses are not supported
 +      * xdisp.c (decode_mode_spec): Use `MSDOS' instead of `subprocesses'
 +      for ifdefing away the call to Fprocess_status.
 +
 +      * process.c (add_keyboard_wait_descriptor) [!subprocesses]: Ifdef
 +      away the entire body of the function.
 +
 +2010-07-13  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove subprocesses #ifdefs from term.c.
 +      * process.c (add_keyboard_wait_descriptor)
 +      (delete_keyboard_wait_descriptor): Move to common section, do
 +      nothing when subprocesses is not defined.
 +      * term.c (Fsuspend_tty, Fresume_tty, init_tty):
 +      Remove subprocesses #ifdefs.
 +
 +      Convert maybe_fatal to standard C.
 +      * lisp.h (verror): Declare.
 +      * eval.c (verror): New function containing the code from ...
 +      (error): ... this.  Call verror.
 +      * term.c (vfatal): New function containing the code from ...
 +      (fatal): ... this.  Call vfatal.
 +      (maybe_fatal): Convert to standard C, use variable number of
 +      arguments.  Declare as non-return.
 +      (init_tty): Fix maybe_fatal call.
 +
 +2010-07-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * xterm.c (x_scroll_bar_set_handle, x_scroll_bar_expose)
 +      (_scroll_bar_note_movement): Convert definitions to standard C.
 +      * xmenu.c (menu_help_callback, pop_down_menu, xmenu_show):
 +      * xfns.c (hack_wm_protocols, x_window, x_window): Likewise.
 +
 +2010-07-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * xterm.c (x_frame_of_widget, x_alloc_nearest_color_for_widget)
 +      (x_alloc_lighter_color_for_widget, cvt_string_to_pixel)
 +      (cvt_pixel_dtor, x_window_to_menu_bar, xt_action_hook)
 +      (xaw_jump_callback, xaw_scroll_callback)
 +      (x_create_toolkit_scroll_bar, x_set_toolkit_scroll_bar_thumb)
 +      (x_wm_set_size_hint, x_activate_timeout_atimer): Convert
 +      definitions to standard C.
 +      * xmenu.c (menubar_id_to_frame, popup_get_selection)
 +      (popup_activate_callback, popup_deactivate_callback)
 +      (menu_highlight_callback, menubar_selection_callback)
 +      (apply_systemfont_to_dialog, apply_systemfont_to_menu)
 +      (free_frame_menubar, popup_selection_callback, as)
 +      (create_and_show_popup_menu, dialog_selection_callback)
 +      (create_and_show_dialog):
 +      * xfns.c (hack_wm_protocols, x_window):
 +      * xfaces.c (x_update_menu_appearance):
 +      * widget.c (get_default_char_pixel_size, pixel_to_char_size)
 +      (char_to_pixel_size, round_size_to_char, get_wm_shell)
 +      (set_frame_size, update_wm_hints, setup_frame_gcs)
 +      (update_various_frame_slots, update_from_various_frame_slots)
 +      (EmacsFrameInitialize, EmacsFrameRealize, EmacsFrameResize)
 +      (EmacsFrameSetValues, EmacsFrameQueryGeometry)
 +      (EmacsFrameSetCharSize, widget_store_internal_border): Likewise.
 +
 +2010-07-12  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * dbusbind.c (xd_initialize): Don't compare boolean with a constant.
 +
 +2010-07-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * process.c (setup_process_coding_systems): Move to the part
 +      shared by non-subprocesses systems, and make its body empty when
 +      subprocesses is not defined.
 +      (close_process_descs): Move to the part shared by non-subprocesses
 +      systems.
 +      (wait_reading_process_output) [!subprocesses]: Convert arg list to
 +      ANSI C.
 +
 +2010-07-12  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * editfns.c (transpose_markers): Convert old-style definition.
 +      * emacs.c (abort, shut_down_emacs, fixup_locale)
 +      (synchronize_system_time_locale)
 +      (synchronize_system_messages_locale, syms_of_emacs): Likewise.
 +      * floatfns.c (extract_float, matherr, init_floatfns)
 +      (syms_of_floatfns): Likewise.
 +      * fns.c (make_hash_table): Likewise.
 +      * ftfont.c (ftfont_get_otf, ftfont_otf_features)
 +      (ftfont_otf_capability, ftfont_get_glyph_id, ftfont_get_metrics)
 +      (ftfont_drive_otf, ftfont_shape_by_flt, ftfont_shape)
 +      (ftfont_variation_glyphs): Likewise.
 +      * gtkutil.c (xg_create_widget, xg_modify_menubar_widgets): Likewise.
 +      * keymap.c (describe_map_tree, describe_map, describe_vector): Likewise.
 +      * lread.c (read_filtered_event): Likewise.
 +      * minibuf.c (read_minibuf_noninteractive, read_minibuf): Likewise.
 +      * process.c (wait_reading_process_output): Likewise.
 +      * scroll.c (do_line_insertion_deletion_costs): Likewise.
 +      * search.c (search_buffer, boyer_moore): Likewise.
 +      * syntax.c (scan_sexps_forward): Likewise.
 +      * xdisp.c (try_scrolling): Likewise.
 +      * xfaces.c (face_at_buffer_position, face_for_overlay_string)
 +      (face_at_string_position): Likewise.
 +      * xfns.c (x_default_scroll_bar_color_parameter): Likewise.
 +      * xselect.c (x_get_window_property, receive_incremental_selection)
 +      (x_get_window_property_as_lisp_data, lisp_data_to_selection_data):
 +      Likewise.
 +      * xterm.c (x_draw_relief_rect, x_draw_box_rect): Likewise.
 +
 +2010-07-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * callproc.c (child_setup): Remove subprocesses conditional.
 +      Remove code dealing with SET_EMACS_PRIORITY, unused.
 +
 +      * buffer.c (Fset_buffer_multibyte): Remove subprocesses conditional.
 +      * process.c (close_process_descs): Use DOS_NT instead of WINDOWSNT.
 +
 +      * emacs.c (__do_global_ctors, __do_global_ctors_aux)
 +      (__do_global_dtors, __main): Use void in definition.
 +      (main): Remove code dealing with SET_EMACS_PRIORITY, unused.
 +      Remove SYMS_MACHINE code, unused.  Remove SYMS_SYSTEM, inline
 +      the only users from ...
 +      * s/ms-w32.h (SYMS_SYSTEM): ... here and ...
 +      * s/msdos.h (SYMS_SYSTEM): ... here.  Remove.
 +      (HAVE_VOLATILE): Remove, unused.
 +
 +      Convert more function definitions to standard C.
 +      * xdisp.c (window_box_edges, handle_single_display_spec)
 +      (display_string): Convert definition to standard C.
 +      * scroll.c (do_direct_scrolling, scrolling_1):
 +      * dispnew.c (allocate_matrices_for_frame_redisplay)
 +      (mirrored_line_dance):
 +      * coding.c (code_convert_string):
 +      * charset.c (map_charset_chars):
 +      * ccl.c (Fccl_program_p, Fccl_execute, Fccl_execute_on_string)
 +      (Fregister_ccl_program, Fregister_code_conversion_map):
 +      * keyboard.c (kbd_buffer_nr_stored): Likewise.
 +      (head_table): Make static and const.
 +
 +2010-07-12  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * Makefile.in (C_WARNINGS_SWITCH, PROFILING_CFLAGS)
 +      (PROFILING_LDFLAGS): Set from substitution.
 +      (ALL_CFLAGS): Add C_WARNINGS_SWITCH and PROFILING_CFLAGS, put
 +      CFLAGS last.
 +
 +2010-07-12  Kenichi Handa  <handa@m17n.org>
 +
 +      * Makefile.in (lisp): Change hebrew.el to hebrew.elc.
 +      (shortlisp): Likewise.
 +
 +      * font.h (enum font_property_index): New member FONT_ENTITY_INDEX.
 +
 +      * font.c (font_open_entity): Record ENTITY in FONT_OBJECT's slot
 +      of FONT_ENTITY_INDEX.
 +      (Ffont_get): If KEY is :otf and the font-object doesn't have the
 +      property, get the property value dynamically.
 +      (Ffont_put): Accept font-entity and font-object too.
 +      (Ffont_get_glyhphs): Renamed from Fget_font_glyphs.  Arguments and
 +      return value changed.
 +      (syms_of_font): Adjusted for the above change.
 +
 +2010-07-11  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * blockinput.h: Remove obsolete comment.
 +
 +      * lisp.h: Include <stddef.h>.
 +      (OFFSETOF): Don't define.
 +      (VECSIZE): Use offsetof instead of OFFSETOF.
 +      (PSEUDOVECSIZE): Likewise.
 +      * process.c (conv_sockaddr_to_lisp): Likewise.
 +      * alloc.c: Don't include <stddef.h>.
 +      * buffer.h (PER_BUFFER_VAR_OFFSET): Use offsetof.
 +
 +      * process.c: Remove obsolete comment.
 +
 +2010-07-11  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xfaces.c (Vface_remapping_alist): Doc fix (Bug#6091).
 +
 +2010-07-11  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * callint.c (Fcall_interactively): Use strchr, strrchr instead of
 +      index, rindex.
 +      * doc.c (get_doc_string, Fsnarf_documentation): Likewise.
 +      * editfns.c (Fuser_full_name, Fformat): Likewise.
 +      * emacs.c (argmatch, sort_args, decode_env_path): Likewise.
 +      * fileio.c (Ffile_symlink_p): Likewise.
 +      * filelock.c (current_lock_owner): Likewise.
 +      * font.c (font_parse_name, font_parse_family_registry): Likewise.
 +      * fontset.c (fontset_pattern_regexp): Likewise.
 +      * lread.c (read1): Likewise.
 +      * sysdep.c (init_system_name): Likewise.
 +      * xfns.c (select_visual): Likewise.
 +      * s/hpux10-20.h (index, rindex): Don't define.
 +      * s/ms-w32.h (index): Likewise.
 +      * s/usg5-4.h: Likewise.
 +
 +      * callproc.c (relocate_fd): Use F_DUPFD if defined.
 +
 +      * alloc.c (pending_malloc_warning, malloc_warning): Add const.
 +      * callproc.c (relocate_fd, getenv_internal_1, getenv_internal)
 +      (egetenv): Likewise.
 +      * doprnt.c (doprnt): Likewise.
 +      * editfns.c (set_time_zone_rule, format2): Likewise.
 +      * emacs.c (decode_env_path): Likewise.
 +      * eval.c (signal_error, error): Likewise.
 +      * insdel.c (replace_range_2): Likewise.
 +      * keyboard.c (cmd_error_internal): Likewise.
 +      * lread.c (isfloat_string, make_symbol, dir_warning): Likewise.
 +      * print.c (write_string, write_string_1, print_error_message):
 +      Likewise.
 +      * vm-limit.c (warn_function, memory_warnings): Likewise.
 +      * xdisp.c (message1, message1_nolog, message_with_string)
 +      (vmessage, message, message_nolog): Likewise.
 +      * emacs.c: Remove duplicate declaration.
 +      * keyboard.h: Likewise.
 +      * lisp.h: Update prototypes.
 +
 +      * eval.c: Fix indentation problem.
 +
 +      * keyboard.c: Include "process.h"
 +
 +      * eval.c: Remove obsolete noinline declaration.
 +      * fns.c: Likewise.
 +
 +2010-07-11  Ken Raeburn  <raeburn@raeburn.org>
 +
 +      * doprnt.c (doprnt): Take a va_list argument instead of count and
 +      pointer.
 +      * eval.c (error): Change to a standard-C variadic function.
 +      * xdisp.c (vmessage): Renamed from message, made static, and
 +      changed to take a va_list argument.
 +      (message): New variadic wrapper.
 +      (message_nolog): Now a variadic function, calling vmessage.
 +      * lisp.h: Include stdarg.h for va_list.
 +      (doprnt, error, message, message_nolog): Decls updated.
 +
 +2010-07-11  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * process.c (syms_of_process) <delete-exited-processes>: Define
 +      even if !subprocesses.
 +      (delete_exited_processes): Ditto.
 +
 +      * msdos.c (syms_of_msdos) <delete-exited-processes>: Remove DEFVAR.
 +      (delete_exited_processes): Don't define.
 +
 +2010-07-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frame.c (make_frame): Initialize menu_bar_lines and
 +      tool_bar_lines members.
 +      (make_initial_frame, make_terminal_frame): Initialize
 +      menu_bar_lines using value of menu-bar-mode.
 +
 +      * msdos.c (IT_set_frame_parameters): Don't set menu-bar-lines.
 +
 +2010-07-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * process.c: Reshuffle #include's.  Condition some of the global
 +      and static variables on `subprocesses'.
 +      (hold_keyboard_input, unhold_keyboard_input, kbd_on_hold_p):
 +      Leave only one implementation.
 +      (Fget_buffer_process, Fprocess_inherit_coding_system_flag)
 +      (kill_buffer_processes, Flist_system_processes)
 +      (Fprocess_attributes, init_process, syms_of_process): Unify the
 +      implementations for with subprocesses and without them.
 +
 +2010-07-09  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xmenu.c (set_frame_menubar): Must realize menubar_widget to get the
 +      correct size for Motif.
 +      (free_frame_menubar): Call x_set_window_size to update frame size.
 +
 +      * xfns.c (x_window): Set borderWidth to 0 for pane and
 +      EmacsFrame.  Frame size calculation is wrong otherwise.
 +
 +2010-07-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbusbind.c (xd_initialize): Add new argument RAISE_ERROR, which
 +      allows to suppress errors when polling in Emacs' main loop.
 +      (Fdbus_init_bus, Fdbus_get_unique_name, Fdbus_call_method)
 +      (Fdbus_call_method_asynchronously, Fdbus_method_return_internal)
 +      (Fdbus_method_error_internal, Fdbus_send_signal)
 +      (xd_get_dispatch_status, xd_read_message, Fdbus_register_signal)
 +      (Fdbus_register_method): Use it.  (Bug#6579)
 +
 +2010-07-08  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * alloc.c: Convert DEFUNs to standard C.
 +      * buffer.c:
 +      * bytecode.c:
 +      * callint.c:
 +      * callproc.c:
 +      * casefiddle.c:
 +      * casetab.c:
 +      * category.c:
 +      * character.c:
 +      * charset.c:
 +      * chartab.c:
 +      * cmds.c:
 +      * coding.c:
 +      * composite.c:
 +      * data.c:
 +      * dbusbind.c:
 +      * dired.c:
 +      * dispnew.c:
 +      * doc.c:
 +      * dosfns.c:
 +      * editfns.c:
 +      * emacs.c:
 +      * eval.c:
 +      * fileio.c:
 +      * filelock.c:
 +      * floatfns.c:
 +      * fns.c:
 +      * font.c:
 +      * fontset.c:
 +      * frame.c:
 +      * fringe.c:
 +      * image.c:
 +      * indent.c:
 +      * insdel.c:
 +      * keyboard.c:
 +      * keymap.c:
 +      * lread.c:
 +      * macros.c:
 +      * marker.c:
 +      * menu.c:
 +      * minibuf.c:
 +      * msdos.c:
 +      * nsfns.m:
 +      * nsmenu.m:
 +      * nsselect.m:
 +      * print.c:
 +      * process.c:
 +      * search.c:
 +      * sound.c:
 +      * syntax.c:
 +      * term.c:
 +      * terminal.c:
 +      * textprop.c:
 +      * undo.c:
 +      * w16select.c:
 +      * w32console.c:
 +      * w32fns.c:
 +      * w32font.c:
 +      * w32menu.c:
 +      * w32proc.c:
 +      * w32select.c:
 +      * window.c:
 +      * xdisp.c:
 +      * xfaces.c:
 +      * xfns.c:
 +      * xmenu.c:
 +      * xselect.c:
 +      * xsettings.c:
 +      * xsmfns.c: Likewise.
 +
 +2010-07-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * process.c (kbd_is_on_hold, hold_keyboard_input)
 +      (unhold_keyboard_input, kbd_on_hold_p) [!subprocesses]: Define.
 +
 +2010-07-08  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xmenu.c (set_frame_menubar, create_and_show_popup_menu)
 +      (create_and_show_dialog): Don't call apply_systemfont_to_(menu|dialog)
 +      unless USE_LUCID.
 +
 +2010-07-08  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * xdisp.c (store_mode_line_noprop_char): Remove K&R alternative
 +      declaration.
 +
 +      Clean up include guards.
 +      * tparam.c: Remove include guards for config.h, string.h and code
 +      that assumes #ifndef emacs.
 +      * termcap.c:
 +      * unexalpha.c:
 +      * sysdep.c:
 +      * filemode.c:
 +      * filelock.c:
 +      * bidi.c: Likewise.
 +
 +      Remove prefix-args.c
 +      * prefix-args.c: Remove file.
 +      * autodeps.mk (ALLOBJS): Remove reference to prefix-args.
 +      * Makefile.in (temacs${EXEEXT}): Remove references to
 +      PRE_EDIT_LDFLAGS and POST_EDIT_LDFLAGS.
 +      (mostlyclean): Remove reference to prefix-args.
 +      (prefix-args): Remove.
 +
 +      Simplify cstart_of_data, start_of_code and related code.
 +      * mem-limits.h: Remove !emacs and _LIBC conditional code.
 +      (start_of_data): Merge into start_of_data function.
 +      * sysdep.c (start_of_text): Remove.  Move simplified versions of
 +      it in the only users: unexaix.c and unexec.c.
 +      (read_input_waiting): Remove local declaration of quit_char.
 +      (start, etext): Remove declarations.
 +      (start_of_data): Merge with the version in mem-limits.h and move
 +      to vm-limits.c.
 +      * vm-limit.c (start_of_data): Merged and simplified version of the
 +      code formerly in mem-limits.h and sysdep.c.
 +      * unexec.c (start): New declaration, moved from sysdep.c.
 +      (start_of_text): Simplified version of the code formerly in sysdep.c.
 +      * unexaix.c (start_of_text): Simplified version of the code
 +      formerly in sysdep.c.
 +      * m/alpha.h (HAVE_TEXT_START): Remove.
 +      (TEXT_START): Move ...
 +      * unexalpha.c (TEXT_START): ... here.
 +      * s/hpux10-20.h (TEXT_START): Remove.
 +      * s/darwin.h (TEXT_START):
 +      * m/mips.h (TEXT_START):
 +      * m/macppc.h (HAVE_TEXT_START):
 +      * m/m68k.h (TEXT_START):
 +      * m/iris4d.h (TEXT_START):
 +      * m/intel386.h (TEXT_START):
 +      * m/ibmrs6000.h (TEXT_START):
 +      * m/ia64.h (HAVE_TEXT_START):
 +      * s/msdos.h (TEXT_START): Likewise.
 +
 +2010-07-07  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * alloc.c (overrun_check_malloc, overrun_check_realloc)
 +      (overrun_check_free, xstrdup, allocate_string)
 +      (allocate_string_data, compact_small_strings, Fmake_string)
 +      (make_unibyte_string, make_multibyte_string)
 +      (make_string_from_bytes, make_specified_string, make_float)
 +      (Fcons, allocate_terminal, allocate_frame, make_pure_string)
 +      (Fgarbage_collect): Replace bcopy, safe_bcopy, bzero, bcmp by
 +      memcpy, memmove, memset, memcmp.
 +      * atimer.c (start_atimer, set_alarm): Likewise.
 +      * buffer.c (clone_per_buffer_values, report_overlay_modification)
 +      (mmap_realloc, init_buffer_once): Likewise.
 +      * callint.c (Fcall_interactively): Likewise.
 +      * callproc.c (Fcall_process, Fcall_process_region, child_setup)
 +      (getenv_internal_1): Likewise.
 +      * casefiddle.c (casify_object): Likewise.
 +      * ccl.c (ccl_driver): Likewise.
 +      * character.c (str_as_multibyte, str_to_multibyte): Likewise.
 +      * charset.c (load_charset_map_from_file)
 +      (load_charset_map_from_file, load_charset_map_from_vector)
 +      (Fdefine_charset_internal): Likewise.
 +      * cm.c (Wcm_clear): Likewise.
 +      * coding.c (decode_eol, decode_coding_object)
 +      (Fset_coding_system_priority, make_subsidiaries): Likewise.
 +      * data.c (Faset): Likewise.
 +      * dired.c (directory_files_internal, file_name_completion_stat):
 +      Likewise.
 +      * dispnew.c (new_glyph_matrix, adjust_glyph_matrix)
 +      (clear_glyph_row, copy_row_except_pointers)
 +      (copy_glyph_row_contents, new_glyph_pool, realloc_glyph_pool)
 +      (save_current_matrix, restore_current_matrix)
 +      (build_frame_matrix_from_leaf_window, mirrored_line_dance)
 +      (mirror_line_dance, scrolling_window): Likewise.
 +      * doc.c (Fsnarf_documentation, Fsubstitute_command_keys):
 +      Likewise.
 +      * doprnt.c (doprnt): Likewise.
 +      * editfns.c (Fuser_full_name, make_buffer_string_both)
 +      (Fmessage_box, Fformat, Ftranspose_regions): Likewise.
 +      * emacs.c (sort_args): Likewise.
 +      * eval.c (Fapply, Ffuncall): Likewise.
 +      * fileio.c (Ffile_name_directory, make_temp_name)
 +      (Fexpand_file_name, search_embedded_absfilename)
 +      (Fsubstitute_in_file_name, Ffile_symlink_p, Finsert_file_contents)
 +      (auto_save_error): Likewise.
 +      * fns.c (Fstring_equal, Fcopy_sequence, concat)
 +      (string_to_multibyte, Fstring_as_unibyte, Fstring_as_multibyte)
 +      (internal_equal, Fclear_string, larger_vector, copy_hash_table)
 +      (Fmake_hash_table): Likewise.
 +      * fringe.c (Fdefine_fringe_bitmap): Likewise.
 +      * ftfont.c (ftfont_text_extents): Likewise.
 +      * getloadavg.c (getloadavg): Likewise.
 +      * image.c (define_image_type, make_image, make_image_cache)
 +      (x_create_x_image_and_pixmap, xbm_image_p)
 +      (w32_create_pixmap_from_bitmap_data, xbm_load, xpm_lookup_color)
 +      (xpm_image_p, x_create_bitmap_from_xpm_data, xpm_load)
 +      (init_color_table, x_build_heuristic_mask, pbm_image_p, pbm_load)
 +      (png_image_p, png_read_from_memory, png_load, jpeg_image_p)
 +      (tiff_image_p, tiff_read_from_memory, gif_image_p)
 +      (gif_read_from_memory, gif_load, svg_image_p, gs_image_p):
 +      Likewise.
 +      * indent.c (scan_for_column, compute_motion): Likewise.
 +      * insdel.c (gap_left, gap_right, make_gap_smaller, copy_text)
 +      (insert_1_both, insert_from_gap, replace_range_2): Likewise.
 +      * intervals.c (reproduce_tree, reproduce_tree_obj): Likewise.
 +      * keyboard.c (echo_char, save_getcjmp, restore_getcjmp)
 +      (kbd_buffer_store_event_hold, apply_modifiers_uncached)
 +      (store_user_signal_events, menu_bar_items, tool_bar_items)
 +      (process_tool_bar_item, append_tool_bar_item)
 +      (read_char_minibuf_menu_prompt, read_key_sequence)
 +      (Fread_key_sequence, Fread_key_sequence_vector, Frecent_keys):
 +      Likewise.
 +      * keymap.c (current_minor_maps, Fdescribe_buffer_bindings):
 +      Likewise.
 +      * lisp.h (STRING_COPYIN): Likewise.
 +      * lread.c (Fload, read1, oblookup): Likewise.
 +      * msdos.c (Frecent_doskeys): Likewise.
 +      * nsfns.m (Fx_create_frame): Likewise.
 +      * nsfont.m (nsfont_open, nsfont_text_extents, ns_glyph_metrics):
 +      Likewise.
 +      * nsimage.m (EmacsImage-initFromSkipXBM:width:height:)
 +      (EmacsImage-initForXPMWithDepth:width:height:flip:length:):
 +      Likewise.
 +      * nsmenu.m (ns_update_menubar): Likewise.
 +      * nsterm.m (ns_draw_fringe_bitmap, ns_term_init): Likewise.
 +      * print.c (print_unwind, printchar, strout, print_string)
 +      (print_error_message): Likewise.
 +      * process.c (conv_lisp_to_sockaddr, set_socket_option)
 +      (Fmake_network_process, Fnetwork_interface_list)
 +      (Fnetwork_interface_info, read_process_output, Fprocess_send_eof)
 +      (init_process): Likewise.
 +      * ralloc.c (resize_bloc, r_alloc_sbrk, r_alloc_init): Likewise.
 +      * regex.c (init_syntax_once, regex_compile, re_compile_fastmap):
 +      Likewise.
 +      * scroll.c (do_scrolling, do_direct_scrolling)
 +      (scrolling_max_lines_saved): Likewise.
 +      * search.c (search_buffer, wordify, Freplace_match): Likewise.
 +      * sound.c (wav_init, au_init, Fplay_sound_internal): Likewise.
 +      * syntax.c (skip_chars, skip_syntaxes): Likewise.
 +      * sysdep.c (child_setup_tty, sys_subshell, emacs_get_tty)
 +      (emacs_set_tty): Likewise.
 +      * term.c (encode_terminal_code, calculate_costs)
 +      (produce_special_glyphs, create_tty_output, init_tty, delete_tty):
 +      Likewise.
 +      * termcap.c (tgetst1, gobble_line): Likewise.
 +      * termhooks.h (EVENT_INIT): Likewise.
 +      * tparam.c (tparam1): Likewise.
 +      * unexalpha.c (unexec): Likewise.
 +      * unexec.c (write_segment): Likewise.
 +      * unexmacosx.c (unexec_write_zero): Likewise.
 +      * w32fns.c (w32_wnd_proc, Fx_create_frame, x_create_tip_frame)
 +      (Fx_file_dialog, Fsystem_move_file_to_trash): Likewise.
 +      * w32font.c (w32font_list_family, w32font_text_extents)
 +      (w32font_list_internal, w32font_match_internal)
 +      (w32font_open_internal, compute_metrics, Fx_select_font):
 +      Likewise.
 +      * w32menu.c (set_frame_menubar, add_menu_item)
 +      (w32_menu_display_help, w32_free_submenu_strings): Likewise.
 +      * w32term.c (XCreateGC, w32_initialize_display_info): Likewise.
 +      * w32uniscribe.c (uniscribe_list_family): Likewise.
 +      * w32xfns.c (get_next_msg, post_msg, prepend_msg): Likewise.
 +      * window.c (make_window, replace_window, set_window_buffer)
 +      (Fsplit_window): Likewise.
 +      * xdisp.c (init_iterator, RECORD_OVERLAY_STRING, reseat_to_string)
 +      (add_to_log, message3, x_consider_frame_title)
 +      (append_space_for_newline, extend_face_to_end_of_line)
 +      (decode_mode_spec_coding, init_glyph_string): Likewise.
 +      * xfaces.c (x_create_gc, get_lface_attributes_no_remap)
 +      (Finternal_copy_lisp_face, Finternal_merge_in_global_face)
 +      (face_attr_equal_p, make_realized_face, make_face_cache)
 +      (free_realized_faces, lookup_named_face, smaller_face)
 +      (face_with_height, lookup_derived_face)
 +      (x_supports_face_attributes_p, Finternal_set_font_selection_order)
 +      (Finternal_set_font_selection_order, realize_default_face)
 +      (compute_char_face, face_at_buffer_position)
 +      (face_for_overlay_string, face_at_string_position, merge_faces):
 +      Likewise.
 +      * xfns.c (xic_create_fontsetname, Fx_create_frame)
 +      (Fx_window_property, x_create_tip_frame)
 +      (Fx_backspace_delete_keys_p): Likewise.
 +      * xfont.c (xfont_list, xfont_match, xfont_list_family)
 +      (xfont_text_extents): Likewise.
 +      * xmenu.c (set_frame_menubar, xmenu_show): Likewise.
 +      * xrdb.c (magic_file_p, x_get_resource): Likewise.
 +      * xselect.c (x_queue_event, x_get_window_property)
 +      (receive_incremental_selection): Likewise.
 +      * xsmfns.c (x_session_check_input): Likewise.
 +      * xterm.c (x_send_scroll_bar_event, SET_SAVED_MENU_EVENT)
 +      (handle_one_xevent, x_check_errors, xim_initialize, x_term_init):
 +      Likewise.
 +      * character.h (BCOPY_SHORT): Removed.
 +      * config.in: Regenerate.
 +      * dispnew.c (safe_bcopy): Only define as dummy if PROFILING.
 +      * emacs.c (main) [PROFILING]: Don't declare
 +      dump_opcode_frequencies.
 +      * lisp.h (safe_bcopy): Remove declaration.
 +      (memset) [!HAVE_MEMSET]: Declare.
 +      (memcpy) [!HAVE_MEMCPY]: Likewise.
 +      (memmove) [!HAVE_MEMMOVE]: Likewise.
 +      (memcmp) [!HAVE_MEMCMP]: Likewise.
 +      * s/ms-w32.h (bzero, bcopy, bcmp, GAP_USE_BCOPY)
 +      (BCOPY_UPWARD_SAFE, BCOPY_DOWNWARD_SAFE, HAVE_BCOPY, HAVE_BCMP):
 +      Don't define.
 +      (HAVE_MEMCMP, HAVE_MEMCPY, HAVE_MEMMOVE, HAVE_MEMSET): Define.
 +      * s/msdos.h (GAP_USE_BCOPY, BCOPY_UPWARD_SAFE)
 +      (BCOPY_DOWNWARD_SAFE): Don't define.
 +      * sysdep.c (memset) [!HAVE_MEMSET]: Define.
 +      (memcpy) [!HAVE_MEMCPY]: Define.
 +      (memmove) [!HAVE_MEMMOVE]: Define.
 +      (memcmp) [!HAVE_MEMCMP]: Define.
 +
 +2010-07-07  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * process.c (kbd_is_on_hold): New variable.
 +      (hold_keyboard_input, unhold_keyboard_input, kbd_on_hold_p):
 +      New functions.
 +      (wait_reading_process_output): If kbd_on_hold_p returns non-zero,
 +      select on empty input mask.
 +      (init_process): Initialize kbd_is_on_hold to 0.
 +
 +      * process.h (hold_keyboard_input, unhold_keyboard_input)
 +      (kbd_on_hold_p): Declare.
 +
 +      * keyboard.c (input_available_signal): Declare.
 +      (kbd_buffer_nr_stored): New function.
 +      (kbd_buffer_store_event_hold): If kbd_buffer_nr_stored returns
 +      more than KBD_BUFFER_SIZE/2, stop reding input (Bug#6571).
 +      (kbd_buffer_get_event): If input is suspended and kbd_buffer_nr_stored
 +      returns less than KBD_BUFFER_SIZE/4, resume reding input (Bug#6571).
 +      (tty_read_avail_input): If input is on hold, return.
 +      Don't read more that free slots in kbd_buffer (Bug#6571).
 +
 +2010-07-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdos.h:
 +      * msdos.c:
 +      * dosfns.c:
 +      * w16select.c: Convert function definitions to ANSI C.
 +
 +      * msdos.h (ctrl_break_func, install_ctrl_break_check):
 +      Remove unused prototypes.
 +
 +2010-07-07  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * coding.c, sysdep.c: Convert some more functions to standard C.
 +
 +2010-07-07  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * coding.c (decode_coding_gap, encode_coding_gap, decode_coding_object)
 +      (encode_coding_object): Use SPECPDL_INDEX.
 +      (syms_of_coding): Use DOS_NT.
 +
 +2010-07-07  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * intervals.h (interval): Use EMACS_UINT instead of unsigned EMACS_INT.
 +
 +      Make the function member of Lisp_Subr use standard C prototypes.
 +      * lisp.h (struct Lisp_Subr): Use a union for the function member.
 +      (DECL_ALIGN): Add a cast for the function.
 +      * eval.c (Feval, Ffuncall): Use the proper type for each type
 +      function call.
 +
 +2010-07-06  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * fringe.c (draw_fringe_bitmap_1): Use lookup_named_face to get
 +      fringe face id, so face-remapping-alist works (Bug#6091).
 +
 +2010-07-06  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32.c, w32console.c, w32fns.c, w32font.c, w32heap.c, w32inevt.c
 +      * w32menu.c, w32proc.c, w32reg.c, w32select.c, w32term.c
 +      * w32uniscribe.c, w32xfns.c: Convert function definitions to standard C.
 +
 +2010-07-06  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * xterm.c (x_get_keysym_name): Change type of parameter to int.
 +      * lisp.h: Declare x_get_keysym_name.
 +      * keyboard.c (modify_event_symbol): Don't declare
 +      x_get_keysym_name here.
 +
 +2010-07-06  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * ecrt0.c: Revert conversion to standard C.
 +
 +2010-07-05  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vm-limit.c (memory_warnings):
 +      * keyboard.c (modify_event_symbol):
 +      * floatfns.c (rounding_driver, ceiling2, floor2, truncate2)
 +      (round2, emacs_rint):
 +      * process.c (send_process, old_sigpipe): Convert function
 +      definitions and declarations to standard C.
 +
 +2010-07-05  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * buffer.c, cm.c, eval.c, keyboard.c, process.c, term.c, vm-limit.c,
 +      * xdisp.c: Convert function definitions to standard C.
 +
 +      * cm.c (cmputc): Arg C is now int, not char.
 +      * process.c (Fmake_network_process): Cast sockaddr_in* to sockaddr*.
 +
 +2010-07-05  James Cloos  <cloos@jhcloos.com>
 +
 +      * xterm.h (Xatom_net_wm_name, Xatom_net_wm_icon_name): New.
 +
 +      * xterm.c (x_term_init): Intern the _NET_WM_NAME and
 +      _NET_WM_ICON_NAME atoms.
 +
 +      * xfns.c (x_set_name_internal): Set the EWMH _NET_WM_NAME
 +      and _NET_WM_ICON_NAME properties, too, matching what is
 +      done in the Gtk+ case.
 +
 +2010-07-05  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (XTring_bell, XTset_terminal_window): Fix wrong prototype.
 +
 +      * xsmfns.c (SSDATA): New macro.
 +      (smc_save_yourself_CB, x_session_initialize): Use SSDATA for strings
 +      passed to strlen/strcpy/strcat.
 +      (create_client_leader_window): Surround with #ifndef USE_GTK.  Cast
 +      7:th arg to XChangeProperty to (unsigned char *).
 +
 +      * xsettings.c (something_changedCB, parse_settings)
 +      (apply_xft_settings): Reformat prototype.
 +      (something_changedCB, init_gconf): Remove unused variable i.
 +      (read_settings): Remove unused variable long_len.
 +
 +      * gtkutil.c (xg_get_pixbuf_from_pix_and_mask)
 +      (xg_get_image_for_pixmap, create_dialog)
 +      (xg_get_file_with_selection, xg_get_file_name, update_cl_data)
 +      (menuitem_highlight_callback, make_menu_item)
 +      (xg_create_one_menuitem, create_menus, xg_update_menu_item)
 +      (xg_create_scroll_bar, xg_update_scrollbar_pos)
 +      (xg_set_toolkit_scroll_bar_thumb, xg_tool_bar_button_cb)
 +      (xg_tool_bar_proxy_help_callback, xg_tool_bar_detach_callback)
 +      (xg_tool_bar_attach_callback, xg_tool_bar_help_callback)
 +      (xg_tool_bar_item_expose_callback): Reformat prototype.
 +      (xg_update_menubar): GList *group => GSList *group.
 +      (xg_modify_menubar_widgets): Initialize witem to 0, check witem != 0
 +      before use.
 +      (update_frame_tool_bar): 4:th param to xg_get_image_for_pixmap changed
 +      to GTK_IMAGE (wimage).
 +
 +2010-07-05  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * atimer.c: Use "" instead of <> for local includes for
 +      consistency with the rest of the code.
 +
 +      * xsmfns.c (smc_save_yourself_CB, smc_error_handler):
 +      * xrdb.c (get_system_name):
 +      * window.c (shrink_windows):
 +      * syntax.c (forw_comment):
 +      * scroll.c (calculate_scrolling, calculate_direct_scrolling)
 +      (ins_del_costs):
 +      * mem-limits.h (start_of_data):
 +      * lread.c (readevalloop):
 +      * gtkutil.c (xg_dialog_response_cb, xg_get_file_with_chooser)
 +      (xg_get_file_with_selection, xg_update_menubar, xg_update_submenu):
 +      * frame.c (x_get_focus_frame):
 +      * floatfns.c (fmod_float):
 +      * fileio.c (choose_write_coding_system):
 +      * emacs.c (fatal_error_signal, init_cmdargs, argmatch)
 +      (malloc_initialize_hook, sort_args, synchronize_locale):
 +      * doprnt.c (doprnt):
 +      * dired.c (compile_pattern):
 +      * data.c (fmod_float):
 +      * chartab.c (map_sub_char_table, map_sub_char_table_for_charset)
 +      (map_char_table_for_charset):
 +      * charset.c (define_charset_internal):
 +      * alloc.c (Fgarbage_collect): Convert declarations or definitions
 +      to standard C.
 +
 +2010-07-04  Tetsurou Okazaki  <okazaki@be.to>  (tiny change)
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lread.c (read1): Fix up last change to not mess up `c'.
 +
 +2010-07-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * strftime.c: Revert conversion to standard C (2010-07-04T07:50:25Z!dann@ics.uci.edu).
 +
 +2010-07-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Fix prototypes.
 +
 +      * atimer.c (start_atimer): Use EMACS_TIME, not struct timeval.
 +      * dired.c (file_name_completion_stat): Use DIRENTRY, not struct dirent.
 +      * fileio.c (read_non_regular, read_non_regular_quit): Add Lisp_Object
 +      arg, as required by internal_condition_case_1.
 +      * print.c (strout): Use const char* for arg PTR.
 +      * regex.c (bcmp_translate): Use RE_TRANSLATE_TYPE, not Lisp_Object.
 +      (analyse_first): Fix "const const".
 +      * sysdep.c (set_file_times): Use EMACS_TIME, not struct timeval.
 +      * unexelf.c (round_up, find_section): Use ElfW macro for arguments.
 +      * xgselect.c (xg_select): Use SELECT_TYPE, EMACS_TIME.
 +
 +2010-07-04  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * alloc.c: Convert function definitions to standard C.
 +      * atimer.c:
 +      * bidi.c:
 +      * bytecode.c:
 +      * callint.c:
 +      * callproc.c:
 +      * casefiddle.c:
 +      * casetab.c:
 +      * category.c:
 +      * ccl.c:
 +      * character.c:
 +      * charset.c:
 +      * chartab.c:
 +      * cmds.c:
 +      * coding.c:
 +      * composite.c:
 +      * data.c:
 +      * dbusbind.c:
 +      * dired.c:
 +      * dispnew.c:
 +      * doc.c:
 +      * doprnt.c:
 +      * ecrt0.c:
 +      * editfns.c:
 +      * fileio.c:
 +      * filelock.c:
 +      * filemode.c:
 +      * fns.c:
 +      * font.c:
 +      * fontset.c:
 +      * frame.c:
 +      * fringe.c:
 +      * ftfont.c:
 +      * ftxfont.c:
 +      * gtkutil.c:
 +      * indent.c:
 +      * insdel.c:
 +      * intervals.c:
 +      * keymap.c:
 +      * lread.c:
 +      * macros.c:
 +      * marker.c:
 +      * md5.c:
 +      * menu.c:
 +      * minibuf.c:
 +      * prefix-args.c:
 +      * print.c:
 +      * ralloc.c:
 +      * regex.c:
 +      * region-cache.c:
 +      * scroll.c:
 +      * search.c:
 +      * sound.c:
 +      * strftime.c:
 +      * syntax.c:
 +      * sysdep.c:
 +      * termcap.c:
 +      * terminal.c:
 +      * terminfo.c:
 +      * textprop.c:
 +      * tparam.c:
 +      * undo.c:
 +      * unexelf.c:
 +      * window.c:
 +      * xfaces.c:
 +      * xfns.c:
 +      * xfont.c:
 +      * xftfont.c:
 +      * xgselect.c:
 +      * xmenu.c:
 +      * xrdb.c:
 +      * xselect.c:
 +      * xsettings.c:
 +      * xsmfns.c:
 +      * xterm.c: Likewise.
 +
 +2010-07-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdos.c (IT_set_frame_parameters): Fix setting of colors in
 +      frames other than the initial one.  Fix reversal of colors when
 +      `reverse' is specified in the frame parameters.  Call
 +      update_face_from_frame_parameter instead of
 +      internal-set-lisp-face-attribute.  Initialize screen colors from
 +      initial_screen_colors[] when f->default_face_done_p is zero,
 +      instead of depending on being called with default-frame-alist as
 +      the alist argument.
 +
 +      * xfaces.c (update_face_from_frame_parameter): Move out of
 +      HAVE_WINDOW_SYSTEM portion.  Condition window-system only parts
 +      with HAVE_WINDOW_SYSTEM.
 +
 +      * msdos.c (IT_set_frame_parameters): Set menu-bar-lines according
 +      to menu-bar-mode, if not set in the frame parameters or in
 +      default-frame-alist.
 +
 +      * w32console.c (sys_tputs): Adjust argument list to prototype in
 +      term.c.
 +
 +2010-07-03  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * lisp.h (memory_warnings): Fix prototype.
 +
 +      * cm.h (evalcost): Fix prototype.
 +
 +      * cm.c (evalcost): Fix arg type.
 +
 +2010-07-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * term.c (term_clear_mouse_face, Fidentity):
 +      * syssignal.h (signal_handler_t):
 +      * lisp.h (memory_warnings):
 +      * coding.h (preferred_coding_system):
 +      * cm.h (evalcost):
 +      * blockinput.h (reinvoke_input_signal): Convert to standard C prototypes.
 +
 +2010-07-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dosfns.h (msdos_stdcolor_idx, msdos_stdcolor_name): Remove P_
 +      from prototypes.
 +
 +      * msdos.h (load_pixmap): Don't define away.
 +
 +2010-07-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * lisp.h:
 +      * atimer.h: Remove define for P_.
 +
 +      * alloc.c: Remove __P and P_ from .c and .m files.
 +      * atimer.c:
 +      * buffer.c:
 +      * callint.c:
 +      * category.c:
 +      * charset.c:
 +      * chartab.c:
 +      * cm.c:
 +      * coding.c:
 +      * composite.c:
 +      * data.c:
 +      * dired.c:
 +      * dispnew.c:
 +      * doc.c:
 +      * editfns.c:
 +      * emacs.c:
 +      * eval.c:
 +      * fileio.c:
 +      * filelock.c:
 +      * fns.c:
 +      * font.c:
 +      * fontset.c:
 +      * frame.c:
 +      * ftfont.c:
 +      * ftxfont.c:
 +      * gmalloc.c:
 +      * gtkutil.c:
 +      * image.c:
 +      * indent.c:
 +      * intervals.c:
 +      * keyboard.c:
 +      * keymap.c:
 +      * lread.c:
 +      * marker.c:
 +      * menu.c:
 +      * minibuf.c:
 +      * print.c:
 +      * process.c:
 +      * scroll.c:
 +      * search.c:
 +      * sound.c:
 +      * strftime.c:
 +      * syntax.c:
 +      * sysdep.c:
 +      * term.c:
 +      * terminal.c:
 +      * textprop.c:
 +      * unexalpha.c:
 +      * w32console.c:
 +      * w32fns.c:
 +      * w32font.c:
 +      * w32menu.c:
 +      * w32term.c:
 +      * w32uniscribe.c:
 +      * window.c:
 +      * xdisp.c:
 +      * xfaces.c:
 +      * xfns.c:
 +      * xfont.c:
 +      * xftfont.c:
 +      * xmenu.c:
 +      * xselect.c:
 +      * xterm.c: Likewise.
 +
 +      Remove P_ and __P macros.
 +      * atimer.h: Remove P_ and __P macros.
 +      * buffer.h:
 +      * category.h:
 +      * ccl.h:
 +      * character.h:
 +      * charset.h:
 +      * cm.h:
 +      * coding.h:
 +      * composite.h:
 +      * dispextern.h:
 +      * disptab.h:
 +      * dosfns.h:
 +      * font.h:
 +      * fontset.h:
 +      * frame.h:
 +      * gtkutil.h:
 +      * indent.h:
 +      * intervals.h:
 +      * keyboard.h:
 +      * keymap.h:
 +      * lisp.h:
 +      * macros.h:
 +      * md5.h:
 +      * menu.h:
 +      * msdos.h:
 +      * nsterm.h:
 +      * puresize.h:
 +      * region-cache.h:
 +      * syntax.h:
 +      * syssignal.h:
 +      * systime.h:
 +      * termhooks.h:
 +      * w32font.h:
 +      * w32term.h:
 +      * widget.h:
 +      * window.h:
 +      * xgselect.h:
 +      * xsettings.h:
 +      * xterm.h: Likewise.
 +
 +2010-07-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * lisp.h: Document that USE_LISP_UNION_TYPE is now enabled using autoconf.
 +
 +      Cleanup old code.
 +      * dired.c (BSD4_3): Remove all uses, redundant with BSD4_2.
 +      * syssignal.h: Remove code for Lynx, not supported anymore.
 +      * vm-limit.c: Remove unused code the depends on emacs not being
 +      defined and NO_LIM_DATA being defined.
 +      * mem-limits.h: Remove dead code.
 +
 +2010-07-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * window.c (Fwindow_absolute_pixel_edges): Doc fix.
 +
 +      * window.c (calc_absolute_offset, Fwindow_absolute_pixel_edges)
 +      (Fwindow_inside_absolute_pixel_edges): New functions (bug#5721).
 +
 +      * nsfns.m (compute_tip_xy): Do not convert coordinates from frame
 +      parameters, they are already absolute.
 +
 +      * nsterm.m (x_set_window_size, initFrameFromEmacs):
 +      Rename FRAME_NS_TOOLBAR_HEIGHT to FRAME_TOOLBAR_HEIGHT.
 +
 +      * nsterm.h (FRAME_NS_TOOLBAR_HEIGHT): Rename to FRAME_TOOLBAR_HEIGHT.
 +
 +      * nsmenu.m (update_frame_tool_bar, free_frame_tool_bar):
 +      Update FRAME_TOOLBAR_HEIGHT.
 +
 +      * nsmenu.m (free_frame_tool_bar, update_frame_tool_bar):
 +      Add BLOCK/UNBLOCK_INPUT so asserts don't trigger.
 +
 +2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frame.c (get_future_frame_param, Fmake_terminal_frame): Don't
 +      check default-frame-alist.
 +
 +2010-06-30  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * process.c (create_process): Avoid using invalid file descriptors.
 +
 +      * callproc.c (child_setup): Avoid closing a file descriptor twice.
 +
 +2010-06-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xsettings.c (Ffont_get_system_normal_font, Ffont_get_system_font):
 +      Improve documentation.  Return font regardless of use_system_font.
 +      (syms_of_xsettings): Improve documentation for font-use-system-font.
 +
 +2010-07-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xfaces.c (realize_face): Garbage the frame if a face is removed
 +      (Bug#6593).
 +
 +2010-07-05  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * keyboard.c: Remove duplicate <setjmp.h>.
 +      (read_key_sequence): Remove volatile qualifiers.
 +
 +2010-07-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * dispextern.h (FRINGE_HEIGHT_BITS): New define.
 +      (struct glyph_row): New members left_fringe_offset and
 +      right_fringe_offset.
 +
 +      * xterm.c (x_draw_fringe_bitmap): Don't clip bottom aligned bitmap
 +      specially.
 +      * w32term.c (w32_draw_fringe_bitmap): Likewise.
 +      * nsterm.m (ns_draw_fringe_bitmap): Likewise.
 +
 +      * fringe.c (draw_fringe_bitmap_1): Don't clip bitmap here.
 +      Take account of bitmap offset.
 +      (draw_window_fringes): Take account of window vscroll.
 +      (update_window_fringes): Likewise.  Extend top-aligned top indicator
 +      or bottom-aligned bottom indicator to adjacent rows if it doesn't fit
 +      in one row.  Don't set redraw_fringe_bitmaps_p outside row comparison.
 +      Set left_fringe_offset and right_fringe_offset (Bug#5634, Bug#6325).
 +
 +2010-07-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32fns.c (Qtooltip): Declare.
 +      Suggested by Andy Moreton <andrewjmoreton@gmail.com>.
 +
 +2010-07-03  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xmenu.c (x_activate_menubar): Send Press/Release for Gtk+ to avoid
 +      grab on just Press (Bug#6499).
 +
 +2010-07-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frame.c (Qtooltip): New var.
 +      (delete_frame): Use it.  Fix faulty if statement.  Don't update
 +      mode line for tooltip frames.  Suggested by Martin Rudalics.
 +
 +      * xfns.c (x_create_tip_frame):
 +      * w32fns.c (x_create_tip_frame): Use it.
 +
 +2010-06-17  Naohiro Aota  <naota@elisp.net>  (tiny change)
 +
 +      * xftfont.c (xftfont_open): Check font width one by one also when
 +      spacing is dual.
 +
 +      * ftfont.c (ftfont_open): Ditto.
 +
 +2010-06-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * s/sol2-6.h (INHIBIT_X11R6_XIM): Remove, handled by configure now.
 +
 +      * Makefile.in (CANNOT_DUMP): Update for configure name change.
 +
 +      * s/freebsd.h (USE_MMAP_FOR_BUFFERS):
 +      * s/irix6-5.h (USE_MMAP_FOR_BUFFERS):
 +      * s/darwin.h (SYSTEM_MALLOC):
 +      * s/sol2-10.h (SYSTEM_MALLOC): Move to configure.
 +
 +2010-06-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m: extern declare Vmenu_bar_mode, Vtool_bar_mode.
 +      (ns_get_screen): Don't assign integer to f.
 +      (Fx_display_color_cells): Declarations before statements.
 +
 +2010-06-28  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xfns.c (x_default_font_parameter): Remove got_from_system
 +      (Bug#6526).
 +
 +      * xterm.h (gtk_widget_get_window, gtk_widget_get_mapped)
 +      (gtk_adjustment_get_page_size, gtk_adjustment_get_upper): New
 +      defines based on what configure finds.
 +
 +      * xterm.c (XTflash): Use gtk_widget_get_window.
 +      (xg_scroll_callback): Use gtk_adjustment_get_upper and
 +      gtk_adjustment_get_page_size.
 +      (handle_one_xevent): Use gtk_widget_get_mapped.
 +      (x_term_init): Remove HAVE_GTK_MULTIDISPLAY and associated error
 +      messages.
 +
 +      * xmenu.c (create_and_show_popup_menu): Call gtk_widget_get_mapped.
 +
 +      * gtkutil.h: Replace HAVE_GTK_FILE_BOTH with
 +      HAVE_GTK_FILE_SELECTION_NEW.
 +
 +      * gtkutil.c (xg_display_open, xg_display_close): Remove
 +      HAVE_GTK_MULTIDISPLAY, it is always defined.
 +      (xg_display_open): Return type is void.
 +      (gtk_widget_set_has_window)
 +      (gtk_dialog_get_action_area, gtk_dialog_get_content_area)
 +      (gtk_widget_get_sensitive, gtk_adjustment_set_page_size)
 +      (gtk_adjustment_set_page_increment)
 +      (gtk_adjustment_get_step_increment): #define these if not found
 +      by configure.
 +      (remove_submenu): New define based on Gtk+ version.
 +      (xg_set_cursor, xg_frame_resized, xg_event_is_for_scrollbar): Use
 +      gtk_widget_get_window.
 +      (xg_frame_resized, xg_update_frame_menubar): Use gtk_widget_get_mapped.
 +      (xg_create_frame_widgets): Use gtk_widget_set_has_window.
 +      (create_dialog): Use gtk_dialog_get_action_area and
 +      gtk_dialog_get_content_area.
 +      (xg_uses_old_file_dialog, xg_get_file_name): Remove HAVE_GTK_FILE_BOTH
 +      and HAVE_GTK_FILE_CHOOSER_DIALOG_NEW.  File chooser is always
 +      available, so checking for HAVE_GTK_FILE_SELECTION_NEW is enough.
 +      (xg_update_menubar, xg_update_submenu, xg_show_toolbar_item): Use
 +      g_object_ref and g_object_unref.
 +      (xg_update_menu_item, xg_tool_bar_menu_proxy): Use
 +      gtk_widget_get_sensitive.
 +      (xg_update_submenu): Use remove_submenu.
 +      (xg_update_scrollbar_pos): Don't use GtkFixedChild, use child
 +      properties instead to get old x and y position.
 +      (xg_set_toolkit_scroll_bar_thumb): Use gtk_adjustment_get_page_size,
 +      gtk_adjustment_get_step_increment, gtk_adjustment_set_page_size,
 +      gtk_adjustment_set_step_increment and gtk_adjustment_set_page_increment.
 +      (xg_get_tool_bar_widgets): New function.
 +      (xg_tool_bar_menu_proxy, xg_show_toolbar_item)
 +      (update_frame_tool_bar): Call xg_get_tool_bar_widgets.
 +      (toolbar_set_orientation): New #define based on if configure
 +      finds gtk_orientable_set_orientation.
 +      (xg_create_tool_bar): Call toolbar_set_orientation.
 +      (xg_make_tool_item, xg_show_toolbar_item): Call gtk_box_pack_start
 +      instead of gtk_box_pack_start_defaults.
 +
 +2010-06-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cmds.c (Fdelete_backward_char): Move into Lisp.
 +
 +2010-06-27  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * s/freebsd.h (BSD4_2): Remove redundant definition.
 +      bsd-common.h defines it already.
 +
 +2010-06-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xfns.c (Fx_create_frame): Don't consult X resouces when setting
 +      menu-bar-lines and tool-bar-lines.  Use menu-bar-mode and
 +      tool-bar-mode, which are now set using these X resources at
 +      startup, to determine the defaults (Bug#2249).
 +
 +      * w32fns.c (Fx_create_frame):
 +      * nsfns.m (Fx_create_frame): Likewise.
 +
 +      * frame.c (Vmenu_bar_mode, Vtool_bar_mode): New vars.
 +
 +2010-06-24  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * gtkutil.c (xg_update_scrollbar_pos):
 +      Avoid C99 mid-block variable declaration.
 +
 +2010-06-22  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (x_scroll_bar_create): Remove call to xg_show_scroll_bar.
 +
 +      * gtkutil.h (xg_show_scroll_bar): Remove.
 +
 +      * gtkutil.c (xg_update_scrollbar_pos): Show/hide scroll bar as needed
 +      if height is less than scroll bar min size.
 +      (xg_show_scroll_bar): Remove, show moved to xg_update_scrollbar_pos.
 +
 +      * xfns.c (x_default_font_parameter): Try to open font from system
 +      before using it (bug#6478).  Rename got_from_gconf to got_from_system.
 +
 +2010-06-22  Keith Packard  <keithp@keithp.com>  (tiny change)
 +
 +      * font.c (font_parse_fcname): Allow . for sizes like 7.5 (bug#6437).
 +
 +2010-06-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (try_scrolling): When scroll-conservatively is set to
 +      most-positive-fixnum, be extra accurate when scrolling window
 +      start, to avoid missing the cursor line.
 +
 +2010-06-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (try_scrolling): Compute the limit for searching point
 +      in forward scroll from scroll_max, instead of an arbitrary limit
 +      of 10 screen lines.  See
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00766.html
 +      and
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00773.html
 +      for details.
 +
 +2010-06-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * editfns.c (Fbyte_to_string): Pacify compiler.
 +
 +2010-06-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lread.c (read1): Phase out old-style backquotes a bit more.
 +
 +2010-06-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in ($(BLD)/bidi.$(O)): Depend on biditype.h and
 +      bidimirror.h.
 +
 +      * deps.mk (bidi.o): Depend on biditype.h and bidimirror.h.
 +
 +      * bidi.c (bidi_initialize): Remove explicit initialization of
 +      bidi_type_table; include biditype.h instead.  Don't support
 +      entries whose second codepoint is zero.  Initialize bidi_mirror_table.
 +      (bidi_mirror_char): Use bidi_mirror_table.
 +
 +      * biditype.h: New file.
 +
 +      * bidimirror.h: New file.
 +
 +      * window.c (syms_of_window): Doc fix (bug#6409).
 +
 +2010-06-12  Romain Francoise  <romain@orebokech.com>
 +
 +      * Makefile.in (lisp, shortlisp): Use new location of vc-hooks and
 +      ediff-hook.
 +
 +2010-06-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * editfns.c (Fbyte_to_string): Pacify compiler.
 +
 +      * m/ibms390x.h: Rather than duplicating ibms390.h, just include it.
 +
 +2010-06-26  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * alloc.c (Fmake_byte_code): Don't access undefined argument
 +      (Bug#6517).
 +
 +2010-06-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xdisp.c (next_element_from_image): Ensure that after-strings are
 +      read the next time we hit handle_stop (Bug#1336).
 +
 +2010-06-23  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * lread.c (read1): Signal error if #s is not followed by paren.
 +
 +2010-06-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * image.c (free_image): Mark frame as garbaged (Bug#6426).
 +
 +      * keymap.c (Fdefine_key): Doc fix (Bug#6460).
 +
 +2010-06-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * editfns.c (Fbyte_to_string): Pacify compiler.
 +
 +2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * dbusbind.c (xd_append_arg): Don't "make-unibyte" the string.
 +      Check `object's type before accessing its guts.
 +
 +2010-06-09  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * s/usg5-4.h: Fix previous change.
 +      Suggested by Lawrence Mitchell <wence@gmx.li>
 +
 +2010-06-08  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * minibuf.c (Fall_completions): Add more checks.
 +
 +2010-06-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * minibuf.c (Fall_completions): Check COLLECTION's size (bug#6378).
 +
 +2010-06-08  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * lread.c (X_OK): Remove, unused.
 +
 +      * dispnew.c: Remove obsolete comment.
 +
 +      Remove INCLUDED_FCNTL.
 +      * xterm.c (INCLUDED_FCNTL):
 +      * callproc.c (INCLUDED_FCNTL):
 +      * alloc.c (INCLUDED_FCNTL):
 +      * systty.h (INCLUDED_FCNTL): Remove all uses, not needed anymore.
 +      (emacs_get_tty, emacs_set_tty): Declare unconditionally.
 +
 +2010-06-07  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.c (Fselect_window): Move `record_buffer' up to the
 +      beginning of this function, so the buffer gets recorded
 +      even if the selected window does not change.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00137.html
 +
 +2010-06-07  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * cmds.c (Fforward_char, Fbackward_char): Fix typos in docstrings.
 +      (Fforward_line, Fbeginning_of_line): Reflow docstrings.
 +
 +2010-06-06  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove BSTRING related code, all platforms define it.
 +      * s/usg5-4.h (BSTRING): Remove definition.
 +      * s/template.h (BSTRING):
 +      * s/msdos.h (BSTRING):
 +      * s/ms-w32.h (BSTRING):
 +      * s/hpux10-20.h (BSTRING):
 +      * s/gnu-linux.h (BSTRING):
 +      * s/darwin.h (BSTRING):
 +      * s/cygwin.h (BSTRING):
 +      * s/bsd-common.h (BSTRING):
 +      * s/aix4-2.h (BSTRING): Likewise.
 +      * sysdep.c: Remove code depending on BSTRING not being defined.
 +
 +2010-06-05  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Remove obsolete macro BASE_LEADING_CODE_P.
 +      * character.h (BASE_LEADING_CODE_P): Remove.
 +      * regex.c [!emacs] (BASE_LEADING_CODE_P): Remove.
 +      * buffer.c (Fset_buffer_multibyte):
 +      * indent.c (scan_for_column, compute_motion):
 +      * insdel.c (count_combining_before, count_combining_after):
 +      Use LEADING_CODE_P instead of BASE_LEADING_CODE_P.
 +
 +2010-06-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Turn `directory-sep-char' into a noop.
 +
 +      * lisp.h [WINDOWSNT] (Vdirectory_sep_char): Don't declare.
 +      (DIRECTORY_SEP): Define unconditionally.
 +
 +      * s/ms-w32.h (DIRECTORY_SEP): Remove.
 +
 +      * emacs.c (decode_env_path): Don't check DIRECTORY_SEP,
 +      call dostounix_filename directly.
 +
 +      * fileio.c (CORRECT_DIR_SEPS): Remove.
 +      (Ffile_name_directory, directory_file_name, Fexpand_file_name)
 +      (Fsubstitute_in_file_name): Use dostounix_filename instead.
 +      (file_name_as_directory): Use dostounix_filename, DIRECTORY_SEP.
 +      (syms_of_fileio) <directory-sep-char>: Move to subr.el.
 +
 +      * w32proc.c (CORRECT_DIR_SEPS): Remove.
 +      (Fw32_short_file_name, Fw32_long_file_name): Use dostounix_filename.
 +
 +2010-06-03  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * process.c (conv_lisp_to_sockaddr): Fix conversion of IPv4 address.
 +      (Bug#6346)
 +
 +2010-06-03  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * ccl.c (Fccl_program_p): Fix typo in docstring.
 +
 +2010-06-03  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Move UNEXEC definition to autoconf.
 +      * s/usg5-4.h (UNEXEC): Remove, move to configure.in.
 +      * s/sol2-10.h (UNEXEC):
 +      * s/irix6-5.h (UNEXEC):
 +      * s/hpux10-20.h (UNEXEC):
 +      * s/gnu-linux.h (UNEXEC):
 +      * s/darwin.h (UNEXEC):
 +      * s/cygwin.h (UNEXEC):
 +      * s/bsd-common.h (UNEXEC):
 +      * s/aix4-2.h (UNEXEC):
 +      * m/alpha.h (UNEXEC): Likewise.
 +      * Makefile.in (UNEXEC_OBJ): Define using @UNEXEC_OBJ@.
 +
 +2010-06-03  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Remove obsolete pre-unicode2 macros.
 +      * character.h (MULTIBYTE_FORM_LENGTH, PARSE_MULTIBYTE_SEQ): Remove.
 +      * composite.c (composition_reseat_it):
 +      * data.c (Faset):
 +      * fns.c (Ffillarray):
 +      * regex.c (re_search_2): Use BYTES_BY_CHAR_HEAD.
 +      [!emacs] (BYTES_BY_CHAR_HEAD): Define instead of MULTIBYTE_FORM_LENGTH.
 +
 +2010-06-03  Juri Linkov  <juri@jurta.org>
 +
 +      * buffer.c (Fother_buffer): Add CHECK_FRAME.
 +      (Fswitch_to_buffer): Remove unused variable `err'.
 +
 +2010-06-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * m/template.h (NO_SOCK_SIGIO): Remove, no longer used.
 +
 +      * m/hp800.h (alloca) [__NetBSD__ && __GNUC__]: No need to define it,
 +      now that AH_BOTTOM does it.
 +
 +      * m/hp800.h (HAVE_ALLOCA):
 +      * m/ibms390x.h (HAVE_ALLOCA): Do not define, no longer needed.
 +
 +      * m/ia64.h, s/gnu-linux.h, s/gnu.h, s/netbsd.h, s/usg5-4.h:
 +      Remove NOT_C_CODE tests, it is always true now.
 +
 +2010-06-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix config.h includes.
 +      * xsettings.c:
 +      * xgselect.c:
 +      * nsterm.m:
 +      * nsselect.m:
 +      * nsimage.m:
 +      * nsfont.m:
 +      * nsfns.m:
 +      * dbusbind.c: Use #include <config.h> instead of "config.h" as all
 +      other files do.
 +
 +      * gmalloc.c: Remove BROKEN_PROTOTYPES reference, unused.
 +
 +      * s/sol2-6.h: Remove obsolete comments.
 +
 +      Remove unnecessary alloca.h includes.
 +      * keymap.c: Do not include alloca.h, config.h does that.
 +      * sysdep.c: Likewise.  Do not define fwrite, not used.
 +
 +2010-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * sysdep.c (child_setup_tty): Move the non-canonical initialization to
 +      the HAVE_TERMIO where it belongs (bug#6149).
 +
 +2010-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keymap.c (Fwhere_is_internal): Fix handling of remapping (in thread
 +      of bug#6305).
 +
 +2010-05-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_move_to_visually_next): Make sure the sentinel
 +      state is always cached (bug#6306).
 +
 +2010-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Fix cursor motion in bidi-reordered continued lines.
 +      * xdisp.c (try_cursor_movement): Backup to non-continuation line
 +      only after finding point's row.  Fix the logic.  Rewrite the loop
 +      over continuation lines in bidi-reordered buffers.  Return
 +      CURSOR_MOVEMENT_MUST_SCROLL upon failure to find a suitable row,
 +      rather than CURSOR_MOVEMENT_CANNOT_BE_USED.
 +
 +2010-05-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * fileio.c (Fdelete_file): Pass TRASH arg to handler call.
 +
 +2010-05-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.c (font_delete_unmatched): Check Vface_ignored_fonts.
 +      Don't sheck SPEC if it is nil.
 +      (font_list_entities): Call font_delete_unmatched if
 +      Vface_ignored_fonts is non-nil.  (Bug#6287)
 +
 +2010-05-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LIBES): Remove $LOADLIBES, it is never set.
 +
 +2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * fileio.c (Fdelete_file): Change meaning of optional arg to mean
 +      whether to trash.
 +      (internal_delete_file, Frename_file): Callers changed.
 +      (delete_by_moving_to_trash): Doc fix.
 +      (Fdelete_directory_internal): Don't move to trash.
 +
 +      * callproc.c (delete_temp_file):
 +      * buffer.c (Fkill_buffer): Callers changed.
 +
 +      * lisp.h: Update prototype.
 +
 +2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xdisp.c (redisplay_window): After redisplay, check if point is
 +      still valid before setting it (Bug#6177).
 +
 +2010-05-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in, autodeps.mk, deps.mk, ns.mk:
 +      Convert comments to Makefile format.
 +
 +      * Makefile.in (bootstrap-clean): No more Makefile.c.
 +
 +2010-05-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (YMF_PASS_LDFLAGS): Remove.
 +      (temacs${EXEEXT}): Use PRE_EDIT_LDFLAGS, POST_EDIT_LDFLAGS.
 +
 +      * Makefile.in (NS_IMPL_GNUSTEP_INC, NS_IMPL_GNUSTEP_TEMACS_LDFLAGS):
 +      Remove.
 +      (TEMACS_LDFLAGS): Do not use NS_IMPL_GNUSTEP_TEMACS_LDFLAGS.
 +
 +2010-05-26  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.c (composition_compute_stop_pos): Fix condition for
 +      backward scanning.
 +
 +2010-05-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (@NS_IMPL_GNUSTEP_INC@, NS_IMPL_GNUSTEP_TEMACS_LDFLAGS):
 +      Move before TEMACS_LDFLAGS.
 +      (TEMACS_LDFLAGS): Use $NS_IMPL_GNUSTEP_TEMACS_LDFLAGS.
 +      (temacs${EXEEXT}): Do not use $NS_IMPL_GNUSTEP_TEMACS_LDFLAGS.
 +
 +      * Makefile.in (NOT_C_CODE): No longer define.
 +      (config.h): No longer include.
 +
 +      * Makefile.in (LD_SWITCH_SYSTEM_TEMACS): Move definition after some
 +      variables it may reference.
 +
 +      * Makefile.in (LD_SWITCH_SYSTEM_EXTRA): Remove.
 +      (TEMACS_LDFLAGS): Remove LD_SWITCH_SYSTEM_EXTRA.
 +
 +2010-05-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * dispextern.h (struct composition_it): New members rule_idx and
 +      charpos.
 +
 +      * xdisp.c (set_iterator_to_next): While scanning backward, assume
 +      that the character positions of IT point the last character of the
 +      current grapheme cluster.
 +      (next_element_from_composition): Don't change character positions
 +      of IT.
 +      (append_composite_glyph): Set glyph->charpos to
 +      it->cmp_it.charpos.
 +
 +      * composite.c (autocmp_chars): Change the first argument to RULE,
 +      and try composition with RULE only.
 +      (composition_compute_stop_pos): Record the index number of the
 +      composition rule in CMP_IT->rule_idx.
 +      (composition_reseat_it): Call autocmp_chars repeatedly until the
 +      correct rule of the composition is found.
 +      (composition_update_it): Set CMP_IT->charpos.  Assume the CHARPOS
 +      is at the last character of the current grapheme cluster when
 +      CMP_IT->reversed_p is nonzero.
 +
 +2010-05-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * editfns.c (Fbyte_to_string): New function.
 +
 +2010-05-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * process.c (Fmake_network_process): Set :host to nil if it's not used.
 +      Suggested by Masatake YAMATO <yamato@redhat.com>.
 +
 +2010-05-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispextern.h (init_iterator): Sync prototype with changed definition.
 +
 +2010-05-20  enami tsugutomo  <tsugutomo.enami@jp.sony.com>
 +
 +      * s/netbsd.h: If terminfo is found, use it in preference to
 +      termcap.  (Bug#6190)  [Backport from trunk]
 +
 +2010-05-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Redesign and reimplement bidi-aware edge positions of glyph rows.
 +
 +      * dispextern.h (struct glyph_row): New members minpos and maxpos.
 +      (MATRIX_ROW_START_CHARPOS, MATRIX_ROW_START_BYTEPOS)
 +      (MATRIX_ROW_END_CHARPOS, MATRIX_ROW_END_BYTEPOS): Reference minpos
 +      and maxpos members instead of start.pos and end.pos, respectively.
 +
 +      * xdisp.c (display_line): Compare IT_CHARPOS with the position in
 +      row->start.pos, rather than with MATRIX_ROW_START_CHARPOS.
 +      (cursor_row_p): Use row->end.pos rather than MATRIX_ROW_END_CHARPOS.
 +      (try_window_reusing_current_matrix, try_window_id):
 +      Use ROW->minpos rather than ROW->start.pos.
 +      (init_from_display_pos, init_iterator): Use EMACS_INT for
 +      character and byte positions.
 +      (find_row_edges): Rename from find_row_end.  Accept additional
 +      arguments for minimum and maximum buffer positions seen by
 +      display_line for this row.  Don't use iterator to find the
 +      position following the maximum one; instead, increment the
 +      position found by display_line directly.  Fix logic; eol_pos
 +      should be tested before the rest.  Handle the case of characters
 +      delivered from display vector (bug#6036).  Fix tests related to
 +      it->method.  Handle the truncated_on_right_p rows.
 +      (RECORD_MAX_MIN_POS): New macro.
 +      (display_line): Use it to record the minimum and maximum buffer
 +      positions for glyphs in the row being assembled.  Record the
 +      position of the newline that terminates the line.  If word wrap is
 +      in effect, restore minimum and maximum positions seen up to the
 +      wrap point, when iterator returns to it.
 +      (try_window_reusing_current_matrix): Give up if in bidi-reordered
 +      row and cursor not already at point.  Restore original pre-bidi
 +      code for unidirectional buffers.
 +
 +      * dispnew.c (increment_row_positions, check_matrix_invariants):
 +      Increment and check row->start.pos and row->end.pos, in addition
 +      to MATRIX_ROW_START_CHARPOS and MATRIX_ROW_END_CHARPOS.
 +
 +      * .gdbinit (prowlims): Display row->minpos and row->maxpos.
 +      Display truncated_on_left_p and truncated_on_right_p flags.
 +      Formatting fixes.
 +      (pmtxrows): Display the ordinal number of each row.  Don't display
 +      rows beyond the last one.
 +
 +      * bidi.c (bidi_cache_iterator_state): Don't zero out new_paragraph:
 +      it is not copied by bidi_copy_it.
 +
 +2010-05-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (sys_write): Break writes into chunks smaller than 32MB.
 +      (Bug#6237)
 +
 +2010-05-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * image.c (Fimage_flush): Rename from image-refresh.
 +
 +2010-05-21  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xdisp.c (redisplay_internal): Clear caches even if redisplaying
 +      just one window.
 +
 +      * image.c (Vimage_cache_eviction_delay): Decrease to 300.
 +      (clear_image_cache): If the number of cached images is unusually
 +      large, decrease the cache eviction delay (Bug#6230).
 +
 +2010-05-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (${ns_appdir}, ${ns_appbindir}Emacs, ns-app):
 +      Move these rules to ns.mk.
 +      * ns.mk: New file.
 +
 +      * Makefile.in (../src/$(OLDXMENU), $(OLDXMENU)): Always define rules.
 +
 +      * Makefile.in (CANNOT_DUMP): New, set by configure.
 +      (emacs${EXEEXT}, bootstrap-emacs${EXEEXT}): Use $CANNOT_DUMP.
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * fileio.c (Fdelete_file): Change interative spec to use
 +      `read-file-name' like in `find-file-read-args' where the default
 +      value is `default-directory' instead of `buffer-file-name'.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00533.html
 +
 +2010-05-20  Kevin Ryde  <user42@zip.com.au>
 +
 +      * keyboard.c (Vlast_command, Vkeyboard_translate_table)
 +      (Voverriding_terminal_local_map, Vsystem_key_alist)
 +      (Vlocal_function_key_map): Fix manual link in docstring (Bug#6224).
 +
 +2010-05-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (DEPDIR): New constant.
 +      (DEPFLAGS): Set with configure, not cpp.
 +      (MKDEPDIR): New, set by configure.
 +      (.c.o, .m.o, ecrt0.o): Use $MKDEPDIR.
 +      (clean): Use $DEPDIR.
 +      (deps_frag): Include from configure.
 +      Move static/dynamic dependency stuff to deps.mk/autodeps.mk.
 +      * deps.mk, autodeps.mk: New files, extracted from Makefile.in.
 +
 +      * bidi.c (bidi_cache_shrink, bidi_cache_iterator_state): Fix
 +      reallocation of the cache.  (Bug#6210)
 +
 +2010-05-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * s/msdos.h (ORDINARY_LINK): Move to sed2v2.inp.
 +
 +      * Makefile.in (LD, YMF_PASS_LDFLAGS): Set with configure, not cpp.
 +      (GNULIB_VAR): Remove.
 +      (LIBES): Use LIB_GCC instead of GNULIB_VAR.
 +
 +      * m/ibms390x.h (LINKER):
 +      * m/macppc.h (LINKER) [GNU_LINUX]:
 +      * s/aix4-2.h (ORDINARY_LINK):
 +      * s/cygwin.h (LINKER):
 +      * s/darwin.h (ORDINARY_LINK):
 +      * s/gnu.h (ORDINARY_LINK):
 +      * s/netbsd.h (LINKER):
 +      * s/usg5-4.h (ORDINARY_LINK):
 +      Move to configure.
 +
 +      * s/aix4-2.h (LINKER): Remove; this file sets ORDINARY_LINK.
 +
 +2010-05-18  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * character.c (Fstring, Funibyte_string): Use SAFE_ALLOCA to
 +      prevent stack overflow if number of arguments is too large
 +      (Bug#6214).
 +
 +2010-05-18  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * charset.c (load_charset_map_from_file): Don't call close after fclose.
 +
 +2010-05-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * s/gnu-linux.h: Combine two conditionals.
 +
 +      * Makefile.in (otherobj): Include $(VMLIMIT_OBJ) separately from
 +      $(POST_ALLOC_OBJ).
 +
 +      * Makefile.in (RALLOC_OBJ): New, set by configure.
 +      (rallocobj): Replace with the previous variable.
 +      (otherobj): Use $RALLOC_OBJ.
 +
 +      * s/gnu.h (REL_ALLOC) [DOUG_LEA_MALLOC]:
 +      * s/gnu-linux.h (REL_ALLOC) [DOUG_LEA_MALLOC]: Move undef to configure.
 +
 +      * Makefile.in (GMALLOC_OBJ, VMLIMIT_OBJ): New, set by configure.
 +      (gmallocobj, vmlimitobj): Replace with previous two variables.
 +      (otherobj): Use $GMALLOC_OBJ, $VMLIMIT_OBJ.
 +
 +2010-05-17  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (OLDXMENU_DEPS): New, set by configure.
 +      (stamp-oldxmenu): Use $OLDXMENU_DEPS.
 +
 +2010-05-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (${ns_appbindir}Emacs, ns-app): Always define these rules.
 +
 +      * Makefile.in (clean): Get rid of HAVE_NS conditional.
 +
 +      * Makefile.in (ns_appdir, ns_appbindir): Now configure adds the
 +      trailing "/".
 +
 +      * Makefile.in (TEMACS_LDFLAGS2): New, set by configure.
 +      (temacs${EXEEXT}): Combine the NS_IMPL_GNUSTEP case with the default.
 +
 +      * Makefile.in (GNUSTEP_SYSTEM_LIBRARIES): Remove, unused.
 +      (NS_IMPL_GNUSTEP_TEMACS_LDFLAGS): New, set by configure.
 +      (LD) [NS_IMPL_GNUSTEP]: Set to $(CC) -rdynamic.
 +      (temacs${EXEEXT}): Remove $LOCALCPP, never defined or referenced.
 +      Make most of the NS_IMPL_GNUSTEP case the same as the default case.
 +
 +      * Makefile.in (temacs${EXEEXT}) [!NS_IMPL_GNUSTEP]:
 +      Remove ${STARTFLAGS}, nothing ever sets it.
 +
 +2010-05-16  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * m/ia64.h (UNEXEC): Remove, set in s/*.h.
 +
 +2010-05-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LIBX_BASE): Always define.
 +
 +      * Makefile.in (LIBX_OTHER): Move out of cpp section.
 +
 +      * Makefile.in (LIBXT): Always define.
 +
 +2010-05-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (OLDXMENU, LIBXMENU, LIBX_OTHER): Always define.
 +
 +      * Makefile.in (FONT_DRIVERS): Remove, replace with $FONT_OBJ.
 +      (obj, SOME_MACHINE_OBJECTS): Use $FONT_OBJ.
 +
 +2010-05-15  Ken Raeburn  <raeburn@raeburn.org>
 +
 +      * lisp.h (XFLOAT_DATA): Use "0?x:x" to generate an rvalue.  (Bug#5916)
 +      (LISP_MAKE_RVALUE) [!USE_LISP_UNION_TYPE && !__GNUC__]: Likewise.
 +
 +      * emacs.c (main): Initialize initial-environment and
 +      process-environment before generating from env, not after.
 +
 +      Handle --version reasonably in CANNOT_DUMP configuration.
 +      * emacs.c (emacs_version, emacs_copyright): New string variables.
 +      (Vemacs_version, Vemacs_copyright): New Lisp_Object variables.
 +      (syms_of_emacs): Defvar them, and initialize them from the C
 +      string variables.
 +      (main): If initialization hasn't been done, print initial version
 +      info from the C strings, instead of starting an interactive session.
 +
 +2010-05-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_paragraph_init): Don't leave alone garbage values
 +      of bidi_it->paragraph_dir.  Call bidi_initialize if needed.
 +      (bidi_paragraph_init): Remove redundant assertion that we are at
 +      the beginning of a line after call to bidi_find_paragraph_start.
 +
 +      * xdisp.c (Fcurrent_bidi_paragraph_direction): New function.
 +      (syms_of_xdisp): Defsubr it.
 +
 +      * cmds.c (Fforward_char, Fbackward_char): Doc fix.
 +
 +      * Makefile.in: Fix MSDOS-related comments.
 +
 +2010-05-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (OLDXMENU_TARGET): New, set by configure.
 +      (really-lwlib, really-oldXMenu): Always define.
 +      ($OLDXMENU): Depend on $OLDXMENU_TARGET.
 +
 +      * Makefile.in: Simplify cpp conditional.
 +
 +      * Makefile.in (${ns_appdir}): Simplify using umask.
 +
 +      * Makefile.in (${ns_appdir}): Remove references to CVS-related files.
 +
 +2010-05-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * eval.c (specbind): Remove left-over duplicate test.
 +      Disallow let-binding frame-local vars.  Add comment.
 +
 +2010-05-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Make the cache of bidi iterator states dynamically allocated.
 +      * bidi.c (bidi_cache_shrink): New function.
 +      (bidi_init_it): Call it.
 +      (bidi_cache_iterator_state): Enlarge the cache if needed.
 +
 +      * bidi.c (bidi_move_to_visually_next): Rename from
 +      bidi_get_next_char_visually.  All callers changed.
 +
 +2010-05-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * dispextern.h (struct composition_it): New member reversed_p.
 +
 +      * composite.c (composition_compute_stop_pos): Search backward if
 +      ENDPOS < CHARPOS.
 +      (composition_reseat_it): Handle the case that ENDPOS < CHARPOS.
 +      Set CMP_IT->reversed_p.
 +      (composition_update_it): Pay attention to CMP_IT->reversed_p.
 +
 +      * xdisp.c (set_iterator_to_next):
 +      Call composition_compute_stop_pos with negative ENDPOS if we are
 +      scanning backward.  Call composition_compute_stop_pos if scan
 +      direction is changed.
 +      (next_element_from_buffer): Call composition_compute_stop_pos with
 +      negative ENDPOS if we are scanning backward.
 +      (next_element_from_composition): Pay attention to
 +      IT->cmp_it.reversed_p.
 +
 +2010-05-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.c (font_range): Return the range for the font found at first.
 +
 +2010-05-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (ns_appdir, ns_appbindir, ns_appsrc): Always define.
 +
 +      * Makefile.in (mktime, X11, register): Move undefs to configure.
 +
 +      * Makefile.in (MSDOS_OBJ): Default to empty, let msdos scripts set it.
 +      (MSDOS_X_OBJ): New variable.
 +      (MSDOS_SUPPORT_REAL): New constant.
 +      (MSDOS_SUPPORT): Set as a variable, not with cpp.
 +      (obj): Use MSDOS_X_OBJ.
 +      (lisp): Use MSDOS_SUPPORT as a variable.
 +
 +      * Makefile.in (REAL_MOUSE_SUPPORT): New constant.
 +      (GPM_MOUSE_SUPPORT): Now it's a constant.
 +      (MOUSE_SUPPORT, TOOLTIP_SUPPORT, WINDOW_SUPPORT): Set with configure,
 +      not cpp.
 +
 +      * Makefile.in (@NS_IMPL_GNUSTEP_INC@): Use in place of #ifdef.
 +      (ns_appresdir): Remove, unused.
 +
 +      * Makefile.in (SHELL): Move outside cpp section.
 +
 +      * s/netbsd.h (AMPERSAND_FULL_NAME): Remove (defined in AH_BOTTOM).
 +
 +2010-05-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (FONT_DRIVERS): Place with other HAVE_X_WINDOWS stuff.
 +      (TOOLTIP_SUPPORT): Place with other HAVE_WINDOW_SYSTEM stuff.
 +
 +      * Makefile.in (FONT_DRIVERS): If HAVE_X_WINDOWS is defined,
 +      HAVE_WINDOW_SYSTEM must be too.
 +
 +      * Makefile.in (WINNT_SUPPORT): Remove, nt build does not use this file.
 +      (lisp): Remove WINNT_SUPPORT.
 +
 +      * Makefile.in (OLDXMENU, LIBXMENU) [!HAVE_MENUS]:
 +      Let configure set these variables (to empty) in this case as well.
 +
 +      * Makefile.in (LD_SWITCH_X_SITE): Define as a variable, not via cpp.
 +      (LIBX_BASE): Use $LD_SWITCH_X_SITE.
 +
 +      * Makefile.in (C_SWITCH_X_SYSTEM, C_SWITCH_X_SITE, LIB_STANDARD)
 +      (LIB_MATH, FONTCONFIG_CFLAGS, FONTCONFIG_LIBS, FREETYPE_CFLAGS)
 +      (FREETYPE_LIBS, LIBOTF_CFLAGS, LIBOTF_LIBS, M17N_FLT_CFLAGS)
 +      (M17N_FLT_LIBS, GNU_OBJC_CFLAGS, GNUSTEP_SYSTEM_LIBRARIES, LIBGPM)
 +      (LIBRESOLV, UNEXEC_OBJ): For clarity, define variables to hold
 +      the values output by configure.
 +      (ALL_CFLAGS, obj, LIBES, temacs${EXEEXT}): Use the above variables.
 +
 +2010-05-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (YMF_PASS_LDFLAGS, LD, LINKER): Simplify the logic.
 +      (LINKER_WAS_SPECIFIED): Remove.
 +
 +      * Makefile.in (LIB_GCC): Set using configure, not cpp.
 +      (GNULIB_VAR) [!ORDINARY_LINK]: Always set to $LIB_GCC.
 +      * m/arm.h (LIB_GCC) [GNU_LINUX]:
 +      * s/cygwin.h (LIB_GCC):
 +      * s/freebsd.h (LIB_GCC):
 +      * s/gnu-linux.h (LIB_GCC):
 +      * s/msdos.h (LIB_GCC):
 +      * s/netbsd.h (LIB_GCC):
 +      Move to configure.
 +
 +2010-05-11  Karel Klic  <kklic@redhat.com>
 +
 +      * ftfont.c: Fix incorrect parentheses of #if condition for
 +      definining M17N_FLT_USE_NEW_FEATURE.
 +
 +2010-05-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LIBS_SYSTEM) [MSDOS]: Do not reset.
 +      * s/msdos.h (MSDOS_LIBS_SYSTEM): Remove.
 +
 +2010-05-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (init_iterator): Don't turn on bidi reordering in
 +      unibyte buffers.  See
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00263.html.
 +
 +2010-05-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LIBS_SYSTEM): Set using configure, not cpp.
 +      (LIBS_SYSTEM) [MSDOS]: Reset with MSDOS_LIBS_SYSTEM.
 +      (LIBES): Use LIBS_SYSTEM as a variable.
 +      * s/msdos.h (LIBS_SYSTEM): Rename to MSDOS_LIBS_SYSTEM.  Always define.
 +      * s/aix4-2.h (LIBS_SYSTEM):
 +      * s/freebsd.h (LIBS_SYSTEM):
 +      * s/hpux10-20.h (LIBS_SYSTEM):
 +      * s/sol2-6.h (LIBS_SYSTEM):
 +      * s/unixware.h (LIBS_SYSTEM):
 +      Move to configure.
 +
 +      * s/aix4-2.h (MAIL_USE_LOCKF):
 +      * s/bsd-common.h (MAIL_USE_FLOCK):
 +      * s/darwin.h (MAIL_USE_FLOCK):
 +      * s/gnu-linux.h (MAIL_USE_FLOCK):
 +      * s/irix6-5.h (MAIL_USE_FLOCK):
 +      * s/template.h (MAIL_USE_FLOCK):
 +      Move to configure.
 +
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
 +
 +2010-05-08  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * composite.c (autocmp_chars): Save point as marker before calling
 +      auto-composition-function (Bug#5984).
 +
 +      * lisp.h (restore_point_unwind): Add prototype.
 +
 +      * fileio.c (restore_point_unwind): Remove static attribute.
 +
 +2010-05-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * ftfont.c (M17N_FLT_USE_NEW_FEATURE): Define it if we can use the
 +      new feature of libotf and m17n-flt.
 +      (ftfont_check_otf) [M17N_FLT_USE_NEW_FEATURE]:
 +      Call OTF_check_features even if no specific feature is given.
 +      (PACK_OTF_TAG) [M17N_FLT_USE_NEW_FEATURE]: New macro.
 +      (ftfont_drive_otf) [M17N_FLT_USE_NEW_FEATURE]: Handle the case
 +      that OUT is NULL.  Use OTF_drive_gsub_with_log and
 +      OTF_drive_gpos_with_log instead of OTF_drive_gsub and
 +      OTF_drive_gpos.
 +      (ftfont_try_otf) [M17N_FLT_USE_NEW_FEATURE]: New function.
 +      (ftfont_shape_by_flt) [M17N_FLT_USE_NEW_FEATURE]:
 +      Setup mflt_enable_new_feature and mflt_try_otf.
 +
 +2010-05-08  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xsettings.c (Ftool_bar_get_system_style): Correct comment.
 +
 +      * gtkutil.c (xg_pack_tool_bar): Change show_all to show for handle
 +      box and toolbar (Bug #6139).
 +      (xg_create_tool_bar): Remove comment (Bug #6139).
 +      (xg_make_tool_item): Remove gtk_widget_show_all (Bug #6139).
 +      (xg_show_toolbar_item): Add gtk_widget_show for weventbox (Bug #6139).
 +
 +2010-05-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in ($(BLD)/eval.$(O), $(BLD)/w32fns.$(O)):
 +      Update dependencies.
 +
 +2010-05-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fringe.c (update_window_fringes): Set up truncation bitmaps for
 +      R2L lines.
 +
 +2010-05-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (THIS_IS_MAKEFILE): Remove, unused.
 +
 +      * Makefile.in (LIBS_TERMCAP): Set with configure, not cpp.
 +      (TERMCAP_OBJ): New, set by configure, replacing termcapobj.
 +      (termcapobj): Replace with TERMCAP_OBJ.
 +      (otherobj): Use $TERMCAP_OBJ instead of $termcapobj.
 +      (LIBES): Use LIBS_TERMCAP as a variable.
 +
 +      * s/freebsd.h (osreldate.h): No longer include, since this file
 +      does not use __FreeBSD_version any more.
 +
 +      * s/aix4-2.h (TERMINFO):
 +      * s/cygwin.h (TERMINFO):
 +      * s/darwin.h (TERMINFO, LIBS_TERMCAP) [HAVE_LIBNCURSES]:
 +      * s/freebsd.h (TERMINFO, LIBS_TERMCAP):
 +      * s/gnu-linux.h (TERMINFO, LIBS_TERMCAP) [HAVE_LIBNCURSES]:
 +      * s/gnu.h (TERMINFO, LIBS_TERMCAP) [HAVE_LIBNCURSES]:
 +      * s/hpux10-20.h (TERMINFO, LIBS_TERMCAP):
 +      * s/irix6-5.h (TERMINFO):
 +      * s/netbsd.h (LIBS_TERMCAP):
 +      * s/openbsd.h (TERMINFO, LIBS_TERMCAP):
 +      * s/sol2-6.h (LIBS_TERMCAP) [!TERMINFO]:
 +      * s/usg5-4.h (TERMINFO):
 +      Move to configure.
 +
 +2010-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * eval.c (unbind_to): Don't unbind a local binding into the global
 +      binding when the local binding disappeared.  Inversely, don't unbind
 +      a global binding into a newly created local binding.
 +      * data.c (set_internal): Make its `buf' arg into a `where' arg so we
 +      can specify the frame to use, when applicable.  Adjust callers.
 +
 +2010-05-07  Vincent Belaïche  <vincent.belaiche@gmail.com>
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * floatfns.c (Fisnan, Fcopysign, Ffrexp, Fldexp): New functions.
 +
 +2010-05-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c: Include w32.h.
 +      (Fw32_shell_execute): Decode the error message before passing it
 +      to `error'.  (Bug#6126)
 +
 +      * msdos.c (dos_set_window_size):
 +      * w16select.c (Fx_selection_exists_p): Use `Fsymbol_value (foo)'
 +      instead of `XSYMBOL (foo)->value'.
 +
 +2010-05-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Fix the MS-DOS build, broken by autoconfiscation.
 +
 +      * Makefile.in: Don't use Make-style comments past the "start of
 +      cpp stuff" line.
 +      (MSDOS_OBJ): Remove xmenu.o (it is now defined by XMENU_OBJ).
 +
 +      * s/msdos.h (UNEXEC): Don't define (@unexec@ in Makefile.in is
 +      edited directly by msdos/sed1v2.inp).
 +
 +2010-05-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LD_SWITCH_SYSTEM): Set with configure, not cpp.
 +      (LD_SWITCH_SYSTEM_EXTRA): New variable, set by configure.
 +      (TEMACS_LDFLAGS): Use $LD_SWITCH_SYSTEM and $LD_SWITCH_SYSTEM_EXTRA,
 +      move out of cpp section.
 +      * s/freebsd.h (LD_SWITCH_SYSTEM):
 +      * s/gnu-linux.h (LD_SWITCH_SYSTEM):
 +      * s/netbsd.h (LD_SWITCH_SYSTEM):
 +      * s/openbsd.h (LD_SWITCH_SYSTEM): Move to configure.in.
 +
 +2010-05-07  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Define LIB_STANDARD and START_FILES using autoconf.
 +      * s/usg5-4.h (LIB_STANDARD):
 +      * s/netbsd.h (START_FILES):
 +      * s/irix6-5.h (LIB_STANDARD):
 +      * s/hpux10-20.h (LIB_STANDARD, START_FILES):
 +      * s/gnu-linux.h (START_FILES, LIB_STANDARD):
 +      * s/freebsd.h (START_FILES):
 +      * s/darwin.h (START_FILES):
 +      * s/cygwin.h (START_FILES):
 +      * s/aix4-2.h (LIB_STANDARD):
 +      * m/ibmrs6000.h (START_FILES): Remove, move logic to configure.in.
 +      * Makefile.in (STARTFILES): Rename to START_FILES, define using
 +      autoconf, not cpp.
 +
 +2010-05-06  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove NEED_BSDTTY and NEED_UNISTD_H.
 +      * s/hpux10-20.h (NEED_BSDTTY): Remove.
 +      * s/aix4-2.h (NEED_UNISTD_H): Remove.
 +      * systty.h: Simplify conditionals for including <sys/bsdtty.h>,
 +      <sys/ptyio.h> and <unistd.h>.
 +
 +      * emacs.c (main): Remove NO_DIR_LIBRARY conditional, unused.
 +
 +      * Makefile.in (STARTFILES): Conditionally define to make the usage clear.
 +      * s/gnu.h (START_FILES): Remove empty definition.
 +
 +2010-05-06  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (x_draw_image_relief): Move declaration of extra to beginning.
 +
 +2010-05-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (CPP, LN_S): Remove unused variables.
 +
 +2010-05-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * syntax.c (Fchar_syntax): Check the arg is a character (bug#6080).
 +
 +2010-05-05  Lawrence Mitchell  <wence@gmx.li>
 +
 +      * m/sparc.h: Fix typo in earlier change.
 +
 +2010-05-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Misc tweaks.
 +      * eval.c (Fdefvaralias): Remove unintended nested if.
 +      (internal_condition_case_2, internal_condition_case_n): Use ANSI type.
 +
 +2010-05-04  Bernhard Herzog  <bh@intevation.de>  (tiny change)
 +
 +      * xsmfns.c (smc_save_yourself_CB): strlen(client_id) => strlen(cwd).
 +
 +2010-05-04  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove BSD_PGRPS.
 +      * s/bsd-common.h (BSD_PGRPS): Remove undef.
 +      * s/gnu-linux.h (BSD_PGRPS): Remove.
 +      * term.c (dissociate_if_controlling_tty):
 +      * sysdep.c (narrow_foreground_group, widen_foreground_group)
 +      (init_sys_modes, reset_sys_modes):
 +      * emacs.c (main):
 +      * callproc.c (Fcall_process, child_setup): Remove code depending
 +      on BSD_PGRPS.
 +
 +      Remove POSIX_SIGNALS.
 +      * s/usg5-4.h (POSIX_SIGNALS):
 +      * s/netbsd.h (POSIX_SIGNALS):
 +      * s/msdos.h (POSIX_SIGNALS):
 +      * s/ms-w32.h (POSIX_SIGNALS):
 +      * s/hpux11.h (POSIX_SIGNALS):
 +      * s/gnu.h (POSIX_SIGNALS):
 +      * s/gnu-linux.h (POSIX_SIGNALS):
 +      * s/freebsd.h (POSIX_SIGNALS):
 +      * s/darwin.h (POSIX_SIGNALS):
 +      * s/cygwin.h (POSIX_SIGNALS):
 +      * s/aix4-2.h (POSIX_SIGNALS): Remove definition.
 +      * s/unixware.h:
 +      * s/sol2-6.h: Remove comments on POSIX_SIGNALS.
 +      * process.c (create_process):
 +      * syssignal.h:
 +      * sysdep.c (wait_for_termination, init_signals):
 +      * process.c (create_process):
 +      * msdos.c: POSIX_SIGNALS is always defined on all platforms,
 +      remove all code that assumes the contrary.
 +
 +2010-05-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * s/gnu-linux.h (LD_SWITCH_SYSTEM): Use LD_SWITCH_X_SITE_AUX as a shell
 +      variable.
 +      * s/netbsd.h (LD_SWITCH_SYSTEM_tmp): Remove.
 +      (LD_SWITCH_SYSTEM): Use $LD_SWITCH_X_SITE_AUX_RPATH.
 +      * s/openbsd.h (LD_SWITCH_SYSTEM_tmp): Remove.
 +      (LD_SWITCH_SYSTEM): Use $LD_SWITCH_X_SITE_AUX_RPATH instead of
 +      LD_SWITCH_SYSTEM_tmp.
 +      * Makefile.in (LD_SWITCH_X_SITE_AUX, LD_SWITCH_X_SITE_AUX_RPATH):
 +      New variables, set by configure.
 +
 +      * s/aix4-2.h (LD_SWITCH_SYSTEM_TEMACS): Move to configure.in.
 +      * s/darwin.h (HEADERPAD_EXTRA, LIBS_NSGUI): Remove.
 +      (LD_SWITCH_SYSTEM_TEMACS): Move to configure.in.
 +      * Makefile.in (LD_SWITCH_SYSTEM_TEMACS): New variable, set by configure.
 +      (TEMACS_LDFLAGS): Use $LD_SWITCH_SYSTEM_TEMACS.
 +
 +      * s/aix4-2.h (C_SWITCH_SYSTEM):
 +      * m/alpha.h (C_SWITCH_MACHINE):
 +      Move to configure.in.
 +      * Makefile.in (C_SWITCH_MACHINE, C_SWITCH_SYSTEM):
 +      New variables, set by configure.
 +      (ALL_CFLAGS): Use $C_SWITCH_MACHINE and $C_SWITCH_SYSTEM in place of
 +      $c_switch_machine and $c_switch_system.
 +
 +2010-05-04  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * s/hpux10-20.h (LIB_STANDARD): New definition.
 +      * Makefile.in (ORDINARY_LINK): Remove setting LIB_STANDARD based
 +      on it, not used anymore.
 +
 +2010-05-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * eval.c (internal_condition_case_n): Rename from
 +      internal_condition_case_2.
 +      (internal_condition_case_2): New function.
 +
 +      * xdisp.c (safe_call): Use internal_condition_case_n.
 +
 +      * fileio.c (Fdelete_file, internal_delete_file): New arg FORCE.
 +      (internal_delete_file, Frename_file): Callers changed.
 +
 +      * buffer.c (Fkill_buffer):
 +      * callproc.c (delete_temp_file): Callers changed (Bug#6070).
 +
 +      * lisp.h: Update prototypes.
 +
 +2010-05-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LIBX_EXTRA, LIBX_BASE): New variables.
 +      (LIBXT_OTHER, LIBX_OTHER): New, set by configure.
 +      (LIBXT): Set with configure, not cpp.
 +      (LIBX): Remove.
 +      (LIBES): Replace $LIBX with $LIBX_BASE and $LIBX_OTHER.
 +
 +2010-05-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * m/amdx86-64.h (START_FILES, LIB_STANDARD): Remove.
 +      The FreeBSD is not needed, the default works, Solaris version is
 +      not needed, and the remaining case is not supported by configure.
 +
 +2010-05-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xsmfns.c (CHDIR_OPT): New define.
 +      (smc_save_yourself_CB): Add CHDIR_OPT to options to use when
 +      restarting emacs.
 +
 +      * xterm.c (x_connection_closed): Call Fkill_emacs instead of
 +      shut_down_emacs.
 +
 +      * emacs.c (USAGE1): Mention --chdir.
 +      (main): Handle --chdir.
 +      (standard_args): Add --chdir.
 +      (fatal_error_signal): Call Fkill_emacs for SIGTERM and SIGHUP (Bug
 +      #5552).
 +
 +2010-05-01  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove LD_SWITCH_MACHINE.
 +      * Makefile.in (LD_SWITCH_MACHINE): Remove definition, unused.
 +      (TEMACS_LDFLAGS): Do not use LD_SWITCH_MACHINE.
 +
 +      Clean up IRIX code.
 +      * m/iris4d.h (TERMINFO, FIRST_PTY_LETTER): Move definitions ...
 +      * s/irix6-5.h (TERMINFO, FIRST_PTY_LETTER): ... here.
 +
 +      Clean up AIX code.
 +      * m/ibmrs6000.inp: Remove file, unused.
 +      * m/ibmrs6000.h (IBMR2AIX): Remove, unused.
 +      (LD_SWITCH_MACHINE): Rename to LD_SWITCH_SYSTEM_TEMACS, and move
 +      definition ...
 +      * s/aix4-2.h (LD_SWITCH_SYSTEM_TEMACS): ... here.
 +
 +      * sysdep.c (child_setup_tty, init_sys_modes): Remove !IBMR2AIX code,
 +      unused.
 +
 +2010-05-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Emulate POSIX_SIGNALS on MS-Windows.
 +
 +      * s/ms-w32.h (POSIX_SIGNALS, struct sigaction, SIG_BLOCK)
 +      (SIG_SETMASK, SIG_UNBLOCK): Define.
 +
 +      * sysdep.c (sys_signal) [WINDOWSNT]: #ifdef away.
 +      (wait_for_termination) [WINDOWSNT]: Move MS-Windows specific code
 +      from non-POSIX_SIGNALS section to POSIX_SIGNALS section.
 +
 +      * w32.c (sigemptyset, sigaddset, sigfillset, sigprocmask):
 +      New stubs.
 +
 +      Miscellaneous fixes of bidi display.
 +
 +      * xdisp.c (find_row_end): New function, refactored from display_line.
 +      (display_line): Use it.
 +      (extend_face_to_end_of_line): In almost-filled rows, extend only
 +      if the row is R2L and not continued.
 +      (display_line): Fix prepending of truncation glyphs to R2L rows.
 +      Preserve overlay and string info in row->end.
 +      (insert_left_trunc_glyphs): Support addition of left truncation
 +      glyphs to R2L rows.
 +      (set_cursor_from_row): Don't place cursor on the vertical border
 +      glyph between adjacent windows.  Fix a crash when a display string
 +      is continued to the next line.  Don't return zero if cursor was
 +      found by `cursor' property of a display string.
 +      (try_cursor_movement): Don't assume that row->end == (row+1)->start,
 +      test for that explicitly.
 +
 +2010-05-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (gmallocobj, rallocobj, vmlimitobj): Initialize to null,
 +      for clarity.
 +      (OTHER_OBJ): Remove.
 +      (PRE_ALLOC_OBJ, POST_ALLOC_OBJ): New, set by configure.
 +      (otherobj): Use PRE_ALLOC_OBJ, POST_ALLOC_OBJ rather than OTHER_OBJ.
 +
 +2010-05-01  Karel Klíč  <kklic@redhat.com>
 +
 +      * fileio.c (Ffile_selinux_context): Context functions may return null.
 +
 +2010-04-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * s/gnu.h (POSIX_SIGNALS, START_FILES): New definitions.
 +
 +2010-04-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (vmlimitobj) [!SYSTEM_MALLOC]: New variable.  (Bug#6065)
 +      (OTHER_OBJ): Define as a separate variable, for clarity.
 +
 +2010-04-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xsettings.c: include limits.h and update file comment.
 +
 +2010-04-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (OLDXMENU, LIBXMENU) [HAVE_MENUS]:
 +      Set with configure, not cpp.
 +      (LIBW): Remove, replace with $TOOLKIT_LIBW.
 +
 +      * Makefile.in (mallocobj): Remove.
 +      (otherobj): Simplify using @OTHER_OBJ@.
 +
 +      * Makefile.in (dispnew.o, frame.o, fringe.o, font.o, fontset.o)
 +      (keyboard.o, window.o, xdisp.o, xfaces.o, menu.o):
 +      Don't bother making nsgui.h dependency platform-specific.
 +
 +      * Makefile.in (nsfns.o): Remove duplicate nsgui.h dependency.
 +
 +2010-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * process.c (read_process_output, exec_sentinel): Don't burp if the
 +      sentinel/filter kills the current buffer (bug#6060).
 +
 +      Fix wrong-docstring problem introduced with hash-consing.  (Bug#6008)
 +      * eval.c (Fautoload): Set doc to a unique number rather than to 0.
 +      Remove unused var `args'.
 +      * lisp.h (XSETCARFASTINT, XSETCDRFASTINT): Remove.
 +      (LOADHIST_ATTACH): Wrap with do...while to avoid surprises for callers.
 +      * doc.c (store_function_docstring): Use XSETCAR.
 +
 +2010-04-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (BASE_WINDOW_SUPPORT, X_WINDOW_SUPPORT): New variables.
 +      (WINDOW_SUPPORT) [HAVE_WINDOW_SYSTEM]: Use them.
 +
 +      * Makefile.in (CYGWIN_OBJ): Set with configure, not cpp.
 +
 +      * Makefile.in (GPM_MOUSE_SUPPORT): New, set by configure.
 +      (MOUSE_SUPPORT) [!HAVE_MOUSE]: Use $GPM_MOUSE_SUPPORT.
 +
 +      * Makefile.in (FONT_OBJ): New, set by configure.
 +      (FONT_DRIVERS): Use $FONT_OBJ.
 +
 +      * Makefile.in (LIBXMU): Set with configure, not cpp.
 +      * s/aix4-2.h (LIBXMU):
 +      * s/hpux10-20.h (LIBXMU):
 +      Remove definition, now set in configure.
 +
 +      * Makefile.in (NS_OBJ, NS_SUPPORT): Set with configure, not cpp.
 +
 +      * m/amdx86-64.h [i386]: Move this test to configure.in.
 +
 +2010-04-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LIBXTR6): Set with configure, not cpp.
 +      * s/unixware.h (NEED_LIBW): Remove definition.
 +
 +      * Makefile.in (LUCID_LIBW, MOTIF_LIBW): Remove, replacing by...
 +      (TOOLKIT_LIBW): New, set by configure.
 +      (@X_TOOLKIT_TYPE@): No longer define it.
 +
 +      * Makefile.in (LIBXP): Remove, since included in MOTIF_LIBW.
 +      (MOTIF_LIBW): Set with configure, not cpp.
 +      * s/aix4-2.h (LIB_MOTIF):
 +      * s/gnu-linux.h (LIB_MOTIF):
 +      * s/unixware.h (LIB_MOTIF): Move to configure.in.
 +
 +2010-04-27  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Reduce CPP usage.
 +      * Makefile.in (LIB_X11_LIB): Remove, inline in the only user.
 +      (obj): Use autoconf for unexec instead of cpp.
 +      (C_SWITCH_SYSTEM, C_SWITCH_MACHINE, C_SWITCH_X_SITE): Remove
 +      definitions and undefs.  Inline definitions in the only user.
 +      (ALL_CFLAGS): Substitute C_SWITCH_X_SYSTEM using autoconf.
 +
 +2010-04-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * m/amdx86-64.h (START_FILES, LIB_STANDARD): Change the logic around,
 +      since the defaults (set by the system file) are fine in most cases.
 +      [GNU_LINUX, __OpenBSD__, __NetBSD__, __APPLE__]: Remove sections.
 +      * m/ibms390x.h (START_FILES, LIB_STANDARD):
 +      * m/macppc.h (START_FILES, LIB_STANDARD) [GNU_LINUX]:
 +      * m/sparc.h (START_FILES, LIB_STANDARD) [__linux__]:
 +      Remove definitions, since they are set correctly in s/gnu-linux.h.
 +      * s/freebsd.h (START_FILES, LIB_STANDARD):
 +      * s/gnu-linux.h (START_FILES, LIB_STANDARD):
 +      * s/hpux10-20.h (START_FILES):
 +      * s/netbsd.h (START_FILES, LIB_STANDARD, START_FILES_1, END_FILES_1):
 +      Use $CRT_DIR in place of fixed /usr/lib, /lib directories.
 +
 +      * Makefile.in (LIBXP, LUCID_LIBW, WIDGET_OBJ): Set via configure.
 +      (MOTIF_LIBW): Use $LIBXP.
 +      (otherobj): Use $WIDGET_OBJ.
 +
 +2010-04-26  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in (LIBS_MACHINE): Remove, unused.
 +
 +      Use autoconf instead of cpp for LIB_MATH.
 +      * s/darwin.h (LIB_MATH): Do not define here, move to configure.
 +      * s/cygwin.h (LIB_MATH): Likewise.
 +      * Makefile.in (LIB_MATH): Do not define with cpp.
 +      (LIBES): Use autoconf for LIB_MATH.
 +
 +2010-04-26  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.c (Ffind_composition_internal): Fix the return value
 +      for an automatic composition.
 +
 +2010-04-25  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove all NO_ARG_ARRAY uses.
 +      * fns.c (concat2, concat3, nconc2):
 +      * eval.c (apply1, call1, call2, call3, call4, call5, call6)
 +      (call7): Remove NO_ARG_ARRAY usage, assume it's always true.
 +      * m/xtensa.h (NO_ARG_ARRAY):
 +      * m/template.h (NO_ARG_ARRAY):
 +      * m/sparc.h (NO_ARG_ARRAY):
 +      * m/sh3.h (NO_ARG_ARRAY):
 +      * m/mips.h (NO_ARG_ARRAY):
 +      * m/macppc.h (NO_ARG_ARRAY):
 +      * m/iris4d.h (NO_ARG_ARRAY):
 +      * m/intel386.h (NO_ARG_ARRAY):
 +      * m/ibms390x.h (NO_ARG_ARRAY):
 +      * m/ibms390.h (NO_ARG_ARRAY):
 +      * m/ibmrs6000.h (NO_ARG_ARRAY):
 +      * m/ia64.h (NO_ARG_ARRAY):
 +      * m/hp800.h (NO_ARG_ARRAY):
 +      * m/arm.h (NO_ARG_ARRAY):
 +      * m/amdx86-64.h (NO_ARG_ARRAY):
 +      * m/alpha.h (NO_ARG_ARRAY): Remove definition.
 +
 +2010-04-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (display_line): Don't assume 2nd call to
 +      get_next_display_element cannot return zero.  (Bug#6030)
 +      (iterate_out_of_display_property): New function, body from pop_it.
 +      (pop_it): Use it.
 +
 +2010-04-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * m/amdx86-64.h (START_FILES, LIB_STANDARD) [__OpenBSD__]:
 +      For clarity, revert to using fixed /usr/lib rather than $CRT_DIR.
 +      (START_FILES, LIB_STANDARD) [__FreeBSD__]: Merge into the generic case,
 +      since CRT_DIR defaults to /usr/lib.  Suggested by Dan Nicolaescu.
 +
 +2010-04-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (display_line): Use `reseat' instead of `reseat_1', and
 +      use `get_next_display_element' and `set_iterator_to_next' to
 +      advance to the next character, when looking for the character that
 +      begins the next row.
 +
 +      * .gdbinit: Add a "set Fmake_symbol" line to force GDB to load the
 +      definition of "struct Lisp_Symbol".
 +
 +2010-04-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (CRT_DIR): New variable, set by configure.
 +      * m/amdx86-64.h, m/ibms390x.h (START_FILES, LIB_STANDARD):
 +      Use $CRT_DIR rather than HAVE_LIB64_DIR.  (Bug#5655)
 +
 +2010-04-23  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in: Remove C_SWITCH_X_MACHINE, unused.
 +
 +      * s/cygwin.h (LIBS_DEBUG): Remove, unused.
 +
 +      Remove redundant flags.
 +      * s/freebsd.h (C_SWITCH_SYSTEM):
 +      * s/hpux10-20.h (C_SWITCH_X_SYSTEM, LD_SWITCH_X_DEFAULT):
 +      * s/netbsd.h (C_SWITCH_SYSTEM):
 +      * s/openbsd.h (LD_SWITCH_X_DEFAULT): Remove, configure takes care
 +      of these.
 +
 +      Simplify m/intel386.h.
 +      * m/intel386.h (CRT0_DUMMIES): Remove, inline value in the only
 +      user: ecrt0.c.
 +      (SOLARIS2): Remove LOAD_AVE_TYPE, LOAD_AVE_CVT, LIBS_MACHINE, unused.
 +      (USG5_4): Move LOAD_AVE_TYPE, LOAD_AVE_CVT, FSCALE definitions to
 +      the only user: s/unixware.h.
 +      * ecrt0.c: Remove #ifndef static.  Inline CRT0_DUMMIES definition
 +      from m/intel386.h.
 +      * s/unixware.h (LOAD_AVE_TYPE, LOAD_AVE_CVT, FSCALE): Definitions
 +      moved here from m/intel386.h.
 +
 +      * m/mips.h: Remove #if 0 code.
 +
 +2010-04-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Fix display of composed characters from L2R scripts in bidi buffers.
 +      * xdisp.c (set_iterator_to_next, next_element_from_composition):
 +      After advancing IT past the composition, resync the bidi iterator
 +      with IT's position.  (Bug#5977)
 +
 +2010-04-23  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in (LD_SWITCH_MACHINE_TEMACS): Remove, unused.
 +      (TEMACS_LDFLAGS): Don't use LD_SWITCH_SYSTEM_TEMACS.
 +
 +2010-04-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gtkutil.c: Include xsettings.h for Ftool_bar_get_system_style.
 +
 +2010-04-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Support `display' text properties and overlay strings in bidi buffers.
 +      * xdisp.c (pop_it): When the stack is popped after displaying
 +      from a string, bidi-iterate to exit from the text portion covered
 +      by the `display' property or overlay.  (Bug#5988, bug#5920)
 +
 +2010-04-23  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * m/macppc.h (LD_SWITCH_SYSTEM_TEMACS): Remove #undef.
 +      (LD_SWITCH_MACHINE_TEMACS): Remove, configure sets nocombreloc.
 +
 +      * s/netbsd.h (LD_SWITCH_SYSTEM_TEMACS): Remove, configure sets nocombreloc.
 +      * s/openbsd.h (LD_SWITCH_SYSTEM_TEMACS): Remove.
 +
 +      Simplify STARTFILES definition.
 +      * s/hpux10-20.h (START_FILES): Explicitly define here instead of
 +      relying on Makefile.in to define it.
 +      * s/cygwin.h (START_FILES): Likewise.
 +      * Makefile.in (STARTFILES): Remove conditional code, not needed anymore.
 +
 +      Clean up Solaris code.
 +      * s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS, C_SWITCH_X_SYSTEM)
 +      (LIB_MOTIF): Remove, configure takes care of this.
 +      (NOT_USING_MOTIF): Remove, unused.
 +      * xrdb.c: Remove #if 0-ed #include.
 +      (SYSV): Remove conditional for old SysV.
 +      * sysdep.c (closedir): Remove conditional code for Solaris,
 +      Solaris has closedir.
 +
 +2010-04-22  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xsettings.c (read_and_apply_settings): Check if current_font is
 +      NULL before strcmp (Bug#6001).
 +
 +2010-04-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Clean up HP-UX files.
 +      * m/hp800.h (NO_REMAP, VIRT_ADDR_VARIES, DATA_SEG_BITS)
 +      (DATA_START, TEXT_START, LOAD_AVE_TYPE, LOAD_AVE_CVT)
 +      (LDAV_SYMBOL, index, rindex): Move definitions only used in HP-UX ...
 +      * s/hpux10-20.h: ... to the only user, here.
 +
 +2010-04-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_find_paragraph_start, bidi_at_paragraph_end): Don't
 +      use buffer-local values of paragraph-start and paragraph-separate.
 +      <paragraph_start_re, paragraph_separate_re>: Rename from
 +      fallback_paragraph_start_re and fallback_paragraph_separate_re.
 +      (Bug#5992)
 +
 +2010-04-21  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xsettings.c: Qmonospace_font_name, Qtool_bar_style and
 +      current_tool_bar_style are new.
 +      (store_config_changed_event): Rename from store_font_changed_event.
 +      (XSETTINGS_TOOL_BAR_STYLE): New define.
 +      (SEEN_FONT, SEEN_TB_STYLE): New enum values.
 +      (struct xsettings): Add font and tb_style, set xft stuff inside #ifdef
 +      HAVE_XFT.
 +      (something_changedCB): store_font_changed_event is now
 +      store_config_changed_event.
 +      (parse_settings): Rename from parse_xft_settings.  Read
 +      non-xft xsettings outside #ifdef HAVE_XFT.
 +      (read_settings): Renamed from read_xft_settings.
 +      (apply_xft_settings): Take current settings as parameter.  Do not
 +      call read_(xft)_settings.
 +      (read_and_apply_settings): New function.
 +      (xft_settings_event): Do non-xft stuff out of HAVE_XFT.  Call
 +      read_and_apply_settings if there are settings to be read.
 +      (init_xsettings): Renamed from init_xfd_settings.
 +      Call read_and_apply_settings unconditionally.
 +      (xsettings_initialize): Call init_xsettings.
 +      (Ftool_bar_get_system_style): New function.
 +      (syms_of_xsettings): Define Qmonospace_font_name and
 +      Qtool_bar_style.  Initialize current_tool_bar_style to nil.
 +      defsubr Stool_bar_get_system_style.  Fprovide on
 +      dynamic-setting.
 +      Move misplaced HAVE_GCONF
 +
 +      * xsettings.h (Ftool_bar_get_system_style): Declare.
 +
 +      * xdisp.c: Vtool_bar_style, tool_bar_max_label_size,
 +      Qtext, Qboth, Qboth_horiz are new.
 +      (syms_of_xdisp): Intern Qtext, Qboth, Qboth_horiz, DEFVAR
 +      Vtool_bar_style, tool_bar_max_label_size.
 +
 +      * lisp.h: Extern declare Qtext, Qboth, Qboth_horiz.
 +
 +      * keyboard.c: QClabel is new.
 +      (parse_tool_bar_item): Take out QClabel from tool bar items.
 +      Try to construct a label if ther is no QClabel.
 +      (syms_of_keyboard): Intern :label as QClabel.
 +
 +      * dispextern.h (tool_bar_item_idx): TOOL_BAR_ITEM_LABEL is new.
 +      (Vtool_bar_style, tool_bar_max_label_size, DEFAULT_TOOL_BAR_LABEL_SIZE):
 +      New.
 +
 +      * Makefile.in (SOME_MACHINE_LISP): font-setting.el renamed to
 +      dynamic-setting.el.
 +
 +      * gtkutil.c (xg_tool_bar_menu_proxy): Handle label in tool bar item.
 +      (xg_make_tool_item, xg_show_toolbar_item): New function.
 +      (update_frame_tool_bar): Take label from TOOL_BAR_ITEM_LABEL.
 +      Call xg_make_tool_item to make a tool bar item.
 +      Call xg_show_toolbar_item.  Use wtoolbar instead of x->toolbar_widget.
 +
 +      * xterm.c (x_draw_image_relief): Take Vtool_bar_button_margin
 +      into account for toolbars.
 +
 +2010-04-21  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * data.c (make_blv): Declarations before code (Bug#5993).
 +
 +2010-04-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (DBUS_OBJ, GTK_OBJ, XMENU_OBJ, XOBJ):
 +      Define using autoconf, not cpp.
 +      (LIBXSM): New variable, set by autoconf.
 +      (LIBXT): Use $LIBXSM.
 +
 +2010-04-21  Dan Nicolaescu  <local_user@dannlt>
 +
 +      Remove NOMULTIPLEJOBS, unused.
 +      * s/template.h (NOMULTIPLEJOBS):
 +      * s/msdos.h (NOMULTIPLEJOBS): Remove, unused.
 +
 +      Simplify LD_SWITCH_SYSTEM_TEMACS usage.
 +      * s/freebsd.h (LD_SWITCH_SYSTEM_TEMACS):
 +      * s/gnu-linux.h (LD_SWITCH_SYSTEM_TEMACS): Remove, configure
 +      detects -znocombreloc and passes it to the linker
 +      * s/hpux10-20.h (LD_SWITCH_SYSTEM_TEMACS): Remove, empty.
 +
 +2010-04-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LIBSELINUX_LIBS): Move out of #ifdef.
 +
 +2010-04-21  Karel Klíč  <kklic@redhat.com>
 +
 +      * Makefile.in (LIBSELINUX_LIBS): New.
 +      (LIBES): Add $LIBSELINUX_LIBS.
 +      * eval.c, lisp.h (call7): New function.
 +      * fileio.c [HAVE_LIBSELINUX]: Include selinux headers.
 +      (Ffile_selinux_context, Fset_file_selinux_context):
 +      New functions.
 +      (Fcopy_file): New parameter preserve-selinux-context.
 +      (Frename_file): Preserve selinux context when renaming by copy-file.
 +
 +2010-04-21  Juanma Barranquero  <lekktu@gmail.com>
 +            Eli Zaretskii  <eliz@gnu.org>
 +
 +      Don't depend on cm.c or termcap.c on Windows, use stubs.
 +      * makefile.w32-in (OBJ1): Remove cm.$(O) and termcap.$(O).
 +      ($(BLD)/cm.$(O), $(BLD)/termcap.$(O)): Remove.
 +      * w32console.c (current_tty, cost): New vars; lifted from cm.c.
 +      (evalcost, cmputc, cmcheckmagic, cmcostinit, cmgoto, Wcm_clear)
 +      (sys_tputs, sys_tgetstr): New stubs.
 +      * s/ms-w32.h (chcheckmagic, cmcostinit, cmgoto, cmputc, Wcm_clear)
 +      (tputs, tgetstr): New; define to sys_*.
 +
 +2010-04-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * buffer.c (syms_of_buffer) <bidi-display-reordering>: Doc fix.
 +
 +2010-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * data.c (Fmake_variable_buffer_local, Fmake_local_variable):
 +      Just signal a warning rather than an error when inside a let.
 +      (Fmake_variable_frame_local): Add the same test.
 +
 +      * font.c (syms_of_font): Make the style table vars read-only.
 +
 +      * buffer.h (struct buffer): Remove unused var `direction_reversed'.
 +      * buffer.c (init_buffer_once, syms_of_buffer): Remove its initialization.
 +
 +      * bidi.c (bidi_initialize): Simplify fallback_paragraph_*_re init.
 +
 +2010-04-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Fix R2L paragraph display on TTY.
 +
 +      * xdisp.c (unproduce_glyphs): New function.
 +      (display_line): Use it when produced glyphs are discarded from R2L
 +      glyph rows.
 +      (append_composite_glyph): In R2L rows, prepend the glyph rather
 +      than appending it.
 +
 +      * term.c (append_composite_glyph): In R2L rows, prepend the glyph
 +      rather than append it.  Set up the resolved_level and bidi_type
 +      attributes of the appended glyph.
 +      (produce_special_glyphs): Mirror the backslash continuation
 +      character in R2L lines.
 +
 +      Implement display of R2L paragraphs in GUI sessions.
 +
 +      * xdisp.c [HAVE_WINDOW_SYSTEM]: Add prototype for
 +      append_stretch_glyph.
 +      (set_cursor_from_row) <cursor_x>: Remove unused variable.  Fix
 +      off-by-one error in computing x at end of text in the row.
 +      (append_stretch_glyph): In reversed row, prepend the glyph rather
 +      than append it.  Set resolved_level and bidi_type of the glyph.
 +      (extend_face_to_end_of_line): If the row is reversed, prepend a
 +      stretch glyph whose width is such that the rightmost glyph will be
 +      drawn at the right margin of the window.  Fix off-by-one error on
 +      TTY frames in testing whether a line needs face extension.  Fix
 +      face extension at ZV.  If this is the last glyph row, use
 +      DEFAULT_FACE_ID, to avoid painting the rest of the window with the
 +      region face.
 +      (set_cursor_from_row, display_line): Use
 +      MATRIX_ROW_CONTINUATION_LINE_P instead of testing value of
 +      row->continuation_lines_width.
 +      (next_element_from_buffer): Don't call bidi_paragraph_init if we
 +      are at ZV.  Fixes a crash when reseated to ZV by
 +      try_window_reusing_current_matrix.
 +      (display_and_set_cursor, erase_phys_cursor): Handle negative HPOS,
 +      which happens with R2L glyph rows.  Fixes a crash when inserting a
 +      character at end of an R2L line.
 +      (set_cursor_from_row): Don't be fooled by truncated rows: don't
 +      treat them as having zero-width characters.  Improve comments.
 +      Don't reverse pos_before and pos_after for reversed glyph rows.
 +      Set cursor.x to negative value when the cursor might be on the
 +      left fringe.
 +      (IT_OVERFLOW_NEWLINE_INTO_FRINGE): For R2L lines, consider the
 +      left fringe, not the right one.
 +      (notice_overwritten_cursor, draw_phys_cursor_glyph)
 +      (erase_phys_cursor): For reversed cursor_row, support cursor on
 +      the left fringe.
 +
 +      * fringe.c (update_window_fringes): For R2L rows, swap the bitmaps
 +      of continuation indicators on the fringes.
 +      (draw_fringe_bitmap): For reversed glyph rows, allow cursor on the
 +      left fringe.
 +
 +      * w32term.c (w32_draw_window_cursor): For reversed glyph rows,
 +      draw cursor on the left fringe.
 +
 +      * xterm.c (x_draw_window_cursor): For reversed glyph rows, draw
 +      cursor on the left fringe.
 +
 +      * dispnew.c (update_text_area): Handle reversed desired rows when
 +      the cursor is on the left fringe.
 +      (set_window_cursor_after_update): Limit cursor's hpos by -1 from
 +      below, not by 0, for when the cursor is on the left fringe.
 +
 +2010-04-20  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (xg_event_is_for_scrollbar): Check if grabbed
 +      widget is a scrollbar.
 +
 +2010-04-20  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (char_charset): Consider Vcharset_non_preferred_head
 +      only when the arg CHARSET_LIST is nil.
 +
 +2010-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Make variable forwarding explicit rather the using special values.
 +      Basically, this makes the structure of buffer-local values and object
 +      forwarding explicit in the type of Lisp_Symbols rather than use
 +      special Lisp_Objects for that.  This tends to lead to slightly more
 +      verbose code, but is more C-like, simpler, and makes it easier to make
 +      sure we handled all cases, among other things by letting the compiler
 +      help us check it.
 +      * lisp.h (enum Lisp_Misc_Type, union Lisp_Misc):
 +      Removing forwarding objects.
 +      (enum Lisp_Fwd_Type, enum symbol_redirect, union Lisp_Fwd): New types.
 +      (struct Lisp_Symbol): Make the various forms of variable-forwarding
 +      explicit rather than hiding them inside Lisp_Object "values".
 +      (XFWDTYPE): New macro.
 +      (XINTFWD, XBOOLFWD, XOBJFWD, XKBOARD_OBJFWD): Redefine.
 +      (XBUFFER_LOCAL_VALUE): Remove.
 +      (SYMBOL_VAL, SYMBOL_ALIAS, SYMBOL_BLV, SYMBOL_FWD, SET_SYMBOL_VAL)
 +      (SET_SYMBOL_ALIAS, SET_SYMBOL_BLV, SET_SYMBOL_FWD): New macros.
 +      (SYMBOL_VALUE, SET_SYMBOL_VALUE): Remove.
 +      (struct Lisp_Intfwd, struct Lisp_Boolfwd, struct Lisp_Objfwd)
 +      (struct Lisp_Buffer_Objfwd, struct Lisp_Kboard_Objfwd):
 +      Remove the Lisp_Misc_* header.
 +      (struct Lisp_Buffer_Local_Value): Redefine.
 +      (BLV_FOUND, SET_BLV_FOUND, BLV_VALUE, SET_BLV_VALUE): New macros.
 +      (struct Lisp_Misc_Any): Add filler to get the right size.
 +      (struct Lisp_Free): Use struct Lisp_Misc_Any rather than struct
 +      Lisp_Intfwd.
 +      (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL, DEFVAR_INT)
 +      (DEFVAR_KBOARD): Allocate a forwarding object.
 +      * data.c (do_blv_forwarding, store_blv_forwarding): New macros.
 +      (let_shadows_global_binding_p): New function.
 +      (union Lisp_Val_Fwd): New type.
 +      (make_blv): New function.
 +      (swap_in_symval_forwarding, indirect_variable, do_symval_forwarding)
 +      (store_symval_forwarding, swap_in_global_binding, Fboundp)
 +      (swap_in_symval_forwarding, find_symbol_value, Fset)
 +      (let_shadows_buffer_binding_p, set_internal, default_value)
 +      (Fset_default, Fmake_variable_buffer_local, Fmake_local_variable)
 +      (Fkill_local_variable, Fmake_variable_frame_local)
 +      (Flocal_variable_p, Flocal_variable_if_set_p)
 +      (Fvariable_binding_locus):
 +      * xdisp.c (select_frame_for_redisplay):
 +      * lread.c (Fintern, Funintern, init_obarray, defvar_int)
 +      (defvar_bool, defvar_lisp_nopro, defvar_lisp, defvar_kboard):
 +      * frame.c (store_frame_param):
 +      * eval.c (Fdefvaralias, Fuser_variable_p, specbind, unbind_to):
 +      * bytecode.c (Fbyte_code) <varref, varset>: Adapt to the new symbol
 +      value structure.
 +      * buffer.c (PER_BUFFER_SYMBOL): Move from buffer.h.
 +      (clone_per_buffer_values): Only adjust markers into the current buffer.
 +      (reset_buffer_local_variables): PER_BUFFER_IDX is never -2.
 +      (Fbuffer_local_value, set_buffer_internal_1)
 +      (swap_out_buffer_local_variables):
 +      Adapt to the new symbol value structure.
 +      (DEFVAR_PER_BUFFER): Allocate a Lisp_Buffer_Objfwd object.
 +      (defvar_per_buffer): Take a new arg for the fwd object.
 +      (buffer_lisp_local_variables): Return a proper alist (different fix
 +      for bug#4138).
 +      * alloc.c (Fmake_symbol): Use SET_SYMBOL_VAL.
 +      (Fgarbage_collect): Don't handle buffer_defaults specially.
 +      (mark_object): Handle new symbol value structure rather than the old
 +      special Lisp_Misc_* objects.
 +      (gc_sweep) <symbols>: Free also the buffer-local-value objects.
 +      * term.c (set_tty_color_mode):
 +      * bidi.c (bidi_initialize): Don't access the ->value field directly.
 +      * buffer.h (PER_BUFFER_VAR_OFFSET): Don't bother with
 +      a buffer_local_flags.
 +      * print.c (print_object): Get rid of impossible forwarding objects.
 +
 +2010-04-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_get_type, bidi_get_category)
 +      (bidi_at_paragraph_end, bidi_resolve_weak, bidi_resolve_neutral)
 +      (bidi_type_of_next_char, bidi_level_of_next_char):
 +      Declare static.  Use `INLINE' rather than `inline'.
 +
 +2010-04-19  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * eval.c (Flet, Feval, Fapply, apply_lambda): Use SAFE_ALLOCA
 -      (Bug#6214).
 +      * dired.c (Ffile_attributes): Fix typo in docstring.
  
 -2010-08-14  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-04-19  Adrian Robert  <Adrian.B.Robert@gmail.com>
  
 -      * doc.c (Fsnarf_documentation): Set skip_file only if p[1] is S.
 +      * nsmenu.m (EmacsDialog-runDialogAt:): Declare ret as
 +      NSInteger (Bug#5811).
  
 -2010-08-13  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-04-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
 -      * doc.c (Fsnarf_documentation): Initialize skip_file before
 -      build-files test.
 +      * s/darwin.h (PTY_ITERATION, PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF)
 +      (PTY_OPEN): New defines.  Use openpty (Bug#726, Bug#5819).
  
 -2010-08-09  Peter O'Gorman <pogma@thewrittenword.com>  (tiny change)
 +2010-04-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
 -      * s/hpux10-20.h (HAVE_TERMIOS, NO_TERMIO, ORDINARY_LINK):
 -      New definitions.
 -      (HAVE_TERMIO): Remove.
 +      * frame.h (FRAME_LINE_TO_PIXEL_Y): Add missing parenthesis.
  
 -2010-08-06  Kenichi Handa  <handa@m17n.org>
 +2010-04-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * charset.c: Include <stdlib.h>
 -      (struct charset_sort_data): New struct.
 -      (charset_compare): New function.
 -      (Fsort_charsets): New function.
 -      (syms_of_charset): Declare Fsort_charsets as a Lisp function.
 +      * xdisp.c (prepare_menu_bars): Don't call ns_set_doc_edited for
 +      terminal frames (Bug#5837).
  
 -      * coding.c (decode_coding_iso_2022): Fix checking of dimension
 -      number in CTEXT extended segment.
 +2010-04-19  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-08-01  Juanma Barranquero  <lekktu@gmail.com>
 +      * .gdbinit (xsubchartable): New command.
  
 -      * w32fns.c (syms_of_w32fns) <x-max-tooltip-size>: Fix typo in docstring.
 -      * xfns.c (syms_of_xfns) <x-max-tooltip-size>: Reflow docstring.
 +2010-04-19  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-07-30  Juanma Barranquero  <lekktu@gmail.com>
 +      * xdisp.c (display_line): Don't write beyond the last glyph row in
 +      the desired matrix.  Fixes a crash in "emacs -nw" (bug#5972), see
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00075.html
 +      and
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00213.html
  
 -      * fns.c (Fsubstring_no_properties, Fnthcdr, Ffeaturep)
 -      (Fhash_table_size): Fix typos in docstrings.
 -      (Fmake_hash_table): Doc fix.
 +2010-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-07-28  Juanma Barranquero  <lekktu@gmail.com>
 +      * alloc.c (Fpurecopy): Hash-cons if requested.
 +      (syms_of_alloc): Update purify-flag docstring.
  
 -      * minibuf.c (syms_of_minibuf) <read-buffer-function>:
 -      Doc fix (bug#5625).
 +2010-04-18  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-07-27  Ken Brown  <kbrown@cornell.edu>
 +      * gtkutil.c (xg_set_geometry): Set size in geometry string also.
 +      (x_wm_set_size_hint): Set USER_POS in hint_flags (Bug#5968).
  
 -      * dired.c (DIRENTRY_NONEMPTY) [cygwin]: Use d_ino instead of
 -      the MSDOS definition.
 +2010-04-17  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-07-25  Christoph Scholtes  <cschol2112@gmail.com>
 +      Fix a crash when an NSM character is inserted at BEGV.
  
 -      * minibuf.c (Fread_buffer): Doc fix (bug#6528).
 +      * bidi.c (bidi_init_it): Fix initialization of bidi_it->prev.
 +      (bidi_resolve_weak): Don't use prev.type_after_w1 if it is
 +      NEUTRAL_B or UNKNOWN_BT.
  
 -2010-07-22  Christoph Scholtes  <cschol2112@gmail.com>
 +2010-04-16  Eli Zaretskii  <eliz@gnu.org>
  
 -      * window.c (Fwindow_height): Doc fix (bug#6518).
 +      * xdisp.c (set_cursor_from_row): Don't consider possibility of
 +      other rows with cursor unless they are different from this row and
 +      this row is part of a continued line.  (Bug#5943)
  
 -2010-07-21  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-16  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * buffer.c (syms_of_buffer) <fringe-indicator-alist>: Doc fix.
 +      * s/freebsd.h: Restore osreldate.h include.
 +      Suggested by Naohiro Aota.
  
 -2010-07-17  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-04-16  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * gtkutil.c (xg_event_is_for_menubar): Also check that event window
 -      is related to the menu bar (Bug#6499).
 +      * xmenu.c (apply_systemfont_to_menu): *childs was incorrectly used.
  
 -2010-07-14  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-04-16  Ken Brown  <kbrown@cornell.edu>  (tiny change)
  
 -      * xterm.h (x_menubar_window_to_frame): Second parameter is XEvent*.
 +      * s/cygwin.h: Avoid linking against static libgcc.
  
 -      * xterm.c (handle_one_xevent): Pass event to x_menubar_window_to_frame.
 +2010-04-15  Juri Linkov  <juri@jurta.org>
  
 -      * xmenu.c (x_activate_menubar): Revert previous fix for Bug#6499,
 -      i.e. don't put back ButtonRelease (Bug#6608).
 +      * window.c: Add Qscroll_command.
 +      Remove Vscroll_preserve_screen_position_commands.
 +      (window_scroll_pixel_based, window_scroll_line_based): Check the
 +      `scroll-command' property on the last command instead of searching
 +      the last command in Vscroll_preserve_screen_position_commands.
 +      (syms_of_window): Initialize and staticpro `Qscroll_command'.
 +      Put Qscroll_command property on Qscroll_up and Qscroll_down.
 +      (scroll-preserve-screen-position): Doc fix.
 +      (Vscroll_preserve_screen_position_commands): Remove variable.
  
 -      * xfns.c (x_menubar_window_to_frame): Take XEvent as second parameter
 -      instead of Window.  Call xg_event_is_for_menubar when
 -      USE_GTK (Bug#6499).
 +2010-04-15  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * gtkutil.h (xg_event_is_for_menubar): Declare.
 +      * xdisp.c (message): Do not use NO_ARG_ARRAY.
  
 -      * gtkutil.c (xg_event_is_for_menubar): New function (Bug#6499).
 +2010-04-14  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-07-14  Eli Zaretskii  <eliz@gnu.org>
 +      Reduce cpp use in Makefile.in.
 +      * Makefile.in (DBUS_CFLAGS, DBUS_LIBS, GCONF_CFLAGS, GCONF_LIBS)
 +      (LIBSOUND, CFLAGS_SOUND, RSVG_LIBS, RSVG_CFLAGS, INTERVALS_H)
 +      (GETLOADAVG_LIBS, RUN_TEMACS): Move to the autoconf section.
 +      (ORDINARY_LINK): Remove, defined in src/s/gnu.h.
 +      (CRT0_COMPILE): Remove, inline it in the only user.
  
 -      * w32fns.c (x_set_foreground_color): Fix setting the cursor color
 -      when it's the same as the old foreground.  (Bug#6609)
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -2010-07-10  Chong Yidong  <cyd@stupidchicken.com>
 +      * window.c (keys_of_window): Rebind `C-v' from `scroll-up' to
 +      `scroll-up-command' and `M-v' from `scroll-down' to
 +      `scroll-down-command'.
  
 -      * xfaces.c (realize_face): Garbage the frame if a face is removed
 -      (Bug#6593).
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -2010-07-05  Andreas Schwab  <schwab@linux-m68k.org>
 +      * window.c (Vscroll_preserve_screen_position_commands): New variable
 +      with the default value as the list of Qscroll_down and Qscroll_up.
 +      (window_scroll_pixel_based, window_scroll_line_based): Search the
 +      last command in the list Vscroll_preserve_screen_position_commands
 +      instead of comparing with Qscroll_up and Qscroll_down.
  
 -      * keyboard.c: Remove duplicate <setjmp.h>.
 -      (read_key_sequence): Remove volatile qualifiers.
 +2010-04-13  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-07-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +      * gtkutil.c (xg_set_geometry): Set geometry for PPosition also.
 +      (x_wm_set_size_hint): Dont set position flags, gtk_window_parse_geometry
 +      does that.
  
 -      * dispextern.h (FRINGE_HEIGHT_BITS): New define.
 -      (struct glyph_row): New members left_fringe_offset and
 -      right_fringe_offset.
 +      * xfns.c (Fx_create_frame, x_create_tip_frame): Set default border width
 +      to zero.
  
 -      * xterm.c (x_draw_fringe_bitmap): Don't clip bottom aligned bitmap
 -      specially.
 -      * w32term.c (w32_draw_fringe_bitmap): Likewise.
 -      * nsterm.m (ns_draw_fringe_bitmap): Likewise.
 +2010-04-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * fringe.c (draw_fringe_bitmap_1): Don't clip bitmap here.
 -      Take account of bitmap offset.
 -      (draw_window_fringes): Take account of window vscroll.
 -      (update_window_fringes): Likewise.  Extend top-aligned top indicator
 -      or bottom-aligned bottom indicator to adjacent rows if it doesn't fit
 -      in one row.  Don't set redraw_fringe_bitmaps_p outside row comparison.
 -      Set left_fringe_offset and right_fringe_offset (Bug#5634, Bug#6325).
 +      * term.c (init_tty): Move common text outside of #ifdef TERMINFO.
  
 -2010-07-04  Juanma Barranquero  <lekktu@gmail.com>
 +      Try to solve the problem of spurious EOF chars in long lines of text
 +      sent to interactive subprocesses.
 +      * sysdep.c (child_setup_tty): Do not enable ICANON any more.
 +      (system_process_attributes): Remove unused var `ttotal'.
 +      * process.c (send_process): Don't bother breaking long line with EOF
 +      chars when talking to ttys any more.
 +      (wait_reading_process_output): Output a warning when called in such
 +      a way that it could block without being interruptible.
  
 -      * w32fns.c (Qtooltip): Declare.
 -      Suggested by Andy Moreton <andrewjmoreton@gmail.com>.
 +      Try to detect file modification within the same second.
 +      * buffer.h (struct buffer): New field modtime_size.
 +      * buffer.c (reset_buffer): Initialize it.
 +      * fileio.c (Finsert_file_contents, Fwrite_region): Set it.
 +      (Fverify_visited_file_modtime): Check it.
 +      (Fclear_visited_file_modtime, Fset_visited_file_modtime): Clear it.
 +      (Fset_visited_file_modtime): Set (or clear) it.
  
 -2010-07-03  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * xmenu.c (x_activate_menubar): Send Press/Release for Gtk+ to avoid
 -      grab on just Press (Bug#6499).
 +      * process.c (status_notify): Remove unused var `ro'.
  
 -2010-07-02  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-12  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * frame.c (Qtooltip): New var.
 -      (delete_frame): Use it.  Fix faulty if statement.  Don't update
 -      mode line for tooltip frames.  Suggested by Martin Rudalics.
 +      * xfns.c (select_visual): Don't call error if XGetVisualInfo returns
 +      more than one visual (Bug#5938).
  
 -      * xfns.c (x_create_tip_frame):
 -      * w32fns.c (x_create_tip_frame): Use it.
 +2010-04-12  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-06-30  Naohiro Aota  <naota@elisp.net>  (tiny change)
 +      * Makefile.in (C_SWITCH_SYSTEM,C_SWITCH_MACHINE,C_SWITCH_X_SITE):
 +      Undefine.
  
 -      * xftfont.c (xftfont_open): Check font width one by one also when
 -      spacing is dual.
 +2010-04-11  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * ftfont.c (ftfont_open): Ditto.
 +      Remove C_SWITCH_SYSTEM_TEMACS.
 +      * s/darwin.h (C_SWITCH_SYSTEM_TEMACS): Remove.
 +      (malloc, realloc, free): Use emacs, not temacs for conditional
 +      definition.
  
 -2010-06-26  Andreas Schwab  <schwab@linux-m68k.org>
 +      * Makefile.in (C_SWITCH_SYSTEM_TEMACS): Remove.
 +      (ALL_CFLAGS): Do not use C_SWITCH_SYSTEM_TEMACS.
  
 -      * alloc.c (Fmake_byte_code): Don't access undefined argument
 -      (Bug#6517).
 +      Use autoconf, not cpp for some variables.
 +      * Makefile.in (C_SWITCH_SYSTEM, C_SWITCH_MACHINE)
 +      (C_SWITCH_X_SITE): Define using autoconf, not cpp.
 +      (ALL_CFLAGS): Use them as make variables.
 +      (really-lwlib, really-oldXMenu): Do not pass them.
  
 -2010-06-25  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-11  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * xdisp.c (next_element_from_image): Ensure that after-strings are
 -      read the next time we hit handle_stop (Bug#1336).
 +      * xmenu.c (apply_systemfont_to_dialog): New.
 +      (create_and_show_dialog): Call apply_systemfont_to_dialog if HAVE_XFT.
  
 -2010-06-23  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * lread.c (read1): Signal error if #s is not followed by paren.
 +      * process.c (exec_sentinel): Preserve current-buffer.
  
 -2010-06-19  Chong Yidong  <cyd@stupidchicken.com>
 +      * process.c (read_process_output): Move the save-current-buffer to
 +      apply to both the filter and the non-filter branches.
  
 -      * image.c (free_image): Mark frame as garbaged (Bug#6426).
 +2010-04-10  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * keymap.c (Fdefine_key): Doc fix (Bug#6460).
 +      * s/msdos.h (UNEXEC): New definition.
  
 -2010-06-15  Glenn Morris  <rgm@gnu.org>
 +2010-04-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
 -      * editfns.c (Fbyte_to_string): Pacify compiler.
 +      * dispextern.h (TRY_WINDOW_CHECK_MARGINS)
 +      (TRY_WINDOW_IGNORE_FONTS_CHANGE): New defines.
  
 -2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * xdisp.c (try_window): Change arg from CHECK_MARGINS to FLAGS.
 +      Don't abort with fonts change if TRY_WINDOW_IGNORE_FONTS_CHANGE is
 +      set in FLAGS.  Callers with non-zero CHECK_MARGINS changed to use
 +      TRY_WINDOW_CHECK_MARGINS.
  
 -      * dbusbind.c (xd_append_arg): Don't "make-unibyte" the string.
 -      Check `object's type before accessing its guts.
 +      * xfns.c (Fx_show_tip): Undo last change.  Call try_window with
 +      TRY_WINDOW_IGNORE_FONTS_CHANGE (Bug#2423).  Subtract last glyph's
 +      width only when it is for padding.
  
 -2010-06-08  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-04-09  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * minibuf.c (Fall_completions): Add more checks.
 +      * xfns.c (Fx_show_tip): Call try_window in a loop until
 +      fonts_changed_p is zero (Bug#2423).
  
 -2010-06-08  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-08  Eli Zaretskii  <eliz@gnu.org>
  
 -      * minibuf.c (Fall_completions): Check COLLECTION's size (bug#6378).
 +      * xdisp.c (set_cursor_from_row): Don't dereference glyphs beyond
 +      the end of TEXT_AREA.  (Bug#5856)
  
 -2010-06-03  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-04-08  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * process.c (conv_lisp_to_sockaddr): Fix conversion of IPv4
 -      address.  (Bug#6346)
 +      * xsettings.c (XSETTINGS_FONT_NAME): Move XSETTINGS_FONT_NAME out of
 +      HAVE_GCONF.
  
 -2010-06-03  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-08  Eli Zaretskii  <eliz@gnu.org>
  
 -      * ccl.c (Fccl_program_p): Fix typo in docstring.
 +      * bidi.c (bidi_resolve_weak): Use prev.type_after_w1, instead of
 +      prev.orig_type, for resolving type of NSM.  (Bug#5858)
  
 -2010-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-08  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * keymap.c (Fwhere_is_internal): Fix handling of remapping (in thread
 -      of bug#6305).
 +      * xsettings.c (current_font, SYSTEM_FONT, XSETTINGS_FONT_NAME): New.
 +      (parse_xft_settings): Also check for XSETTINGS_FONT_NAME and save that
 +      in current_font.
 +      (init_gconf): Read value of SYSTEM_FONT and save it in current_font.
 +      (Ffont_get_system_normal_font, xsettings_get_system_normal_font):
 +      New functions.
 +      (syms_of_xsettings): Initialize current_font.
 +      defsubr Sfont_get_system_normal_font.
  
 -2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +      * xsettings.h (Ffont_get_system_normal_font)
 +      (xsettings_get_system_normal_font): Declare.
  
 -      * xdisp.c (redisplay_window): After redisplay, check if point is
 -      still valid before setting it (Bug#6177).
 +      * xfns.c (extern xlwmenu_default_font): Remove.
 +      (Fx_create_frame): Remove setting of xlwmenu_default_font, moved
 +      to xlwmenu.c.
  
 -2010-05-20  enami tsugutomo  <tsugutomo.enami@jp.sony.com>
 +      * menu.c (digest_single_submenu): If USE_LUCID and HAVE_XFT, encode
 +      menu items in UTF-8.
  
 -      * s/netbsd.h: If terminfo is found, use it in preference to
 -      termcap.  (Bug#6190)  [Backport from trunk]
 +      * xmenu.c: include xsettings.h and xlwmenu.h if USE_LUCID.
 +      (apply_systemfont_to_menu): New function.
 +      (set_frame_menubar, create_and_show_popup_menu): Call
 +      apply_systemfont_to_menu.
  
 -2010-05-20  Kevin Ryde  <user42@zip.com.au>
 +2010-04-07  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * keyboard.c (Vlast_command, Vkeyboard_translate_table)
 -      (Voverriding_terminal_local_map, Vsystem_key_alist)
 -      (Vlocal_function_key_map): Fix manual link in docstring (Bug#6224).
 +      * frame.h (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Don't use
 +      FRAME_LINE_TO_PIXEL_Y.
  
 -2010-05-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * xterm.c (x_set_window_size_1): Don't add border_width/height to
 +      pixelwidth/height.
  
 -      * editfns.c (Fbyte_to_string): New function.
 +2010-04-07  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-05-18  Chong Yidong  <cyd@stupidchicken.com>
 +      Simplify code for HP machines.
 +      * m/hp800.h (LOAD_AVE_TYPE, LOAD_AVE_CVT, NO_REMAP): Do not define
 +      for GNU_LINUX, not needed.
 +      (UNEXEC, NEED_BSDTTY): Move definitions...
 +      * s/hpux10-20.h (UNEXEC, NEED_BSDTTY): ... here.
  
 -      * character.c (Fstring, Funibyte_string): Use SAFE_ALLOCA to
 -      prevent stack overflow if number of arguments is too large
 -      (Bug#6214).
 +      * m/iris4d.h (UNEXEC): Move definition ...
 +      * s/irix6-5.h (UNEXEC): ... here.
  
 -2010-05-11  Eli Zaretskii  <eliz@gnu.org>
 +2010-04-04  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(SRC)/w32.h.
 +      * xfns.c (set_machine_and_pid_properties): New function.
 +      (Fx_create_frame): Call set_machine_and_pid_properties.
  
 -      * w32fns.c: Include w32.h.
 -      (Fw32_shell_execute): Decode the error message before passing it
 -      to `error'.  (Bug#6126)
 +2010-04-03  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-05-11  Karel Klic  <kklic@redhat.com>
 +      * bidi.c (bidi_resolve_explicit, bidi_level_of_next_char): Check
 +      bidi_it->bytepos against ZV_BYTE instead of bidi_it->ch against
 +      BIDI_EOB.  Fixes infloop with vertical cursor motion at ZV.
  
 -      * ftfont.c: Fix incorrect parentheses of #if condition for
 -      definining M17N_FLT_USE_NEW_FEATURE.
 +      * w32fns.c (x_create_tip_frame): Copy `parms' before we modify it
 +      in this function.  (Bug#5703)
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-03  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * Version 23.2 released.
 +      * nsterm.h: Fix last change.
  
 -2010-04-30  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-04-03  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * composite.c (autocmp_chars): Save point as marker before calling
 -      auto-composition-function (Bug#5984).
 +      * m/intel386.h (NO_REMAP): Move definition ...
 +      * s/msdos.h (NO_REMAP): ... here.
  
 -      * lisp.h (restore_point_unwind): Add prototype.
 +      * m/vax.h (CRT0_DUMMIES): Remove, unused.
  
 -      * fileio.c (restore_point_unwind): Remove static attribute.
 +      * ecrt0.c: Remove MSDOS, m68k and __sparc__ conditionals, file not
 +      used on those platforms.
  
 -2010-04-23  Kenichi Handa  <handa@m17n.org>
 +2010-04-02  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * ftfont.c (M17N_FLT_USE_NEW_FEATURE): Define it if we can use the
 -      new feature of libotf and m17n-flt.
 -      (ftfont_check_otf) [M17N_FLT_USE_NEW_FEATURE]:
 -      Call OTF_check_features even if no specific feature is given.
 -      (PACK_OTF_TAG) [M17N_FLT_USE_NEW_FEATURE]: New macro.
 -      (ftfont_drive_otf) [M17N_FLT_USE_NEW_FEATURE]: Handle the case
 -      that OUT is NULL.  Use OTF_drive_gsub_with_log and
 -      OTF_drive_gpos_with_log instead of OTF_drive_gsub and
 -      OTF_drive_gpos.
 -      (ftfont_try_otf) [M17N_FLT_USE_NEW_FEATURE]: New function.
 -      (ftfont_shape_by_flt) [M17N_FLT_USE_NEW_FEATURE]:
 -      Setup mflt_enable_new_feature and mflt_try_otf.
 +      Remove extern errno declarations.
 +      * xterm.c:
 +      * xrdb.c:
 +      * w32term.c:
 +      * unexec.c:
 +      * unexaix.c:
 +      * sysdep.c:
 +      * process.c:
 +      * lread.c:
 +      * keyboard.c:
 +      * floatfns.c:
 +      * filelock.c:
 +      * fileio.c:
 +      * emacs.c (main):
 +      * ecrt0.c:
 +      * dispnew.c:
 +      * callproc.c:
 +      * buffer.c: Remove errno extern declarations.
 +      * s/netbsd.h (NEED_ERRNO): Remove.
  
 -2010-04-19  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-01  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * dired.c (Ffile_attributes): Fix typo in docstring.
 +      Remove all uses of LIBX11_SYSTEM.
 +      * Makefile.in (LIBX11_SYSTEM): Remove.
 +      * s/msdos.h (LIBX11_SYSTEM): Do not define, define LIBS_SYSTEM
 +      instead.
  
 -2010-04-13  Adrian Robert  <Adrian.B.Robert@gmail.com>
 +2010-04-01  Eli Zaretskii  <eliz@gnu.org>
  
 -      * nsmenu.m (EmacsDialog-runDialogAt:): Declare ret as
 -      NSInteger (Bug#5811).
 +      Remove support for DJGPP v1.x (bug#5813).
  
 -2010-04-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +      * w16select.c (__dpmi_int): Remove DJGPP v1.x compatibility.
 +      * s/msdos.h:
 +      * unexec.c (make_hdr, copy_text_and_data):
 +      * sysdep.c (wait_for_termination, sys_subshell):
 +      * msdos.c (dos_set_window_size, msdos_set_cursor_shape)
 +      (IT_set_terminal_modes, __write, _rename, gethostname)
 +      (gettimeofday, alarm, fork, kill, dos_ttraw, dos_ttcooked)
 +      (run_msdos_command, abort): Remove DJGPP v1.x code and tests of
 +      the value of __DJGPP__.
 +      (nice, pause, sigsetmask, sigblock): Remove DJGPP v1.x
 +      compatibility code.
 +      * lread.c:
 +      * gmalloc.c (memalign):
 +      * fileio.c (Fcopy_file, check_executable, Ffile_modes):
 +      * emacs.c (main):
 +      * dosfns.c (init_dosfns):
 +      * dired.c (file_name_completion_stat): Remove tests of __DJGPP__.
  
 -      * s/darwin.h (PTY_ITERATION, PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF)
 -      (PTY_OPEN): New defines.  Use openpty (Bug#726, Bug#5819).
 +2010-04-01  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-04-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +      * xdisp.c (set_cursor_from_row): Fix cursor positioning when the
 +      string with `cursor' property comes from an `after-string'
 +      overlay.  (Bug#5816)
  
 -      * frame.h (FRAME_LINE_TO_PIXEL_Y): Add missing parenthesis.
 +2010-04-01  Glenn Morris  <rgm@gnu.org>
  
 -2010-04-07  Jan Djärv  <jan.h.d@swipnet.se>
 +      * Makefile.in (LIBTIFF, LIBJPEG, LIBPNG, LIBGIF, LIBXPM, XFT_LIBS):
 +      Define as Makefile variables.
 +      (LIBX): Use above variables rather than directly using autoconf.
  
 -      * frame.h (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Don't use
 -      FRAME_LINE_TO_PIXEL_Y.
 +2010-03-31  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * xterm.c (x_set_window_size_1): Don't add border_width/height to
 -      pixelwidth/height.
 +      Clean up BSD_SYSTEM use.
 +      * xterm.c:
 +      * process.c:
 +      * emacs.c: Use HAVE_SYS_IOCTL_H instead of BSD_SYSTEM as a guard
 +      for including <sys/ioctl.h>.
 +      * sysdep.c (wait_without_blocking): Remove BSD_SYSTEM case, this
 +      code is only used for MSDOS.
  
 -2010-04-05  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Juri Linkov  <juri@jurta.org>
  
 -      * xdisp.c (prepare_menu_bars): Don't call ns_set_doc_edited for
 -      terminal frames (Bug#5837).
 +      * image.c: Add `Qextension_data'.
 +      (syms_of_image): Initialize and staticpro `Qextension_data'.
 +      (Fimage_metadata): Rename from `Fimage_extension_data'.
 +      (gif_load): Put GIF extension data to the property
 +      `Qextension_data'.
  
  2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
  
  2010-03-31  Eli Zaretskii  <eliz@gnu.org>
  
 -      * w32fns.c (x_create_tip_frame): Copy `parms' before we modify it
 -      in this function.  (Bug#5703)
 +      * xdisp.c (highlight_trailing_whitespace): Support highlight of
 +      trailing whitespace in right-to-left rows.
  
 -2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * nsterm.h: Fix last change.
 +      Get rid of the direct_output optimizations.
 +      * keyboard.c (nonundocount): Remove extern declaration.
 +      (command_loop_1): Remove brittle optimisation for cheap and
 +      common operations.
 +      * xdisp.c (redisplay_internal): Don't bother checking
 +      redisplay_performed_directly_p any more.
 +      * sysdep.c (init_sys_modes): Don't call direct_output_forward_char
 +      any more.
 +      * dispnew.c (redisplay_performed_directly_p)
 +      (direct_output_for_insert, direct_output_forward_char):
 +      * dispextern.h (redisplay_performed_directly_p)
 +      (direct_output_for_insert, direct_output_forward_char): Remove.
 +      * cmds.c (nonundocount): Make it static.
  
 -2010-03-30  Bernhard Herzog  <bh@intevation.de>  (tiny change)
 +2010-03-31  Bernhard Herzog  <bh@intevation.de>  (tiny change)
  
        * menu.c (Fx_popup_menu): Use last_event_timestamp (Bug#4930).
  
 -2010-03-30  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-03-31  Jan Djärv  <jan.h.d@swipnet.se>
  
        * xdisp.c (note_mouse_highlight): Don't do highlight if pointer is
        invisible (Bug#5766).
  
 -2010-03-29  Adrian Robert  <adrian.b.robert@gmail.com>
 +2010-03-31  Adrian Robert  <adrian.b.robert@gmail.com>
  
 -      * xdisp.c (x_consider_frame_title, update_window_cursor): Remove
 -      HAVE_NS conditionals.
 +      * xdisp.c (x_consider_frame_title, update_window_cursor):
 +      Remove HAVE_NS conditionals.
        (prepare_menu_bars) [HAVE_NS]: Call ns_set_doc_edited.
  
        * nsfns.m (x_implicitly_set_name): If frame-title-format is t, use
  
        * nsterm.m: Remove unneeded prototype.
  
 -2010-03-28  Glenn Morris  <rgm@gnu.org>
 +2010-03-31  Glenn Morris  <rgm@gnu.org>
  
        * Makefile.in (SOME_MACHINE_OBJECTS): Ensure dbus stuff is always
        in the DOC file.  (Bug#5336)
  
 -2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * xdisp.c (pos_visible_p): Revert 2008-01-25 change (Bug#5730).
  
 -2010-03-20  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * window.c (keys_of_window): Remove redundant/overridden bindings.
 +
 +2010-03-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (BUFFER_POS_REACHED_P, move_it_in_display_line_to):
 +      Restore original behavior when the iterator is not bidi_p.
 +
 +2010-03-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * xdisp.c (syms_of_xdisp): Use intern_c_string instead of intern.
 +
 +2010-03-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_cache_iterator_state): Invalidate the cache if we
 +      are outside the range of cached character positions.
 +
 +2010-03-30  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in ($(BLD)/bidi.$(O)): Add dependency on w32gui.h.
 +
 +2010-03-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Initial support for bidirectional editing.
 +
 +      * Makefile.in (obj): Include bidi.o.
 +      (bidi.o): New target.
 +
 +      * makefile.w32-in (OBJ1): Add $(BLD)/bidi.$(O).
 +      ($(BLD)/bidi.$(O)): New target.
 +
 +      * bidi.c: New file.
 +
 +      * buffer.h (struct buffer): New members bidi_display_reordering
 +      and bidi_paragraph_direction.
 +
 +      * buffer.c (init_buffer_once): Initialize bidi_display_reordering
 +      and bidi_paragraph_direction.
 +      (syms_of_buffer): Declare Lisp variables bidi-display-reordering
 +      and bidi-paragraph-direction.
 +      (Fbuffer_swap_text): Swap the values of
 +      bidi_display_reordering and bidi_paragraph_direction.
 +
 +      * dispextern.h (BIDI_MAXLEVEL, BIDI_AT_BASE_LEVEL): New macros.
 +      (bidi_type_t, bidi_dir_t): New types.
 +      (bidi_saved_info, bidi_stack, bidi_it): New structures.
 +      (struct it): New members bidi_p, bidi_it, paragraph_embedding,
 +      prev_stop, base_level_stop, and eol_pos.
 +      (bidi_init_it, bidi_get_next_char_visually): New prototypes.
 +      (IT_STACK_SIZE): Enlarge to 5.
 +      (struct glyph_row): New member reversed_p.
 +      <string_buffer_position>: Update prototype.
 +      (PRODUCE_GLYPHS): Set the reversed_p flag in the iterator's
 +      glyph_row if bidi_it.paragraph_dir == R2L.
 +      (struct glyph): New members resolved_level and bidi_type.
 +
 +      * dispnew.c (direct_output_forward_char): Give up if we need bidi
 +      processing or buffer's direction is right-to-left.
 +      (prepare_desired_row): Preserve the reversed_p flag.
 +      (row_equal_p): Compare the reversed_p attributes as well.
 +
 +      * xdisp.c (init_iterator): Initialize it->bidi_p.  Call
 +      bidi_init_it and set it->paragraph_embedding from the current
 +      buffer's value of bidi_paragraph_direction.
 +      (reseat_1): Initialize bidi_it.first_elt.
 +      (set_iterator_to_next, next_element_from_buffer): Use the value of
 +      paragraph_embedding to determine the paragraph direction.
 +      (set_iterator_to_next): Under bidi reordering, call
 +      bidi_get_next_char_visually.  Call bidi_paragraph_init if the
 +      new_paragraph flag is set in the bidi iterator.
 +      (next_element_from_buffer): If bidi_it.first_elt is set,
 +      initialize paragraph direction and find the first character to
 +      display in the visual order.  If reseated to a middle of a line,
 +      prime the bidi iterator starting at the line's beginning.  Handle
 +      the situation where we overstepped stop_charpos due to
 +      non-linearity of the bidi iteration.  Likewise for when we back up
 +      beyond the previous stop_charpos.  When moving across stop_charpos,
 +      record it in prev_stop.
 +      (display_line): Set row->end and it->start for the next row to the
 +      next character in logical order.  Always extend reversed_p rows to
 +      the end of line, even if they end at ZV.  Copy the reversed_p flag
 +      to the next glyph row.  Keep calling set_cursor_from_row for
 +      bidi-reordered rows even if we already have a possible candidate
 +      for cursor position.  Set row_end after all the row's glyphs have
 +      been produced, by looping over the glyphs.  Record the position
 +      after EOL in it->eol_pos, and use it to set end_pos of the last
 +      row produced for a continued line.
 +      <Qright_to_left, Qleft_to_right>: New variables.
 +      (syms_of_xdisp): Initialize and staticpro them.
 +      (string_buffer_position_lim): New function.
 +      (string_buffer_position): Most of code moved to
 +      string_buffer_position_lim.  Last argument and return value are
 +      now EMACS_INT; all callers changed.
 +      (set_cursor_from_row): Rewritten to support bidirectional text and
 +      reversed glyph rows.
 +      (text_outside_line_unchanged_p, try_window_id): Disable
 +      optimizations if we are reordering bidirectional text and the
 +      paragraph direction can be affected by the change.
 +      (append_glyph, append_composite_glyph)
 +      (produce_image_glyph, append_stretch_glyph): Set the
 +      resolved_level and bidi_type members of each glyph.
 +      (append_glyph): If the glyph row is reversed, prepend the glyph
 +      rather than appending it.
 +      (handle_stop_backwards): New function.
 +      (reseat_1, pop_it, push_it): Set prev_stop and base_level_stop.
 +      (reseat): call handle_stop_backwards to recompute prev_stop and
 +      base_level_stop for the new position.
 +      (handle_invisible_prop): Under bidi iteration, skip invisible text
 +      using bidi_get_next_char_visually.  If we are `reseat'ed, init the
 +      paragraph direction.  Update IT->prev_stop after skipping
 +      invisible text.
 +      (move_it_in_display_line_to): New variables prev_method
 +      and prev_pos.  Compare for strict equality in
 +      BUFFER_POS_REACHED_P.
 +      (try_cursor_movement): Examine all the candidate rows that occlude
 +      point, to return the best match.  If rows are bidi-reordered
 +      and point moved backwards, back up to the row that is not a
 +      continuation line, and start looking for a suitable row from
 +      there.
 +
 +      * term.c (append_glyph): Reverse glyphs by pre-pending them,
 +      rather than appending, if the glyph_row's reversed_p flag is set.
 +      Set the resolved_level and bidi_type members of each glyph.
 +
 +      * .gdbinit (pbiditype): New command.
 +      (pgx): Use it to display bidi level and type of the glyph.
 +      (pitx): Display some bidi information about the iterator.
 +      (prowlims, pmtxrows): New commands.
 +
 +2010-03-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove all uses of C_DEBUG_SWITCH and LIBS_DEBUG.
 +      * s/usg5-4.h (LIBS_DEBUG):
 +      * s/irix6-5.h (C_DEBUG_SWITCH):
 +      * s/gnu-linux.h (LIBS_DEBUG):
 +      * s/darwin.h (LIBS_DEBUG):
 +      * s/bsd-common.h (LIBS_DEBUG):
 +      * s/aix4-2.h (LIBS_DEBUG, C_DEBUG_SWITCH):
 +      * m/iris4d.h (LIBS_DEBUG):
 +      * m/hp800.h (LIBS_DEBUG): Remove definitions.
 +
 +      * Makefile.in (LIBES): Remove reference to LIBS_DEBUG.
 +      (LIBS_DEBUG): Remove definition.
 +
 +2010-03-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * process.c (Fmake_network_process): Don't apply Bug#5173 fix for
 +      Windows.
 +
 +2010-03-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * process.c (Fmake_network_process): Don't call turn_on_atimers around
 +      `connect' (Bug#5723).
 +
 +2010-03-25  Helmut Eller  <eller.helmut@gmail.com>
 +
 +      * process.c (Fmake_network_process): Call `select' for interrupted
 +      `connect' rather than creating new socket (Bug#5173).
 +
 +2010-03-24  Jan Djärv  <jan.h.d@swipnet.se>
  
        * frame.c (x_get_arg): Handle RES_TYPE_BOOLEAN_NUMBER (bug #5736).
  
  
        * dispextern.h (resource_types): RES_TYPE_BOOLEAN_NUMBER is new.
  
 -2010-03-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +2010-03-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
        * xfns.c (Fx_create_frame) [USE_LUCID]: Add BLOCK_INPUT around
        XLoadQueryFont.
  
 -2010-03-16  Kenichi Handa  <handa@m17n.org>
 +2010-03-24  Kenichi Handa  <handa@m17n.org>
  
        * coding.c (decode_coding_ccl): Fix previous change for the
        multibyte case.
        case that the output buffer is fullfilled.
        (encode_coding): Setup ccl program here.
  
 -2010-03-15  Andreas Politz  <politza@fh-trier.de>  (tiny change)
 +2010-03-23  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * s/gnu-linux.h (LIBS_SYSTEM): Remove, same as default.
 +
 +      Simplify LIBS_MACHINE definitions.
 +      * m/hp800.h (LIBS_MACHINE): Remove, same as default.
 +      * m/iris4d.h (LIBS_MACHINE): Likewise.
 +      * m/ibmrs6000.h (LIBS_MACHINE): Rename to LIBS_SYSTEM and move ...
 +      * s/aix4-2.h (LIBS_SYSTEM): ... here.
 +      * s/netbsd.h: Remove commented out code.
 +
 +2010-03-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove dead code dealing with POSIX_SIGNALS.
 +      * atimer.c (set_alarm): Remove dead code, all USG systems define
 +      POSIX_SIGNALS.
 +      * data.c (arith_error): Likewise.
 +      * keyboard.c (input_available_signal, handle_user_signal)
 +      (interrupt_signal): Likewise.
 +      * process.c (sigchld_handler): Likewise.
 +      (create_process): Remove if 0 code.  Remove HPUX conditional when
 +      !defined (POSIX_SIGNALS), it cannot be true.
 +      * syssignal.h: Remove USG5_4 and USG conditionals when
 +      !POSIX_SIGNALS, they cannot be true.
 +
 +      * keyboard.c (Fset_input_interrupt_mode): Remove code depending on
 +      NO_SOCK_SIGIO, not used anymore.
 +
 +2010-03-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * m/vax.h (BSD_SYSTEM, BSD4_2): Remove conditionals, we only
 +      support vax on BSDs.
 +
 +      * m/ibmrs6000.h (ORDINARY_LINK): Move definition ...
 +      * s/aix4-2.h (ORDINARY_LINK): ... here.
 +
 +2010-03-21  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * Makefile.in (abs_builddir): Define.
 +      (bootstrap_exe): Use it.
 +      (VPATH): Use $(srcdir) instead of @srcdir@.
 +
 +2010-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * Makefile.in (bootstrap_exe): Use an absolute name.
 +
 +2010-03-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove support for old GNU/Linux using libc version 5.
 +      * m/alpha.h (LINUX_SBRK_BUG): Remove definition.
 +      * emacs.c (main): Remove code depending on LINUX_SBRK_BUG.
 +
 +      Consolidate redundant definitions in s/bsd-common.h.
 +      * s/bsd-common.h (BSD4_2, TABDLY, TAB3, HAVE_TERMIOS, NO_TERMIO)
 +      (LIBS_DEBUG, SYSV_SYSTEM_DIR, UNEXEC, NARROWPROTO, BSD_PGRPS)
 +      (LDAV_SYMBOL, KERNEL_FILE): Define (or undefine) here instead of
 +      doing it in all files that include this one.
 +      * s/gnu.h (BSD4_2, TABDLY, TAB3, HAVE_TERMIOS, NO_TERMIO)
 +      (LIBS_DEBUG, SYSV_SYSTEM_DIR, UNEXEC, NARROWPROTO, BSD_PGRPS)
 +      (LDAV_SYMBOL, KERNEL_FILE): Remove.
 +      * s/freebsd.h (BSD4_2, TABDLY, TAB3, HAVE_TERMIOS, NO_TERMIO)
 +      (LIBS_DEBUG, SYSV_SYSTEM_DIR, UNEXEC, NARROWPROTO, BSD_PGRPS)
 +      (LDAV_SYMBOL, KERNEL_FILE): Remove.
 +      * s/netbsd.h (BSD4_2, TABDLY, TAB3, HAVE_TERMIOS, NO_TERMIO)
 +      (LIBS_DEBUG, SYSV_SYSTEM_DIR, UNEXEC, NARROWPROTO, BSD_PGRPS)
 +      (LDAV_SYMBOL, KERNEL_FILE): Remove.
 +
 +      Consolidate redundant definitions.
 +      * s/usg5-4.h (sigsetmask, PTY_TTY_NAME_SPRINTF): Do not define,
 +      it's undefined in all files that include this one.
 +      (POSIX_SIGNALS): Define here instead of doing it in all files that
 +      include this one.
 +      * s/irix6-5.h (sigsetmask, PTY_TTY_NAME_SPRINTF): Do not undef.
 +      (POSIX_SIGNALS): Do not define.
 +      * s/sol2-6.h (sigsetmask, PTY_TTY_NAME_SPRINTF): Do not undef.
 +      (POSIX_SIGNALS): Do not define.
 +      * s/unixware.h (sigsetmask, PTY_TTY_NAME_SPRINTF): Do not undef.
 +      (POSIX_SIGNALS): Do not define.
 +
 +      Remove support for old UNIX System V systems.
 +      * s/unixware.h: Add the contents of s/usg-5-4-2.h.
 +      * s/usg-5-4-2.h: Remove.
 +
 +      Remove support for Solaris on PPC and for old versions.
 +      * s/sol2-6.h: Add the contents of s/sol-2.3.h, s/sol-2.4.h, s/sol-2.5.h.
 +      (LD_SWITCH_SYSTEM, USE_MMAP_FOR_BUFFERS): Remove #defines/#undef
 +      that cancel each other.
 +      * s/sol2-3.h:
 +      * s/sol2-4.h:
 +      * s/sol2-5.h: Remove.
 +      * m/ibmrs6000.h: Remove code for USG5_4, this file is only used on AIX.
 +      (NO_REMAP): Remove, unused.
 +      (UNEXEC): Move definition ...
 +      * s/aix4-2.h (UNEXEC): ... here.
 +
 +      * s/openbsd.h: Remove support for non-ELF and for systems that do
 +      not support shared libraries.
 +      * s/netbsd.h:
 +      * s/freebsd.h: Likewise.
 +
 +2010-03-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove non-working support for lynxos 3.0.
 +      * s/lynxos.h: Remove file.
 +
 +      * unexec.c (unexec, adjust_lnnoptrs): Do not depend on
 +      COFF_BSD_SYMBOLS, nothing defines it anymore.
 +
 +2010-03-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove obsolete uses of HAVE_SHM.
 +      * emacs.c (standard_args):
 +      (Fdump_emacs):
 +      (syms_of_emacs): Remove code depending on HAVE_SHM.
 +
 +      * alloc.c: Remove HAVE_SHM dependent definition.
 +
 +      * Makefile.in (RUN_TEMACS): Do not depend on HAVE_SHM.
 +
 +2010-03-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs.c (USAGE4): Hard-code bug address.
 +      (REPORT_EMACS_BUG_ADDRESS, REPORT_EMACS_BUG_PRETEST_ADDRESS): Remove.
 +      (bug_reporting_address): Remove.
 +      (main): Don't call bug_reporting_address.
 +
 +      * Makefile.in (XFT_LIBS, LIBXPM, LIBJPEG, LIBPNG, LIBTIFF, LIBGIF)
 +      (LIBGPM, LIBRESOLV): Set using autoconf rather than cpp.
 +
 +2010-03-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xfns.c (Fx_create_frame):
 +      * frame.c (Vdefault_frame_scroll_bars): Put non-GTK X scroll-bars
 +      on left.
 +
 +2010-03-13  Andreas Politz  <politza@fh-trier.de>  (tiny change)
  
        * editfns.c (Fformat): Account for string precision when computing
        field width (Bug#5710).
  
 +2010-03-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xfns.c (Fx_create_frame): Set default to Qright.
 +
 +      * frame.c (Vdefault_frame_scroll_bars): Set default to Qright for
 +      all window systems.
 +
 +2010-03-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      These changes remove termcap.c from the build on Posix platforms.
 +      * Makefile.in (termcapobj): Move termcap.o from here...
 +      (MSDOS_OBJ): ...to here.
 +      (termcapobj) [!LIBS_TERMCAP]: Remove specialized value, as it is
 +      now identical to when LIBS_TERMCAP is defined.
 +
 +      * term.c: Remove (ifdef'ed away) inclusion of termcap.h.
 +
 +      * cm.c: Remove (ifdef'ed away) inclusion of termcap.h.
 +
 +      * config.in: Regenerated.  (See top-level ChangeLog.)
 +
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
 +2010-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Cleanup setup of gl_state in various parts of the code.
 +      * syntax.h (SETUP_BUFFER_SYNTAX_TABLE): New macro.
 +      (SETUP_SYNTAX_TABLE, SETUP_SYNTAX_TABLE_FOR_OBJECT):
 +      * syntax.c (find_defun_start, Fchar_syntax, Fmatching_paren)
 +      (skip_chars):
 +      * regex.c (regex_compile): Use it.
 +      (re_compile_pattern): Don't set gl_state.current_syntax_table since
 +      it's now set in regex_compile when/if we need it.
 +
  2010-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        Make it possible to C-g in a tight bytecode loop again (bug#5680).
        (scroll_end_callback): Remove.
        (xg_create_scroll_bar): Add parameter end_callback, bind it to
        button-release-event.  Replace value-changed event with change-value,
 -      bug #5177,
 +      bug #5177.
        (xg_event_is_for_scrollbar): Only return true if button is less than 4,
        bug #5177.
  
  
  2009-12-12  Eli Zaretskii  <eliz@gnu.org>
  
 -      * dispextern.h (struct text_pos): Use EMACS_INT;
 +      * dispextern.h (struct text_pos): Use EMACS_INT.
        (struct glyph): Use EMACS_INT for charpos.
        (struct it): Use EMACS_INT for stop_charpos, end_charpos,
        region_beg_charpos, region_end_charpos,
        (store_symval_forwarding): Take into account the fact that Ints can
        now have more than one tag.
        * buffer.c (syms_of_buffer): Use LISP_INT_TAG.
 -      buffer_slot_type_mismatch):
 +      (buffer_slot_type_mismatch):
        * xfaces.c (face_attr_equal_p):
        * print.c (print_object):
        * alloc.c (mark_maybe_object, mark_object, survives_gc_p):
        * xterm.h: Rename x_non_menubar_window_to_frame to
        x_menubar_window_to_frame.
  
 -      * xterm.c: Remove declarations also in xterm.h
 +      * xterm.c: Remove declarations also in xterm.h.
        (XTmouse_position): Do not return valid positions
        for clicks in the menubar and the toolbar for Gtk+.
  
  2009-07-04  Eli Zaretskii  <eliz@gnu.org>
  
        Emulation of `getloadavg' on MS-Windows.
 -      * w32.c: Include float.h
 +      * w32.c: Include float.h.
        (g_b_init_get_native_system_info, g_b_init_get_system_times)
        (GetNativeSystemInfo_Proc, GetSystemTimes_Proc): Declare.
        (get_native_system_info, get_system_times): New functions.
        <after-change-functions>: Reflow docstrings.
  
  2008-08-04  Adrian Robert  <Adrian.B.Robert@gmail.com>
 -          Ken Raeburn  <raeburn@gnu.org>
 +            Ken Raeburn  <raeburn@gnu.org>
  
        Dock menu customization, based on a patch by Ken Raeburn, plus some
        other fixes.
        batch-compiling for bootstrap).
  
  2008-07-15  Chris Hall  <chris@web.workinglinux.com>  (tiny change)
 -          YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +            YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
 -      (make_initial_frame): Call init_frame_faces(f) in CANNOT_DUMP case --
 -      fix crash due to different init order.
 +      * frame.c (make_initial_frame): Call init_frame_faces(f) in
 +      CANNOT_DUMP case -- fix crash due to different init order.
  
  2008-07-15  Adrian Robert  <Adrian.B.Robert@gmail.com>
  
        * m/macppc.h:
        * m/alpha.h: Use GNU_LINUX instead of LINUX.  Reorganize conditionals.
  
 -      * m/ibms390x.h (XINT, XUINT): Don't define, same as the default
 +      * m/ibms390x.h (XINT, XUINT): Don't define, same as the default.
        (SPECIAL_EMACS_INT):
        * m/ia64.h (SPECIAL_EMACS_INT):
        * m/amdx86-64.h (SPECIAL_EMACS_INT):
  2008-07-10  Dan Nicolaescu  <dann@ics.uci.edu>
  
        * fileio.c:
 -      * sysdep.c
 +      * sysdep.c:
        * systty.h:
        * m/ibmrs6000.h:
        * m/iris4d.h:
        (USG_SHARED_LIBRARIES): Remove duplicate definition.
  
  2008-06-26  Juanma Barranquero  <lekktu@gmail.com>
 -          Eli Zaretskii  <eliz@gnu.org>
 +            Eli Zaretskii  <eliz@gnu.org>
  
        * makefile.w32-in (LOCAL_FLAGS):
        Don't include WINDOWSNT, DOS_NT and _UCHAR_T.
        the property of LFACE_FONT of LFACE (if any).
  
  2008-06-21  Seiji Zenitani  <zenitani@mac.com>
 -          Ryo Yoshitake  <ryo@shiftmode.net>
 +            Ryo Yoshitake  <ryo@shiftmode.net>
  
        * xterm.c (x_set_frame_alpha): Add x_catch_errors for bug#437.
  
        definitions from xmenu.c.  Suggested by Adrian Robert.
  
        * xmenu.c: Remove platform-independent menu definitions.
 -      (menu_items menu_items_inuse, menu_items_allocated)
 +      (menu_items, menu_items_inuse, menu_items_allocated)
        (menu_items_used, menu_items_n_panes)
        (menu_items_submenu_depth): Move to keyboard.h.
        (init_menu_items, finish_menu_items, unuse_menu_items)
        * xterm.c (x_set_frame_alpha): Move declarations before statements.
  
  2008-05-21  Seiji Zenitani  <zenitani@mac.com>
 -          Ryo Yoshitake  <ryo@shiftmode.net>
 +            Ryo Yoshitake  <ryo@shiftmode.net>
  
        * frame.c (Qalpha): Add a new frame parameter `alpha'.
        (Vframe_alpha_lower_limit): New variable.
        Report an error when image size is invalid.
        Read two bytes at a time when raw images have max_color_idx above 255.
  
 -2008-04-05  Eli Zaretskii  <eliz@gnu.org>
 -
 -      * w32.c (readdir): If FindFirstFile/FindNextFile return in
 -      cFileName a file name that includes `?' characters, use the 8+3
 -      alias in cAlternateFileName instead.
 -
  2008-04-05  Kenichi Handa  <handa@ni.aist.go.jp>
  
        * ccl.c (ccl_driver): If ccl->quit_silently is nonzero, don't
  
        * search.c (search_buffer): Give up BM search on case-fold-search
        if one of a target character has a case-equivalence of different
 -      byte length even if that target charcter is an ASCII.
 +      byte length even if that target character is an ASCII.
        (simple_search): Fix calculation of byte length of matched text.
        (boyer_moore): Fix handling of case-equivalent multibyte characters.
  
        * charset.c (charset_ordered_list_tick): New variable.
        (Fdefine_charset_internal): Increment charset_ordered_list_tick.
        (Funify_charset): New optional arg DEUNIFY.  If it is non-nil,
 -      deunify intead of unify a charset.
 +      deunify instead of unify a charset.
        (string_xstring_p): Add `const' to local variables.
        (find_charsets_in_text): Add `const' to arguments and local variables.
        (encode_char): Adjust for the change of Funify_charset.  Fix
@@@ -28605,10 -22370,10 +28628,10 @@@ See ChangeLog.10 for earlier changes
  
  ;; Local Variables:
  ;; coding: utf-8
 -;; add-log-time-zone-rule: t
  ;; End:
  
 -    Copyright (C) 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
 +  Copyright (C) 2007, 2008, 2009, 2010
 +    Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
    You should have received a copy of the GNU General Public License
    along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
  
 -;; arch-tag: dfb6ad96-1550-4905-9e53-d2059ee84c40
diff --combined src/config.in
index 5b042ce8effc4dd88f3480c877f76146e35578b8,4667c0feb288e5bb1c01e9353d96b533a43d6e8b..1846bfb9e7b7d87eb58908e2b7325bb578e3675b
@@@ -27,15 -27,12 +27,15 @@@ along with GNU Emacs.  If not, see <htt
  #define EMACS_CONFIG_H
  
  
 -/* Generate dependencies with gcc. */
 -#undef AUTO_DEPEND
 +/* Define if building universal (internal helper macro) */
 +#undef AC_APPLE_UNIVERSAL_BUILD
  
  /* Define to 1 if the mktime function is broken. */
  #undef BROKEN_MKTIME
  
 +/* Define if Emacs cannot be dumped on your system. */
 +#undef CANNOT_DUMP
 +
  /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
     systems. This function is required for `alloca.c' support on those systems.
     */
  /* Define to 1 if using `getloadavg.c'. */
  #undef C_GETLOADAVG
  
 -/* Define C_SWITCH_X_SITE to contain any special flags your compiler may need
 -   to deal with X Windows. For instance, if you've defined HAVE_X_WINDOWS
 -   above and your X include files aren't in a place that your compiler can
 -   find on its own, you might want to add "-I/..." or something similar. */
 -#undef C_SWITCH_X_SITE
 -
  /* Define to 1 for DGUX with <sys/dg_sys_info.h>. */
  #undef DGUX
  
  /* Define to 1 if ALSA is available. */
  #undef HAVE_ALSA
  
 -/* Define to 1 if you have the `bcmp' function. */
 -#undef HAVE_BCMP
 -
 -/* Define to 1 if you have the `bcopy' function. */
 -#undef HAVE_BCOPY
 -
 -/* Define to 1 if you have the `bzero' function. */
 -#undef HAVE_BZERO
 -
  /* Define to 1 if you have the `cbrt' function. */
  #undef HAVE_CBRT
  
  /* Define to 1 if you have the <com_err.h> header file. */
  #undef HAVE_COM_ERR_H
  
 -/* Define to 1 if you have /usr/lib/crti.o. */
 -#undef HAVE_CRTIN
 +/* Define to 1 if you have the `copysign' function. */
 +#undef HAVE_COPYSIGN
  
  /* Define to 1 if using D-Bus. */
  #undef HAVE_DBUS
  /* Define to 1 if you have the `difftime' function. */
  #undef HAVE_DIFFTIME
  
 +/* Define to 1 if you have the <dirent.h> header file. */
 +#undef HAVE_DIRENT_H
 +
  /* Define to 1 if you have the `dup2' function. */
  #undef HAVE_DUP2
  
  /* Define to 1 if using GConf. */
  #undef HAVE_GCONF
  
 -/* Define to 1 if you have the `gdk_display_open' function. */
 -#undef HAVE_GDK_DISPLAY_OPEN
 -
  /* Define to 1 if you have the `getaddrinfo' function. */
  #undef HAVE_GETADDRINFO
  
  /* Define to 1 if you have the `get_current_dir_name' function. */
  #undef HAVE_GET_CURRENT_DIR_NAME
  
 -/* Define to 1 if you have a gif library (default -lgif; otherwise specify
 -   with LIBGIF). */
 +/* Define to 1 if you have a gif (or ungif) library. */
  #undef HAVE_GIF
  
 +/* Define if using GnuTLS. */
 +#undef HAVE_GNUTLS
 +
  /* Define to 1 if you have the gpm library (-lgpm). */
  #undef HAVE_GPM
  
  /* Define to 1 if you have the `grantpt' function. */
  #undef HAVE_GRANTPT
  
 +/* Define to 1 if you have the `gtk_adjustment_get_page_size' function. */
 +#undef HAVE_GTK_ADJUSTMENT_GET_PAGE_SIZE
 +
  /* Define to 1 if you have GTK and pthread (-lpthread). */
  #undef HAVE_GTK_AND_PTHREAD
  
 -/* Define to 1 if GTK has both file selection and chooser dialog. */
 -#undef HAVE_GTK_FILE_BOTH
 -
 -/* Define to 1 if you have the `gtk_file_chooser_dialog_new' function. */
 -#undef HAVE_GTK_FILE_CHOOSER_DIALOG_NEW
 +/* Define to 1 if you have the `gtk_dialog_get_action_area' function. */
 +#undef HAVE_GTK_DIALOG_GET_ACTION_AREA
  
  /* Define to 1 if you have the `gtk_file_selection_new' function. */
  #undef HAVE_GTK_FILE_SELECTION_NEW
  /* Define to 1 if you have the `gtk_main' function. */
  #undef HAVE_GTK_MAIN
  
 -/* Define to 1 if GTK can handle more than one display. */
 -#undef HAVE_GTK_MULTIDISPLAY
 +/* Define to 1 if you have the `gtk_orientable_set_orientation' function. */
 +#undef HAVE_GTK_ORIENTABLE_SET_ORIENTATION
 +
 +/* Define to 1 if you have the `gtk_widget_get_mapped' function. */
 +#undef HAVE_GTK_WIDGET_GET_MAPPED
 +
 +/* Define to 1 if you have the `gtk_widget_get_sensitive' function. */
 +#undef HAVE_GTK_WIDGET_GET_SENSITIVE
 +
 +/* Define to 1 if you have the `gtk_widget_get_window' function. */
 +#undef HAVE_GTK_WIDGET_GET_WINDOW
 +
 +/* Define to 1 if you have the `gtk_widget_set_has_window' function. */
 +#undef HAVE_GTK_WIDGET_SET_HAS_WINDOW
  
  /* Define to 1 if netdb.h declares h_errno. */
  #undef HAVE_H_ERRNO
  
 -/* Define to 1 if you have the `index' function. */
 -#undef HAVE_INDEX
 +/* Define to 1 if using imagemagick. */
 +#undef HAVE_IMAGEMAGICK
  
  /* Define to 1 if you have inet sockets. */
  #undef HAVE_INET_SOCKETS
  /* Define to 1 if you have the <inttypes.h> header file. */
  #undef HAVE_INTTYPES_H
  
 +/* Define to 1 if you have the `isnan' function. */
 +#undef HAVE_ISNAN
 +
  /* Define to 1 if you have the jpeg library (-ljpeg). */
  #undef HAVE_JPEG
  
  /* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
  #undef HAVE_LANGINFO_CODESET
  
 -/* Define to 1 if the directory /usr/lib64 exists. */
 -#undef HAVE_LIB64_DIR
 -
  /* Define to 1 if you have the `com_err' library (-lcom_err). */
  #undef HAVE_LIBCOM_ERR
  
  /* Define to 1 if you have the resolv library (-lresolv). */
  #undef HAVE_LIBRESOLV
  
 +/* Define to 1 if using SELinux. */
 +#undef HAVE_LIBSELINUX
 +
  /* Define to 1 if you have the `Xext' library (-lXext). */
  #undef HAVE_LIBXEXT
  
 +/* Define to 1 if you have the libxml library (-lxml2). */
 +#undef HAVE_LIBXML2
 +
  /* Define to 1 if you have the `Xmu' library (-lXmu). */
  #undef HAVE_LIBXMU
  
 -/* Define to 1 if you have the Xp library (-lXp). */
 -#undef HAVE_LIBXP
 -
  /* Define to 1 if you have the <limits.h> header file. */
  #undef HAVE_LIMITS_H
  
  /* Define to 1 if you have the <mach/mach.h> header file. */
  #undef HAVE_MACH_MACH_H
  
 +/* Define to 1 if you have the `MagickExportImagePixels' function. */
 +#undef HAVE_MAGICKEXPORTIMAGEPIXELS
 +
  /* Define to 1 if you have the <maillock.h> header file. */
  #undef HAVE_MAILLOCK_H
  
  /* Define to 1 if you have a working `mmap' system call. */
  #undef HAVE_MMAP
  
 -/* Define to 1 if you have Motif 2.1 or newer. */
 -#undef HAVE_MOTIF_2_1
 +/* Define if you have mouse support. */
 +#undef HAVE_MOUSE
  
  /* Define to 1 if you have the `mremap' function. */
  #undef HAVE_MREMAP
  /* Define to 1 if res_init is available. */
  #undef HAVE_RES_INIT
  
 -/* Define to 1 if you have the `rindex' function. */
 -#undef HAVE_RINDEX
 -
  /* Define to 1 if you have the `rint' function. */
  #undef HAVE_RINT
  
  /* Define to 1 if the system has the type `size_t'. */
  #undef HAVE_SIZE_T
  
 +/* Define to 1 if you have sound support. */
 +#undef HAVE_SOUND
 +
  /* Define to 1 if you have the <soundcard.h> header file. */
  #undef HAVE_SOUNDCARD_H
  
  /* Define to 1 if you have the <stdlib.h> header file. */
  #undef HAVE_STDLIB_H
  
 +/* Define to 1 if you have the `strchr' function. */
 +#undef HAVE_STRCHR
 +
  /* Define to 1 if you have the `strerror' function. */
  #undef HAVE_STRERROR
  
  /* Define to 1 if you have the <string.h> header file. */
  #undef HAVE_STRING_H
  
 +/* Define to 1 if you have the `strrchr' function. */
 +#undef HAVE_STRRCHR
 +
  /* Define to 1 if you have the `strsignal' function. */
  #undef HAVE_STRSIGNAL
  
  /* Define to 1 if you have the <sys/_mbstate_t.h> header file. */
  #undef HAVE_SYS__MBSTATE_T_H
  
 -/* Define to 1 if you have the <termcap.h> header file. */
 -#undef HAVE_TERMCAP_H
 -
  /* Define to 1 if you have the <termios.h> header file. */
  #undef HAVE_TERMIOS_H
  
  /* Define to 1 if you have the <unistd.h> header file. */
  #undef HAVE_UNISTD_H
  
 +/* Define to 1 if you have the <util.h> header file. */
 +#undef HAVE_UTIL_H
 +
  /* Define to 1 if you have the `utimes' function. */
  #undef HAVE_UTIMES
  
  /* Define to 1 if you have the <vfork.h> header file. */
  #undef HAVE_VFORK_H
  
 +/* Define if you have a window system. */
 +#undef HAVE_WINDOW_SYSTEM
 +
  /* Define to 1 if `fork' works. */
  #undef HAVE_WORKING_FORK
  
  /* Define to 1 if you have the X11R6 or newer version of Xlib. */
  #undef HAVE_X11R6
  
 +/* Define if you have usable X11R6-style XIM support. */
 +#undef HAVE_X11R6_XIM
 +
  /* Define to 1 if you have the X11R6 or newer version of Xt. */
  #undef HAVE_X11XTR6
  
  /* Define to 1 if you have the `XSetWMProtocols' function. */
  #undef HAVE_XSETWMPROTOCOLS
  
 +/* Define if you have usable i18n support. */
 +#undef HAVE_X_I18N
 +
  /* Define to 1 if you have the SM library (-lSM). */
  #undef HAVE_X_SM
  
  /* Define to 1 if you want to use the X window system. */
  #undef HAVE_X_WINDOWS
  
 +/* Define to 1 if you have the `__executable_start' function. */
 +#undef HAVE___EXECUTABLE_START
 +
  /* Define to 1 if you have the `__fpending' function. */
  #undef HAVE___FPENDING
  
  /* Define to use Kerberos 5 instead of Kerberos 4. */
  #undef KERBEROS5
  
 -/* Define LD_SWITCH_X_SITE to contain any special flags your loader may need
 -   to deal with X Windows. For instance, if you've defined HAVE_X_WINDOWS
 -   above and your X libraries aren't in a place that your loader can find on
 -   its own, you might want to add "-L/..." or something similar. */
 -#undef LD_SWITCH_X_SITE
 +/* Define to 1 if localtime caches TZ. */
 +#undef LOCALTIME_CACHE
  
 -/* Define LD_SWITCH_X_SITE_AUX with an -R option in case it's needed (for
 -   Solaris, for example). */
 -#undef LD_SWITCH_X_SITE_AUX
 +/* String giving fallback POP mail host. */
 +#undef MAILHOST
  
 -/* Compiler option to link with the gif library (if not -lgif). */
 -#undef LIBGIF
 +/* Define to unlink, rather than empty, mail spool after reading. */
 +#undef MAIL_UNLINK_SPOOL
  
 -/* Define to 1 if localtime caches TZ. */
 -#undef LOCALTIME_CACHE
 +/* Define if the mailer uses flock to interlock the mail spool. */
 +#undef MAIL_USE_FLOCK
 +
 +/* Define if the mailer uses lockf to interlock the mail spool. */
 +#undef MAIL_USE_LOCKF
 +
 +/* Define to support MMDF mailboxes in movemail. */
 +#undef MAIL_USE_MMDF
  
  /* Define to support POP mail retrieval. */
  #undef MAIL_USE_POP
  /* Define to 1 if you are using NS windowing under GNUstep. */
  #undef NS_IMPL_GNUSTEP
  
 +/* Define if the C compiler is the linker. */
 +#undef ORDINARY_LINK
 +
  /* Define to the address where bug reports for this package should be sent. */
  #undef PACKAGE_BUGREPORT
  
  /* Process async input synchronously. */
  #undef SYNC_INPUT
  
 +/* Define to use system malloc. */
 +#undef SYSTEM_MALLOC
 +
 +/* Define to 1 if you use terminfo instead of termcap. */
 +#undef TERMINFO
 +
  /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
  #undef TIME_WITH_SYS_TIME
  
     <sys/cpustats.h>. */
  #undef UMAX4_3
  
 -/* Define to the unexec source file name. */
 -#undef UNEXEC_SRC
 -
  /* Define to 1 if using GTK. */
  #undef USE_GTK
  
 +/* Define this to use a lisp union for the Lisp_Object data type. */
 +#undef USE_LISP_UNION_TYPE
 +
  /* Define to 1 if using the Lucid X toolkit. */
  #undef USE_LUCID
  
 +/* Define to use mmap to allocate buffer text. */
 +#undef USE_MMAP_FOR_BUFFERS
 +
  /* Define to 1 if using the Motif X toolkit. */
  #undef USE_MOTIF
  
  /* Define to 1 if using an X toolkit. */
  #undef USE_X_TOOLKIT
  
 +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
 +   significant byte first (like Motorola and SPARC, unlike Intel). */
 +#if defined AC_APPLE_UNIVERSAL_BUILD
 +# if defined __BIG_ENDIAN__
 +#  define WORDS_BIGENDIAN 1
 +# endif
 +#else
 +# ifndef WORDS_BIGENDIAN
 +#  undef WORDS_BIGENDIAN
 +# endif
 +#endif
 +
  /* Define this to check for malloc buffer overrun. */
  #undef XMALLOC_OVERRUN_CHECK
  
  /* Define to `int' if <sys/types.h> does not define. */
  #undef pid_t
  
- /* Define to `unsigned int' if <sys/types.h> does not define. */
- #undef size_t
  /* Define to any substitute for sys_siglist. */
  #undef sys_siglist
  
  #undef volatile
  
  
 -/* If we're using X11/Carbon/GNUstep, define some consequences.  */
 -#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
 -#define HAVE_WINDOW_SYSTEM
 -#define HAVE_MOUSE
 -#endif
 -
  /* Define AMPERSAND_FULL_NAME if you use the convention
     that & in the full name stands for the login id.  */
  /* Turned on June 1996 supposing nobody will mind it.  */
  #define AMPERSAND_FULL_NAME
  
 -/* Define HAVE_SOUND if we have sound support.  We know it works
 -   and compiles only on the specified platforms.   For others,
 -   it probably doesn't make sense to try.  */
 -
 -#if defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
 -#ifdef HAVE_MACHINE_SOUNDCARD_H
 -#define HAVE_SOUND 1
 -#endif
 -#ifdef HAVE_SYS_SOUNDCARD_H
 -#define HAVE_SOUND 1
 -#endif
 -#ifdef HAVE_SOUNDCARD_H
 -#define HAVE_SOUND 1
 -#endif
 -#ifdef HAVE_ALSA
 -#define HAVE_SOUND 1
 -#endif
 -#endif /* __FreeBSD__ || __NetBSD__ || __linux__  */
 -
 -/* If using GNU, then support inline function declarations. */
 +/* If using GNU, then support inline function declarations.  */
  /* Don't try to switch on inline handling as detected by AC_C_INLINE
     generally, because even if non-gcc compilers accept `inline', they
     may reject `extern inline'.  */
  #include config_opsysfile
  #include config_machfile
  
 -/* Set up some defines, C and LD flags for NeXTstep interface on GNUstep.
 -  (There is probably a better place to do this, but right now the Cocoa
 -   side does this in s/darwin.h and we cannot
 -   parallel this exactly since GNUstep is multi-OS. */
 -#ifdef HAVE_NS
 -# ifdef NS_IMPL_GNUSTEP
 -/* See also .m.o rule in Makefile.in */
 -/* FIXME: are all these flags really needed?  Document here why.  */
 -#  define C_SWITCH_X_SYSTEM -D_REENTRANT -fPIC -fno-strict-aliasing
  /* GNUstep needs a bit more pure memory.  Of the existing knobs,
 -SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems.  */
 +   SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems.
 +  (There is probably a better place to do this, but right now the
 +   Cocoa side does this in s/darwin.h and we cannot parallel this
 +   exactly since GNUstep is multi-OS.  */
 +#if defined HAVE_NS && defined NS_IMPL_GNUSTEP
  #  define SYSTEM_PURESIZE_EXTRA 30000
 -# endif /* NS_IMPL_GNUSTEP */
 -#endif /* HAVE_NS */
 +#endif
  
  /* SIGTYPE is the macro we actually use.  */
  #ifndef SIGTYPE
  
  #define my_strftime nstrftime /* for strftime.c */
  
 -/* The rest of the code currently tests the CPP symbol BSTRING.
 -   Override any claims made by the system-description files.
 -   Note that on some SCO version it is possible to have bcopy and not bcmp.  */
 -#undef BSTRING
 -#if defined (HAVE_BCOPY) && defined (HAVE_BCMP)
 -#define BSTRING
 -#endif
 -
 -/* Some of the files of Emacs which are intended for use with other
 -   programs assume that if you have a config.h file, you must declare
 -   the type of getenv.
 -
 -   This declaration shouldn't appear when alloca.s or Makefile.in
 -   includes config.h.  */
 -#ifndef NOT_C_CODE
 -extern char *getenv ();
 -#endif
 -
  /* These default definitions are good for almost all machines.
     The exceptions override them in m/MACHINE.h.  */
  
  #endif
  #endif
  
 -/* Define if the compiler supports function prototypes.  It may do so
 -   but not define __STDC__ (e.g. DEC C by default) or may define it as
 -   zero.  */
 +/* Define if the compiler supports function prototypes.  It may do so but
 +   not define __STDC__ (e.g. DEC C by default) or may define it as zero.  */
  #undef PROTOTYPES
 -/* For mktime.c:  */
 -#ifndef __P
 -# if defined PROTOTYPES
 -#  define __P(args) args
 -# else
 -#  define __P(args) ()
 -# endif  /* GCC.  */
 -#endif /* __P */
 -
 -/* Don't include "string.h" or <stdlib.h> in non-C code.  */
 -#ifndef NOT_C_CODE
 -#ifdef HAVE_STRING_H
 -#include "string.h"
 -#endif
 -#ifdef HAVE_STRINGS_H
 -#include "strings.h"  /* May be needed for bcopy & al. */
 -#endif
 -#ifdef HAVE_STDLIB_H
 +
 +#include <string.h>
  #include <stdlib.h>
 +
 +#ifdef HAVE_ALLOCA_H
 +# include <alloca.h>
 +#elif defined __GNUC__
 +# define alloca __builtin_alloca
 +#elif defined _AIX
 +# define alloca __alloca
 +#else
 +# include <stddef.h>
 +# ifdef  __cplusplus
 +extern "C"
 +# endif
 +void *alloca (size_t);
  #endif
 -#ifndef __GNUC__
 -# ifdef HAVE_ALLOCA_H
 -#  include <alloca.h>
 -# else /* AIX files deal with #pragma.  */
 -#  ifndef alloca /* predefined by HP cc +Olibcalls */
 -char *alloca ();
 -#  endif
 -# endif /* HAVE_ALLOCA_H */
 -#endif /* __GNUC__ */
 +
  #ifndef HAVE_SIZE_T
  typedef unsigned size_t;
  #endif
 -#endif /* NOT_C_CODE */
  
 -/* Define HAVE_X_I18N if we have usable i18n support.  */
 -
 -#ifdef HAVE_X11R6
 -#define HAVE_X_I18N
 -#elif !defined X11R5_INHIBIT_I18N
 -#define HAVE_X_I18N
 +#ifndef HAVE_STRCHR
 +#define strchr(a, b) index (a, b)
  #endif
  
 -/* Define HAVE_X11R6_XIM if we have usable X11R6-style XIM support.  */
 -
 -#if defined HAVE_X11R6 && !defined INHIBIT_X11R6_XIM
 -#define HAVE_X11R6_XIM
 +#ifndef HAVE_STRRCHR
 +#define strrchr(a, b) rindex (a, b)
  #endif
  
  #if defined __GNUC__ && (__GNUC__ > 2 \
  #define NO_RETURN     /* nothing */
  #endif
  
 +#if __GNUC__ >= 3  /* On GCC 3.0 we might get a warning.  */
 +#define NO_INLINE __attribute__((noinline))
 +#else
 +#define NO_INLINE
 +#endif
 +
 +/* Some versions of GNU/Linux define noinline in their headers.  */
 +#ifdef noinline
 +#undef noinline
 +#endif
 +
  /* These won't be used automatically yet.  We also need to know, at least,
     that the stack is continuous.  */
  #ifdef __GNUC__
  #  ifndef GC_SETJMP_WORKS
 -  /* GC_SETJMP_WORKS is nearly always appropriate for GCC --
 -     see NON_SAVING_SETJMP in the target descriptions.  */
 -  /* Exceptions (see NON_SAVING_SETJMP in target description) are
 -     SCO5 non-ELF (but Emacs specifies ELF) and SVR3 on x86.
 -     Fixme: Deal with SVR3.  */
 +  /* GC_SETJMP_WORKS is nearly always appropriate for GCC.  */
  #    define GC_SETJMP_WORKS 1
  #  endif
  #  ifndef GC_LISP_OBJECT_ALIGNMENT
  #  endif
  #endif
  
 -#ifndef HAVE_BCOPY
 -#define bcopy(a,b,s) memcpy (b,a,s)
 -#endif
 -#ifndef HAVE_BZERO
 -#define bzero(a,s) memset (a,0,s)
 -#endif
 -#ifndef HAVE_BCMP
 -#define BCMP memcmp
 -#endif
 -
  #endif /* EMACS_CONFIG_H */
  
  /*
diff --combined src/image.c
index 083d0720c157a21a14ceec9f6a38f9283db50bf4,0fa0a0cd064b6277014cb7b1be7ae1b037ac4b2f..828c2d319befecbdb9d14a836c7364aaeff7ddf3
@@@ -126,20 -126,17 +126,20 @@@ typedef struct ns_bitmap_record Bitmap_
  
  Lisp_Object Vx_bitmap_file_path;
  
 +/* The symbol `postscript' identifying images of this type.  */
 +
 +Lisp_Object Qpostscript;
  
 -static void x_disable_image P_ ((struct frame *, struct image *));
 -static void x_edge_detection P_ ((struct frame *, struct image *, Lisp_Object,
 -                                Lisp_Object));
 +static void x_disable_image (struct frame *, struct image *);
 +static void x_edge_detection (struct frame *, struct image *, Lisp_Object,
 +                              Lisp_Object);
  
 -static void init_color_table P_ ((void));
 -static unsigned long lookup_rgb_color P_ ((struct frame *f, int r, int g, int b));
 +static void init_color_table (void);
 +static unsigned long lookup_rgb_color (struct frame *f, int r, int g, int b);
  #ifdef COLOR_TABLE_SUPPORT
 -static void free_color_table P_ ((void));
 -static unsigned long *colors_in_color_table P_ ((int *n));
 -static unsigned long lookup_pixel_color P_ ((struct frame *f, unsigned long p));
 +static void free_color_table (void);
 +static unsigned long *colors_in_color_table (int *n);
 +static unsigned long lookup_pixel_color (struct frame *f, unsigned long p);
  #endif
  
  /* Code to deal with bitmaps.  Bitmaps are referenced by their bitmap
@@@ -160,7 -157,7 +160,7 @@@ XGetImage (Display *display, Pixmap pix
             unsigned long plane_mask, int format)
  {
    /* TODO: not sure what this function is supposed to do.. */
 -  ns_retain_object(pixmap);
 +  ns_retain_object (pixmap);
    return pixmap;
  }
  
  unsigned long
  XGetPixel (XImagePtr ximage, int x, int y)
  {
 -  return ns_get_pixel(ximage, x, y);
 +  return ns_get_pixel (ximage, x, y);
  }
  
  /* use with imgs created by ns_image_for_XPM; alpha set to 1;
  void
  XPutPixel (XImagePtr ximage, int x, int y, unsigned long pixel)
  {
 -  ns_put_pixel(ximage, x, y, pixel);
 +  ns_put_pixel (ximage, x, y, pixel);
  }
  #endif /* HAVE_NS */
  
  /* Functions to access the contents of a bitmap, given an id.  */
  
  int
 -x_bitmap_height (f, id)
 -     FRAME_PTR f;
 -     int id;
 +x_bitmap_height (FRAME_PTR f, int id)
  {
    return FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].height;
  }
  
  int
 -x_bitmap_width (f, id)
 -     FRAME_PTR f;
 -     int id;
 +x_bitmap_width (FRAME_PTR f, int id)
  {
    return FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].width;
  }
  
  #if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI)
  int
 -x_bitmap_pixmap (f, id)
 -     FRAME_PTR f;
 -     int id;
 +x_bitmap_pixmap (FRAME_PTR f, int id)
  {
    return (int) FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].pixmap;
  }
  
  #ifdef HAVE_X_WINDOWS
  int
 -x_bitmap_mask (f, id)
 -     FRAME_PTR f;
 -     int id;
 +x_bitmap_mask (FRAME_PTR f, int id)
  {
    return FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].mask;
  }
  /* Allocate a new bitmap record.  Returns index of new record.  */
  
  static int
 -x_allocate_bitmap_record (f)
 -     FRAME_PTR f;
 +x_allocate_bitmap_record (FRAME_PTR f)
  {
    Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
    int i;
  /* Add one reference to the reference count of the bitmap with id ID.  */
  
  void
 -x_reference_bitmap (f, id)
 -     FRAME_PTR f;
 -     int id;
 +x_reference_bitmap (FRAME_PTR f, int id)
  {
    ++FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].refcount;
  }
  /* Create a bitmap for frame F from a HEIGHT x WIDTH array of bits at BITS.  */
  
  int
 -x_create_bitmap_from_data (f, bits, width, height)
 -     struct frame *f;
 -     char *bits;
 -     unsigned int width, height;
 +x_create_bitmap_from_data (struct frame *f, char *bits, unsigned int width, unsigned int height)
  {
    Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
    int id;
  #endif /* HAVE_NTGUI */
  
  #ifdef HAVE_NS
 -  void *bitmap = ns_image_from_XBM(bits, width, height);
 +  void *bitmap = ns_image_from_XBM (bits, width, height);
    if (!bitmap)
        return -1;
  #endif
  /* Create bitmap from file FILE for frame F.  */
  
  int
 -x_create_bitmap_from_file (f, file)
 -     struct frame *f;
 -     Lisp_Object file;
 +x_create_bitmap_from_file (struct frame *f, Lisp_Object file)
  {
    Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
  
  
  #ifdef HAVE_NS
    int id;
 -  void *bitmap = ns_image_from_file(file);
 +  void *bitmap = ns_image_from_file (file);
  
    if (!bitmap)
        return -1;
    dpyinfo->bitmaps[id - 1].refcount = 1;
    dpyinfo->bitmaps[id - 1].file = (char *) xmalloc (SBYTES (file) + 1);
    dpyinfo->bitmaps[id - 1].depth = 1;
 -  dpyinfo->bitmaps[id - 1].height = ns_image_width(bitmap);
 -  dpyinfo->bitmaps[id - 1].width = ns_image_height(bitmap);
 +  dpyinfo->bitmaps[id - 1].height = ns_image_width (bitmap);
 +  dpyinfo->bitmaps[id - 1].width = ns_image_height (bitmap);
    strcpy (dpyinfo->bitmaps[id - 1].file, SDATA (file));
    return id;
  #endif
  /* Free bitmap B.  */
  
  static void
 -free_bitmap_record (dpyinfo, bm)
 -     Display_Info *dpyinfo;
 -     Bitmap_Record *bm;
 +free_bitmap_record (Display_Info *dpyinfo, Bitmap_Record *bm)
  {
  #ifdef HAVE_X_WINDOWS
    XFreePixmap (dpyinfo->display, bm->pixmap);
  #endif /* HAVE_NTGUI */
  
  #ifdef HAVE_NS
 -  ns_release_object(bm->img);
 +  ns_release_object (bm->img);
  #endif
  
    if (bm->file)
  /* Remove reference to bitmap with id number ID.  */
  
  void
 -x_destroy_bitmap (f, id)
 -     FRAME_PTR f;
 -     int id;
 +x_destroy_bitmap (FRAME_PTR f, int id)
  {
    Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
  
  /* Free all the bitmaps for the display specified by DPYINFO.  */
  
  void
 -x_destroy_all_bitmaps (dpyinfo)
 -     Display_Info *dpyinfo;
 +x_destroy_all_bitmaps (Display_Info *dpyinfo)
  {
    int i;
    Bitmap_Record *bm = dpyinfo->bitmaps;
  /* Useful functions defined in the section
     `Image type independent image structures' below. */
  
 -static unsigned long four_corners_best P_ ((XImagePtr ximg,
 -                                          int *corners,
 -                                          unsigned long width,
 -                                          unsigned long height));
 +static unsigned long four_corners_best (XImagePtr ximg,
 +                                        int *corners,
 +                                        unsigned long width,
 +                                        unsigned long height);
  
 -static int x_create_x_image_and_pixmap P_ ((struct frame *f, int width, int height,
 -                                          int depth, XImagePtr *ximg,
 -                                          Pixmap *pixmap));
 +static int x_create_x_image_and_pixmap (struct frame *f, int width, int height,
 +                                        int depth, XImagePtr *ximg,
 +                                        Pixmap *pixmap);
  
 -static void x_destroy_x_image P_ ((XImagePtr ximg));
 +static void x_destroy_x_image (XImagePtr ximg);
  
  
  /* Create a mask of a bitmap. Note is this not a perfect mask.
     It's nicer with some borders in this context */
  
  int
 -x_create_bitmap_mask (f, id)
 -     struct frame *f;
 -     int id;
 +x_create_bitmap_mask (struct frame *f, int id)
  {
    Pixmap pixmap, mask;
    XImagePtr ximg, mask_img;
@@@ -567,6 -587,10 +567,6 @@@ static struct image_type *image_types
  
  Lisp_Object Vimage_types;
  
 -/* An alist of image types and libraries that implement the type.  */
 -
 -Lisp_Object Vimage_library_alist;
 -
  /* Cache for delayed-loading image types.  */
  
  static Lisp_Object Vimage_type_cache;
@@@ -577,9 -601,12 +577,9 @@@ Lisp_Object Qxbm
  
  /* Keywords.  */
  
 -extern Lisp_Object QCwidth, QCheight, QCforeground, QCbackground, QCfile;
 -extern Lisp_Object QCdata, QCtype;
 -extern Lisp_Object Qcenter;
 -Lisp_Object QCascent, QCmargin, QCrelief, Qcount;
 +Lisp_Object QCascent, QCmargin, QCrelief, Qcount, Qextension_data;
  Lisp_Object QCconversion, QCcolor_symbols, QCheuristic_mask;
 -Lisp_Object QCindex, QCmatrix, QCcolor_adjustment, QCmask;
 +Lisp_Object QCindex, QCmatrix, QCcolor_adjustment, QCmask, QCgeometry, QCcrop, QCrotation;
  
  /* Other symbols.  */
  
@@@ -592,13 -619,13 +592,13 @@@ Lisp_Object Vimage_cache_eviction_delay
  
  /* Function prototypes.  */
  
 -static Lisp_Object define_image_type P_ ((struct image_type *type, int loaded));
 -static struct image_type *lookup_image_type P_ ((Lisp_Object symbol));
 -static void image_error P_ ((char *format, Lisp_Object, Lisp_Object));
 -static void x_laplace P_ ((struct frame *, struct image *));
 -static void x_emboss P_ ((struct frame *, struct image *));
 -static int x_build_heuristic_mask P_ ((struct frame *, struct image *,
 -                                     Lisp_Object));
 +static Lisp_Object define_image_type (struct image_type *type, int loaded);
 +static struct image_type *lookup_image_type (Lisp_Object symbol);
 +static void image_error (const char *format, Lisp_Object, Lisp_Object);
 +static void x_laplace (struct frame *, struct image *);
 +static void x_emboss (struct frame *, struct image *);
 +static int x_build_heuristic_mask (struct frame *, struct image *,
 +                                   Lisp_Object);
  
  #define CACHE_IMAGE_TYPE(type, status) \
    do { Vimage_type_cache = Fcons (Fcons (type, status), Vimage_type_cache); } while (0)
     image_types and caches the loading status of TYPE.  */
  
  static Lisp_Object
 -define_image_type (type, loaded)
 -     struct image_type *type;
 -     int loaded;
 +define_image_type (struct image_type *type, int loaded)
  {
    Lisp_Object success;
  
        /* Make a copy of TYPE to avoid a bus error in a dumped Emacs.
           The initialized data segment is read-only.  */
        struct image_type *p = (struct image_type *) xmalloc (sizeof *p);
 -      bcopy (type, p, sizeof *p);
 +      memcpy (p, type, sizeof *p);
        p->next = image_types;
        image_types = p;
        success = Qt;
     structure.  Value is null if SYMBOL is not a known image type.  */
  
  static INLINE struct image_type *
 -lookup_image_type (symbol)
 -     Lisp_Object symbol;
 +lookup_image_type (Lisp_Object symbol)
  {
    struct image_type *type;
  
    /* We must initialize the image-type if it hasn't been already.  */
 -  if (NILP (Finit_image_library (symbol, Vimage_library_alist)))
 +  if (NILP (Finit_image_library (symbol, Vdynamic_library_alist)))
      return 0;                 /* unimplemented */
  
    for (type = image_types; type; type = type->next)
     image type.  */
  
  int
 -valid_image_p (object)
 -     Lisp_Object object;
 +valid_image_p (Lisp_Object object)
  {
    int valid_p = 0;
  
     therefore simply displays a message.  */
  
  static void
 -image_error (format, arg1, arg2)
 -     char *format;
 -     Lisp_Object arg1, arg2;
 +image_error (const char *format, Lisp_Object arg1, Lisp_Object arg2)
  {
    add_to_log (format, arg1, arg2);
  }
@@@ -727,7 -760,7 +727,7 @@@ enum image_value_typ
  struct image_keyword
  {
    /* Name of keyword.  */
 -  char *name;
 +  const char *name;
  
    /* The type of value allowed.  */
    enum image_value_type type;
  };
  
  
 -static int parse_image_spec P_ ((Lisp_Object, struct image_keyword *,
 -                               int, Lisp_Object));
 -static Lisp_Object image_spec_value P_ ((Lisp_Object, Lisp_Object, int *));
 +static int parse_image_spec (Lisp_Object, struct image_keyword *,
 +                             int, Lisp_Object);
 +static Lisp_Object image_spec_value (Lisp_Object, Lisp_Object, int *);
  
  
  /* Parse image spec SPEC according to KEYWORDS.  A valid image spec
     allowed keyword/value pairs.  Value is non-zero if SPEC is valid.  */
  
  static int
 -parse_image_spec (spec, keywords, nkeywords, type)
 -     Lisp_Object spec;
 -     struct image_keyword *keywords;
 -     int nkeywords;
 -     Lisp_Object type;
 +parse_image_spec (Lisp_Object spec, struct image_keyword *keywords,
 +                int nkeywords, Lisp_Object type)
  {
    int i;
    Lisp_Object plist;
     to 1 if KEY was found in SPEC, set it to 0 otherwise.  */
  
  static Lisp_Object
 -image_spec_value (spec, key, found)
 -     Lisp_Object spec, key;
 -     int *found;
 +image_spec_value (Lisp_Object spec, Lisp_Object key, int *found)
  {
    Lisp_Object tail;
  
@@@ -922,7 -960,8 +922,7 @@@ PIXELS non-nil means return the size i
  size in canonical character units.
  FRAME is the frame on which the image will be displayed.  FRAME nil
  or omitted means use the selected frame.  */)
 -     (spec, pixels, frame)
 -     Lisp_Object spec, pixels, frame;
 +  (Lisp_Object spec, Lisp_Object pixels, Lisp_Object frame)
  {
    Lisp_Object size;
  
@@@ -952,7 -991,8 +952,7 @@@ DEFUN ("image-mask-p", Fimage_mask_p, S
         doc: /* Return t if image SPEC has a mask bitmap.
  FRAME is the frame on which the image will be displayed.  FRAME nil
  or omitted means use the selected frame.  */)
 -     (spec, frame)
 -     Lisp_Object spec, frame;
 +  (Lisp_Object spec, Lisp_Object frame)
  {
    Lisp_Object mask;
  
    return mask;
  }
  
 -DEFUN ("image-extension-data", Fimage_extension_data, Simage_extension_data, 1, 2, 0,
 -       doc: /* Return extension data for image SPEC.
 +DEFUN ("image-metadata", Fimage_metadata, Simage_metadata, 1, 2, 0,
 +       doc: /* Return metadata for image SPEC.
  FRAME is the frame on which the image will be displayed.  FRAME nil
  or omitted means use the selected frame.  */)
 -     (spec, frame)
 -     Lisp_Object spec, frame;
 +  (Lisp_Object spec, Lisp_Object frame)
  {
    Lisp_Object ext;
  
                 Image type independent image structures
   ***********************************************************************/
  
 -static struct image *make_image P_ ((Lisp_Object spec, unsigned hash));
 -static void free_image P_ ((struct frame *f, struct image *img));
 -static int check_image_size P_ ((struct frame *f, int width, int height));
 +static struct image *make_image (Lisp_Object spec, unsigned hash);
 +static void free_image (struct frame *f, struct image *img);
 +static int check_image_size (struct frame *f, int width, int height);
  
  #define MAX_IMAGE_SIZE 6.0
  Lisp_Object Vmax_image_size;
     SPEC.  SPEC has a hash value of HASH.  */
  
  static struct image *
 -make_image (spec, hash)
 -     Lisp_Object spec;
 -     unsigned hash;
 +make_image (Lisp_Object spec, unsigned int hash)
  {
    struct image *img = (struct image *) xmalloc (sizeof *img);
    Lisp_Object file = image_spec_value (spec, QCfile, NULL);
  
    xassert (valid_image_p (spec));
 -  bzero (img, sizeof *img);
 +  memset (img, 0, sizeof *img);
    img->dependencies = NILP (file) ? Qnil : list1 (file);
    img->type = lookup_image_type (image_spec_value (spec, QCtype, NULL));
    xassert (img->type != NULL);
  /* Free image IMG which was used on frame F, including its resources.  */
  
  static void
 -free_image (f, img)
 -     struct frame *f;
 -     struct image *img;
 +free_image (struct frame *f, struct image *img)
  {
    if (img)
      {
        /* Free resources, then free IMG.  */
        img->type->free (f, img);
        xfree (img);
-       /* As display glyphs may still be referring to the image ID, we
-        must garbage the frame (Bug#6426).  */
-       SET_FRAME_GARBAGED (f);
      }
  }
  
     otherwise, return 0. */
  
  int
 -check_image_size (f, width, height)
 -     struct frame *f;
 -     int width;
 -     int height;
 +check_image_size (struct frame *f, int width, int height)
  {
    int w, h;
  
     drawing an image.  */
  
  void
 -prepare_image_for_display (f, img)
 -     struct frame *f;
 -     struct image *img;
 +prepare_image_for_display (struct frame *f, struct image *img)
  {
    EMACS_TIME t;
  
     drawn in face FACE.  */
  
  int
 -image_ascent (img, face, slice)
 -     struct image *img;
 -     struct face *face;
 -     struct glyph_slice *slice;
 +image_ascent (struct image *img, struct face *face, struct glyph_slice *slice)
  {
    int height;
    int ascent;
     On W32, XIMG is assumed to a device context with the bitmap selected.  */
  
  static RGB_PIXEL_COLOR
 -four_corners_best (ximg, corners, width, height)
 -     XImagePtr_or_DC ximg;
 -     int *corners;
 -     unsigned long width, height;
 +four_corners_best (XImagePtr_or_DC ximg, int *corners,
 +                 unsigned long width, unsigned long height)
  {
    RGB_PIXEL_COLOR corner_pixels[4], best;
    int i, best_count;
  #elif defined (HAVE_NS)
  
  #define Destroy_Image(ximg, dummy) \
 -  ns_release_object(ximg)
 +  ns_release_object (ximg)
  
  #define Free_Pixmap(display, pixmap) \
 -  ns_release_object(pixmap)
 +  ns_release_object (pixmap)
  
  #else
  
     use for the heuristic.  */
  
  RGB_PIXEL_COLOR
 -image_background (img, f, ximg)
 -     struct image *img;
 -     struct frame *f;
 -     XImagePtr_or_DC ximg;
 +image_background (struct image *img, struct frame *f, XImagePtr_or_DC ximg)
  {
    if (! img->background_valid)
      /* IMG doesn't have a background yet, try to guess a reasonable value.  */
     existing XImage object to use for the heuristic.  */
  
  int
 -image_background_transparent (img, f, mask)
 -     struct image *img;
 -     struct frame *f;
 -     XImagePtr_or_DC mask;
 +image_background_transparent (struct image *img, struct frame *f, XImagePtr_or_DC mask)
  {
    if (! img->background_transparent_valid)
      /* IMG doesn't have a background yet, try to guess a reasonable value.  */
                  Helper functions for X image types
   ***********************************************************************/
  
 -static void x_clear_image_1 P_ ((struct frame *, struct image *, int,
 -                               int, int));
 -static void x_clear_image P_ ((struct frame *f, struct image *img));
 -static unsigned long x_alloc_image_color P_ ((struct frame *f,
 -                                            struct image *img,
 -                                            Lisp_Object color_name,
 -                                            unsigned long dflt));
 +static void x_clear_image_1 (struct frame *, struct image *, int,
 +                             int, int);
 +static void x_clear_image (struct frame *f, struct image *img);
 +static unsigned long x_alloc_image_color (struct frame *f,
 +                                          struct image *img,
 +                                          Lisp_Object color_name,
 +                                          unsigned long dflt);
  
  
  /* Clear X resources of image IMG on frame F.  PIXMAP_P non-zero means
     the image, if any.  */
  
  static void
 -x_clear_image_1 (f, img, pixmap_p, mask_p, colors_p)
 -     struct frame *f;
 -     struct image *img;
 -     int pixmap_p, mask_p, colors_p;
 +x_clear_image_1 (struct frame *f, struct image *img, int pixmap_p, int mask_p,
 +               int colors_p)
  {
    if (pixmap_p && img->pixmap)
      {
  /* Free X resources of image IMG which is used on frame F.  */
  
  static void
 -x_clear_image (f, img)
 -     struct frame *f;
 -     struct image *img;
 +x_clear_image (struct frame *f, struct image *img)
  {
    BLOCK_INPUT;
    x_clear_image_1 (f, img, 1, 1, 1);
     color.  */
  
  static unsigned long
 -x_alloc_image_color (f, img, color_name, dflt)
 -     struct frame *f;
 -     struct image *img;
 -     Lisp_Object color_name;
 -     unsigned long dflt;
 +x_alloc_image_color (struct frame *f, struct image *img, Lisp_Object color_name,
 +                   unsigned long dflt)
  {
    XColor color;
    unsigned long result;
                             Image Cache
   ***********************************************************************/
  
 -static struct image *search_image_cache P_ ((struct frame *, Lisp_Object, unsigned));
 -static void cache_image P_ ((struct frame *f, struct image *img));
 -static void postprocess_image P_ ((struct frame *, struct image *));
 +static struct image *search_image_cache (struct frame *, Lisp_Object, unsigned);
 +static void cache_image (struct frame *f, struct image *img);
 +static void postprocess_image (struct frame *, struct image *);
  
  /* Return a new, initialized image cache that is allocated from the
     heap.  Call free_image_cache to free an image cache.  */
  
  struct image_cache *
 -make_image_cache ()
 +make_image_cache (void)
  {
    struct image_cache *c = (struct image_cache *) xmalloc (sizeof *c);
    int size;
  
 -  bzero (c, sizeof *c);
 +  memset (c, 0, sizeof *c);
    c->size = 50;
    c->images = (struct image **) xmalloc (c->size * sizeof *c->images);
    size = IMAGE_CACHE_BUCKETS_SIZE * sizeof *c->buckets;
    c->buckets = (struct image **) xmalloc (size);
 -  bzero (c->buckets, size);
 +  memset (c->buckets, 0, size);
    return c;
  }
  
  /* Find an image matching SPEC in the cache, and return it.  If no
     image is found, return NULL.  */
  static struct image *
 -search_image_cache (f, spec, hash)
 -     struct frame *f;
 -     Lisp_Object spec;
 -     unsigned hash;
 +search_image_cache (struct frame *f, Lisp_Object spec, unsigned int hash)
  {
    struct image *img;
    struct image_cache *c = FRAME_IMAGE_CACHE (f);
  /* Search frame F for an image with spec SPEC, and free it.  */
  
  static void
 -uncache_image (f, spec)
 -     struct frame *f;
 -     Lisp_Object spec;
 +uncache_image (struct frame *f, Lisp_Object spec)
  {
    struct image *img = search_image_cache (f, spec, sxhash (spec, 0));
    if (img)
-     free_image (f, img);
+     {
+       free_image (f, img);
+       /* As display glyphs may still be referring to the image ID, we
+        must garbage the frame (Bug#6426).  */
+       SET_FRAME_GARBAGED (f);
+     }
  }
  
  
     caches.  */
  
  void
 -free_image_cache (f)
 -     struct frame *f;
 +free_image_cache (struct frame *f)
  {
    struct image_cache *c = FRAME_IMAGE_CACHE (f);
    if (c)
@@@ -1512,56 -1587,29 +1513,56 @@@ clear_image_cache (struct frame *f, Lis
  {
    struct image_cache *c = FRAME_IMAGE_CACHE (f);
  
 -  if (c && (!NILP (filter) || INTEGERP (Vimage_cache_eviction_delay)))
 +  if (c)
      {
 -      EMACS_TIME t;
 -      unsigned long old;
 -      int i, nfreed;
 -
 -      EMACS_GET_TIME (t);
 -      old = EMACS_SECS (t) - XFASTINT (Vimage_cache_eviction_delay);
 +      int i, nfreed = 0;
  
        /* Block input so that we won't be interrupted by a SIGIO
         while being in an inconsistent state.  */
        BLOCK_INPUT;
  
 -      for (i = nfreed = 0; i < c->used; ++i)
 +      if (!NILP (filter))
        {
 -        struct image *img = c->images[i];
 -        if (img != NULL
 -            && (NILP (filter) ? img->timestamp < old
 -                : (EQ (Qt, filter)
 -                   || !NILP (Fmember (filter, img->dependencies)))))
 +        /* Filter image cache.  */
 +        for (i = 0; i < c->used; ++i)
            {
 -            free_image (f, img);
 -            ++nfreed;
 +            struct image *img = c->images[i];
 +            if (img && (EQ (Qt, filter)
 +                        || !NILP (Fmember (filter, img->dependencies))))
 +              {
 +                free_image (f, img);
 +                ++nfreed;
 +              }
 +          }
 +      }
 +      else if (INTEGERP (Vimage_cache_eviction_delay))
 +      {
 +        /* Free cache based on timestamp.  */
 +        EMACS_TIME t;
 +        unsigned long old;
 +        int delay, nimages = 0;
 +
 +        for (i = 0; i < c->used; ++i)
 +          if (c->images[i])
 +            nimages++;
 +
 +        /* If the number of cached images has grown unusually large,
 +           decrease the cache eviction delay (Bug#6230).  */
 +        delay = XFASTINT (Vimage_cache_eviction_delay);
 +        if (nimages > 40)
 +          delay = max (1, 1600 * delay / (nimages*nimages));
 +
 +        EMACS_GET_TIME (t);
 +        old = EMACS_SECS (t) - delay;
 +
 +        for (i = 0; i < c->used; ++i)
 +          {
 +            struct image *img = c->images[i];
 +            if (img && img->timestamp < old)
 +              {
 +                free_image (f, img);
 +                ++nfreed;
 +              }
            }
        }
  
@@@ -1607,7 -1655,8 +1608,7 @@@ FILTER nil or a frame means clear all i
  FILTER t means clear the image caches of all frames.
  Anything else, means only clear those images which refer to FILTER,
  which is then usually a filename.  */)
 -     (filter)
 -     Lisp_Object filter;
 +  (Lisp_Object filter)
  {
    if (!(EQ (filter, Qnil) || FRAMEP (filter)))
      clear_image_caches (filter);
  }
  
  
 -DEFUN ("image-refresh", Fimage_refresh, Simage_refresh,
 +DEFUN ("image-flush", Fimage_flush, Simage_flush,
         1, 2, 0,
 -       doc: /* Refresh the image with specification SPEC on frame FRAME.
 -If SPEC specifies an image file, the displayed image is updated with
 -the current contents of that file.
 +       doc: /* Fush the image with specification SPEC on frame FRAME.
 +This removes the image from the Emacs image cache.  If SPEC specifies
 +an image file, the next redisplay of this image will read from the
 +current contents of that file.
 +
  FRAME nil or omitted means use the selected frame.
  FRAME t means refresh the image on all frames.  */)
 -     (spec, frame)
 -     Lisp_Object spec, frame;
 +  (Lisp_Object spec, Lisp_Object frame)
  {
    if (!valid_image_p (spec))
      error ("Invalid image specification");
     by the image's specification,  */
  
  static void
 -postprocess_image (f, img)
 -     struct frame *f;
 -     struct image *img;
 +postprocess_image (struct frame *f, struct image *img)
  {
    /* Manipulation of the image's mask.  */
    if (img->pixmap)
     SPEC must be a valid Lisp image specification (see valid_image_p).  */
  
  int
 -lookup_image (f, spec)
 -     struct frame *f;
 -     Lisp_Object spec;
 +lookup_image (struct frame *f, Lisp_Object spec)
  {
    struct image_cache *c;
    struct image *img;
    unsigned hash;
 -  struct gcpro gcpro1;
    EMACS_TIME now;
  
    /* F must be a window-system frame, and SPEC must be a valid image
  
    c = FRAME_IMAGE_CACHE (f);
  
 -  GCPRO1 (spec);
 -
    /* Look up SPEC in the hash table of the image cache.  */
    hash = sxhash (spec, 0);
    img = search_image_cache (f, spec, hash);
    /* If not found, create a new image and cache it.  */
    if (img == NULL)
      {
 -      extern Lisp_Object Qpostscript;
 -
        BLOCK_INPUT;
        img = make_image (spec, hash);
        cache_image (f, img);
    EMACS_GET_TIME (now);
    img->timestamp = EMACS_SECS (now);
  
 -  UNGCPRO;
 -
    /* Value is the image id.  */
    return img->id;
  }
  /* Cache image IMG in the image cache of frame F.  */
  
  static void
 -cache_image (f, img)
 -     struct frame *f;
 -     struct image *img;
 +cache_image (struct frame *f, struct image *img)
  {
    struct image_cache *c = FRAME_IMAGE_CACHE (f);
    int i;
  /* Mark Lisp objects in image IMG.  */
  
  static void
 -mark_image (img)
 -     struct image *img;
 +mark_image (struct image *img)
  {
    mark_object (img->spec);
    mark_object (img->dependencies);
@@@ -1910,7 -1972,7 +1911,7 @@@ mark_image_cache (struct image_cache *c
  #ifdef HAVE_NTGUI
  
  /* Macro for defining functions that will be loaded from image DLLs.  */
 -#define DEF_IMGLIB_FN(func) int (FAR CDECL *fn_##func)()
 +#define DEF_IMGLIB_FN(func,args) int (FAR CDECL *fn_##func)args
  
  /* Macro for loading those image functions from the library.  */
  #define LOAD_IMGLIB_FN(lib,func) {                                    \
    }
  
  /* Load a DLL implementing an image type.
 -   The `image-library-alist' variable associates a symbol,
 -   identifying an image type, to a list of possible filenames.
 +   The argument LIBRARIES is usually the variable
 +   `dynamic-library-alist', which associates a symbol, identifying
 +   an external DLL library, to a list of possible filenames.
     The function returns NULL if no library could be loaded for
 -   the given image type, or if the library was previously loaded;
 +   the given symbol, or if the library was previously loaded;
     else the handle of the DLL.  */
  static HMODULE
  w32_delayed_load (Lisp_Object libraries, Lisp_Object type)
  
  #endif /* HAVE_NTGUI */
  
 -static int x_create_x_image_and_pixmap P_ ((struct frame *, int, int, int,
 -                                          XImagePtr *, Pixmap *));
 -static void x_destroy_x_image P_ ((XImagePtr));
 -static void x_put_x_image P_ ((struct frame *, XImagePtr, Pixmap, int, int));
 +static int x_create_x_image_and_pixmap (struct frame *, int, int, int,
 +                                        XImagePtr *, Pixmap *);
 +static void x_destroy_x_image (XImagePtr);
 +static void x_put_x_image (struct frame *, XImagePtr, Pixmap, int, int);
  
  
  /* Create an XImage and a pixmap of size WIDTH x HEIGHT for use on
     should indicate the bit depth of the image.  */
  
  static int
 -x_create_x_image_and_pixmap (f, width, height, depth, ximg, pixmap)
 -     struct frame *f;
 -     int width, height, depth;
 -     XImagePtr *ximg;
 -     Pixmap *pixmap;
 +x_create_x_image_and_pixmap (struct frame *f, int width, int height, int depth,
 +                           XImagePtr *ximg, Pixmap *pixmap)
  {
  #ifdef HAVE_X_WINDOWS
    Display *display = FRAME_X_DISPLAY (f);
        return 0;
      }
  
 -  header = &((*ximg)->info.bmiHeader);
 -  bzero (&((*ximg)->info), sizeof (BITMAPINFO));
 +  header = &(*ximg)->info.bmiHeader;
 +  memset (&(*ximg)->info, 0, sizeof (BITMAPINFO));
    header->biSize = sizeof (*header);
    header->biWidth = width;
    header->biHeight = -height;  /* negative indicates a top-down bitmap.  */
  #endif /* HAVE_NTGUI */
  
  #ifdef HAVE_NS
 -  *pixmap = ns_image_for_XPM(width, height, depth);
 +  *pixmap = ns_image_for_XPM (width, height, depth);
    if (*pixmap == 0)
      {
        *ximg = NULL;
  /* Destroy XImage XIMG.  Free XIMG->data.  */
  
  static void
 -x_destroy_x_image (ximg)
 -     XImagePtr ximg;
 +x_destroy_x_image (XImagePtr ximg)
  {
    xassert (interrupt_input_blocked);
    if (ximg)
        xfree (ximg);
  #endif /* HAVE_NTGUI */
  #ifdef HAVE_NS
 -      ns_release_object(ximg);
 +      ns_release_object (ximg);
  #endif /* HAVE_NS */
      }
  }
     are width and height of both the image and pixmap.  */
  
  static void
 -x_put_x_image (f, ximg, pixmap, width, height)
 -     struct frame *f;
 -     XImagePtr ximg;
 -     Pixmap pixmap;
 -     int width, height;
 +x_put_x_image (struct frame *f, XImagePtr ximg, Pixmap pixmap, int width, int height)
  {
  #ifdef HAVE_X_WINDOWS
    GC gc;
  
  #ifdef HAVE_NS
    xassert (ximg == pixmap);
 -  ns_retain_object(ximg);
 +  ns_retain_object (ximg);
  #endif
  }
  
                              File Handling
   ***********************************************************************/
  
 -static unsigned char *slurp_file P_ ((char *, int *));
 +static unsigned char *slurp_file (char *, int *);
  
  
  /* Find image file FILE.  Look in data-directory/images, then
     found, or nil if not found.  */
  
  Lisp_Object
 -x_find_image_file (file)
 -     Lisp_Object file;
 +x_find_image_file (Lisp_Object file)
  {
    Lisp_Object file_found, search_path;
 -  struct gcpro gcpro1, gcpro2;
    int fd;
  
 -  file_found = Qnil;
    /* TODO I think this should use something like image-load-path
       instead.  Unfortunately, that can contain non-string elements.  */
    search_path = Fcons (Fexpand_file_name (build_string ("images"),
                                          Vdata_directory),
                       Vx_bitmap_file_path);
 -  GCPRO2 (file_found, search_path);
  
    /* Try to find FILE in data-directory/images, then x-bitmap-file-path.  */
    fd = openp (search_path, file, Qnil, &file_found, Qnil);
        close (fd);
      }
  
 -  UNGCPRO;
    return file_found;
  }
  
     occurred.  *SIZE is set to the size of the file.  */
  
  static unsigned char *
 -slurp_file (file, size)
 -     char *file;
 -     int *size;
 +slurp_file (char *file, int *size)
  {
    FILE *fp = NULL;
    unsigned char *buf = NULL;
                              XBM images
   ***********************************************************************/
  
 -static int xbm_scan P_ ((unsigned char **, unsigned char *, char *, int *));
 -static int xbm_load P_ ((struct frame *f, struct image *img));
 -static int xbm_load_image P_ ((struct frame *f, struct image *img,
 -                             unsigned char *, unsigned char *));
 -static int xbm_image_p P_ ((Lisp_Object object));
 -static int xbm_read_bitmap_data P_ ((struct frame *f,
 -                                   unsigned char *, unsigned char *,
 -                                   int *, int *, unsigned char **, int));
 -static int xbm_file_p P_ ((Lisp_Object));
 +static int xbm_scan (unsigned char **, unsigned char *, char *, int *);
 +static int xbm_load (struct frame *f, struct image *img);
 +static int xbm_load_image (struct frame *f, struct image *img,
 +                           unsigned char *, unsigned char *);
 +static int xbm_image_p (Lisp_Object object);
 +static int xbm_read_bitmap_data (struct frame *f,
 +                                 unsigned char *, unsigned char *,
 +                                 int *, int *, unsigned char **, int);
 +static int xbm_file_p (Lisp_Object);
  
  
  /* Indices of image specification fields in xbm_format, below.  */
@@@ -2334,11 -2410,12 +2335,11 @@@ enum xbm_toke
     displayed is used.  */
  
  static int
 -xbm_image_p (object)
 -     Lisp_Object object;
 +xbm_image_p (Lisp_Object object)
  {
    struct image_keyword kw[XBM_LAST];
  
 -  bcopy (xbm_format, kw, sizeof kw);
 +  memcpy (kw, xbm_format, sizeof kw);
    if (!parse_image_spec (object, kw, XBM_LAST, Qxbm))
      return 0;
  
     scanning a number, store its value in *IVAL.  */
  
  static int
 -xbm_scan (s, end, sval, ival)
 -     unsigned char **s, *end;
 -     char *sval;
 -     int *ival;
 +xbm_scan (unsigned char **s, unsigned char *end, char *sval, int *ival)
  {
    unsigned int c;
  
@@@ -2528,7 -2608,7 +2529,7 @@@ w32_create_pixmap_from_bitmap_data (in
    w1 = (width + 7) / 8;         /* nb of 8bits elt in X bitmap */
    w2 = ((width + 15) / 16) * 2; /* nb of 16bits elt in W32 bitmap */
    bits = (unsigned char *) alloca (height * w2);
 -  bzero (bits, height * w2);
 +  memset (bits, 0, height * w2);
    for (i = 0; i < height; i++)
      {
        p = bits + i*w2;
  }
  
  static void
 -convert_mono_to_color_image (f, img, foreground, background)
 -     struct frame *f;
 -     struct image *img;
 -     COLORREF foreground, background;
 +convert_mono_to_color_image (struct frame *f, struct image *img,
 +                           COLORREF foreground, COLORREF background)
  {
    HDC hdc, old_img_dc, new_img_dc;
    HGDIOBJ old_prev, new_prev;
  
  
  static void
 -Create_Pixmap_From_Bitmap_Data (f, img, data, fg, bg, non_default_colors)
 -     struct frame *f;
 -     struct image *img;
 -     char *data;
 -     RGB_PIXEL_COLOR fg, bg;
 -     int non_default_colors;
 +Create_Pixmap_From_Bitmap_Data (struct frame *f, struct image *img, char *data,
 +                              RGB_PIXEL_COLOR fg, RGB_PIXEL_COLOR bg,
 +                              int non_default_colors)
  {
  #ifdef HAVE_NTGUI
    img->pixmap
      convert_mono_to_color_image (f, img, fg, bg);
  
  #elif defined (HAVE_NS)
 -  img->pixmap = ns_image_from_XBM(data, img->width, img->height);
 +  img->pixmap = ns_image_from_XBM (data, img->width, img->height);
  
  #else
    img->pixmap
     invalid (the bitmap remains unread).  */
  
  static int
 -xbm_read_bitmap_data (f, contents, end, width, height, data, inhibit_image_error)
 -     struct frame *f;
 -     unsigned char *contents, *end;
 -     int *width, *height;
 -     unsigned char **data;
 -     int inhibit_image_error;
 +xbm_read_bitmap_data (struct frame *f, unsigned char *contents, unsigned char *end,
 +                    int *width, int *height, unsigned char **data,
 +                    int inhibit_image_error)
  {
    unsigned char *s = contents;
    char buffer[BUFSIZ];
     successful.  */
  
  static int
 -xbm_load_image (f, img, contents, end)
 -     struct frame *f;
 -     struct image *img;
 -     unsigned char *contents, *end;
 +xbm_load_image (struct frame *f, struct image *img, unsigned char *contents,
 +              unsigned char *end)
  {
    int rc;
    unsigned char *data;
  /* Value is non-zero if DATA looks like an in-memory XBM file.  */
  
  static int
 -xbm_file_p (data)
 -     Lisp_Object data;
 +xbm_file_p (Lisp_Object data)
  {
    int w, h;
    return (STRINGP (data)
     non-zero if successful.  */
  
  static int
 -xbm_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +xbm_load (struct frame *f, struct image *img)
  {
    int success_p = 0;
    Lisp_Object file_name;
        Lisp_Object file;
        unsigned char *contents;
        int size;
 -      struct gcpro gcpro1;
  
        file = x_find_image_file (file_name);
 -      GCPRO1 (file);
        if (!STRINGP (file))
        {
          image_error ("Cannot find image file `%s'", file_name, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        if (contents == NULL)
        {
          image_error ("Error loading XBM image `%s'", img->spec, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        success_p = xbm_load_image (f, img, contents, contents + size);
 -      UNGCPRO;
      }
    else
      {
        in_memory_file_p = xbm_file_p (data);
  
        /* Parse the image specification.  */
 -      bcopy (xbm_format, fmt, sizeof fmt);
 +      memcpy (fmt, xbm_format, sizeof fmt);
        parsed_p = parse_image_spec (img->spec, fmt, XBM_LAST, Qxbm);
        xassert (parsed_p);
  
                {
                  Lisp_Object line = XVECTOR (data)->contents[i];
                  if (STRINGP (line))
 -                  bcopy (SDATA (line), p, nbytes);
 +                  memcpy (p, SDATA (line), nbytes);
                  else
 -                  bcopy (XBOOL_VECTOR (line)->data, p, nbytes);
 +                  memcpy (p, XBOOL_VECTOR (line)->data, nbytes);
                }
            }
          else if (STRINGP (data))
              invertedBits = bits;
              nbytes = (img->width + BITS_PER_CHAR - 1) / BITS_PER_CHAR
                * img->height;
 -            bits = (char *) alloca(nbytes);
 +            bits = (char *) alloca (nbytes);
              for (i = 0; i < nbytes; i++)
                bits[i] = XBM_BIT_SHUFFLE (invertedBits[i]);
            }
  
  #if defined (HAVE_XPM) || defined (HAVE_NS)
  
 -static int xpm_image_p P_ ((Lisp_Object object));
 -static int xpm_load P_ ((struct frame *f, struct image *img));
 -static int xpm_valid_color_symbols_p P_ ((Lisp_Object));
 +static int xpm_image_p (Lisp_Object object);
 +static int xpm_load (struct frame *f, struct image *img);
 +static int xpm_valid_color_symbols_p (Lisp_Object);
  
  #endif /* HAVE_XPM || HAVE_NS */
  
@@@ -3085,12 -3183,12 +3086,12 @@@ static struct image_type xpm_type 
  
  #ifdef ALLOC_XPM_COLORS
  
 -static void xpm_init_color_cache P_ ((struct frame *, XpmAttributes *));
 -static void xpm_free_color_cache P_ ((void));
 -static int xpm_lookup_color P_ ((struct frame *, char *, XColor *));
 -static int xpm_color_bucket P_ ((char *));
 -static struct xpm_cached_color *xpm_cache_color P_ ((struct frame *, char *,
 -                                                   XColor *, int));
 +static void xpm_init_color_cache (struct frame *, XpmAttributes *);
 +static void xpm_free_color_cache (void);
 +static int xpm_lookup_color (struct frame *, char *, XColor *);
 +static int xpm_color_bucket (char *);
 +static struct xpm_cached_color *xpm_cache_color (struct frame *, char *,
 +                                                 XColor *, int);
  
  /* An entry in a hash table used to cache color definitions of named
     colors.  This cache is necessary to speed up XPM image loading in
@@@ -3118,7 -3216,9 +3119,7 @@@ struct xpm_cached_color **xpm_color_cac
  /* Initialize the color cache.  */
  
  static void
 -xpm_init_color_cache (f, attrs)
 -     struct frame *f;
 -     XpmAttributes *attrs;
 +xpm_init_color_cache (struct frame *f, XpmAttributes *attrs)
  {
    size_t nbytes = XPM_COLOR_CACHE_BUCKETS * sizeof *xpm_color_cache;
    xpm_color_cache = (struct xpm_cached_color **) xmalloc (nbytes);
  /* Free the color cache.  */
  
  static void
 -xpm_free_color_cache ()
 +xpm_free_color_cache (void)
  {
    struct xpm_cached_color *p, *next;
    int i;
     cache.  */
  
  static int
 -xpm_color_bucket (color_name)
 -     char *color_name;
 +xpm_color_bucket (char *color_name)
  {
    unsigned h = 0;
    char *s;
     entry added.  */
  
  static struct xpm_cached_color *
 -xpm_cache_color (f, color_name, color, bucket)
 -     struct frame *f;
 -     char *color_name;
 -     XColor *color;
 -     int bucket;
 +xpm_cache_color (struct frame *f, char *color_name, XColor *color, int bucket)
  {
    size_t nbytes;
    struct xpm_cached_color *p;
     allocation failed.  */
  
  static int
 -xpm_lookup_color (f, color_name, color)
 -     struct frame *f;
 -     char *color_name;
 -     XColor *color;
 +xpm_lookup_color (struct frame *f, char *color_name, XColor *color)
  {
    struct xpm_cached_color *p;
    int h = xpm_color_bucket (color_name);
       with transparency, and it's useful.  */
    else if (strcmp ("opaque", color_name) == 0)
      {
 -      bzero (color, sizeof (XColor));  /* Is this necessary/correct?  */
 +      memset (color, 0, sizeof (XColor));  /* Is this necessary/correct?  */
        color->pixel = FRAME_FOREGROUND_PIXEL (f);
        p = xpm_cache_color (f, color_name, color, h);
      }
     if successful.  */
  
  static int
 -xpm_alloc_color (dpy, cmap, color_name, color, closure)
 -     Display *dpy;
 -     Colormap cmap;
 -     char *color_name;
 -     XColor *color;
 -     void *closure;
 +xpm_alloc_color (Display *dpy, Colormap cmap, char *color_name, XColor *color,
 +               void *closure)
  {
    return xpm_lookup_color ((struct frame *) closure, color_name, color);
  }
     non-zero if successful.  */
  
  static int
 -xpm_free_colors (dpy, cmap, pixels, npixels, closure)
 -     Display *dpy;
 -     Colormap cmap;
 -     Pixel *pixels;
 -     int npixels;
 -     void *closure;
 +xpm_free_colors (Display *dpy, Colormap cmap, Pixel *pixels, int npixels, void *closure)
  {
    return 1;
  }
  
  /* XPM library details.  */
  
 -DEF_IMGLIB_FN (XpmFreeAttributes);
 -DEF_IMGLIB_FN (XpmCreateImageFromBuffer);
 -DEF_IMGLIB_FN (XpmReadFileToImage);
 -DEF_IMGLIB_FN (XImageFree);
 +DEF_IMGLIB_FN (XpmFreeAttributes, (XpmAttributes *));
 +DEF_IMGLIB_FN (XpmCreateImageFromBuffer, (Display *, char *, xpm_XImage **,
 +                                        xpm_XImage **, XpmAttributes *));
 +DEF_IMGLIB_FN (XpmReadFileToImage, (Display *, char *, xpm_XImage **,
 +                                  xpm_XImage **, XpmAttributes *));
 +DEF_IMGLIB_FN (XImageFree, (xpm_XImage *));
  
  static int
  init_xpm_functions (Lisp_Object libraries)
     cdr are strings.  */
  
  static int
 -xpm_valid_color_symbols_p (color_symbols)
 -     Lisp_Object color_symbols;
 +xpm_valid_color_symbols_p (Lisp_Object color_symbols)
  {
    while (CONSP (color_symbols))
      {
  /* Value is non-zero if OBJECT is a valid XPM image specification.  */
  
  static int
 -xpm_image_p (object)
 -     Lisp_Object object;
 +xpm_image_p (Lisp_Object object)
  {
    struct image_keyword fmt[XPM_LAST];
 -  bcopy (xpm_format, fmt, sizeof fmt);
 +  memcpy (fmt, xpm_format, sizeof fmt);
    return (parse_image_spec (object, fmt, XPM_LAST, Qxpm)
          /* Either `:file' or `:data' must be present.  */
          && fmt[XPM_FILE].count + fmt[XPM_DATA].count == 1
  
  #if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
  int
 -x_create_bitmap_from_xpm_data (f, bits)
 -     struct frame *f;
 -     char **bits;
 +x_create_bitmap_from_xpm_data (struct frame *f, char **bits)
  {
    Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
    int id, rc;
    XpmAttributes attrs;
    Pixmap bitmap, mask;
  
 -  bzero (&attrs, sizeof attrs);
 +  memset (&attrs, 0, sizeof attrs);
  
    attrs.visual = FRAME_X_VISUAL (f);
    attrs.colormap = FRAME_X_COLORMAP (f);
  #ifdef HAVE_XPM
  
  static int
 -xpm_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +xpm_load (struct frame *f, struct image *img)
  {
    int rc;
    XpmAttributes attrs;
  
    /* Configure the XPM lib.  Use the visual of frame F.  Allocate
       close colors.  Return colors allocated.  */
 -  bzero (&attrs, sizeof attrs);
 +  memset (&attrs, 0, sizeof attrs);
  
  #ifndef HAVE_NTGUI
    attrs.visual = FRAME_X_VISUAL (f);
        /* Allocate an XpmColorSymbol array.  */
        size = attrs.numsymbols * sizeof *xpm_syms;
        xpm_syms = (XpmColorSymbol *) alloca (size);
 -      bzero (xpm_syms, size);
 +      memset (xpm_syms, 0, size);
        attrs.colorsymbols = xpm_syms;
  
        /* Fill the color symbol array.  */
           CONSP (tail);
           ++i, tail = XCDR (tail))
        {
 -        Lisp_Object name = XCAR (XCAR (tail));
 -        Lisp_Object color = XCDR (XCAR (tail));
 -        xpm_syms[i].name = (char *) alloca (SCHARS (name) + 1);
 -        strcpy (xpm_syms[i].name, SDATA (name));
 -        xpm_syms[i].value = (char *) alloca (SCHARS (color) + 1);
 -        strcpy (xpm_syms[i].value, SDATA (color));
 +        Lisp_Object name;
 +        Lisp_Object color;
 +
 +        if (!CONSP (XCAR (tail)))
 +          {
 +            xpm_syms[i].name = "";
 +            xpm_syms[i].value = "";
 +            continue;
 +          }
 +        name = XCAR (XCAR (tail));
 +        color = XCDR (XCAR (tail));
 +        if (STRINGP (name))
 +          {
 +            xpm_syms[i].name = (char *) alloca (SCHARS (name) + 1);
 +            strcpy (xpm_syms[i].name, SDATA (name));
 +          }
 +        else
 +          xpm_syms[i].name = "";
 +        if (STRINGP (color))
 +          {
 +            xpm_syms[i].value = (char *) alloca (SCHARS (color) + 1);
 +            strcpy (xpm_syms[i].value, SDATA (color));
 +          }
 +        else
 +          xpm_syms[i].value = "";
        }
      }
  
        if (!STRINGP (file))
        {
          image_error ("Cannot find image file `%s'", specified_file, Qnil);
 +#ifdef ALLOC_XPM_COLORS
 +        xpm_free_color_cache ();
 +#endif
          return 0;
        }
  
    else
      {
        Lisp_Object buffer = image_spec_value (img->spec, QCdata, NULL);
 +      if (!STRINGP (buffer))
 +      {
 +        image_error ("Invalid image data `%s'", buffer, Qnil);
 +#ifdef ALLOC_XPM_COLORS
 +        xpm_free_color_cache ();
 +#endif
 +        return 0;
 +      }
  #ifdef HAVE_NTGUI
        /* XpmCreatePixmapFromBuffer is not available in the Windows port
         of libxpm.  But XpmCreateImageFromBuffer almost does what we want.  */
  /* XPM support functions for NS where libxpm is not available.
     Only XPM version 3 (without any extensions) is supported.  */
  
 -static int xpm_scan P_ ((const unsigned char **, const unsigned char *,
 -                       const unsigned char **, int *));
 +static int xpm_scan (const unsigned char **, const unsigned char *,
 +                     const unsigned char **, int *);
  static Lisp_Object xpm_make_color_table_v
 -  P_ ((void (**) (Lisp_Object, const unsigned char *, int, Lisp_Object),
 -       Lisp_Object (**) (Lisp_Object, const unsigned char *, int)));
 -static void xpm_put_color_table_v P_ ((Lisp_Object, const unsigned char *,
 -                                     int, Lisp_Object));
 -static Lisp_Object xpm_get_color_table_v P_ ((Lisp_Object,
 -                                            const unsigned char *, int));
 +  (void (**) (Lisp_Object, const unsigned char *, int, Lisp_Object),
 +   Lisp_Object (**) (Lisp_Object, const unsigned char *, int));
 +static void xpm_put_color_table_v (Lisp_Object, const unsigned char *,
 +                                   int, Lisp_Object);
 +static Lisp_Object xpm_get_color_table_v (Lisp_Object,
 +                                          const unsigned char *, int);
  static Lisp_Object xpm_make_color_table_h
 -  P_ ((void (**) (Lisp_Object, const unsigned char *, int, Lisp_Object),
 -       Lisp_Object (**) (Lisp_Object, const unsigned char *, int)));
 -static void xpm_put_color_table_h P_ ((Lisp_Object, const unsigned char *,
 -                                     int, Lisp_Object));
 -static Lisp_Object xpm_get_color_table_h P_ ((Lisp_Object,
 -                                            const unsigned char *, int));
 -static int xpm_str_to_color_key P_ ((const char *));
 -static int xpm_load_image P_ ((struct frame *, struct image *,
 -                             const unsigned char *, const unsigned char *));
 +  (void (**) (Lisp_Object, const unsigned char *, int, Lisp_Object),
 +   Lisp_Object (**) (Lisp_Object, const unsigned char *, int));
 +static void xpm_put_color_table_h (Lisp_Object, const unsigned char *,
 +                                   int, Lisp_Object);
 +static Lisp_Object xpm_get_color_table_h (Lisp_Object,
 +                                          const unsigned char *, int);
 +static int xpm_str_to_color_key (const char *);
 +static int xpm_load_image (struct frame *, struct image *,
 +                           const unsigned char *, const unsigned char *);
  
  /* Tokens returned from xpm_scan.  */
  
@@@ -3674,10 -3765,9 +3675,10 @@@ enum xpm_toke
     length of the corresponding token, respectively.  */
  
  static int
 -xpm_scan (s, end, beg, len)
 -     const unsigned char **s, *end, **beg;
 -     int *len;
 +xpm_scan (const unsigned char **s,
 +          const unsigned char *end,
 +          const unsigned char **beg,
 +          int *len)
  {
    int c;
  
     hash table is used.  */
  
  static Lisp_Object
 -xpm_make_color_table_v (put_func, get_func)
 -     void (**put_func) (Lisp_Object, const unsigned char *, int, Lisp_Object);
 -     Lisp_Object (**get_func) (Lisp_Object, const unsigned char *, int);
 +xpm_make_color_table_v (void (**put_func) (Lisp_Object,
 +                                           const unsigned char *,
 +                                           int,
 +                                           Lisp_Object),
 +                        Lisp_Object (**get_func) (Lisp_Object,
 +                                                  const unsigned char *,
 +                                                  int))
  {
    *put_func = xpm_put_color_table_v;
    *get_func = xpm_get_color_table_v;
  }
  
  static void
 -xpm_put_color_table_v (color_table, chars_start, chars_len, color)
 -     Lisp_Object color_table;
 -     const unsigned char *chars_start;
 -     int chars_len;
 -     Lisp_Object color;
 +xpm_put_color_table_v (Lisp_Object color_table,
 +                       const unsigned char *chars_start,
 +                       int chars_len,
 +                       Lisp_Object color)
  {
    XVECTOR (color_table)->contents[*chars_start] = color;
  }
  
  static Lisp_Object
 -xpm_get_color_table_v (color_table, chars_start, chars_len)
 -     Lisp_Object color_table;
 -     const unsigned char *chars_start;
 -     int chars_len;
 +xpm_get_color_table_v (Lisp_Object color_table,
 +                       const unsigned char *chars_start,
 +                       int chars_len)
  {
    return XVECTOR (color_table)->contents[*chars_start];
  }
  
  static Lisp_Object
 -xpm_make_color_table_h (put_func, get_func)
 -     void (**put_func) (Lisp_Object, const unsigned char *, int, Lisp_Object);
 -     Lisp_Object (**get_func) (Lisp_Object, const unsigned char *, int);
 +xpm_make_color_table_h (void (**put_func) (Lisp_Object,
 +                                           const unsigned char *,
 +                                           int,
 +                                           Lisp_Object),
 +                        Lisp_Object (**get_func) (Lisp_Object,
 +                                                  const unsigned char *,
 +                                                  int))
  {
    *put_func = xpm_put_color_table_h;
    *get_func = xpm_get_color_table_h;
  }
  
  static void
 -xpm_put_color_table_h (color_table, chars_start, chars_len, color)
 -     Lisp_Object color_table;
 -     const unsigned char *chars_start;
 -     int chars_len;
 -     Lisp_Object color;
 +xpm_put_color_table_h (Lisp_Object color_table,
 +                       const unsigned char *chars_start,
 +                       int chars_len,
 +                       Lisp_Object color)
  {
    struct Lisp_Hash_Table *table = XHASH_TABLE (color_table);
    unsigned hash_code;
  }
  
  static Lisp_Object
 -xpm_get_color_table_h (color_table, chars_start, chars_len)
 -     Lisp_Object color_table;
 -     const unsigned char *chars_start;
 -     int chars_len;
 +xpm_get_color_table_h (Lisp_Object color_table,
 +                       const unsigned char *chars_start,
 +                       int chars_len)
  {
    struct Lisp_Hash_Table *table = XHASH_TABLE (color_table);
    int i = hash_lookup (table, make_unibyte_string (chars_start, chars_len),
@@@ -3825,7 -3911,8 +3826,7 @@@ enum xpm_color_key 
  static const char xpm_color_key_strings[][4] = {"s", "m", "g4", "g", "c"};
  
  static int
 -xpm_str_to_color_key (s)
 -     const char *s;
 +xpm_str_to_color_key (const char *s)
  {
    int i;
  
  }
  
  static int
 -xpm_load_image (f, img, contents, end)
 -     struct frame *f;
 -     struct image *img;
 -     const unsigned char *contents, *end;
 +xpm_load_image (struct frame *f,
 +                struct image *img,
 +                const unsigned char *contents,
 +                const unsigned char *end)
  {
    const unsigned char *s = contents, *beg, *str;
    unsigned char buffer[BUFSIZ];
    if (!(end - s >= 9 && memcmp (s, "/* XPM */", 9) == 0))
      goto failure;
    s += 9;
 -  match();
 +  match ();
    expect_ident ("static");
    expect_ident ("char");
    expect ('*');
                     (!EQ (color_val, Qt) ? PIX_MASK_DRAW
                      : (have_mask = 1, PIX_MASK_RETAIN)));
  #else
 -          if (EQ(color_val, Qt))
 -            ns_set_alpha(ximg, x, y, 0);
 +          if (EQ (color_val, Qt))
 +            ns_set_alpha (ximg, x, y, 0);
  #endif
        }
        if (y + 1 < height)
  }
  
  static int
 -xpm_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +xpm_load (struct frame *f,
 +          struct image *img)
  {
    int success_p = 0;
    Lisp_Object file_name;
        Lisp_Object file;
        unsigned char *contents;
        int size;
 -      struct gcpro gcpro1;
  
        file = x_find_image_file (file_name);
 -      GCPRO1 (file);
        if (!STRINGP (file))
        {
          image_error ("Cannot find image file `%s'", file_name, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        if (contents == NULL)
        {
          image_error ("Error loading XPM image `%s'", img->spec, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        success_p = xpm_load_image (f, img, contents, contents + size);
        xfree (contents);
 -      UNGCPRO;
      }
    else
      {
        Lisp_Object data;
  
        data = image_spec_value (img->spec, QCdata, NULL);
 +      if (!STRINGP (data))
 +      {
 +        image_error ("Invalid image data `%s'", data, Qnil);
 +        return 0;
 +      }
        success_p = xpm_load_image (f, img, SDATA (data),
                                  SDATA (data) + SBYTES (data));
      }
@@@ -4161,11 -4249,11 +4162,11 @@@ int ct_colors_allocated
  /* Initialize the color table.  */
  
  static void
 -init_color_table ()
 +init_color_table (void)
  {
    int size = CT_SIZE * sizeof (*ct_table);
    ct_table = (struct ct_color **) xmalloc (size);
 -  bzero (ct_table, size);
 +  memset (ct_table, 0, size);
    ct_colors_allocated = 0;
  }
  
  /* Free memory associated with the color table.  */
  
  static void
 -free_color_table ()
 +free_color_table (void)
  {
    int i;
    struct ct_color *p, *next;
     G, B, and make an entry in the color table.  */
  
  static unsigned long
 -lookup_rgb_color (f, r, g, b)
 -     struct frame *f;
 -     int r, g, b;
 +lookup_rgb_color (struct frame *f, int r, int g, int b)
  {
    unsigned hash = CT_HASH_RGB (r, g, b);
    int i = hash % CT_SIZE;
     table.  If not already present, allocate it.  Value is PIXEL.  */
  
  static unsigned long
 -lookup_pixel_color (f, pixel)
 -     struct frame *f;
 -     unsigned long pixel;
 +lookup_pixel_color (struct frame *f, unsigned long pixel)
  {
    int i = pixel % CT_SIZE;
    struct ct_color *p;
     allocated via xmalloc.  Set *N to the number of colors.  */
  
  static unsigned long *
 -colors_in_color_table (n)
 -     int *n;
 +colors_in_color_table (int *n)
  {
    int i, j;
    struct ct_color *p;
  #else /* COLOR_TABLE_SUPPORT */
  
  static unsigned long
 -lookup_rgb_color (f, r, g, b)
 -     struct frame *f;
 -     int r, g, b;
 +lookup_rgb_color (struct frame *f, int r, int g, int b)
  {
    unsigned long pixel;
  
  }
  
  static void
 -init_color_table ()
 +init_color_table (void)
  {
  }
  #endif /* COLOR_TABLE_SUPPORT */
                              Algorithms
   ***********************************************************************/
  
 -static XColor *x_to_xcolors P_ ((struct frame *, struct image *, int));
 -static void x_from_xcolors P_ ((struct frame *, struct image *, XColor *));
 -static void x_detect_edges P_ ((struct frame *, struct image *, int[9], int));
 +static XColor *x_to_xcolors (struct frame *, struct image *, int);
 +static void x_from_xcolors (struct frame *, struct image *, XColor *);
 +static void x_detect_edges (struct frame *, struct image *, int[9], int);
  
  #ifdef HAVE_NTGUI
  static void XPutPixel (XImagePtr , int, int, COLORREF);
@@@ -4439,7 -4534,10 +4440,7 @@@ static int laplace_matrix[9] = 
     allocated with xmalloc; it must be freed by the caller.  */
  
  static XColor *
 -x_to_xcolors (f, img, rgb_p)
 -     struct frame *f;
 -     struct image *img;
 -     int rgb_p;
 +x_to_xcolors (struct frame *f, struct image *img, int rgb_p)
  {
    int x, y;
    XColor *colors, *p;
     stored in ximg->data.  */
  
  static void
 -XPutPixel (ximg, x, y, color)
 -     XImagePtr  ximg;
 -     int x, y;
 -     COLORREF color;
 +XPutPixel (XImagePtr ximg, int x, int y, COLORREF color)
  {
    int width = ximg->info.bmiHeader.biWidth;
    int height = ximg->info.bmiHeader.biHeight;
     COLORS will be freed; an existing IMG->pixmap will be freed, too.  */
  
  static void
 -x_from_xcolors (f, img, colors)
 -     struct frame *f;
 -     struct image *img;
 -     XColor *colors;
 +x_from_xcolors (struct frame *f, struct image *img, XColor *colors)
  {
    int x, y;
    XImagePtr oimg = NULL;
     outgoing image.  */
  
  static void
 -x_detect_edges (f, img, matrix, color_adjust)
 -     struct frame *f;
 -     struct image *img;
 -     int matrix[9], color_adjust;
 +x_detect_edges (struct frame *f, struct image *img, int *matrix, int color_adjust)
  {
    XColor *colors = x_to_xcolors (f, img, 1);
    XColor *new, *p;
     on frame F.  */
  
  static void
 -x_emboss (f, img)
 -     struct frame *f;
 -     struct image *img;
 +x_emboss (struct frame *f, struct image *img)
  {
    x_detect_edges (f, img, emboss_matrix, 0xffff / 2);
  }
     to draw disabled buttons, for example.  */
  
  static void
 -x_laplace (f, img)
 -     struct frame *f;
 -     struct image *img;
 +x_laplace (struct frame *f, struct image *img)
  {
    x_detect_edges (f, img, laplace_matrix, 45000);
  }
     number.  */
  
  static void
 -x_edge_detection (f, img, matrix, color_adjust)
 -     struct frame *f;
 -     struct image *img;
 -     Lisp_Object matrix, color_adjust;
 +x_edge_detection (struct frame *f, struct image *img, Lisp_Object matrix,
 +                Lisp_Object color_adjust)
  {
    int i = 0;
    int trans[9];
  /* Transform image IMG on frame F so that it looks disabled.  */
  
  static void
 -x_disable_image (f, img)
 -     struct frame *f;
 -     struct image *img;
 +x_disable_image (struct frame *f, struct image *img)
  {
    Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
  #ifdef HAVE_NTGUI
     heuristically.  Value is non-zero if successful. */
  
  static int
 -x_build_heuristic_mask (f, img, how)
 -     struct frame *f;
 -     struct image *img;
 -     Lisp_Object how;
 +x_build_heuristic_mask (struct frame *f, struct image *img, Lisp_Object how)
  {
    XImagePtr_or_DC ximg;
  #ifndef HAVE_NTGUI
    /* Create the bit array serving as mask.  */
    row_width = (img->width + 7) / 8;
    mask_img = xmalloc (row_width * img->height);
 -  bzero (mask_img, row_width * img->height);
 +  memset (mask_img, 0, row_width * img->height);
  
    /* Create a memory device context for IMG->pixmap.  */
    frame_dc = get_frame_dc (f);
                                  ? PIX_MASK_DRAW : PIX_MASK_RETAIN));
  #else
        if (XGetPixel (ximg, x, y) == bg)
 -        ns_set_alpha(ximg, x, y, 0);
 +        ns_set_alpha (ximg, x, y, 0);
  #endif /* HAVE_NS */
  #ifndef HAVE_NS
    /* Fill in the background_transparent field while we have the mask handy. */
                       PBM (mono, gray, color)
   ***********************************************************************/
  
 -static int pbm_image_p P_ ((Lisp_Object object));
 -static int pbm_load P_ ((struct frame *f, struct image *img));
 -static int pbm_scan_number P_ ((unsigned char **, unsigned char *));
 +static int pbm_image_p (Lisp_Object object);
 +static int pbm_load (struct frame *f, struct image *img);
 +static int pbm_scan_number (unsigned char **, unsigned char *);
  
  /* The symbol `pbm' identifying images of this type.  */
  
@@@ -5004,11 -5122,12 +5005,11 @@@ static struct image_type pbm_type 
  /* Return non-zero if OBJECT is a valid PBM image specification.  */
  
  static int
 -pbm_image_p (object)
 -     Lisp_Object object;
 +pbm_image_p (Lisp_Object object)
  {
    struct image_keyword fmt[PBM_LAST];
  
 -  bcopy (pbm_format, fmt, sizeof fmt);
 +  memcpy (fmt, pbm_format, sizeof fmt);
  
    if (!parse_image_spec (object, fmt, PBM_LAST, Qpbm))
      return 0;
     end of input.  */
  
  static int
 -pbm_scan_number (s, end)
 -     unsigned char **s, *end;
 +pbm_scan_number (unsigned char **s, unsigned char *end)
  {
    int c = 0, val = -1;
  
@@@ -5098,18 -5218,23 +5099,18 @@@ pbm_read_file (file, size
  /* Load PBM image IMG for use on frame F.  */
  
  static int
 -pbm_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +pbm_load (struct frame *f, struct image *img)
  {
    int raw_p, x, y;
    int width, height, max_color_idx = 0;
    XImagePtr ximg;
    Lisp_Object file, specified_file;
    enum {PBM_MONO, PBM_GRAY, PBM_COLOR} type;
 -  struct gcpro gcpro1;
    unsigned char *contents = NULL;
    unsigned char *end, *p;
    int size;
  
    specified_file = image_spec_value (img->spec, QCfile, NULL);
 -  file = Qnil;
 -  GCPRO1 (file);
  
    if (STRINGP (specified_file))
      {
        if (!STRINGP (file))
        {
          image_error ("Cannot find image file `%s'", specified_file, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        if (contents == NULL)
        {
          image_error ("Error reading `%s'", file, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
      {
        Lisp_Object data;
        data = image_spec_value (img->spec, QCdata, NULL);
 +      if (!STRINGP (data))
 +      {
 +        image_error ("Invalid image data `%s'", data, Qnil);
 +        return 0;
 +      }
        p = SDATA (data);
        end = p + SBYTES (data);
      }
        image_error ("Not a PBM image: `%s'", img->spec, Qnil);
      error:
        xfree (contents);
 -      UNGCPRO;
        return 0;
      }
  
        unsigned long bg = FRAME_BACKGROUND_PIXEL (f);
  
        /* Parse the image specification.  */
 -      bcopy (pbm_format, fmt, sizeof fmt);
 +      memcpy (fmt, pbm_format, sizeof fmt);
        parse_image_spec (img->spec, fmt, PBM_LAST, Qpbm);
  
        /* Get foreground and background colors, maybe allocate colors.  */
       img->width = width;
       img->height = height; */
  
 -  UNGCPRO;
    xfree (contents);
    return 1;
  }
  
  /* Function prototypes.  */
  
 -static int png_image_p P_ ((Lisp_Object object));
 -static int png_load P_ ((struct frame *f, struct image *img));
 +static int png_image_p (Lisp_Object object);
 +static int png_load (struct frame *f, struct image *img);
  
  /* The symbol `png' identifying images of this type.  */
  
@@@ -5418,10 -5542,11 +5419,10 @@@ static struct image_type png_type 
  /* Return non-zero if OBJECT is a valid PNG image specification.  */
  
  static int
 -png_image_p (object)
 -     Lisp_Object object;
 +png_image_p (Lisp_Object object)
  {
    struct image_keyword fmt[PNG_LAST];
 -  bcopy (png_format, fmt, sizeof fmt);
 +  memcpy (fmt, png_format, sizeof fmt);
  
    if (!parse_image_spec (object, fmt, PNG_LAST, Qpng))
      return 0;
  #ifdef HAVE_NTGUI
  /* PNG library details.  */
  
 -DEF_IMGLIB_FN (png_get_io_ptr);
 -DEF_IMGLIB_FN (png_sig_cmp);
 -DEF_IMGLIB_FN (png_create_read_struct);
 -DEF_IMGLIB_FN (png_create_info_struct);
 -DEF_IMGLIB_FN (png_destroy_read_struct);
 -DEF_IMGLIB_FN (png_set_read_fn);
 -DEF_IMGLIB_FN (png_set_sig_bytes);
 -DEF_IMGLIB_FN (png_read_info);
 -DEF_IMGLIB_FN (png_get_IHDR);
 -DEF_IMGLIB_FN (png_get_valid);
 -DEF_IMGLIB_FN (png_set_strip_16);
 -DEF_IMGLIB_FN (png_set_expand);
 -DEF_IMGLIB_FN (png_set_gray_to_rgb);
 -DEF_IMGLIB_FN (png_set_background);
 -DEF_IMGLIB_FN (png_get_bKGD);
 -DEF_IMGLIB_FN (png_read_update_info);
 -DEF_IMGLIB_FN (png_get_channels);
 -DEF_IMGLIB_FN (png_get_rowbytes);
 -DEF_IMGLIB_FN (png_read_image);
 -DEF_IMGLIB_FN (png_read_end);
 -DEF_IMGLIB_FN (png_error);
 +DEF_IMGLIB_FN (png_get_io_ptr, (png_structp));
 +DEF_IMGLIB_FN (png_sig_cmp, (png_bytep, png_size_t, png_size_t));
 +DEF_IMGLIB_FN (png_create_read_struct, (png_const_charp, png_voidp,
 +                                      png_error_ptr, png_error_ptr));
 +DEF_IMGLIB_FN (png_create_info_struct, (png_structp));
 +DEF_IMGLIB_FN (png_destroy_read_struct, (png_structpp, png_infopp, png_infopp));
 +DEF_IMGLIB_FN (png_set_read_fn, (png_structp, png_voidp, png_rw_ptr));
 +DEF_IMGLIB_FN (png_set_sig_bytes, (png_structp, int));
 +DEF_IMGLIB_FN (png_read_info, (png_structp, png_infop));
 +DEF_IMGLIB_FN (png_get_IHDR, (png_structp, png_infop,
 +                            png_uint_32 *, png_uint_32 *,
 +                            int *, int *, int *, int *, int *));
 +DEF_IMGLIB_FN (png_get_valid, (png_structp, png_infop, png_uint_32));
 +DEF_IMGLIB_FN (png_set_strip_16, (png_structp));
 +DEF_IMGLIB_FN (png_set_expand, (png_structp));
 +DEF_IMGLIB_FN (png_set_gray_to_rgb, (png_structp));
 +DEF_IMGLIB_FN (png_set_background, (png_structp, png_color_16p,
 +                                  int, int, double));
 +DEF_IMGLIB_FN (png_get_bKGD, (png_structp, png_infop, png_color_16p *));
 +DEF_IMGLIB_FN (png_read_update_info, (png_structp, png_infop));
 +DEF_IMGLIB_FN (png_get_channels, (png_structp, png_infop));
 +DEF_IMGLIB_FN (png_get_rowbytes, (png_structp, png_infop));
 +DEF_IMGLIB_FN (png_read_image, (png_structp, png_bytepp));
 +DEF_IMGLIB_FN (png_read_end, (png_structp, png_infop));
 +DEF_IMGLIB_FN (png_error, (png_structp, png_const_charp));
  
  static int
  init_png_functions (Lisp_Object libraries)
     is initialized.  */
  
  static void
 -my_png_error (png_ptr, msg)
 -     png_struct *png_ptr;
 -     char *msg;
 +my_png_error (png_struct *png_ptr, const char *msg)
  {
    xassert (png_ptr != NULL);
    image_error ("PNG error: %s", build_string (msg), Qnil);
  
  
  static void
 -my_png_warning (png_ptr, msg)
 -     png_struct *png_ptr;
 -     char *msg;
 +my_png_warning (png_struct *png_ptr, const char *msg)
  {
    xassert (png_ptr != NULL);
    image_error ("PNG warning: %s", build_string (msg), Qnil);
@@@ -5556,7 -5681,10 +5557,7 @@@ struct png_memory_storag
     bytes from the input to DATA.  */
  
  static void
 -png_read_from_memory (png_ptr, data, length)
 -     png_structp png_ptr;
 -     png_bytep data;
 -     png_size_t length;
 +png_read_from_memory (png_structp png_ptr, png_bytep data, png_size_t length)
  {
    struct png_memory_storage *tbr
      = (struct png_memory_storage *) fn_png_get_io_ptr (png_ptr);
    if (length > tbr->len - tbr->index)
      fn_png_error (png_ptr, "Read error");
  
 -  bcopy (tbr->bytes + tbr->index, data, length);
 +  memcpy (data, tbr->bytes + tbr->index, length);
    tbr->index = tbr->index + length;
  }
  
     bytes from the input to DATA.  */
  
  static void
 -png_read_from_file (png_ptr, data, length)
 -     png_structp png_ptr;
 -     png_bytep data;
 -     png_size_t length;
 +png_read_from_file (png_structp png_ptr, png_bytep data, png_size_t length)
  {
    FILE *fp = (FILE *) fn_png_get_io_ptr (png_ptr);
  
     successful.  */
  
  static int
 -png_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +png_load (struct frame *f, struct image *img)
  {
    Lisp_Object file, specified_file;
    Lisp_Object specified_data;
    int x, y, i;
    XImagePtr ximg, mask_img = NULL;
 -  struct gcpro gcpro1;
    png_struct *png_ptr = NULL;
    png_info *info_ptr = NULL, *end_info = NULL;
    FILE *volatile fp = NULL;
    /* Find out what file to load.  */
    specified_file = image_spec_value (img->spec, QCfile, NULL);
    specified_data = image_spec_value (img->spec, QCdata, NULL);
 -  file = Qnil;
 -  GCPRO1 (file);
  
    if (NILP (specified_data))
      {
        if (!STRINGP (file))
        {
          image_error ("Cannot find image file `%s'", specified_file, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        if (!fp)
        {
          image_error ("Cannot open image file `%s'", file, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
          || fn_png_sig_cmp (sig, 0, sizeof sig))
        {
          image_error ("Not a PNG file: `%s'", file, Qnil);
 -        UNGCPRO;
          fclose (fp);
          return 0;
        }
      }
    else
      {
 +      if (!STRINGP (specified_data))
 +      {
 +        image_error ("Invalid image data `%s'", specified_data, Qnil);
 +        return 0;
 +      }
 +
        /* Read from memory.  */
        tbr.bytes = SDATA (specified_data);
        tbr.len = SBYTES (specified_data);
          || fn_png_sig_cmp (tbr.bytes, 0, sizeof sig))
        {
          image_error ("Not a PNG image: `%s'", img->spec, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
    if (!png_ptr)
      {
        if (fp) fclose (fp);
 -      UNGCPRO;
        return 0;
      }
  
      {
        fn_png_destroy_read_struct (&png_ptr, NULL, NULL);
        if (fp) fclose (fp);
 -      UNGCPRO;
        return 0;
      }
  
      {
        fn_png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
        if (fp) fclose (fp);
 -      UNGCPRO;
        return 0;
      }
  
        xfree (pixels);
        xfree (rows);
        if (fp) fclose (fp);
 -      UNGCPRO;
        return 0;
      }
  
            {
              png_color_16 user_bg;
  
 -            bzero (&user_bg, sizeof user_bg);
 +            memset (&user_bg, 0, sizeof user_bg);
              user_bg.red = color.red >> shift;
              user_bg.green = color.green >> shift;
              user_bg.blue = color.blue >> shift;
          color.pixel = FRAME_BACKGROUND_PIXEL (f);
          x_query_color (f, &color);
  
 -        bzero (&frame_background, sizeof frame_background);
 +        memset (&frame_background, 0, sizeof frame_background);
          frame_background.red = color.red >> shift;
          frame_background.green = color.green >> shift;
          frame_background.blue = color.blue >> shift;
        x_destroy_x_image (mask_img);
      }
  
 -  UNGCPRO;
    return 1;
  }
  
@@@ -5950,8 -6089,8 +5951,8 @@@ png_load (struct frame *f, struct imag
  
  #if defined (HAVE_JPEG) || defined (HAVE_NS)
  
 -static int jpeg_image_p P_ ((Lisp_Object object));
 -static int jpeg_load P_ ((struct frame *f, struct image *img));
 +static int jpeg_image_p (Lisp_Object object);
 +static int jpeg_load (struct frame *f, struct image *img);
  
  /* The symbol `jpeg' identifying images of this type.  */
  
@@@ -6005,11 -6144,12 +6006,11 @@@ static struct image_type jpeg_type 
  /* Return non-zero if OBJECT is a valid JPEG image specification.  */
  
  static int
 -jpeg_image_p (object)
 -     Lisp_Object object;
 +jpeg_image_p (Lisp_Object object)
  {
    struct image_keyword fmt[JPEG_LAST];
  
 -  bcopy (jpeg_format, fmt, sizeof fmt);
 +  memcpy (fmt, jpeg_format, sizeof fmt);
  
    if (!parse_image_spec (object, fmt, JPEG_LAST, Qjpeg))
      return 0;
  #ifdef HAVE_NTGUI
  
  /* JPEG library details.  */
 -DEF_IMGLIB_FN (jpeg_CreateDecompress);
 -DEF_IMGLIB_FN (jpeg_start_decompress);
 -DEF_IMGLIB_FN (jpeg_finish_decompress);
 -DEF_IMGLIB_FN (jpeg_destroy_decompress);
 -DEF_IMGLIB_FN (jpeg_read_header);
 -DEF_IMGLIB_FN (jpeg_read_scanlines);
 -DEF_IMGLIB_FN (jpeg_std_error);
 -DEF_IMGLIB_FN (jpeg_resync_to_restart);
 +DEF_IMGLIB_FN (jpeg_CreateDecompress, (j_decompress_ptr, int, size_t));
 +DEF_IMGLIB_FN (jpeg_start_decompress, (j_decompress_ptr));
 +DEF_IMGLIB_FN (jpeg_finish_decompress, (j_decompress_ptr));
 +DEF_IMGLIB_FN (jpeg_destroy_decompress, (j_decompress_ptr));
 +DEF_IMGLIB_FN (jpeg_read_header, (j_decompress_ptr, boolean));
 +DEF_IMGLIB_FN (jpeg_read_scanlines, (j_decompress_ptr, JSAMPARRAY, JDIMENSION));
 +DEF_IMGLIB_FN (jpeg_std_error, (struct jpeg_error_mgr *));
 +DEF_IMGLIB_FN (jpeg_resync_to_restart, (j_decompress_ptr, int));
  
  static int
  init_jpeg_functions (Lisp_Object libraries)
  /* Wrapper since we can't directly assign the function pointer
     to another function pointer that was declared more completely easily.  */
  static boolean
 -jpeg_resync_to_restart_wrapper (cinfo, desired)
 -     j_decompress_ptr cinfo;
 -     int desired;
 +jpeg_resync_to_restart_wrapper (j_decompress_ptr cinfo, int desired)
  {
    return fn_jpeg_resync_to_restart (cinfo, desired);
  }
@@@ -6102,7 -6244,8 +6103,7 @@@ struct my_jpeg_error_mg
  
  
  static void
 -my_error_exit (cinfo)
 -     j_common_ptr cinfo;
 +my_error_exit (j_common_ptr cinfo)
  {
    struct my_jpeg_error_mgr *mgr = (struct my_jpeg_error_mgr *) cinfo->err;
    longjmp (mgr->setjmp_buffer, 1);
     libjpeg.doc from the JPEG lib distribution.  */
  
  static void
 -our_common_init_source (cinfo)
 -     j_decompress_ptr cinfo;
 +our_common_init_source (j_decompress_ptr cinfo)
  {
  }
  
     jpeg_finish_decompress() after all data has been processed.  */
  
  static void
 -our_common_term_source (cinfo)
 -     j_decompress_ptr cinfo;
 +our_common_term_source (j_decompress_ptr cinfo)
  {
  }
  
  static JOCTET our_memory_buffer[2];
  
  static boolean
 -our_memory_fill_input_buffer (cinfo)
 -     j_decompress_ptr cinfo;
 +our_memory_fill_input_buffer (j_decompress_ptr cinfo)
  {
    /* Insert a fake EOI marker.  */
    struct jpeg_source_mgr *src = cinfo->src;
     is the JPEG data source manager.  */
  
  static void
 -our_memory_skip_input_data (cinfo, num_bytes)
 -     j_decompress_ptr cinfo;
 -     long num_bytes;
 +our_memory_skip_input_data (j_decompress_ptr cinfo, long int num_bytes)
  {
    struct jpeg_source_mgr *src = (struct jpeg_source_mgr *) cinfo->src;
  
     reading the image.  */
  
  static void
 -jpeg_memory_src (cinfo, data, len)
 -     j_decompress_ptr cinfo;
 -     JOCTET *data;
 -     unsigned int len;
 +jpeg_memory_src (j_decompress_ptr cinfo, JOCTET *data, unsigned int len)
  {
    struct jpeg_source_mgr *src;
  
@@@ -6216,7 -6367,8 +6217,7 @@@ struct jpeg_stdio_mg
     whenever more data is needed.  The data is read from a FILE *.  */
  
  static boolean
 -our_stdio_fill_input_buffer (cinfo)
 -     j_decompress_ptr cinfo;
 +our_stdio_fill_input_buffer (j_decompress_ptr cinfo)
  {
    struct jpeg_stdio_mgr *src;
  
     is the JPEG data source manager.  */
  
  static void
 -our_stdio_skip_input_data (cinfo, num_bytes)
 -     j_decompress_ptr cinfo;
 -     long num_bytes;
 +our_stdio_skip_input_data (j_decompress_ptr cinfo, long int num_bytes)
  {
    struct jpeg_stdio_mgr *src;
    src = (struct jpeg_stdio_mgr *) cinfo->src;
     reading the image.  */
  
  static void
 -jpeg_file_src (cinfo, fp)
 -     j_decompress_ptr cinfo;
 -     FILE *fp;
 +jpeg_file_src (j_decompress_ptr cinfo, FILE *fp)
  {
    struct jpeg_stdio_mgr *src;
  
     from the JPEG lib.  */
  
  static int
 -jpeg_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +jpeg_load (struct frame *f, struct image *img)
  {
    struct jpeg_decompress_struct cinfo;
    struct my_jpeg_error_mgr mgr;
    int rc;
    unsigned long *colors;
    int width, height;
 -  struct gcpro gcpro1;
  
    /* Open the JPEG file.  */
    specified_file = image_spec_value (img->spec, QCfile, NULL);
    specified_data = image_spec_value (img->spec, QCdata, NULL);
 -  file = Qnil;
 -  GCPRO1 (file);
  
    if (NILP (specified_data))
      {
        if (!STRINGP (file))
        {
          image_error ("Cannot find image file `%s'", specified_file, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        if (fp == NULL)
        {
          image_error ("Cannot open `%s'", file, Qnil);
 -        UNGCPRO;
          return 0;
        }
      }
 +  else if (!STRINGP (specified_data))
 +    {
 +      image_error ("Invalid image data `%s'", specified_data, Qnil);
 +      return 0;
 +    }
  
    /* Customize libjpeg's error handling to call my_error_exit when an
       error is detected.  This function will perform a longjmp.
  
        /* Free pixmap and colors.  */
        x_clear_image (f, img);
 -
 -      UNGCPRO;
        return 0;
      }
  
    /* Put the image into the pixmap.  */
    x_put_x_image (f, ximg, img->pixmap, width, height);
    x_destroy_x_image (ximg);
 -  UNGCPRO;
    return 1;
  }
  
  static int
  jpeg_load (struct frame *f, struct image *img)
  {
 -  return ns_load_image(f, img,
 -                       image_spec_value (img->spec, QCfile, NULL),
 -                       image_spec_value (img->spec, QCdata, NULL));
 +  return ns_load_image (f, img,
 +                      image_spec_value (img->spec, QCfile, NULL),
 +                      image_spec_value (img->spec, QCdata, NULL));
  }
  #endif  /* HAVE_NS */
  
  
  #if defined (HAVE_TIFF) || defined (HAVE_NS)
  
 -static int tiff_image_p P_ ((Lisp_Object object));
 -static int tiff_load P_ ((struct frame *f, struct image *img));
 +static int tiff_image_p (Lisp_Object object);
 +static int tiff_load (struct frame *f, struct image *img);
  
  /* The symbol `tiff' identifying images of this type.  */
  
@@@ -6557,10 -6718,11 +6558,10 @@@ static struct image_type tiff_type 
  /* Return non-zero if OBJECT is a valid TIFF image specification.  */
  
  static int
 -tiff_image_p (object)
 -     Lisp_Object object;
 +tiff_image_p (Lisp_Object object)
  {
    struct image_keyword fmt[TIFF_LAST];
 -  bcopy (tiff_format, fmt, sizeof fmt);
 +  memcpy (fmt, tiff_format, sizeof fmt);
  
    if (!parse_image_spec (object, fmt, TIFF_LAST, Qtiff))
      return 0;
  #ifdef HAVE_NTGUI
  
  /* TIFF library details.  */
 -DEF_IMGLIB_FN (TIFFSetErrorHandler);
 -DEF_IMGLIB_FN (TIFFSetWarningHandler);
 -DEF_IMGLIB_FN (TIFFOpen);
 -DEF_IMGLIB_FN (TIFFClientOpen);
 -DEF_IMGLIB_FN (TIFFGetField);
 -DEF_IMGLIB_FN (TIFFReadRGBAImage);
 -DEF_IMGLIB_FN (TIFFClose);
 -DEF_IMGLIB_FN (TIFFSetDirectory);
 +DEF_IMGLIB_FN (TIFFSetErrorHandler, (TIFFErrorHandler));
 +DEF_IMGLIB_FN (TIFFSetWarningHandler, (TIFFErrorHandler));
 +DEF_IMGLIB_FN (TIFFOpen, (const char *, const char *));
 +DEF_IMGLIB_FN (TIFFClientOpen, (const char *, const char *, thandle_t,
 +                              TIFFReadWriteProc, TIFFReadWriteProc,
 +                              TIFFSeekProc, TIFFCloseProc, TIFFSizeProc,
 +                              TIFFMapFileProc, TIFFUnmapFileProc));
 +DEF_IMGLIB_FN (TIFFGetField, (TIFF *, ttag_t, ...));
 +DEF_IMGLIB_FN (TIFFReadRGBAImage, (TIFF *, uint32, uint32, uint32 *, int));
 +DEF_IMGLIB_FN (TIFFClose, (TIFF *));
 +DEF_IMGLIB_FN (TIFFSetDirectory, (TIFF *, tdir_t));
  
  static int
  init_tiff_functions (Lisp_Object libraries)
@@@ -6640,25 -6799,34 +6641,25 @@@ typedef struc
  tiff_memory_source;
  
  static size_t
 -tiff_read_from_memory (data, buf, size)
 -     thandle_t data;
 -     tdata_t buf;
 -     tsize_t size;
 +tiff_read_from_memory (thandle_t data, tdata_t buf, tsize_t size)
  {
    tiff_memory_source *src = (tiff_memory_source *) data;
  
    if (size > src->len - src->index)
      return (size_t) -1;
 -  bcopy (src->bytes + src->index, buf, size);
 +  memcpy (buf, src->bytes + src->index, size);
    src->index += size;
    return size;
  }
  
  static size_t
 -tiff_write_from_memory (data, buf, size)
 -     thandle_t data;
 -     tdata_t buf;
 -     tsize_t size;
 +tiff_write_from_memory (thandle_t data, tdata_t buf, tsize_t size)
  {
    return (size_t) -1;
  }
  
  static toff_t
 -tiff_seek_in_memory (data, off, whence)
 -     thandle_t data;
 -     toff_t off;
 -     int whence;
 +tiff_seek_in_memory (thandle_t data, toff_t off, int whence)
  {
    tiff_memory_source *src = (tiff_memory_source *) data;
    int idx;
  }
  
  static int
 -tiff_close_memory (data)
 -     thandle_t data;
 +tiff_close_memory (thandle_t data)
  {
    /* NOOP */
    return 0;
  }
  
  static int
 -tiff_mmap_memory (data, pbase, psize)
 -     thandle_t data;
 -     tdata_t *pbase;
 -     toff_t *psize;
 +tiff_mmap_memory (thandle_t data, tdata_t *pbase, toff_t *psize)
  {
    /* It is already _IN_ memory. */
    return 0;
  }
  
  static void
 -tiff_unmap_memory (data, base, size)
 -     thandle_t data;
 -     tdata_t base;
 -     toff_t size;
 +tiff_unmap_memory (thandle_t data, tdata_t base, toff_t size)
  {
    /* We don't need to do this. */
  }
  
  static toff_t
 -tiff_size_of_memory (data)
 -     thandle_t data;
 +tiff_size_of_memory (thandle_t data)
  {
    return ((tiff_memory_source *) data)->len;
  }
  
  
  static void
 -tiff_error_handler (title, format, ap)
 -     const char *title, *format;
 -     va_list ap;
 +tiff_error_handler (const char *title, const char *format, va_list ap)
  {
    char buf[512];
    int len;
  
  
  static void
 -tiff_warning_handler (title, format, ap)
 -     const char *title, *format;
 -     va_list ap;
 +tiff_warning_handler (const char *title, const char *format, va_list ap)
  {
    char buf[512];
    int len;
     successful.  */
  
  static int
 -tiff_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +tiff_load (struct frame *f, struct image *img)
  {
    Lisp_Object file, specified_file;
    Lisp_Object specified_data;
    uint32 *buf;
    int rc, rc2;
    XImagePtr ximg;
 -  struct gcpro gcpro1;
    tiff_memory_source memsrc;
    Lisp_Object image;
  
    specified_file = image_spec_value (img->spec, QCfile, NULL);
    specified_data = image_spec_value (img->spec, QCdata, NULL);
 -  file = Qnil;
 -  GCPRO1 (file);
  
    fn_TIFFSetErrorHandler (tiff_error_handler);
    fn_TIFFSetWarningHandler (tiff_warning_handler);
        if (!STRINGP (file))
        {
          image_error ("Cannot find image file `%s'", specified_file, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        if (tiff == NULL)
        {
          image_error ("Cannot open `%s'", file, Qnil);
 -        UNGCPRO;
          return 0;
        }
      }
    else
      {
 +      if (!STRINGP (specified_data))
 +      {
 +        image_error ("Invalid image data `%s'", specified_data, Qnil);
 +        return 0;
 +      }
 +
        /* Memory source! */
        memsrc.bytes = SDATA (specified_data);
        memsrc.len = SBYTES (specified_data);
        memsrc.index = 0;
  
 -      /* Casting return value avoids a GCC warning on W32.  */
 -      tiff = (TIFF *)fn_TIFFClientOpen ("memory_source", "r", &memsrc,
 +      /* Casting arguments return value avoids a GCC warning on W32.  */
 +      tiff = (TIFF *)fn_TIFFClientOpen ("memory_source", "r",
 +                                      (thandle_t) &memsrc,
                                        (TIFFReadWriteProc) tiff_read_from_memory,
                                        (TIFFReadWriteProc) tiff_write_from_memory,
                                        tiff_seek_in_memory,
        if (!tiff)
        {
          image_error ("Cannot open memory source for `%s'", img->spec, Qnil);
 -        UNGCPRO;
          return 0;
        }
      }
          image_error ("Invalid image number `%s' in image `%s'",
                       image, img->spec);
          fn_TIFFClose (tiff);
 -        UNGCPRO;
          return 0;
        }
      }
      {
        image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
        fn_TIFFClose (tiff);
 -      UNGCPRO;
        return 0;
      }
  
      {
        image_error ("Error reading TIFF image `%s'", img->spec, Qnil);
        xfree (buf);
 -      UNGCPRO;
        return 0;
      }
  
    if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap))
      {
        xfree (buf);
 -      UNGCPRO;
        return 0;
      }
  
    x_destroy_x_image (ximg);
    xfree (buf);
  
 -  UNGCPRO;
    return 1;
  }
  
  static int
  tiff_load (struct frame *f, struct image *img)
  {
 -  return ns_load_image(f, img,
 -                       image_spec_value (img->spec, QCfile, NULL),
 -                       image_spec_value (img->spec, QCdata, NULL));
 +  return ns_load_image (f, img,
 +                        image_spec_value (img->spec, QCfile, NULL),
 +                        image_spec_value (img->spec, QCdata, NULL));
  }
  #endif  /* HAVE_NS */
  
  
  #if defined (HAVE_GIF) || defined (HAVE_NS)
  
 -static int gif_image_p P_ ((Lisp_Object object));
 -static int gif_load P_ ((struct frame *f, struct image *img));
 -static void gif_clear_image P_ ((struct frame *f, struct image *img));
 +static int gif_image_p (Lisp_Object object);
 +static int gif_load (struct frame *f, struct image *img);
 +static void gif_clear_image (struct frame *f, struct image *img);
  
  /* The symbol `gif' identifying images of this type.  */
  
@@@ -6984,9 -7170,11 +6985,9 @@@ static struct image_type gif_type 
  /* Free X resources of GIF image IMG which is used on frame F.  */
  
  static void
 -gif_clear_image (f, img)
 -     struct frame *f;
 -     struct image *img;
 +gif_clear_image (struct frame *f, struct image *img)
  {
 -  /* IMG->data.ptr_val may contain extension data.  */
 +  /* IMG->data.ptr_val may contain metadata with extension data.  */
    img->data.lisp_val = Qnil;
    x_clear_image (f, img);
  }
  /* Return non-zero if OBJECT is a valid GIF image specification.  */
  
  static int
 -gif_image_p (object)
 -     Lisp_Object object;
 +gif_image_p (Lisp_Object object)
  {
    struct image_keyword fmt[GIF_LAST];
 -  bcopy (gif_format, fmt, sizeof fmt);
 +  memcpy (fmt, gif_format, sizeof fmt);
  
    if (!parse_image_spec (object, fmt, GIF_LAST, Qgif))
      return 0;
  #ifdef HAVE_NTGUI
  
  /* GIF library details.  */
 -DEF_IMGLIB_FN (DGifCloseFile);
 -DEF_IMGLIB_FN (DGifSlurp);
 -DEF_IMGLIB_FN (DGifOpen);
 -DEF_IMGLIB_FN (DGifOpenFileName);
 +DEF_IMGLIB_FN (DGifCloseFile, (GifFileType *));
 +DEF_IMGLIB_FN (DGifSlurp, (GifFileType *));
 +DEF_IMGLIB_FN (DGifOpen, (void *, InputFunc));
 +DEF_IMGLIB_FN (DGifOpenFileName, (const char *));
  
  static int
  init_gif_functions (Lisp_Object libraries)
@@@ -7077,14 -7266,17 +7078,14 @@@ gif_memory_source
  static gif_memory_source *current_gif_memory_src;
  
  static int
 -gif_read_from_memory (file, buf, len)
 -     GifFileType *file;
 -     GifByteType *buf;
 -     int len;
 +gif_read_from_memory (GifFileType *file, GifByteType *buf, int len)
  {
    gif_memory_source *src = current_gif_memory_src;
  
    if (len > src->len - src->index)
      return -1;
  
 -  bcopy (src->bytes + src->index, buf, len);
 +  memcpy (buf, src->bytes + src->index, len);
    src->index += len;
    return len;
  }
  static const int interlace_start[] = {0, 4, 2, 1};
  static const int interlace_increment[] = {8, 8, 4, 2};
  
 +#define GIF_LOCAL_DESCRIPTOR_EXTENSION 249
 +
  static int
 -gif_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +gif_load (struct frame *f, struct image *img)
  {
    Lisp_Object file, specified_file;
    Lisp_Object specified_data;
    int rc, width, height, x, y, i;
 +  boolean transparent_p;
    XImagePtr ximg;
    ColorMapObject *gif_color_map;
    unsigned long pixel_colors[256];
    GifFileType *gif;
 -  struct gcpro gcpro1;
    Lisp_Object image;
    int ino, image_height, image_width;
    gif_memory_source memsrc;
    unsigned char *raster;
 +  unsigned int transparency_color_index;
  
    specified_file = image_spec_value (img->spec, QCfile, NULL);
    specified_data = image_spec_value (img->spec, QCdata, NULL);
 -  file = Qnil;
 -  GCPRO1 (file);
  
    if (NILP (specified_data))
      {
        if (!STRINGP (file))
        {
          image_error ("Cannot find image file `%s'", specified_file, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        if (gif == NULL)
        {
          image_error ("Cannot open `%s'", file, Qnil);
 -        UNGCPRO;
          return 0;
        }
      }
    else
      {
 +      if (!STRINGP (specified_data))
 +      {
 +        image_error ("Invalid image data `%s'", specified_data, Qnil);
 +        return 0;
 +      }
 +
        /* Read from memory! */
        current_gif_memory_src = &memsrc;
        memsrc.bytes = SDATA (specified_data);
        if (!gif)
        {
          image_error ("Cannot open memory source `%s'", img->spec, Qnil);
 -        UNGCPRO;
          return 0;
        }
      }
      {
        image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
        fn_DGifCloseFile (gif);
 -      UNGCPRO;
        return 0;
      }
  
      {
        image_error ("Error reading `%s'", img->spec, Qnil);
        fn_DGifCloseFile (gif);
 -      UNGCPRO;
        return 0;
      }
  
        image_error ("Invalid image number `%s' in image `%s'",
                   image, img->spec);
        fn_DGifCloseFile (gif);
 -      UNGCPRO;
        return 0;
      }
  
 +  for (i = 0; i < gif->SavedImages[ino].ExtensionBlockCount; i++)
 +    if ((gif->SavedImages[ino].ExtensionBlocks[i].Function
 +       == GIF_LOCAL_DESCRIPTOR_EXTENSION)
 +      && gif->SavedImages[ino].ExtensionBlocks[i].ByteCount == 4
 +      /* Transparency enabled?  */
 +      && gif->SavedImages[ino].ExtensionBlocks[i].Bytes[0] & 1)
 +      {
 +      transparent_p = 1;
 +      transparency_color_index
 +        = (unsigned char) gif->SavedImages[ino].ExtensionBlocks[i].Bytes[3];
 +      }
 +
    img->corners[TOP_CORNER] = gif->SavedImages[ino].ImageDesc.Top;
    img->corners[LEFT_CORNER] = gif->SavedImages[ino].ImageDesc.Left;
    image_height = gif->SavedImages[ino].ImageDesc.Height;
      {
        image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
        fn_DGifCloseFile (gif);
 -      UNGCPRO;
        return 0;
      }
  
    if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap))
      {
        fn_DGifCloseFile (gif);
 -      UNGCPRO;
        return 0;
      }
  
    if (!gif_color_map)
      gif_color_map = gif->SColorMap;
    init_color_table ();
 -  bzero (pixel_colors, sizeof pixel_colors);
 +  memset (pixel_colors, 0, sizeof pixel_colors);
  
    if (gif_color_map)
      for (i = 0; i < gif_color_map->ColorCount; ++i)
        {
 -        int r = gif_color_map->Colors[i].Red << 8;
 -        int g = gif_color_map->Colors[i].Green << 8;
 -        int b = gif_color_map->Colors[i].Blue << 8;
 -        pixel_colors[i] = lookup_rgb_color (f, r, g, b);
 +      if (transparent_p && transparency_color_index == i)
 +        {
 +          Lisp_Object specified_bg
 +            = image_spec_value (img->spec, QCbackground, NULL);
 +          pixel_colors[i] = STRINGP (specified_bg)
 +            ? x_alloc_image_color (f, img, specified_bg,
 +                                   FRAME_BACKGROUND_PIXEL (f))
 +            : FRAME_BACKGROUND_PIXEL (f);
 +        }
 +      else
 +        {
 +          int r = gif_color_map->Colors[i].Red << 8;
 +          int g = gif_color_map->Colors[i].Green << 8;
 +          int b = gif_color_map->Colors[i].Blue << 8;
 +          pixel_colors[i] = lookup_rgb_color (f, r, g, b);
 +        }
        }
  
  #ifdef COLOR_TABLE_SUPPORT
          }
      }
  
 -  /* Save GIF image extension data for `image-extension-data'.
 -     Format is (count IMAGES FUNCTION "BYTES" ...).  */
 +  /* Save GIF image extension data for `image-metadata'.
 +     Format is (count IMAGES extension-data (FUNCTION "BYTES" ...)).  */
    img->data.lisp_val = Qnil;
    if (gif->SavedImages[ino].ExtensionBlockCount > 0)
      {
        img->data.lisp_val = Fcons (make_unibyte_string (ext->Bytes, ext->ByteCount),
                                    Fcons (make_number (ext->Function),
                                           img->data.lisp_val));
 -      img->data.lisp_val = Fnreverse (img->data.lisp_val);
 +      img->data.lisp_val = Fcons (Qextension_data,
 +                                Fcons (Fnreverse (img->data.lisp_val),
 +                                       Qnil));
      }
    if (gif->ImageCount > 1)
      img->data.lisp_val = Fcons (Qcount,
    x_put_x_image (f, ximg, img->pixmap, width, height);
    x_destroy_x_image (ximg);
  
 -  UNGCPRO;
    return 1;
  }
  
  static int
  gif_load (struct frame *f, struct image *img)
  {
 -  return ns_load_image(f, img,
 -                       image_spec_value (img->spec, QCfile, NULL),
 -                       image_spec_value (img->spec, QCdata, NULL));
 +  return ns_load_image (f, img,
 +                        image_spec_value (img->spec, QCfile, NULL),
 +                      image_spec_value (img->spec, QCdata, NULL));
  }
  #endif /* HAVE_NS */
  
  #endif /* HAVE_GIF */
  
  
 +/***********************************************************************
 +                               imagemagick
 +***********************************************************************/
 +#if defined (HAVE_IMAGEMAGICK)
 +Lisp_Object Vimagemagick_render_type;
 +
 +/* The symbol `imagemagick' identifying images of this type.  */
 +
 +Lisp_Object Qimagemagick;
 +Lisp_Object Vimagemagick_render_type;
 +
 +/* Indices of image specification fields in imagemagick_format, below.  */
 +
 +enum imagemagick_keyword_index
 +  {
 +    IMAGEMAGICK_TYPE,
 +    IMAGEMAGICK_DATA,
 +    IMAGEMAGICK_FILE,
 +    IMAGEMAGICK_ASCENT,
 +    IMAGEMAGICK_MARGIN,
 +    IMAGEMAGICK_RELIEF,
 +    IMAGEMAGICK_ALGORITHM,
 +    IMAGEMAGICK_HEURISTIC_MASK,
 +    IMAGEMAGICK_MASK,
 +    IMAGEMAGICK_BACKGROUND,
 +    IMAGEMAGICK_HEIGHT,
 +    IMAGEMAGICK_WIDTH,
 +    IMAGEMAGICK_ROTATION,
 +    IMAGEMAGICK_CROP,
 +    IMAGEMAGICK_LAST
 +  };
 +
 +/* Vector of image_keyword structures describing the format
 +   of valid user-defined image specifications.  */
 +
 +static struct image_keyword imagemagick_format[IMAGEMAGICK_LAST] =
 +  {
 +    {":type",         IMAGE_SYMBOL_VALUE,                     1},
 +    {":data",         IMAGE_STRING_VALUE,                     0},
 +    {":file",         IMAGE_STRING_VALUE,                     0},
 +    {":ascent",               IMAGE_ASCENT_VALUE,                     0},
 +    {":margin",               IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,   0},
 +    {":relief",               IMAGE_INTEGER_VALUE,                    0},
 +    {":conversion",   IMAGE_DONT_CHECK_VALUE_TYPE,            0},
 +    {":heuristic-mask",       IMAGE_DONT_CHECK_VALUE_TYPE,            0},
 +    {":mask",         IMAGE_DONT_CHECK_VALUE_TYPE,            0},
 +    {":background",   IMAGE_STRING_OR_NIL_VALUE,              0},
 +    {":height",               IMAGE_INTEGER_VALUE,                    0},
 +    {":width",                IMAGE_INTEGER_VALUE,                    0},
 +    {":rotation",     IMAGE_NUMBER_VALUE,                     0},
 +    {":crop",         IMAGE_DONT_CHECK_VALUE_TYPE,            0}
 +  };
 +/* Free X resources of imagemagick image IMG which is used on frame F.  */
 +
 +static void
 +imagemagick_clear_image (struct frame *f,
 +                         struct image *img)
 +{
 +  x_clear_image (f, img);
 +}
 +
 +
 +
 +/* Return non-zero if OBJECT is a valid IMAGEMAGICK image specification.  Do
 +   this by calling parse_image_spec and supplying the keywords that
 +   identify the IMAGEMAGICK format.   */
 +
 +static int
 +imagemagick_image_p (Lisp_Object object)
 +{
 +  struct image_keyword fmt[IMAGEMAGICK_LAST];
 +  memcpy (fmt, imagemagick_format, sizeof fmt);
 +
 +  if (!parse_image_spec (object, fmt, IMAGEMAGICK_LAST, Qimagemagick))
 +    return 0;
 +
 +  /* Must specify either the :data or :file keyword.  */
 +  return fmt[IMAGEMAGICK_FILE].count + fmt[IMAGEMAGICK_DATA].count == 1;
 +}
 +
 +/* The GIF library also defines DrawRectangle, but its never used in Emacs.
 +   Therefore rename the function so it doesnt collide with ImageMagick.  */
 +#define DrawRectangle DrawRectangleGif
 +#include <wand/MagickWand.h>
 +
 +/* imagemagick_load_image is a helper function for imagemagick_load,
 +   which does the actual loading given contents and size, apart from
 +   frame and image structures, passed from imagemagick_load.
 +
 +   Uses librimagemagick to do most of the image processing.
 +
 +   non-zero when successful.
 +*/
 +
 +static int
 +imagemagick_load_image (/* Pointer to emacs frame structure.  */
 +                        struct frame *f,
 +                        /* Pointer to emacs image structure.  */
 +                        struct image *img,
 +                        /* String containing the IMAGEMAGICK data to
 +                           be parsed.  */
 +                        unsigned char *contents,
 +                        /* Size of data in bytes.  */
 +                        unsigned int size,
 +                        /* Filename, either pass filename or
 +                           contents/size.  */
 +                        unsigned char *filename)
 +{
 +  unsigned long width;
 +  unsigned long height;
 +
 +  MagickBooleanType
 +    status;
 +
 +  XImagePtr ximg;
 +  Lisp_Object specified_bg;
 +  XColor background;
 +  int x;
 +  int y;
 +
 +  MagickWand  *image_wand;
 +  MagickWand  *ping_wand;
 +  PixelIterator *iterator;
 +  PixelWand  **pixels;
 +  MagickPixelPacket  pixel;
 +  Lisp_Object image;
 +  Lisp_Object value;
 +  Lisp_Object crop, geometry;
 +  long ino;
 +  int desired_width, desired_height;
 +  double rotation;
 +  int imagemagick_rendermethod;
 +  int pixelwidth;
 +  ImageInfo  *image_info;
 +  ExceptionInfo *exception;
 +  Image * im_image;
 +
 +
 +  /* Handle image index for image types who can contain more than one
 +     image.  Interface :index is same as for GIF.  First we "ping" the
 +     image to see how many sub-images it contains. Pinging is faster
 +     than loading the image to find out things about it.  */
 +  image = image_spec_value (img->spec, QCindex, NULL);
 +  ino = INTEGERP (image) ? XFASTINT (image) : 0;
 +  ping_wand = NewMagickWand ();
 +  MagickSetResolution (ping_wand, 2, 2);
 +  if (filename != NULL)
 +    {
 +      status = MagickPingImage (ping_wand, filename);
 +    }
 +  else
 +    {
 +      status = MagickPingImageBlob (ping_wand, contents, size);
 +    }
 +
 +  if (ino >= MagickGetNumberImages (ping_wand))
 +    {
 +      image_error ("Invalid image number `%s' in image `%s'",
 +                 image, img->spec);
 +      DestroyMagickWand (ping_wand);
 +      return 0;
 +    }
 +
 +  if (MagickGetNumberImages(ping_wand) > 1)
 +    img->data.lisp_val =
 +      Fcons (Qcount,
 +             Fcons (make_number (MagickGetNumberImages (ping_wand)),
 +                    img->data.lisp_val));
 +
 +  DestroyMagickWand (ping_wand);
 +  /* Now, after pinging, we know how many images are inside the
 +     file. If its not a bundle, just one.  */
 +
 +  if (filename != NULL)
 +    {
 +      image_info = CloneImageInfo ((ImageInfo *) NULL);
 +      (void) strcpy (image_info->filename, filename);
 +      image_info->number_scenes = 1;
 +      image_info->scene = ino;
 +      exception = AcquireExceptionInfo ();
 +
 +      im_image = ReadImage (image_info, exception);
 +      CatchException (exception);
 +
 +      image_wand = NewMagickWandFromImage (im_image);
 +    }
 +  else
 +    {
 +      image_wand = NewMagickWand ();
 +      status = MagickReadImageBlob (image_wand, contents, size);
 +    }
 +  image_error ("im read failed", Qnil, Qnil);
 +  if (status == MagickFalse) goto imagemagick_error;
 +
 +  /* If width and/or height is set in the display spec assume we want
 +     to scale to those values.  if either h or w is unspecified, the
 +     unspecified should be calculated from the specified to preserve
 +     aspect ratio.  */
 +
 +  value = image_spec_value (img->spec, QCwidth, NULL);
 +  desired_width = (INTEGERP (value)  ? XFASTINT (value) : -1);
 +  value = image_spec_value (img->spec, QCheight, NULL);
 +  desired_height = (INTEGERP (value) ? XFASTINT (value) : -1);
 +
 +  height = MagickGetImageHeight (image_wand);
 +  width = MagickGetImageWidth (image_wand);
 +
 +  if(desired_width != -1 && desired_height == -1)
 +    {
 +      /* w known, calculate h.  */
 +      desired_height = (double) desired_width / width * height;
 +    }
 +  if(desired_width == -1 && desired_height != -1)
 +    {
 +      /* h known, calculate w.  */
 +      desired_width = (double) desired_height / height * width;
 +    }
 +  if(desired_width != -1 && desired_height != -1)
 +    {
 +      status = MagickScaleImage (image_wand, desired_width, desired_height);
 +      if (status == MagickFalse)
 +      {
 +        image_error ("Imagemagick scale failed", Qnil, Qnil);
 +        goto imagemagick_error;
 +      }
 +    }
 +
 +
 +  /* crop behaves similar to image slicing in Emacs but is more memory
 +     efficient.  */
 +  crop = image_spec_value (img->spec, QCcrop, NULL);
 +
 +  if (CONSP (crop) && INTEGERP (XCAR (crop)))
 +    {
 +      /* After some testing, it seems MagickCropImage is the fastest
 +         crop function in ImageMagick.  This crop function seems to do
 +         less copying than the alternatives, but it still reads the
 +         entire image into memory before croping, which is aparently
 +         difficult to avoid when using imagemagick.  */
 +
 +      int w, h, x, y;
 +      w = XFASTINT (XCAR (crop));
 +      crop = XCDR (crop);
 +      if (CONSP (crop) && INTEGERP (XCAR (crop)))
 +      {
 +        h = XFASTINT (XCAR (crop));
 +        crop = XCDR (crop);
 +        if (CONSP (crop) && INTEGERP (XCAR (crop)))
 +          {
 +            x = XFASTINT (XCAR (crop));
 +            crop = XCDR (crop);
 +            if (CONSP (crop) && INTEGERP (XCAR (crop)))
 +              {
 +                y = XFASTINT (XCAR (crop));
 +                MagickCropImage (image_wand, w, h, x, y);
 +              }
 +          }
 +      }
 +    }
 +
 +  /* Furthermore :rotation. we need background color and angle for
 +     rotation.  */
 +  /*
 +    TODO background handling for rotation specified_bg =
 +    image_spec_value (img->spec, QCbackground, NULL); if (!STRINGP
 +    (specified_bg).  */
 +  value = image_spec_value (img->spec, QCrotation, NULL);
 +  if (FLOATP (value))
 +    {
 +      PixelWand* background = NewPixelWand ();
 +      PixelSetColor (background, "#ffffff");/*TODO remove hardcode*/
 +
 +      rotation = extract_float (value);
 +
 +      status = MagickRotateImage (image_wand, background, rotation);
 +      DestroyPixelWand (background);
 +      if (status == MagickFalse)
 +        {
 +          image_error ("Imagemagick image rotate failed", Qnil, Qnil);
 +          goto imagemagick_error;
 +        }
 +    }
 +
 +  /* Finaly we are done manipulating the image, figure out resulting
 +     width, height, and then transfer ownerwship to Emacs.  */
 +  height = MagickGetImageHeight (image_wand);
 +  width = MagickGetImageWidth (image_wand);
 +  if (status == MagickFalse)
 +    {
 +      image_error ("Imagemagick image get size failed", Qnil, Qnil);
 +      goto imagemagick_error;
 +    }
 +
 +  if (! check_image_size (f, width, height))
 +    {
 +      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
 +      goto imagemagick_error;
 +    }
 +
 +  /* We can now get a valid pixel buffer from the imagemagick file, if all
 +     went ok.  */
 +
 +  init_color_table ();
 +  imagemagick_rendermethod = (INTEGERP (Vimagemagick_render_type)
 +                              ? XFASTINT (Vimagemagick_render_type) : 0);
 +  if (imagemagick_rendermethod == 0)
 +    {
 +      /* Try to create a x pixmap to hold the imagemagick pixmap.  */
 +      if (!x_create_x_image_and_pixmap (f, width, height, 0,
 +                                        &ximg, &img->pixmap))
 +        {
 +          image_error("Imagemagick X bitmap allocation failure", Qnil, Qnil);
 +          goto imagemagick_error;
 +        }
 +
 +      /* Copy imagegmagick image to x with primitive yet robust pixel
 +         pusher loop.  This has been tested a lot with many different
 +         images.  */
 +
 +      /* Copy pixels from the imagemagick image structure to the x image map. */
 +      iterator = NewPixelIterator (image_wand);
 +      if (iterator == (PixelIterator *) NULL)
 +        {
 +          image_error ("Imagemagick pixel iterator creation failed",
 +                       Qnil, Qnil);
 +          goto imagemagick_error;
 +        }
 +
 +      for (y = 0; y < (long) MagickGetImageHeight (image_wand); y++)
 +        {
 +          pixels = PixelGetNextIteratorRow (iterator, &width);
 +          if (pixels == (PixelWand **) NULL)
 +            break;
 +          for (x = 0; x < (long) width; x++)
 +            {
 +              PixelGetMagickColor (pixels[x], &pixel);
 +              XPutPixel (ximg, x, y,
 +                         lookup_rgb_color (f,
 +                                           pixel.red,
 +                                           pixel.green,
 +                                           pixel.blue));
 +            }
 +        }
 +      DestroyPixelIterator (iterator);
 +    }
 +
 +  if (imagemagick_rendermethod == 1)
 +    {
 +      /* Magicexportimage is normaly faster than pixelpushing.  This
 +         method is also well tested. Some aspects of this method are
 +         ad-hoc and needs to be more researched. */
 +      int imagedepth = 24;/*MagickGetImageDepth(image_wand);*/
 +      char* exportdepth = imagedepth <= 8 ? "I" : "BGRP";/*"RGBP";*/
 +      /* Try to create a x pixmap to hold the imagemagick pixmap.  */
 +      if (!x_create_x_image_and_pixmap (f, width, height, imagedepth,
 +                                        &ximg, &img->pixmap))
 +      {
 +        image_error("Imagemagick X bitmap allocation failure", Qnil, Qnil);
 +        goto imagemagick_error;
 +      }
 +
 +
 +      /* Oddly, the below code doesnt seem to work:*/
 +      /* switch(ximg->bitmap_unit){ */
 +      /* case 8: */
 +      /*   pixelwidth=CharPixel; */
 +      /*   break; */
 +      /* case   16: */
 +      /*   pixelwidth=ShortPixel; */
 +      /*   break; */
 +      /* case   32: */
 +      /*   pixelwidth=LongPixel; */
 +      /*   break; */
 +      /* } */
 +      /*
 +        Here im just guessing the format of the bitmap.
 +        happens to work fine for:
 +        - bw djvu images
 +        on rgb display.
 +        seems about 3 times as fast as pixel pushing(not carefully measured)
 +      */
 +      pixelwidth = CharPixel;/*??? TODO figure out*/
 +#ifdef HAVE_MAGICKEXPORTIMAGEPIXELS
 +      MagickExportImagePixels (image_wand,
 +                             0, 0,
 +                             width, height,
 +                             exportdepth,
 +                             pixelwidth,
 +                             /*&(img->pixmap));*/
 +                             ximg->data);
 +#else
 +      image_error ("You dont have MagickExportImagePixels, upgrade ImageMagick!",
 +                 Qnil, Qnil);
 +#endif
 +    }
 +
 +
 +#ifdef COLOR_TABLE_SUPPORT
 +  /* Remember colors allocated for this image.  */
 +  img->colors = colors_in_color_table (&img->ncolors);
 +  free_color_table ();
 +#endif /* COLOR_TABLE_SUPPORT */
 +
 +
 +  img->width  = width;
 +  img->height = height;
 +
 +  /* Put the image into the pixmap, then free the X image and its
 +     buffer.  */
 +  x_put_x_image (f, ximg, img->pixmap, width, height);
 +  x_destroy_x_image (ximg);
 +
 +
 +  /* Final cleanup. image_wand should be the only resource left. */
 +  DestroyMagickWand (image_wand);
 +
 +  return 1;
 +
 + imagemagick_error:
 +  /* TODO more cleanup.  */
 +  image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec, Qnil);
 +  return 0;
 +}
 +
 +
 +/* Load IMAGEMAGICK image IMG for use on frame F.  Value is non-zero if
 +   successful. this function will go into the imagemagick_type structure, and
 +   the prototype thus needs to be compatible with that structure.  */
 +
 +static int
 +imagemagick_load (struct frame *f,
 +                  struct image *img)
 +{
 +  int success_p = 0;
 +  Lisp_Object file_name;
 +
 +  /* If IMG->spec specifies a file name, create a non-file spec from it.  */
 +  file_name = image_spec_value (img->spec, QCfile, NULL);
 +  if (STRINGP (file_name))
 +    {
 +      Lisp_Object file;
 +
 +      file = x_find_image_file (file_name);
 +      if (!STRINGP (file))
 +      {
 +        image_error ("Cannot find image file `%s'", file_name, Qnil);
 +        return 0;
 +      }
 +      success_p = imagemagick_load_image (f, img, 0, 0, SDATA (file));
 +    }
 +  /* Else its not a file, its a lisp object.  Load the image from a
 +     lisp object rather than a file.  */
 +  else
 +    {
 +      Lisp_Object data;
 +
 +      data = image_spec_value (img->spec, QCdata, NULL);
 +      if (!STRINGP (data))
 +      {
 +        image_error ("Invalid image data `%s'", data, Qnil);
 +        return 0;
 +      }
 +      success_p = imagemagick_load_image (f, img, SDATA (data),
 +                                          SBYTES (data), NULL);
 +    }
 +
 +  return success_p;
 +}
 +
 +/* Structure describing the image type `imagemagick'.  Its the same
 +   type of structure defined for all image formats, handled by Emacs
 +   image functions.  See struct image_type in dispextern.h.  */
 +
 +static struct image_type imagemagick_type =
 +  {
 +    /* An identifier showing that this is an image structure for the
 +       IMAGEMAGICK format.  */
 +    &Qimagemagick,
 +    /* Handle to a function that can be used to identify a IMAGEMAGICK
 +       file.  */
 +    imagemagick_image_p,
 +    /* Handle to function used to load a IMAGEMAGICK file.  */
 +    imagemagick_load,
 +    /* Handle to function to free resources for IMAGEMAGICK.  */
 +    imagemagick_clear_image,
 +    /* An internal field to link to the next image type in a list of
 +       image types, will be filled in when registering the format.  */
 +    NULL
 +  };
 +
 +
 +
 +
 +DEFUN ("imagemagick-types", Fimagemagick_types, Simagemagick_types, 0, 0, 0,
 +       doc: /* Return image file types supported by ImageMagick.
 +Since ImageMagick recognizes a lot of file-types that clash with Emacs,
 +such as .c, we want to be able to alter the list at the lisp level.  */)
 +  (void)
 +{
 +  Lisp_Object typelist = Qnil;
 +  unsigned long numf;
 +  ExceptionInfo ex;
 +  char **imtypes = GetMagickList ("*", &numf, &ex);
 +  int i;
 +  Lisp_Object Qimagemagicktype;
 +  for (i = 0; i < numf; i++)
 +    {
 +      Qimagemagicktype = intern (imtypes[i]);
 +      typelist = Fcons (Qimagemagicktype, typelist);
 +    }
 +  return typelist;
 +}
 +
 +#endif        /* defined (HAVE_IMAGEMAGICK) */
 +
 +
  \f
  /***********************************************************************
                                 SVG
  
  /* Function prototypes.  */
  
 -static int svg_image_p P_ ((Lisp_Object object));
 -static int svg_load P_ ((struct frame *f, struct image *img));
 +static int svg_image_p (Lisp_Object object);
 +static int svg_load (struct frame *f, struct image *img);
  
 -static int svg_load_image P_ ((struct frame *, struct image *,
 -                             unsigned char *, unsigned int));
 +static int svg_load_image (struct frame *, struct image *,
 +                           unsigned char *, unsigned int);
  
  /* The symbol `svg' identifying images of this type. */
  
@@@ -7965,10 -7619,11 +7966,10 @@@ static struct image_type svg_type 
     identify the SVG format.   */
  
  static int
 -svg_image_p (object)
 -     Lisp_Object object;
 +svg_image_p (Lisp_Object object)
  {
    struct image_keyword fmt[SVG_LAST];
 -  bcopy (svg_format, fmt, sizeof fmt);
 +  memcpy (fmt, svg_format, sizeof fmt);
  
    if (!parse_image_spec (object, fmt, SVG_LAST, Qsvg))
      return 0;
@@@ -8067,7 -7722,9 +8068,7 @@@ init_svg_functions (Lisp_Object librari
     the prototype thus needs to be compatible with that structure.  */
  
  static int
 -svg_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +svg_load (struct frame *f, struct image *img)
  {
    int success_p = 0;
    Lisp_Object file_name;
        Lisp_Object file;
        unsigned char *contents;
        int size;
 -      struct gcpro gcpro1;
  
        file = x_find_image_file (file_name);
 -      GCPRO1 (file);
        if (!STRINGP (file))
        {
          image_error ("Cannot find image file `%s'", file_name, Qnil);
 -        UNGCPRO;
          return 0;
        }
  
        if (contents == NULL)
        {
          image_error ("Error loading SVG image `%s'", img->spec, Qnil);
 -        UNGCPRO;
          return 0;
        }
        /* If the file was slurped into memory properly, parse it.  */
        success_p = svg_load_image (f, img, contents, size);
        xfree (contents);
 -      UNGCPRO;
      }
    /* Else its not a file, its a lisp object.  Load the image from a
       lisp object rather than a file.  */
        Lisp_Object data;
  
        data = image_spec_value (img->spec, QCdata, NULL);
 +      if (!STRINGP (data))
 +      {
 +        image_error ("Invalid image data `%s'", data, Qnil);
 +        return 0;
 +      }
        success_p = svg_load_image (f, img, SDATA (data), SBYTES (data));
      }
  
  
     Returns non-zero when successful.  */
  static int
 -svg_load_image (f, img, contents, size)
 -    /* Pointer to emacs frame structure.  */
 -     struct frame *f;
 -     /* Pointer to emacs image structure.  */
 -     struct image *img;
 -     /* String containing the SVG XML data to be parsed.  */
 -     unsigned char *contents;
 -     /* Size of data in bytes.  */
 -     unsigned int size;
 +svg_load_image (struct frame *f,         /* Pointer to emacs frame structure.  */
 +              struct image *img,       /* Pointer to emacs image structure.  */
 +              unsigned char *contents, /* String containing the SVG XML data to be parsed.  */
 +              unsigned int size)       /* Size of data in bytes.  */
  {
    RsvgHandle *rsvg_handle;
    RsvgDimensionData dimension_data;
        background.pixel = FRAME_BACKGROUND_PIXEL (f);
        x_query_color (f, &background);
  #else
 -      ns_query_color(FRAME_BACKGROUND_COLOR (f), &background, 1);
 +      ns_query_color (FRAME_BACKGROUND_COLOR (f), &background, 1);
  #endif
      }
  
  #define HAVE_GHOSTSCRIPT 1
  #endif /* HAVE_X_WINDOWS */
  
 -/* The symbol `postscript' identifying images of this type.  */
 -
 -Lisp_Object Qpostscript;
 -
  #ifdef HAVE_GHOSTSCRIPT
  
 -static int gs_image_p P_ ((Lisp_Object object));
 -static int gs_load P_ ((struct frame *f, struct image *img));
 -static void gs_clear_image P_ ((struct frame *f, struct image *img));
 +static int gs_image_p (Lisp_Object object);
 +static int gs_load (struct frame *f, struct image *img);
 +static void gs_clear_image (struct frame *f, struct image *img);
  
  /* Keyword symbols.  */
  
@@@ -8353,7 -8019,9 +8354,7 @@@ static struct image_type gs_type 
  /* Free X resources of Ghostscript image IMG which is used on frame F.  */
  
  static void
 -gs_clear_image (f, img)
 -     struct frame *f;
 -     struct image *img;
 +gs_clear_image (struct frame *f, struct image *img)
  {
    /* IMG->data.ptr_val may contain a recorded colormap.  */
    xfree (img->data.ptr_val);
     specification.  */
  
  static int
 -gs_image_p (object)
 -     Lisp_Object object;
 +gs_image_p (Lisp_Object object)
  {
    struct image_keyword fmt[GS_LAST];
    Lisp_Object tem;
    int i;
  
 -  bcopy (gs_format, fmt, sizeof fmt);
 +  memcpy (fmt, gs_format, sizeof fmt);
  
    if (!parse_image_spec (object, fmt, GS_LAST, Qpostscript))
      return 0;
     if successful.  */
  
  static int
 -gs_load (f, img)
 -     struct frame *f;
 -     struct image *img;
 +gs_load (struct frame *f, struct image *img)
  {
    char buffer[100];
    Lisp_Object window_and_pixmap_id = Qnil, loader, pt_height, pt_width;
 -  struct gcpro gcpro1, gcpro2;
    Lisp_Object frame;
    double in_width, in_height;
    Lisp_Object pixel_colors = Qnil;
       = 1/72 in, xdpi and ydpi are stored in the frame's X display
       info.  */
    pt_width = image_spec_value (img->spec, QCpt_width, NULL);
 -  in_width = XFASTINT (pt_width) / 72.0;
 +  in_width = INTEGERP (pt_width) ? XFASTINT (pt_width) / 72.0 : 0;
    img->width = in_width * FRAME_X_DISPLAY_INFO (f)->resx;
    pt_height = image_spec_value (img->spec, QCpt_height, NULL);
 -  in_height = XFASTINT (pt_height) / 72.0;
 +  in_height = INTEGERP (pt_height) ? XFASTINT (pt_height) / 72.0 : 0;
    img->height = in_height * FRAME_X_DISPLAY_INFO (f)->resy;
  
    if (!check_image_size (f, img->width, img->height))
       if successful.  We do not record_unwind_protect here because
       other places in redisplay like calling window scroll functions
       don't either.  Let the Lisp loader use `unwind-protect' instead.  */
 -  GCPRO2 (window_and_pixmap_id, pixel_colors);
 -
    sprintf (buffer, "%lu %lu",
           (unsigned long) FRAME_X_WINDOW (f),
           (unsigned long) img->pixmap);
                              make_number (img->height),
                              window_and_pixmap_id,
                              pixel_colors);
 -  UNGCPRO;
    return PROCESSP (img->data.lisp_val);
  }
  
     telling Emacs that Ghostscript has finished drawing.  */
  
  void
 -x_kill_gs_process (pixmap, f)
 -     Pixmap pixmap;
 -     struct frame *f;
 +x_kill_gs_process (Pixmap pixmap, struct frame *f)
  {
    struct image_cache *c = FRAME_IMAGE_CACHE (f);
    int class, i;
  
  DEFUN ("imagep", Fimagep, Simagep, 1, 1, 0,
         doc: /* Value is non-nil if SPEC is a valid image specification.  */)
 -  (spec)
 -     Lisp_Object spec;
 +  (Lisp_Object spec)
  {
    return valid_image_p (spec) ? Qt : Qnil;
  }
  
  
  DEFUN ("lookup-image", Flookup_image, Slookup_image, 1, 1, 0, "")
 -  (spec)
 -     Lisp_Object spec;
 +  (Lisp_Object spec)
  {
    int id = -1;
  
@@@ -8618,8 -8297,9 +8619,8 @@@ Return non-nil if TYPE is a supported i
  
  Image types pbm and xbm are prebuilt; other types are loaded here.
  Libraries to load are specified in alist LIBRARIES (usually, the value
 -of `image-library-alist', which see).  */)
 -  (type, libraries)
 -  Lisp_Object type, libraries;
 +of `dynamic-library-alist', which see).  */)
 +  (Lisp_Object type, Lisp_Object libraries)
  {
    Lisp_Object tested;
  
      return CHECK_LIB_AVAILABLE (&svg_type, init_svg_functions, libraries);
  #endif
  
 +#if defined (HAVE_IMAGEMAGICK)
 +  if (EQ (type, Qimagemagick))
 +    {
 +      /* MagickWandGenesis() initializes the imagemagick library.  */
 +      MagickWandGenesis ();
 +      return CHECK_LIB_AVAILABLE (&imagemagick_type, init_imagemagick_functions,
 +                                libraries);
 +    }
 +#endif
 +
  #ifdef HAVE_GHOSTSCRIPT
    if (EQ (type, Qpostscript))
      return CHECK_LIB_AVAILABLE (&gs_type, init_gs_functions, libraries);
  }
  
  void
 -syms_of_image ()
 +syms_of_image (void)
  {
 -  extern Lisp_Object Qrisky_local_variable;   /* Syms_of_xdisp has already run.  */
 -
    /* Initialize this only once, since that's what we do with Vimage_types
       and they are supposed to be in sync.  Initializing here gives correct
       operation on GNU/Linux of calling dump-emacs after loading some images.  */
@@@ -8694,6 -8366,20 +8695,6 @@@ Each element of the list is a symbol fo
  To check whether it is really supported, use `image-type-available-p'.  */);
    Vimage_types = Qnil;
  
 -  DEFVAR_LISP ("image-library-alist", &Vimage_library_alist,
 -    doc: /* Alist of image types vs external libraries needed to display them.
 -
 -Each element is a list (IMAGE-TYPE LIBRARY...), where the car is a symbol
 -representing a supported image type, and the rest are strings giving
 -alternate filenames for the corresponding external libraries.
 -
 -Emacs tries to load the libraries in the order they appear on the
 -list; if none is loaded, the running session of Emacs won't
 -support the image type.  Types 'pbm and 'xbm don't need to be
 -listed; they are always supported.  */);
 -  Vimage_library_alist = Qnil;
 -  Fput (intern_c_string ("image-library-alist"), Qrisky_local_variable, Qt);
 -
    DEFVAR_LISP ("max-image-size", &Vmax_image_size,
      doc: /* Maximum size of images.
  Emacs will not load an image into memory if its pixel width or
@@@ -8722,8 -8408,6 +8723,8 @@@ non-numeric, there is no explicit limi
  
    Qcount = intern_c_string ("count");
    staticpro (&Qcount);
 +  Qextension_data = intern_c_string ("extension-data");
 +  staticpro (&Qextension_data);
  
    QCascent = intern_c_string (":ascent");
    staticpro (&QCascent);
    staticpro (&QCheuristic_mask);
    QCindex = intern_c_string (":index");
    staticpro (&QCindex);
 +  QCgeometry = intern_c_string (":geometry");
 +  staticpro (&QCgeometry);
 +  QCcrop = intern_c_string (":crop");
 +  staticpro (&QCcrop);
 +  QCrotation = intern_c_string (":rotation");
 +  staticpro (&QCrotation);
    QCmatrix = intern_c_string (":matrix");
    staticpro (&QCmatrix);
    QCcolor_adjustment = intern_c_string (":color-adjustment");
    ADD_IMAGE_TYPE (Qpng);
  #endif
  
 +#if defined (HAVE_IMAGEMAGICK)
 +  Qimagemagick = intern_c_string ("imagemagick");
 +  staticpro (&Qimagemagick);
 +  ADD_IMAGE_TYPE (Qimagemagick);
 +#endif
 +
  #if defined (HAVE_RSVG)
    Qsvg = intern_c_string ("svg");
    staticpro (&Qsvg);
  #endif /* HAVE_RSVG  */
  
    defsubr (&Sinit_image_library);
 +#ifdef HAVE_IMAGEMAGICK
 +  defsubr (&Simagemagick_types);
 +#endif
    defsubr (&Sclear_image_cache);
 -  defsubr (&Simage_refresh);
 +  defsubr (&Simage_flush);
    defsubr (&Simage_size);
    defsubr (&Simage_mask_p);
 -  defsubr (&Simage_extension_data);
 +  defsubr (&Simage_metadata);
  
  #if GLYPH_DEBUG
    defsubr (&Simagep);
@@@ -8852,23 -8521,15 +8853,23 @@@ A cross is always drawn on black & whit
    Vx_bitmap_file_path = decode_env_path ((char *) 0, PATH_BITMAPS);
  
    DEFVAR_LISP ("image-cache-eviction-delay", &Vimage_cache_eviction_delay,
 -    doc: /* Time after which cached images are removed from the cache.
 -When an image has not been displayed this many seconds, remove it
 -from the image cache.  Value must be an integer or nil with nil
 -meaning don't clear the cache.  */);
 -  Vimage_cache_eviction_delay = make_number (30 * 60);
 +    doc: /* Maximum time after which images are removed from the cache.
 +When an image has not been displayed this many seconds, Emacs
 +automatically removes it from the image cache.  If the cache contains
 +a large number of images, the actual eviction time may be shorter.
 +The value can also be nil, meaning the cache is never cleared.
 +
 +The function `clear-image-cache' disregards this variable.  */);
 +  Vimage_cache_eviction_delay = make_number (300);
 +#ifdef HAVE_IMAGEMAGICK
 +  DEFVAR_LISP ("imagemagick-render-type", &Vimagemagick_render_type,
 +               doc: /* Choose between ImageMagick render methods.  */);
 +#endif
 +
  }
  
  void
 -init_image ()
 +init_image (void)
  {
  }
  
diff --combined src/xfns.c
index 576ab3f0ef18bc8c9520cc9f35cfa28e12fc00b7,2e2bda4924606bc4af965238a6f2ff83d0895077..28566eb9a64f925958f0e517ef84c5937b51452e
@@@ -1,8 -1,7 +1,8 @@@
  /* Functions for the X window system.
 -   Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
 -                 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 -                 Free Software Foundation, Inc.
 +
 +Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 +  2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 +  Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
  
@@@ -100,12 -99,6 +100,12 @@@ along with GNU Emacs.  If not, see <htt
  #include <Xm/Xm.h>
  #include <Xm/DialogS.h>
  #include <Xm/FileSB.h>
 +#include <Xm/List.h>
 +#include <Xm/TextF.h>
 +#endif
 +
 +#ifdef USE_LUCID
 +#include "../lwlib/xlwmenu.h"
  #endif
  
  #if !defined(NO_EDITRES)
@@@ -117,6 -110,11 +117,6 @@@ extern void _XEditResCheckMessages ()
  
  extern LWLIB_ID widget_id_tick;
  
 -#ifdef USE_LUCID
 -/* This is part of a kludge--see lwlib/xlwmenu.c.  */
 -extern XFontStruct *xlwmenu_default_font;
 -#endif
 -
  extern void free_frame_menubar ();
  extern double atof ();
  
@@@ -164,10 -162,6 +164,10 @@@ int x_gtk_file_dialog_help_text
  
  int x_gtk_whole_detached_tool_bar;
  
 +/* If non-zero, use Gtk+ tooltips.  */
 +
 +static int x_gtk_use_system_tooltips;
 +
  /* The background and shape of the mouse pointer, and shape when not
     over text or in the modeline.  */
  
@@@ -205,6 -199,14 +205,6 @@@ Lisp_Object Qundefined_color
  Lisp_Object Qcompound_text, Qcancel_timer;
  Lisp_Object Qfont_param;
  
 -/* In dispnew.c */
 -
 -extern Lisp_Object Vwindow_system_version;
 -
 -/* The below are defined in frame.c.  */
 -
 -extern Lisp_Object Qtooltip;
 -
  #if GLYPH_DEBUG
  int image_cache_refcount, dpyinfo_refcount;
  #endif
@@@ -217,7 -219,7 +217,7 @@@ char *x_last_font_name
  /* Error if we are not connected to X.  */
  
  void
 -check_x ()
 +check_x (void)
  {
    if (! x_in_use)
      error ("X windows are not in use or not initialized");
     You should not call this unless HAVE_MENUS is defined.  */
  
  int
 -have_menus_p ()
 +have_menus_p (void)
  {
    return x_in_use;
  }
     and checking validity for X.  */
  
  FRAME_PTR
 -check_x_frame (frame)
 -     Lisp_Object frame;
 +check_x_frame (Lisp_Object frame)
  {
    FRAME_PTR f;
  
     the first X display on the list.  */
  
  struct x_display_info *
 -check_x_display_info (object)
 -     Lisp_Object object;
 +check_x_display_info (Lisp_Object object)
  {
    struct x_display_info *dpyinfo = NULL;
  
  /* This function can be called during GC, so use GC_xxx type test macros.  */
  
  struct frame *
 -x_window_to_frame (dpyinfo, wdesc)
 -     struct x_display_info *dpyinfo;
 -     int wdesc;
 +x_window_to_frame (struct x_display_info *dpyinfo, int wdesc)
  {
    Lisp_Object tail, frame;
    struct frame *f;
     windows.  */
  
  struct frame *
 -x_any_window_to_frame (dpyinfo, wdesc)
 -     struct x_display_info *dpyinfo;
 -     int wdesc;
 +x_any_window_to_frame (struct x_display_info *dpyinfo, int wdesc)
  {
    Lisp_Object tail, frame;
    struct frame *f, *found;
  /* Likewise, but consider only the menu bar widget.  */
  
  struct frame *
 -x_menubar_window_to_frame (dpyinfo, event)
 -     struct x_display_info *dpyinfo;
 -     XEvent *event;
 +x_menubar_window_to_frame (struct x_display_info *dpyinfo, XEvent *event)
  {
    Window wdesc = event->xany.window;
    Lisp_Object tail, frame;
     If WDESC is some other (smaller) window, we return 0.  */
  
  struct frame *
 -x_top_window_to_frame (dpyinfo, wdesc)
 -     struct x_display_info *dpyinfo;
 -     int wdesc;
 +x_top_window_to_frame (struct x_display_info *dpyinfo, int wdesc)
  {
    Lisp_Object tail, frame;
    struct frame *f;
  
  \f
  
 -static void x_default_font_parameter P_ ((struct frame *, Lisp_Object));
 -
 -static Lisp_Object unwind_create_frame P_ ((Lisp_Object));
 -static Lisp_Object unwind_create_tip_frame P_ ((Lisp_Object));
 -
 -void x_set_foreground_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -static void x_set_wait_for_wm P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_background_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_mouse_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_cursor_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_border_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_cursor_type P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_icon_type P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_icon_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_explicitly_set_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_title P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_tool_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -void x_set_scroll_bar_foreground P_ ((struct frame *, Lisp_Object,
 -                                    Lisp_Object));
 -void x_set_scroll_bar_background P_ ((struct frame *, Lisp_Object,
 -                                    Lisp_Object));
 -static Lisp_Object x_default_scroll_bar_color_parameter P_ ((struct frame *,
 -                                                           Lisp_Object,
 -                                                           Lisp_Object,
 -                                                           char *, char *,
 -                                                           int));
 +static void x_default_font_parameter (struct frame *, Lisp_Object);
 +
 +static Lisp_Object unwind_create_frame (Lisp_Object);
 +static Lisp_Object unwind_create_tip_frame (Lisp_Object);
 +
 +void x_set_foreground_color (struct frame *, Lisp_Object, Lisp_Object);
 +static void x_set_wait_for_wm (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_background_color (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_mouse_color (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_cursor_color (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_border_color (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_cursor_type (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_icon_type (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_icon_name (struct frame *, Lisp_Object, Lisp_Object);
 +void x_explicitly_set_name (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_title (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_tool_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
 +void x_set_scroll_bar_foreground (struct frame *, Lisp_Object,
 +                                  Lisp_Object);
 +void x_set_scroll_bar_background (struct frame *, Lisp_Object,
 +                                  Lisp_Object);
 +static Lisp_Object x_default_scroll_bar_color_parameter (struct frame *,
 +                                                         Lisp_Object,
 +                                                         Lisp_Object,
 +                                                         const char *, const char *,
 +                                                         int);
  \f
  
  /* Store the screen positions of frame F into XPTR and YPTR.
     not Emacs's own window.  */
  
  void
 -x_real_positions (f, xptr, yptr)
 -     FRAME_PTR f;
 -     int *xptr, *yptr;
 +x_real_positions (FRAME_PTR f, int *xptr, int *yptr)
  {
    int win_x, win_y, outer_x, outer_y;
    int real_x = 0, real_y = 0;
    int had_errors = 0;
    Window win = f->output_data.x->parent_desc;
+   Atom actual_type;
+   unsigned long actual_size, bytes_remaining;
+   int i, rc, actual_format;
+   struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+   long max_len = 400;
+   Display *dpy = FRAME_X_DISPLAY (f);
+   unsigned char *tmp_data = NULL;
+   Atom target_type = XA_CARDINAL;
  
    BLOCK_INPUT;
  
-   x_catch_errors (FRAME_X_DISPLAY (f));
+   x_catch_errors (dpy);
  
-   if (win == FRAME_X_DISPLAY_INFO (f)->root_window)
+   if (win == dpyinfo->root_window)
      win = FRAME_OUTER_WINDOW (f);
  
    /* This loop traverses up the containment tree until we hit the root
        had_errors = x_had_errors_p (FRAME_X_DISPLAY (f));
      }
  
+   if (dpyinfo->root_window == f->output_data.x->parent_desc)
+     {
+       /* Try _NET_FRAME_EXTENTS if our parent is the root window.  */
+       rc = XGetWindowProperty (dpy, win, dpyinfo->Xatom_net_frame_extents,
+                                0, max_len, False, target_type,
+                                &actual_type, &actual_format, &actual_size,
+                                &bytes_remaining, &tmp_data);
+       if (rc == Success && actual_type == target_type && !x_had_errors_p (dpy)
+           && actual_size == 4 && actual_format == 32)
+         {
+           int ign;
+           Window rootw;
+           long *fe = (long *)tmp_data;
+           XGetGeometry (FRAME_X_DISPLAY (f), win,
+                         &rootw, &real_x, &real_y, &ign, &ign, &ign, &ign);
+           outer_x = -fe[0];
+           outer_y = -fe[2];
+           real_x -= fe[0];
+           real_y -= fe[2];
+         }
+     }
+   if (tmp_data) XFree (tmp_data);
    x_uncatch_errors ();
  
    UNBLOCK_INPUT;
  /* Gamma-correct COLOR on frame F.  */
  
  void
 -gamma_correct (f, color)
 -     struct frame *f;
 -     XColor *color;
 +gamma_correct (struct frame *f, XColor *color)
  {
    if (f->gamma)
      {
     no color could be allocated.  */
  
  int
 -x_defined_color (f, color_name, color, alloc_p)
 -     struct frame *f;
 -     char *color_name;
 -     XColor *color;
 -     int alloc_p;
 +x_defined_color (struct frame *f, const char *color_name,
 +               XColor *color, int alloc_p)
  {
 -  int success_p;
 +  int success_p = 0;
    Display *dpy = FRAME_X_DISPLAY (f);
    Colormap cmap = FRAME_X_COLORMAP (f);
  
    BLOCK_INPUT;
 -  success_p = XParseColor (dpy, cmap, color_name, color);
 +#ifdef USE_GTK
 +  success_p = xg_check_special_colors (f, color_name, color);
 +#endif
 +  if (!success_p)
 +    success_p = XParseColor (dpy, cmap, color_name, color);
    if (success_p && alloc_p)
      success_p = x_alloc_nearest_color (f, cmap, color);
    UNBLOCK_INPUT;
     Signal an error if color can't be allocated.  */
  
  int
 -x_decode_color (f, color_name, mono_color)
 -     FRAME_PTR f;
 -     Lisp_Object color_name;
 -     int mono_color;
 +x_decode_color (FRAME_PTR f, Lisp_Object color_name, int mono_color)
  {
    XColor cdef;
  
     See also the comment of wait_for_wm in struct x_output.  */
  
  static void
 -x_set_wait_for_wm (f, new_value, old_value)
 -     struct frame *f;
 -     Lisp_Object new_value, old_value;
 +x_set_wait_for_wm (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
  {
    f->output_data.x->wait_for_wm = !NILP (new_value);
  }
  
 +static void
 +x_set_tool_bar_position (struct frame *f,
 +                         Lisp_Object new_value,
 +                         Lisp_Object old_value)
 +{
 +  if (! EQ (new_value, Qleft) && ! EQ (new_value, Qright)
 +      && ! EQ (new_value, Qbottom) && ! EQ (new_value, Qtop))
 +    return;
 +  if (EQ (new_value, old_value)) return;
 +
 +#ifdef USE_GTK
 +  if (xg_change_toolbar_position (f, new_value)) 
 +    f->tool_bar_position = new_value;
 +#endif
 +}
 +
  #ifdef USE_GTK
  
  /* Set icon from FILE for frame F.  By using GTK functions the icon
     may be any format that GdkPixbuf knows about, i.e. not just bitmaps.  */
  
  int
 -xg_set_icon (f, file)
 -    FRAME_PTR f;
 -    Lisp_Object file;
 +xg_set_icon (FRAME_PTR f, Lisp_Object file)
  {
    int result = 0;
    Lisp_Object found;
  }
  
  int
 -xg_set_icon_from_xpm_data (f, data)
 -    FRAME_PTR f;
 -    char **data;
 +xg_set_icon_from_xpm_data (FRAME_PTR f, const char **data)
  {
    int result = 0;
 -  GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) data);
 +  GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data (data);
  
    if (!pixbuf)
      return 0;
     in the standard place; do not attempt to change the window.  */
  
  void
 -x_set_foreground_color (f, arg, oldval)
 -     struct frame *f;
 -     Lisp_Object arg, oldval;
 +x_set_foreground_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
  {
    struct x_output *x = f->output_data.x;
    unsigned long fg, old_fg;
  }
  
  void
 -x_set_background_color (f, arg, oldval)
 -     struct frame *f;
 -     Lisp_Object arg, oldval;
 +x_set_background_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
  {
    struct x_output *x = f->output_data.x;
    unsigned long bg;
  }
  
  static Cursor
 -make_invisible_cursor (f)
 -     struct frame *f;
 +make_invisible_cursor (struct frame *f)
  {
    Display *dpy = FRAME_X_DISPLAY (f);
    static char const no_data[] = { 0 };
  }
  
  void
 -x_set_mouse_color (f, arg, oldval)
 -     struct frame *f;
 -     Lisp_Object arg, oldval;
 +x_set_mouse_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
  {
    struct x_output *x = f->output_data.x;
    Display *dpy = FRAME_X_DISPLAY (f);
  }
  
  void
 -x_set_cursor_color (f, arg, oldval)
 -     struct frame *f;
 -     Lisp_Object arg, oldval;
 +x_set_cursor_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
  {
    unsigned long fore_pixel, pixel;
    int fore_pixel_allocated_p = 0, pixel_allocated_p = 0;
     F has an x-window.  */
  
  void
 -x_set_border_pixel (f, pix)
 -     struct frame *f;
 -     int pix;
 +x_set_border_pixel (struct frame *f, int pix)
  {
    unload_color (f, f->output_data.x->border_pixel);
    f->output_data.x->border_pixel = pix;
     and so emacs' border colors may be overridden.  */
  
  void
 -x_set_border_color (f, arg, oldval)
 -     struct frame *f;
 -     Lisp_Object arg, oldval;
 +x_set_border_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
  {
    int pix;
  
  
  
  void
 -x_set_cursor_type (f, arg, oldval)
 -     FRAME_PTR f;
 -     Lisp_Object arg, oldval;
 +x_set_cursor_type (FRAME_PTR f, Lisp_Object arg, Lisp_Object oldval)
  {
    set_frame_cursor_types (f, arg);
  
  }
  \f
  void
 -x_set_icon_type (f, arg, oldval)
 -     struct frame *f;
 -     Lisp_Object arg, oldval;
 +x_set_icon_type (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
  {
    int result;
  
  }
  
  void
 -x_set_icon_name (f, arg, oldval)
 -     struct frame *f;
 -     Lisp_Object arg, oldval;
 +x_set_icon_name (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
  {
    int result;
  
  
  \f
  void
 -x_set_menu_bar_lines (f, value, oldval)
 -     struct frame *f;
 -     Lisp_Object value, oldval;
 +x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
  {
    int nlines;
  #if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
     The frame's height doesn't change.  */
  
  void
 -x_set_tool_bar_lines (f, value, oldval)
 -     struct frame *f;
 -     Lisp_Object value, oldval;
 +x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
  {
    int delta, nlines, root_height;
    Lisp_Object root_window;
     the frame parameter.  */
  
  void
 -x_set_scroll_bar_foreground (f, value, oldval)
 -     struct frame *f;
 -     Lisp_Object value, oldval;
 +x_set_scroll_bar_foreground (struct frame *f, Lisp_Object value, Lisp_Object oldval)
  {
    unsigned long pixel;
  
     parameter.  */
  
  void
 -x_set_scroll_bar_background (f, value, oldval)
 -     struct frame *f;
 -     Lisp_Object value, oldval;
 +x_set_scroll_bar_background (struct frame *f, Lisp_Object value, Lisp_Object oldval)
  {
    unsigned long pixel;
  
     the result should be `COMPOUND_TEXT'.  */
  
  static unsigned char *
 -x_encode_text (string, coding_system, selectionp, text_bytes, stringp, freep)
 -     Lisp_Object string, coding_system;
 -     int *text_bytes, *stringp;
 -     int selectionp;
 -     int *freep;
 +x_encode_text (Lisp_Object string, Lisp_Object coding_system, int selectionp, int *text_bytes, int *stringp, int *freep)
  {
    int result = string_xstring_p (string);
    struct coding_system coding;
     icon name to NAME.  */
  
  static void
 -x_set_name_internal (f, name)
 -     FRAME_PTR f;
 -     Lisp_Object name;
 +x_set_name_internal (FRAME_PTR f, Lisp_Object name)
  {
    if (FRAME_X_WINDOW (f))
      {
        int bytes, stringp;
          int do_free_icon_value = 0, do_free_text_value = 0;
        Lisp_Object coding_system;
 -#ifdef USE_GTK
        Lisp_Object encoded_name;
 +      Lisp_Object encoded_icon_name;
        struct gcpro gcpro1;
  
        /* As ENCODE_UTF_8 may cause GC and relocation of string data,
        GCPRO1 (name);
        encoded_name = ENCODE_UTF_8 (name);
        UNGCPRO;
 -#endif
  
        coding_system = Qcompound_text;
        /* Note: Encoding strategy
           We may also be able to use "UTF8_STRING" in text.encoding
           in the future which can encode all Unicode characters.
           But, for the moment, there's no way to know that the
 -         current window manager supports it or not.  */
 +         current window manager supports it or not.
 +
 +         Either way, we also set the _NET_WM_NAME and _NET_WM_ICON_NAME
 +         properties.  Per the EWMH specification, those two properties
 +         are always UTF8_STRING.  This matches what gtk_window_set_title()
 +         does in the USE_GTK case. */
        text.value = x_encode_text (name, coding_system, 0, &bytes, &stringp,
                                    &do_free_text_value);
        text.encoding = (stringp ? XA_STRING
        if (!STRINGP (f->icon_name))
          {
            icon = text;
 +          encoded_icon_name = encoded_name;
          }
        else
          {
                             : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
            icon.format = 8;
            icon.nitems = bytes;
 +
 +          encoded_icon_name = ENCODE_UTF_8 (f->icon_name);
          }
  
  #ifdef USE_GTK
                                (char *) SDATA (encoded_name));
  #else /* not USE_GTK */
        XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text);
 +      XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
 +                       FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_name,
 +                       FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
 +                       8, PropModeReplace,
 +                       (char *) SDATA (encoded_name),
 +                       SBYTES (encoded_name));
  #endif /* not USE_GTK */
  
        XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &icon);
 +      XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
 +                       FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_icon_name,
 +                       FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
 +                       8, PropModeReplace,
 +                       (char *) SDATA (encoded_icon_name),
 +                       SBYTES (encoded_icon_name));
  
        if (do_free_icon_value)
          xfree (icon.value);
         F->explicit_name is set, ignore the new name; otherwise, set it.  */
  
  void
 -x_set_name (f, name, explicit)
 -     struct frame *f;
 -     Lisp_Object name;
 -     int explicit;
 +x_set_name (struct frame *f, Lisp_Object name, int explicit)
  {
    /* Make sure that requests from lisp code override requests from
       Emacs redisplay code.  */
     specified a name for the frame; the name will override any set by the
     redisplay code.  */
  void
 -x_explicitly_set_name (f, arg, oldval)
 -     FRAME_PTR f;
 -     Lisp_Object arg, oldval;
 +x_explicitly_set_name (FRAME_PTR f, Lisp_Object arg, Lisp_Object oldval)
  {
    x_set_name (f, arg, 1);
  }
     name; names set this way will never override names set by the user's
     lisp code.  */
  void
 -x_implicitly_set_name (f, arg, oldval)
 -     FRAME_PTR f;
 -     Lisp_Object arg, oldval;
 +x_implicitly_set_name (FRAME_PTR f, Lisp_Object arg, Lisp_Object oldval)
  {
    x_set_name (f, arg, 0);
  }
     If NAME is nil, use the frame name as the title.  */
  
  void
 -x_set_title (f, name, old_name)
 -     struct frame *f;
 -     Lisp_Object name, old_name;
 +x_set_title (struct frame *f, Lisp_Object name, Lisp_Object old_name)
  {
    /* Don't change the title if it's already NAME.  */
    if (EQ (name, f->title))
  }
  
  void
 -x_set_scroll_bar_default_width (f)
 -     struct frame *f;
 +x_set_scroll_bar_default_width (struct frame *f)
  {
    int wid = FRAME_COLUMN_WIDTH (f);
  
     named NAME.  If that is not found either, use the value DEFLT.  */
  
  static Lisp_Object
 -x_default_scroll_bar_color_parameter (f, alist, prop, xprop, xclass,
 -                                    foreground_p)
 -     struct frame *f;
 -     Lisp_Object alist;
 -     Lisp_Object prop;
 -     char *xprop;
 -     char *xclass;
 -     int foreground_p;
 +x_default_scroll_bar_color_parameter (struct frame *f,
 +                                    Lisp_Object alist, Lisp_Object prop,
 +                                    const char *xprop, const char *xclass,
 +                                    int foreground_p)
  {
    struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
    Lisp_Object tem;
     for example, but Xt doesn't).  */
  
  static void
 -hack_wm_protocols (f, widget)
 -     FRAME_PTR f;
 -     Widget widget;
 +hack_wm_protocols (FRAME_PTR f, Widget widget)
  {
    Display *dpy = XtDisplay (widget);
    Window w = XtWindow (widget);
  
  #ifdef HAVE_X_I18N
  
 -static XFontSet xic_create_xfontset P_ ((struct frame *));
 -static XIMStyle best_xim_style P_ ((XIMStyles *, XIMStyles *));
 +static XFontSet xic_create_xfontset (struct frame *);
 +static XIMStyle best_xim_style (XIMStyles *, XIMStyles *);
  
  
  /* Supported XIM styles, ordered by preference.  */
@@@ -1915,12 -1988,14 +1950,12 @@@ static XIMStyle supported_xim_styles[] 
  
  /* Create an X fontset on frame F with base font name BASE_FONTNAME.  */
  
 -char xic_defaut_fontset[] = "-*-*-*-r-normal--14-*-*-*-*-*-*-*";
 +const char xic_defaut_fontset[] = "-*-*-*-r-normal--14-*-*-*-*-*-*-*";
  
  /* Create an Xt fontset spec from the name of a base font.
     If `motif' is True use the Motif syntax.  */
  char *
 -xic_create_fontsetname (base_fontname, motif)
 -     char *base_fontname;
 -     Bool motif;
 +xic_create_fontsetname (const char *base_fontname, int motif)
  {
    const char *sep = motif ? ";" : ",";
    char *fontsetname;
      { /* There is no base font name, use the default.  */
        int len = strlen (base_fontname) + 2;
        fontsetname = xmalloc (len);
 -      bzero (fontsetname, len);
 +      memset (fontsetname, 0, len);
        strcpy (fontsetname, base_fontname);
      }
    else
         - the base font.
         - the base font where the charset spec is replaced by -*-*.
         - the same but with the family also replaced with -*-*-.  */
 -      char *p = base_fontname;
 +      const char *p = base_fontname;
        int i;
  
        for (i = 0; *p; p++)
             Use the specified font plus the default.  */
          int len = strlen (base_fontname) + strlen (xic_defaut_fontset) + 3;
          fontsetname = xmalloc (len);
 -        bzero (fontsetname, len);
 +        memset (fontsetname, 0, len);
          strcpy (fontsetname, base_fontname);
          strcat (fontsetname, sep);
          strcat (fontsetname, xic_defaut_fontset);
        else
        {
          int len;
 -        char *p1 = NULL, *p2 = NULL, *p3 = NULL;
 +        const char *p1 = NULL, *p2 = NULL, *p3 = NULL;
          char *font_allcs = NULL;
          char *font_allfamilies = NULL;
          char *font_all = NULL;
 -        char *allcs = "*-*-*-*-*-*-*";
 -        char *allfamilies = "-*-*-";
 -        char *all = "*-*-*-*-";
 +        const char *allcs = "*-*-*-*-*-*-*";
 +        const char *allfamilies = "-*-*-";
 +        const char *all = "*-*-*-*-";
          char *base;
  
          for (i = 0, p = base_fontname; i < 8; p++)
              int diff = (p2 - p3) - 2;
  
              base = alloca (strlen (base_fontname) + 1);
 -            bcopy (base_fontname, base, p3 - base_fontname);
 +            memcpy (base, base_fontname, p3 - base_fontname);
              base[p3 - base_fontname] = '*';
              base[(p3 - base_fontname) + 1] = '-';
              strcpy (base + (p3 - base_fontname) + 2, p2);
          /* Build the font spec that matches all charsets.  */
          len = p - base_fontname + strlen (allcs) + 1;
          font_allcs = (char *) alloca (len);
 -        bzero (font_allcs, len);
 -        bcopy (base_fontname, font_allcs, p - base_fontname);
 +        memset (font_allcs, 0, len);
 +        memcpy (font_allcs, base_fontname, p - base_fontname);
          strcat (font_allcs, allcs);
  
          /* Build the font spec that matches all families and
             add-styles.  */
          len = p - p1 + strlen (allcs) + strlen (allfamilies) + 1;
          font_allfamilies = (char *) alloca (len);
 -        bzero (font_allfamilies, len);
 +        memset (font_allfamilies, 0, len);
          strcpy (font_allfamilies, allfamilies);
 -        bcopy (p1, font_allfamilies + strlen (allfamilies), p - p1);
 +        memcpy (font_allfamilies + strlen (allfamilies), p1, p - p1);
          strcat (font_allfamilies, allcs);
  
          /* Build the font spec that matches all.  */
          len = p - p2 + strlen (allcs) + strlen (all) + strlen (allfamilies) + 1;
          font_all = (char *) alloca (len);
 -        bzero (font_all, len);
 +        memset (font_all, 0, len);
          strcpy (font_all, allfamilies);
          strcat (font_all, all);
 -        bcopy (p2, font_all + strlen (all) + strlen (allfamilies), p - p2);
 +        memcpy (font_all + strlen (all) + strlen (allfamilies), p2, p - p2);
          strcat (font_all, allcs);
  
          /* Build the actual font set name.  */
          len = strlen (base_fontname) + strlen (font_allcs)
            + strlen (font_allfamilies) + strlen (font_all) + 5;
          fontsetname = xmalloc (len);
 -        bzero (fontsetname, len);
 +        memset (fontsetname, 0, len);
          strcpy (fontsetname, base_fontname);
          strcat (fontsetname, sep);
          strcat (fontsetname, font_allcs);
@@@ -2066,7 -2141,8 +2101,7 @@@ print_fontset_result (xfs, name, missin
  #endif
  
  static XFontSet
 -xic_create_xfontset (f)
 -     struct frame *f;
 +xic_create_xfontset (struct frame *f)
  {
    XFontSet xfs = NULL;
    struct font *font = FRAME_FONT (f);
        char **missing_list;
        int missing_count;
        char *def_string;
 -      char *xlfd_format = "-*-*-medium-r-normal--%d-*-*-*-*-*";
 +      const char *xlfd_format = "-*-*-medium-r-normal--%d-*-*-*-*-*";
  
        sprintf (buf, xlfd_format, pixel_size);
        missing_list = NULL;
        }
        if (! xfs)
        {
 -        char *last_resort = "-*-*-*-r-normal--*-*-*-*-*-*";
 +        const char *last_resort = "-*-*-*-r-normal--*-*-*-*-*-*";
  
          missing_list = NULL;
          xfs = XCreateFontSet (FRAME_X_DISPLAY (f), last_resort,
  /* Free the X fontset of frame F if it is the last frame using it.  */
  
  void
 -xic_free_xfontset (f)
 -     struct frame *f;
 +xic_free_xfontset (struct frame *f)
  {
    Lisp_Object rest, frame;
    int shared_p = 0;
     input method XIM.  */
  
  static XIMStyle
 -best_xim_style (user, xim)
 -     XIMStyles *user;
 -     XIMStyles *xim;
 +best_xim_style (XIMStyles *user, XIMStyles *xim)
  {
    int i, j;
  
  static XIMStyle xic_style;
  
  void
 -create_frame_xic (f)
 -     struct frame *f;
 +create_frame_xic (struct frame *f)
  {
    XIM xim;
    XIC xic = NULL;
  /* Destroy XIC and free XIC fontset of frame F, if any. */
  
  void
 -free_frame_xic (f)
 -     struct frame *f;
 +free_frame_xic (struct frame *f)
  {
    if (FRAME_XIC (f) == NULL)
      return;
     pixel position X/Y.  X and Y are relative to window W.  */
  
  void
 -xic_set_preeditarea (w, x, y)
 -     struct window *w;
 -     int x, y;
 +xic_set_preeditarea (struct window *w, int x, int y)
  {
    struct frame *f = XFRAME (w->frame);
    XVaNestedList attr;
  /* Place status area for XIC in bottom right corner of frame F.. */
  
  void
 -xic_set_statusarea (f)
 -     struct frame *f;
 +xic_set_statusarea (struct frame *f)
  {
    XIC xic = FRAME_XIC (f);
    XVaNestedList attr;
    area.x = FRAME_PIXEL_WIDTH (f) - area.width - FRAME_INTERNAL_BORDER_WIDTH (f);
    area.y = (FRAME_PIXEL_HEIGHT (f) - area.height
            - FRAME_MENUBAR_HEIGHT (f)
 -          - FRAME_TOOLBAR_HEIGHT (f)
 +          - FRAME_TOOLBAR_TOP_HEIGHT (f)
              - FRAME_INTERNAL_BORDER_WIDTH (f));
    XFree (needed);
  
     BASE_FONTNAME.  Called when a new Emacs fontset is chosen.  */
  
  void
 -xic_set_xfontset (f, base_fontname)
 -     struct frame *f;
 -     char *base_fontname;
 +xic_set_xfontset (struct frame *f, const char *base_fontname)
  {
    XVaNestedList attr;
    XFontSet xfs;
  /* Create and set up the X widget for frame F.  */
  
  static void
 -x_window (f, window_prompting, minibuffer_only)
 -     struct frame *f;
 -     long window_prompting;
 -     int minibuffer_only;
 +x_window (struct frame *f, long window_prompting, int minibuffer_only)
  {
    XClassHint class_hints;
    XSetWindowAttributes attributes;
    XtSetArg (al[ac], XtNvisual, FRAME_X_VISUAL (f)); ac++;
    XtSetArg (al[ac], XtNdepth, FRAME_X_DISPLAY_INFO (f)->n_planes); ac++;
    XtSetArg (al[ac], XtNcolormap, FRAME_X_COLORMAP (f)); ac++;
 +  XtSetArg (al[ac], XtNborderWidth, 0); ac++;
    XtSetValues (pane_widget, al, ac);
    f->output_data.x->column_widget = pane_widget;
  
    XtSetArg (al[ac], XtNvisual, FRAME_X_VISUAL (f)); ac++;
    XtSetArg (al[ac], XtNdepth, FRAME_X_DISPLAY_INFO (f)->n_planes); ac++;
    XtSetArg (al[ac], XtNcolormap, FRAME_X_COLORMAP (f)); ac++;
 +  XtSetArg (al[ac], XtNborderWidth, 0); ac++;
    frame_widget = XtCreateWidget (f->namebuf, emacsFrameClass, pane_widget,
                                 al, ac);
  
  #else /* not USE_X_TOOLKIT */
  #ifdef USE_GTK
  void
 -x_window (f)
 -     FRAME_PTR f;
 +x_window (FRAME_PTR f)
  {
    if (! xg_create_frame_widgets (f))
      error ("Unable to create window");
  /* Create and set up the X window for frame F.  */
  
  void
 -x_window (f)
 -     struct frame *f;
 -
 +x_window (struct frame *f)
  {
    XClassHint class_hints;
    XSetWindowAttributes attributes;
  /* Verify that the icon position args for this window are valid.  */
  
  static void
 -x_icon_verify (f, parms)
 -     struct frame *f;
 -     Lisp_Object parms;
 +x_icon_verify (struct frame *f, Lisp_Object parms)
  {
    Lisp_Object icon_x, icon_y;
  
     well.  */
  
  static void
 -x_icon (f, parms)
 -     struct frame *f;
 -     Lisp_Object parms;
 +x_icon (struct frame *f, Lisp_Object parms)
  {
    Lisp_Object icon_x, icon_y;
  #if 0
     mouse cursor and the gray border tile.  */
  
  static void
 -x_make_gc (f)
 -     struct frame *f;
 +x_make_gc (struct frame *f)
  {
    XGCValues gc_values;
  
  /* Free what was allocated in x_make_gc.  */
  
  void
 -x_free_gcs (f)
 -     struct frame *f;
 +x_free_gcs (struct frame *f)
  {
    Display *dpy = FRAME_X_DISPLAY (f);
  
     constructed.  */
  
  static Lisp_Object
 -unwind_create_frame (frame)
 -     Lisp_Object frame;
 +unwind_create_frame (Lisp_Object frame)
  {
    struct frame *f = XFRAME (frame);
  
  
  
  static void
 -x_default_font_parameter (f, parms)
 -     struct frame *f;
 -     Lisp_Object parms;
 +x_default_font_parameter (struct frame *f, Lisp_Object parms)
  {
    struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
    Lisp_Object font_param = x_get_arg (dpyinfo, parms, Qfont, NULL, NULL,
                                        RES_TYPE_STRING);
 -  Lisp_Object font;
 -  int got_from_gconf = 0;
 +  Lisp_Object font = Qnil;
    if (EQ (font_param, Qunbound))
      font_param = Qnil;
  
    if (NILP (font_param))
      {
 -      /* System font takes precedendce over X resources.  We must suggest this
 +      /* System font should take precedendce over X resources.  We suggest this
           regardless of font-use-system-font because .emacs may not have been
           read yet.  */
        const char *system_font = xsettings_get_system_font ();
 -      if (system_font) font_param = make_string (system_font,
 -                                                 strlen (system_font));
 +      if (system_font)
 +        {
 +          char *name = xstrdup (system_font);
 +          font = font_open_by_name (f, name);
 +          free (name);
 +        }
      }
  
 -  font = !NILP (font_param) ? font_param
 -    : x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING);
 +  if (NILP (font))
 +      font = !NILP (font_param) ? font_param
 +      : x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING);
  
 -  if (! STRINGP (font))
 +  if (! FONTP (font) && ! STRINGP (font))
      {
 -      char *names[]
 +      const char *names[]
        = {
  #ifdef HAVE_XFT
            /* This will find the normal Xft font.  */
        x_set_frame_parameters (f, Fcons (Fcons (Qfont_param, font_param), Qnil));
      }
  
 -  x_default_parameter (f, parms, Qfont, font,
 -                       got_from_gconf ? NULL : "font",
 -                       got_from_gconf ? NULL : "Font",
 -                       RES_TYPE_STRING);
 +  /* This call will make X resources override any system font setting.  */
 +  x_default_parameter (f, parms, Qfont, font, "font", "Font", RES_TYPE_STRING);
  }
  
  
@@@ -3062,7 -3159,8 +3097,7 @@@ DEFUN ("x-wm-set-size-hint", Fx_wm_set_
         0, 1, 0,
         doc: /* Send the size hints for frame FRAME to the window manager.
  If FRAME is nil, use the selected frame.  */)
 -     (frame)
 -     Lisp_Object frame;
 +  (Lisp_Object frame)
  {
    struct frame *f;
    if (NILP (frame))
    return Qnil;
  }
  
 +static void
 +set_machine_and_pid_properties (struct frame *f)
 +{
 +  long pid = (long) getpid ();
 +
 +  /* This will set WM_CLIENT_MACHINE and WM_LOCALE_NAME.  */
 +  XSetWMProperties (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), NULL, NULL,
 +                    NULL, 0, NULL, NULL, NULL);
 +  XChangeProperty (FRAME_X_DISPLAY (f),
 +                   FRAME_OUTER_WINDOW (f),
 +                   XInternAtom (FRAME_X_DISPLAY (f),
 +                                "_NET_WM_PID",
 +                                False),
 +                   XA_CARDINAL, 32, PropModeReplace,
 +                   (unsigned char *) &pid, 1);
 +}
 +
  DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
         1, 1, 0,
         doc: /* Make a new X window, which is called a "frame" in Emacs terms.
@@@ -3103,7 -3184,8 +3138,7 @@@ then `default-minibuffer-frame' must b
  be shared by the new frame.
  
  This function is an internal primitive--use `make-frame' instead.  */)
 -     (parms)
 -     Lisp_Object parms;
 +  (Lisp_Object parms)
  {
    struct frame *f;
    Lisp_Object frame, tem;
  
    f->output_method = output_x_window;
    f->output_data.x = (struct x_output *) xmalloc (sizeof (struct x_output));
 -  bzero (f->output_data.x, sizeof (struct x_output));
 +  memset (f->output_data.x, 0, sizeof (struct x_output));
    f->output_data.x->icon_bitmap = -1;
    FRAME_FONTSET (f) = -1;
    f->output_data.x->scroll_bar_foreground_pixel = -1;
        error ("Invalid frame font");
      }
  
 -#ifdef USE_LUCID
 -  /* Prevent lwlib/xlwmenu.c from crashing because of a bug
 -     whereby it fails to get any font.  */
 -  BLOCK_INPUT;
 -  xlwmenu_default_font = XLoadQueryFont (FRAME_X_DISPLAY (f), "fixed");
 -  UNBLOCK_INPUT;
 -#endif
 -
    /* Frame contents get displaced if an embedded X window has a border.  */
    if (! FRAME_X_EMBEDDED_P (f))
 -    x_default_parameter (f, parms, Qborder_width, make_number (2),
 +    x_default_parameter (f, parms, Qborder_width, make_number (0),
                         "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
  
    /* This defaults to 1 in order to match xterm.  We recognize either
  #endif
                       "internalBorderWidth", "internalBorderWidth",
                       RES_TYPE_NUMBER);
 -  x_default_parameter (f, parms, Qvertical_scroll_bars, Qleft,
 +  x_default_parameter (f, parms, Qvertical_scroll_bars,
 +#if defined(USE_GTK) && defined(USE_TOOLKIT_SCROLL_BARS)
 +                     Qright,
 +#else
 +                     Qleft,
 +#endif
                       "verticalScrollBars", "ScrollBars",
                       RES_TYPE_SYMBOL);
  
       happen.  */
    init_frame_faces (f);
  
 -  x_default_parameter (f, parms, Qmenu_bar_lines, make_number (1),
 -                     "menuBar", "MenuBar", RES_TYPE_BOOLEAN_NUMBER);
 -  x_default_parameter (f, parms, Qtool_bar_lines, make_number (1),
 -                     "toolBar", "ToolBar", RES_TYPE_NUMBER);
 +  /* The X resources controlling the menu-bar and tool-bar are
 +     processed specially at startup, and reflected in the mode
 +     variables; ignore them here.  */
 +  x_default_parameter (f, parms, Qmenu_bar_lines,
 +                     NILP (Vmenu_bar_mode)
 +                     ? make_number (0) : make_number (1),
 +                     NULL, NULL, RES_TYPE_NUMBER);
 +  x_default_parameter (f, parms, Qtool_bar_lines,
 +                     NILP (Vtool_bar_mode)
 +                     ? make_number (0) : make_number (1),
 +                     NULL, NULL, RES_TYPE_NUMBER);
 +
    x_default_parameter (f, parms, Qbuffer_predicate, Qnil,
                       "bufferPredicate", "BufferPredicate",
                       RES_TYPE_SYMBOL);
                       "waitForWM", "WaitForWM", RES_TYPE_BOOLEAN);
    x_default_parameter (f, parms, Qfullscreen, Qnil,
                         "fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
 +  x_default_parameter (f, parms, Qtool_bar_position,
 +                       f->tool_bar_position, 0, 0, RES_TYPE_SYMBOL);
  
    /* Compute the size of the X window.  */
    window_prompting = x_figure_window_size (f, parms, 1);
        ;
      }
  
 +  BLOCK_INPUT;
 +                       
 +  /* Set machine name and pid for the purpose of window managers.  */
 +  set_machine_and_pid_properties(f);
 +
    /* Set the WM leader property.  GTK does this itself, so this is not
       needed when using GTK.  */
    if (dpyinfo->client_leader_window != 0)
      {
 -      BLOCK_INPUT;
        XChangeProperty (FRAME_X_DISPLAY (f),
                         FRAME_OUTER_WINDOW (f),
                         dpyinfo->Xatom_wm_client_leader,
                         XA_WINDOW, 32, PropModeReplace,
                         (unsigned char *) &dpyinfo->client_leader_window, 1);
 -      UNBLOCK_INPUT;
      }
  
 +  UNBLOCK_INPUT;
 +
    /* Initialize `default-minibuffer-frame' in case this is the first
       frame on this terminal.  */
    if (FRAME_HAS_MINIBUF_P (f)
     know about that structure.  */
  
  Lisp_Object
 -x_get_focus_frame (frame)
 -     struct frame *frame;
 +x_get_focus_frame (struct frame *frame)
  {
    struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (frame);
    Lisp_Object xfocus;
  DEFUN ("x-focus-frame", Fx_focus_frame, Sx_focus_frame, 1, 1, 0,
         doc: /* Set the input focus to FRAME.
  FRAME nil means use the selected frame.  */)
 -     (frame)
 -     Lisp_Object frame;
 +  (Lisp_Object frame)
  {
    struct frame *f = check_x_frame (frame);
    Display *dpy = FRAME_X_DISPLAY (f);
  
  \f
  DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
 -       doc: /* Internal function called by `color-defined-p', which see.  */)
 -     (color, frame)
 -     Lisp_Object color, frame;
 +       doc: /* Internal function called by `color-defined-p', which see
 +.\(Note that the Nextstep version of this function ignores FRAME.)  */)
 +  (Lisp_Object color, Lisp_Object frame)
  {
    XColor foo;
    FRAME_PTR f = check_x_frame (frame);
  
  DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
         doc: /* Internal function called by `color-values', which see.  */)
 -     (color, frame)
 -     Lisp_Object color, frame;
 +  (Lisp_Object color, Lisp_Object frame)
  {
    XColor foo;
    FRAME_PTR f = check_x_frame (frame);
  
  DEFUN ("xw-display-color-p", Fxw_display_color_p, Sxw_display_color_p, 0, 1, 0,
         doc: /* Internal function called by `display-color-p', which see.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3628,7 -3702,8 +3663,7 @@@ Note that color displays do support sha
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3656,7 -3731,8 +3691,7 @@@ DEFUN ("x-display-pixel-width", Fx_disp
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3669,7 -3745,8 +3704,7 @@@ DEFUN ("x-display-pixel-height", Fx_dis
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3682,7 -3759,8 +3717,7 @@@ DEFUN ("x-display-planes", Fx_display_p
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3695,7 -3773,8 +3730,7 @@@ DEFUN ("x-display-color-cells", Fx_disp
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3719,7 -3798,8 +3754,7 @@@ DEFUN ("x-server-max-request-size", Fx_
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3733,10 -3813,11 +3768,10 @@@ that operating systems cannot be develo
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
 -  char *vendor = ServerVendor (dpyinfo->display);
 +  const char *vendor = ServerVendor (dpyinfo->display);
  
    if (! vendor) vendor = "";
    return build_string (vendor);
@@@ -3751,7 -3832,8 +3786,7 @@@ number.  See also the function `x-serve
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
    Display *dpy = dpyinfo->display;
@@@ -3766,7 -3848,8 +3801,7 @@@ DEFUN ("x-display-screens", Fx_display_
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3778,7 -3861,8 +3813,7 @@@ DEFUN ("x-display-mm-height", Fx_displa
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3790,7 -3874,8 +3825,7 @@@ DEFUN ("x-display-mm-width", Fx_display
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
@@@ -3804,7 -3889,8 +3839,7 @@@ The value may be `always', `when-mapped
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
    Lisp_Object result;
@@@ -3840,7 -3926,8 +3875,7 @@@ The value is one of the symbols `static
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
    Lisp_Object result;
@@@ -3879,7 -3966,8 +3914,7 @@@ DEFUN ("x-display-save-under", Fx_displ
  The optional argument TERMINAL specifies which display to ask about.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If omitted or nil, that stands for the selected frame's display.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
  }
  \f
  int
 -x_pixel_width (f)
 -     register struct frame *f;
 +x_pixel_width (register struct frame *f)
  {
    return FRAME_PIXEL_WIDTH (f);
  }
  
  int
 -x_pixel_height (f)
 -     register struct frame *f;
 +x_pixel_height (register struct frame *f)
  {
    return FRAME_PIXEL_HEIGHT (f);
  }
  
  int
 -x_char_width (f)
 -     register struct frame *f;
 +x_char_width (register struct frame *f)
  {
    return FRAME_COLUMN_WIDTH (f);
  }
  
  int
 -x_char_height (f)
 -     register struct frame *f;
 +x_char_height (register struct frame *f)
  {
    return FRAME_LINE_HEIGHT (f);
  }
  
  int
 -x_screen_planes (f)
 -     register struct frame *f;
 +x_screen_planes (register struct frame *f)
  {
    return FRAME_X_DISPLAY_INFO (f)->n_planes;
  }
  
  static struct visual_class
  {
 -  char *name;
 +  const char *name;
    int class;
  }
  visual_classes[] =
@@@ -3971,7 -4064,8 +4006,7 @@@ XScreenNumberOfScreen (scr
     members of DPYINFO appropriately.  Called from x_term_init.  */
  
  void
 -select_visual (dpyinfo)
 -     struct x_display_info *dpyinfo;
 +select_visual (struct x_display_info *dpyinfo)
  {
    Display *dpy = dpyinfo->display;
    Screen *screen = dpyinfo->screen;
        XVisualInfo vinfo;
  
        strcpy (s, SDATA (value));
 -      dash = index (s, '-');
 +      dash = strchr (s, '-');
        if (dash)
        {
          dpyinfo->n_planes = atoi (dash + 1);
        vinfo_template.screen = XScreenNumberOfScreen (screen);
        vinfo = XGetVisualInfo (dpy, VisualIDMask | VisualScreenMask,
                              &vinfo_template, &n_visuals);
 -      if (n_visuals != 1)
 +      if (n_visuals <= 0)
        fatal ("Can't get proper X visual info");
  
        dpyinfo->n_planes = vinfo->depth;
     Open a new connection if necessary.  */
  
  struct x_display_info *
 -x_display_info_for_name (name)
 -     Lisp_Object name;
 +x_display_info_for_name (Lisp_Object name)
  {
    Lisp_Object names;
    struct x_display_info *dpyinfo;
  
  DEFUN ("x-open-connection", Fx_open_connection, Sx_open_connection,
         1, 3, 0,
 -       doc: /* Open a connection to an X server.
 +       doc: /* Open a connection to a display server.
  DISPLAY is the name of the display to connect to.
  Optional second arg XRM-STRING is a string of resources in xrdb format.
  If the optional third arg MUST-SUCCEED is non-nil,
 -terminate Emacs if we can't open the connection.  */)
 -     (display, xrm_string, must_succeed)
 -     Lisp_Object display, xrm_string, must_succeed;
 +terminate Emacs if we can't open the connection.
 +\(In the Nextstep version, the last two arguments are currently ignored.)  */)
 +  (Lisp_Object display, Lisp_Object xrm_string, Lisp_Object must_succeed)
  {
    unsigned char *xrm_option;
    struct x_display_info *dpyinfo;
@@@ -4143,7 -4238,8 +4178,7 @@@ DEFUN ("x-close-connection", Fx_close_c
  For TERMINAL, specify a terminal object, a frame or a display name (a
  string).  If TERMINAL is nil, that stands for the selected frame's
  terminal.  */)
 -     (terminal)
 -     Lisp_Object terminal;
 +  (Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
  
  DEFUN ("x-display-list", Fx_display_list, Sx_display_list, 0, 0, 0,
         doc: /* Return the list of display names that Emacs has connections to.  */)
 -     ()
 +  (void)
  {
    Lisp_Object tail, result;
  
  
  DEFUN ("x-synchronize", Fx_synchronize, Sx_synchronize, 1, 2, 0,
         doc: /* If ON is non-nil, report X errors as soon as the erring request is made.
 +This function only has an effect on X Windows.  With MS Windows, it is
 +defined but does nothing.
 +
  If ON is nil, allow buffering of requests.
  Turning on synchronization prohibits the Xlib routines from buffering
  requests and seriously degrades performance, but makes debugging much
@@@ -4180,7 -4273,8 +4215,7 @@@ easier
  The optional second argument TERMINAL specifies which display to act on.
  TERMINAL should be a terminal object, a frame or a display name (a string).
  If TERMINAL is omitted or nil, that stands for the selected frame's display.  */)
 -     (on, terminal)
 -    Lisp_Object terminal, on;
 +  (Lisp_Object on, Lisp_Object terminal)
  {
    struct x_display_info *dpyinfo = check_x_display_info (terminal);
  
  /* Wait for responses to all X commands issued so far for frame F.  */
  
  void
 -x_sync (f)
 -     FRAME_PTR f;
 +x_sync (FRAME_PTR f)
  {
    BLOCK_INPUT;
    XSync (FRAME_X_DISPLAY (f), False);
  DEFUN ("x-change-window-property", Fx_change_window_property,
         Sx_change_window_property, 2, 6, 0,
         doc: /* Change window property PROP to VALUE on the X window of FRAME.
 -PROP must be a string.
 -VALUE may be a string or a list of conses, numbers and/or strings.
 -If an element in the list is a string, it is converted to
 -an Atom and the value of the Atom is used.  If an element is a cons,
 -it is converted to a 32 bit number where the car is the 16 top bits and the
 -cdr is the lower 16 bits.
 +PROP must be a string.  VALUE may be a string or a list of conses,
 +numbers and/or strings.  If an element in the list is a string, it is
 +converted to an atom and the value of the atom is used.  If an element
 +is a cons, it is converted to a 32 bit number where the car is the 16
 +top bits and the cdr is the lower 16 bits.
 +
  FRAME nil or omitted means use the selected frame.
  If TYPE is given and non-nil, it is the name of the type of VALUE.
  If TYPE is not given or nil, the type is STRING.
@@@ -4220,8 -4315,11 +4255,8 @@@ FORMAT gives the size in bits of each e
  It must be one of 8, 16 or 32.
  If VALUE is a string or FORMAT is nil or not given, FORMAT defaults to 8.
  If OUTER_P is non-nil, the property is changed for the outer X window of
 -FRAME.  Default is to change on the edit X window.
 -
 -Value is VALUE.  */)
 -     (prop, value, frame, type, format, outer_p)
 -     Lisp_Object prop, value, frame, type, format, outer_p;
 +FRAME.  Default is to change on the edit X window.  */)
 +  (Lisp_Object prop, Lisp_Object value, Lisp_Object frame, Lisp_Object type, Lisp_Object format, Lisp_Object outer_p)
  {
    struct frame *f = check_x_frame (frame);
    Atom prop_atom;
@@@ -4299,7 -4397,8 +4334,7 @@@ DEFUN ("x-delete-window-property", Fx_d
         Sx_delete_window_property, 1, 2, 0,
         doc: /* Remove window property PROP from X window of FRAME.
  FRAME nil or omitted means use the selected frame.  Value is PROP.  */)
 -     (prop, frame)
 -     Lisp_Object prop, frame;
 +  (Lisp_Object prop, Lisp_Object frame)
  {
    struct frame *f = check_x_frame (frame);
    Atom prop_atom;
@@@ -4321,20 -4420,17 +4356,20 @@@ DEFUN ("x-window-property", Fx_window_p
         1, 6, 0,
         doc: /* Value is the value of window property PROP on FRAME.
  If FRAME is nil or omitted, use the selected frame.
 -If TYPE is nil or omitted, get the property as a string.  Otherwise TYPE
 -is the name of the Atom that denotes the type expected.
 +
 +On MS Windows, this function only accepts the PROP and FRAME arguments.
 +
 +On X Windows, the following optional arguments are also accepted:
 +If TYPE is nil or omitted, get the property as a string.
 +Otherwise TYPE is the name of the atom that denotes the type expected.
  If SOURCE is non-nil, get the property on that window instead of from
  FRAME.  The number 0 denotes the root window.
  If DELETE_P is non-nil, delete the property after retreiving it.
  If VECTOR_RET_P is non-nil, don't return a string but a vector of values.
  
  Value is nil if FRAME hasn't a property with name PROP or if PROP has
 -no value of TYPE.  */)
 -     (prop, frame, type, source, delete_p, vector_ret_p)
 -     Lisp_Object prop, frame, type, source, delete_p, vector_ret_p;
 +no value of TYPE (always string in the MS Windows case).  */)
 +  (Lisp_Object prop, Lisp_Object frame, Lisp_Object type, Lisp_Object source, Lisp_Object delete_p, Lisp_Object vector_ret_p)
  {
    struct frame *f = check_x_frame (frame);
    Atom prop_atom;
               elements."
               This applies even if long is more than 32 bits, the X library
               converts from 32 bit elements received from the X server to long
 -             and passes the long array to us.  Thus, for that case bcopy can not
 +             and passes the long array to us.  Thus, for that case memcpy can not
               be used.  We convert to a 32 bit type here, because so much code
               assume on that.
  
     shown on the frames.  */
  
  void
 -show_hourglass (timer)
 -     struct atimer *timer;
 +show_hourglass (struct atimer *timer)
  {
    /* The timer implementation will cancel this timer automatically
       after this function has run.  Set hourglass_atimer to null
     shown.  */
  
  void
 -hide_hourglass ()
 +hide_hourglass (void)
  {
    if (hourglass_shown_p)
      {
                                Tool tips
   ***********************************************************************/
  
 -static Lisp_Object x_create_tip_frame P_ ((struct x_display_info *,
 -                                         Lisp_Object, Lisp_Object));
 -static void compute_tip_xy P_ ((struct frame *, Lisp_Object, Lisp_Object,
 -                              Lisp_Object, int, int, int *, int *));
 +static Lisp_Object x_create_tip_frame (struct x_display_info *,
 +                                       Lisp_Object, Lisp_Object);
 +static void compute_tip_xy (struct frame *, Lisp_Object, Lisp_Object,
 +                            Lisp_Object, int, int, int *, int *);
  
  /* The frame of a currently visible tooltip.  */
  
@@@ -4578,7 -4675,8 +4613,7 @@@ Lisp_Object Vx_max_tooltip_size
  
  
  static Lisp_Object
 -unwind_create_tip_frame (frame)
 -     Lisp_Object frame;
 +unwind_create_tip_frame (Lisp_Object frame)
  {
    Lisp_Object deleted;
  
     when this happens.  */
  
  static Lisp_Object
 -x_create_tip_frame (dpyinfo, parms, text)
 -     struct x_display_info *dpyinfo;
 -     Lisp_Object parms, text;
 +x_create_tip_frame (struct x_display_info *dpyinfo,
 +                    Lisp_Object parms,
 +                    Lisp_Object text)
  {
    struct frame *f;
    Lisp_Object frame, tem;
       counts etc.  */
    f->output_method = output_x_window;
    f->output_data.x = (struct x_output *) xmalloc (sizeof (struct x_output));
 -  bzero (f->output_data.x, sizeof (struct x_output));
 +  memset (f->output_data.x, 0, sizeof (struct x_output));
    f->output_data.x->icon_bitmap = -1;
    FRAME_FONTSET (f) = -1;
    f->output_data.x->scroll_bar_foreground_pixel = -1;
       needed to determine window geometry.  */
    x_default_font_parameter (f, parms);
  
 -  x_default_parameter (f, parms, Qborder_width, make_number (2),
 +  x_default_parameter (f, parms, Qborder_width, make_number (0),
                       "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
  
    /* This defaults to 2 in order to match xterm.  We recognize either
     the display in *ROOT_X, and *ROOT_Y.  */
  
  static void
 -compute_tip_xy (f, parms, dx, dy, width, height, root_x, root_y)
 -     struct frame *f;
 -     Lisp_Object parms, dx, dy;
 -     int width, height;
 -     int *root_x, *root_y;
 +compute_tip_xy (struct frame *f, Lisp_Object parms, Lisp_Object dx, Lisp_Object dy, int width, int height, int *root_x, int *root_y)
  {
    Lisp_Object left, top;
    int win_x, win_y;
@@@ -4996,14 -5098,15 +5031,14 @@@ DY added (default is -10)
  
  A tooltip's maximum size is specified by `x-max-tooltip-size'.
  Text larger than the specified size is clipped.  */)
 -     (string, frame, parms, timeout, dx, dy)
 -     Lisp_Object string, frame, parms, timeout, dx, dy;
 +  (Lisp_Object string, Lisp_Object frame, Lisp_Object parms, Lisp_Object timeout, Lisp_Object dx, Lisp_Object dy)
  {
    struct frame *f;
    struct window *w;
    int root_x, root_y;
    struct buffer *old_buffer;
    struct text_pos pos;
 -  int i, width, height;
 +  int i, width, height, seen_reversed_p;
    struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
    int old_windows_or_buffers_changed = windows_or_buffers_changed;
    int count = SPECPDL_INDEX ();
    else
      CHECK_NUMBER (dy);
  
 +#ifdef USE_GTK
 +  if (x_gtk_use_system_tooltips)
 +    {
 +      int ok; 
 +
 +      /* Hide a previous tip, if any.  */
 +      Fx_hide_tip ();
 +
 +      BLOCK_INPUT;
 +      if ((ok = xg_prepare_tooltip (f, string, &width, &height)) != 0)
 +        {
 +        compute_tip_xy (f, parms, dx, dy, width, height, &root_x, &root_y);
 +          xg_show_tooltip (f, root_x, root_y);
 +          /* This is used in Fx_hide_tip.  */
 +          XSETFRAME (tip_frame, f);
 +        }
 +      UNBLOCK_INPUT;
 +      if (ok) goto start_timer;
 +    }
 +#endif /* USE_GTK */
 +
    if (NILP (last_show_tip_args))
      last_show_tip_args = Fmake_vector (make_number (3), Qnil);
  
    try_window (FRAME_ROOT_WINDOW (f), pos, TRY_WINDOW_IGNORE_FONTS_CHANGE);
  
    /* Compute width and height of the tooltip.  */
 -  width = height = 0;
 +  width = height = seen_reversed_p = 0;
    for (i = 0; i < w->desired_matrix->nrows; ++i)
      {
        struct glyph_row *row = &w->desired_matrix->rows[i];
        /* Let the row go over the full width of the frame.  */
        row->full_width_p = 1;
  
 -      /* There's a glyph at the end of rows that is used to place
 -       the cursor there.  Don't include the width of this glyph.  */
 +      row_width = row->pixel_width;
        if (row->used[TEXT_AREA])
        {
 -        last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
 -        row_width = row->pixel_width - last->pixel_width;
 +        /* There's a glyph at the end of rows that is used to place
 +           the cursor there.  Don't include the width of this glyph.  */
 +        if (!row->reversed_p)
 +          {
 +            last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
 +            if (INTEGERP (last->object))
 +              row_width -= last->pixel_width;
 +          }
 +        else
 +          {
 +            /* There could be a stretch glyph at the beginning of R2L
 +               rows that is produced by extend_face_to_end_of_line.
 +               Don't count that glyph.  */
 +            struct glyph *g = row->glyphs[TEXT_AREA];
 +
 +            if (g->type == STRETCH_GLYPH && INTEGERP (g->object))
 +              {
 +                row_width -= g->pixel_width;
 +                seen_reversed_p = 1;
 +              }
 +          }
        }
 -      else
 -      row_width = row->pixel_width;
  
        height += row->height;
        width = max (width, row_width);
      }
  
 +  /* If we've seen partial-length R2L rows, we need to re-adjust the
 +     tool-tip frame width and redisplay it again, to avoid over-wide
 +     tips due to the stretch glyph that extends R2L lines to full
 +     width of the frame.  */
 +  if (seen_reversed_p)
 +    {
 +      /* w->total_cols and FRAME_TOTAL_COLS want the width in columns,
 +       not in pixels.  */
 +      width /= WINDOW_FRAME_COLUMN_WIDTH (w);
 +      w->total_cols = make_number (width);
 +      FRAME_TOTAL_COLS (f) = width;
 +      adjust_glyphs (f);
 +      clear_glyph_matrix (w->desired_matrix);
 +      clear_glyph_matrix (w->current_matrix);
 +      try_window (FRAME_ROOT_WINDOW (f), pos, 0);
 +      width = height = 0;
 +      /* Recompute width and height of the tooltip.  */
 +      for (i = 0; i < w->desired_matrix->nrows; ++i)
 +      {
 +        struct glyph_row *row = &w->desired_matrix->rows[i];
 +        struct glyph *last;
 +        int row_width;
 +
 +        if (!row->enabled_p || !row->displays_text_p)
 +          break;
 +        row->full_width_p = 1;
 +        row_width = row->pixel_width;
 +        if (row->used[TEXT_AREA] && !row->reversed_p)
 +          {
 +            last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
 +            if (INTEGERP (last->object))
 +              row_width -= last->pixel_width;
 +          }
 +
 +        height += row->height;
 +        width = max (width, row_width);
 +      }
 +    }
 +
    /* Add the frame's internal border to the width and height the X
       window should have.  */
    height += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
  DEFUN ("x-hide-tip", Fx_hide_tip, Sx_hide_tip, 0, 0, 0,
         doc: /* Hide the current tooltip window, if there is any.
  Value is t if tooltip was open, nil otherwise.  */)
 -     ()
 +  (void)
  {
    int count;
    Lisp_Object deleted, frame, timer;
    struct gcpro gcpro1, gcpro2;
 +  struct frame *f;
  
    /* Return quickly if nothing to do.  */
    if (NILP (tip_timer) && NILP (tip_frame))
    if (!NILP (timer))
      call1 (Qcancel_timer, timer);
  
 +#ifdef USE_GTK
 +  /* When using system tooltip, tip_frame is the Emacs frame on which
 +     the tip is shown.  */
 +  f = XFRAME (frame);
 +  if (FRAME_LIVE_P (f) && xg_hide_tooltip (f))
 +    frame = Qnil;
 +#endif
 +
    if (FRAMEP (frame))
      {
        delete_frame (frame, Qnil);
         redisplay procedure is not called when a tip frame over menu
         items is unmapped.  Redisplay the menu manually...  */
        {
 -      struct frame *f = SELECTED_FRAME ();
 -      Widget w = f->output_data.x->menubar_widget;
 -      extern void xlwmenu_redisplay P_ ((Widget));
 +        Widget w;
 +      f = SELECTED_FRAME ();
 +      w = f->output_data.x->menubar_widget;
  
        if (!DoesSaveUnders (FRAME_X_DISPLAY_INFO (f)->screen)
            && w != NULL)
@@@ -5333,9 -5351,12 +5368,9 @@@ DEFUN ("x-uses-old-gtk-dialog", Fx_uses
         Sx_uses_old_gtk_dialog,
         0, 0, 0,
         doc: /* Return t if the old Gtk+ file selection dialog is used.  */)
 -     ()
 +  (void)
  {
  #ifdef USE_GTK
 -  extern int use_dialog_box;
 -  extern int use_file_dialog;
 -
    if (use_dialog_box
        && use_file_dialog
        && have_menus_p ()
  /* Callback for "OK" and "Cancel" on file selection dialog.  */
  
  static void
 -file_dialog_cb (widget, client_data, call_data)
 -     Widget widget;
 -     XtPointer call_data, client_data;
 +file_dialog_cb (Widget widget, XtPointer client_data, XtPointer call_data)
  {
    int *result = (int *) client_data;
    XmAnyCallbackStruct *cb = (XmAnyCallbackStruct *) call_data;
     in this case.  */
  
  static void
 -file_dialog_unmap_cb (widget, client_data, call_data)
 -     Widget widget;
 -     XtPointer call_data, client_data;
 +file_dialog_unmap_cb (Widget widget, XtPointer client_data, XtPointer call_data)
  {
    int *result = (int *) client_data;
    *result = XmCR_CANCEL;
  }
  
  static Lisp_Object
 -clean_up_file_dialog (arg)
 -     Lisp_Object arg;
 +clean_up_file_dialog (Lisp_Object arg)
  {
    struct Lisp_Save_Value *p = XSAVE_VALUE (arg);
    Widget dialog = (Widget) p->pointer;
@@@ -5391,12 -5417,9 +5426,12 @@@ DEFUN ("x-file-dialog", Fx_file_dialog
         doc: /* Read file name, prompting with PROMPT in directory DIR.
  Use a file selection dialog.  Select DEFAULT-FILENAME in the dialog's file
  selection box, if specified.  If MUSTMATCH is non-nil, the returned file
 -or directory must exist.  ONLY-DIR-P is ignored."  */)
 -  (prompt, dir, default_filename, mustmatch, only_dir_p)
 -     Lisp_Object prompt, dir, default_filename, mustmatch, only_dir_p;
 +or directory must exist.
 +
 +This function is only defined on MS Windows, and X Windows with the
 +Motif or Gtk toolkits.  With the Motif toolkit, ONLY-DIR-P is ignored.
 +Otherwise, if ONLY-DIR-P is non-nil, the user can only select directories.  */)
 +  (Lisp_Object prompt, Lisp_Object dir, Lisp_Object default_filename, Lisp_Object mustmatch, Lisp_Object only_dir_p)
  {
    int result;
    struct frame *f = SELECTED_FRAME ();
    Widget dialog, text, help;
    Arg al[10];
    int ac = 0;
 -  extern XtAppContext Xt_app_con;
    XmString dir_xmstring, pattern_xmstring;
    int count = SPECPDL_INDEX ();
    struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6;
  #ifdef USE_GTK
  
  static Lisp_Object
 -clean_up_dialog (arg)
 -     Lisp_Object arg;
 +clean_up_dialog (Lisp_Object arg)
  {
    x_menu_set_in_use (0);
  
@@@ -5564,12 -5589,10 +5599,12 @@@ DEFUN ("x-file-dialog", Fx_file_dialog
         doc: /* Read file name, prompting with PROMPT in directory DIR.
  Use a file selection dialog.  Select DEFAULT-FILENAME in the dialog's file
  selection box, if specified.  If MUSTMATCH is non-nil, the returned file
 -or directory must exist.  If ONLY-DIR-P is non-nil, the user can only select
 -directories.  */)
 -  (prompt, dir, default_filename, mustmatch, only_dir_p)
 -     Lisp_Object prompt, dir, default_filename, mustmatch, only_dir_p;
 +or directory must exist.
 +
 +This function is only defined on MS Windows, and X Windows with the
 +Motif or Gtk toolkits.  With the Motif toolkit, ONLY-DIR-P is ignored.
 +Otherwise, if ONLY-DIR-P is non-nil, the user can only select directories.  */)
 +  (Lisp_Object prompt, Lisp_Object dir, Lisp_Object default_filename, Lisp_Object mustmatch, Lisp_Object only_dir_p)
  {
    FRAME_PTR f = SELECTED_FRAME ();
    char *fn;
@@@ -5630,7 -5653,8 +5665,7 @@@ DEFUN ("x-select-font", Fx_select_font
  Return a GTK-style font string corresponding to the selection.
  
  If FRAME is omitted or nil, it defaults to the selected frame. */)
 -  (frame, ignored)
 -     Lisp_Object frame, ignored;
 +  (Lisp_Object frame, Lisp_Object ignored)
  {
    FRAME_PTR f = check_x_frame (frame);
    char *name;
@@@ -5718,7 -5742,8 +5753,7 @@@ FRAME nil means use the selected frame
  Value is t if we know that both keys are present, and are mapped to the
  usual X keysyms.  Value is `lambda' if we cannot determine if both keys are
  present and mapped to the usual X keysyms.  */)
 -     (frame)
 -     Lisp_Object frame;
 +  (Lisp_Object frame)
  {
  #ifdef HAVE_XKBGETKEYBOARD
    XkbDescPtr kb;
              /* The XKB symbolic key names can be seen most easily in
                 the PS file generated by `xkbprint -label name
                 $DISPLAY'.  */
 -            if (bcmp ("DELE", kb->names->keys[i].name, 4) == 0)
 +            if (memcmp ("DELE", kb->names->keys[i].name, 4) == 0)
                delete_keycode = i;
 -            else if (bcmp ("BKSP", kb->names->keys[i].name, 4) == 0)
 +            else if (memcmp ("BKSP", kb->names->keys[i].name, 4) == 0)
                backspace_keycode = i;
            }
  
@@@ -5846,11 -5871,10 +5881,11 @@@ frame_parm_handler x_frame_parm_handler
    x_set_font_backend,
    x_set_alpha,
    x_set_sticky,
 +  x_set_tool_bar_position,
  };
  
  void
 -syms_of_xfns ()
 +syms_of_xfns (void)
  {
    /* This is zero if not using X windows.  */
    x_in_use = 0;
@@@ -5977,12 -6001,6 +6012,12 @@@ The default is to just show an arrow an
  the tool bar buttons.  */);
    x_gtk_whole_detached_tool_bar = 0;
  
 +  DEFVAR_BOOL ("x-gtk-use-system-tooltips", &x_gtk_use_system_tooltips,
 +    doc: /* *If non-nil with a Gtk+ built Emacs, the Gtk+ toolip is used.
 +Otherwise use Emacs own tooltip implementation.
 +When using Gtk+ tooltips, the tooltip face is not used.  */);
 +  x_gtk_use_system_tooltips = 1;
 +
    Fprovide (intern_c_string ("x"), Qnil);
  
  #ifdef USE_X_TOOLKIT
       accepts --with-x-toolkit=gtk.  */
    Fprovide (intern_c_string ("x-toolkit"), Qnil);
    Fprovide (intern_c_string ("gtk"), Qnil);
 +  Fprovide (intern_c_string ("move-toolbar"), Qnil);
  
    DEFVAR_LISP ("gtk-version-string", &Vgtk_version_string,
                 doc: /* Version info for GTK+.  */);
  
  #endif /* HAVE_X_WINDOWS */
  
 -/* arch-tag: 55040d02-5485-4d58-8b22-95a7a05f3288
 -   (do not change this comment) */
diff --combined src/xterm.c
index 7297ee71f0fab70a3add327e61ac08fd2ac8825d,22019e2279b9ced2d9c5f51e83acac6c71116b7d..4c0493891e324eec19b707b4c251b9b76edbf5e7
@@@ -1,8 -1,7 +1,8 @@@
  /* X Communication module for terminals which understand the X protocol.
 -   Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
 -                 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 -                 Free Software Foundation, Inc.
 +
 +Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
 +  2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 +  Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
  
@@@ -23,7 -22,11 +23,7 @@@ along with GNU Emacs.  If not, see <htt
  /* Xt features made by Fred Pierresteguy.  */
  
  #include <config.h>
 -
 -/* On 4.3 these lose if they come after xterm.h.  */
 -/* Putting these at the beginning seems to be standard for other .c files.  */
  #include <signal.h>
 -
  #include <stdio.h>
  #include <setjmp.h>
  
  #include <sys/types.h>
  #endif /* makedev */
  
 -#ifdef BSD_SYSTEM
 +#ifdef HAVE_SYS_IOCTL_H
  #include <sys/ioctl.h>
 -#endif /* ! defined (BSD_SYSTEM) */
 +#endif /* ! defined (HAVE_SYS_IOCTL_H) */
  
  #include "systime.h"
  
 -#ifndef INCLUDED_FCNTL
  #include <fcntl.h>
 -#endif
  #include <ctype.h>
  #include <errno.h>
  #include <setjmp.h>
  #endif
  
  #ifdef USE_LUCID
 -extern int xlwmenu_window_p P_ ((Widget w, Window window));
 -extern void xlwmenu_redisplay P_ ((Widget));
 -#endif
 -
 -#if defined (USE_X_TOOLKIT) || defined (USE_GTK)
 -
 -extern void free_frame_menubar P_ ((struct frame *));
 +#include "../lwlib/xlwmenu.h"
  #endif
  
  #ifdef USE_X_TOOLKIT
@@@ -285,6 -296,25 +285,6 @@@ static int input_signal_count
  
  static int x_noop_count;
  
 -/* Initial values of argv and argc.  */
 -
 -extern char **initial_argv;
 -extern int initial_argc;
 -
 -extern Lisp_Object Vcommand_line_args, Vsystem_name;
 -
 -/* Tells if a window manager is present or not.  */
 -
 -extern Lisp_Object Vx_no_window_manager;
 -
 -extern Lisp_Object Qeql;
 -
 -extern int errno;
 -
 -/* A mask of extra modifier bits to put into every keyboard char.  */
 -
 -extern EMACS_INT extra_keyboard_modifiers;
 -
  /* The keysyms to use for the various modifiers.  */
  
  Lisp_Object Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym, Vx_super_keysym;
@@@ -302,66 -332,65 +302,66 @@@ static Lisp_Object xg_default_icon_file
  Lisp_Object Qx_gtk_map_stock;
  #endif
  
 +/* Some functions take this as char *, not const char *.  */
 +static char emacs_class[] = EMACS_CLASS;
 +
  /* Used in x_flush.  */
  
 -extern Lisp_Object Vinhibit_redisplay;
 -
 -extern XrmDatabase x_load_resources P_ ((Display *, char *, char *, char *));
 -extern int x_bitmap_mask P_ ((FRAME_PTR, int));
 -
 -static int x_alloc_nearest_color_1 P_ ((Display *, Colormap, XColor *));
 -static void x_set_window_size_1 P_ ((struct frame *, int, int, int));
 -static const XColor *x_color_cells P_ ((Display *, int *));
 -static void x_update_window_end P_ ((struct window *, int, int));
 -
 -static int x_io_error_quitter P_ ((Display *));
 -static struct terminal *x_create_terminal P_ ((struct x_display_info *));
 -void x_delete_terminal P_ ((struct terminal *));
 -static void x_update_end P_ ((struct frame *));
 -static void XTframe_up_to_date P_ ((struct frame *));
 -static void XTset_terminal_modes P_ ((struct terminal *));
 -static void XTreset_terminal_modes P_ ((struct terminal *));
 -static void x_clear_frame P_ ((struct frame *));
 -static void frame_highlight P_ ((struct frame *));
 -static void frame_unhighlight P_ ((struct frame *));
 -static void x_new_focus_frame P_ ((struct x_display_info *, struct frame *));
 -static void  x_focus_changed P_ ((int, int, struct x_display_info *,
 -                                struct frame *, struct input_event *));
 -static void x_detect_focus_change P_ ((struct x_display_info *,
 -                                       XEvent *, struct input_event *));
 -static void XTframe_rehighlight P_ ((struct frame *));
 -static void x_frame_rehighlight P_ ((struct x_display_info *));
 -static void x_draw_hollow_cursor P_ ((struct window *, struct glyph_row *));
 -static void x_draw_bar_cursor P_ ((struct window *, struct glyph_row *, int,
 -                                 enum text_cursor_kinds));
 -
 -static void x_clip_to_row P_ ((struct window *, struct glyph_row *, int, GC));
 -static void x_flush P_ ((struct frame *f));
 -static void x_update_begin P_ ((struct frame *));
 -static void x_update_window_begin P_ ((struct window *));
 -static void x_after_update_window_line P_ ((struct glyph_row *));
 -static struct scroll_bar *x_window_to_scroll_bar P_ ((Display *, Window));
 -static void x_scroll_bar_report_motion P_ ((struct frame **, Lisp_Object *,
 -                                          enum scroll_bar_part *,
 -                                          Lisp_Object *, Lisp_Object *,
 -                                          unsigned long *));
 -static void x_handle_net_wm_state P_ ((struct frame *, XPropertyEvent *));
 -static void x_check_fullscreen P_ ((struct frame *));
 -static void x_check_expected_move P_ ((struct frame *, int, int));
 -static void x_sync_with_move P_ ((struct frame *, int, int, int));
 -static int handle_one_xevent P_ ((struct x_display_info *, XEvent *,
 -                                int *, struct input_event *));
 +extern XrmDatabase x_load_resources (Display *, const char *, const char *,
 +                                   const char *);
 +extern int x_bitmap_mask (FRAME_PTR, int);
 +
 +static int x_alloc_nearest_color_1 (Display *, Colormap, XColor *);
 +static void x_set_window_size_1 (struct frame *, int, int, int);
 +static const XColor *x_color_cells (Display *, int *);
 +static void x_update_window_end (struct window *, int, int);
 +
 +static int x_io_error_quitter (Display *);
 +static struct terminal *x_create_terminal (struct x_display_info *);
 +void x_delete_terminal (struct terminal *);
 +static void x_update_end (struct frame *);
 +static void XTframe_up_to_date (struct frame *);
 +static void XTset_terminal_modes (struct terminal *);
 +static void XTreset_terminal_modes (struct terminal *);
 +static void x_clear_frame (struct frame *);
 +static void frame_highlight (struct frame *);
 +static void frame_unhighlight (struct frame *);
 +static void x_new_focus_frame (struct x_display_info *, struct frame *);
 +static void  x_focus_changed (int, int, struct x_display_info *,
 +                              struct frame *, struct input_event *);
 +static void x_detect_focus_change (struct x_display_info *,
 +                                   XEvent *, struct input_event *);
 +static void XTframe_rehighlight (struct frame *);
 +static void x_frame_rehighlight (struct x_display_info *);
 +static void x_draw_hollow_cursor (struct window *, struct glyph_row *);
 +static void x_draw_bar_cursor (struct window *, struct glyph_row *, int,
 +                               enum text_cursor_kinds);
 +
 +static void x_clip_to_row (struct window *, struct glyph_row *, int, GC);
 +static void x_flush (struct frame *f);
 +static void x_update_begin (struct frame *);
 +static void x_update_window_begin (struct window *);
 +static void x_after_update_window_line (struct glyph_row *);
 +static struct scroll_bar *x_window_to_scroll_bar (Display *, Window);
 +static void x_scroll_bar_report_motion (struct frame **, Lisp_Object *,
 +                                        enum scroll_bar_part *,
 +                                        Lisp_Object *, Lisp_Object *,
 +                                        unsigned long *);
 +static void x_handle_net_wm_state (struct frame *, XPropertyEvent *);
 +static void x_check_fullscreen (struct frame *);
 +static void x_check_expected_move (struct frame *, int, int);
 +static void x_sync_with_move (struct frame *, int, int, int);
 +static int handle_one_xevent (struct x_display_info *, XEvent *,
 +                              int *, struct input_event *);
  /* Don't declare this NO_RETURN because we want no
     interference with debugging failing X calls.  */
 -static SIGTYPE x_connection_closed P_ ((Display *, char *));
 +static SIGTYPE x_connection_closed (Display *, const char *);
  
  
  /* Flush display of frame F, or of all frames if F is null.  */
  
  static void
 -x_flush (f)
 -     struct frame *f;
 +x_flush (struct frame *f)
  {
    /* Don't call XFlush when it is not safe to redisplay; the X
       connection may be broken.  */
@@@ -430,7 -459,8 +430,7 @@@ record_event (locus, type
  /* Return the struct x_display_info corresponding to DPY.  */
  
  struct x_display_info *
 -x_display_info_for_display (dpy)
 -     Display *dpy;
 +x_display_info_for_display (Display *dpy)
  {
    struct x_display_info *dpyinfo;
  
  #define OPACITY "_NET_WM_WINDOW_OPACITY"
  
  void
 -x_set_frame_alpha (f)
 -     struct frame *f;
 +x_set_frame_alpha (struct frame *f)
  {
    struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
    Display *dpy = FRAME_X_DISPLAY (f);
    if (FRAME_X_DISPLAY_INFO (f)->root_window != FRAME_X_OUTPUT (f)->parent_desc)
      /* Since the WM decoration lies under the FRAME_OUTER_WINDOW,
         we must treat the former instead of the latter. */
 -    win = FRAME_X_OUTPUT(f)->parent_desc;
 +    win = FRAME_X_OUTPUT (f)->parent_desc;
  
    if (dpyinfo->x_highlight_frame == f)
      alpha = f->alpha[0];
      unsigned long n, left;
  
      x_catch_errors (dpy);
 -    rc = XGetWindowProperty(dpy, win, XInternAtom(dpy, OPACITY, False),
 -                          0L, 1L, False, XA_CARDINAL,
 -                          &actual, &format, &n, &left,
 -                          &data);
 +    rc = XGetWindowProperty (dpy, win, XInternAtom(dpy, OPACITY, False),
 +                           0L, 1L, False, XA_CARDINAL,
 +                           &actual, &format, &n, &left,
 +                           &data);
  
      if (rc == Success && actual != None)
        if (*(unsigned long *)data == opac)
  }
  
  int
 -x_display_pixel_height (dpyinfo)
 -     struct x_display_info *dpyinfo;
 +x_display_pixel_height (struct x_display_info *dpyinfo)
  {
    return HeightOfScreen (dpyinfo->screen);
  }
  
  int
 -x_display_pixel_width (dpyinfo)
 -     struct x_display_info *dpyinfo;
 +x_display_pixel_width (struct x_display_info *dpyinfo)
  {
    return WidthOfScreen (dpyinfo->screen);
  }
     because all interesting stuff is done on a window basis.  */
  
  static void
 -x_update_begin (f)
 -     struct frame *f;
 +x_update_begin (struct frame *f)
  {
    /* Nothing to do.  */
  }
     position of W.  */
  
  static void
 -x_update_window_begin (w)
 -     struct window *w;
 +x_update_window_begin (struct window *w)
  {
    struct frame *f = XFRAME (WINDOW_FRAME (w));
 -  struct x_display_info *display_info = FRAME_X_DISPLAY_INFO (f);
 +  Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f);
  
    updated_window = w;
    set_output_cursor (&w->cursor);
  
    BLOCK_INPUT;
  
 -  if (f == display_info->mouse_face_mouse_frame)
 +  if (f == hlinfo->mouse_face_mouse_frame)
      {
        /* Don't do highlighting for mouse motion during the update.  */
 -      display_info->mouse_face_defer = 1;
 +      hlinfo->mouse_face_defer = 1;
  
        /* If F needs to be redrawn, simply forget about any prior mouse
         highlighting.  */
        if (FRAME_GARBAGED_P (f))
 -      display_info->mouse_face_window = Qnil;
 +      hlinfo->mouse_face_window = Qnil;
      }
  
    UNBLOCK_INPUT;
  /* Draw a vertical window border from (x,y0) to (x,y1)  */
  
  static void
 -x_draw_vertical_window_border (w, x, y0, y1)
 -     struct window *w;
 -     int x, y0, y1;
 +x_draw_vertical_window_border (struct window *w, int x, int y0, int y1)
  {
    struct frame *f = XFRAME (WINDOW_FRAME (w));
    struct face *face;
     here.  */
  
  static void
 -x_update_window_end (w, cursor_on_p, mouse_face_overwritten_p)
 -     struct window *w;
 -     int cursor_on_p, mouse_face_overwritten_p;
 +x_update_window_end (struct window *w, int cursor_on_p, int mouse_face_overwritten_p)
  {
 -  struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (XFRAME (w->frame));
 +  Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (XFRAME (w->frame));
  
    if (!w->pseudo_window_p)
      {
       XTframe_up_to_date to redisplay the mouse highlight.  */
    if (mouse_face_overwritten_p)
      {
 -      dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1;
 -      dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1;
 -      dpyinfo->mouse_face_window = Qnil;
 +      hlinfo->mouse_face_beg_row = hlinfo->mouse_face_beg_col = -1;
 +      hlinfo->mouse_face_end_row = hlinfo->mouse_face_end_col = -1;
 +      hlinfo->mouse_face_window = Qnil;
      }
  
    updated_window = NULL;
     update_end.  */
  
  static void
 -x_update_end (f)
 -     struct frame *f;
 +x_update_end (struct frame *f)
  {
    /* Mouse highlight may be displayed again.  */
 -  FRAME_X_DISPLAY_INFO (f)->mouse_face_defer = 0;
 +  MOUSE_HL_INFO (f)->mouse_face_defer = 0;
  
  #ifndef XFlush
    BLOCK_INPUT;
     updated_window is not available here.  */
  
  static void
 -XTframe_up_to_date (f)
 -     struct frame *f;
 +XTframe_up_to_date (struct frame *f)
  {
    if (FRAME_X_P (f))
      {
 -      struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
 +      Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f);
  
 -      if (dpyinfo->mouse_face_deferred_gc
 -        || f == dpyinfo->mouse_face_mouse_frame)
 +      if (hlinfo->mouse_face_deferred_gc
 +        || f == hlinfo->mouse_face_mouse_frame)
        {
          BLOCK_INPUT;
 -        if (dpyinfo->mouse_face_mouse_frame)
 -          note_mouse_highlight (dpyinfo->mouse_face_mouse_frame,
 -                                dpyinfo->mouse_face_mouse_x,
 -                                dpyinfo->mouse_face_mouse_y);
 -        dpyinfo->mouse_face_deferred_gc = 0;
 +        if (hlinfo->mouse_face_mouse_frame)
 +          note_mouse_highlight (hlinfo->mouse_face_mouse_frame,
 +                                hlinfo->mouse_face_mouse_x,
 +                                hlinfo->mouse_face_mouse_y);
 +        hlinfo->mouse_face_deferred_gc = 0;
          UNBLOCK_INPUT;
        }
      }
     between bitmaps to be drawn between current row and DESIRED_ROW.  */
  
  static void
 -x_after_update_window_line (desired_row)
 -     struct glyph_row *desired_row;
 +x_after_update_window_line (struct glyph_row *desired_row)
  {
    struct window *w = updated_window;
    struct frame *f;
  }
  
  static void
 -x_draw_fringe_bitmap (w, row, p)
 -     struct window *w;
 -     struct glyph_row *row;
 -     struct draw_fringe_bitmap_params *p;
 +x_draw_fringe_bitmap (struct window *w, struct glyph_row *row, struct draw_fringe_bitmap_params *p)
  {
    struct frame *f = XFRAME (WINDOW_FRAME (w));
    Display *display = FRAME_X_DISPLAY (f);
@@@ -875,37 -920,37 +875,37 @@@ XTreset_terminal_modes (struct termina
  
  
  
 -static void x_set_glyph_string_clipping P_ ((struct glyph_string *));
 -static void x_set_glyph_string_gc P_ ((struct glyph_string *));
 -static void x_draw_glyph_string_background P_ ((struct glyph_string *,
 -                                              int));
 -static void x_draw_glyph_string_foreground P_ ((struct glyph_string *));
 -static void x_draw_composite_glyph_string_foreground P_ ((struct glyph_string *));
 -static void x_draw_glyph_string_box P_ ((struct glyph_string *));
 -static void x_draw_glyph_string  P_ ((struct glyph_string *));
 -static void x_compute_glyph_string_overhangs P_ ((struct glyph_string *));
 -static void x_set_cursor_gc P_ ((struct glyph_string *));
 -static void x_set_mode_line_face_gc P_ ((struct glyph_string *));
 -static void x_set_mouse_face_gc P_ ((struct glyph_string *));
 -static int x_alloc_lighter_color P_ ((struct frame *, Display *, Colormap,
 -                                    unsigned long *, double, int));
 -static void x_setup_relief_color P_ ((struct frame *, struct relief *,
 -                                    double, int, unsigned long));
 -static void x_setup_relief_colors P_ ((struct glyph_string *));
 -static void x_draw_image_glyph_string P_ ((struct glyph_string *));
 -static void x_draw_image_relief P_ ((struct glyph_string *));
 -static void x_draw_image_foreground P_ ((struct glyph_string *));
 -static void x_draw_image_foreground_1 P_ ((struct glyph_string *, Pixmap));
 -static void x_clear_glyph_string_rect P_ ((struct glyph_string *, int,
 -                                         int, int, int));
 -static void x_draw_relief_rect P_ ((struct frame *, int, int, int, int,
 -                                  int, int, int, int, int, int,
 -                                  XRectangle *));
 -static void x_draw_box_rect P_ ((struct glyph_string *, int, int, int, int,
 -                               int, int, int, XRectangle *));
 +static void x_set_glyph_string_clipping (struct glyph_string *);
 +static void x_set_glyph_string_gc (struct glyph_string *);
 +static void x_draw_glyph_string_background (struct glyph_string *,
 +                                            int);
 +static void x_draw_glyph_string_foreground (struct glyph_string *);
 +static void x_draw_composite_glyph_string_foreground (struct glyph_string *);
 +static void x_draw_glyph_string_box (struct glyph_string *);
 +static void x_draw_glyph_string  (struct glyph_string *);
 +static void x_compute_glyph_string_overhangs (struct glyph_string *);
 +static void x_set_cursor_gc (struct glyph_string *);
 +static void x_set_mode_line_face_gc (struct glyph_string *);
 +static void x_set_mouse_face_gc (struct glyph_string *);
 +static int x_alloc_lighter_color (struct frame *, Display *, Colormap,
 +                                  unsigned long *, double, int);
 +static void x_setup_relief_color (struct frame *, struct relief *,
 +                                  double, int, unsigned long);
 +static void x_setup_relief_colors (struct glyph_string *);
 +static void x_draw_image_glyph_string (struct glyph_string *);
 +static void x_draw_image_relief (struct glyph_string *);
 +static void x_draw_image_foreground (struct glyph_string *);
 +static void x_draw_image_foreground_1 (struct glyph_string *, Pixmap);
 +static void x_clear_glyph_string_rect (struct glyph_string *, int,
 +                                       int, int, int);
 +static void x_draw_relief_rect (struct frame *, int, int, int, int,
 +                                int, int, int, int, int, int,
 +                                XRectangle *);
 +static void x_draw_box_rect (struct glyph_string *, int, int, int, int,
 +                             int, int, int, XRectangle *);
  
  #if GLYPH_DEBUG
 -static void x_check_font P_ ((struct frame *, struct font *));
 +static void x_check_font (struct frame *, struct font *);
  #endif
  
  
     face.  */
  
  static void
 -x_set_cursor_gc (s)
 -     struct glyph_string *s;
 +x_set_cursor_gc (struct glyph_string *s)
  {
    if (s->font == FRAME_FONT (s->f)
        && s->face->background == FRAME_BACKGROUND_PIXEL (s->f)
  /* Set up S->gc of glyph string S for drawing text in mouse face.  */
  
  static void
 -x_set_mouse_face_gc (s)
 -     struct glyph_string *s;
 +x_set_mouse_face_gc (struct glyph_string *s)
  {
    int face_id;
    struct face *face;
  
    /* What face has to be used last for the mouse face?  */
 -  face_id = FRAME_X_DISPLAY_INFO (s->f)->mouse_face_face_id;
 +  face_id = MOUSE_HL_INFO (s->f)->mouse_face_face_id;
    face = FACE_FROM_ID (s->f, face_id);
    if (face == NULL)
      face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
     matrix was built, so there isn't much to do, here.  */
  
  static INLINE void
 -x_set_mode_line_face_gc (s)
 -     struct glyph_string *s;
 +x_set_mode_line_face_gc (struct glyph_string *s)
  {
    s->gc = s->face->gc;
  }
     pattern.  */
  
  static INLINE void
 -x_set_glyph_string_gc (s)
 -     struct glyph_string *s;
 +x_set_glyph_string_gc (struct glyph_string *s)
  {
    PREPARE_FACE_FOR_DISPLAY (s->f, s->face);
  
     line or menu if we don't have X toolkit support.  */
  
  static INLINE void
 -x_set_glyph_string_clipping (s)
 -     struct glyph_string *s;
 +x_set_glyph_string_clipping (struct glyph_string *s)
  {
    XRectangle *r = s->clip;
    int n = get_glyph_string_clip_rects (s, r, 2);
     the area of SRC.  */
  
  static void
 -x_set_glyph_string_clipping_exactly (src, dst)
 -     struct glyph_string *src, *dst;
 +x_set_glyph_string_clipping_exactly (struct glyph_string *src, struct glyph_string *dst)
  {
    XRectangle r;
  
     Compute left and right overhang of glyph string S.  */
  
  static void
 -x_compute_glyph_string_overhangs (s)
 -     struct glyph_string *s;
 +x_compute_glyph_string_overhangs (struct glyph_string *s)
  {
    if (s->cmp == NULL
        && (s->first_glyph->type == CHAR_GLYPH
  /* Fill rectangle X, Y, W, H with background color of glyph string S.  */
  
  static INLINE void
 -x_clear_glyph_string_rect (s, x, y, w, h)
 -     struct glyph_string *s;
 -     int x, y, w, h;
 +x_clear_glyph_string_rect (struct glyph_string *s, int x, int y, int w, int h)
  {
    XGCValues xgcv;
    XGetGCValues (s->display, s->gc, GCForeground | GCBackground, &xgcv);
     contains the first component of a composition.  */
  
  static void
 -x_draw_glyph_string_background (s, force_p)
 -     struct glyph_string *s;
 -     int force_p;
 +x_draw_glyph_string_background (struct glyph_string *s, int force_p)
  {
    /* Nothing to do if background has already been drawn or if it
       shouldn't be drawn in the first place.  */
  /* Draw the foreground of glyph string S.  */
  
  static void
 -x_draw_glyph_string_foreground (s)
 -     struct glyph_string *s;
 +x_draw_glyph_string_foreground (struct glyph_string *s)
  {
    int i, x;
  
  /* Draw the foreground of composite glyph string S.  */
  
  static void
 -x_draw_composite_glyph_string_foreground (s)
 -     struct glyph_string *s;
 +x_draw_composite_glyph_string_foreground (struct glyph_string *s)
  {
    int i, j, x;
    struct font *font = s->font;
  }
  
  
 +/* Draw the foreground of glyph string S for glyphless characters.  */
 +
 +static void
 +x_draw_glyphless_glyph_string_foreground (struct glyph_string *s)
 +{
 +  struct glyph *glyph = s->first_glyph;
 +  XChar2b char2b[8];
 +  int x, i, j;
 +
 +  /* If first glyph of S has a left box line, start drawing the text
 +     of S to the right of that box line.  */
 +  if (s->face && s->face->box != FACE_NO_BOX
 +      && s->first_glyph->left_box_line_p)
 +    x = s->x + eabs (s->face->box_line_width);
 +  else
 +    x = s->x;
 +
 +  s->char2b = char2b;
 +
 +  for (i = 0; i < s->nchars; i++, glyph++)
 +    {
 +      char buf[7], *str = NULL;
 +      int len = glyph->u.glyphless.len;
 +
 +      if (glyph->u.glyphless.method == GLYPHLESS_DISPLAY_ACRONYM)
 +      {
 +        if (len > 0
 +            && CHAR_TABLE_P (Vglyphless_char_display)
 +            && (CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (Vglyphless_char_display))
 +                >= 1))
 +          {
 +            Lisp_Object acronym
 +              = (! glyph->u.glyphless.for_no_font
 +                 ? CHAR_TABLE_REF (Vglyphless_char_display,
 +                                   glyph->u.glyphless.ch)
 +                 : XCHAR_TABLE (Vglyphless_char_display)->extras[0]);
 +            if (STRINGP (acronym))
 +              str = (char *) SDATA (acronym);
 +          }
 +      }
 +      else if (glyph->u.glyphless.method == GLYPHLESS_DISPLAY_HEXA_CODE)
 +      {
 +        sprintf ((char *) buf, "%0*X",
 +                 glyph->u.glyphless.ch < 0x10000 ? 4 : 6,
 +                 glyph->u.glyphless.ch);
 +        str = buf;
 +      }
 +
 +      if (str)
 +      {
 +        int upper_len = (len + 1) / 2;
 +        unsigned code;
 +
 +        /* It is assured that all LEN characters in STR is ASCII.  */
 +        for (j = 0; j < len; j++)
 +          {
 +            code = s->font->driver->encode_char (s->font, str[j]);
 +            STORE_XCHAR2B (char2b + j, code >> 8, code & 0xFF);
 +          }
 +        s->font->driver->draw (s, 0, upper_len,
 +                               x + glyph->slice.glyphless.upper_xoff,
 +                               s->ybase + glyph->slice.glyphless.upper_yoff,
 +                               0);
 +        s->font->driver->draw (s, upper_len, len,
 +                               x + glyph->slice.glyphless.lower_xoff,
 +                               s->ybase + glyph->slice.glyphless.lower_yoff,
 +                               0);
 +      }
 +      if (glyph->u.glyphless.method != GLYPHLESS_DISPLAY_THIN_SPACE)
 +      XDrawRectangle (s->display, s->window, s->gc,
 +                      x, s->ybase - glyph->ascent,
 +                      glyph->pixel_width - 1,
 +                      glyph->ascent + glyph->descent - 1);
 +      x += glyph->pixel_width;
 +   }
 +}
 +
  #ifdef USE_X_TOOLKIT
  
 -static struct frame *x_frame_of_widget P_ ((Widget));
 -static Boolean cvt_string_to_pixel P_ ((Display *, XrmValue *, Cardinal *,
 -                                      XrmValue *, XrmValue *, XtPointer *));
 -static void cvt_pixel_dtor P_ ((XtAppContext, XrmValue *, XtPointer,
 -                              XrmValue *, Cardinal *));
 +static struct frame *x_frame_of_widget (Widget);
 +static Boolean cvt_string_to_pixel (Display *, XrmValue *, Cardinal *,
 +                                    XrmValue *, XrmValue *, XtPointer *);
 +static void cvt_pixel_dtor (XtAppContext, XrmValue *, XtPointer,
 +                            XrmValue *, Cardinal *);
  
  
  /* Return the frame on which widget WIDGET is used.. Abort if frame
     cannot be determined.  */
  
  static struct frame *
 -x_frame_of_widget (widget)
 -     Widget widget;
 +x_frame_of_widget (Widget widget)
  {
    struct x_display_info *dpyinfo;
    Lisp_Object tail;
     if successful.  This is called from lwlib.  */
  
  int
 -x_alloc_nearest_color_for_widget (widget, cmap, color)
 -     Widget widget;
 -     Colormap cmap;
 -     XColor *color;
 +x_alloc_nearest_color_for_widget (Widget widget, Colormap cmap, XColor *color)
  {
    struct frame *f = x_frame_of_widget (widget);
    return x_alloc_nearest_color (f, cmap, color);
     Value is non-zero if successful.  */
  
  int
 -x_alloc_lighter_color_for_widget (widget, display, cmap, pixel, factor, delta)
 -     Widget widget;
 -     Display *display;
 -     Colormap cmap;
 -     unsigned long *pixel;
 -     double factor;
 -     int delta;
 +x_alloc_lighter_color_for_widget (Widget widget, Display *display, Colormap cmap,
 +                                unsigned long *pixel, double factor, int delta)
  {
    struct frame *f = x_frame_of_widget (widget);
    return x_alloc_lighter_color (f, display, cmap, pixel, factor, delta);
@@@ -1515,9 -1505,12 +1515,9 @@@ static Pixel cvt_string_to_pixel_value
     Value is True if successful, False otherwise.  */
  
  static Boolean
 -cvt_string_to_pixel (dpy, args, nargs, from, to, closure_ret)
 -     Display *dpy;
 -     XrmValue *args;
 -     Cardinal *nargs;
 -     XrmValue *from, *to;
 -     XtPointer *closure_ret;
 +cvt_string_to_pixel (Display *dpy, XrmValue *args, Cardinal *nargs,
 +                   XrmValue *from, XrmValue *to,
 +                   XtPointer *closure_ret)
  {
    Screen *screen;
    Colormap cmap;
     ARGS and NARGS are like for cvt_string_to_pixel.  */
  
  static void
 -cvt_pixel_dtor (app, to, closure, args, nargs)
 -    XtAppContext app;
 -    XrmValuePtr to;
 -    XtPointer closure;
 -    XrmValuePtr args;
 -    Cardinal *nargs;
 +cvt_pixel_dtor (XtAppContext app, XrmValuePtr to, XtPointer closure, XrmValuePtr args,
 +              Cardinal *nargs)
  {
    if (*nargs != 2)
      {
     say a 24-bit TrueColor map.  */
  
  static const XColor *
 -x_color_cells (dpy, ncells)
 -     Display *dpy;
 -     int *ncells;
 +x_color_cells (Display *dpy, int *ncells)
  {
    struct x_display_info *dpyinfo = x_display_info_for_display (dpy);
  
     colors in COLORS.  Use cached information, if available.  */
  
  void
 -x_query_colors (f, colors, ncolors)
 -     struct frame *f;
 -     XColor *colors;
 -     int ncolors;
 +x_query_colors (struct frame *f, XColor *colors, int ncolors)
  {
    struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
  
     COLOR.  Use cached information, if available.  */
  
  void
 -x_query_color (f, color)
 -     struct frame *f;
 -     XColor *color;
 +x_query_color (struct frame *f, XColor *color)
  {
    x_query_colors (f, color, 1);
  }
     allocated.  */
  
  static int
 -x_alloc_nearest_color_1 (dpy, cmap, color)
 -     Display *dpy;
 -     Colormap cmap;
 -     XColor *color;
 +x_alloc_nearest_color_1 (Display *dpy, Colormap cmap, XColor *color)
  {
    int rc;
  
     allocated.  */
  
  int
 -x_alloc_nearest_color (f, cmap, color)
 -     struct frame *f;
 -     Colormap cmap;
 -     XColor *color;
 +x_alloc_nearest_color (struct frame *f, Colormap cmap, XColor *color)
  {
    gamma_correct (f, color);
    return x_alloc_nearest_color_1 (FRAME_X_DISPLAY (f), cmap, color);
     get color reference counts right.  */
  
  unsigned long
 -x_copy_color (f, pixel)
 -     struct frame *f;
 -     unsigned long pixel;
 +x_copy_color (struct frame *f, long unsigned int pixel)
  {
    XColor color;
  
     get color reference counts right.  */
  
  unsigned long
 -x_copy_dpy_color (dpy, cmap, pixel)
 -     Display *dpy;
 -     Colormap cmap;
 -     unsigned long pixel;
 +x_copy_dpy_color (Display *dpy, Colormap cmap, long unsigned int pixel)
  {
    XColor color;
  
     Value is non-zero if successful.  */
  
  static int
 -x_alloc_lighter_color (f, display, cmap, pixel, factor, delta)
 -     struct frame *f;
 -     Display *display;
 -     Colormap cmap;
 -     unsigned long *pixel;
 -     double factor;
 -     int delta;
 +x_alloc_lighter_color (struct frame *f, Display *display, Colormap cmap, long unsigned int *pixel, double factor, int delta)
  {
    XColor color, new;
    long bright;
     be allocated, use DEFAULT_PIXEL, instead.  */
  
  static void
 -x_setup_relief_color (f, relief, factor, delta, default_pixel)
 -     struct frame *f;
 -     struct relief *relief;
 -     double factor;
 -     int delta;
 -     unsigned long default_pixel;
 +x_setup_relief_color (struct frame *f, struct relief *relief, double factor, int delta, long unsigned int default_pixel)
  {
    XGCValues xgcv;
    struct x_output *di = f->output_data.x;
  /* Set up colors for the relief lines around glyph string S.  */
  
  static void
 -x_setup_relief_colors (s)
 -     struct glyph_string *s;
 +x_setup_relief_colors (struct glyph_string *s)
  {
    struct x_output *di = s->f->output_data.x;
    unsigned long color;
     when drawing.  */
  
  static void
 -x_draw_relief_rect (f, left_x, top_y, right_x, bottom_y, width,
 -                  raised_p, top_p, bot_p, left_p, right_p, clip_rect)
 -     struct frame *f;
 -     int left_x, top_y, right_x, bottom_y, width;
 -     int top_p, bot_p, left_p, right_p, raised_p;
 -     XRectangle *clip_rect;
 +x_draw_relief_rect (struct frame *f,
 +                  int left_x, int top_y, int right_x, int bottom_y, int width,
 +                  int raised_p, int top_p, int bot_p, int left_p, int right_p,
 +                  XRectangle *clip_rect)
  {
    Display *dpy = FRAME_X_DISPLAY (f);
    Window window = FRAME_X_WINDOW (f);
      gc = f->output_data.x->black_relief.gc;
    XSetClipRectangles (dpy, gc, 0, 0, clip_rect, 1, Unsorted);
  
 +  /* This code is more complicated than it has to be, because of two
 +     minor hacks to make the boxes look nicer: (i) if width > 1, draw
 +     the outermost line using the black relief.  (ii) Omit the four
 +     corner pixels.  */
 +
    /* Top.  */
    if (top_p)
 -    for (i = 0; i < width; ++i)
 -      XDrawLine (dpy, window, gc,
 -               left_x + i * left_p, top_y + i,
 -               right_x + 1 - i * right_p, top_y + i);
 +    {
 +      if (width == 1)
 +      XDrawLine (dpy, window, gc,
 +                 left_x  + (left_p  ? 1 : 0), top_y,
 +                 right_x + (right_p ? 0 : 1), top_y);
 +
 +      for (i = 1; i < width; ++i)
 +      XDrawLine (dpy, window, gc,
 +                 left_x  + i * left_p, top_y + i,
 +                 right_x + 1 - i * right_p, top_y + i);
 +    }
  
    /* Left.  */
    if (left_p)
 -    for (i = 0; i < width; ++i)
 -      XDrawLine (dpy, window, gc,
 -               left_x + i, top_y + i, left_x + i, bottom_y - i + 1);
 +    {
 +      if (width == 1)
 +      XDrawLine (dpy, window, gc, left_x, top_y + 1, left_x, bottom_y);
 +
 +      XClearArea (dpy, window, left_x, top_y, 1, 1, False);
 +      XClearArea (dpy, window, left_x, bottom_y, 1, 1, False);
 +
 +      for (i = (width > 1 ? 1 : 0); i < width; ++i)
 +      XDrawLine (dpy, window, gc,
 +                 left_x + i, top_y + i, left_x + i, bottom_y - i + 1);
 +    }
  
    XSetClipMask (dpy, gc, None);
    if (raised_p)
      gc = f->output_data.x->white_relief.gc;
    XSetClipRectangles (dpy, gc, 0, 0, clip_rect, 1, Unsorted);
  
 +  if (width > 1)
 +    {
 +      /* Outermost top line.  */
 +      if (top_p)
 +      XDrawLine (dpy, window, gc,
 +                 left_x  + (left_p  ? 1 : 0), top_y,
 +                 right_x + (right_p ? 0 : 1), top_y);
 +
 +      /* Outermost left line.  */
 +      if (left_p)
 +      XDrawLine (dpy, window, gc, left_x, top_y + 1, left_x, bottom_y);
 +    }
 +
    /* Bottom.  */
    if (bot_p)
 -    for (i = 0; i < width; ++i)
 +    {
        XDrawLine (dpy, window, gc,
 -               left_x + i * left_p, bottom_y - i,
 -               right_x + 1 - i * right_p, bottom_y - i);
 +               left_x  + (left_p  ? 1 : 0), bottom_y,
 +               right_x + (right_p ? 0 : 1), bottom_y);
 +      for (i = 1; i < width; ++i)
 +      XDrawLine (dpy, window, gc,
 +                 left_x  + i * left_p, bottom_y - i,
 +                 right_x + 1 - i * right_p, bottom_y - i);
 +    }
  
    /* Right.  */
    if (right_p)
 -    for (i = 0; i < width; ++i)
 -      XDrawLine (dpy, window, gc,
 -               right_x - i, top_y + i + 1, right_x - i, bottom_y - i);
 +    {
 +      XClearArea (dpy, window, right_x, top_y, 1, 1, False);
 +      XClearArea (dpy, window, right_x, bottom_y, 1, 1, False);
 +      for (i = 0; i < width; ++i)
 +      XDrawLine (dpy, window, gc,
 +                 right_x - i, top_y + i + 1, right_x - i, bottom_y - i);
 +    }
  
    XSetClipMask (dpy, gc, None);
  }
     rectangle to use when drawing.  */
  
  static void
 -x_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width,
 -               left_p, right_p, clip_rect)
 -     struct glyph_string *s;
 -     int left_x, top_y, right_x, bottom_y, width, left_p, right_p;
 -     XRectangle *clip_rect;
 +x_draw_box_rect (struct glyph_string *s,
 +               int left_x, int top_y, int right_x, int bottom_y, int width,
 +               int left_p, int right_p, XRectangle *clip_rect)
  {
    XGCValues xgcv;
  
  /* Draw a box around glyph string S.  */
  
  static void
 -x_draw_glyph_string_box (s)
 -     struct glyph_string *s;
 +x_draw_glyph_string_box (struct glyph_string *s)
  {
    int width, left_x, right_x, top_y, bottom_y, last_x, raised_p;
    int left_p, right_p;
  /* Draw foreground of image glyph string S.  */
  
  static void
 -x_draw_image_foreground (s)
 -     struct glyph_string *s;
 +x_draw_image_foreground (struct glyph_string *s)
  {
    int x = s->x;
    int y = s->ybase - image_ascent (s->img, s->face, &s->slice);
  /* Draw a relief around the image glyph string S.  */
  
  static void
 -x_draw_image_relief (s)
 -     struct glyph_string *s;
 +x_draw_image_relief (struct glyph_string *s)
  {
 -  int x0, y0, x1, y1, thick, raised_p;
 +  int x0, y0, x1, y1, thick, raised_p, extra;
    XRectangle r;
    int x = s->x;
    int y = s->ybase - image_ascent (s->img, s->face, &s->slice);
        raised_p = s->img->relief > 0;
      }
  
 -  x0 = x - thick;
 -  y0 = y - thick;
 -  x1 = x + s->slice.width + thick - 1;
 -  y1 = y + s->slice.height + thick - 1;
 +  extra = s->face->id == TOOL_BAR_FACE_ID
 +    ? XINT (Vtool_bar_button_margin) : 0;
 +
 +  x0 = x - thick - extra;
 +  y0 = y - thick - extra;
 +  x1 = x + s->slice.width + thick - 1 + extra;
 +  y1 = y + s->slice.height + thick - 1 + extra;
  
    x_setup_relief_colors (s);
    get_glyph_string_clip_rect (s, &r);
  /* Draw the foreground of image glyph string S to PIXMAP.  */
  
  static void
 -x_draw_image_foreground_1 (s, pixmap)
 -     struct glyph_string *s;
 -     Pixmap pixmap;
 +x_draw_image_foreground_1 (struct glyph_string *s, Pixmap pixmap)
  {
    int x = 0;
    int y = s->ybase - s->y - image_ascent (s->img, s->face, &s->slice);
     give the rectangle to draw.  */
  
  static void
 -x_draw_glyph_string_bg_rect (s, x, y, w, h)
 -     struct glyph_string *s;
 -     int x, y, w, h;
 +x_draw_glyph_string_bg_rect (struct glyph_string *s, int x, int y, int w, int h)
  {
    if (s->stippled_p)
      {
   */
  
  static void
 -x_draw_image_glyph_string (s)
 -     struct glyph_string *s;
 +x_draw_image_glyph_string (struct glyph_string *s)
  {
    int box_line_hwidth = eabs (s->face->box_line_width);
    int box_line_vwidth = max (s->face->box_line_width, 0);
  /* Draw stretch glyph string S.  */
  
  static void
 -x_draw_stretch_glyph_string (s)
 -     struct glyph_string *s;
 +x_draw_stretch_glyph_string (struct glyph_string *s)
  {
    xassert (s->first_glyph->type == STRETCH_GLYPH);
  
    if (s->hl == DRAW_CURSOR
        && !x_stretch_cursor_p)
      {
 -      /* If `x-stretch-block-cursor' is nil, don't draw a block cursor
 -       as wide as the stretch glyph.  */
 +      /* If `x-stretch-cursor' is nil, don't draw a block cursor as
 +       wide as the stretch glyph.  */
        int width, background_width = s->background_width;
 -      int x = s->x, left_x = window_box_left_offset (s->w, TEXT_AREA);
 +      int x = s->x;
  
 -      if (x < left_x)
 +      if (!s->row->reversed_p)
        {
 -        background_width -= left_x - x;
 -        x = left_x;
 +        int left_x = window_box_left_offset (s->w, TEXT_AREA);
 +
 +        if (x < left_x)
 +          {
 +            background_width -= left_x - x;
 +            x = left_x;
 +          }
 +      }
 +      else
 +      {
 +        /* In R2L rows, draw the cursor on the right edge of the
 +           stretch glyph.  */
 +        int right_x = window_box_right_offset (s->w, TEXT_AREA);
 +
 +        if (x + background_width > right_x)
 +          background_width -= x - right_x;
 +        x += background_width;
        }
        width = min (FRAME_COLUMN_WIDTH (s->f), background_width);
 +      if (s->row->reversed_p)
 +      x -= width;
  
        /* Draw cursor.  */
        x_draw_glyph_string_bg_rect (s, x, s->y, width, s->height);
          XRectangle r;
          GC gc;
  
 -        x += width;
 +        if (!s->row->reversed_p)
 +          x += width;
 +        else
 +          x = s->x;
          if (s->row->mouse_face_p
              && cursor_in_mouse_face_p (s->w))
            {
  /* Draw glyph string S.  */
  
  static void
 -x_draw_glyph_string (s)
 -     struct glyph_string *s;
 +x_draw_glyph_string (struct glyph_string *s)
  {
    int relief_drawn_p = 0;
  
        x_draw_composite_glyph_string_foreground (s);
        break;
  
 +    case GLYPHLESS_GLYPH:
 +      if (s->for_overlaps)
 +      s->background_filled_p = 1;
 +      else
 +      x_draw_glyph_string_background (s, 1);
 +      x_draw_glyphless_glyph_string_foreground (s);
 +      break;
 +
      default:
        abort ();
      }
  /* Shift display to make room for inserted glyphs.   */
  
  void
 -x_shift_glyphs_for_insert (f, x, y, width, height, shift_by)
 -     struct frame *f;
 -     int x, y, width, height, shift_by;
 +x_shift_glyphs_for_insert (struct frame *f, int x, int y, int width, int height, int shift_by)
  {
    XCopyArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), FRAME_X_WINDOW (f),
             f->output_data.x->normal_gc,
     for X frames.  */
  
  static void
 -x_delete_glyphs (f, n)
 -     struct frame *f;
 -     register int n;
 +x_delete_glyphs (struct frame *f, register int n)
  {
    abort ();
  }
     If they are <= 0, this is probably an error.  */
  
  void
 -x_clear_area (dpy, window, x, y, width, height, exposures)
 -     Display *dpy;
 -     Window window;
 -     int x, y;
 -     int width, height;
 -     int exposures;
 +x_clear_area (Display *dpy, Window window, int x, int y, int width, int height, int exposures)
  {
    xassert (width > 0 && height > 0);
    XClearArea (dpy, window, x, y, width, height, exposures);
@@@ -2965,10 -2942,9 +2965,10 @@@ x_clear_frame (struct frame *f
  #if defined (USE_GTK) && defined (USE_TOOLKIT_SCROLL_BARS)
    /* Make sure scroll bars are redrawn.  As they aren't redrawn by
       redisplay, do it here.  */
 -  gtk_widget_queue_draw (FRAME_GTK_WIDGET (f));
 +  if (FRAME_GTK_WIDGET (f))
 +    gtk_widget_queue_draw (FRAME_GTK_WIDGET (f));
  #endif
 -  
 +
    XFlush (FRAME_X_DISPLAY (f));
  
    UNBLOCK_INPUT;
     *RESULT.  Return 1 if the difference is negative, otherwise 0.  */
  
  static int
 -timeval_subtract (result, x, y)
 -     struct timeval *result, x, y;
 +timeval_subtract (struct timeval *result, struct timeval x, struct timeval y)
  {
    /* Perform the carry for the later subtraction by updating y.  This
       is safer because on some systems the tv_sec member is unsigned.  */
  }
  
  void
 -XTflash (f)
 -     struct frame *f;
 +XTflash (struct frame *f)
  {
    BLOCK_INPUT;
  
  #ifdef USE_GTK
      /* Use Gdk routines to draw.  This way, we won't draw over scroll bars
         when the scroll bars and the edit widget share the same X window.  */
 +    GdkWindow *window = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
      GdkGCValues vals;
      GdkGC *gc;
      vals.foreground.pixel = (FRAME_FOREGROUND_PIXEL (f)
                               ^ FRAME_BACKGROUND_PIXEL (f));
      vals.function = GDK_XOR;
 -    gc = gdk_gc_new_with_values (FRAME_GTK_WIDGET (f)->window,
 -                                 &vals,
 -                                 GDK_GC_FUNCTION
 -                                 | GDK_GC_FOREGROUND);
 +    gc = gdk_gc_new_with_values (window,
 +                                 &vals, GDK_GC_FUNCTION | GDK_GC_FOREGROUND);
  #define XFillRectangle(d, win, gc, x, y, w, h) \
 -    gdk_draw_rectangle (FRAME_GTK_WIDGET (f)->window, \
 -                        gc, TRUE, x, y, w, h)
 +    gdk_draw_rectangle (window, gc, TRUE, x, y, w, h)
  #else
      GC gc;
  
  
  
  static void
 -XTtoggle_invisible_pointer (f, invisible)
 -     FRAME_PTR f;
 -     int invisible;
 +XTtoggle_invisible_pointer (FRAME_PTR f, int invisible)
  {
    BLOCK_INPUT;
 -  if (invisible) 
 +  if (invisible)
      {
        if (FRAME_X_DISPLAY_INFO (f)->invisible_cursor != 0)
          XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
  /* Make audible bell.  */
  
  void
 -XTring_bell ()
 +XTring_bell (struct frame *f)
  {
 -  struct frame *f = SELECTED_FRAME ();
 -
    if (FRAME_X_DISPLAY (f))
      {
  #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT)
     that is bounded by calls to x_update_begin and x_update_end.  */
  
  static void
 -XTset_terminal_window (n)
 -     register int n;
 +XTset_terminal_window (struct frame *f, int n)
  {
    /* This function intentionally left blank.  */
  }
     lines or deleting -N lines at vertical position VPOS.  */
  
  static void
 -x_ins_del_lines (f, vpos, n)
 -     struct frame *f;
 -     int vpos, n;
 +x_ins_del_lines (struct frame *f, int vpos, int n)
  {
    abort ();
  }
  /* Scroll part of the display as described by RUN.  */
  
  static void
 -x_scroll_run (w, run)
 -     struct window *w;
 -     struct run *run;
 +x_scroll_run (struct window *w, struct run *run)
  {
    struct frame *f = XFRAME (w->frame);
    int x, y, width, height, from_y, to_y, bottom_y;
  
  \f
  static void
 -frame_highlight (f)
 -     struct frame *f;
 +frame_highlight (struct frame *f)
  {
    /* We used to only do this if Vx_no_window_manager was non-nil, but
       the ICCCM (section 4.1.6) says that the window's border pixmap
  }
  
  static void
 -frame_unhighlight (f)
 -     struct frame *f;
 +frame_unhighlight (struct frame *f)
  {
    /* We used to only do this if Vx_no_window_manager was non-nil, but
       the ICCCM (section 4.1.6) says that the window's border pixmap
     Lisp code can tell when the switch took place by examining the events.  */
  
  static void
 -x_new_focus_frame (dpyinfo, frame)
 -     struct x_display_info *dpyinfo;
 -     struct frame *frame;
 +x_new_focus_frame (struct x_display_info *dpyinfo, struct frame *frame)
  {
    struct frame *old_focus = dpyinfo->x_focus_frame;
  
     a FOCUS_IN_EVENT into *BUFP.  */
  
  static void
 -x_focus_changed (type, state, dpyinfo, frame, bufp)
 -     int type;
 -     int state;
 -     struct x_display_info *dpyinfo;
 -     struct frame *frame;
 -     struct input_event *bufp;
 +x_focus_changed (int type, int state, struct x_display_info *dpyinfo, struct frame *frame, struct input_event *bufp)
  {
    if (type == FocusIn)
      {
     Returns FOCUS_IN_EVENT event in *BUFP. */
  
  static void
 -x_detect_focus_change (dpyinfo, event, bufp)
 -     struct x_display_info *dpyinfo;
 -     XEvent *event;
 -     struct input_event *bufp;
 +x_detect_focus_change (struct x_display_info *dpyinfo, XEvent *event, struct input_event *bufp)
  {
    struct frame *frame;
  
  /* Handle an event saying the mouse has moved out of an Emacs frame.  */
  
  void
 -x_mouse_leave (dpyinfo)
 -     struct x_display_info *dpyinfo;
 +x_mouse_leave (struct x_display_info *dpyinfo)
  {
    x_new_focus_frame (dpyinfo, dpyinfo->x_focus_event_frame);
  }
     the appropriate X display info.  */
  
  static void
 -XTframe_rehighlight (frame)
 -     struct frame *frame;
 +XTframe_rehighlight (struct frame *frame)
  {
    x_frame_rehighlight (FRAME_X_DISPLAY_INFO (frame));
  }
  
  static void
 -x_frame_rehighlight (dpyinfo)
 -     struct x_display_info *dpyinfo;
 +x_frame_rehighlight (struct x_display_info *dpyinfo)
  {
    struct frame *old_highlight = dpyinfo->x_highlight_frame;
  
  
  /* Initialize mode_switch_bit and modifier_meaning.  */
  static void
 -x_find_modifier_meanings (dpyinfo)
 -     struct x_display_info *dpyinfo;
 +x_find_modifier_meanings (struct x_display_info *dpyinfo)
  {
    int min_code, max_code;
    KeySym *syms;
     Emacs uses.  */
  
  unsigned int
 -x_x_to_emacs_modifiers (dpyinfo, state)
 -     struct x_display_info *dpyinfo;
 -     unsigned int state;
 +x_x_to_emacs_modifiers (struct x_display_info *dpyinfo, unsigned int state)
  {
    EMACS_UINT mod_meta = meta_modifier;
    EMACS_UINT mod_alt  = alt_modifier;
  }
  
  static unsigned int
 -x_emacs_to_x_modifiers (dpyinfo, state)
 -     struct x_display_info *dpyinfo;
 -     unsigned int state;
 +x_emacs_to_x_modifiers (struct x_display_info *dpyinfo, unsigned int state)
  {
    EMACS_UINT mod_meta = meta_modifier;
    EMACS_UINT mod_alt  = alt_modifier;
  /* Convert a keysym to its name.  */
  
  char *
 -x_get_keysym_name (keysym)
 -     KeySym keysym;
 +x_get_keysym_name (int keysym)
  {
    char *value;
  
     the mouse.  */
  
  static Lisp_Object
 -construct_mouse_click (result, event, f)
 -     struct input_event *result;
 -     XButtonEvent *event;
 -     struct frame *f;
 +construct_mouse_click (struct input_event *result, XButtonEvent *event, struct frame *f)
  {
    /* Make the event type NO_EVENT; we'll change that when we decide
       otherwise.  */
@@@ -3738,7 -3751,9 +3738,7 @@@ static XMotionEvent last_mouse_motion_e
  static Lisp_Object last_mouse_motion_frame;
  
  static int
 -note_mouse_movement (frame, event)
 -     FRAME_PTR frame;
 -     XMotionEvent *event;
 +note_mouse_movement (FRAME_PTR frame, XMotionEvent *event)
  {
    last_mouse_movement_time = event->time;
    last_mouse_motion_event = *event;
   ************************************************************************/
  
  static void
 -redo_mouse_highlight ()
 +redo_mouse_highlight (void)
  {
    if (!NILP (last_mouse_motion_frame)
        && FRAME_LIVE_P (XFRAME (last_mouse_motion_frame)))
     movement.  */
  
  static void
 -XTmouse_position (fp, insist, bar_window, part, x, y, time)
 -     FRAME_PTR *fp;
 -     int insist;
 -     Lisp_Object *bar_window;
 -     enum scroll_bar_part *part;
 -     Lisp_Object *x, *y;
 -     unsigned long *time;
 +XTmouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window, enum scroll_bar_part *part, Lisp_Object *x, Lisp_Object *y, long unsigned int *time)
  {
    FRAME_PTR f1;
  
     bits.  */
  
  static struct scroll_bar *
 -x_window_to_scroll_bar (display, window_id)
 -     Display *display;
 -     Window window_id;
 +x_window_to_scroll_bar (Display *display, Window window_id)
  {
    Lisp_Object tail;
  
     if WINDOW is not part of a menu bar.  */
  
  static Widget
 -x_window_to_menu_bar (window)
 -     Window window;
 +x_window_to_menu_bar (Window window)
  {
    Lisp_Object tail;
  
  
  #ifdef USE_TOOLKIT_SCROLL_BARS
  
 -static void x_scroll_bar_to_input_event P_ ((XEvent *, struct input_event *));
 -static void x_send_scroll_bar_event P_ ((Lisp_Object, int, int, int));
 -static void x_create_toolkit_scroll_bar P_ ((struct frame *,
 -                                           struct scroll_bar *));
 -static void x_set_toolkit_scroll_bar_thumb P_ ((struct scroll_bar *,
 -                                              int, int, int));
 +static void x_scroll_bar_to_input_event (XEvent *, struct input_event *);
 +static void x_send_scroll_bar_event (Lisp_Object, int, int, int);
 +static void x_create_toolkit_scroll_bar (struct frame *,
 +                                         struct scroll_bar *);
 +static void x_set_toolkit_scroll_bar_thumb (struct scroll_bar *,
 +                                            int, int, int);
  
  
  /* Lisp window being scrolled.  Set when starting to interact with
@@@ -4128,11 -4152,17 +4128,11 @@@ static Boolean xaw3d_pick_top
     a `end-scroll' SCROLL_BAR_CLICK_EVENT' event if so.  */
  
  static void
 -xt_action_hook (widget, client_data, action_name, event, params,
 -              num_params)
 -     Widget widget;
 -     XtPointer client_data;
 -     String action_name;
 -     XEvent *event;
 -     String *params;
 -     Cardinal *num_params;
 +xt_action_hook (Widget widget, XtPointer client_data, String action_name,
 +              XEvent *event, String *params, Cardinal *num_params)
  {
    int scroll_bar_p;
 -  char *end_action;
 +  const char *end_action;
  
  #ifdef USE_MOTIF
    scroll_bar_p = XmIsScrollBar (widget);
@@@ -4180,7 -4210,9 +4180,7 @@@ static int scroll_bar_windows_size
     amount to scroll of a whole of WHOLE.  */
  
  static void
 -x_send_scroll_bar_event (window, part, portion, whole)
 -     Lisp_Object window;
 -     int part, portion, whole;
 +x_send_scroll_bar_event (Lisp_Object window, int part, int portion, int whole)
  {
    XEvent event;
    XClientMessageEvent *ev = (XClientMessageEvent *) &event;
  
        scroll_bar_windows = (struct window **) xrealloc (scroll_bar_windows,
                                                        nbytes);
 -      bzero (&scroll_bar_windows[i], nbytes - old_nbytes);
 +      memset (&scroll_bar_windows[i], 0, nbytes - old_nbytes);
        scroll_bar_windows_size = new_size;
      }
  
     in *IEVENT.  */
  
  static void
 -x_scroll_bar_to_input_event (event, ievent)
 -     XEvent *event;
 -     struct input_event *ievent;
 +x_scroll_bar_to_input_event (XEvent *event, struct input_event *ievent)
  {
    XClientMessageEvent *ev = (XClientMessageEvent *) event;
    Lisp_Object window;
     CALL_DATA is a pointer to a XmScrollBarCallbackStruct.  */
  
  static void
 -xm_scroll_callback (widget, client_data, call_data)
 -     Widget widget;
 -     XtPointer client_data, call_data;
 +xm_scroll_callback (Widget widget, XtPointer client_data, XtPointer call_data)
  {
    struct scroll_bar *bar = (struct scroll_bar *) client_data;
    XmScrollBarCallbackStruct *cs = (XmScrollBarCallbackStruct *) call_data;
@@@ -4378,8 -4414,7 +4378,8 @@@ xg_scroll_callback (GtkRange     *range
            && FRAME_X_DISPLAY_INFO (f)->grabbed < (1 << 4))
          {
            part = scroll_bar_handle;
 -          whole = adj->upper - adj->page_size;
 +          whole = gtk_adjustment_get_upper (adj) -
 +            gtk_adjustment_get_page_size (adj);
            portion = min ((int)position, whole);
            bar->dragging = make_number ((int)portion);
          }
@@@ -4440,7 -4475,9 +4440,7 @@@ xg_end_scroll_callback (GtkWidget *widg
     the thumb is.  */
  
  static void
 -xaw_jump_callback (widget, client_data, call_data)
 -     Widget widget;
 -     XtPointer client_data, call_data;
 +xaw_jump_callback (Widget widget, XtPointer client_data, XtPointer call_data)
  {
    struct scroll_bar *bar = (struct scroll_bar *) client_data;
    float top = *(float *) call_data;
     Values < height of scroll bar mean line-wise movement.  */
  
  static void
 -xaw_scroll_callback (widget, client_data, call_data)
 -     Widget widget;
 -     XtPointer client_data, call_data;
 +xaw_scroll_callback (Widget widget, XtPointer client_data, XtPointer call_data)
  {
    struct scroll_bar *bar = (struct scroll_bar *) client_data;
    /* The position really is stored cast to a pointer.  */
  
  #ifdef USE_GTK
  static void
 -x_create_toolkit_scroll_bar (f, bar)
 -     struct frame *f;
 -     struct scroll_bar *bar;
 +x_create_toolkit_scroll_bar (struct frame *f, struct scroll_bar *bar)
  {
 -  char *scroll_bar_name = SCROLL_BAR_NAME;
 +  const char *scroll_bar_name = SCROLL_BAR_NAME;
  
    BLOCK_INPUT;
    xg_create_scroll_bar (f, bar, G_CALLBACK (xg_scroll_callback),
  #else /* not USE_GTK */
  
  static void
 -x_create_toolkit_scroll_bar (f, bar)
 -     struct frame *f;
 -     struct scroll_bar *bar;
 +x_create_toolkit_scroll_bar (struct frame *f, struct scroll_bar *bar)
  {
    Window xwindow;
    Widget widget;
    if (f->output_data.x->scroll_bar_top_shadow_pixel == -1)
      {
        pixel = f->output_data.x->scroll_bar_background_pixel;
 -      if (pixel != -1) 
 +      if (pixel != -1)
          {
            if (!x_alloc_lighter_color (f, FRAME_X_DISPLAY (f),
                                        FRAME_X_COLORMAP (f),
    if (f->output_data.x->scroll_bar_bottom_shadow_pixel == -1)
      {
        pixel = f->output_data.x->scroll_bar_background_pixel;
 -      if (pixel != -1) 
 +      if (pixel != -1)
          {
            if (!x_alloc_lighter_color (f, FRAME_X_DISPLAY (f),
                                        FRAME_X_COLORMAP (f),
        || f->output_data.x->scroll_bar_bottom_shadow_pixel == -1)
      /* We tried to allocate a color for the top/bottom shadow, and
         failed, so tell Xaw3d to use dithering instead.   */
 +    /* But only if we have a small colormap.  Xaw3d can allocate nice
 +       colors itself.  */
      {
 -      XtSetArg (av[ac], XtNbeNiceToColormap, True);
 +      XtSetArg (av[ac], XtNbeNiceToColormap,
 +                DefaultDepthOfScreen (FRAME_X_SCREEN (f)) < 16);
        ++ac;
      }
    else
  
  #ifdef USE_GTK
  static void
 -x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole)
 -     struct scroll_bar *bar;
 -     int portion, position, whole;
 +x_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar, int portion, int position, int whole)
  {
    xg_set_toolkit_scroll_bar_thumb (bar, portion, position, whole);
  }
  
  #else /* not USE_GTK */
  static void
 -x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole)
 -     struct scroll_bar *bar;
 -     int portion, position, whole;
 +x_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar, int portion, int position,
 +                              int whole)
  {
    struct frame *f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
    Widget widget = SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar);
     scroll bar. */
  
  static struct scroll_bar *
 -x_scroll_bar_create (w, top, left, width, height)
 -     struct window *w;
 -     int top, left, width, height;
 +x_scroll_bar_create (struct window *w, int top, int left, int width, int height)
  {
    struct frame *f = XFRAME (w->frame);
    struct scroll_bar *bar
                               left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
                               width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
                               max (height, 1));
 -    xg_show_scroll_bar (bar->x_window);
  #else /* not USE_GTK */
      Widget scroll_bar = SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar);
      XtConfigureWidget (scroll_bar,
     to move to the very end of the buffer.  */
  
  static void
 -x_scroll_bar_set_handle (bar, start, end, rebuild)
 -     struct scroll_bar *bar;
 -     int start, end;
 -     int rebuild;
 +x_scroll_bar_set_handle (struct scroll_bar *bar, int start, int end, int rebuild)
  {
    int dragging = ! NILP (bar->dragging);
    Window w = bar->x_window;
     nil.  */
  
  static void
 -x_scroll_bar_remove (bar)
 -     struct scroll_bar *bar;
 +x_scroll_bar_remove (struct scroll_bar *bar)
  {
    struct frame *f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
    BLOCK_INPUT;
     create one.  */
  
  static void
 -XTset_vertical_scroll_bar (w, portion, whole, position)
 -     struct window *w;
 -     int portion, whole, position;
 +XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int position)
  {
    struct frame *f = XFRAME (w->frame);
    struct scroll_bar *bar;
     `*redeem_scroll_bar_hook' is applied to its window before the judgment.  */
  
  static void
 -XTcondemn_scroll_bars (frame)
 -     FRAME_PTR frame;
 +XTcondemn_scroll_bars (FRAME_PTR frame)
  {
    /* Transfer all the scroll bars to FRAME_CONDEMNED_SCROLL_BARS.  */
    while (! NILP (FRAME_SCROLL_BARS (frame)))
     Note that WINDOW isn't necessarily condemned at all.  */
  
  static void
 -XTredeem_scroll_bar (window)
 -     struct window *window;
 +XTredeem_scroll_bar (struct window *window)
  {
    struct scroll_bar *bar;
    struct frame *f;
     last call to `*condemn_scroll_bars_hook'.  */
  
  static void
 -XTjudge_scroll_bars (f)
 -     FRAME_PTR f;
 +XTjudge_scroll_bars (FRAME_PTR f)
  {
    Lisp_Object bar, next;
  
     mark bits.  */
  
  static void
 -x_scroll_bar_expose (bar, event)
 -     struct scroll_bar *bar;
 -     XEvent *event;
 +x_scroll_bar_expose (struct scroll_bar *bar, XEvent *event)
  {
    Window w = bar->x_window;
    FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
  
  
  static void
 -x_scroll_bar_handle_click (bar, event, emacs_event)
 -     struct scroll_bar *bar;
 -     XEvent *event;
 -     struct input_event *emacs_event;
 +x_scroll_bar_handle_click (struct scroll_bar *bar, XEvent *event, struct input_event *emacs_event)
  {
    if (! WINDOWP (bar->window))
      abort ();
     mark bits.  */
  
  static void
 -x_scroll_bar_note_movement (bar, event)
 -     struct scroll_bar *bar;
 -     XEvent *event;
 +x_scroll_bar_note_movement (struct scroll_bar *bar, XEvent *event)
  {
    FRAME_PTR f = XFRAME (XWINDOW (bar->window)->frame);
  
     on the scroll bar.  */
  
  static void
 -x_scroll_bar_report_motion (fp, bar_window, part, x, y, time)
 -     FRAME_PTR *fp;
 -     Lisp_Object *bar_window;
 -     enum scroll_bar_part *part;
 -     Lisp_Object *x, *y;
 -     unsigned long *time;
 +x_scroll_bar_report_motion (FRAME_PTR *fp, Lisp_Object *bar_window, enum scroll_bar_part *part, Lisp_Object *x, Lisp_Object *y, long unsigned int *time)
  {
    struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar);
    Window w = bar->x_window;
     redraw them.  */
  
  void
 -x_scroll_bar_clear (f)
 -     FRAME_PTR f;
 +x_scroll_bar_clear (FRAME_PTR f)
  {
  #ifndef USE_TOOLKIT_SCROLL_BARS
    Lisp_Object bar;
@@@ -5671,18 -5739,22 +5671,18 @@@ struct x_display_info *XTread_socket_fa
  
  static struct x_display_info *next_noop_dpyinfo;
  
 -#define SET_SAVED_MENU_EVENT(size)                                    \
 +#define SET_SAVED_BUTTON_EVENT                                          \
       do                                                                       \
         {                                                              \
         if (f->output_data.x->saved_menu_event == 0)                   \
             f->output_data.x->saved_menu_event                         \
             = (XEvent *) xmalloc (sizeof (XEvent));                    \
 -         bcopy (&event, f->output_data.x->saved_menu_event, size);    \
 +         *f->output_data.x->saved_menu_event = event;                   \
         inev.ie.kind = MENU_BAR_ACTIVATE_EVENT;                        \
         XSETFRAME (inev.ie.frame_or_window, f);                        \
         }                                                              \
       while (0)
  
 -#define SET_SAVED_BUTTON_EVENT SET_SAVED_MENU_EVENT (sizeof (XButtonEvent))
 -#define SET_SAVED_KEY_EVENT    SET_SAVED_MENU_EVENT (sizeof (XKeyEvent))
 -
 -
  enum
  {
    X_EVENT_NORMAL,
  
  #ifdef HAVE_X_I18N
  static int
 -x_filter_event (dpyinfo, event)
 -     struct x_display_info *dpyinfo;
 -     XEvent *event;
 +x_filter_event (struct x_display_info *dpyinfo, XEvent *event)
  {
    /* XFilterEvent returns non-zero if the input method has
     consumed the event.  We pass the frame's X window to
@@@ -5723,7 -5797,10 +5723,7 @@@ static struct input_event *current_hold
     It is invoked before the XEvent is translated to a GdkEvent,
     so we have a chance to act on the event before GTK. */
  static GdkFilterReturn
 -event_handler_gdk (gxev, ev, data)
 -     GdkXEvent *gxev;
 -     GdkEvent *ev;
 -     gpointer data;
 +event_handler_gdk (GdkXEvent *gxev, GdkEvent *ev, gpointer data)
  {
    XEvent *xev = (XEvent *) gxev;
  
     We return the number of characters stored into the buffer. */
  
  static int
 -handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
 -     struct x_display_info *dpyinfo;
 -     XEvent *eventp;
 -     int *finish;
 -     struct input_event *hold_quit;
 +handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventp, int *finish, struct input_event *hold_quit)
  {
    union {
      struct input_event ie;
    struct frame *f = NULL;
    struct coding_system coding;
    XEvent event = *eventp;
 +  Mouse_HLInfo *hlinfo = &dpyinfo->mouse_highlight;
  
    *finish = X_EVENT_NORMAL;
  
    EVENT_INIT (inev.ie);
    inev.ie.kind = NO_EVENT;
    inev.ie.arg = Qnil;
 -  
 +
    if (pending_event_wait.eventtype == event.type)
      pending_event_wait.eventtype = 0; /* Indicates we got it.  */
 -  
 +
    switch (event.type)
      {
      case ClientMessage:
  
        /* If mouse-highlight is an integer, input clears out
         mouse highlighting.  */
 -      if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
 +      if (!hlinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
          && (f == 0
 -            || !EQ (f->tool_bar_window, dpyinfo->mouse_face_window)))
 +            || !EQ (f->tool_bar_window, hlinfo->mouse_face_window)))
          {
 -          clear_mouse_face (dpyinfo);
 -          dpyinfo->mouse_face_hidden = 1;
 +          clear_mouse_face (hlinfo);
 +          hlinfo->mouse_face_hidden = 1;
          }
  
  #if defined USE_MOTIF && defined USE_TOOLKIT_SCROLL_BARS
               this enables ComposeCharacter to work whether or
               not it is combined with Meta.  */
            if (modifiers & dpyinfo->meta_mod_mask)
 -            bzero (&compose_status, sizeof (compose_status));
 +            memset (&compose_status, 0, sizeof (compose_status));
  
  #ifdef HAVE_X_I18N
            if (FRAME_XIC (f))
            if (compose_status.chars_matched > 0 && nbytes == 0)
              break;
  
 -          bzero (&compose_status, sizeof (compose_status));
 +          memset (&compose_status, 0, sizeof (compose_status));
            orig_keysym = keysym;
  
          /* Common for all keysym input events.  */
        f = x_top_window_to_frame (dpyinfo, event.xcrossing.window);
        if (f)
          {
 -          if (f == dpyinfo->mouse_face_mouse_frame)
 +          if (f == hlinfo->mouse_face_mouse_frame)
              {
                /* If we move outside the frame, then we're
                   certainly no longer on any text in the frame.  */
 -              clear_mouse_face (dpyinfo);
 -              dpyinfo->mouse_face_mouse_frame = 0;
 +              clear_mouse_face (hlinfo);
 +              hlinfo->mouse_face_mouse_frame = 0;
              }
  
            /* Generate a nil HELP_EVENT to cancel a help-echo.
          else
            f = x_window_to_frame (dpyinfo, event.xmotion.window);
  
 -        if (dpyinfo->mouse_face_hidden)
 +        if (hlinfo->mouse_face_hidden)
            {
 -            dpyinfo->mouse_face_hidden = 0;
 -            clear_mouse_face (dpyinfo);
 +            hlinfo->mouse_face_hidden = 0;
 +            clear_mouse_face (hlinfo);
            }
  
  #ifdef USE_GTK
  
              /* If we move outside the frame, then we're
                 certainly no longer on any text in the frame.  */
 -            clear_mouse_face (dpyinfo);
 +            clear_mouse_face (hlinfo);
            }
  
          /* If the contents of the global variable help_echo_string
                              event.xconfigure.height);
            f = 0;
          }
 -#endif  
 +#endif
        if (f)
          {
  #ifndef USE_X_TOOLKIT
            /* GTK creates windows but doesn't map them.
               Only get real positions when mapped. */
            if (FRAME_GTK_OUTER_WIDGET (f)
 -              && GTK_WIDGET_MAPPED (FRAME_GTK_OUTER_WIDGET (f)))
 +              && gtk_widget_get_mapped (FRAME_GTK_OUTER_WIDGET (f)))
  #endif
              {
              x_real_positions (f, &f->left_pos, &f->top_pos);
             by the rest of Emacs, we put it here.  */
          int tool_bar_p = 0;
  
 -        bzero (&compose_status, sizeof (compose_status));
 +        memset (&compose_status, 0, sizeof (compose_status));
        last_mouse_glyph_frame = 0;
          last_user_time = event.xbutton.time;
  
             Instead, save it away
             and we will pass it to Xt from kbd_buffer_get_event.
             That way, we can run some Lisp code first.  */
 -        if (
 +        if (! popup_activated ()
  #ifdef USE_GTK
 -            ! popup_activated ()
              /* Gtk+ menus only react to the first three buttons. */
              && event.xbutton.button < 3
 -            &&
  #endif
 -            f && event.type == ButtonPress
 +            && f && event.type == ButtonPress
              /* Verify the event is really within the menu bar
                 and not just sent to it due to grabbing.  */
              && event.xbutton.x >= 0
            {
              SET_SAVED_BUTTON_EVENT;
              XSETFRAME (last_mouse_press_frame, f);
 -#ifdef USE_GTK
              *finish = X_EVENT_DROP;
 -#endif
            }
          else if (event.type == ButtonPress)
            {
              last_mouse_press_frame = Qnil;
              goto OTHER;
            }
 -
 -#ifdef USE_MOTIF /* This should do not harm for Lucid,
 -                  but I am trying to be cautious.  */
 -        else if (event.type == ButtonRelease)
 -          {
 -            if (!NILP (last_mouse_press_frame))
 -              {
 -                f = XFRAME (last_mouse_press_frame);
 -                if (f->output_data.x)
 -                  SET_SAVED_BUTTON_EVENT;
 -              }
 -            else
 -              goto OTHER;
 -          }
 -#endif /* USE_MOTIF */
          else
            goto OTHER;
  #endif /* USE_X_TOOLKIT || USE_GTK */
  
     Returns the value handle_one_xevent sets in the finish argument.  */
  int
 -x_dispatch_event (event, display)
 -     XEvent *event;
 -     Display *display;
 +x_dispatch_event (XEvent *event, Display *display)
  {
    struct x_display_info *dpyinfo;
    int finish = X_EVENT_NORMAL;
     EXPECTED is nonzero if the caller knows input is available.  */
  
  static int
 -XTread_socket (terminal, expected, hold_quit)
 -     struct terminal *terminal;
 -     int expected;
 -     struct input_event *hold_quit;
 +XTread_socket (struct terminal *terminal, int expected, struct input_event *hold_quit)
  {
    int count = 0;
    XEvent event;
     mode lines must be clipped to the whole window.  */
  
  static void
 -x_clip_to_row (w, row, area, gc)
 -     struct window *w;
 -     struct glyph_row *row;
 -     int area;
 -     GC gc;
 +x_clip_to_row (struct window *w, struct glyph_row *row, int area, GC gc)
  {
    struct frame *f = XFRAME (WINDOW_FRAME (w));
    XRectangle clip_rect;
  /* Draw a hollow box cursor on window W in glyph row ROW.  */
  
  static void
 -x_draw_hollow_cursor (w, row)
 -     struct window *w;
 -     struct glyph_row *row;
 +x_draw_hollow_cursor (struct window *w, struct glyph_row *row)
  {
    struct frame *f = XFRAME (WINDOW_FRAME (w));
    struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
     --gerd.  */
  
  static void
 -x_draw_bar_cursor (w, row, width, kind)
 -     struct window *w;
 -     struct glyph_row *row;
 -     int width;
 -     enum text_cursor_kinds kind;
 +x_draw_bar_cursor (struct window *w, struct glyph_row *row, int width, enum text_cursor_kinds kind)
  {
    struct frame *f = XFRAME (w->frame);
    struct glyph *cursor_glyph;
  
        if (kind == BAR_CURSOR)
        {
 +        int x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x);
 +
          if (width < 0)
            width = FRAME_CURSOR_WIDTH (f);
          width = min (cursor_glyph->pixel_width, width);
  
          w->phys_cursor_width = width;
  
 -        XFillRectangle (dpy, window, gc,
 -                        WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x),
 +        /* If the character under cursor is R2L, draw the bar cursor
 +           on the right of its glyph, rather than on the left.  */
 +        if ((cursor_glyph->resolved_level & 1) != 0)
 +          x += cursor_glyph->pixel_width - width;
 +
 +        XFillRectangle (dpy, window, gc, x,
                          WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y),
                          width, row->height);
        }
  /* RIF: Define cursor CURSOR on frame F.  */
  
  static void
 -x_define_frame_cursor (f, cursor)
 -     struct frame *f;
 -     Cursor cursor;
 +x_define_frame_cursor (struct frame *f, Cursor cursor)
  {
    if (!f->pointer_invisible
        && f->output_data.x->current_cursor != cursor)
  /* RIF: Clear area on frame F.  */
  
  static void
 -x_clear_frame_area (f, x, y, width, height)
 -     struct frame *f;
 -     int x, y, width, height;
 +x_clear_frame_area (struct frame *f, int x, int y, int width, int height)
  {
    x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
                x, y, width, height, False);
  /* RIF: Draw cursor on window W.  */
  
  static void
 -x_draw_window_cursor (w, glyph_row, x, y, cursor_type, cursor_width, on_p, active_p)
 -     struct window *w;
 -     struct glyph_row *glyph_row;
 -     int x, y;
 -     int cursor_type, cursor_width;
 -     int on_p, active_p;
 +x_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, int x, int y, int cursor_type, int cursor_width, int on_p, int active_p)
  {
    struct frame *f = XFRAME (WINDOW_FRAME (w));
  
        w->phys_cursor_on_p = 1;
  
        if (glyph_row->exact_window_width_line_p
 -        && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA])
 +        && (glyph_row->reversed_p
 +            ? (w->phys_cursor.hpos < 0)
 +            : (w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA])))
        {
          glyph_row->cursor_in_fringe_p = 1;
 -        draw_fringe_bitmap (w, glyph_row, 0);
 +        draw_fringe_bitmap (w, glyph_row, glyph_row->reversed_p);
        }
        else
 -      switch (cursor_type)
        {
 -      case HOLLOW_BOX_CURSOR:
 -        x_draw_hollow_cursor (w, glyph_row);
 -        break;
 +        switch (cursor_type)
 +          {
 +          case HOLLOW_BOX_CURSOR:
 +            x_draw_hollow_cursor (w, glyph_row);
 +            break;
  
 -      case FILLED_BOX_CURSOR:
 -        draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR);
 -        break;
 +          case FILLED_BOX_CURSOR:
 +            draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR);
 +            break;
  
 -      case BAR_CURSOR:
 -        x_draw_bar_cursor (w, glyph_row, cursor_width, BAR_CURSOR);
 -        break;
 +          case BAR_CURSOR:
 +            x_draw_bar_cursor (w, glyph_row, cursor_width, BAR_CURSOR);
 +            break;
  
 -      case HBAR_CURSOR:
 -        x_draw_bar_cursor (w, glyph_row, cursor_width, HBAR_CURSOR);
 -        break;
 +          case HBAR_CURSOR:
 +            x_draw_bar_cursor (w, glyph_row, cursor_width, HBAR_CURSOR);
 +            break;
  
 -      case NO_CURSOR:
 -        w->phys_cursor_width = 0;
 -        break;
 +          case NO_CURSOR:
 +            w->phys_cursor_width = 0;
 +            break;
  
 -      default:
 -        abort ();
 +          default:
 +            abort ();
 +          }
        }
  
  #ifdef HAVE_X_I18N
  /* Make the x-window of frame F use the gnu icon bitmap.  */
  
  int
 -x_bitmap_icon (f, file)
 -     struct frame *f;
 -     Lisp_Object file;
 +x_bitmap_icon (struct frame *f, Lisp_Object file)
  {
    int bitmap_id;
  
     Use ICON_NAME as the text.  */
  
  int
 -x_text_icon (f, icon_name)
 -     struct frame *f;
 -     char *icon_name;
 +x_text_icon (struct frame *f, const char *icon_name)
  {
    if (FRAME_X_WINDOW (f) == 0)
      return 1;
@@@ -7536,7 -7653,9 +7536,7 @@@ static struct x_error_message_stack *x_
     x_catch_errors is in effect.  */
  
  static void
 -x_error_catcher (display, error)
 -     Display *display;
 -     XErrorEvent *error;
 +x_error_catcher (Display *display, XErrorEvent *error)
  {
    XGetErrorText (display, error->error_code,
                 x_error_message->string,
  
     Calling x_uncatch_errors resumes the normal error handling.  */
  
 -void x_check_errors ();
 +void x_check_errors (Display *dpy, const char *format);
  
  void
 -x_catch_errors (dpy)
 -     Display *dpy;
 +x_catch_errors (Display *dpy)
  {
    struct x_error_message_stack *data = xmalloc (sizeof (*data));
  
     DPY should be the display that was passed to x_catch_errors.  */
  
  void
 -x_uncatch_errors ()
 +x_uncatch_errors (void)
  {
    struct x_error_message_stack *tmp;
  
     sprintf (a buffer, FORMAT, the x error message text) as the text.  */
  
  void
 -x_check_errors (dpy, format)
 -     Display *dpy;
 -     char *format;
 +x_check_errors (Display *dpy, const char *format)
  {
    /* Make sure to catch any errors incurred so far.  */
    XSync (dpy, False);
    if (x_error_message->string[0])
      {
        char string[X_ERROR_MESSAGE_SIZE];
 -      bcopy (x_error_message->string, string, X_ERROR_MESSAGE_SIZE);
 +      memcpy (string, x_error_message->string, X_ERROR_MESSAGE_SIZE);
        x_uncatch_errors ();
        error (format, string);
      }
     since we did x_catch_errors on DPY.  */
  
  int
 -x_had_errors_p (dpy)
 -     Display *dpy;
 +x_had_errors_p (Display *dpy)
  {
    /* Make sure to catch any errors incurred so far.  */
    XSync (dpy, False);
  /* Forget about any errors we have had, since we did x_catch_errors on DPY.  */
  
  void
 -x_clear_errors (dpy)
 -     Display *dpy;
 +x_clear_errors (Display *dpy)
  {
    x_error_message->string[0] = 0;
  }
  /* Close off all unclosed x_catch_errors calls.  */
  
  void
 -x_fully_uncatch_errors ()
 +x_fully_uncatch_errors (void)
  {
    while (x_error_message)
      x_uncatch_errors ();
  /* Nonzero if x_catch_errors has been done and not yet canceled.  */
  
  int
 -x_catching_errors ()
 +x_catching_errors (void)
  {
    return x_error_message != 0;
  }
  
  #if 0
  static unsigned int x_wire_count;
 -x_trace_wire ()
 +x_trace_wire (void)
  {
    fprintf (stderr, "Lib call: %d\n", ++x_wire_count);
  }
     which will do the appropriate cleanup for us.  */
  
  static SIGTYPE
 -x_connection_signal (signalnum)       /* If we don't have an argument, */
 -     int signalnum;           /* some compilers complain in signal calls.  */
 +x_connection_signal (int signalnum)   /* If we don't have an argument, */
 +                              /* some compilers complain in signal calls.  */
  {
  #ifdef USG
    /* USG systems forget handlers when they are used;
@@@ -7692,7 -7816,7 +7692,7 @@@ static char *error_msg
     instead of dumping core when XtCloseDisplay fails.  */
  
  static void
 -x_fatal_error_signal ()
 +x_fatal_error_signal (void)
  {
    fprintf (stderr, "%s\n", error_msg);
    exit (70);
     the text of an error message that lead to the connection loss.  */
  
  static SIGTYPE
 -x_connection_closed (dpy, error_message)
 -     Display *dpy;
 -     char *error_message;
 +x_connection_closed (Display *dpy, const char *error_message)
  {
    struct x_display_info *dpyinfo = x_display_info_for_display (dpy);
    Lisp_Object frame, tail;
         Closing the display is reported to lead to a bus error on
         OpenWindows in certain situations.  I suspect that is a bug
         in OpenWindows.  I don't know how to circumvent it here.  */
 -      extern void (*fatal_error_signal_hook) P_ ((void));
        fatal_error_signal_hook = x_fatal_error_signal;
        XtCloseDisplay (dpy);
        fatal_error_signal_hook = NULL;
@@@ -7815,8 -7942,8 +7815,8 @@@ For details, see etc/PROBLEMS.\n"
    if (terminal_list == 0)
      {
        fprintf (stderr, "%s\n", error_msg);
 -      shut_down_emacs (0, 0, Qnil);
 -      exit (70);
 +      Fkill_emacs (make_number (70));
 +      /* NOTREACHED */
      }
  
    /* Ordinary stack unwind doesn't deal with these.  */
  
  /* We specifically use it before defining it, so that gcc doesn't inline it,
     otherwise gdb doesn't know how to properly put a breakpoint on it.  */
 -static void x_error_quitter P_ ((Display *, XErrorEvent *));
 +static void x_error_quitter (Display *, XErrorEvent *);
  
  /* This is the first-level handler for X protocol errors.
     It calls x_error_quitter or x_error_catcher.  */
  
  static int
 -x_error_handler (display, error)
 -     Display *display;
 -     XErrorEvent *error;
 +x_error_handler (Display *display, XErrorEvent *error)
  {
    if (x_error_message)
      x_error_catcher (display, error);
  
  /* .gdbinit puts a breakpoint here, so make sure it is not inlined.  */
  
 -#if __GNUC__ >= 3  /* On GCC 3.0 we might get a warning.  */
 -#define NO_INLINE __attribute__((noinline))
 -#else
 -#define NO_INLINE
 -#endif
 -
 -/* Some versions of GNU/Linux define noinline in their headers.  */
 -
 -#ifdef noinline
 -#undef noinline
 -#endif
 -
  /* On older GCC versions, just putting x_error_quitter
     after x_error_handler prevents inlining into the former.  */
  
  static void NO_INLINE
 -x_error_quitter (display, error)
 -     Display *display;
 -     XErrorEvent *error;
 +x_error_quitter (Display *display, XErrorEvent *error)
  {
    char buf[256], buf1[356];
  
     If that was the only one, it prints an error message and kills Emacs.  */
  
  static int
 -x_io_error_quitter (display)
 -     Display *display;
 +x_io_error_quitter (Display *display)
  {
    char buf[256];
  
     FONT-OBJECT.  */
  
  Lisp_Object
 -x_new_font (f, font_object, fontset)
 -     struct frame *f;
 -     Lisp_Object font_object;
 -     int fontset;
 +x_new_font (struct frame *f, Lisp_Object font_object, int fontset)
  {
    struct font *font = XFONT_OBJECT (font_object);
  
     pointer to the x_display_info structure corresponding to XIM.  */
  
  static void
 -xim_destroy_callback (xim, client_data, call_data)
 -     XIM xim;
 -     XPointer client_data;
 -     XPointer call_data;
 +xim_destroy_callback (XIM xim, XPointer client_data, XPointer call_data)
  {
    struct x_display_info *dpyinfo = (struct x_display_info *) client_data;
    Lisp_Object frame, tail;
  
  #ifdef HAVE_X11R6
  /* This isn't prototyped in OSF 5.0 or 5.1a.  */
 -extern char *XSetIMValues P_ ((XIM, ...));
 +extern char *XSetIMValues (XIM, ...);
  #endif
  
  /* Open the connection to the XIM server on display DPYINFO.
     RESOURCE_NAME is the resource name Emacs uses.  */
  
  static void
 -xim_open_dpy (dpyinfo, resource_name)
 -     struct x_display_info *dpyinfo;
 -     char *resource_name;
 +xim_open_dpy (struct x_display_info *dpyinfo, char *resource_name)
  {
    XIM xim;
  
        if (dpyinfo->xim)
        XCloseIM (dpyinfo->xim);
        xim = XOpenIM (dpyinfo->display, dpyinfo->xrdb, resource_name,
 -                   EMACS_CLASS);
 +                   emacs_class);
        dpyinfo->xim = xim;
  
        if (xim)
     when the callback was registered.  */
  
  static void
 -xim_instantiate_callback (display, client_data, call_data)
 -     Display *display;
 -     XPointer client_data;
 -     XPointer call_data;
 +xim_instantiate_callback (Display *display, XPointer client_data, XPointer call_data)
  {
    struct xim_inst_t *xim_inst = (struct xim_inst_t *) client_data;
    struct x_display_info *dpyinfo = xim_inst->dpyinfo;
     in the XIM instantiate callback function.  */
  
  static void
 -xim_initialize (dpyinfo, resource_name)
 -     struct x_display_info *dpyinfo;
 -     char *resource_name;
 +xim_initialize (struct x_display_info *dpyinfo, char *resource_name)
  {
    dpyinfo->xim = NULL;
  #ifdef HAVE_XIM
        xim_inst->dpyinfo = dpyinfo;
        len = strlen (resource_name);
        xim_inst->resource_name = (char *) xmalloc (len + 1);
 -      bcopy (resource_name, xim_inst->resource_name, len + 1);
 +      memcpy (xim_inst->resource_name, resource_name, len + 1);
        XRegisterIMInstantiateCallback (dpyinfo->display, dpyinfo->xrdb,
 -                                    resource_name, EMACS_CLASS,
 +                                    resource_name, emacs_class,
                                      xim_instantiate_callback,
                                      /* This is XPointer in XFree86
                                         but (XPointer *) on Tru64, at
  /* Close the connection to the XIM server on display DPYINFO. */
  
  static void
 -xim_close_dpy (dpyinfo)
 -     struct x_display_info *dpyinfo;
 +xim_close_dpy (struct x_display_info *dpyinfo)
  {
  #ifdef HAVE_XIM
    if (use_xim)
  #ifdef HAVE_X11R6_XIM
        if (dpyinfo->display)
        XUnregisterIMInstantiateCallback (dpyinfo->display, dpyinfo->xrdb,
 -                                        NULL, EMACS_CLASS,
 +                                        NULL, emacs_class,
                                          xim_instantiate_callback, NULL);
        xfree (dpyinfo->xim_callback_data->resource_name);
        xfree (dpyinfo->xim_callback_data);
     from its current recorded position values and gravity.  */
  
  void
 -x_calc_absolute_position (f)
 -     struct frame *f;
 +x_calc_absolute_position (struct frame *f)
  {
    int flags = f->size_hint_flags;
  
     which means, do adjust for borders but don't change the gravity.  */
  
  void
 -x_set_offset (f, xoff, yoff, change_gravity)
 -     struct frame *f;
 -     register int xoff, yoff;
 -     int change_gravity;
 +x_set_offset (struct frame *f, register int xoff, register int yoff, int change_gravity)
  {
    int modified_top, modified_left;
  
     http://freedesktop.org/wiki/Specifications/wm-spec.  */
  
  static int
 -wm_supports (f, atomname)
 -     struct frame *f;
 -     const char *atomname;
 +wm_supports (struct frame *f, const char *atomname)
  {
    Atom actual_type;
    unsigned long actual_size, bytes_remaining;
  }
  
  static void
 -set_wm_state (frame, add, what, what2)
 -     Lisp_Object frame;
 -     int add;
 -     const char *what;
 -     const char *what2;
 +set_wm_state (Lisp_Object frame, int add, const char *what, const char *what2)
  {
    const char *atom = "_NET_WM_STATE";
    Fx_send_client_event (frame, make_number (0), frame,
  }
  
  void
 -x_set_sticky (f, new_value, old_value)
 -     struct frame *f;
 -     Lisp_Object new_value, old_value;
 +x_set_sticky (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
  {
    Lisp_Object frame;
  
@@@ -8470,7 -8640,8 +8470,7 @@@ get_current_vm_state (struct frame *f
  /* Do fullscreen as specified in extended window manager hints */
  
  static int
 -do_ewmh_fullscreen (f)
 -     struct frame *f;
 +do_ewmh_fullscreen (struct frame *f)
  {
    int have_net_atom = wm_supports (f, "_NET_WM_STATE");
    Lisp_Object lval = get_frame_param (f, Qfullscreen);
  }
  
  static void
 -XTfullscreen_hook (f)
 -     FRAME_PTR f;
 +XTfullscreen_hook (FRAME_PTR f)
  {
    if (f->async_visible)
      {
  
  
  static void
 -x_handle_net_wm_state (f, event)
 -     struct frame *f;
 -     XPropertyEvent *event;
 +x_handle_net_wm_state (struct frame *f, XPropertyEvent *event)
  {
    int value = FULLSCREEN_NONE;
    Lisp_Object lval;
  
    get_current_vm_state (f, event->window, &value, &sticky);
    lval = Qnil;
 -  switch (value) 
 +  switch (value)
      {
      case FULLSCREEN_WIDTH:
        lval = Qfullwidth;
        lval = Qmaximized;
        break;
      }
 -      
 +
    store_frame_param (f, Qfullscreen, lval);
    store_frame_param (f, Qsticky, sticky ? Qt : Qnil);
  }
  /* Check if we need to resize the frame due to a fullscreen request.
     If so needed, resize the frame. */
  static void
 -x_check_fullscreen (f)
 -     struct frame *f;
 +x_check_fullscreen (struct frame *f)
  {
    if (do_ewmh_fullscreen (f))
      return;
          case FULLSCREEN_HEIGHT:
            height = x_display_pixel_height (dpyinfo);
          }
 -      
 +
        if (FRAME_COLS (f) != width || FRAME_LINES (f) != height)
          {
            change_frame_size (f, height, width, 0, 1, 0);
     compensate by moving the window right and down by the proper amount.  */
  
  static void
 -x_check_expected_move (f, expected_left, expected_top)
 -     struct frame *f;
 -     int expected_left;
 -     int expected_top;
 +x_check_expected_move (struct frame *f, int expected_left, int expected_top)
  {
    int current_left = 0, current_top = 0;
  
     of an exact comparison.  */
  
  static void
 -x_sync_with_move (f, left, top, fuzzy)
 -    struct frame *f;
 -    int left, top, fuzzy;
 +x_sync_with_move (struct frame *f, int left, int top, int fuzzy)
  {
    int count = 0;
  
  
  /* Wait for an event on frame F matching EVENTTYPE.  */
  void
 -x_wait_for_event (f, eventtype)
 -     struct frame *f;
 -     int eventtype;
 +x_wait_for_event (struct frame *f, int eventtype)
  {
    int level = interrupt_input_blocked;
  
  
        FD_ZERO (&fds);
        FD_SET (fd, &fds);
 -      
 +
        EMACS_GET_TIME (time_now);
        EMACS_SUB_TIME (tmo, tmo_at, time_now);
  
     size changes.  Otherwise we leave the window gravity unchanged.  */
  
  static void
 -x_set_window_size_1 (f, change_gravity, cols, rows)
 -     struct frame *f;
 -     int change_gravity;
 -     int cols, rows;
 +x_set_window_size_1 (struct frame *f, int change_gravity, int cols, int rows)
  {
    int pixelwidth, pixelheight;
  
    f->scroll_bar_actual_width
      = (!FRAME_HAS_VERTICAL_SCROLL_BARS (f)
         ? 0
 -       : FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0
 -       ? FRAME_CONFIG_SCROLL_BAR_WIDTH (f)
 -       : (FRAME_CONFIG_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f)));
 +       : FRAME_CONFIG_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f));
  
    compute_fringe_widths (f, 0);
  
 -  pixelwidth = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, cols);
 +  pixelwidth = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, cols)
 +    + FRAME_TOOLBAR_WIDTH (f);
    pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows)
      + FRAME_MENUBAR_HEIGHT (f) + FRAME_TOOLBAR_HEIGHT (f);
  
     Otherwise we leave the window gravity unchanged.  */
  
  void
 -x_set_window_size (f, change_gravity, cols, rows)
 -     struct frame *f;
 -     int change_gravity;
 -     int cols, rows;
 +x_set_window_size (struct frame *f, int change_gravity, int cols, int rows)
  {
    BLOCK_INPUT;
  
    if (NILP (tip_frame) || XFRAME (tip_frame) != f)
      {
        int r, c;
 -        
 +
        /* When the frame is maximized/fullscreen or running under for
           example Xmonad, x_set_window_size_1 will be a no-op.
           In that case, the right thing to do is extend rows/cols to
  /* Mouse warping.  */
  
  void
 -x_set_mouse_position (f, x, y)
 -     struct frame *f;
 -     int x, y;
 +x_set_mouse_position (struct frame *f, int x, int y)
  {
    int pix_x, pix_y;
  
  /* Move the mouse to position pixel PIX_X, PIX_Y relative to frame F.  */
  
  void
 -x_set_mouse_pixel_position (f, pix_x, pix_y)
 -     struct frame *f;
 -     int pix_x, pix_y;
 +x_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y)
  {
    BLOCK_INPUT;
  
  /* focus shifting, raising and lowering.  */
  
  void
 -x_focus_on_frame (f)
 -     struct frame *f;
 +x_focus_on_frame (struct frame *f)
  {
  #if 0
    /* I don't think that the ICCCM allows programs to do things like this
  }
  
  void
 -x_unfocus_frame (f)
 -     struct frame *f;
 +x_unfocus_frame (struct frame *f)
  {
  #if 0
    /* Look at the remarks in x_focus_on_frame.  */
  /* Raise frame F.  */
  
  void
 -x_raise_frame (f)
 -     struct frame *f;
 +x_raise_frame (struct frame *f)
  {
    BLOCK_INPUT;
    if (f->async_visible)
  /* Lower frame F.  */
  
  void
 -x_lower_frame (f)
 -     struct frame *f;
 +x_lower_frame (struct frame *f)
  {
    if (f->async_visible)
      {
  /* Activate frame with Extended Window Manager Hints */
  
  void
 -x_ewmh_activate_frame (f)
 -     FRAME_PTR f;
 +x_ewmh_activate_frame (FRAME_PTR f)
  {
    /* See Window Manager Specification/Extended Window Manager Hints at
       http://freedesktop.org/wiki/Specifications/wm-spec  */
  }
  
  static void
 -XTframe_raise_lower (f, raise_flag)
 -     FRAME_PTR f;
 -     int raise_flag;
 +XTframe_raise_lower (FRAME_PTR f, int raise_flag)
  {
    if (raise_flag)
      x_raise_frame (f);
  /* XEmbed implementation.  */
  
  void
 -xembed_set_info (f, flags)
 -     struct frame *f;
 -     enum xembed_info flags;
 +xembed_set_info (struct frame *f, enum xembed_info flags)
  {
    Atom atom;
    unsigned long data[2];
  }
  
  void
 -xembed_send_message (f, time, message, detail, data1, data2)
 -     struct frame *f;
 -     Time time;
 -     enum xembed_message message;
 -     long detail;
 -     long data1;
 -     long data2;
 +xembed_send_message (struct frame *f, Time time, enum xembed_message message, long int detail, long int data1, long int data2)
  {
    XEvent event;
  
     finishes with it.  */
  
  void
 -x_make_frame_visible (f)
 -     struct frame *f;
 +x_make_frame_visible (struct frame *f)
  {
    Lisp_Object type;
    int original_top, original_left;
            /* It could be confusing if a real alarm arrives while
               processing the fake one.  Turn it off and let the
               handler reset it.  */
 -          extern void poll_for_input_1 P_ ((void));
            int old_poll_suppress_count = poll_suppress_count;
            poll_suppress_count = 1;
            poll_for_input_1 ();
  /* Make the frame visible (mapped and not iconified).  */
  
  void
 -x_make_frame_invisible (f)
 -     struct frame *f;
 +x_make_frame_invisible (struct frame *f)
  {
    Window window;
  
  /* Change window state from mapped to iconified.  */
  
  void
 -x_iconify_frame (f)
 -     struct frame *f;
 +x_iconify_frame (struct frame *f)
  {
    int result;
    Lisp_Object type;
  /* Free X resources of frame F.  */
  
  void
 -x_free_frame_resources (f)
 -     struct frame *f;
 +x_free_frame_resources (struct frame *f)
  {
    struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
    Lisp_Object bar;
    struct scroll_bar *b;
 +  Mouse_HLInfo *hlinfo = &dpyinfo->mouse_highlight;
  
    BLOCK_INPUT;
  
  #else  /* !USE_X_TOOLKIT */
  
  #ifdef USE_GTK
 -      /* In the GTK version, tooltips are normal X
 -         frames.  We must check and free both types. */
 -      if (FRAME_GTK_OUTER_WIDGET (f))
 -        {
 -          gtk_widget_destroy (FRAME_GTK_OUTER_WIDGET (f));
 -          FRAME_X_WINDOW (f) = 0; /* Set to avoid XDestroyWindow below */
 -          FRAME_GTK_OUTER_WIDGET (f) = 0;
 -        }
 +      xg_free_frame_widgets (f);
  #endif /* USE_GTK */
  
        if (FRAME_X_WINDOW (f))
    if (f == dpyinfo->x_highlight_frame)
      dpyinfo->x_highlight_frame = 0;
  
 -  if (f == dpyinfo->mouse_face_mouse_frame)
 +  if (f == hlinfo->mouse_face_mouse_frame)
      {
 -      dpyinfo->mouse_face_beg_row
 -      = dpyinfo->mouse_face_beg_col = -1;
 -      dpyinfo->mouse_face_end_row
 -      = dpyinfo->mouse_face_end_col = -1;
 -      dpyinfo->mouse_face_window = Qnil;
 -      dpyinfo->mouse_face_deferred_gc = 0;
 -      dpyinfo->mouse_face_mouse_frame = 0;
 +      hlinfo->mouse_face_beg_row
 +      = hlinfo->mouse_face_beg_col = -1;
 +      hlinfo->mouse_face_end_row
 +      = hlinfo->mouse_face_end_col = -1;
 +      hlinfo->mouse_face_window = Qnil;
 +      hlinfo->mouse_face_deferred_gc = 0;
 +      hlinfo->mouse_face_mouse_frame = 0;
      }
  
    UNBLOCK_INPUT;
  /* Destroy the X window of frame F.  */
  
  void
 -x_destroy_window (f)
 -     struct frame *f;
 +x_destroy_window (struct frame *f)
  {
    struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
  
  
  #ifndef USE_GTK
  void
 -x_wm_set_size_hint (f, flags, user_position)
 -     struct frame *f;
 -     long flags;
 -     int user_position;
 +x_wm_set_size_hint (struct frame *f, long flags, int user_position)
  {
    XSizeHints size_hints;
    Window window = FRAME_OUTER_WINDOW (f);
  /* Used for IconicState or NormalState */
  
  void
 -x_wm_set_window_state (f, state)
 -     struct frame *f;
 -     int state;
 +x_wm_set_window_state (struct frame *f, int state)
  {
  #ifdef USE_X_TOOLKIT
    Arg al[1];
  }
  
  void
 -x_wm_set_icon_pixmap (f, pixmap_id)
 -     struct frame *f;
 -     int pixmap_id;
 +x_wm_set_icon_pixmap (struct frame *f, int pixmap_id)
  {
    Pixmap icon_pixmap, icon_mask;
  
  }
  
  void
 -x_wm_set_icon_position (f, icon_x, icon_y)
 -     struct frame *f;
 -     int icon_x, icon_y;
 +x_wm_set_icon_position (struct frame *f, int icon_x, int icon_y)
  {
    Window window = FRAME_OUTER_WINDOW (f);
  
     font table.  */
  
  static void
 -x_check_font (f, font)
 -     struct frame *f;
 -     struct font *font;
 +x_check_font (struct frame *f, struct font *font)
  {
    Lisp_Object frame;
  
@@@ -9759,7 -9990,8 +9759,7 @@@ static int x_session_initialized
  /* Test whether two display-name strings agree up to the dot that separates
     the screen number from the server number.  */
  static int
 -same_x_server (name1, name2)
 -     const char *name1, *name2;
 +same_x_server (const char *name1, const char *name2)
  {
    int seen_colon = 0;
    const unsigned char *system_name = SDATA (Vsystem_name);
     get to the first bit.  With MASK 0x7e0, *BITS is set to 6, and *OFFSET
     to 5.  */
  static void
 -get_bits_and_offset (mask, bits, offset)
 -     unsigned long mask;
 -     int *bits;
 -     int *offset;
 +get_bits_and_offset (long unsigned int mask, int *bits, int *offset)
  {
    int nr = 0;
    int off = 0;
     But don't permanently open it, just test its availability.  */
  
  int
 -x_display_ok (display)
 -    const char *display;
 +x_display_ok (const char *display)
  {
      int dpy_ok = 1;
      Display *dpy;
  
  #ifdef USE_GTK
  static void
 -my_log_handler (log_domain, log_level, message, user_data)
 -     const gchar *log_domain;
 -     GLogLevelFlags log_level;
 -     const gchar *message;
 -     gpointer user_data;
 +my_log_handler (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data)
  {
    if (!strstr (message, "g_set_prgname"))
        fprintf (stderr, "%s-WARNING **: %s\n", log_domain, message);
  }
  #endif
 -  
 +
  /* Open a connection to X display DISPLAY_NAME, and return
     the structure that describes the open display.
     If we cannot contact the display, return null.  */
  
  struct x_display_info *
 -x_term_init (display_name, xrm_option, resource_name)
 -     Lisp_Object display_name;
 -     char *xrm_option;
 -     char *resource_name;
 +x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
  {
    int connection;
    Display *dpy;
    struct terminal *terminal;
    struct x_display_info *dpyinfo;
    XrmDatabase xrdb;
 +  Mouse_HLInfo *hlinfo;
  
    BLOCK_INPUT;
  
      char *argv[NUM_ARGV];
      char **argv2 = argv;
      guint id;
 -#ifndef HAVE_GTK_MULTIDISPLAY
 -    if (!EQ (Vinitial_window_system, Qx))
 -      error ("Sorry, you cannot connect to X servers with the GTK toolkit");
 -#endif
  
      if (x_initialized++ > 1)
        {
 -#ifdef HAVE_GTK_MULTIDISPLAY
 -        /* Opening another display.  If xg_display_open returns less
 -           than zero, we are probably on GTK 2.0, which can only handle
 -           one display.  GTK 2.2 or later can handle more than one.  */
 -        if (xg_display_open (SDATA (display_name), &dpy) < 0)
 -#endif
 -          error ("Sorry, this version of GTK can only handle one display");
 +        xg_display_open (SDATA (display_name), &dpy);
        }
      else
        {
 +        static char display_opt[] = "--display";
 +        static char name_opt[] = "--name";
 +        
          for (argc = 0; argc < NUM_ARGV; ++argc)
            argv[argc] = 0;
  
  
          if (! NILP (display_name))
            {
 -            argv[argc++] = "--display";
 +            argv[argc++] = display_opt;
              argv[argc++] = SDATA (display_name);
            }
  
 -        argv[argc++] = "--name";
 +        argv[argc++] = name_opt;
          argv[argc++] = resource_name;
  
          XSetLocaleModifiers ("");
  
          /* Load our own gtkrc if it exists.  */
          {
 -          char *file = "~/.emacs.d/gtkrc";
 +          const char *file = "~/.emacs.d/gtkrc";
            Lisp_Object s, abs_file;
  
            s = make_string (file, strlen (file));
    /* We have definitely succeeded.  Record the new connection.  */
  
    dpyinfo = (struct x_display_info *) xmalloc (sizeof (struct x_display_info));
 -  bzero (dpyinfo, sizeof *dpyinfo);
 +  memset (dpyinfo, 0, sizeof *dpyinfo);
 +  hlinfo = &dpyinfo->mouse_highlight;
  
    terminal = x_create_terminal (dpyinfo);
  
    dpyinfo->bitmaps_size = 0;
    dpyinfo->bitmaps_last = 0;
    dpyinfo->scratch_cursor_gc = 0;
 -  dpyinfo->mouse_face_mouse_frame = 0;
 -  dpyinfo->mouse_face_deferred_gc = 0;
 -  dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1;
 -  dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1;
 -  dpyinfo->mouse_face_face_id = DEFAULT_FACE_ID;
 -  dpyinfo->mouse_face_window = Qnil;
 -  dpyinfo->mouse_face_overlay = Qnil;
 -  dpyinfo->mouse_face_mouse_x = dpyinfo->mouse_face_mouse_y = 0;
 -  dpyinfo->mouse_face_defer = 0;
 -  dpyinfo->mouse_face_hidden = 0;
 +  hlinfo->mouse_face_mouse_frame = 0;
 +  hlinfo->mouse_face_deferred_gc = 0;
 +  hlinfo->mouse_face_beg_row = hlinfo->mouse_face_beg_col = -1;
 +  hlinfo->mouse_face_end_row = hlinfo->mouse_face_end_col = -1;
 +  hlinfo->mouse_face_face_id = DEFAULT_FACE_ID;
 +  hlinfo->mouse_face_window = Qnil;
 +  hlinfo->mouse_face_overlay = Qnil;
 +  hlinfo->mouse_face_mouse_x = hlinfo->mouse_face_mouse_y = 0;
 +  hlinfo->mouse_face_defer = 0;
 +  hlinfo->mouse_face_hidden = 0;
    dpyinfo->x_focus_frame = 0;
    dpyinfo->x_focus_event_frame = 0;
    dpyinfo->x_highlight_frame = 0;
      = XInternAtom (dpyinfo->display, "_NET_WM_WINDOW_TYPE", False);
    dpyinfo->Xatom_net_window_type_tooltip
      = XInternAtom (dpyinfo->display, "_NET_WM_WINDOW_TYPE_TOOLTIP", False);
 -  dpyinfo->cut_buffers_initialized = 0;
 +  dpyinfo->Xatom_net_wm_icon_name
 +    = XInternAtom (dpyinfo->display, "_NET_WM_ICON_NAME", False);
 +  dpyinfo->Xatom_net_wm_name
 +    = XInternAtom (dpyinfo->display, "_NET_WM_NAME", False);
+   dpyinfo->Xatom_net_frame_extents  
+     = XInternAtom (dpyinfo->display, "_NET_FRAME_EXTENTS", False);
  
    dpyinfo->x_dnd_atoms_size = 8;
    dpyinfo->x_dnd_atoms_length = 0;
    dpyinfo->connection = connection;
  
    {
 -    extern int gray_bitmap_width, gray_bitmap_height;
 -    extern char *gray_bitmap_bits;
      dpyinfo->gray
        = XCreatePixmapFromBitmapData (dpyinfo->display, dpyinfo->root_window,
                                     gray_bitmap_bits,
  
    xsettings_initialize (dpyinfo);
  
 -#ifdef subprocesses
    /* This is only needed for distinguishing keyboard and process input.  */
    if (connection != 0)
      add_keyboard_wait_descriptor (connection);
 -#endif
  
  #ifdef F_SETOWN
    fcntl (connection, F_SETOWN, getpid ());
     and without sending any more commands to the X server.  */
  
  void
 -x_delete_display (dpyinfo)
 -     struct x_display_info *dpyinfo;
 +x_delete_display (struct x_display_info *dpyinfo)
  {
    struct terminal *t;
  
  #ifdef HAVE_X_SM
          /* Close X session management when we close its display.  */
          if (t->id == 1 && x_session_have_connection ())
 -          x_session_close();
 +          x_session_close ();
  #endif
          delete_terminal (t);
          break;
     that slows us down.  */
  
  static void
 -x_process_timeouts (timer)
 -     struct atimer *timer;
 +x_process_timeouts (struct atimer *timer)
  {
    BLOCK_INPUT;
    x_timeout_atimer_activated_flag = 0;
     processed, these widgets don't behave normally.  */
  
  void
 -x_activate_timeout_atimer ()
 +x_activate_timeout_atimer (void)
  {
    BLOCK_INPUT;
    if (!x_timeout_atimer_activated_flag)
@@@ -10657,7 -10910,7 +10659,7 @@@ x_create_terminal (struct x_display_inf
  }
  
  void
 -x_initialize ()
 +x_initialize (void)
  {
    baud_rate = 19200;
  
  
  
  void
 -syms_of_xterm ()
 +syms_of_xterm (void)
  {
    x_error_message = NULL;
  
@@@ -10771,11 -11024,9 +10773,11 @@@ selected window or cursor position is p
    x_mouse_click_focus_ignore_position = 0;
  
    DEFVAR_LISP ("x-toolkit-scroll-bars", &Vx_toolkit_scroll_bars,
 -    doc: /* What X toolkit scroll bars Emacs uses.
 -A value of nil means Emacs doesn't use X toolkit scroll bars.
 -Otherwise, value is a symbol describing the X toolkit.  */);
 +    doc: /* Which toolkit scroll bars Emacs uses, if any.
 +A value of nil means Emacs doesn't use toolkit scroll bars.
 +With the X Window system, the value is a symbol describing the
 +X toolkit.  Possible values are: gtk, motif, xaw, or xaw3d.
 +With MS Windows, the value is t.  */);
  #ifdef USE_TOOLKIT_SCROLL_BARS
  #ifdef USE_MOTIF
    Vx_toolkit_scroll_bars = intern_c_string ("motif");
@@@ -10841,3 -11092,5 +10843,3 @@@ default is nil, which is the same as `s
  
  #endif /* HAVE_X_WINDOWS */
  
 -/* arch-tag: 6d4e4cb7-abc1-4302-9585-d84dcfb09d0f
 -   (do not change this comment) */
diff --combined src/xterm.h
index ec99a659b8e4d9f10eb40d29d2971e306385660f,07eaec3060cd4cadee56a5241f2b74bba43dfc9b..1d144b3b704afaea88f89098ba0ad94b40a9bdfe
@@@ -51,10 -51,6 +51,10 @@@ typedef GtkWidget *xt_or_gtk_widget
  #define XSync(d, b) do { gdk_window_process_all_updates (); \
                           XSync (d, b);  } while (0)
  
 +/* The GtkTooltip API came in 2.12, but gtk-enable-tooltips in 2.14. */
 +#if GTK_MAJOR_VERSION > 2 || GTK_MINOR_VERSION > 13
 +#define USE_GTK_TOOLTIP
 +#endif
  
  #endif /* USE_GTK */
  
@@@ -190,9 -186,36 +190,9 @@@ struct x_display_inf
    /* Reusable Graphics Context for drawing a cursor in a non-default face. */
    GC scratch_cursor_gc;
  
 -  /* These variables describe the range of text currently shown in its
 -     mouse-face, together with the window they apply to.  As long as
 -     the mouse stays within this range, we need not redraw anything on
 -     its account.  Rows and columns are glyph matrix positions in
 -     MOUSE_FACE_WINDOW.  */
 -  int mouse_face_beg_row, mouse_face_beg_col;
 -  int mouse_face_beg_x, mouse_face_beg_y;
 -  int mouse_face_end_row, mouse_face_end_col;
 -  int mouse_face_end_x, mouse_face_end_y;
 -  int mouse_face_past_end;
 -  Lisp_Object mouse_face_window;
 -  int mouse_face_face_id;
 -  Lisp_Object mouse_face_overlay;
 -
 -  /* 1 if a mouse motion event came and we didn't handle it right away because
 -     gc was in progress.  */
 -  int mouse_face_deferred_gc;
 -
 -  /* FRAME and X, Y position of mouse when last checked for
 -     highlighting.  X and Y can be negative or out of range for the frame.  */
 -  struct frame *mouse_face_mouse_frame;
 -  int mouse_face_mouse_x, mouse_face_mouse_y;
 -
 -  /* Nonzero means defer mouse-motion highlighting.  */
 -  int mouse_face_defer;
 -
 -  /* Nonzero means that the mouse highlight should not be shown.  */
 -  int mouse_face_hidden;
 -
 -  int mouse_face_image_state;
 +  /* Information about the range of text currently shown in
 +     mouse-face.  */
 +  Mouse_HLInfo mouse_highlight;
  
    char *x_id_name;
  
    /* Atom used in XEmbed client messages.  */
    Atom Xatom_XEMBED;
   
 -  int cut_buffers_initialized; /* Whether we're sure they all exist */
 -
    /* The frame (if any) which has the X window that has keyboard focus.
       Zero if none.  This is examined by Ffocus_frame in xfns.c.  Note
       that a mere EnterNotify event can set this; if you need to know the
    Window net_supported_window;
    Atom Xatom_net_window_type, Xatom_net_window_type_tooltip;
  
-   /* Atoms dealing with maximization and fullscreen */
+   /* Atoms dealing with EWMH (i.e. _NET_...) */
    Atom Xatom_net_wm_state, Xatom_net_wm_state_fullscreen_atom,
      Xatom_net_wm_state_maximized_horz, Xatom_net_wm_state_maximized_vert,
-     Xatom_net_wm_state_sticky;
+     Xatom_net_wm_state_sticky, Xatom_net_frame_extents;
  
    /* XSettings atoms and windows.  */
    Atom Xatom_xsettings_sel, Xatom_xsettings_prop, Xatom_xsettings_mgr;
    Window xsettings_window;
 +
 +  /* Frame name and icon name */
 +  Atom Xatom_net_wm_name, Xatom_net_wm_icon_name;
  };
  
  #ifdef HAVE_X_I18N
@@@ -356,16 -378,14 +356,16 @@@ extern int use_xim
  #endif
  
  /* This checks to make sure we have a display.  */
 -extern void check_x P_ ((void));
  
 -extern struct frame *x_window_to_frame P_ ((struct x_display_info *, int));
 +extern void check_x (void);
 +
 +extern struct frame *x_window_to_frame (struct x_display_info *, int);
  
 -extern struct frame *x_any_window_to_frame P_ ((struct x_display_info *, int));
 -extern struct frame *x_menubar_window_to_frame P_ ((struct x_display_info *,
 -                                                    XEvent *));
 -extern struct frame *x_top_window_to_frame P_ ((struct x_display_info *, int));
 +extern struct frame *x_any_window_to_frame (struct x_display_info *, int);
 +extern struct frame *x_menubar_window_to_frame (struct x_display_info *,
 +                                              XEvent *);
 +
 +extern struct frame *x_top_window_to_frame (struct x_display_info *, int);
  
  #if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
  #define x_any_window_to_frame x_window_to_frame
@@@ -384,14 -404,14 +384,14 @@@ extern Lisp_Object x_display_name_list
  /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'.  */
  extern Lisp_Object Vx_pixel_size_width_font_regexp;
  
 -extern struct x_display_info *x_display_info_for_display P_ ((Display *));
 -extern struct x_display_info *x_display_info_for_name P_ ((Lisp_Object));
 -extern void x_set_frame_alpha P_ ((struct frame *));
 +extern struct x_display_info *x_display_info_for_display (Display *);
 +extern struct x_display_info *x_display_info_for_name (Lisp_Object);
 +extern void x_set_frame_alpha (struct frame *);
  
 -extern struct x_display_info *x_term_init P_ ((Lisp_Object, char *, char *));
 -extern int x_display_ok  P_ ((const char *));
 +extern struct x_display_info *x_term_init (Lisp_Object, char *, char *);
 +extern int x_display_ok  (const char *);
  
 -extern void select_visual P_ ((struct x_display_info *));
 +extern void select_visual (struct x_display_info *);
  
  \f
  struct font;
@@@ -408,15 -428,9 +408,15 @@@ struct x_outpu
       if the menubar is turned off.  */
    int menubar_height;
  
 -  /* Height of tool bar widget, in pixels.
 -     Zero if not using an external tool bar.  */
 -  int toolbar_height;
 +  /* Height of tool bar widget, in pixels.  top_height is used if tool bar
 +     at top, bottom_height if tool bar is at the bottom.
 +     Zero if not using an external tool bar or if tool bar is vertical.  */
 +  int toolbar_top_height, toolbar_bottom_height;
 +
 +  /* Width of tool bar widget, in pixels.  left_width is used if tool bar
 +     at left, right_width if tool bar is at the right.
 +     Zero if not using an external tool bar or if tool bar is horizontal.  */
 +  int toolbar_left_width, toolbar_right_width;
  
    /* The tiled border used when the mouse is out of the frame.  */
    Pixmap border_tile;
    GtkWidget *edit_widget;
    /* The widget used for laying out widgets vertically.  */
    GtkWidget *vbox_widget;
 +  /* The widget used for laying out widgets horizontally.  */
 +  GtkWidget *hbox_widget;
    /* The menubar in this frame.  */
    GtkWidget *menubar_widget;
    /* The tool bar in this frame  */
    GtkWidget *handlebox_widget;
    /* Non-zero if the tool bar is detached.  */
    int toolbar_detached;
 +  /* Non-zero if tool bar is packed into the hbox widget (i.e. vertical).  */
 +  int toolbar_in_hbox;
  
    /* The last size hints set.  */
    GdkGeometry size_hints;
    long hint_flags;
 -#endif
 +
 +#ifdef USE_GTK_TOOLTIP
 +  GtkTooltip *ttip_widget;
 +  GtkWidget *ttip_lbl;
 +  GtkWindow *ttip_window;
 +#endif /* USE_GTK_TOOLTIP */
 +
 +#endif /* USE_GTK */
  
    /* If >=0, a bitmap index.  The indicated bitmap is used for the
       icon. */
@@@ -659,22 -662,8 +659,22 @@@ enu
                                 FRAME_X_WINDOW (f))
  #else
  #ifdef USE_GTK
 +/* Functions not present in older Gtk+ */
 +
 +#ifndef HAVE_GTK_WIDGET_GET_WINDOW
 +#define gtk_widget_get_window(w) ((w)->window)
 +#endif
 +#ifndef HAVE_GTK_WIDGET_GET_MAPPED
 +#define gtk_widget_get_mapped(w) (GTK_WIDGET_MAPPED (w))
 +#endif
 +#ifndef HAVE_GTK_ADJUSTMENT_GET_PAGE_SIZE
 +#define gtk_adjustment_get_page_size(w) ((w)->page_size)
 +#define gtk_adjustment_get_upper(w) ((w)->upper)
 +#endif
 +
  #define GTK_WIDGET_TO_X_WIN(w) \
 -  ((w) && (w)->window ? GDK_WINDOW_XWINDOW ((w)->window) : 0)
 +  ((w) && gtk_widget_get_window (w) \
 +   ? GDK_WINDOW_XWINDOW (gtk_widget_get_window (w)) : 0)
  
  #define FRAME_GTK_OUTER_WIDGET(f) ((f)->output_data.x->widget)
  #define FRAME_GTK_WIDGET(f) ((f)->output_data.x->edit_widget)
  #define FRAME_FONT(f) ((f)->output_data.x->font)
  #define FRAME_FONTSET(f) ((f)->output_data.x->fontset)
  #define FRAME_MENUBAR_HEIGHT(f) ((f)->output_data.x->menubar_height)
 -#define FRAME_TOOLBAR_HEIGHT(f) ((f)->output_data.x->toolbar_height)
 +#define FRAME_TOOLBAR_TOP_HEIGHT(f) ((f)->output_data.x->toolbar_top_height)
 +#define FRAME_TOOLBAR_BOTTOM_HEIGHT(f) \
 +  ((f)->output_data.x->toolbar_bottom_height)
 +#define FRAME_TOOLBAR_HEIGHT(f) \
 +  (FRAME_TOOLBAR_TOP_HEIGHT (f) + FRAME_TOOLBAR_BOTTOM_HEIGHT (f))
 +#define FRAME_TOOLBAR_LEFT_WIDTH(f) ((f)->output_data.x->toolbar_left_width)
 +#define FRAME_TOOLBAR_RIGHT_WIDTH(f) ((f)->output_data.x->toolbar_right_width)
 +#define FRAME_TOOLBAR_WIDTH(f) \
 +  (FRAME_TOOLBAR_LEFT_WIDTH (f) + FRAME_TOOLBAR_RIGHT_WIDTH (f))
  #define FRAME_BASELINE_OFFSET(f) ((f)->output_data.x->baseline_offset)
  
  /* This gives the x_display_info structure for the display F is on.  */
@@@ -921,173 -902,168 +921,173 @@@ struct image
  
  /* From xselect.c.  */
  
 -void x_handle_selection_notify P_ ((XSelectionEvent *));
 -void x_handle_property_notify P_ ((XPropertyEvent *));
 +void x_handle_selection_notify (XSelectionEvent *);
 +void x_handle_property_notify (XPropertyEvent *);
  
  /* From xfns.c.  */
  
 -Lisp_Object display_x_get_resource P_ ((struct x_display_info *,
 -                                      Lisp_Object, Lisp_Object,
 -                                      Lisp_Object, Lisp_Object));
 -struct frame *check_x_frame P_ ((Lisp_Object));
 +Lisp_Object display_x_get_resource (struct x_display_info *,
 +                                    Lisp_Object, Lisp_Object,
 +                                    Lisp_Object, Lisp_Object);
 +struct frame *check_x_frame (Lisp_Object);
  EXFUN (Fx_display_color_p, 1);
  EXFUN (Fx_display_grayscale_p, 1);
 -extern void x_free_gcs P_ ((struct frame *));
 +extern void x_free_gcs (struct frame *);
 +extern int gray_bitmap_width, gray_bitmap_height;
 +extern char *gray_bitmap_bits;
  
  /* From xrdb.c.  */
  
 -char *x_get_customization_string P_ ((XrmDatabase, char *, char *));
 -XrmDatabase x_load_resources P_ ((Display *, char *, char *, char *));
 -int x_get_resource P_ ((XrmDatabase, char *, char *,
 -                      XrmRepresentation, XrmValue *));
 -void x_delete_display P_ ((struct x_display_info *));
 -void x_make_frame_visible P_ ((struct frame *));
 -void x_iconify_frame P_ ((struct frame *));
 -void x_wm_set_size_hint P_ ((struct frame *, long, int));
 -int x_text_icon P_ ((struct frame *, char *));
 -int x_bitmap_icon P_ ((struct frame *, Lisp_Object));
 -void x_set_window_size P_ ((struct frame *, int, int, int));
 -void x_wm_set_window_state P_ ((struct frame *, int));
 -int x_alloc_nearest_color P_ ((struct frame *, Colormap, XColor *));
 +char *x_get_customization_string (XrmDatabase, const char *, const char *);
 +XrmDatabase x_load_resources (Display *, const char *, const char *,
 +                            const char *);
 +int x_get_resource (XrmDatabase, const char *, const char *,
 +                    XrmRepresentation, XrmValue *);
 +void x_delete_display (struct x_display_info *);
 +void x_make_frame_visible (struct frame *);
 +void x_iconify_frame (struct frame *);
 +void x_wm_set_size_hint (struct frame *, long, int);
 +int x_text_icon (struct frame *, const char *);
 +int x_bitmap_icon (struct frame *, Lisp_Object);
 +void x_set_window_size (struct frame *, int, int, int);
 +void x_wm_set_window_state (struct frame *, int);
 +int x_alloc_nearest_color (struct frame *, Colormap, XColor *);
  
  /* Defined in xterm.c */
  
 -extern void cancel_mouse_face P_ ((struct frame *));
 -extern void x_scroll_bar_clear P_ ((struct frame *));
 -extern int x_text_icon P_ ((struct frame *, char *));
 -extern int x_bitmap_icon P_ ((struct frame *, Lisp_Object));
 -extern void x_catch_errors P_ ((Display *));
 -extern void x_check_errors P_ ((Display *, char *));
 -extern int x_had_errors_p P_ ((Display *));
 -extern int x_catching_errors P_ ((void));
 -extern void x_uncatch_errors P_ ((void));
 -extern void x_clear_errors P_ ((Display *));
 -extern void x_set_window_size P_ ((struct frame *, int, int, int));
 -extern void x_set_mouse_position P_ ((struct frame *, int, int));
 -extern void x_set_mouse_pixel_position P_ ((struct frame *, int, int));
 -extern void x_ewmh_activate_frame P_ ((struct frame *));
 -extern void x_raise_frame P_ ((struct frame *));
 -extern void x_lower_frame P_ ((struct frame *));
 -extern void x_make_frame_visible P_ ((struct frame *));
 -extern void x_make_frame_invisible P_ ((struct frame *));
 -extern void x_iconify_frame P_ ((struct frame *));
 -extern void x_free_frame_resources P_ ((struct frame *));
 -extern void x_destroy_window P_ ((struct frame *));
 -extern void x_wm_set_size_hint P_ ((struct frame *, long, int));
 -extern void x_wm_set_window_state P_ ((struct frame *, int));
 -extern void x_wm_set_icon_pixmap P_ ((struct frame *, int));
 -extern void x_delete_display P_ ((struct x_display_info *));
 -extern void x_delete_terminal P_ ((struct terminal *terminal));
 -extern void x_initialize P_ ((void));
 -extern unsigned long x_copy_color P_ ((struct frame *, unsigned long));
 +extern void cancel_mouse_face (struct frame *);
 +extern void x_scroll_bar_clear (struct frame *);
 +extern int x_text_icon (struct frame *, const char *);
 +extern int x_bitmap_icon (struct frame *, Lisp_Object);
 +extern void x_catch_errors (Display *);
 +extern void x_check_errors (Display *, const char *);
 +extern int x_had_errors_p (Display *);
 +extern int x_catching_errors (void);
 +extern void x_uncatch_errors (void);
 +extern void x_clear_errors (Display *);
 +extern void x_set_window_size (struct frame *, int, int, int);
 +extern void x_set_mouse_position (struct frame *, int, int);
 +extern void x_set_mouse_pixel_position (struct frame *, int, int);
 +extern void x_ewmh_activate_frame (struct frame *);
 +extern void x_raise_frame (struct frame *);
 +extern void x_lower_frame (struct frame *);
 +extern void x_make_frame_visible (struct frame *);
 +extern void x_make_frame_invisible (struct frame *);
 +extern void x_iconify_frame (struct frame *);
 +extern void x_free_frame_resources (struct frame *);
 +extern void x_destroy_window (struct frame *);
 +extern void x_wm_set_size_hint (struct frame *, long, int);
 +extern void x_wm_set_window_state (struct frame *, int);
 +extern void x_wm_set_icon_pixmap (struct frame *, int);
 +extern void x_delete_display (struct x_display_info *);
 +extern void x_delete_terminal (struct terminal *terminal);
 +extern void x_initialize (void);
 +extern unsigned long x_copy_color (struct frame *, unsigned long);
  #ifdef USE_X_TOOLKIT
  extern XtAppContext Xt_app_con;
 -extern int x_alloc_lighter_color_for_widget __P ((Widget, Display*, Colormap,
 -                                                unsigned long *,
 -                                                double, int));
 -extern void x_activate_timeout_atimer P_ ((void));
 +extern int x_alloc_lighter_color_for_widget (Widget, Display*, Colormap,
 +                                             unsigned long *,
 +                                             double, int);
 +extern void x_activate_timeout_atimer (void);
  #endif
 -extern void x_query_colors P_ ((struct frame *f, XColor *, int));
 -extern void x_query_color P_ ((struct frame *f, XColor *));
 -extern void x_clear_area P_ ((Display *, Window, int, int, int, int, int));
 -extern void set_vertical_scroll_bar P_ ((struct window *));
 +extern void x_query_colors (struct frame *f, XColor *, int);
 +extern void x_query_color (struct frame *f, XColor *);
 +extern void x_clear_area (Display *, Window, int, int, int, int, int);
 +extern void set_vertical_scroll_bar (struct window *);
  
 -extern int x_dispatch_event P_ ((XEvent *, Display *));
 -extern unsigned int x_x_to_emacs_modifiers P_ ((struct x_display_info *,
 -                                              unsigned));
 -extern int x_display_pixel_height P_ ((struct x_display_info *));
 -extern int x_display_pixel_width P_ ((struct x_display_info *));
 +extern int x_dispatch_event (XEvent *, Display *);
 +extern unsigned int x_x_to_emacs_modifiers (struct x_display_info *,
 +                                            unsigned);
 +extern int x_display_pixel_height (struct x_display_info *);
 +extern int x_display_pixel_width (struct x_display_info *);
  
 -extern void x_set_sticky P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -extern void x_wait_for_event P_ ((struct frame *, int));
 +extern void x_set_sticky (struct frame *, Lisp_Object, Lisp_Object);
 +extern void x_wait_for_event (struct frame *, int);
  
  /* Defined in xselect.c */
  
 -extern void x_handle_property_notify P_ ((XPropertyEvent *));
 -extern void x_handle_selection_notify P_ ((XSelectionEvent *));
 -extern void x_handle_selection_event P_ ((struct input_event *));
 -extern void x_clear_frame_selections P_ ((struct frame *));
 -
 -extern int x_handle_dnd_message P_ ((struct frame *,
 -                                     XClientMessageEvent *,
 -                                     struct x_display_info *,
 -                                     struct input_event *bufp));
 -extern int x_check_property_data P_ ((Lisp_Object));
 -extern void x_fill_property_data P_ ((Display *,
 -                                      Lisp_Object,
 -                                      void *,
 -                                      int));
 -extern Lisp_Object x_property_data_to_lisp P_ ((struct frame *,
 -                                                unsigned char *,
 -                                                Atom,
 -                                                int,
 -                                                unsigned long));
 +extern void x_handle_property_notify (XPropertyEvent *);
 +extern void x_handle_selection_notify (XSelectionEvent *);
 +extern void x_handle_selection_event (struct input_event *);
 +extern void x_clear_frame_selections (struct frame *);
 +
 +extern int x_handle_dnd_message (struct frame *,
 +                                 XClientMessageEvent *,
 +                                 struct x_display_info *,
 +                                 struct input_event *bufp);
 +extern int x_check_property_data (Lisp_Object);
 +extern void x_fill_property_data (Display *,
 +                                  Lisp_Object,
 +                                  void *,
 +                                  int);
 +extern Lisp_Object x_property_data_to_lisp (struct frame *,
 +                                            const unsigned char *,
 +                                            Atom,
 +                                            int,
 +                                            unsigned long);
  
  /* Defined in xfns.c */
  
 -extern struct x_display_info * check_x_display_info P_ ((Lisp_Object frame));
 +extern struct x_display_info * check_x_display_info (Lisp_Object frame);
 +extern Lisp_Object x_get_focus_frame (struct frame *);
  
  #ifdef USE_GTK
 -extern int xg_set_icon P_ ((struct frame *, Lisp_Object));
 -extern int xg_set_icon_from_xpm_data P_ ((struct frame *, char**));
 +extern int xg_set_icon (struct frame *, Lisp_Object);
 +extern int xg_set_icon_from_xpm_data (struct frame *, const char**);
  #endif /* USE_GTK */
  
 -extern void x_real_positions P_ ((struct frame *, int *, int *));
 -extern int defined_color P_ ((struct frame *, char *, XColor *, int));
 -extern void x_set_border_pixel P_ ((struct frame *, int));
 -extern void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -extern void x_implicitly_set_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
 -extern void xic_free_xfontset P_ ((struct frame *));
 -extern void create_frame_xic P_ ((struct frame *));
 -extern void destroy_frame_xic P_ ((struct frame *));
 -extern void xic_set_preeditarea P_ ((struct window *, int, int));
 -extern void xic_set_statusarea P_ ((struct frame *));
 -extern void xic_set_xfontset P_ ((struct frame *, char *));
 -extern int x_pixel_width P_ ((struct frame *));
 -extern int x_pixel_height P_ ((struct frame *));
 -extern int x_char_width P_ ((struct frame *));
 -extern int x_char_height P_ ((struct frame *));
 -extern int x_screen_planes P_ ((struct frame *));
 -extern void x_sync P_ ((struct frame *));
 -extern int x_defined_color P_ ((struct frame *, char *, XColor *, int));
 +extern void x_real_positions (struct frame *, int *, int *);
 +extern int defined_color (struct frame *, const char *, XColor *, int);
 +extern void x_set_border_pixel (struct frame *, int);
 +extern void x_set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
 +extern void x_implicitly_set_name (struct frame *, Lisp_Object, Lisp_Object);
 +extern void xic_free_xfontset (struct frame *);
 +extern void create_frame_xic (struct frame *);
 +extern void destroy_frame_xic (struct frame *);
 +extern void xic_set_preeditarea (struct window *, int, int);
 +extern void xic_set_statusarea (struct frame *);
 +extern void xic_set_xfontset (struct frame *, const char *);
 +extern int x_pixel_width (struct frame *);
 +extern int x_pixel_height (struct frame *);
 +extern int x_char_width (struct frame *);
 +extern int x_char_height (struct frame *);
 +extern int x_screen_planes (struct frame *);
 +extern void x_sync (struct frame *);
 +extern int x_defined_color (struct frame *, const char *, XColor *, int);
  #ifdef HAVE_X_I18N
 -extern void free_frame_xic P_ ((struct frame *));
 +extern void free_frame_xic (struct frame *);
 +extern char * xic_create_fontsetname (const char *base_fontname, int motif);
  #endif
 -extern void x_set_tool_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
 +extern void x_set_tool_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
  
  /* Defined in xfaces.c */
  
 -extern int compute_glyph_face P_ ((struct frame *, int, int));
 -extern int compute_glyph_face_1 P_ ((struct frame *, Lisp_Object, int));
 -extern void x_free_dpy_colors P_ ((Display *, Screen *, Colormap,
 -                                 unsigned long *, int));
 +extern int compute_glyph_face (struct frame *, int, int);
 +extern int compute_glyph_face_1 (struct frame *, Lisp_Object, int);
 +extern void x_free_dpy_colors (Display *, Screen *, Colormap,
 +                               unsigned long *, int);
  
  /* Defined in xmenu.c */
  
 -extern void x_menu_set_in_use P_ ((int));
 -extern void x_menu_wait_for_event P_ ((void *data));
 -extern void x_activate_menubar P_ ((struct frame *));
 -extern int popup_activated P_ ((void));
 -extern void initialize_frame_menubar P_ ((struct frame *));
 -extern void free_frame_menubar P_ ((struct frame *));
 +extern void x_menu_set_in_use (int);
 +extern void x_menu_wait_for_event (void *data);
 +extern void x_activate_menubar (struct frame *);
 +extern int popup_activated (void);
 +extern void initialize_frame_menubar (struct frame *);
 +extern void free_frame_menubar (struct frame *);
  
  /* Defined in widget.c */
  
  #ifdef USE_X_TOOLKIT
 -extern void widget_store_internal_border P_ ((Widget));
 +extern void widget_store_internal_border (Widget);
  #endif
  
  /* Defined in xsmfns.c */
  #ifdef HAVE_X_SM
 -extern void x_session_initialize P_ ((struct x_display_info *dpyinfo));
 -extern int x_session_check_input P_ ((struct input_event *bufp));
 -extern int x_session_have_connection P_ ((void));
 -extern void x_session_close P_ ((void));
 +extern void x_session_initialize (struct x_display_info *dpyinfo);
 +extern int x_session_check_input (struct input_event *bufp);
 +extern int x_session_have_connection (void);
 +extern void x_session_close (void);
  #endif
  
  /* XEmbed implementation.  */
@@@ -1140,11 -1116,10 +1140,11 @@@ enum xembed_accelerato
  
  /* Defined in xterm.c */
  
 -extern void xembed_set_info P_ ((struct frame *f, enum xembed_info flags));
 -extern void xembed_send_message P_ ((struct frame *f, Time time,
 -                                   enum xembed_message message,
 -                                   long detail, long data1, long data2));
 +extern Lisp_Object Qx_gtk_map_stock;
 +extern void xembed_set_info (struct frame *f, enum xembed_info flags);
 +extern void xembed_send_message (struct frame *f, Time time,
 +                                 enum xembed_message message,
 +                                 long detail, long data1, long data2);
  
  /* Is the frame embedded into another application? */