changeset 83517:b6689e223e2f

Merged from emacs@sv.gnu.org Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-273 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-274 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-275 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-276 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-277 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-278 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-279 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-280 Update etc/MORE.STUFF. * emacs@sv.gnu.org/emacs--devo--0--patch-281 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-282 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-283 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-284 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-101 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-557
author Karoly Lorentey <lorentey@elte.hu>
date Wed, 17 May 2006 18:05:02 +0000
parents 1321f6cfb389 (current diff) 2006f23b693c (diff)
children ab6ab63755f7
files admin/FOR-RELEASE lisp/ChangeLog lisp/allout.el lisp/emacs-lisp/bytecomp.el lisp/files.el lisp/help-fns.el lisp/international/mule.el lisp/progmodes/gdb-ui.el lisp/progmodes/idlw-shell.el lisp/progmodes/idlwave.el lisp/server.el lisp/simple.el lisp/subr.el lisp/term/mac-win.el lisp/term/xterm.el lisp/url/url-http.el lispref/ChangeLog man/ChangeLog src/.arch-inventory src/Makefile.in src/fileio.c src/frame.c src/image.c src/keymap.c src/lread.c src/macfns.c src/macterm.c src/macterm.h src/xdisp.c src/xfaces.c src/xterm.c
diffstat 84 files changed, 1763 insertions(+), 984 deletions(-) [+]
line wrap: on
line diff
--- a/admin/ChangeLog	Wed May 10 15:04:01 2006 +0000
+++ b/admin/ChangeLog	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/admin/FOR-RELEASE	Wed May 17 18:05:02 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.
 
@@ -36,8 +37,6 @@
 
 ** Is there a basic problem with cl-byte-compile-compiler-macro?
 
-** Cursor position display bug from Yamamoto Mistuharu, 11 Apr 2006.
-
 ** Markus Gritsch's report about Emacs looping on Windoze with the following
 .emacs file, and then reduce Emacs frame width to "something quite narrow":
 	(setq-default truncate-lines t)
--- a/etc/ChangeLog	Wed May 10 15:04:01 2006 +0000
+++ b/etc/ChangeLog	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/etc/MORE.STUFF	Wed May 17 18:05:02 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
@@ -217,8 +220,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	Wed May 10 15:04:01 2006 +0000
+++ b/etc/NEWS	Wed May 17 18:05:02 2006 +0000
@@ -1934,13 +1934,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	Wed May 10 15:04:01 2006 +0000
+++ b/etc/sk-refcard.tex	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lib-src/ChangeLog	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lib-src/makefile.w32-in	Wed May 17 18:05:02 2006 +0000
@@ -202,6 +202,7 @@
 	$(lispsource)international/latin-5.el \
 	$(lispsource)international/latin-8.el \
 	$(lispsource)international/latin-9.el \
+	$(lispsource)fringe.elc \
 	$(lispsource)image.elc \
 	$(lispsource)international/fontset.elc \
 	$(lispsource)dnd.elc \
--- a/lisp/ChangeLog	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/ChangeLog	Wed May 17 18:05:02 2006 +0000
@@ -1,3 +1,238 @@
+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):
+	Remove spurious move to point-max (new comint behavior fixes).
+
+	* 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.
+	`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
+	fontification issues.
+
+2006-05-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* term/mac-win.el (mac-font-panel-mode): Doc fix.
+	(mac-service-selection, mac-service-open-file)
+	(mac-service-open-selection, mac-service-mail-selection)
+	(mac-service-mail-to, mac-service-insert-text): Rename from
+	mac-services-*.  All uses changed.
+	(mac-apple-event-map): Rename event symbol `services' to `service'.
+
+2006-05-10  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* emacs-lisp/ewoc.el (ewoc--dll-create, ewoc--node-delete)
+	(ewoc--node-enter-first, ewoc--node-enter-last)
+	(ewoc--delete-node-internal): Merge funcs into unique callers.
+
+2006-05-09  Chong Yidong  <cyd@stupidchicken.com>
+
+	* emacs-lisp/crm.el (completing-read-multiple): Properly handle
+	return value of read-from-minibuffer for empty input.
+
 2006-05-09  Miles Bader  <miles@gnu.org>
 
 	* comint.el (comint-insert-input): Remove redundant calls to setq
--- a/lisp/allout.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/allout.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/arc-mode.el	Wed May 17 18:05:02 2006 +0000
@@ -1355,7 +1355,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 ?-)
@@ -1497,9 +1501,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))
     (set-buffer-multibyte default-enable-multibyte-characters)
