changeset 83156:8e09aff3715a

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-383 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-384 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-385 src/xfaces.c (push_named_merge_point): Return 0 if a cycle is detected * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-386 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-387 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-388 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-389 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-390 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-391 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-392 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-393 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-196
author Karoly Lorentey <lorentey@elte.hu>
date Thu, 10 Jun 2004 17:17:08 +0000
parents 235fb3b11e1f (current diff) 9b3dfd3380b8 (diff)
children 33be94fa3695
files lisp/ChangeLog lisp/simple.el lisp/subr.el man/ChangeLog man/pcl-cvs.texi src/xfaces.c
diffstat 47 files changed, 1020 insertions(+), 344 deletions(-) [+]
line wrap: on
line diff
--- a/etc/NEWS	Tue Jun 08 01:33:48 2004 +0000
+++ b/etc/NEWS	Thu Jun 10 17:17:08 2004 +0000
@@ -90,8 +90,16 @@
 
 * Changes in Emacs 21.4
 
-** A New package flymake.el does on-the-fly syntax checking of program
-source files.  See the Flymake's Info manual for more details.
+** New features in evaluation commands
+
+*** The function `eval-defun' (C-M-x) called on defface reinitializes
+the face to the value specified in the defface expression.
+
+*** Typing C-x C-e twice prints the value of the integer result
+in additional formats (octal, hexadecimal, character) specified
+by the new function `eval-expression-print-format'.  The same
+function also defines the result format for `eval-expression' (M-:),
+`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
 
 ** New input method chinese-sisheng for inputting Chinese Pinyin
 characters.
@@ -1808,9 +1816,18 @@
     D:  shows the diff of the revision at line with its previous revision
     L:  shows the log of the revision at line
     W:  annotates the workfile (most up to date) version
+
++++
+** In pcl-cvs mode, there is a new `d y' command to view the diffs
+between the local version of the file and yesterday's head revision
+in the repository.
+
 
 * New modes and packages in Emacs 21.4
 
+** The new package flymake.el does on-the-fly syntax checking of program
+source files.  See the Flymake's Info manual for more details.
+
 ** The library tree-widget.el provides a new widget to display a set
 of hierarchical data as an outline.  For example, the tree-widget is
 well suited to display a hierarchy of directories and files.
@@ -1905,6 +1922,7 @@
 are left unspecified and can be bound individually through the global
 or local keymaps.
 
++++
 ** The new kmacro package provides a simpler user interface to
 emacs' keyboard macro facilities.
 
@@ -2043,7 +2061,7 @@
 
 * Lisp Changes in Emacs 21.4
 
-** The sentinel is now called whan a network process is deleted with
+** The sentinel is now called when a network process is deleted with
 delete-process.  The status message passed to the sentinel for a
 deleted network process is "deleted".  The message passed to the
 sentinel when the connection is closed by the remote peer has been
--- a/etc/compilation.txt	Tue Jun 08 01:33:48 2004 +0000
+++ b/etc/compilation.txt	Thu Jun 10 17:17:08 2004 +0000
@@ -205,6 +205,7 @@
 jade:dbcommon.dsl:133:17:E: missing argument for function call
 G:/cygwin/dev/build-myproj.xml:54: Compiler Adapter 'javac' can't be found.
 file:G:/cygwin/dev/build-myproj.xml:54: Compiler Adapter 'javac' can't be found.
+{standard input}:27041: Warning: end of file not at end of a line; newline inserted
 
 
 * Lucid Compiler, lcc 3.x
@@ -252,7 +253,17 @@
 
 symbol: oracle
 
+This stupid precompiler wraps lines at column 80 in the middle of a file name.
+There is no obvious way of detecting this or turning it off.  But if you
+delete the newline, the file name will automatically be reparsed, so that you
+can then go there.
+
 Semantic error at line 528, column 5, file erosacqdb.pc:
+Error at line 41, column 10 in file /usr/src/sb/ODBI_BHP.hpp
+PCC-02150: error at line 49, column 27 in file /usr/src/sb/ODBI_dxfgh.pc
+PCC-00003: invalid SQL Identifier at column name in line 12 of file /usr/src/sb/ODBI_BHP.hpp
+PCC-00004: mismatched IF/ELSE/ENDIF block at line 27 in file /usr/src/sb/ODBI_BHP.hpp
+PCC-02151: line 21 column 40 file /usr/src/sb/ODBI_BHP.hpp:
 
 
 * Perl
--- a/lisp/ChangeLog	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/ChangeLog	Thu Jun 10 17:17:08 2004 +0000
@@ -1,3 +1,130 @@
+2004-06-10  Kim F. Storm  <storm@cua.dk>
+
+	* pcvs.el (cvs-mode-diff-yesterday): New command.
+
+	* pcvs-defs.el (cvs-mode-diff-map): Bind y to cvs-mode-diff-yesterday.
+
+2004-06-10  Juri Linkov  <juri@jurta.org>
+
+	* emacs-lisp/edebug.el (edebug-eval-defun):
+	* emacs-lisp/lisp-mode.el (eval-defun-1): Add `defface'.
+	Fix docstring.
+
+	* simple.el (eval-expression-print-format): Don't print additional
+	information on the first call to `eval-print-last-sexp'.
+	(next-error-find-buffer): Fix punctuation.
+	(killing) <defgroup>: Fix punctuation.
+	(yank-excluded-properties): Change group from editing to killing.
+
+	* replace.el (perform-replace): Use `limit' to terminate the
+	while-loop explicitly.
+
+2004-06-09  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* toolbar/tool-bar.el (tool-bar-add-item, tool-bar-local-item):
+	Use lc-*.xpm as prefix instead of *-locol.xpm.
+
+	* toolbar/lc-copy.xpm, toolbar/lc-cut.xpm
+	* toolbar/lc-help.xpm, toolbar/lc-home.xpm
+	* toolbar/lc-index.xpm, toolbar/lc-jump_to.xpm
+	* toolbar/lc-left_arrow.xpm, toolbar/lc-new.xpm
+	* toolbar/lc-open.xpm, toolbar/lc-paste.xpm
+	* toolbar/lc-preferences.xpm, toolbar/lc-print.xpm
+	* toolbar/lc-right_arrow.xpm, toolbar/lc-save.xpm
+	* toolbar/lc-saveas.xpm, toolbar/lc-search.xpm
+	* toolbar/lc-spell.xpm, toolbar/lc-undo.xpm
+	* toolbar/lc-up_arrow.xpm:
+	Renamed from *-locol.xpm.
+
+2004-06-09  Rajesh Vaidheeswarran  <rv@gnu.org>
+
+	* ffap.el (ffap-string-at-point-mode-alist): Fix the url mode to
+	include forms like &<str>; as valid url patterns.
+
+2004-06-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* dired.el (dired-diff, dired-backup-diff)
+	(dired-clean-directory, dired-do-chmod, dired-do-chgrp)
+	(dired-do-chown, dired-do-touch, dired-do-print)
+	(dired-do-shell-command, dired-do-kill-lines, dired-do-compress)
+	(dired-do-byte-compile, dired-do-load, dired-do-redisplay)
+	(dired-create-directory, dired-do-copy, dired-do-symlink)
+	(dired-do-hardlink, dired-do-rename, dired-do-rename-regexp)
+	(dired-do-copy-regexp, dired-do-hardlink-regexp)
+	(dired-do-symlink-regexp, dired-upcase, dired-downcase)
+	(dired-maybe-insert-subdir, dired-next-subdir)
+	(dired-prev-subdir, dired-goto-subdir, dired-mark-subdir-files)
+	(dired-kill-subdir, dired-tree-up, dired-tree-down)
+	(dired-hide-subdir, dired-hide-all, dired-show-file-type)
+	(dired-run-shell-command, dired-query): Remove redundant,
+	or incorrect, autoloads.
+
+	* dired-aux.el (dired-kill-tree): Do not kill DIRNAME, even if it
+	does not end in a slash.  Add optional argument KILL-ROOT.  Update
+	docstring.
+	(dired-do-touch, dired-clean-directory, dired-run-shell-command)
+	(dired-query): Add autoloads.
+
+2004-06-08  Daniel Pfeiffer  <occitan@esperanto.org>
+
+	* progmodes/compile.el (compilation-set-window-height): Rearrange
+	the save-* functions because a buffer can have several current
+	point in different windows.
+	(compilation-error-regexp-alist-alist): Recognize {standard input}
+	GNU messages (for gcc --pipe) and more kinds of Oracle messages.
+
+2004-06-08  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* toolbar/copy-locol.xpm, toolbar/cut-locol.xpm
+	* toolbar/help-locol.xpm, toolbar/home-locol.xpm
+	* toolbar/index-locol.xpm, toolbar/jump_to-locol.xpm
+	* toolbar/left_arrow-locol.xpm, toolbar/new-locol.xpm
+	* toolbar/open-locol.xpm, toolbar/paste-locol.xpm
+	* toolbar/preferences-locol.xpm, toolbar/print-locol.xpm
+	* toolbar/right_arrow-locol.xpm, toolbar/save-locol.xpm
+	* toolbar/saveas-locol.xpm, toolbar/search-locol.xpm
+	* toolbar/spell-locol.xpm, toolbar/undo-locol.xpm
+	* toolbar/up_arrow-locol.xpm:
+	New versions of icons that uses fewer colors.
+
+	* toolbar/tool-bar.el (tool-bar-local-item)
+	(tool-bar-local-item-from-menu): Try to use icons with fewer colors
+	if display-color-cells is 256 or less.
+
+2004-06-08  Kim F. Storm  <storm@cua.dk>
+
+	* wid-edit.el (widget-specify-button): Use hand pointer rather
+	than mouse-face as visible mouse-over effect.
+
+2004-06-07  Karl Fogel  <kfogel@red-bean.com>
+
+	* saveplace.el (save-place-alist-to-file): Bind `print-length'
+	and `print-level' to nil when writing out `save-place-alist'.
+	Thanks to Kai Grossjohann <kai@emptydomain.de> for enlightenment.
+
+2004-06-07  Juanma Barranquero  <lektu@terra.es>
+
+	* completion.el (completion-kill-region): Doc fix.
+
+	* format.el (format-insert-annotations)
+	(format-annotate-location): Doc fixes.
+	(format-subtract-regions): Make arguments match their use in
+	docstring.
+
+	* simple.el (kill-region): Doc fix.
+
+	* subr.el (insert-buffer-substring-no-properties)
+	(insert-buffer-substring-as-yank): Doc fixes.
+
+2004-06-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* dired-aux.el (dired-do-redisplay, dired-maybe-insert-subdir):
+	Update docstring.
+	(dired-reset-subdir-switches): New function.
+
+	* dired.el (dired-undo): Call `dired-build-subdir-alist'.
+	Limit scope of `buffer-read-only' binding.
+
 2004-06-06  Emilio C. Lopes  <eclig@gmx.net>
 
 	* eshell/esh-cmd.el (eshell/which): Respect commands quoted with
