changeset 90399:a5812696f7bf unicode-pre-font-backend

Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 274-284) - Update from CVS - Update etc/MORE.STUFF. - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 101) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-62
author Miles Bader <miles@gnu.org>
date Wed, 17 May 2006 07:46:49 +0000
parents 1f8d5cd37cf0 (current diff) 2006f23b693c (diff)
children 80fff33f74f5
files admin/ChangeLog admin/FOR-RELEASE etc/ChangeLog etc/MORE.STUFF etc/NEWS etc/sk-refcard.tex lib-src/ChangeLog lib-src/makefile.w32-in lisp/ChangeLog lisp/allout.el lisp/arc-mode.el lisp/calendar/appt.el lisp/calendar/cal-menu.el lisp/calendar/calendar.el lisp/calendar/diary-lib.el lisp/comint.el lisp/custom.el lisp/desktop.el lisp/dired-x.el lisp/emacs-lisp/bytecomp.el lisp/emacs-lisp/ewoc.el lisp/files.el lisp/help-fns.el lisp/hexl.el lisp/international/mule.el lisp/newcomment.el lisp/outline.el lisp/progmodes/cc-compat.el lisp/progmodes/cc-vars.el lisp/progmodes/compile.el lisp/progmodes/gdb-ui.el lisp/progmodes/gud.el lisp/server.el lisp/simple.el lisp/subr.el lisp/term/xterm.el lisp/textmodes/org.el lispintro/emacs-lisp-intro.texi lispref/ChangeLog lispref/buffers.texi lispref/display.texi lispref/files.texi lispref/hooks.texi lispref/internals.texi lispref/minibuf.texi lispref/nonascii.texi lispref/os.texi lispref/processes.texi lispref/text.texi man/ChangeLog man/buffers.texi man/building.texi man/calendar.texi man/files.texi man/gnus.texi man/message.texi man/mule.texi src/ChangeLog src/Makefile.in src/editfns.c src/fileio.c src/frame.c src/intervals.c src/lread.c src/textprop.c src/xdisp.c src/xterm.c
diffstat 71 files changed, 1451 insertions(+), 795 deletions(-) [+]
line wrap: on
line diff
--- a/admin/ChangeLog	Mon May 15 03:48:50 2006 +0000
+++ b/admin/ChangeLog	Wed May 17 07:46:49 2006 +0000
@@ -1,3 +1,8 @@
+2006-05-12  Eli Zaretskii  <eliz@gnu.org>
+
+	* FOR-RELEASE: Spell-checking the manuals is now done; remove the
+	entry.
+
 2006-05-06  Bill Wohler  <wohler@newt.com>
 
 	* FOR-RELEASE: MH-E 8.0 has been released, so removed reminder
--- a/admin/FOR-RELEASE	Mon May 15 03:48:50 2006 +0000
+++ b/admin/FOR-RELEASE	Wed May 17 07:46:49 2006 +0000
@@ -7,8 +7,6 @@
 
 ** Update release dates of manuals.
 
-** Spell check the manuals.
-
 ** Get rid of overfull and underfull boxes in manuals.
 
 ** Check for widow and orphan lines in manuals;
@@ -28,6 +26,9 @@
 
 * BUGS
 
+** We need a way a Lisp file encoded in iso-2022 can assure
+reliable decoding regardless of user options.
+
 ** JD Smith's 17 Apr 2006 bug report that CVS operations
 get mysterious unreproducible failures.
 
--- a/etc/ChangeLog	Mon May 15 03:48:50 2006 +0000
+++ b/etc/ChangeLog	Wed May 17 07:46:49 2006 +0000
@@ -1,3 +1,21 @@
+2006-05-15  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* sk-refcard.tex: Add coding cookie.
+
+2006-05-15  Michael Olson  <mwolson@gnu.org>
+
+	* MORE.STUFF: Update URL for Planner Mode and add description.
+	Canonicalize URLs for Emacs Muse and Emacs Wiki Mode.
+
+2006-05-12  Romain Francoise  <romain@orebokech.com>
+
+	* MORE.STUFF: ERC is now part of Emacs.
+	Add Emacs Muse.
+
+2006-05-12  Ken Manheimer  <ken.manheimer@gmail.com>
+
+	* NEWS (allout): Update.
+
 2006-05-06  Bill Wohler  <wohler@newt.com>
 
 	Release MH-E version 8.0.
--- a/etc/MORE.STUFF	Mon May 15 03:48:50 2006 +0000
+++ b/etc/MORE.STUFF	Wed May 17 07:46:49 2006 +0000
@@ -54,6 +54,9 @@
  * Eldoc and Rlogin:
    <URL:http://www.splode.com/~friedman/software/emacs-lisp/>
 
+ * ERC: IRC client:
+   <URL:http://www.emacswiki.org/cgi-bin/wiki?EmacsIRCClient>
+
  * EShell: <URL:http://www.newartisans.com/johnw/emacs.html>
 
  * Etags: <URL:ftp://pot.potorti.it/pub/software/unix/etags.tar.gz>
@@ -155,6 +158,9 @@
  * EMacro: <URL:http://emacro.sourceforge.net/>
    EMacro is a portable configuration file that configures itself.
 
+ * Emacs Muse: <URL:http://www.mwolson.org/projects/EmacsMuse.html>
+   An authoring and publishing environment for Emacs.
+
  * Emacs speaks statistics (ESS): statistical programming within Emacs
    <URL:http://ess.r-project.org>
 
@@ -165,12 +171,9 @@
    A simple Emacs interface to w3m, which is a text-mode
    WWW browser
 
- * Emacs Wiki Mode: <URL:http://mwolson.org/projects/EmacsWiki.html>
+ * Emacs Wiki Mode: <URL:http://www.mwolson.org/projects/EmacsWiki.html>
    A wiki-like publishing tool and personal information manager
 
- * ERC: IRC client:
-   <URL:http://www.emacswiki.org/cgi-bin/wiki?EmacsIRCClient>
-
  * Gnuserv:
    <URL:http://www.hpl.hp.com/personal/ange/gnuserv/home.html>
    Enhanced emacsclient/emacsserver.  Also available from this Web
@@ -210,8 +213,8 @@
    nXML mode is an addon for GNU Emacs, which makes GNU Emacs into a
    powerful XML editor.
 
- * Planner Mode:
-   <URL:http://sacha.free.net.ph/notebook/wiki/PlannerMode.php>
+ * Planner Mode: <URL:http://www.plannerlove.com/>
+   Planner is an organizer and day planner for Emacs.
 
  * Preview LaTeX: embed preview LaTeX images in source buffer.
    <URL:http://preview-latex.sourceforge.net/>
--- a/etc/NEWS	Mon May 15 03:48:50 2006 +0000
+++ b/etc/NEWS	Wed May 17 07:46:49 2006 +0000
@@ -2009,13 +2009,17 @@
 pending topics on save, and more, make it easy to use encryption in
 powerful ways.
 
+*** `allout-view-change-hook' marked as being deprecated - use
+`allout-exposure-change-hook' instead.  Both are currently being used, but
+`allout-view-change-hook' will be ignored in a subsequent allout version.
+
 *** Default command prefix changed to "\C-c " (control-c space), to avoid
 intruding on user's keybinding space.  Customize the
 `allout-command-prefix' variable to your preference.
 
 *** Allout now uses text overlay's `invisible' property (and others) for
 concealed text, instead of selective-display.  This simplifies the code, in
-particularly avoiding the need for kludges for isearch dynamic-display,
+particular avoiding the need for kludges for isearch dynamic-display,
 discretionary handling of edits of concealed text, undo concerns, etc.
 
 *** Many substantial fixes and refinements, including:
--- a/etc/sk-refcard.tex	Mon May 15 03:48:50 2006 +0000
+++ b/etc/sk-refcard.tex	Wed May 17 07:46:49 2006 +0000
@@ -665,6 +665,7 @@
 
 % Local variables:
 % compile-command: "csplain sk-refcard"
+% coding: iso-latin-2
 % End:
 
 % arch-tag: 9f8eacf2-daf9-4162-bc8d-4af7b269f3d3