--- a/lisp/calendar/appt.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/calendar/appt.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/calendar/cal-menu.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/calendar/calendar.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/calendar/diary-lib.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/comint.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/custom.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/desktop.el	Wed May 17 18:05:02 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: emacs-mule; -*-\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)
+          (eager desktop-restore-eager))
+      (with-temp-buffer
         (insert
-          "(setq kill-ring-yank-pointer (nthcdr "
-          (int-to-string (- (length kill-ring) (length kill-ring-yank-pointer)))
-          " kill-ring))\n"))
+         ";; -*- mode: emacs-lisp; coding: emacs-mule; -*-\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 'emacs-mule))
-        (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 'emacs-mule))
+          (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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/dired-x.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Wed May 17 18:05:02 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/crm.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/emacs-lisp/crm.el	Wed May 17 18:05:02 2006 +0000
@@ -592,25 +592,28 @@
 See the documentation for `completing-read' for details on the arguments:
 PROMPT, TABLE, PREDICATE, REQUIRE-MATCH, INITIAL-INPUT, HIST, DEF, and
 INHERIT-INPUT-METHOD."
-  (let ((minibuffer-completion-table (function crm-collection-fn))
-	(minibuffer-completion-predicate predicate)
-	;; see completing_read in src/minibuf.c
-	(minibuffer-completion-confirm
-	 (unless (eq require-match t) require-match))
-	(crm-completion-table table)
-	crm-last-exact-completion
-	crm-current-element
-	crm-left-of-element
-	crm-right-of-element
-	crm-beginning-of-element
-	crm-end-of-element
-	(map (if require-match
-		 crm-local-must-match-map
-	       crm-local-completion-map)))
-    (split-string (read-from-minibuffer
-		   prompt initial-input map
-		   nil hist def inherit-input-method)
-		  crm-separator)))
+  (let* ((minibuffer-completion-table (function crm-collection-fn))
+	 (minibuffer-completion-predicate predicate)
+	 ;; see completing_read in src/minibuf.c
+	 (minibuffer-completion-confirm
+	  (unless (eq require-match t) require-match))
+	 (crm-completion-table table)
+	 crm-last-exact-completion
+	 crm-current-element
+	 crm-left-of-element
+	 crm-right-of-element
+	 crm-beginning-of-element
+	 crm-end-of-element
+	 (map (if require-match
+		  crm-local-must-match-map
+		crm-local-completion-map))
+	 ;; If the user enters empty input, read-from-minibuffer returns
+	 ;; the empty string, not DEF.
+	 (input (read-from-minibuffer
+		 prompt initial-input map
+		 nil hist def inherit-input-method)))
+    (and def (string-equal input "") (setq input def))
+    (split-string input crm-separator)))
 
 ;; testing and debugging
 ;; (defun crm-init-test-environ ()
--- a/lisp/emacs-lisp/ewoc.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/emacs-lisp/ewoc.el	Wed May 17 18:05:02 2006 +0000
@@ -144,29 +144,6 @@
 
 \(fn NODE CHILD)")
 
-(defun ewoc--dll-create ()
-  "Create an empty doubly linked list."
-  (let ((dummy-node (ewoc--node-create 'DL-LIST 'DL-LIST)))
-    (setf (ewoc--node-right dummy-node) dummy-node)
-    (setf (ewoc--node-left dummy-node) dummy-node)
-    dummy-node))
-
-(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-enter-first (dll node)
-  "Add a free floating NODE first in DLL."
-  (ewoc--node-enter-before (ewoc--node-right dll) node))
-
-(defun ewoc--node-enter-last (dll node)
-  "Add a free floating NODE last in DLL."
-  (ewoc--node-enter-before dll node))
-
 (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)))
@@ -175,16 +152,6 @@
   "Return the node before NODE, or nil if NODE is the first node."
   (unless (eq (ewoc--node-left node) dll) (ewoc--node-left node)))
 
-(defun ewoc--node-delete (node)
-  "Unbind NODE from its doubly linked list and return it."
-  ;; This is a no-op when applied to the dummy node. This will return
-  ;; nil if applied to the dummy node since it always contains nil.
-  (setf (ewoc--node-right (ewoc--node-left node)) (ewoc--node-right node))
-  (setf (ewoc--node-left (ewoc--node-right node)) (ewoc--node-left node))
-  (setf (ewoc--node-left node) nil)
-  (setf (ewoc--node-right node) nil)
-  node)
-
 (defun ewoc--node-nth (dll n)
   "Return the Nth node from the doubly linked list DLL.
 N counts from zero. If DLL is not that long, nil is returned.
@@ -238,56 +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))))
-
-
-(defun ewoc--delete-node-internal (ewoc node)
-  "Delete a data string from EWOC.
-Can not be used on the footer.  Return the wrapper that is deleted.
-The start-marker in the wrapper is set to nil, so that it doesn't
-consume any more resources."
-  (let ((dll (ewoc--dll ewoc))
-	(inhibit-read-only t))
-    ;; If we are about to delete the node pointed at by last-node,
-    ;; set last-node to nil.
-    (if (eq (ewoc--last-node ewoc) node)
-	(setf (ewoc--last-node ewoc) nil))
-
-    (delete-region (ewoc--node-start-marker node)
-		   (ewoc--node-start-marker (ewoc--node-next dll node)))
-    (set-marker (ewoc--node-start-marker node) nil)
-    ;; Delete the node, and return the wrapper.
-    (ewoc--node-delete node)))
-
+      (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
@@ -309,25 +259,31 @@
 present at the top of the ewoc.  HEADER should end with a
 newline.  Optional third argument FOOTER is similar, and will
 be inserted at the bottom of the ewoc."
-  (let ((new-ewoc
-	 (ewoc--create (current-buffer)
-		       pretty-printer nil nil (ewoc--dll-create)))
-	(pos (point)))
+  (let* ((dummy-node (ewoc--node-create 'DL-LIST 'DL-LIST))
+         (dll (progn (setf (ewoc--node-right dummy-node) dummy-node)
+                     (setf (ewoc--node-left dummy-node) dummy-node)
+                     dummy-node))
+         (new-ewoc
+          (ewoc--create (current-buffer)
+                        pretty-printer nil nil dll))
+         (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-first dll head)
-	(ewoc--node-enter-last  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.
@@ -352,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.
@@ -381,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
@@ -402,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.
@@ -417,11 +369,27 @@
   (ewoc--set-buffer-bind-dll-let* ewoc
       ((node (ewoc--node-nth dll 1))
        (footer (ewoc--footer ewoc))
-       (next nil))
+       (next nil)
+       (L nil) (R nil)
+       (inhibit-read-only t))
     (while (not (eq node footer))
       (setq next (ewoc--node-next dll node))
       (unless (apply predicate (ewoc--node-data node) args)
-	(ewoc--delete-node-internal ewoc node))
+        ;; If we are about to delete the node pointed at by last-node,
+        ;; set last-node to nil.
+        (if (eq (ewoc--last-node ewoc) node)
+            (setf (ewoc--last-node ewoc) nil))
+        (delete-region (ewoc--node-start-marker node)
+                       (ewoc--node-start-marker (ewoc--node-next dll node)))
+        (set-marker (ewoc--node-start-marker node) nil)
+        (setf L (ewoc--node-left  node)
+              R (ewoc--node-right node)
+              ;; Link neighbors to each other.
+              (ewoc--node-right L) R
+              (ewoc--node-left  R) L
+              ;; Forget neighbors.
+              (ewoc--node-left  node) nil
+              (ewoc--node-right node) nil))
       (setq node next))))
 
 (defun ewoc-locate (ewoc &optional pos guess)
@@ -498,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.
@@ -551,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))))
@@ -597,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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/files.el	Wed May 17 18:05:02 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
@@ -2352,27 +2357,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)
 
@@ -4115,7 +4105,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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/help-fns.el	Wed May 17 18:05:02 2006 +0000
@@ -650,10 +650,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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/hexl.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/international/mule.el	Wed May 17 18:05:02 2006 +0000
@@ -1574,8 +1574,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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/newcomment.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/outline.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/progmodes/cc-compat.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/progmodes/cc-subword.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/progmodes/cc-vars.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/progmodes/compile.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/progmodes/gdb-ui.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/progmodes/gud.el	Wed May 17 18:05:02 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/progmodes/idlw-shell.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/progmodes/idlw-shell.el	Wed May 17 18:05:02 2006 +0000
@@ -1471,11 +1471,7 @@
     (if (eq t idlwave-shell-arrows-do-history) (goto-char proc-pos))
     (if (and idlwave-shell-arrows-do-history
 	     (>= (1+ (save-excursion (end-of-line) (point))) proc-pos))
-	(progn
-	  ;;(goto-char proc-pos)
-	  (goto-char (point-max))
-	  ;;(and (not (eolp)) (kill-line nil))
-	  (comint-previous-input arg))
+	(comint-previous-input arg)
       (previous-line arg))))
 
 (defun idlwave-shell-up-or-history (&optional arg)
--- a/lisp/progmodes/idlwave.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/progmodes/idlwave.el	Wed May 17 18:05:02 2006 +0000
@@ -1208,8 +1208,8 @@
        ;; Treats continuation lines, works only during whole buffer
        ;; fontification.  Slow, use it only in fancy fontification.
        (keyword-parameters
-	'("\\(,\\|[a-zA-Z0-9_](\\)[ \t]*\\(\\$[ \t]*\\(;.*\\)?\\(\n[ \t]*;.*\\)*\n[ \t]*\\)?\\(/[a-zA-Z_]\\sw*\\|[a-zA-Z_]\\sw*[ \t]*=\\)"
-	  (5 font-lock-reference-face)))
+	'("\\(,\\|[a-zA-Z0-9_](\\)[ \t]*\\(\\$[ \t]*\\(;.*\\)?\n\\([ \t]*\\(;.*\\)?\n\\)*[ \t]*\\)?\\(/[a-zA-Z_]\\sw*\\|[a-zA-Z_]\\sw*[ \t]*=\\)"
+	  (6 font-lock-reference-face)))
 
        ;; System variables start with a bang.
        (system-variables
@@ -1915,6 +1915,7 @@
   
   (set (make-local-variable 'comment-start-skip) ";+[ \t]*")
   (set (make-local-variable 'comment-start) ";")
+  (set (make-local-variable 'comment-add) 1) ; ";;" for new and regions
   (set (make-local-variable 'require-final-newline) t)
   (set (make-local-variable 'abbrev-all-caps) t)
   (set (make-local-variable 'indent-tabs-mode) nil)
@@ -1947,6 +1948,10 @@
   ;; Following line is for Emacs - XEmacs uses the corresponding property
   ;; on the `idlwave-mode' symbol.
   (set (make-local-variable 'font-lock-defaults) idlwave-font-lock-defaults)
+  (set (make-local-variable 'font-lock-mark-block-function)
+       'idlwave-mark-subprogram)
+  (set (make-local-variable 'font-lock-fontify-region-function)
+       'idlwave-font-lock-fontify-region)
 
   ;; Imenu setup
   (set (make-local-variable 'imenu-create-index-function)
@@ -1956,6 +1961,15 @@
   (set (make-local-variable 'imenu-prev-index-position-function)
        'idlwave-prev-index-position)
 
+  ;; HideShow setup
+  (add-to-list 'hs-special-modes-alist
+	       (list 'idlwave-mode
+		     idlwave-begin-block-reg
+		     idlwave-end-block-reg
+		     ";"
+		     'idlwave-forward-block nil))
+  
+
   ;; Make a local post-command-hook and add our hook to it
   ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
   ;; (make-local-hook 'post-command-hook)
@@ -2000,16 +2014,22 @@
     (idlwave-read-paths)  ; we may need these early
     (setq idlwave-setup-done t)))
 
+(defun idlwave-font-lock-fontify-region (beg end &optional verbose)
+  "Fontify continuation lines correctly."
+  (let (pos)
+    (save-excursion
+      (goto-char beg)
+      (forward-line -1)
+      (when (setq pos (idlwave-is-continuation-line))
+	(goto-char pos)
+	(idlwave-beginning-of-statement)
+	(setq beg (point)))))
+  (font-lock-default-fontify-region beg end verbose))
+
 ;;
 ;; Code Formatting ----------------------------------------------------
 ;; 
 
-(defun idlwave-push-mark (&rest rest)
-  "Push mark for compatibility with Emacs 18/19."
-  (if (fboundp 'iconify-frame)
-      (apply 'push-mark rest)
-    (push-mark)))
-
 (defun idlwave-hard-tab ()
   "Inserts TAB in buffer in current position."
   (interactive)
@@ -2403,7 +2423,7 @@
   (idlwave-end-of-statement)
   (let ((end (point)))
     (idlwave-beginning-of-statement)
-    (idlwave-push-mark end nil t)))
+    (push-mark end nil t)))
 
 (defun idlwave-mark-block ()
   "Mark containing block."
@@ -2414,7 +2434,7 @@
   (let ((end (point)))
     (idlwave-backward-block)
     (idlwave-beginning-of-statement)
-    (idlwave-push-mark end nil t)))
+    (push-mark end nil t)))
 
 
 (defun idlwave-mark-subprogram ()
@@ -2425,7 +2445,7 @@
   (idlwave-beginning-of-subprogram)
   (let ((beg (point)))
     (idlwave-forward-block)
-    (idlwave-push-mark beg nil t))
+    (push-mark beg nil t))
   (exchange-point-and-mark))
 
 (defun idlwave-backward-up-block (&optional arg)
@@ -2446,11 +2466,12 @@
   (idlwave-block-jump-out 1 'nomark)
   (backward-word 1))
 
-(defun idlwave-forward-block ()
+(defun idlwave-forward-block (&optional arg)
   "Move across next nested block."
   (interactive)
-  (if (idlwave-down-block 1)
-      (idlwave-block-jump-out 1 'nomark)))
+  (let ((arg (or arg 1)))
+    (if (idlwave-down-block arg)
+	(idlwave-block-jump-out arg 'nomark))))
 
 (defun idlwave-backward-block ()
   "Move backward across previous nested block."
@@ -2496,12 +2517,11 @@
 	  (if (re-search-forward idlwave-doclib-end nil t)
 	      (progn
 		(forward-line 1)
-		(idlwave-push-mark beg nil t)
+		(push-mark beg nil t)
 		(message "Could not find end of doc library header.")))
 	  (message "Could not find doc library header start.")
 	  (goto-char here)))))
 
-
 (defun idlwave-current-routine ()
   "Return (NAME TYPE CLASS) of current routine."
   (idlwave-routines)
@@ -3194,13 +3214,14 @@
   "Tests if current line is continuation line.
 Blank or comment-only lines following regular continuation lines (with
 `$') count as continuations too."
-  (save-excursion
-    (or 
-     (idlwave-look-at "\\<\\$")
-     (catch 'loop
-       (while (and (looking-at "^[ \t]*\\(;.*\\)?$") 
-		   (eq (forward-line -1) 0))
-	 (if (idlwave-look-at "\\<\\$") (throw 'loop t)))))))
+  (let (p)
+    (save-excursion
+      (or 
+       (idlwave-look-at "\\<\\$")
+       (catch 'loop
+	 (while (and (looking-at "^[ \t]*\\(;.*\\)?$") 
+		     (eq (forward-line -1) 0))
+	   (if (setq p (idlwave-look-at "\\<\\$")) (throw 'loop p))))))))
 
 (defun idlwave-is-comment-line ()
   "Tests if the current line is a comment line."
--- a/lisp/server.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/server.el	Wed May 17 18:05:02 2006 +0000
@@ -415,8 +415,6 @@
     ;; It is safe to get the user id now.
     (setq server-socket-dir (or server-socket-dir
 				(format "/tmp/emacs%d" (user-uid))))
-    ;; 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)))
@@ -427,10 +425,13 @@
     ;; If this Emacs already had a server, clear out associated status.
     (while server-clients
       (server-delete-client (car server-clients)))
+    ;; Now any previous server is properly stopped.
     (if leave-dead
 	(progn
 	  (server-log (message "Server stopped"))
 	  (setq server-process nil))
+      ;; 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"))
 	(server-log (message "Starting server")))
@@ -1028,7 +1029,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)
@@ -1114,16 +1115,17 @@
 
 (defun server-unload-hook ()
   "Unload the server library."
-  (server-start t)
+  (server-mode -1)
   (remove-hook 'suspend-tty-functions 'server-handle-suspend-tty)
   (remove-hook 'delete-frame-functions 'server-handle-delete-frame)
   (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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/simple.el	Wed May 17 18:05:02 2006 +0000
@@ -3638,7 +3638,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)
 
@@ -4050,6 +4051,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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/subr.el	Wed May 17 18:05:02 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/mac-win.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/term/mac-win.el	Wed May 17 18:05:02 2006 +0000
@@ -79,7 +79,7 @@
 (eval-when-compile (require 'url))
 
 (defvar mac-charset-info-alist)
-(defvar mac-services-selection)
+(defvar mac-service-selection)
 (defvar mac-system-script-code)
 (defvar mac-apple-event-map)
 (defvar mac-atsu-font-table)
@@ -1713,7 +1713,7 @@
 
 (define-minor-mode mac-font-panel-mode
   "Toggle use of the font panel.
-With numeric ARG, display the panel bar if and only if ARG is positive."
+With numeric ARG, display the font panel if and only if ARG is positive."
   :init-value nil
   :global t
   :group 'mac
@@ -1753,37 +1753,37 @@
 ) ;; (fboundp 'mac-set-font-panel-visibility)
 
 ;;; Services
-(defun mac-services-open-file ()
+(defun mac-service-open-file ()
   "Open the file specified by the selection value for Services."
   (interactive)
-  (find-file-existing (x-selection-value mac-services-selection)))
+  (find-file-existing (x-selection-value mac-service-selection)))
 
-(defun mac-services-open-selection ()
+(defun mac-service-open-selection ()
   "Create a new buffer containing the selection value for Services."
   (interactive)
   (switch-to-buffer (generate-new-buffer "*untitled*"))
-  (insert (x-selection-value mac-services-selection))
+  (insert (x-selection-value mac-service-selection))
   (sit-for 0)
   (save-buffer) ; It pops up the save dialog.
   )
 
-(defun mac-services-mail-selection ()
+(defun mac-service-mail-selection ()
   "Prepare a mail buffer containing the selection value for Services."
   (interactive)
   (compose-mail)
   (rfc822-goto-eoh)
   (forward-line 1)
-  (insert (x-selection-value mac-services-selection) "\n"))
+  (insert (x-selection-value mac-service-selection) "\n"))
 
-(defun mac-services-mail-to ()
+(defun mac-service-mail-to ()
   "Prepare a mail buffer to be sent to the selection value for Services."
   (interactive)
-  (compose-mail (x-selection-value mac-services-selection)))
+  (compose-mail (x-selection-value mac-service-selection)))
 
-(defun mac-services-insert-text ()
+(defun mac-service-insert-text ()
   "Insert the selection value for Services."
   (interactive)
-  (let ((text (x-selection-value mac-services-selection)))
+  (let ((text (x-selection-value mac-service-selection)))
     (if (not buffer-read-only)
 	(insert text)
       (kill-new text)
@@ -1791,15 +1791,17 @@
        (substitute-command-keys
 	"The text from the Services menu can be accessed with \\[yank]")))))
 
-(define-key mac-apple-event-map [services paste] 'mac-services-insert-text)
-(define-key mac-apple-event-map [services perform open-file]
-  'mac-services-open-file)
-(define-key mac-apple-event-map [services perform open-selection]
-  'mac-services-open-selection)
-(define-key mac-apple-event-map [services perform mail-selection]
-  'mac-services-mail-selection)
-(define-key mac-apple-event-map [services perform mail-to]
-  'mac-services-mail-to)
+;; kEventClassService/kEventServicePaste
+(define-key mac-apple-event-map [service paste] 'mac-service-insert-text)
+;; kEventClassService/kEventServicePerform
+(define-key mac-apple-event-map [service perform open-file]
+  'mac-service-open-file)
+(define-key mac-apple-event-map [service perform open-selection]
+  'mac-service-open-selection)
+(define-key mac-apple-event-map [service perform mail-selection]
+  'mac-service-mail-selection)
+(define-key mac-apple-event-map [service perform mail-to]
+  'mac-service-mail-to)
 
 (defun mac-dispatch-apple-event (event)
   "Dispatch EVENT according to the keymap `mac-apple-event-map'."
--- a/lisp/term/xterm.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/term/xterm.el	Wed May 17 18:05:02 2006 +0000
@@ -164,7 +164,7 @@
 
   ;; These keys will be available xterm starting probably from
   ;; version 214.
-  (define-key xterm-function-map "\e[27;5;8~"  [(control ?\t)])
+  (define-key xterm-function-map "\e[27;5;9~"  [(control ?\t)])
   (define-key xterm-function-map "\e[27;5;44~" [(control ?\,)])
   (define-key xterm-function-map "\e[27;5;46~" [(control ?\.)])
   (define-key xterm-function-map "\e[27;5;47~" [(control ?\/)])
--- a/lisp/textmodes/org.el	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/textmodes/org.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/url/ChangeLog	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lisp/url/url-http.el	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispintro/emacs-lisp-intro.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/ChangeLog	Wed May 17 18:05:02 2006 +0000
@@ -1,3 +1,58 @@
+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
+	expressions in safe-local-variable property.
+
 2006-05-09  Richard Stallman  <rms@gnu.org>
 
 	* variables.texi (File Local Variables): Document
--- a/lispref/buffers.texi	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/buffers.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/display.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/files.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/hooks.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/internals.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/minibuf.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/nonascii.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/os.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/processes.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/text.texi	Wed May 17 18:05:02 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/lispref/variables.texi	Wed May 10 15:04:01 2006 +0000
+++ b/lispref/variables.texi	Wed May 17 18:05:02 2006 +0000
@@ -1784,7 +1784,8 @@
 file variables standardly have @code{safe-local-variable} properties,
 including @code{fill-column}, @code{fill-prefix}, and
 @code{indent-tabs-mode}.  For boolean-valued variables that are safe,
-use @code{booleanp} as the property value.
+use @code{booleanp} as the property value.  Lambda expressions should
+be quoted so that @code{describe-variable} can display the predicate.
 
 @defopt safe-local-variable-values
 This variable provides another way to mark some variable values as
--- a/man/ChangeLog	Wed May 10 15:04:01 2006 +0000
+++ b/man/ChangeLog	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/man/buffers.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/man/building.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/man/calendar.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/man/files.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/man/gnus.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/man/message.texi	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/man/mule.texi	Wed May 17 18:05:02 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/man/texinfo.tex	Wed May 10 15:04:01 2006 +0000
+++ b/man/texinfo.tex	Wed May 17 18:05:02 2006 +0000
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2006-05-05.09}
+\def\texinfoversion{2006-05-07.15}
 %
 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
@@ -1237,9 +1237,10 @@
 \ifpdf
   \input pdfcolor
   \pdfcatalog{/PageMode /UseOutlines}%
+  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
   \def\dopdfimage#1#2#3{%
-    \def\imagewidth{#2}%
-    \def\imageheight{#3}%
+    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
     % without \immediate, pdftex seg faults when the same image is
     % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
     \ifnum\pdftexversion < 14
@@ -1247,8 +1248,8 @@
     \else
       \immediate\pdfximage
     \fi
-      \ifx\empty\imagewidth\else width \imagewidth \fi
-      \ifx\empty\imageheight\else height \imageheight \fi
+      \ifdim \wd0 >0pt width \imagewidth \fi
+      \ifdim \wd2 >0pt height \imageheight \fi
       \ifnum\pdftexversion<13
          #1.pdf%
        \else
--- a/src/.arch-inventory	Wed May 10 15:04:01 2006 +0000
+++ b/src/.arch-inventory	Wed May 17 18:05:02 2006 +0000
@@ -2,7 +2,8 @@
 source ^\.(gdbinit|dbxinit)$
 
 # Auto-generated files, which ignore
-precious ^(config\.stamp|config\.h|epaths\.h|TAGS-LISP)$
+precious ^(config\.stamp|config\.h|epaths\.h|buildobj\.lst)$
+precious ^(TAGS-LISP)$
 precious ^(buildobj\.lst)$
 
 backup ^(stamp-oldxmenu|prefix-args|temacs|emacs|emacs-[0-9.]*)$
--- a/src/ChangeLog	Wed May 10 15:04:01 2006 +0000
+++ b/src/ChangeLog	Wed May 17 18:05:02 2006 +0000
@@ -1,3 +1,93 @@
+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
+	chosen for the default face was different from the frame font,
+	adjust the frame font.
+
+2006-05-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* image.c (Qduration) [MAC_OS]: Undo previous change.
+	(syms_of_image) [MAC_OS]: Likewise.
+	[MAC_OS] (gif_load): Emulate Graphic Control Extension block.
+
+	* macfns.c (x_to_mac_color): Fix shift amount change.
+	[USE_MAC_FONT_PANEL] (mac_set_font): Use x_get_focus_frame.
+	[USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): Doc fix.
+
+	* macselect.c (Vmac_service_selection) [MAC_OSX]: Rename from
+	Vmac_services_selection.  All uses changed.
+	(mac_store_service_event): Rename from mac_store_services_event in
+	extern and calls.
+
+	* macterm.c (Qservice) [MAC_OSX]: Rename from Qservices.  All uses
+	changed.
+	[MAC_OSX] (mac_store_service_event): Rename from
+	mac_store_services_event.  All callers changed.
+	[USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): Add args
+	FACE_ID and C.  All callers changed.
+	(x_free_frame_resources) [USE_MAC_FONT_PANEL]: Call
+	mac_set_font_info_for_selection when focus frame is destroyed.
+	(XTread_socket): Revert to FrontNonFloatingWindow/FrontWindow.
+
+	* macterm.h (mac_set_font_info_for_selection): Add 2nd and 3rd
+	args in extern.
+
+2006-05-09  Chong Yidong  <cyd@stupidchicken.com>
+
+	* keymap.c (describe_map): Avoid generating duplicate entries if
+	the shadowed binding has the same definition.
+
 2006-05-09  Kenichi Handa  <handa@m17n.org>
 
 	* keymap.c (push_key_description): Handle invalid character key.
@@ -49,8 +139,8 @@
 	* macselect.c (mac_do_receive_drag): Remove unused variable `index'.
 	(mac_store_services_event): Change return type in extern.
 
-	* macterm.c (XLoadQueryFont) [USE_ATSUI]: Set FMFontFamily value
-	to font->mac_fontnum.
+	* macterm.c (XLoadQueryFont) [USE_ATSUI]: Set font->mac_fontnum to
+	FMFontFamily value.
 	[USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): New function.
 	(x_new_focus_frame) [USE_MAC_FONT_PANEL]: Use it.
 	(QCfamily, QCweight, QCslant, Qnormal, Qbold, Qitalic): Add extern.
@@ -61,7 +151,7 @@
 	(Qtoolbar_switch_mode) [MAC_OSX]: New variable.
 	(Qpanel_closed, Qselection) [USE_MAC_FONT_PANEL]: Likewise.
 	(syms_of_macterm): Intern and staticpro them.
-	(init_font_name_table) [USE_ATSUI]: Set data to Vmac_atsu_font_table.
+	(init_font_name_table) [USE_ATSUI]: Add data to Vmac_atsu_font_table.
 	[TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): New
 	function.
 	[USE_CARBON_EVENTS] (mac_handle_command_event): Use it.
--- a/src/Makefile.in	Wed May 10 15:04:01 2006 +0000
+++ b/src/Makefile.in	Wed May 17 18:05:02 2006 +0000
@@ -920,8 +920,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	Wed May 10 15:04:01 2006 +0000
+++ b/src/editfns.c	Wed May 17 18:05:02 2006 +0000
@@ -823,6 +823,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);
@@ -836,6 +838,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	Wed May 10 15:04:01 2006 +0000
+++ b/src/fileio.c	Wed May 17 18:05:02 2006 +0000
@@ -4327,11 +4327,8 @@
 	{
 	  xfree (conversion_buffer);
 	  coding_free_composition_data (&coding);
-	  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));
 	}
 
       /* Compare the beginning of the converted file
--- a/src/frame.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/frame.c	Wed May 17 18:05:02 2006 +0000
@@ -3445,7 +3445,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/image.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/image.c	Wed May 17 18:05:02 2006 +0000
@@ -7901,8 +7901,6 @@
 #else  /* !HAVE_GIF */
 
 #ifdef MAC_OS
-static Lisp_Object Qduration;
-
 static int
 gif_load (f, img)
      struct frame *f;
@@ -8069,9 +8067,21 @@
     DisposeHandle (dh);
 
   /* Save GIF image extension data for `image-extension-data'.
-     Format is (count IMAGES duration DURATION).  */
-  img->data.lisp_val = list4 (Qcount, make_number (nsamples), Qduration,
-			      make_float ((double)duration / time_scale));
+     Format is (count IMAGES 0xf9 GRAPHIC_CONTROL_EXTENSION_BLOCK).  */
+  {
+    unsigned char gce[4];
+    int centisec = ((float)duration / time_scale) * 100.0f + 0.5f;
+
+    /* Fill the delay time field.  */
+    gce[1] = centisec & 0xff;
+    gce[2] = (centisec >> 8) & 0xff;
+    /* We don't know about other fields.  */
+    gce[0] = gce[3] = 0;
+
+    img->data.lisp_val = list4 (Qcount, make_number (nsamples),
+				make_number (0xf9),
+				make_unibyte_string (gce, 4));
+  }
 
   /* Maybe fill in the background field while we have ximg handy. */
   if (NILP (image_spec_value (img->spec, QCbackground, NULL)))
@@ -8628,11 +8638,6 @@
   ADD_IMAGE_TYPE(Qgif);
 #endif
 
-#ifdef MAC_OS
-  Qduration = intern ("duration");
-  staticpro (&Qduration);
-#endif
-
 #if defined (HAVE_PNG) || defined (MAC_OS)
   Qpng = intern ("png");
   staticpro (&Qpng);
--- a/src/intervals.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/intervals.c	Wed May 17 18:05:02 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/keymap.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/keymap.c	Wed May 17 18:05:02 2006 +0000
@@ -3290,7 +3290,9 @@
 	      tem = shadow_lookup (shadow, kludge, Qt);
 	      if (!NILP (tem))
 		{
-		  if (mention_shadow)
+		  /* Avoid generating duplicate entries if the
+		     shadowed binding has the same definition. */
+		  if (mention_shadow && !EQ (tem, definition))
 		    this_shadowed = 1;
 		  else
 		    continue;
--- a/src/lread.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/lread.c	Wed May 17 18:05:02 2006 +0000
@@ -1342,7 +1342,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,
@@ -1378,6 +1380,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/macfns.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/macfns.c	Wed May 17 18:05:02 2006 +0000
@@ -1091,7 +1091,7 @@
       char *color;
       unsigned long colorval;
       int i, pos;
-      pos = 0;
+      pos = 16;
 
       colorval = 0;
       color = colorname + 4;
@@ -1127,7 +1127,7 @@
 	  if (value == ULONG_MAX)
 	    break;
 	  colorval |= (value << pos);
-	  pos += 0x8;
+	  pos -= 0x8;
 	  if (i == 2)
 	    {
 	      if (*end != '\0')
@@ -1146,7 +1146,7 @@
       char *color;
       unsigned long colorval;
       int i, pos;
-      pos = 0;
+      pos = 16;
 
       colorval = 0;
       color = colorname + 5;
@@ -1168,7 +1168,7 @@
 	  if (val == 0x100)
 	    val = 0xFF;
 	  colorval |= (val << pos);
-	  pos += 0x8;
+	  pos -= 0x8;
 	  if (i == 2)
 	    {
 	      if (*end != '\0')
@@ -1919,6 +1919,27 @@
   x_set_scroll_bar_width (f, arg, oldval);
 }
 
+static void
+mac_set_font (f, arg, oldval)
+     struct frame *f;
+     Lisp_Object arg, oldval;
+{
+  x_set_font (f, arg, oldval);
+#if USE_MAC_FONT_PANEL
+  {
+    Lisp_Object focus_frame = x_get_focus_frame (f);
+
+    if ((NILP (focus_frame) && f == SELECTED_FRAME ())
+	|| XFRAME (focus_frame) == f)
+      {
+	BLOCK_INPUT;
+	mac_set_font_info_for_selection (f, DEFAULT_FACE_ID, 0);
+	UNBLOCK_INPUT;
+      }
+  }
+#endif
+}
+
 #if TARGET_API_MAC_CARBON
 static void
 mac_update_proxy_icon (f)
@@ -2013,22 +2034,6 @@
 #endif
 }
 
-static void
-mac_set_font (f, arg, oldval)
-     struct frame *f;
-     Lisp_Object arg, oldval;
-{
-  x_set_font (f, arg, oldval);
-#if USE_MAC_FONT_PANEL
-  if (FRAME_MAC_DISPLAY_INFO (f)->x_focus_frame == f)
-    {
-      BLOCK_INPUT;
-      mac_set_font_info_for_selection (f);
-      UNBLOCK_INPUT;
-    }
-#endif
-}
-
 
 /* Subroutines of creating a frame.  */
 
@@ -4503,7 +4508,7 @@
 #if USE_MAC_FONT_PANEL
 DEFUN ("mac-set-font-panel-visibility", Fmac_set_font_panel_visibility,
        Smac_set_font_panel_visibility, 1, 1, 0,
-  doc: /* Set the font panel visibile if and only if VISIBLE is non-nil.
+  doc: /* Make the font panel visible if and only if VISIBLE is non-nil.
 This is for internal use only.  Use `mac-font-panel-mode' instead.  */)
      (visible)
      Lisp_Object visible;
--- a/src/macselect.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/macselect.c	Wed May 17 18:05:02 2006 +0000
@@ -101,7 +101,7 @@
 
 #ifdef MAC_OSX
 /* Selection name for communication via Services menu.  */
-static Lisp_Object Vmac_services_selection;
+static Lisp_Object Vmac_service_selection;
 #endif
 
 /* Get a reference to the scrap corresponding to the symbol SYM.  The
@@ -1349,7 +1349,7 @@
 				  GetEventTypeCount (specs), specs, NULL, NULL);
 }
 
-extern OSStatus mac_store_services_event P_ ((EventRef));
+extern OSStatus mac_store_service_event P_ ((EventRef));
 
 static OSStatus
 copy_scrap_flavor_data (from_scrap, to_scrap, flavor_type)
@@ -1406,12 +1406,12 @@
   Lisp_Object rest;
   ScrapFlavorType flavor_type;
 
-  /* Check if Vmac_services_selection is a valid selection that has a
+  /* Check if Vmac_service_selection is a valid selection that has a
      corresponding scrap.  */
-  if (!SYMBOLP (Vmac_services_selection))
+  if (!SYMBOLP (Vmac_service_selection))
     err = eventNotHandledErr;
   else
-    err = get_scrap_from_symbol (Vmac_services_selection, 0, &cur_scrap);
+    err = get_scrap_from_symbol (Vmac_service_selection, 0, &cur_scrap);
   if (!(err == noErr && cur_scrap))
     return eventNotHandledErr;
 
@@ -1448,7 +1448,7 @@
       if (err != noErr)
 	break;
 
-      if (NILP (Fx_selection_owner_p (Vmac_services_selection)))
+      if (NILP (Fx_selection_owner_p (Vmac_service_selection)))
 	break;
       else
 	goto copy_all_flavors;
@@ -1458,7 +1458,7 @@
 			       typeScrapRef, NULL,
 			       sizeof (ScrapRef), NULL, &specific_scrap);
       if (err != noErr
-	  || NILP (Fx_selection_owner_p (Vmac_services_selection)))
+	  || NILP (Fx_selection_owner_p (Vmac_service_selection)))
 	{
 	  err = eventNotHandledErr;
 	  break;
@@ -1533,7 +1533,7 @@
 	if (!data_exists_p)
 	  err = eventNotHandledErr;
 	else
-	  err = mac_store_services_event (event);
+	  err = mac_store_service_event (event);
       }
       break;
     }
@@ -1611,9 +1611,9 @@
 #endif
 
 #ifdef MAC_OSX
-  DEFVAR_LISP ("mac-services-selection", &Vmac_services_selection,
+  DEFVAR_LISP ("mac-service-selection", &Vmac_service_selection,
 	       doc: /* Selection name for communication via Services menu.  */);
-  Vmac_services_selection = intern ("PRIMARY");
+  Vmac_service_selection = intern ("PRIMARY");
 #endif
 
   QPRIMARY   = intern ("PRIMARY");	staticpro (&QPRIMARY);
--- a/src/macterm.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/macterm.c	Wed May 17 18:05:02 2006 +0000
@@ -4100,7 +4100,7 @@
 
 #if USE_MAC_FONT_PANEL
       if (frame)
-	mac_set_font_info_for_selection (frame);
+	mac_set_font_info_for_selection (frame, DEFAULT_FACE_ID, 0);
 #endif
     }
 
@@ -6348,7 +6348,12 @@
   f->output_data.mac = NULL;
 
   if (f == dpyinfo->x_focus_frame)
-    dpyinfo->x_focus_frame = 0;
+    {
+      dpyinfo->x_focus_frame = 0;
+#if USE_MAC_FONT_PANEL
+      mac_set_font_info_for_selection (NULL, DEFAULT_FACE_ID, 0);
+#endif
+    }
   if (f == dpyinfo->x_focus_event_frame)
     dpyinfo->x_focus_event_frame = 0;
   if (f == dpyinfo->x_highlight_frame)
@@ -8316,27 +8321,40 @@
 
 #if USE_MAC_FONT_PANEL
 OSStatus
-mac_set_font_info_for_selection (f)
+mac_set_font_info_for_selection (f, face_id, c)
      struct frame *f;
+     int face_id, c;
 {
   OSStatus err;
-
-  if (f == NULL)
-    err = SetFontInfoForSelection (kFontSelectionATSUIType, 0, NULL, NULL);
+  EventTargetRef target = NULL;
+  XFontStruct *font = NULL;
+
+  if (f)
+    {
+      target = GetWindowEventTarget (FRAME_MAC_WINDOW (f));
+
+      if (FRAME_FACE_CACHE (f) && CHAR_VALID_P (c, 0))
+	{
+	  struct face *face;
+
+	  face_id = FACE_FOR_CHAR (f, FACE_FROM_ID (f, face_id), c);
+	  face = FACE_FROM_ID (f, face_id);
+	  font = face->font;
+	}
+    }
+
+  if (font == NULL)
+    err = SetFontInfoForSelection (kFontSelectionATSUIType, 0, NULL, target);
   else
     {
-      struct face *default_face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
-      XFontStruct *ascii_font = default_face->ascii_face->font;
-      EventTargetRef target = GetWindowEventTarget (FRAME_MAC_WINDOW (f));
-
-      if (ascii_font->mac_fontnum != -1)
+      if (font->mac_fontnum != -1)
 	{
 	  FontSelectionQDStyle qd_style;
 
 	  qd_style.version = kFontSelectionQDStyleVersionZero;
-	  qd_style.instance.fontFamily = ascii_font->mac_fontnum;
-	  qd_style.instance.fontStyle = ascii_font->mac_fontface;
-	  qd_style.size = ascii_font->mac_fontsize;
+	  qd_style.instance.fontFamily = font->mac_fontnum;
+	  qd_style.instance.fontStyle = font->mac_fontface;
+	  qd_style.size = font->mac_fontsize;
 	  qd_style.hasColor = false;
 
 	  err = SetFontInfoForSelection (kFontSelectionQDType,
@@ -8344,7 +8362,7 @@
 	}
       else
 	err = SetFontInfoForSelection (kFontSelectionATSUIType,
-				       1, &ascii_font->mac_style, target);
+				       1, &font->mac_style, target);
     }
 
   return err;
@@ -8461,7 +8479,7 @@
 #if USE_CARBON_EVENTS
 #ifdef MAC_OSX
 extern void init_service_handler ();
-static Lisp_Object Qservices, Qpaste, Qperform;
+static Lisp_Object Qservice, Qpaste, Qperform;
 #endif
 /* Window Event Handler */
 static pascal OSStatus mac_handle_window_event (EventHandlerCallRef,
@@ -9379,7 +9397,7 @@
 
 #ifdef MAC_OSX
 OSStatus
-mac_store_services_event (event)
+mac_store_service_event (event)
      EventRef event;
 {
   OSStatus err;
@@ -9412,7 +9430,7 @@
       abort ();
     }
 
-  err = mac_store_event_ref_as_apple_event (0, 0, Qservices, id_key,
+  err = mac_store_event_ref_as_apple_event (0, 0, Qservice, id_key,
 					    event, num_params,
 					    names, types);
 
@@ -9930,8 +9948,13 @@
 		break;
 
 	      case inContent:
-		if (dpyinfo->x_focus_frame == NULL
-		    || window_ptr != FRAME_MAC_WINDOW (dpyinfo->x_focus_frame))
+		if (
+#if TARGET_API_MAC_CARBON
+		    FrontNonFloatingWindow ()
+#else
+		    FrontWindow ()
+#endif
+		    != window_ptr)
 		  SelectWindow (window_ptr);
 		else
 		  {
@@ -11035,7 +11058,7 @@
   Qselection    = intern ("selection");     staticpro (&Qselection);
 #endif
 
-  Qservices    = intern ("services");	  staticpro (&Qservices);
+  Qservice     = intern ("service");	  staticpro (&Qservice);
   Qpaste       = intern ("paste");	  staticpro (&Qpaste);
   Qperform     = intern ("perform");	  staticpro (&Qperform);
 #endif
--- a/src/macterm.h	Wed May 10 15:04:01 2006 +0000
+++ b/src/macterm.h	Wed May 17 18:05:02 2006 +0000
@@ -581,7 +581,7 @@
 extern void mac_clear_area P_ ((struct frame *, int, int,
 				unsigned int, unsigned int));
 extern void mac_unload_font P_ ((struct mac_display_info *, XFontStruct *));
-extern OSStatus mac_set_font_info_for_selection P_ ((struct frame *));
+extern OSStatus mac_set_font_info_for_selection P_ ((struct frame *, int, int));
 extern OSErr install_window_handler P_ ((WindowPtr));
 extern void remove_window_handler P_ ((WindowPtr));
 extern void do_menu_choice P_ ((SInt32));
--- a/src/textprop.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/textprop.c	Wed May 17 18:05:02 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	Wed May 10 15:04:01 2006 +0000
+++ b/src/xdisp.c	Wed May 17 18:05:02 2006 +0000
@@ -9724,7 +9724,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/xfaces.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/xfaces.c	Wed May 17 18:05:02 2006 +0000
@@ -7090,6 +7090,16 @@
   check_lface (lface);
   bcopy (XVECTOR (lface)->contents, attrs, sizeof attrs);
   face = realize_face (c, attrs, 0, NULL, DEFAULT_FACE_ID);
+
+#ifdef HAVE_WINDOW_SYSTEM
+#ifdef HAVE_X_WINDOWS  
+  if (face->font != FRAME_FONT (f))
+    /* As the font specified for the frame was not acceptable as a
+       font for the default face (perhaps because auto-scaled fonts
+       are rejected), we must adjust the frame font.  */
+    x_set_font (f, build_string (face->font_name), Qnil);
+#endif	/* HAVE_X_WINDOWS */
+#endif	/* HAVE_WINDOW_SYSTEM */
   return 1;
 }
 
--- a/src/xterm.c	Wed May 10 15:04:01 2006 +0000
+++ b/src/xterm.c	Wed May 17 18:05:02 2006 +0000
@@ -5816,8 +5816,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 */
@@ -5833,6 +5834,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;
@@ -5851,10 +5854,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;
       }
@@ -6097,7 +6098,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;