@@ -10,7 +137,7 @@
 
 2004-06-06  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
-	* toolbar/alias.pbm, toolbar/close.pbm, toolbar/copy.pbm,
+	* toolbar/alias.pbm, toolbar/close.pbm, toolbar/copy.pbm
 	* toolbar/cut.pbm, toolbar/help.pbm, toolbar/home.pbm
 	* toolbar/index.pbm, toolbar/jump_to.pbm, toolbar/left_arrow.pbm
 	* toolbar/new.pbm, toolbar/open.pbm, toolbar/paste.pbm
--- a/lisp/completion.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/completion.el	Thu Jun 10 17:17:08 2004 +0000
@@ -1,6 +1,6 @@
 ;;; completion.el --- dynamic word-completion code
 
-;; Copyright (C) 1990, 1993, 1995, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1993, 1995, 1997, 2004 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: abbrev convenience
@@ -2251,7 +2251,7 @@
 /(If you want to kill and then yank immediately, use \\[copy-region-as-kill].)
 
 This is the primitive for programs to kill text (as opposed to deleting it).
-Supply two arguments, character numbers indicating the stretch of text
+Supply two arguments, character positions indicating the stretch of text
  to be killed.
 Any command that calls this function is a \"kill command\".
 If the previous command was also a kill command,
--- a/lisp/dired-aux.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/dired-aux.el	Thu Jun 10 17:17:08 2004 +0000
@@ -255,6 +255,7 @@
       (error "chown not supported on this system"))
   (dired-do-chxxx "Owner" dired-chown-program 'chown arg))
 
+;;;###autoload
 (defun dired-do-touch (&optional arg)
   "Change the timestamp of the marked (or next ARG) files.
 This calls touch."
@@ -342,6 +343,7 @@
 
 (defvar dired-file-version-alist)
 
+;;;###autoload
 (defun dired-clean-directory (keep)
   "Flag numerical backups for deletion.
 Spares `dired-kept-versions' latest versions, and `kept-old-versions' oldest.
@@ -551,6 +553,7 @@
 	(funcall stuff-it files)))))
 
 ;; This is an extra function so that it can be redefined by ange-ftp.
