Merge changes from emacs-23 branch
authorChong Yidong <cyd@stupidchicken.com>
Sun, 31 Oct 2010 14:40:01 +0000 (10:40 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Sun, 31 Oct 2010 14:40:01 +0000 (10:40 -0400)
17 files changed:
1  2 
doc/lispref/ChangeLog
doc/misc/ChangeLog
doc/misc/cc-mode.texi
lisp/ChangeLog
lisp/cedet/ChangeLog
lisp/menu-bar.el
lisp/net/tramp.el
lisp/play/gomoku.el
lisp/play/landmark.el
lisp/progmodes/sql.el
lisp/select.el
lisp/speedbar.el
lisp/textmodes/bibtex.el
lisp/vc/add-log.el
src/ChangeLog
src/dbusbind.c
src/xterm.c

diff --combined doc/lispref/ChangeLog
 -2010-10-27  Glenn Morris  <rgm@gnu.org>
++2010-10-31  Glenn Morris  <rgm@gnu.org>
+       * maps.texi (Standard Keymaps): Update File menu description.
 -2010-10-22  Eli Zaretskii  <eliz@gnu.org>
 +2010-10-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (elisp.dvi, elisp.pdf): Also include $emacsdir.
 +
 +2010-10-24  Eli Zaretskii  <eliz@gnu.org>
  
        * display.texi (Window Systems): Deprecate use of window-system as
        a predicate.
  
 -2010-09-05  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +2010-10-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * help.texi (Documentation Basics): Remove mentions of digest-doc and
 +      sorted-doc.
 +
 +2010-10-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * os.texi (Dynamic Libraries): New node, with slightly modified
 +      text deleted from "Image Formats".
 +      (System Interface): Add @menu entry for "Dynamic Libraries".
 +
 +      * display.texi (Image Formats): Remove description of
 +      image-library-alist.  (Renamed in 2010-10-13T14:50:06Z!lekktu@gmail.com.)
 +
 +2010-10-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * book-spine.texinfo: Rename to book-spine.texi.
 +
 +2010-10-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
 +
 +      * Makefile.in (DVIPS): New variable.
 +      (.PHONY): Add html, ps.
 +      (html, elisp.html, ps, elisp.ps): New targets.
 +      (clean): Delete html, ps files.
 +      ($(infodir)/elisp): Remove unnecessary includes.
 +
 +2010-10-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (emacsdir): New variable.
 +      (srcs): Add emacsver.texi.
 +      ($(infodir)/elisp, elisp.dvi): Add -I$(emacsdir).
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (VPATH): Remove.
 +      (infodir): Make it absolute.
 +      (mkinfodir, $(infodir)/elisp, infoclean): No need to cd $srcdir.
 +
 +      * Makefile.in (dist): Anchor regexps.
 +
 +      * Makefile.in (srcs): Put elisp.texi first.
 +      ($(infodir)/elisp, elisp.dvi, elisp.pdf): Use $<.
 +
 +      * Makefile.in (infoclean): Remove harmless, long-standing error.
 +
 +      * Makefile.in ($(infodir)): Delete rule.
 +      (mkinfodir): New.
 +      ($(infodir)/elisp): Use $mkinfodir instead of infodir.
 +
 +      * Makefile.in (dist): Remove reference to emacsver.texi.in.
 +      Also copy emacsver.texi, and edit $emacsdir.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (emacsdir): New variable.
 +      (MAKEINFO): Add -I $emacsdir.
 +      (dist): Copy emacsver.texi.
 +      (srcs): Add emacsver.texi.
 +
 +      * book-spine.texinfo, elisp.texi, vol2.texi, vol1.texi:
 +      Set EMACSVER by including emacsver.texi.
 +
 +      * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
 +
 +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: Rearrange to more closely resemble doc/emacs/Makefile.
 +      (INSTALL_INFO): Remove unused variable.
 +      (mostlyclean, infoclean, dist): New rules.
 +      (clean): Delete dvi and pdf files.
 +      (maintainer-clean): Remove elisp.oaux, use infoclean.
 +      ($(infodir)): Add parallel build workaround.
 +
 +2010-10-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (dvi, pdf, $(infodir)): New targets.
 +      ($(infodir)/elisp): Ensure target directory exists.  Use $@.
 +      Fix -I typo.
 +      (clean): No 'make.out' or 'core' files.
 +      (.PHONY): Declare clean rules.
 +      (maintainer-clean): Delete pdf file.  Guard against cd failures.
 +
 +2010-10-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.texi (File Name Components): Remove ignored section about
 +      deleted variable directory-sep-char.
 +
 +2010-10-03  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.texi (Magic File Names): New defopt
 +      remote-file-name-inhibit-cache.
 +
 +2010-10-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * os.texi (Killing Emacs): Hook now runs in batch mode.
 +
 +2010-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * text.texi (Special Properties): Clarify when modification-hooks run.
 +
 +2010-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * syntax.texi (Syntax Flags): Document new `c' flag.
 +
 +2010-09-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * display.texi (ImageMagick Images): General cleanup.
 +
 +2010-09-06  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
  
        * files.texi (Directory Names): Use \` rather than ^.
  
 +2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * text.texi (Low-Level Kill Ring):
 +      * frames.texi (Window System Selections): Remove cut buffer
 +      documentation.
 +
 +2010-08-28  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * display.texi (Fringe Size/Pos): Add a cross-reference to "Layout
 +      Parameters", where the default fringe width is described.
 +
 +      * frames.texi (Window Frame Parameters, Basic Parameters)
 +      (Position Parameters, Layout Parameters, Management Parameters)
 +      (Cursor Parameters, Font and Color Parameters): Add indexing for
 +      frame parameters.  (Bug#6929)
 +
 +2010-08-25  Tom Tromey  <tromey@redhat.com>
 +
 +      * vol2.texi (Top): Update.
 +      * vol1.texi (Top): Update.
 +      * tips.texi (Library Headers): Mention Package-Version and
 +      Package-Requires.
 +      * package.texi: New file.
 +      * os.texi (System Interface): Update pointers.
 +      * elisp.texi (Top): Link to new nodes.  Include package.texi.
 +      * anti.texi (Antinews): Update pointers.
 +
 +2010-08-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * processes.texi (Filter Functions): Fix last change.
 +
 +2010-08-24  Markus Triska  <triska@gmx.at>
 +
 +      * processes.texi (Filter Functions): Use `buffer-live-p' instead
 +      of `buffer-name' in the main text as well as in the example
 +      (Bug#3098).
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * nonascii.texi (Text Representations):
 +      * loading.texi (Loading Non-ASCII):
 +      * compile.texi (Byte Compilation): Don't mention obsolete
 +      --unibyte command-line argument.
 +
  2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
  
        * modes.texi (Defining Minor Modes): Doc fix (Bug#6880).
  
 -2010-08-19  Chong Yidong  <cyd@stupidchicken.com>
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
  
        * objects.texi (Bool-Vector Type): Minor definition tweak (Bug#6878).
  
 -2010-08-02  Christoph  <cschol2112@googlemail.com>
 +2010-08-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * commands.texi (Misc Events): Add cross-references to where
 +      POSITION of a mouse event is described in detail.
 +
 +2010-08-08  Christoph  <cschol2112@googlemail.com>
  
        * control.texi (Handling Errors) <error-message-string>: Fix arg name.
  
 -2010-07-29  Juanma Barranquero  <lekktu@gmail.com>
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
  
        * modes.texi (Defining Minor Modes): Use C-backspace, not C-delete.
        Suggested by Štěpán Němec <stepnem@gmail.com>.
  
 -2010-07-28  Juanma Barranquero  <lekktu@gmail.com>
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
  
        * minibuf.texi (High-Level Completion): Document args of
        `read-buffer-function' (bug#5625).
  
 +2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Layout Parameters): Add doc for tool-bar-position.
 +
 +2010-07-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * processes.texi (Process Information): Explain process property
 +      `remote-tty'.
 +
  2010-07-27  Juanma Barranquero  <lekktu@gmail.com>
  
        * modes.texi (Defining Minor Modes): Use C-delete in examples,
        instead of "\C-\^?" (bug#6334).
  
 -2010-07-21  Juanma Barranquero  <lekktu@gmail.com>
 -
        * text.texi (Special Properties): Fix typo.
  
 +2010-07-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * internals.texi (Writing Emacs Primitives): Adapt to ANSI C
 +      calling sequences, which are now the standard.
 +
  2010-06-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * text.texi (Undo): Clarify command loop behavior (Bug#2433).
  
  2010-06-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * errors.texi (Standard Errors): Remove unnecessary markup
 -      (Bug#6461).
 +      * errors.texi (Standard Errors): Remove unnecessary markup (Bug#6461).
  
  2010-06-02  Chong Yidong  <cyd@stupidchicken.com>
  
        * minibuf.texi (Basic Completion): Document completion-boundaries.
        (Programmed Completion): Document the new fourth method for boundaries.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-22  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * Version 23.2 released.
 +      * display.texi (Image Cache): Update documentation about image caching.
  
 -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)
  
        * windows.texi (Textual Scrolling):
        * tips.texi (Coding Conventions):
        * loading.texi (Where Defined):
        * edebug.texi (Instrumenting): Fix typos.
  
 -2010-04-25  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
  
        * keymaps.texi (Menu Bar): Document :advertised-binding property.
  
 -      * functions.texi (Obsolete Functions): Document
 -      set-advertised-calling-convention.
 +      * functions.texi (Obsolete Functions):
 +      Document set-advertised-calling-convention.
  
        * minibuf.texi (Basic Completion): Document completion-in-region.
        (Programmed Completion): Document completion-annotate-function.
  
        * elisp.texi (Top): Update node description.
  
 +2010-05-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * nonascii.texi (Character Properties):
 +      Document unicode-category-table.  Add an index entry for Unicode
 +      general category.
 +
 +2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
 +
 +2010-04-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * locals.texi (Standard Buffer-Local Variables):
 +      Remove @ignore'd reference to `direction-reversed'.
 +
  2010-04-14  Juri Linkov  <juri@jurta.org>
  
        Fix @deffn without category.
  
        * frames.texi (Cursor Parameters): Fix typo.  (Bug#5760)
  
 -2010-03-21  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * processes.texi (Network Processes): Document seqpacket type.
  
 +2010-03-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * os.texi (System Environment): Do not mention lynxos.
 +
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
  2010-03-06  Chong Yidong  <cyd@stupidchicken.com>
  
        * objects.texi (Integer Type): Take note of the read syntax
  2005-02-05  Eli Zaretskii  <eliz@gnu.org>
  
        * frames.texi (Color Names): Add pointer to the X docs about RGB
 -      color specifications.  Improve indexing
 +      color specifications.  Improve indexing.
        (Text Terminal Colors): Replace the description of RGB values by
        an xref to "Color Names".
  
        * minibuf.texi (Reading File Names): read-file-name has new
        arg PREDICATE.  New function read-directory-name.
  
 -      * macros.texi (Defining Macros): Give definition of `declare'
 +      * macros.texi (Defining Macros): Give definition of `declare'.
        (Indenting Macros): New node.
  
        * frames.texi (Parameter Access): Add modify-all-frames-parameters.
        * numbers.texi (Integer Basics): Add most-positive-fixnum,
        most-negative-fixnum.
  
 -      * compile.texi (Byte Compilation): Explain no-byte-compile
 +      * compile.texi (Byte Compilation): Explain no-byte-compile.
        (Compiler Errors): New node.
  
        * os.texi (User Identification): user-uid, user-real-uid
  
  ;; Local Variables:
  ;; coding: utf-8
 -;; add-log-time-zone-rule: t
  ;; End:
  
 -    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 -      2007, 2008, 2009, 2010  Free Software Foundation, Inc.
 +  Copyright (C) 1998, 1999, 2000, 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: 985ae0ce-df29-475b-b3f8-4bbcbf6f7fda
diff --combined doc/misc/ChangeLog
 -2010-10-30  Glenn Morris  <rgm@gnu.org>
++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>
 +
 +      * 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-03  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +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 doc/misc/cc-mode.texi
@@@ -160,7 -160,8 +160,8 @@@ CC Mod
  This manual is for CC Mode in Emacs.
  
  Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -201,9 -202,8 +202,8 @@@ developing GNU and promoting software f
  @vskip 0pt plus 1filll
  @insertcopying
  
- This manual was generated from cc-mode.texi, which can be downloaded
- from
- @url{http://cvs.savannah.gnu.org/viewcvs/emacs/emacs/doc/misc/cc-mode.texi}.
+ This manual was generated from cc-mode.texi, which is distributed with Emacs,
+ or can be downloaded from @url{http://savannah.gnu.org/projects/emacs/}.
  @end titlepage
  
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@@ -312,19 -312,19 +312,19 @@@ Indentation Engine Basic
  
  Syntactic Symbols
  
 -* Function Symbols::
 -* Class Symbols::
 -* Conditional Construct Symbols::
 -* Switch Statement Symbols::
 -* Brace List Symbols::
 -* External Scope Symbols::
 -* Paren List Symbols::
 -* Literal Symbols::
 -* Multiline Macro Symbols::
 -* Objective-C Method Symbols::
 -* Anonymous Class Symbol::
 -* Statement Block Symbols::
 -* K&R Symbols::
 +* Function Symbols::            
 +* Class Symbols::               
 +* Conditional Construct Symbols::  
 +* Switch Statement Symbols::    
 +* Brace List Symbols::          
 +* External Scope Symbols::      
 +* Paren List Symbols::          
 +* Literal Symbols::             
 +* Multiline Macro Symbols::     
 +* Objective-C Method Symbols::  
 +* Java Symbols::
 +* Statement Block Symbols::     
 +* K&R Symbols::                 
  
  Customizing Indentation
  
@@@ -3971,9 -3971,6 +3971,9 @@@ The first line in a ``topmost'' definit
  Topmost definition continuation lines.  This is only used in the parts
  that aren't covered by other symbols such as @code{func-decl-cont} and
  @code{knr-argdecl}.  @ref{Function Symbols}.
 +@item annotation-top-cont
 +Topmost definition continuation lines where all previous items are
 +annotations.  @ref{Java Symbols}.
  @item member-init-intro
  First line in a member initialization list.  @ref{Class Symbols}.
  @item member-init-cont
@@@ -4002,9 -3999,6 +4002,9 @@@ with an open brace.  @ref{Brace List Sy
  A statement.  @ref{Function Symbols}.
  @item statement-cont
  A continuation of a statement.  @ref{Function Symbols}.
 +@item annotation-var-cont
 +A continuation of a statement where all previous items are
 +annotations.  @ref{Java Symbols}.
  @item statement-block-intro
  The first line in a new statement block.  @ref{Conditional Construct
  Symbols}.
@@@ -4118,23 -4112,23 +4118,23 @@@ Symbols}
  @item inexpr-class
  A class definition inside an expression.  This is used for anonymous
  classes in Java.  It's also used for anonymous array initializers in
 -Java.  @ref{Anonymous Class Symbol}.
 +Java.  @ref{Java Symbols}.
  @end table
  
  @menu
 -* Function Symbols::
 -* Class Symbols::
 -* Conditional Construct Symbols::
 -* Switch Statement Symbols::
 -* Brace List Symbols::
 -* External Scope Symbols::
 -* Paren List Symbols::
 -* Literal Symbols::
 -* Multiline Macro Symbols::
 -* Objective-C Method Symbols::
 -* Anonymous Class Symbol::
 -* Statement Block Symbols::
 -* K&R Symbols::
 +* Function Symbols::            
 +* Class Symbols::               
 +* Conditional Construct Symbols::  
 +* Switch Statement Symbols::    
 +* Brace List Symbols::          
 +* External Scope Symbols::      
 +* Paren List Symbols::          
 +* Literal Symbols::             
 +* Multiline Macro Symbols::     
 +* Objective-C Method Symbols::  
 +* Java Symbols::
 +* Statement Block Symbols::     
 +* K&R Symbols::                 
  @end menu
  
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@@ -4239,7 -4233,7 +4239,7 @@@ Hitting @kbd{C-c C-s} on line 5 shows t
  
  @noindent
  The primary syntactic symbol for this line is @code{access-label} as
 -this a label keyword that specifies access protection in C++.  However,
 +this is a label keyword that specifies access protection in C++.  However,
  because this line is also a top-level construct inside a class
  definition, the analysis actually shows two syntactic symbols.  The
  other syntactic symbol assigned to this line is @code{inclass}.
@@@ -4746,7 -4740,7 +4746,7 @@@ macros.}
  @xref{Custom Macros}, for more info about the treatment of macros.
  
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 -@node    Objective-C Method Symbols, Anonymous Class Symbol, Multiline Macro Symbols, Syntactic Symbols
 +@node    Objective-C Method Symbols, Java Symbols, Multiline Macro Symbols, Syntactic Symbols
  @comment node-name, next, previous, up
  @subsection Objective-C Method Symbols
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@@ -4773,45 -4767,34 +4773,45 @@@ assigned @code{objc-method-args-cont} s
  assigned @code{objc-method-call-cont} syntax.
  
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 -@node    Anonymous Class Symbol, Statement Block Symbols, Objective-C Method Symbols, Syntactic Symbols
 +@node    Java Symbols, Statement Block Symbols, Objective-C Method Symbols, Syntactic Symbols
  @comment node-name, next, previous, up
 -@subsection Anonymous Class Symbol (Java)
 +@subsection Java Symbols
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  
  Java has a concept of anonymous classes which can look something like
  this:
  
  @example
 - 1: public void watch(Observable o) @{
 - 2:     o.addObserver(new Observer() @{
 - 3:             public void update(Observable o, Object arg) @{
 - 4:                 history.addElement(arg);
 - 5:             @}
 - 6:         @});
 - 7: @}
 + 1:  @@Test
 + 2:  public void watch(Observable o) @{
 + 3:      @@NonNull
 + 4:      Observer obs = new Observer() @{
 + 5:          public void update(Observable o, Object arg) @{
 + 6:              history.addElement(arg);
 + 7:          @}
 + 8:      @};
 + 9:      o.addObserver(obs);
 + 10: @}
  @end example
  
  @ssindex inexpr-class
  The brace following the @code{new} operator opens the anonymous class.
 -Lines 3 and 6 are assigned the @code{inexpr-class} syntax, besides the
 +Lines 5 and 8 are assigned the @code{inexpr-class} syntax, besides the
  @code{inclass} symbol used in normal classes.  Thus, the class will be
  indented just like a normal class, with the added indentation given to
  @code{inexpr-class}.  An @code{inexpr-class} syntactic element doesn't
  have an anchor position.
  
 +@ssindex annotation-top-cont
 +@ssindex annotation-var-cont
 +Line 2 is assigned the @code{annotation-top-cont} syntax, due to it being a
 +continuation of a topmost introduction with an annotation symbol preceding
 +the current line.  Similarly, line 4 is assigned the @code{annotation-var-cont}
 +syntax due to it being a continuation of a variable declaration where preceding
 +the declaration is an annotation.
 +
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 -@node    Statement Block Symbols, K&R Symbols, Anonymous Class Symbol, Syntactic Symbols
 +@node    Statement Block Symbols, K&R Symbols, Java Symbols, Syntactic Symbols
  @comment node-name, next, previous, up
  @subsection Statement Block Symbols
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@@ -7015,6 -6998,3 +7015,3 @@@ Since most @ccmode{} variables are prep
  
  @bye
  
- @ignore
-    arch-tag: c4cab162-5e57-4366-bdce-4a9db2fc97f0
- @end ignore
diff --combined lisp/ChangeLog
 -2010-10-30  Michael Albinus  <michael.albinus@gmx.de>
++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  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * speedbar.el (speedbar-mode):
+       * play/fortune.el (fortune-in-buffer, fortune):
+       * play/gomoku.el (gomoku-mode):
+       * play/landmark.el (lm-mode):
+       * 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>
++2010-10-31  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
+       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  Glenn Morris  <rgm@gnu.org>
++
++      * comint.el (comint-password-prompt-regexp):
++      Match "enter the password".  (Bug#7224)
++
 +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-extended-complete-re): Support 'pure' fucntion & task
        declarations (these have no bodies).
-       (verilog-beg-of-statement): general cleanup to enable support of
-       'pure' fucntion & task declarations (these have no bodies).  These
-       efforts together fix Verilog bug210 from veripool; which was also
+       (verilog-beg-of-statement): General cleanup to enable support of
+       'pure' fucntion & task declarations (these have no bodies).
+       These efforts together fix Verilog bug210 from veripool; which was also
        noticed by Steve Pearlmutter.
        (verilog-directive-re, verilog-directive-begin, verilog-indent-re)
-       (verilog-directive-nest-re, verilog-set-auto-endcomments): Support
-       `elsif.  Reported by Shankar Giri.
+       (verilog-directive-nest-re, verilog-set-auto-endcomments):
+       Support `elsif.  Reported by Shankar Giri.
        (verilog-forward-ws&directives, verilog-in-attribute-p): Fixes for
        attribute handling for lining up declarations and assignments.
        (verilog-beg-of-statement-1): Fix issue where continued declaration
        (verilog-in-attribute-p, verilog-skip-backward-comments)
        (verilog-skip-forward-comment-p): Support proper treatment of
        attributes by indent code. Reported by Jeff Steele.
-       (verilog-in-directive-p): Fix comment to correctly describe
-       function.
+       (verilog-in-directive-p): Fix comment to correctly describe function.
        (verilog-backward-up-list, verilog-in-struct-region-p)
        (verilog-backward-token, verilog-in-struct-p)
        (verilog-in-coverage-p, verilog-do-indent)
        (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)
        parameter in AUTOINSTPARAM.
        (verilog-read-always-signals-recurse, verilog-read-decls): Fix not
        treating `elsif similar to `endif inside AUTOSENSE.
-         (verilog-do-indent): Implement correct automatic or static task or
+       (verilog-do-indent): Implement correct automatic or static task or
        function end comment highlight. Reported by Steve Pearlmutter.
        (verilog-font-lock-keywords-2): Fix highlighting of single
        character pins, bug264.  Reported by Michael Laajanen.
        (verilog-read-sub-decls-in-interfaced, verilog-read-sub-decls-sig)
        (verilog-subdecls-get-interfaced, verilog-subdecls-new): Support
        interfaces with AUTOINST, bug270.  Reported by Luis Gutierrez.
-       (verilog-pretty-expr): Fix interactive arguments, bug272. Reported
-       by Mark Johnson.
-       (verilog-auto-tieoff, verilog-auto-tieoff-ignore-regexp): Add
-       'verilog-auto-tieoff-ignore-regexp' for AUTOTIEOFF,
+       (verilog-pretty-expr): Fix interactive arguments, bug272.
+       Reported by Mark Johnson.
+       (verilog-auto-tieoff, verilog-auto-tieoff-ignore-regexp):
+       Add 'verilog-auto-tieoff-ignore-regexp' for AUTOTIEOFF,
        bug269. Suggested by Gary Delp.
        (verilog-mode-map, verilog-preprocess, verilog-preprocess-history)
-       (verilog-preprocessor, verilog-set-compile-command): Create
-       verilog-preprocess and verilog-preprocessor to show preprocessed
-       output.
+       (verilog-preprocessor, verilog-set-compile-command):
+       Create verilog-preprocess and verilog-preprocessor to show
+       preprocessed output.
        (verilog-get-beg-of-line, verilog-get-end-of-line)
        (verilog-modi-file-or-buffer, verilog-modi-name)
        (verilog-modi-point, verilog-within-string): Move defmacro's
        (verilog-modi-lookup-last-current, verilog-modi-lookup-last-mod)
        (verilog-modi-lookup-last-modi, verilog-modi-lookup-last-tick):
        Fix slow verilog-auto expansion on very large files.
-       (verilog-read-sub-decls-expr, verilog-read-sub-decls-line): Fix
-       AUTOOUTPUT treating "1*2" as a signal name in submodule connection
+       (verilog-read-sub-decls-expr, verilog-read-sub-decls-line):
+       Fix AUTOOUTPUT treating "1*2" as a signal name in submodule connection
        "{1*2{...".  Broke in last revision.
        (verilog-read-sub-decls-expr): Fix AUTOOUTPUT not detecting
        submodule connections with replications "{#{a},#{b}}".
  
 +2010-10-24  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/dcl-mode.el (dcl-electric-reindent-regexps):
 +      Fix typo in docstring.
 +
 +2010-10-24  Kenichi Handa  <handa@m17n.org>
 +
 +      * face-remap.el (text-scale-adjust): Call read-event with a proper
 +      prompt.
 +
 +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-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-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      Merge read-color and facemenu-read-color (Bug#7242).
 +
 +      * faces.el (read-color): Use the completion code from
 +      facemenu-read-color.  Require match in completion.  Doc fix.
 +
 +      * facemenu.el (facemenu-read-color): Alias for read-color.
 +      (facemenu-set-foreground, facemenu-set-background): Use
 +      read-color.
 +
 +      * frame.el (set-background-color, set-foreground-color)
 +      (set-cursor-color, set-mouse-color, set-border-color): Use
 +      read-color.
 +
 +2010-10-24  Leo  <sdl.web@gmail.com>
 +
 +      * eshell/em-unix.el (eshell-remove-entries): Use the TRASH
 +      argument of delete-file and delete-directory (Bug#7011).
 +
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-menu-mode-map): Inherit from
 +      button-buffer-map.
 +
 +2010-10-24  Ralf Angeli  <angeli@caeruleus.net>
 +
 +      * emacs-lisp/package.el (package--generate-package-list): Make the
 +      *Packages* buffer read-only.
 +
 +2010-10-24  Alan Mackenzie  <acm@muc.de>
 +
 +      * 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).
 +
 +2010-10-24  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epg-config.el (epg-gpg-program): Try to use "gpg2" if "gpg"
 +      executable is not available on the system (Bug#7268).
 +
 +2010-10-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * select.el (selection-coding-system, next-selection-coding-system):
 +      Sync doc with C versions.
 +
 +      * 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.
 +
 +      * term/tty-colors.el (tty-defined-color-alist): Remove duplicate
 +      definition of C variable.
 +
 +      * 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-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      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-23  Glenn Morris  <rgm@gnu.org>
  
 -      * comint.el (comint-password-prompt-regexp):
 -      Match "enter the password".  (Bug#7224)
 +      * textmodes/flyspell.el (flyspell-mode): If there was an error,
 +      say what it was.
  
 -2010-10-22  Juanma Barranquero  <lekktu@gmail.com>
 +      * frame.el (auto-hscroll-mode, cursor-in-non-selected-windows):
 +      Sync docs with C version.
  
 -      * progmodes/dcl-mode.el (dcl-electric-reindent-regexps):
 -      Fix typo in docstring.
 +      * term/ns-win.el (xw-defined-colors):
 +      * term/x-win.el (xw-defined-colors): Make docs identical to w32-win.
  
 -2010-10-21  Michael Albinus  <michael.albinus@gmx.de>
 +      * 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.
  
 -      * net/tramp.el (tramp-get-inline-coding): Return `nil' in case of
 -      errors.
 +      * comint.el (comint-password-prompt-regexp): Make it less vague.
 +      Bump version.
  
 -      * net/trampver.el: Update release number.
 +      * help-fns.el (doc-file-to-man, doc-file-to-info): New commands.
  
 -2010-10-20  Kenichi Handa  <handa@m17n.org>
 +      * help.el (finder-by-keyword): Remove unnecessary autoload.
  
 -      * face-remap.el (text-scale-adjust): Call read-event with a proper
 -      prompt.
 +2010-10-22  Glenn Morris  <rgm@gnu.org>
  
 -2010-10-19  Michael Albinus  <michael.albinus@gmx.de>
 +      * 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.
  
 -      * 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>.
 +      * emacs-lisp/autoload.el (batch-update-autoloads): Update for
 +      src/Makefile no longer being pre-processed.
  
 -2010-10-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-10-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/find-func.el (find-library): Use test-completion.
 +
 +2010-10-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * newcomment.el (comment-dwim): Fix the intentation in the doc string.
 +
 +010-10-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * 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.
 +
 +2010-10-21  Daiki Ueno  <ueno@unixuser.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.
 +
 +2010-10-19  Alan Mackenzie  <acm@muc.de>
 +
 +      * 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.
 +
 +      * 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)
 +
 +2010-10-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-face.el (custom-theme-set-faces): Revert 2010-10-18 change.
 +      Don't mark as safe.
 +
 +      * 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.
 +
 +2010-10-18  Julien Danjou  <julien@danjou.info>
 +
 +      * bindings.el: Remove end dashes in default mode-line-format.
 +
 +2010-10-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * bindings.el (global-map): Bind C-d to delete-char and deletechar
 +      to delete-forward-char.
 +
 +      * simple.el (normal-erase-is-backspace-mode): Remap delete to
 +      deletechar, and hence delete-forward-char.
 +
 +2010-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * repeat.el (repeat): Use read-key (bug#6256).
  
 -2010-10-18  Chong Yidong  <cyd@stupidchicken.com>
 +2010-10-19  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>
 -
 -      * emacs-lisp/regexp-opt.el (regexp-opt-group, regexp-opt-charset):
 -      Turn comments into docstrings.
 +2010-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * minibuffer.el (completion--replace): Move point where it belongs
        when there's a common suffix (bug#7215).
  
 +2010-10-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/characters.el: Add category '|' (word breakable)
 +      to fullwidth characters.
 +
 +2010-10-19  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * 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>.
 +
 +2010-10-18  Julien Danjou  <julien@danjou.info>
 +
 +      * avoid.el (mouse-avoidance-ignore-p): Ignore mouse when it is
 +      hidden by `make-pointer-invisible'.
 +
 +2010-10-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * files.el (locate-file-completion-table): Strip non-matching elements
 +      before checking length of list (bug#7238).
 +
 +2010-10-18  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * 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-10-15  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * net/tramp.el (tramp-open-connection-setup-interactive-shell):
 +      * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
        Suppress expansion of tabs to spaces.  Reported by Dale Sedivec
        <dale@codefu.org>.
  
 -2010-10-15  Kenichi Handa  <handa@m17n.org>
 -
 -      * international/characters.el: Add category '|' (word breakable)
 -      to fullwidth characters.
 -
  2010-10-14  Kenichi Handa  <handa@m17n.org>
  
        * mail/rmail.el (rmail-show-message-1): Catch an error of
        (ps-mule-begin-job): Fix for the case that only ENCODING is set in
        a font-spec (bug#7197).
  
 -2010-10-13  Glenn Morris  <rgm@gnu.org>
 +2010-10-14  Glenn Morris  <rgm@gnu.org>
  
        * mail/emacsbug.el (report-emacs-bug): Mention debbugs.gnu.org.
  
 -2010-10-12  Juanma Barranquero  <lekktu@gmail.com>
 +2010-10-14  Juanma Barranquero  <lekktu@gmail.com>
  
        * international/mule.el (define-coding-system):
        * international/titdic-cnv.el (quail-cxterm-package-ext-info):
        * composite.el (compose-region): Fix typo in docstring.
  
 -2010-10-10  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-10-14  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-face.el (custom-theme-set-faces): Call custom-push-theme
 +      only after checking the theme-face property.
 +
 +      * 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.
 +
 +      * custom.el (custom-theme-recalc-face): Simplify.
 +
 +2010-10-14  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-alg.el (math-var): Rename from `var'.
 +      (math-is-polynomial, math-is-poly-rec): Replace `var'
 +      with `math-var'.
 +
 +      * calc/calcalg2.el (math-var): Rename from `var'.
 +      (calcFunc-table, math-scan-for-limits): Replace `var'
 +      with `math-var'.
 +
 +2010-10-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * subr.el (last): Deal with dotted lists (reported in bug#7174).
 +
 +2010-10-13  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * subr.el (last): Use `safe-length' instead of `length' (bug#7206).
 +
 +2010-10-13  Lars Magne Ingebrigtsen  <larsi@gnus.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-10-13  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * image.el (image-library-alist): Declare as obsolete alias.
 +      (image-type-available-p): Use `dynamic-library-alist'.
 +
 +      * term/w32-win.el (dynamic-library-alist):
 +      Use instead of `image-library-alist'.
 +
 +2010-10-13  IRIE Shinsuke  <irieshinsuke@yahoo.co.jp>  (tiny change)
 +
 +      * subr.el (last): Make it faster.  (Bug#7174)
 +
 +2010-10-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>  (tiny change)
 +
 +      * Makefile.in (compile-clean): Use `` instead of $().  (Bug#7178)
 +
 +2010-10-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-theme.el (custom-theme--listed-faces): Add cursor face.
 +      (describe-theme-1): Extract doc from unloaded themes.
 +
 +      * custom.el (custom-theme-name-valid-p): Don't list color-themes.
 +
 +      * themes/tango-theme.el:
 +      * themes/tango-dark-theme.el:
 +      * themes/wheatgrass-theme.el: New files.
 +
 +2010-10-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * 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.
 +
 +      * 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.
  
        * cus-start.el (all): ns-right-alternate-modifier is new.
  
 -2010-10-10  Andreas Schwab  <schwab@linux-m68k.org>
 -
 -      * Makefile.in (ELCFILES): Update.
 -
 -2010-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +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-09  Richard Sharman  <richard_sharman@mitel.com>  (tiny change)
 -
 -      * progmodes/gdb-ui.el (gdb-mouse-toggle-breakpoint-margin)
 -      (gdb-mouse-toggle-breakpoint-fringe): Correct regexp to
 -      work when breakpoint number exceeds nine.
 -
 -2010-10-05  David Koppelman  <koppel@ece.lsu.edu>
 +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.
        (hi-lock-set-pattern): Only add keywords if font-lock-fontified
        non-nil; removed hook inhibit hack.
  
 -2010-10-09  Glenn Morris  <rgm@gnu.org>
 +2010-10-12  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/shadow.el (find-emacs-lisp-shadows): Rename it...
        (load-path-shadows-find): ... to this.
  
        * 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/.
        (load-path-shadows-same-file-or-nonexistent): New name for the old
        shadow-same-file-or-nonexistent.
  
 -2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
 +2010-10-08  Chong Yidong  <cyd@stupidchicken.com>
  
        * minibuffer.el (completion--some, completion--do-completion)
        (minibuffer-complete-and-exit, minibuffer-completion-help)
        (completion-pcm--find-all-completions): Use lexical-let to
        avoid some false matches in variable completion (Bug#7056)
  
 -2010-10-03  Olof Ohlsson Sax  <olof.ohlsson.sax@gmail.com>  (tiny change)
 +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-03  Leo  <sdl.web@gmail.com>
 +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-09-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * minibuffer.el (completion--replace):
        Better preserve markers (bug#7138).
  
 -2010-09-29  Juanma Barranquero  <lekktu@gmail.com>
 +2010-10-08  Juanma Barranquero  <lekktu@gmail.com>
  
        * server.el (server-process-filter): Doc fix.
  
 -2010-09-27  Drew Adams  <drew.adams@oracle.com>
 +2010-10-08  Drew Adams  <drew.adams@oracle.com>
  
        * dired.el (dired-save-positions): Doc fix.  (Bug#7119)
  
 -2010-09-27  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-10-08  Andreas Schwab  <schwab@linux-m68k.org>
  
        * Makefile.in (ELCFILES): Update.
  
 -      * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
 -      Avoid infinite recursion on erroneous lambda form.  (Bug#7114)
 +2010-10-08  Glenn Morris  <rgm@gnu.org>
  
 -2010-09-27  Kenichi Handa  <handa@m17n.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.
  
 -      * tar-mode.el (tar-header-block-tokenize): Decode filenames in
 -      "ustar" format.
 +      * net/browse-url.el (browse-url-xdg-open): Shell-quote url.  (Bug#7166)
  
 -2010-09-27  Kenichi Handa  <handa@m17n.org>
 +2010-10-07  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * international/mule.el (define-coding-system): Docstring fixed.
 +      * 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.
  
 -      * international/mule-diag.el (describe-character-set): Use princ
 -      with proper print-length and print-level instead of insert.
 +      * wid-edit.el (widget-checklist-value-create): Use dolist.
 +      (widget-checklist-match-find): Make second arg optional.
  
 -2010-09-26  Juanma Barranquero  <lekktu@gmail.com>
 +2010-10-07  Glenn Morris  <rgm@gnu.org>
  
 -      * window.el (walk-windows): Doc fix (bug#7105).
 +      * hilit-chg.el (hilit-chg-get-diff-info, hilit-chg-get-diff-list-hk):
 +      Prefix things.
  
 -2010-09-23  Glenn Morris  <rgm@gnu.org>
 +      * 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.
  
 -      * 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-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-09-21  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.
  
 -      * newcomment.el (comment-normalize-vars): Better test validity of
 -      comment-end-skip.
 +2010-10-07  Miles Bader  <miles@gnu.org>
  
 -2010-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/regexp-opt.el (regexp-opt): Add `symbols' mode.
  
 -      * 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-10-07  Glenn Morris  <rgm@gnu.org>
  
 -2010-09-19  Eric M. Ludlam  <zappo@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.
  
 -      Update to CEDET 1.0's version of EIEIO.
 +      * 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.
  
 -      * 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.
 +      * 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.
  
 -2010-07-03  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +      * 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.
        (call-next-method): Stow the replacement argument list for future
        call-next-method invocations.
  
 -2010-09-15  Glenn Morris  <rgm@gnu.org>
 +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.
  
        * calendar/diary-lib.el (diary-list-entries): Doc fix.  (Bug#7019)
  
 -2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-09-23  Glenn Morris  <rgm@gnu.org>
  
 -      * emacs-lisp/byte-run.el (set-advertised-calling-convention):
 -      Add `when' argument.  Update callers.
 +      * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar):
 +      (byte-compile-defvar, byte-compile-cl-warn):
 +      Start warnings with lower-case, like the majority.
  
 -      * subr.el (unintern): Declare the obarray arg mandatory.
 +      * files.el (auto-mode-alist): Add .xa, .xw, .xsw for ld-script-mode.
  
 -2010-09-14  Glenn Morris  <rgm@gnu.org>
 +      * files.el (auto-mode-alist): Prefer C-mode for .xs.  (Bug#7071)
  
 -      * calendar/diary-lib.el (diary-list-entries-hook, diary-sort-entries):
 -      Doc fixes.
 +      * 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.
  
 -      * 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.
 +      * 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'.
  
 -2010-09-12  David Reitter  <david.reitter@gmail.com>
 +      * comint.el (comint-use-prompt-regexp-instead-of-fields):
 +      Move alias before definition, so it does not need autoloading.
  
 -      * simple.el (line-move-visual): Do not truncate goal column to
 -      integer size.  (Bug#7020)
 +      * 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-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-09-23  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * repeat.el (repeat): Allow repeating when the last event is a click.
 -      Suggested by Drew Adams (bug#6256).
 +      * net/netrc.el (netrc-parse): Remove encrypt.el mentions.
  
 -2010-09-11  Sascha Wilde  <wilde@sha-bang.de>
 +2010-09-22  Dan Christensen  <jdc@uwo.ca>
  
 -      * vc/vc-hg.el (vc-hg-state,vc-hg-working-revision):
 -      Replace setting HGRCPATH to "" by some less invasive --config options.
 +      * calendar/time-date.el (date-to-time): Try using parse-time-string
 +      first before using the slower timezone-make-date-arpa-standard.
  
 -2010-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-09-22  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * font-lock.el (font-lock-beginning-of-syntax-function):
 -      Mark as obsolete.
 +      * calendar/time-date.el (format-seconds): Comment fix.
  
 -2010-09-10  Glenn Morris  <rgm@gnu.org>
 +2010-09-22  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.
 +      * emacs-lisp/package.el (package-menu-mode): `revert-buffer-function'
 +      is not automatically buffer-local.
  
 -2010-09-08  Masatake YAMATO  <yamato@redhat.com>
 +2010-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * progmodes/antlr-mode.el (antlr-font-lock-additional-keywords):
 -      Fix typo.  (Bug#6976)
 +      * 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-06  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +2010-09-21  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * 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.
 +      * net/ange-ftp.el (ange-ftp-skip-msgs): Add "^504 ..." message.
  
 -2010-09-05  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +2010-09-21  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * files.el (directory-abbrev-alist): Use \` as default regexp.
 +      * 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.
  
 -      * 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.
 +      * tool-bar.el (tool-bar-position): New defcustom (Bug#7049).
  
 -2010-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * textmodes/bibtex.el:
 -      * proced.el: Update to new email for Roland Winkler <winkler@gnu.org>.
 +      * 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).
  
 -2010-09-02  Glenn Morris  <rgm@gnu.org>
 +      * emacs-lisp/lisp.el (up-list): Don't do nothing silently.
  
 -      * desktop.el (desktop-path): Bump :version after 2009-09-15 change.
 +      * simple.el (blink-matching-open): Use syntax-class.
  
 -2010-08-31  Kenichi Handa  <handa@m17n.org>
 +      * 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.
  
 -      * 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.
 +      * 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 ".".
  
 -      * 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.
 +      * textmodes/ispell.el (ispell-start, ispell-end): Rename from `start'
 +      and `end'.
 +      (ispell-region, ispell-process-line): Update users.
  
 -2010-08-26  Michael Albinus  <michael.albinus@gmx.de>
 +      * textmodes/reftex-parse.el (reftex-what-macro): Don't hardcode
 +      point-min==1.
  
 -      Sync with Tramp 2.1.19.
 +      * 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.
  
 -      * 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.
 +      * mail/sendmail.el: Fix commenting convention.
 +      (sendmail-send-it): Use line-beginning-position.
  
 -      * 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'.
 +      * 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-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)
 +      * 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):
 +      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-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): Use `with-progress-reporter'.
 +      (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.
  
 -      * 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'.
 +2010-05-13  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * 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.
 +      Add TeX open-block and close-block keybindings to SGML, and vice versa.
  
 -      * net/tramp-smb.el (tramp-smb-handle-copy-file):
 -      Add PRESERVE-SELINUX-CONTEXT.
 -      (tramp-smb-handle-copy-file)
 +      * 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'.
 -      (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):
 -      New defuns.
 -      (with-progress-reporter): New defmacro.
 -      (tramp-debug-outline-regexp): New defconst.
 -      (top, tramp-rfn-eshadow-setup-minibuffer)
 +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-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.
 +
 +2010-05-07  Deniz Dogan  <deniz.a.m.dogan@gmail.com>  (tiny change)
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      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.
 +
 +2010-05-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * cus-start.el (all): Add native condition for tool-bar-* symbols.
 +
 +2010-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/dns-mode.el (auto-mode-alist): Add entry for .zone files.
 +      * files.el (auto-mode-alist): Remove redundant entries.
 +
 +      * 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-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-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-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/trampver.el: Update release number.
 +      * 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'.
  
 -2010-08-26  Magnus Henoch  <magnus.henoch@gmail.com>
 +      * net/tramp-ftp.el (tramp-ftp-file-name-handler):
 +      Use `tramp-compat-delete-file'.
  
 -      * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
 -      empty argument to gvfs-copy.
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Add FORCE arg.
 +      (tramp-gvfs-handle-write-region): Use `tramp-compat-delete-file'.
  
 -2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +      * 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-compat.el (tramp-compat-delete-file): Rewrite to
 -      handle new TRASH arg of `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-08-26  Christian Lynbech  <christian.lynbech@tieto.com>  (tiny change)
 +2010-05-05  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/tramp.el (tramp-handle-insert-directory): Don't use
 -      `forward-word', its default syntax could be changed.
 +      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.
  
 -2010-08-26  Toru TSUNEYOSHI  <t_tuneyosi@hotmail.com>
 +      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.
 -
 -      * 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-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-08-26  Łukasz Stelmach  <lukasz.stelmach@iem.pw.edu.pl>  (tiny change)
 +      * bindings.el (mode-line-abbrev-mode, mode-line-auto-fill-mode):
 +      Remove unused functions.
  
 -      * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921).
 +      * emacs-lisp/lisp-mode.el (lisp-mode): Use define-derived-mode.
 +      Set find-tag-default-function as a variable rather than a property.
  
 -2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +      * 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.
  
 -      * simple.el (beginning-of-buffer, end-of-buffer): Doc fix
 -      (Bug#6907).
 +2010-04-30  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-08-23  Chris Foote <chris@foote.com.au>  (tiny change)
 +      * minibuffer.el (tags-completion-at-point-function): Fix return value.
  
 -      * progmodes/python.el (python-block-pairs): Allow use of "finally"
 -      with "else" (Bug#3991).
 +2010-04-29  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-08-22  Leo  <sdl.web@gmail.com>
 +      * ido.el (ido-init-completion-maps): Remove C-v binding.
 +      (ido-minibuffer-setup): Don't set cua-inhibit-cua-keys (Bug#5765).
  
 -      * 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  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +      * minibuffer.el (tags-completion-at-point-function): New function.
 +      (completion-at-point-functions): Use it.
  
 -      * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix (Bug#6880).
 +      * progmodes/etags.el (complete-tag): Revert last change.
  
 -2010-08-21  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +2010-04-29  Alan Mackenzie  <acm@muc.de>
  
 -      * 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.
 +      * progmodes/cc-mode.el (c-extend-region-for-CPP): Fix an
 +      off-by-one error (in end of macro position).
  
 -2010-08-21  Leo  <sdl.web@gmail.com>
 +2010-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      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.
 +      * net/browse-url.el (browse-url-firefox-program): Use iceweasel if
 +      firefox is absent.  Don't autoload.
 +      (browse-url-galeon-program): Don't autoload.
  
 -2010-08-21  Kirk Kelsey  <kirk.kelsey@0x4b.net>  (tiny change)
 -            Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * progmodes/make-mode.el (makefile-fill-paragraph): Account for the
 -      extra backslash added to each line (bug#6890).
 +      * bindings.el (complete-symbol): Move into minibuffer.el.
  
 -2010-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * 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.
  
 -      * subr.el (read-key): Don't echo keystrokes (bug#6883).
 +      * progmodes/etags.el (complete-tag): Move to minibuffer.el.
  
 -2010-08-21  Glenn Morris  <rgm@gnu.org>
 +2010-04-28  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * menu-bar.el (menu-bar-games-menu): Add landmark.
 +      * net/tramp.el (tramp-remote-selinux-p): New defun.
 +      (tramp-handle-file-selinux-context)
 +      (tramp-handle-set-file-selinux-context): Use it.
  
 -2010-08-20  Glenn Morris  <rgm@gnu.org>
 +2010-04-28  Sam Steingold  <sds@gnu.org>
  
 -      * align.el (align-regexp): Make group and spacing arguments
 -      use the interactive defaults when non-interactive.  (Bug#6698)
 +      * 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'.
  
 -      * 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-04-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * progmodes/bug-reference.el (bug-reference-url-format):
 +      Revert 2010-04-27 change due to security risk.
  
 -      * subr.el (read-key): Don't hide the menu-bar entries (bug#6881).
 +2010-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-08-18  Michael Albinus  <michael.albinus@gmx.de>
 +      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.
  
 -      * 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  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-08-18  Kenichi Handa  <handa@m17n.org>
 +      * 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).
  
 -      * files.el: Add `word-wrap' as safe local variable.
 +      * emacs-lisp/lisp.el (lisp-complete-symbol): Fail gracefully.
  
 -2010-08-18  Glenn Morris  <rgm@gnu.org>
 +2010-04-27  Sam Steingold  <sds@gnu.org>
  
 -      * woman.el (woman-translate): Case matters.  (Bug#6849)
 +      * 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.
  
 -2010-08-14  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-27  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * simple.el (kill-region): Doc fix (Bug#6787).
 +      * ido.el (ido-buffer-internal): Bind `ido-use-virtual-buffers' to nil
 +      when method is 'kill.
  
 -2010-08-14  Glenn Morris  <rgm@gnu.org>
 +2010-04-27  Agustín Martín  <agustin.martin@hispalinux.es>
  
 -      * calendar/diary-lib.el (diary-header-line-format):
 -      Fit it to the window, not the frame.
 +      * 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.
  
 -2010-08-11  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-04-27  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * subr.el (ignore-errors): Add debug declaration.
 +      * desktop.el (desktop-kill): ask-if-new: Ask if desktop file exists,
 +      but we aren't using it.
  
 -2010-08-09  Geoff Gole  <geoffgole@gmail.com>  (tiny change)
 +2010-04-25  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * whitespace.el (whitespace-color-off): Remove post-command-hook
 -      locally.
 +      * tool-bar.el (tool-bar-local-item-from-menu): Revert unintended
 +      checkin in 2010-04-23T16:26:11Z!monnier@iro.umontreal.ca.
  
 -2010-08-08  Johan Bockgård  <bojohan@gnu.org>
 +2010-04-24  Glenn Morris  <rgm@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).
 +      * 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.
  
 -      * isearch.el (isearch-lazy-highlight-forward): New var.
 -      (isearch-lazy-highlight-new-loop, isearch-lazy-highlight-search):
 -      (isearch-lazy-highlight-update): Use it.
 +      * 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-06  Kenichi Handa  <handa@m17n.org>
 +2010-04-23  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * 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.
 +      * 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.
  
 -2010-08-05  Juanma Barranquero  <lekktu@gmail.com>
 +      * progmodes/compile.el (compilation-start): Abbreviate default directory.
  
 -      * 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-04-23  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-08-04  Kenichi Handa  <handa@m17n.org>
 +      Implement SELINUX backends.
  
 -      * language/cyrillic.el: Don't add "microsoft-cp1251" to
 -      ctext-non-standard-encodings-alist here.
 +      * 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.
  
 -      * 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.
 +      * 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.
  
 -      * international/mule-conf.el (compound-text): Doc fix.
 -      (ctext-no-compositions): Doc fix.
 -      (compound-text-with-extensions): Doc fix.
 +      * 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.
  
 -2010-08-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * simple.el (exchange-dot-and-mark): Mark obsolete, finally.
 +      Synchronize with Tramp repository.
  
 -2010-08-03  Juanma Barranquero  <lekktu@gmail.com>
 +      * 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.
  
 -      * progmodes/which-func.el (which-func-format): Split help-echo text
 -      into lines, like other mode-line tooltips.
 +2010-04-22  Noah Lavine  <noah549@gmail.com>  (tiny change)
  
 -      * server.el (server-start): When using TCP sockets, force IPv4
 -      and use a literal 127.0.0.1 for localhost.  (Related to bug#6781.)
 +      Detect ssh 'ControlMaster' argument automatically in some cases.
  
 -2010-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
 +      (tramp-default-method): Use it.
  
 -      * bindings.el (complete-symbol): Run completion-at-point as a fallback.
 +2010-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-08-02  Juanma Barranquero  <lekktu@gmail.com>
 +      * net/tramp.el (tramp-handle-copy-file): Add new optional
 +      parameter `preserve-selinux-context'.
 +      (tramp-file-name-for-operation): Add `set-file-selinux-context'.
  
 -      * 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-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp.el (tramp-completion-handle-file-name-all-completions):
 +      Ensure, that non remote files are still checked.  Oops.
  
 -      * bindings.el (function-key-map): Add a S-tab => backtab fallback.
 +2010-04-21  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-08-01  Juanma Barranquero  <lekktu@gmail.com>
 +      Fix Bug#5840.
  
 -      * dabbrev.el (dabbrev-completion): Fix typo in docstring.
 +      * icomplete.el (icomplete-completions): Use `non-essential'.
  
 -2010-08-01  MON KEY  <monkey@sandpframing.com>  (tiny change)
 +      * 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.
  
 -      * emacs-lisp/syntax.el (syntax-ppss-toplevel-pos):
 -      Fix typo in docstring (bug#6747).
 +2010-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-07-30  Leo  <sdl.web@gmail.com>
 +      * emacs-lisp/lisp.el (lisp-completion-at-point): Try and handle errors.
  
 -      * eshell/esh-io.el (eshell-get-target): Better detection of
 -      read-only file (Bug#6762).
 +2010-04-21  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-07-30  Juanma Barranquero  <lekktu@gmail.com>
 +      * vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
  
 -      * align.el (align-default-spacing): Doc fix.
 -      (align-region-heuristic, align-regexp): Fix typos in docstrings.
 +      * tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
  
 -2010-07-23  Juanma Barranquero  <lekktu@gmail.com>
 +      * loadup.el: Load dynamic-setting.el if feature dynamic-setting
 +      is present.
  
 -      * help-fns.el (find-lisp-object-file-name): Doc fix (bug#6494).
 +      * info.el (info-tool-bar-map): Add labels.
  
 -2010-07-19  Juanma Barranquero  <lekktu@gmail.com>
 +      * cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
  
 -      * 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.
 +      * cus-edit.el (custom-commands): Add labels for tool bar.
 +      (custom-buffer-create-internal, Custom-mode): Adjust for
 +      labels in custom-commands.
  
 -2010-07-17  Shyam Karanatt  <shyam@swathanthran.in>  (tiny change)
 +      * dynamic-setting.el: Renamed from font-setting.el.
  
 -      * 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-04-21  John Wiegley  <jwiegley@gmail.com>
  
 -2010-07-17  Chong Yidong  <cyd@stupidchicken.com>
 +      * 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.
  
 -      * dired.el (dired-buffers-for-dir): Handle list values of
 -      dired-directory (Bug#6636).
 +2010-04-21  Juanma Barranquero  <lekktu@gmail.com>
  
 -2010-07-16  Reiner Steib  <Reiner.Steib@gmx.de>
 +      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.
  
 -      * 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-04-21  Karel Klíč  <kklic@redhat.com>
  
 -2010-07-16  Eli Zaretskii  <eliz@gnu.org>
 +      * 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.
  
 -      * mail/rmailmm.el (rmail-mime-save): Make the temp buffer
 -      unibyte, so compressed attachments are not compressed again.
 +2010-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-07-14  Jan Djärv  <jan.h.d@swipnet.se>
 +      Make the log-edit comments use RFC822 format throughout.
  
 -      * xt-mouse.el (xterm-mouse-event-read): Fix for characters > 127
 -      now that unicode is used (Bug#6594).
 +      * 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.
  
 -2010-07-14  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc-hg.el (vc-hg-log-edit-mode): Remove.
 +      (vc-hg-checkin): Remove extra arg.  Use log-edit-extract-headers.
  
 -      * simple.el (push-mark-command): Set the selection if
 -      select-active-regions is non-nil.
 +      * 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.
  
 -2010-07-10  Glenn Morris  <rgm@gnu.org>
 +      * 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.
  
 -      * 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.
 +      * 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.
  
 -2010-07-10  Chong Yidong  <cyd@stupidchicken.com>
 +      * 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.
  
 -      * simple.el (use-region-p): Doc fix (Bug#6607).
 +2010-04-20  Juanma Barranquero  <lekktu@gmail.com>
  
 -2010-07-07  Christoph Scholtes  <cschol2112@gmail.com>
 +      * subr.el (default-direction-reversed): Remove obsolescence info.
  
 -      * 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-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-07-07  Glenn Morris  <rgm@gnu.org>
 +      * vc-dispatcher.el (vc-finish-logentry): Don't mess so badly with the
 +      windows/frames.
  
 -      * play/zone.el (zone-fall-through-ws): Fix next-line ->
 -      forward-line fallout.
 +      * 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.
  
 -2010-07-06  Chong Yidong  <cyd@stupidchicken.com>
 +      * international/mule-cmds.el (view-hello-file): Don't fiddle with the
 +      default enable-multibyte-characters.
  
 -      * mouse.el (mouse-appearance-menu): Add docstring.
 +2010-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * help.el (describe-key): Print up-event using key-description.
 +      * 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-03  Michael Albinus  <michael.albinus@gmx.de>
 +      * 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*.
  
 -      * 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-04-19  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-07-03  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +      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).
  
 -      * net/zeroconf.el (zeroconf-service-remove-hook): New defun.
 +2010-04-19  Glenn Morris  <rgm@gnu.org>
  
 -2010-06-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * htmlfontify.el (htmlfontify-buffer)
 +      (htmlfontify-copy-and-link-dir): Autoload entry points.
  
 -      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.
 +2010-04-19  Magnus Henoch  <magnus.henoch@gmail.com>
  
 -2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc-hg.el (vc-hg-annotate-extract-revision-at-line): Expand file
 +      name relative to the project root (Bug#5960).
  
 -      * xml.el (xml-parse-region): Avoid infloop (Bug#5281).
 +2010-04-19  Glenn Morris  <rgm@gnu.org>
  
 -2010-06-29  Leo  <sdl.web@gmail.com>
 +      * vc-git.el (vc-git-print-log): Doc fix.
  
 -      * emacs-lisp/rx.el (rx): Doc fix.  (Bug#6537)
 +2010-04-19  Óscar Fuentes  <ofv@wanadoo.es>
  
 -2010-06-27  Oleksandr Gavenko  <gavenkoa@gmail.com>  (tiny change)
 +      * ido.el (ido-file-internal): Fix 2009-12-02 change.
  
 -      * generic-x.el (bat-generic-mode): Fix regexp for command line
 -      switches (Bug#5719).
 +2010-04-19  Christoph  <cschol2112@googlemail.com>  (tiny change)
  
 -2010-06-27  Masatake YAMATO  <yamato@redhat.com>
 +      * progmodes/grep.el (grep-compute-defaults): Fix handling of host
 +      default settings (Bug#5928).
  
 -      * htmlfontify.el (hfy-face-attr-for-class): Use append instead
 -      of nconc to avoid pure storage error (Bug#6239).
 +2010-04-19  Glenn Morris  <rgm@gnu.org>
  
 -2010-06-27  Christoph  <cschol2112@googlemail.com>  (tiny change)
 +      * progmodes/fortran.el (fortran-match-and-skip-declaration):
 +      New function.
 +      (fortran-font-lock-keywords-3): Use it.  (Bug#1385)
  
 -      * 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-04-19  Kenichi Handa  <handa@m17n.org>
  
 -2010-06-25  Eli Zaretskii  <eliz@gnu.org>
 +      * 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.
  
 -      * arc-mode.el (archive-zip-extract): Don't quote the file name on
 -      MS-Windows and MS-DOS.  (Bug#6467, Bug#6144)
 +2010-04-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-06-24  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +      * textmodes/tex-mode.el (latex-mode): Revert 2008-03-03 change to
 +      paragraph-separate (Bug#5821).
  
 -      * comint.el (make-comint, make-comint-in-buffer): Mention return
 -      value in the docstrings.  (Bug#6498)
 +2010-04-19  Juri Linkov  <juri@jurta.org>
  
 -2010-06-24  Yoni Rabkin  <yoni@rabkins.net>
 +      Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
  
 -      * bs.el (bs-mode-font-lock-keywords): Remove "by" from Dired pattern,
 -      since it is not present when using some non-default switches.
 +      * 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'.
  
 -2010-06-23  Karl Fogel  <kfogel@red-bean.com>
 +2010-04-19  Chong Yidong  <cyd@stupidchicken.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'.
 +      * help.el (help-window-setup-finish): Doc fix (Bug#5830).
 +      Reported by monkey@sandpframing.com.
  
 -2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      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.
 +      * 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.
  
 -2010-06-22  Glenn Morris  <rgm@gnu.org>
 +      * custom.el (defcustom): Add edebug spec.
  
 -      * progmodes/js.el (js-mode-map): Use standard capitalization and
 -      ellipses for menu entries.
 +2010-04-18  Juri Linkov  <juri@jurta.org>
  
 -      * wid-edit.el (widget-complete): Doc fix.
 +      Test for special mode-class in view-buffer instead of view-file (bug#5513).
  
 -2010-06-22  Jürgen Hötzel  <juergen@hoetzel.info>  (tiny change)
 +      * view.el (view-file, view-buffer): Move test for special mode-class
 +      from view-file to view-buffer.
  
 -      * wid-edit.el (widget-complete): Fix typo in 2009-12-02 change.
 +      * tar-mode.el (tar-extract): Turn if's into one cond
 +      like in arc-mode.el.
  
 -2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-18  Juri Linkov  <juri@jurta.org>
  
 -      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)
 +      Add 7z archive format support (bug#5475).
  
 -      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)
 +      * 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-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * international/mule.el (auto-coding-alist):
 +      * files.el (auto-mode-alist): Add 7z file extension.
  
 -      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)
 +2010-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * loadup.el: Setup hash-cons for pure data.
  
 -      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)
 +      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.
  
 -2010-06-20  Alan Mackenzie  <acm@muc.de>
 +      * cvs-status.el (cvs-refontify): Remove unused.
  
 -      * progmodes/cc-mode.el (c-before-hack-hook): When the mode is set
 -      in file local variables, set it first.
 +2010-04-18  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -2010-06-19  Glenn Morris  <rgm@gnu.org>
 +      * calc/calc.el (calc-mode-map): Bind "O" to `calc-missing-key'.
  
 -      * descr-text.el (describe-char-unicode-data): Insert separating
 -      space when needed.  (Bug#6422)
 +      * calc/calc-bin.el (calc-radix): Have the "O" option turn on
 +      twos-complement mode.
  
 -      * progmodes/idlwave.el (idlwave-action-and-binding):
 -      Fix typo in 2009-12-03 change.  (Bug#6450)
 +2010-04-17  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -2010-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * 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.
  
 -      * subr.el (read-quoted-char): Fix up last change (bug#6290).
 +      * calc/calc-help.el (calc-full-help): Add `calc-option-help'.
 +      (calc-option-prefix-help): New function.
  
 -2010-06-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * calc/calc-misc.el (calc-help): Add "Option" entry.
  
 -      * 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.
 +      * 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.
  
 -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.
 +      Move scrolling commands from simple.el to window.el
 +      because their primitives are implemented in window.c.
  
 -2010-06-15  Glenn Morris  <rgm@gnu.org>
 +      * 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.
  
 -      * 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-04-16  Juri Linkov  <juri@jurta.org>
  
 -2010-06-15  Ivan Kanis  <apple@kanis.eu>
 +      * isearch.el (isearch-lookup-scroll-key): Check both
 +      `isearch-scroll' and `scroll-command' properties.
 +      (scroll-up, scroll-down): Remove `isearch-scroll' property.
  
 -      * 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)
 +      * mwheel.el (mwheel-scroll): Remove `isearch-scroll' property.
  
 -2010-06-12  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
 +      * simple.el (scroll-up-command, scroll-down-command)
 +      (scroll-up-line, scroll-down-line): Remove `isearch-scroll' property.
  
 -      * vc-svn.el (vc-svn-after-dir-status): Fix regexp for Subversions
 -      older than version 1.6.  (Bug#6361)
 +2010-04-15  Juri Linkov  <juri@jurta.org>
  
 -2010-06-12  Helmut Eller  <eller.helmut@gmail.com>
 +      * 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'.
  
 -      * emacs-lisp/cl-macs.el (destructuring-bind): Bind `bind-enquote',
 -      used by cl-do-arglist.  (Bug#6408)
 +      * mwheel.el (mwheel-scroll): Put `scroll-command' and
 +      `isearch-scroll' properties on the `mwheel-scroll' symbol.
 +      Remove it from `scroll-preserve-screen-position-commands'.
  
 -2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * isearch.el (isearch-allow-scroll): Doc fix.
  
 -      * emacs-lisp/advice.el (ad-compile-function):
 -      Define warning-suppress-types before we let-bind it (bug#6275).
 +2010-04-15  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * 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.
 +      * 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-07  Jonathan Rockway  <jon@jrock.us>
 +2010-04-15  Glenn Morris  <rgm@gnu.org>
  
 -      * 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.
 +      * progmodes/verilog-mode.el (verilog-forward-sexp): Avoid free variable.
  
 -2010-06-05  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-15  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.
 +      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.
  
 -2010-06-04  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-14  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * term/common-win.el (x-colors): Add "dark green" and "dark
 -      turquoise" (Bug#6332).
 +      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'.
  
 -2010-06-03  Glenn Morris  <rgm@gnu.org>
 +2010-04-14  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * desktop.el (desktop-clear-preserve-buffers):
 -      Add "*Warnings*" buffer.  (Bug#6336)
 +      * simple.el (non-essential): New var.
  
 -2010-06-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +      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.
  
 -      * 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>
 +      * simple.el (scroll-error-top-bottom): New defcustom.
 +      (scroll-up-command, scroll-down-command): Use it.  Doc fix.
  
 -      * vc-bzr.el (vc-bzr-revision-completion-table): Apply
 -      `file-directory-p' to the filename part rather than to the whole text.
 +      * emulation/pc-select.el (pc-select-override-scroll-error):
 +      Obsolete in favor of `scroll-error-top-bottom'.
  
 -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).
 +      * tutorial.el (tutorial--default-keys): Rebind `C-v' to
 +      `scroll-up-command' and `M-v' to `scroll-down-command'.
  
 -2010-05-31  Drew Adams  <drew.adams@oracle.com>
 +      * 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.
  
 -      * files.el (directory-files-no-dot-files-regexp): Doc fix (bug#6298).
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -2010-05-31  Juanma Barranquero  <lekktu@gmail.com>
 +      * mwheel.el (scroll-preserve-screen-position-commands):
 +      Add mwheel-scroll to this list of commands.
  
 -      * subr.el (momentary-string-display): Just use read-event to read
 -      the exit event (Bug#6238).
 +      * 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.
  
 -2010-05-29  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * 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.
 +      * obsolete/complete.el: Move from lisp/complete.el.
  
 -2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +      * pcomplete.el (pcomplete-here*): Fix mistaken change (bug#5935).
  
 -      * progmodes/verilog-mode.el (verilog-type-font-keywords):
 -      Use font-lock-constant-face, not obsolete font-lock-reference-face.
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Passing a nil argument
 +      to the minor mode function now turns the mode ON unconditionally.
  
 -2010-05-27  Masatake YAMATO  <yamato@redhat.com>
 +2010-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * htmlfontify.el (hfy-face-resolve-face): New function.
 -      (hfy-face-to-style): Use it (Bug#6279).
 +      * vc-dir.el (vc-dir-kill-line): New command.
 +      (vc-dir-mode-map): Bind it to C-k.
  
 -2010-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * bookmark.el (bookmark-insert-location): Handle a nil filename.
  
 -      * epa.el (epa--select-keys): Don't explicitly delete the window since
 -      that can fail (e.g. sole window in frame).  Use dedication instead.
 +      * 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.
  
 -2010-05-19  Uday S Reddy  <u.s.reddy@cs.bham.ac.uk>  (tiny change)
 +      * 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.
  
 -      * textmodes/fill.el (fill-region): Don't fill past the end (bug#6201).
 +      * bookmark.el (bookmark-default-file): Use locate-user-emacs-file.
  
 -2010-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-12  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
  
 -      * subr.el (read-quoted-char): Resolve modifiers after key
 -      remapping (bug#6212).
 +      * woman.el (woman-bookmark-make-record, woman-bookmark-jump):
 +      New functions.
 +      (woman-mode): Setup bookmark support.
  
 -2010-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * man.el (man-set-default-bookmark-title, man-bookmark-make-record)
 +      (man-bookmark-jump): New functions.
 +      (Man-mode): Setup bookmark support.
  
 -      * tmm.el (tmm-prompt): Don't try to precompute bindings.
 -      (tmm-get-keymap): Compute shortcuts (bug#6171).
 +2010-04-10  Jari Aalto  <jari.aalto@cante.net>
  
 -2010-05-10  Glenn Morris  <rgm@gnu.org>
 +      * comint.el (comint-password-prompt-regexp): Use regexp-opt, and
 +      recognize ssh-keygen prompt (Bug#2817).
  
 -      * desktop.el (desktop-save-buffer-p): Don't mistakenly include
 -      all dired buffers, even tramp ones.  (Bug#5755)  [Backport from trunk]
 +2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +      * net/tramp.el (tramp-do-copy-or-rename-file): Add progress reporter.
  
 -      * Version 23.2 released.
 +2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-05-03  Chong Yidong  <cyd@stupidchicken.com>
 +      Synchronize with Tramp repository.
  
 -      * international/mule.el (auto-coding-alist): Only purecopy
 -      car of each item, not the whole list (Bug#6083).
 +      * 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.
 +
 +      * 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.
  
 -2010-05-02  Chong Yidong  <cyd@stupidchicken.com>
 +      * net/tramp-fish.el (tramp-fish-handle-directory-files-and-attributes):
 +      Do not use `tramp-fish-handle-file-attributes.
  
 -      * progmodes/js.el (js-mode): Make paragraph variables local before
 -      calling c-setup-paragraph-variables (Bug#6071).
 +      * net/trampver.el: Update release number.
  
 -2010-05-01  Eli Zaretskii  <eliz@gnu.org>
 +2010-04-10  Glenn Morris  <rgm@gnu.org>
  
 -      * composite.el (compose-region, reference-point-alist): Fix typos
 -      in the doc strings.
 +      * progmodes/compile.el (compilation-save-buffers-predicate):
 +      Add missing :version tag.
  
 -2010-04-28  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +2010-04-09  Sam Steingold  <sds@gnu.org>
  
 -      * calc/calc-graph.el (calc-graph-plot): Use the proper form for
 -      gnuplot's "set" command.
 +      * progmodes/compile.el (compilation-save-buffers-predicate):
 +      Remove the "autoload" cookie.
  
 -2010-04-26  Juanma Barranquero  <lekktu@gmail.com>
 +      * 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.
  
 -      * abbrev.el (last-abbrev-text): Doc fix.
 -      (abbrev-prefix-mark): Don't escape parenthesis.
 +2010-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-04-24  Andreas Schwab  <schwab@linux-m68k.org>
 +      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.
  
 -      * composite.el (find-composition): Doc fix.
 +2010-04-09  Eric Raymond  <esr@snark.thyrsus.com>
  
 -2010-04-24  Juanma Barranquero  <lekktu@gmail.com>
 +      * vc-hooks.el, vc-git.el: Improve documentation comments.
  
 -      * 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-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-04-23  Juri Linkov  <juri@jurta.org>
 +      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).
  
 -      * info.el (Info-fontify-node): Put Info-breadcrumbs to the `display'
 -      property instead of `invisible' and `after-string' (bug#5998).
 +2010-04-07  Sam Steingold  <sds@gnu.org>
  
 -2010-04-23  Juri Linkov  <juri@jurta.org>
 +      * progmodes/compile.el (compilation-save-buffers-predicate):
 +      New custom variable.
 +      (compile, recompile): Pass it to `save-some-buffers'.
  
 -      * image-mode.el (image-mode-as-text): Fix typo in docstring.
 +2010-04-07  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-04-23  Juanma Barranquero  <lekktu@gmail.com>
 +      * wid-edit.el (widget-choose): Move cursor to the second line of
 +      the buffer (Bug#5695).
  
 -      * filecache.el (file-cache-add-directory-list)
 -      (file-cache-add-directory-recursively): Fix typos in docstrings.
 +2010-04-07  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-04-22  Kenichi Handa  <handa@m17n.org>
 +      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.
  
 -      * language/indian.el (gurmukhi-composable-pattern): Fix typo.
 -      (gujarati-composable-pattern): Fix typo.
 +      * vc-hooks.el (vc-menu-map): Bind vc-log-incoming and vc-log-outgoing.
  
 -2010-04-20  Kenichi Handa  <handa@m17n.org>
 +      * 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.
  
 -      * language/indian.el (oriya-composable-pattern)
 -      (tamil-composable-pattern, malayalam-composable-pattern):
 -      Add two-part vowels to "v" (vowel sign).
 +      * 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.
  
 -2010-04-20  Chong Yidong  <cyd@stupidchicken.com>
 +      * 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.
  
 -      * files.el (copy-directory): Handle symlinks (Bug#5982).
 +2010-04-07  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * progmodes/compile.el (compilation-next-error-function):
 -      Revert 2009-10-12 change (Bug#5983).
 +      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-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-07  Michael McNamara  <mac@mail.brushroad.com>
  
 -      * vc-hg.el (vc-hg-state): Use HGRCPATH, not HGRC.
 -      (vc-hg-working-revision): Likewise.  Use hg parents, not hg parent
 -      (Bug#5846).
 +      * 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-20  Glenn Morris  <rgm@gnu.org>
 +2010-04-07  Wilson Snyder  <wsnyder@wsnyder.org>
  
 -      * emacs-lisp/lisp.el (lisp-completion-at-point): Give it a doc string.
 +      * 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.".
  
 -      * minibuffer.el (completion-at-point): Doc fix.
 +2010-04-06  John Wiegley  <jwiegley@gmail.com>
  
 -2010-04-17  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * 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.
  
 -      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-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-17  Glenn Morris  <rgm@gnu.org>
 +2010-04-06  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * htmlfontify.el (htmlfontify-buffer)
 -      (htmlfontify-copy-and-link-dir): Autoload entry points.
 +      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.
  
 -2010-04-17  Magnus Henoch  <magnus.henoch@gmail.com>
 +2010-04-05  Juri Linkov  <juri@jurta.org>
  
 -      * vc-hg.el (vc-hg-annotate-extract-revision-at-line): Expand file
 -      name relative to the project root (Bug#5960).
 +      Scrolling commands which scroll a line instead of full screen.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01452.html
  
 -2010-04-16  Glenn Morris  <rgm@gnu.org>
 +      * simple.el (scroll-up-line, scroll-down-line): New commands.
 +      Put property isearch-scroll=t on them.
  
 -      * vc-git.el (vc-git-print-log): Doc fix.
 +      * emulation/ws-mode.el (scroll-down-line, scroll-up-line):
 +      Remove commands.
  
 -2010-04-14  Óscar Fuentes  <ofv@wanadoo.es>
 +2010-04-05  Juri Linkov  <juri@jurta.org>
  
 -      * ido.el (ido-file-internal): Fix 2009-12-02 change.
 +      Scrolling commands which do not signal errors at top/bottom.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01452.html
  
 -2010-04-14  Christoph  <cschol2112@googlemail.com>  (tiny change)
 +      * simple.el (scroll-up-command, scroll-down-command): New commands.
 +      Put property isearch-scroll=t on them.
  
 -      * progmodes/grep.el (grep-compute-defaults): Fix handling of host
 -      default settings (Bug#5928).
 +      * bindings.el (global-map): Rebind [prior] from `scroll-down' to
 +      `scroll-down-command' and [next] from `scroll-up' to
 +      `scroll-up-command'.
  
 -2010-04-10  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'.
  
 -      * progmodes/fortran.el (fortran-match-and-skip-declaration):
 -      New function.
 -      (fortran-font-lock-keywords-3): Use it.  (Bug#1385)
 +2010-04-05  Juanma Barranquero  <lekktu@gmail.com>
  
 -2010-04-07  Kenichi Handa  <handa@m17n.org>
 +      * help.el (describe-mode): Return nil.
  
 -      * 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-04-04  John Wiegley  <jwiegley@gmail.com>
  
 -2010-04-06  Chong Yidong  <cyd@stupidchicken.com>
 +      * 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.
  
 -      * textmodes/tex-mode.el (latex-mode): Revert 2008-03-03 change to
 -      paragraph-separate (Bug#5821).
 +2010-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-04-05  Juri Linkov  <juri@jurta.org>
 +      * font-lock.el: Require CL when compiling.
 +      (font-lock-turn-on-thing-lock): Use `case'.
  
 -      Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
 +2010-04-03  Eli Zaretskii  <eliz@gnu.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'.
 +      * emacs-lisp/authors.el (authors-fixed-entries): Add entry for Eli
 +      Zaretskii.
  
 -2010-04-03  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-02  Juri Linkov  <juri@jurta.org>
  
 -      * help.el (help-window-setup-finish): Doc fix (Bug#5830).
 -      Reported by monkey@sandpframing.com.
 +      * 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-02  Sam Steingold  <sds@gnu.org>
 +
 +      * vc-hg.el (vc-hg-push, vc-hg-pull): Use `apply' when calling
 +      `vc-hg-command' with a list of flags.
 +
 +      * 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.
 +
 +2010-04-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * tmm.el (tmm-get-keymap): Check with symbolp before passing
 +      value to fboundp, it may not be a symbol.
 +
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-03-30  Tomas Abrahamsson  <tab@lysator.liu.se>
 +      * cus-edit.el (custom-buffer-sort-alphabetically): Update :version.
 +
 +2010-03-31  Juri Linkov  <juri@jurta.org>
 +
 +      * 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
 +
 +2010-03-31  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
 +
 +2010-03-31  Juri Linkov  <juri@jurta.org>
 +
 +      * image.el (image-animated-p): Use `image-metadata' instead of
 +      `image-extension-data'.  Get GIF extenstion data from metadata
 +      property `extension-data'.
 +
 +2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (append-to-buffer): Simplify.
 +
 +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/).
@@@ -18151,7 -11619,7 +18183,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/cedet/ChangeLog
@@@ -1,3 -1,17 +1,17 @@@
 -2010-10-29  Glenn Morris  <rgm@gnu.org>
++2010-10-31  Glenn Morris  <rgm@gnu.org>
+       * mode-local.el (mode-local-augment-function-help):
+       * semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons):
+       * semantic/symref/list.el (semantic-symref-results-dump)
+       (semantic-symref-rb-toggle-expand-tag): Replace inappropriate uses
+       of toggle-read-only.
 -2010-10-12  Juanma Barranquero  <lekktu@gmail.com>
++2010-10-31  Juanma Barranquero  <lekktu@gmail.com>
+       * semantic/symref/list.el (semantic-symref-list-rename-open-hits):
+       Fix typo in message.
+       (semantic-symref-list-map-open-hits): Fix typo in docstring.
  2010-09-30  Chong Yidong  <cyd@stupidchicken.com>
  
        * semantic/bovine/el.el:
@@@ -11,8 -25,8 +25,8 @@@
        * semantic/db-typecache.el (semanticdb-typecache-find-default):
        * semantic/imenu.el (semantic-create-imenu-index):
        * semantic/grammar.el (semantic--grammar-macro-function-tag):
 -      * semantic/fw.el (semanticdb-without-unloaded-file-searches):
 -      Fix require.  Suggested by David Engster.
 +      * semantic/fw.el (semanticdb-without-unloaded-file-searches): Fix
 +      require.  Suggested by David Engster.
  
        * semantic/bovine/c-by.el: Regenerate.
  
        * ede/simple.el (ede-project-class-files):
        * ede/cpp-root.el (ede-project-class-files): Fix require name.
  
 +2010-09-25  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * semantic/lex.el (semantic-ignore-comments): Doc fix.
 +
 +      * semantic/symref/list.el (semantic-symref-list-rename-open-hits):
 +      Fix typo in error message.
 +      (semantic-symref-list-map-open-hits): Fix typo in docstring.
 +
  2010-09-21  Eric Ludlam  <zappo@gnu.org>
  
        Synch SRecode to CEDET 1.0.
        * ede/cpp-root.el (ede-set-project-variables): Fix feature name
        (bug#6231).
  
 -2010-04-18  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use a mode-line spec rather than a static string in Semantic.
 +      * semantic/util-modes.el:
 +      (semantic-minor-modes-format): New var to replace...
 +      (semantic-minor-modes-status): Remove.
 +      (semantic-mode-line-update): Construct a mode-line spec rather than
 +      a static string so that mouse buttons can be used on individual minor
 +      modes and so that semantic-mode-line-update only needs to be called
 +      when global settings are changed.
 +      (semantic-add-minor-mode, semantic-toggle-minor-mode-globally):
 +      Call semantic-mode-line-update.
 +      (semantic-toggle-minor-mode-globally): Don't assume mode is on
 +      minor-mode-alist, check semantic-minor-mode-alist as well.
 +      (semantic-stickyfunc-mode, semantic-show-parser-state-auto-marker)
 +      (semantic-show-parser-state-marker, semantic-show-parser-state-mode)
 +      (semantic-show-unmatched-syntax-mode, semantic-highlight-edits-mode):
 +      * semantic/mru-bookmark.el (semantic-mru-bookmark-mode):
 +      * semantic/idle.el (semantic-idle-scheduler-mode)
 +      (define-semantic-idle-service, semantic-idle-summary-mode):
 +      * semantic/decorate/mode.el (semantic-decoration-mode):
 +      Don't call semantic-mode-line-update any more.
 +
 +2010-05-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use define-minor-mode in CEDET where applicable.
 +
 +      * srecode/mode.el (srecode-minor-mode,global-srecode-minor-mode):
 +      Use define-minor-mode.
 +
 +      * semantic/util-modes.el (semantic-add-minor-mode):
 +      Remove unused arg `keymap' and code redundant with define-minor-mode.
 +      (semantic-toggle-minor-mode-globally): Only handle arg -1 and 1.
 +      (semantic-stickyfunc-mode, global-semantic-show-unmatched-syntax-mode)
 +      (semantic-highlight-func-mode, global-semantic-show-parser-state-mode)
 +      (global-semantic-highlight-edits-mode, semantic-highlight-edits-mode)
 +      (semantic-show-unmatched-syntax-mode, semantic-show-parser-state-mode)
 +      (global-semantic-stickyfunc-mode, global-semantic-highlight-func-mode):
 +      Use define-minor-mode.
 +      (semantic-stickyfunc-mode-setup, semantic-highlight-edits-mode-setup)
 +      (semantic-show-unmatched-syntax-mode-setup)
 +      (semantic-show-parser-state-mode-setup)
 +      (semantic-highlight-func-mode-setup): Inline into sole caller.
 +
 +      * semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode)
 +      (semantic-mru-bookmark-mode): Use define-minor-mode.
 +      (semantic-mru-bookmark-mode-setup): Inline into sole caller.
 +
 +      * semantic/idle.el (define-semantic-idle-service):
 +      Use define-minor-mode and inline setup function into its sole caller.
 +      (semantic-idle-scheduler-mode-setup)
 +      (semantic-idle-summary-mode-setup): Inline into sole caller.
 +      (global-semantic-idle-scheduler-mode, semantic-idle-scheduler-mode):
 +      Use define-minor-mode.
 +
 +      * semantic/decorate/mode.el (global-semantic-decoration-mode)
 +      (semantic-decoration-mode): Use define-minor-mode.
 +      (semantic-decoration-mode-setup): Inline into sole caller.
 +
 +      * ede/dired.el (ede-dired-minor-mode): Initialize in declaration.
 +      (ede-dired-minor-mode): Use define-minor-mode and derived-mode-p.
 +      (ede-dired-add-to-target): Use dolist.
 +
 +2010-04-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * semantic.el (semantic-completion-at-point-function):
 +      New function.
 +      (semantic-mode): Use semantic-completion-at-point-function for
 +      completion-at-point-functions instead.
 +
 +2010-04-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * semantic.el (semantic-mode): When enabled, add
 +      semantic-ia-complete-symbol to completion-at-point-functions.
 +
 +      * semantic/ia.el (semantic-ia-complete-symbol): Return nil
 +      if Semantic is not active.
 +
 +2010-04-19  Chong Yidong  <cyd@stupidchicken.com>
  
        * ede/pmake.el (ede-proj-makefile-insert-variables):
        Don't destroy list before using it.
  
        * srecode/table.el (srecode-template-table): Fix docstring typo.
  
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * semantic/bovine/c.el (semantic-c-describe-environment):
 +      Consistently check ede-object is bound throughout.
 +
 +      * ede/project-am.el (ede-shell-run-something): Declare.
 +
  2010-03-13  Eric M. Ludlam  <zappo@gnu.org>
  
        * semantic/imenu.el: New file, from the CEDET repository
        * ede/make.el (ede-make-check-version): Use
        with-current-buffer instead of save-excursion.
  
 +2010-02-24  Eduard Wiebe  <usenet@pusto.de>
 +
 +      * semantic/wisent/javascript.el (wisent-javascript-jv-expand-tag):
 +      Avoid c(ad)ddr and use c(ad)r of cddr (Bug#5640).
 +
  2010-02-16  Chong Yidong  <cyd@stupidchicken.com>
  
        * data-debug.el (data-debug): Move to extensions group.
        * semantic/tag.el (semantic--tag-link-list-to-buffer):
        Use mapc rather than mapcar because the return value is never used.
  
 -      * srecode/template.el, cedet/semantic/wisent/javascript.el:
 -      * semantic/wisent/java-tags.el, cedet/semantic/texi.el:
 +      * srecode/template.el, semantic/wisent/javascript.el:
 +      * semantic/wisent/java-tags.el, semantic/texi.el:
        * semantic/html.el:
        Suppress harmless warnings about setting up semantic-imenu (not
        part of Emacs) variables.
        * semantic/idle.el (semantic-idle-tag-highlight):
        Use semantic-idle-summary-highlight-face as the highlighting.
  
 -      * emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer
 -      contains multibyte characters, choose first applicable coding
 -      system automatically.
 -
        * ede/project-am.el (project-run-target): New method.
        (project-run-target): New method.
  
  
        * srecode/expandproto.el: Fix provide statement.
  
 -2009-09-30  Eric Ludlam  <zappo@gnu.org>
 -
 -      * emacs-lisp/eieio.el (boolean-p): Delete.
 -
  2009-09-30  Sascha Wilde  <wilde@sha-bang.de>
  
        * ede/srecode.el: Fix provide statement.
  
  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.
 -
        * cedet-cscope.el:
        * cedet-files.el:
        * cedet-global.el:
diff --combined lisp/menu-bar.el
@@@ -6,7 -6,6 +6,7 @@@
  ;; Author: RMS
  ;; Maintainer: FSF
  ;; Keywords: internal, mouse
 +;; Package: emacs
  
  ;; This file is part of GNU Emacs.
  
      (define-key global-map [menu-bar] (make-sparse-keymap "menu-bar")))
  (defvar menu-bar-help-menu (make-sparse-keymap "Help"))
  
 -;; Force Help item to come last, after the major mode's own items.
 -;; The symbol used to be called `help', but that gets confused with the
 -;; help key.
 -(setq menu-bar-final-items '(help-menu))
 +(if (not (featurep 'ns))
 +    ;; Force Help item to come last, after the major mode's own items.
 +    ;; The symbol used to be called `help', but that gets confused with the
 +    ;; help key.
 +    (setq menu-bar-final-items '(help-menu))
 +  (if (eq system-type 'darwin)
 +      (setq menu-bar-final-items '(buffer services help-menu))
 +    (setq menu-bar-final-items '(buffer services hide-app quit))
 +    ;; Add standard top-level items to GNUstep menu.
 +    (define-key global-map [menu-bar quit]
 +      `(menu-item ,(purecopy "Quit") save-buffers-kill-emacs
 +                  :help ,(purecopy "Save unsaved buffers, then exit")))
 +    (define-key global-map [menu-bar hide-app]
 +      `(menu-item ,(purecopy "Hide") ns-do-hide-emacs
 +                  :help ,(purecopy "Hide Emacs"))))
 +  (define-key global-map [menu-bar services] ; set-up in ns-win
 +    (cons (purecopy "Services") (make-sparse-keymap "Services"))))
 +
 +;; If running under GNUstep, "Help" is moved and renamed "Info" (see below).
 +(or (and (featurep 'ns)
 +         (not (eq system-type 'darwin)))
 +    (define-key global-map [menu-bar help-menu]
 +      (cons (purecopy "Help") menu-bar-help-menu)))
  
 -(define-key global-map [menu-bar help-menu] (cons (purecopy "Help") menu-bar-help-menu))
  (defvar menu-bar-tools-menu (make-sparse-keymap "Tools"))
 -(define-key global-map [menu-bar tools] (cons (purecopy "Tools") menu-bar-tools-menu))
 +(define-key global-map [menu-bar tools]
 +  (cons (purecopy "Tools") menu-bar-tools-menu))
  ;; This definition is just to show what this looks like.
  ;; It gets modified in place when menu-bar-update-buffers is called.
  (defvar global-buffers-menu-map (make-sparse-keymap "Buffers"))
  (define-key global-map [menu-bar options]
    (cons (purecopy "Options") menu-bar-options-menu))
  (defvar menu-bar-edit-menu (make-sparse-keymap "Edit"))
 -(define-key global-map [menu-bar edit] (cons (purecopy "Edit") menu-bar-edit-menu))
 +(define-key global-map [menu-bar edit]
 +  (cons (purecopy "Edit") menu-bar-edit-menu))
  (defvar menu-bar-file-menu (make-sparse-keymap "File"))
 -(define-key global-map [menu-bar file] (cons (purecopy "File") menu-bar-file-menu))
 +(define-key global-map [menu-bar file]
 +  (cons (purecopy "File") menu-bar-file-menu))
 +
 +;; Put "Help" menu at the front, called "Info".
 +(and (featurep 'ns)
 +     (not (eq system-type 'darwin))
 +     (define-key global-map [menu-bar help-menu]
 +       (cons (purecopy "Info") menu-bar-help-menu)))
  
- ;; This alias is for compatibility with 19.28 and before.
- (defvar menu-bar-files-menu menu-bar-file-menu)
+ ;; Only declared obsolete (and only made a proper alias) in 23.3.
+ (define-obsolete-variable-alias 'menu-bar-files-menu 'menu-bar-file-menu "22.1")
  
  ;; This is referenced by some code below; it is defined in uniquify.el
  (defvar uniquify-buffer-name-style)
  (define-key menu-bar-edit-menu [props]
    `(menu-item ,(purecopy "Text Properties") facemenu-menu))
  
 +;; ns-win.el said: Add spell for platorm consistency.
 +(if (featurep 'ns)
 +    (define-key menu-bar-edit-menu [spell]
 +      `(menu-item ,(purecopy "Spell") ispell-menu-map)))
 +
  (define-key menu-bar-edit-menu [fill]
    `(menu-item ,(purecopy "Fill") fill-region
              :enable (and mark-active (not buffer-read-only))
              ,(purecopy "Delete the text in region between mark and current position")))
  (defvar yank-menu (cons (purecopy "Select Yank") nil))
  (fset 'yank-menu (cons 'keymap yank-menu))
 -(define-key menu-bar-edit-menu [paste-from-menu]
 -  `(menu-item ,(purecopy "Paste from Kill Menu") yank-menu
 +(define-key menu-bar-edit-menu (if (featurep 'ns) [select-paste]
 +                                 [paste-from-menu])
 +  ;; ns-win.el said: Change text to be more consistent with
 +  ;; surrounding menu items `paste', etc."
 +  `(menu-item ,(purecopy (if (featurep 'ns) "Select and Paste"
 +                           "Paste from Kill Menu")) yank-menu
              :enable (and (cdr yank-menu) (not buffer-read-only))
              :help ,(purecopy "Choose a string from the kill ring and paste it")))
  (define-key menu-bar-edit-menu [paste]
    `(menu-item ,(purecopy "Paste") yank
              :enable (and (or
 -                          ;; Emacs compiled --without-x doesn't have
 -                          ;; x-selection-exists-p.
 +                          ;; Emacs compiled --without-x (or --with-ns)
 +                          ;; doesn't have x-selection-exists-p.
                            (and (fboundp 'x-selection-exists-p)
 -                               (x-selection-exists-p))
 -                          kill-ring)
 +                               (x-selection-exists-p 'CLIPBOARD))
 +                          (if (featurep 'ns) ; like paste-from-menu
 +                              (cdr yank-menu)
 +                            kill-ring))
                           (not buffer-read-only))
              :help ,(purecopy "Paste (yank) text most recently cut/copied")))
  (define-key menu-bar-edit-menu [copy]
 -  `(menu-item ,(purecopy "Copy") menu-bar-kill-ring-save
 -            :enable mark-active
 -            :help ,(purecopy "Copy text in region between mark and current position")
 -            :keys ,(purecopy "\\[kill-ring-save]")))
 +  ;; ns-win.el said: Substitute a Copy function that works better
 +  ;; under X (for GNUstep).
 +  `(menu-item ,(purecopy "Copy") ,(if (featurep 'ns)
 +                                      'ns-copy-including-secondary
 +                                    'menu-bar-kill-ring-save)
 +              :enable mark-active
 +              :help ,(purecopy "Copy text in region between mark and current position")
 +              :keys ,(purecopy (if (featurep 'ns)
 +                                   "\\[ns-copy-including-secondary]"
 +                                 "\\[kill-ring-save]"))))
  (define-key menu-bar-edit-menu [cut]
    `(menu-item ,(purecopy "Cut") kill-region
              :enable (and mark-active (not buffer-read-only))
              :help
              ,(purecopy "Cut (kill) text in region between mark and current position")))
 +;; ns-win.el said: Separate undo from cut/paste section.
 +(if (featurep 'ns)
 +    (define-key menu-bar-edit-menu [separator-undo] `(,(purecopy "--"))))
  (define-key menu-bar-edit-menu [undo]
    `(menu-item ,(purecopy "Undo") undo
              :enable (and (not buffer-read-only)
                             (consp buffer-undo-list)))
              :help ,(purecopy "Undo last operation")))
  
 -
  (defun menu-bar-kill-ring-save (beg end)
    (interactive "r")
    (if (mouse-region-match)
    "Make CUT, PASTE and COPY (keys and menu bar items) use the clipboard.
  Do the same for the keys of the same name."
    (interactive)
 -  ;; We can't use constant list structure here because it becomes pure,
 -  ;; and because it gets modified with cache data.
 -  (define-key menu-bar-edit-menu [paste]
 -    (cons "Paste" (cons "Paste text from clipboard" 'clipboard-yank)))
 -  (define-key menu-bar-edit-menu [copy]
 -    (cons "Copy" (cons "Copy text in region to the clipboard"
 -                     'clipboard-kill-ring-save)))
 -  (define-key menu-bar-edit-menu [cut]
 -    (cons "Cut" (cons "Delete text in region and copy it to the clipboard"
 -                    'clipboard-kill-region)))
 -
    ;; These are Sun server keysyms for the Cut, Copy and Paste keys
    ;; (also for XFree86 on Sun keyboard):
    (define-key global-map [f20] 'clipboard-kill-region)
@@@ -737,7 -701,7 +737,7 @@@ by \"Save Options\" in Custom buffers."
                   ;; Nonetheless, not saving it would like be confuse
                   ;; more often.
                   ;; -- Per Abrahamsen <abraham@dina.kvl.dk> 2002-02-11.
 -                 text-mode-hook))
 +                 text-mode-hook tool-bar-position))
        (and (get elt 'customized-value)
           (customize-mark-to-save elt)
           (setq need-save t)))
      (when need-save
        (custom-save-all))))
  
 +(define-key menu-bar-options-menu [package]
 +  '(menu-item "Manage Emacs Packages" package-list-packages
 +            :help "Install or uninstall additional Emacs packages"))
 +
  (define-key menu-bar-options-menu [save]
    `(menu-item ,(purecopy "Save Options") menu-bar-options-save
              :help ,(purecopy "Save options set from the menu above")))
@@@ -1025,93 -985,11 +1025,93 @@@ mail status in mode line")
              :help ,(purecopy "Turn menu-bar on/off")
              :button (:toggle . (> (frame-parameter nil 'menu-bar-lines) 0))))
  
 -(define-key menu-bar-showhide-menu [showhide-tool-bar]
 -  `(menu-item ,(purecopy "Tool-bar") toggle-tool-bar-mode-from-frame
 -            :help ,(purecopy "Turn tool-bar on/off")
 -            :visible (display-graphic-p)
 -            :button (:toggle . (> (frame-parameter nil 'tool-bar-lines) 0))))
 +(defun menu-bar-set-tool-bar-position (position)
 +  (customize-set-variable 'tool-bar-mode t)
 +  (customize-set-variable 'tool-bar-position position))
 +(defun menu-bar-showhide-tool-bar-menu-customize-disable ()
 +  "Do not display tool bars."
 +  (interactive)
 +  (customize-set-variable 'tool-bar-mode nil))
 +(defun menu-bar-showhide-tool-bar-menu-customize-enable-left ()
 +  "Display tool bars on the left side."
 +  (interactive)
 +  (menu-bar-set-tool-bar-position 'left))
 +(defun menu-bar-showhide-tool-bar-menu-customize-enable-right ()
 +  "Display tool bars on the right side."
 +  (interactive)
 +  (menu-bar-set-tool-bar-position 'right))
 +(defun menu-bar-showhide-tool-bar-menu-customize-enable-top ()
 +  "Display tool bars on the top side."
 +  (interactive)
 +  (menu-bar-set-tool-bar-position 'top))
 +(defun menu-bar-showhide-tool-bar-menu-customize-enable-bottom ()
 +  "Display tool bars on the bottom side."
 +  (interactive)
 +  (menu-bar-set-tool-bar-position 'bottom))
 +
 +(if (featurep 'move-toolbar)
 +    (progn
 +      (defvar menu-bar-showhide-tool-bar-menu (make-sparse-keymap "Tool-bar"))
 +
 +      (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-left]
 +      `(menu-item ,(purecopy "On the left")
 +                  menu-bar-showhide-tool-bar-menu-customize-enable-left
 +                  :help ,(purecopy "Tool-bar at the left side")
 +                  :visible (display-graphic-p)
 +                  :button
 +                  (:radio . (and tool-bar-mode
 +                                 (eq (frame-parameter nil 'tool-bar-position)
 +                                     'left)))))
 +
 +      (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-right]
 +      `(menu-item ,(purecopy "On the right")
 +                  menu-bar-showhide-tool-bar-menu-customize-enable-right
 +                  :help ,(purecopy "Tool-bar at the right side")
 +                  :visible (display-graphic-p)
 +                  :button
 +                  (:radio . (and tool-bar-mode
 +                                 (eq (frame-parameter nil 'tool-bar-position)
 +                                     'right)))))
 +
 +      (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-bottom]
 +      `(menu-item ,(purecopy "On the bottom")
 +                  menu-bar-showhide-tool-bar-menu-customize-enable-bottom
 +                  :help ,(purecopy "Tool-bar at the bottom")
 +                  :visible (display-graphic-p)
 +                  :button
 +                  (:radio . (and tool-bar-mode
 +                                 (eq (frame-parameter nil 'tool-bar-position)
 +                                     'bottom)))))
 +
 +      (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-top]
 +      `(menu-item ,(purecopy "On the top")
 +                  menu-bar-showhide-tool-bar-menu-customize-enable-top
 +                  :help ,(purecopy "Tool-bar at the top")
 +                  :visible (display-graphic-p)
 +                  :button
 +                  (:radio . (and tool-bar-mode
 +                                 (eq (frame-parameter nil 'tool-bar-position)
 +                                     'top)))))
 +
 +      (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-none]
 +      `(menu-item ,(purecopy "None")
 +                  menu-bar-showhide-tool-bar-menu-customize-disable
 +                  :help ,(purecopy "Turn tool-bar off")
 +                  :visible (display-graphic-p)
 +                  :button (:radio . (eq tool-bar-mode nil))))
 +
 +      (define-key menu-bar-showhide-menu [showhide-tool-bar]
 +      `(menu-item ,(purecopy "Tool-bar") ,menu-bar-showhide-tool-bar-menu
 +                  :visible (display-graphic-p)))
 +
 +      )
 +  ;; else not tool bar that can move.
 +  (define-key menu-bar-showhide-menu [showhide-tool-bar]
 +    `(menu-item ,(purecopy "Tool-bar") toggle-tool-bar-mode-from-frame
 +              :help ,(purecopy "Turn tool-bar on/off")
 +              :visible (display-graphic-p)
 +              :button (:toggle . (> (frame-parameter nil 'tool-bar-lines) 0))))
 +)
  
  (define-key menu-bar-options-menu [showhide]
    `(menu-item ,(purecopy "Show/Hide") ,menu-bar-showhide-menu))
  (define-key menu-bar-options-menu [cua-emulation-mode]
    (menu-bar-make-mm-toggle cua-mode
                           "Shift movement mark region (CUA)"
 -                         "Use shifted movement keys to set and extend the region."
 +                         "Use shifted movement keys to set and extend the region"
                           (:visible (and (boundp 'cua-enable-cua-keys)
                                          (not cua-enable-cua-keys)))))
  
  (define-key menu-bar-describe-menu [describe-current-display-table]
    `(menu-item ,(purecopy "Describe Display Table") describe-current-display-table
              :help ,(purecopy "Describe the current display table")))
 +(define-key menu-bar-describe-menu [describe-package]
 +  `(menu-item ,(purecopy "Describe Package...") describe-package
 +              :help ,(purecopy "Display documentation of a Lisp package")))
  (define-key menu-bar-describe-menu [describe-face]
    `(menu-item ,(purecopy "Describe Face...") describe-face
                :help ,(purecopy "Display the properties of a face")))
@@@ -1669,11 -1544,11 +1669,11 @@@ key, a click, or a menu-item"))
  (define-key menu-bar-help-menu [sep2]
    menu-bar-separator)
  (define-key menu-bar-help-menu [external-packages]
 -  `(menu-item ,(purecopy "External Packages") menu-bar-help-extra-packages
 +  `(menu-item ,(purecopy "Finding Extra Packages") menu-bar-help-extra-packages
              :help ,(purecopy "Lisp packages distributed separately for use in Emacs")))
  (define-key menu-bar-help-menu [find-emacs-packages]
 -  `(menu-item ,(purecopy "Find Emacs Packages") finder-by-keyword
 -            :help ,(purecopy "Find packages and features by keyword")))
 +  `(menu-item ,(purecopy "Search Built-in Packages") finder-by-keyword
 +            :help ,(purecopy "Find built-in packages and features by keyword")))
  (define-key menu-bar-help-menu [more-manuals]
    `(menu-item ,(purecopy "More Manuals") ,menu-bar-manuals-menu))
  (define-key menu-bar-help-menu [emacs-manual]
    `(menu-item ,(purecopy "Emacs Tutorial") help-with-tutorial
              :help ,(purecopy "Learn how to use Emacs")))
  
 +;; In OS X it's in the app menu already.
 +;; FIXME? There already is an "About Emacs" (sans ...) entry in the Help menu.
 +(and (featurep 'ns)
 +     (not (eq system-type 'darwin))
 +     (define-key menu-bar-help-menu [info-panel]
 +       `(menu-item ,(purecopy "About Emacs...") ns-do-emacs-info-panel)))
 +
  (defun menu-bar-menu-frame-live-and-visible-p ()
    "Return non-nil if the menu frame is alive and visible.
  The menu frame is the frame for which we are updating the menu."
@@@ -2071,28 -1939,21 +2071,28 @@@ This command applies to all frames tha
  created in the future.
  With a numeric argument, if the argument is positive,
  turn on menu bars; otherwise, turn off menu bars."
 -  :init-value nil
 +  :init-value t
    :global t
 -  :group 'frames
 -
 -  ;; Make menu-bar-mode and default-frame-alist consistent.
 -  (modify-all-frames-parameters (list (cons 'menu-bar-lines
 -                                          (if menu-bar-mode 1 0))))
 -
 +  ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again.
 +  :variable menu-bar-mode
 +
 +  ;; Turn the menu-bars on all frames on or off.
 +  (let ((val (if menu-bar-mode 1 0)))
 +    (dolist (frame (frame-list))
 +      (set-frame-parameter frame 'menu-bar-lines val))
 +    ;; If the user has given `default-frame-alist' a `menu-bar-lines'
 +    ;; parameter, replace it.
 +    (if (assq 'menu-bar-lines default-frame-alist)
 +      (setq default-frame-alist
 +            (cons (cons 'menu-bar-lines val)
 +                  (assq-delete-all 'menu-bar-lines
 +                                   default-frame-alist)))))
    ;; Make the message appear when Emacs is idle.  We can not call message
    ;; directly.  The minor-mode message "Menu-bar mode disabled" comes
    ;; after this function returns, overwriting any message we do here.
    (when (and (called-interactively-p 'interactive) (not menu-bar-mode))
      (run-with-idle-timer 0 nil 'message
 -                       "Menu-bar mode disabled.  Use M-x menu-bar-mode to make the menu bar appear."))
 -  menu-bar-mode)
 +                       "Menu-bar mode disabled.  Use M-x menu-bar-mode to make the menu bar appear.")))
  
  ;;;###autoload
  ;; (This does not work right unless it comes after the above definition.)
diff --combined lisp/net/tramp.el
@@@ -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,6 -2502,279 +1587,6 @@@ 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
  (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))))))
 -
 -(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,536 +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)
 -            (put 'backup-by-copying-when-mismatch 'permanent-local 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 -5605,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 -5664,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 -5764,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 -5799,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 -5903,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 -6348,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,381 -6366,326 +2567,385 @@@ 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))
++          (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)))
 +        (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
@@@ -3040,7 -6784,7 +3044,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.
@@@ -3172,6 -6916,17 +3176,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
@@@ -3226,56 -7802,6 +3230,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)
@@@ -3474,7 -8720,9 +3478,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).
@@@ -3553,6 -8801,7 +3557,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/play/gomoku.el
@@@ -1,7 -1,7 +1,7 @@@
  ;;; gomoku.el --- Gomoku game between you and Emacs
  
- ;; Copyright (C) 1988, 1994, 1996, 2001, 2002, 2003, 2004,
- ;;   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ ;; Copyright (C) 1988, 1994, 1996, 2001, 2002, 2003, 2004, 2005, 2006,
+ ;;   2007, 2008, 2009, 2010  Free Software Foundation, Inc.
  
  ;; Author: Philippe Schnoebelen <phs@lsv.ens-cachan.fr>
  ;; Maintainer: FSF
@@@ -102,60 -102,59 +102,60 @@@ One useful value to include is `turn-on
    "*Number of lines between the Gomoku board and the top of the window.")
  
  
 -(defvar gomoku-mode-map nil
 +(defvar gomoku-mode-map
 +  (let ((map (make-sparse-keymap)))
 +
 +    ;; Key bindings for cursor motion.
 +    (define-key map "y" 'gomoku-move-nw)                  ; y
 +    (define-key map "u" 'gomoku-move-ne)                  ; u
 +    (define-key map "b" 'gomoku-move-sw)                  ; b
 +    (define-key map "n" 'gomoku-move-se)                  ; n
 +    (define-key map "h" 'backward-char)                           ; h
 +    (define-key map "l" 'forward-char)                            ; l
 +    (define-key map "j" 'gomoku-move-down)                ; j
 +    (define-key map "k" 'gomoku-move-up)                  ; k
 +
 +    (define-key map [kp-7] 'gomoku-move-nw)
 +    (define-key map [kp-9] 'gomoku-move-ne)
 +    (define-key map [kp-1] 'gomoku-move-sw)
 +    (define-key map [kp-3] 'gomoku-move-se)
 +    (define-key map [kp-4] 'backward-char)
 +    (define-key map [kp-6] 'forward-char)
 +    (define-key map [kp-2] 'gomoku-move-down)
 +    (define-key map [kp-8] 'gomoku-move-up)
 +
 +    (define-key map "\C-n" 'gomoku-move-down)             ; C-n
 +    (define-key map "\C-p" 'gomoku-move-up)               ; C-p
 +
 +    ;; Key bindings for entering Human moves.
 +    (define-key map "X" 'gomoku-human-plays)              ; X
 +    (define-key map "x" 'gomoku-human-plays)              ; x
 +    (define-key map " " 'gomoku-human-plays)              ; SPC
 +    (define-key map "\C-m" 'gomoku-human-plays)                   ; RET
 +    (define-key map "\C-c\C-p" 'gomoku-human-plays)       ; C-c C-p
 +    (define-key map "\C-c\C-b" 'gomoku-human-takes-back)    ; C-c C-b
 +    (define-key map "\C-c\C-r" 'gomoku-human-resigns)     ; C-c C-r
 +    (define-key map "\C-c\C-e" 'gomoku-emacs-plays)       ; C-c C-e
 +
 +    (define-key map [kp-enter] 'gomoku-human-plays)
 +    (define-key map [insert] 'gomoku-human-plays)
 +    (define-key map [down-mouse-1] 'gomoku-click)
 +    (define-key map [drag-mouse-1] 'gomoku-click)
 +    (define-key map [mouse-1] 'gomoku-click)
 +    (define-key map [down-mouse-2] 'gomoku-click)
 +    (define-key map [mouse-2] 'gomoku-mouse-play)
 +    (define-key map [drag-mouse-2] 'gomoku-mouse-play)
 +
 +    (define-key map [remap previous-line] 'gomoku-move-up)
 +    (define-key map [remap next-line] 'gomoku-move-down)
 +    (define-key map [remap move-beginning-of-line] 'gomoku-beginning-of-line)
 +    (define-key map [remap move-end-of-line] 'gomoku-end-of-line)
 +    (define-key map [remap undo] 'gomoku-human-takes-back)
 +    (define-key map [remap advertised-undo] 'gomoku-human-takes-back)
 +    map)
 +
    "Local keymap to use in Gomoku mode.")
  
 -(if gomoku-mode-map nil
 -  (setq gomoku-mode-map (make-sparse-keymap))
 -
 -  ;; Key bindings for cursor motion.
 -  (define-key gomoku-mode-map "y" 'gomoku-move-nw)            ; y
 -  (define-key gomoku-mode-map "u" 'gomoku-move-ne)            ; u
 -  (define-key gomoku-mode-map "b" 'gomoku-move-sw)            ; b
 -  (define-key gomoku-mode-map "n" 'gomoku-move-se)            ; n
 -  (define-key gomoku-mode-map "h" 'backward-char)             ; h
 -  (define-key gomoku-mode-map "l" 'forward-char)              ; l
 -  (define-key gomoku-mode-map "j" 'gomoku-move-down)          ; j
 -  (define-key gomoku-mode-map "k" 'gomoku-move-up)            ; k
 -
 -  (define-key gomoku-mode-map [kp-7] 'gomoku-move-nw)
 -  (define-key gomoku-mode-map [kp-9] 'gomoku-move-ne)
 -  (define-key gomoku-mode-map [kp-1] 'gomoku-move-sw)
 -  (define-key gomoku-mode-map [kp-3] 'gomoku-move-se)
 -  (define-key gomoku-mode-map [kp-4] 'backward-char)
 -  (define-key gomoku-mode-map [kp-6] 'forward-char)
 -  (define-key gomoku-mode-map [kp-2] 'gomoku-move-down)
 -  (define-key gomoku-mode-map [kp-8] 'gomoku-move-up)
 -
 -  (define-key gomoku-mode-map "\C-n" 'gomoku-move-down)               ; C-n
 -  (define-key gomoku-mode-map "\C-p" 'gomoku-move-up)         ; C-p
 -
 -  ;; Key bindings for entering Human moves.
 -  (define-key gomoku-mode-map "X" 'gomoku-human-plays)                ; X
 -  (define-key gomoku-mode-map "x" 'gomoku-human-plays)                ; x
 -  (define-key gomoku-mode-map " " 'gomoku-human-plays)                ; SPC
 -  (define-key gomoku-mode-map "\C-m" 'gomoku-human-plays)     ; RET
 -  (define-key gomoku-mode-map "\C-c\C-p" 'gomoku-human-plays) ; C-c C-p
 -  (define-key gomoku-mode-map "\C-c\C-b" 'gomoku-human-takes-back) ; C-c C-b
 -  (define-key gomoku-mode-map "\C-c\C-r" 'gomoku-human-resigns)       ; C-c C-r
 -  (define-key gomoku-mode-map "\C-c\C-e" 'gomoku-emacs-plays) ; C-c C-e
 -
 -  (define-key gomoku-mode-map [kp-enter] 'gomoku-human-plays)
 -  (define-key gomoku-mode-map [insert] 'gomoku-human-plays)
 -  (define-key gomoku-mode-map [down-mouse-1] 'gomoku-click)
 -  (define-key gomoku-mode-map [drag-mouse-1] 'gomoku-click)
 -  (define-key gomoku-mode-map [mouse-1] 'gomoku-click)
 -  (define-key gomoku-mode-map [down-mouse-2] 'gomoku-click)
 -  (define-key gomoku-mode-map [mouse-2] 'gomoku-mouse-play)
 -  (define-key gomoku-mode-map [drag-mouse-2] 'gomoku-mouse-play)
 -
 -  (define-key gomoku-mode-map [remap previous-line] 'gomoku-move-up)
 -  (define-key gomoku-mode-map [remap next-line] 'gomoku-move-down)
 -  (define-key gomoku-mode-map [remap move-beginning-of-line] 'gomoku-beginning-of-line)
 -  (define-key gomoku-mode-map [remap move-end-of-line] 'gomoku-end-of-line)
 -  (define-key gomoku-mode-map [remap undo] 'gomoku-human-takes-back)
 -  (define-key gomoku-mode-map [remap advertised-undo] 'gomoku-human-takes-back))
  
  (defvar gomoku-emacs-won ()
    "For making font-lock use the winner's face for the line.")
  ;; allow View Mode to be activated in its buffer.
  (put 'gomoku-mode 'mode-class 'special)
  
 -(defun gomoku-mode ()
 +(define-derived-mode gomoku-mode nil "Gomoku"
    "Major mode for playing Gomoku against Emacs.
  You and Emacs play in turn by marking a free square.  You mark it with X
  and Emacs marks it with O.  The winner is the first to get five contiguous
  marks horizontally, vertically or in diagonal.
 -
 +\\<gomoku-mode-map>
  You play by moving the cursor over the square you choose and hitting \\[gomoku-human-plays].
  
 -Other useful commands:
 -\\{gomoku-mode-map}
 -Entry to this mode calls the value of `gomoku-mode-hook' if that value
 -is non-nil."
 -  (interactive)
 -  (kill-all-local-variables)
 -  (setq major-mode 'gomoku-mode
 -      mode-name "Gomoku")
 +Other useful commands:\n
 +\\{gomoku-mode-map}"
    (gomoku-display-statistics)
 -  (use-local-map gomoku-mode-map)
    (make-local-variable 'font-lock-defaults)
-   (setq font-lock-defaults '(gomoku-font-lock-keywords t))
-   (toggle-read-only t))
+   (setq font-lock-defaults '(gomoku-font-lock-keywords t)
 -      buffer-read-only t)
 -  (run-mode-hooks 'gomoku-mode-hook))
++      buffer-read-only t))
  \f
  ;;;
  ;;; THE BOARD.
@@@ -1206,5 -1213,4 +1206,4 @@@ If the game is finished, this command r
  
  (provide 'gomoku)
  
- ;; arch-tag: b1b8205e-77fc-4597-b373-3ea2c04311eb
  ;;; gomoku.el ends here
diff --combined lisp/play/landmark.el
  
  
  ;;; Commentary:
 -;;; Lm is a relatively non-participatory game in which a robot
 -;;; attempts to maneuver towards a tree at the center of the window
 -;;; based on unique olfactory cues from each of the 4 directions. If
 -;;; the smell of the tree increases, then the weights in the robot's
 -;;; brain are adjusted to encourage this odor-driven behavior in the
 -;;; future. If the smell of the tree decreases, the robots weights are
 -;;; adjusted to discourage a correct move.
 -
 -;;; In laymen's terms, the search space is initially flat. The point
 -;;; of training is to "turn up the edges of the search space" so that
 -;;; the robot rolls toward the center.
 -
 -;;; Further, do not become alarmed if the robot appears to oscillate
 -;;; back and forth between two or a few positions. This simply means
 -;;; it is currently caught in a local minimum and is doing its best to
 -;;; work its way out.
 -
 -;;; The version of this program as described has a small problem. a
 -;;; move in a net direction can produce gross credit assignment. for
 -;;; example, if moving south will produce positive payoff, then, if in
 -;;; a single move, one moves east,west and south, then both east and
 -;;; west will be improved when they shouldn't
 -
 -;;; Many thanks to Yuri Pryadkin (yuri@rana.usc.edu) for this
 -;;; concise problem description.
 +;; Lm is a relatively non-participatory game in which a robot
 +;; attempts to maneuver towards a tree at the center of the window
 +;; based on unique olfactory cues from each of the 4 directions. If
 +;; the smell of the tree increases, then the weights in the robot's
 +;; brain are adjusted to encourage this odor-driven behavior in the
 +;; future. If the smell of the tree decreases, the robots weights are
 +;; adjusted to discourage a correct move.
 +
 +;; In laymen's terms, the search space is initially flat. The point
 +;; of training is to "turn up the edges of the search space" so that
 +;; the robot rolls toward the center.
 +
 +;; Further, do not become alarmed if the robot appears to oscillate
 +;; back and forth between two or a few positions. This simply means
 +;; it is currently caught in a local minimum and is doing its best to
 +;; work its way out.
 +
 +;; The version of this program as described has a small problem. a
 +;; move in a net direction can produce gross credit assignment. for
 +;; example, if moving south will produce positive payoff, then, if in
 +;; a single move, one moves east,west and south, then both east and
 +;; west will be improved when they shouldn't
 +
 +;; Many thanks to Yuri Pryadkin (yuri@rana.usc.edu) for this
 +;; concise problem description.
  
  ;;;_* Require
  (eval-when-compile (require 'cl))
    :type 'hook
    :group 'lm)
  
 -(defvar lm-mode-map nil
 +(defvar lm-mode-map
 +  (let ((map (make-sparse-keymap)))
 +    ;; Key bindings for cursor motion.
 +    (define-key map "y" 'lm-move-nw)          ; y
 +    (define-key map "u" 'lm-move-ne)          ; u
 +    (define-key map "b" 'lm-move-sw)          ; b
 +    (define-key map "n" 'lm-move-se)          ; n
 +    (define-key map "h" 'backward-char)               ; h
 +    (define-key map "l" 'forward-char)                ; l
 +    (define-key map "j" 'lm-move-down)                ; j
 +    (define-key map "k" 'lm-move-up)          ; k
 +
 +    (define-key map [kp-7] 'lm-move-nw)
 +    (define-key map [kp-9] 'lm-move-ne)
 +    (define-key map [kp-1] 'lm-move-sw)
 +    (define-key map [kp-3] 'lm-move-se)
 +    (define-key map [kp-4] 'backward-char)
 +    (define-key map [kp-6] 'forward-char)
 +    (define-key map [kp-2] 'lm-move-down)
 +    (define-key map [kp-8] 'lm-move-up)
 +
 +    (define-key map "\C-n" 'lm-move-down)             ; C-n
 +    (define-key map "\C-p" 'lm-move-up)               ; C-p
 +
 +    ;; Key bindings for entering Human moves.
 +    (define-key map "X" 'lm-human-plays)              ; X
 +    (define-key map "x" 'lm-human-plays)              ; x
 +
 +    (define-key map " " 'lm-start-robot)              ; SPC
 +    (define-key map [down-mouse-1] 'lm-start-robot)
 +    (define-key map [drag-mouse-1] 'lm-click)
 +    (define-key map [mouse-1] 'lm-click)
 +    (define-key map [down-mouse-2] 'lm-click)
 +    (define-key map [mouse-2] 'lm-mouse-play)
 +    (define-key map [drag-mouse-2] 'lm-mouse-play)
 +
 +    (define-key map [remap previous-line] 'lm-move-up)
 +    (define-key map [remap next-line] 'lm-move-down)
 +    (define-key map [remap beginning-of-line] 'lm-beginning-of-line)
 +    (define-key map [remap end-of-line] 'lm-end-of-line)
 +    (define-key map [remap undo] 'lm-human-takes-back)
 +    (define-key map [remap advertised-undo] 'lm-human-takes-back)
 +    map)
    "Local keymap to use in Lm mode.")
  
 -(if lm-mode-map nil
 -  (setq lm-mode-map (make-sparse-keymap))
 -
 -  ;; Key bindings for cursor motion.
 -  (define-key lm-mode-map "y" 'lm-move-nw)            ; y
 -  (define-key lm-mode-map "u" 'lm-move-ne)            ; u
 -  (define-key lm-mode-map "b" 'lm-move-sw)            ; b
 -  (define-key lm-mode-map "n" 'lm-move-se)            ; n
 -  (define-key lm-mode-map "h" 'backward-char)         ; h
 -  (define-key lm-mode-map "l" 'forward-char)          ; l
 -  (define-key lm-mode-map "j" 'lm-move-down)          ; j
 -  (define-key lm-mode-map "k" 'lm-move-up)            ; k
 -
 -  (define-key lm-mode-map [kp-7] 'lm-move-nw)
 -  (define-key lm-mode-map [kp-9] 'lm-move-ne)
 -  (define-key lm-mode-map [kp-1] 'lm-move-sw)
 -  (define-key lm-mode-map [kp-3] 'lm-move-se)
 -  (define-key lm-mode-map [kp-4] 'backward-char)
 -  (define-key lm-mode-map [kp-6] 'forward-char)
 -  (define-key lm-mode-map [kp-2] 'lm-move-down)
 -  (define-key lm-mode-map [kp-8] 'lm-move-up)
 -
 -  (define-key lm-mode-map "\C-n" 'lm-move-down)               ; C-n
 -  (define-key lm-mode-map "\C-p" 'lm-move-up)         ; C-p
 -
 -  ;; Key bindings for entering Human moves.
 -  (define-key lm-mode-map "X" 'lm-human-plays)                ; X
 -  (define-key lm-mode-map "x" 'lm-human-plays)                ; x
 -
 -  (define-key lm-mode-map " " 'lm-start-robot)                ; SPC
 -  (define-key lm-mode-map [down-mouse-1] 'lm-start-robot)
 -  (define-key lm-mode-map [drag-mouse-1] 'lm-click)
 -  (define-key lm-mode-map [mouse-1] 'lm-click)
 -  (define-key lm-mode-map [down-mouse-2] 'lm-click)
 -  (define-key lm-mode-map [mouse-2] 'lm-mouse-play)
 -  (define-key lm-mode-map [drag-mouse-2] 'lm-mouse-play)
 -
 -  (define-key lm-mode-map [remap previous-line] 'lm-move-up)
 -  (define-key lm-mode-map [remap next-line] 'lm-move-down)
 -  (define-key lm-mode-map [remap beginning-of-line] 'lm-beginning-of-line)
 -  (define-key lm-mode-map [remap end-of-line] 'lm-end-of-line)
 -  (define-key lm-mode-map [remap undo] 'lm-human-takes-back)
 -  (define-key lm-mode-map [remap advertised-undo] 'lm-human-takes-back))
 +
  
  (defvar lm-emacs-won ()
    "*For making font-lock use the winner's face for the line.")
@@@ -255,8 -255,8 +255,8 @@@ is non-nil.  One interesting value is `
    (lm-display-statistics)
    (use-local-map lm-mode-map)
    (make-local-variable 'font-lock-defaults)
-   (setq font-lock-defaults '(lm-font-lock-keywords t))
-   (toggle-read-only t)
+   (setq font-lock-defaults '(lm-font-lock-keywords t)
+       buffer-read-only t)
    (run-mode-hooks 'lm-mode-hook))
  
  
  ;; these values will change (hopefully improve) the strength of the program
  ;; and may change its style (rather aggressive here).
  
 -(defconst nil-score     7  "Score of an empty qtuple.")
 -(defconst Xscore       15  "Score of a qtuple containing one X.")
 -(defconst XXscore     400  "Score of a qtuple containing two X's.")
 -(defconst XXXscore     1800  "Score of a qtuple containing three X's.")
 -(defconst XXXXscore  100000  "Score of a qtuple containing four X's.")
 -(defconst Oscore       35  "Score of a qtuple containing one O.")
 -(defconst OOscore     800  "Score of a qtuple containing two O's.")
 -(defconst OOOscore    15000  "Score of a qtuple containing three O's.")
 -(defconst OOOOscore  800000  "Score of a qtuple containing four O's.")
 -
 -;; These values are not just random: if, given the following situation:
 -;;
 -;;                      . . . . . . . O .
 -;;                      . X X a . . . X .
 -;;                      . . . X . . . X .
 -;;                      . . . X . . . X .
 -;;                      . . . . . . . b .
 -;;
 -;; you want Emacs to play in "a" and not in "b", then the parameters must
 -;; satisfy the inequality:
 -;;
 -;;               6 * XXscore > XXXscore + XXscore
 -;;
 -;; because "a" mainly belongs to six "XX" qtuples (the others are less
 -;; important) while "b" belongs to one "XXX" and one "XX" qtuples.  Other
 -;; conditions are required to obtain sensible moves, but the previous example
 -;; should illustrate the point. If you manage to improve on these values,
 -;; please send me a note. Thanks.
 -
 -
 -;; As we chose values 0, 1 and 6 to denote empty, X and O squares, the
 -;; contents of a qtuple are uniquely determined by the sum of its elements and
 -;; we just have to set up a translation table.
 +(defconst lm-nil-score          7  "Score of an empty qtuple.")
  
  (defconst lm-score-trans-table
 -  (vector nil-score Xscore XXscore XXXscore XXXXscore 0
 -        Oscore    0      0       0        0         0
 -        OOscore   0      0       0        0         0
 -        OOOscore  0      0       0        0         0
 -        OOOOscore 0      0       0        0         0
 -        0)
 +  (let ((Xscore               15)  ; Score of a qtuple containing one X.
 +        (XXscore       400)  ; Score of a qtuple containing two X's.
 +        (XXXscore     1800)  ; Score of a qtuple containing three X's.
 +        (XXXXscore  100000)  ; Score of a qtuple containing four X's.
 +        (Oscore               35)  ; Score of a qtuple containing one O.
 +        (OOscore       800)  ; Score of a qtuple containing two O's.
 +        (OOOscore    15000)  ; Score of a qtuple containing three O's.
 +        (OOOOscore  800000)) ; Score of a qtuple containing four O's.
 +
 +    ;; These values are not just random: if, given the following situation:
 +    ;;
 +    ;;                          . . . . . . . O .
 +    ;;                          . X X a . . . X .
 +    ;;                          . . . X . . . X .
 +    ;;                          . . . X . . . X .
 +    ;;                          . . . . . . . b .
 +    ;;
 +    ;; you want Emacs to play in "a" and not in "b", then the parameters must
 +    ;; satisfy the inequality:
 +    ;;
 +    ;;                   6 * XXscore > XXXscore + XXscore
 +    ;;
 +    ;; because "a" mainly belongs to six "XX" qtuples (the others are less
 +    ;; important) while "b" belongs to one "XXX" and one "XX" qtuples.
 +    ;; Other conditions are required to obtain sensible moves, but the
 +    ;; previous example should illustrate the point.  If you manage to
 +    ;; improve on these values, please send me a note.  Thanks.
 +
 +
 +    ;; As we chose values 0, 1 and 6 to denote empty, X and O squares,
 +    ;; the contents of a qtuple are uniquely determined by the sum of
 +    ;; its elements and we just have to set up a translation table.
 +    (vector lm-nil-score Xscore XXscore XXXscore XXXXscore 0
 +            Oscore       0    0       0        0         0
 +            OOscore      0    0       0        0         0
 +            OOOscore     0    0       0        0         0
 +            OOOOscore    0    0       0        0         0
 +            0))
    "Vector associating qtuple contents to their score.")
  
  
  ;; qtuple. We may use these considerations to detect when a given move is
  ;; winning or loosing.
  
 -(defconst lm-winning-threshold OOOOscore
 +(defconst lm-winning-threshold
 +  (aref lm-score-trans-table (+ 6 6 6 6)) ;; OOOOscore
    "Threshold score beyond which an Emacs move is winning.")
  
 -(defconst lm-loosing-threshold XXXXscore
 +(defconst lm-loosing-threshold
 +  (aref lm-score-trans-table (+ 1 1 1 1)) ;; XXXXscore
    "Threshold score beyond which a human move is winning.")
  
  
        (setq lm-score-table (copy-sequence lm-saved-score-table))
        ;; No, compute it:
        (setq lm-score-table
 -          (make-vector lm-vector-length (* 20 nil-score)))
 +          (make-vector lm-vector-length (* 20 lm-nil-score)))
        (let (i j maxi maxj maxi2 maxj2)
        (setq maxi  (/ (1+ lm-board-width) 2)
              maxj  (/ (1+ lm-board-height) 2)
@@@ -1702,5 -1700,4 +1702,4 @@@ Use \\[describe-mode] for more info.
  
  (provide 'landmark)
  
- ;; arch-tag: ae5031be-96e6-459e-a3df-1df53117d3f2
  ;;; landmark.el ends here
diff --combined lisp/progmodes/sql.el
@@@ -5,9 -5,10 +5,10 @@@
  
  ;; Author: Alex Schroeder <alex@gnu.org>
  ;; Maintainer: Michael Mauger <mmaug@yahoo.com>
 -;; Version: 2.0.2
 +;; Version: 2.8
  ;; Keywords: comm languages processes
- ;; URL: http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/lisp/progmodes/sql.el
+ ;; URL: http://savannah.gnu.org/projects/emacs/
+ ;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?SqlMode
  
  ;; This file is part of GNU Emacs.
  
  ;; identifiers; ms (Microsoft SQLServer) also supports identifiers
  ;; enclosed within brackets [].
  
 -;; ChangeLog available on request.
 -
  ;;; Product Support:
  
  ;; To add support for additional SQL products the following steps
  ;; must be followed ("xyz" is the name of the product in the examples
  ;; below):
  
 -;; 1) Add the product to `sql-product' choice list.
 +;; 1) Add the product to the list of known products.
  
 -;;     (const :tag "XyzDB" xyz)
 +;;     (sql-add-product 'xyz "XyzDB"
 +;;                            '(:free-software t))
  
 -;; 2) Add an entry to the `sql-product-alist' list.
 +;; 2) Define font lock settings.  All ANSI keywords will be
 +;;    highlighted automatically, so only product specific keywords
 +;;    need to be defined here.
  
 -;;     (xyz
 -;;      :font-lock sql-mode-xyz-font-lock-keywords
 -;;      :sqli-login (user password server database)
 -;;      :sqli-connect sql-connect-xyz
 -;;      :sqli-prompt-regexp "^xyzdb> "
 -;;      :sqli-prompt-length 7
 -;;      :sqli-input-sender nil
 -;;      :syntax-alist ((?# . "w")))
 +;;     (defvar my-sql-mode-xyz-font-lock-keywords
 +;;       '(("\\b\\(red\\|orange\\|yellow\\)\\b"
 +;;          . font-lock-keyword-face))
 +;;       "XyzDB SQL keywords used by font-lock.")
  
 -;; 3) Add customizable values for the product interpreter and options.
 +;;     (sql-set-product-feature 'xyz
 +;;                              :font-lock
 +;;                              'my-sql-mode-xyz-font-lock-keywords)
  
 -;;     ;; Customization for XyzDB
 -;;
 -;;     (defcustom sql-xyz-program "ixyz"
 -;;       "*Command to start ixyz by XyzDB."
 +;; 3) Define any special syntax characters including comments and
 +;;    identifier characters.
 +
 +;;     (sql-set-product-feature 'xyz
 +;;                              :syntax-alist ((?# . "w")))
 +
 +;; 4) Define the interactive command interpreter for the database
 +;;    product.
 +
 +;;     (defcustom my-sql-xyz-program "ixyz"
 +;;       "Command to start ixyz by XyzDB."
  ;;       :type 'file
  ;;       :group 'SQL)
  ;;
 -;;     (defcustom sql-xyz-options '("-X" "-Y" "-Z")
 -;;       "*List of additional options for `sql-xyz-program'."
 -;;       :type '(repeat string)
 +;;     (sql-set-product-feature 'xyz
 +;;                              :sqli-program 'my-sql-xyz-program)
 +;;     (sql-set-product-feature 'xyz
 +;;                              :prompt-regexp "^xyzdb> ")
 +;;     (sql-set-product-feature 'xyz
 +;;                              :prompt-length 7)
 +
 +;; 5) Define login parameters and command line formatting.
 +
 +;;     (defcustom my-sql-xyz-login-params '(user password server database)
 +;;       "Login parameters to needed to connect to XyzDB."
 +;;       :type 'sql-login-params
  ;;       :group 'SQL)
 +;;
 +;;     (sql-set-product-feature 'xyz
 +;;                              :sqli-login 'my-sql-xyz-login-params)
  
 -;; 4) Add an entry to SQL->Product submenu.
 -
 -;;     ["XyzDB" sql-highlight-xyz-keywords
 -;;      :style radio
 -;;      :selected (eq sql-product 'xyz)]
 -
 -;; 5) Add the font-lock specifications.  At a minimum, default to
 -;;    using ANSI keywords.  See sql-mode-oracle-font-lock-keywords for
 -;;    a more complex example.
 -
 -;;     (defvar sql-mode-xyz-font-lock-keywords nil
 -;;       "XyzDB SQL keywords used by font-lock.")
 -
 -;; 6) Add a product highlighting function.
 -
 -;;     (defun sql-highlight-xyz-keywords ()
 -;;       "Highlight XyzDB keywords."
 -;;       (interactive)
 -;;       (sql-set-product 'xyz))
 -
 -;; 7) Add an autoloaded SQLi function.
 -
 -;;     ;;;###autoload
 -;;     (defun sql-xyz ()
 -;;       "Run ixyz by XyzDB as an inferior process."
 -;;       (interactive)
 -;;       (sql-product-interactive 'xyz))
 -
 -;; 8) Add a connect function which formats the command line arguments
 -;;    and starts the product interpreter in a comint buffer.  See the
 -;;    existing connect functions for examples of the types of
 -;;    processing available.
 +;;     (defcustom my-sql-xyz-options '("-X" "-Y" "-Z")
 +;;       "List of additional options for `sql-xyz-program'."
 +;;       :type '(repeat string)
 +;;       :group 'SQL)
 +;;
 +;;     (sql-set-product-feature 'xyz
 +;;                              :sqli-options 'my-sql-xyz-options))
  
 -;;     (defun sql-connect-xyz ()
 -;;       "Create comint buffer and connect to XyzDB using the login
 -;;     parameters and command options."
 +;;     (defun my-sql-comint-xyz (product options)
 +;;       "Connect ti XyzDB in a comint buffer."
  ;;
  ;;         ;; Do something with `sql-user', `sql-password',
  ;;         ;; `sql-database', and `sql-server'.
 -;;         (let ((params sql-xyz-options))
 +;;         (let ((params options))
  ;;           (if (not (string= "" sql-server))
  ;;              (setq params (append (list "-S" sql-server) params)))
  ;;           (if (not (string= "" sql-database))
  ;;               (setq params (append (list "-P" sql-password) params)))
  ;;           (if (not (string= "" sql-user))
  ;;               (setq params (append (list "-U" sql-user) params)))
 -;;           (set-buffer (apply 'make-comint "SQL" sql-xyz-program
 -;;                              nil params))))
 +;;           (sql-comint product params)))
 +;;
 +;;     (sql-set-product-feature 'xyz
 +;;                              :sqli-comint-func 'my-sql-comint-xyz)
 +
 +;; 6) Define a convienence function to invoke the SQL interpreter.
  
 -;; 9) Save and compile sql.el.
 +;;     (defun my-sql-xyz (&optional buffer)
 +;;       "Run ixyz by XyzDB as an inferior process."
 +;;       (interactive "P")
 +;;       (sql-product-interactive 'xyz buffer))
  
  ;;; To Do:
  
 -;; Add better hilight support for other brands; there is a bias towards
 -;; Oracle because that's what I use at work.  Anybody else just send in
 -;; your lists of reserved words, keywords and builtin functions!  As
 -;; long as I don't receive any feedback, everything is hilighted with
 -;; ANSI keywords only.  I received the list of ANSI keywords from a
 -;; user; if you know of any changes, let me know.
 +;; Improve keyword highlighting for individual products.  I have tried
 +;; to update those database that I use.  Feel free to send me updates,
 +;; or direct me to the reference manuals for your favorite database.
  
 -;; Add different hilighting levels.
 +;; When there are no keywords defined, the ANSI keywords are
 +;; highlighted.  ANSI keywords are highlighted even if the keyword is
 +;; not used for your current product.  This should help identify
 +;; portability concerns.
 +
 +;; Add different highlighting levels.
 +
 +;; Add support for listing available tables or the columns in a table.
  
  ;;; Thanks to all the people who helped me out:
  
 -;; Alex Schroeder <alex@gnu.org>
 +;; Alex Schroeder <alex@gnu.org> -- the original author
  ;; Kai Blauberg <kai.blauberg@metla.fi>
  ;; <ibalaban@dalet.com>
  ;; Yair Friedman <yfriedma@JohnBryce.Co.Il>
  ;; Michael Mauger <mmaug@yahoo.com> -- improved product support
  ;; Drew Adams <drew.adams@oracle.com> -- Emacs 20 support
  ;; Harald Maier <maierh@myself.com> -- sql-send-string
 -;; Stefan Monnier <monnier@iro.umontreal.ca> -- font-lock corrections
 +;; Stefan Monnier <monnier@iro.umontreal.ca> -- font-lock corrections; code polish
  
  \f
  
    (require 'regexp-opt))
  (require 'custom)
  (eval-when-compile ;; needed in Emacs 19, 20
 -  (setq max-specpdl-size 2000))
 +  (setq max-specpdl-size (max max-specpdl-size 2000)))
  
  (defvar font-lock-keyword-face)
  (defvar font-lock-set-defaults)
  (defgroup SQL nil
    "Running a SQL interpreter from within Emacs buffers."
    :version "20.4"
 +  :group 'languages
    :group 'processes)
  
  ;; These four variables will be used as defaults, if set.
  
  (defcustom sql-user ""
 -  "*Default username."
 +  "Default username."
    :type 'string
 -  :group 'SQL)
 +  :group 'SQL
 +  :safe 'stringp)
  
  (defcustom sql-password ""
 -  "*Default password.
 +  "Default password.
  
  Storing your password in a textfile such as ~/.emacs could be dangerous.
  Customizing your password will store it in your ~/.emacs file."
    :type 'string
 -  :group 'SQL)
 +  :group 'SQL
 +  :risky t)
  
  (defcustom sql-database ""
 -  "*Default database."
 +  "Default database."
    :type 'string
 -  :group 'SQL)
 +  :group 'SQL
 +  :safe 'stringp)
  
  (defcustom sql-server ""
 -  "*Default server or host."
 +  "Default server or host."
    :type 'string
 -  :group 'SQL)
 +  :group 'SQL
 +  :safe 'stringp)
 +
 +(defcustom sql-port 0
 +  "Default port."
 +  :version "24.1"
 +  :type 'number
 +  :group 'SQL
 +  :safe 'numberp)
 +
 +;; Login parameter type
 +
 +(define-widget 'sql-login-params 'lazy
 +  "Widget definition of the login parameters list"
 +  ;; FIXME: does not implement :default property for the user,
 +  ;; database and server options.  Anybody have some guidance on how to
 +  ;; do this.
 +  :tag "Login Parameters"
 +  :type '(repeat (choice
 +                  (const user)
 +                  (const password)
 +                  (choice :tag "server"
 +                          (const server)
 +                          (list :tag "file"
 +                                (const :format "" server)
 +                                (const :format "" :file)
 +                                regexp)
 +                          (list :tag "completion"
 +                                (const :format "" server)
 +                                (const :format "" :completion)
 +                                (restricted-sexp
 +                                 :match-alternatives (listp stringp))))
 +                  (choice :tag "database"
 +                          (const database)
 +                          (list :tag "file"
 +                                (const :format "" database)
 +                                (const :format "" :file)
 +                                regexp)
 +                          (list :tag "completion"
 +                                (const :format "" database)
 +                                (const :format "" :completion)
 +                                (restricted-sexp
 +                                 :match-alternatives (listp stringp))))
 +                  (const port))))
  
  ;; SQL Product support
  
  (defvar sql-interactive-product nil
    "Product under `sql-interactive-mode'.")
  
 +(defvar sql-connection nil
 +  "Connection name if interactive session started by `sql-connect'.")
 +
  (defvar sql-product-alist
    '((ansi
       :name "ANSI"
       :font-lock sql-mode-ansi-font-lock-keywords)
 +
      (db2
       :name "DB2"
       :font-lock sql-mode-db2-font-lock-keywords
 -     :sqli-login nil
 -     :sqli-connect sql-connect-db2
 -     :sqli-prompt-regexp "^db2 => "
 -     :sqli-prompt-length 7)
 +     :sqli-program sql-db2-program
 +     :sqli-options sql-db2-options
 +     :sqli-login sql-db2-login-params
 +     :sqli-comint-func sql-comint-db2
 +     :prompt-regexp "^db2 => "
 +     :prompt-length 7
 +     :prompt-cont-regexp "^db2 (cont\.) => "
 +     :input-filter sql-escape-newlines-filter)
 +
      (informix
 +     :name "Informix"
       :font-lock sql-mode-informix-font-lock-keywords
 -     :sqli-login (database)
 -     :sqli-connect sql-connect-informix
 -     :sqli-prompt-regexp "^SQL> "
 -     :sqli-prompt-length 5)
 +     :sqli-program sql-informix-program
 +     :sqli-options sql-informix-options
 +     :sqli-login sql-informix-login-params
 +     :sqli-comint-func sql-comint-informix
 +     :prompt-regexp "^> "
 +     :prompt-length 2
 +     :syntax-alist ((?{ . "<") (?} . ">")))
 +
      (ingres
 +     :name "Ingres"
       :font-lock sql-mode-ingres-font-lock-keywords
 -     :sqli-login (database)
 -     :sqli-connect sql-connect-ingres
 -     :sqli-prompt-regexp "^\* "
 -     :sqli-prompt-length 2)
 +     :sqli-program sql-ingres-program
 +     :sqli-options sql-ingres-options
 +     :sqli-login sql-ingres-login-params
 +     :sqli-comint-func sql-comint-ingres
 +     :prompt-regexp "^\* "
 +     :prompt-length 2
 +     :prompt-cont-regexp "^\* ")
 +
      (interbase
 +     :name "Interbase"
       :font-lock sql-mode-interbase-font-lock-keywords
 -     :sqli-login (user password database)
 -     :sqli-connect sql-connect-interbase
 -     :sqli-prompt-regexp "^SQL> "
 -     :sqli-prompt-length 5)
 +     :sqli-program sql-interbase-program
 +     :sqli-options sql-interbase-options
 +     :sqli-login sql-interbase-login-params
 +     :sqli-comint-func sql-comint-interbase
 +     :prompt-regexp "^SQL> "
 +     :prompt-length 5)
 +
      (linter
 +     :name "Linter"
       :font-lock sql-mode-linter-font-lock-keywords
 -     :sqli-login (user password database server)
 -     :sqli-connect sql-connect-linter
 -     :sqli-prompt-regexp "^SQL>"
 -     :sqli-prompt-length 4)
 +     :sqli-program sql-linter-program
 +     :sqli-options sql-linter-options
 +     :sqli-login sql-linter-login-params
 +     :sqli-comint-func sql-comint-linter
 +     :prompt-regexp "^SQL>"
 +     :prompt-length 4)
 +
      (ms
 -     :name "MS SQLServer"
 +     :name "Microsoft"
       :font-lock sql-mode-ms-font-lock-keywords
 -     :sqli-login (user password server database)
 -     :sqli-connect sql-connect-ms
 -     :sqli-prompt-regexp "^[0-9]*>"
 -     :sqli-prompt-length 5
 -     :syntax-alist ((?@ . "w")))
 +     :sqli-program sql-ms-program
 +     :sqli-options sql-ms-options
 +     :sqli-login sql-ms-login-params
 +     :sqli-comint-func sql-comint-ms
 +     :prompt-regexp "^[0-9]*>"
 +     :prompt-length 5
 +     :syntax-alist ((?@ . "w"))
 +     :terminator ("^go" . "go"))
 +
      (mysql
       :name "MySQL"
 +     :free-software t
       :font-lock sql-mode-mysql-font-lock-keywords
 -     :sqli-login (user password database server)
 -     :sqli-connect sql-connect-mysql
 -     :sqli-prompt-regexp "^mysql> "
 -     :sqli-prompt-length 6)
 +     :sqli-program sql-mysql-program
 +     :sqli-options sql-mysql-options
 +     :sqli-login sql-mysql-login-params
 +     :sqli-comint-func sql-comint-mysql
 +     :list-all "SHOW TABLES;"
 +     :list-table "DESCRIBE %s;"
 +     :prompt-regexp "^mysql> "
 +     :prompt-length 6
 +     :prompt-cont-regexp "^    -> "
 +     :input-filter sql-remove-tabs-filter)
 +
      (oracle
 +     :name "Oracle"
       :font-lock sql-mode-oracle-font-lock-keywords
 -     :sqli-login (user password database)
 -     :sqli-connect sql-connect-oracle
 -     :sqli-prompt-regexp "^SQL> "
 -     :sqli-prompt-length 5
 -     :syntax-alist ((?$ . "w") (?# . "w")))
 +     :sqli-program sql-oracle-program
 +     :sqli-options sql-oracle-options
 +     :sqli-login sql-oracle-login-params
 +     :sqli-comint-func sql-comint-oracle
 +     :prompt-regexp "^SQL> "
 +     :prompt-length 5
 +     :prompt-cont-regexp "^\\s-*\\d+> "
 +     :syntax-alist ((?$ . "w") (?# . "w"))
 +     :terminator ("\\(^/\\|;\\)" . "/")
 +     :input-filter sql-placeholders-filter)
 +
      (postgres
 +     :name "Postgres"
 +     :free-software t
       :font-lock sql-mode-postgres-font-lock-keywords
 -     :sqli-login (user database server)
 -     :sqli-connect sql-connect-postgres
 -     :sqli-prompt-regexp "^.*[#>] *"
 -     :sqli-prompt-length 5)
 +     :sqli-program sql-postgres-program
 +     :sqli-options sql-postgres-options
 +     :sqli-login sql-postgres-login-params
 +     :sqli-comint-func sql-comint-postgres
 +     :list-all ("\\d+" . "\\dS+")
 +     :list-table ("\\d+ %s" . "\\dS+ %s")
 +     :prompt-regexp "^.*=[#>] "
 +     :prompt-length 5
 +     :prompt-cont-regexp "^.*[-(][#>] "
 +     :input-filter sql-remove-tabs-filter
 +     :terminator ("\\(^\\s-*\\\\g\\|;\\)" . ";"))
 +
      (solid
 +     :name "Solid"
       :font-lock sql-mode-solid-font-lock-keywords
 -     :sqli-login (user password server)
 -     :sqli-connect sql-connect-solid
 -     :sqli-prompt-regexp "^"
 -     :sqli-prompt-length 0)
 +     :sqli-program sql-solid-program
 +     :sqli-options sql-solid-options
 +     :sqli-login sql-solid-login-params
 +     :sqli-comint-func sql-comint-solid
 +     :prompt-regexp "^"
 +     :prompt-length 0)
 +
      (sqlite
       :name "SQLite"
 +     :free-software t
       :font-lock sql-mode-sqlite-font-lock-keywords
 -     :sqli-login (database)
 -     :sqli-connect sql-connect-sqlite
 -     :sqli-prompt-regexp "^sqlite> "
 -     :sqli-prompt-length 8)
 +     :sqli-program sql-sqlite-program
 +     :sqli-options sql-sqlite-options
 +     :sqli-login sql-sqlite-login-params
 +     :sqli-comint-func sql-comint-sqlite
 +     :list-all ".tables"
 +     :list-table ".schema %s"
 +     :prompt-regexp "^sqlite> "
 +     :prompt-length 8
 +     :prompt-cont-regexp "^   ...> "
 +     :terminator ";")
 +
      (sybase
 +     :name "Sybase"
       :font-lock sql-mode-sybase-font-lock-keywords
 -     :sqli-login (server user password database)
 -     :sqli-connect sql-connect-sybase
 -     :sqli-prompt-regexp "^SQL> "
 -     :sqli-prompt-length 5
 -     :syntax-alist ((?@ . "w")))
 +     :sqli-program sql-sybase-program
 +     :sqli-options sql-sybase-options
 +     :sqli-login sql-sybase-login-params
 +     :sqli-comint-func sql-comint-sybase
 +     :prompt-regexp "^SQL> "
 +     :prompt-length 5
 +     :syntax-alist ((?@ . "w"))
 +     :terminator ("^go" . "go"))
      )
 -  "This variable contains a list of product features for each of the
 -SQL products handled by `sql-mode'.  Without an entry in this list a
 -product will not be properly highlighted and will not support
 -`sql-interactive-mode'.
 +  "An alist of product specific configuration settings.
 +
 +Without an entry in this list a product will not be properly
 +highlighted and will not support `sql-interactive-mode'.
  
  Each element in the list is in the following format:
  
   \(PRODUCT FEATURE VALUE ...)
  
 -where PRODUCT is the appropriate value of `sql-product'.  The product
 -name is then followed by FEATURE-VALUE pairs.  If a FEATURE is not
 -specified, its VALUE is treated as nil.  FEATURE must be one of the
 -following:
 +where PRODUCT is the appropriate value of `sql-product'.  The
 +product name is then followed by FEATURE-VALUE pairs.  If a
 +FEATURE is not specified, its VALUE is treated as nil.  FEATURE
 +may be any one of the following:
 +
 + :name                  string containing the displayable name of
 +                        the product.
 +
 + :free-software         is the product Free (as in Freedom) software?
  
   :font-lock             name of the variable containing the product
                          specific font lock highlighting patterns.
  
 - :sqli-login            a list of login parameters (i.e., user,
 -                        password, database and server) needed to
 -                        connect to the database.
 + :sqli-program          name of the variable containing the product
 +                        specific interactive program name.
 +
 + :sqli-options          name of the variable containing the list
 +                        of product specific options.
  
 - :sqli-connect          the name of a function which accepts no
 + :sqli-login            name of the variable containing the list of
 +                        login parameters (i.e., user, password,
 +                        database and server) needed to connect to
 +                        the database.
 +
 + :sqli-comint-func      name of a function which accepts no
                          parameters that will use the values of
                          `sql-user', `sql-password',
                          `sql-database' and `sql-server' to open a
                          database.  Do product specific
                          configuration of comint in this function.
  
 - :sqli-prompt-regexp    a regular expression string that matches
 + :list-all              Command string or function which produces
 +                        a listing of all objects in the database.
 +                        If it's a cons cell, then the car
 +                        produces the standard list of objects and
 +                        the cdr produces an enhanced list of
 +                        objects.  What \"enhanced\" means is
 +                        dependent on the SQL product and may not
 +                        exist.  In general though, the
 +                        \"enhanced\" list should include visible
 +                        objects from other schemas.
 +
 + :list-table            Command string or function which produces
 +                        a detailed listing of a specific database
 +                        table.  If its a cons cell, then the car
 +                        produces the standard list and the cdr
 +                        produces an enhanced list.
 +
 + :prompt-regexp         regular expression string that matches
                          the prompt issued by the product
 -                        interpreter.  (Not needed in 21.3+)
 -
 - :sqli-prompt-length    the length of the prompt on the line.(Not
 -                        needed in 21.3+)
 -
 - :syntax-alist          an alist of syntax table entries to enable
 -                        special character treatment by font-lock and
 -                        imenu. ")
 +                        interpreter.
 +
 + :prompt-length         length of the prompt on the line.
 +
 + :prompt-cont-regexp    regular expression string that matches
 +                        the continuation prompt issued by the
 +                        product interpreter.
 +
 + :input-filter          function which can filter strings sent to
 +                        the command interpreter.  It is also used
 +                        by the `sql-send-string',
 +                        `sql-send-region', `sql-send-paragraph'
 +                        and `sql-send-buffer' functions.  The
 +                        function is passed the string sent to the
 +                        command interpreter and must return the
 +                        filtered string.  May also be a list of
 +                        such functions.
 +
 + :terminator            the terminator to be sent after a
 +                        `sql-send-string', `sql-send-region',
 +                        `sql-send-paragraph' and
 +                        `sql-send-buffer' command.  May be the
 +                        literal string or a cons of a regexp to
 +                        match an existing terminator in the
 +                        string and the terminator to be used if
 +                        its absent.  By default \";\".
 +
 + :syntax-alist          alist of syntax table entries to enable
 +                        special character treatment by font-lock
 +                        and imenu.
 +
 +Other features can be stored but they will be ignored.  However,
 +you can develop new functionality which is product independent by
 +using `sql-get-product-feature' to lookup the product specific
 +settings.")
 +
 +(defvar sql-indirect-features
 +  '(:font-lock :sqli-program :sqli-options :sqli-login))
 +
 +(defcustom sql-connection-alist nil
 +  "An alist of connection parameters for interacting with a SQL
 +  product.
 +
 +Each element of the alist is as follows:
 +
 +  \(CONNECTION \(SQL-VARIABLE VALUE) ...)
 +
 +Where CONNECTION is a symbol identifying the connection, SQL-VARIABLE
 +is the symbol name of a SQL mode variable, and VALUE is the value to
 +be assigned to the variable.
 +
 +The most common SQL-VARIABLE settings associated with a connection
 +are:
 +
 +  `sql-product'
 +  `sql-user'
 +  `sql-password'
 +  `sql-port'
 +  `sql-server'
 +  `sql-database'
 +
 +If a SQL-VARIABLE is part of the connection, it will not be
 +prompted for during login."
 +
 +  :type `(alist :key-type (string :tag "Connection")
 +                :value-type
 +                (set
 +                 (group (const :tag "Product"  sql-product)
 +                        (choice
 +                         ,@(mapcar (lambda (prod-info)
 +                                     `(const :tag
 +                                             ,(or (plist-get (cdr prod-info) :name)
 +                                                  (capitalize (symbol-name (car prod-info))))
 +                                             (quote ,(car prod-info))))
 +                                   sql-product-alist)))
 +                 (group (const :tag "Username" sql-user)     string)
 +                 (group (const :tag "Password" sql-password) string)
 +                 (group (const :tag "Server"   sql-server)   string)
 +                 (group (const :tag "Database" sql-database) string)
 +                 (group (const :tag "Port"     sql-port)     integer)
 +                 (repeat :inline t
 +                         (list :tab "Other"
 +                               (symbol :tag " Variable Symbol")
 +                               (sexp   :tag "Value Expression")))))
 +  :version "24.1"
 +  :group 'SQL)
  
  (defcustom sql-product 'ansi
 -  "*Select the SQL database product used so that buffers can be
 +  "Select the SQL database product used so that buffers can be
  highlighted properly when you open them."
    :type `(choice
            ,@(mapcar (lambda (prod-info)
                                     (capitalize (symbol-name (car prod-info))))
                                ,(car prod-info)))
                      sql-product-alist))
 -  :group 'SQL)
 +  :group 'SQL
 +  :safe 'symbolp)
 +(defvaralias 'sql-dialect 'sql-product)
  
 -;; misc customization of sql.el behavior
 +;; misc customization of sql.el behaviour
  
  (defcustom sql-electric-stuff nil
    "Treat some input as electric.
@@@ -654,44 -424,14 +655,44 @@@ current input in the SQLi buffer to th
    :version "20.8"
    :group 'SQL)
  
 -(defcustom sql-pop-to-buffer-after-send-region nil
 -  "*If t, pop to the buffer SQL statements are sent to.
 +(defcustom sql-send-terminator nil
 +  "When non-nil, add a terminator to text sent to the SQL interpreter.
 +
 +When text is sent to the SQL interpreter (via `sql-send-string',
 +`sql-send-region', `sql-send-paragraph' or `sql-send-buffer'), a
 +command terminator can be automatically sent as well.  The
 +terminator is not sent, if the string sent already ends with the
 +terminator.
 +
 +If this value is t, then the default command terminator for the
 +SQL interpreter is sent.  If this value is a string, then the
 +string is sent.
 +
 +If the value is a cons cell of the form (PAT . TERM), then PAT is
 +a regexp used to match the terminator in the string and TERM is
 +the terminator to be sent.  This form is useful if the SQL
 +interpreter has more than one way of submitting a SQL command.
 +The PAT regexp can match any of them, and TERM is the way we do
 +it automatically."
 +
 +  :type '(choice (const  :tag "No Terminator" nil)
 +               (const  :tag "Default Terminator" t)
 +               (string :tag "Terminator String")
 +               (cons   :tag "Terminator Pattern and String"
 +                       (string :tag "Terminator Pattern")
 +                       (string :tag "Terminator String")))
 +  :version "22.2"
 +  :group 'SQL)
  
 -After a call to `sql-send-region' or `sql-send-buffer',
 -the window is split and the SQLi buffer is shown.  If this
 -variable is not nil, that buffer's window will be selected
 -by calling `pop-to-buffer'.  If this variable is nil, that
 -buffer is shown using `display-buffer'."
 +(defcustom sql-pop-to-buffer-after-send-region nil
 +  "When non-nil, pop to the buffer SQL statements are sent to.
 +
 +After a call to `sql-sent-string', `sql-send-region',
 +`sql-send-paragraph' or `sql-send-buffer', the window is split
 +and the SQLi buffer is shown.  If this variable is not nil, that
 +buffer's window will be selected by calling `pop-to-buffer'.  If
 +this variable is nil, that buffer is shown using
 +`display-buffer'."
    :type 'boolean
    :group 'SQL)
  
      ("Functions" "^\\s-*\\(create\\s-+\\(\\w+\\s-+\\)*\\)?function\\s-+\\(\\w+\\)" 3)
      ("Procedures" "^\\s-*\\(create\\s-+\\(\\w+\\s-+\\)*\\)?proc\\(edure\\)?\\s-+\\(\\w+\\)" 4)
      ("Packages" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*package\\s-+\\(body\\s-+\\)?\\(\\w+\\)" 3)
 +    ("Types" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*type\\s-+\\(body\\s-+\\)?\\(\\w+\\)" 3)
      ("Indexes" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*index\\s-+\\(\\w+\\)" 2)
      ("Tables/Views" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*\\(table\\|view\\)\\s-+\\(\\w+\\)" 3))
    "Define interesting points in the SQL buffer for `imenu'.
@@@ -718,7 -457,7 +719,7 @@@ a local variable."
  ;; history file
  
  (defcustom sql-input-ring-file-name nil
 -  "*If non-nil, name of the file to read/write input history.
 +  "If non-nil, name of the file to read/write input history.
  
  You have to set this variable if you want the history of your commands
  saved from one Emacs session to the next.  If this variable is set,
@@@ -735,7 -474,7 +736,7 @@@ Note that the size of the input histor
    :group 'SQL)
  
  (defcustom sql-input-ring-separator "\n--\n"
 -  "*Separator between commands in the history file.
 +  "Separator between commands in the history file.
  
  If set to \"\\n\", each line in the history file will be interpreted as
  one command.  Multi-line commands are split into several commands when
@@@ -753,17 -492,17 +754,17 @@@ commands when the input history is read
  ;; The usual hooks
  
  (defcustom sql-interactive-mode-hook '()
 -  "*Hook for customizing `sql-interactive-mode'."
 +  "Hook for customizing `sql-interactive-mode'."
    :type 'hook
    :group 'SQL)
  
  (defcustom sql-mode-hook '()
 -  "*Hook for customizing `sql-mode'."
 +  "Hook for customizing `sql-mode'."
    :type 'hook
    :group 'SQL)
  
  (defcustom sql-set-sqli-hook '()
 -  "*Hook for reacting to changes of `sql-buffer'.
 +  "Hook for reacting to changes of `sql-buffer'.
  
  This is called by `sql-set-sqli-buffer' when the value of `sql-buffer'
  is changed."
  ;; Customization for Oracle
  
  (defcustom sql-oracle-program "sqlplus"
 -  "*Command to start sqlplus by Oracle.
 +  "Command to start sqlplus by Oracle.
  
  Starts `sql-interactive-mode' after doing some setup.
  
 -On Windows, \"sqlplus\" usually starts the sqlplus \"GUI\".  In order to
 -start the sqlplus console, use \"plus33\" or something similar.  You
 -will find the file in your Orant\\bin directory.
 -
 -The program can also specify a TCP connection.  See `make-comint'."
 +On Windows, \"sqlplus\" usually starts the sqlplus \"GUI\".  In order
 +to start the sqlplus console, use \"plus33\" or something similar.
 +You will find the file in your Orant\\bin directory."
    :type 'file
    :group 'SQL)
  
  (defcustom sql-oracle-options nil
 -  "*List of additional options for `sql-oracle-program'."
 +  "List of additional options for `sql-oracle-program'."
    :type '(repeat string)
    :version "20.8"
    :group 'SQL)
  
 -;; Customization for SQLite
 +(defcustom sql-oracle-login-params '(user password database)
 +  "List of login parameters needed to connect to Oracle."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
  
 -(defcustom sql-sqlite-program "sqlite"
 -  "*Command to start SQLite.
 +(defcustom sql-oracle-scan-on t
 +  "Non-nil if placeholders should be replaced in Oracle SQLi.
  
 -Starts `sql-interactive-mode' after doing some setup.
 +When non-nil, Emacs will scan text sent to sqlplus and prompt
 +for replacement text for & placeholders as sqlplus does.  This
 +is needed on Windows where sqlplus output is buffered and the
 +prompts are not shown until after the text is entered.
 +
 +You will probably want to issue the following command in sqlplus
 +to be safe:
 +
 +    SET SCAN OFF"
 +  :type 'boolean
 +  :group 'SQL)
 +
 +;; Customization for SQLite
  
 -The program can also specify a TCP connection.  See `make-comint'."
 +(defcustom sql-sqlite-program (or (executable-find "sqlite3")
 +                                  (executable-find "sqlite")
 +                                  "sqlite")
 +  "Command to start SQLite.
 +
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
  (defcustom sql-sqlite-options nil
 -  "*List of additional options for `sql-sqlite-program'."
 +  "List of additional options for `sql-sqlite-program'."
    :type '(repeat string)
    :version "20.8"
    :group 'SQL)
  
 +(defcustom sql-sqlite-login-params '((database :file ".*\\.\\(db\\|sqlite[23]?\\)"))
 +  "List of login parameters needed to connect to SQLite."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  ;; Customization for MySql
  
  (defcustom sql-mysql-program "mysql"
 -  "*Command to start mysql by TcX.
 -
 -Starts `sql-interactive-mode' after doing some setup.
 +  "Command to start mysql by TcX.
  
 -The program can also specify a TCP connection.  See `make-comint'."
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
  (defcustom sql-mysql-options nil
 -  "*List of additional options for `sql-mysql-program'.
 +  "List of additional options for `sql-mysql-program'.
  The following list of options is reported to make things work
  on Windows: \"-C\" \"-t\" \"-f\" \"-n\"."
    :type '(repeat string)
    :version "20.8"
    :group 'SQL)
  
 +(defcustom sql-mysql-login-params '(user password database server)
 +  "List of login parameters needed to connect to MySql."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  ;; Customization for Solid
  
  (defcustom sql-solid-program "solsql"
 -  "*Command to start SOLID SQL Editor.
 -
 -Starts `sql-interactive-mode' after doing some setup.
 +  "Command to start SOLID SQL Editor.
  
 -The program can also specify a TCP connection.  See `make-comint'."
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
 -;; Customization for SyBase
 +(defcustom sql-solid-login-params '(user password server)
 +  "List of login parameters needed to connect to Solid."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
 +;; Customization for Sybase
  
  (defcustom sql-sybase-program "isql"
 -  "*Command to start isql by SyBase.
 -
 -Starts `sql-interactive-mode' after doing some setup.
 +  "Command to start isql by Sybase.
  
 -The program can also specify a TCP connection.  See `make-comint'."
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
  (defcustom sql-sybase-options nil
 -  "*List of additional options for `sql-sybase-program'.
 +  "List of additional options for `sql-sybase-program'.
  Some versions of isql might require the -n option in order to work."
    :type '(repeat string)
    :version "20.8"
    :group 'SQL)
  
 +(defcustom sql-sybase-login-params '(server user password database)
 +  "List of login parameters needed to connect to Sybase."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  ;; Customization for Informix
  
  (defcustom sql-informix-program "dbaccess"
 -  "*Command to start dbaccess by Informix.
 -
 -Starts `sql-interactive-mode' after doing some setup.
 +  "Command to start dbaccess by Informix.
  
 -The program can also specify a TCP connection.  See `make-comint'."
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
 +(defcustom sql-informix-login-params '(database)
 +  "List of login parameters needed to connect to Informix."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  ;; Customization for Ingres
  
  (defcustom sql-ingres-program "sql"
 -  "*Command to start sql by Ingres.
 +  "Command to start sql by Ingres.
  
 -Starts `sql-interactive-mode' after doing some setup.
 -
 -The program can also specify a TCP connection.  See `make-comint'."
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
 +(defcustom sql-ingres-login-params '(database)
 +  "List of login parameters needed to connect to Ingres."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  ;; Customization for Microsoft
  
  (defcustom sql-ms-program "osql"
 -  "*Command to start osql by Microsoft.
 +  "Command to start osql by Microsoft.
  
 -Starts `sql-interactive-mode' after doing some setup.
 -
 -The program can also specify a TCP connection.  See `make-comint'."
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
  (defcustom sql-ms-options '("-w" "300" "-n")
    ;; -w is the linesize
 -  "*List of additional options for `sql-ms-program'."
 +  "List of additional options for `sql-ms-program'."
    :type '(repeat string)
    :version "22.1"
    :group 'SQL)
  
 +(defcustom sql-ms-login-params '(user password server database)
 +  "List of login parameters needed to connect to Microsoft."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  ;; Customization for Postgres
  
  (defcustom sql-postgres-program "psql"
    "Command to start psql by Postgres.
  
 -Starts `sql-interactive-mode' after doing some setup.
 -
 -The program can also specify a TCP connection.  See `make-comint'."
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
  (defcustom sql-postgres-options '("-P" "pager=off")
 -  "*List of additional options for `sql-postgres-program'.
 +  "List of additional options for `sql-postgres-program'.
  The default setting includes the -P option which breaks older versions
  of the psql client (such as version 6.5.3).  The -P option is equivalent
  to the --pset option.  If you want the psql to prompt you for a user
@@@ -966,77 -658,55 +967,77 @@@ add your name with a \"-U\" prefix (suc
    :version "20.8"
    :group 'SQL)
  
 +(defcustom sql-postgres-login-params `((user :default ,(user-login-name))
 +                                       (database :default ,(user-login-name))
 +                                       server)
 +  "List of login parameters needed to connect to Postgres."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  ;; Customization for Interbase
  
  (defcustom sql-interbase-program "isql"
 -  "*Command to start isql by Interbase.
 +  "Command to start isql by Interbase.
  
 -Starts `sql-interactive-mode' after doing some setup.
 -
 -The program can also specify a TCP connection.  See `make-comint'."
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
  (defcustom sql-interbase-options nil
 -  "*List of additional options for `sql-interbase-program'."
 +  "List of additional options for `sql-interbase-program'."
    :type '(repeat string)
    :version "20.8"
    :group 'SQL)
  
 +(defcustom sql-interbase-login-params '(user password database)
 +  "List of login parameters needed to connect to Interbase."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  ;; Customization for DB2
  
  (defcustom sql-db2-program "db2"
 -  "*Command to start db2 by IBM.
 +  "Command to start db2 by IBM.
  
 -Starts `sql-interactive-mode' after doing some setup.
 -
 -The program can also specify a TCP connection.  See `make-comint'."
 +Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
  (defcustom sql-db2-options nil
 -  "*List of additional options for `sql-db2-program'."
 +  "List of additional options for `sql-db2-program'."
    :type '(repeat string)
    :version "20.8"
    :group 'SQL)
  
 +(defcustom sql-db2-login-params nil
 +  "List of login parameters needed to connect to DB2."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  ;; Customization for Linter
  
  (defcustom sql-linter-program "inl"
 -  "*Command to start inl by RELEX.
 +  "Command to start inl by RELEX.
  
  Starts `sql-interactive-mode' after doing some setup."
    :type 'file
    :group 'SQL)
  
  (defcustom sql-linter-options nil
 -  "*List of additional options for `sql-linter-program'."
 +  "List of additional options for `sql-linter-program'."
    :type '(repeat string)
    :version "21.3"
    :group 'SQL)
  
 +(defcustom sql-linter-login-params '(user password database server)
 +  "Login parameters to needed to connect to Linter."
 +  :type 'sql-login-params
 +  :version "24.1"
 +  :group 'SQL)
 +
  \f
  
  ;;; Variables which do not need customization
  
  ;; Passwords are not kept in a history.
  
 +(defvar sql-product-history nil
 +  "History of products used.")
 +
 +(defvar sql-connection-history nil
 +  "History of connections used.")
 +
  (defvar sql-buffer nil
    "Current SQLi buffer.
  
@@@ -1077,33 -741,11 +1078,33 @@@ You can change `sql-prompt-regexp' on `
  
  You can change `sql-prompt-length' on `sql-interactive-mode-hook'.")
  
 +(defvar sql-prompt-cont-regexp nil
 +  "Prompt pattern of statement continuation prompts.")
 +
  (defvar sql-alternate-buffer-name nil
    "Buffer-local string used to possibly rename the SQLi buffer.
  
  Used by `sql-rename-buffer'.")
  
 +(defun sql-buffer-live-p (buffer &optional product)
 +  "Returns non-nil if the process associated with buffer is live.
 +
 +BUFFER can be a buffer object or a buffer name.  The buffer must
 +be a live buffer, have an running process attached to it, be in
 +`sql-interactive-mode', and, if PRODUCT is specified, it's
 +`sql-product' must match."
 +
 +  (when buffer
 +    (setq buffer (get-buffer buffer))
 +    (and buffer
 +         (buffer-live-p buffer)
 +         (get-buffer-process buffer)
 +         (comint-check-proc buffer)
 +         (with-current-buffer buffer
 +           (and (derived-mode-p 'sql-interactive-mode)
 +                (or (not product)
 +                    (eq product sql-product)))))))
 +
  ;; Keymap for sql-interactive-mode.
  
  (defvar sql-interactive-mode-map
      (define-key map (kbd "O") 'sql-magic-go)
      (define-key map (kbd "o") 'sql-magic-go)
      (define-key map (kbd ";") 'sql-magic-semicolon)
 +    (define-key map (kbd "C-c C-l a") 'sql-list-all)
 +    (define-key map (kbd "C-c C-l t") 'sql-list-table)
      map)
    "Mode map used for `sql-interactive-mode'.
  Based on `comint-mode-map'.")
      (define-key map (kbd "C-c C-r") 'sql-send-region)
      (define-key map (kbd "C-c C-s") 'sql-send-string)
      (define-key map (kbd "C-c C-b") 'sql-send-buffer)
 +    (define-key map (kbd "C-c C-i") 'sql-product-interactive)
 +    (define-key map (kbd "C-c C-l a") 'sql-list-all)
 +    (define-key map (kbd "C-c C-l t") 'sql-list-table)
      map)
    "Mode map used for `sql-mode'.")
  
   sql-mode-menu sql-mode-map
   "Menu for `sql-mode'."
   `("SQL"
 -   ["Send Paragraph" sql-send-paragraph (and (buffer-live-p sql-buffer)
 -                                           (get-buffer-process sql-buffer))]
 -   ["Send Region" sql-send-region (and (or (and (boundp 'mark-active); Emacs
 -                                              mark-active)
 -                                         (mark t)); XEmacs
 -                                     (buffer-live-p sql-buffer)
 -                                     (get-buffer-process sql-buffer))]
 -   ["Send Buffer" sql-send-buffer (and (buffer-live-p sql-buffer)
 -                                     (get-buffer-process sql-buffer))]
 -   ["Send String" sql-send-string t]
 -   ["--" nil nil]
 -   ["Start SQLi session" sql-product-interactive (sql-product-feature :sqli-connect)]
 +   ["Send Paragraph" sql-send-paragraph (sql-buffer-live-p sql-buffer)]
 +   ["Send Region" sql-send-region (and mark-active
 +                                     (sql-buffer-live-p sql-buffer))]
 +   ["Send Buffer" sql-send-buffer (sql-buffer-live-p sql-buffer)]
 +   ["Send String" sql-send-string (sql-buffer-live-p sql-buffer)]
 +   "--"
 +   ["List all objects" sql-list-all (sql-buffer-live-p sql-buffer)]
 +   ["List table details" sql-list-table (sql-buffer-live-p sql-buffer)]
 +   "--"
 +   ["Start SQLi session" sql-product-interactive
 +    :visible (not sql-connection-alist)
 +    :enable (sql-get-product-feature sql-product :sqli-comint-func)]
 +   ("Start..."
 +    :visible sql-connection-alist
 +    :filter sql-connection-menu-filter
 +    "--"
 +    ["New SQLi Session" sql-product-interactive (sql-get-product-feature sql-product :sqli-comint-func)])
 +   ["--"
 +    :visible sql-connection-alist]
     ["Show SQLi buffer" sql-show-sqli-buffer t]
     ["Set SQLi buffer" sql-set-sqli-buffer t]
     ["Pop to SQLi buffer after send"
   sql-interactive-mode-menu sql-interactive-mode-map
   "Menu for `sql-interactive-mode'."
   '("SQL"
 -   ["Rename Buffer" sql-rename-buffer t]))
 +   ["Rename Buffer" sql-rename-buffer t]
 +   ["Save Connection" sql-save-connection (not sql-connection)]
 +   "--"
 +   ["List all objects" sql-list-all t]
 +   ["List table details" sql-list-table t]))
  
  ;; Abbreviations -- if you want more of them, define them in your
  ;; ~/.emacs file.  Abbrevs have to be enabled in your ~/.emacs, too.
@@@ -1260,64 -886,25 +1261,64 @@@ The pattern matches the name in a CREAT
  statement.  The format of variable should be a valid
  `font-lock-keywords' entry.")
  
 -(defmacro sql-keywords-re (&rest keywords)
 -  "Compile-time generation of regexp matching any one of KEYWORDS."
 -  `(eval-when-compile
 -     (concat "\\b"
 -           (regexp-opt ',keywords t)
 -           "\\b")))
 +;; While there are international and American standards for SQL, they
 +;; are not followed closely, and most vendors offer significant
 +;; capabilities beyond those defined in the standard specifications.
 +
 +;; SQL mode provides support for hilighting based on the product.  In
 +;; addition to hilighting the product keywords, any ANSI keywords not
 +;; used by the product are also hilighted.  This will help identify
 +;; keywords that could be restricted in future versions of the product
 +;; or might be a problem if ported to another product.
 +
 +;; To reduce the complexity and size of the regular expressions
 +;; generated to match keywords, ANSI keywords are filtered out of
 +;; product keywords if they are equivalent.  To do this, we define a
 +;; function `sql-font-lock-keywords-builder' that removes any keywords
 +;; that are matched by the ANSI patterns and results in the same face
 +;; being applied.  For this to work properly, we must play some games
 +;; with the execution and compile time behavior.  This code is a
 +;; little tricky but works properly.
 +
 +;; When defining the keywords for individual products you should
 +;; include all of the keywords that you want matched.  The filtering
 +;; against the ANSI keywords will be automatic if you use the
 +;; `sql-font-lock-keywords-builder' function and follow the
 +;; implementation pattern used for the other products in this file.
  
 -(defvar sql-mode-ansi-font-lock-keywords
 -  (let ((ansi-funcs (sql-keywords-re
 -"abs" "avg" "bit_length" "cardinality" "cast" "char_length"
 -"character_length" "coalesce" "convert" "count" "current_date"
 -"current_path" "current_role" "current_time" "current_timestamp"
 -"current_user" "extract" "localtime" "localtimestamp" "lower" "max"
 -"min" "mod" "nullif" "octet_length" "overlay" "placing" "session_user"
 -"substring" "sum" "system_user" "translate" "treat" "trim" "upper"
 -"user"
 -))
 +(eval-when-compile
 +  (defvar sql-mode-ansi-font-lock-keywords)
 +  (setq sql-mode-ansi-font-lock-keywords nil))
 +
 +(eval-and-compile
 +  (defun sql-font-lock-keywords-builder (face boundaries &rest keywords)
 +    "Generation of regexp matching any one of KEYWORDS."
 +
 +    (let ((bdy (or boundaries '("\\b" . "\\b")))
 +        kwd)
 +
 +      ;; Remove keywords that are defined in ANSI
 +      (setq kwd keywords)
 +      (dolist (k keywords)
 +      (catch 'next
 +        (dolist (a sql-mode-ansi-font-lock-keywords)
 +          (when (and (eq face (cdr a))
 +                     (eq (string-match (car a) k 0) 0)
 +                     (eq (match-end 0) (length k)))
 +            (setq kwd (delq k kwd))
 +            (throw 'next nil)))))
 +
 +      ;; Create a properly formed font-lock-keywords item
 +      (cons (concat (car bdy)
 +                  (regexp-opt kwd t)
 +                  (cdr bdy))
 +          face))))
  
 -      (ansi-non-reserved (sql-keywords-re
 +(eval-when-compile
 +  (setq sql-mode-ansi-font-lock-keywords
 +      (list
 +       ;; ANSI Non Reserved keywords
 +       (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
  "ada" "asensitive" "assignment" "asymmetric" "atomic" "between"
  "bitvar" "called" "catalog_name" "chain" "character_set_catalog"
  "character_set_name" "character_set_schema" "checked" "class_origin"
  "trigger_name" "trigger_schema" "type" "uncommitted" "unnamed"
  "user_defined_type_catalog" "user_defined_type_name"
  "user_defined_type_schema"
 -))
 -
 -      (ansi-reserved (sql-keywords-re
 +)
 +       ;; ANSI Reserved keywords
 +       (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
  "absolute" "action" "add" "admin" "after" "aggregate" "alias" "all"
  "allocate" "alter" "and" "any" "are" "as" "asc" "assertion" "at"
  "authorization" "before" "begin" "both" "breadth" "by" "call"
  "trigger" "true" "under" "union" "unique" "unknown" "unnest" "update"
  "usage" "using" "value" "values" "variable" "view" "when" "whenever"
  "where" "with" "without" "work" "write" "year"
 -))
 +)
  
 -      (ansi-types (sql-keywords-re
 +       ;; ANSI Functions
 +       (sql-font-lock-keywords-builder 'font-lock-builtin-face nil
 +"abs" "avg" "bit_length" "cardinality" "cast" "char_length"
 +"character_length" "coalesce" "convert" "count" "current_date"
 +"current_path" "current_role" "current_time" "current_timestamp"
 +"current_user" "extract" "localtime" "localtimestamp" "lower" "max"
 +"min" "mod" "nullif" "octet_length" "overlay" "placing" "session_user"
 +"substring" "sum" "system_user" "translate" "treat" "trim" "upper"
 +"user"
 +)
 +       ;; ANSI Data Types
 +       (sql-font-lock-keywords-builder 'font-lock-type-face nil
  "array" "binary" "bit" "blob" "boolean" "char" "character" "clob"
  "date" "dec" "decimal" "double" "float" "int" "integer" "interval"
  "large" "national" "nchar" "nclob" "numeric" "object" "precision"
  "real" "ref" "row" "scope" "smallint" "time" "timestamp" "varchar"
  "varying" "zone"
 -)))
 -
 -    `((,ansi-non-reserved . font-lock-keyword-face)
 -      (,ansi-reserved     . font-lock-keyword-face)
 -      (,ansi-funcs        . font-lock-builtin-face)
 -      (,ansi-types        . font-lock-type-face)))
 +))))
  
 +(defvar sql-mode-ansi-font-lock-keywords
 +  (eval-when-compile sql-mode-ansi-font-lock-keywords)
    "ANSI SQL keywords used by font-lock.
  
  This variable is used by `sql-mode' and `sql-interactive-mode'.  The
@@@ -1415,54 -994,7 +1416,54 @@@ you define your own `sql-mode-ansi-font
  to add functions and PL/SQL keywords.")
  
  (defvar sql-mode-oracle-font-lock-keywords
 -  (let ((oracle-functions (sql-keywords-re
 +  (eval-when-compile
 +    (list
 +     ;; Oracle SQL*Plus Commands
 +     (cons
 +      (concat
 +       "^\\s-*\\(?:\\(?:" (regexp-opt '(
 +"@" "@@" "accept" "append" "archive" "attribute" "break"
 +"btitle" "change" "clear" "column" "connect" "copy" "define"
 +"del" "describe" "disconnect" "edit" "execute" "exit" "get" "help"
 +"host" "input" "list" "password" "pause" "print" "prompt" "recover"
 +"remark" "repfooter" "repheader" "run" "save" "show" "shutdown"
 +"spool" "start" "startup" "store" "timing" "ttitle" "undefine"
 +"variable" "whenever"
 +) t)
 +
 +       "\\)\\|"
 +       "\\(?:compute\\s-+\\(?:avg\\|cou\\|min\\|max\\|num\\|sum\\|std\\|var\\)\\)\\|"
 +       "\\(?:set\\s-+\\("
 +
 +       (regexp-opt
 +      '("appi" "appinfo" "array" "arraysize" "auto" "autocommit"
 +        "autop" "autoprint" "autorecovery" "autot" "autotrace" "blo"
 +        "blockterminator" "buffer" "closecursor" "cmds" "cmdsep"
 +        "colsep" "com" "compatibility" "con" "concat" "constraint"
 +        "constraints" "copyc" "copycommit" "copytypecheck" "database"
 +        "def" "define" "document" "echo" "editf" "editfile" "emb"
 +        "embedded" "esc" "escape" "feed" "feedback" "flagger" "flu"
 +        "flush" "hea" "heading" "heads" "headsep" "instance" "lin"
 +        "linesize" "lobof" "loboffset" "logsource" "long" "longc"
 +        "longchunksize" "maxdata" "newp" "newpage" "null" "num"
 +        "numf" "numformat" "numwidth" "pages" "pagesize" "pau"
 +        "pause" "recsep" "recsepchar" "role" "scan" "serveroutput"
 +        "shift" "shiftinout" "show" "showmode" "space" "sqlbl"
 +        "sqlblanklines" "sqlc" "sqlcase" "sqlco" "sqlcontinue" "sqln"
 +        "sqlnumber" "sqlp" "sqlpluscompat" "sqlpluscompatibility"
 +        "sqlpre" "sqlprefix" "sqlprompt" "sqlt" "sqlterminator"
 +        "statement_id" "suf" "suffix" "tab" "term" "termout" "ti"
 +        "time" "timi" "timing" "transaction" "trim" "trimout" "trims"
 +        "trimspool" "truncate" "und" "underline" "ver" "verify" "wra"
 +        "wrap")) "\\)\\)"
 +
 +       "\\)\\b.*"
 +       )
 +      'font-lock-doc-face)
 +     '("^\\s-*rem\\(?:ark\\)?\\>.*" . font-lock-comment-face)
 +
 +     ;; Oracle Functions
 +     (sql-font-lock-keywords-builder 'font-lock-builtin-face nil
  "abs" "acos" "add_months" "ascii" "asciistr" "asin" "atan" "atan2"
  "avg" "bfilename" "bin_to_num" "bitand" "cast" "ceil" "chartorowid"
  "chr" "coalesce" "compose" "concat" "convert" "corr" "cos" "cosh"
  "userenv" "var_pop" "var_samp" "variance" "vsize" "width_bucket" "xml"
  "xmlagg" "xmlattribute" "xmlcolattval" "xmlconcat" "xmlelement"
  "xmlforest" "xmlsequence" "xmltransform"
 -))
 -
 -      (oracle-keywords (sql-keywords-re
 +)
 +     ;; Oracle Keywords
 +     (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
  "abort" "access" "accessed" "account" "activate" "add" "admin"
  "advise" "after" "agent" "aggregate" "all" "allocate" "allow" "alter"
  "always" "analyze" "ancillary" "and" "any" "apply" "archive"
  "use" "using" "validate" "validation" "value" "values" "variable"
  "varray" "version" "view" "wait" "when" "whenever" "where" "with"
  "without" "wnds" "wnps" "work" "write" "xmldata" "xmlschema" "xmltype"
 -))
 -
 -      (oracle-types (sql-keywords-re
 +)
 +     ;; Oracle Data Types
 +     (sql-font-lock-keywords-builder 'font-lock-type-face nil
  "bfile" "blob" "byte" "char" "character" "clob" "date" "dec" "decimal"
  "double" "float" "int" "integer" "interval" "long" "national" "nchar"
  "nclob" "number" "numeric" "nvarchar2" "precision" "raw" "real"
  "rowid" "second" "smallint" "time" "timestamp" "urowid" "varchar"
  "varchar2" "varying" "year" "zone"
 -))
 +)
  
 -      (plsql-functions (sql-keywords-re
 +     ;; Oracle PL/SQL Attributes
 +     (sql-font-lock-keywords-builder 'font-lock-builtin-face '("" . "\\b")
  "%bulk_rowcount" "%found" "%isopen" "%notfound" "%rowcount" "%rowtype"
 -"%type" "extend" "prior"
 -))
 +"%type"
 +)
 +
 +     ;; Oracle PL/SQL Functions
 +     (sql-font-lock-keywords-builder 'font-lock-builtin-face nil
 +"extend" "prior"
 +)
  
 -      (plsql-keywords (sql-keywords-re
 +     ;; Oracle PL/SQL Keywords
 +     (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
  "autonomous_transaction" "bulk" "char_base" "collect" "constant"
  "cursor" "declare" "do" "elsif" "exception_init" "execute" "exit"
  "extends" "false" "fetch" "forall" "goto" "hour" "if" "interface"
  "separate" "serially_reusable" "sql" "sqlcode" "sqlerrm" "subtype"
  "the" "timezone_abbr" "timezone_hour" "timezone_minute"
  "timezone_region" "true" "varrying" "while"
 -))
 +)
  
 -      (plsql-type (sql-keywords-re
 +     ;; Oracle PL/SQL Data Types
 +     (sql-font-lock-keywords-builder 'font-lock-type-face nil
  "binary_integer" "boolean" "naturaln" "pls_integer" "positive"
  "positiven" "record" "signtype" "string"
 -))
 +)
  
 -      (plsql-warning (sql-keywords-re
 +     ;; Oracle PL/SQL Exceptions
 +     (sql-font-lock-keywords-builder 'font-lock-warning-face nil
  "access_into_null" "case_not_found" "collection_is_null"
  "cursor_already_open" "dup_val_on_index" "invalid_cursor"
  "invalid_number" "login_denied" "no_data_found" "not_logged_on"
  "subscript_beyond_count" "subscript_outside_limit" "sys_invalid_rowid"
  "timeout_on_resource" "too_many_rows" "value_error" "zero_divide"
  "exception" "notfound"
 -))
 -
 -      (sqlplus-commands
 -       (eval-when-compile (concat "^\\(\\("
 -                                  (regexp-opt '(
 -"@" "@@" "accept" "append" "archive" "attribute" "break"
 -"btitle" "change" "clear" "column" "connect" "copy" "define"
 -"del" "describe" "disconnect" "edit" "execute" "exit" "get" "help"
 -"host" "input" "list" "password" "pause" "print" "prompt" "recover"
 -"remark" "repfooter" "repheader" "run" "save" "show" "shutdown"
 -"spool" "start" "startup" "store" "timing" "ttitle" "undefine"
 -"variable" "whenever"
 -
 -) t)
 -
 -   "\\)\\|"
 -   "\\(compute\\s-+\\(avg\\|cou\\|min\\|max\\|num\\|sum\\|std\\|var\\)\\)\\|"
 -   "\\(set\\s-+\\(appi\\(nfo\\)?\\|array\\(size\\)?\\|"
 -   "auto\\(commit\\)?\\|autop\\(rint\\)?\\|autorecovery\\|"
 -   "autot\\(race\\)?\\|blo\\(ckterminator\\)?\\|cmds\\(ep\\)?\\|"
 -   "colsep\\|com\\(patibility\\)?\\|con\\(cat\\)?\\|"
 -   "copyc\\(ommit\\)?\\|copytypecheck\\|def\\(ine\\)?\\|"
 -   "describe\\|echo\\|editf\\(ile\\)?\\|emb\\(edded\\)?\\|"
 -   "esc\\(ape\\)?\\|feed\\(back\\)?\\|flagger\\|"
 -   "flu\\(sh\\)?\\|hea\\(ding\\)?\\|heads\\(ep\\)?\\|"
 -   "instance\\|lin\\(esize\\)?\\|lobof\\(fset\\)?\\|"
 -   "logsource\\|long\\|longc\\(hunksize\\)?\\|mark\\(up\\)?\\|"
 -   "newp\\(age\\)?\\|null\\|numf\\(ormat\\)?\\|"
 -   "num\\(width\\)?\\|pages\\(ize\\)?\\|pau\\(se\\)?\\|"
 -   "recsep\\|recsepchar\\|serverout\\(put\\)?\\|"
 -   "shift\\(inout\\)?\\|show\\(mode\\)?\\|"
 -   "sqlbl\\(anklines\\)?\\|sqlc\\(ase\\)?\\|"
 -   "sqlco\\(ntinue\\)?\\|sqln\\(umber\\)?\\|"
 -   "sqlpluscompat\\(ibility\\)?\\|sqlpre\\(fix\\)?\\|"
 -   "sqlp\\(rompt\\)?\\|sqlt\\(erminator\\)?\\|"
 -   "suf\\(fix\\)?\\|tab\\|term\\(out\\)?\\|ti\\(me\\)?\\|"
 -   "timi\\(ng\\)?\\|trim\\(out\\)?\\|trims\\(pool\\)?\\|"
 -   "und\\(erline\\)?\\|ver\\(ify\\)?\\|wra\\(p\\)?\\)\\)\\)"
 -   "\\b.*$"
 -   ))))
 -
 -    `((,sqlplus-commands . font-lock-doc-face)
 -      (,oracle-functions . font-lock-builtin-face)
 -      (,oracle-keywords  . font-lock-keyword-face)
 -      (,oracle-types     . font-lock-type-face)
 -      (,plsql-functions  . font-lock-builtin-face)
 -      (,plsql-keywords   . font-lock-keyword-face)
 -      (,plsql-type       . font-lock-type-face)
 -      (,plsql-warning    . font-lock-warning-face)))
 +)))
  
    "Oracle SQL keywords used by font-lock.
  
@@@ -1639,157 -1210,85 +1640,157 @@@ you define your own `sql-mode-oracle-fo
  to add functions and PL/SQL keywords.")
  
  (defvar sql-mode-postgres-font-lock-keywords
 -  (let ((pg-funcs (sql-keywords-re
 -"abbrev" "abs" "acos" "age" "area" "ascii" "asin" "atab2" "atan"
 -"atan2" "avg" "bit_length" "both" "broadcast" "btrim" "cbrt" "ceil"
 -"center" "char_length" "chr" "coalesce" "col_description" "convert"
 -"cos" "cot" "count" "current_database" "current_date" "current_schema"
 -"current_schemas" "current_setting" "current_time" "current_timestamp"
 -"current_user" "currval" "date_part" "date_trunc" "decode" "degrees"
 -"diameter" "encode" "exp" "extract" "floor" "get_bit" "get_byte"
 -"has_database_privilege" "has_function_privilege"
 -"has_language_privilege" "has_schema_privilege" "has_table_privilege"
 -"height" "host" "initcap" "isclosed" "isfinite" "isopen" "leading"
 -"length" "ln" "localtime" "localtimestamp" "log" "lower" "lpad"
 -"ltrim" "masklen" "max" "min" "mod" "netmask" "network" "nextval"
 -"now" "npoints" "nullif" "obj_description" "octet_length" "overlay"
 -"pclose" "pg_client_encoding" "pg_function_is_visible"
 -"pg_get_constraintdef" "pg_get_indexdef" "pg_get_ruledef"
 -"pg_get_userbyid" "pg_get_viewdef" "pg_opclass_is_visible"
 -"pg_operator_is_visible" "pg_table_is_visible" "pg_type_is_visible"
 -"pi" "popen" "position" "pow" "quote_ident" "quote_literal" "radians"
 -"radius" "random" "repeat" "replace" "round" "rpad" "rtrim"
 -"session_user" "set_bit" "set_byte" "set_config" "set_masklen"
 -"setval" "sign" "sin" "split_part" "sqrt" "stddev" "strpos" "substr"
 -"substring" "sum" "tan" "timeofday" "to_ascii" "to_char" "to_date"
 -"to_hex" "to_number" "to_timestamp" "trailing" "translate" "trim"
 -"trunc" "upper" "variance" "version" "width"
 -))
 -
 -      (pg-reserved (sql-keywords-re
 -"abort" "access" "add" "after" "aggregate" "alignment" "all" "alter"
 -"analyze" "and" "any" "as" "asc" "assignment" "authorization"
 -"backward" "basetype" "before" "begin" "between" "binary" "by" "cache"
 -"called" "cascade" "case" "cast" "characteristics" "check"
 -"checkpoint" "class" "close" "cluster" "column" "comment" "commit"
 -"committed" "commutator" "constraint" "constraints" "conversion"
 -"copy" "create" "createdb" "createuser" "cursor" "cycle" "database"
 -"deallocate" "declare" "default" "deferrable" "deferred" "definer"
 -"delete" "delimiter" "desc" "distinct" "do" "domain" "drop" "each"
 -"element" "else" "encoding" "encrypted" "end" "escape" "except"
 -"exclusive" "execute" "exists" "explain" "extended" "external" "false"
 -"fetch" "finalfunc" "for" "force" "foreign" "forward" "freeze" "from"
 -"full" "function" "grant" "group" "gtcmp" "handler" "hashes" "having"
 -"immediate" "immutable" "implicit" "in" "increment" "index" "inherits"
 -"initcond" "initially" "input" "insensitive" "insert" "instead"
 -"internallength" "intersect" "into" "invoker" "is" "isnull"
 -"isolation" "join" "key" "language" "leftarg" "level" "like" "limit"
 -"listen" "load" "local" "location" "lock" "ltcmp" "main" "match"
 -"maxvalue" "merges" "minvalue" "mode" "move" "natural" "negator"
 -"next" "nocreatedb" "nocreateuser" "none" "not" "nothing" "notify"
 -"notnull" "null" "of" "offset" "oids" "on" "only" "operator" "or"
 -"order" "output" "owner" "partial" "passedbyvalue" "password" "plain"
 -"prepare" "primary" "prior" "privileges" "procedural" "procedure"
 -"public" "read" "recheck" "references" "reindex" "relative" "rename"
 -"reset" "restrict" "returns" "revoke" "rightarg" "rollback" "row"
 -"rule" "schema" "scroll" "security" "select" "sequence" "serializable"
 -"session" "set" "sfunc" "share" "show" "similar" "some" "sort1"
 -"sort2" "stable" "start" "statement" "statistics" "storage" "strict"
 -"stype" "sysid" "table" "temp" "template" "temporary" "then" "to"
 -"transaction" "trigger" "true" "truncate" "trusted" "type"
 -"unencrypted" "union" "unique" "unknown" "unlisten" "until" "update"
 -"usage" "user" "using" "vacuum" "valid" "validator" "values"
 -"variable" "verbose" "view" "volatile" "when" "where" "with" "without"
 -"work"
 -))
 -
 -      (pg-types (sql-keywords-re
 -"anyarray" "bigint" "bigserial" "bit" "boolean" "box" "bytea" "char"
 -"character" "cidr" "circle" "cstring" "date" "decimal" "double"
 -"float4" "float8" "inet" "int2" "int4" "int8" "integer" "internal"
 -"interval" "language_handler" "line" "lseg" "macaddr" "money"
 -"numeric" "oid" "opaque" "path" "point" "polygon" "precision" "real"
 -"record" "regclass" "regoper" "regoperator" "regproc" "regprocedure"
 -"regtype" "serial" "serial4" "serial8" "smallint" "text" "time"
 -"timestamp" "varchar" "varying" "void" "zone"
 +  (eval-when-compile
 +    (list
 +     ;; Postgres psql commands
 +     '("^\\s-*\\\\.*$" . font-lock-doc-face)
 +
 +     ;; Postgres unreserved words but may have meaning
 +     (sql-font-lock-keywords-builder 'font-lock-builtin-face nil "a"
 +"abs" "absent" "according" "ada" "alias" "allocate" "are" "array_agg"
 +"asensitive" "atomic" "attribute" "attributes" "avg" "base64"
 +"bernoulli" "bit_length" "bitvar" "blob" "blocked" "bom" "breadth" "c"
 +"call" "cardinality" "catalog_name" "ceil" "ceiling" "char_length"
 +"character_length" "character_set_catalog" "character_set_name"
 +"character_set_schema" "characters" "checked" "class_origin" "clob"
 +"cobol" "collation" "collation_catalog" "collation_name"
 +"collation_schema" "collect" "column_name" "columns"
 +"command_function" "command_function_code" "completion" "condition"
 +"condition_number" "connect" "connection_name" "constraint_catalog"
 +"constraint_name" "constraint_schema" "constructor" "contains"
 +"control" "convert" "corr" "corresponding" "count" "covar_pop"
 +"covar_samp" "cube" "cume_dist" "current_default_transform_group"
 +"current_path" "current_transform_group_for_type" "cursor_name"
 +"datalink" "datetime_interval_code" "datetime_interval_precision" "db"
 +"defined" "degree" "dense_rank" "depth" "deref" "derived" "describe"
 +"descriptor" "destroy" "destructor" "deterministic" "diagnostics"
 +"disconnect" "dispatch" "dlnewcopy" "dlpreviouscopy" "dlurlcomplete"
 +"dlurlcompleteonly" "dlurlcompletewrite" "dlurlpath" "dlurlpathonly"
 +"dlurlpathwrite" "dlurlscheme" "dlurlserver" "dlvalue" "dynamic"
 +"dynamic_function" "dynamic_function_code" "element" "empty"
 +"end-exec" "equals" "every" "exception" "exec" "existing" "exp" "file"
 +"filter" "final" "first_value" "flag" "floor" "fortran" "found" "free"
 +"fs" "fusion" "g" "general" "generated" "get" "go" "goto" "grouping"
 +"hex" "hierarchy" "host" "id" "ignore" "implementation" "import"
 +"indent" "indicator" "infix" "initialize" "instance" "instantiable"
 +"integrity" "intersection" "iterate" "k" "key_member" "key_type" "lag"
 +"last_value" "lateral" "lead" "length" "less" "library" "like_regex"
 +"link" "ln" "locator" "lower" "m" "map" "matched" "max"
 +"max_cardinality" "member" "merge" "message_length"
 +"message_octet_length" "message_text" "method" "min" "mod" "modifies"
 +"modify" "module" "more" "multiset" "mumps" "namespace" "nclob"
 +"nesting" "new" "nfc" "nfd" "nfkc" "nfkd" "nil" "normalize"
 +"normalized" "nth_value" "ntile" "nullable" "number"
 +"occurrences_regex" "octet_length" "octets" "old" "open" "operation"
 +"ordering" "ordinality" "others" "output" "overriding" "p" "pad"
 +"parameter" "parameter_mode" "parameter_name"
 +"parameter_ordinal_position" "parameter_specific_catalog"
 +"parameter_specific_name" "parameter_specific_schema" "parameters"
 +"pascal" "passing" "passthrough" "percent_rank" "percentile_cont"
 +"percentile_disc" "permission" "pli" "position_regex" "postfix"
 +"power" "prefix" "preorder" "public" "rank" "reads" "recovery" "ref"
 +"referencing" "regr_avgx" "regr_avgy" "regr_count" "regr_intercept"
 +"regr_r2" "regr_slope" "regr_sxx" "regr_sxy" "regr_syy" "requiring"
 +"respect" "restore" "result" "return" "returned_cardinality"
 +"returned_length" "returned_octet_length" "returned_sqlstate" "rollup"
 +"routine" "routine_catalog" "routine_name" "routine_schema"
 +"row_count" "row_number" "scale" "schema_name" "scope" "scope_catalog"
 +"scope_name" "scope_schema" "section" "selective" "self" "sensitive"
 +"server_name" "sets" "size" "source" "space" "specific"
 +"specific_name" "specifictype" "sql" "sqlcode" "sqlerror"
 +"sqlexception" "sqlstate" "sqlwarning" "sqrt" "state" "static"
 +"stddev_pop" "stddev_samp" "structure" "style" "subclass_origin"
 +"sublist" "submultiset" "substring_regex" "sum" "system_user" "t"
 +"table_name" "tablesample" "terminate" "than" "ties" "timezone_hour"
 +"timezone_minute" "token" "top_level_count" "transaction_active"
 +"transactions_committed" "transactions_rolled_back" "transform"
 +"transforms" "translate" "translate_regex" "translation"
 +"trigger_catalog" "trigger_name" "trigger_schema" "trim_array"
 +"uescape" "under" "unlink" "unnamed" "unnest" "untyped" "upper" "uri"
 +"usage" "user_defined_type_catalog" "user_defined_type_code"
 +"user_defined_type_name" "user_defined_type_schema" "var_pop"
 +"var_samp" "varbinary" "variable" "whenever" "width_bucket" "within"
 +"xmlagg" "xmlbinary" "xmlcast" "xmlcomment" "xmldeclaration"
 +"xmldocument" "xmlexists" "xmliterate" "xmlnamespaces" "xmlquery"
 +"xmlschema" "xmltable" "xmltext" "xmlvalidate"
 +)
 +
 +     ;; Postgres non-reserved words
 +     (sql-font-lock-keywords-builder 'font-lock-builtin-face nil
 +"abort" "absolute" "access" "action" "add" "admin" "after" "aggregate"
 +"also" "alter" "always" "assertion" "assignment" "at" "backward"
 +"before" "begin" "between" "by" "cache" "called" "cascade" "cascaded"
 +"catalog" "chain" "characteristics" "checkpoint" "class" "close"
 +"cluster" "coalesce" "comment" "comments" "commit" "committed"
 +"configuration" "connection" "constraints" "content" "continue"
 +"conversion" "copy" "cost" "createdb" "createrole" "createuser" "csv"
 +"current" "cursor" "cycle" "data" "database" "day" "deallocate" "dec"
 +"declare" "defaults" "deferred" "definer" "delete" "delimiter"
 +"delimiters" "dictionary" "disable" "discard" "document" "domain"
 +"drop" "each" "enable" "encoding" "encrypted" "enum" "escape"
 +"exclude" "excluding" "exclusive" "execute" "exists" "explain"
 +"external" "extract" "family" "first" "float" "following" "force"
 +"forward" "function" "functions" "global" "granted" "greatest"
 +"handler" "header" "hold" "hour" "identity" "if" "immediate"
 +"immutable" "implicit" "including" "increment" "index" "indexes"
 +"inherit" "inherits" "inline" "inout" "input" "insensitive" "insert"
 +"instead" "invoker" "isolation" "key" "language" "large" "last"
 +"lc_collate" "lc_ctype" "least" "level" "listen" "load" "local"
 +"location" "lock" "login" "mapping" "match" "maxvalue" "minute"
 +"minvalue" "mode" "month" "move" "name" "names" "national" "nchar"
 +"next" "no" "nocreatedb" "nocreaterole" "nocreateuser" "noinherit"
 +"nologin" "none" "nosuperuser" "nothing" "notify" "nowait" "nullif"
 +"nulls" "object" "of" "oids" "operator" "option" "options" "out"
 +"overlay" "owned" "owner" "parser" "partial" "partition" "password"
 +"plans" "position" "preceding" "prepare" "prepared" "preserve" "prior"
 +"privileges" "procedural" "procedure" "quote" "range" "read"
 +"reassign" "recheck" "recursive" "reindex" "relative" "release"
 +"rename" "repeatable" "replace" "replica" "reset" "restart" "restrict"
 +"returns" "revoke" "role" "rollback" "row" "rows" "rule" "savepoint"
 +"schema" "scroll" "search" "second" "security" "sequence" "sequences"
 +"serializable" "server" "session" "set" "setof" "share" "show"
 +"simple" "stable" "standalone" "start" "statement" "statistics"
 +"stdin" "stdout" "storage" "strict" "strip" "substring" "superuser"
 +"sysid" "system" "tables" "tablespace" "temp" "template" "temporary"
 +"transaction" "treat" "trigger" "trim" "truncate" "trusted" "type"
 +"unbounded" "uncommitted" "unencrypted" "unknown" "unlisten" "until"
 +"update" "vacuum" "valid" "validator" "value" "values" "version"
 +"view" "volatile" "whitespace" "work" "wrapper" "write"
 +"xmlattributes" "xmlconcat" "xmlelement" "xmlforest" "xmlparse"
 +"xmlpi" "xmlroot" "xmlserialize" "year" "yes"
 +)
 +
 +     ;; Postgres Reserved
 +     (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
 +"all" "analyse" "analyze" "and" "any" "array" "asc" "as" "asymmetric"
 +"authorization" "binary" "both" "case" "cast" "check" "collate"
 +"column" "concurrently" "constraint" "create" "cross"
 +"current_catalog" "current_date" "current_role" "current_schema"
 +"current_time" "current_timestamp" "current_user" "default"
 +"deferrable" "desc" "distinct" "do" "else" "end" "except" "false"
 +"fetch" "foreign" "for" "freeze" "from" "full" "grant" "group"
 +"having" "ilike" "initially" "inner" "in" "intersect" "into" "isnull"
 +"is" "join" "leading" "left" "like" "limit" "localtime"
 +"localtimestamp" "natural" "notnull" "not" "null" "off" "offset"
 +"only" "on" "order" "or" "outer" "overlaps" "over" "placing" "primary"
 +"references" "returning" "right" "select" "session_user" "similar"
 +"some" "symmetric" "table" "then" "to" "trailing" "true" "union"
 +"unique" "user" "using" "variadic" "verbose" "when" "where" "window"
 +"with"
 +)
 +
 +     ;; Postgres Data Types
 +     (sql-font-lock-keywords-builder 'font-lock-type-face nil
 +"bigint" "bigserial" "bit" "bool" "boolean" "box" "bytea" "char"
 +"character" "cidr" "circle" "date" "decimal" "double" "float4"
 +"float8" "inet" "int" "int2" "int4" "int8" "integer" "interval" "line"
 +"lseg" "macaddr" "money" "numeric" "path" "point" "polygon"
 +"precision" "real" "serial" "serial4" "serial8" "smallint" "text"
 +"time" "timestamp" "timestamptz" "timetz" "tsquery" "tsvector"
 +"txid_snapshot" "uuid" "varbit" "varchar" "varying" "without"
 +"xml" "zone"
  )))
  
 -  `((,pg-funcs    . font-lock-builtin-face)
 -    (,pg-reserved . font-lock-keyword-face)
 -    (,pg-types    . font-lock-type-face)))
 -
    "Postgres SQL keywords used by font-lock.
  
  This variable is used by `sql-mode' and `sql-interactive-mode'.  The
@@@ -1798,10 -1297,7 +1799,10 @@@ function `regexp-opt'.  Therefore, tak
  you define your own `sql-mode-postgres-font-lock-keywords'.")
  
  (defvar sql-mode-linter-font-lock-keywords
 -  (let ((linter-keywords (sql-keywords-re
 +  (eval-when-compile
 +    (list
 +     ;; Linter Keywords
 +     (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
  "autocommit" "autoinc" "autorowid" "cancel" "cascade" "channel"
  "committed" "count" "countblob" "cross" "current" "data" "database"
  "datafile" "datafiles" "datesplit" "dba" "dbname" "default" "deferred"
  "trigger_info_size" "true" "trunc" "uncommitted" "unicode" "unknown"
  "unlimited" "unlisted" "user" "utf8" "value" "varying" "volumes"
  "wait" "windows_code" "workspace" "write" "xml"
 -))
 +)
  
 -      (linter-reserved (sql-keywords-re
 +     ;; Linter Reserved
 +     (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
  "access" "action" "add" "address" "after" "all" "alter" "always" "and"
  "any" "append" "as" "asc" "ascic" "async" "at_begin" "at_end" "audit"
  "aud_obj_name_len" "backup" "base" "before" "between" "blobfile"
  "start" "stop" "sync" "synchronize" "synonym" "sysdate" "table" "then"
  "to" "union" "unique" "unlock" "until" "update" "using" "values"
  "view" "when" "where" "with" "without"
 -))
 +)
  
 -      (linter-types (sql-keywords-re
 -"bigint" "bitmap" "blob" "boolean" "char" "character" "date"
 -"datetime" "dec" "decimal" "double" "float" "int" "integer" "nchar"
 -"number" "numeric" "real" "smallint" "varbyte" "varchar" "byte"
 -"cursor" "long"
 -))
 -
 -      (linter-functions (sql-keywords-re
 +     ;; Linter Functions
 +     (sql-font-lock-keywords-builder 'font-lock-builtin-face nil
  "abs" "acos" "asin" "atan" "atan2" "avg" "ceil" "cos" "cosh" "divtime"
  "exp" "floor" "getbits" "getblob" "getbyte" "getlong" "getraw"
  "getstr" "gettext" "getword" "hextoraw" "lenblob" "length" "log"
  "to_gmtime" "to_localtime" "to_number" "trim" "upper" "decode"
  "substr" "substring" "chr" "dayname" "days" "greatest" "hex" "initcap"
  "instr" "least" "multime" "replace" "width"
 -)))
 +)
  
 -    `((,linter-keywords  . font-lock-keyword-face)
 -      (,linter-reserved  . font-lock-keyword-face)
 -      (,linter-functions . font-lock-builtin-face)
 -      (,linter-types     . font-lock-type-face)))
 +     ;; Linter Data Types
 +     (sql-font-lock-keywords-builder 'font-lock-type-face nil
 +"bigint" "bitmap" "blob" "boolean" "char" "character" "date"
 +"datetime" "dec" "decimal" "double" "float" "int" "integer" "nchar"
 +"number" "numeric" "real" "smallint" "varbyte" "varchar" "byte"
 +"cursor" "long"
 +)))
  
    "Linter SQL keywords used by font-lock.
  
@@@ -1878,29 -1376,7 +1879,29 @@@ regular expressions are created during 
  function `regexp-opt'.")
  
  (defvar sql-mode-ms-font-lock-keywords
 -  (let ((ms-reserved (sql-keywords-re
 +  (eval-when-compile
 +    (list
 +     ;; MS isql/osql Commands
 +     (cons
 +      (concat
 +       "^\\(?:\\(?:set\\s-+\\(?:"
 +       (regexp-opt '(
 +"datefirst" "dateformat" "deadlock_priority" "lock_timeout"
 +"concat_null_yields_null" "cursor_close_on_commit"
 +"disable_def_cnst_chk" "fips_flagger" "identity_insert" "language"
 +"offsets" "quoted_identifier" "arithabort" "arithignore" "fmtonly"
 +"nocount" "noexec" "numeric_roundabort" "parseonly"
 +"query_governor_cost_limit" "rowcount" "textsize" "ansi_defaults"
 +"ansi_null_dflt_off" "ansi_null_dflt_on" "ansi_nulls" "ansi_padding"
 +"ansi_warnings" "forceplan" "showplan_all" "showplan_text"
 +"statistics" "implicit_transactions" "remote_proc_transactions"
 +"transaction" "xact_abort"
 +) t)
 +       "\\)\\)\\|go\\s-*\\|use\\s-+\\|setuser\\s-+\\|dbcc\\s-+\\).*$")
 +      'font-lock-doc-face)
 +
 +     ;; MS Reserved
 +     (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
  "absolute" "add" "all" "alter" "and" "any" "as" "asc" "authorization"
  "avg" "backup" "begin" "between" "break" "browse" "bulk" "by"
  "cascade" "case" "check" "checkpoint" "close" "clustered" "coalesce"
  "updlock" "use" "user" "values" "view" "waitfor" "when" "where"
  "while" "with" "work" "writetext" "collate" "function" "openxml"
  "returns"
 -))
 +)
  
 -      (ms-types (sql-keywords-re
 -"binary" "bit" "char" "character" "cursor" "datetime" "dec" "decimal"
 -"double" "float" "image" "int" "integer" "money" "national" "nchar"
 -"ntext" "numeric" "numeric" "nvarchar" "precision" "real"
 -"smalldatetime" "smallint" "smallmoney" "text" "timestamp" "tinyint"
 -"uniqueidentifier" "varbinary" "varchar" "varying"
 -))
 -
 -      (ms-vars "\\b@[a-zA-Z0-9_]*\\b")
 -
 -      (ms-functions (sql-keywords-re
 +     ;; MS Functions
 +     (sql-font-lock-keywords-builder 'font-lock-builtin-face nil
  "@@connections" "@@cpu_busy" "@@cursor_rows" "@@datefirst" "@@dbts"
  "@@error" "@@fetch_status" "@@identity" "@@idle" "@@io_busy"
  "@@langid" "@@language" "@@lock_timeout" "@@max_connections"
  "suser_id" "suser_name" "suser_sid" "suser_sname" "system_user" "tan"
  "textptr" "textvalid" "typeproperty" "unicode" "upper" "user"
  "user_id" "user_name" "var" "varp" "year"
 -))
 +)
  
 -      (ms-commands
 -       (eval-when-compile
 -         (concat "^\\(\\(set\\s-+\\("
 -                 (regexp-opt '(
 -"datefirst" "dateformat" "deadlock_priority" "lock_timeout"
 -"concat_null_yields_null" "cursor_close_on_commit"
 -"disable_def_cnst_chk" "fips_flagger" "identity_insert" "language"
 -"offsets" "quoted_identifier" "arithabort" "arithignore" "fmtonly"
 -"nocount" "noexec" "numeric_roundabort" "parseonly"
 -"query_governor_cost_limit" "rowcount" "textsize" "ansi_defaults"
 -"ansi_null_dflt_off" "ansi_null_dflt_on" "ansi_nulls" "ansi_padding"
 -"ansi_warnings" "forceplan" "showplan_all" "showplan_text"
 -"statistics" "implicit_transactions" "remote_proc_transactions"
 -"transaction" "xact_abort"
 -) t)
 -                 "\\)\\)\\|go\\s-*\\|use\\s-+\\|setuser\\s-+\\|dbcc\\s-+\\).*$"))))
 +     ;; MS Variables
 +     '("\\b@[a-zA-Z0-9_]*\\b" . font-lock-variable-name-face)
  
 -    `((,ms-commands  . font-lock-doc-face)
 -      (,ms-reserved  . font-lock-keyword-face)
 -      (,ms-functions . font-lock-builtin-face)
 -      (,ms-vars      . font-lock-variable-name-face)
 -      (,ms-types     . font-lock-type-face)))
 +     ;; MS Types
 +     (sql-font-lock-keywords-builder 'font-lock-type-face nil
 +"binary" "bit" "char" "character" "cursor" "datetime" "dec" "decimal"
 +"double" "float" "image" "int" "integer" "money" "national" "nchar"
 +"ntext" "numeric" "numeric" "nvarchar" "precision" "real"
 +"smalldatetime" "smallint" "smallmoney" "text" "timestamp" "tinyint"
 +"uniqueidentifier" "varbinary" "varchar" "varying"
 +)))
  
    "Microsoft SQLServer SQL keywords used by font-lock.
  
@@@ -2027,10 -1523,7 +2028,10 @@@ function `regexp-opt'.  Therefore, tak
  you define your own `sql-mode-solid-font-lock-keywords'.")
  
  (defvar sql-mode-mysql-font-lock-keywords
 -  (let ((mysql-funcs (sql-keywords-re
 +  (eval-when-compile
 +    (list
 +     ;; MySQL Functions
 +     (sql-font-lock-keywords-builder 'font-lock-builtin-face nil
  "ascii" "avg" "bdmpolyfromtext" "bdmpolyfromwkb" "bdpolyfromtext"
  "bdpolyfromwkb" "benchmark" "bin" "bit_and" "bit_length" "bit_or"
  "bit_xor" "both" "cast" "char_length" "character_length" "coalesce"
  "release_lock" "repeat" "replace" "reverse" "rpad" "rtrim" "soundex"
  "space" "std" "stddev" "substring" "substring_index" "sum" "sysdate"
  "trailing" "trim" "ucase" "unix_timestamp" "upper" "user" "variance"
 -))
 +)
  
 -      (mysql-keywords (sql-keywords-re
 +     ;; MySQL Keywords
 +     (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
  "action" "add" "after" "against" "all" "alter" "and" "as" "asc"
  "auto_increment" "avg_row_length" "bdb" "between" "by" "cascade"
  "case" "change" "character" "check" "checksum" "close" "collate"
  "then" "to" "transaction" "truncate" "type" "uncommitted" "union"
  "unique" "unlock" "update" "use" "using" "values" "when" "where"
  "with" "write" "xor"
 -))
 +)
  
 -      (mysql-types (sql-keywords-re
 +     ;; MySQL Data Types
 +     (sql-font-lock-keywords-builder 'font-lock-type-face nil
  "bigint" "binary" "bit" "blob" "bool" "boolean" "char" "curve" "date"
  "datetime" "dec" "decimal" "double" "enum" "fixed" "float" "geometry"
  "geometrycollection" "int" "integer" "line" "linearring" "linestring"
  "zerofill"
  )))
  
 -    `((,mysql-funcs    . font-lock-builtin-face)
 -      (,mysql-keywords . font-lock-keyword-face)
 -      (,mysql-types    . font-lock-type-face)))
 -
    "MySQL SQL keywords used by font-lock.
  
  This variable is used by `sql-mode' and `sql-interactive-mode'.  The
@@@ -2104,54 -1599,7 +2105,54 @@@ regular expressions are created during 
  function `regexp-opt'.  Therefore, take a look at the source before
  you define your own `sql-mode-mysql-font-lock-keywords'.")
  
 -(defvar sql-mode-sqlite-font-lock-keywords nil
 +(defvar sql-mode-sqlite-font-lock-keywords
 +  (eval-when-compile
 +    (list
 +     ;; SQLite commands
 +     '("^[.].*$" . font-lock-doc-face)
 +
 +     ;; SQLite Keyword
 +     (sql-font-lock-keywords-builder 'font-lock-keyword-face nil
 +"abort" "action" "add" "after" "all" "alter" "analyze" "and" "as"
 +"asc" "attach" "autoincrement" "before" "begin" "between" "by"
 +"cascade" "case" "cast" "check" "collate" "column" "commit" "conflict"
 +"constraint" "create" "cross" "database" "default" "deferrable"
 +"deferred" "delete" "desc" "detach" "distinct" "drop" "each" "else"
 +"end" "escape" "except" "exclusive" "exists" "explain" "fail" "for"
 +"foreign" "from" "full" "glob" "group" "having" "if" "ignore"
 +"immediate" "in" "index" "indexed" "initially" "inner" "insert"
 +"instead" "intersect" "into" "is" "isnull" "join" "key" "left" "like"
 +"limit" "match" "natural" "no" "not" "notnull" "null" "of" "offset"
 +"on" "or" "order" "outer" "plan" "pragma" "primary" "query" "raise"
 +"references" "regexp" "reindex" "release" "rename" "replace"
 +"restrict" "right" "rollback" "row" "savepoint" "select" "set" "table"
 +"temp" "temporary" "then" "to" "transaction" "trigger" "union"
 +"unique" "update" "using" "vacuum" "values" "view" "virtual" "when"
 +"where"
 +)
 +     ;; SQLite Data types
 +     (sql-font-lock-keywords-builder 'font-lock-type-face nil
 +"int" "integer" "tinyint" "smallint" "mediumint" "bigint" "unsigned"
 +"big" "int2" "int8" "character" "varchar" "varying" "nchar" "native"
 +"nvarchar" "text" "clob" "blob" "real" "double" "precision" "float"
 +"numeric" "number" "decimal" "boolean" "date" "datetime"
 +)
 +     ;; SQLite Functions
 +     (sql-font-lock-keywords-builder 'font-lock-builtin-face nil
 +;; Core functions
 +"abs" "changes" "coalesce" "glob" "ifnull" "hex" "last_insert_rowid"
 +"length" "like" "load_extension" "lower" "ltrim" "max" "min" "nullif"
 +"quote" "random" "randomblob" "replace" "round" "rtrim" "soundex"
 +"sqlite_compileoption_get" "sqlite_compileoption_used"
 +"sqlite_source_id" "sqlite_version" "substr" "total_changes" "trim"
 +"typeof" "upper" "zeroblob"
 +;; Date/time functions
 +"time" "julianday" "strftime"
 +"current_date" "current_time" "current_timestamp"
 +;; Aggregate functions
 +"avg" "count" "group_concat" "max" "min" "sum" "total"
 +)))
 +
    "SQLite SQL keywords used by font-lock.
  
  This variable is used by `sql-mode' and `sql-interactive-mode'.  The
@@@ -2178,149 -1626,45 +2179,149 @@@ highlighting rules in SQL mode."
  
  ;;; SQL Product support functions
  
 -(defun sql-product-feature (feature &optional product)
 -  "Lookup `feature' needed to support the current SQL product.
 +(defun sql-read-product (prompt &optional initial)
 +  "Read a valid SQL product."
 +  (let ((init (or (and initial (symbol-name initial)) "ansi")))
 +    (intern (completing-read
 +             prompt
 +             (mapcar (lambda (info) (symbol-name (car info)))
 +                     sql-product-alist)
 +             nil 'require-match
 +             init 'sql-product-history init))))
 +
 +(defun sql-add-product (product display &rest plist)
 +  "Add support for a database product in `sql-mode'.
 +
 +Add PRODUCT to `sql-product-alist' which enables `sql-mode' to
 +properly support syntax highlighting and interactive interaction.
 +DISPLAY is the name of the SQL product that will appear in the
 +menu bar and in messages.  PLIST initializes the product
 +configuration."
 +
 +  ;; Don't do anything if the product is already supported
 +  (if (assoc product sql-product-alist)
 +      (message "Product `%s' is already defined" product)
 +
 +    ;; Add product to the alist
 +    (add-to-list 'sql-product-alist `((,product :name ,display . ,plist)))
 +    ;; Add a menu item to the SQL->Product menu
 +    (easy-menu-add-item sql-mode-menu '("Product")
 +                      ;; Each product is represented by a radio
 +                      ;; button with it's display name.
 +                      `[,display
 +                        (sql-set-product ',product)
 +                       :style radio
 +                       :selected (eq sql-product ',product)]
 +                      ;; Maintain the product list in
 +                      ;; (case-insensitive) alphabetic order of the
 +                      ;; display names.  Loop thru each keymap item
 +                      ;; looking for an item whose display name is
 +                      ;; after this product's name.
 +                      (let ((next-item)
 +                            (down-display (downcase display)))
 +                        (map-keymap (lambda (k b)
 +                                      (when (and (not next-item)
 +                                                 (string-lessp down-display
 +                                                               (downcase (cadr b))))
 +                                        (setq next-item k)))
 +                                    (easy-menu-get-map sql-mode-menu '("Product")))
 +                        next-item))
 +    product))
 +
 +(defun sql-del-product (product)
 +  "Remove support for PRODUCT in `sql-mode'."
 +
 +  ;; Remove the menu item based on the display name
 +  (easy-menu-remove-item sql-mode-menu '("Product") (sql-get-product-feature product :name))
 +  ;; Remove the product alist item
 +  (setq sql-product-alist (assq-delete-all product sql-product-alist))
 +  nil)
 +
 +(defun sql-set-product-feature (product feature newvalue)
 +  "Set FEATURE of database PRODUCT to NEWVALUE.
 +
 +The PRODUCT must be a symbol which identifies the database
 +product.  The product must have already exist on the product
 +list.  See `sql-add-product' to add new products.  The FEATURE
 +argument must be a plist keyword accepted by
 +`sql-product-alist'."
 +
 +  (let* ((p (assoc product sql-product-alist))
 +         (v (plist-get (cdr p) feature)))
 +    (if p
 +        (if (and
 +             (member feature sql-indirect-features)
 +             (symbolp v))
 +            (set v newvalue)
 +          (setcdr p (plist-put (cdr p) feature newvalue)))
 +      (message "`%s' is not a known product; use `sql-add-product' to add it first." product))))
 +
 +(defun sql-get-product-feature (product feature &optional fallback not-indirect)
 +  "Lookup FEATURE associated with a SQL PRODUCT.
 +
 +If the FEATURE is nil for PRODUCT, and FALLBACK is specified,
 +then the FEATURE associated with the FALLBACK product is
 +returned.
 +
 +If the FEATURE is in the list `sql-indirect-features', and the
 +NOT-INDIRECT parameter is not set, then the value of the symbol
 +stored in the connect alist is returned.
  
  See `sql-product-alist' for a list of products and supported features."
 -  (plist-get
 -   (cdr (assoc (or product sql-product)
 -             sql-product-alist))
 -   feature))
 +  (let* ((p (assoc product sql-product-alist))
 +         (v (plist-get (cdr p) feature)))
 +
 +    (if p
 +        ;; If no value and fallback, lookup feature for fallback
 +        (if (and (not v)
 +                 fallback
 +                 (not (eq product fallback)))
 +            (sql-get-product-feature fallback feature)
 +
 +          (if (and
 +               (member feature sql-indirect-features)
 +               (not not-indirect)
 +               (symbolp v))
 +              (symbol-value v)
 +            v))
 +      (message "`%s' is not a known product; use `sql-add-product' to add it first." product)
 +      nil)))
  
  (defun sql-product-font-lock (keywords-only imenu)
 -  "Sets `font-lock-defaults' and `font-lock-keywords' based on
 -the product-specific keywords and syntax-alists defined in
 -`sql-product-alist'."
 +  "Configure font-lock and imenu with product-specific settings.
 +
 +The KEYWORDS-ONLY flag is passed to font-lock to specify whether
 +only keywords should be hilighted and syntactic hilighting
 +skipped.  The IMENU flag indicates whether `imenu-mode' should
 +also be configured."
 +
    (let
        ;; Get the product-specific syntax-alist.
        ((syntax-alist
        (append
 -       (sql-product-feature :syntax-alist)
 +       (sql-get-product-feature sql-product :syntax-alist)
         '((?_ . "w") (?. . "w")))))
  
      ;; Get the product-specific keywords.
      (setq sql-mode-font-lock-keywords
          (append
           (unless (eq sql-product 'ansi)
 -           (eval (sql-product-feature :font-lock)))
 +           (sql-get-product-feature sql-product :font-lock))
           ;; Always highlight ANSI keywords
 -         (eval (sql-product-feature :font-lock 'ansi))
 +         (sql-get-product-feature 'ansi :font-lock)
           ;; Fontify object names in CREATE, DROP and ALTER DDL
           ;; statements
           (list sql-mode-font-lock-object-name)))
  
      ;; Setup font-lock.  Force re-parsing of `font-lock-defaults'.
 -    (set (make-local-variable 'font-lock-set-defaults) nil)
 +    (kill-local-variable 'font-lock-set-defaults)
      (setq font-lock-defaults (list 'sql-mode-font-lock-keywords
                                   keywords-only t syntax-alist))
  
      ;; Force font lock to reinitialize if it is already on
      ;; Otherwise, we can wait until it can be started.
      (when (and (fboundp 'font-lock-mode)
 +             (boundp 'font-lock-mode)
               font-lock-mode)
        (font-lock-mode-internal nil)
        (font-lock-mode-internal t))
  
      ;; Setup imenu; it needs the same syntax-alist.
      (when imenu
 -      (setq imenu-syntax-alist syntax-alist))))
 +      (setq imenu-syntax-alist syntax-alist))))
  
  ;;;###autoload
  (defun sql-add-product-keywords (product keywords &optional append)
    "Add highlighting KEYWORDS for SQL PRODUCT.
  
 -PRODUCT should be a symbol, the name of a sql product, such as
 +PRODUCT should be a symbol, the name of a SQL product, such as
  `oracle'.  KEYWORDS should be a list; see the variable
  `font-lock-keywords'.  By default they are added at the beginning
  of the current highlighting list.  If optional argument APPEND is
@@@ -2359,48 -1703,36 +2360,48 @@@ For example
  adds a fontification pattern to fontify identifiers ending in
  `_t' as data types."
  
 -  (let ((font-lock (sql-product-feature :font-lock product))
 -      old)
 -    (setq old (eval font-lock))
 -    (set font-lock
 +  (let* ((sql-indirect-features nil)
 +         (font-lock-var (sql-get-product-feature product :font-lock))
 +         (old-val))
 +
 +    (setq old-val (symbol-value font-lock-var))
 +    (set font-lock-var
         (if (eq append 'set)
             keywords
           (if append
 -             (append old keywords)
 -           (append keywords old))))))
 +             (append old-val keywords)
 +           (append keywords old-val))))))
 +
 +(defun sql-for-each-login (login-params body)
 +  "Iterates through login parameters and returns a list of results."
 +
 +  (delq nil
 +        (mapcar
 +         (lambda (param)
 +           (let ((token (or (and (listp param) (car param)) param))
 +                 (plist (or (and (listp param) (cdr param)) nil)))
 +
 +             (funcall body token plist)))
 +         login-params)))
  
  \f
  
  ;;; Functions to switch highlighting
  
  (defun sql-highlight-product ()
 -  "Turn on the appropriate font highlighting for the SQL product selected."
 +  "Turn on the font highlighting for the SQL product selected."
    (when (derived-mode-p 'sql-mode)
      ;; Setup font-lock
      (sql-product-font-lock nil t)
  
      ;; Set the mode name to include the product.
 -    (setq mode-name (concat "SQL[" (prin1-to-string sql-product) "]"))))
 +    (setq mode-name (concat "SQL[" (or (sql-get-product-feature sql-product :name)
 +                                     (symbol-name sql-product)) "]"))))
  
  (defun sql-set-product (product)
 -  "Set `sql-product' to product and enable appropriate highlighting."
 +  "Set `sql-product' to PRODUCT and enable appropriate highlighting."
    (interactive
 -   (list (completing-read "Enter SQL product: "
 -                          (mapcar (lambda (info) (symbol-name (car info)))
 -                                  sql-product-alist)
 -                          nil 'require-match)))
 +   (list (sql-read-product "SQL product: ")))
    (if (stringp product) (setq product (intern product)))
    (when (not (assoc product sql-product-alist))
      (error "SQL product %s is not supported; treated as ANSI" product)
@@@ -2452,30 -1784,6 +2453,30 @@@ the regular expression `comint-prompt-r
      (newline))
    (indent-according-to-mode))
  
 +(defun sql-help-list-products (indent freep)
 +  "Generate listing of products available for use under SQLi.
 +
 +List products with :free-softare attribute set to FREEP.  Indent
 +each line with INDENT."
 +
 +  (let (sqli-func doc)
 +    (setq doc "")
 +    (dolist (p sql-product-alist)
 +      (setq sqli-func (intern (concat "sql-" (symbol-name (car p)))))
 +
 +      (if (and (fboundp sqli-func)
 +             (eq (sql-get-product-feature (car p) :free-software) freep))
 +      (setq doc
 +            (concat doc
 +                    indent
 +                    (or (sql-get-product-feature (car p) :name)
 +                        (symbol-name (car p)))
 +                    ":\t"
 +                    "\\["
 +                    (symbol-name sqli-func)
 +                    "]\n"))))
 +    doc))
 +
  ;;;###autoload
  (defun sql-help ()
    "Show short help for the SQL modes.
@@@ -2485,17 -1793,24 +2486,17 @@@ usually named `*SQL*'.  The name of th
  
  Use the following commands to start a specific SQL interpreter:
  
 -    PostGres: \\[sql-postgres]
 -    MySQL: \\[sql-mysql]
 -    SQLite: \\[sql-sqlite]
 +    \\\\FREE
  
  Other non-free SQL implementations are also supported:
  
 -    Solid: \\[sql-solid]
 -    Oracle: \\[sql-oracle]
 -    Informix: \\[sql-informix]
 -    Sybase: \\[sql-sybase]
 -    Ingres: \\[sql-ingres]
 -    Microsoft: \\[sql-ms]
 -    DB2: \\[sql-db2]
 -    Interbase: \\[sql-interbase]
 -    Linter: \\[sql-linter]
 +    \\\\NONFREE
  
  But we urge you to choose a free implementation instead of these.
  
 +You can also use \\[sql-product-interactive] to invoke the
 +interpreter for the current `sql-product'.
 +
  Once you have the SQLi buffer, you can enter SQL statements in the
  buffer.  The output generated is appended to the buffer and a new prompt
  is generated.  See the In/Out menu in the SQLi buffer for some functions
@@@ -2510,84 -1825,12 +2511,84 @@@ In this SQL buffer (SQL mode), you can 
  buffer to the interactive SQL buffer (SQLi mode).  The results are
  appended to the SQLi buffer without disturbing your SQL buffer."
    (interactive)
 +
 +  ;; Insert references to loaded products into the help buffer string
 +  (let ((doc (documentation 'sql-help t))
 +      changedp)
 +    (setq changedp nil)
 +
 +    ;; Insert FREE software list
 +    (when (string-match "^\\(\\s-*\\)[\\\\][\\\\]FREE\\s-*\n" doc 0)
 +      (setq doc (replace-match (sql-help-list-products (match-string 1 doc) t)
 +                             t t doc 0)
 +          changedp t))
 +
 +    ;; Insert non-FREE software list
 +    (when (string-match "^\\(\\s-*\\)[\\\\][\\\\]NONFREE\\s-*\n" doc 0)
 +      (setq doc (replace-match (sql-help-list-products (match-string 1 doc) nil)
 +                             t t doc 0)
 +          changedp t))
 +
 +    ;; If we changed the help text, save the change so that the help
 +    ;; sub-system will see it
 +    (when changedp
 +      (put 'sql-help 'function-documentation doc)))
 +
 +  ;; Call help on this function
    (describe-function 'sql-help))
  
  (defun sql-read-passwd (prompt &optional default)
    "Read a password using PROMPT.  Optional DEFAULT is password to start with."
    (read-passwd prompt nil default))
  
 +(defun sql-get-login-ext (prompt last-value history-var plist)
 +  "Prompt user with extended login parameters.
 +
 +If PLIST is nil, then the user is simply prompted for a string
 +value.
 +
 +The property `:default' specifies the default value.  If the
 +`:number' property is non-nil then ask for a number.
 +
 +The `:file' property prompts for a file name that must match the
 +regexp pattern specified in its value.
 +
 +The `:completion' property prompts for a string specified by its
 +value.  (The property value is used as the PREDICATE argument to
 +`completing-read'.)"
 +  (let* ((default (plist-get plist :default))
 +         (prompt-def
 +          (if default
 +              (if (string-match "\\(\\):[ \t]*\\'" prompt)
 +                  (replace-match (format " (default \"%s\")" default) t t prompt 1)
 +                (replace-regexp-in-string "[ \t]*\\'"
 +                                          (format " (default \"%s\") " default)
 +                                          prompt t t))
 +            prompt))
 +         (use-dialog-box nil))
 +    (cond
 +     ((plist-member plist :file)
 +      (expand-file-name
 +       (read-file-name prompt
 +                       (file-name-directory last-value) default t
 +                       (file-name-nondirectory last-value)
 +                       (when (plist-get plist :file)
 +                         `(lambda (f)
 +                            (string-match
 +                             (concat "\\<" ,(plist-get plist :file) "\\>")
 +                             (file-name-nondirectory f)))))))
 +
 +     ((plist-member plist :completion)
 +      (completing-read prompt-def (plist-get plist :completion) nil t
 +                       last-value history-var default))
 +
 +     ((plist-get plist :number)
 +      (read-number prompt (or default last-value 0)))
 +
 +     (t
 +      (let ((r (read-from-minibuffer prompt-def last-value nil nil history-var nil)))
 +        (if (string= "" r) (or default "") r))))))
 +
  (defun sql-get-login (&rest what)
    "Get username, password and database from the user.
  
@@@ -2597,77 -1840,55 +2598,77 @@@ Usernames, servers and databases are st
  `sql-server-history' and `database-history'.  Passwords are not stored
  in a history.
  
 -Parameter WHAT is a list of the arguments passed to this function.
 -The function asks for the username if WHAT contains symbol `user', for
 -the password if it contains symbol `password', for the server if it
 -contains symbol `server', and for the database if it contains symbol
 -`database'.  The members of WHAT are processed in the order in which
 -they are provided.
 +Parameter WHAT is a list of tokens passed as arguments in the
 +function call.  The function asks for the username if WHAT
 +contains the symbol `user', for the password if it contains the
 +symbol `password', for the server if it contains the symbol
 +`server', and for the database if it contains the symbol
 +`database'.  The members of WHAT are processed in the order in
 +which they are provided.
 +
 +Each token may also be a list with the token in the car and a
 +plist of options as the cdr.  The following properties are
 +supported:
 +
 +    :file <filename-regexp>
 +    :completion <list-of-strings-or-function>
 +    :default <default-value>
 +    :number t
  
  In order to ask the user for username, password and database, call the
  function like this: (sql-get-login 'user 'password 'database)."
    (interactive)
 -  (while what
 -    (cond
 -     ((eq (car what) 'user)           ; user
 -      (setq sql-user
 -          (read-from-minibuffer "User: " sql-user nil nil
 -                                sql-user-history)))
 -     ((eq (car what) 'password)               ; password
 -      (setq sql-password
 -          (sql-read-passwd "Password: " sql-password)))
 -     ((eq (car what) 'server)         ; server
 -      (setq sql-server
 -          (read-from-minibuffer "Server: " sql-server nil nil
 -                                sql-server-history)))
 -     ((eq (car what) 'database)               ; database
 -      (setq sql-database
 -          (read-from-minibuffer "Database: " sql-database nil nil
 -                                sql-database-history))))
 -    (setq what (cdr what))))
 -
 -(defun sql-find-sqli-buffer ()
 -  "Return the current default SQLi buffer or nil.
 -In order to qualify, the SQLi buffer must be alive,
 -be in `sql-interactive-mode' and have a process."
 -  (let ((default-buffer (default-value 'sql-buffer)))
 -    (if (and (buffer-live-p default-buffer)
 -           (get-buffer-process default-buffer))
 -      default-buffer
 -      (save-current-buffer
 -      (let ((buflist (buffer-list))
 -            (found))
 -        (while (not (or (null buflist)
 -                        found))
 -          (let ((candidate (car buflist)))
 -            (set-buffer candidate)
 -            (if (and (derived-mode-p 'sql-interactive-mode)
 -                     (get-buffer-process candidate))
 -                (setq found candidate))
 -            (setq buflist (cdr buflist))))
 -        found)))))
 +  (mapcar
 +   (lambda (w)
 +     (let ((token (or (and (consp w) (car w)) w))
 +           (plist (or (and (consp w) (cdr w)) nil)))
 +
 +     (cond
 +      ((eq token 'user)               ; user
 +       (setq sql-user
 +             (sql-get-login-ext "User: " sql-user
 +                                'sql-user-history plist)))
 +
 +      ((eq token 'password)           ; password
 +       (setq sql-password
 +             (sql-read-passwd "Password: " sql-password)))
 +
 +      ((eq token 'server)             ; server
 +       (setq sql-server
 +             (sql-get-login-ext "Server: " sql-server
 +                                'sql-server-history plist)))
 +
 +      ((eq token 'database)           ; database
 +       (setq sql-database
 +             (sql-get-login-ext "Database: " sql-database
 +                                'sql-database-history plist)))
 +
 +      ((eq token 'port)               ; port
 +       (setq sql-port
 +             (sql-get-login-ext "Port: " sql-port
 +                                nil (append '(:number t) plist)))))))
 +   what))
 +
 +(defun sql-find-sqli-buffer (&optional product)
 +  "Returns the name of the current default SQLi buffer or nil.
 +In order to qualify, the SQLi buffer must be alive, be in
 +`sql-interactive-mode' and have a process."
 +  (let ((buf  sql-buffer)
 +        (prod (or product sql-product)))
 +    (or
 +     ;; Current sql-buffer, if there is one.
 +     (and (sql-buffer-live-p buf prod)
 +          buf)
 +     ;; Global sql-buffer
 +     (and (setq buf (default-value 'sql-buffer))
 +          (sql-buffer-live-p buf prod)
 +          buf)
 +     ;; Look thru each buffer
 +     (car (apply 'append
 +                 (mapcar (lambda (b)
 +                           (and (sql-buffer-live-p b prod)
 +                                (list (buffer-name b))))
 +                         (buffer-list)))))))
  
  (defun sql-set-sqli-buffer-generally ()
    "Set SQLi buffer for all SQL buffers that have none.
@@@ -2679,17 -1900,16 +2680,17 @@@ using `sql-find-sqli-buffer'.  If `sql-
    (interactive)
    (save-excursion
      (let ((buflist (buffer-list))
 -        (default-sqli-buffer (sql-find-sqli-buffer)))
 -      (setq-default sql-buffer default-sqli-buffer)
 +        (default-buffer (sql-find-sqli-buffer)))
 +      (setq-default sql-buffer default-buffer)
        (while (not (null buflist))
        (let ((candidate (car buflist)))
          (set-buffer candidate)
          (if (and (derived-mode-p 'sql-mode)
 -                 (not (buffer-live-p sql-buffer)))
 +                 (not (sql-buffer-live-p sql-buffer)))
              (progn
 -              (setq sql-buffer default-sqli-buffer)
 -              (run-hooks 'sql-set-sqli-hook))))
 +              (setq sql-buffer default-buffer)
 +              (when default-buffer
 +                  (run-hooks 'sql-set-sqli-hook)))))
        (setq buflist (cdr buflist))))))
  
  (defun sql-set-sqli-buffer ()
@@@ -2707,13 -1927,19 +2708,13 @@@ If you call it from anywhere else, it s
    (interactive)
    (let ((default-buffer (sql-find-sqli-buffer)))
      (if (null default-buffer)
 -      (error "There is no suitable SQLi buffer"))
 -    (let ((new-buffer
 -         (get-buffer
 -          (read-buffer "New SQLi buffer: " default-buffer t))))
 -      (if (null (get-buffer-process new-buffer))
 -        (error "Buffer %s has no process" (buffer-name new-buffer)))
 -      (if (null (with-current-buffer new-buffer
 -                (equal major-mode 'sql-interactive-mode)))
 -        (error "Buffer %s is no SQLi buffer" (buffer-name new-buffer)))
 -      (if new-buffer
 -        (progn
 -          (setq sql-buffer new-buffer)
 -          (run-hooks 'sql-set-sqli-hook))))))
 +        (error "There is no suitable SQLi buffer")
 +      (let ((new-buffer (read-buffer "New SQLi buffer: " default-buffer t)))
 +        (if (null (sql-buffer-live-p new-buffer))
 +            (error "Buffer %s is not a working SQLi buffer" new-buffer)
 +          (when new-buffer
 +            (setq sql-buffer new-buffer)
 +            (run-hooks 'sql-set-sqli-hook)))))))
  
  (defun sql-show-sqli-buffer ()
    "Show the name of current SQLi buffer.
  This is the buffer SQL strings are sent to.  It is stored in the
  variable `sql-buffer'.  See `sql-help' on how to create such a buffer."
    (interactive)
 -  (if (null (buffer-live-p sql-buffer))
 +  (if (null (buffer-live-p (get-buffer sql-buffer)))
        (message "%s has no SQLi buffer set." (buffer-name (current-buffer)))
      (if (null (get-buffer-process sql-buffer))
 -      (message "Buffer %s has no process." (buffer-name sql-buffer))
 -      (message "Current SQLi buffer is %s." (buffer-name sql-buffer)))))
 +      (message "Buffer %s has no process." sql-buffer)
 +      (message "Current SQLi buffer is %s." sql-buffer))))
  
  (defun sql-make-alternate-buffer-name ()
    "Return a string that can be used to rename a SQLi buffer.
  
  This is used to set `sql-alternate-buffer-name' within
 -`sql-interactive-mode'."
 -  (concat (if (string= "" sql-user)
 -            (if (string= "" (user-login-name))
 -                ()
 -              (concat (user-login-name) "/"))
 -          (concat sql-user "/"))
 -        (if (string= "" sql-database)
 -            (if (string= "" sql-server)
 -                (system-name)
 -              sql-server)
 -          sql-database)))
 +`sql-interactive-mode'.
  
 -(defun sql-rename-buffer ()
 -  "Rename a SQLi buffer."
 -  (interactive)
 -  (rename-buffer (format "*SQL: %s*" sql-alternate-buffer-name) t))
 +If the session was started with `sql-connect' then the alternate
 +name would be the name of the connection.
 +
 +Otherwise, it uses the parameters identified by the :sqlilogin
 +parameter.
 +
 +If all else fails, the alternate name would be the user and
 +server/database name."
 +
 +  (let ((name ""))
 +
 +    ;; Build a name using the :sqli-login setting
 +    (setq name
 +          (apply 'concat
 +                 (cdr
 +                  (apply 'append nil
 +                         (sql-for-each-login
 +                          (sql-get-product-feature sql-product :sqli-login)
 +                          (lambda (token plist)
 +                            (cond
 +                             ((eq token 'user)
 +                              (unless (string= "" sql-user)
 +                                (list "/" sql-user)))
 +                             ((eq token 'port)
 +                              (unless (or (not (numberp sql-port))
 +                                          (= 0 sql-port))
 +                                (list ":" (number-to-string sql-port))))
 +                             ((eq token 'server)
 +                              (unless (string= "" sql-server)
 +                                (list "."
 +                                      (if (plist-member plist :file)
 +                                          (file-name-nondirectory sql-server)
 +                                        sql-server))))
 +                             ((eq token 'database)
 +                              (unless (string= "" sql-database)
 +                                (list "@"
 +                                      (if (plist-member plist :file)
 +                                         (file-name-nondirectory sql-database)
 +                                        sql-database))))
 +
 +                             ((eq token 'password) nil)
 +                             (t                    nil))))))))
 +
 +    ;; If there's a connection, use it and the name thus far
 +    (if sql-connection
 +        (format "<%s>%s" sql-connection (or name ""))
 +
 +      ;; If there is no name, try to create something meaningful
 +      (if (string= "" (or name ""))
 +          (concat
 +           (if (string= "" sql-user)
 +               (if (string= "" (user-login-name))
 +                   ()
 +                 (concat (user-login-name) "/"))
 +             (concat sql-user "/"))
 +           (if (string= "" sql-database)
 +               (if (string= "" sql-server)
 +               (system-name)
 +               sql-server)
 +             sql-database))
 +
 +        ;; Use the name we've got
 +        name))))
 +
 +(defun sql-rename-buffer (&optional new-name)
 +  "Rename a SQL interactive buffer.
 +
 +Prompts for the new name if command is preceeded by
 +\\[universal-argument].  If no buffer name is provided, then the
 +`sql-alternate-buffer-name' is used.
 +
 +The actual buffer name set will be \"*SQL: NEW-NAME*\".  If
 +NEW-NAME is empty, then the buffer name will be \"*SQL*\"."
 +  (interactive "P")
 +
 +  (if (not (derived-mode-p 'sql-interactive-mode))
 +      (message "Current buffer is not a SQL interactive buffer")
 +
 +    (setq sql-alternate-buffer-name
 +          (cond
 +           ((stringp new-name) new-name)
 +           ((consp new-name)
 +            (read-string "Buffer name (\"*SQL: XXX*\"; enter `XXX'): "
 +                         sql-alternate-buffer-name))
 +           (t                  sql-alternate-buffer-name)))
 +
 +    (rename-buffer (if (string= "" sql-alternate-buffer-name)
 +                       "*SQL*"
 +                     (format "*SQL: %s*" sql-alternate-buffer-name))
 +                   t)))
  
  (defun sql-copy-column ()
    "Copy current column to the end of buffer.
@@@ -2830,7 -1980,7 +2831,7 @@@ Inserts SELECT or commas if appropriate
    (interactive)
    (let ((column))
      (save-excursion
 -      (setq column (buffer-substring
 +      (setq column (buffer-substring-no-properties
                  (progn (forward-char 1) (backward-sexp 1) (point))
                  (progn (forward-sexp 1) (point))))
        (goto-char (point-max))
  (defvar sql-placeholder-history nil
    "History of placeholder values used.")
  
 -(defun sql-query-placeholders-and-send (proc string)
 -  "Send to PROC input STRING, maybe replacing placeholders.
 -Placeholders are words starting with an ampersand like &this.
 -This function is used for `comint-input-sender' if using
 -`sql-oracle' on Windows."
 -  (while (string-match "&\\(\\sw+\\)" string)
 -    (setq string (replace-match
 -                (read-from-minibuffer
 -                 (format "Enter value for %s: " (match-string 1 string))
 -                 nil nil nil sql-placeholder-history)
 -                t t string)))
 -  (comint-send-string proc string)
 -  (if comint-input-sender-no-newline
 -      (if (not (string-equal string ""))
 -        (process-send-eof))
 -    (comint-send-string proc "\n")))
 +(defun sql-placeholders-filter (string)
 +  "Replace placeholders in STRING.
 +Placeholders are words starting with an ampersand like &this."
 +
 +  (when sql-oracle-scan-on
 +    (while (string-match "&\\(\\sw+\\)" string)
 +      (setq string (replace-match
 +                  (read-from-minibuffer
 +                   (format "Enter value for %s: " (match-string 1 string))
 +                   nil nil nil 'sql-placeholder-history)
 +                  t t string))))
 +  string)
  
  ;; Using DB2 interactively, newlines must be escaped with " \".
  ;; The space before the backslash is relevant.
 -(defun sql-escape-newlines-and-send (proc string)
 -  "Send to PROC input STRING, escaping newlines if necessary.
 +(defun sql-escape-newlines-filter (string)
 +  "Escape newlines in STRING.
  Every newline in STRING will be preceded with a space and a backslash."
    (let ((result "") (start 0) mb me)
      (while (string-match "\n" string start)
        (setq mb (match-beginning 0)
 -          me (match-end 0))
 -      (if (and (> mb 1)
 -             (string-equal " \\" (substring string (- mb 2) mb)))
 -        (setq result (concat result (substring string start me)))
 -      (setq result (concat result (substring string start mb) " \\\n")))
 -      (setq start me))
 -    (setq result (concat result (substring string start)))
 -    (comint-send-string proc result)
 -    (if comint-input-sender-no-newline
 -      (if (not (string-equal string ""))
 -          (process-send-eof))
 -      (comint-send-string proc "\n"))))
 +          me (match-end 0)
 +          result (concat result
 +                         (substring string start mb)
 +                         (if (and (> mb 1)
 +                                  (string-equal " \\" (substring string (- mb 2) mb)))
 +                             "" " \\\n"))
 +          start me))
 +    (concat result (substring string start))))
  
  \f
  
 +;;; Input sender for SQLi buffers
 +
 +(defvar sql-output-newline-count 0
 +  "Number of newlines in the input string.
 +
 +Allows the suppression of continuation prompts.")
 +
 +(defvar sql-output-by-send nil
 +  "Non-nil if the command in the input was generated by `sql-send-string'.")
 +
 +(defun sql-input-sender (proc string)
 +  "Send STRING to PROC after applying filters."
 +
 +  (let* ((product (with-current-buffer (process-buffer proc) sql-product))
 +       (filter  (sql-get-product-feature product :input-filter)))
 +
 +    ;; Apply filter(s)
 +    (cond
 +     ((not filter)
 +      nil)
 +     ((functionp filter)
 +      (setq string (funcall filter string)))
 +     ((listp filter)
 +      (mapc (lambda (f) (setq string (funcall f string))) filter))
 +     (t nil))
 +
 +    ;; Count how many newlines in the string
 +    (setq sql-output-newline-count 0)
 +    (mapc (lambda (ch)
 +            (when (eq ch ?\n)
 +              (setq sql-output-newline-count (1+ sql-output-newline-count))))
 +          string)
 +
 +    ;; Send the string
 +    (comint-simple-send proc string)))
 +
 +;;; Strip out continuation prompts
 +
 +(defun sql-interactive-remove-continuation-prompt (oline)
 +  "Strip out continuation prompts out of the OLINE.
 +
 +Added to the `comint-preoutput-filter-functions' hook in a SQL
 +interactive buffer.  If `sql-outut-newline-count' is greater than
 +zero, then an output line matching the continuation prompt is filtered
 +out.  If the count is one, then the prompt is replaced with a newline
 +to force the output from the query to appear on a new line."
 +  (if (and sql-prompt-cont-regexp
 +           sql-output-newline-count
 +           (numberp sql-output-newline-count)
 +           (>= sql-output-newline-count 1))
 +      (progn
 +        (while (and oline
 +                    sql-output-newline-count
 +                    (> sql-output-newline-count 0)
 +                    (string-match sql-prompt-cont-regexp oline))
 +
 +          (setq oline
 +                (replace-match (if (and
 +                                    (= 1 sql-output-newline-count)
 +                                    sql-output-by-send)
 +                                   "\n" "")
 +                               nil nil oline)
 +                sql-output-newline-count
 +                (1- sql-output-newline-count)))
 +        (if (= sql-output-newline-count 0)
 +            (setq sql-output-newline-count nil))
 +        (setq sql-output-by-send nil))
 +    (setq sql-output-newline-count nil))
 +  oline)
 +
  ;;; Sending the region to the SQLi buffer.
  
 +(defun sql-send-string (str)
 +  "Send the string STR to the SQL process."
 +  (interactive "sSQL Text: ")
 +
 +  (let ((comint-input-sender-no-newline nil)
 +        (s (replace-regexp-in-string "[[:space:]\n\r]+\\'" "" str)))
 +    (if (sql-buffer-live-p sql-buffer)
 +      (progn
 +        ;; Ignore the hoping around...
 +        (save-excursion
 +          ;; Set product context
 +          (with-current-buffer sql-buffer
 +            ;; Send the string (trim the trailing whitespace)
 +            (sql-input-sender (get-buffer-process sql-buffer) s)
 +
 +            ;; Send a command terminator if we must
 +            (if sql-send-terminator
 +                (sql-send-magic-terminator sql-buffer s sql-send-terminator))
 +
 +            (message "Sent string to buffer %s." sql-buffer)))
 +
 +        ;; Display the sql buffer
 +        (if sql-pop-to-buffer-after-send-region
 +            (pop-to-buffer sql-buffer)
 +          (display-buffer sql-buffer)))
 +
 +    ;; We don't have no stinkin' sql
 +    (message "No SQL process started."))))
 +
  (defun sql-send-region (start end)
    "Send a region to the SQL process."
    (interactive "r")
 -  (if (buffer-live-p sql-buffer)
 -      (save-excursion
 -      (comint-send-region sql-buffer start end)
 -      (if (string-match "\n$" (buffer-substring start end))
 -          ()
 -        (comint-send-string sql-buffer "\n"))
 -      (message "Sent string to buffer %s." (buffer-name sql-buffer))
 -      (if sql-pop-to-buffer-after-send-region
 -          (pop-to-buffer sql-buffer)
 -        (display-buffer sql-buffer)))
 -    (message "No SQL process started.")))
 +  (sql-send-string (buffer-substring-no-properties start end)))
  
  (defun sql-send-paragraph ()
    "Send the current paragraph to the SQL process."
    (interactive)
    (sql-send-region (point-min) (point-max)))
  
 -(defun sql-send-string (str)
 -  "Send a string to the SQL process."
 -  (interactive "sSQL Text: ")
 -  (if (buffer-live-p sql-buffer)
 -      (save-excursion
 -        (comint-send-string sql-buffer str)
 -        (comint-send-string sql-buffer "\n")
 -        (message "Sent string to buffer %s." (buffer-name sql-buffer))
 -        (if sql-pop-to-buffer-after-send-region
 -            (pop-to-buffer sql-buffer)
 -          (display-buffer sql-buffer)))
 -    (message "No SQL process started.")))
 +(defun sql-send-magic-terminator (buf str terminator)
 +  "Send TERMINATOR to buffer BUF if its not present in STR."
 +  (let (comint-input-sender-no-newline pat term)
 +    ;; If flag is merely on(t), get product-specific terminator
 +    (if (eq terminator t)
 +      (setq terminator (sql-get-product-feature sql-product :terminator)))
 +
 +    ;; If there is no terminator specified, use default ";"
 +    (unless terminator
 +      (setq terminator ";"))
 +
 +    ;; Parse the setting into the pattern and the terminator string
 +    (cond ((stringp terminator)
 +         (setq pat (regexp-quote terminator)
 +               term terminator))
 +        ((consp terminator)
 +         (setq pat (car terminator)
 +               term (cdr terminator)))
 +        (t
 +         nil))
 +
 +    ;; Check to see if the pattern is present in the str already sent
 +    (unless (and pat term
 +               (string-match (concat pat "\\'") str))
 +      (comint-simple-send (get-buffer-process buf) term)
 +      (setq sql-output-newline-count
 +            (if sql-output-newline-count
 +                (1+ sql-output-newline-count)
 +              1)))
 +    (setq sql-output-by-send t)))
 +
 +(defun sql-remove-tabs-filter (str)
 +  "Replace tab characters with spaces."
 +  (replace-regexp-in-string "\t" " " str nil t))
  
  (defun sql-toggle-pop-to-buffer-after-send-region (&optional value)
    "Toggle `sql-pop-to-buffer-after-send-region'.
@@@ -3059,172 -2106,7 +3060,172 @@@ If given the optional parameter VALUE, 
    (if value
        (setq sql-pop-to-buffer-after-send-region value)
      (setq sql-pop-to-buffer-after-send-region
 -        (null sql-pop-to-buffer-after-send-region ))))
 +        (null sql-pop-to-buffer-after-send-region))))
 +
 +\f
 +
 +;;; Redirect output functions
 +
 +(defun sql-redirect (command combuf &optional outbuf save-prior)
 +  "Execute the SQL command and send output to OUTBUF.
 +
 +COMBUF must be an active SQL interactive buffer.  OUTBUF may be
 +an existing buffer, or the name of a non-existing buffer.  If
 +omitted the output is sent to a temporary buffer which will be
 +killed after the command completes.  COMMAND should be a string
 +of commands accepted by the SQLi program."
 +
 +  (with-current-buffer combuf
 +    (let ((buf  (get-buffer-create (or outbuf " *SQL-Redirect*")))
 +          (proc (get-buffer-process (current-buffer)))
 +          (comint-prompt-regexp (sql-get-product-feature sql-product
 +                                                         :prompt-regexp))
 +          (start nil))
 +      (with-current-buffer buf
 +        (toggle-read-only -1)
 +        (unless save-prior
 +          (erase-buffer))
 +        (goto-char (point-max))
 +        (unless (zerop (buffer-size))
 +          (insert "\n"))
 +        (setq start (point)))
 +
 +      ;; Run the command
 +      (message "Executing SQL command...")
 +      (comint-redirect-send-command-to-process command buf proc nil t)
 +      (while (null comint-redirect-completed)
 +      (accept-process-output nil 1))
 +      (message "Executing SQL command...done")
 +
 +      ;; Clean up the output results
 +      (with-current-buffer buf
 +        ;; Remove trailing whitespace
 +        (goto-char (point-max))
 +        (when (looking-back "[ \t\f\n\r]*" start)
 +          (delete-region (match-beginning 0) (match-end 0)))
 +        ;; Remove echo if there was one
 +        (goto-char start)
 +        (when (looking-at (concat "^" (regexp-quote command) "[\\n]"))
 +          (delete-region (match-beginning 0) (match-end 0)))
 +        (goto-char start)))))
 +
 +(defun sql-redirect-value (command combuf regexp &optional regexp-groups)
 +  "Execute the SQL command and return part of result.
 +
 +COMBUF must be an active SQL interactive buffer.  COMMAND should
 +be a string of commands accepted by the SQLi program.  From the
 +output, the REGEXP is repeatedly matched and the list of
 +REGEXP-GROUPS submatches is returned.  This behaves much like
 +\\[comint-redirect-results-list-from-process] but instead of
 +returning a single submatch it returns a list of each submatch
 +for each match."
 +
 +  (let ((outbuf " *SQL-Redirect-values*")
 +        (results nil))
 +    (sql-redirect command combuf outbuf nil)
 +    (with-current-buffer outbuf
 +      (while (re-search-forward regexp nil t)
 +      (push
 +         (cond
 +          ;; no groups-return all of them
 +          ((null regexp-groups)
 +           (let ((i 1)
 +                 (r nil))
 +             (while (match-beginning i)
 +               (push (match-string i) r))
 +             (nreverse r)))
 +          ;; one group specified
 +          ((numberp regexp-groups)
 +           (match-string regexp-groups))
 +          ;; list of numbers; return the specified matches only
 +          ((consp regexp-groups)
 +           (mapcar (lambda (c)
 +                     (cond
 +                      ((numberp c) (match-string c))
 +                      ((stringp c) (match-substitute-replacement c))
 +                      (t (error "sql-redirect-value: unknown REGEXP-GROUPS value - %s" c))))
 +                   regexp-groups))
 +          ;; String is specified; return replacement string
 +          ((stringp regexp-groups)
 +           (match-substitute-replacement regexp-groups))
 +          (t
 +           (error "sql-redirect-value: unknown REGEXP-GROUPS value - %s"
 +                  regexp-groups)))
 +         results)))
 +      (nreverse results)))
 +
 +(defun sql-execute (sqlbuf outbuf command arg)
 +  "Executes a command in a SQL interacive buffer and captures the output.
 +
 +The commands are run in SQLBUF and the output saved in OUTBUF.
 +COMMAND must be a string, a function or a list of such elements.
 +Functions are called with SQLBUF, OUTBUF and ARG as parameters;
 +strings are formatted with ARG and executed.
 +
 +If the results are empty the OUTBUF is deleted, otherwise the
 +buffer is popped into a view window. "
 +  (mapc
 +   (lambda (c)
 +     (cond
 +      ((stringp c)
 +       (sql-redirect (if arg (format c arg) c) sqlbuf outbuf) t)
 +      ((functionp c)
 +       (apply c sqlbuf outbuf arg))
 +      (t (error "Unknown sql-execute item %s" c))))
 +   (if (consp command) command (cons command nil)))
 +
 +  (setq outbuf (get-buffer outbuf))
 +  (if (zerop (buffer-size outbuf))
 +      (kill-buffer outbuf)
 +    (let ((one-win (eq (selected-window)
 +                       (get-lru-window))))
 +      (with-current-buffer outbuf
 +        (set-buffer-modified-p nil)
 +        (toggle-read-only 1))
 +      (view-buffer-other-window outbuf)
 +      (when one-win
 +        (shrink-window-if-larger-than-buffer)))))
 +
 +(defun sql-execute-feature (sqlbuf outbuf feature enhanced arg)
 +  "List objects or details in a separate display buffer."
 +  (let (command)
 +    (with-current-buffer sqlbuf
 +      (setq command (sql-get-product-feature sql-product feature)))
 +    (unless command
 +      (error "%s does not support %s" sql-product feature))
 +    (when (consp command)
 +      (setq command (if enhanced
 +                        (cdr command)
 +                      (car command))))
 +    (sql-execute sqlbuf outbuf command arg)))
 +
 +(defun sql-read-table-name (prompt)
 +  "Read the name of a database table."
 +  ;; TODO: Fetch table/view names from database and provide completion.
 +  ;; Also implement thing-at-point if the buffer has valid names in it
 +  ;; (i.e. sql-mode, sql-interactive-mode, or sql-list-all buffers)
 +  (read-from-minibuffer prompt))
 +
 +(defun sql-list-all (&optional enhanced)
 +  "List all database objects."
 +  (interactive "P")
 +  (let ((sqlbuf (sql-find-sqli-buffer)))
 +    (unless sqlbuf
 +      (error "No SQL interactive buffer found"))
 +    (sql-execute-feature sqlbuf "*List All*" :list-all enhanced nil)))
 +
 +(defun sql-list-table (name &optional enhanced)
 +  "List the details of a database table. "
 +  (interactive
 +   (list (sql-read-table-name "Table name: ")
 +         current-prefix-arg))
 +  (let ((sqlbuf (sql-find-sqli-buffer)))
 +    (unless sqlbuf
 +      (error "No SQL interactive buffer found"))
 +    (unless name
 +      (error "No table name specified"))
 +    (sql-execute-feature sqlbuf (format "*List %s*" name)
 +                         :list-table enhanced name)))
  
  \f
  
@@@ -3367,29 -2249,24 +3368,29 @@@ you entered, right above the output it 
  \(setq comint-output-filter-functions
         \(function (lambda (STR) (comint-show-output))))"
    (delay-mode-hooks (comint-mode))
 +
    ;; Get the `sql-product' for this interactive session.
    (set (make-local-variable 'sql-product)
         (or sql-interactive-product
           sql-product))
 +
    ;; Setup the mode.
    (setq major-mode 'sql-interactive-mode)
 -  (setq mode-name (concat "SQLi[" (prin1-to-string sql-product) "]"))
 +  (setq mode-name (concat "SQLi[" (or (sql-get-product-feature sql-product :name)
 +                                    (symbol-name sql-product)) "]"))
    (use-local-map sql-interactive-mode-map)
    (if sql-interactive-mode-menu
        (easy-menu-add sql-interactive-mode-menu)) ; XEmacs
    (set-syntax-table sql-mode-syntax-table)
    (make-local-variable 'sql-mode-font-lock-keywords)
    (make-local-variable 'font-lock-defaults)
 +
    ;; Note that making KEYWORDS-ONLY nil will cause havoc if you try
    ;; SELECT 'x' FROM DUAL with SQL*Plus, because the title of the column
    ;; will have just one quote.  Therefore syntactic hilighting is
    ;; disabled for interactive buffers.  No imenu support.
    (sql-product-font-lock t nil)
 +
    ;; Enable commenting and uncommenting of the region.
    (make-local-variable 'comment-start)
    (setq comment-start "--")
    (setq local-abbrev-table sql-mode-abbrev-table)
    (setq abbrev-all-caps 1)
    ;; Exiting the process will call sql-stop.
 -  (set-process-sentinel (get-buffer-process sql-buffer) 'sql-stop)
 +  (set-process-sentinel (get-buffer-process (current-buffer)) 'sql-stop)
 +  ;; Save the connection name
 +  (make-local-variable 'sql-connection)
    ;; Create a usefull name for renaming this buffer later.
    (make-local-variable 'sql-alternate-buffer-name)
    (setq sql-alternate-buffer-name (sql-make-alternate-buffer-name))
    ;; User stuff.  Initialize before the hook.
    (set (make-local-variable 'sql-prompt-regexp)
 -       (sql-product-feature :sqli-prompt-regexp))
 +       (sql-get-product-feature sql-product :prompt-regexp))
    (set (make-local-variable 'sql-prompt-length)
 -       (sql-product-feature :sqli-prompt-length))
 +       (sql-get-product-feature sql-product :prompt-length))
 +  (set (make-local-variable 'sql-prompt-cont-regexp)
 +       (sql-get-product-feature sql-product :prompt-cont-regexp))
 +  (make-local-variable 'sql-output-newline-count)
 +  (make-local-variable 'sql-output-by-send)
 +  (add-hook 'comint-preoutput-filter-functions
 +            'sql-interactive-remove-continuation-prompt nil t)
    (make-local-variable 'sql-input-ring-separator)
    (make-local-variable 'sql-input-ring-file-name)
 -  ;; Run hook.
 +  ;; Run the mode hook (along with comint's hooks).
    (run-mode-hooks 'sql-interactive-mode-hook)
    ;; Set comint based on user overrides.
 -  (setq comint-prompt-regexp sql-prompt-regexp)
 +  (setq comint-prompt-regexp
 +        (if sql-prompt-cont-regexp
 +            (concat "\\(" sql-prompt-regexp
 +                    "\\|" sql-prompt-cont-regexp "\\)")
 +          sql-prompt-regexp))
    (setq left-margin sql-prompt-length)
 +  ;; Install input sender
 +  (set (make-local-variable 'comint-input-sender) 'sql-input-sender)
    ;; People wanting a different history file for each
    ;; buffer/process/client/whatever can change separator and file-name
    ;; on the sql-interactive-mode-hook.
@@@ -3453,239 -2316,36 +3454,239 @@@ Sentinels will always get the two param
  
  \f
  
 +;;; Connection handling
 +
 +(defun sql-read-connection (prompt &optional initial default)
 +  "Read a connection name."
 +  (let ((completion-ignore-case t))
 +    (completing-read prompt
 +                     (mapcar (lambda (c) (car c))
 +                             sql-connection-alist)
 +                     nil t initial 'sql-connection-history default)))
 +
 +;;;###autoload
 +(defun sql-connect (connection)
 +  "Connect to an interactive session using CONNECTION settings.
 +
 +See `sql-connection-alist' to see how to define connections and
 +their settings.
 +
 +The user will not be prompted for any login parameters if a value
 +is specified in the connection settings."
 +
 +  ;; Prompt for the connection from those defined in the alist
 +  (interactive
 +   (if sql-connection-alist
 +       (list (sql-read-connection "Connection: " nil '(nil)))
 +     nil))
 +
 +  ;; Are there connections defined
 +  (if sql-connection-alist
 +      ;; Was one selected
 +      (when connection
 +        ;; Get connection settings
 +        (let ((connect-set  (assoc connection sql-connection-alist)))
 +          ;; Settings are defined
 +          (if connect-set
 +              ;; Set the desired parameters
 +              (eval `(let*
 +                         (,@(cdr connect-set)
 +                          ;; :sqli-login params variable
 +                          (param-var    (sql-get-product-feature sql-product
 +                                                                 :sqli-login nil t))
 +                          ;; :sqli-login params value
 +                          (login-params (sql-get-product-feature sql-product
 +                                                                 :sqli-login))
 +                          ;; which params are in the connection
 +                          (set-params   (mapcar
 +                                         (lambda (v)
 +                                           (cond
 +                                            ((eq (car v) 'sql-user)     'user)
 +                                            ((eq (car v) 'sql-password) 'password)
 +                                            ((eq (car v) 'sql-server)   'server)
 +                                            ((eq (car v) 'sql-database) 'database)
 +                                            ((eq (car v) 'sql-port)     'port)
 +                                            (t                          (car v))))
 +                                         (cdr connect-set)))
 +                          ;; the remaining params (w/o the connection params)
 +                          (rem-params   (sql-for-each-login
 +                                         login-params
 +                                         (lambda (token plist)
 +                                           (unless (member token set-params)
 +                                                    (if plist
 +                                                        (cons token plist)
 +                                                      token)))))
 +                          ;; Remember the connection
 +                          (sql-connection connection))
 +
 +                       ;; Set the remaining parameters and start the
 +                       ;; interactive session
 +                       (eval `(let ((,param-var ',rem-params))
 +                                (sql-product-interactive sql-product)))))
 +            (message "SQL Connection <%s> does not exist" connection)
 +            nil)))
 +    (message "No SQL Connections defined")
 +    nil))
 +
 +(defun sql-save-connection (name)
 +  "Captures the connection information of the current SQLi session.
 +
 +The information is appended to `sql-connection-alist' and
 +optionally is saved to the user's init file."
 +
 +  (interactive "sNew connection name: ")
 +
 +  (if sql-connection
 +      (message "This session was started by a connection; it's already been saved.")
 +
 +    (let ((login (sql-get-product-feature sql-product :sqli-login))
 +          (alist sql-connection-alist)
 +          connect)
 +
 +      ;; Remove the existing connection if the user says so
 +      (when (and (assoc name alist)
 +                 (yes-or-no-p (format "Replace connection definition <%s>? " name)))
 +        (setq alist (assq-delete-all name alist)))
 +
 +      ;; Add the new connection if it doesn't exist
 +      (if (assoc name alist)
 +          (message "Connection <%s> already exists" name)
 +        (setq connect
 +              (append (list name)
 +                      (sql-for-each-login
 +                       `(product ,@login)
 +                       (lambda (token plist)
 +                         (cond
 +                          ((eq token 'product)  `(sql-product  ',sql-product))
 +                          ((eq token 'user)     `(sql-user     ,sql-user))
 +                          ((eq token 'database) `(sql-database ,sql-database))
 +                          ((eq token 'server)   `(sql-server   ,sql-server))
 +                          ((eq token 'port)     `(sql-port     ,sql-port)))))))
 +
 +        (setq alist (append alist (list connect)))
 +
 +        ;; confirm whether we want to save the connections
 +        (if (yes-or-no-p "Save the connections for future sessions? ")
 +            (customize-save-variable 'sql-connection-alist alist)
 +          (customize-set-variable 'sql-connection-alist alist))))))
 +
 +(defun sql-connection-menu-filter (tail)
 +  "Generates menu entries for using each connection."
 +  (append
 +   (mapcar
 +    (lambda (conn)
 +      (vector
 +       (format "Connection <%s>" (car conn))
 +       (list 'sql-connect (car conn))
 +       t))
 +    sql-connection-alist)
 +   tail))
 +
 +\f
 +
  ;;; Entry functions for different SQL interpreters.
  
  ;;;###autoload
 -(defun sql-product-interactive (&optional product)
 -  "Run product interpreter as an inferior process.
 +(defun sql-product-interactive (&optional product new-name)
 +  "Run PRODUCT interpreter as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
  If buffer exists and a process is running, just switch to buffer `*SQL*'.
  
 +To specify the SQL product, prefix the call with
 +\\[universal-argument].  To set the buffer name as well, prefix
 +the call to \\[sql-product-interactive] with
 +\\[universal-argument] \\[universal-argument].
 +
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (setq product (or product sql-product))
 -  (when (sql-product-feature :sqli-connect product)
 -    (if (comint-check-proc "*SQL*")
 -      (pop-to-buffer "*SQL*")
 -      ;; Get credentials.
 -      (apply 'sql-get-login (sql-product-feature :sqli-login product))
 -      ;; Connect to database.
 -      (message "Login...")
 -      (funcall (sql-product-feature :sqli-connect product))
 -      ;; Set SQLi mode.
 -      (setq sql-interactive-product product)
 -      (setq sql-buffer (current-buffer))
 -      (sql-interactive-mode)
 -      ;; All done.
 -      (message "Login...done")
 -      (pop-to-buffer sql-buffer))))
 +  (interactive "P")
 +
 +  ;; Handle universal arguments if specified
 +  (when (not (or executing-kbd-macro noninteractive))
 +    (when (and (consp product)
 +               (not (cdr product))
 +               (numberp (car product)))
 +      (when (>= (prefix-numeric-value product) 16)
 +        (when (not new-name)
 +          (setq new-name '(4)))
 +        (setq product '(4)))))
 +
 +  ;; Get the value of product that we need
 +  (setq product
 +        (cond
 +         ((and product                  ; Product specified
 +               (symbolp product)) product)
 +         ((= (prefix-numeric-value product) 4) ; C-u, prompt for product
 +          (sql-read-product "SQL product: " sql-product))
 +         (t sql-product)))              ; Default to sql-product
 +
 +  ;; If we have a product and it has a interactive mode
 +  (if product
 +      (when (sql-get-product-feature product :sqli-comint-func)
 +        ;; If no new name specified, try to pop to an active SQL
 +        ;; interactive for the same product
 +        (let ((buf (sql-find-sqli-buffer product)))
 +          (if (and (not new-name) buf)
 +              (pop-to-buffer buf)
 +
 +            ;; We have a new name or sql-buffer doesn't exist or match
 +            ;; Start by remembering where we start
 +            (let ((start-buffer (current-buffer))
 +                  new-sqli-buffer)
 +
 +              ;; Get credentials.
 +              (apply 'sql-get-login (sql-get-product-feature product :sqli-login))
 +
 +              ;; Connect to database.
 +              (message "Login...")
 +              (funcall (sql-get-product-feature product :sqli-comint-func)
 +                       product
 +                       (sql-get-product-feature product :sqli-options))
 +
 +              ;; Set SQLi mode.
 +              (setq new-sqli-buffer (current-buffer))
 +              (let ((sql-interactive-product product))
 +                (sql-interactive-mode))
 +
 +              ;; Set the new buffer name
 +              (when new-name
 +                (sql-rename-buffer new-name))
 +
 +              ;; Set `sql-buffer' in the new buffer and the start buffer
 +              (setq sql-buffer (buffer-name new-sqli-buffer))
 +              (with-current-buffer start-buffer
 +                (setq sql-buffer (buffer-name new-sqli-buffer))
 +                (run-hooks 'sql-set-sqli-hook))
 +
 +              ;; All done.
 +              (message "Login...done")
 +              (pop-to-buffer sql-buffer)))))
 +    (message "No default SQL product defined.  Set `sql-product'.")))
 +
 +(defun sql-comint (product params)
 +  "Set up a comint buffer to run the SQL processor.
 +
 +PRODUCT is the SQL product.  PARAMS is a list of strings which are
 +passed as command line arguments."
 +  (let ((program (sql-get-product-feature product :sqli-program))
 +        (buf-name "SQL"))
 +    ;; make sure we can find the program
 +    (unless (executable-find program)
 +      (error "Unable to locate SQL program \'%s\'" program))
 +    ;; Make sure buffer name is unique
 +    (when (sql-buffer-live-p (format "*%s*" buf-name))
 +      (setq buf-name (format "SQL-%s" product))
 +      (when (sql-buffer-live-p (format "*%s*" buf-name))
 +        (let ((i 1))
 +          (while (sql-buffer-live-p
 +                  (format "*%s*"
 +                          (setq buf-name (format "SQL-%s%d" product i))))
 +            (setq i (1+ i))))))
 +    (set-buffer
 +     (apply 'make-comint buf-name program nil params))))
  
  ;;;###autoload
 -(defun sql-oracle ()
 +(defun sql-oracle (&optional buffer)
    "Run sqlplus by Oracle as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
@@@ -3700,11 -2360,6 +3701,11 @@@ the list `sql-oracle-options'
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-oracle].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-oracle].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -3713,32 -2368,36 +3714,32 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'oracle))
 +  (interactive "P")
 +  (sql-product-interactive 'oracle buffer))
  
 -(defun sql-connect-oracle ()
 -  "Create comint buffer and connect to Oracle using the login
 -parameters and command options."
 +(defun sql-comint-oracle (product options)
 +  "Create comint buffer and connect to Oracle."
    ;; Produce user/password@database construct.  Password without user
    ;; is meaningless; database without user/password is meaningless,
    ;; because "@param" will ask sqlplus to interpret the script
    ;; "param".
 -  (let ((parameter
 -         (if (not (string= "" sql-user))
 -             (if (not (string= "" sql-password))
 -                 (concat sql-user "/" sql-password)
 -               sql-user))))
 +  (let ((parameter nil))
 +    (if (not (string= "" sql-user))
 +      (if (not (string= "" sql-password))
 +          (setq parameter (concat sql-user "/" sql-password))
 +        (setq parameter sql-user)))
      (if (and parameter (not (string= "" sql-database)))
        (setq parameter (concat parameter "@" sql-database)))
 -    (setq parameter (if parameter
 -                        (nconc (list parameter) sql-oracle-options)
 -                      sql-oracle-options))
 -    (set-buffer (apply 'make-comint "SQL" sql-oracle-program nil parameter))
 -    ;; SQL*Plus is buffered on Windows; this handles &placeholders.
 -    (if (eq window-system 'w32)
 -      (setq comint-input-sender 'sql-query-placeholders-and-send))))
 +    (if parameter
 +      (setq parameter (nconc (list parameter) options))
 +      (setq parameter options))
 +    (sql-comint product parameter)))
  
  \f
  
  ;;;###autoload
 -(defun sql-sybase ()
 -  "Run isql by SyBase as an inferior process.
 +(defun sql-sybase (&optional buffer)
 +  "Run isql by Sybase as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
  If buffer exists and a process is running, just switch to buffer
@@@ -3752,11 -2411,6 +3753,11 @@@ can be stored in the list `sql-sybase-o
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-sybase].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-sybase].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -3765,14 -2419,15 +3766,14 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'sybase))
 +  (interactive "P")
 +  (sql-product-interactive 'sybase buffer))
  
 -(defun sql-connect-sybase ()
 -  "Create comint buffer and connect to Sybase using the login
 -parameters and command options."
 +(defun sql-comint-sybase (product options)
 +  "Create comint buffer and connect to Sybase."
    ;; Put all parameters to the program (if defined) in a list and call
    ;; make-comint.
 -  (let ((params sql-sybase-options))
 +  (let ((params options))
      (if (not (string= "" sql-server))
        (setq params (append (list "-S" sql-server) params)))
      (if (not (string= "" sql-database))
        (setq params (append (list "-P" sql-password) params)))
      (if (not (string= "" sql-user))
        (setq params (append (list "-U" sql-user) params)))
 -    (set-buffer (apply 'make-comint "SQL" sql-sybase-program
 -                     nil params))))
 +    (sql-comint product params)))
  
  \f
  
  ;;;###autoload
 -(defun sql-informix ()
 +(defun sql-informix (&optional buffer)
    "Run dbaccess by Informix as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
@@@ -3799,11 -2455,6 +3800,11 @@@ the variable `sql-database' as default
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-informix].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-informix].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -3812,23 -2463,21 +3813,23 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'informix))
 +  (interactive "P")
 +  (sql-product-interactive 'informix buffer))
  
 -(defun sql-connect-informix ()
 -  "Create comint buffer and connect to Informix using the login
 -parameters and command options."
 +(defun sql-comint-informix (product options)
 +  "Create comint buffer and connect to Informix."
    ;; username and password are ignored.
 -  (set-buffer (if (string= "" sql-database)
 -                  (make-comint "SQL" sql-informix-program nil)
 -                (make-comint "SQL" sql-informix-program nil sql-database "-"))))
 +  (let ((db (if (string= "" sql-database)
 +              "-"
 +            (if (string= "" sql-server)
 +                sql-database
 +              (concat sql-database "@" sql-server)))))
 +    (sql-comint product (append `(,db "-") options))))
  
  \f
  
  ;;;###autoload
 -(defun sql-sqlite ()
 +(defun sql-sqlite (&optional buffer)
    "Run sqlite as an inferior process.
  
  SQLite is free software.
@@@ -3845,11 -2494,6 +3846,11 @@@ can be stored in the list `sql-sqlite-o
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-sqlite].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-sqlite].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -3858,24 -2502,26 +3859,24 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'sqlite))
 +  (interactive "P")
 +  (sql-product-interactive 'sqlite buffer))
  
 -(defun sql-connect-sqlite ()
 -  "Create comint buffer and connect to SQLite using the login
 -parameters and command options."
 +(defun sql-comint-sqlite (product options)
 +  "Create comint buffer and connect to SQLite."
    ;; Put all parameters to the program (if defined) in a list and call
    ;; make-comint.
    (let ((params))
      (if (not (string= "" sql-database))
 -      (setq params (append (list sql-database) params)))
 -    (if (not (null sql-sqlite-options))
 -      (setq params (append sql-sqlite-options params)))
 -    (set-buffer (apply 'make-comint "SQL" sql-sqlite-program
 -                     nil params))))
 +      (setq params (append (list (expand-file-name sql-database))
 +                             params)))
 +    (setq params (append options params))
 +    (sql-comint product params)))
  
  \f
  
  ;;;###autoload
 -(defun sql-mysql ()
 +(defun sql-mysql (&optional buffer)
    "Run mysql by TcX as an inferior process.
  
  Mysql versions 3.23 and up are free software.
@@@ -3892,11 -2538,6 +3893,11 @@@ can be stored in the list `sql-mysql-op
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-mysql].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-mysql].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -3905,11 -2546,12 +3906,11 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'mysql))
 +  (interactive "P")
 +  (sql-product-interactive 'mysql buffer))
  
 -(defun sql-connect-mysql ()
 -  "Create comint buffer and connect to MySQL using the login
 -parameters and command options."
 +(defun sql-comint-mysql (product options)
 +  "Create comint buffer and connect to MySQL."
    ;; Put all parameters to the program (if defined) in a list and call
    ;; make-comint.
    (let ((params))
        (setq params (append (list sql-database) params)))
      (if (not (string= "" sql-server))
        (setq params (append (list (concat "--host=" sql-server)) params)))
 +    (if (not (= 0 sql-port))
 +      (setq params (append (list (concat "--port=" (number-to-string sql-port))) params)))
      (if (not (string= "" sql-password))
        (setq params (append (list (concat "--password=" sql-password)) params)))
      (if (not (string= "" sql-user))
        (setq params (append (list (concat "--user=" sql-user)) params)))
 -    (if (not (null sql-mysql-options))
 -      (setq params (append sql-mysql-options params)))
 -    (set-buffer (apply 'make-comint "SQL" sql-mysql-program
 -                     nil params))))
 +    (setq params (append options params))
 +    (sql-comint product params)))
  
  \f
  
  ;;;###autoload
 -(defun sql-solid ()
 +(defun sql-solid (&optional buffer)
    "Run solsql by Solid as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
@@@ -3943,11 -2585,6 +3944,11 @@@ defaults, if set
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-solid].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-solid].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -3956,26 -2593,28 +3957,26 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'solid))
 +  (interactive "P")
 +  (sql-product-interactive 'solid buffer))
  
 -(defun sql-connect-solid ()
 -  "Create comint buffer and connect to Solid using the login
 -parameters and command options."
 +(defun sql-comint-solid (product options)
 +  "Create comint buffer and connect to Solid."
    ;; Put all parameters to the program (if defined) in a list and call
    ;; make-comint.
 -  (let ((params))
 +  (let ((params options))
      ;; It only makes sense if both username and password are there.
      (if (not (or (string= "" sql-user)
                 (string= "" sql-password)))
        (setq params (append (list sql-user sql-password) params)))
      (if (not (string= "" sql-server))
        (setq params (append (list sql-server) params)))
 -    (set-buffer (apply 'make-comint "SQL" sql-solid-program
 -                     nil params))))
 +    (sql-comint product params)))
  
  \f
  
  ;;;###autoload
 -(defun sql-ingres ()
 +(defun sql-ingres (&optional buffer)
    "Run sql by Ingres as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
@@@ -3988,11 -2627,6 +3989,11 @@@ the variable `sql-database' as default
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-ingres].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-ingres].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -4001,22 -2635,21 +4002,22 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'ingres))
 +  (interactive "P")
 +  (sql-product-interactive 'ingres buffer))
  
 -(defun sql-connect-ingres ()
 -  "Create comint buffer and connect to Ingres using the login
 -parameters and command options."
 +(defun sql-comint-ingres (product options)
 +  "Create comint buffer and connect to Ingres."
    ;; username and password are ignored.
 -  (set-buffer (if (string= "" sql-database)
 -                  (make-comint "SQL" sql-ingres-program nil)
 -                (make-comint "SQL" sql-ingres-program nil sql-database))))
 +  (sql-comint product
 +               (append (if (string= "" sql-database)
 +                           nil
 +                         (list sql-database))
 +                       options)))
  
  \f
  
  ;;;###autoload
 -(defun sql-ms ()
 +(defun sql-ms (&optional buffer)
    "Run osql by Microsoft as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
@@@ -4031,11 -2664,6 +4032,11 @@@ in the list `sql-ms-options'
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-ms].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-ms].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -4044,14 -2672,15 +4045,14 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'ms))
 +  (interactive "P")
 +  (sql-product-interactive 'ms buffer))
  
 -(defun sql-connect-ms ()
 -  "Create comint buffer and connect to Microsoft using the login
 -parameters and command options."
 +(defun sql-comint-ms (product options)
 +  "Create comint buffer and connect to Microsoft SQL Server."
    ;; Put all parameters to the program (if defined) in a list and call
    ;; make-comint.
 -  (let ((params sql-ms-options))
 +  (let ((params options))
      (if (not (string= "" sql-server))
          (setq params (append (list "-S" sql-server) params)))
      (if (not (string= "" sql-database))
        ;; If -P is passed to ISQL as the last argument without a
        ;; password, it's considered null.
        (setq params (append params (list "-P")))))
 -    (set-buffer (apply 'make-comint "SQL" sql-ms-program
 -                     nil params))))
 +    (sql-comint product params)))
  
  \f
  
  ;;;###autoload
 -(defun sql-postgres ()
 +(defun sql-postgres (&optional buffer)
    "Run psql by Postgres as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
@@@ -4087,11 -2717,6 +4088,11 @@@ Additional command line parameters can 
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-postgres].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-postgres].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -4105,31 -2730,31 +4106,31 @@@ Try to set `comint-output-filter-functi
                                             '(comint-strip-ctrl-m)))
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'postgres))
 +  (interactive "P")
 +  (sql-product-interactive 'postgres buffer))
  
 -(defun sql-connect-postgres ()
 -  "Create comint buffer and connect to Postgres using the login
 -parameters and command options."
 +(defun sql-comint-postgres (product options)
 +  "Create comint buffer and connect to Postgres."
    ;; username and password are ignored.  Mark Stosberg suggest to add
    ;; the database at the end.  Jason Beegan suggest using --pset and
    ;; pager=off instead of \\o|cat.  The later was the solution by
    ;; Gregor Zych.  Jason's suggestion is the default value for
    ;; sql-postgres-options.
 -  (let ((params sql-postgres-options))
 +  (let ((params options))
      (if (not (string= "" sql-database))
        (setq params (append params (list sql-database))))
      (if (not (string= "" sql-server))
        (setq params (append (list "-h" sql-server) params)))
      (if (not (string= "" sql-user))
        (setq params (append (list "-U" sql-user) params)))
 -    (set-buffer (apply 'make-comint "SQL" sql-postgres-program
 -                     nil params))))
 +    (if (not (= 0 sql-port))
 +      (setq params (append (list "-p" sql-port) params)))
 +    (sql-comint product params)))
  
  \f
  
  ;;;###autoload
 -(defun sql-interbase ()
 +(defun sql-interbase (&optional buffer)
    "Run isql by Interbase as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
@@@ -4143,11 -2768,6 +4144,11 @@@ defaults, if set
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-interbase].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-interbase].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -4156,26 -2776,28 +4157,26 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'interbase))
 +  (interactive "P")
 +  (sql-product-interactive 'interbase buffer))
  
 -(defun sql-connect-interbase ()
 -  "Create comint buffer and connect to Interbase using the login
 -parameters and command options."
 +(defun sql-comint-interbase (product options)
 +  "Create comint buffer and connect to Interbase."
    ;; Put all parameters to the program (if defined) in a list and call
    ;; make-comint.
 -  (let ((params sql-interbase-options))
 +  (let ((params options))
      (if (not (string= "" sql-user))
        (setq params (append (list "-u" sql-user) params)))
      (if (not (string= "" sql-password))
        (setq params (append (list "-p" sql-password) params)))
      (if (not (string= "" sql-database))
          (setq params (cons sql-database params))) ; add to the front!
 -    (set-buffer (apply 'make-comint "SQL" sql-interbase-program
 -                     nil params))))
 +    (sql-comint product params)))
  
  \f
  
  ;;;###autoload
 -(defun sql-db2 ()
 +(defun sql-db2 (&optional buffer)
    "Run db2 by IBM as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
@@@ -4193,11 -2815,6 +4194,11 @@@ db2, newlines will be escaped if necess
  `comint-input-sender' back to `comint-simple-send' by writing an after
  advice.  See the elisp manual for more information.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-db2].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  To specify a coding system for converting non-ASCII characters
  in the input and output to the process, use \\[universal-coding-system-argument]
  before \\[sql-db2].  You can also specify this with \\[set-buffer-process-coding-system]
@@@ -4206,18 -2823,21 +4207,18 @@@ The default comes from `process-coding-
  `default-process-coding-system'.
  
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'db2))
 +  (interactive "P")
 +  (sql-product-interactive 'db2 buffer))
  
 -(defun sql-connect-db2 ()
 -  "Create comint buffer and connect to DB2 using the login
 -parameters and command options."
 +(defun sql-comint-db2 (product options)
 +  "Create comint buffer and connect to DB2."
    ;; Put all parameters to the program (if defined) in a list and call
    ;; make-comint.
 -  (set-buffer (apply 'make-comint "SQL" sql-db2-program
 -                   nil sql-db2-options))
 -  ;; Properly escape newlines when DB2 is interactive.
 -  (setq comint-input-sender 'sql-escape-newlines-and-send))
 +  (sql-comint product options)
 +)
  
  ;;;###autoload
 -(defun sql-linter ()
 +(defun sql-linter (&optional buffer)
    "Run inl by RELEX as an inferior process.
  
  If buffer `*SQL*' exists but no process is running, make a new process.
@@@ -4227,7 -2847,7 +4228,7 @@@ If buffer exists and a process is runni
  Interpreter used comes from variable `sql-linter-program' - usually `inl'.
  Login uses the variables `sql-user', `sql-password', `sql-database' and
  `sql-server' as defaults, if set.  Additional command line parameters
 -can be stored in the list `sql-linter-options'. Run inl -h to get help on
 +can be stored in the list `sql-linter-options'.  Run inl -h to get help on
  parameters.
  
  `sql-database' is used to set the LINTER_MBX environment variable for
@@@ -4239,22 -2859,16 +4240,22 @@@ an empty password
  The buffer is put in SQL interactive mode, giving commands for sending
  input.  See `sql-interactive-mode'.
  
 +To set the buffer name directly, use \\[universal-argument]
 +before \\[sql-linter].  Once session has started,
 +\\[sql-rename-buffer] can be called separately to rename the
 +buffer.
 +
  \(Type \\[describe-mode] in the SQL buffer for a list of commands.)"
 -  (interactive)
 -  (sql-product-interactive 'linter))
 +  (interactive "P")
 +  (sql-product-interactive 'linter buffer))
  
 -(defun sql-connect-linter ()
 -  "Create comint buffer and connect to Linter using the login
 -parameters and command options."
 +(defun sql-comint-linter (product options)
 +  "Create comint buffer and connect to Linter."
    ;; Put all parameters to the program (if defined) in a list and call
    ;; make-comint.
 -  (let ((params sql-linter-options) (login nil) (old-mbx (getenv "LINTER_MBX")))
 +  (let ((params options)
 +        (login nil)
 +        (old-mbx (getenv "LINTER_MBX")))
      (if (not (string= "" sql-user))
        (setq login (concat sql-user "/" sql-password)))
      (setq params (append (list "-u" login) params))
      (if (string= "" sql-database)
        (setenv "LINTER_MBX" nil)
        (setenv "LINTER_MBX" sql-database))
 -    (set-buffer (apply 'make-comint "SQL" sql-linter-program nil
 -                     params))
 +    (sql-comint product params)
      (setenv "LINTER_MBX" old-mbx)))
  
  \f
  
  (provide 'sql)
  
- ;; arch-tag: 7e1fa1c4-9ca2-402e-87d2-83a5eccb7ac3
  ;;; sql.el ends here
 +
diff --combined lisp/select.el
@@@ -1,11 -1,12 +1,11 @@@
  ;;; select.el --- lisp portion of standard selection support
  
 +;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 +;;   2008, 2009, 2010  Free Software Foundation, Inc.
 +
  ;; Maintainer: FSF
  ;; Keywords: internal
  
 -;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 -;;   2008, 2009, 2010 Free Software Foundation, Inc.
 -;; Based partially on earlier release by Lucid.
 -
  ;; This file is part of GNU Emacs.
  
  ;; GNU Emacs is free software: you can redistribute it and/or modify
  
  ;;; Commentary:
  
 +;; Based partially on earlier release by Lucid.
 +
  ;;; Code:
  
  (defcustom selection-coding-system nil
 -  "Coding system for communicating with other X clients.
 +  "Coding system for communicating with other programs.
 +
 +For MS-Windows and MS-DOS:
 +When sending or receiving text via selection and clipboard, the text
 +is encoded or decoded by this coding system.  The default value is
 +the current system default encoding on 9x/Me, `utf-16le-dos'
 +\(Unicode) on NT/W2K/XP, and `iso-latin-1-dos' on MS-DOS.
  
 +For X Windows:
  When sending text via selection and clipboard, if the target
  data-type matches with the type of this coding system, it is used
  for encoding the text.  Otherwise (including the case that this
@@@ -66,17 -58,18 +66,18 @@@ The default value is nil.
           (set symbol value)))
  
  (defvar next-selection-coding-system nil
 -  "Coding system for the next communication with other X clients.
 +  "Coding system for the next communication with other programs.
  Usually, `selection-coding-system' is used for communicating with
 -other X clients.  But, if this variable is set, it is used for
 -the next communication only.  After the communication, this
 -variable is set to nil.")
 +other programs (X Windows clients or MS Windows programs).  But, if this
 +variable is set, it is used for the next communication only.
 +After the communication, this variable is set to nil.")
  
  (declare-function x-get-selection-internal "xselect.c"
                  (selection-symbol target-type &optional time-stamp))
  
- ;; This is for temporary compatibility with pre-release Emacs 19.
- (defalias 'x-selection 'x-get-selection)
+ ;; Only declared obsolete in 23.3.
+ (define-obsolete-function-alias 'x-selection 'x-get-selection "at least 19.34")
  (defun x-get-selection (&optional type data-type)
    "Return the value of an X Windows selection.
  The argument TYPE (default `PRIMARY') says which selection,
@@@ -182,6 -175,36 +183,6 @@@ are not available to other programs.
        (symbolp data)
        (integerp data)))
  \f
 -;;; Cut Buffer support
 -
 -(declare-function x-get-cut-buffer-internal "xselect.c")
 -
 -(defun x-get-cut-buffer (&optional which-one)
 -  "Return the value of one of the 8 X server cut-buffers.
 -Optional arg WHICH-ONE should be a number from 0 to 7, defaulting to 0.
 -Cut buffers are considered obsolete; you should use selections instead."
 -  (x-get-cut-buffer-internal
 -   (if which-one
 -       (aref [CUT_BUFFER0 CUT_BUFFER1 CUT_BUFFER2 CUT_BUFFER3
 -            CUT_BUFFER4 CUT_BUFFER5 CUT_BUFFER6 CUT_BUFFER7]
 -           which-one)
 -     'CUT_BUFFER0)))
 -
 -(declare-function x-rotate-cut-buffers-internal "xselect.c")
 -(declare-function x-store-cut-buffer-internal "xselect.c")
 -
 -(defun x-set-cut-buffer (string &optional push)
 -  "Store STRING into the X server's primary cut buffer.
 -If PUSH is non-nil, also rotate the cut buffers:
 -this means the previous value of the primary cut buffer moves to the second
 -cut buffer, and the second to the third, and so on (there are 8 buffers.)
 -Cut buffers are considered obsolete; you should use selections instead."
 -  (or (stringp string) (signal 'wrong-type-argument (list 'stringp string)))
 -  (if push
 -      (x-rotate-cut-buffers-internal 1))
 -  (x-store-cut-buffer-internal 'CUT_BUFFER0 string))
 -
 -\f
  ;; Functions to convert the selection into various other selection types.
  ;; Every selection type that Emacs handles is implemented this way, except
  ;; for TIMESTAMP, which is a special case.
diff --combined lisp/speedbar.el
@@@ -1,7 -1,8 +1,8 @@@
  ;;; speedbar --- quick access to files and tags in a frame
  
  ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- ;;   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ ;;   2005, 2006, 2007, 2008, 2009, 2010
+ ;;   Free Software Foundation, Inc.
  
  ;; Author: Eric M. Ludlam <zappo@gnu.org>
  ;; Keywords: file, tags, tools
@@@ -1128,9 -1129,9 +1129,9 @@@ in the selected file
      (setq font-lock-keywords nil) ;; no font-locking please
      (setq truncate-lines t)
      (make-local-variable 'frame-title-format)
-     (setq frame-title-format (concat "Speedbar " speedbar-version))
-     (setq case-fold-search nil)
-     (toggle-read-only 1)
+     (setq frame-title-format (concat "Speedbar " speedbar-version)
+         case-fold-search nil
+         buffer-read-only t)
      (speedbar-set-mode-line-format)
      ;; Add in our dframe hooks.
      (if speedbar-track-mouse-flag
@@@ -1644,8 -1645,8 +1645,8 @@@ Files can be renamed to new names or mo
      (if (speedbar-y-or-n-p (format "Delete %s? " f) t)
        (progn
          (if (file-directory-p f)
 -            (delete-directory f)
 -          (delete-file f))
 +            (delete-directory f t t)
 +          (delete-file f t))
          (speedbar-message "Okie dokie.")
          (let ((p (point)))
            (speedbar-refresh)
@@@ -4142,5 -4143,4 +4143,4 @@@ TEXT is the buffer's name, TOKEN and IN
  ;; run load-time hooks
  (run-hooks 'speedbar-load-hook)
  
- ;; arch-tag: 4477e6d1-f78c-48b9-a503-387d3c9767d5
  ;;; speedbar ends here
diff --combined lisp/textmodes/bibtex.el
@@@ -1,7 -1,8 +1,8 @@@
  ;;; bibtex.el --- BibTeX mode for GNU Emacs
  
  ;; Copyright (C) 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
- ;;   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ ;;   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ ;;   Free Software Foundation, Inc.
  
  ;; Author: Stefan Schoef <schoef@offis.uni-oldenburg.de>
  ;;      Bengt Martensson <bengt@mathematik.uni-Bremen.de>
@@@ -2094,7 -2095,7 +2095,7 @@@ Formats current entry according to vari
                                  ;; if match not at left subfield boundary...
                                  (if (< (1+ (nth 1 bounds)) (match-beginning 0))
                                      (insert (bibtex-field-right-delimiter) " # ")
 -                                  (delete-backward-char 1))))))))
 +                                  (delete-char -1))))))))
  
                      ;; use book title of crossref'd entry
                      (if (and (memq 'inherit-booktitle format)
@@@ -3027,14 -3028,12 +3028,14 @@@ if that value is non-nil
                  ;; brace-delimited ones
                  )
           nil
 -         (font-lock-syntactic-keywords . bibtex-font-lock-syntactic-keywords)
           (font-lock-extra-managed-props . (category))
         (font-lock-mark-block-function
          . (lambda ()
                (set-mark (bibtex-end-of-entry))
              (bibtex-beginning-of-entry)))))
 +  (set (make-local-variable 'syntax-propertize-function)
 +       (syntax-propertize-via-font-lock
 +        bibtex-font-lock-syntactic-keywords))
    (setq imenu-generic-expression
          (list (list nil bibtex-entry-head bibtex-key-in-head))
          imenu-case-fold-search t)
@@@ -3835,16 -3834,16 +3836,16 @@@ Return t if test was successful, nil ot
            (with-current-buffer (get-buffer-create err-buf)
              (setq default-directory dir)
              (unless (eq major-mode 'compilation-mode) (compilation-mode))
-             (toggle-read-only -1)
-             (delete-region (point-min) (point-max))
-             (insert "BibTeX mode command `bibtex-validate'\n"
-                     (if syntax-error
-                         "Maybe undetected errors due to syntax errors.  Correct and validate again.\n"
-                       "\n"))
-             (dolist (err error-list)
-               (insert (format "%s:%d: %s\n" file (car err) (cdr err))))
-             (set-buffer-modified-p nil)
-             (toggle-read-only 1)
+             (let ((inhibit-read-only t))
+               (delete-region (point-min) (point-max))
+               (insert "BibTeX mode command `bibtex-validate'\n"
+                       (if syntax-error
+                           "Maybe undetected errors due to syntax errors.  \
+ Correct and validate again.\n"
+                         "\n"))
+               (dolist (err error-list)
+                 (insert (format "%s:%d: %s\n" file (car err) (cdr err))))
+               (set-buffer-modified-p nil))
              (goto-char (point-min))
              (forward-line 2)) ; first error message
            (display-buffer err-buf)
@@@ -3896,12 -3895,11 +3897,11 @@@ Return t if test was successful, nil ot
          (let ((err-buf "*BibTeX validation errors*"))
            (with-current-buffer (get-buffer-create err-buf)
              (unless (eq major-mode 'compilation-mode) (compilation-mode))
-             (toggle-read-only -1)
-             (delete-region (point-min) (point-max))
-             (insert "BibTeX mode command `bibtex-validate-globally'\n\n")
-             (dolist (err (sort error-list 'string-lessp)) (insert err))
-             (set-buffer-modified-p nil)
-             (toggle-read-only 1)
+             (let ((inhibit-read-only t))
+               (delete-region (point-min) (point-max))
+               (insert "BibTeX mode command `bibtex-validate-globally'\n\n")
+               (dolist (err (sort error-list 'string-lessp)) (insert err))
+               (set-buffer-modified-p nil))
              (goto-char (point-min))
              (forward-line 2)) ; first error message
            (display-buffer err-buf)
@@@ -4778,5 -4776,4 +4778,4 @@@ Return the URL or nil if none can be ge
  
  (provide 'bibtex)
  
- ;; arch-tag: ee2be3af-caad-427f-b42a-d20fad630d04
  ;;; bibtex.el ends here
diff --combined lisp/vc/add-log.el
@@@ -5,7 -5,7 +5,7 @@@
  ;;   Free Software Foundation, Inc.
  
  ;; Maintainer: FSF
 -;; Keywords: tools
 +;; Keywords: vc tools
  
  ;; This file is part of GNU Emacs.
  
@@@ -37,6 -37,9 +37,6 @@@
  
  ;;; Code:
  
 -(eval-when-compile
 -  (require 'timezone))
 -
  (defgroup change-log nil
    "Change log maintenance."
    :group 'tools
@@@ -242,7 -245,7 +242,7 @@@ Note: The search is conducted only with
      ;; wrongly with a non-date line existing as a random note.  In
      ;; addition, using any kind of fixed setting like this doesn't
      ;; work if a user customizes add-log-time-format.
 -    ("^[0-9-]+ +\\|^\\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\) [A-z][a-z][a-z] [0-9:+ ]+"
 +    ("^[0-9-]+ +\\|^ \\{11,\\}\\|^\\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\) [A-z][a-z][a-z] [0-9:+ ]+"
       (0 'change-log-date-face)
       ;; Name and e-mail; some people put e-mail in parens, not angles.
       ("\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)[>)]" nil nil
@@@ -698,7 -701,7 +698,7 @@@ current buffer to the complete file nam
  Optional arg BUFFER-FILE overrides `buffer-file-name'."
    ;; If we are called from a diff, first switch to the source buffer;
    ;; in order to respect buffer-local settings of change-log-default-name, etc.
-   (with-current-buffer (let ((buff (if (eq major-mode 'diff-mode)
+   (with-current-buffer (let ((buff (if (derived-mode-p 'diff-mode)
                                       (car (ignore-errors
                                             (diff-find-source-location))))))
                         (if (buffer-live-p buff) buff
      (if add-log-file-name-function
        (funcall add-log-file-name-function buffer-file)
        (setq buffer-file
 -            (file-relative-name buffer-file (file-name-directory log-file)))
 +            (let* ((dir (file-name-directory log-file))
 +                   (rel (file-relative-name buffer-file dir)))
 +              ;; Sometimes with symlinks, the two buffers may have names that
 +              ;; appear to belong to different directory trees.  So check the
 +              ;; file-truenames, to see if we get a better result.
 +              (if (not (string-match "\\`\\.\\./" rel))
 +                  rel
 +                (let ((new (file-relative-name (file-truename buffer-file)
 +                                               (file-truename dir))))
 +                  (if (< (length new) (length rel))
 +                      new rel)))))
        ;; If we have a backup file, it's presumably because we're
        ;; comparing old and new versions (e.g. for deleted
        ;; functions) and we'll want to use the original name.
@@@ -1180,7 -1173,7 +1180,7 @@@ Has a preference of looking backwards.
                ((apply 'derived-mode-p add-log-c-like-modes)
                 (or (c-cpp-define-name)
                     (c-defun-name)))
-               ((memq major-mode add-log-tex-like-modes)
+               ((apply #'derived-mode-p add-log-tex-like-modes)
                 (if (re-search-backward
                      "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
                      nil t)
          (change-log-get-method-definition-1 ""))
        (concat change-log-get-method-definition-md "]"))))))
  \f
 +(autoload 'timezone-make-date-sortable "timezone")
 +
  (defun change-log-sortable-date-at ()
    "Return date of log entry in a consistent form for sorting.
  Point is assumed to be at the start of the entry."
 -  (require 'timezone)
    (if (looking-at change-log-start-entry-re)
        (let ((date (match-string-no-properties 0)))
        (if date
            (if (string-match "\\(....\\)-\\(..\\)-\\(..\\)\\s-+" date)
                (concat (match-string 1 date) (match-string 2 date)
                        (match-string 3 date))
 -            (condition-case nil
 -                (timezone-make-date-sortable date)
 -              (error nil)))))
 +            (ignore-errors (timezone-make-date-sortable date)))))
      (error "Bad date")))
  
  (defun change-log-resolve-conflict ()
diff --combined src/ChangeLog
 -2010-10-25  Michael Albinus  <michael.albinus@gmx.de>
+ 2010-10-31  Chong Yidong  <cyd@stupidchicken.com>
+       * xterm.c (x_connection_closed): Print informative error message
+       when aborting on GTK.  This requires using shut_down_emacs
+       directly instead of Fkill_emacs.
++2010-10-31  Michael Albinus  <michael.albinus@gmx.de>
+       * dbusbind.c (Fdbus_call_method_asynchronously)
+       (Fdbus_register_signal, Fdbus_register_method): Check, whether
+       `dbus-registered-objects-table' is initialized.
 +2010-10-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * 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-10-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * 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-10-04  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * 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-10-04  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      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-10-03  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnutls.h (GNUTLS_LOG2): Convenience macro.
 +
 +      * 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.
 +
 +2010-10-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * fileio.c (Vdirectory_sep_char): Remove.
 +
 +2010-10-03  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * termhooks.h: Remove #ifdef CONSP.
 +
 +      * xterm.c (NO_INLINE, noinline): Move definitions to ../configure.in.
 +
 +      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.
 +
 +2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keyboard.c (command_loop_1): Make sure the mark is really alive
 +      before using it (Bug#7044).
 +
 +2010-10-02  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (tags): Rename target to full-tags.
 +
 +2010-10-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * emacs.c (main): Remove !WINDOWSNT conditional.
 +      (Fkill_emacs): Don't mention exemption on MS-Windows.
 +
 +2010-10-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * character.c (Fchar_bytes): Remove obsolete function.
 +      (syms_of_character): Remove Schar_bytes.
 +
 +      * 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>
  
        * dbusbind.c (syms_of_dbusbind): Set $DBUS_FATAL_WARNINGS to "0".
        (Bug#7113)
  
 -2010-09-26  Jan Djärv  <jan.h.d@swipnet.se>
 +2010-09-27  Jan Djärv  <jan.h.d@swipnet.se>
  
        * xgselect.c (xg_select): Clear file descriptors not set from
        rfds and wfds.
  
 -2010-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * process.c (wait_reading_process_output): Add missing FD_CLR
 +      for write_mask (must mirror connect_wait_mask).
  
 -      * 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-27  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -2010-09-17  Jan Djärv  <jan.h.d@swipnet.se>
 +      * 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.
  
 -      * gtkutil.c (xg_tool_bar_menu_proxy): Set gtk-menu-items to TRUE.
 +      * process.c (make_process): Initialize gnutls_log_level.
  
 -2010-09-12  Jan Djärv  <jan.h.d@swipnet.se>
 +      * process.h: Add gnutls_log_level and rename x509_cred and
 +      anon_cred to have the gnutls_ prefix for consistency.
  
 -      * 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.
 +      * gnutls.h (GNUTLS_LOG): Add convenience macro.
  
 -2010-09-11  Courtney Bane  <emacs-bugs-7626@cbane.org>  (tiny change)
 +2010-09-27  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * term.c (tty_set_terminal_modes): Don't initialize twice (bug#7002).
 +      * 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-08  Kenichi Handa  <handa@m17n.org>
 +2010-09-27  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * coding.c (encode_coding_iso_2022): Don't optimize for ASCII if
 -      we may use designation or locking-shift.
 +      * 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.
  
 -2010-09-07  Kenichi Handa  <handa@m17n.org>
 +      * lisp.h (xd_pending_messages, xd_read_queued_messages): Remove.
  
 -      * coding.c (detect_coding_emacs_mule): Fix checking of multibyte
 -      sequence when the source is multibyte.
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -2010-08-31  Kenichi Handa  <handa@m17n.org>
 +      * gnutls.c (gnutls_log_function): Added more debugging.
 +      (emacs_gnutls_read): Don't infloop while reading.
  
 -      * dispextern.h (FACE_FOR_CHAR): Use an ASCII face for 8-bit
 -      characters.
 +2010-09-27  Kenichi Handa  <handa@m17n.org>
  
 -      * 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.
 +      These changes are to remove restriction on the number of glyphs in
 +      one composition.
  
 -      * 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.
 +      * 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>
  
 -2010-08-29  Kenichi Handa  <handa@m17n.org>
 +      * composite.c (Ffind_composition_internal): Fix the return value
 +      for an automatic composition.
  
 -      * term.c (encode_terminal_code): Encode byte chars to the
 -      correspnding bytes.
 +2010-04-25  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-08-17  Andreas Schwab  <schwab@linux-m68k.org>
 +      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.
  
 -      * eval.c (Flet, Feval, Fapply, apply_lambda): Use SAFE_ALLOCA_LISP
 -      instead of SAFE_ALLOCA.
 +2010-04-25  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-08-17  Chong Yidong  <cyd@stupidchicken.com>
 +      * 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.
  
 -      * eval.c (Flet, Feval, Fapply, apply_lambda): Use SAFE_ALLOCA
 -      (Bug#6214).
 +2010-04-24  Glenn Morris  <rgm@gnu.org>
  
 -2010-08-14  Jan Djärv  <jan.h.d@swipnet.se>
 +      * 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.
  
 -      * doc.c (Fsnarf_documentation): Set skip_file only if p[1] is S.
 +2010-04-24  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-08-13  Jan Djärv  <jan.h.d@swipnet.se>
 +      * 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.
  
 -      * doc.c (Fsnarf_documentation): Initialize skip_file before
 -      build-files test.
 +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-08-09  Peter O'Gorman <pogma@thewrittenword.com>  (tiny change)
 +2010-04-21  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * s/hpux10-20.h (HAVE_TERMIOS, NO_TERMIO, ORDINARY_LINK):
 -      New definitions.
 -      (HAVE_TERMIO): Remove.
 +      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-08-06  Kenichi Handa  <handa@m17n.org>
 +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)
  
 -      * 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.
 +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
  
 -      * coding.c (decode_coding_iso_2022): Fix checking of dimension
 -      number in CTEXT extended segment.
 +      * xsettings.h (Ftool_bar_get_system_style): Declare.
  
 -2010-08-01  Juanma Barranquero  <lekktu@gmail.com>
 +      * 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'.
  
 -      * 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  Juanma Barranquero  <lekktu@gmail.com>
  
 -2010-07-30  Juanma Barranquero  <lekktu@gmail.com>
 +      * dired.c (Ffile_attributes): Fix typo in docstring.
  
 -      * fns.c (Fsubstring_no_properties, Fnthcdr, Ffeaturep)
 -      (Fhash_table_size): Fix typos in docstrings.
 -      (Fmake_hash_table): Doc fix.
 +2010-04-19  Adrian Robert  <Adrian.B.Robert@gmail.com>
  
 -2010-07-28  Juanma Barranquero  <lekktu@gmail.com>
 +      * nsmenu.m (EmacsDialog-runDialogAt:): Declare ret as
 +      NSInteger (Bug#5811).
  
 -      * minibuf.c (syms_of_minibuf) <read-buffer-function>:
 -      Doc fix (bug#5625).
 +2010-04-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
 -2010-07-27  Ken Brown  <kbrown@cornell.edu>
 +      * s/darwin.h (PTY_ITERATION, PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF)
 +      (PTY_OPEN): New defines.  Use openpty (Bug#726, Bug#5819).
  
 -      * dired.c (DIRENTRY_NONEMPTY) [cygwin]: Use d_ino instead of
 -      the MSDOS definition.
 +2010-04-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
 -2010-07-25  Christoph Scholtes  <cschol2112@gmail.com>
 +      * frame.h (FRAME_LINE_TO_PIXEL_Y): Add missing parenthesis.
  
 -      * minibuf.c (Fread_buffer): Doc fix (bug#6528).
 +2010-04-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-07-22  Christoph Scholtes  <cschol2112@gmail.com>
 +      * xdisp.c (prepare_menu_bars): Don't call ns_set_doc_edited for
 +      terminal frames (Bug#5837).
  
 -      * window.c (Fwindow_height): Doc fix (bug#6518).
 +2010-04-19  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-07-21  Juanma Barranquero  <lekktu@gmail.com>
 +      * .gdbinit (xsubchartable): New command.
  
 -      * buffer.c (syms_of_buffer) <fringe-indicator-alist>: Doc fix.
 +2010-04-19  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-07-17  Jan Djärv  <jan.h.d@swipnet.se>
 +      * 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
  
 -      * gtkutil.c (xg_event_is_for_menubar): Also check that event window
 -      is related to the menu bar (Bug#6499).
 +2010-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-07-14  Jan Djärv  <jan.h.d@swipnet.se>
 +      * alloc.c (Fpurecopy): Hash-cons if requested.
 +      (syms_of_alloc): Update purify-flag docstring.
  
 -      * xterm.h (x_menubar_window_to_frame): Second parameter is XEvent*.
 +2010-04-18  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * xterm.c (handle_one_xevent): Pass event to x_menubar_window_to_frame.
 +      * gtkutil.c (xg_set_geometry): Set size in geometry string also.
 +      (x_wm_set_size_hint): Set USER_POS in hint_flags (Bug#5968).
  
 -      * xmenu.c (x_activate_menubar): Revert previous fix for Bug#6499,
 -      i.e. don't put back ButtonRelease (Bug#6608).
 +2010-04-17  Eli Zaretskii  <eliz@gnu.org>
  
 -      * 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).
 +      Fix a crash when an NSM character is inserted at BEGV.
  
 -      * gtkutil.h (xg_event_is_for_menubar): Declare.
 +      * 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.
  
 -      * gtkutil.c (xg_event_is_for_menubar): New function (Bug#6499).
 +2010-04-16  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-07-14  Eli Zaretskii  <eliz@gnu.org>
 +      * 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)
  
 -      * w32fns.c (x_set_foreground_color): Fix setting the cursor color
 -      when it's the same as the old foreground.  (Bug#6609)
 +2010-04-16  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-07-10  Chong Yidong  <cyd@stupidchicken.com>
 +      * s/freebsd.h: Restore osreldate.h include.
 +      Suggested by Naohiro Aota.
  
 -      * xfaces.c (realize_face): Garbage the frame if a face is removed
 -      (Bug#6593).
 +2010-04-16  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-07-05  Andreas Schwab  <schwab@linux-m68k.org>
 +      * xmenu.c (apply_systemfont_to_menu): *childs was incorrectly used.
  
 -      * keyboard.c: Remove duplicate <setjmp.h>.
 -      (read_key_sequence): Remove volatile qualifiers.
 +2010-04-16  Ken Brown  <kbrown@cornell.edu>  (tiny change)
  
 -2010-07-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +      * s/cygwin.h: Avoid linking against static libgcc.
  
 -      * dispextern.h (FRINGE_HEIGHT_BITS): New define.
 -      (struct glyph_row): New members left_fringe_offset and
 -      right_fringe_offset.
 +2010-04-15  Juri Linkov  <juri@jurta.org>
  
 -      * 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.
 +      * 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.
  
 -      * 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-04-15  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-07-04  Juanma Barranquero  <lekktu@gmail.com>
 +      * xdisp.c (message): Do not use NO_ARG_ARRAY.
  
 -      * w32fns.c (Qtooltip): Declare.
 -      Suggested by Andy Moreton <andrewjmoreton@gmail.com>.
 +2010-04-14  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-07-03  Jan Djärv  <jan.h.d@swipnet.se>
 +      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.
  
 -      * xmenu.c (x_activate_menubar): Send Press/Release for Gtk+ to avoid
 -      grab on just Press (Bug#6499).
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -2010-07-02  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'.
  
 -      * 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.
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -      * xfns.c (x_create_tip_frame):
 -      * w32fns.c (x_create_tip_frame): Use it.
 +      * 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.
  
 -2010-06-30  Naohiro Aota  <naota@elisp.net>  (tiny change)
 +2010-04-13  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * xftfont.c (xftfont_open): Check font width one by one also when
 -      spacing is dual.
 +      * 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.
  
 -      * ftfont.c (ftfont_open): Ditto.
 +      * xfns.c (Fx_create_frame, x_create_tip_frame): Set default border width
 +      to zero.
  
 -2010-06-26  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-04-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * alloc.c (Fmake_byte_code): Don't access undefined argument
 -      (Bug#6517).
 +      * term.c (init_tty): Move common text outside of #ifdef TERMINFO.
  
 -2010-06-25  Chong Yidong  <cyd@stupidchicken.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.
  
 -      * xdisp.c (next_element_from_image): Ensure that after-strings are
 -      read the next time we hit handle_stop (Bug#1336).
 +      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-06-23  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * lread.c (read1): Signal error if #s is not followed by paren.
 +      * process.c (status_notify): Remove unused var `ro'.
  
 -2010-06-19  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-12  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * image.c (free_image): Mark frame as garbaged (Bug#6426).
 +      * xfns.c (select_visual): Don't call error if XGetVisualInfo returns
 +      more than one visual (Bug#5938).
  
 -      * keymap.c (Fdefine_key): Doc fix (Bug#6460).
 +2010-04-12  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-06-15  Glenn Morris  <rgm@gnu.org>
 +      * Makefile.in (C_SWITCH_SYSTEM,C_SWITCH_MACHINE,C_SWITCH_X_SITE):
 +      Undefine.
  
 -      * editfns.c (Fbyte_to_string): Pacify compiler.
 +2010-04-11  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      Remove C_SWITCH_SYSTEM_TEMACS.
 +      * s/darwin.h (C_SWITCH_SYSTEM_TEMACS): Remove.
 +      (malloc, realloc, free): Use emacs, not temacs for conditional
 +      definition.
  
 -      * dbusbind.c (xd_append_arg): Don't "make-unibyte" the string.
 -      Check `object's type before accessing its guts.
 +      * Makefile.in (C_SWITCH_SYSTEM_TEMACS): Remove.
 +      (ALL_CFLAGS): Do not use C_SWITCH_SYSTEM_TEMACS.
  
 -2010-06-08  Andreas Schwab  <schwab@linux-m68k.org>
 +      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.
  
 -      * minibuf.c (Fall_completions): Add more checks.
 +2010-04-11  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-06-08  Juanma Barranquero  <lekktu@gmail.com>
 +      * xmenu.c (apply_systemfont_to_dialog): New.
 +      (create_and_show_dialog): Call apply_systemfont_to_dialog if HAVE_XFT.
  
 -      * minibuf.c (Fall_completions): Check COLLECTION's size (bug#6378).
 +2010-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-06-03  Andreas Schwab  <schwab@linux-m68k.org>
 +      * process.c (exec_sentinel): Preserve current-buffer.
  
 -      * process.c (conv_lisp_to_sockaddr): Fix conversion of IPv4
 -      address.  (Bug#6346)
 +      * process.c (read_process_output): Move the save-current-buffer to
 +      apply to both the filter and the non-filter branches.
  
 -2010-06-03  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-10  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * ccl.c (Fccl_program_p): Fix typo in docstring.
 +      * s/msdos.h (UNEXEC): New definition.
  
 -2010-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
 -      * keymap.c (Fwhere_is_internal): Fix handling of remapping (in thread
 -      of bug#6305).
 +      * dispextern.h (TRY_WINDOW_CHECK_MARGINS)
 +      (TRY_WINDOW_IGNORE_FONTS_CHANGE): New defines.
  
 -2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +      * 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.
  
 -      * xdisp.c (redisplay_window): After redisplay, check if point is
 -      still valid before setting it (Bug#6177).
 +      * 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-05-20  enami tsugutomo  <tsugutomo.enami@jp.sony.com>
 +2010-04-09  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * s/netbsd.h: If terminfo is found, use it in preference to
 -      termcap.  (Bug#6190)  [Backport from trunk]
 +      * xfns.c (Fx_show_tip): Call try_window in a loop until
 +      fonts_changed_p is zero (Bug#2423).
  
 -2010-05-20  Kevin Ryde  <user42@zip.com.au>
 +2010-04-08  Eli Zaretskii  <eliz@gnu.org>
  
 -      * 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).
 +      * xdisp.c (set_cursor_from_row): Don't dereference glyphs beyond
 +      the end of TEXT_AREA.  (Bug#5856)
  
 -2010-05-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-08  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * editfns.c (Fbyte_to_string): New function.
 +      * xsettings.c (XSETTINGS_FONT_NAME): Move XSETTINGS_FONT_NAME out of
 +      HAVE_GCONF.
  
 -2010-05-18  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-08  Eli Zaretskii  <eliz@gnu.org>
  
 -      * character.c (Fstring, Funibyte_string): Use SAFE_ALLOCA to
 -      prevent stack overflow if number of arguments is too large
 -      (Bug#6214).
 +      * bidi.c (bidi_resolve_weak): Use prev.type_after_w1, instead of
 +      prev.orig_type, for resolving type of NSM.  (Bug#5858)
  
 -2010-05-11  Eli Zaretskii  <eliz@gnu.org>
 +2010-04-08  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(SRC)/w32.h.
 +      * 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.
  
 -      * w32fns.c: Include w32.h.
 -      (Fw32_shell_execute): Decode the error message before passing it
 -      to `error'.  (Bug#6126)
 +      * xsettings.h (Ffont_get_system_normal_font)
 +      (xsettings_get_system_normal_font): Declare.
  
 -2010-05-11  Karel Klic  <kklic@redhat.com>
 +      * xfns.c (extern xlwmenu_default_font): Remove.
 +      (Fx_create_frame): Remove setting of xlwmenu_default_font, moved
 +      to xlwmenu.c.
  
 -      * ftfont.c: Fix incorrect parentheses of #if condition for
 -      definining M17N_FLT_USE_NEW_FEATURE.
 +      * menu.c (digest_single_submenu): If USE_LUCID and HAVE_XFT, encode
 +      menu items in UTF-8.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +      * 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.
  
 -      * Version 23.2 released.
 +2010-04-07  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-04-30  Andreas Schwab  <schwab@linux-m68k.org>
 +      * frame.h (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Don't use
 +      FRAME_LINE_TO_PIXEL_Y.
  
 -      * composite.c (autocmp_chars): Save point as marker before calling
 -      auto-composition-function (Bug#5984).
 +      * xterm.c (x_set_window_size_1): Don't add border_width/height to
 +      pixelwidth/height.
  
 -      * lisp.h (restore_point_unwind): Add prototype.
 +2010-04-07  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * fileio.c (restore_point_unwind): Remove static attribute.
 +      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.
  
 -2010-04-23  Kenichi Handa  <handa@m17n.org>
 +      * m/iris4d.h (UNEXEC): Move definition ...
 +      * s/irix6-5.h (UNEXEC): ... here.
  
 -      * 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-04-04  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-04-19  Juanma Barranquero  <lekktu@gmail.com>
 +      * xfns.c (set_machine_and_pid_properties): New function.
 +      (Fx_create_frame): Call set_machine_and_pid_properties.
  
 -      * dired.c (Ffile_attributes): Fix typo in docstring.
 +2010-04-03  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-04-13  Adrian Robert  <Adrian.B.Robert@gmail.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.
  
 -      * nsmenu.m (EmacsDialog-runDialogAt:): Declare ret as
 -      NSInteger (Bug#5811).
 +      * w32fns.c (x_create_tip_frame): Copy `parms' before we modify it
 +      in this function.  (Bug#5703)
  
 -2010-04-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +2010-04-03  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * s/darwin.h (PTY_ITERATION, PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF)
 -      (PTY_OPEN): New defines.  Use openpty (Bug#726, Bug#5819).
 +      * nsterm.h: Fix last change.
  
 -2010-04-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +2010-04-03  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * frame.h (FRAME_LINE_TO_PIXEL_Y): Add missing parenthesis.
 +      * m/intel386.h (NO_REMAP): Move definition ...
 +      * s/msdos.h (NO_REMAP): ... here.
  
 -2010-04-07  Jan Djärv  <jan.h.d@swipnet.se>
 +      * m/vax.h (CRT0_DUMMIES): Remove, unused.
  
 -      * frame.h (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Don't use
 -      FRAME_LINE_TO_PIXEL_Y.
 +      * ecrt0.c: Remove MSDOS, m68k and __sparc__ conditionals, file not
 +      used on those platforms.
  
 -      * xterm.c (x_set_window_size_1): Don't add border_width/height to
 -      pixelwidth/height.
 +2010-04-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      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-05  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-01  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * xdisp.c (prepare_menu_bars): Don't call ns_set_doc_edited for
 -      terminal frames (Bug#5837).
 +      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-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Remove support for DJGPP v1.x (bug#5813).
 +
 +      * 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__.
 +
 +2010-04-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (set_cursor_from_row): Fix cursor positioning when the
 +      string with `cursor' property comes from an `after-string'
 +      overlay.  (Bug#5816)
 +
 +2010-04-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LIBTIFF, LIBJPEG, LIBPNG, LIBGIF, LIBXPM, XFT_LIBS):
 +      Define as Makefile variables.
 +      (LIBX): Use above variables rather than directly using autoconf.
 +
 +2010-03-31  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      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-03-31  Juri Linkov  <juri@jurta.org>
 +
 +      * 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
@@@ -28360,10 -22285,10 +28372,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/dbusbind.c
@@@ -16,9 -16,10 +16,9 @@@ GNU General Public License for more det
  You should have received a copy of the GNU General Public License
  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
  
 -#include "config.h"
 +#include <config.h>
  
  #ifdef HAVE_DBUS
 -#include <stdlib.h>
  #include <stdio.h>
  #include <dbus/dbus.h>
  #include <setjmp.h>
  #include "frame.h"
  #include "termhooks.h"
  #include "keyboard.h"
 +#include "process.h"
  
  \f
  /* Subroutines.  */
  Lisp_Object Qdbus_init_bus;
 +Lisp_Object Qdbus_close_bus;
  Lisp_Object Qdbus_get_unique_name;
  Lisp_Object Qdbus_call_method;
  Lisp_Object Qdbus_call_method_asynchronously;
@@@ -60,9 -59,6 +60,9 @@@ Lisp_Object QCdbus_type_object_path, QC
  Lisp_Object QCdbus_type_array, QCdbus_type_variant;
  Lisp_Object QCdbus_type_struct, QCdbus_type_dict_entry;
  
 +/* Registered buses.  */
 +Lisp_Object Vdbus_registered_buses;
 +
  /* Hash table which keeps function definitions.  */
  Lisp_Object Vdbus_registered_objects_table;
  
@@@ -115,7 -111,7 +115,7 @@@ int xd_in_read_queued_messages = 0
    } while (0)
  
  /* Macros for debugging.  In order to enable them, build with
 -   "make MYCPPFLAGS='-DDBUS_DEBUG -Wall'".  */
 +   "MYCPPFLAGS='-DDBUS_DEBUG -Wall' make".  */
  #ifdef DBUS_DEBUG
  #define XD_DEBUG_MESSAGE(...)         \
    do {                                        \
  /* Determine the DBusType of a given Lisp symbol.  OBJECT must be one
     of the predefined D-Bus type symbols.  */
  static int
 -xd_symbol_to_dbus_type (object)
 -     Lisp_Object object;
 +xd_symbol_to_dbus_type (Lisp_Object object)
  {
    return
      ((EQ (object, QCdbus_type_byte)) ? DBUS_TYPE_BYTE
     signature is embedded, or DBUS_TYPE_INVALID.  It is needed for the
     check that DBUS_TYPE_DICT_ENTRY occurs only as array element.  */
  static void
 -xd_signature (signature, dtype, parent_type, object)
 -     char *signature;
 -     unsigned int dtype, parent_type;
 -     Lisp_Object object;
 +xd_signature (char *signature, unsigned int dtype, unsigned int parent_type, Lisp_Object object)
  {
    unsigned int subtype;
    Lisp_Object elt;
     `dbus-send-signal', into corresponding C values appended as
     arguments to a D-Bus message.  */
  static void
 -xd_append_arg (dtype, object, iter)
 -     unsigned int dtype;
 -     Lisp_Object object;
 -     DBusMessageIter *iter;
 +xd_append_arg (unsigned int dtype, Lisp_Object object, DBusMessageIter *iter)
  {
    char signature[DBUS_MAXIMUM_SIGNATURE_LENGTH];
    DBusMessageIter subiter;
     D-Bus message must be a valid DBusType.  Compound D-Bus types
     result always in a Lisp list.  */
  static Lisp_Object
 -xd_retrieve_arg (dtype, iter)
 -     unsigned int dtype;
 -     DBusMessageIter *iter;
 +xd_retrieve_arg (unsigned int dtype, DBusMessageIter *iter)
  {
  
    switch (dtype)
      }
  }
  
 -/* Initialize D-Bus connection.  BUS is a Lisp symbol, either :system
 -   or :session.  It tells which D-Bus to be initialized.  */
 +/* Initialize D-Bus connection.  BUS is either a Lisp symbol, :system
 +   or :session, or a string denoting the bus address.  It tells which
 +   D-Bus to initialize.  If RAISE_ERROR is non-zero, signal an error
 +   when the connection cannot be initialized.  */
  static DBusConnection *
 -xd_initialize (bus)
 -     Lisp_Object bus;
 +xd_initialize (Lisp_Object bus, int raise_error)
  {
    DBusConnection *connection;
    DBusError derror;
  
    /* Parameter check.  */
 -  CHECK_SYMBOL (bus);
 -  if (!(EQ (bus, QCdbus_system_bus) || EQ (bus, QCdbus_session_bus)))
 -    XD_SIGNAL2 (build_string ("Wrong bus name"), bus);
 +  if (!STRINGP (bus))
 +    {
 +      CHECK_SYMBOL (bus);
 +      if (!(EQ (bus, QCdbus_system_bus) || EQ (bus, QCdbus_session_bus)))
 +      {
 +        if (raise_error)
 +          XD_SIGNAL2 (build_string ("Wrong bus name"), bus);
 +        else
 +          return NULL;
 +      }
  
 -  /* We do not want to have an autolaunch for the session bus.  */
 -  if (EQ (bus, QCdbus_session_bus)
 -      && getenv ("DBUS_SESSION_BUS_ADDRESS") == NULL)
 -    XD_SIGNAL2 (build_string ("No connection to bus"), bus);
 +      /* We do not want to have an autolaunch for the session bus.  */
 +      if (EQ (bus, QCdbus_session_bus)
 +        && getenv ("DBUS_SESSION_BUS_ADDRESS") == NULL)
 +      {
 +        if (raise_error)
 +          XD_SIGNAL2 (build_string ("No connection to bus"), bus);
 +        else
 +          return NULL;
 +      }
 +    }
  
    /* Open a connection to the bus.  */
    dbus_error_init (&derror);
  
 -  if (EQ (bus, QCdbus_system_bus))
 -    connection = dbus_bus_get (DBUS_BUS_SYSTEM, &derror);
 +  if (STRINGP (bus))
 +      connection = dbus_connection_open (SDATA (bus), &derror);
    else
 -    connection = dbus_bus_get (DBUS_BUS_SESSION, &derror);
 +    if (EQ (bus, QCdbus_system_bus))
 +      connection = dbus_bus_get (DBUS_BUS_SYSTEM, &derror);
 +    else
 +      connection = dbus_bus_get (DBUS_BUS_SESSION, &derror);
  
    if (dbus_error_is_set (&derror))
 -    XD_ERROR (derror);
 +    {
 +      if (raise_error)
 +      XD_ERROR (derror);
 +      else
 +      connection = NULL;
 +    }
 +
 +  /* If it is not the system or session bus, we must register
 +     ourselves.  Otherwise, we have called dbus_bus_get, which has
 +     configured us to exit if the connection closes - we undo this
 +     setting.  */
 +  if (connection != NULL)
 +    {
 +      if (STRINGP (bus))
 +      dbus_bus_register (connection, &derror);
 +      else
 +      dbus_connection_set_exit_on_disconnect (connection, FALSE);
 +    }
 +
 +  if (dbus_error_is_set (&derror))
 +    {
 +      if (raise_error)
 +      XD_ERROR (derror);
 +      else
 +      connection = NULL;
 +    }
  
 -  if (connection == NULL)
 +  if (connection == NULL && raise_error)
      XD_SIGNAL2 (build_string ("No connection to bus"), bus);
  
    /* Cleanup.  */
    return connection;
  }
  
 -
 -/* Add connection file descriptor to input_wait_mask, in order to
 -   let select() detect, whether a new message has been arrived.  */
 -dbus_bool_t
 -xd_add_watch (watch, data)
 -     DBusWatch *watch;
 -     void *data;
 +/* Return the file descriptor for WATCH, -1 if not found.  */
 +static int
 +xd_find_watch_fd (DBusWatch *watch)
  {
 -  /* We check only for incoming data.  */
 -  if (dbus_watch_get_flags (watch) & DBUS_WATCH_READABLE)
 -    {
  #if HAVE_DBUS_WATCH_GET_UNIX_FD
 -      /* TODO: Reverse these on Win32, which prefers the opposite.  */
 -      int fd = dbus_watch_get_unix_fd(watch);
 -      if (fd == -1)
 -      fd = dbus_watch_get_socket(watch);
 +  /* TODO: Reverse these on Win32, which prefers the opposite.  */
 +  int fd = dbus_watch_get_unix_fd (watch);
 +  if (fd == -1)
 +    fd = dbus_watch_get_socket (watch);
  #else
 -      int fd = dbus_watch_get_fd(watch);
 +  int fd = dbus_watch_get_fd (watch);
  #endif
 -      XD_DEBUG_MESSAGE ("fd %d", fd);
 +  return fd;
 +}
 +
 +/* Prototype.  */
 +static void
 +xd_read_queued_messages (int fd, void *data, int for_read);
  
 -      if (fd == -1)
 -      return FALSE;
 +/* Start monitoring WATCH for possible I/O.  */
 +static dbus_bool_t
 +xd_add_watch (DBusWatch *watch, void *data)
 +{
 +  unsigned int flags = dbus_watch_get_flags (watch);
 +  int fd = xd_find_watch_fd (watch);
  
 -      /* Add the file descriptor to input_wait_mask.  */
 -      add_keyboard_wait_descriptor (fd);
 -    }
 +  XD_DEBUG_MESSAGE ("fd %d, write %d, enabled %d",
 +                    fd, flags & DBUS_WATCH_WRITABLE,
 +                    dbus_watch_get_enabled (watch));
  
 -  /* Return.  */
 +  if (fd == -1)
 +    return FALSE;
 +
 +  if (dbus_watch_get_enabled (watch))
 +    {
 +      if (flags & DBUS_WATCH_WRITABLE)
 +        add_write_fd (fd, xd_read_queued_messages, data);
 +      if (flags & DBUS_WATCH_READABLE)
 +        add_read_fd (fd, xd_read_queued_messages, data);
 +    }
    return TRUE;
  }
  
 -/* Remove connection file descriptor from input_wait_mask.  DATA is
 -   the used bus, either QCdbus_system_bus or QCdbus_session_bus.  */
 -void
 -xd_remove_watch (watch, data)
 -     DBusWatch *watch;
 -     void *data;
 +/* Stop monitoring WATCH for possible I/O.
 +   DATA is the used bus, either a string or QCdbus_system_bus or
 +   QCdbus_session_bus.  */
 +static void
 +xd_remove_watch (DBusWatch *watch, void *data)
  {
 -  /* We check only for incoming data.  */
 -  if (dbus_watch_get_flags (watch) & DBUS_WATCH_READABLE)
 -    {
 -#if HAVE_DBUS_WATCH_GET_UNIX_FD
 -      /* TODO: Reverse these on Win32, which prefers the opposite.  */
 -      int fd = dbus_watch_get_unix_fd(watch);
 -      if (fd == -1)
 -      fd = dbus_watch_get_socket(watch);
 -#else
 -      int fd = dbus_watch_get_fd(watch);
 -#endif
 -      XD_DEBUG_MESSAGE ("fd %d", fd);
 +  unsigned int flags = dbus_watch_get_flags (watch);
 +  int fd = xd_find_watch_fd (watch);
  
 -      if (fd == -1)
 -      return;
 +  XD_DEBUG_MESSAGE ("fd %d", fd);
  
 -      /* Unset session environment.  */
 -      if ((data != NULL) && (data == (void*) XHASH (QCdbus_session_bus)))
 -      {
 -        XD_DEBUG_MESSAGE ("unsetenv DBUS_SESSION_BUS_ADDRESS");
 -        unsetenv ("DBUS_SESSION_BUS_ADDRESS");
 -      }
 +  if (fd == -1)
 +    return;
  
 -      /* Remove the file descriptor from input_wait_mask.  */
 -      delete_keyboard_wait_descriptor (fd);
 +  /* Unset session environment.  */
 +  if (data != NULL && data == (void*) XHASH (QCdbus_session_bus))
 +    {
 +      XD_DEBUG_MESSAGE ("unsetenv DBUS_SESSION_BUS_ADDRESS");
 +      unsetenv ("DBUS_SESSION_BUS_ADDRESS");
      }
  
 -  /* Return.  */
 -  return;
 +  if (flags & DBUS_WATCH_WRITABLE)
 +    delete_write_fd (fd);
 +  if (flags & DBUS_WATCH_READABLE)
 +    delete_read_fd (fd);
 +}
 +
 +/* Toggle monitoring WATCH for possible I/O.  */
 +static void
 +xd_toggle_watch (DBusWatch *watch, void *data)
 +{
 +  if (dbus_watch_get_enabled (watch))
 +    xd_add_watch (watch, data);
 +  else
 +    xd_remove_watch (watch, data);
  }
  
  DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 1, 0,
 -       doc: /* Initialize connection to D-Bus BUS.
 -This is an internal function, it shall not be used outside dbus.el.  */)
 -     (bus)
 -     Lisp_Object bus;
 +       doc: /* Initialize connection to D-Bus BUS.  */)
 +  (Lisp_Object bus)
  {
    DBusConnection *connection;
  
 -  /* Check parameters.  */
 -  CHECK_SYMBOL (bus);
 -
    /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 +  connection = xd_initialize (bus, TRUE);
  
    /* Add the watch functions.  We pass also the bus as data, in order
       to distinguish between the busses in xd_remove_watch.  */
    if (!dbus_connection_set_watch_functions (connection,
                                            xd_add_watch,
                                            xd_remove_watch,
 -                                          NULL, (void*) XHASH (bus), NULL))
 +                                            xd_toggle_watch,
 +                                          (void*) XHASH (bus), NULL))
      XD_SIGNAL1 (build_string ("Cannot add watch functions"));
  
 +  /* Add bus to list of registered buses.  */
 +  Vdbus_registered_buses =  Fcons (bus, Vdbus_registered_buses);
 +
    /* We do not want to abort.  */
    putenv ("DBUS_FATAL_WARNINGS=0");
  
    return Qnil;
  }
  
 +DEFUN ("dbus-close-bus", Fdbus_close_bus, Sdbus_close_bus, 1, 1, 0,
 +       doc: /* Close connection to D-Bus BUS.  */)
 +  (Lisp_Object bus)
 +{
 +  DBusConnection *connection;
 +
 +  /* Open a connection to the bus.  */
 +  connection = xd_initialize (bus, TRUE);
 +
 +  /* Decrement reference count to the bus.  */
 +  dbus_connection_unref (connection);
 +
 +  /* Remove bus from list of registered buses.  */
 +  Vdbus_registered_buses = Fdelete (bus, Vdbus_registered_buses);
 +
 +  /* Return.  */
 +  return Qnil;
 +}
 +
  DEFUN ("dbus-get-unique-name", Fdbus_get_unique_name, Sdbus_get_unique_name,
         1, 1, 0,
         doc: /* Return the unique name of Emacs registered at D-Bus BUS.  */)
 -     (bus)
 -     Lisp_Object bus;
 +  (Lisp_Object bus)
  {
    DBusConnection *connection;
    const char *name;
  
 -  /* Check parameters.  */
 -  CHECK_SYMBOL (bus);
 -
    /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 +  connection = xd_initialize (bus, TRUE);
  
    /* Request the name.  */
    name = dbus_bus_get_unique_name (connection);
  DEFUN ("dbus-call-method", Fdbus_call_method, Sdbus_call_method, 5, MANY, 0,
         doc: /* Call METHOD on the D-Bus BUS.
  
 -BUS is either the symbol `:system' or the symbol `:session'.
 +BUS is either a Lisp symbol, `:system' or `:session', or a string
 +denoting the bus address.
  
  SERVICE is the D-Bus service name to be used.  PATH is the D-Bus
  object path SERVICE is registered at.  INTERFACE is an interface
@@@ -1015,7 -953,9 +1015,7 @@@ object is returned instead of a list co
    => "i686"
  
  usage: (dbus-call-method BUS SERVICE PATH INTERFACE METHOD &optional :timeout TIMEOUT &rest ARGS)  */)
 -     (nargs, args)
 -     int nargs;
 -     register Lisp_Object *args;
 +  (int nargs, register Lisp_Object *args)
  {
    Lisp_Object bus, service, path, interface, method;
    Lisp_Object result;
    interface = args[3];
    method = args[4];
  
 -  CHECK_SYMBOL (bus);
    CHECK_STRING (service);
    CHECK_STRING (path);
    CHECK_STRING (interface);
                    SDATA (method));
  
    /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 +  connection = xd_initialize (bus, TRUE);
  
    /* Create the message.  */
    dmessage = dbus_message_new_method_call (SDATA (service),
@@@ -1151,8 -1092,7 +1151,8 @@@ DEFUN ("dbus-call-method-asynchronously
         Sdbus_call_method_asynchronously, 6, MANY, 0,
         doc: /* Call METHOD on the D-Bus BUS asynchronously.
  
 -BUS is either the symbol `:system' or the symbol `:session'.
 +BUS is either a Lisp symbol, `:system' or `:session', or a string
 +denoting the bus address.
  
  SERVICE is the D-Bus service name to be used.  PATH is the D-Bus
  object path SERVICE is registered at.  INTERFACE is an interface
@@@ -1197,7 -1137,9 +1197,7 @@@ Example
    -| i686
  
  usage: (dbus-call-method-asynchronously BUS SERVICE PATH INTERFACE METHOD HANDLER &optional :timeout TIMEOUT &rest ARGS)  */)
 -     (nargs, args)
 -     int nargs;
 -     register Lisp_Object *args;
 +  (int nargs, register Lisp_Object *args)
  {
    Lisp_Object bus, service, path, interface, method, handler;
    Lisp_Object result;
    method = args[4];
    handler = args[5];
  
 -  CHECK_SYMBOL (bus);
    CHECK_STRING (service);
    CHECK_STRING (path);
    CHECK_STRING (interface);
                    SDATA (interface),
                    SDATA (method));
  
+   /* Check dbus-registered-objects-table.  */
+   if (!HASH_TABLE_P (Vdbus_registered_objects_table))
+     XD_SIGNAL1 (build_string ("dbus.el is not loaded"));
    /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 +  connection = xd_initialize (bus, TRUE);
  
    /* Create the message.  */
    dmessage = dbus_message_new_method_call (SDATA (service),
        result = Qnil;
      }
  
 -  /* Flush connection to ensure the message is handled.  */
 -  dbus_connection_flush (connection);
 -
    XD_DEBUG_MESSAGE ("Message sent");
  
    /* Cleanup.  */
@@@ -1321,7 -1271,9 +1325,7 @@@ DEFUN ("dbus-method-return-internal", F
  This is an internal function, it shall not be used outside dbus.el.
  
  usage: (dbus-method-return-internal BUS SERIAL SERVICE &rest ARGS)  */)
 -     (nargs, args)
 -     int nargs;
 -     register Lisp_Object *args;
 +  (int nargs, register Lisp_Object *args)
  {
    Lisp_Object bus, serial, service;
    struct gcpro gcpro1, gcpro2, gcpro3;
    serial = args[1];
    service = args[2];
  
 -  CHECK_SYMBOL (bus);
    CHECK_NUMBER (serial);
    CHECK_STRING (service);
    GCPRO3 (bus, serial, service);
    XD_DEBUG_MESSAGE ("%lu %s ", (unsigned long) XUINT (serial), SDATA (service));
  
    /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 +  connection = xd_initialize (bus, TRUE);
  
    /* Create the message.  */
    dmessage = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_RETURN);
    if (!dbus_connection_send (connection, dmessage, NULL))
      XD_SIGNAL1 (build_string ("Cannot send message"));
  
 -  /* Flush connection to ensure the message is handled.  */
 -  dbus_connection_flush (connection);
 -
    XD_DEBUG_MESSAGE ("Message sent");
  
    /* Cleanup.  */
@@@ -1409,7 -1365,9 +1413,7 @@@ DEFUN ("dbus-method-error-internal", Fd
  This is an internal function, it shall not be used outside dbus.el.
  
  usage: (dbus-method-error-internal BUS SERIAL SERVICE &rest ARGS)  */)
 -     (nargs, args)
 -     int nargs;
 -     register Lisp_Object *args;
 +  (int nargs, register Lisp_Object *args)
  {
    Lisp_Object bus, serial, service;
    struct gcpro gcpro1, gcpro2, gcpro3;
    serial = args[1];
    service = args[2];
  
 -  CHECK_SYMBOL (bus);
    CHECK_NUMBER (serial);
    CHECK_STRING (service);
    GCPRO3 (bus, serial, service);
    XD_DEBUG_MESSAGE ("%lu %s ", (unsigned long) XUINT (serial), SDATA (service));
  
    /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 +  connection = xd_initialize (bus, TRUE);
  
    /* Create the message.  */
    dmessage = dbus_message_new (DBUS_MESSAGE_TYPE_ERROR);
    if (!dbus_connection_send (connection, dmessage, NULL))
      XD_SIGNAL1 (build_string ("Cannot send message"));
  
 -  /* Flush connection to ensure the message is handled.  */
 -  dbus_connection_flush (connection);
 -
    XD_DEBUG_MESSAGE ("Message sent");
  
    /* Cleanup.  */
  DEFUN ("dbus-send-signal", Fdbus_send_signal, Sdbus_send_signal, 5, MANY, 0,
         doc: /* Send signal SIGNAL on the D-Bus BUS.
  
 -BUS is either the symbol `:system' or the symbol `:session'.
 +BUS is either a Lisp symbol, `:system' or `:session', or a string
 +denoting the bus address.
  
  SERVICE is the D-Bus service name SIGNAL is sent from.  PATH is the
  D-Bus object path SERVICE is registered at.  INTERFACE is an interface
@@@ -1521,7 -1482,9 +1525,7 @@@ Example
    "org.gnu.Emacs.FileManager" "FileModified" "/home/albinus/.emacs")
  
  usage: (dbus-send-signal BUS SERVICE PATH INTERFACE SIGNAL &rest ARGS)  */)
 -     (nargs, args)
 -     int nargs;
 -     register Lisp_Object *args;
 +  (int nargs, register Lisp_Object *args)
  {
    Lisp_Object bus, service, path, interface, signal;
    struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
    interface = args[3];
    signal = args[4];
  
 -  CHECK_SYMBOL (bus);
    CHECK_STRING (service);
    CHECK_STRING (path);
    CHECK_STRING (interface);
                    SDATA (signal));
  
    /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 +  connection = xd_initialize (bus, TRUE);
  
    /* Create the message.  */
    dmessage = dbus_message_new_signal (SDATA (path),
    if (!dbus_connection_send (connection, dmessage, NULL))
      XD_SIGNAL1 (build_string ("Cannot send message"));
  
 -  /* Flush connection to ensure the message is handled.  */
 -  dbus_connection_flush (connection);
 -
    XD_DEBUG_MESSAGE ("Signal sent");
  
    /* Cleanup.  */
    return Qt;
  }
  
 -/* Check, whether there is pending input in the message queue of the
 -   D-Bus BUS.  BUS is a Lisp symbol, either :system or :session.  */
 -static Lisp_Object
 -xd_get_dispatch_status (bus)
 -     Lisp_Object bus;
 -{
 -  DBusConnection *connection;
 -
 -  /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 -
 -  /* Non blocking read of the next available message.  */
 -  dbus_connection_read_write (connection, 0);
 -
 -  /* Return.  */
 -  return
 -    (dbus_connection_get_dispatch_status (connection)
 -     == DBUS_DISPATCH_DATA_REMAINS)
 -    ? Qt : Qnil;
 -}
 -
 -/* Check for queued incoming messages from the system and session buses.  */
 -int
 -xd_pending_messages ()
 -{
 -  int ret = FALSE;
 -  xd_in_read_queued_messages = 1;
 -
 -  /* Vdbus_registered_objects_table will be initialized as hash table
 -     in dbus.el.  When this package isn't loaded yet, it doesn't make
 -     sense to handle D-Bus messages.  */
 -  if (HASH_TABLE_P (Vdbus_registered_objects_table))
 -    {
 -      ret = (!NILP (internal_catch (Qdbus_error, xd_get_dispatch_status,
 -                                  QCdbus_system_bus)));
 -      if (ret) goto theend;
 -
 -      ret = ((getenv ("DBUS_SESSION_BUS_ADDRESS") != NULL) &&
 -           (!NILP (internal_catch (Qdbus_error, xd_get_dispatch_status,
 -                                   QCdbus_session_bus))));
 -    }
 -
 -  /* Return.  */
 - theend:
 -  xd_in_read_queued_messages = 0;
 -  return ret;
 -}
 -
 -/* Read queued incoming message of the D-Bus BUS.  BUS is a Lisp
 -   symbol, either :system or :session.  */
 -static Lisp_Object
 -xd_read_message (bus)
 -     Lisp_Object bus;
 +/* Read one queued incoming message of the D-Bus BUS.
 +   BUS is either a Lisp symbol, :system or :session, or a string denoting
 +   the bus address.  */
 +static void
 +xd_read_message_1 (DBusConnection *connection, Lisp_Object bus)
  {
    Lisp_Object args, key, value;
    struct gcpro gcpro1;
    struct input_event event;
 -  DBusConnection *connection;
    DBusMessage *dmessage;
    DBusMessageIter iter;
    unsigned int dtype;
    int mtype, serial;
    const char *uname, *path, *interface, *member;
  
 -  /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 -
 -  /* Non blocking read of the next available message.  */
 -  dbus_connection_read_write (connection, 0);
    dmessage = dbus_connection_pop_message (connection);
  
    /* Return if there is no queued message.  */
    if (dmessage == NULL)
 -    return Qnil;
 +    return;
  
    /* Collect the parameters.  */
    args = Qnil;
   cleanup:
    dbus_message_unref (dmessage);
  
 -  RETURN_UNGCPRO (Qnil);
 +  UNGCPRO;
  }
  
 -/* Read queued incoming messages from the system and session buses.  */
 -void
 -xd_read_queued_messages ()
 +/* Read queued incoming messages of the D-Bus BUS.
 +   BUS is either a Lisp symbol, :system or :session, or a string denoting
 +   the bus address.  */
 +static Lisp_Object
 +xd_read_message (Lisp_Object bus)
  {
 +  /* Open a connection to the bus.  */
 +  DBusConnection *connection = xd_initialize (bus, TRUE);
  
 -  /* Vdbus_registered_objects_table will be initialized as hash table
 -     in dbus.el.  When this package isn't loaded yet, it doesn't make
 -     sense to handle D-Bus messages.  Furthermore, we ignore all Lisp
 -     errors during the call.  */
 -  if (HASH_TABLE_P (Vdbus_registered_objects_table))
 -    {
 -      xd_in_read_queued_messages = 1;
 -      internal_catch (Qdbus_error, xd_read_message, QCdbus_system_bus);
 -      internal_catch (Qdbus_error, xd_read_message, QCdbus_session_bus);
 -      xd_in_read_queued_messages = 0;
 -    }
 +  /* Non blocking read of the next available message.  */
 +  dbus_connection_read_write (connection, 0);
 +
 +  while (dbus_connection_get_dispatch_status (connection)
 +         != DBUS_DISPATCH_COMPLETE)
 +    xd_read_message_1 (connection, bus);
 +  return Qnil;
 +}
 +
 +/* Callback called when something is ready to read or write.  */
 +static void
 +xd_read_queued_messages (int fd, void *data, int for_read)
 +{
 +  Lisp_Object busp = Vdbus_registered_buses;
 +  Lisp_Object bus = Qnil;
 +
 +  /* Find bus related to fd.  */
 +  if (data != NULL)
 +    while (!NILP (busp))
 +      {
 +      if (data == (void*) XHASH (CAR_SAFE (busp)))
 +        bus = CAR_SAFE (busp);
 +      busp = CDR_SAFE (busp);
 +      }
 +
 +  if (NILP(bus))
 +    return;
 +
 +  /* We ignore all Lisp errors during the call.  */
 +  xd_in_read_queued_messages = 1;
 +  internal_catch (Qdbus_error, xd_read_message, bus);
 +  xd_in_read_queued_messages = 0;
  }
  
  DEFUN ("dbus-register-signal", Fdbus_register_signal, Sdbus_register_signal,
         6, MANY, 0,
         doc: /* Register for signal SIGNAL on the D-Bus BUS.
  
 -BUS is either the symbol `:system' or the symbol `:session'.
 +BUS is either a Lisp symbol, `:system' or `:session', or a string
 +denoting the bus address.
  
  SERVICE is the D-Bus service name used by the sending D-Bus object.
  It can be either a known name or the unique name of the D-Bus object
@@@ -1842,7 -1837,9 +1846,7 @@@ INTERFACE, SIGNAL and HANDLER must not 
  `dbus-unregister-object' for removing the registration.
  
  usage: (dbus-register-signal BUS SERVICE PATH INTERFACE SIGNAL HANDLER &rest ARGS) */)
 -     (nargs, args)
 -     int nargs;
 -     register Lisp_Object *args;
 +  (int nargs, register Lisp_Object *args)
  {
    Lisp_Object bus, service, path, interface, signal, handler;
    struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6;
    signal = args[4];
    handler = args[5];
  
 -  CHECK_SYMBOL (bus);
    if (!NILP (service)) CHECK_STRING (service);
    if (!NILP (path)) CHECK_STRING (path);
    CHECK_STRING (interface);
      wrong_type_argument (intern ("functionp"), handler);
    GCPRO6 (bus, service, path, interface, signal, handler);
  
+   /* Check dbus-registered-objects-table.  */
+   if (!HASH_TABLE_P (Vdbus_registered_objects_table))
+     XD_SIGNAL1 (build_string ("dbus.el is not loaded"));
    /* Retrieve unique name of service.  If service is a known name, we
       will register for the corresponding unique name, if any.  Signals
       are sent always with the unique name as sender.  Note: the unique
    if (NILP (uname) || (SBYTES (uname) > 0))
      {
        /* Open a connection to the bus.  */
 -      connection = xd_initialize (bus);
 +      connection = xd_initialize (bus, TRUE);
  
        /* Create a rule to receive related signals.  */
        sprintf (rule,
@@@ -1953,8 -1955,7 +1961,8 @@@ DEFUN ("dbus-register-method", Fdbus_re
         6, 6, 0,
         doc: /* Register for method METHOD on the D-Bus BUS.
  
 -BUS is either the symbol `:system' or the symbol `:session'.
 +BUS is either a Lisp symbol, `:system' or `:session', or a string
 +denoting the bus address.
  
  SERVICE is the D-Bus service name of the D-Bus object METHOD is
  registered for.  It must be a known name.
@@@ -1964,7 -1965,8 +1972,7 @@@ interface offered by SERVICE.  It must 
  Lisp function to be called when a method call is received.  It must
  accept the input arguments of METHOD.  The return value of HANDLER is
  used for composing the returning D-Bus message.  */)
 -     (bus, service, path, interface, method, handler)
 -     Lisp_Object bus, service, path, interface, method, handler;
 +  (Lisp_Object bus, Lisp_Object service, Lisp_Object path, Lisp_Object interface, Lisp_Object method, Lisp_Object handler)
  {
    Lisp_Object key, key1, value;
    DBusConnection *connection;
    DBusError derror;
  
    /* Check parameters.  */
 -  CHECK_SYMBOL (bus);
    CHECK_STRING (service);
    CHECK_STRING (path);
    CHECK_STRING (interface);
    /* TODO: We must check for a valid service name, otherwise there is
       a segmentation fault.  */
  
+   /* Check dbus-registered-objects-table.  */
+   if (!HASH_TABLE_P (Vdbus_registered_objects_table))
+     XD_SIGNAL1 (build_string ("dbus.el is not loaded"));
    /* Open a connection to the bus.  */
 -  connection = xd_initialize (bus);
 +  connection = xd_initialize (bus, TRUE);
  
    /* Request the known name from the bus.  We can ignore the result,
       it is set to -1 if there is an error - kind of redundancy.  */
  
  \f
  void
 -syms_of_dbusbind ()
 +syms_of_dbusbind (void)
  {
  
    Qdbus_init_bus = intern_c_string ("dbus-init-bus");
    staticpro (&Qdbus_init_bus);
    defsubr (&Sdbus_init_bus);
  
 +  Qdbus_close_bus = intern_c_string ("dbus-close-bus");
 +  staticpro (&Qdbus_close_bus);
 +  defsubr (&Sdbus_close_bus);
 +
    Qdbus_get_unique_name = intern_c_string ("dbus-get-unique-name");
    staticpro (&Qdbus_get_unique_name);
    defsubr (&Sdbus_get_unique_name);
    QCdbus_type_dict_entry = intern_c_string (":dict-entry");
    staticpro (&QCdbus_type_dict_entry);
  
 +  DEFVAR_LISP ("dbus-registered-buses",
 +             &Vdbus_registered_buses,
 +    doc: /* List of D-Bus buses we are polling for messages.  */);
 +  Vdbus_registered_buses = Qnil;
 +
    DEFVAR_LISP ("dbus-registered-objects-table",
               &Vdbus_registered_objects_table,
      doc: /* Hash table of registered functions for D-Bus.
 +
  There are two different uses of the hash table: for accessing
  registered interfaces properties, targeted by signals or method calls,
  and for calling handlers in case of non-blocking method call returns.
  
  In the first case, the key in the hash table is the list (BUS
 -INTERFACE MEMBER).  BUS is either the symbol `:system' or the symbol
 -`:session'.  INTERFACE is a string which denotes a D-Bus interface,
 -and MEMBER, also a string, is either a method, a signal or a property
 -INTERFACE is offering.  All arguments but BUS must not be nil.
 +INTERFACE MEMBER).  BUS is either a Lisp symbol, `:system' or
 +`:session', or a string denoting the bus address.  INTERFACE is a
 +string which denotes a D-Bus interface, and MEMBER, also a string, is
 +either a method, a signal or a property INTERFACE is offering.  All
 +arguments but BUS must not be nil.
  
  The value in the hash table is a list of quadruple lists
  \((UNAME SERVICE PATH OBJECT) (UNAME SERVICE PATH OBJECT) ...).
@@@ -2146,18 -2142,15 +2158,18 @@@ be called when a D-Bus message, which m
  arrives (methods and signals), or a cons cell containing the value of
  the property.
  
 -In the second case, the key in the hash table is the list (BUS SERIAL).
 -BUS is either the symbol `:system' or the symbol `:session'.  SERIAL
 -is the serial number of the non-blocking method call, a reply is
 -expected.  Both arguments must not be nil.  The value in the hash
 -table is HANDLER, the function to be called when the D-Bus reply
 -message arrives.  */);
 -  /* We initialize Vdbus_registered_objects_table in dbus.el, because
 -     we need to define a hash table function first.  */
 -  Vdbus_registered_objects_table = Qnil;
 +In the second case, the key in the hash table is the list (BUS
 +SERIAL).  BUS is either a Lisp symbol, `:system' or `:session', or a
 +string denoting the bus address.  SERIAL is the serial number of the
 +non-blocking method call, a reply is expected.  Both arguments must
 +not be nil.  The value in the hash table is HANDLER, the function to
 +be called when the D-Bus reply message arrives.  */);
 +  {
 +    Lisp_Object args[2];
 +    args[0] = QCtest;
 +    args[1] = Qequal;
 +    Vdbus_registered_objects_table = Fmake_hash_table (2, args);
 +  }
  
    DEFVAR_LISP ("dbus-debug", &Vdbus_debug,
      doc: /* If non-nil, debug messages of D-Bus bindings are raised.  */);
diff --combined src/xterm.c
@@@ -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);
  /* 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));
  
     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;
     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))
      {
     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;
     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;
  
  #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);
@@@ -1438,9 -1505,12 +1438,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;
  
  /* 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);
@@@ -2880,10 -2942,9 +2880,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.  */
@@@ -3653,7 -3751,9 +3653,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
@@@ -4043,11 -4152,17 +4043,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);
@@@ -4095,7 -4210,9 +4095,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;
@@@ -4293,8 -4414,7 +4293,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);
          }
@@@ -4355,7 -4475,9 +4355,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;
@@@ -5586,18 -5739,22 +5586,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
@@@ -5638,7 -5797,10 +5638,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;
    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:
               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.  */
                              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;
@@@ -7450,7 -7653,9 +7450,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;
@@@ -7606,7 -7816,7 +7606,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;
        delete_frame (frame, Qnoelisp);
        }
  
-   /* We have to close the display to inform Xt that it doesn't
-      exist anymore.  If we don't, Xt will continue to wait for
-      events from the display.  As a consequence, a sequence of
-      M-x make-frame-on-display RET :1 RET
-      ...kill the new frame, so that we get an IO error...
-      M-x make-frame-on-display RET :1 RET
-      will indefinitely wait in Xt for events for display `:1', opened
-      in the first call to make-frame-on-display.
-      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.  */
+   /* If DPYINFO is null, this means we didn't open the display in the
+      first place, so don't try to close it.  */
    if (dpyinfo)
      {
  #ifdef USE_X_TOOLKIT
-       /* If DPYINFO is null, this means we didn't open the display
-        in the first place, so don't try to close it.  */
-       {
-       fatal_error_signal_hook = x_fatal_error_signal;
-       XtCloseDisplay (dpy);
-       fatal_error_signal_hook = NULL;
-       }
- #endif
+       /* We have to close the display to inform Xt that it doesn't
+        exist anymore.  If we don't, Xt will continue to wait for
+        events from the display.  As a consequence, a sequence of
+        M-x make-frame-on-display RET :1 RET
+        ...kill the new frame, so that we get an IO error...
+        M-x make-frame-on-display RET :1 RET
+        will indefinitely wait in Xt for events for display `:1',
+        opened in the first call to make-frame-on-display.
+        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;
+ #endif /* USE_X_TOOLKIT */
  
  #ifdef USE_GTK
-       /* There is a long-standing bug in GTK that prevents the GTK
-        main loop from recovering gracefully from disconnects
-        (https://bugzilla.gnome.org/show_bug.cgi?id=85715).  Among
-        other problems, this gives rise to a stream of Glib error
-        messages that, in one incident, filled up a user's hard disk
-        (http://lists.gnu.org/archive/html/emacs-devel/2010-10/msg00927.html).
-        So, kill Emacs unconditionally if the display is closed.  */
-       {
-       fprintf (stderr, "%s\n", error_msg);
-       Fkill_emacs (make_number (70));
-       abort ();  /* NOTREACHED */
-       }
- #endif
+       /* A long-standing GTK bug prevents proper disconnect handling
+        (https://bugzilla.gnome.org/show_bug.cgi?id=85715).  Once,
+        the resulting Glib error message loop filled a user's disk.
+        To avoid this, kill Emacs unconditionally on disconnect.  */
+       shut_down_emacs (0, 0, Qnil);
+       fprintf (stderr, "%s\n\
+ When compiled with GTK, Emacs cannot recover from X disconnects.\n\
+ This is a GTK bug: https://bugzilla.gnome.org/show_bug.cgi?id=85715\n\
+ For details, see etc/PROBLEMS.\n",
+              error_msg);
+       abort ();
+ #endif /* USE_GTK */
  
        /* Indicate that this display is dead.  */
        dpyinfo->display = 0;
    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;
  
@@@ -8388,7 -8640,8 +8385,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;
  #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))
  /* 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;
  
@@@ -9676,7 -9990,8 +9673,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;
      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);
  
    terminal = x_create_terminal (dpyinfo);
  
      = 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->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)
@@@ -10572,7 -10909,7 +10569,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;
  
@@@ -10686,11 -11023,9 +10683,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");
@@@ -10756,3 -11091,5 +10753,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) */