--- a/lib-src/ChangeLog	Mon May 15 03:48:50 2006 +0000
+++ b/lib-src/ChangeLog	Wed May 17 07:46:49 2006 +0000
@@ -1,3 +1,7 @@
+2006-05-13  Eli Zaretskii  <eliz@gnu.org>
+
+	* makefile.w32-in (lisp1): Add fringe.elc.
+
 2006-05-02  Francesco Potort,Al(B  <pot@gnu.org>
 
 	* etags.c (Perl_functions): Free space allocated for var package.
--- a/lib-src/makefile.w32-in	Mon May 15 03:48:50 2006 +0000
+++ b/lib-src/makefile.w32-in	Wed May 17 07:46:49 2006 +0000
@@ -192,6 +192,7 @@
 	$(lispsource)international/mule-conf.el \
 	$(lispsource)international/mule-cmds.elc \
 	$(lispsource)international/characters.elc \
+	$(lispsource)fringe.elc \
 	$(lispsource)image.elc \
 	$(lispsource)international/fontset.elc \
 	$(lispsource)dnd.elc \
--- a/lisp/ChangeLog	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/ChangeLog	Wed May 17 07:46:49 2006 +0000
@@ -1,3 +1,204 @@
+2006-05-17  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* emacs-lisp/ewoc.el (ewoc-data): Add docstring.
+	(ewoc-nth): Doc fix.
+
+2006-05-16  Eli Zaretskii  <eliz@gnu.org>
+
+	* international/mule.el (auto-coding-alist): Add .lha to files
+	read with no-conversion.
+
+	* files.el (auto-mode-alist): Add .lha files to archive file
+	extensions.
+
+	* arc-mode.el (archive-arc-summarize, archive-lzh-summarize):
+	Convert csize to integer when computing offsets within the
+	compressed archive file.
+
+2006-05-16  Kim F. Storm  <storm@cua.dk>
+
+	* subr.el (add-to-history): Add KEEP-ALL arg and align functionality
+	with read-from-minibuffer.
+
+2006-05-16  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* emacs-lisp/bytecomp.el (byte-compile-warnings-safe-p): New function.
+	(byte-compile-warnings): Fix safe-local-variable property.
+
+2006-05-16  Ken Manheimer  <ken.manheimer@gmail.com>
+
+	* allout.el (allout-show-bodies, allout-old-style-prefixes)
+	(allout-stylish-prefixes, allout-numbered-bullet)
+	(allout-file-xref-bullet, allout-use-hanging-indents): Use simple
+	predicates to qualify `safe-local-variable' property, when
+	available, else use equivalent lambda.
+	(allout-current-topic-collapsed-p): Do the right thing regarding
+	trailing blank lines.
+
+2006-05-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* server.el (server-start): Only create a directory if needed.
+	(server-edit, server-unload-hook): server-start => server-mode.
+	(kill-emacs-hook): Cleanup upon exit.
+
+2006-05-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* hexl.el (hexlify-buffer): Encode process arguments manually.
+
+2006-05-16  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gud.el (gud-tooltip-tips): Add missing argument to
+	call to gdb-tooltip-print.
+
+2006-05-15  Romain Francoise  <romain@orebokech.com>
+
+	* dired-x.el (dired-guess-shell-gnutar): On GNU and GNU/Linux
+	systems, default to "tar" since those systems probably have GNU tar.
+
+2006-05-14  Lars Hansen  <larsh@soem.dk>
+
+	* desktop.el (desktop-missing-file-warning): Fix docstring.
+	(desktop-restore-file-buffer): Correct question asked on missing file.
+
+2006-05-14  Kim F. Storm  <storm@cua.dk>
+
+	* progmodes/cc-subword.el (c-forward-subword, c-backward-subword):
+	Add CUA move property.
+
+2006-05-13  Chong Yidong  <cyd@stupidchicken.com>
+
+	* custom.el (custom-push-theme): Load the variable before checking
+	its `standard-value'.
+
+2006-05-13  Lars Hansen  <larsh@soem.dk>
+
+	* desktop.el (desktop-save): Use with-temp-buffer.
+
+2006-05-12  Glenn Morris  <rgm@gnu.org>
+
+	* calendar/cal-menu.el (calendar-mode-map, calendar-mouse-3-map):
+	* calendar/calendar.el (calendar-mode-map):
+	* calendar/diary-lib.el (include-other-diary-files,diary-mail-entries):
+	* calendar/appt.el (appt-check, appt-make-list): Refer to
+	diary-view-entries, diary-list-entries, diary-show-all-entries
+	rather than obsolete aliases.
+
+2006-05-12  Chong Yidong  <cyd@stupidchicken.com>
+
+	* simple.el (line-move-finish): Avoid calling point motion hooks
+	while processing intangibility.
+
+2006-05-12  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* term/xterm.el (terminal-init-xterm): Fix typo.
+
+2006-05-12  Ken Manheimer  <ken.manheimer@gmail.com>
+
+	* allout.el: (allout-view-change-hook): Mark as being deprecated,
+	to be replaced by `allout-exposure-change-hook'.
+	(allout-exposure-change-hook): New, replacing
+	`allout-view-change-hook'.
+	(allout-flag-region): Run new hook `allout-exposure-change-hook',
+	in addition to `allout-view-change-hook'.
+	(allout-show-bodies, allout-old-style-prefixes)
+	(allout-stylish-prefixes, allout-use-hanging-indents): Quote the
+	lambda forms to prevent their showing up in variable help
+	presentations as inscrutable byte-compiled code.
+	(allout-numbered-bullet, allout-file-xref-bullet, allout-layout):
+	Use string-or-null-p to qualify safe-local-variable values.
+	(allout-reindent-bodies): Use memq to qualify matches against
+	valid safe-local-variable values.  Also, quote the lambda as above.
+	(allout-use-mode-specific-leader): Add missing candidate-value
+	symbols, use memq, and quote the lambda.
+	(allout-overlay-interior-modification-handler): Remove unused
+	variables `msg' and 'opened'.
+	(allout-hidden-p): Constrain invisibility consideration to allout's
+	invisibility spec, disregarding invisibility for other reasons.
+
+2006-05-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* files.el (version-control): Correct safe values.
+
+2006-05-12  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* emacs-lisp/ewoc.el (ewoc-refresh): Compute PP once before looping.
+
+	(ewoc--node-enter-before, ewoc--create-node): Delete funcs.
+	(ewoc--insert-new-node): New func.
+	Update callers of deleted funcs to use it, instead.
+
+2006-05-11  Glenn Morris  <rgm@gnu.org>
+
+	* calendar/calendar.el (diary-show-all-entries): Do not refer to
+	obsolete alias `show-all-diary-entries'.
+	(make-diary-entry): Not interactive.
+	(cal-tex-cursor-month, cal-tex-cursor-month-landscape)
+	(cal-tex-cursor-day, cal-tex-cursor-week, cal-tex-cursor-week2)
+	(cal-tex-cursor-week-iso, cal-tex-cursor-week-monday)
+	(cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
+	(cal-tex-cursor-year-landscape, cal-tex-cursor-filofax-year)
+	(cal-tex-cursor-filofax-daily, cal-tex-cursor-year): Interactive.
+
+2006-05-11  Johan Bockg,Ae(Brd  <bojohan@dd.chalmers.se>
+
+	* calendar/calendar.el (calendar-french-date-string)
+	(calendar-mayan-date-string, calendar-chinese-date-string)
+	(calendar-astro-date-string, calendar-iso-date-string)
+	(calendar-islamic-date-string, calendar-bahai-date-string)
+	(calendar-hebrew-date-string, calendar-coptic-date-string)
+	(calendar-ethiopic-date-string, calendar-persian-date-string):
+	These functions are not interactive.
+
+2006-05-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* files.el: Balance parentheses.
+
+2006-05-11  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* files.el, newcomment.el, outline.el, simple.el,
+	emacs-lisp/bytecomp.el, progmodes/cc-compat.el,
+	progmodes/cc-vars.el, progmodes/compile.el:
+	Move `safe-local-variable' declarations to the respective files.
+
+	* help-fns.el (describe-variable): Don't print safe-var if it is
+	byte-code.  Improve wording as suggested by Luc Teirlinck
+	<teirllm@auburn.edu>.
+
+2006-05-11  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gdb-ui.el (gdb-reset): Update speedbar if necessary.
+	(gdb-var-evaluate-expression-handler, gdb-var-update-handler):
+	Use a token for pending-triggers to ensure gdb-var-update
+	gets called once per user input again for pre-GDB 6.4.
+	(gdb-var-delete): Match on more complex expressions.
+	(gdb-var-list-children-handler, gdb-var-create-handler):
+	Use a token for consistency.
+
+2006-05-11  Carsten Dominik  <dominik@science.uva.nl>
+
+	* textmodes/org.el (org-read-date, org-goto-calendar)
+	(org-agenda-goto-calendar):
+	Bind `view-calendar-holidays-initially' to nil.
+
+2006-05-11  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* emacs-lisp/ewoc.el (ewoc--refresh-node): No longer save-excursion.
+	Update all callers to do it there, instead.
+
+2006-05-10  Glenn Morris  <rgm@gnu.org>
+
+	* calendar/calendar.el (calendar-basic-setup): Set day to 1 in
+	prefix arg case, to avoid view-diary-entries-initially error.
+	Reported by Stephen Berman <Stephen.Berman at gmx.net>.
+	(calendar-date-is-legal-p): Handle dates with no day part.
+
+2006-05-11  Nick Roberts  <nickrob@snap.net.nz>
+
+	* comint.el (comint-insert-input): Just make it when
+	comint-use-prompt regexp is nil (default) and with the mouse.
+	(comint-copy-old-input): Reinstate from 2004-06-23.
+	(comint-mode-map): Bind C-c C-m to it.
+
 2006-05-10  J.D. Smith  <jdsmith@as.arizona.edu>
 
 	* progmodes/idlw-shell.el (idlwave-shell-move-or-history):
@@ -6,7 +207,7 @@
 	* progmodes/idlwave.el (idlwave-push-mark): Removed obsolete
 	compatibility function (Emacs 18/19).
 	(idlwave-is-continuation-line): Always return point at start of
-	previous non-blank continuation line.  
+	previous non-blank continuation line.
 	`keyword-parameters': Fix continued comment font-lock matcher.
 	(idlwave-font-lock-fontify-region): Written, use as
 	font-lock-fontify-region-function, to fix continued keyword
--- a/lisp/allout.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/allout.el	Wed May 17 07:46:49 2006 +0000
@@ -199,7 +199,7 @@
 (make-variable-buffer-local 'allout-show-bodies)
 ;;;###autoload
 (put 'allout-show-bodies 'safe-local-variable
-     (lambda (x) (member x '(t nil))))
+     (if (fboundp 'booleanp) 'booleanp '(lambda (x) (member x '(t nil)))))
 
 ;;;_  = allout-header-prefix
 (defcustom allout-header-prefix "."
@@ -316,7 +316,8 @@
   :group 'allout)
 ;;;###autoload
 (put 'allout-use-mode-specific-leader 'safe-local-variable
-     (lambda (x) (or (member x '(t nil)) (stringp x))))
+     '(lambda (x) (or (memq x '(t nil allout-mode-leaders comment-start))
+                      (stringp x))))
 ;;;_  = allout-mode-leaders
 (defvar allout-mode-leaders '()
   "Specific allout-prefix leading strings per major modes.
@@ -344,7 +345,7 @@
 (make-variable-buffer-local 'allout-old-style-prefixes)
 ;;;###autoload
 (put 'allout-old-style-prefixes 'safe-local-variable
-     (lambda (x) (member x '(t nil))))
+     (if (fboundp 'booleanp) 'booleanp '(lambda (x) (member x '(t nil)))))
 ;;;_  = allout-stylish-prefixes - alternating bullets
 (defcustom allout-stylish-prefixes t
   "*Do fancy stuff with topic prefix bullets according to level, etc.
@@ -393,7 +394,7 @@
 (make-variable-buffer-local 'allout-stylish-prefixes)
 ;;;###autoload
 (put 'allout-stylish-prefixes 'safe-local-variable
-     (lambda (x) (member x '(t nil))))
+     (if (fboundp 'booleanp) 'booleanp '(lambda (x) (member x '(t nil)))))
 
 ;;;_  = allout-numbered-bullet
 (defcustom allout-numbered-bullet "#"
@@ -408,7 +409,9 @@
 (make-variable-buffer-local 'allout-numbered-bullet)
 ;;;###autoload
 (put 'allout-numbered-bullet 'safe-local-variable
-     (lambda (x) (or (not x) (stringp x))))
+     (if (fboundp 'string-or-null-p)
+         'string-or-null-p
+       '(lambda (x) (or (stringp x) (null x)))))
 ;;;_  = allout-file-xref-bullet
 (defcustom allout-file-xref-bullet "@"
   "*Bullet signifying file cross-references, for `allout-resolve-xref'.
@@ -418,7 +421,9 @@
   :group 'allout)
 ;;;###autoload
 (put 'allout-file-xref-bullet 'safe-local-variable
-     (lambda (x) (or (not x) (stringp x))))
+     (if (fboundp 'string-or-null-p)
+         'string-or-null-p
+       '(lambda (x) (or (stringp x) (null x)))))
 ;;;_  = allout-presentation-padding
 (defcustom allout-presentation-padding 2
   "*Presentation-format white-space padding factor, for greater indent."
@@ -621,7 +626,7 @@
 (make-variable-buffer-local 'allout-use-hanging-indents)
 ;;;###autoload
 (put 'allout-use-hanging-indents 'safe-local-variable
-     (lambda (x) (member x '(t nil))))
+     (if (fboundp 'booleanp) 'booleanp '(lambda (x) (member x '(t nil)))))
 
 ;;;_  = allout-reindent-bodies
 (defcustom allout-reindent-bodies (if allout-use-hanging-indents
@@ -641,7 +646,7 @@
 (make-variable-buffer-local 'allout-reindent-bodies)
 ;;;###autoload
 (put 'allout-reindent-bodies 'safe-local-variable
-     (lambda (x) (member x '(nil t text force))))
+     '(lambda (x) (memq x '(nil t text force))))
 
 ;;;_  = allout-enable-file-variable-adjustment
 (defcustom allout-enable-file-variable-adjustment t
@@ -708,8 +713,7 @@
 (make-variable-buffer-local 'allout-layout)
 ;;;###autoload
 (put 'allout-layout 'safe-local-variable
-     (lambda (x) (or (numberp x) (listp x) (integerp x)
-                     (member x '(: * + -)))))
+     '(lambda (x) (or (numberp x) (listp x) (memq x '(: * + -)))))
 
 ;;;_  : Topic header format
 ;;;_   = allout-regexp
@@ -1064,9 +1068,19 @@
 ;;;_   = allout-overlay-category
 (defvar allout-overlay-category nil
   "Symbol for use in allout invisible-text overlays as the category.")
-;;;_   = allout-view-change-hook
+;;;_   x allout-view-change-hook
 (defvar allout-view-change-hook nil
-  "*Hook that's run after allout outline visibility changes.")
+  "*\(Deprecated\)  Hook that's run after allout outline exposure changes.
+
+Switch to using `allout-exposure-change-hook' instead.  Both
+variables are currently respected, but this one will be ignored
+in a subsequent allout version.")
+;;;_   = allout-exposure-change-hook
+(defvar allout-exposure-change-hook nil
+  "*Hook that's run after allout outline exposure changes.
+
+This variable will replace `allout-view-change-hook' in a subsequent allout
+version, though both are currently respected.")
 
 ;;;_   = allout-outside-normal-auto-fill-function
 (defvar allout-outside-normal-auto-fill-function nil
@@ -1727,7 +1741,7 @@
 ;;;_   > allout-hidden-p (&optional pos)
 (defsubst allout-hidden-p (&optional pos)
   "Non-nil if the character after point is invisible."
-  (get-char-property (or pos (point)) 'invisible))
+  (eq (get-char-property (or pos (point)) 'invisible) 'allout))
 
 ;;;_  > allout-overlay-insert-in-front-handler (ol after beg end
 ;;;                                                &optional prelen)
@@ -1753,8 +1767,6 @@
     (let ((start (point))
           (ol-start (overlay-start ol))
           (ol-end (overlay-end ol))
-          (msg "Change within concealed text disallowed.")
-          opened
           first)
       (goto-char beg)
       (while (< (point) end)
@@ -1764,7 +1776,6 @@
               (save-excursion (forward-char 1)
                               (allout-show-to-offshoot)))
           (when (not first)
-            (setq opened t)
             (setq first (point))))
         (goto-char (if (featurep 'xemacs)
                        (next-property-change (1+ (point)) nil end)
@@ -3831,7 +3842,8 @@
         (let ((props (symbol-plist 'allout-overlay-category)))
           (while props
             (overlay-put o (pop props) (pop props)))))))
-  (run-hooks 'allout-view-change-hook))
+  (run-hooks 'allout-view-change-hook)
+  (run-hooks 'allout-exposure-change-hook))
 ;;;_   > allout-flag-current-subtree (flag)
 (defun allout-flag-current-subtree (flag)
   "Conceal currently-visible topic's subtree if FLAG non-nil, else reveal it."
@@ -3999,17 +4011,18 @@
 (defun allout-current-topic-collapsed-p (&optional include-single-liners)
   "True if the currently visible containing topic is already collapsed.
 
-If optional INCLUDE-SINGLE-LINERS is true, then include single-line
-topics \(which intrinsically can be considered both collapsed and
-not\), as collapsed.  Otherwise they are considered uncollapsed."
+Single line topics intrinsically can be considered as being both
+collapsed and uncollapsed.  If optional INCLUDE-SINGLE-LINERS is
+true, then single-line topics are considered to be collapsed.  By
+default, they are treated as being uncollapsed."
   (save-excursion
-      (and
-       (= (progn (allout-back-to-current-heading)
-                 (move-end-of-line 1)
-                 (point))
-          (allout-end-of-current-subtree))
-       (or include-single-liners
-           (progn (backward-char 1) (allout-hidden-p))))))
+    (and
+     (= (progn (allout-back-to-current-heading)
+               (move-end-of-line 1)
+               (point))
+        (allout-end-of-current-subtree (not (looking-at "\n\n"))))
+     (or include-single-liners
+         (progn (backward-char 1) (allout-hidden-p))))))
 ;;;_   > allout-hide-current-subtree (&optional just-close)
 (defun allout-hide-current-subtree (&optional just-close)
   "Close the current topic, or containing topic if this one is already closed.
@@ -5888,7 +5901,6 @@
           (or (memq prop buffer-invisibility-spec)
               (assq prop buffer-invisibility-spec))))))
 
-
 ;;;_ #10 Unfinished
 ;;;_  > allout-bullet-isearch (&optional bullet)
 (defun allout-bullet-isearch (&optional bullet)
--- a/lisp/arc-mode.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/arc-mode.el	Wed May 17 07:46:49 2006 +0000
@@ -1379,7 +1379,11 @@
 			   visual)
 	      files (cons (vector efnname ifnname fiddle nil (1- p))
                           files)
-              p (+ p 29 csize))))
+	      ;; p needs to stay an integer, since we use it in char-after
+	      ;; above.  Passing through `round' limits the compressed size
+	      ;; to most-positive-fixnum, but if the compressed size exceeds
+	      ;; that, we cannot visit the archive anyway.
+              p (+ p 29 (round csize)))))
     (goto-char (point-min))
     (let ((dash (concat "- --------  -----------  --------  "
 			(make-string maxlen ?-)
@@ -1519,9 +1523,13 @@
 	      files (cons (vector prname ifnname fiddle mode (1- p))
                           files))
 	(cond ((= hdrlvl 1)
-	       (setq p (+ p hsize 2 csize)))
+	       ;; p needs to stay an integer, since we use it in goto-char
+	       ;; above.  Passing through `round' limits the compressed size
+	       ;; to most-positive-fixnum, but if the compressed size exceeds
+	       ;; that, we cannot visit the archive anyway.
+	       (setq p (+ p hsize 2 (round csize))))
 	      ((or (= hdrlvl 2) (= hdrlvl 0))
-	       (setq p (+ p thsize 2 csize))))
+	       (setq p (+ p thsize 2 (round csize)))))
 	))
     (goto-char (point-min))
     (let ((dash (concat (if archive-alternate-display
--- a/lisp/calendar/appt.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/calendar/appt.el	Wed May 17 07:46:49 2006 +0000
@@ -353,7 +353,7 @@
                       ;; restore its display state. Otherwise, kill it.
                       (if d-buff
                           ;; Displays the diary buffer.
-                          (or selective (show-all-diary-entries))
+                          (or selective (diary-show-all-entries))
                         (and
                          (setq d-buff (find-buffer-visiting
                                        (substitute-in-file-name diary-file)))
@@ -536,7 +536,7 @@
 The time must be at the beginning of a line for it to be
 put in the appointments list (see examples in documentation of
 the function `appt-check').  We assume that the variables DATE and
-NUMBER hold the arguments that `list-diary-entries' received.
+NUMBER hold the arguments that `diary-list-entries' received.
 They specify the range of dates that the diary is being processed for.
 
 Any appointments made with `appt-add' are not affected by this
--- a/lisp/calendar/cal-menu.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/calendar/cal-menu.el	Wed May 17 07:46:49 2006 +0000
@@ -85,7 +85,7 @@
 (define-key calendar-mode-map [menu-bar diary ent]
   '("Insert Diary Entry" . insert-diary-entry))
 (define-key calendar-mode-map [menu-bar diary all]
-  '("Show All" . show-all-diary-entries))
+  '("Show All" . diary-show-all-entries))
 (define-key calendar-mode-map [menu-bar diary mark]
  '("Mark All" . mark-diary-entries))
 (define-key calendar-mode-map [menu-bar diary view]
@@ -616,7 +616,7 @@
 (define-key calendar-mouse-3-map [exit-calendar]
   '("Exit calendar" . exit-calendar))
 (define-key calendar-mouse-3-map [show-diary]
-  '("Show diary" . show-all-diary-entries))
+  '("Show diary" . diary-show-all-entries))
 (define-key calendar-mouse-3-map [lunar-phases]
   '("Lunar phases" . calendar-phases-of-moon))
 (define-key calendar-mouse-3-map [unmark]
--- a/lisp/calendar/calendar.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/calendar/calendar.el	Wed May 17 07:46:49 2006 +0000
@@ -1374,6 +1374,7 @@
   "Extract the month part of DATE which has the form (month day year)."
   (car date))
 
+;; Note gives wrong answer for result of (calendar-read-date 'noday).
 (defsubst extract-calendar-day (date)
   "Extract the day part of DATE which has the form (month day year)."
   (car (cdr date)))
@@ -1639,6 +1640,9 @@
                  (calendar-current-date)))
          (month (extract-calendar-month date))
          (year (extract-calendar-year date)))
+    ;; (calendar-read-date t) returns a date with day = nil, which is
+    ;; not a legal date for the visible test in the diary section.
+    (if arg (setcar (cdr date) 1))
     (pop-to-buffer calendar-buffer)
     (increment-calendar-month month year (- calendar-offset))
     (generate-calendar-window month year)
@@ -1682,12 +1686,10 @@
   t)
 
 (autoload 'calendar-french-date-string "cal-french"
-  "String of French Revolutionary date of Gregorian date."
-  t)
+  "String of French Revolutionary date of Gregorian date.")
 
 (autoload 'calendar-mayan-date-string "cal-mayan"
-  "String of Mayan date of Gregorian date."
-  t)
+  "String of Mayan date of Gregorian date.")
 
 (autoload 'calendar-print-mayan-date "cal-mayan"
   "Show the Mayan long count, Tzolkin, and Haab equivalents of the date under the cursor."
@@ -1730,8 +1732,7 @@
  t)
 
 (autoload 'calendar-chinese-date-string "cal-china"
-  "String of Chinese date of Gregorian date."
-  t)
+  "String of Chinese date of Gregorian date.")
 
 (autoload 'calendar-absolute-from-astro  "cal-julian"
   "Absolute date of astronomical (Julian) day number D."
@@ -1741,8 +1742,7 @@
   "Astronomical (Julian) day number of absolute date D.")
 
 (autoload 'calendar-astro-date-string "cal-julian"
-  "String of astronomical (Julian) day number of Gregorian date."
-  t)
+  "String of astronomical (Julian) day number of Gregorian date.")
 
 (autoload 'calendar-goto-astro-day-number "cal-julian"
    "Move cursor to astronomical (Julian) day number."
@@ -1783,8 +1783,7 @@
   t)
 
 (autoload 'calendar-iso-date-string "cal-iso"
-  "String of ISO date of Gregorian date."
-  t)
+  "String of ISO date of Gregorian date.")
 
 (autoload 'calendar-goto-islamic-date "cal-islam"
   "Move cursor to Islamic date."
@@ -1795,16 +1794,14 @@
   t)
 
 (autoload 'calendar-islamic-date-string "cal-islam"
-  "String of Islamic date of Gregorian date."
-  t)
+  "String of Islamic date of Gregorian date.")
 
 (autoload 'calendar-print-bahai-date "cal-bahai"
   "Show the Baha'i date equivalents of date."
   t)
 
 (autoload 'calendar-bahai-date-string "cal-bahai"
-  "String of Baha'i date of Gregorian date."
-  t)
+  "String of Baha'i date of Gregorian date.")
 
 (autoload 'calendar-goto-hebrew-date "cal-hebrew"
   "Move cursor to Hebrew date."
@@ -1815,8 +1812,7 @@
   t)
 
 (autoload 'calendar-hebrew-date-string "cal-hebrew"
-  "String of Hebrew date of Gregorian date."
-  t)
+  "String of Hebrew date of Gregorian date.")
 
 (autoload 'calendar-goto-coptic-date "cal-coptic"
    "Move cursor to Coptic date."
@@ -1827,8 +1823,7 @@
  t)
 
 (autoload 'calendar-coptic-date-string "cal-coptic"
-  "String of Coptic date of Gregorian date."
-  t)
+  "String of Coptic date of Gregorian date.")
 
 (autoload 'calendar-goto-ethiopic-date "cal-coptic"
    "Move cursor to Ethiopic date."
@@ -1839,8 +1834,7 @@
  t)
 
 (autoload 'calendar-ethiopic-date-string "cal-coptic"
-  "String of Ethiopic date of Gregorian date."
-  t)
+  "String of Ethiopic date of Gregorian date.")
 
 (autoload 'calendar-goto-persian-date "cal-persia"
    "Move cursor to Persian date."
@@ -1851,10 +1845,9 @@
  t)
 
 (autoload 'calendar-persian-date-string "cal-persia"
-  "String of Persian date of Gregorian date."
-  t)
-
-(autoload 'show-all-diary-entries "diary-lib"
+  "String of Persian date of Gregorian date.")
+
+(autoload 'diary-show-all-entries "diary-lib"
   "Show all of the diary entries in the diary file.
 This function gets rid of the selective display of the diary file so that
 all entries, not just some, are visible.  If there is no diary buffer, one
@@ -1867,8 +1860,7 @@
   t)
 
 (autoload 'make-diary-entry "diary-lib"
-  "Insert a diary entry STRING which may be NONMARKING in FILE."
-  t)
+  "Insert a diary entry STRING which may be NONMARKING in FILE.")
 
 (autoload 'insert-diary-entry "diary-lib"
   "Insert a diary entry for the date indicated by point."
@@ -1953,69 +1945,69 @@
 (autoload 'cal-tex-cursor-month "cal-tex"
   "Make a buffer with LaTeX commands for the month cursor is on.
 Optional prefix argument specifies number of months to be produced.
-Calendar is condensed onto one page.")
+Calendar is condensed onto one page." t)
 
 (autoload 'cal-tex-cursor-month-landscape "cal-tex"
   "Make a buffer with LaTeX commands for the month cursor is on.
-Optional prefix argument specifies number of months to be produced.")
+Optional prefix argument specifies number of months to be produced." t)
 
 (autoload 'cal-tex-cursor-day "cal-tex"
-  "Make a buffer with LaTeX commands for the day cursor is on.")
+  "Make a buffer with LaTeX commands for the day cursor is on." t)
 
 (autoload 'cal-tex-cursor-week "cal-tex"
   "Make a buffer with LaTeX commands for a two-page one-week calendar.
 It applies to the week that point is in.
 Optional prefix argument specifies number of weeks.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
 
 (autoload 'cal-tex-cursor-week2 "cal-tex"
   "Make a buffer with LaTeX commands for a two-page one-week calendar.
 It applies to the week that point is in.
 Optional prefix argument specifies number of weeks.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
 
 (autoload 'cal-tex-cursor-week-iso "cal-tex"
   "Make a buffer with LaTeX commands for a one page ISO-style weekly calendar.
 Optional prefix argument specifies number of weeks.
 Diary entries are included if `cal-tex-diary' is t.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
 
 (autoload 'cal-tex-cursor-week-monday "cal-tex"
   "Make a buffer with LaTeX commands for a two-page one-week calendar.
 It applies to the week that point is in, and starts on Monday.
 Optional prefix argument specifies number of weeks.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
 
 (autoload 'cal-tex-cursor-filofax-2week "cal-tex"
   "Two-weeks-at-a-glance Filofax style calendar for week indicated by cursor.
 Optional prefix argument specifies number of weeks.
 Diary entries are included if cal-tex-diary is t.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
 
 (autoload 'cal-tex-cursor-filofax-week "cal-tex"
   "One-week-at-a-glance Filofax style calendar for week indicated by cursor.
 Optional prefix argument specifies number of weeks.
 Weeks start on Monday.
 Diary entries are included if cal-tex-diary is t.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
 
 (autoload 'cal-tex-cursor-filofax-daily "cal-tex"
   "Day-per-page Filofax style calendar for week indicated by cursor.
 Optional prefix argument specifies number of weeks.  Weeks start on Monday.
 Diary entries are included if `cal-tex-diary' is t.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
 
 (autoload 'cal-tex-cursor-year "cal-tex"
   "Make a buffer with LaTeX commands for a year's calendar.
-Optional prefix argument specifies number of years.")
+Optional prefix argument specifies number of years." t)
 
 (autoload 'cal-tex-cursor-year-landscape "cal-tex"
   "Make a buffer with LaTeX commands for a year's calendar (landscape).
-Optional prefix argument specifies number of years.")
+Optional prefix argument specifies number of years." t)
 
 (autoload 'cal-tex-cursor-filofax-year "cal-tex"
   "Make a buffer with LaTeX commands for a year's calendar (Filofax).
-Optional prefix argument specifies number of years.")
+Optional prefix argument specifies number of years." t)
 
 (autoload 'mark-calendar-holidays "holidays"
   "Mark notable days in the calendar window."
@@ -2261,7 +2253,7 @@
     (define-key map "m"   'mark-diary-entries)
     (define-key map "d"   'diary-view-entries)
     (define-key map "D"   'view-other-diary-entries)
-    (define-key map "s"   'show-all-diary-entries)
+    (define-key map "s"   'diary-show-all-entries)
     (define-key map "pd"  'calendar-print-day-of-year)
     (define-key map "pC"  'calendar-print-chinese-date)
     (define-key map "pk"  'calendar-print-coptic-date)
@@ -2897,7 +2889,11 @@
         (day (extract-calendar-day date))
         (year (extract-calendar-year date)))
     (and (<= 1 month) (<= month 12)
-         (<= 1 day) (<= day (calendar-last-day-of-month month year))
+         ;; (calendar-read-date t) returns a date with day = nil.
+         ;; Should not be valid (?), since many funcs prob assume integer.
+         ;; (calendar-read-date 'noday) returns (month year), which
+         ;; currently results in extract-calendar-year returning nil.
+         day year (<= 1 day) (<= day (calendar-last-day-of-month month year))
          ;; BC dates left as non-valid, to suppress errors from
          ;; complex holiday algorithms not suitable for years BC.
          ;; Note there are side effects on calendar navigation.
--- a/lisp/calendar/diary-lib.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/calendar/diary-lib.el	Wed May 17 07:46:49 2006 +0000
@@ -517,7 +517,7 @@
               (unwind-protect
                   (setq diary-entries-list
                         (append diary-entries-list
-                                (list-diary-entries original-date number)))
+                                (diary-list-entries original-date number)))
                 (with-current-buffer (find-buffer-visiting diary-file)
                   (diary-unhide-everything)))
             (beep)
@@ -820,7 +820,7 @@
   (if (string-equal diary-mail-addr "")
       (error "You must set `diary-mail-addr' to use this command")
     (let ((diary-display-hook 'fancy-diary-display))
-      (list-diary-entries (calendar-current-date) (or ndays diary-mail-days)))
+      (diary-list-entries (calendar-current-date) (or ndays diary-mail-days)))
     (compose-mail diary-mail-addr
                   (concat "Diary entries generated "
                           (calendar-date-string (calendar-current-date))))
--- a/lisp/comint.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/comint.el	Wed May 17 07:46:49 2006 +0000
@@ -458,7 +458,7 @@
     (define-key map "\C-c\C-c" 	  'comint-interrupt-subjob)
     (define-key map "\C-c\C-z" 	  'comint-stop-subjob)
     (define-key map "\C-c\C-\\"   'comint-quit-subjob)
-    (define-key map "\C-c\C-m" 	  'comint-insert-input)
+    (define-key map "\C-c\C-m" 	  'comint-copy-old-input)
     (define-key map "\C-c\C-o" 	  'comint-delete-output)
     (define-key map "\C-c\C-r" 	  'comint-show-output)
     (define-key map "\C-c\C-e" 	  'comint-show-maximum-output)
@@ -502,7 +502,7 @@
     (define-key map [menu-bar inout kill-input]
       '("Kill Current Input" . comint-kill-input))
     (define-key map [menu-bar inout copy-input]
-      '("Copy Old Input" . comint-insert-input))
+      '("Copy Old Input" . comint-copy-old-input))
     (define-key map [menu-bar inout forward-matching-history]
       '("Forward Matching Input..." . comint-forward-matching-input))
     (define-key map [menu-bar inout backward-matching-history]
@@ -797,36 +797,28 @@
 	(set-process-coding-system proc decoding encoding))
     proc))
 
-(defun comint-insert-input (&optional event)
+(defun comint-insert-input (event)
   "In a Comint buffer, set the current input to the previous input at point."
   ;; This doesn't use "e" because it is supposed to work
   ;; for events without parameters.
-  (interactive (list last-input-event))
-  (when event
-    (posn-set-point (event-end event)))
-  (if comint-use-prompt-regexp
-      (let ((input (funcall comint-get-old-input))
-	    (process (get-buffer-process (current-buffer))))
-	(if (not process)
-	    (error "Current buffer has no process")
-	  (goto-char (process-mark process))
-	  (insert input)))
-    (let ((pos (point)))
-      (if (not (eq (field-at-pos pos) 'input))
-	  ;; No input at POS, fall back to the global definition.
-	  (let* ((keys (this-command-keys))
-		 (last-key (and (vectorp keys) (aref keys (1- (length keys)))))
-		 (fun (and last-key (lookup-key global-map (vector last-key)))))
-	    (and fun (call-interactively fun)))
-	;; There's previous input at POS, insert it at the end of the buffer.
-	(goto-char (point-max))
-	;; First delete any old unsent input at the end
-	(delete-region
-	 (or (marker-position comint-accum-marker)
-	     (process-mark (get-buffer-process (current-buffer))))
-	 (point))
-	;; Insert the input at point
-	(insert (field-string-no-properties pos))))))
+  (interactive "e")
+  (mouse-set-point event)
+  (let ((pos (point)))
+    (if (not (eq (field-at-pos pos) 'input))
+	;; No input at POS, fall back to the global definition.
+	(let* ((keys (this-command-keys))
+	       (last-key (and (vectorp keys) (aref keys (1- (length keys)))))
+	       (fun (and last-key (lookup-key global-map (vector last-key)))))
+	  (and fun (call-interactively fun)))
+      ;; There's previous input at POS, insert it at the end of the buffer.
+      (goto-char (point-max))
+      ;; First delete any old unsent input at the end
+      (delete-region
+       (or (marker-position comint-accum-marker)
+	   (process-mark (get-buffer-process (current-buffer))))
+       (point))
+      ;; Insert the input at point
+      (insert (field-string-no-properties pos)))))
 
 
 ;; Input history processing in a buffer
@@ -1905,6 +1897,17 @@
       (comint-bol)
       (buffer-substring-no-properties (point) (line-end-position)))))
 
+(defun comint-copy-old-input ()
+  "Insert after prompt old input at point as new input to be edited.
+Calls `comint-get-old-input' to get old input."
+  (interactive)
+  (let ((input (funcall comint-get-old-input))
+	(process (get-buffer-process (current-buffer))))
+    (if (not process)
+	(error "Current buffer has no process")
+      (goto-char (process-mark process))
+      (insert input))))
+
 (defun comint-skip-prompt ()
   "Skip past the text matching regexp `comint-prompt-regexp'.
 If this takes us past the end of the current line, don't skip at all."
--- a/lisp/custom.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/custom.el	Wed May 17 07:46:49 2006 +0000
@@ -825,11 +825,15 @@
 	;; theme is later disabled.
 	(if (null old)
 	    (if (and (eq prop 'theme-value)
-		     (boundp symbol)
-		     (or (null (get symbol 'standard-value))
-			 (not (equal (eval (car (get symbol 'standard-value)))
-				     (symbol-value symbol)))))
-		(setq old (list (list 'changed (symbol-value symbol))))
+		     (boundp symbol))
+		(let ((sv (get symbol 'standard-value)))
+		  (when (and (null sv) (custom-variable-p symbol))
+		    (custom-load-symbol symbol)
+		    (setq sv (get symbol 'standard-value)))
+		  (if (or (null sv)
+			  (not (equal (eval (car (get symbol 'standard-value)))
+				      (symbol-value symbol))))
+		      (setq old (list (list 'changed (symbol-value symbol))))))
 	      (if (and (facep symbol)
 		       (not (face-spec-match-p symbol (get symbol 'face-defface-spec))))
 		  (setq old (list (list 'changed (list
--- a/lisp/desktop.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/desktop.el	Wed May 17 07:46:49 2006 +0000
@@ -201,7 +201,7 @@
   :version "22.1")
 
 (defcustom desktop-missing-file-warning nil
-  "*If non-nil then `desktop-read' asks if a non-existent file should be recreated.
+  "If non-nil, offer to recreate the buffer of a deleted file.
 Also pause for a moment to display message about errors signaled in
 `desktop-buffer-mode-handlers'.
 
@@ -763,45 +763,42 @@
                         (setq locals (cdr locals)))
                       ll)))
               (buffer-list)))
-          (eager desktop-restore-eager)
-          (buf (get-buffer-create "*desktop*")))
-      (set-buffer buf)
-      (erase-buffer)
-
-      (insert
-        ";; -*- mode: emacs-lisp; coding: utf-8-emacs; -*-\n"
-        desktop-header
-        ";; Created " (current-time-string) "\n"
-        ";; Desktop file format version " desktop-file-version "\n"
-        ";; Emacs version " emacs-version "\n\n"
-        ";; Global section:\n")
-      (mapc (function desktop-outvar) desktop-globals-to-save)
-      (if (memq 'kill-ring desktop-globals-to-save)
-        (insert
-          "(setq kill-ring-yank-pointer (nthcdr "
-          (int-to-string (- (length kill-ring) (length kill-ring-yank-pointer)))
-          " kill-ring))\n"))
+          (eager desktop-restore-eager))
+      (with-temp-buffer
+	(insert
+	  ";; -*- mode: emacs-lisp; coding: utf-8-emacs; -*-\n"
+	  desktop-header
+	  ";; Created " (current-time-string) "\n"
+	  ";; Desktop file format version " desktop-file-version "\n"
+	  ";; Emacs version " emacs-version "\n\n"
+	  ";; Global section:\n")
+	(mapc (function desktop-outvar) desktop-globals-to-save)
+	(if (memq 'kill-ring desktop-globals-to-save)
+	  (insert
+	    "(setq kill-ring-yank-pointer (nthcdr "
+	    (int-to-string (- (length kill-ring) (length kill-ring-yank-pointer)))
+	    " kill-ring))\n"))
 
-      (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
-      (mapc #'(lambda (l)
-                (when (apply 'desktop-save-buffer-p l)
-                  (insert "("
-                          (if (or (not (integerp eager))
-                                  (unless (zerop eager)
-                                    (setq eager (1- eager))
-                                    t))
-                              "desktop-create-buffer"
-                            "desktop-append-buffer-args")
-                          " "
-                          desktop-file-version)
-                  (mapc #'(lambda (e)
-                            (insert "\n  " (desktop-value-to-string e)))
-                        l)
-                  (insert ")\n\n")))
-            info)
-      (setq default-directory dirname)
-      (let ((coding-system-for-write 'utf-8-emacs))
-        (write-region (point-min) (point-max) filename nil 'nomessage))))
+	(insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
+	(mapc #'(lambda (l)
+		  (when (apply 'desktop-save-buffer-p l)
+		    (insert "("
+			    (if (or (not (integerp eager))
+				    (unless (zerop eager)
+				      (setq eager (1- eager))
+				      t))
+				"desktop-create-buffer"
+			      "desktop-append-buffer-args")
+			    " "
+			    desktop-file-version)
+		    (mapc #'(lambda (e)
+			      (insert "\n  " (desktop-value-to-string e)))
+			  l)
+		    (insert ")\n\n")))
+	      info)
+	(setq default-directory dirname)
+	(let ((coding-system-for-write 'utf-8-emacs))
+	  (write-region (point-min) (point-max) filename nil 'nomessage)))))
   (setq desktop-dirname dirname))
 
 ;; ----------------------------------------------------------------------------
@@ -946,7 +943,7 @@
               (let ((msg (format "Desktop: File \"%s\" no longer exists."
                                  desktop-buffer-file-name)))
                  (if desktop-missing-file-warning
-		     (y-or-n-p (concat msg " Re-create? "))
+		     (y-or-n-p (concat msg " Re-create buffer? "))
                    (message "%s" msg)
                    nil)))
 	  (let* ((auto-insert nil) ; Disable auto insertion
--- a/lisp/dired-x.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/dired-x.el	Wed May 17 07:46:49 2006 +0000
@@ -215,7 +215,9 @@
   :type 'boolean
   :group 'dired-x)
 
-(defcustom dired-guess-shell-gnutar nil
+(defcustom dired-guess-shell-gnutar (when (or (eq system-type 'gnu)
+					      (eq system-type 'gnu/linux))
+				      "tar")
   "*If non-nil, name of GNU tar executable.
 \(E.g., \"tar\" or \"gtar\").  The `z' switch will be used with it for
 compressed or gzip'ed tar files.  If you don't have GNU tar, set this
--- a/lisp/emacs-lisp/bytecomp.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Wed May 17 07:46:49 2006 +0000
@@ -293,6 +293,7 @@
 
 When this option is true, if you load the compiled file and then move it,
 the functions you loaded will not be able to run.")
+;;;###autoload(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
 
 (defcustom byte-compile-dynamic-docstrings t
   "*If non-nil, compile doc strings for lazy access.
@@ -311,6 +312,7 @@
 This option is enabled by default because it reduces Emacs memory usage."
   :group 'bytecomp
   :type 'boolean)
+;;;###autoload(put 'byte-compile-dynamic-docstrings 'safe-local-variable 'booleanp)
 
 (defcustom byte-optimize-log nil
   "*If true, the byte-compiler will log its optimizations into *Compile-Log*.
@@ -355,6 +357,20 @@
 		      (const callargs) (const redefine)
 		      (const obsolete) (const noruntime)
 		      (const cl-functions) (const interactive-only))))
+(put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
+;;;###autoload
+(defun byte-compile-warnings-safe-p (x)
+  (or (booleanp x)
+      (and (listp x)
+	   (equal (mapcar
+		   (lambda (e)
+		     (when (memq e '(free-vars unresolved
+				     callargs redefine
+				     obsolete noruntime
+				     cl-functions interactive-only))
+		       e))
+		   x)
+		  x))))
 
 (defvar byte-compile-interactive-only-functions
   '(beginning-of-buffer end-of-buffer replace-string replace-regexp
@@ -1589,6 +1605,7 @@
 This is normally set in local file variables at the end of the elisp file:
 
 ;; Local Variables:\n;; no-byte-compile: t\n;; End: ")
+;;;###autoload(put 'no-byte-compile 'safe-local-variable 'booleanp)
 
 ;;;###autoload
 (defun byte-compile-file (filename &optional load)
--- a/lisp/emacs-lisp/ewoc.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/emacs-lisp/ewoc.el	Wed May 17 07:46:49 2006 +0000
@@ -144,14 +144,6 @@
 
 \(fn NODE CHILD)")
 
-(defun ewoc--node-enter-before (node elemnode)
-  "Insert ELEMNODE before NODE in a DLL."
-  (assert (and (null (ewoc--node-left elemnode)) (null (ewoc--node-right elemnode))))
-  (setf (ewoc--node-left elemnode) (ewoc--node-left node))
-  (setf (ewoc--node-right elemnode) node)
-  (setf (ewoc--node-right (ewoc--node-left node)) elemnode)
-  (setf (ewoc--node-left node) elemnode))
-
 (defun ewoc--node-next (dll node)
   "Return the node after NODE, or nil if NODE is the last node."
   (unless (eq (ewoc--node-right node) dll) (ewoc--node-right node)))
@@ -213,36 +205,39 @@
 	      (eq node (ewoc--footer ewoc)))
     node))
 
-
-(defun ewoc--create-node (data pretty-printer pos)
-  "Call PRETTY-PRINTER with point set at POS in current buffer.
-Remember the start position.  Create a wrapper containing that
-start position and the element DATA."
+(defun ewoc--insert-new-node (node data pretty-printer)
+  "Insert before NODE a new node for DATA, displayed by PRETTY-PRINTER.
+Call PRETTY-PRINTER with point at NODE's start, thus pushing back
+NODE and leaving the new node's start there.  Return the new node."
   (save-excursion
-    ;; Remember the position as a number so that it doesn't move
-    ;; when we insert the string.
-    (when (markerp pos) (setq pos (marker-position pos)))
-    (goto-char pos)
-    (let ((inhibit-read-only t))
+    (let* ((inhibit-read-only t)
+           (m (copy-marker (ewoc--node-start-marker node)))
+           (pos (marker-position m))
+           (elemnode (ewoc--node-create m data)))
+      (goto-char pos)
       ;; Insert the trailing newline using insert-before-markers
       ;; so that the start position for the next element is updated.
       (insert-before-markers ?\n)
       ;; Move back, and call the pretty-printer.
       (backward-char 1)
       (funcall pretty-printer data)
-      (ewoc--node-create (copy-marker pos) data))))
+      (setf (marker-position m) pos
+            (ewoc--node-left  elemnode) (ewoc--node-left node)
+            (ewoc--node-right elemnode)                  node
+            (ewoc--node-right (ewoc--node-left node)) elemnode
+            (ewoc--node-left                   node)  elemnode)
+      elemnode)))
 
 (defun ewoc--refresh-node (pp node)
   "Redisplay the element represented by NODE using the pretty-printer PP."
   (let ((inhibit-read-only t))
-    (save-excursion
-      ;; First, remove the string from the buffer:
-      (delete-region (ewoc--node-start-marker node)
-		     (1- (marker-position
-			  (ewoc--node-start-marker (ewoc--node-right node)))))
-      ;; Calculate and insert the string.
-      (goto-char (ewoc--node-start-marker node))
-      (funcall pp (ewoc--node-data node)))))
+    ;; First, remove the string from the buffer:
+    (delete-region (ewoc--node-start-marker node)
+                   (1- (marker-position
+                        (ewoc--node-start-marker (ewoc--node-right node)))))
+    ;; Calculate and insert the string.
+    (goto-char (ewoc--node-start-marker node))
+    (funcall pp (ewoc--node-data node))))
 
 ;;; ===========================================================================
 ;;;                  Public members of the Ewoc package
@@ -271,22 +266,24 @@
          (new-ewoc
           (ewoc--create (current-buffer)
                         pretty-printer nil nil dll))
-         (pos (point)))
+         (pos (point))
+         head foot)
     (ewoc--set-buffer-bind-dll new-ewoc
       ;; Set default values
       (unless header (setq header ""))
       (unless footer (setq footer ""))
-      (setf (ewoc--node-start-marker dll) (copy-marker pos))
-      (let ((foot (ewoc--create-node footer 'insert pos))
-	    (head (ewoc--create-node header 'insert pos)))
-	(ewoc--node-enter-before (ewoc--node-right dll) head)
-	(ewoc--node-enter-before                   dll  foot)
-	(setf (ewoc--header new-ewoc) head)
-	(setf (ewoc--footer new-ewoc) foot)))
+      (setf (ewoc--node-start-marker dll) (copy-marker pos)
+            foot (ewoc--insert-new-node  dll footer 'insert)
+            head (ewoc--insert-new-node foot header 'insert)
+            (ewoc--footer new-ewoc) foot
+            (ewoc--header new-ewoc) head))
     ;; Return the ewoc
     new-ewoc))
 
-(defalias 'ewoc-data 'ewoc--node-data)
+(defalias 'ewoc-data 'ewoc--node-data
+  "Extract the data encapsulated by NODE and return it.
+
+\(fn NODE)")
 
 (defun ewoc-enter-first (ewoc data)
   "Enter DATA first in EWOC.
@@ -311,12 +308,7 @@
   "Enter a new element DATA before NODE in EWOC.
 Return the new node."
   (ewoc--set-buffer-bind-dll ewoc
-    (ewoc--node-enter-before
-     node
-     (ewoc--create-node
-      data
-      (ewoc--pretty-printer ewoc)
-      (ewoc--node-start-marker node)))))
+    (ewoc--insert-new-node node data (ewoc--pretty-printer ewoc))))
 
 (defun ewoc-next (ewoc node)
   "Return the node in EWOC that follows NODE.
@@ -340,7 +332,7 @@
 If N is negative, return the -(N+1)th last element.
 Thus, (ewoc-nth dll 0) returns the first node,
 and (ewoc-nth dll -1) returns the last node.
-Use `ewoc--node-data' to extract the data from the node."
+Use `ewoc-data' to extract the data from the node."
   ;; Skip the header (or footer, if n is negative).
   (setq n (if (< n 0) (1- n) (1+ n)))
   (ewoc--filter-hf-nodes ewoc
@@ -361,10 +353,11 @@
   (ewoc--set-buffer-bind-dll-let* ewoc
       ((footer (ewoc--footer ewoc))
        (node (ewoc--node-nth dll 1)))
-    (while (not (eq node footer))
-      (if (apply map-function (ewoc--node-data node) args)
-	  (ewoc--refresh-node (ewoc--pretty-printer ewoc) node))
-      (setq node (ewoc--node-next dll node)))))
+    (save-excursion
+      (while (not (eq node footer))
+        (if (apply map-function (ewoc--node-data node) args)
+            (ewoc--refresh-node (ewoc--pretty-printer ewoc) node))
+        (setq node (ewoc--node-next dll node))))))
 
 (defun ewoc-filter (ewoc predicate &rest args)
   "Remove all elements in EWOC for which PREDICATE returns nil.
@@ -473,8 +466,9 @@
   "Call EWOC's pretty-printer for each element in NODES.
 Delete current text first, thus effecting a \"refresh\"."
   (ewoc--set-buffer-bind-dll ewoc
-    (dolist (node nodes)
-      (ewoc--refresh-node (ewoc--pretty-printer ewoc) node))))
+    (save-excursion
+      (dolist (node nodes)
+        (ewoc--refresh-node (ewoc--pretty-printer ewoc) node)))))
 
 (defun ewoc-goto-prev (ewoc arg)
   "Move point to the ARGth previous element in EWOC.
@@ -526,11 +520,11 @@
       (delete-region (ewoc--node-start-marker (ewoc--node-nth dll 1))
 		     (ewoc--node-start-marker footer))
       (goto-char (ewoc--node-start-marker footer))
-      (let ((node (ewoc--node-nth dll 1)))
+      (let ((pp (ewoc--pretty-printer ewoc))
+            (node (ewoc--node-nth dll 1)))
 	(while (not (eq node footer))
 	  (set-marker (ewoc--node-start-marker node) (point))
-	  (funcall (ewoc--pretty-printer ewoc)
-		   (ewoc--node-data node))
+	  (funcall pp (ewoc--node-data node))
 	  (insert "\n")
 	  (setq node (ewoc--node-next dll node)))))
     (set-marker (ewoc--node-start-marker footer) (point))))
@@ -572,8 +566,9 @@
   "Set the HEADER and FOOTER of EWOC."
   (setf (ewoc--node-data (ewoc--header ewoc)) header)
   (setf (ewoc--node-data (ewoc--footer ewoc)) footer)
-  (ewoc--refresh-node 'insert (ewoc--header ewoc))
-  (ewoc--refresh-node 'insert (ewoc--footer ewoc)))
+  (save-excursion
+    (ewoc--refresh-node 'insert (ewoc--header ewoc))
+    (ewoc--refresh-node 'insert (ewoc--footer ewoc))))
 
 
 (provide 'ewoc)
--- a/lisp/files.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/files.el	Wed May 17 07:46:49 2006 +0000
@@ -162,6 +162,7 @@
 both at the file level and at the levels of the containing directories."
   :type 'boolean
   :group 'find-file)
+(put 'find-file-visit-truename 'safe-local-variable 'boolean)
 
 (defcustom revert-without-query nil
   "*Specify which files should be reverted without query.
@@ -249,6 +250,8 @@
 		 (other :tag "Always" t))
   :group 'backup
   :group 'vc)
+(put 'version-control 'safe-local-variable
+     '(lambda (x) (or (booleanp x) (equal x 'never))))
 
 (defcustom dired-kept-versions 2
   "*When cleaning directory, number of versions to keep."
@@ -268,12 +271,14 @@
   "*Number of oldest versions to keep when a new numbered backup is made."
   :type 'integer
   :group 'backup)
+(put 'kept-old-versions 'safe-local-variable 'integerp)
 
 (defcustom kept-new-versions 2
   "*Number of newest versions to keep when a new numbered backup is made.
 Includes the new backup.  Must be > 0"
   :type 'integer
   :group 'backup)
+(put 'kept-new-versions 'safe-local-variable 'integerp)
 
 (defcustom require-final-newline nil
   "*Whether to add a newline automatically at the end of the file.
@@ -1892,8 +1897,8 @@
      ("\\.tar\\'" . tar-mode)
      ;; The list of archive file extensions should be in sync with
      ;; `auto-coding-alist' with `no-conversion' coding system.
-     ("\\.\\(arc\\|zip\\|lzh\\|zoo\\|[jew]ar\\|xpi\\)\\'" . archive-mode)
-     ("\\.\\(ARC\\|ZIP\\|LZH\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . archive-mode)
+     ("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\)\\'" . archive-mode)
+     ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . archive-mode)
      ("\\.\\(sx[dmicw]\\|odt\\)\\'" . archive-mode)	; OpenOffice.org
      ;; Mailer puts message to be edited in
      ;; /tmp/Re.... or Message
@@ -2351,27 +2356,12 @@
 ;; FIXME: Some variables should be moved according to the rules above.
 (mapc (lambda (pair)
 	(put (car pair) 'safe-local-variable (cdr pair)))
-      '((byte-compile-dynamic            . booleanp)
-	(byte-compile-dynamic-docstrings . booleanp)
-	(byte-compile-warnings           . booleanp)
-	(c-basic-offset                  . integerp)
-	(c-file-style                    . stringp)
-	(c-indent-level                  . integerp)
-	(comment-column                  . integerp)
-	(compile-command                 . string-or-null-p)
-	(find-file-visit-truename        . booleanp)
-	(fill-column                     . integerp)
-	(fill-prefix                     . string-or-null-p)
+      '((fill-column                     . integerp) ;; C source code
 	(indent-tabs-mode                . booleanp) ;; C source code
-	(kept-old-versions               . integerp)
-	(kept-new-versions               . integerp)
-	(left-margin                     . integerp)
-	(no-byte-compile                 . booleanp)
+	(left-margin                     . integerp) ;; C source code
 	(no-update-autoloads             . booleanp)
-	(outline-regexp                  . string-or-null-p)
 	(tab-width                       . integerp) ;; C source code
-	(truncate-lines                  . booleanp) ;; C source code
-	(version-control                 . symbolp)))
+	(truncate-lines                  . booleanp))) ;; C source code
 
 (put 'c-set-style 'safe-local-eval-function t)
 
@@ -4114,7 +4104,7 @@
 	   (let ((inhibit-read-only t)
 		 ;; Keep the current buffer-file-coding-system.
 		 (coding-system buffer-file-coding-system)
-		 ;; Auto-saved file shoule be read with special coding.
+		 ;; Auto-saved file should be read with special coding.
 		 (coding-system-for-read 'auto-save-coding))
 	     (erase-buffer)
 	     (insert-file-contents file-name nil)
--- a/lisp/help-fns.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/help-fns.el	Wed May 17 07:46:49 2006 +0000
@@ -642,10 +642,12 @@
                 (princ (if (stringp (car obsolete)) (car obsolete)
                          (format "use `%s' instead." (car obsolete))))
                 (terpri))
-	      (when safe-var 
-		(princ "This variable is safe to use as a file local variable")
-		(princ (format " only if its value\nsatisfies the predicate `%s'.\n"
-			       safe-var))
+	      (when safe-var
+		(princ "This variable is safe as a file local variable ")
+		(princ "if its value\nsatisfies the predicate ")
+		(princ (if (byte-code-function-p safe-var)
+			   "which is byte-compiled expression.\n"
+			 (format "`%s'.\n" safe-var)))
 		(terpri))
 	      (princ "Documentation:\n")
               (princ (or doc "Not documented as a variable.")))
--- a/lisp/hexl.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/hexl.el	Wed May 17 07:46:49 2006 +0000
@@ -704,7 +704,12 @@
 	(buffer-undo-list t))
     (apply 'call-process-region (point-min) (point-max)
 	   (expand-file-name hexl-program exec-directory)
-	   t t nil (split-string hexl-options))
+	   t t nil
+           ;; Manually encode the args, otherwise they're encoded using
+           ;; coding-system-for-write (i.e. buffer-file-coding-system) which
+           ;; may not be what we want (e.g. utf-16 on a non-utf-16 system).
+           (mapcar (lambda (s) (encode-coding-string s locale-coding-system))
+                   (split-string hexl-options)))
     (if (> (point) (hexl-address-to-marker hexl-max-address))
 	(hexl-goto-address hexl-max-address))))
 
--- a/lisp/international/mule.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/international/mule.el	Wed May 17 07:46:49 2006 +0000
@@ -1560,8 +1560,8 @@
 ;;; FILE I/O
 
 (defcustom auto-coding-alist
-  '(("\\.\\(arc\\|zip\\|lzh\\|zoo\\|[jew]ar\\|xpi\\)\\'" . no-conversion)
-    ("\\.\\(ARC\\|ZIP\\|LZH\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . no-conversion)
+  '(("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\)\\'" . no-conversion)
+    ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . no-conversion)
     ("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion)
     ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)
     ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
--- a/lisp/newcomment.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/newcomment.el	Wed May 17 07:46:49 2006 +0000
@@ -104,6 +104,7 @@
   :type 'integer
   :group 'comment)
 (make-variable-buffer-local 'comment-column)
+;;;###autoload(put 'comment-column 'safe-local-variable 'integerp)
 
 ;;;###autoload
 (defvar comment-start nil
--- a/lisp/outline.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/outline.el	Wed May 17 07:46:49 2006 +0000
@@ -54,6 +54,7 @@
 in the file it applies to.  See also `outline-heading-end-regexp'."
   :type '(choice regexp (const nil))
   :group 'outlines)
+;;;###autoload(put 'outline-regexp 'safe-local-variable 'string-or-null-p)
 
 (defcustom outline-heading-end-regexp "\n"
   "Regular expression to match the end of a heading line.
--- a/lisp/progmodes/cc-compat.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/progmodes/cc-compat.el	Wed May 17 07:46:49 2006 +0000
@@ -62,6 +62,8 @@
 ;; In case c-mode.el isn't loaded
 (defvar c-indent-level 2
   "*Indentation of C statements with respect to containing block.")
+;;;###autoload(put 'c-indent-level 'safe-local-variable 'integerp)
+
 (defvar c-brace-imaginary-offset 0
   "*Imagined indentation of a C open brace that actually follows a statement.")
 (defvar c-brace-offset 0
--- a/lisp/progmodes/cc-subword.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/progmodes/cc-subword.el	Wed May 17 07:46:49 2006 +0000
@@ -167,6 +167,8 @@
    (t
     (point))))
 
+(put 'c-forward-subword 'CUA 'move)
+
 (defun c-backward-subword (&optional arg)
   "Do the same as `backward-word' but on subwords.
 See the command `c-subword-mode' for a description of subwords.
@@ -193,6 +195,8 @@
 	    (point))
 	  nil t))))
 
+(put 'c-backward-subword 'CUA 'move)
+
 (defun c-kill-subword (arg)
   "Do the same as `kill-word' but on subwords.
 See the command `c-subword-mode' for a description of subwords.
@@ -222,7 +226,7 @@
   (let ((count (abs arg))
 	(direction (if (< 0 arg) 1 -1)))
     (dotimes (i count)
-      (when (re-search-forward 
+      (when (re-search-forward
 	     (concat "[" c-alpha "]")
 	     nil t)
 	(goto-char (match-beginning 0)))
@@ -253,15 +257,15 @@
 ;;
 (defun c-forward-subword-internal ()
   (if (and
-       (save-excursion 
+       (save-excursion
 	 (let ((case-fold-search nil))
-	   (re-search-forward 
+	   (re-search-forward
 	    (concat "\\W*\\(\\([" c-upper "]*\\W?\\)[" c-lower c-digit "]*\\)")
 	    nil t)))
        (> (match-end 0) (point))) ; So we don't get stuck at a
 				  ; "word-constituent" which isn't c-upper,
 				  ; c-lower or c-digit
-      (goto-char 
+      (goto-char
        (cond
 	((< 1 (- (match-end 2) (match-beginning 2)))
 	 (1- (match-end 2)))
@@ -271,15 +275,15 @@
 
 
 (defun c-backward-subword-internal ()
-  (if (save-excursion 
-	(let ((case-fold-search nil)) 
+  (if (save-excursion
+	(let ((case-fold-search nil))
 	  (re-search-backward
 	   (concat
 	    "\\(\\(\\W\\|[" c-lower c-digit "]\\)\\([" c-upper "]+\\W*\\)"
-	    "\\|\\W\\w+\\)") 
+	    "\\|\\W\\w+\\)")
 	   nil t)))
-      (goto-char 
-       (cond 
+      (goto-char
+       (cond
 	((and (match-end 3)
 	      (< 1 (- (match-end 3) (match-beginning 3)))
 	      (not (eq (point) (match-end 3))))
--- a/lisp/progmodes/cc-vars.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/progmodes/cc-vars.el	Wed May 17 07:46:49 2006 +0000
@@ -248,6 +248,7 @@
 nil."
   :type 'integer
   :group 'c)
+;;;###autoload(put 'c-basic-offset 'safe-local-variable 'integerp)
 
 (defcustom c-tab-always-indent t
   "*Controls the operation of the TAB key.
@@ -1542,6 +1543,7 @@
 Note that file style settings are applied before file offset settings
 as designated in the variable `c-file-offsets'.")
 (make-variable-buffer-local 'c-file-style)
+;;;###autoload(put 'c-file-style 'safe-local-variable 'string-or-null-p)
 
 (defvar c-file-offsets nil
   "Variable interface for setting offsets via File Local Variables.
--- a/lisp/progmodes/compile.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/progmodes/compile.el	Wed May 17 07:46:49 2006 +0000
@@ -453,6 +453,7 @@
 			(file-name-sans-extension buffer-file-name))))))"
   :type 'string
   :group 'compilation)
+;;;###autoload(put 'compile-command 'safe-local-variable 'stringp)
 
 ;;;###autoload
 (defcustom compilation-disable-input nil
--- a/lisp/progmodes/gdb-ui.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/progmodes/gdb-ui.el	Wed May 17 07:46:49 2006 +0000
@@ -732,9 +732,9 @@
 	(gdb-enqueue-input
 	 (list
 	  (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
-	      (concat "server interpreter mi \"-var-evaluate-expression "
+	      (concat "server interpreter mi \"0-var-evaluate-expression "
 		      (car var) "\"\n")
-	    (concat "-var-evaluate-expression " (car var) "\n"))
+	    (concat "0-var-evaluate-expression " (car var) "\n"))
 	  `(lambda () (gdb-var-evaluate-expression-handler
 		       ,(car var) nil)))))
     (if (search-forward "Undefined command" nil t)
@@ -755,11 +755,13 @@
 
 (defun gdb-var-evaluate-expression-handler (varnum changed)
   (goto-char (point-min))
-  (re-search-forward ".*value=\\(\".*\"\\)" nil t)
+  (re-search-forward "\\(.+\\)\\^done,value=\\(\".*\"\\)" nil t)
+  (setq gdb-pending-triggers
+	(delq (string-to-number (match-string 1)) gdb-pending-triggers))
   (let ((var (assoc varnum gdb-var-list)))
     (when var
       (if changed (setcar (nthcdr 5 var) 'changed))
-      (setcar (nthcdr 4 var) (read (match-string 1)))))
+      (setcar (nthcdr 4 var) (read (match-string 2)))))
   (gdb-speedbar-update))
 
 (defun gdb-var-list-children (varnum)
@@ -791,7 +793,7 @@
 		  (gdb-enqueue-input
 		   (list
 		    (concat
-		     "server interpreter mi \"-var-evaluate-expression "
+		     "server interpreter mi \"0-var-evaluate-expression "
 		     (car varchild) "\"\n")
 		    `(lambda () (gdb-var-evaluate-expression-handler
 				 ,(car varchild) nil)))))))
@@ -813,16 +815,19 @@
   (dolist (var gdb-var-list)
     (setcar (nthcdr 5 var) nil))
   (goto-char (point-min))
-  (while (re-search-forward gdb-var-update-regexp nil t)
-    (let ((varnum (match-string 1)))
-      (if  (string-equal (match-string 2) "false")
-	  (let ((var (assoc varnum gdb-var-list)))
-	    (if var (setcar (nthcdr 5 var) 'out-of-scope)))
-	(gdb-enqueue-input
-	 (list
-	  (concat "server interpreter mi \"-var-evaluate-expression "
-		  varnum "\"\n")
-	  `(lambda () (gdb-var-evaluate-expression-handler ,varnum t)))))))
+  (let ((n 0))
+    (while (re-search-forward gdb-var-update-regexp nil t)
+      (let ((varnum (match-string 1)))
+	(if  (string-equal (match-string 2) "false")
+	    (let ((var (assoc varnum gdb-var-list)))
+	      (if var (setcar (nthcdr 5 var) 'out-of-scope)))
+	  (setq n (1+ n))
+	  (push n gdb-pending-triggers)
+	  (gdb-enqueue-input
+	   (list
+	    (concat "server interpreter mi \"" (number-to-string n)
+		    "-var-evaluate-expression " varnum "\"\n")
+	  `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))))))
   (setq gdb-pending-triggers
 	(delq 'gdb-var-update gdb-pending-triggers)))
 
@@ -832,7 +837,9 @@
   (if (memq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
 	    '(gdbmi gdba))
       (let ((text (speedbar-line-text)))
-	(string-match "\\(\\S-+\\)" text)
+	;; Can't use \\S-+ for whitespace because
+	;; speedbar has a whacky syntax table.
+	(string-match "\\([^ \t]+\\)" text)
 	(let ((expr (match-string 1 text)) var varnum)
 	  (catch 'expr-found
 	    (dolist (var1 gdb-var-list)
@@ -2803,6 +2810,7 @@
   (setq overlay-arrow-variable-list
 	(delq 'gdb-overlay-arrow-position overlay-arrow-variable-list))
   (setq fringe-indicator-alist '((overlay-arrow . right-triangle)))
+  (if (boundp 'speedbar-frame) (speedbar-timer-fn))
   (setq gud-running nil)
   (setq gdb-active-process nil)
   (setq gdb-var-list nil)
--- a/lisp/progmodes/gud.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/progmodes/gud.el	Wed May 17 07:46:49 2006 +0000
@@ -3480,7 +3480,8 @@
 				  gdb-server-prefix "macro expand " expr "\n")
 				 `(lambda () (gdb-tooltip-print-1 ,expr))))
 			(gdb-enqueue-input
-			 (list  (concat cmd "\n") 'gdb-tooltip-print)))
+			 (list  (concat cmd "\n")
+ 				 `(lambda () (gdb-tooltip-print ,expr)))))
 		  (setq gud-tooltip-original-filter (process-filter process))
 		  (set-process-filter process 'gud-tooltip-process-output)
 		  (gud-basic-call cmd))
--- a/lisp/server.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/server.el	Wed May 17 07:46:49 2006 +0000
@@ -252,8 +252,6 @@
 
 Prefix arg means just kill any existing server communications subprocess."
   (interactive "P")
-  ;; Make sure there is a safe directory in which to place the socket.
-  (server-ensure-safe-dir server-socket-dir)
   ;; kill it dead!
   (if server-process
       (condition-case () (delete-process server-process) (error nil)))
@@ -265,7 +263,10 @@
   (while server-clients
     (let ((buffer (nth 1 (car server-clients))))
       (server-buffer-done buffer)))
+  ;; Now any previous server is properly stopped.
   (unless leave-dead
+    ;; Make sure there is a safe directory in which to place the socket.
+    (server-ensure-safe-dir server-socket-dir)
     (if server-process
 	(server-log (message "Restarting server")))
     (letf (((default-file-modes) ?\700))
@@ -578,7 +579,7 @@
   (if (or arg
 	  (not server-process)
 	  (memq (process-status server-process) '(signal exit)))
-      (server-start nil)
+      (server-mode 1)
     (apply 'server-switch-buffer (server-done))))
 
 (defun server-switch-buffer (&optional next-buffer killed-one)
@@ -637,14 +638,15 @@
 (define-key ctl-x-map "#" 'server-edit)
 
 (defun server-unload-hook ()
-  (server-start t)
+  (server-mode -1)
   (remove-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function)
   (remove-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function)
   (remove-hook 'kill-buffer-hook 'server-kill-buffer))
 
+(add-hook 'kill-emacs-hook (lambda () (server-mode -1))) ;Cleanup upon exit.
 (add-hook 'server-unload-hook 'server-unload-hook)
 
 (provide 'server)
 
-;;; arch-tag: 1f7ecb42-f00a-49f8-906d-61995d84c8d6
+;; arch-tag: 1f7ecb42-f00a-49f8-906d-61995d84c8d6
 ;;; server.el ends here
--- a/lisp/simple.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/simple.el	Wed May 17 07:46:49 2006 +0000
@@ -3646,7 +3646,8 @@
 	;; Move to the chosen destination position from above,
 	;; with intangibility processing enabled.
 
-	(goto-char (point-min))
+	;; Avoid calling point-entered and point-left.
+	(goto-char new)
 	(let ((inhibit-point-motion-hooks nil))
 	  (goto-char new)
 
@@ -4058,6 +4059,7 @@
 		 string)
   :group 'fill)
 (make-variable-buffer-local 'fill-prefix)
+;;;###autoload(put 'fill-prefix 'safe-local-variable 'string-or-null-p)
 
 (defcustom auto-fill-inhibit-regexp nil
   "*Regexp to match lines which should not be auto-filled."
--- a/lisp/subr.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/subr.el	Wed May 17 07:46:49 2006 +0000
@@ -1123,28 +1123,36 @@
 				(< oa ob)
 			      oa)))))))
 
-(defun add-to-history (history-var newelt &optional maxelt)
+(defun add-to-history (history-var newelt &optional maxelt keep-all)
   "Add NEWELT to the history list stored in the variable HISTORY-VAR.
 Return the new history list.
 If MAXELT is non-nil, it specifies the maximum length of the history.
 Otherwise, the maximum history length is the value of the `history-length'
 property on symbol HISTORY-VAR, if set, or the value of the `history-length'
 variable.
-Remove duplicates of NEWELT unless `history-delete-duplicates' is nil."
+Remove duplicates of NEWELT if `history-delete-duplicates' is non-nil.
+If optional fourth arg KEEP-ALL is non-nil, add NEWELT to history even
+if it is empty or a duplicate."
   (unless maxelt
     (setq maxelt (or (get history-var 'history-length)
 		     history-length)))
   (let ((history (symbol-value history-var))
 	tail)
-    (if history-delete-duplicates
-	(setq history (delete newelt history)))
-    (setq history (cons newelt history))
-    (when (integerp maxelt)
-      (if (= 0 maxelt)
-	  (setq history nil)
-	(setq tail (nthcdr (1- maxelt) history))
-	(when (consp tail)
-	  (setcdr tail nil))))
+    (when (and (listp history)
+	       (or keep-all
+		   (not (stringp newelt))
+		   (> (length newelt) 0))
+	       (or keep-all
+		   (not (equal (car history) newelt))))
+      (if history-delete-duplicates
+	  (delete newelt history))
+      (setq history (cons newelt history))
+      (when (integerp maxelt)
+	(if (= 0 maxelt)
+	    (setq history nil)
+	  (setq tail (nthcdr (1- maxelt) history))
+	  (when (consp tail)
+	    (setcdr tail nil)))))
     (set history-var history)))
 
 
--- a/lisp/term/xterm.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/term/xterm.el	Wed May 17 07:46:49 2006 +0000
@@ -230,7 +230,7 @@
       
       ;; These keys will be available xterm starting probably from
       ;; version 214.
-      (define-key map "\e[27;5;8~"  [(control ?\t)])
+      (define-key map "\e[27;5;9~"  [(control ?\t)])
       (define-key map "\e[27;5;44~" [(control ?\,)])
       (define-key map "\e[27;5;46~" [(control ?\.)])
       (define-key map "\e[27;5;47~" [(control ?\/)])
--- a/lisp/textmodes/org.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/textmodes/org.el	Wed May 17 07:46:49 2006 +0000
@@ -4348,6 +4348,7 @@
 			(parse-time-string (match-string 1))))
 	     ct))
 	 (calendar-move-hook nil)
+	 (view-calendar-holidays-initially nil)
 	 (view-diary-entries-initially nil)
 	 (timestr (format-time-string
 		   (if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") default-time))
@@ -4724,6 +4725,7 @@
   (interactive "P")
   (let ((tsr org-ts-regexp) diff
 	(calendar-move-hook nil)
+	(view-calendar-holidays-initially nil)
 	(view-diary-entries-initially nil))
     (if (or (org-at-timestamp-p)
 	    (save-excursion
@@ -6910,6 +6912,7 @@
 		  (error "Don't know which date to open in calendar")))
 	 (date (calendar-gregorian-from-absolute day))
 	 (calendar-move-hook nil)
+	 (view-calendar-holidays-initially nil)
 	 (view-diary-entries-initially nil))
     (calendar)
     (calendar-goto-date date)))
--- a/lisp/url/ChangeLog	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/url/ChangeLog	Wed May 17 07:46:49 2006 +0000
@@ -1,3 +1,7 @@
+2006-05-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* url-http.el (url-http-file-exists-p): Test if status is integer.
+
 2006-05-05  Andreas Seltenreich  <seltenreich@gmx.de>  (tiny change)
 
 	* url-http.el (url-http-parse-headers): Don't reuse connection if
--- a/lisp/url/url-http.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/url/url-http.el	Wed May 17 07:46:49 2006 +0000
@@ -1141,7 +1141,8 @@
 	(setq exists nil)
       (setq status (url-http-symbol-value-in-buffer 'url-http-response-status
 						    buffer 500)
-	    exists (and (>= status 200) (< status 300)))
+	    exists (and (integerp status)
+			(>= status 200) (< status 300)))
       (kill-buffer buffer))
     exists))
 
--- a/lispintro/emacs-lisp-intro.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispintro/emacs-lisp-intro.texi	Wed May 17 07:46:49 2006 +0000
@@ -17100,7 +17100,7 @@
 @item
 Convert @kbd{@key{CTL}-h} into @key{DEL} and @key{DEL}
 into @kbd{@key{CTL}-h}.@*
-(Some olders keyboards needed this, although I have not seen the
+(Some older keyboards needed this, although I have not seen the
 problem recently.)
 
 @smallexample
@@ -19489,7 +19489,7 @@
 @cindex Print horizontal axis
 @cindex Horizontal axis printing
 
-X axis labels are much like Y axis labels, except that the tics are on a
+X axis labels are much like Y axis labels, except that the ticks are on a
 line above the numbers.  Labels should look like this:
 
 @smallexample
@@ -19501,7 +19501,7 @@
 
 The first tic is under the first column of the graph and is preceded by
 several blank spaces.  These spaces provide room in rows above for the Y
-axis labels.  The second, third, fourth, and subsequent tics are all
+axis labels.  The second, third, fourth, and subsequent ticks are all
 spaced equally, according to the value of @code{X-axis-label-spacing}.
 
 The second row of the X axis consists of numbers, preceded by several
@@ -19629,7 +19629,7 @@
 @end smallexample
 
 We also need to determine the length of the horizontal axis, which is
-the length of the numbers list, and the number of tics in the horizontal
+the length of the numbers list, and the number of ticks in the horizontal
 axis:
 
 @smallexample
@@ -19646,7 +19646,7 @@
 @end group
 
 @group
-;; number-of-X-tics
+;; number-of-X-ticks
 (if (zerop (% (X-length tic-width)))
     (/ (X-length tic-width))
   (1+ (/ (X-length tic-width))))
@@ -19661,7 +19661,7 @@
 @group
 (defun print-X-axis-tic-line
   (number-of-X-tics X-axis-leading-spaces X-axis-tic-element)
-  "Print tics for X axis."
+  "Print ticks for X axis."
     (insert X-axis-leading-spaces)
     (insert X-axis-tic-symbol)  ; @r{Under first column.}
 @end group
@@ -19676,7 +19676,7 @@
              X-axis-tic-symbol))
 @end group
 @group
-    ;; @r{Insert remaining tics.}
+    ;; @r{Insert remaining ticks.}
     (while (> number-of-X-tics 1)
       (insert X-axis-tic-element)
       (setq number-of-X-tics (1- number-of-X-tics))))
@@ -20905,7 +20905,7 @@
 @group
 (defun print-X-axis-tic-line
   (number-of-X-tics X-axis-leading-spaces X-axis-tic-element)
-  "Print tics for X axis."
+  "Print ticks for X axis."
     (insert X-axis-leading-spaces)
     (insert X-axis-tic-symbol)  ; @r{Under first column.}
 @end group
@@ -20920,7 +20920,7 @@
              X-axis-tic-symbol))
 @end group
 @group
-    ;; @r{Insert remaining tics.}
+    ;; @r{Insert remaining ticks.}
     (while (> number-of-X-tics 1)
       (insert X-axis-tic-element)
       (setq number-of-X-tics (1- number-of-X-tics))))
--- a/lispref/ChangeLog	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/ChangeLog	Wed May 17 07:46:49 2006 +0000
@@ -1,3 +1,53 @@
+2006-05-16  Kim F. Storm  <storm@cua.dk>
+
+	* minibuf.texi (Minibuffer History): Update add-to-history.
+
+2006-05-15  Oliver Scholz  <epameinondas@gmx.de>  (tiny change)
+
+	* nonascii.texi (Explicit Encoding): Fix
+	typo (encoding<->decoding).
+
+2006-05-14  Richard Stallman  <rms@gnu.org>
+
+	* buffers.texi (Creating Buffers): Cleanup.
+
+	* files.texi (Visiting Functions): Rewrite in find-file-noselect.
+
+2006-05-13  Eli Zaretskii  <eliz@gnu.org>
+
+	* buffers.texi (Current Buffer): Document that with-temp-buffer
+	disables undo.
+
+	* os.texi (Terminal-Specific): More accurate description of how
+	Emacs searches for the terminal-specific libraries.
+
+2006-05-12  Eli Zaretskii  <eliz@gnu.org>
+
+	* hooks.texi (Standard Hooks) [iftex]: Convert @xref's to
+	emacs-xtra to @inforef's.
+
+	* text.texi (Undo): Document that undo is turned off in buffers
+	whose names begin with a space.
+
+	* buffers.texi (Buffer Names): Add index entries for buffers whose
+	names begin with a space.
+	(Creating Buffers): Document that undo is turned off in buffers
+	whose names begin with a space.
+
+	* files.texi (Visiting Functions, Reading from Files)
+	(Saving Buffers): Mention code and EOL conversions by file I/O
+	primitives and subroutines.
+
+	* nonascii.texi (Lisp and Coding Systems): Document
+	coding-system-eol-type.  Add index entries for eol conversion.
+
+	* display.texi (Defining Faces): Mention `mac', and add an xref to
+	where window-system is described.
+
+2006-05-10  Richard Stallman  <rms@gnu.org>
+
+	* internals.texi (Writing Emacs Primitives): Clarify GCPRO rules.
+
 2006-05-10  Reiner Steib  <Reiner.Steib@gmx.de>
 
 	* variables.texi (File Local Variables): Recommend to quote lambda
--- a/lispref/buffers.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/buffers.texi	Wed May 17 07:46:49 2006 +0000
@@ -233,7 +233,9 @@
 with a temporary buffer as the current buffer.  It saves the identity of
 the current buffer, creates a temporary buffer and makes it current,
 evaluates the @var{body} forms, and finally restores the previous
-current buffer while killing the temporary buffer.
+current buffer while killing the temporary buffer.  By default, undo
+information (@pxref{Undo}) is not recorded in the buffer created by
+this macro (but @var{body} can enable that, if needed).
 
 The return value is the value of the last form in @var{body}.  You can
 return the contents of the temporary buffer by using
@@ -257,6 +259,8 @@
 Any argument called @var{buffer} must be an actual buffer
 object, not a name.
 
+@cindex hidden buffers
+@cindex buffers without undo information
   Buffers that are ephemeral and generally uninteresting to the user
 have names starting with a space, so that the @code{list-buffers} and
 @code{buffer-menu} commands don't mention them (but if such a buffer
@@ -908,8 +912,9 @@
 @end example
 
 The major mode for a newly created buffer is set to Fundamental mode.
-The variable @code{default-major-mode} is handled at a higher level.
-@xref{Auto Major Mode}.
+(The variable @code{default-major-mode} is handled at a higher level;
+see @ref{Auto Major Mode}.)  If the name begins with a space, the
+buffer initially disables undo information recording (@pxref{Undo}).
 @end defun
 
 @defun generate-new-buffer name
--- a/lispref/display.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/display.texi	Wed May 17 07:46:49 2006 +0000
@@ -1772,8 +1772,9 @@
 @item type
 The kind of window system the frame uses---either @code{graphic} (any
 graphics-capable display), @code{x}, @code{pc} (for the MS-DOS console),
-@code{w32} (for MS Windows 9X/NT), or @code{tty} (a non-graphics-capable
-display).
+@code{w32} (for MS Windows 9X/NT/2K/XP), @code{mac} (for the Macintosh
+display), or @code{tty} (a non-graphics-capable display).
+@xref{Window Systems, window-system}.
 
 @item class
 What kinds of colors the frame supports---either @code{color},
--- a/lispref/files.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/files.texi	Wed May 17 07:46:49 2006 +0000
@@ -114,21 +114,24 @@
 @end deffn
 
 @defun find-file-noselect filename &optional nowarn rawfile wildcards
-This function is the guts of all the file-visiting functions.  It finds
-or creates a buffer visiting the file @var{filename}, and returns it.
-It uses an existing buffer if there is one, and otherwise creates a new
-buffer and reads the file into it.  You may make the buffer current or
-display it in a window if you wish, but this function does not do so.
-
-If @var{wildcards} is non-@code{nil},
-then @code{find-file-noselect} expands wildcard
-characters in @var{filename} and visits all the matching files.
-
-When @code{find-file-noselect} uses an existing buffer, it first
-verifies that the file has not changed since it was last visited or
-saved in that buffer.  If the file has changed, then this function asks
-the user whether to reread the changed file.  If the user says
-@samp{yes}, any changes previously made in the buffer are lost.
+This function is the guts of all the file-visiting functions.  It
+returns a buffer visiting the file @var{filename}.  You may make the
+buffer current or display it in a window if you wish, but this
+function does not do so.
+
+The function returns an existing buffer if there is one; otherwise it
+creates a new buffer and reads the file into it.  When
+@code{find-file-noselect} uses an existing buffer, it first verifies
+that the file has not changed since it was last visited or saved in
+that buffer.  If the file has changed, this function asks the user
+whether to reread the changed file.  If the user says @samp{yes}, any
+edits previously made in the buffer are lost.
+
+Reading the file involves decoding the file's contents (@pxref{Coding
+Systems}), including end-of-line conversion, and format conversion
+(@pxref{Format Conversion}).  If @var{wildcards} is non-@code{nil},
+then @code{find-file-noselect} expands wildcard characters in
+@var{filename} and visits all the matching files.
 
 This function displays warning or advisory messages in various peculiar
 cases, unless the optional argument @var{nowarn} is non-@code{nil}.  For
@@ -145,10 +148,9 @@
 
 If the optional argument @var{rawfile} is non-@code{nil}, then
 @code{after-find-file} is not called, and the
-@code{find-file-not-found-functions} are not run in case of failure.  What's
-more, a non-@code{nil} @var{rawfile} value suppresses coding system
-conversion (@pxref{Coding Systems}) and format conversion (@pxref{Format
-Conversion}).
+@code{find-file-not-found-functions} are not run in case of failure.
+What's more, a non-@code{nil} @var{rawfile} value suppresses coding
+system conversion and format conversion.
 
 The @code{find-file-noselect} function usually returns the buffer that
 is visiting the file @var{filename}.  But, if wildcards are actually
@@ -395,11 +397,12 @@
 bits of the file that you write.  This is what @code{save-buffer}
 normally does. @xref{Making Backups,, Making Backup Files}.
 
-The hook functions in @code{write-file-functions} are also responsible for
-encoding the data (if desired): they must choose a suitable coding
-system (@pxref{Lisp and Coding Systems}), perform the encoding
-(@pxref{Explicit Encoding}), and set @code{last-coding-system-used} to
-the coding system that was used (@pxref{Encoding and I/O}).
+The hook functions in @code{write-file-functions} are also responsible
+for encoding the data (if desired): they must choose a suitable coding
+system and end-of-line conversion (@pxref{Lisp and Coding Systems}),
+perform the encoding (@pxref{Explicit Encoding}), and set
+@code{last-coding-system-used} to the coding system that was used
+(@pxref{Encoding and I/O}).
 
 If you set this hook locally in a buffer, it is assumed to be
 associated with the file or the way the contents of the buffer were
@@ -496,7 +499,8 @@
 the list @code{after-insert-file-functions}; see @ref{Saving
 Properties}.  Normally, one of the functions in the
 @code{after-insert-file-functions} list determines the coding system
-(@pxref{Coding Systems}) used for decoding the file's contents.
+(@pxref{Coding Systems}) used for decoding the file's contents,
+including end-of-line conversion.
 
 If @var{visit} is non-@code{nil}, this function additionally marks the
 buffer as unmodified and sets up various fields in the buffer so that it
--- a/lispref/hooks.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/hooks.texi	Wed May 17 07:46:49 2006 +0000
@@ -88,7 +88,7 @@
 
 @item calendar-load-hook
 @iftex
-@xref{Calendar Customizing,,, emacs-xtra}.
+@inforef{Calendar Customizing,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Calendar Customizing,,, emacs}.
@@ -131,7 +131,7 @@
 
 @item diary-display-hook
 @iftex
-@xref{Fancy Diary Display,,, emacs-xtra}.
+@inforef{Fancy Diary Display,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Fancy Diary Display,,, emacs}.
@@ -182,7 +182,7 @@
 
 @item initial-calendar-window-hook
 @iftex
-@xref{Calendar Customizing,,, emacs-xtra}.
+@inforef{Calendar Customizing,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Calendar Customizing,,, emacs}.
@@ -207,7 +207,7 @@
 
 @item list-diary-entries-hook
 @iftex
-@xref{Fancy Diary Display,,, emacs-xtra}.
+@inforef{Fancy Diary Display,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Fancy Diary Display,,, emacs}.
@@ -219,7 +219,7 @@
 
 @item mark-diary-entries-hook
 @iftex
-@xref{Fancy Diary Display,,, emacs-xtra}.
+@inforef{Fancy Diary Display,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Fancy Diary Display,,, emacs}.
@@ -239,7 +239,7 @@
 
 @item nongregorian-diary-listing-hook
 @iftex
-@xref{Hebrew/Islamic Entries,,, emacs-xtra}.
+@inforef{Hebrew/Islamic Entries,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Hebrew/Islamic Entries,,, emacs}.
@@ -247,7 +247,7 @@
 
 @item nongregorian-diary-marking-hook
 @iftex
-@xref{Hebrew/Islamic Entries,,, emacs-xtra}.
+@inforef{Hebrew/Islamic Entries,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Hebrew/Islamic Entries,,, emacs}.
@@ -266,7 +266,7 @@
 
 @item print-diary-entries-hook
 @iftex
-@xref{Diary Customizing,,, emacs-xtra}.
+@inforef{Diary Customizing,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Diary Customizing,,, emacs}.
@@ -297,7 +297,7 @@
 
 @item today-visible-calendar-hook
 @iftex
-@xref{Calendar Customizing,,, emacs-xtra}.
+@inforef{Calendar Customizing,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Calendar Customizing,,, emacs}.
@@ -305,7 +305,7 @@
 
 @item today-invisible-calendar-hook
 @iftex
-@xref{Calendar Customizing,,, emacs-xtra}.
+@infref{Calendar Customizing,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Calendar Customizing,,, emacs}.
--- a/lispref/internals.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/internals.texi	Wed May 17 07:46:49 2006 +0000
@@ -615,32 +615,37 @@
 values.  They have types @code{int} and @w{@code{Lisp_Object *}}.
 
   Within the function @code{For} itself, note the use of the macros
-@code{GCPRO1} and @code{UNGCPRO}.  @code{GCPRO1} is used to ``protect''
-a variable from garbage collection---to inform the garbage collector that
-it must look in that variable and regard its contents as an accessible
-object.  This is necessary whenever you call @code{Feval} or anything
-that can directly or indirectly call @code{Feval}.  At such a time, any
-Lisp object that you intend to refer to again must be protected somehow.
-@code{UNGCPRO} cancels the protection of the variables that are
-protected in the current function.  It is necessary to do this explicitly.
+@code{GCPRO1} and @code{UNGCPRO}.  @code{GCPRO1} is used to
+``protect'' a variable from garbage collection---to inform the garbage
+collector that it must look in that variable and regard its contents
+as an accessible object.  GC protection is necessary whenever you call
+@code{Feval} or anything that can directly or indirectly call
+@code{Feval}.  At such a time, any Lisp object that this function may
+refer to again must be protected somehow.
 
   It suffices to ensure that at least one pointer to each object is
-GC-protected; as long as the object is not recycled, all pointers to
-it remain valid.  So if you are sure that a local variable points to
-an object that will be preserved by some other pointer, that local
-variable does not need a @code{GCPRO}.  (Formerly, strings were an
-exception to this rule; in older Emacs versions, every pointer to a
-string needed to be marked by GC.)
+GC-protected; that way, the object cannot be recycled, so all pointers
+to it remain valid.  Thus, a particular local variable can do without
+protection if it is certain that the object it points to will be
+preserved by some other pointer (such as another local variable which
+has a @code{GCPRO})@footnote{Formerly, strings were a special
+exception; in older Emacs versions, every local variable that might
+point to a string needed a @code{GCPRO}.}.  Otherwise, the local
+variable needs a @code{GCPRO}.
 
   The macro @code{GCPRO1} protects just one local variable.  If you
-want to protect two, use @code{GCPRO2} instead; repeating
-@code{GCPRO1} will not work.  Macros, @code{GCPRO3}, @code{GCPRO4},
-@code{GCPRO5}, and @code{GCPRO6} also exist.  These macros implicitly
-use local variables such as @code{gcpro1}; you must declare these
-explicitly, with type @code{struct gcpro}.  Thus, if you use
+want to protect two variables, use @code{GCPRO2} instead; repeating
+@code{GCPRO1} will not work.  Macros @code{GCPRO3}, @code{GCPRO4},
+@code{GCPRO5}, and @code{GCPRO6} also exist.  All these macros
+implicitly use local variables such as @code{gcpro1}; you must declare
+these explicitly, with type @code{struct gcpro}.  Thus, if you use
 @code{GCPRO2}, you must declare @code{gcpro1} and @code{gcpro2}.
 Alas, we can't explain all the tricky details here.
 
+  @code{UNGCPRO} cancels the protection of the variables that are
+protected in the current function.  It is necessary to do this
+explicitly.
+
   Built-in functions that take a variable number of arguments actually
 accept two arguments at the C level: the number of Lisp arguments, and
 a @code{Lisp_Object *} pointer to a C vector containing those Lisp
--- a/lispref/minibuf.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/minibuf.texi	Wed May 17 07:46:49 2006 +0000
@@ -449,17 +449,20 @@
 history list symbol.  The variable @code{history-delete-duplicates}
 specifies whether to delete duplicates in history.
 
-@defun add-to-history history-var newelt &optional maxelt
-This function adds a new element @var{newelt} to the history list
-stored in the variable @var{history-var}, and returns the updated
-history list.  By default, the list length is limited by the value
-specified by @code{history-length} (described below), but the optional
-argument @var{maxelt} overrides that.  The possible values of
+@defun add-to-history history-var newelt &optional maxelt keep-all
+This function adds a new element @var{newelt}, if non-empty, to the
+history list stored in the variable @var{history-var}, and returns the
+updated history list.  By default, the list length is limited by the
+value specified by @code{history-length} (described below), but the
+optional argument @var{maxelt} overrides that.  The possible values of
 @var{maxelt} have the same meaning as the values of
 @code{history-length}.
 
-Duplicate members are removed from the history list, unless
-@code{history-delete-duplicates} is @code{nil}.
+Duplicate members are removed from the history list, if
+@code{history-delete-duplicates} is non-@code{nil}.
+
+If @var{keep-all} is non-@code{nil}, even an empty or duplicate
+@var{newelt} element is added to the history list.
 @end defun
 
 @defvar history-length
--- a/lispref/nonascii.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/nonascii.texi	Wed May 17 07:46:49 2006 +0000
@@ -805,6 +805,35 @@
 Otherwise it signals an error with condition @code{coding-system-error}.
 @end defun
 
+@cindex EOL conversion
+@cindex end-of-line conversion
+@cindex line end conversion
+@defun coding-system-eol-type coding-system
+This function returns the type of end-of-line (a.k.a.@: @dfn{eol})
+conversion used by @var{coding-system}.  If @var{coding-system}
+specifies a certain eol conversion, the return value is an integer 0,
+1, or 2, standing for @code{unix}, @code{dos}, and @code{mac},
+respectively.  If @var{coding-system} doesn't specify eol conversion
+explicitly, the return value is a vector of coding systems, each one
+with one of the possible eol conversion types, like this:
+
+@lisp
+(coding-system-eol-type 'latin-1)
+     @result{} [latin-1-unix latin-1-dos latin-1-mac]
+@end lisp
+
+@noindent
+If this function returns a vector, Emacs will decide, as part of the
+text encoding or decoding process, what eol conversion to use.  For
+decoding, the end-of-line format of the text is auto-detected, and the
+eol conversion is set to match it (e.g., DOS-style CRLF format will
+imply @code{dos} eol conversion).  For encoding, the eol conversion is
+taken from the appropriate default coding system (e.g.,
+@code{default-buffer-file-coding-system} for
+@code{buffer-file-coding-system}), or from the default eol conversion
+appropriate for the underlying platform.
+@end defun
+
 @defun coding-system-change-eol-conversion coding-system eol-type
 This function returns a coding system which is like @var{coding-system}
 except for its eol conversion, which is specified by @code{eol-type}.
@@ -1174,7 +1203,7 @@
 @code{no-conversion}.
 
   Here are the functions to perform explicit encoding or decoding.  The
-decoding functions produce sequences of bytes; the encoding functions
+encoding functions produce sequences of bytes; the decoding functions
 are meant to operate on sequences of bytes.  All of these functions
 discard text properties.
 
--- a/lispref/os.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/os.texi	Wed May 17 07:46:49 2006 +0000
@@ -271,18 +271,24 @@
 in the normal manner, by searching the @code{load-path} directories, and
 trying the @samp{.elc} and @samp{.el} suffixes.
 
-  The usual function of a terminal-specific library is to enable special
-keys to send sequences that Emacs can recognize.  It may also need to
-set or add to @code{function-key-map} if the Termcap entry does not
-specify all the terminal's function keys.  @xref{Terminal Input}.
+@cindex Termcap
+  The usual function of a terminal-specific library is to enable
+special keys to send sequences that Emacs can recognize.  It may also
+need to set or add to @code{function-key-map} if the Termcap or
+Terminfo entry does not specify all the terminal's function keys.
+@xref{Terminal Input}.
 
-@cindex Termcap
-  When the name of the terminal type contains a hyphen, only the part of
-the name before the first hyphen is significant in choosing the library
-name.  Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
-the @file{term/aaa} library.  If necessary, the library can evaluate
-@code{(getenv "TERM")} to find the full name of the terminal
-type.@refill
+  When the name of the terminal type contains a hyphen, and no library
+is found whose name is identical to the terminal's name, Emacs strips
+from the terminal's name the last hyphen and everything that follows
+it, and tries again.  This process is repeated until Emacs finds a
+matching library or until there are no more hyphens in the name (the
+latter means the terminal doesn't have any library specific to it).
+Thus, for example, if there are no @samp{aaa-48} and @samp{aaa-30}
+libraries, Emacs will try the same library @file{term/aaa.el} for
+terminal types @samp{aaa-48} and @samp{aaa-30-rv}.  If necessary, the
+library can evaluate @code{(getenv "TERM")} to find the full name of
+the terminal type.@refill
 
   Your init file can prevent the loading of the
 terminal-specific library by setting the variable
--- a/lispref/processes.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/processes.texi	Wed May 17 07:46:49 2006 +0000
@@ -1766,7 +1766,7 @@
 
 @item :host @var{host}
 Specify the host to connect to.  @var{host} should be a host name or
-internet address, as a string, or the symbol @code{local} to specify
+Internet address, as a string, or the symbol @code{local} to specify
 the local host.  If you specify @var{host} for a server, it must
 specify a valid address for the local host, and only clients
 connecting to that address will be accepted.
@@ -1988,7 +1988,7 @@
 @item (:type datagram)
 Non-@code{nil} if datagrams are supported.
 @item (:family local)
-Non-@code{nil} if local (aka ``UNIX domain'') sockets are supported.
+Non-@code{nil} if local (a.k.a.@: ``UNIX domain'') sockets are supported.
 @item (:family ipv6)
 Non-@code{nil} if IPv6 is supported.
 @item (:service t)
@@ -2039,7 +2039,7 @@
 
 @table @var
 @item addr
-The internet protocol address.
+The Internet protocol address.
 @item bcast
 The broadcast address.
 @item netmask
--- a/lispref/text.texi	Mon May 15 03:48:50 2006 +0000
+++ b/lispref/text.texi	Wed May 17 07:46:49 2006 +0000
@@ -1202,7 +1202,9 @@
   Most buffers have an @dfn{undo list}, which records all changes made
 to the buffer's text so that they can be undone.  (The buffers that
 don't have one are usually special-purpose buffers for which Emacs
-assumes that undoing is not useful.)  All the primitives that modify the
+assumes that undoing is not useful.  In particular, any buffer whose
+name begins with a space has its undo recording off by default,
+see @ref{Buffer Names}.)  All the primitives that modify the
 text in the buffer automatically add elements to the front of the undo
 list, which is in the variable @code{buffer-undo-list}.
 
--- a/man/ChangeLog	Mon May 15 03:48:50 2006 +0000
+++ b/man/ChangeLog	Wed May 17 07:46:49 2006 +0000
@@ -1,3 +1,37 @@
+2006-05-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* message.texi (Interface): Add tool bar customization.
+	(MIME): Index and text additions for mml-attach.
+	(MIME): Describe mml-dnd-protocol-alist and
+	mml-dnd-attach-options.
+
+	* gnus.texi (Oort Gnus): Reorder entries in sections.  Fix some
+	entries.
+	(Starting Up): Add references to "Emacs for Heathens" and to
+	"Finding the News".  Add user-full-name and user-mail-address.
+	(Group Buffer Format): Add tool bar customization and update.
+	(Summary Buffer): Add tool bar customization.
+	(Posting Styles): Add message-alternative-emails.
+
+2006-05-12  Glenn Morris  <rgm@gnu.org>
+
+	* calendar.texi (Displaying the Diary, Format of Diary File):
+	Refer to diary-view-entries, diary-list-entries,
+	diary-show-all-entries rather than obsolete aliases.
+
+2006-05-12  Eli Zaretskii  <eliz@gnu.org>
+
+	* calendar.texi (Calendar/Diary, Holidays, Displaying the Diary)
+	(Displaying the Diary, Special Diary Entries, Importing Diary): 
+	* building.texi (Compilation Shell): 
+	* buffers.texi (Several Buffers) [iftex]: Replace @xref's to
+	emacs-xtra with @inforef's.
+
+	* files.texi (Visiting): Fix wording.
+
+	* mule.texi (Coding Systems, Text Coding): More indexing.  Mention
+	that C-x RET f can set eol conversion.
+
 2006-05-09  Michael Albinus  <michael.albinus@gmx.de>
 
 	* tramp.texi (Filename completion): Improve wording.
--- a/man/buffers.texi	Mon May 15 03:48:50 2006 +0000
+++ b/man/buffers.texi	Wed May 17 07:46:49 2006 +0000
@@ -481,7 +481,7 @@
 Auto Revert mode applies to the @samp{*Buffer List*} buffer only if
 @code{global-auto-revert-non-file-buffers} is non-@code{nil}.
 @iftex
-@xref{Autorevert,,, emacs-xtra, Specialized Emacs Features}, for details.
+@inforef{Autorevert,, emacs-xtra}, for details.
 @end iftex
 @ifnottex
 @xref{Autorevert, global-auto-revert-non-file-buffers}, for details.
--- a/man/building.texi	Mon May 15 03:48:50 2006 +0000
+++ b/man/building.texi	Wed May 17 07:46:49 2006 +0000
@@ -323,7 +323,13 @@
 subprocesses; to work around this lack, @kbd{M-x compile} runs the
 compilation command synchronously on MS-DOS.  As a consequence, you must
 wait until the command finishes before you can do anything else in
-Emacs.  @xref{MS-DOS,,,emacs-xtra,Specialized Emacs Features}.
+Emacs.
+@iftex
+@inforef{MS-DOS,,emacs-xtra}.
+@end iftex
+@ifnottex
+@xref{MS-DOS}.
+@end ifnottex
 
 @node Grep Searching
 @section Searching with Grep under Emacs
--- a/man/calendar.texi	Mon May 15 03:48:50 2006 +0000
+++ b/man/calendar.texi	Wed May 17 07:46:49 2006 +0000
@@ -26,8 +26,8 @@
 
 @iftex
   This chapter describes the basic calendar features.
-@xref{Advanced Calendar/Diary Usage,,, emacs-xtra, Specialized Emacs
-Features}, for information about more specialized features.
+@inforef{Advanced Calendar/Diary Usage,, emacs-xtra}, for information
+about more specialized features.
 @end iftex
 
 @menu
@@ -451,8 +451,7 @@
 holidays in a different face (or places a @samp{*} after these dates, if
 display with multiple faces is not available).
 @iftex
-@xref{Calendar Customizing, calendar-holiday-marker,, emacs-xtra,
-Specialized Emacs Features}.
+@inforef{Calendar Customizing, calendar-holiday-marker, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Calendar Customizing, calendar-holiday-marker}.
@@ -998,11 +997,11 @@
 @table @kbd
 @item d
 Display all diary entries for the selected date
-(@code{view-diary-entries}).
+(@code{diary-view-entries}).
 @item Mouse-2 Diary
 Display all diary entries for the date you click on.
 @item s
-Display the entire diary file (@code{show-all-diary-entries}).
+Display the entire diary file (@code{diary-show-all-entries}).
 @item m
 Mark all visible dates that have diary entries
 (@code{mark-diary-entries}).
@@ -1017,7 +1016,7 @@
 @end table
 
 @kindex d @r{(Calendar mode)}
-@findex view-diary-entries
+@findex diary-view-entries
 @vindex view-diary-entries-initially
   Displaying the diary entries with @kbd{d} shows in a separate window
 the diary entries for the selected date in the calendar.  The mode line
@@ -1042,8 +1041,7 @@
 a different face (or places a @samp{+} after these dates, if display
 with multiple faces is not available).
 @iftex
-@xref{Calendar Customizing, diary-entry-marker,, emacs-xtra,
-Specialized Emacs Features}.
+@inforef{Calendar Customizing, diary-entry-marker, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Calendar Customizing, diary-entry-marker}.
@@ -1056,7 +1054,7 @@
 updating the calendar marks diary dates automatically.
 
 @kindex s @r{(Calendar mode)}
-@findex show-all-diary-entries
+@findex diary-show-all-entries
   To see the full diary file, rather than just some of the entries, use
 the @kbd{s} command.
 
@@ -1074,7 +1072,7 @@
 few days as well; the variable @code{number-of-diary-entries} specifies
 how many days to include.
 @iftex
-@xref{Diary Customizing,,, emacs-xtra, Specialized Emacs Features}.
+@inforef{Diary Customizing,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Diary Customizing, number-of-diary-entries}.
@@ -1154,7 +1152,7 @@
 visible line cannot cause problems, but editing at the end of a line may
 not do what you expect.  Deleting a line may delete other invisible
 entries that follow it.  Before editing the diary, it is best to display
-the entire file with @kbd{s} (@code{show-all-diary-entries}).
+the entire file with @kbd{s} (@code{diary-show-all-entries}).
 
 @node Date Formats
 @subsection Date Formats
@@ -1384,7 +1382,7 @@
 marking the entry in the calendar.  Most generally, sexp diary entries
 can perform arbitrary computations to determine when they apply.
 @iftex
-@xref{Sexp Diary Entries,,, emacs-xtra, Specialized Emacs Features}.
+@inforef{Sexp Diary Entries,, emacs-xtra}.
 @end iftex
 @ifnottex
 @inforef{Sexp Diary Entries}.
@@ -1509,7 +1507,7 @@
 You can use an @code{#include} directive to add the import file contents
 to the main diary file, if these are different files.
 @iftex
-@xref{Fancy Diary Display,,, emacs-xtra, Specialized Emacs Features}.
+@inforef{Fancy Diary Display,, emacs-xtra}.
 @end iftex
 @ifnottex
 @xref{Fancy Diary Display}.
--- a/man/files.texi	Mon May 15 03:48:50 2006 +0000
+++ b/man/files.texi	Wed May 17 07:46:49 2006 +0000
@@ -177,7 +177,7 @@
 
 @cindex files, visiting and saving
 @cindex saving files
-  @dfn{Visiting} a file means copying its contents into an Emacs
+  @dfn{Visiting} a file means reading its contents into an Emacs
 buffer so you can edit them.  Emacs makes a new buffer for each file
 that you visit.  We often say that this buffer ``is visiting'' that
 file, or that the buffer's ``visited file'' is that file.  Emacs
--- a/man/gnus.texi	Mon May 15 03:48:50 2006 +0000
+++ b/man/gnus.texi	Wed May 17 07:46:49 2006 +0000
@@ -926,11 +926,17 @@
 @chapter Starting Gnus
 @cindex starting up
 
+If you are haven't used Emacs much before using Gnus, read @ref{Emacs
+for Heathens} first.
+
 @kindex M-x gnus
 @findex gnus
 If your system administrator has set things up properly, starting Gnus
 and reading news is extremely easy---you just type @kbd{M-x gnus} in
-your Emacs.
+your Emacs.  If not, you should customize the variable
+@code{gnus-select-method} as described in @ref{Finding the News}.  For a
+minimal setup for posting should also customize the variables
+@code{user-full-name} and @code{user-mail-address}.
 
 @findex gnus-other-frame
 @kindex M-x gnus-other-frame
@@ -1704,6 +1710,15 @@
 * Group Highlighting::          Having nice colors in the group buffer.
 @end menu
 
+You can customize the Group Mode tool bar, see @kbd{M-x
+customize-apropos RET gnus-group-tool-bar}.  This feature is only
+available in Emacs.
+
+The tool bar icons are now (de)activated correctly depending on the
+cursor position.  Therefore, moving around in the Group Buffer is
+slower.  You can disable this via the variable
+@code{gnus-group-update-tool-bar}.  Its default value depends on your
+Emacs version.
 
 @node Group Line Specification
 @subsection Group Line Specification
@@ -4447,6 +4462,10 @@
 
 You can have as many summary buffers open as you wish.
 
+You can customize the Summary Mode tool bar, see @kbd{M-x
+customize-apropos RET gnus-summary-tool-bar}.  This feature is only
+available in Emacs.
+
 @kindex v (Summary)
 @cindex keys, reserved for users (Summary)
 The key @kbd{v} is reserved for users.  You can bind it key to some
@@ -11986,7 +12005,8 @@
 The @samp{nnml:.*} rule means that you use the @code{To} address as the
 @code{From} address in all your outgoing replies, which might be handy
 if you fill many roles.
-
+You may also use @code{message-alternative-emails} instead.
+@xref{Message Headers, ,Message Headers, message, Message Manual}.
 
 @node Drafts
 @section Drafts
@@ -26006,23 +26026,10 @@
 
 @itemize @bullet
 
-@item
-@kbd{F} (@code{gnus-article-followup-with-original}) and @kbd{R}
-(@code{gnus-article-reply-with-original}) only yank the text in the
-region if the region is active.
-
-@item
-@code{gnus-group-read-ephemeral-group} can be called interactively,
-using @kbd{G M}.
-
-@item
-In draft groups, @kbd{e} is now bound to @code{gnus-draft-edit-message}.
-Use @kbd{B w} for @code{gnus-summary-edit-article} instead.
-
-@item
-The revised Gnus @acronym{FAQ} is included in the manual,
-@xref{Frequently Asked Questions}.
-
+@item Installation changes
+@c ***********************
+
+@itemize @bullet
 @item
 Upgrading from previous (stable) version if you have used Oort.
 
@@ -26036,6 +26043,167 @@
 isn't save in general.
 
 @item
+New @file{make.bat} for compiling and installing Gnus under MS Windows
+
+Use @file{make.bat} if you want to install Gnus under MS Windows, the
+first argument to the batch-program should be the directory where
+@file{xemacs.exe} respectively @file{emacs.exe} is located, iff you want
+to install Gnus after compiling it, give @file{make.bat} @code{/copy} as
+the second parameter.
+
+@file{make.bat} has been rewritten from scratch, it now features
+automatic recognition of XEmacs and GNU Emacs, generates
+@file{gnus-load.el}, checks if errors occur while compilation and
+generation of info files and reports them at the end of the build
+process.  It now uses @code{makeinfo} if it is available and falls
+back to @file{infohack.el} otherwise.  @file{make.bat} should now
+install all files which are necessary to run Gnus and be generally a
+complete replacement for the @code{configure; make; make install}
+cycle used under Unix systems.
+
+The new @file{make.bat} makes @file{make-x.bat} and @file{xemacs.mak}
+superfluous, so they have been removed.
+
+@item
+@file{~/News/overview/} not used.
+
+As a result of the following change, the @file{~/News/overview/}
+directory is not used any more.  You can safely delete the entire
+hierarchy.
+
+@c FIXME: `gnus-load' is mentioned in README, which is not included in
+@c CVS.  We should find a better place for this item.
+@item
+@code{(require 'gnus-load)}
+
+If you use a stand-alone Gnus distribution, you'd better add
+@code{(require 'gnus-load)} into your @file{~/.emacs} after adding the Gnus
+lisp directory into load-path.
+
+File @file{gnus-load.el} contains autoload commands, functions and variables,
+some of which may not be included in distributions of Emacsen.
+
+@end itemize
+
+@item New packages and libraries within Gnus
+@c *****************************************
+
+@itemize @bullet
+
+@item
+The revised Gnus @acronym{FAQ} is included in the manual,
+@xref{Frequently Asked Questions}.
+
+@item
+@acronym{TLS} wrapper shipped with Gnus
+
+@acronym{TLS}/@acronym{SSL} is now supported in @acronym{IMAP} and
+@acronym{NNTP} via @file{tls.el} and GNUTLS.  The old
+@acronym{TLS}/@acronym{SSL} support via (external third party)
+@file{ssl.el} and OpenSSL still works.
+
+@item
+Improved anti-spam features.
+
+Gnus is now able to take out spam from your mail and news streams
+using a wide variety of programs and filter rules.  Among the supported
+methods are RBL blocklists, bogofilter and white/blacklists.  Hooks
+for easy use of external packages such as SpamAssassin and Hashcash
+are also new.  @xref{Thwarting Email Spam}.
+@c FIXME: @xref{Spam Package}?.  Should this be under Misc?
+
+@item
+Gnus supports server-side mail filtering using Sieve.
+
+Sieve rules can be added as Group Parameters for groups, and the
+complete Sieve script is generated using @kbd{D g} from the Group
+buffer, and then uploaded to the server using @kbd{C-c C-l} in the
+generated Sieve buffer.  @xref{Sieve Commands}, and the new Sieve
+manual @ref{Top, , Top, sieve, Emacs Sieve}.
+
+@end itemize
+
+@item Changes in group mode
+@c ************************
+
+@itemize @bullet
+
+@item
+@code{gnus-group-read-ephemeral-group} can be called interactively,
+using @kbd{G M}.
+
+@item
+Retrieval of charters and control messages
+
+There are new commands for fetching newsgroup charters (@kbd{H c}) and
+control messages (@kbd{H C}).
+
+@item
+The new variable @code{gnus-parameters} can be used to set group parameters.
+
+Earlier this was done only via @kbd{G p} (or @kbd{G c}), which stored
+the parameters in @file{~/.newsrc.eld}, but via this variable you can
+enjoy the powers of customize, and simplified backups since you set the
+variable in @file{~/.gnus.el} instead of @file{~/.newsrc.eld}.  The
+variable maps regular expressions matching group names to group
+parameters, a'la:
+@lisp
+(setq gnus-parameters
+      '(("mail\\..*"
+         (gnus-show-threads nil)
+         (gnus-use-scoring nil))
+        ("^nnimap:\\(foo.bar\\)$"
+         (to-group . "\\1"))))
+@end lisp
+
+@item
+Unread count correct in nnimap groups.
+
+The estimated number of unread articles in the group buffer should now
+be correct for nnimap groups.  This is achieved by calling
+@code{nnimap-fixup-unread-after-getting-new-news} from the
+@code{gnus-setup-news-hook} (called on startup) and
+@code{gnus-after-getting-new-news-hook}. (called after getting new
+mail).  If you have modified those variables from the default, you may
+want to add @code{nnimap-fixup-unread-after-getting-new-news} again.  If
+you were happy with the estimate and want to save some (minimal) time
+when getting new mail, remove the function.
+
+@item
+Group names are treated as UTF-8 by default.
+
+This is supposedly what USEFOR wanted to migrate to.  See
+@code{gnus-group-name-charset-group-alist} and
+@code{gnus-group-name-charset-method-alist} for customization.
+
+@item
+@code{gnus-group-charset-alist} and
+@code{gnus-group-ignored-charsets-alist}.
+
+The regexps in these variables are compared with full group names
+instead of real group names in 5.8.  Users who customize these
+variables should change those regexps accordingly.  For example:
+@lisp
+("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
+@end lisp
+
+@end itemize
+
+@item Changes in summary and article mode
+@c **************************************
+
+@itemize @bullet
+
+@item
+@kbd{F} (@code{gnus-article-followup-with-original}) and @kbd{R}
+(@code{gnus-article-reply-with-original}) only yank the text in the
+region if the region is active.
+
+@item
+In draft groups, @kbd{e} is now bound to @code{gnus-draft-edit-message}.
+Use @kbd{B w} for @code{gnus-summary-edit-article} instead.
+
+@item
 Article Buttons
 
 More buttons for URLs, mail addresses, Message-IDs, Info links, man
@@ -26044,17 +26212,6 @@
 appearance of all article buttons.  @xref{Article Button Levels}.
 
 @item
-Dired integration
-
-@code{gnus-dired-minor-mode} (see @ref{Other modes}) installs key
-bindings in dired buffers to send a file as an attachment, open a file
-using the appropriate mailcap entry, and print a file using the mailcap
-entry.
-
-@item
-Gnus can display RSS newsfeeds as a newsgroup.  @xref{RSS}.
-
-@item
 Single-part yenc encoded attachments can be decoded.
 
 @item
@@ -26072,27 +26229,6 @@
 boundary line is drawn at the end of the headers.
 
 @item
-Retrieval of charters and control messages
-
-There are new commands for fetching newsgroup charters (@kbd{H c}) and
-control messages (@kbd{H C}).
-
-@item
-Delayed articles
-
-You can delay the sending of a message with @kbd{C-c C-j} in the Message
-buffer.  The messages are delivered at specified time.  This is useful
-for sending yourself reminders.  @xref{Delayed Articles}.
-
-@item
-If @code{auto-compression-mode} is enabled, attachments are automatically
-decompressed when activated.
-
-@item
-If the new option @code{nnml-use-compressed-files} is non-@code{nil},
-the nnml back end allows compressed message files.
-
-@item
 Signed article headers (X-PGP-Sig) can be verified with @kbd{W p}.
 
 @item
@@ -26116,13 +26252,6 @@
 opposed to old but unread messages).
 
 @item
-The new option @code{gnus-gcc-mark-as-read} automatically marks
-Gcc articles as read.
-
-@item
-The nndoc back end now supports mailman digests and exim bounces.
-
-@item
 Gnus supports RFC 2369 mailing list headers, and adds a number of
 related commands in mailing list groups.  @xref{Mailing List}.
 
@@ -26131,54 +26260,10 @@
 in English.  @xref{Article Date}.
 
 @item
-The envelope sender address can be customized when using Sendmail.
-@xref{Mail Variables, Mail Variables,, message, Message Manual}.
-
-@item
 diffs are automatically highlighted in groups matching
 @code{mm-uu-diff-groups-regexp}
 
 @item
-@acronym{TLS} wrapper shipped with Gnus
-
-@acronym{TLS}/@acronym{SSL} is now supported in @acronym{IMAP} and
-@acronym{NNTP} via @file{tls.el} and GNUTLS.  The old
-@acronym{TLS}/@acronym{SSL} support via (external third party)
-@file{ssl.el} and OpenSSL still works.
-
-@item
-New @file{make.bat} for compiling and installing Gnus under MS Windows
-
-Use @file{make.bat} if you want to install Gnus under MS Windows, the
-first argument to the batch-program should be the directory where
-@file{xemacs.exe} respectively @file{emacs.exe} is located, iff you want
-to install Gnus after compiling it, give @file{make.bat} @code{/copy} as
-the second parameter.
-
-@file{make.bat} has been rewritten from scratch, it now features
-automatic recognition of XEmacs and GNU Emacs, generates
-@file{gnus-load.el}, checks if errors occur while compilation and
-generation of info files and reports them at the end of the build
-process.  It now uses @code{makeinfo} if it is available and falls
-back to @file{infohack.el} otherwise.  @file{make.bat} should now
-install all files which are necessary to run Gnus and be generally a
-complete replacement for the @code{configure; make; make install}
-cycle used under Unix systems.
-
-The new @file{make.bat} makes @file{make-x.bat} superfluous, so it has
-been removed.
-
-@item
-Support for non-@acronym{ASCII} domain names
-
-Message supports non-@acronym{ASCII} domain names in From:, To: and
-Cc: and will query you whether to perform encoding when you try to
-send a message.  The variable @code{message-use-idna} controls this.
-Gnus will also decode non-@acronym{ASCII} domain names in From:, To:
-and Cc: when you view a message.  The variable @code{gnus-use-idna}
-controls this.
-
-@item
 Better handling of Microsoft citation styles
 
 Gnus now tries to recognize the mangled header block that some Microsoft
@@ -26187,6 +26272,10 @@
 @code{gnus-cite-unsightly-citation-regexp} matches the start of these
 citations.
 
+The new command @kbd{W Y f}
+(@code{gnus-article-outlook-deuglify-article}) allows deuglifying broken
+Outlook (Express) articles.
+
 @item
 @code{gnus-article-skip-boring}
 
@@ -26200,33 +26289,119 @@
 message cited below.
 
 @item
-The format spec @code{%C} for positioning point has changed to @code{%*}.
-
-@item
-The new variable @code{gnus-parameters} can be used to set group parameters.
-
-Earlier this was done only via @kbd{G p} (or @kbd{G c}), which stored
-the parameters in @file{~/.newsrc.eld}, but via this variable you can
-enjoy the powers of customize, and simplified backups since you set the
-variable in @file{~/.gnus.el} instead of @file{~/.newsrc.eld}.  The
-variable maps regular expressions matching group names to group
-parameters, a'la:
-@lisp
-(setq gnus-parameters
-      '(("mail\\..*"
-         (gnus-show-threads nil)
-         (gnus-use-scoring nil))
-        ("^nnimap:\\(foo.bar\\)$"
-         (to-group . "\\1"))))
-@end lisp
-
-@item
-Smileys (@samp{:-)}, @samp{;-)} etc) are now iconized for Emacs too.
+Smileys (@samp{:-)}, @samp{;-)} etc) are now displayed graphically in
+Emacs too.
 
 Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.gnus.el} to
 disable it.
 
 @item
+Face headers handling.  @xref{Face}.
+
+@item
+In the summary buffer, the new command @kbd{/ N} inserts new messages
+and @kbd{/ o} inserts old messages.
+
+@item
+Gnus decodes morse encoded messages if you press @kbd{W m}.
+
+@item
+@code{gnus-summary-line-format}
+
+The default value changed to @samp{%U%R%z%I%(%[%4L: %-23,23f%]%)
+%s\n}.  Moreover @code{gnus-extra-headers},
+@code{nnmail-extra-headers} and @code{gnus-ignored-from-addresses}
+changed their default so that the users name will be replaced by the
+recipient's name or the group name posting to for @acronym{NNTP}
+groups.
+
+@item
+Deleting of attachments.
+
+The command @code{gnus-mime-save-part-and-strip} (bound to @kbd{C-o}
+on @acronym{MIME} buttons) saves a part and replaces the part with an
+external one.  @code{gnus-mime-delete-part} (bound to @kbd{d} on
+@acronym{MIME} buttons) removes a part.  It works only on back ends
+that support editing.
+
+@item
+@code{gnus-default-charset}
+
+The default value is determined from the
+@code{current-language-environment} variable, instead of
+@code{iso-8859-1}.  Also the @samp{.*} item in
+@code{gnus-group-charset-alist} is removed.
+
+@item
+Printing capabilities are enhanced.
+
+Gnus supports Muttprint natively with @kbd{O P} from the Summary and
+Article buffers.  Also, each individual @acronym{MIME} part can be
+printed using @kbd{p} on the @acronym{MIME} button.
+
+@item
+Extended format specs.
+
+Format spec @samp{%&user-date;} is added into
+@code{gnus-summary-line-format-alist}.  Also, user defined extended
+format specs are supported.  The extended format specs look like
+@samp{%u&foo;}, which invokes function
+@code{gnus-user-format-function-@var{foo}}.  Because @samp{&} is used as the
+escape character, old user defined format @samp{%u&} is no longer supported.
+
+@item
+@kbd{/ *} (@code{gnus-summary-limit-include-cached}) is rewritten.
+@c FIXME: Was this a user-visible change?
+
+It was aliased to @kbd{Y c}
+(@code{gnus-summary-insert-cached-articles}).  The new function filters
+out other articles.
+
+@item
+Some limiting commands accept a @kbd{C-u} prefix to negate the match.
+
+If @kbd{C-u} is used on subject, author or extra headers, i.e., @kbd{/
+s}, @kbd{/ a}, and @kbd{/ x}
+(@code{gnus-summary-limit-to-@{subject,author,extra@}}) respectively, the
+result will be to display all articles that do not match the expression.
+
+@item
+Gnus inlines external parts (message/external).
+
+@end itemize
+
+@item Changes in Message mode and related Gnus features
+@c ****************************************************
+
+@itemize @bullet
+
+@item
+Delayed articles
+
+You can delay the sending of a message with @kbd{C-c C-j} in the Message
+buffer.  The messages are delivered at specified time.  This is useful
+for sending yourself reminders.  @xref{Delayed Articles}.
+
+@item
+If the new option @code{nnml-use-compressed-files} is non-@code{nil},
+the nnml back end allows compressed message files.
+
+@item
+The new option @code{gnus-gcc-mark-as-read} automatically marks
+Gcc articles as read.
+
+@item
+Externalizing of attachments
+
+If @code{gnus-gcc-externalize-attachments} or
+@code{message-fcc-externalize-attachments} is non-@code{nil}, attach
+local files as external parts.
+
+@item
+The envelope sender address can be customized when using Sendmail.
+@xref{Mail Variables, Mail Variables,, message, Message Manual}.
+
+@item
 Gnus no longer generate the Sender: header automatically.
 
 Earlier it was generated iff the user configurable email address was
@@ -26255,39 +26430,7 @@
 @code{nil}.
 
 @item
-Improved anti-spam features.
-
-Gnus is now able to take out spam from your mail and news streams
-using a wide variety of programs and filter rules.  Among the supported
-methods are RBL blocklists, bogofilter and white/blacklists.  Hooks
-for easy use of external packages such as SpamAssassin and Hashcash
-are also new.  @xref{Thwarting Email Spam}.
-
-@item
-Easy inclusion of X-Faces headers.
-
-@item
-Face headers handling.
-
-@item
-In the summary buffer, the new command @kbd{/ N} inserts new messages
-and @kbd{/ o} inserts old messages.
-
-@item
-Gnus decodes morse encoded messages if you press @kbd{W m}.
-
-@item
-Unread count correct in nnimap groups.
-
-The estimated number of unread articles in the group buffer should now
-be correct for nnimap groups.  This is achieved by calling
-@code{nnimap-fixup-unread-after-getting-new-news} from the
-@code{gnus-setup-news-hook} (called on startup) and
-@code{gnus-after-getting-new-news-hook}. (called after getting new
-mail).  If you have modified those variables from the default, you may
-want to add @code{nnimap-fixup-unread-after-getting-new-news} again.  If
-you were happy with the estimate and want to save some (minimal) time
-when getting new mail, remove the function.
+Easy inclusion of X-Faces headers.  @xref{X-Face}.
 
 @item
 Group Carbon Copy (GCC) quoting
@@ -26304,64 +26447,6 @@
 was inserted directly.
 
 @item
-@file{~/News/overview/} not used.
-
-As a result of the following change, the @file{~/News/overview/}
-directory is not used any more.  You can safely delete the entire
-hierarchy.
-
-@item
-@code{gnus-agent}
-
-The Gnus Agent has seen a major updated and is now enabled by default,
-and all nntp and nnimap servers from @code{gnus-select-method} and
-@code{gnus-secondary-select-method} are agentized by default.  Earlier
-only the server in @code{gnus-select-method} was agentized by the
-default, and the agent was disabled by default.  When the agent is
-enabled, headers are now also retrieved from the Agent cache instead
-of the back ends when possible.  Earlier this only happened in the
-unplugged state.  You can enroll or remove servers with @kbd{J a} and
-@kbd{J r} in the server buffer.  Gnus will not download articles into
-the Agent cache, unless you instruct it to do so, though, by using
-@kbd{J u} or @kbd{J s} from the Group buffer.  You revert to the old
-behavior of having the Agent disabled with @code{(setq gnus-agent
-nil)}.  Note that putting @code{(gnus-agentize)} in @file{~/.gnus.el}
-is not needed any more.
-
-@item
-@code{gnus-summary-line-format}
-
-The default value changed to @samp{%U%R%z%I%(%[%4L: %-23,23f%]%)
-%s\n}.  Moreover @code{gnus-extra-headers},
-@code{nnmail-extra-headers} and @code{gnus-ignored-from-addresses}
-changed their default so that the users name will be replaced by the
-recipient's name or the group name posting to for @acronym{NNTP}
-groups.
-
-@item
-@file{deuglify.el} (@code{gnus-article-outlook-deuglify-article})
-
-A new file from Raymond Scholz @email{rscholz@@zonix.de} for deuglifying
-broken Outlook (Express) articles.
-
-@c FIXME: `gnus-load' is mentioned in README, which is not included in
-@c CVS.  We should find a better place for this item.
-@item
-@code{(require 'gnus-load)}
-
-If you use a stand-alone Gnus distribution, you'd better add
-@code{(require 'gnus-load)} into your @file{~/.emacs} after adding the Gnus
-lisp directory into load-path.
-
-File @file{gnus-load.el} contains autoload commands, functions and variables,
-some of which may not be included in distributions of Emacsen.
-
-@item
-@code{gnus-slave-unplugged}
-
-A new command which starts Gnus offline in slave mode.
-
-@item
 @code{message-insinuate-rmail}
 
 Adding @code{(message-insinuate-rmail)} and @code{(setq
@@ -26379,27 +26464,6 @@
 @end lisp
 
 @item
-Externalizing and deleting of attachments.
-
-If @code{gnus-gcc-externalize-attachments} or
-@code{message-fcc-externalize-attachments} is non-@code{nil}, attach
-local files as external parts.
-
-The command @code{gnus-mime-save-part-and-strip} (bound to @kbd{C-o}
-on @acronym{MIME} buttons) saves a part and replaces the part with an
-external one.  @code{gnus-mime-delete-part} (bound to @kbd{d} on
-@acronym{MIME} buttons) removes a part.  It works only on back ends
-that support editing.
-
-@item
-@code{gnus-default-charset}
-
-The default value is determined from the
-@code{current-language-environment} variable, instead of
-@code{iso-8859-1}.  Also the @samp{.*} item in
-@code{gnus-group-charset-alist} is removed.
-
-@item
 @code{gnus-posting-styles}
 
 Add a new format of match like
@@ -26421,13 +26485,6 @@
 need add those two headers too.
 
 @item
-Gnus reads the @acronym{NOV} and articles in the Agent if plugged.
-
-If one reads an article while plugged, and the article already exists
-in the Agent, it won't get downloaded once more.  @code{(setq
-gnus-agent-cache nil)} reverts to the old behavior.
-
-@item
 Gnus supports the ``format=flowed'' (RFC 2646) parameter.  On
 composing messages, it is enabled by @code{use-hard-newlines}.
 Decoding format=flowed was present but not documented in earlier
@@ -26444,18 +26501,6 @@
 This is invoked with the @kbd{C-c M-n} key binding from message mode.
 
 @item
-Gnus supports Maildir groups.
-
-Gnus includes a new back end @file{nnmaildir.el}.  @xref{Maildir}.
-
-@item
-Printing capabilities are enhanced.
-
-Gnus supports Muttprint natively with @kbd{O P} from the Summary and
-Article buffers.  Also, each individual @acronym{MIME} part can be
-printed using @kbd{p} on the @acronym{MIME} button.
-
-@item
 Message supports the Importance: (RFC 2156) header.
 
 In the message buffer, @kbd{C-c C-f C-i} or @kbd{C-c C-u} cycles through
@@ -26474,45 +26519,66 @@
 The behavior can be changed by customizing @code{message-insert-canlock}.
 
 @item
-Gnus supports server-side mail filtering using Sieve.
-
-Sieve rules can be added as Group Parameters for groups, and the
-complete Sieve script is generated using @kbd{D g} from the Group
-buffer, and then uploaded to the server using @kbd{C-c C-l} in the
-generated Sieve buffer.  @xref{Sieve Commands}, and the new Sieve
-manual @ref{Top, , Top, sieve, Emacs Sieve}.
-
-@item
-Extended format specs.
-
-Format spec @samp{%&user-date;} is added into
-@code{gnus-summary-line-format-alist}.  Also, user defined extended
-format specs are supported.  The extended format specs look like
-@samp{%u&foo;}, which invokes function
-@code{gnus-user-format-function-@var{foo}}.  Because @samp{&} is used as the
-escape character, old user defined format @samp{%u&} is no longer supported.
-
-@item
-@kbd{/ *} (@code{gnus-summary-limit-include-cached}) is rewritten.
-
-It was aliased to @kbd{Y c}
-(@code{gnus-summary-insert-cached-articles}).  The new function filters
-out other articles.
-
-@item
-Some limiting commands accept a @kbd{C-u} prefix to negate the match.
-
-If @kbd{C-u} is used on subject, author or extra headers, i.e., @kbd{/
-s}, @kbd{/ a}, and @kbd{/ x}
-(@code{gnus-summary-limit-to-@{subject,author,extra@}}) respectively, the
-result will be to display all articles that do not match the expression.
-
-@item
-Group names are treated as UTF-8 by default.
-
-This is supposedly what USEFOR wanted to migrate to.  See
-@code{gnus-group-name-charset-group-alist} and
-@code{gnus-group-name-charset-method-alist} for customization.
+Gnus supports @acronym{PGP} (RFC 1991/2440), @acronym{PGP/MIME} (RFC
+2015/3156) and @acronym{S/MIME} (RFC 2630-2633).
+
+It needs an external @acronym{S/MIME} and OpenPGP implementation, but no
+additional Lisp libraries.  This add several menu items to the
+Attachments menu, and @kbd{C-c RET} key bindings, when composing
+messages.  This also obsoletes @code{gnus-article-hide-pgp-hook}.
+
+@item
+@acronym{MML} (Mime compose) prefix changed from @kbd{M-m} to @kbd{C-c
+C-m}.
+
+This change was made to avoid conflict with the standard binding of
+@code{back-to-indentation}, which is also useful in message mode.
+
+@item
+The default for @code{message-forward-show-mml} changed to the symbol
+@code{best}.
+
+The behavior for the @code{best} value is to show @acronym{MML} (i.e.,
+convert to @acronym{MIME}) when appropriate.  @acronym{MML} will not be
+used when forwarding signed or encrypted messages, as the conversion
+invalidate the digital signature.
+
+@item
+If @code{auto-compression-mode} is enabled, attachments are automatically
+decompressed when activated.
+@c FIXME: Does this affect article or message mode?
+
+@item
+Support for non-@acronym{ASCII} domain names
+
+Message supports non-@acronym{ASCII} domain names in From:, To: and
+Cc: and will query you whether to perform encoding when you try to
+send a message.  The variable @code{message-use-idna} controls this.
+Gnus will also decode non-@acronym{ASCII} domain names in From:, To:
+and Cc: when you view a message.  The variable @code{gnus-use-idna}
+controls this.
+
+@item You can now drag and drop attachments to the Message buffer.
+See @code{mml-dnd-protocol-alist} and @code{mml-dnd-attach-options}.
+@xref{MIME, ,MIME, message, Message Manual}.
+@c New in 5.10.9 / 5.11
+
+@end itemize
+
+@item Changes in back ends
+@c ***********************
+
+@itemize @bullet
+@item
+Gnus can display RSS newsfeeds as a newsgroup.  @xref{RSS}.
+
+@item
+The nndoc back end now supports mailman digests and exim bounces.
+
+@item
+Gnus supports Maildir groups.
+
+Gnus includes a new back end @file{nnmaildir.el}.  @xref{Maildir}.
 
 @item
 The nnml and nnfolder back ends store marks for each groups.
@@ -26529,6 +26595,13 @@
 The new server variables @code{nnml-marks-is-evil} and
 @code{nnfolder-marks-is-evil} can be used to disable this feature.
 
+@end itemize
+
+@item Appearance
+@c *************
+
+@itemize @bullet
+
 @item
 The menu bar item (in Group and Summary buffer) named ``Misc'' has
 been renamed to ``Gnus''.
@@ -26540,42 +26613,65 @@
 message, Message Manual}).
 
 @item
-@code{gnus-group-charset-alist} and
-@code{gnus-group-ignored-charsets-alist}.
-
-The regexps in these variables are compared with full group names
-instead of real group names in 5.8.  Users who customize these
-variables should change those regexps accordingly.  For example:
-@lisp
-("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
-@end lisp
-
-@item
-Gnus supports @acronym{PGP} (RFC 1991/2440), @acronym{PGP/MIME} (RFC
-2015/3156) and @acronym{S/MIME} (RFC 2630-2633).
-
-It needs an external @acronym{S/MIME} and OpenPGP implementation, but no
-additional Lisp libraries.  This add several menu items to the
-Attachments menu, and @kbd{C-c RET} key bindings, when composing
-messages.  This also obsoletes @code{gnus-article-hide-pgp-hook}.
-
-@item
-Gnus inlines external parts (message/external).
-
-@item
-@acronym{MML} (Mime compose) prefix changed from @kbd{M-m} to @kbd{C-c
-C-m}.
-
-This change was made to avoid conflict with the standard binding of
-@code{back-to-indentation}, which is also useful in message mode.
-
-@item
-The default for @code{message-forward-show-mml} changed to symbol @code{best}.
-
-The behavior for the @code{best} value is to show @acronym{MML} (i.e.,
-convert to @acronym{MIME}) when appropriate.  @acronym{MML} will not be
-used when forwarding signed or encrypted messages, as the conversion
-invalidate the digital signature.
+The tool bars have been updated to use GNOME icons in Group, Summary and
+Message mode.  You can also customize the tool bars.  This is a new
+feature in Gnus 5.10.9.  (Only for Emacs, not in XEmacs.)
+
+@item The tool bar icons are now (de)activated correctly
+in the group buffer, see the variable @code{gnus-group-update-tool-bar}.
+Its default value depends on your Emacs version.  This is a new feature
+in Gnus 5.10.9.
+@end itemize
+
+
+@item Miscellaneous changes
+@c ************************
+
+@itemize @bullet
+
+@item
+@code{gnus-agent}
+
+The Gnus Agent has seen a major updated and is now enabled by default,
+and all nntp and nnimap servers from @code{gnus-select-method} and
+@code{gnus-secondary-select-method} are agentized by default.  Earlier
+only the server in @code{gnus-select-method} was agentized by the
+default, and the agent was disabled by default.  When the agent is
+enabled, headers are now also retrieved from the Agent cache instead
+of the back ends when possible.  Earlier this only happened in the
+unplugged state.  You can enroll or remove servers with @kbd{J a} and
+@kbd{J r} in the server buffer.  Gnus will not download articles into
+the Agent cache, unless you instruct it to do so, though, by using
+@kbd{J u} or @kbd{J s} from the Group buffer.  You revert to the old
+behavior of having the Agent disabled with @code{(setq gnus-agent
+nil)}.  Note that putting @code{(gnus-agentize)} in @file{~/.gnus.el}
+is not needed any more.
+
+@item
+Gnus reads the @acronym{NOV} and articles in the Agent if plugged.
+
+If one reads an article while plugged, and the article already exists
+in the Agent, it won't get downloaded once more.  @code{(setq
+gnus-agent-cache nil)} reverts to the old behavior.
+
+@item
+Dired integration
+
+@code{gnus-dired-minor-mode} (see @ref{Other modes}) installs key
+bindings in dired buffers to send a file as an attachment, open a file
+using the appropriate mailcap entry, and print a file using the mailcap
+entry.
+
+@item
+The format spec @code{%C} for positioning point has changed to @code{%*}.
+
+@item
+@code{gnus-slave-unplugged}
+
+A new command which starts Gnus offline in slave mode.
+
+@end itemize
+
 @end itemize
 
 @iftex
--- a/man/message.texi	Mon May 15 03:48:50 2006 +0000
+++ b/man/message.texi	Wed May 17 07:46:49 2006 +0000
@@ -97,6 +97,9 @@
 * Mailing Lists::        Send mail to mailing lists.
 @end menu
 
+You can customize the Message Mode tool bar, see @kbd{M-x
+customize-apropos RET message-tool-bar}.  This feature is only available
+in Emacs.
 
 @node New Mail Message
 @section New Mail Message
@@ -817,10 +820,24 @@
 automatically add the @code{Content-Type} and
 @code{Content-Transfer-Encoding} headers.
 
+@findex mml-attach
+@kindex C-c C-a
 The most typical thing users want to use the multipart things in
-@acronym{MIME} for is to add ``attachments'' to mail they send out.  This can
-be done with the @kbd{C-c C-a} command, which will prompt for a file
-name and a @acronym{MIME} type.
+@acronym{MIME} for is to add ``attachments'' to mail they send out.
+This can be done with the @kbd{C-c C-a} command (@kbd{M-x mml-attach}),
+which will prompt for a file name and a @acronym{MIME} type.
+
+@vindex mml-dnd-protocol-alist
+@vindex mml-dnd-attach-options
+If your Emacs supports drag and drop, you can also drop the file in the
+Message buffer.  The variable @code{mml-dnd-protocol-alist} specifies
+what kind of action is done when you drop a file into the Message
+buffer.  The variable @code{mml-dnd-attach-options} controls which
+@acronym{MIME} options you want to specify when dropping a file.  If it
+is a list, valid members are @code{type}, @code{description} and
+@code{disposition}.  @code{disposition} implies @code{type}.  If it is
+@code{nil}, don't ask for options.  If it is @code{t}, ask the user
+whether or not to specify options.
 
 You can also create arbitrarily complex multiparts using the @acronym{MML}
 language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME
--- a/man/mule.texi	Mon May 15 03:48:50 2006 +0000
+++ b/man/mule.texi	Wed May 17 07:46:49 2006 +0000
@@ -626,7 +626,8 @@
 @kindex C-h C
 @findex describe-coding-system
   The command @kbd{C-h C} (@code{describe-coding-system}) displays
-information about particular coding systems.  You can specify a coding
+information about particular coding systems, including the end-of-line
+conversion specified by those coding systems.  You can specify a coding
 system name as the argument; alternatively, with an empty argument, it
 describes the coding systems currently selected for various purposes,
 both in the current buffer and as the defaults, and the priority list
@@ -639,6 +640,7 @@
 (@pxref{Mode Line}).
 
 @cindex end-of-line conversion
+@cindex line endings
 @cindex MS-DOS end-of-line conversion
 @cindex Macintosh end-of-line conversion
   Each of the coding systems that appear in this list---except for
@@ -941,6 +943,13 @@
 you about the troublesome characters when you actually save the
 buffer.
 
+@cindex specify end-of-line conversion
+  You can also use this command to specify the end-of-line conversion
+(@pxref{Coding Systems, end-of-line conversion}) for encoding the
+current buffer.  For example, @kbd{C-x @key{RET} f dos @key{RET}} will
+cause Emacs to save the current buffer's text with DOS-style CRLF line
+endings.
+
 @kindex C-x RET c
 @findex universal-coding-system-argument
   Another way to specify the coding system for a file is when you visit
--- a/src/.arch-inventory	Mon May 15 03:48:50 2006 +0000
+++ b/src/.arch-inventory	Wed May 17 07:46:49 2006 +0000
@@ -2,7 +2,7 @@
 source ^\.(gdbinit|dbxinit)$
 
 # Auto-generated files, which ignore
-precious ^(config\.stamp|config\.h|epaths\.h)$
+precious ^(config\.stamp|config\.h|epaths\.h|buildobj\.lst)$
 
 backup ^(stamp-oldxmenu|prefix-args|temacs|emacs|emacs-[0-9.]*)$
 
--- a/src/ChangeLog	Mon May 15 03:48:50 2006 +0000
+++ b/src/ChangeLog	Wed May 17 07:46:49 2006 +0000
@@ -1,3 +1,54 @@
+2006-05-16  Kim F. Storm  <storm@cua.dk>
+
+	* xterm.c (handle_one_xevent): Check that f is not NULL before
+	calling x_kill_gs_process.
+
+2006-05-14  Richard Stallman  <rms@gnu.org>
+
+	* textprop.c (Fnext_single_char_property_change)
+	(Fprevious_single_char_property_change): Don't allow returning
+	value beyond LIMIT in any cases.
+	(Fnext_char_property_change, Fprevious_char_property_change): Doc fix.
+
+	* intervals.c (get_local_map): Abort if POSITION outside BEGV, ZV.
+
+2006-05-14  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* xterm.c (handle_one_xevent): Check that f is not NULL before
+	calling _XEditResCheckMessages.
+
+2006-05-14  Kim F. Storm  <storm@cua.dk>
+
+	* xterm.c (handle_one_xevent): Fix crash in 2006-03-24 change.
+
+2006-05-13  Eli Zaretskii  <eliz@gnu.org>
+
+	* frame.c (x_set_border_width): Fix error message to say "frame",
+	not "window".
+
+	* Makefile.in (SOME_MACHINE_LISP): Add fringe.elc.
+
+2006-05-12  Chong Yidong  <cyd@stupidchicken.com>
+
+	* intervals.c (set_point_both): Fix mixup before before and after
+	in variable names.
+
+	* editfns.c (Fline_beginning_position): Inhibit point-motion hooks
+	while setting point temporarily.
+
+2006-05-11  Richard Stallman  <rms@gnu.org>
+
+	* lread.c (readevalloop): Abort if START non-nil for non-buffer input.
+
+2006-05-11  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c (redisplay_tool_bar): Handle large tool-bar-border values.
+
+2006-05-11  Kenichi Handa  <handa@m17n.org>
+
+	* fileio.c (Finsert_file_contents): Fix for the case of IO error
+	while handling replace operation.
+
 2006-05-10  Kenichi Handa  <handa@m17n.org>
 
 	* xfaces.c (realize_default_face) [HAVE_X_WINDOWS]: If the font
--- a/src/Makefile.in	Mon May 15 03:48:50 2006 +0000
+++ b/src/Makefile.in	Wed May 17 07:46:49 2006 +0000
@@ -900,8 +900,8 @@
   ${dotdot}/lisp/w32-fns.elc ${dotdot}/lisp/dos-w32.elc \
   ${dotdot}/lisp/disp-table.elc ${dotdot}/lisp/dos-vars.elc \
   ${dotdot}/lisp/tooltip.elc ${dotdot}/lisp/image.elc \
-  ${dotdot}/lisp/dnd.elc ${dotdot}/lisp/mwheel.elc \
-  ${dotdot}/lisp/tool-bar.elc \
+  ${dotdot}/lisp/fringe.elc ${dotdot}/lisp/dnd.elc \
+  ${dotdot}/lisp/mwheel.elc ${dotdot}/lisp/tool-bar.elc \
   ${dotdot}/lisp/x-dnd.elc \
   ${dotdot}/lisp/international/ccl.elc \
   ${dotdot}/lisp/international/codepage.elc \
--- a/src/editfns.c	Mon May 15 03:48:50 2006 +0000
+++ b/src/editfns.c	Wed May 17 07:46:49 2006 +0000
@@ -821,6 +821,8 @@
      Lisp_Object n;
 {
   int orig, orig_byte, end;
+  int count = SPECPDL_INDEX ();
+  specbind (Qinhibit_point_motion_hooks, Qt);
 
   if (NILP (n))
     XSETFASTINT (n, 1);
@@ -834,6 +836,8 @@
 
   SET_PT_BOTH (orig, orig_byte);
 
+  unbind_to (count, Qnil);
+
   /* Return END constrained to the current input field.  */
   return Fconstrain_to_field (make_number (end), make_number (orig),
 			      XINT (n) != 1 ? Qt : Qnil,
--- a/src/fileio.c	Mon May 15 03:48:50 2006 +0000
+++ b/src/fileio.c	Wed May 17 07:46:49 2006 +0000
@@ -4293,13 +4293,8 @@
 	 if we couldn't read the file.  */
 
       if (how_much < 0)
-	{
-	  if (how_much == -1)
-	    error ("IO error reading %s: %s",
-		   SDATA (orig_filename), emacs_strerror (errno));
-	  else if (how_much == -2)
-	    error ("maximum buffer size exceeded");
-	}
+	error ("IO error reading %s: %s",
+	       SDATA (orig_filename), emacs_strerror (errno));
 
       if (unprocessed > 0)
 	{
--- a/src/frame.c	Mon May 15 03:48:50 2006 +0000
+++ b/src/frame.c	Wed May 17 07:46:49 2006 +0000
@@ -3142,7 +3142,7 @@
 
 #ifndef MAC_OS
   if (FRAME_X_WINDOW (f) != 0)
-    error ("Cannot change the border width of a window");
+    error ("Cannot change the border width of a frame");
 #endif /* MAC_TODO */
 
   f->border_width = XINT (arg);
--- a/src/intervals.c	Mon May 15 03:48:50 2006 +0000
+++ b/src/intervals.c	Wed May 17 07:46:49 2006 +0000
@@ -2196,36 +2196,38 @@
       Lisp_Object leave_after, leave_before, enter_after, enter_before;
 
       if (fromprev)
-	leave_after = textget (fromprev->plist, Qpoint_left);
+	leave_before = textget (fromprev->plist, Qpoint_left);
+      else
+	leave_before = Qnil;
+
+      if (from)
+	leave_after = textget (from->plist, Qpoint_left);
       else
 	leave_after = Qnil;
-      if (from)
-	leave_before = textget (from->plist, Qpoint_left);
-      else
-	leave_before = Qnil;
 
       if (toprev)
-	enter_after = textget (toprev->plist, Qpoint_entered);
+	enter_before = textget (toprev->plist, Qpoint_entered);
+      else
+	enter_before = Qnil;
+
+      if (to)
+	enter_after = textget (to->plist, Qpoint_entered);
       else
 	enter_after = Qnil;
-      if (to)
-	enter_before = textget (to->plist, Qpoint_entered);
-      else
-	enter_before = Qnil;
 
       if (! EQ (leave_before, enter_before) && !NILP (leave_before))
-	call2 (leave_before, make_number (old_position),
-	       make_number (charpos));
+      	call2 (leave_before, make_number (old_position),
+      	       make_number (charpos));
       if (! EQ (leave_after, enter_after) && !NILP (leave_after))
-	call2 (leave_after, make_number (old_position),
-	       make_number (charpos));
+      	call2 (leave_after, make_number (old_position),
+      	       make_number (charpos));
 
       if (! EQ (enter_before, leave_before) && !NILP (enter_before))
-	call2 (enter_before, make_number (old_position),
-	       make_number (charpos));
+      	call2 (enter_before, make_number (old_position),
+      	       make_number (charpos));
       if (! EQ (enter_after, leave_after) && !NILP (enter_after))
-	call2 (enter_after, make_number (old_position),
-	       make_number (charpos));
+      	call2 (enter_after, make_number (old_position),
+      	       make_number (charpos));
     }
 }
 
@@ -2339,7 +2341,9 @@
 /* Return the proper local keymap TYPE for position POSITION in
    BUFFER; TYPE should be one of `keymap' or `local-map'.  Use the map
    specified by the PROP property, if any.  Otherwise, if TYPE is
-   `local-map' use BUFFER's local map.  */
+   `local-map' use BUFFER's local map.
+
+   POSITION must be in the accessible part of BUFFER.  */
 
 Lisp_Object
 get_local_map (position, buffer, type)
@@ -2351,7 +2355,7 @@
   int old_begv, old_zv, old_begv_byte, old_zv_byte;
 
   /* Perhaps we should just change `position' to the limit.  */
-  if (position > BUF_Z (buffer) || position < BUF_BEG (buffer))
+  if (position > BUF_ZV (buffer) || position < BUF_BEGV (buffer))
     abort ();
 
   /* Ignore narrowing, so that a local map continues to be valid even if
--- a/src/lread.c	Mon May 15 03:48:50 2006 +0000
+++ b/src/lread.c	Wed May 17 07:46:49 2006 +0000
@@ -1534,7 +1534,9 @@
 /* UNIBYTE specifies how to set load_convert_to_unibyte
    for this invocation.
    READFUN, if non-nil, is used instead of `read'.
-   START, END is region in current buffer (from eval-region).  */
+
+   START, END specify region to read in current buffer (from eval-region).
+   If the input is not from a buffer, they must be nil.  */
 
 static void
 readevalloop (readcharfun, stream, sourcename, evalfun,
@@ -1570,6 +1572,10 @@
   else if (MARKERP (readcharfun))
     b = XMARKER (readcharfun)->buffer;
 
+  /* We assume START is nil when input is not from a buffer.  */
+  if (! NILP (start) && !b)
+    abort ();
+
   specbind (Qstandard_input, readcharfun); /* GCPROs readcharfun.  */
   specbind (Qcurrent_load_list, Qnil);
   record_unwind_protect (readevalloop_1, load_convert_to_unibyte ? Qt : Qnil);
--- a/src/textprop.c	Mon May 15 03:48:50 2006 +0000
+++ b/src/textprop.c	Wed May 17 07:46:49 2006 +0000
@@ -717,10 +717,11 @@
 This scans characters forward in the current buffer from POSITION till
 it finds a change in some text property, or the beginning or end of an
 overlay, and returns the position of that.
-If none is found, the function returns (point-max).
+If none is found up to (point-max), the function returns (point-max).
 
 If the optional second argument LIMIT is non-nil, don't search
-past position LIMIT; return LIMIT if nothing is found before LIMIT.  */)
+past position LIMIT; return LIMIT if nothing is found before LIMIT.
+LIMIT is a no-op if it is greater than (point-max).  */)
      (position, limit)
      Lisp_Object position, limit;
 {
@@ -742,10 +743,11 @@
 Scans characters backward in the current buffer from POSITION till it
 finds a change in some text property, or the beginning or end of an
 overlay, and returns the position of that.
-If none is found, the function returns (point-max).
+If none is found since (point-min), the function returns (point-min).
 
 If the optional second argument LIMIT is non-nil, don't search
-past position LIMIT; return LIMIT if nothing is found before LIMIT.  */)
+past position LIMIT; return LIMIT if nothing is found before LIMIT.
+LIMIT is a no-op if it is less than (point-min).  */)
      (position, limit)
      Lisp_Object position, limit;
 {
@@ -771,6 +773,9 @@
 the current buffer), POSITION is a buffer position (integer or marker).
 If OBJECT is a string, POSITION is a 0-based index into it.
 
+In a string, scan runs to the end of the string.
+In a buffer, it runs to (point-max), and the value cannot exceed that.
+
 The property values are compared with `eq'.
 If the property is constant all the way to the end of OBJECT, return the
 last valid position in OBJECT.
@@ -812,23 +817,31 @@
       initial_value = Fget_char_property (position, prop, object);
 
       if (NILP (limit))
-	XSETFASTINT (limit, BUF_ZV (current_buffer));
+	XSETFASTINT (limit, ZV);
       else
 	CHECK_NUMBER_COERCE_MARKER (limit);
 
-      for (;;)
+      if (XFASTINT (position) >= XFASTINT (limit))
 	{
-	  position = Fnext_char_property_change (position, limit);
-	  if (XFASTINT (position) >= XFASTINT (limit)) {
-	    position = limit;
-	    break;
+	  position = limit;
+	  if (XFASTINT (position) > ZV)
+	    XSETFASTINT (position, ZV);
+	}
+      else
+	while (1)
+	  {
+	    position = Fnext_char_property_change (position, limit);
+	    if (XFASTINT (position) >= XFASTINT (limit))
+	      {
+		position = limit;
+		break;
+	      }
+
+	    value = Fget_char_property (position, prop, object);
+	    if (!EQ (value, initial_value))
+	      break;
 	  }
 
-	  value = Fget_char_property (position, prop, object);
-	  if (!EQ (value, initial_value))
-	    break;
-	}
-
       unbind_to (count, Qnil);
     }
 
@@ -845,6 +858,9 @@
 the current buffer), POSITION is a buffer position (integer or marker).
 If OBJECT is a string, POSITION is a 0-based index into it.
 
+In a string, scan runs to the start of the string.
+In a buffer, it runs to (point-min), and the value cannot be less than that.
+
 The property values are compared with `eq'.
 If the property is constant all the way to the start of OBJECT, return the
 first valid position in OBJECT.
@@ -883,19 +899,23 @@
       CHECK_NUMBER_COERCE_MARKER (position);
 
       if (NILP (limit))
-	XSETFASTINT (limit, BUF_BEGV (current_buffer));
+	XSETFASTINT (limit, BEGV);
       else
 	CHECK_NUMBER_COERCE_MARKER (limit);
 
       if (XFASTINT (position) <= XFASTINT (limit))
-	position = limit;
+	{
+	  position = limit;
+	  if (XFASTINT (position) < BEGV)
+	    XSETFASTINT (position, BEGV);
+	}
       else
 	{
-	  Lisp_Object initial_value =
-	    Fget_char_property (make_number (XFASTINT (position) - 1),
-				prop, object);
+	  Lisp_Object initial_value
+	    = Fget_char_property (make_number (XFASTINT (position) - 1),
+				  prop, object);
 
-	  for (;;)
+	  while (1)
 	    {
 	      position = Fprevious_char_property_change (position, limit);
 
@@ -906,9 +926,9 @@
 		}
 	      else
 		{
-		  Lisp_Object value =
-		    Fget_char_property (make_number (XFASTINT (position) - 1),
-					prop, object);
+		  Lisp_Object value
+		    = Fget_char_property (make_number (XFASTINT (position) - 1),
+					  prop, object);
 
 		  if (!EQ (value, initial_value))
 		    break;
--- a/src/xdisp.c	Mon May 15 03:48:50 2006 +0000
+++ b/src/xdisp.c	Wed May 17 07:46:49 2006 +0000
@@ -9829,7 +9829,7 @@
 	border = 0;
 
       rows = f->n_tool_bar_rows;
-      height = (it.last_visible_y - border) / rows;
+      height = max (1, (it.last_visible_y - border) / rows);
       extra = it.last_visible_y - border - height * rows;
 
       while (it.current_y < it.last_visible_y)
--- a/src/xterm.c	Mon May 15 03:48:50 2006 +0000
+++ b/src/xterm.c	Wed May 17 07:46:49 2006 +0000
@@ -5885,8 +5885,9 @@
 	    == dpyinfo->Xatom_editres)
           {
 	    f = x_any_window_to_frame (dpyinfo, event.xclient.window);
-            _XEditResCheckMessages (f->output_data.x->widget, NULL,
-                                    &event, NULL);
+	    if (f)
+              _XEditResCheckMessages (f->output_data.x->widget, NULL,
+                                      &event, NULL);
 	    goto done;
           }
 #endif /* HACK_EDITRES */
@@ -5902,6 +5903,8 @@
                images, only, which should have 1 page.  */
             Pixmap pixmap = (Pixmap) event.xclient.data.l[1];
 	    f = x_window_to_frame (dpyinfo, event.xclient.window);
+	    if (!f)
+	      goto OTHER;
             x_kill_gs_process (pixmap, f);
             expose_frame (f, 0, 0, 0, 0);
 	    goto done;
@@ -5920,10 +5923,8 @@
 #endif /* USE_TOOLKIT_SCROLL_BARS */
 
 	f = x_any_window_to_frame (dpyinfo, event.xclient.window);
-
 	if (!f)
 	  goto OTHER;
-
 	if (x_handle_dnd_message (f, &event.xclient, dpyinfo, &inev.ie))
 	  *finish = X_EVENT_DROP;
       }
@@ -6166,7 +6167,8 @@
       f = x_any_window_to_frame (dpyinfo, event.xkey.window);
 
       if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
-	  && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window))
+	  && (f == 0
+	      || !EQ (f->tool_bar_window, dpyinfo->mouse_face_window)))
         {
           clear_mouse_face (dpyinfo);
           dpyinfo->mouse_face_hidden = 1;