+;;;###autoload
 (defun dired-run-shell-command (command)
   (let ((handler
 	 (find-file-name-handler (directory-file-name default-directory)
@@ -805,6 +808,7 @@
     ;; None of these keys quit - use C-g for that.
     ))
 
+;;;###autoload
 (defun dired-query (qs-var qs-prompt &rest qs-args)
   ;; Query user and return nil or t.
   ;; Store answer in symbol VAR (which must initially be bound to nil).
@@ -891,7 +895,14 @@
 (defun dired-do-redisplay (&optional arg test-for-subdir)
   "Redisplay all marked (or next ARG) files.
 If on a subdir line, redisplay that subdirectory.  In that case,
-a prefix arg lets you edit the `ls' switches used for the new listing."
+a prefix arg lets you edit the `ls' switches used for the new listing.
+
+Dired remembers switches specified with a prefix arg, so that reverting
+the buffer will not reset them.  However, using `dired-undo' to re-insert
+or delete subdirectories can bypass this machinery.  Hence, you sometimes
+may have to reset some subdirectory switches after a `dired-undo'.
+You can reset all subdirectory switches to the default using
+\\<dired-mode-map>\\[dired-reset-subdir-switches]."
   ;; Moves point if the next ARG files are redisplayed.
   (interactive "P\np")
   (if (and test-for-subdir (dired-get-subdir))
@@ -914,6 +925,12 @@
 			  arg)
     (dired-move-to-filename)
     (message "Redisplaying...done")))
+
+(defun dired-reset-subdir-switches ()
+  "Set `dired-switches-alist' to nil and revert dired buffer."
+  (interactive)
+  (setq dired-switches-alist nil)
+  (revert-buffer))
 
 (defun dired-update-file-line (file)
   ;; Delete the current line, and insert an entry for FILE.
@@ -1727,7 +1744,14 @@
 With a prefix arg, you may edit the ls switches used for this listing.
   You can add `R' to the switches to expand the whole tree starting at
   this subdirectory.
-This function takes some pains to conform to `ls -lR' output."
+This function takes some pains to conform to `ls -lR' output.
+
+Dired remembers switches specified with a prefix arg, so that reverting
+the buffer will not reset them.  However, using `dired-undo' to re-insert
+or delete subdirectories can bypass this machinery.  Hence, you sometimes
+may have to reset some subdirectory switches after a `dired-undo'.
+You can reset all subdirectory switches to the default using
+\\<dired-mode-map>\\[dired-reset-subdir-switches]."
   (interactive
    (list (dired-get-filename)
 	 (if current-prefix-arg
@@ -1832,19 +1856,23 @@
 			  (> (dired-get-subdir-min elt1)
 			     (dired-get-subdir-min elt2)))))))
 
-(defun dired-kill-tree (dirname &optional remember-marks)
+(defun dired-kill-tree (dirname &optional remember-marks kill-root)
   "Kill all proper subdirs of DIRNAME, excluding DIRNAME itself.
-With optional arg REMEMBER-MARKS, return an alist of marked files."
-  (interactive "DKill tree below directory: ")
-  (setq dirname (expand-file-name dirname))
+Interactively, you can kill DIRNAME as well by using a prefix argument.
+In interactive use, the command prompts for DIRNAME.
+
+When called from Lisp, if REMEMBER-MARKS is non-nil, return an alist
+of marked files.  If KILL-ROOT is non-nil, kill DIRNAME as well."
+  (interactive "DKill tree below directory: \ni\nP")
+  (setq dirname (file-name-as-directory (expand-file-name dirname)))
   (let ((s-alist dired-subdir-alist) dir m-alist)
     (while s-alist
       (setq dir (car (car s-alist))
 	    s-alist (cdr s-alist))
-      (if (and (not (string-equal dir dirname))
-	       (dired-in-this-tree dir dirname)
-	       (dired-goto-subdir dir))
-	  (setq m-alist (nconc (dired-kill-subdir remember-marks) m-alist))))
+      (and (or kill-root (not (string-equal dir dirname)))
+	   (dired-in-this-tree dir dirname)
+	   (dired-goto-subdir dir)
+	   (setq m-alist (nconc (dired-kill-subdir remember-marks) m-alist))))
     m-alist))
 
 (defun dired-insert-subdir-newpos (new-dir)
--- a/lisp/dired.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/dired.el	Thu Jun 10 17:17:08 2004 +0000
@@ -1448,14 +1448,13 @@
 (defun dired-undo ()
   "Undo in a dired buffer.
 This doesn't recover lost files, it just undoes changes in the buffer itself.
-You can use it to recover marks, killed lines or subdirs.
-In the latter case, you have to do \\[dired-build-subdir-alist] to
-parse the buffer again."
+You can use it to recover marks, killed lines or subdirs."
   (interactive)
   (let (buffer-read-only)
-    (undo)
-    (message "Change in Dired buffer undone.
-Actual changes in files cannot be undone by Emacs.")))
+    (undo))
+  (dired-build-subdir-alist)
+  (message "Change in Dired buffer undone.
+Actual changes in files cannot be undone by Emacs."))
 
 (defun dired-next-line (arg)
   "Move down lines then position at filename.
@@ -3037,244 +3036,6 @@
 	    ;; listing:
 	    (list (car (reverse dired-subdir-alist))))))))
 
-;; To make this file smaller, the less common commands
-;; go in a separate file.  But autoload them here
-;; to make the separation invisible.
-
-(autoload 'dired-diff "dired-aux"
-  "Compare file at point with file FILE using `diff'.
-FILE defaults to the file at the mark.  (That's the mark set by
-\\[set-mark-command], not by Dired's \\[dired-mark] command.)
-The prompted-for file is the first file given to `diff'."
-  t)
-
-(autoload 'dired-backup-diff "dired-aux"
-  "Diff this file with its backup file or vice versa.
-Uses the latest backup, if there are several numerical backups.
-If this file is a backup, diff it with its original.
-The backup file is the first file given to `diff'."
-  t)
-
-(autoload 'dired-clean-directory "dired-aux"
-  "Flag numerical backups for deletion.
-Spares `dired-kept-versions' latest versions, and `kept-old-versions' oldest.
-Positive prefix arg KEEP overrides `dired-kept-versions';
-Negative prefix arg KEEP overrides `kept-old-versions' with KEEP made positive.
-
-To clear the flags on these files, you can use \\[dired-flag-backup-files]
-with a prefix argument."
-  t)
-
-(autoload 'dired-do-chmod "dired-aux"
-  "Change the mode of the marked (or next ARG) files.
-This calls chmod, thus symbolic modes like `g+w' are allowed."
-  t)
-
-(autoload 'dired-do-chgrp "dired-aux"
-  "Change the group of the marked (or next ARG) files."
-  t)
-
-(autoload 'dired-do-chown "dired-aux"
-  "Change the owner of the marked (or next ARG) files."
-  t)
-
-(autoload 'dired-do-touch "dired-aux"
-  "Change the timestamp of the marked (or next ARG) files."
-  t)
-
-(autoload 'dired-do-print "dired-aux"
-  "Print the marked (or next ARG) files.
-Uses the shell command coming from variables `lpr-command' and
-`lpr-switches' as default."
-  t)
-
-(autoload 'dired-do-shell-command "dired-aux"
-  "Run a shell command COMMAND on the marked files.
-If no files are marked or a specific numeric prefix arg is given,
-the next ARG files are used.  Just \\[universal-argument] means the current file.
-The prompt mentions the file(s) or the marker, as appropriate.
-
-If there is a `*' in COMMAND, surrounded by whitespace, this runs
-COMMAND just once with the entire file list substituted there.
-
-If there is no `*', but there is a `?' in COMMAND, surrounded by
-whitespace, this runs COMMAND on each file individually with the
-file name substituted for `?'.
-
-Otherwise, this runs COMMAND on each file individually with the
-file name added at the end of COMMAND (separated by a space).
-
-`*' and `?' when not surrounded by whitespace have no special
-significance for `dired-do-shell-command', and are passed through
-normally to the shell, but you must confirm first.  To pass `*' by
-itself to the shell as a wildcard, type `*\"\"'.
-
-If COMMAND produces output, it goes to a separate buffer.
-
-This feature does not try to redisplay Dired buffers afterward, as
-there's no telling what files COMMAND may have changed.
-Type \\[dired-do-redisplay] to redisplay the marked files.
-
-When COMMAND runs, its working directory is the top-level directory of
-the Dired buffer, so output files usually are created there instead of
-in a subdir.
-
-In a noninteractive call (from Lisp code), you must specify
-the list of file names explicitly with the FILE-LIST argument."
-  t)
-
-(autoload 'dired-do-kill-lines "dired-aux"
-  "Kill all marked lines (not the files).
-With a prefix arg, kill all lines not marked or flagged."
-  t)
-
-(autoload 'dired-do-compress "dired-aux"
-  "Compress or uncompress marked (or next ARG) files."
-  t)
-
-(autoload 'dired-do-byte-compile "dired-aux"
-  "Byte compile marked (or next ARG) Emacs Lisp files."
-  t)
-
-(autoload 'dired-do-load "dired-aux"
-  "Load the marked (or next ARG) Emacs Lisp files."
-  t)
-
-(autoload 'dired-do-redisplay "dired-aux"
-  "Redisplay all marked (or next ARG) files.
-If on a subdir line, redisplay that subdirectory.  In that case,
-a prefix arg lets you edit the `ls' switches used for the new listing."
-  t)
-
-(autoload 'dired-create-directory "dired-aux"
-  "Create a directory called DIRECTORY."
-  t)
-
-(autoload 'dired-do-copy "dired-aux"
-  "Copy all marked (or next ARG) files, or copy the current file.
-Thus, a zero prefix argument copies nothing.  But it toggles the
-variable `dired-copy-preserve-time' (which see)."
-  t)
-
-(autoload 'dired-do-symlink "dired-aux"
-  "Make symbolic links to current file or all marked (or next ARG) files.
-When operating on just the current file, you specify the new name.
-When operating on multiple or marked files, you specify a directory
-and new symbolic links are made in that directory
-with the same names that the files currently have."
-  t)
-
-(autoload 'dired-do-hardlink "dired-aux"
-  "Add names (hard links) current file or all marked (or next ARG) files.
-When operating on just the current file, you specify the new name.
-When operating on multiple or marked files, you specify a directory
-and new hard links are made in that directory
-with the same names that the files currently have."
-  t)
-
-(autoload 'dired-do-rename "dired-aux"
-  "Rename current file or all marked (or next ARG) files.
-When renaming just the current file, you specify the new name.
-When renaming multiple or marked files, you specify a directory."
-  t)
-
-(autoload 'dired-do-rename-regexp "dired-aux"
-  "Rename marked files containing REGEXP to NEWNAME.
-As each match is found, the user must type a character saying
-  what to do with it.  For directions, type \\[help-command] at that time.
-NEWNAME may contain \\=\\<n> or \\& as in `query-replace-regexp'.
-REGEXP defaults to the last regexp used.
-With a zero prefix arg, renaming by regexp affects the full file name;
-usually only the non-directory part of file names is used and changed."
-  t)
-
-(autoload 'dired-do-copy-regexp "dired-aux"
-  "Copy all marked files containing REGEXP to NEWNAME.
-See function `dired-do-rename-regexp' for more info."
-  t)
-
-(autoload 'dired-do-hardlink-regexp "dired-aux"
-  "Hardlink all marked files containing REGEXP to NEWNAME.
-See function `dired-do-rename-regexp' for more info."
-  t)
-
-(autoload 'dired-do-symlink-regexp "dired-aux"
-  "Symlink all marked files containing REGEXP to NEWNAME.
-See function `dired-do-rename-regexp' for more info."
-  t)
-
-(autoload 'dired-upcase "dired-aux"
-  "Rename all marked (or next ARG) files to upper case."
-  t)
-
-(autoload 'dired-downcase "dired-aux"
-  "Rename all marked (or next ARG) files to lower case."
-  t)
-
-(autoload 'dired-maybe-insert-subdir "dired-aux"
-  "Insert this subdirectory into the same dired buffer.
-If it is already present, just move to it (type \\[dired-do-redisplay] to refresh),
-  else inserts it at its natural place (as `ls -lR' would have done).
-With a prefix arg, you may edit the ls switches used for this listing.
-  You can add `R' to the switches to expand the whole tree starting at
-  this subdirectory.
-This function takes some pains to conform to `ls -lR' output."
-  t)
-
-(autoload 'dired-next-subdir "dired-aux"
-  "Go to next subdirectory, regardless of level."
-  t)
-
-(autoload 'dired-prev-subdir "dired-aux"
-  "Go to previous subdirectory, regardless of level.
-When called interactively and not on a subdir line, go to this subdir's line."
-  t)
-
-(autoload 'dired-goto-subdir "dired-aux"
-  "Go to end of header line of DIR in this dired buffer.
-Return value of point on success, otherwise return nil.
-The next char is either \\n, or \\r if DIR is hidden."
-  t)
-
-(autoload 'dired-mark-subdir-files "dired-aux"
-  "Mark all files except `.' and `..'."
-  t)
-
-(autoload 'dired-kill-subdir "dired-aux"
-  "Remove all lines of current subdirectory.
-Lower levels are unaffected."
-  t)
-
-(autoload 'dired-tree-up "dired-aux"
-  "Go up ARG levels in the dired tree."
-  t)
-
-(autoload 'dired-tree-down "dired-aux"
-  "Go down in the dired tree."
-  t)
-
-(autoload 'dired-hide-subdir "dired-aux"
-  "Hide or unhide the current subdirectory and move to next directory.
-Optional prefix arg is a repeat factor.
-Use \\[dired-hide-all] to (un)hide all directories."
-  t)
-
-(autoload 'dired-hide-all "dired-aux"
-  "Hide all subdirectories, leaving only their header lines.
-If there is already something hidden, make everything visible again.
-Use \\[dired-hide-subdir] to (un)hide a particular subdirectory."
-  t)
-
-(autoload 'dired-show-file-type "dired-aux"
-  "Print the type of FILE, according to the `file' command.
-If FILE is a symbolic link and the optional argument DEREF-SYMLINKS is
-true then the type of the file linked to by FILE is printed instead."
-  t)
-
-(autoload 'dired-run-shell-command "dired-aux")
-
-(autoload 'dired-query "dired-aux")
-
 
 ;;;;  Drag and drop support
 
--- a/lisp/emacs-lisp/edebug.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/emacs-lisp/edebug.el	Thu Jun 10 17:17:08 2004 +0000
@@ -477,7 +477,8 @@
 If the current defun is actually a call to `defvar', then reset the
 variable using its initial value expression even if the variable
 already has some other value.  (Normally `defvar' does not change the
-variable's value if it already has a value.)
+variable's value if it already has a value.)  Treat `defcustom'
+similarly.  Reinitialize the face according to `defface' specification.
 
 With a prefix argument, instrument the code for Edebug.
 
@@ -507,7 +508,12 @@
 	  ((and (eq (car form) 'defcustom)
 		(default-boundp (nth 1 form)))
 	   ;; Force variable to be bound.
-	   (set-default (nth 1 form) (eval (nth 2 form)))))
+	   (set-default (nth 1 form) (eval (nth 2 form))))
+          ((eq (car form) 'defface)
+           ;; Reset the face.
+           (put (nth 1 form) 'face-defface-spec nil)
+           (setq face-new-frame-defaults
+                 (assq-delete-all (nth 1 form) face-new-frame-defaults))))
     (setq edebug-result (eval form))
     (if (not edebugging)
 	(princ edebug-result)
--- a/lisp/emacs-lisp/lisp-mode.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/emacs-lisp/lisp-mode.el	Thu Jun 10 17:17:08 2004 +0000
@@ -570,8 +570,9 @@
       value)))
 
 (defun eval-defun-1 (form)
-  "Change defvar into defconst within FORM.
-Likewise for other constructs as necessary."
+  "Treat some expressions specially.
+Reset the `defvar' and `defcustom' variables to the initial value.
+Reinitialize the face according to the `defface' specification."
   ;; The code in edebug-defun should be consistent with this, but not
   ;; the same, since this gets a macroexpended form.
   (cond ((not (listp form))
@@ -589,6 +590,13 @@
 	 ;; Force variable to be bound.
 	 (set-default (eval (nth 1 form)) (eval (nth 1 (nth 2 form))))
 	 form)
+	;; `defface' is macroexpanded to `custom-declare-face'.
+	((eq (car form) 'custom-declare-face)
+	 ;; Reset the face.
+	 (put (eval (nth 1 form)) 'face-defface-spec nil)
+	 (setq face-new-frame-defaults
+	       (assq-delete-all (eval (nth 1 form)) face-new-frame-defaults))
+	 form)
 	((eq (car form) 'progn)
 	 (cons 'progn (mapcar 'eval-defun-1 (cdr form))))
 	(t form)))
@@ -624,7 +632,7 @@
 	   (setq beg (point))
 	   (setq form (read (current-buffer)))
 	   (setq end (point)))
-	 ;; Alter the form if necessary, changing defvar into defconst, etc.
+	 ;; Alter the form if necessary.
 	 (setq form (eval-defun-1 (macroexpand form)))
 	 (list beg end standard-output
 	       `(lambda (ignore)
--- a/lisp/ffap.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/ffap.el	Thu Jun 10 17:17:08 2004 +0000
@@ -941,7 +941,7 @@
     ;; * no commas (good for latex)
     (file "--:$+<>@-Z_a-z~" "<@" "@>;.,!?:")
     ;; An url, or maybe a email/news message-id:
-    (url "--:=&?$+@-Z_a-z~#,%" "^A-Za-z0-9" ":;.,!?")
+    (url "--:=&?$+@-Z_a-z~#,%;" "^A-Za-z0-9" ":;.,!?")
     ;; Find a string that does *not* contain a colon:
     (nocolon "--9$+<>@-Z_a-z~" "<@" "@>;.,!?")
     ;; A machine:
--- a/lisp/format.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/format.el	Thu Jun 10 17:17:08 2004 +0000
@@ -750,13 +750,15 @@
 	    (message "Unknown annotations: %s" unknown-ans))))))
 
 (defun format-subtract-regions (minu subtra)
-  "Remove from the regions in MINUend the regions in SUBTRAhend.
+  "Remove from the regions in MINUEND the regions in SUBTRAHEND.
 A region is a dotted pair (FROM . TO).  Both parameters are lists of
 regions.  Each list must contain nonoverlapping, noncontiguous
 regions, in descending order.  The result is also nonoverlapping,
 noncontiguous, and in descending order.  The first element of MINUEND
 can have a cdr of nil, indicating that the end of that region is not
-yet known."
+yet known.
+
+\(fn MINUEND SUBTRAHEND)"
   (let* ((minuend (copy-alist minu))
 	 (subtrahend (copy-alist subtra))
 	 (m (car minuend))
@@ -809,8 +811,8 @@
 Inserts each element of the given LIST of buffer annotations at its
 appropriate place.  Use second arg OFFSET if the annotations' locations are
 not relative to the beginning of the buffer: annotations will be inserted
-at their location-OFFSET+1 \(ie, the offset is treated as the character number
-of the first character in the buffer)."
+at their location-OFFSET+1 \(ie, the offset is treated as the position of
+the first character in the buffer)."
   (if (not offset)
       (setq offset 0)
     (setq offset (1- offset)))
@@ -920,7 +922,7 @@
 
 (defun format-annotate-location (loc all ignore translations)
   "Return annotation(s) needed at location LOC.
-This includes any properties that change between LOC-1 and LOC.
+This includes any properties that change between LOC - 1 and LOC.
 If ALL is true, don't look at previous location, but generate annotations for
 all non-nil properties.
 Third argument IGNORE is a list of text-properties not to consider.
--- a/lisp/pcvs-defs.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/pcvs-defs.el	Thu Jun 10 17:17:08 2004 +0000
@@ -305,6 +305,7 @@
     ("d" "diff" .	cvs-mode-diff)
     ("b" "backup" .	cvs-mode-diff-backup)
     ("h" "head" .	cvs-mode-diff-head)
+    ("y" "yesterday" .	cvs-mode-diff-yesterday)
     ("v" "vendor" .	cvs-mode-diff-vendor))
   "Keymap for diff-related operations in `cvs-mode'."
   :name "Diff")
--- a/lisp/pcvs.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/pcvs.el	Thu Jun 10 17:17:08 2004 +0000
@@ -1565,6 +1565,12 @@
   (interactive (list (cvs-flags-query 'cvs-diff-flags "cvs diff flags")))
   (cvs-mode-diff-1 (cons "-rHEAD" flags)))
 
+(defun-cvs-mode (cvs-mode-diff-yesterday . SIMPLE) (flags)
+  "Diff the selected files against yesterday's head of the current branch.
+See ``cvs-mode-diff'' for more info."
+  (interactive (list (cvs-flags-query 'cvs-diff-flags "cvs diff flags")))
+  (cvs-mode-diff-1 (cons "-Dyesterday" flags)))
+
 (defun-cvs-mode (cvs-mode-diff-vendor . SIMPLE) (flags)
   "Diff the selected files against the head of the vendor branch.
 See ``cvs-mode-diff'' for more info."
--- a/lisp/progmodes/compile.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/progmodes/compile.el	Thu Jun 10 17:17:08 2004 +0000
@@ -210,7 +210,7 @@
 
     (gnu
      "^\\(?:[[:alpha:]][-[:alnum:].]+: ?\\)?\
-\\([/.]*[a-zA-Z]:?[^ \t\n:]*\\): ?\
+\\([/.]*[a-zA-Z]:?[^ \t\n:]*\\|{standard input}\\): ?\
 \\([0-9]+\\)\\([.:]?\\)\\([0-9]+\\)?\
 \\(?:-\\(?:\\([0-9]+\\)\\3\\)?\\.?\\([0-9]+\\)?\\)?:\
 \\(?: *\\(\\(?:Future\\|Runtime\\)?[Ww]arning\\|W:\\)\\|\
@@ -242,7 +242,9 @@
 : \\(?:error\\|warnin\\(g\\)\\) C[0-9]+:" 1 2 nil (3))
 
     (oracle
-     "^Semantic error at line \\([0-9]+\\), column \\([0-9]+\\), file \\(.*\\):$"
+     "^\\(?:Semantic error\\|Error\\|PCC-[0-9]+:\\).* line \\([0-9]+\\)\
+\\(?:\\(?:,\\| at\\)? column \\([0-9]+\\)\\)?\
+\\(?:,\\| in\\| of\\)? file \\(.*?\\):?$"
      3 1 2)
 
     (perl
@@ -988,13 +990,11 @@
 	 ;; If window is alone in its frame, aside from a minibuffer,
 	 ;; don't change its height.
 	 (not (eq window (frame-root-window (window-frame window))))
-	 ;; This save-current-buffer prevents us from changing the current
-	 ;; buffer, which might not be the same as the selected window's buffer.
-	 (save-current-buffer
+	 ;; Stef said that doing the saves in this order is safer:
+	 (save-excursion
 	   (save-selected-window
-	     (save-excursion
-	       (select-window window)
-	       (enlarge-window (- height (window-height)))))))))
+	     (select-window window)
+	     (enlarge-window (- height (window-height))))))))
 
 (defvar compilation-menu-map
   (let ((map (make-sparse-keymap "Errors")))
--- a/lisp/replace.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/replace.el	Thu Jun 10 17:17:08 2004 +0000
@@ -1132,7 +1132,7 @@
     (unwind-protect
 	;; Loop finding occurrences that perhaps should be replaced.
 	(while (and keep-going
-		    (not (eobp))
+		    (not (or (eobp) (and limit (>= (point) limit))))
 		    ;; Use the next match if it is already known;
 		    ;; otherwise, search for a match after moving forward
 		    ;; one char if progress is required.
@@ -1148,7 +1148,10 @@
 				     ;; character too far at the end,
 				     ;; but this is undone after the
 				     ;; while-loop.
-				     (progn (forward-char 1) (not (eobp))))
+				     (progn
+				       (forward-char 1)
+				       (not (or (eobp)
+						(and limit (>= (point) limit))))))
 				 (funcall search-function search-string limit t)
 				 ;; For speed, use only integers and
 				 ;; reuse the list used last time.
--- a/lisp/saveplace.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/saveplace.el	Thu Jun 10 17:17:08 2004 +0000
@@ -207,7 +207,9 @@
       (delete-region (point-min) (point-max))
       (when save-place-forget-unreadable-files
 	(save-place-forget-unreadable-files))
-      (print save-place-alist (current-buffer))
+      (let ((print-length nil)
+            (print-level nil))
+        (print save-place-alist (current-buffer)))
       (let ((version-control
              (cond
               ((null save-place-version-control) nil)
--- a/lisp/simple.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/simple.el	Thu Jun 10 17:17:08 2004 +0000
@@ -37,7 +37,7 @@
 
 
 (defgroup killing nil
-  "Killing and yanking commands"
+  "Killing and yanking commands."
   :group 'editing)
 
 (defgroup paren-matching nil
@@ -133,7 +133,7 @@
                       (if other-buffer
                           (message "This is the only next-error capable buffer."))
                       (current-buffer)))
-               (error "No next-error capable buffer found!"))))))))
+               (error "No next-error capable buffer found"))))))))
 
 (defun next-error (arg &optional reset)
   "Visit next next-error message and corresponding source code.
@@ -791,12 +791,12 @@
 in addition to the value printed by prin1 in functions which
 display the result of expression evaluation."
   (if (and (integerp value)
-           (or (not (eq this-command 'eval-last-sexp))
+           (or (not (memq this-command '(eval-last-sexp eval-print-last-sexp)))
                (eq this-command last-command)
                (and (boundp 'edebug-active) edebug-active)))
       (let ((char-string
              (if (or (and (boundp 'edebug-active) edebug-active)
-                     (eq this-command 'eval-last-sexp))
+                     (memq this-command '(eval-last-sexp eval-print-last-sexp)))
                  (prin1-char value))))
         (if char-string
             (format " (0%o, 0x%x) = %s" value value char-string)
@@ -2107,7 +2107,7 @@
 you can use the killing commands to copy text from a read-only buffer.
 
 This is the primitive for programs to kill text (as opposed to deleting it).
-Supply two arguments, character numbers indicating the stretch of text
+Supply two arguments, character positions indicating the stretch of text
  to be killed.
 Any command that calls this function is a \"kill command\".
 If the previous command was also a kill command,
@@ -2224,7 +2224,7 @@
 The value should be a list of text properties to discard or t,
 which means to discard all text properties."
   :type '(choice (const :tag "All" t) (repeat symbol))
-  :group 'editing
+  :group 'killing
   :version "21.4")
 
 (defvar yank-window-start nil)
--- a/lisp/subr.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/subr.el	Thu Jun 10 17:17:08 2004 +0000
@@ -1339,7 +1339,7 @@
 		(replace-match (format " (default %s)" default) t t prompt 1)
 	      (replace-regexp-in-string "[ \t]*\\'"
 					(format " (default %s) " default)
-					prompt t t)))) 
+					prompt t t))))
     (while
 	(progn
 	  (let ((str (read-from-minibuffer prompt nil nil nil nil
@@ -1708,8 +1708,8 @@
 (defun insert-buffer-substring-no-properties (buffer &optional start end)
   "Insert before point a substring of BUFFER, without text properties.
 BUFFER may be a buffer or a buffer name.
-Arguments START and END are character numbers specifying the substring.
-They default to the beginning and the end of BUFFER."
+Arguments START and END are character positions specifying the substring.
+They default to the values of (point-min) and (point-max) in BUFFER."
   (let ((opoint (point)))
     (insert-buffer-substring buffer start end)
     (let ((inhibit-read-only t))
@@ -1718,8 +1718,8 @@
 (defun insert-buffer-substring-as-yank (buffer &optional start end)
   "Insert before point a part of BUFFER, stripping some text properties.
 BUFFER may be a buffer or a buffer name.
-Arguments START and END are character numbers specifying the substring.
-They default to the beginning and the end of BUFFER.
+Arguments START and END are character positions specifying the substring.
+They default to the values of (point-min) and (point-max) in BUFFER.
 Strip text properties from the inserted text according to
 `yank-excluded-properties'."
   ;; Since the buffer text should not normally have yank-handler properties,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-copy.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,33 @@
+/* XPM */
+static char * copy2_xpm[] = {
+"24 24 6 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000100",
+"@	c #6B6B66",
+"#	c #BBBDBA",
+"$	c #504D46",
+"                        ",
+" +++++++++++++          ",
+" +#..........#+         ",
+" +............+         ",
+" +.#@@@.#@.@#.+         ",
+" +............+         ",
+" +.@$.@@#.++++++++++++  ",
+" +.......+#..........#+ ",
+" +.#@@.@@+............+ ",
+" +.......+.#@@#.#@.@#.+ ",
+" +.@$$.@@+............+ ",
+" +.......+.@@.@@#.#@..+ ",
+" +.#@@.@@+............+ ",
+" +.......+.#@@.@@#.#@.+ ",
+" +#......+............+ ",
+"  ++++++++.@@@.@@#.#@.+ ",
+"         +............+ ",
+"         +.#@@.@@#.#@.+ ",
+"         +............+ ",
+"         +#..........#+ ",
+"         ++++++++++++++ ",
+"                        ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-cut.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,34 @@
+/* XPM */
+static char * cut2_xpm[] = {
+"24 24 7 1",
+" 	c None",
+".	c #000100",
+"+	c #BBBDBA",
+"@	c #FFFFFF",
+"#	c #6B6B66",
+"$	c #504D46",
+"%	c #3E4850",
+"                        ",
+"                        ",
+"      .        .        ",
+"      .        .        ",
+"     .+.      .@.       ",
+"     .@$      #@.       ",
+"     .@#.    .@+.       ",
+"     .@+$    #@+.       ",
+"      #@#.  .@+$        ",
+"      .@+$  $@+.        ",
+"       #@#.%@+#         ",
+"       .@+$#++.         ",
+"        .@+$+.          ",
+"         .++..          ",
+"         ..#$.          ",
+"     .............      ",
+"     . ...  ... ...     ",
+"    ..  ..   ..  ..     ",
+"    .    .   .    .     ",
+"    ..  ..   ..  ..     ",
+"     ....     .. .      ",
+"     ....     ....      ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-help.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,39 @@
+/* XPM */
+static char * help2_xpm[] = {
+"24 24 12 1",
+" 	c None",
+".	c #000100",
+"+	c #FFFFFF",
+"@	c #BBBDBA",
+"#	c #C43107",
+"$	c #EBA291",
+"%	c #D15237",
+"&	c #504D46",
+"*	c #751805",
+"=	c #6B6B66",
+"-	c #974F3D",
+";	c #3E4850",
+"  ..    &....&          ",
+" ....&.;@++++@..&....   ",
+"..  &.+++++++++@..  ..  ",
+" . .%$+++++++++@#*.  .  ",
+" ..%$$%+@@@++++###*...  ",
+" -.$$%%$@@@@@+$####..   ",
+" .$$$%#*.....=#%####.   ",
+" =+$%#*..    .*#$##$..  ",
+"&++@%#..      .*$$+@..  ",
+".++@@-.        *$++@&.  ",
+".++@@@.        .+++@=.  ",
+".++@@@.        .++@@&.  ",
+".+++@@.        =++@@..  ",
+"&@++@@-.      .$++@@..  ",
+" .+++$%*.    .-$$@@=..  ",
+" .@$%%$%*...&$$$%#$..   ",
+" &.###%$$++++$$###...   ",
+" ..*####$++++$###*...   ",
+" . .*###+++@@@%#... .   ",
+" .  ..#@@@@@@@&...  .   ",
+"  .......&&&.....  ..   ",
+"       ........ ....    ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-home.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,38 @@
+/* XPM */
+static char * home2_xpm[] = {
+"24 24 11 1",
+" 	c None",
+".	c #000100",
+"+	c #BBBDBA",
+"@	c #FFFFFF",
+"#	c #6B6B66",
+"$	c #504D46",
+"%	c #974F3D",
+"&	c #EBA291",
+"*	c #87AF85",
+"=	c #3E4850",
+"-	c #D15237",
+"                        ",
+"           ..           ",
+"     .... ..=.          ",
+"     .%%..===..         ",
+"     .%%..$$#$..        ",
+"     .%..=+#++$..       ",
+"     ...$#+#++@$..      ",
+"     ..$+#++@+@+#..     ",
+"    ..#+++@+@+@+@#..    ",
+"   ..+++@+@+@+@+@+#..   ",
+"  ..+++++++++.....##..  ",
+" ....@@@@@@@@.++@.#.... ",
+"    .+@.....@.+@@.#.    ",
+"    .+@.&&%.@.+@@.#.    ",
+"    .#@.&-%.@.....#.    ",
+"    ..@.&-..++####..    ",
+"    ..@.&-%.@@@@@+.     ",
+"     .+.&%%.+++++#.     ",
+"     .+.-%%.@@@@@#.     ",
+" .................... . ",
+"    .****##$$$.**#$#$.  ",
+"  .. ......... ......   ",
+"        ...             ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-index.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,34 @@
+/* XPM */
+static char * index2_xpm[] = {
+"24 24 7 1",
+" 	c None",
+".	c #BBBDBA",
+"+	c #000100",
+"@	c #FFFFFF",
+"#	c #6B6B66",
+"$	c #504D46",
+"%	c #3E4850",
+"                        ",
+"  ++++++++++++++++++++  ",
+"  +@@@@@@@@@@@@@@@@@.+  ",
+"  +@................#+  ",
+"  +@................#+  ",
+"  +@#################+  ",
+"  +@@@@@@@@@@@@@@@@@.+  ",
+"  +@.................+  ",
+"  +@........+........+  ",
+"  +@.......$@+###...#+  ",
+"  +@@@@@@@.$@+...@@@.+  ",
+"  +@.......#@+#......+  ",
+"  +@.......#@$+#+#...+  ",
+"  +@.....#+#@#@+@++##+  ",
+"  +@@@@@@+@.@.@#@#.+.+  ",
+"  +@.....+@.@#@#@##+.+  ",
+"  +@.....+@.@.....#+.+  ",
+"  +@.....+........#+#+  ",
+"  +@@@@@.+.#.....##+.+  ",
+"  +@@@@@..%$######+#.+  ",
+"  +@@@@@@.#+$#$#$#+..+  ",
+"  +@........++++++$#.+  ",
+"  ++++++++++@...@@++++  ",
+"           ++++++++     "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-jump_to.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,35 @@
+/* XPM */
+static char * jump_to2_xpm[] = {
+"24 24 8 1",
+" 	c None",
+".	c #D3B354",
+"+	c #000100",
+"@	c #87AF85",
+"#	c #974F3D",
+"$	c #FFFFFF",
+"%	c #D15237",
+"&	c #BBBDBA",
+"                        ",
+"                        ",
+"      +                 ",
+"      ++                ",
+"      +@+   ++++++      ",
+" ++++++@@+ +.#..%#++    ",
+" +$$$$$@@@+........++   ",
+" +&@@@@@@@@+........+   ",
+" +&@@@@@@@@@+.......#+  ",
+" +@@@@@@@@@@@+......%+  ",
+" +@@@@@@@@@@+........+  ",
+" +@@@@@@@@@+.........+  ",
+" +@@@@@@@@+#........#+  ",
+" ++++++@@+#..........+  ",
+"      +@++#.........+   ",
+"      ++ ++........++   ",
+"      +    +.%..#.++    ",
+"            ++++++      ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-left_arrow.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,34 @@
+/* XPM */
+static char * left_arrow2_xpm[] = {
+"24 24 7 1",
+" 	c None",
+".	c #87AF85",
+"+	c #000100",
+"@	c #BBBDBA",
+"#	c #504D46",
+"$	c #6B6B66",
+"%	c #3E4850",
+"                        ",
+"                        ",
+"                        ",
+"            +           ",
+"           ++           ",
+"          +@+           ",
+"         +@@+           ",
+"        +@@@++++++++    ",
+"       +@@@@@@@@@@.+    ",
+"      +@.@@@@...@.$+    ",
+"     %@.@@@..@@@@..+    ",
+"    +@............$+    ",
+"     +#...........#+    ",
+"      +#..........#+    ",
+"       +#..########+    ",
+"        +#.#++++++++    ",
+"         +##+           ",
+"          +#+           ",
+"           ++           ",
+"            +           ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-new.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,33 @@
+/* XPM */
+static char * new2_xpm[] = {
+"24 24 6 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #BBBDBA",
+"@	c #000100",
+"#	c #6B6B66",
+"$	c #504D46",
+"                        ",
+"   @@@@@@@@@@@@@        ",
+"  @+..........+$@       ",
+"  @...........+++@      ",
+"  @...........+..+@     ",
+"  @...........+...#@    ",
+"  @...........+...++@   ",
+"  @...........+@@@@@@@  ",
+"  @............++++##@  ",
+"  @.............++++#@  ",
+"  @...............++#@  ",
+"  @................+#@  ",
+"  @.................#@  ",
+"  @.................+@  ",
+"  @.................+@  ",
+"  @...............+++@  ",
+"  @..............++++@  ",
+"  @.............+++++@  ",
+"  @............++++++@  ",
+"  @............++++++@  ",
+"  @+...+.+.+.++++++++@  ",
+"  @+++++++++++++++++#@  ",
+"   @@@@@@@@@@@@@@@@@@   ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-open.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,35 @@
+/* XPM */
+static char * open2_xpm[] = {
+"24 24 8 1",
+" 	c None",
+".	c #BBBDBA",
+"+	c #000100",
+"@	c #87AF85",
+"#	c #FFFFFF",
+"$	c #6B6B66",
+"%	c #504D46",
+"&	c #3E4850",
+"                        ",
+"                        ",
+"                        ",
+"  +++++++               ",
+" +.#####$%              ",
+" +#.....@%              ",
+"+.#......%+             ",
+"+..@@@...$%++++++++     ",
+"+.@@@@@..@@........+    ",
+"+.@@@@@@@@@@@@@@@@$+    ",
+"+.$$++++++++++++++++++  ",
+"+.$%################..& ",
+"+.$+#.................+ ",
+"+.%.#...............@$+ ",
+"+.+#...............@@%+ ",
+"+.$#............@@.@$+  ",
+"+....@@@@@.....@@@@$%+  ",
+"+.#..@@@@@@@@@@@@$$$+   ",
+"+#.@@@@$$$$$$$$$$$$%+   ",
+" +++++++++++++++++++    ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-paste.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,35 @@
+/* XPM */
+static char * paste2_xpm[] = {
+"24 24 8 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #BBBDBA",
+"@	c #000100",
+"#	c #6B6B66",
+"$	c #504D46",
+"%	c #D3B354",
+"&	c #974F3D",
+"       @@@@             ",
+" @@@@@@+..#@@@@@@       ",
+"@.....$.++#$+...+@      ",
+"@.++++$.##+$#+++%@      ",
+"@.+++$..+++#$#++%@      ",
+"@.++$++++++#$$++%@      ",
+"@.++#$$$$$$$$#++%@      ",
+"@.+++########+++%@      ",
+"@.+++++#$@@@@@$$@@@@@   ",
+"@.+++++$+...........+@  ",
+"@.+++++$.............@  ",
+"@.+++++@.+##+..+#.#+.@  ",
+"@.+++++@.............@  ",
+"@.+++++$.##.###+.+#..@  ",
+"@.+++++$.............@  ",
+"@.+++++$.+##.###+.+#.@  ",
+"@.+++++@.............@  ",
+"@.+++++@.##.###+.+#..@  ",
+"@.+++++$.............@  ",
+"@.+++++$.+##.###+.+#.@  ",
+"@+%%%%&@.............@  ",
+" @@@@@@@+...........+@  ",
+"        @@@@@@@@@@@@@   ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-preferences.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,37 @@
+/* XPM */
+static char * preferences2_xpm[] = {
+"24 24 10 1",
+" 	c None",
+".	c #000100",
+"+	c #BBBDBA",
+"@	c #FFFFFF",
+"#	c #7A98B0",
+"$	c #6B6B66",
+"%	c #4D687C",
+"&	c #B0CCE2",
+"*	c #504D46",
+"=	c #3E4850",
+"       ..               ",
+"      .++$.             ",
+"       .+++.        ..  ",
+"        .@+.       .@$. ",
+"    ..  =@+.      .@++. ",
+"   .+ ..+@+$.     .++.  ",
+"   .+++@@+++.    .@..   ",
+"    .+++++++$.  .@.     ",
+"     .....@@+$..+.      ",
+"          .@@+.+.       ",
+"           .@.+..       ",
+"            .+.$*.      ",
+"        ....+.$$$$.     ",
+"       .#&#.. .+++$.    ",
+"      .#&+&%.  .@@+$.   ",
+"     .#@#%&%.   .@@+$.  ",
+"    .#@#%&#%.    .@@+$..",
+"   .&@#%&#%.      .+$*+.",
+"  .#@#%&#%.        .+++.",
+"  .&@#&#%..         ... ",
+"  .#&&#%..              ",
+"   .##%..               ",
+"    ...                 ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-print.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,33 @@
+/* XPM */
+static char * print2_xpm[] = {
+"24 24 6 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000100",
+"@	c #BBBDBA",
+"#	c #6B6B66",
+"$	c #504D46",
+"                        ",
+"      ++++++++++++      ",
+"     +@..........@+     ",
+"     +.........@@@+     ",
+"     +.###.#@@...@+     ",
+"     +...........@+     ",
+"     +.##@.#@.@#.@+     ",
+"     +...........@+     ",
+"     +.@@.@.@@@..@+     ",
+"     +....@......@+     ",
+"    ++.###@##@#@@@++    ",
+"   +.+@@@@@@@@@@@@+#+   ",
+"  +..#$++++++++++##@@+  ",
+" +....................+ ",
+" +@#...............@@@+ ",
+" +@#.@@@@@@@@@@@@@@#@#+ ",
+" +@#...............$##+ ",
+" +@#$$$$$$$$$$$$$$$$##+ ",
+" +@@###$#$$$$$$$$$$###+ ",
+" +#@@#########$#######+ ",
+"  ++++++++++++++++++++  ",
+"  +#@@@@@@@@@@@@@@@##+  ",
+"   ++++++++++++++++++   ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-right_arrow.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,33 @@
+/* XPM */
+static char * right_arrow2_xpm[] = {
+"24 24 6 1",
+" 	c None",
+".	c #87AF85",
+"+	c #000100",
+"@	c #BBBDBA",
+"#	c #6B6B66",
+"$	c #504D46",
+"                        ",
+"                        ",
+"                        ",
+"           +            ",
+"           ++           ",
+"           +.+          ",
+"           +..+         ",
+"    ++++++++@..+        ",
+"    +@@@@@@@@@..+       ",
+"    +@@..........+      ",
+"    +..........@..+     ",
+"    +.............$+    ",
+"    +............$+     ",
+"    +...........$+      ",
+"    +.######...$+       ",
+"    ++++++++#.$+        ",
+"           +#$+         ",
+"           +$+          ",
+"           ++           ",
+"           +            ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-save.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,39 @@
+/* XPM */
+static char * save2_xpm[] = {
+"24 24 12 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000100",
+"@	c #BBBDBA",
+"#	c #7A98B0",
+"$	c #6B6B66",
+"%	c #EBA291",
+"&	c #3E4850",
+"*	c #B0CCE2",
+"=	c #4D687C",
+"-	c #504D46",
+";	c #974F3D",
+"                        ",
+"  +++++++++++++++++++   ",
+" +**$%%%%%%%%%%%%@$**+  ",
+" +*#$%%%%%%%%;;%;;$#=+  ",
+" +*#$%%%%%%;%;%;;;$#=+  ",
+" +*#$.............$#=+  ",
+" +*#$.............$#=+  ",
+" +*#$@@@@@@@@@@@@@$#=+  ",
+" +*#$.............$#=+  ",
+" +*#$.............$#=+  ",
+" +*#$@@@@@@@@@@@@@$#$+  ",
+" +*#$.............$#&+  ",
+" +*##$$$$$$$$$$$$$$#&+  ",
+" +*#################&+  ",
+" +*###&&&==$$$$&&&#*&+  ",
+" +*##&@@....@@@@$==*&+  ",
+" +*##&@.$--@@@@@&==*&+  ",
+" +*##&..$--@@@@@&==*&+  ",
+" +*##&..---@@@..&==*&+  ",
+" +###&@@---@@...&==*&+  ",
+"  +==&@@@@@@..@@&==*&+  ",
+"   ++++++++++++++++&+   ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-saveas.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,40 @@
+/* XPM */
+static char * saveas2_xpm[] = {
+"24 24 13 1",
+" 	c None",
+".	c #000100",
+"+	c #BBBDBA",
+"@	c #7A98B0",
+"#	c #FFFFFF",
+"$	c #6B6B66",
+"%	c #3E4850",
+"&	c #B0CCE2",
+"*	c #4D687C",
+"=	c #EBA291",
+"-	c #504D46",
+";	c #D3B354",
+">	c #974F3D",
+"                ..      ",
+"               .;;.     ",
+"  .............;;-...   ",
+" .&&$========.;;-.%@@.  ",
+" .&@$=======.;;-.>-@*.  ",
+" .&@$======.;;-.>>%@*.  ",
+" .&@$#####.;;-.++#$@*.  ",
+" .&@$####.;;-.++##$@*.  ",
+" .&@$+++.;;-.+++++$@*.  ",
+" .&@$###.;-.++####$@*.  ",
+" .&@$##.-..++#####$@*.  ",
+" .&@$++..+++++++++$@$.  ",
+" .&@$###++########$@%.  ",
+" .&@@$$$$$$$$$$$$$$@%.  ",
+" .&@@@@@@@@@@@@@@@@@%.  ",
+" .&@@@%%%**$$$$%%%@&%.  ",
+" .&@@%++####++++$**&%.  ",
+" .&@@%+#$--+++++%**&%.  ",
+" .&@@%##$--+++++%**&%.  ",
+" .&@@%##---+++##%**&%.  ",
+" .@@@%++---++###%**&%.  ",
+"  .**%++++++##++%**&%.  ",
+"   ................%.   ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-search.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,33 @@
+/* XPM */
+static char * search2_xpm[] = {
+"24 24 6 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #BBBDBA",
+"@	c #000100",
+"#	c #6B6B66",
+"$	c #504D46",
+"                        ",
+"   @@@@@@@@@@@@@        ",
+"  @+..........+$@       ",
+"  @...........+++@      ",
+"  @...........+..+@     ",
+"  @...........+...#@    ",
+"  @...........+...++@   ",
+"  @....+$@@$+.+@@@@@@@  ",
+"  @...+$+++#$+.++++##@  ",
+"  @...$+..++#$..++++#@  ",
+"  @...@+.++++@+...++#@  ",
+"  @...@++++++@++...+#@  ",
+"  @...$#+++++$++....#@  ",
+"  @...+$#+++@@++....+@  ",
+"  @...+#$@@$#@@+....+@  ",
+"  @....++++++@@@+++++@  ",
+"  @....++++++#@@@++++@  ",
+"  @.....++++++#@@@+++@  ",
+"  @..........++#@@+++@  ",
+"  @..........++++++++@  ",
+"  @+...+.+.+.++++++++@  ",
+"  @+++++++++++++#####@  ",
+"   @@@@@@@@@@@@@@@@@@   ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-spell.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,35 @@
+/* XPM */
+static char * spell2_xpm[] = {
+"24 24 8 1",
+" 	c None",
+".	c #000100",
+"+	c #87AF85",
+"@	c #504D46",
+"#	c #BBBDBA",
+"$	c #6B6B66",
+"%	c #3E4850",
+"&	c #FFFFFF",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"  ...  ....   ...       ",
+" ..  . ..  . ..  .      ",
+" ..  . ....  ..         ",
+" ..... ..  . ..         ",
+" ..  . ..  . ..  .   .  ",
+" ..  . ....   ...   ... ",
+"                   .+.  ",
+"         ..       .+@   ",
+"         .+.     .++.   ",
+"          @+.   %#+.    ",
+"          .++. .#+$.    ",
+"           .++.&++.     ",
+"           .+++++$.     ",
+"            .++++.      ",
+"            .+++@.      ",
+"             .++.       ",
+"             .+@.       ",
+"              ..        ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-undo.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,32 @@
+/* XPM */
+static char * undo2_xpm[] = {
+"24 24 5 1",
+" 	c None",
+".	c #D3B354",
+"+	c #000100",
+"@	c #FFFFFF",
+"#	c #6B6B66",
+"                        ",
+"                        ",
+"                        ",
+"          +             ",
+"         ++             ",
+"        +@+             ",
+"       +@.++++          ",
+"      +@......+         ",
+"     +@........+        ",
+"    +...........+       ",
+"     +..........++      ",
+"      +..........+      ",
+"       +..+++....+      ",
+"        +.+ ++...+      ",
+"         ++  ++..+      ",
+"          +   +..+      ",
+"              +..+      ",
+"              +.+       ",
+"             +.#+       ",
+"            +..+        ",
+"             ++         ",
+"                        ",
+"                        ",
+"                        "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/toolbar/lc-up_arrow.xpm	Thu Jun 10 17:17:08 2004 +0000
@@ -0,0 +1,35 @@
+/* XPM */
+static char * up_arrow2_xpm[] = {
+"24 24 8 1",
+" 	c None",
+".	c #87AF85",
+"+	c #000100",
+"@	c #504D46",
+"#	c #6B6B66",
+"$	c #BBBDBA",
+"%	c #FFFFFF",
+"&	c #3E4850",
+"                        ",
+"                        ",
+"           +            ",
+"          &$+           ",
+"         +%.@+          ",
+"        +%...@+         ",
+"       +%.....@+        ",
+"      +%......#@+       ",
+"     +%.......##@+      ",
+"    +%$$.....#@@@@+     ",
+"   +++++$.....@+++++    ",
+"       +$....#@+        ",
+"       +$....#@+        ",
+"       +$...##@+        ",
+"       +$...##@+        ",
+"       +$...##@+        ",
+"       +...#@@@+        ",
+"       +++++++++        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};
--- a/lisp/toolbar/tool-bar.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/toolbar/tool-bar.el	Thu Jun 10 17:17:08 2004 +0000
@@ -96,7 +96,8 @@
 Info node `(elisp)Tool Bar'.  Items are added from left to right.
 
 ICON is the base name of a file containing the image to use.  The
-function will first try to use ICON.xpm, then ICON.pbm, and finally
+function will first try to use lc-ICON.xpm if display-color-cells
+is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
 ICON.xbm, using `find-image'.
 
 Use this function only to make bindings in the global value of `tool-bar-map'.
@@ -112,24 +113,24 @@
 Info node `(elisp)Tool Bar'.  Items are added from left to right.
 
 ICON is the base name of a file containing the image to use.  The
-function will first try to use ICON.xpm, then ICON.pbm, and finally
+function will first try to use lc-ICON.xpm if display-color-cells
+is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
 ICON.xbm, using `find-image'."
   (let* ((fg (face-attribute 'tool-bar :foreground))
 	 (bg (face-attribute 'tool-bar :background))
 	 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
 			(if (eq bg 'unspecified) nil (list :background bg))))
+	 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
+	 (xpm-lo-spec (if (> (display-color-cells) 256)
+			  nil
+			(list :type 'xpm :file (concat "lc-" icon ".xpm"))))
+	 (pbm-spec (append (list :type 'pbm :file (concat icon ".pbm")) colors))
+	 (xbm-spec (append (list :type 'xbm :file (concat icon ".xbm")) colors))
 	 (image (find-image
 		(if (display-color-p)
-		    (list (list :type 'xpm :file (concat icon ".xpm"))
-			  (append (list :type 'pbm :file (concat icon ".pbm"))
-				  colors)
-			  (append (list :type 'xbm :file (concat icon ".xbm"))
-				  colors))
-		  (list (append (list :type 'pbm :file (concat icon ".pbm"))
-				colors)
-			(append (list :type 'xbm :file (concat icon ".xbm"))
-				colors)
-			(list :type 'xpm :file (concat icon ".xpm")))))))
+		    (list xpm-lo-spec xpm-spec pbm-spec xbm-spec)
+		  (list pbm-spec xbm-spec xpm-lo-spec xpm-spec)))))
+
     (when (and (display-images-p) image)
       (unless (image-mask-p image)
 	(setq image (append image '(:mask heuristic))))
@@ -170,17 +171,15 @@
 	 (bg (face-attribute 'tool-bar :background))
 	 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
 			(if (eq bg 'unspecified) nil (list :background bg))))
+	 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
+	 (xpm-lo-spec (if (> (display-color-cells) 256)
+			  nil
+			(list :type 'xpm :file (concat "lc-" icon ".xpm"))))
+	 (pbm-spec (append (list :type 'pbm :file (concat icon ".pbm")) colors))
+	 (xbm-spec (append (list :type 'xbm :file (concat icon ".xbm")) colors))
 	 (spec (if (display-color-p)
-		   (list (list :type 'xpm :file (concat icon ".xpm"))
-			 (append (list :type 'pbm :file (concat icon ".pbm"))
-				       colors)
-			 (append (list :type 'xbm :file (concat icon ".xbm"))
-				       colors))
-		 (list (append (list :type 'pbm :file (concat icon ".pbm"))
-				     colors)
-		       (append (list :type 'xbm :file (concat icon ".xbm"))
-				     colors)
-		       (list :type 'xpm :file (concat icon ".xpm")))))
+		   (list xpm-lo-spec xpm-spec pbm-spec xbm-spec)
+		 (list pbm-spec xbm-spec xpm-lo-spec xpm-spec)))
 	 (image (find-image spec))
 	 submap key)
     (when (and (display-images-p) image)
--- a/lisp/wid-edit.el	Tue Jun 08 01:33:48 2004 +0000
+++ b/lisp/wid-edit.el	Thu Jun 10 17:17:08 2004 +0000
@@ -385,8 +385,8 @@
     (overlay-put overlay 'evaporate t)
     ;; We want to avoid the face with image buttons.
     (unless (widget-get widget :suppress-face)
-      (overlay-put overlay 'face (widget-apply widget :button-face-get))
-      (overlay-put overlay 'mouse-face widget-mouse-face))
+      (overlay-put overlay 'face (widget-apply widget :button-face-get)))
+    (overlay-put overlay 'pointer 'hand)
     (overlay-put overlay 'help-echo help-echo)))
 
 (defun widget-mouse-help (window overlay point)
@@ -1289,8 +1289,8 @@
 The value of the :type attribute should be an unconverted widget type."
   (let ((value (widget-get widget :value))
 	(type (widget-get widget :type)))
-    (widget-put widget :children 
-                (list (widget-create-child-value widget 
+    (widget-put widget :children
+                (list (widget-create-child-value widget
                                                  (widget-convert type)
                                                  value)))))
 
@@ -3312,8 +3312,8 @@
 nil, or a cons-cell containing a sexp and my-lisp.  This will not work
 because the `choice' widget does not allow recursion.
 
-Using the `lazy' widget you can overcome this problem, as in this 
-example: 
+Using the `lazy' widget you can overcome this problem, as in this
+example:
 
   (define-widget 'sexp-list 'lazy
     \"A list of sexps.\"
@@ -3322,7 +3322,7 @@
   :format "%{%t%}: %v"
   ;; We don't convert :type because we want to allow recursive
   ;; datastructures.  This is slow, so we should not create speed
-  ;; critical widgets by deriving from this. 
+  ;; critical widgets by deriving from this.
   :convert-widget 'widget-value-convert-widget
   :value-create 'widget-type-value-create
   :value-get 'widget-child-value-get
--- a/man/ChangeLog	Tue Jun 08 01:33:48 2004 +0000
+++ b/man/ChangeLog	Thu Jun 10 17:17:08 2004 +0000
@@ -1,3 +1,16 @@
+2004-06-10  Kim F. Storm  <storm@cua.dk>
+
+	* pcl-cvs.texi (Viewing differences): Add 'd y'.
+
+2004-06-10  Juri Linkov  <juri@jurta.org>
+
+	* building.texi (Lisp Eval): Add C-M-x on defface.
+
+2004-06-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* files.texi (Reverting): Auto-Revert mode and
+	Global Auto-Revert mode no longer revert remote files.
+
 2004-06-05  Lars Hansen  <larsh@math.ku.dk>
 
 	* dired-x.texi (variable dired-omit-mode): Rename from
--- a/man/building.texi	Tue Jun 08 01:33:48 2004 +0000
+++ b/man/building.texi	Thu Jun 10 17:17:08 2004 +0000
@@ -989,6 +989,8 @@
 variable to the initial value specified in the @code{defvar} expression.
 @code{defcustom} expressions are treated similarly.
 This special feature is convenient for debugging Lisp programs.
+Typing @kbd{C-M-x} on a @code{defface} expression reinitializes
+the face according to the @code{defface} specification.
 
 @kindex C-x C-e
 @findex eval-last-sexp
--- a/man/files.texi	Tue Jun 08 01:33:48 2004 +0000
+++ b/man/files.texi	Thu Jun 10 17:17:08 2004 +0000
@@ -894,8 +894,9 @@
 Auto-Revert mode, Emacs periodically checks all file buffers and
 reverts any when the corresponding file has changed.  The local
 variant, Auto-Revert mode, applies only to buffers in which it was
-activated.  Checking the files is done at intervals determined by the
-variable @code{auto-revert-interval}.
+activated.  The variable @code{auto-revert-interval} controls how
+often to check for a changed file.  Since checking a remote file is
+too slow, these modes do not check or revert remote files.
 
 @node Auto Save
 @section Auto-Saving: Protection Against Disasters
--- a/man/pcl-cvs.texi	Tue Jun 08 01:33:48 2004 +0000
+++ b/man/pcl-cvs.texi	Thu Jun 10 17:17:08 2004 +0000
@@ -1057,6 +1057,11 @@
 Display a @samp{cvs diff} between the selected files and the head
 revision of the vendor branch in the repository.
 (@code{cvs-mode-diff-vendor}).@refill
+
+@item d y
+Display a @samp{cvs diff} between the selected files and yesterday's
+head revision in the repository.
+(@code{cvs-mode-diff-yesterday}).@refill
 @end table
 
 By default, @samp{diff} commands ignore the marks.  This can be changed
--- a/nt/ChangeLog	Tue Jun 08 01:33:48 2004 +0000
+++ b/nt/ChangeLog	Thu Jun 10 17:17:08 2004 +0000
@@ -1,3 +1,8 @@
+2004-06-07  Juanma Barranquero  <lektu@terra.es>
+
+	* INSTALL: Clarify paragraph about compatibility between image
+	libraries and builds of Emacs with several compilers.
+
 2004-06-06  Juanma Barranquero  <lektu@terra.es>
 
 	* makefile.w32-in (bootstrap-nmake): When nmake'ing bootstrap on
--- a/nt/INSTALL	Tue Jun 08 01:33:48 2004 +0000
+++ b/nt/INSTALL	Thu Jun 10 17:17:08 2004 +0000
@@ -112,13 +112,13 @@
 
   Binaries for the image libraries (among many others) can be found at
   GnuWin32 (http://gnuwin32.sourceforge.net).  These are built with
-  MinGW and work better with GCC/MinGW builds of Emacs, like the
-  official binary tarballs for Windows.  Compatibility with MSVC is
-  still weak and should not be trusted in production environments; if
-  you really need an MSVC-compiled Emacs with image support, you should
-  try to build the required libraries with the same compiler (though it
-  can be extremely non-trivial, and we'll be interested on hearing of
-  any such effort).
+  MinGW, and so are very compatible with GCC/MinGW builds of Emacs (like
+  the official binary tarballs for Windows).  Compatibility with MSVC,
+  on the other hand, is still weak and should not be trusted in
+  production environments; if you really need an MSVC-compiled Emacs
+  with image support, you should try to build the required libraries
+  with the same compiler (though it can be extremely non-trivial, and
+  we'll be interested on hearing of any such effort).
 
 * Building
 
--- a/src/ChangeLog	Tue Jun 08 01:33:48 2004 +0000
+++ b/src/ChangeLog	Thu Jun 10 17:17:08 2004 +0000
@@ -1,3 +1,13 @@
+2004-06-08  Miles Bader  <miles@gnu.org>
+
+	* xfaces.c (push_named_merge_point): Return 0 when a cycle is detected.
+
+2004-06-07  Juanma Barranquero  <lektu@terra.es>
+
+	* editfns.c (Fuser_login_name, Ffloat_time, Fencode_time)
+	(Fcurrent_time_string, Fcurrent_time_zone)
+	(Finsert_buffer_substring, Ftranspose_regions): Doc fixes.
+
 2004-06-07  Miles Bader  <miles@gnu.org>
 
 	* xfaces.c (struct named_merge_point): New type.
--- a/src/editfns.c	Tue Jun 08 01:33:48 2004 +0000
+++ b/src/editfns.c	Thu Jun 10 17:17:08 2004 +0000
@@ -1218,7 +1218,7 @@
 DEFUN ("user-login-name", Fuser_login_name, Suser_login_name, 0, 1, 0,
        doc: /* Return the name under which the user logged in, as a string.
 This is based on the effective uid, not the real uid.
-Also, if the environment variable LOGNAME or USER is set,
+Also, if the environment variables LOGNAME or USER are set,
 that determines the value of this function.
 
 If optional argument UID is an integer, return the login name of the user
@@ -1430,7 +1430,7 @@
 
 DEFUN ("float-time", Ffloat_time, Sfloat_time, 0, 1, 0,
        doc: /* Return the current time, as a float number of seconds since the epoch.
-If an argument is given, it specifies a time to convert to float
+If SPECIFIED-TIME is given, it is the time to convert to float
 instead of the current time.  The argument should have the forms:
  (HIGH . LOW) or (HIGH LOW USEC) or (HIGH LOW . USEC).
 Thus, you can use times obtained from `current-time'
@@ -1660,7 +1660,7 @@
 The intervening arguments are ignored.
 This feature lets (apply 'encode-time (decode-time ...)) work.
 
-Out-of-range values for SEC, MINUTE, HOUR, DAY, or MONTH are allowed;
+Out-of-range values for SECOND, MINUTE, HOUR, DAY, or MONTH are allowed;
 for example, a DAY of 0 means the day preceding the given month.
 Year numbers less than 100 are treated just like other year numbers.
 If you want them to stand for years in this century, you must do that yourself.
@@ -1745,8 +1745,8 @@
 However, see also the functions `decode-time' and `format-time-string'
 which provide a much more powerful and general facility.
 
-If an argument is given, it specifies a time to format
-instead of the current time.  The argument should have the form:
+If SPECIFIED-TIME is given, it is a time to format instead
+of the current time.  The argument should have the form:
   (HIGH . LOW)
 or the form:
   (HIGH LOW . IGNORED).
@@ -1801,7 +1801,7 @@
 OFFSET is an integer number of seconds ahead of UTC (east of Greenwich).
     A negative value means west of Greenwich.
 NAME is a string giving the name of the time zone.
-If an argument is given, it specifies when the time zone offset is determined
+If SPECIFIED-TIME is given, the time zone offset is determined from it
 instead of using the current time.  The argument should have the form:
   (HIGH . LOW)
 or the form:
@@ -2349,8 +2349,8 @@
        1, 3, 0,
        doc: /* Insert before point a substring of the contents of BUFFER.
 BUFFER may be a buffer or a buffer name.
-Arguments START and END are character numbers specifying the substring.
-They default to the beginning and the end of BUFFER.  */)
+Arguments START and END are character positions specifying the substring.
+They default to the values of (point-min) and (point-max) in BUFFER.  */)
      (buffer, start, end)
      Lisp_Object buffer, start, end;
 {
@@ -2827,6 +2827,7 @@
 
 DEFUN ("delete-region", Fdelete_region, Sdelete_region, 2, 2, "r",
        doc: /* Delete the text between point and mark.
+
 When called from a program, expects two arguments,
 positions (integers or markers) specifying the stretch to be deleted.  */)
      (start, end)
@@ -3875,11 +3876,11 @@
 }
 
 DEFUN ("transpose-regions", Ftranspose_regions, Stranspose_regions, 4, 5, 0,
-       doc: /* Transpose region START1 to END1 with START2 to END2.
+       doc: /* Transpose region STARTR1 to ENDR1 with STARTR2 to ENDR2.
 The regions may not be overlapping, because the size of the buffer is
 never changed in a transposition.
 
-Optional fifth arg LEAVE_MARKERS, if non-nil, means don't update
+Optional fifth arg LEAVE-MARKERS, if non-nil, means don't update
 any markers that happen to be located in the regions.
 
 Transposing beyond buffer boundaries is an error.  */)
--- a/src/xfaces.c	Tue Jun 08 01:33:48 2004 +0000
+++ b/src/xfaces.c	Thu Jun 10 17:17:08 2004 +0000
@@ -3172,8 +3172,8 @@
 
 /* If a face merging cycle is detected for FACE_NAME, return 0,
    otherwise add NEW_NAMED_MERGE_POINT, which is initialized using
-   FACE_NAME, as the head of the linked list
-   pointed to by NAMED_MERGE_POINTS, and return 1.  */
+   FACE_NAME, as the head of the linked list pointed to by
+   NAMED_MERGE_POINTS, and return 1.  */
 
 static INLINE int
 push_named_merge_point (struct named_merge_point *new_named_merge_point,
@@ -3184,7 +3184,7 @@
 
   for (prev = *named_merge_points; prev; prev = prev->prev)
     if (EQ (face_name, prev->face_name))
-	break;
+      return 0;
 
   new_named_merge_point->face_name = face_name;
   new_named_merge_point->prev = *named_merge_points;