changeset 83286:9deb6323655c

Merged from miles@gnu.org--gnu-2005 (patch 59, 240-245) Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-240 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-241 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-242 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-243 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-244 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-245 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-59 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-326
author Karoly Lorentey <lorentey@elte.hu>
date Mon, 11 Apr 2005 12:40:15 +0000
parents 865f9b91fdbe (current diff) 014fcf8d4038 (diff)
children b4b67a7fcbe0
files admin/FOR-RELEASE lisp/ChangeLog lisp/files.el lisp/font-lock.el lisp/progmodes/vhdl-mode.el lisp/smerge-mode.el lisp/startup.el lisp/term/xterm.el lisp/url/url-ldap.el lisp/whitespace.el lispref/ChangeLog man/ChangeLog src/buffer.c src/dispnew.c src/emacs.c src/keyboard.c src/keymap.c src/lread.c src/print.c src/window.c
diffstat 88 files changed, 2075 insertions(+), 1135 deletions(-) [+]
line wrap: on
line diff
--- a/admin/FOR-RELEASE	Fri Apr 08 16:25:22 2005 +0000
+++ b/admin/FOR-RELEASE	Mon Apr 11 12:40:15 2005 +0000
@@ -35,8 +35,6 @@
 
 ** Clean up flymake.el to follow Emacs Lisp conventions.
 
-** Fix up url-ldap.el.
-
 * BUGS
 
 ** Ange-ftp should ignore irrelevant IPv6 errors:
@@ -179,7 +177,7 @@
 man/picture.texi    Joakim Verona <joakim@verona.se>   Chong Yidong
 man/programs.texi   "Stephen Eglen"  Chong Yidong
 man/regs.texi       "Luc Teirlinck"   Chong Yidong
-man/rmail.texi      Chong Yidong
+man/rmail.texi      Chong Yidong      "Luc Teirlinck"
 man/screen.texi     "Luc Teirlinck"   Chong Yidong
 man/search.texi     "Luc Teirlinck"   Chong Yidong
 man/sending.texi    Chong Yidong      "Luc Teirlinck"
--- a/etc/ChangeLog	Fri Apr 08 16:25:22 2005 +0000
+++ b/etc/ChangeLog	Mon Apr 11 12:40:15 2005 +0000
@@ -1,3 +1,12 @@
+2005-04-10  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* NEWS: Mention fontSet for Lucid menus.
+
+2005-04-10  Masatake YAMATO  <jet@gyve.org>
+
+	* compilation.txt (symbol): Added gcov-file 
+	gcov-bb-file gcov-never-called-line gcov-called-line .
+
 2005-04-08  Kenichi Handa  <handa@m17n.org>
 
 	* TUTORIAL.ja: Updated header, contents synchronized with
--- a/etc/NEWS	Fri Apr 08 16:25:22 2005 +0000
+++ b/etc/NEWS	Mon Apr 11 12:40:15 2005 +0000
@@ -351,12 +351,15 @@
 +++
 ** Telnet now prompts you for a port number with C-u M-x telnet.
 
-+++
-** New command line option -Q or --bare-bones.
+** New command line option -Q or --quick.
 
 This is like using -q --no-site-file, but in addition it also disables
-the menu-bar, the tool-bar, the scroll-bars, tool tips, the blinking
-cursor, and the fancy startup screen.
+the fancy startup screen.
+
+** New command line option -D or --basic-display.
+
+Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
+the blinking cursor.
 
 +++
 ** New command line option -nbc or --no-blinking-cursor disables
@@ -1205,6 +1208,11 @@
 ** The pop up menus for Lucid now stay up if you do a fast click and can
 be navigated with the arrow keys (like Gtk+, Mac and W32).
 
++++
+** The Lucid menus can display multilingual text in your locale.  You have
+to explicitly specify a fontSet resource for this to work, for example
+`-xrm "Emacs*fontSet:  -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
+
 ---
 ** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
 ESC, like they do for Gtk+, Mac and W32.
--- a/etc/compilation.txt	Fri Apr 08 16:25:22 2005 +0000
+++ b/etc/compilation.txt	Mon Apr 11 12:40:15 2005 +0000
@@ -341,6 +341,32 @@
 bloofle defined( /users/wolfgang/foo.c(4) ), but never used
 
 
+* GCOV (test coverage program)
+
+symbol: gcov-file gcov-bb-file gcov-never-called-line gcov-called-line 
+
+        -:    0:Source:foo.c
+        -:    0:Object:foo.bb
+        -:    1:/* $ gcc -fprofile-arcs -ftest-coverage foo.c 
+        -:    2:   $ ./a.out
+        -:    3:   $ gcov foo.c
+        -:    4:   LANG=C gcov foo.c
+        -:    5:   62.50% of 8 lines executed in file foo.c
+        -:    6:   Creating foo.c.gcov.*/
+        -:    7:int
+        -:    8:main(int argc, char ** argv)
+        1:    9:{
+        1:   10:  int r;
+        1:   11:  if (argc == 1)
+        1:   12:    r = 1;
+    #####:   13:  else if (argc == 2)
+    #####:   14:    r = 2;
+        -:   15:  else 
+    #####:   16:    r = 0;
+        1:   17:  return r;
+        -:   18:} 
+
+
 * Directory tracking
 
 Directories are matched via `compilation-directory-matcher'.  Files which are
--- a/lisp/ChangeLog	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/ChangeLog	Mon Apr 11 12:40:15 2005 +0000
@@ -1,3 +1,198 @@
+2005-04-10  Karl Fogel  <kfogel@red-bean.com>
+
+	* bookmark.el (bookmark-write-file): Catch errors writing file.
+	This is the same change as revision 1.30 of saveplace.el.
+
+2005-04-10  Richard M. Stallman  <rms@gnu.org>
+
+	* startup.el (fancy-splash-tail): Update copyright year.
+	(command-line): Split part of -Q into -D.
+	(emacs-basic-display): New defvar.
+	(fancy-splash-text): Correct name of menu item.
+
+	* saveplace.el (save-place-alist-to-file): Catch errors writing file.
+
+	* info.el (Info-fontify-node): Handle fontification of multiple * Menu
+	lines in one node.
+
+	* comint.el (comint-send-input): New arg ARTIFICIAL.
+	Callers in this file changed.
+
+	* abbrev.el (define-abbrevs): Read system abbrevs properly.
+
+	* emacs-lisp/map-ynp.el (map-y-or-n-p): Clarify RET/q in help message.
+
+2005-04-10  Chong Yidong  <cyd@stupidchicken.com>
+
+	* url/url-ldap.el (url-ldap): Add docstring.  Fix call to
+	`ldap-search-internal'.
+
+2005-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* files.el (set-auto-mode-1): Use line-end-position.
+
+	* international/latin-1.el:
+	* international/latin-2.el:
+	* international/latin-3.el:
+	* international/latin-4.el:
+	* international/latin-5.el:
+	* international/latin-8.el:
+	* international/latin-9.el: Give punctuation syntax to NBSP.
+
+	* textmodes/bibtex.el (bibtex-autokey-titleword-ignore)
+	(bibtex-reference-key, bibtex-autokey-demangle-name, bibtex-mode):
+	Use char-classes to accept non-ascii letters, accepted in some recent
+	bibtex implementations.
+
+2005-04-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* custom.el (custom-set-minor-mode): Any non-nil value for the
+	variable should enable the mode when set through Custom.
+
+2005-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/vhdl-mode.el (vhdl-mode-map-init): Don't override default
+	TAB binding so tab-always-indent is obeyed.
+	(vhdl-minibuffer-local-map): Move initialization into declaration.
+	(vhdl-mode-abbrev-table-init): Mark the abbrevs as `system'.
+	(vhdl-run-when-idle, vhdl-create-mode-menu, vhdl-character-to-event)
+	(vhdl-hooked-abbrev): Avoid test for XEmacs.
+	(vhdl-current-line): Use line-beginning-position.
+	(vhdl-doc-variable, vhdl-doc-mode): Call help-setup-xref before
+	with-output-to-temp-buffer, so the current position can be recorded.
+
+2005-04-10  Masatake YAMATO  <jet@gyve.org>
+
+	* progmodes/compile.el (compilation-error-regexp-alist-alist):
+	Add regexp for gcov.
+
+2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* calendar/time-date.el (time-to-seconds, seconds-to-time)
+	(days-to-time, time-subtract, time-add): Don't use the #xhhhh
+	syntax which Emacs 20 doesn't support.
+
+2005-04-09  Richard M. Stallman  <rms@gnu.org>
+
+	* help.el (describe-key-briefly, describe-key): Replace
+	strings as event types with "(any string)".
+
+2005-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* arc-mode.el (archive-mode-map): Move initialization into
+	the declaration.  Override *all* bindings of `undo'.
+	(archive-lemacs): Remove, use (featurep 'xemacs) instead.
+
+2005-04-09  Jay Belanger  <belanger@truman.edu>
+
+	* calc/calc-units.el (math-standard-units): Redefine Watt hour as W*hr.
+
+2005-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* term/xterm.el (xterm-rgb-convert-to-16bit): Simplify.
+	(xterm-register-default-colors): Update color values computation
+	to match xterm-200.
+
+2005-04-09  Kenichi Handa  <handa@m17n.org>
+
+	* international/code-pages.el (iso-latin-7): Fix the map.
+
+2005-04-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* emacs-lisp/lisp.el (defun-prompt-regexp)
+	(parens-require-spaces, buffer-end, end-of-defun)
+	(insert-parentheses): Doc fixes.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+	* comint.el (comint-highlight-prompt): Fix face spec.
+	* hi-lock.el (hi-green): Likewise.
+
+2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* cus-edit.el (custom-modified-face):
+	* comint.el (comint-highlight-input): Fix previous changes.
+	* term.el (term-handle-ansi-escape): Add a comment.
+
+2005-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* whitespace.el (whitespace-highlight-the-space): Put the same overlay
+	in the buffer and in whitespace-highlighted-space.
+	(whitespace-unhighlight-the-space): Simplify.
+	(whitespace-buffer): Simplify.
+
+2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* textmodes/table.el (table-cell-face): Add special case for
+	displays supporting a high number of colors.
+	* progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
+	(vhdl-font-lock-reserved-words-face)
+	(vhdl-speedbar-architecture-face)
+	(vhdl-speedbar-instantiation-face)
+	(vhdl-speedbar-architecture-selected-face)
+	(vhdl-speedbar-instantiation-selected-face): Likewise.
+	* progmodes/sh-script.el (sh-heredoc-face): Likewise.
+	* progmodes/idlw-help.el (idlwave-help-link-face): Likewise.
+	* progmodes/ebrowse.el (ebrowse-tree-mark-face)
+	(ebrowse-root-class-face, ebrowse-member-attribute-face)
+	(ebrowse-progress-face): Likewise.
+	* progmodes/compile.el (compilation-info-face): Likewise.
+	* progmodes/cc-fonts.el (c-invalid-face): Likewise.
+	* emacs-lisp/re-builder.el (reb-match-3): Likewise.
+	* calendar/calendar.el (diary-face): Likewise.
+	* woman.el (woman-italic-face, woman-bold-face)
+	(woman-unknown-face): Likewise.
+	* wid-edit.el (widget-button-pressed-face): Likewise.
+	* whitespace.el (whitespace-highlight-face): Likewise.
+	* smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise.
+	* pcvs-info.el (cvs-marked-face): Likewise.
+	* info.el (info-xref): Likewise.
+	* ido.el (ido-subdir-face, ido-indicator-face): Likewise.
+	* hilit-chg.el (highlight-changes-face)
+	(highlight-changes-delete-face): Likewise.
+	* hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b)
+	(hi-red-b): Likewise.
+	* generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise.
+	* font-lock.el (font-lock-keyword-face)
+	(font-lock-function-name-face, font-lock-warning-face): Likewise.
+	* cus-edit.el (custom-invalid-face, custom-modified-face)
+	(custom-set-face, custom-changed-face, custom-variable-tag-face)
+	(custom-group-tag-face-1, custom-group-tag-face): Likewise.
+	* comint.el (comint-highlight-prompt): Likewise.
+
+2005-04-08  Lute Kamstra  <lute@gnu.org>
+
+	* font-lock.el (font-lock-keywords): Docstring fixes.
+
+2005-04-08  Kenichi Handa  <handa@m17n.org>
+
+	* ps-mule.el (ps-mule-show-warning): If the number of unprintable
+	chars are more than a limit, print " and more..." at the tail.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+	* emacs-lisp/authors.el (authors-aliases): Update list.
+	(authors-ignored-files): New list.
+	(authors-fixed-entries): Fix typo.
+	(authors-renamed-files-alist): Update list.
+	(authors-add): Check authors-ignored-files.
+
+2005-04-08  Carsten Dominik  <dominik@science.uva.nl>
+
+	* calendar/diary-lib.el (add-to-diary-list): MARKER argument made
+	optional, to ensure backward compatibility.
+
+2005-04-08  Stephen Eglen  <stephen@gnu.org>
+
+	* textmodes/flyspell.el (flyspell-large-region): Doc fix.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+	* buff-menu.el (Buffer-menu-mode-map): Map follow-link to
+	mouse-face.
+
+	* mouse.el (mouse-on-link-p): Doc fix.
+
 2005-04-07  Luc Teirlinck  <teirllm@auburn.edu>
 
 	* ielm.el (ielm-prompt-read-only): Doc fix.
--- a/lisp/abbrev.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/abbrev.el	Mon Apr 11 12:40:15 2005 +0000
@@ -172,15 +172,18 @@
    (while (and (not (eobp)) (re-search-forward "^(" nil t))
      (let* ((buf (current-buffer))
 	    (table (read buf))
-	    abbrevs name hook exp count)
+	    abbrevs name hook exp count sys)
        (forward-line 1)
        (while (progn (forward-line 1)
 		     (not (eolp)))
-	 (setq name (read buf) count (read buf) exp (read buf))
+	 (setq name (read buf) count (read buf))
+	 (if (equal count '(sys))
+	     (setq sys t count (read buf)))
+	 (setq exp (read buf))
 	 (skip-chars-backward " \t\n\f")
 	 (setq hook (if (not (eolp)) (read buf)))
 	 (skip-chars-backward " \t\n\f")
-	 (setq abbrevs (cons (list name exp hook count) abbrevs)))
+	 (setq abbrevs (cons (list name exp hook count sys) abbrevs)))
        (define-abbrev-table table abbrevs)))))
 
 (defun read-abbrev-file (&optional file quietly)
--- a/lisp/arc-mode.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/arc-mode.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; arc-mode.el --- simple editing of archives
 
-;; Copyright (C) 1995, 1997, 1998, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997, 1998, 2003, 2005 Free Software Foundation, Inc.
 
 ;; Author: Morten Welinder <terra@gnu.org>
 ;; Keywords: archives msdog editing major-mode
@@ -330,7 +330,111 @@
 (defvar archive-proper-file-start nil "Position of real archive's start.")
 (defvar archive-read-only nil "Non-nil if the archive is read-only on disk.")
 (defvar archive-local-name nil "Name of local copy of remote archive.")
-(defvar archive-mode-map nil "Local keymap for archive mode listings.")
+(defvar archive-mode-map
+  (let ((map (make-keymap)))
+    (suppress-keymap map)
+    (define-key map " " 'archive-next-line)
+    (define-key map "a" 'archive-alternate-display)
+    ;;(define-key map "c" 'archive-copy)
+    (define-key map "d" 'archive-flag-deleted)
+    (define-key map "\C-d" 'archive-flag-deleted)
+    (define-key map "e" 'archive-extract)
+    (define-key map "f" 'archive-extract)
+    (define-key map "\C-m" 'archive-extract)
+    (define-key map "g" 'revert-buffer)
+    (define-key map "h" 'describe-mode)
+    (define-key map "m" 'archive-mark)
+    (define-key map "n" 'archive-next-line)
+    (define-key map "\C-n" 'archive-next-line)
+    (define-key map [down] 'archive-next-line)
+    (define-key map "o" 'archive-extract-other-window)
+    (define-key map "p" 'archive-previous-line)
+    (define-key map "q" 'quit-window)
+    (define-key map "\C-p" 'archive-previous-line)
+    (define-key map [up] 'archive-previous-line)
+    (define-key map "r" 'archive-rename-entry)
+    (define-key map "u" 'archive-unflag)
+    (define-key map "\M-\C-?" 'archive-unmark-all-files)
+    (define-key map "v" 'archive-view)
+    (define-key map "x" 'archive-expunge)
+    (define-key map "\177" 'archive-unflag-backwards)
+    (define-key map "E" 'archive-extract-other-window)
+    (define-key map "M" 'archive-chmod-entry)
+    (define-key map "G" 'archive-chgrp-entry)
+    (define-key map "O" 'archive-chown-entry)
+
+    (if (fboundp 'command-remapping)
+        (progn
+          (define-key map [remap advertised-undo] 'archive-undo)
+          (define-key map [remap undo] 'archive-undo))
+      (substitute-key-definition 'advertised-undo 'archive-undo map global-map)
+      (substitute-key-definition 'undo 'archive-undo map global-map))
+
+    (define-key map
+      (if (featurep 'xemacs) 'button2 [mouse-2]) 'archive-mouse-extract)
+
+    (if (featurep 'xemacs)
+        ()				; out of luck
+
+      (define-key map [menu-bar immediate]
+        (cons "Immediate" (make-sparse-keymap "Immediate")))
+      (define-key map [menu-bar immediate alternate]
+        '(menu-item "Alternate Display" archive-alternate-display
+          :enable (boundp (archive-name "alternate-display"))
+          :help "Toggle alternate file info display"))
+      (define-key map [menu-bar immediate view]
+        '(menu-item "View This File" archive-view
+          :help "Display file at cursor in View Mode"))
+      (define-key map [menu-bar immediate display]
+        '(menu-item "Display in Other Window" archive-display-other-window
+          :help "Display file at cursor in another window"))
+      (define-key map [menu-bar immediate find-file-other-window]
+        '(menu-item "Find in Other Window" archive-extract-other-window
+          :help "Edit file at cursor in another window"))
+      (define-key map [menu-bar immediate find-file]
+        '(menu-item "Find This File" archive-extract
+          :help "Extract file at cursor and edit it"))
+
+      (define-key map [menu-bar mark]
+        (cons "Mark" (make-sparse-keymap "Mark")))
+      (define-key map [menu-bar mark unmark-all]
+        '(menu-item "Unmark All" archive-unmark-all-files
+          :help "Unmark all marked files"))
+      (define-key map [menu-bar mark deletion]
+        '(menu-item "Flag" archive-flag-deleted
+          :help "Flag file at cursor for deletion"))
+      (define-key map [menu-bar mark unmark]
+        '(menu-item "Unflag" archive-unflag
+          :help "Unmark file at cursor"))
+      (define-key map [menu-bar mark mark]
+        '(menu-item "Mark" archive-mark
+          :help "Mark file at cursor"))
+
+      (define-key map [menu-bar operate]
+        (cons "Operate" (make-sparse-keymap "Operate")))
+      (define-key map [menu-bar operate chown]
+        '(menu-item "Change Owner..." archive-chown-entry
+          :enable (fboundp (archive-name "chown-entry"))
+          :help "Change owner of marked files"))
+      (define-key map [menu-bar operate chgrp]
+        '(menu-item "Change Group..." archive-chgrp-entry
+          :enable (fboundp (archive-name "chgrp-entry"))
+          :help "Change group ownership of marked files"))
+      (define-key map [menu-bar operate chmod]
+        '(menu-item "Change Mode..." archive-chmod-entry
+          :enable (fboundp (archive-name "chmod-entry"))
+          :help "Change mode (permissions) of marked files"))
+      (define-key map [menu-bar operate rename]
+        '(menu-item "Rename to..." archive-rename-entry
+          :enable (fboundp (archive-name "rename-entry"))
+          :help "Rename marked files"))
+      ;;(define-key map [menu-bar operate copy]
+      ;;  '(menu-item "Copy to..." archive-copy))
+      (define-key map [menu-bar operate expunge]
+        '(menu-item "Expunge Marked Files" archive-expunge
+          :help "Delete all flagged files from archive"))
+      map))
+  "Local keymap for archive mode listings.")
 (defvar archive-file-name-indent nil "Column where file names start.")
 
 (defvar archive-remote nil "Non-nil if the archive is outside file system.")
@@ -358,9 +462,6 @@
  [EXT-FILE-NAME INT-FILE-NAME CASE-FIDDLED MODE ...]")
 (make-variable-buffer-local 'archive-files)
 
-(defvar archive-lemacs
-  (string-match "\\(Lucid\\|Xemacs\\)" emacs-version)
-  "*Non-nil when running under under Lucid Emacs or Xemacs.")
 ;; -------------------------------------------------------------------------
 ;; Section: Support functions.
 
@@ -586,116 +687,9 @@
 ;; -------------------------------------------------------------------------
 ;; Section: Key maps
 
-(if archive-mode-map nil
-  (setq archive-mode-map (make-keymap))
-  (suppress-keymap archive-mode-map)
-  (define-key archive-mode-map " " 'archive-next-line)
-  (define-key archive-mode-map "a" 'archive-alternate-display)
-  ;;(define-key archive-mode-map "c" 'archive-copy)
-  (define-key archive-mode-map "d" 'archive-flag-deleted)
-  (define-key archive-mode-map "\C-d" 'archive-flag-deleted)
-  (define-key archive-mode-map "e" 'archive-extract)
-  (define-key archive-mode-map "f" 'archive-extract)
-  (define-key archive-mode-map "\C-m" 'archive-extract)
-  (define-key archive-mode-map "g" 'revert-buffer)
-  (define-key archive-mode-map "h" 'describe-mode)
-  (define-key archive-mode-map "m" 'archive-mark)
-  (define-key archive-mode-map "n" 'archive-next-line)
-  (define-key archive-mode-map "\C-n" 'archive-next-line)
-  (define-key archive-mode-map [down] 'archive-next-line)
-  (define-key archive-mode-map "o" 'archive-extract-other-window)
-  (define-key archive-mode-map "p" 'archive-previous-line)
-  (define-key archive-mode-map "q" 'quit-window)
-  (define-key archive-mode-map "\C-p" 'archive-previous-line)
-  (define-key archive-mode-map [up] 'archive-previous-line)
-  (define-key archive-mode-map "r" 'archive-rename-entry)
-  (define-key archive-mode-map "u" 'archive-unflag)
-  (define-key archive-mode-map "\M-\C-?" 'archive-unmark-all-files)
-  (define-key archive-mode-map "v" 'archive-view)
-  (define-key archive-mode-map "x" 'archive-expunge)
-  (define-key archive-mode-map "\177" 'archive-unflag-backwards)
-  (define-key archive-mode-map "E" 'archive-extract-other-window)
-  (define-key archive-mode-map "M" 'archive-chmod-entry)
-  (define-key archive-mode-map "G" 'archive-chgrp-entry)
-  (define-key archive-mode-map "O" 'archive-chown-entry)
-
-  (if archive-lemacs
-      (progn
-	;; Not a nice "solution" but it'll have to do
-	(define-key archive-mode-map "\C-xu" 'archive-undo)
-	(define-key archive-mode-map "\C-_" 'archive-undo))
-    (define-key archive-mode-map [remap advertised-undo] 'archive-undo)
-    (define-key archive-mode-map [remap undo] 'archive-undo))
-
-  (define-key archive-mode-map
-    (if archive-lemacs 'button2 [mouse-2]) 'archive-mouse-extract)
-
-  (if archive-lemacs
-      ()				; out of luck
-
-    (define-key archive-mode-map [menu-bar immediate]
-      (cons "Immediate" (make-sparse-keymap "Immediate")))
-    (define-key archive-mode-map [menu-bar immediate alternate]
-      '(menu-item "Alternate Display" archive-alternate-display
-		  :enable (boundp (archive-name "alternate-display"))
-		  :help "Toggle alternate file info display"))
-    (define-key archive-mode-map [menu-bar immediate view]
-      '(menu-item "View This File" archive-view
-		  :help "Display file at cursor in View Mode"))
-    (define-key archive-mode-map [menu-bar immediate display]
-      '(menu-item "Display in Other Window" archive-display-other-window
-		  :help "Display file at cursor in another window"))
-    (define-key archive-mode-map [menu-bar immediate find-file-other-window]
-      '(menu-item "Find in Other Window" archive-extract-other-window
-		  :help "Edit file at cursor in another window"))
-    (define-key archive-mode-map [menu-bar immediate find-file]
-      '(menu-item "Find This File" archive-extract
-		  :help "Extract file at cursor and edit it"))
-
-    (define-key archive-mode-map [menu-bar mark]
-      (cons "Mark" (make-sparse-keymap "Mark")))
-    (define-key archive-mode-map [menu-bar mark unmark-all]
-      '(menu-item "Unmark All" archive-unmark-all-files
-		  :help "Unmark all marked files"))
-    (define-key archive-mode-map [menu-bar mark deletion]
-      '(menu-item "Flag" archive-flag-deleted
-		  :help "Flag file at cursor for deletion"))
-    (define-key archive-mode-map [menu-bar mark unmark]
-      '(menu-item "Unflag" archive-unflag
-		  :help "Unmark file at cursor"))
-    (define-key archive-mode-map [menu-bar mark mark]
-      '(menu-item "Mark" archive-mark
-		  :help "Mark file at cursor"))
-
-    (define-key archive-mode-map [menu-bar operate]
-      (cons "Operate" (make-sparse-keymap "Operate")))
-    (define-key archive-mode-map [menu-bar operate chown]
-      '(menu-item "Change Owner..." archive-chown-entry
-		  :enable (fboundp (archive-name "chown-entry"))
-		  :help "Change owner of marked files"))
-    (define-key archive-mode-map [menu-bar operate chgrp]
-      '(menu-item "Change Group..." archive-chgrp-entry
-		  :enable (fboundp (archive-name "chgrp-entry"))
-		  :help "Change group ownership of marked files"))
-    (define-key archive-mode-map [menu-bar operate chmod]
-      '(menu-item "Change Mode..." archive-chmod-entry
-		  :enable (fboundp (archive-name "chmod-entry"))
-		  :help "Change mode (permissions) of marked files"))
-    (define-key archive-mode-map [menu-bar operate rename]
-      '(menu-item "Rename to..." archive-rename-entry
-		  :enable (fboundp (archive-name "rename-entry"))
-		  :help "Rename marked files"))
-    ;;(define-key archive-mode-map [menu-bar operate copy]
-    ;;  '(menu-item "Copy to..." archive-copy))
-    (define-key archive-mode-map [menu-bar operate expunge]
-      '(menu-item "Expunge Marked Files" archive-expunge
-		  :help "Delete all flagged files from archive"))
-  ))
-
-(let* ((item1 '(archive-subfile-mode " Archive"))
-       (items (list item1)))
+(let ((item1 '(archive-subfile-mode " Archive")))
   (or (member item1 minor-mode-alist)
-      (setq minor-mode-alist (append items minor-mode-alist))))
+      (setq minor-mode-alist (cons item1 minor-mode-alist))))
 ;; -------------------------------------------------------------------------
 (defun archive-find-type ()
   (widen)
@@ -762,7 +756,7 @@
 	;; Using `concat' here copies the text also, so we can add
 	;; properties without problems.
 	(let ((text (concat (aref fil 0) "\n")))
-	  (if archive-lemacs
+	  (if (featurep 'xemacs)
 	      ()			; out of luck
 	    (add-text-properties
 	     (aref fil 1) (aref fil 2)
@@ -1809,5 +1803,5 @@
 
 (provide 'arc-mode)
 
-;;; arch-tag: e5966a01-35ec-4f27-8095-a043a79b457b
+;; arch-tag: e5966a01-35ec-4f27-8095-a043a79b457b
 ;;; arc-mode.el ends here
--- a/lisp/bookmark.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/bookmark.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1355,7 +1355,9 @@
 		((eq 'nospecial bookmark-version-control) version-control)
 		(t
 		 t))))
-	  (write-file file)
+          (condition-case nil
+              (write-file file)
+            (file-error (message "Can't write %s" file)))
 	  (kill-buffer (current-buffer))
 	  (if (>= baud-rate 9600)
 	      (message "Saving bookmarks to file %s...done" file)))))))
--- a/lisp/buff-menu.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/buff-menu.el	Mon Apr 11 12:40:15 2005 +0000
@@ -141,6 +141,7 @@
   (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view)
   (define-key Buffer-menu-mode-map "T" 'Buffer-menu-toggle-files-only)
   (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select)
+  (define-key Buffer-menu-mode-map [follow-link] 'mouse-face)
 )
 
 ;; Buffer Menu mode is suitable only for specially formatted data.
--- a/lisp/calc/calc-units.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/calc/calc-units.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; calc-units.el --- unit conversion functions for Calc
 
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc.
 
 ;; Author: David Gillespie <daveg@synaptics.com>
 ;; Maintainer: Jay Belanger <belanger@truman.edu>
@@ -137,7 +137,7 @@
     ( men     "100/invcm"	     "Inverse energy in meters" )
     ( Hzen    "h Hz"		     "Energy in Hertz")
     ( Ken     "k K"		     "Energy in Kelvins")
-    ( Wh      "W h"                 "Watt hour")
+    ( Wh      "W hr"                 "Watt hour")
     ( Ws      "W s"                 "Watt second")
 
     ;; Power
--- a/lisp/calendar/calendar.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/calendar/calendar.el	Mon Apr 11 12:40:15 2005 +0000
@@ -209,8 +209,12 @@
 (defvar diary-face 'diary-face
   "Face name to use for diary entries.")
 (defface diary-face
-  '((((class color) (background light))
+  '((((min-colors 88) (class color) (background light))
+     :foreground "red1")
+    (((class color) (background light))
      :foreground "red")
+    (((min-colors 88) (class color) (background dark))
+     :foreground "yellow1")
     (((class color) (background dark))
      :foreground "yellow")
     (t
--- a/lisp/calendar/diary-lib.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/calendar/diary-lib.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1647,7 +1647,7 @@
       (or (diary-remind sexp (car days) marking)
           (diary-remind sexp (cdr days) marking))))))
 
-(defun add-to-diary-list (date string specifier marker &optional globcolor)
+(defun add-to-diary-list (date string specifier &optional marker globcolor)
   "Add the entry (DATE STRING SPECIFIER MARKER GLOBCOLOR) to `diary-entries-list'.
 Do nothing if DATE or STRING is nil."
   (when (and date string)
--- a/lisp/calendar/time-date.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/calendar/time-date.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,5 +1,6 @@
 ;;; time-date.el --- Date and time handling functions
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005
+;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;	Masanobu Umeda <umerin@mse.kyutech.ac.jp>
@@ -112,15 +113,15 @@
   "Convert time value TIME to a floating point number.
 You can use `float-time' instead."
   (with-decoded-time-value ((high low micro time))
-    (+ (* 1.0 high #x10000)
+    (+ (* 1.0 high 65536)
        low
        (/ micro 1000000.0))))
 
 ;;;###autoload
 (defun seconds-to-time (seconds)
   "Convert SECONDS (a floating point number) to a time value."
-  (list (floor seconds #x10000)
-	(floor (mod seconds #x10000))
+  (list (floor seconds 65536)
+	(floor (mod seconds 65536))
 	(floor (* (- seconds (ffloor seconds)) 1000000))))
 
 ;;;###autoload
@@ -138,10 +139,10 @@
 (defun days-to-time (days)
   "Convert DAYS into a time value."
   (let* ((seconds (* 1.0 days 60 60 24))
-	 (high (condition-case nil (floor (/ seconds #x10000))
+	 (high (condition-case nil (floor (/ seconds 65536))
 		 (range-error most-positive-fixnum))))
-    (list high (condition-case nil (floor (- seconds (* 1.0 high #x10000)))
-		 (range-error #xffff)))))
+    (list high (condition-case nil (floor (- seconds (* 1.0 high 65536)))
+		 (range-error 65535)))))
 
 ;;;###autoload
 (defun time-since (time)
@@ -170,7 +171,7 @@
 	    micro (+ micro 1000000)))
     (when (< low 0)
       (setq high (1- high)
-	    low (+ low #x10000)))
+	    low (+ low 65536)))
     (encode-time-value high low micro type)))
 
 ;;;###autoload
@@ -185,9 +186,9 @@
     (when (>= micro 1000000)
       (setq low (1+ low)
 	    micro (- micro 1000000)))
-    (when (>= low #x10000)
+    (when (>= low 65536)
       (setq high (1+ high)
-	    low (- low #x10000)))
+	    low (- low 65536)))
     (encode-time-value high low micro type)))
 
 ;;;###autoload
--- a/lisp/comint.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/comint.el	Mon Apr 11 12:40:15 2005 +0000
@@ -228,7 +228,8 @@
   :group 'comint)
 
 (defface comint-highlight-prompt
-  '((((background dark)) (:foreground "cyan"))
+  '((((min-colors 88) (background dark)) (:foreground "cyan1"))
+    (((background dark)) (:foreground "cyan"))
     (t (:foreground "dark blue")))
   "Face to use to highlight prompts."
   :group 'comint)
@@ -1387,14 +1388,15 @@
 				  cmd))))
       (ring-insert comint-input-ring cmd)))
 
-(defun comint-send-input (&optional no-newline)
+(defun comint-send-input (&optional no-newline artificial)
   "Send input to process.
 After the process output mark, sends all text from the process mark to
 point as input to the process.  Before the process output mark, calls
 value of variable `comint-get-old-input' to retrieve old input, copies
-it to the process mark, and sends it.  A terminal newline is also
-inserted into the buffer and sent to the process unless NO-NEWLINE is
-non-nil.
+it to the process mark, and sends it.
+
+This command also sends and inserts a final newline, unless
+NO-NEWLINE is non-nil.
 
 Any history reference may be expanded depending on the value of the variable
 `comint-input-autoexpand'.  The list of function names contained in the value
@@ -1408,6 +1410,8 @@
 After the input has been sent, if `comint-process-echoes' is non-nil,
 then `comint-send-input' waits to see if the process outputs a string
 matching the input, and if so, deletes that part of the output.
+If ARTIFICIAL is non-nil, it inhibits such deletion.
+Callers sending input not from the user should use ARTIFICIAL = t.
 
 The values of `comint-get-old-input', `comint-input-filter-functions', and
 `comint-input-filter' are chosen according to the command interpreter running
@@ -1512,7 +1516,7 @@
 	    (funcall comint-input-sender proc input))
 
 	  ;; Optionally delete echoed input (after checking it).
- 	  (when comint-process-echoes
+ 	  (when (and comint-process-echoes (not artificial))
 	    (let ((echo-len (- comint-last-input-end
 			       comint-last-input-start)))
 	      ;; Wait for all input to be echoed:
@@ -2087,7 +2091,7 @@
 This means mark it as if it had been sent as input, without sending it."
   (let ((comint-input-sender 'ignore)
 	(comint-input-filter-functions nil))
-    (comint-send-input t))
+    (comint-send-input t t))
   (end-of-line)
   (let ((pos (point))
 	(marker (process-mark (get-buffer-process (current-buffer)))))
@@ -2114,7 +2118,7 @@
 (defun comint-send-eof ()
   "Send an EOF to the current buffer's process."
   (interactive)
-  (comint-send-input t)
+  (comint-send-input t t)
   (process-send-eof))
 
 
--- a/lisp/cus-edit.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/cus-edit.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1633,7 +1633,7 @@
   :group 'custom-buffer)
 
 (defface custom-invalid-face '((((class color))
-				(:foreground "yellow" :background "red"))
+				(:foreground "yellow1" :background "red1"))
 			       (t
 				(:weight bold :slant italic :underline t)))
   "Face used when the customize item is invalid."
@@ -1646,21 +1646,27 @@
   "Face used when the customize item is not defined for customization."
   :group 'custom-magic-faces)
 
-(defface custom-modified-face '((((class color))
+(defface custom-modified-face '((((min-colors 88) (class color))
+				 (:foreground "white" :background "blue1"))
+				(((class color))
 				 (:foreground "white" :background "blue"))
 				(t
 				 (:slant italic :bold)))
   "Face used when the customize item has been modified."
   :group 'custom-magic-faces)
 
-(defface custom-set-face '((((class color))
+(defface custom-set-face '((((min-colors 88) (class color))
+			    (:foreground "blue1" :background "white"))
+			   (((class color))
 			    (:foreground "blue" :background "white"))
 			   (t
 			    (:slant italic)))
   "Face used when the customize item has been set."
   :group 'custom-magic-faces)
 
-(defface custom-changed-face '((((class color))
+(defface custom-changed-face '((((min-colors 88) (class color))
+				(:foreground "white" :background "blue1"))
+			       (((class color))
 				(:foreground "white" :background "blue"))
 			       (t
 				(:slant italic)))
@@ -2148,9 +2154,12 @@
   `((((class color)
       (background dark))
      (:foreground "light blue" :weight bold :height 1.2 :inherit variable-pitch))
+    (((min-colors 88) (class color)
+      (background light))
+     (:foreground "blue1" :weight bold :height 1.2 :inherit variable-pitch))
     (((class color)
       (background light))
-     (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))
+     (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))    
     (t (:weight bold)))
   "Face used for unpushable variable tags."
   :group 'custom-faces)
@@ -3392,6 +3401,9 @@
   `((((class color)
       (background dark))
      (:foreground "pink" :weight bold :height 1.2 :inherit variable-pitch))
+    (((min-colors 88) (class color)
+      (background light))
+     (:foreground "red1" :weight bold :height 1.2 :inherit variable-pitch))
     (((class color)
       (background light))
      (:foreground "red" :weight bold :height 1.2 :inherit variable-pitch))
@@ -3403,6 +3415,9 @@
   `((((class color)
       (background dark))
      (:foreground "light blue" :weight bold :height 1.2))
+    (((min-colors 88) (class color)
+      (background light))
+     (:foreground "blue1" :weight bold :height 1.2))
     (((class color)
       (background light))
      (:foreground "blue" :weight bold :height 1.2))
--- a/lisp/custom.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/custom.el	Mon Apr 11 12:40:15 2005 +0000
@@ -841,8 +841,8 @@
 this sets the local binding in that buffer instead."
   (if custom-local-buffer
       (with-current-buffer custom-local-buffer
-	(funcall variable (or value 0)))
-    (funcall variable (or value 0))))
+	(funcall variable (if value 1 0)))
+    (funcall variable (if value 1 0))))
 
 (defun custom-quote (sexp)
   "Quote SEXP iff it is not self quoting."
--- a/lisp/emacs-lisp/authors.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/emacs-lisp/authors.el	Mon Apr 11 12:40:15 2005 +0000
@@ -41,7 +41,6 @@
 
 (defconst authors-aliases
   '(
-    ("Andrew Innes" "Andrw Innes")
     ("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
      "Barry A. Warsaw, ITB" "Barry Warsaw")
     ("Bj,Av(Brn Torkelsson" "Bjorn Torkelsson")
@@ -57,7 +56,7 @@
     ("Edward M. Reingold" "Ed Reingold" "Edward M Reingold"
      "Reingold Edward M")
     ("Eli Zaretskii" "eliz")
-;    ("Emilio C. Lopes" "Emilio Lopes")
+    ("Emilio C. Lopes" "Emilio Lopes")
     ("Era Eriksson" "Era@Iki.Fi")
     ("Eric M. Ludlam" "Eric Ludlam")
     ("Eric S. Raymond" "Eric Raymond")
@@ -79,8 +78,10 @@
     ("Jay K. Adams" "jka@ece.cmu.edu" "Jay Adams")
     ("J,Ai(Br,At(Bme Marant" "J,bi(Br,bt(Bme Marant" "Jerome Marant")
     ("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
+    ("John W. Eaton" "John Eaton")
     ("Jonathan I. Kamens" "Jonathan Kamens")
     ("Joseph Arceneaux" "Joe Arceneaux")
+    ("Juan Le,As(Bn Lahoz Garc,Am(Ba" "Juan-Leon Lahoz Garcia")
     ("K. Shane Hartman" "Shane Hartman")
     ("Kai Gro,A_(Bjohann" "Kai Grossjohann" "Kai Gro,b_(Bjohann"
      "Kai.Grossjohann@Cs.Uni-Dortmund.De"
@@ -89,14 +90,17 @@
     ("Kazushi Marukawa" "Kazushi")
     ("Ken Manheimer" "Kenneth Manheimer")
     ("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA")
+    ("Kevin Greiner" "Kevin J. Greiner")
     ("Kim F. Storm" "Kim Storm")
     ("Kyle Jones" "Kyle E. Jones")
     ("Marcus G. Daniels" "Marcus Daniels")
     ("Mark D. Baushke" "Mark D Baushke")
     ("Martin Lorentzon" "Martin Lorentzson")
     ("Matt Swift" "Matthew Swift")
+    ("Michael R. Mauger" "Michael Mauger")
     ("Michael D. Ernst" "Michael Ernst")
     ("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, P/Bsg")
+    ("Mikio Nakajima" "Nakajima Mikio")
     ("Paul Eggert" "eggert")
     ("Paul Reilly" "(pmr@legacy.pajato.com)")
     ("Pavel Jan,Bm(Bk" "Pavel Jan,Am(Bk Ml." "Pavel Jan,Am(Bk" "Pavel@Janik.Cz")
@@ -114,6 +118,7 @@
     ("Stephen A. Wood" "(saw@cebaf.gov)")
     ("Steven L. Baur" "SL Baur" "Steven L Baur")
     ("Takaaki Ota" "Tak Ota")
+    ("Takahashi Naoto" "Naoto Takahashi")
     ("Teodor Zlatanov" "Ted Zlatanov")
     ("Torbj,Av(Brn Axelsson" "Torbjvrn Axelsson")
     ("Torbj,Av(Brn Einarsson" "Torbj.*rn Einarsson")
@@ -152,6 +157,13 @@
 Changes to files matching one of the regexps in this list are not
 listed.")
 
+(defconst authors-ignored-files
+  '("external-lisp"
+    "lock" "share-lib" "local-lisp"
+    "noleim-Makefile.in"
+    "NEWS" "PROBLEMS" "FAQ")
+  "List of files and directories to ignore.
+Changes to files in this list are not listed.")
 
 (defconst authors-fixed-entries
   '(("Richard M. Stallman" :wrote "[The original GNU emacs and numerous files]")
@@ -184,7 +196,7 @@
      "mem-limits.h" "process.c" "template.h" "sysdep.c" "syssignal.h" "systty.h" "unexec.c"
       "ymakefile" "linux.h")
     ("Kyle E. Jones" :wrote "mldrag.el")
-    ("Kenry Kautz" :wrote "bib-mode.el")
+    ("Henry Kautz" :wrote "bib-mode.el")
     ("Joseph M. Kelsey" :changed "fileio.c" "vms-pwd.h" "vmsfns.c" "dir.h"
      "uaf.h")
     ("Sam Kendall" :changed "etags.c" "etags.el")
@@ -260,7 +272,8 @@
 
 (defconst authors-valid-file-names
   '("aclocal.m4"
-    "makedist.bat")
+    "makedist.bat"
+    "make-delta")
   "File names which are valid, but no longer exists (or cannot be
 found) in the repository.")
 
@@ -274,6 +287,9 @@
     ("s/windowsnt.h" . "s/ms-w32.h")
     ("config.emacs" . "configure")
     ("GETTING.GNU.SOFTWARE" . "FTP")
+    ("leim-Makefile" . "leim/Makefile")
+    ("leim-Makefile.in" . "leim/Makefile.in")
+    ("INSTALL-CVS" . "INSTALL.CVS")
     )
   "Alist of files which have been renamed during their lifetime.
 Elements are (OLDNAME . NEWNAME).")
@@ -372,7 +388,8 @@
 ACTION is a keyword symbol describing what he did.  Record file,
 author and what he did in hash table TABLE.  See the description of
 `authors-scan-change-log' for the structure of the hash table."
-  (unless (or (authors-obsolete-file-p file)
+  (unless (or (member file authors-ignored-files)
+	      (authors-obsolete-file-p file)
 	      (equal author ""))
     (let* ((value (gethash author table))
 	   (entry (assoc file value))
--- a/lisp/emacs-lisp/lisp.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/emacs-lisp/lisp.el	Mon Apr 11 12:40:15 2005 +0000
@@ -31,18 +31,16 @@
 
 ;; Note that this variable is used by non-lisp modes too.
 (defcustom defun-prompt-regexp nil
-  "*If non-nil, a regexp to ignore before the character that starts a defun.
+  "*If non-nil, a regexp to ignore before a defun.
 This is only necessary if the opening paren or brace is not in column 0.
-See function `beginning-of-defun'.
-
-Setting this variable automatically makes it local to the current buffer."
+See function `beginning-of-defun'."
   :type '(choice (const nil)
 		 regexp)
   :group 'lisp)
 (make-variable-buffer-local 'defun-prompt-regexp)
 
 (defcustom parens-require-spaces t
-  "Non-nil means `insert-parentheses' should insert whitespace as needed."
+  "If non-nil, `insert-parentheses' inserts whitespace as needed."
   :type 'boolean
   :group 'lisp)
 
@@ -74,7 +72,7 @@
 The place mark goes is the same place \\[forward-sexp] would
 move to with the same argument.
 Interactively, if this command is repeated
-or (in Transient Mark mode) if the mark is active, 
+or (in Transient Mark mode) if the mark is active,
 it marks the next ARG sexps after the ones already marked."
   (interactive "P\np")
   (cond ((and allow-extend
@@ -233,13 +231,14 @@
 normal method is not appropriate.")
 
 (defun buffer-end (arg)
-  "Return the \"far end\" position of the buffer, moving in direction ARG.
+  "Return the \"far end\" position of the buffer, in direction ARG.
 If ARG is positive, that's the end of the buffer.
 Otherwise, that's the beginning of the buffer."
   (if (> arg 0) (point-max) (point-min)))
 
 (defun end-of-defun (&optional arg)
-  "Move forward to next end of defun.  With argument, do it that many times.
+  "Move forward to next end of defun.
+With argument, do it that many times.
 Negative argument -N means move back to Nth preceding end of defun.
 
 An end of a defun occurs right after the close-parenthesis that
@@ -299,7 +298,7 @@
 The defun marked is the one that contains point or follows point.
 
 Interactively, if this command is repeated
-or (in Transient Mark mode) if the mark is active, 
+or (in Transient Mark mode) if the mark is active,
 it marks the next defun after the ones already marked."
   (interactive "p")
   (cond ((and allow-extend
@@ -424,7 +423,8 @@
                  (prefix-numeric-value arg))))
 
 (defun insert-parentheses (&optional arg)
-  "Enclose following ARG sexps in parentheses.  Leave point after open-paren.
+  "Enclose following ARG sexps in parentheses.
+Leave point after open-paren.
 A negative ARG encloses the preceding ARG sexps instead.
 No argument is equivalent to zero: just insert `()' and leave point between.
 If `parens-require-spaces' is non-nil, this command also inserts a space
--- a/lisp/emacs-lisp/map-ynp.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/emacs-lisp/map-ynp.el	Mon Apr 11 12:40:15 2005 +0000
@@ -200,10 +200,10 @@
 			       (concat
 				(format "Type SPC or `y' to %s the current %s;
 DEL or `n' to skip the current %s;
-RET or `q' to exit (skip all remaining %s);
-C-g to quit (cancel the operation);
+RET or `q' to give up on the %s (skip all remaining %s);
+C-g to quit (cancel the whole command);
 ! to %s all remaining %s;\n"
-					action object object objects action
+					action object object action objects action
 					objects)
 				(mapconcat (function
 					    (lambda (elt)
--- a/lisp/emacs-lisp/re-builder.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/emacs-lisp/re-builder.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; re-builder.el --- building Regexps with visual feedback
 
-;; Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Detlev Zundel <dzu@gnu.org>
 ;; Keywords: matching, lisp, tools
@@ -177,7 +177,9 @@
   :group 're-builder)
 
 (defface reb-match-3
-  '((((class color) (background light))
+  '((((min-colors 88) (class color) (background light))
+     :background "yellow1")
+    (((class color) (background light))
      :background "yellow")
     (((class color) (background dark))
      :background "sienna4")
--- a/lisp/files.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/files.el	Mon Apr 11 12:40:15 2005 +0000
@@ -2113,22 +2113,19 @@
 	 (setq temp (cdr temp)))
        (not temp))
 
-     (search-forward "-*-" (save-excursion
-			     ;; If the file begins with "#!"
-			     ;; (exec interpreter magic), look
-			     ;; for mode frobs in the first two
-			     ;; lines.  You cannot necessarily
-			     ;; put them in the first line of
-			     ;; such a file without screwing up
-			     ;; the interpreter invocation.
-			     (end-of-line (and (looking-at "^#!") 2))
-			     (point)) t)
+     (search-forward "-*-" (line-end-position
+                            ;; If the file begins with "#!"
+                            ;; (exec interpreter magic), look
+                            ;; for mode frobs in the first two
+                            ;; lines.  You cannot necessarily
+                            ;; put them in the first line of
+                            ;; such a file without screwing up
+                            ;; the interpreter invocation.
+                            (and (looking-at "^#!") 2)) t)
      (progn
        (skip-chars-forward " \t")
        (setq beg (point))
-       (search-forward "-*-"
-		       (save-excursion (end-of-line) (point))
-		       t))
+       (search-forward "-*-" (line-end-position) t))
      (progn
        (forward-char -3)
        (skip-chars-backward " \t")
--- a/lisp/font-lock.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/font-lock.el	Mon Apr 11 12:40:15 2005 +0000
@@ -383,14 +383,14 @@
 
 MATCH-HIGHLIGHT should be of the form:
 
- (MATCH FACENAME OVERRIDE LAXMATCH)
+ (MATCH FACENAME [[OVERRIDE [LAXMATCH]])
 
 MATCH is the subexpression of MATCHER to be highlighted.  FACENAME is an
 expression whose value is the face name to use.  Face default attributes
 can be modified via \\[customize].  Instead of a face, FACENAME can
-evaluate to a property list of the form (face VAL1 PROP2 VAL2 PROP3 VAL3 ...)
+evaluate to a property list of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...)
 in which case all the listed text-properties will be set rather than
-just `face'.  In such a case, you will most likely want to put those
+just FACE.  In such a case, you will most likely want to put those
 properties in `font-lock-extra-managed-props' or to override
 `font-lock-unfontify-region-function'.
 
@@ -426,7 +426,7 @@
 used to initialise before, and cleanup after, MATCHER is used.  Typically,
 PRE-MATCH-FORM is used to move to some position relative to the original
 MATCHER, before starting with MATCH-ANCHORED's MATCHER.  POST-MATCH-FORM might
-be used to move, before resuming with MATCH-ANCHORED's parent's MATCHER.
+be used to move back, before resuming with MATCH-ANCHORED's parent's MATCHER.
 
 For example, an element of the form highlights (if not already highlighted):
 
@@ -436,7 +436,7 @@
  discrete occurrences of \"item\" (on the same line) in the value of `item-face'.
  (Here PRE-MATCH-FORM and POST-MATCH-FORM are nil.  Therefore \"item\" is
  initially searched for starting from the end of the match of \"anchor\", and
- searching for subsequent instance of \"anchor\" resumes from where searching
+ searching for subsequent instances of \"anchor\" resumes from where searching
  for \"item\" concluded.)
 
 The above-mentioned exception is as follows.  The limit of the MATCHER search
@@ -1657,7 +1657,7 @@
   '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold))
     (((class grayscale) (background dark)) (:foreground "DimGray" :weight bold))
     (((class color) (min-colors 88) (background light)) (:foreground "Purple"))
-    (((class color) (min-colors 88) (background dark)) (:foreground "Cyan"))
+    (((class color) (min-colors 88) (background dark)) (:foreground "Cyan1"))
     (((class color) (min-colors 16) (background light)) (:foreground "Purple"))
     (((class color) (min-colors 16) (background dark)) (:foreground "Cyan"))
     (((class color) (min-colors 8)) (:foreground "cyan" :weight bold))
@@ -1678,7 +1678,7 @@
   :group 'font-lock-highlighting-faces)
 
 (defface font-lock-function-name-face
-  '((((class color) (min-colors 88) (background light)) (:foreground "Blue"))
+  '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
     (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
     (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
     (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
@@ -1728,7 +1728,7 @@
   :group 'font-lock-highlighting-faces)
 
 (defface font-lock-warning-face
-  '((((class color) (min-colors 88) (background light)) (:foreground "Red" :weight bold))
+  '((((class color) (min-colors 88) (background light)) (:foreground "Red1" :weight bold))
     (((class color) (min-colors 88) (background dark)) (:foreground "Pink" :weight bold))
     (((class color) (min-colors 16) (background light)) (:foreground "Red" :weight bold))
     (((class color) (min-colors 16) (background dark)) (:foreground "Pink" :weight bold))
--- a/lisp/generic-x.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/generic-x.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1612,8 +1612,8 @@
 (defface show-tabs-tab-face
   '((((class grayscale) (background light)) (:background "DimGray"   :weight bold))
     (((class grayscale) (background dark))  (:background "LightGray" :weight bold))
-    (((class color)     (background light)) (:background "red"))
-    (((class color)     (background dark))  (:background "red"))
+    (((class color)     (min-colors 88))    (:background "red1"))
+    (((class color))                        (:background "red"))
     (t (:weight bold)))
   "Font Lock mode face used to highlight TABs."
   :group 'generic-x)
@@ -1621,8 +1621,8 @@
 (defface show-tabs-space-face
   '((((class grayscale) (background light)) (:background "DimGray"   :weight bold))
     (((class grayscale) (background dark))  (:background "LightGray" :weight bold))
-    (((class color)     (background light)) (:background "yellow"))
-    (((class color)     (background dark))  (:background "yellow"))
+    (((class color)     (min-colors 88))    (:background "yellow1"))
+    (((class color))                        (:background "yellow"))
     (t (:weight bold)))
   "Font Lock mode face used to highlight spaces."
   :group 'generic-x)
--- a/lisp/gnus/ChangeLog	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/ChangeLog	Mon Apr 11 12:40:15 2005 +0000
@@ -1,3 +1,136 @@
+2005-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* mm-util.el (mm-string-to-multibyte): New function.
+	(mm-detect-coding-region): Typo.
+
+2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* mm-util.el (mm-coding-system-p): Don't return binary for the nil
+	argument in XEmacs.
+
+	* nnrss.el (nnrss-compatible-encoding-alist): New variable.
+	(nnrss-request-group): Decode group name first.
+	(nnrss-request-article): Make a text/plain article if mml-to-mime
+	failed.
+	(nnrss-get-encoding): Return a compatible encoding according to
+	nnrss-compatible-encoding-alist.
+	(nnrss-opml-export): Use dolist.
+	(nnrss-find-el): Use consp instead of listp.
+	(nnrss-order-hrefs): Use dolist.
+
+2005-04-06  Arne J,Ax(Brgensen  <arne@arnested.dk>
+
+	* nnrss.el (nnrss-verbose): Remove.
+	(nnrss-request-group): Use `nnheader-message' instead.
+
+2005-04-06  Mark Plaksin  <happy@usg.edu>  (tiny change)
+
+	* nnrss.el (nnrss-verbose): New variable.
+	(nnrss-request-group): Make it say nnrss is requesting a group.
+
+2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus-agent.el (gnus-agent-group-path): Decode group name.
+	(gnus-agent-group-pathname): Ditto.
+
+	* gnus-cache.el (gnus-cache-file-name): Decode group name.
+
+	* gnus-group.el (gnus-group-line-format-alist): Use decoded group
+	name for only %g and %c.
+	(gnus-group-insert-group-line): Bind gnus-tmp-decoded-group
+	instead of gnus-tmp-group to decoded group name.
+	(gnus-group-make-group): Decode group name.
+	(gnus-group-delete-group): Ditto.
+	(gnus-group-make-rss-group): Exclude `/'s from group names;
+	register the group data after opening the nnrss group; unify
+	non-ASCII group names; encode group name.
+	(gnus-group-catchup-current): Decode group name.
+	(gnus-group-expire-articles-1): Ditto.
+	(gnus-group-set-current-level): Ditto.
+	(gnus-group-kill-group): Ditto.
+
+	* gnus-spec.el (gnus-update-format-specifications): Flush the
+	group format spec cache if it doesn't support decoded group names.
+
+	* mm-url.el (mm-url-predefined-programs): Add --silent arg to curl.
+
+	* nnrss.el: Require rfc2047 and mml.
+	(nnrss-file-coding-system): New variable.
+	(nnrss-format-string): Redefine it as an inline function.
+	(nnrss-decode-group-name): New function.
+	(nnrss-string-as-multibyte): Remove.
+	(nnrss-retrieve-headers): Decode group name; don't use
+	nnrss-format-string.
+	(nnrss-request-group): Decode group name.
+	(nnrss-request-article): Decode group name; allow a Message-ID as
+	well as an article number; don't use nnrss-format-string; encode a
+	Message-ID string which may contain non-ASCII characters; use
+	mml-to-mime to compose a MIME article; use search-forward instead
+	of re-search-forward.
+	(nnrss-request-expire-articles): Decode group name.
+	(nnrss-request-delete-group): Delete entries in nnrss-group-alist
+	as well; decode group name.
+	(nnrss-get-encoding): Fix regexp.
+	(nnrss-fetch): Clarify error message.
+	(nnrss-read-server-data): Use insert-file-contents instead of load;
+	bind file-name-coding-system; use multibyte buffer.
+	(nnrss-save-server-data): Insert newline; bind
+	coding-system-for-write to the value of nnrss-file-coding-system;
+	bind file-name-coding-system; add coding cookie.
+	(nnrss-read-group-data): Use insert-file-contents instead of load;
+	bind file-name-coding-system; use multibyte buffer.
+	(nnrss-save-group-data): Bind coding-system-for-write to the
+	value of nnrss-file-coding-system; bind file-name-coding-system.
+	(nnrss-decode-entities-string): Rename from n-d-e-unibyte-string;
+	make it work with non-ASCII text.
+	(nnrss-opml-export): Use mm-set-buffer-file-coding-system instead
+	of set-buffer-file-coding-system.
+	(nnrss-find-el): Check carefully whether there's a list of string
+	which old xml.el may return rather than a string; make it work
+	with old xml.el as well.
+
+2005-04-06  Tsuyoshi AKIHO  <akiho@kawachi.zaq.ne.jp>
+
+	* gnus-sum.el (gnus-summary-walk-group-buffer): Decode group name.
+
+	* nnrss.el (nnrss-get-encoding): New function.
+	(nnrss-fetch): Use unibyte buffer initially; bind
+	coding-system-for-read while performing mm-url-insert; remove ^Ms;
+	decode contents according to the encoding attribute.
+	(nnrss-save-group-data): Add coding cookie.
+	(nnrss-mime-encode-string): New function.
+	(nnrss-check-group): Use it to encode subject and author.
+
+2005-04-06  Maciek Pasternacki  <maciekp@japhy.fnord.org>  (tiny change)
+
+	* nnrss.el (nnrss-fetch): Signal an error if w3-parse-buffer also
+	failed.
+
+2005-04-06  Jesper Harder  <harder@ifa.au.dk>
+
+	* mm-util.el (mm-subst-char-in-string): Support inplace.
+
+	* nnrss.el: Pedantic docstring and whitespace fixes (courtesy of
+	checkdoc.el).
+	(nnrss-request-article): Cleanup.
+	(nnrss-request-delete-group): Use nnrss-make-filename.
+	(nnrss-read-server-data): Use nnrss-make-filename; use load.
+	(nnrss-save-server-data): Use nnrss-make-filename; use gnus-prin1.
+	(nnrss-read-group-data): Fix off-by-one error.  From Joakim Verona
+	<joakim@verona.se>; hash on description if link is missing; use
+	nnrss-make-filename; use load.
+	(nnrss-save-group-data): Use nnrss-make-filename; use gnus-prin1.
+	(nnrss-make-filename): New function.
+	(nnrss-close): New function.
+	(nnrss-check-group): Hash on description if link is missing.
+	(nnrss-get-namespace-prefix): Use string= to compare strings!
+	Reported by David D. Smith <davidsmith@acm.org>.
+	(nnrss-opml-export): Turn on sgml-mode.
+
+2005-04-06  Mark A. Hershberger  <mah@everybody.org>
+
+	* nnrss.el (nnrss-opml-import, nnrss-opml-export): New functions.
+
 2005-04-04  Reiner Steib  <Reiner.Steib@gmx.de>
 
 	* message.el (message-make-date): Add defvars in order to silence
@@ -503,7 +636,7 @@
 
 2004-11-04  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-	* gnus-art. (gnus-article-edit-article): Don't associate the
+	* gnus-art.el (gnus-article-edit-article): Don't associate the
 	article buffer with a draft file.  This is a temporary measure
 	against the 2004-08-22 change to gnus-article-edit-mode.
 
--- a/lisp/gnus/ChangeLog.2	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/ChangeLog.2	Mon Apr 11 12:40:15 2005 +0000
@@ -12604,7 +12604,7 @@
 
 	* nnfolder.el (nnfolder-read-folder): Use group instead of
 	nnfolder-current-group.
-	Suggested by Lorentey Karoly <lorentey@elte.hu>.
+	Suggested by K,Ba(Broly L,Bu(Brentey <lorentey@elte.hu>.
 
 2001-11-17  Simon Josefsson  <jas@extundo.com>
 
--- a/lisp/gnus/gnus-agent.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/gnus-agent.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,5 +1,5 @@
 ;;; gnus-agent.el --- unplugged support for Gnus
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -1371,7 +1371,7 @@
         (nnheader-translate-file-chars
          (nnheader-replace-duplicate-chars-in-string
           (nnheader-replace-chars-in-string
-           (gnus-group-real-name group)
+           (gnus-group-real-name (gnus-group-decoded-name group))
            ?/ ?_)
           ?. ?_)))
   (if (or nnmail-use-long-file-names
@@ -1387,8 +1387,10 @@
   ;; unplugged.  The agent must, therefore, use the same directory
   ;; while plugged.
   (let ((gnus-command-method (or gnus-command-method
-                                 (gnus-find-method-for-group group))))
-    (nnmail-group-pathname (gnus-group-real-name group) (gnus-agent-directory))))
+				 (gnus-find-method-for-group group))))
+    (nnmail-group-pathname (gnus-group-real-name
+			    (gnus-group-decoded-name group))
+			   (gnus-agent-directory))))
 
 (defun gnus-agent-get-function (method)
   (if (gnus-online method)
--- a/lisp/gnus/gnus-cache.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/gnus-cache.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; gnus-cache.el --- cache interface for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-;;        Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+;; 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
@@ -421,6 +421,7 @@
       (and (not unread) (not ticked) (not dormant) (memq 'read class))))
 
 (defun gnus-cache-file-name (group article)
+  (setq group (gnus-group-decoded-name group))
   (expand-file-name
    (if (stringp article) article (int-to-string article))
    (file-name-as-directory
--- a/lisp/gnus/gnus-group.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/gnus-group.el	Mon Apr 11 12:40:15 2005 +0000
@@ -482,9 +482,15 @@
     (?T (gnus-range-length (cdr (assq 'tick gnus-tmp-marked))) ?d)
     (?i (+ (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked)))
 	   (gnus-range-length (cdr (assq 'tick gnus-tmp-marked)))) ?d)
-    (?g gnus-tmp-group ?s)
+    (?g (if (boundp 'gnus-tmp-decoded-group)
+	    gnus-tmp-decoded-group
+	  gnus-tmp-group)
+	?s)
     (?G gnus-tmp-qualified-group ?s)
-    (?c (gnus-short-group-name gnus-tmp-group) ?s)
+    (?c (gnus-short-group-name (if (boundp 'gnus-tmp-decoded-group)
+				   gnus-tmp-decoded-group
+				 gnus-tmp-group))
+	?s)
     (?C gnus-tmp-comment ?s)
     (?D gnus-tmp-newsgroup-description ?s)
     (?o gnus-tmp-moderated ?c)
@@ -1441,8 +1447,8 @@
      (point)
      (prog1 (1+ (point))
        ;; Insert the text.
-       (let ((gnus-tmp-group (gnus-group-name-decode
-			      gnus-tmp-group group-name-charset)))
+       (let ((gnus-tmp-decoded-group (gnus-group-name-decode
+				      gnus-tmp-group group-name-charset)))
 	 (eval gnus-group-line-format-spec)))
      `(gnus-group ,(gnus-intern-safe gnus-tmp-group gnus-active-hashtb)
 		  gnus-unread ,(if (numberp number)
@@ -2244,7 +2250,7 @@
 	 (nname (if method (gnus-group-prefixed-name name meth) name))
 	 backend info)
     (when (gnus-gethash nname gnus-newsrc-hashtb)
-      (error "Group %s already exists" nname))
+      (error "Group %s already exists" (gnus-group-decoded-name nname)))
     ;; Subscribe to the new group.
     (gnus-group-change-level
      (setq info (list t nname gnus-level-default-subscribed nil nil meth))
@@ -2305,20 +2311,21 @@
   (unless (gnus-check-backend-function 'request-delete-group group)
     (error "This back end does not support group deletion"))
   (prog1
-      (if (and (not no-prompt)
-	       (not (gnus-yes-or-no-p
-		     (format
-		      "Do you really want to delete %s%s? "
-		      group (if force " and all its contents" "")))))
-	  ()				; Whew!
-	(gnus-message 6 "Deleting group %s..." group)
-	(if (not (gnus-request-delete-group group force))
-	    (gnus-error 3 "Couldn't delete group %s" group)
-	  (gnus-message 6 "Deleting group %s...done" group)
-	  (gnus-group-goto-group group)
-	  (gnus-group-kill-group 1 t)
-	  (gnus-sethash group nil gnus-active-hashtb)
-	  t))
+      (let ((group-decoded (gnus-group-decoded-name group)))
+	(if (and (not no-prompt)
+		 (not (gnus-yes-or-no-p
+		       (format
+			"Do you really want to delete %s%s? "
+			group-decoded (if force " and all its contents" "")))))
+	    ()				; Whew!
+	  (gnus-message 6 "Deleting group %s..." group-decoded)
+	  (if (not (gnus-request-delete-group group force))
+	      (gnus-error 3 "Couldn't delete group %s" group-decoded)
+	    (gnus-message 6 "Deleting group %s...done" group-decoded)
+	    (gnus-group-goto-group group)
+	    (gnus-group-kill-group 1 t)
+	    (gnus-sethash group nil gnus-active-hashtb)
+	    t)))
     (gnus-group-position-point)))
 
 (defun gnus-group-rename-group (group new-name)
@@ -2588,16 +2595,26 @@
       (setq url (read-from-minibuffer "URL to Search for RSS: ")))
   (let ((feedinfo (nnrss-discover-feed url)))
     (if feedinfo
-	(let ((title (read-from-minibuffer "Title: "
-					   (cdr (assoc 'title
-						       feedinfo))))
+	(let ((title (gnus-newsgroup-savable-name
+		      (read-from-minibuffer "Title: "
+					    (gnus-newsgroup-savable-name
+					     (or (cdr (assoc 'title
+							     feedinfo))
+						 "")))))
 	      (desc  (read-from-minibuffer "Description: "
 					   (cdr (assoc 'description
 						       feedinfo))))
-	      (href (cdr (assoc 'href feedinfo))))
-	  (push (list title href desc)
-		nnrss-group-alist)
-	  (gnus-group-make-group title '(nnrss ""))
+	      (href (cdr (assoc 'href feedinfo)))
+	      (encodable (mm-coding-system-p 'utf-8)))
+	  (when encodable
+	    ;; Unify non-ASCII text.
+	    (setq title (mm-decode-coding-string
+			 (mm-encode-coding-string title 'utf-8) 'utf-8)))
+	  (gnus-group-make-group (if encodable
+				     (mm-encode-coding-string title 'utf-8)
+				   title)
+				 '(nnrss ""))
+	  (push (list title href desc) nnrss-group-alist)
 	  (nnrss-save-server-data nil))
       (error "No feeds found for %s" url))))
 
@@ -3101,7 +3118,7 @@
 		   "Do you really want to mark all articles in %s as read? "
 		 "Mark all unread articles in %s as read? ")
 	       (if (= (length groups) 1)
-		   (car groups)
+		   (gnus-group-decoded-name (car groups))
 		 (format "these %d groups" (length groups)))))))
 	n
       (while (setq group (pop groups))
@@ -3179,7 +3196,8 @@
 
 (defun gnus-group-expire-articles-1 (group)
   (when (gnus-check-backend-function 'request-expire-articles group)
-    (gnus-message 6 "Expiring articles in %s..." group)
+    (gnus-message 6 "Expiring articles in %s..."
+		  (gnus-group-decoded-name group))
     (let* ((info (gnus-get-info group))
 	   (expirable (if (gnus-group-total-expirable-p group)
 			  (cons nil (gnus-list-of-read-articles group))
@@ -3204,7 +3222,8 @@
 	    (gnus-request-expire-articles
 	     (gnus-uncompress-sequence (cdr expirable)) group))))
 	(gnus-close-group group))
-      (gnus-message 6 "Expiring articles in %s...done" group)
+      (gnus-message 6 "Expiring articles in %s...done"
+		    (gnus-group-decoded-name group))
       ;; Return the list of un-expired articles.
       (cdr expirable))))
 
@@ -3243,7 +3262,8 @@
     (while (setq group (pop groups))
       (gnus-group-remove-mark group)
       (gnus-message 6 "Changed level of %s from %d to %d"
-		    group (or (gnus-group-group-level) gnus-level-killed)
+		    (gnus-group-decoded-name group)
+		    (or (gnus-group-group-level) gnus-level-killed)
 		    level)
       (gnus-group-change-level
        group level (or (gnus-group-group-level) gnus-level-killed))
@@ -3392,7 +3412,7 @@
 		  gnus-list-of-killed-groups))
 	  (gnus-group-change-level
 	   (if entry entry group) gnus-level-killed (if entry nil level))
-	  (message "Killed group %s" group))
+	  (message "Killed group %s" (gnus-group-decoded-name group)))
       ;; If there are lots and lots of groups to be killed, we use
       ;; this thing instead.
       (dolist (group (nreverse groups))
--- a/lisp/gnus/gnus-spec.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/gnus-spec.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,5 +1,5 @@
 ;;; gnus-spec.el --- format spec functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -196,6 +196,13 @@
 	    (not (equal emacs-version
 			(cdr (assq 'version gnus-format-specs)))))
     (setq gnus-format-specs nil))
+  ;; Flush the group format spec cache if it doesn't support decoded
+  ;; group names.
+  (when (memq 'group types)
+    (let ((spec (assq 'group gnus-format-specs)))
+      (unless (string-match " gnus-tmp-decoded-group[ )]"
+			    (gnus-prin1-to-string (nth 2 spec)))
+	(setq gnus-format-specs (delq spec gnus-format-specs)))))
 
   ;; Go through all the formats and see whether they need updating.
   (let (new-format entry type val updated)
--- a/lisp/gnus/gnus-sum.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/gnus-sum.el	Mon Apr 11 12:40:15 2005 +0000
@@ -7254,11 +7254,12 @@
 	     (if (and group
 		      (not (gnus-ephemeral-group-p gnus-newsgroup-name)))
 		 (format " (Type %s for %s [%s])"
-			 (single-key-description cmd) group
+			 (single-key-description cmd)
+			 (gnus-group-decoded-name group)
 			 (car (gnus-gethash group gnus-newsrc-hashtb)))
 	       (format " (Type %s to exit %s)"
 		       (single-key-description cmd)
-		       gnus-newsgroup-name))))
+		       (gnus-group-decoded-name gnus-newsgroup-name)))))
       ;; Confirm auto selection.
       (setq key (car (setq keve (gnus-read-event-char prompt)))
 	    ended t)
--- a/lisp/gnus/mm-url.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/mm-url.el	Mon Apr 11 12:40:15 2005 +0000
@@ -59,7 +59,7 @@
   '((wget "wget" "--user-agent=mm-url" "-q" "-O" "-")
     (w3m  "w3m" "-dump_source")
     (lynx "lynx" "-source")
-    (curl "curl")))
+    (curl "curl" "--silent")))
 
 (defcustom mm-url-program
   (cond
--- a/lisp/gnus/mm-util.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/mm-util.el	Mon Apr 11 12:40:15 2005 +0000
@@ -57,9 +57,11 @@
 		    mm-mime-mule-charset-alist)
 	    nil t))))
      (subst-char-in-string
-      . (lambda (from to string) ;; stolen (and renamed) from nnheader.el
-	  "Replace characters in STRING from FROM to TO."
-	  (let ((string (substring string 0)) ;Copy string.
+      . (lambda (from to string &optional inplace)
+	  ;; stolen (and renamed) from nnheader.el
+	  "Replace characters in STRING from FROM to TO.
+	  Unless optional argument INPLACE is non-nil, return a new string."
+	  (let ((string (if inplace string (copy-sequence string)))
 		(len (length string))
 		(idx 0))
 	    ;; Replace all occurrences of FROM with TO.
@@ -70,7 +72,26 @@
 	    string)))
      (string-as-unibyte . identity)
      (string-make-unibyte . identity)
+     ;; string-as-multibyte often doesn't really do what you think it does.
+     ;; Example:
+     ;;    (aref (string-as-multibyte "\201") 0) -> 129 (aka ?\201)
+     ;;    (aref (string-as-multibyte "\300") 0) -> 192 (aka ?\300)
+     ;;    (aref (string-as-multibyte "\300\201") 0) -> 192 (aka ?\300)
+     ;;    (aref (string-as-multibyte "\300\201") 1) -> 129 (aka ?\201)
+     ;; but
+     ;;    (aref (string-as-multibyte "\201\300") 0) -> 2240
+     ;;    (aref (string-as-multibyte "\201\300") 1) -> <error>
+     ;; Better use string-to-multibyte or encode-coding-string.
+     ;; If you really need string-as-multibyte somewhere it's usually
+     ;; because you're using the internal emacs-mule representation (maybe
+     ;; because you're using string-as-unibyte somewhere), which is
+     ;; generally a problem in itself.
+     ;; Here is an approximate equivalence table to help think about it:
+     ;; (string-as-multibyte s)   ~= (decode-coding-string s 'emacs-mule)
+     ;; (string-to-multibyte s)   ~= (decode-coding-string s 'binary)
+     ;; (string-make-multibyte s) ~= (decode-coding-string s locale-coding-system)
      (string-as-multibyte . identity)
+     (string-to-multibyte . mm-string-as-multibyte)
      (multibyte-string-p . ignore)
      ;; It is not a MIME function, but some MIME functions use it.
      (make-temp-file . (lambda (prefix &optional dir-flag)
@@ -153,7 +174,7 @@
 If CS is available, return CS itself in Emacs, and return a coding
 system object in XEmacs."
   (if (fboundp 'find-coding-system)
-      (find-coding-system cs)
+      (and cs (find-coding-system cs))
     (if (fboundp 'coding-system-p)
 	(when (coding-system-p cs)
 	  cs)
@@ -936,7 +957,7 @@
     (defun mm-detect-coding-region (start end)
       "Like `detect-coding-region' except returning the best one."
       (let ((coding-systems
-	     (detect-coding-region (point) (point-max))))
+	     (detect-coding-region start end)))
 	(or (car-safe coding-systems)
 	    coding-systems)))
   (defun mm-detect-coding-region (start end)
@@ -960,5 +981,5 @@
 
 (provide 'mm-util)
 
-;;; arch-tag: 94dc5388-825d-4fd1-bfa5-2100aa351238
+;; arch-tag: 94dc5388-825d-4fd1-bfa5-2100aa351238
 ;;; mm-util.el ends here
--- a/lisp/gnus/nnrss.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/gnus/nnrss.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,5 +1,5 @@
 ;;; nnrss.el --- interfacing with RSS
-;; Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
 ;; Keywords: RSS
@@ -36,9 +36,11 @@
 (require 'time-date)
 (require 'rfc2231)
 (require 'mm-url)
+(require 'rfc2047)
+(require 'mml)
 (eval-when-compile
   (ignore-errors
-    (require 'xml)))
+   (require 'xml)))
 (eval '(require 'xml))
 
 (nnoo-declare nnrss)
@@ -75,20 +77,32 @@
 (defvar nnrss-content-function nil
   "A function which is called in `nnrss-request-article'.
 The arguments are (ENTRY GROUP ARTICLE).
-ENTRY is the record of the current headline. GROUP is the group name.
+ENTRY is the record of the current headline.  GROUP is the group name.
 ARTICLE is the article number of the current headline.")
 
+(defvar nnrss-file-coding-system mm-universal-coding-system
+  "Coding system used when reading and writing files.")
+
+(defvar nnrss-compatible-encoding-alist '((iso-8859-1 . windows-1252))
+  "Alist of encodings and those supersets.
+The cdr of each element is used to decode data if it is available when
+the car is what the data specify as the encoding. Or, the car is used
+for decoding when the cdr that the data specify is not available.")
+
 (nnoo-define-basics nnrss)
 
 ;;; Interface functions
 
-(eval-when-compile
-  (defmacro nnrss-string-as-multibyte (string)
-    (if (featurep 'xemacs)
-	string
-      `(string-as-multibyte ,string))))
+(defsubst nnrss-format-string (string)
+  (gnus-replace-in-string string " *\n *" " "))
+
+(defun nnrss-decode-group-name (group)
+  (if (and group (mm-coding-system-p 'utf-8))
+      (setq group (mm-decode-coding-string group 'utf-8))
+    group))
 
 (deffoo nnrss-retrieve-headers (articles &optional group server fetch-old)
+  (setq group (nnrss-decode-group-name group))
   (nnrss-possibly-change-group group server)
   (let (e)
     (save-excursion
@@ -97,21 +111,26 @@
       (dolist (article articles)
 	(if (setq e (assq article nnrss-group-data))
 	    (insert (number-to-string (car e)) "\t" ;; number
-		    (if (nth 3 e)
-			(nnrss-format-string (nth 3 e)) "")
-		    "\t" ;; subject
-		    (if (nth 4 e)
-			(nnrss-format-string (nth 4 e))
-		      "(nobody)")
-		    "\t" ;;from
+		    ;; subject
+		    (or (nth 3 e) "")
+		    "\t"
+		    ;; from
+		    (or (nth 4 e) "(nobody)")
+		    "\t"
+		    ;; date
 		    (or (nth 5 e) "")
-		    "\t" ;; date
+		    "\t"
+		    ;; id
 		    (format "<%d@%s.nnrss>" (car e) group)
-		    "\t" ;; id
-		    "\t" ;; refs
-		    "-1" "\t" ;; chars
-		    "-1" "\t" ;; lines
-		    "" "\t" ;; Xref
+		    "\t"
+		    ;; refs
+		    "\t"
+		    ;; chars
+		    "-1" "\t"
+		    ;; lines
+		    "-1" "\t"
+		    ;; Xref
+		    "" "\t"
 		    (if (and (nth 6 e)
 			     (memq nnrss-description-field
 				   nnmail-extra-headers))
@@ -132,69 +151,102 @@
   'nov)
 
 (deffoo nnrss-request-group (group &optional server dont-check)
+  (setq group (nnrss-decode-group-name group))
+  (nnheader-message 6 "nnrss: Requesting %s..." group)
   (nnrss-possibly-change-group group server)
-  (if dont-check
-      t
-    (nnrss-check-group group server)
-    (nnheader-report 'nnrss "Opened group %s" group)
-    (nnheader-insert
-     "211 %d %d %d %s\n" nnrss-group-max nnrss-group-min nnrss-group-max
-     (prin1-to-string group)
-     t)))
+  (prog1
+      (if dont-check
+	  t
+	(nnrss-check-group group server)
+	(nnheader-report 'nnrss "Opened group %s" group)
+	(nnheader-insert
+	 "211 %d %d %d %s\n" nnrss-group-max nnrss-group-min nnrss-group-max
+	 (prin1-to-string group)
+	 t))
+    (nnheader-message 6 "nnrss: Requesting %s...done" group)))
 
 (deffoo nnrss-close-group (group &optional server)
   t)
 
 (deffoo nnrss-request-article (article &optional group server buffer)
+  (setq group (nnrss-decode-group-name group))
+  (when (stringp article)
+    (setq article (if (string-match "\\`<\\([0-9]+\\)@" article)
+		      (string-to-number (match-string 1 article))
+		    0)))
   (nnrss-possibly-change-group group server)
   (let ((e (assq article nnrss-group-data))
-	(boundary "=-=-=-=-=-=-=-=-=-")
 	(nntp-server-buffer (or buffer nntp-server-buffer))
 	post err)
     (when e
-      (catch 'error
-	(with-current-buffer nntp-server-buffer
-	  (erase-buffer)
-	  (goto-char (point-min))
-	  (insert "Mime-Version: 1.0\nContent-Type: multipart/alternative; boundary=\"" boundary "\"\n")
-	  (if group
-	      (insert "Newsgroups: " group "\n"))
-	  (if (nth 3 e)
-	      (insert "Subject: " (nnrss-format-string (nth 3 e)) "\n"))
-	  (if (nth 4 e)
-	      (insert "From: " (nnrss-format-string (nth 4 e)) "\n"))
-	  (if (nth 5 e)
-	      (insert "Date: " (nnrss-format-string (nth 5 e)) "\n"))
-	  (insert "Message-ID: " (format "<%d@%s.nnrss>" (car e) group) "\n")
-	  (insert "\n")
-	  (let ((text (if (nth 6 e)
-			  (nnrss-string-as-multibyte (nth 6 e))))
-		(link (if (nth 2 e)
-			  (nth 2 e))))
-	    (insert "\n\n--" boundary "\nContent-Type: text/plain\n\n")
-	    (let ((point (point)))
-	      (if text
-		  (progn (insert text)
-			 (goto-char point)
-			 (while (re-search-forward "\n" nil t)
-			   (replace-match " "))
-			 (goto-char (point-max))
-			 (insert "\n\n")))
-	      (if link
-		  (insert link)))
-	    (insert "\n\n--" boundary "\nContent-Type: text/html\n\n")
-	    (let ((point (point)))
-	      (if text
-		  (progn (insert "<html><head></head><body>\n" text "\n</body></html>")
-			 (goto-char point)
-			 (while (re-search-forward "\n" nil t)
-			   (replace-match " "))
-			 (goto-char (point-max))
-			 (insert "\n\n")))
-	      (if link
-		  (insert "<p><a href=\"" link "\">link</a></p>\n"))))
-	  (if nnrss-content-function
-	      (funcall nnrss-content-function e group article)))))
+      (with-current-buffer nntp-server-buffer
+	(erase-buffer)
+	(if group
+	    (insert "Newsgroups: " group "\n"))
+	(if (nth 3 e)
+	    (insert "Subject: " (nth 3 e) "\n"))
+	(if (nth 4 e)
+	    (insert "From: " (nth 4 e) "\n"))
+	(if (nth 5 e)
+	    (insert "Date: " (nnrss-format-string (nth 5 e)) "\n"))
+	(let ((header (buffer-string))
+	      (text (if (nth 6 e)
+			(mapconcat 'identity
+				   (delete "" (split-string (nth 6 e) "\n+"))
+				   " ")))
+	      (link (nth 2 e))
+	      ;; Enable encoding of Newsgroups header in XEmacs.
+	      (default-enable-multibyte-characters t)
+	      (rfc2047-header-encoding-alist
+	       (if (mm-coding-system-p 'utf-8)
+		   (cons '("Newsgroups" . utf-8)
+			 rfc2047-header-encoding-alist)
+		 rfc2047-header-encoding-alist))
+	      rfc2047-encode-encoded-words body)
+	  (when (or text link)
+	    (insert "\n")
+	    (insert "<#multipart type=alternative>\n"
+		    "<#part type=\"text/plain\">\n")
+	    (setq body (point))
+	    (if text
+		(progn
+		  (insert text "\n")
+		  (when link
+		    (insert "\n" link "\n")))
+	      (when link
+		(insert link "\n")))
+	    (setq body (buffer-substring body (point)))
+	    (insert "<#/part>\n"
+		    "<#part type=\"text/html\">\n"
+		    "<html><head></head><body>\n")
+	    (when text
+	      (insert text "\n"))
+	    (when link
+	      (insert "<p><a href=\"" link "\">link</a></p>\n"))
+	    (insert "</body></html>\n"
+		    "<#/part>\n"
+		    "<#/multipart>\n"))
+	  (condition-case nil
+	      (mml-to-mime)
+	    (error
+	     (erase-buffer)
+	     (insert header
+		     "Content-Type: text/plain; charset=gnus-decoded\n"
+		     "Content-Transfer-Encoding: 8bit\n\n"
+		     body)
+	     (nnheader-message
+	      3 "Warning - there might be invalid characters"))))
+	(goto-char (point-min))
+	(search-forward "\n\n")
+	(forward-line -1)
+	(insert (format "Message-ID: <%d@%s.nnrss>\n"
+			(car e)
+			(let ((rfc2047-encoding-type 'mime)
+			      rfc2047-encode-max-chars)
+			  (rfc2047-encode-string
+			   (gnus-replace-in-string group "[\t\n ]+" "_")))))
+	(when nnrss-content-function
+	  (funcall nnrss-content-function e group article))))
     (cond
      (err
       (nnheader-report 'nnrss err))
@@ -217,6 +269,7 @@
 
 (deffoo nnrss-request-expire-articles
     (articles group &optional server force)
+  (setq group (nnrss-decode-group-name group))
   (nnrss-possibly-change-group group server)
   (let (e days not-expirable changed)
     (dolist (art articles)
@@ -234,18 +287,18 @@
     not-expirable))
 
 (deffoo nnrss-request-delete-group (group &optional force server)
+  (setq group (nnrss-decode-group-name group))
   (nnrss-possibly-change-group group server)
+  (let (elem)
+    ;; There may be two or more entries in `nnrss-group-alist' since
+    ;; this function didn't delete them formerly.
+    (while (setq elem (assoc group nnrss-group-alist))
+      (setq nnrss-group-alist (delq elem nnrss-group-alist))))
   (setq nnrss-server-data
 	(delq (assoc group nnrss-server-data) nnrss-server-data))
   (nnrss-save-server-data server)
-  (let ((file (expand-file-name
-	       (nnrss-translate-file-chars
-		(concat group (and server
-				   (not (equal server ""))
-				   "-")
-			server ".el")) nnrss-directory)))
-    (ignore-errors
-      (delete-file file)))
+  (ignore-errors
+   (delete-file (nnrss-make-filename group server)))
   t)
 
 (deffoo nnrss-request-list-newsgroups (&optional server)
@@ -262,34 +315,67 @@
 
 ;;; Internal functions
 (eval-when-compile (defun xml-rpc-method-call (&rest args)))
+
+(defun nnrss-get-encoding ()
+  "Return an encoding attribute specified in the current xml contents.
+If `nnrss-compatible-encoding-alist' specifies the compatible encoding,
+it is used instead.  If the xml contents doesn't specify the encoding,
+return `utf-8' which is the default encoding for xml if it is available,
+otherwise return nil."
+  (goto-char (point-min))
+  (if (re-search-forward
+       "<\\?[^>]*encoding=\\(\"\\([^\">]+\\)\"\\|'\\([^'>]+\\)'\\)"
+       nil t)
+      (let ((encoding (intern (downcase (or (match-string 2)
+					    (match-string 3))))))
+	(or
+	 (mm-coding-system-p (cdr (assq encoding
+					nnrss-compatible-encoding-alist)))
+	 (mm-coding-system-p encoding)
+	 (mm-coding-system-p (car (rassq encoding
+					 nnrss-compatible-encoding-alist)))))
+    (mm-coding-system-p 'utf-8)))
+
 (defun nnrss-fetch (url &optional local)
-  "Fetch the url and put it in a the expected lisp structure."
-  (with-temp-buffer
-  ;some CVS versions of url.el need this to close the connection quickly
-    (let* (xmlform htmlform)
+  "Fetch URL and put it in a the expected Lisp structure."
+  (mm-with-unibyte-buffer
+    ;;some CVS versions of url.el need this to close the connection quickly
+    (let (cs xmlform htmlform)
       ;; bit o' work necessary for w3 pre-cvs and post-cvs
       (if local
 	  (let ((coding-system-for-read 'binary))
 	    (insert-file-contents url))
-	(mm-url-insert url))
-
-;; Because xml-parse-region can't deal with anything that isn't
-;; xml and w3-parse-buffer can't deal with some xml, we have to
-;; parse with xml-parse-region first and, if that fails, parse
-;; with w3-parse-buffer.  Yuck.  Eventually, someone should find out
-;; why w3-parse-buffer fails to parse some well-formed xml and
-;; fix it.
+	;; FIXME: shouldn't binding `coding-system-for-read' be moved
+	;; to `mm-url-insert'?
+	(let ((coding-system-for-read 'binary))
+	  (mm-url-insert url)))
+      (nnheader-remove-cr-followed-by-lf)
+      ;; Decode text according to the encoding attribute.
+      (when (setq cs (nnrss-get-encoding))
+	(mm-decode-coding-region (point-min) (point-max) cs)
+	(mm-enable-multibyte))
+      (goto-char (point-min))
 
-    (condition-case err
-	(setq xmlform (xml-parse-region (point-min) (point-max)))
-      (error (if (fboundp 'w3-parse-buffer)
-		 (setq htmlform (caddar (w3-parse-buffer
-					 (current-buffer))))
-	       (message "nnrss: Not valid XML and w3 parse not available (%s)"
-			url))))
-    (if htmlform
-	htmlform
-      xmlform))))
+      ;; Because xml-parse-region can't deal with anything that isn't
+      ;; xml and w3-parse-buffer can't deal with some xml, we have to
+      ;; parse with xml-parse-region first and, if that fails, parse
+      ;; with w3-parse-buffer.  Yuck.  Eventually, someone should find out
+      ;; why w3-parse-buffer fails to parse some well-formed xml and
+      ;; fix it.
+
+      (condition-case err1
+	  (setq xmlform (xml-parse-region (point-min) (point-max)))
+	(error
+	 (condition-case err2
+	     (setq htmlform (caddar (w3-parse-buffer
+				     (current-buffer))))
+	   (error
+	    (message "\
+nnrss: %s: Not valid XML %s and w3-parse doesn't work %s"
+		     url err1 err2)))))
+      (if htmlform
+	  htmlform
+	xmlform))))
 
 (defun nnrss-possibly-change-group (&optional group server)
   (when (and server
@@ -302,9 +388,9 @@
 (defvar nnrss-extra-categories '(nnrss-snarf-moreover-categories))
 
 (defun nnrss-generate-active ()
-  (if (y-or-n-p "fetch extra categories? ")
-      (dolist (func nnrss-extra-categories)
-	(funcall func)))
+  (when (y-or-n-p "Fetch extra categories? ")
+    (dolist (func nnrss-extra-categories)
+      (funcall func)))
   (save-excursion
     (set-buffer nntp-server-buffer)
     (erase-buffer)
@@ -318,41 +404,26 @@
 
 (defun nnrss-read-server-data (server)
   (setq nnrss-server-data nil)
-  (let ((file (expand-file-name
-	       (nnrss-translate-file-chars
-		(concat "nnrss" (and server
-				     (not (equal server ""))
-				     "-")
-			server
-			".el"))
-	       nnrss-directory)))
+  (let ((file (nnrss-make-filename "nnrss" server)))
     (when (file-exists-p file)
-      (with-temp-buffer
-	(let ((coding-system-for-read 'binary)
-	      emacs-lisp-mode-hook)
+      ;; In Emacs 21.3 and earlier, `load' doesn't support non-ASCII
+      ;; file names.  So, we use `insert-file-contents' instead.
+      (mm-with-multibyte-buffer
+	(let ((coding-system-for-read nnrss-file-coding-system)
+	      (file-name-coding-system nnmail-pathname-coding-system))
 	  (insert-file-contents file)
-	  (emacs-lisp-mode)
-	  (goto-char (point-min))
-	  (eval-buffer))))))
+	  (eval-region (point-min) (point-max)))))))
 
 (defun nnrss-save-server-data (server)
   (gnus-make-directory nnrss-directory)
-  (let ((file (expand-file-name
-	       (nnrss-translate-file-chars
-		(concat "nnrss" (and server
-				     (not (equal server ""))
-				     "-")
-			server ".el"))
-	       nnrss-directory)))
-    (let ((coding-system-for-write 'binary)
-	  print-level print-length)
-      (with-temp-file file
-	(insert "(setq nnrss-group-alist '"
-		(prin1-to-string nnrss-group-alist)
-		")\n")
-	(insert "(setq nnrss-server-data '"
-		(prin1-to-string nnrss-server-data)
-		")\n")))))
+  (let ((coding-system-for-write nnrss-file-coding-system)
+	(file-name-coding-system nnmail-pathname-coding-system))
+    (with-temp-file (nnrss-make-filename "nnrss" server)
+      (insert (format ";; -*- coding: %s; -*-\n"
+		      nnrss-file-coding-system))
+      (gnus-prin1 `(setq nnrss-group-alist ',nnrss-group-alist))
+      (insert "\n")
+      (gnus-prin1 `(setq nnrss-server-data ',nnrss-server-data)))))
 
 (defun nnrss-read-group-data (group server)
   (setq nnrss-group-data nil)
@@ -360,43 +431,50 @@
   (let ((pair (assoc group nnrss-server-data)))
     (setq nnrss-group-max (or (cadr pair) 0))
     (setq nnrss-group-min (+ nnrss-group-max 1)))
-  (let ((file (expand-file-name
-	       (nnrss-translate-file-chars
-		(concat group (and server
-				   (not (equal server ""))
-				   "-")
-			server ".el"))
-	       nnrss-directory)))
+  (let ((file (nnrss-make-filename group server)))
     (when (file-exists-p file)
-      (with-temp-buffer
-	(let ((coding-system-for-read 'binary)
-	      emacs-lisp-mode-hook)
+      ;; In Emacs 21.3 and earlier, `load' doesn't support non-ASCII
+      ;; file names.  So, we use `insert-file-contents' instead.
+      (mm-with-multibyte-buffer
+	(let ((coding-system-for-read nnrss-file-coding-system)
+	      (file-name-coding-system nnmail-pathname-coding-system))
 	  (insert-file-contents file)
-	  (emacs-lisp-mode)
-	  (goto-char (point-min))
-	  (eval-buffer)))
+	  (eval-region (point-min) (point-max))))
       (dolist (e nnrss-group-data)
-	(gnus-sethash (nth 2 e) e nnrss-group-hashtb)
-	(if (and (car e) (> nnrss-group-min (car e)))
-	    (setq nnrss-group-min (car e)))
-	(if (and (car e) (< nnrss-group-max (car e)))
-	    (setq nnrss-group-max (car e)))))))
+	(gnus-sethash (or (nth 2 e) (nth 6 e)) t nnrss-group-hashtb)
+	(when (and (car e) (> nnrss-group-min (car e)))
+	  (setq nnrss-group-min (car e)))
+	(when (and (car e) (< nnrss-group-max (car e)))
+	  (setq nnrss-group-max (car e)))))))
 
 (defun nnrss-save-group-data (group server)
   (gnus-make-directory nnrss-directory)
-  (let ((file (expand-file-name
-	       (nnrss-translate-file-chars
-		(concat group (and server
-				   (not (equal server ""))
-				   "-")
-			server ".el"))
-	       nnrss-directory)))
-    (let ((coding-system-for-write 'binary)
-	  print-level print-length)
-      (with-temp-file file
-	(insert "(setq nnrss-group-data '"
-		(prin1-to-string nnrss-group-data)
-		")\n")))))
+  (let ((coding-system-for-write nnrss-file-coding-system)
+	(file-name-coding-system nnmail-pathname-coding-system))
+    (with-temp-file (nnrss-make-filename group server)
+      (insert (format ";; -*- coding: %s; -*-\n"
+		      nnrss-file-coding-system))
+      (gnus-prin1 `(setq nnrss-group-data ',nnrss-group-data)))))
+
+(defun nnrss-make-filename (name server)
+  (expand-file-name
+   (nnrss-translate-file-chars
+    (concat name
+	    (and server
+		 (not (equal server ""))
+		 "-")
+	    server
+	    ".el"))
+   nnrss-directory))
+
+(gnus-add-shutdown 'nnrss-close 'gnus)
+
+(defun nnrss-close ()
+  "Clear internal nnrss variables."
+  (setq nnrss-group-data nil
+	nnrss-server-data nil
+	nnrss-group-hashtb nil
+	nnrss-group-alist nil))
 
 ;;; URL interface
 
@@ -407,15 +485,36 @@
   (mm-with-unibyte-current-buffer
     (mm-url-insert url)))
 
-(defun nnrss-decode-entities-unibyte-string (string)
+(defun nnrss-decode-entities-string (string)
   (if string
-      (mm-with-unibyte-buffer
+      (mm-with-multibyte-buffer
 	(insert string)
 	(mm-url-decode-entities-nbsp)
 	(buffer-string))))
 
 (defalias 'nnrss-insert 'nnrss-insert-w3)
 
+(defun nnrss-mime-encode-string (string)
+  (mm-with-multibyte-buffer
+    (insert string)
+    (mm-url-decode-entities-nbsp)
+    (goto-char (point-min))
+    (while (re-search-forward "[\t\n ]+" nil t)
+      (replace-match " "))
+    (goto-char (point-min))
+    (skip-chars-forward " ")
+    (delete-region (point-min) (point))
+    (goto-char (point-max))
+    (skip-chars-forward " ")
+    (delete-region (point) (point-max))
+    (let ((rfc2047-encoding-type 'mime)
+	  rfc2047-encode-max-chars)
+      (rfc2047-encode-region (point-min) (point-max)))
+    (goto-char (point-min))
+    (while (search-forward "\n" nil t)
+      (delete-backward-char 1))
+    (buffer-string)))
+
 ;;; Snarf functions
 
 (defun nnrss-check-group (group server)
@@ -431,11 +530,11 @@
 		    (second (assoc group nnrss-group-alist))))
       (unless url
 	(setq url
-             (cdr
-              (assoc 'href
-                     (nnrss-discover-feed
-                      (read-string
-                       (format "URL to search for %s: " group) "http://")))))
+	      (cdr
+	       (assoc 'href
+		      (nnrss-discover-feed
+		       (read-string
+			(format "URL to search for %s: " group) "http://")))))
 	(let ((pair (assoc group nnrss-server-data)))
 	  (if pair
 	      (setcdr (cdr pair) (list url))
@@ -451,12 +550,16 @@
 	  content-ns (nnrss-get-namespace-prefix xml "http://purl.org/rss/1.0/modules/content/"))
     (dolist (item (nreverse (nnrss-find-el (intern (concat rss-ns "item")) xml)))
       (when (and (listp item)
-		 (eq (intern (concat rss-ns "item")) (car item))
-		 (setq url (nnrss-decode-entities-unibyte-string
-			    (nnrss-node-text rss-ns 'link (cddr item))))
-		 (not (gnus-gethash url nnrss-group-hashtb)))
+		 (string= (concat rss-ns "item") (car item))
+		 (if (setq url (nnrss-decode-entities-string
+				(nnrss-node-text rss-ns 'link (cddr item))))
+		     (not (gnus-gethash url nnrss-group-hashtb))
+		   (setq extra (or (nnrss-node-text content-ns 'encoded item)
+				   (nnrss-node-text rss-ns 'description item)))
+		   (not (gnus-gethash extra nnrss-group-hashtb))))
 	(setq subject (nnrss-node-text rss-ns 'title item))
-	(setq extra (or (nnrss-node-text content-ns 'encoded item)
+	(setq extra (or extra
+			(nnrss-node-text content-ns 'encoded item)
 			(nnrss-node-text rss-ns 'description item)))
 	(setq author (or (nnrss-node-text rss-ns 'author item)
 			 (nnrss-node-text dc-ns 'creator item)
@@ -469,13 +572,14 @@
 	  (incf nnrss-group-max)
 	  (current-time)
 	  url
-	  (and subject (nnrss-decode-entities-unibyte-string subject))
-	  (and author (nnrss-decode-entities-unibyte-string author))
+	  (and subject (nnrss-mime-encode-string subject))
+	  (and author (nnrss-mime-encode-string author))
 	  date
-	  (and extra (nnrss-decode-entities-unibyte-string extra)))
+	  (and extra (nnrss-decode-entities-string extra)))
 	 nnrss-group-data)
-	(gnus-sethash url (car nnrss-group-data) nnrss-group-hashtb)
-	(setq changed t)))
+	(gnus-sethash (or url extra) t nnrss-group-hashtb)
+	(setq changed t))
+      (setq extra nil))
     (when changed
       (nnrss-save-group-data group server)
       (let ((pair (assoc group nnrss-server-data)))
@@ -484,6 +588,45 @@
 	  (push (list group nnrss-group-max) nnrss-server-data)))
       (nnrss-save-server-data server))))
 
+(defun nnrss-opml-import (opml-file)
+  "OPML subscriptions import.
+Read the file and attempt to subscribe to each Feed in the file."
+  (interactive "fImport file: ")
+  (mapcar
+   (lambda (node) (gnus-group-make-rss-group
+		   (cdr (assq 'xmlUrl (cadr node)))))
+   (nnrss-find-el 'outline
+		  (progn
+		    (find-file opml-file)
+		    (xml-parse-region (point-min)
+				      (point-max))))))
+
+(defun nnrss-opml-export ()
+  "OPML subscription export.
+Export subscriptions to a buffer in OPML Format."
+  (interactive)
+  (with-current-buffer (get-buffer-create "*OPML Export*")
+    (mm-set-buffer-file-coding-system 'utf-8)
+    (insert "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
+	    "<!-- OPML generated by Emacs Gnus' nnrss.el -->\n"
+	    "<opml version=\"1.1\">\n"
+	    "  <head>\n"
+	    "    <title>mySubscriptions</title>\n"
+	    "    <dateCreated>" (format-time-string "%a, %d %b %Y %T %z")
+	    "</dateCreated>\n"
+	    "    <ownerEmail>" user-mail-address "</ownerEmail>\n"
+	    "    <ownerName>" (user-full-name) "</ownerName>\n"
+	    "  </head>\n"
+	    "  <body>\n")
+    (dolist (sub nnrss-group-alist)
+      (insert "    <outline text=\"" (car sub)
+	      "\" xmlUrl=\"" (cadr sub) "\"/>\n"))
+    (insert "  </body>\n"
+	    "</opml>\n"))
+  (pop-to-buffer "*OPML Export*")
+  (when (fboundp 'sgml-mode)
+    (sgml-mode)))
+
 (defun nnrss-generate-download-script ()
   "Generate a download script in the current buffer.
 It is useful when `(setq nnrss-use-local t)'."
@@ -530,9 +673,6 @@
     (if changed
 	(nnrss-save-server-data ""))))
 
-(defun nnrss-format-string (string)
-  (gnus-replace-in-string (nnrss-string-as-multibyte string) " *\n *" " "))
-
 (defun nnrss-node-text (namespace local-name element)
   (let* ((node (assq (intern (concat namespace (symbol-name local-name)))
 		     element))
@@ -551,56 +691,59 @@
     node))
 
 (defun nnrss-find-el (tag data &optional found-list)
-  "Find the all matching elements in the data.  Careful with this on
-large documents!"
-  (if (listp data)
-      (mapcar (lambda (bit)
-		(if (car-safe bit)
-		    (progn (if (equal tag (car bit))
-			       (setq found-list
-				     (append found-list
-					     (list bit))))
-			   (if (and (listp (car-safe (caddr bit)))
-				    (not (stringp (caddr bit))))
-			       (setq found-list
-				     (append found-list
-					     (nnrss-find-el
-					      tag (caddr bit))))
-			     (setq found-list
-				   (append found-list
-					   (nnrss-find-el
-					    tag (cddr bit))))))))
-		data))
+  "Find the all matching elements in the data.
+Careful with this on large documents!"
+  (when (consp data)
+    (dolist (bit data)
+      (when (car-safe bit)
+	(when (equal tag (car bit))
+	  ;; Old xml.el may return a list of string.
+	  (when (and (consp (caddr bit))
+		     (stringp (caaddr bit)))
+	    (setcar (cddr bit) (caaddr bit)))
+	  (setq found-list
+		(append found-list
+			(list bit))))
+	(if (and (consp (car-safe (caddr bit)))
+		 (not (stringp (caddr bit))))
+	    (setq found-list
+		  (append found-list
+			  (nnrss-find-el
+			   tag (caddr bit))))
+	  (setq found-list
+		(append found-list
+			(nnrss-find-el
+			 tag (cddr bit))))))))
   found-list)
 
 (defun nnrss-rsslink-p (el)
   "Test if the element we are handed is an RSS autodiscovery link."
   (and (eq (car-safe el) 'link)
        (string-equal (cdr (assoc 'rel (cadr el))) "alternate")
-       (or (string-equal (cdr (assoc 'type (cadr el))) 
+       (or (string-equal (cdr (assoc 'type (cadr el)))
 			 "application/rss+xml")
 	   (string-equal (cdr (assoc 'type (cadr el))) "text/xml"))))
 
 (defun nnrss-get-rsslinks (data)
   "Extract the <link> elements that are links to RSS from the parsed data."
-  (delq nil (mapcar 
+  (delq nil (mapcar
 	     (lambda (el)
 	       (if (nnrss-rsslink-p el) el))
 	     (nnrss-find-el 'link data))))
 
 (defun nnrss-extract-hrefs (data)
-  "Recursively extract hrefs from a page's source.  DATA should be
-the output of xml-parse-region or w3-parse-buffer."
+  "Recursively extract hrefs from a page's source.
+DATA should be the output of `xml-parse-region' or
+`w3-parse-buffer'."
   (mapcar (lambda (ahref)
 	    (cdr (assoc 'href (cadr ahref))))
 	  (nnrss-find-el 'a data)))
 
-(defmacro nnrss-match-macro (base-uri item 
-					   onsite-list offsite-list)
+(defmacro nnrss-match-macro (base-uri item onsite-list offsite-list)
   `(cond ((or (string-match (concat "^" ,base-uri) ,item)
-	       (not (string-match "://" ,item)))
-	   (setq ,onsite-list (append ,onsite-list (list ,item))))
-	  (t (setq ,offsite-list (append ,offsite-list (list ,item))))))
+	      (not (string-match "://" ,item)))
+	  (setq ,onsite-list (append ,onsite-list (list ,item))))
+	 (t (setq ,offsite-list (append ,offsite-list (list ,item))))))
 
 (defun nnrss-order-hrefs (base-uri hrefs)
   "Given a list of hrefs, sort them using the following priorities:
@@ -615,29 +758,28 @@
   (let (rss-onsite-end  rdf-onsite-end  xml-onsite-end
 	rss-onsite-in   rdf-onsite-in   xml-onsite-in
 	rss-offsite-end rdf-offsite-end xml-offsite-end
-	rss-offsite-in rdf-offsite-in xml-offsite-in)
-    (mapcar (lambda (href)
-	      (if (not (null href))
-	      (cond ((string-match "\\.rss$" href)
-		     (nnrss-match-macro
-		      base-uri href rss-onsite-end rss-offsite-end))
-		    ((string-match "\\.rdf$" href)
-		     (nnrss-match-macro 
-		      base-uri href rdf-onsite-end rdf-offsite-end))
-		    ((string-match "\\.xml$" href)
-		     (nnrss-match-macro
-		      base-uri href xml-onsite-end xml-offsite-end))
-		    ((string-match "rss" href)
-		     (nnrss-match-macro
-		      base-uri href rss-onsite-in rss-offsite-in))
-		    ((string-match "rdf" href)
-		     (nnrss-match-macro
-		      base-uri href rdf-onsite-in rdf-offsite-in))
-		    ((string-match "xml" href)
-		     (nnrss-match-macro
-		      base-uri href xml-onsite-in xml-offsite-in)))))
-	    hrefs)
-    (append 
+	rss-offsite-in  rdf-offsite-in  xml-offsite-in)
+    (dolist (href hrefs)
+      (cond ((null href))
+	    ((string-match "\\.rss$" href)
+	     (nnrss-match-macro
+	      base-uri href rss-onsite-end rss-offsite-end))
+	    ((string-match "\\.rdf$" href)
+	     (nnrss-match-macro
+	      base-uri href rdf-onsite-end rdf-offsite-end))
+	    ((string-match "\\.xml$" href)
+	     (nnrss-match-macro
+	      base-uri href xml-onsite-end xml-offsite-end))
+	    ((string-match "rss" href)
+	     (nnrss-match-macro
+	      base-uri href rss-onsite-in rss-offsite-in))
+	    ((string-match "rdf" href)
+	     (nnrss-match-macro
+	      base-uri href rdf-onsite-in rdf-offsite-in))
+	    ((string-match "xml" href)
+	     (nnrss-match-macro
+	      base-uri href xml-onsite-in xml-offsite-in))))
+    (append
      rss-onsite-end  rdf-onsite-end  xml-onsite-end
      rss-onsite-in   rdf-onsite-in   xml-onsite-in
      rss-offsite-end rdf-offsite-end xml-offsite-end
@@ -670,23 +812,23 @@
 ;;       - offsite links containing any of the above
 	  (let* ((base-uri (progn (string-match ".*://[^/]+/?" url)
 				  (match-string 0 url)))
-		 (hrefs (nnrss-order-hrefs 
+		 (hrefs (nnrss-order-hrefs
 			 base-uri (nnrss-extract-hrefs parsed-page)))
 		 (rss-link nil))
-	  (while (and (eq rss-link nil) (not (eq hrefs nil)))
-	    (let ((href-data (nnrss-fetch (car hrefs))))
-	      (if (nnrss-rss-p href-data)
-		  (let* ((rss-ns (nnrss-get-namespace-prefix href-data "http://purl.org/rss/1.0/")))
-		    (setq rss-link (nnrss-rss-title-description
-				    rss-ns href-data (car hrefs))))
-		(setq hrefs (cdr hrefs)))))
-	  (if rss-link rss-link
+	    (while (and (eq rss-link nil) (not (eq hrefs nil)))
+	      (let ((href-data (nnrss-fetch (car hrefs))))
+		(if (nnrss-rss-p href-data)
+		    (let* ((rss-ns (nnrss-get-namespace-prefix href-data "http://purl.org/rss/1.0/")))
+		      (setq rss-link (nnrss-rss-title-description
+				      rss-ns href-data (car hrefs))))
+		  (setq hrefs (cdr hrefs)))))
+	    (if rss-link rss-link
 
 ;;    4. check syndic8
-	    (nnrss-find-rss-via-syndic8 url))))))))
+	      (nnrss-find-rss-via-syndic8 url))))))))
 
 (defun nnrss-find-rss-via-syndic8 (url)
-  "query syndic8 for the rss feeds it has for the url."
+  "Query syndic8 for the rss feeds it has for URL."
   (if (not (locate-library "xml-rpc"))
       (progn
 	(message "XML-RPC is not available... not checking Syndic8.")
@@ -697,22 +839,22 @@
 		   'syndic8.FindSites
 		   url)))
       (when feedid
-	(let* ((feedinfo (xml-rpc-method-call 
+	(let* ((feedinfo (xml-rpc-method-call
 			  "http://www.syndic8.com/xmlrpc.php"
 			  'syndic8.GetFeedInfo
 			  feedid))
 	       (urllist
-		(delq nil 
+		(delq nil
 		      (mapcar
 		       (lambda (listinfo)
-			 (if (string-equal 
+			 (if (string-equal
 			      (cdr (assoc "status" listinfo))
 			      "Syndicated")
 			     (cons
 			      (cdr (assoc "sitename" listinfo))
 			      (list
 			       (cons 'title
-				     (cdr (assoc 
+				     (cdr (assoc
 					   "sitename" listinfo)))
 			       (cons 'href
 				     (cdr (assoc
@@ -721,20 +863,20 @@
 	  (if (not (> (length urllist) 1))
 	      (cdar urllist)
 	    (let ((completion-ignore-case t)
-		  (selection 
+		  (selection
 		   (mapcar (lambda (listinfo)
-			     (cons (cdr (assoc "sitename" listinfo)) 
-				   (string-to-int 
+			     (cons (cdr (assoc "sitename" listinfo))
+				   (string-to-int
 				    (cdr (assoc "feedid" listinfo)))))
 			   feedinfo)))
-	      (cdr (assoc 
+	      (cdr (assoc
 		    (completing-read
 		     "Multiple feeds found.  Select one: "
 		     selection nil t) urllist)))))))))
 
 (defun nnrss-rss-p (data)
-  "Test if data is an RSS feed.  Simply ensures that the first
-element is rss or rdf."
+  "Test if DATA is an RSS feed.
+Simply ensures that the first element is rss or rdf."
   (or (eq (caar data) 'rss)
       (eq (caar data) 'rdf:RDF)))
 
@@ -755,13 +897,13 @@
 that gives the URI for which you want to retrieve the namespace
 prefix), return the prefix."
   (let* ((prefix (car (rassoc uri (cadar el))))
-	 (nslist (if prefix 
+	 (nslist (if prefix
 		     (split-string (symbol-name prefix) ":")))
 	 (ns (cond ((eq (length nslist) 1) ; no prefix given
 		    "")
 		   ((eq (length nslist) 2) ; extract prefix
 		    (cadr nslist)))))
-    (if (and ns (not (eq ns "")))
+    (if (and ns (not (string= ns "")))
 	(concat ns ":")
       ns)))
 
--- a/lisp/help.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/help.el	Mon Apr 11 12:40:15 2005 +0000
@@ -586,7 +586,15 @@
       ;; Ok, now look up the key and name the command.
       (let ((defn (or (string-key-binding key)
 		      (key-binding key)))
-	    (key-desc (help-key-description key untranslated)))
+	    key-desc)
+	;; Don't bother user with strings from (e.g.) the select-paste menu.
+	(if (stringp (aref key (1- (length key))))
+	    (aset key (1- (length key)) "(any string)"))
+	(if (stringp (aref untranslated (1- (length untranslated))))
+	    (aset untranslated (1- (length untranslated))
+		  "(any string)"))
+	;; Now describe the key, perhaps as changed.
+	(setq key-desc (help-key-description key untranslated))
 	(if (or (null defn) (integerp defn) (equal defn 'undefined))
 	    (princ (format "%s is undefined" key-desc))
 	  (princ (format (if (windowp window)
@@ -623,6 +631,12 @@
 	(if (or (null defn) (integerp defn) (equal defn 'undefined))
 	    (message "%s is undefined" (help-key-description key untranslated))
 	  (help-setup-xref (list #'describe-function defn) (interactive-p))
+	  ;; Don't bother user with strings from (e.g.) the select-paste menu.
+	  (if (stringp (aref key (1- (length key))))
+	      (aset key (1- (length key)) "(any string)"))
+	  (if (stringp (aref untranslated (1- (length untranslated))))
+	      (aset untranslated (1- (length untranslated))
+		    "(any string)"))
 	  (with-output-to-temp-buffer (help-buffer)
 	    (princ (help-key-description key untranslated))
 	    (if (windowp window)
--- a/lisp/hi-lock.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/hi-lock.el	Mon Apr 11 12:40:15 2005 +0000
@@ -119,7 +119,10 @@
   :group 'hi-lock-interactive-text-highlighting)
 
 (defface hi-yellow
-  '((((background dark)) (:background "yellow" :foreground "black"))
+  '((((min-colors 88) (background dark))
+     (:background "yellow1" :foreground "black"))
+    (((background dark)) (:background "yellow" :foreground "black"))
+    (((min-colors 88)) (:background "yellow1"))
     (t (:background "yellow")))
   "Default face for hi-lock mode."
   :group 'hi-lock-faces)
@@ -131,7 +134,10 @@
   :group 'hi-lock-faces)
 
 (defface hi-green
-  '((((background dark)) (:background "green" :foreground "black"))
+  '((((min-colors 88) (background dark))
+     (:background "green1" :foreground "black"))
+    (((background dark)) (:background "green" :foreground "black"))
+    (((min-colors 88)) (:background "green1"))
     (t (:background "green")))
   "Face for hi-lock mode."
   :group 'hi-lock-faces)
@@ -148,17 +154,20 @@
   :group 'hi-lock-faces)
 
 (defface hi-blue-b
-  '((t (:weight bold :foreground "blue")))
+  '((((min-colors 88)) (:weight bold :foreground "blue1"))
+    (t (:weight bold :foreground "blue")))
   "Face for hi-lock mode."
   :group 'hi-lock-faces)
 
 (defface hi-green-b
-  '((t (:weight bold :foreground "green")))
+  '((((min-colors 88)) (:weight bold :foreground "green1"))
+    (t (:weight bold :foreground "green")))
   "Face for hi-lock mode."
   :group 'hi-lock-faces)
 
 (defface hi-red-b
-  '((t (:weight bold :foreground "red")))
+  '((((min-colors 88)) (:weight bold :foreground "red1"))
+    (t (:weight bold :foreground "red")))
   "Face for hi-lock mode."
   :group 'hi-lock-faces)
 
--- a/lisp/hilit-chg.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/hilit-chg.el	Mon Apr 11 12:40:15 2005 +0000
@@ -213,14 +213,16 @@
 ;; indentation on inserts gets underlined (which can look pretty ugly!).
 
 (defface highlight-changes-face
-  '((((class color)) (:foreground "red" ))
+  '((((min-colors 88) (class color)) (:foreground "red1" ))
+    (((class color)) (:foreground "red" ))
     (t (:inverse-video t)))
   "Face used for highlighting changes."
   :group 'highlight-changes)
 
 ;; This looks pretty ugly, actually.  Maybe the underline should be removed.
 (defface highlight-changes-delete-face
-  '((((class color)) (:foreground "red" :underline t))
+  '((((min-colors 88) (class color)) (:foreground "red1" :underline t))
+    (((class color)) (:foreground "red" :underline t))
     (t (:inverse-video t)))
   "Face used for highlighting deletions."
   :group 'highlight-changes)
--- a/lisp/ido.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/ido.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; ido.el --- interactively do things with buffers and files.
 
-;; Copyright (C) 1996-2004  Free Software Foundation, Inc.
+;; Copyright (C) 1996-2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: Kim F. Storm <storm@cua.dk>
 ;; Based on: iswitchb by Stephen Eglen <stephen@cns.ed.ac.uk>
@@ -747,13 +747,19 @@
   "*Font used by ido for highlighting only match."
   :group 'ido)
 
-(defface ido-subdir-face  '((((class color))
+(defface ido-subdir-face  '((((min-colors 88) (class color))
+                             (:foreground "red1"))
+			    (((class color))
                              (:foreground "red"))
                             (t (:underline t)))
   "*Font used by ido for highlighting subdirs in the alternatives."
   :group 'ido)
 
-(defface ido-indicator-face  '((((class color))
+(defface ido-indicator-face  '((((min-colors 88) (class color))
+				(:foreground "yellow1"
+				 :background "red1"
+				 :width condensed))
+			       (((class color))
 				(:foreground "yellow"
 				 :background "red"
 				 :width condensed))
--- a/lisp/info.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/info.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; info.el --- info package for Emacs
 
-;; Copyright (C) 1985,86,92,93,94,95,96,97,98,99,2000,01,02,03,2004
+;; Copyright (C) 1985,86,92,93,94,95,96,97,98,99,2000,01,02,03,04,2005
 ;;  Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
@@ -83,7 +83,11 @@
   :group 'info)
 
 (defface info-xref
-  '((((class color) (background light)) :foreground "blue" :underline t)
+  '((((min-colors 88) 
+      (class color) (background light)) :foreground "blue1" :underline t)
+    (((class color) (background light)) :foreground "blue" :underline t)
+    (((min-colors 88) 
+      (class color) (background dark)) :foreground "cyan1" :underline t)
     (((class color) (background dark)) :foreground "cyan" :underline t)
     (t :underline t))
   "Face for Info cross-references."
@@ -3795,77 +3799,78 @@
         (let ((n 0)
               cont)
           (while (re-search-forward
-                  (concat "^\\* +\\(" Info-menu-entry-name-re "\\)\\(:"
-                          Info-node-spec-re "\\([ \t]*\\)\\)")
+                  (concat "^\\* Menu:\\|\\(?:^\\* +\\(" Info-menu-entry-name-re "\\)\\(:"
+                          Info-node-spec-re "\\([ \t]*\\)\\)\\)")
                   nil t)
-            (when not-fontified-p
-              (setq n (1+ n))
-              (if (and (<= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys
-                  (put-text-property (match-beginning 0)
-                                     (1+ (match-beginning 0))
-                                     'font-lock-face 'info-menu-5)))
-            (when not-fontified-p
-              (add-text-properties
-               (match-beginning 1) (match-end 1)
-               (list
-                'help-echo (if (and (match-end 3)
-                                    (not (equal (match-string 3) "")))
-                               (concat "mouse-2: go to " (match-string 3))
-                             "mouse-2: go to this node")
-                'mouse-face 'highlight)))
-            (when (or not-fontified-p fontify-visited-p)
-              (add-text-properties
-               (match-beginning 1) (match-end 1)
-               (list
-                'font-lock-face
-                ;; Display visited menu items in a different face
-                (if (and Info-fontify-visited-nodes
-                         (save-match-data
-                           (let ((node (if (equal (match-string 3) "")
-                                           (match-string 1)
-                                         (match-string 3)))
-                                 (file (file-name-nondirectory Info-current-file))
-                                 (hl Info-history-list)
-                                 res)
-                             (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node)
-                                 (setq file (file-name-nondirectory
-                                             (match-string 1 node))
-                                       node (if (equal (match-string 2 node) "")
-                                                "Top"
-                                              (match-string 2 node))))
-                             (while hl
-                               (if (and (string-equal node (nth 1 (car hl)))
-                                        (string-equal file
-                                                      (file-name-nondirectory
-                                                       (nth 0 (car hl)))))
-                                   (setq res (car hl) hl nil)
-                                 (setq hl (cdr hl))))
-                             res))) 'info-xref-visited 'info-xref))))
-            (when (and not-fontified-p (memq Info-hide-note-references '(t hide)))
-              (put-text-property (match-beginning 2) (1- (match-end 6))
-                                 'invisible t)
-              ;; Unhide the file name in parens
-              (if (and (match-end 4) (not (eq (char-after (match-end 4)) ?.)))
-                  (remove-text-properties (match-beginning 4) (match-end 4)
-                                          '(invisible t)))
-              ;; We need a stretchable space like :align-to but with
-              ;; a minimum value.
-              (put-text-property (1- (match-end 6)) (match-end 6) 'display
-                                 (if (>= 22 (- (match-end 1)
-                                               (match-beginning 0)))
-                                     '(space :align-to 24)
-                                   '(space :width 2)))
-              (setq cont (looking-at "."))
-              (while (and (= (forward-line 1) 0)
-                          (looking-at "\\([ \t]+\\)[^*\n]"))
-                (put-text-property (match-beginning 1) (1- (match-end 1))
-                                   'invisible t)
-                (put-text-property (1- (match-end 1)) (match-end 1)
-                                   'display
-                                   (if cont
-                                       '(space :align-to 26)
-                                     '(space :align-to 24)))
-                (setq cont t))))))
+	    (when (match-beginning 1)
+	      (when not-fontified-p
+		(setq n (1+ n))
+		(if (and (<= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys
+		    (put-text-property (match-beginning 0)
+				       (1+ (match-beginning 0))
+				       'font-lock-face 'info-menu-5)))
+	      (when not-fontified-p
+		(add-text-properties
+		 (match-beginning 1) (match-end 1)
+		 (list
+		  'help-echo (if (and (match-end 3)
+				      (not (equal (match-string 3) "")))
+				 (concat "mouse-2: go to " (match-string 3))
+			       "mouse-2: go to this node")
+		  'mouse-face 'highlight)))
+	      (when (or not-fontified-p fontify-visited-p)
+		(add-text-properties
+		 (match-beginning 1) (match-end 1)
+		 (list
+		  'font-lock-face
+		  ;; Display visited menu items in a different face
+		  (if (and Info-fontify-visited-nodes
+			   (save-match-data
+			     (let ((node (if (equal (match-string 3) "")
+					     (match-string 1)
+					   (match-string 3)))
+				   (file (file-name-nondirectory Info-current-file))
+				   (hl Info-history-list)
+				   res)
+			       (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node)
+				   (setq file (file-name-nondirectory
+					       (match-string 1 node))
+					 node (if (equal (match-string 2 node) "")
+						  "Top"
+						(match-string 2 node))))
+			       (while hl
+				 (if (and (string-equal node (nth 1 (car hl)))
+					  (string-equal file
+							(file-name-nondirectory
+							 (nth 0 (car hl)))))
+				     (setq res (car hl) hl nil)
+				   (setq hl (cdr hl))))
+			       res))) 'info-xref-visited 'info-xref))))
+	      (when (and not-fontified-p (memq Info-hide-note-references '(t hide)))
+		(put-text-property (match-beginning 2) (1- (match-end 6))
+				   'invisible t)
+		;; Unhide the file name in parens
+		(if (and (match-end 4) (not (eq (char-after (match-end 4)) ?.)))
+		    (remove-text-properties (match-beginning 4) (match-end 4)
+					    '(invisible t)))
+		;; We need a stretchable space like :align-to but with
+		;; a minimum value.
+		(put-text-property (1- (match-end 6)) (match-end 6) 'display
+				   (if (>= 22 (- (match-end 1)
+						 (match-beginning 0)))
+				       '(space :align-to 24)
+				     '(space :width 2)))
+		(setq cont (looking-at "."))
+		(while (and (= (forward-line 1) 0)
+			    (looking-at "\\([ \t]+\\)[^*\n]"))
+		  (put-text-property (match-beginning 1) (1- (match-end 1))
+				     'invisible t)
+		  (put-text-property (1- (match-end 1)) (match-end 1)
+				     'display
+				     (if cont
+					 '(space :align-to 26)
+				       '(space :align-to 24)))
+		  (setq cont t)))))))
 
       ;; Fontify menu headers
       ;; Add the face `info-menu-header' to any header before a menu entry
--- a/lisp/international/code-pages.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/international/code-pages.el	Mon Apr 11 12:40:15 2005 +0000
@@ -3944,21 +3944,21 @@
  [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
   nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
   ?\ 
-  ?\¡
+  ?\”
   ?\¢
   ?\£
   ?\¤
   ?\„
   ?\¦
   ?\§
-  ?\¨
+  ?\Ø
   ?\©
-  ?\ª
+  ?\Ŗ
   ?\«
   ?\¬
   ?\­
   ?\®
-  ?\¯
+  ?\Æ
   ?\°
   ?\±
   ?\²
@@ -3967,14 +3967,14 @@
   ?\µ
   ?\¶
   ?\·
-  ?\¸
+  ?\ø
   ?\¹
-  ?\º
+  ?\ŗ
   ?\»
   ?\¼
   ?\½
   ?\¾
-  ?\¿
+  ?\æ
   ?\Ą
   ?\Į
   ?\Ā
--- a/lisp/international/latin-1.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/international/latin-1.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; latin-1.el --- set up case-conversion and syntax tables for ISO Latin-1
 
-;; Copyright (C) 1988,1997 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1997, 2005 Free Software Foundation, Inc.
 
 ;; Author: Howard Gayle
 ;; Maintainer: FSF
@@ -40,7 +40,9 @@
        (if set-case-syntax-set-multibyte
 	   (- (make-char 'latin-iso8859-1) 128)
 	 0)))
-  (set-case-syntax 160 " " tbl)		;no-break space
+  ;; NBSP isn't semantically interchangeable with other whitespace chars,
+  ;; so it's more like punctation.
+  (set-case-syntax 160 "." tbl)		;no-break space
   (set-case-syntax 161 "." tbl)		;inverted exclamation mark
   (set-case-syntax 162 "w" tbl)		;cent sign
   (set-case-syntax 163 "w" tbl)		;pound sign
@@ -114,11 +116,11 @@
 (or set-case-syntax-set-multibyte
     (provide 'latin-1))
 
-;;; Don't compile this file: src/Makefile.in instructs make-docfile
-;;; to look at the .el file!
-;;; Local Variables:
-;;; no-byte-compile: t
-;;; End:
+;; Don't compile this file: src/Makefile.in instructs make-docfile
+;; to look at the .el file!
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
 
-;;; arch-tag: c2ee6895-edc3-40b2-9518-8c09f1d56c54
+;; arch-tag: c2ee6895-edc3-40b2-9518-8c09f1d56c54
 ;;; latin-1.el ends here
--- a/lisp/international/latin-2.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/international/latin-2.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; latin-2.el --- set up case-conversion and syntax tables for ISO Latin-2
 
-;; Copyright (C) 1995,1997 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997, 2005  Free Software Foundation, Inc.
 
 ;; Author: Michael Gschwind (mike@vlsivie.tuwien.ac.at)
 ;; Maintainer: FSF
@@ -38,7 +38,9 @@
        (if set-case-syntax-set-multibyte
 	   (- (make-char 'latin-iso8859-2) 128)
 	 0)))
-  (set-case-syntax 160 " " tbl)		;no-break space
+  ;; NBSP isn't semantically interchangeable with other whitespace chars,
+  ;; so it's more like punctation.
+  (set-case-syntax 160 "." tbl)		;no-break space
   (set-case-syntax-pair 161 177 tbl)	;latin letter a with ogonek
   (set-case-syntax 162 "w" tbl)		;breve
   (set-case-syntax-pair 163 179 tbl)	;latin letter l with stroke
@@ -100,11 +102,11 @@
 (or set-case-syntax-set-multibyte
     (provide 'latin-2))
 
-;;; Don't compile this file: src/Makefile.in instructs make-docfile
-;;; to look at the .el file!
-;;; Local Variables:
-;;; no-byte-compile: t
-;;; End:
+;; Don't compile this file: src/Makefile.in instructs make-docfile
+;; to look at the .el file!
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
 
-;;; arch-tag: 2b9f9c30-1a63-4877-8a80-e95a5e4c57c9
+;; arch-tag: 2b9f9c30-1a63-4877-8a80-e95a5e4c57c9
 ;;; latin-2.el ends here
--- a/lisp/international/latin-3.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/international/latin-3.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; latin-3.el --- set up case-conversion and syntax tables for ISO Latin-3
 
-;; Copyright (C) 1988,1997 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1997, 2005  Free Software Foundation, Inc.
 
 ;; Author: Marko Rahamaa
 ;; Maintainer: FSF
@@ -37,7 +37,9 @@
        (if set-case-syntax-set-multibyte
 	   (- (make-char 'latin-iso8859-3) 128)
 	 0)))
-  (set-case-syntax 160 " " tbl)		;no-break space
+  ;; NBSP isn't semantically interchangeable with other whitespace chars,
+  ;; so it's more like punctation.
+  (set-case-syntax 160 "." tbl)		;no-break space
   (set-case-syntax-pair 161 177 tbl)	;latin letter h with stroke
   (set-case-syntax 162 "w" tbl)		;breve
   (set-case-syntax 163 "w" tbl)		;pound sign
@@ -98,11 +100,11 @@
 (or set-case-syntax-set-multibyte
     (provide 'latin-3))
 
-;;; Don't compile this file: src/Makefile.in instructs make-docfile
-;;; to look at the .el file!
-;;; Local Variables:
-;;; no-byte-compile: t
-;;; End:
+;; Don't compile this file: src/Makefile.in instructs make-docfile
+;; to look at the .el file!
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
 
-;;; arch-tag: 64d9d46d-fe0b-4a8e-9c28-ba7e20bbc552
+;; arch-tag: 64d9d46d-fe0b-4a8e-9c28-ba7e20bbc552
 ;;; latin-3.el ends here
--- a/lisp/international/latin-4.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/international/latin-4.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; latin-4.el --- set up case-conversion and syntax tables for ISO Latin-4
 
-;; Copyright (C) 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2005  Free Software Foundation, Inc.
 
 ;; Author: Erik Naggum
 ;; Maintainer: FSF
@@ -36,7 +36,9 @@
        (if set-case-syntax-set-multibyte
 	   (- (make-char 'latin-iso8859-4) 128)
 	 0)))
-  (set-case-syntax 160 " " tbl)		;no-break space
+  ;; NBSP isn't semantically interchangeable with other whitespace chars,
+  ;; so it's more like punctation.
+  (set-case-syntax 160 "." tbl)		;no-break space
   (set-case-syntax-pair 161 177 tbl)	;latin letter a with ogonek
   (set-case-syntax 162 "w" tbl)		;latin letter kra
   (set-case-syntax-pair 163 179 tbl)	;latin letter r with cedilla
@@ -98,11 +100,11 @@
 (or set-case-syntax-set-multibyte
     (provide 'latin-4))
 
-;;; Don't compile this file: src/Makefile.in instructs make-docfile
-;;; to look at the .el file!
-;;; Local Variables:
-;;; no-byte-compile: t
-;;; End:
+;; Don't compile this file: src/Makefile.in instructs make-docfile
+;; to look at the .el file!
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
 
-;;; arch-tag: c6b2558b-1943-4626-beb5-139630c8e352
+;; arch-tag: c6b2558b-1943-4626-beb5-139630c8e352
 ;;; latin-4.el ends here
--- a/lisp/international/latin-5.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/international/latin-5.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; latin-5.el --- set up case-conversion and syntax tables for ISO latin-5
 
-;; Copyright (C) 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2005  Free Software Foundation, Inc.
 
 ;; Author: Erik Naggum
 ;; Maintainer: FSF
@@ -36,7 +36,9 @@
        (if set-case-syntax-set-multibyte
 	   (- (make-char 'latin-iso8859-9) 128)
 	 0)))
-  (set-case-syntax 160 " " tbl)		;no-break space
+  ;; NBSP isn't semantically interchangeable with other whitespace chars,
+  ;; so it's more like punctation.
+  (set-case-syntax 160 "." tbl)		;no-break space
   (set-case-syntax 161 "." tbl)		;inverted exclamation mark
   (set-case-syntax 162 "w" tbl)		;cent sign
   (set-case-syntax 163 "w" tbl)		;pound sign
@@ -111,11 +113,11 @@
 (or set-case-syntax-set-multibyte
     (provide 'latin-5))
 
-;;; Don't compile this file: src/Makefile.in instructs make-docfile
-;;; to look at the .el file!
-;;; Local Variables:
-;;; no-byte-compile: t
-;;; End:
+;; Don't compile this file: src/Makefile.in instructs make-docfile
+;; to look at the .el file!
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
 
-;;; arch-tag: 7f91a36a-39fb-4b5d-806f-f171abee71ad
+;; arch-tag: 7f91a36a-39fb-4b5d-806f-f171abee71ad
 ;;; latin-5.el ends here
--- a/lisp/international/latin-8.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/international/latin-8.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; latin-8.el --- set up case-conversion and syntax tables for ISO Latin-8
 
-;; Copyright (C) 1988,1997, 1999 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1997, 1999, 2005 Free Software Foundation, Inc.
 
 ;; Author: Dave Love
 ;; Maintainer: FSF
@@ -47,6 +47,9 @@
        (if set-case-syntax-set-multibyte
 	   (- (make-char 'latin-iso8859-14) 128)
 	 0)))
+  ;; NBSP isn't semantically interchangeable with other whitespace chars,
+  ;; so it's more like punctation.
+  (set-case-syntax 160 "." tbl)         ;no-break space
   (set-case-syntax-pair 161 162 tbl)	;latin letter b with dot above *
   (set-case-syntax 163 "w" tbl)		;pound sign
   (set-case-syntax-pair 164 165 tbl)	;latin letter c with dot above *
@@ -104,11 +107,11 @@
 (or set-case-syntax-set-multibyte
     (provide 'latin-8))
 
-;;; Don't compile this file: src/Makefile.in instructs make-docfile
-;;; to look at the .el file!
-;;; Local Variables:
-;;; no-byte-compile: t
-;;; End:
+;; Don't compile this file: src/Makefile.in instructs make-docfile
+;; to look at the .el file!
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
 
-;;; arch-tag: a916b4b5-4204-485b-8b57-8ab3a43a2e29
+;; arch-tag: a916b4b5-4204-485b-8b57-8ab3a43a2e29
 ;;; latin-8.el ends here
--- a/lisp/international/latin-9.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/international/latin-9.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; latin-9.el --- set up case-conversion and syntax tables for ISO Latin-9
 
-;; Copyright (C) 1988,1997,1999 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1997, 1999, 2005 Free Software Foundation, Inc.
 
 ;; Author: Dave Love
 ;; Maintainer: FSF
@@ -50,7 +50,9 @@
        (if set-case-syntax-set-multibyte
 	   (- (make-char 'latin-iso8859-15) 128)
 	 0)))
-  (set-case-syntax 160 " " tbl)		;no-break space
+  ;; NBSP isn't semantically interchangeable with other whitespace chars,
+  ;; so it's more like punctation.
+  (set-case-syntax 160 "." tbl)		;no-break space
   (set-case-syntax 161 "." tbl)		;inverted exclamation mark
   (set-case-syntax 162 "w" tbl)		;cent sign
   (set-case-syntax 163 "w" tbl)		;pound sign
@@ -117,11 +119,11 @@
 (or set-case-syntax-set-multibyte
     (provide 'latin-9))
 
-;;; Don't compile this file: src/Makefile.in instructs make-docfile
-;;; to look at the .el file!
-;;; Local Variables:
-;;; no-byte-compile: t
-;;; End:
+;; Don't compile this file: src/Makefile.in instructs make-docfile
+;; to look at the .el file!
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
 
-;;; arch-tag: 84d442ad-d595-4016-8b84-ea92704fd235
+;; arch-tag: 84d442ad-d595-4016-8b84-ea92704fd235
 ;;; latin-9.el ends here
--- a/lisp/mh-e/ChangeLog	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/mh-e/ChangeLog	Mon Apr 11 12:40:15 2005 +0000
@@ -1,3 +1,8 @@
+2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* mh-customize.el (mh-speedbar-selected-folder-face): Special case
+	high number of colors displays.
+
 2005-03-25  Werner Lemberg  <wl@gnu.org>
 
 	* mh-e.el, mh-identity.el, mh-mime.el: Replace `legal' with `valid'.
@@ -85,18 +90,18 @@
 2004-08-15  Bill Wohler  <wohler@newt.com>
 
 	* Released MH-E version 7.4.80.
-     
+
 	* MH-E-NEWS, README: Updated for release 7.4.80.
-     
+
 	* mh-e.el (Version, mh-version): Updated for release 7.4.80.
-	
+
 2004-08-15  Bill Wohler  <wohler@newt.com>
 
 	* mh-funcs.el, mh-gnus.el, mh-inc.el, mh-init.el, mh-junk.el,
 	mh-pick.el, mh-print.el, mh-xemacs.el: Added 2004 to Copyright.
 
 	* mh-acros.el, mh-alias.el: Checkdoc fixes.
-	
+
 2004-08-12  Satyaki Das  <satyaki@theforce.stanford.edu>
 
 	* mh-acros.el (cl): Load cl in this file. That is all right, since
@@ -130,7 +135,7 @@
 	do a good job of suppressing compilation warnings in 21.3 and CVS
 	Emacs (21.4). This replaces (require 'cl) or (require
 	'utils) (mh-require-cl) calls:
-	
+
 	  (eval-when-compile (require 'mh-acros))
           (mh-require-cl)
 
@@ -151,7 +156,7 @@
 
 	* mh-seq.el (mh-thread-message, mh-thread-container): Use
 	mh-defstruct instead of defstruct.
-	(mh-thread-id-container, mh-thread-get-message-container) 
+	(mh-thread-id-container, mh-thread-get-message-container)
 	(mh-thread-get-message): Use the slightly different structure
 	constructor function.
 
@@ -240,8 +245,8 @@
 	programs are run in background. Running in foreground can be slow.
 	Defaults to nil to spare machines with little memory.
 
-	* mh-junk.el (mh-spamassassin-blacklist, mh-bogofilter-blacklist) 
-	(mh-bogofilter-whitelist, mh-spamprobe-blacklist) 
+	* mh-junk.el (mh-spamassassin-blacklist, mh-bogofilter-blacklist)
+	(mh-bogofilter-whitelist, mh-spamprobe-blacklist)
 	(mh-spamprobe-whitelist): Use new option mh-junk-background.
 
 2004-07-25  Satyaki Das  <satyaki@theforce.stanford.edu>
@@ -266,7 +271,7 @@
 	* mh-customize.el (mh-invisible-header-fields-internal): Added
 	header fields emitted by T-Mobile picture phones (X-Mms-*, and
 	commented out X-Operator field saying it's like X-Mailer).
-	
+
 2004-07-12  Bill Wohler  <wohler@newt.com>
 
 	* mh-gnus.el: Set local variables indent-tabs-mode and
@@ -306,7 +311,7 @@
 
 	* mh-init.el (mh-variant-set, mh-sys-path, mh-variant-mu-mh-info):
 	Prefer GNU mailutils over GNU Mailutils MH.
-	
+
 	* mh-comp.el (sc-cite-original, mh-smail, mh-smail-batch)
 	(mh-edit-again, mh-extract-rejected-mail, mh-forward)
 	(mh-smail-other-window, mh-reply, mh-send, mh-send-other-window):
@@ -325,8 +330,8 @@
 	* MH-E-NEWS, README: Updated for release 7.4.4.
 
 	* mh-e.el (Version, mh-version): Updated for release 7.4.4.
-	
-	* This patch release contains the following patches:
+
+	This patch release contains the following patches:
 
 	* mh-xemacs.el: New file from concatenation of mh-xemacs-compat.el
 	and mh-xemacs-icons.el which were removed since their names
@@ -390,9 +395,9 @@
 	(require 'mouse): To shush compiler.
 
 	* Use new function mh-require-cl throughout.
-	
+
 	* Add arch taglines (courtesy Miles Bader).
-	
+
 	* mh-unit.el (mh-unit-files): Replaced mh-xemacs-compat.el and
 	mh-xemacs-icons.el with mh-xemacs.el.
 
@@ -409,10 +414,10 @@
 
 2004-07-07  Stephen Gildea
 
-	* mh-customize.el (mh-invisible-header-fields-internal): 
+	* mh-customize.el (mh-invisible-header-fields-internal):
 	Add X-Greylist, X-Source*, and X-WebTV-Signature.
 	Replace specific X-Spam-* headers with general pattern.
-	
+
 2004-06-15  Bill Wohler  <wohler@newt.com>
 
 	* README: Vladimir Ivanovic reports that mh-rmail works with
@@ -438,7 +443,7 @@
 
 2004-04-07  Satyaki Das  <satyaki@theforce.stanford.edu>
 
-	* mh-mime.el (mh-insert-mime-button) 
+	* mh-mime.el (mh-insert-mime-button)
 	(mh-insert-mime-security-button): Add evaporate property to
 	overlays used in MIME part buttons.  This avoids problems with
 	CVS Emacs.
@@ -459,10 +464,10 @@
 
 2003-12-26  Jeffrey C Honig  <jch@honig.net>
 
-	* mh-junk.el (mh-junk-blacklist, mh-junk-whitelist) 
-	(mh-spamassassin-blacklist, mh-spamassassin-blacklist) 
-	(mh-spamassassin-blacklist, mh-spamassassin-whitelist) 
-	(mh-spamassassin-whitelist, mh-bogofilter-blacklist) 
+	* mh-junk.el (mh-junk-blacklist, mh-junk-whitelist)
+	(mh-spamassassin-blacklist, mh-spamassassin-blacklist)
+	(mh-spamassassin-blacklist, mh-spamassassin-whitelist)
+	(mh-spamassassin-whitelist, mh-bogofilter-blacklist)
 	(mh-spamprobe-blacklist): Add progress messages.  Change "Couldn't"
 	to "Unable" in error messages.  Run bogofilter and spamprobe in
 	the foreground to prevent a large number of processes from
@@ -536,9 +541,9 @@
 	* MH-E-NEWS, README: Updated for release 7.4.3.
 
 	* mh-e.el (Version, mh-version): Updated for release 7.4.3.
-	
+
 	* This patch release contains the following two patches:
-	
+
 	* mh-identity.el (mh-identity-make-menu): Removed condition on
 	mh-auto-fields-list. Use it to enable or disable menu item
 	instead.
@@ -576,10 +581,10 @@
 
 2003-11-14  Mark D. Baushke  <mdb@gnu.org>
 
-	* mh-customize.el (mh-invisible-header-fields-internal): 
+	* mh-customize.el (mh-invisible-header-fields-internal):
 	Add X-AntiAbuse and X-MailScanner.
 	(Patch from Stephen Gildea.)
-	
+
 2003-11-13  Peter S Galbraith  <psg@debian.org>
 
 	* mh-identity.el (mh-identity-handler-attribution-verb): New
@@ -689,14 +694,14 @@
 
 2003-11-02  Jeffrey C Honig  <jch@honig.net>
 
-	* mh-loaddefs.el: Regenerated.	
+	* mh-loaddefs.el: Regenerated.
 
 	* mh-funcs.el (mh-print-msg): Move to mh-print.el.
 
 	* mh-e.el (mh-folder-mode-map): Add mh-print-msg ("l") back, it
 	will print a message that this usage is deprecated.
 
-	* mh-print.el (require, mh-ps-print-msg, mh-ps-print-msg-file): 
+	* mh-print.el (require, mh-ps-print-msg, mh-ps-print-msg-file):
 	Require mh-funcs for mh-note-printed.  PS print functions were not
 	setting the printed notation.  Move mh-print-msg here for
 	consistency.  Print message if mh-print-msg invoked via deprecated
@@ -790,7 +795,7 @@
 	(custom-load.elc): Allow for '-no-autoloads'.
 	(compile-xemacs): New.  It allows for the '-no-autoloads' option
 	and byte-compiles all the source files with a single instance of
-	XEmacs. 
+	XEmacs.
 
 	* mh-e.el (mh-folder-mode): Only load the toolbar in XEmacs if
 	toolbar support is available.
@@ -874,7 +879,7 @@
 2003-10-09  Peter S Galbraith  <psg@debian.org>
 
 	* mh-customize.el (mail-citation-hook): Moved from mh-comp.el and
-	made into a defcustom. 
+	made into a defcustom.
 
 2003-10-09  Satyaki Das  <satyakid@stanford.edu>
 
@@ -938,10 +943,10 @@
 	parenthetical comment.
 
 	* mh-loaddefs.el: Regenerated.
-	
+
 	* mh-customize.el (mh-mml-method-default): What method should be
 	used in secure directives.
-	
+
 	* mh-mime.el (mh-secure-message): New function used to generate
 	the mml security tags.
 	(mh-mml-unsecure-message): New wrapper function around
@@ -1061,7 +1066,7 @@
 
 	* mh-customize.el (mh-identity-handlers): New defcustom.  Alist of
 	Handler functions for mh-identity (downcased) fields.
-	(mh-identity-list): Add support for pgg-default-user-id.	
+	(mh-identity-list): Add support for pgg-default-user-id.
 
 	* mh-identity.el (mh-insert-identity): Modified to use
 	`mh-identity-handlers', adding hacking flexibility for those who
@@ -1084,7 +1089,7 @@
 	(mh-header-field-delete): Make more robust wrt the field having a
 	trailing colon or not.
 	(mh-identity-make-menu): Add a "Customize Identities" menu entry.
-	
+
 	* mh-loaddefs.el: Regenerated.
 
 2003-09-21  Peter S Galbraith  <psg@debian.org>
@@ -1093,7 +1098,7 @@
 	with version numbers.
 
 	* mh-e.el (mh-scan-format): patch from Sergey Poznyakoff.
-	GNU mailutils now supports the %(decode) format 
+	GNU mailutils now supports the %(decode) format
 
 2003-09-20  Satyaki Das  <satyakid@stanford.edu>
 
@@ -1422,7 +1427,7 @@
 	* mh-utils.el (mh-find-path): Run setup code only if
 	`mh-find-path-run' is nil such that this is only done once.
 	Also remove the `setq' for `read-mail-command' and `mail-user-agent'.
-	
+
 2003-08-18  Peter S Galbraith  <psg@debian.org>
 
 	* mh-e.el: require 'mh-utils first
@@ -1441,16 +1446,16 @@
 	(mh-path-search): Deleted.  Was only used by `mh-find-progs'.
 
 	* mh-e.el: require mh-init.el.
-	(mh-version): Use simpler `mh-variant-in-use'.	
+	(mh-version): Use simpler `mh-variant-in-use'.
 	(mh-scan-format): Use (mh-variant-p 'nmh) instead of mh-nmh-flag.
 
 	* mh-comp.el (mh-insert-x-mailer): Use simpler `mh-variant-in-use'.
 
-	* mh-utils.el (mh-progs, mh-lib, mh-lib-progs) 
+	* mh-utils.el (mh-progs, mh-lib, mh-lib-progs)
 	(mh-flists-present-flag): Moved to mh-init.el.
 	(mh-nmh-flag): Deleted.  Use (mh-variant-p 'nmh) instead.
 
-	* mh-comp.el (mh-repl-group-formfile, mh-forward, mh-reply) 
+	* mh-comp.el (mh-repl-group-formfile, mh-forward, mh-reply)
 	(mh-send-letter): Use (mh-variant-p 'nmh) instead of mh-nmh-flag.
 
 	* mh-mime.el (mh-edit-mhn, mh-mime-save-parts): Use (mh-variant-p
@@ -1484,7 +1489,7 @@
 	(mh-variant-in-use, mh-variant-p): Developers may check which
         variant is currently in use with the variable `mh-variant-in-use'
         or the function `mh-variant-p'.
-	
+
 2003-08-15  Bill Wohler  <wohler@newt.com>
 
 	* mh-customize.el (mh-auto-fields-list): The manual uses Fcc
@@ -1653,7 +1658,7 @@
 
 	* mh-identity.el (mh-insert-identity): Refactor to use
 	mh-insert-signature
-	
+
 	* mh-comp.el (mh-signature-separator-p): Removed.
 
 	* mh-comp.el (mh-insert-signature): Merge MIME awareness from
@@ -1724,8 +1729,8 @@
 	* mh-funcs.el (mh-undo-folder): Ditto.
 
 	* mh-mime.el (mh-mime-save-parts): Ditto.
-	
-	* mh-seq.el (mh-subject-to-sequence-unthreaded) 
+
+	* mh-seq.el (mh-subject-to-sequence-unthreaded)
 	(mh-narrow-to-subject, mh-delete-subject): Ditto.
 
 	* mh-index.el (mh-index-sequenced-messages)
@@ -2021,7 +2026,7 @@
 	(mh-unit-equal): New function that throws an error if RESULT
 	doesn't equal EXPECTED.
 	(mh-unit): Call mh-unit-x-image-url-cache-canonicalize.
-	
+
 2003-07-29  Satyaki Das  <satyakid@stanford.edu>
 
 	* mh-unit.el (mh-unit-update-call-graph): Make the function work
@@ -2159,10 +2164,10 @@
 	hoping to quote the hint `t' but checkdoc wouldn't let me.
 	(mh-note-deleted, mh-note-refiled, mh-note-cur): Moved to Scan
 	Line Formats section.
-	(mh-scan-good-msg-regexp, mh-scan-deleted-msg-regexp) 
-	(mh-scan-refiled-msg-regexp, mh-scan-valid-regexp) 
-	(mh-scan-cur-msg-number-regexp, mh-scan-date-regexp) 
-	(mh-scan-rcpt-regexp, mh-scan-body-regexp) 
+	(mh-scan-good-msg-regexp, mh-scan-deleted-msg-regexp)
+	(mh-scan-refiled-msg-regexp, mh-scan-valid-regexp)
+	(mh-scan-cur-msg-number-regexp, mh-scan-date-regexp)
+	(mh-scan-rcpt-regexp, mh-scan-body-regexp)
 	(mh-scan-subject-regexp, mh-scan-format-regexp): Cleaned
 	up docstrings (changed phrases to sentences).
 	(mh-scan-cur-msg-regexp): Marked this variable as obsolete; it
@@ -2350,7 +2355,7 @@
 	* mh-utils.el (mh-replace-in-string): New function name instead of
 	`dired-replace-in-string'.
 	* mh-alias.el (mh-alias-gcos-name): Use it.
-	
+
 	* mh-alias.el (mh-alias-apropos): New command. Show all aliases
 	that match REGEXP either in name or content.
 
@@ -2374,7 +2379,7 @@
 2003-06-02  Peter S Galbraith  <psg@debian.org>
 
 	* mh-utils.el (dired-replace-in-string): Bind if not already
-	defined.  Borrowed from dired.el 
+	defined.  Borrowed from dired.el
 
 	* mh-alias.el (mh-alias-gcos-name): switch to using
 	dired-replace-in-string.
@@ -2425,7 +2430,7 @@
 	second time.  I have wrapped the value around \b word delimiters.
 	Hope there are no side effects for other code.
 
-	* mh-comp.el (mh-insert-auto-fields): Attempt regardless of 
+	* mh-comp.el (mh-insert-auto-fields): Attempt regardless of
 	`mh-insert-auto-fields-done-local' flag in interactive use.
 
 	* mh-comp.el (mh-insert-auto-fields-done-local): Keep track of
@@ -3153,7 +3158,7 @@
 	* mh-e.el (mh-folder-map): Add "F'" to the map for
 	mh-index-ticked-messages.
 	(mh-help-messages): Replace broken [t]hread with [n]ew messages.
-	
+
 	* mh-customize.el (mh-index-ticked-messages-folders): New user
 	customizable flag that controls the folders to be searched by
 	mh-index-ticked-messages.
@@ -3224,7 +3229,7 @@
 	* mh-unit.el (mh-unit): As it turns out, lm-crack-copyright has
 	been updated to handle multiple-line copyrights in 21.3, so
 	updated code to run lm-verify only if user has 21.3 or greater.
-	Delete buffers after use, unless user already had buffer open.	
+	Delete buffers after use, unless user already had buffer open.
 
 2003-04-27  Satyaki Das  <satyakid@stanford.edu>
 
@@ -3433,7 +3438,7 @@
 	'mh-customize'.
 
 	* mh-customize.el: Require 'mh-xemacs-icons' instead of
-	'mh-xemacs-toolbar'. 
+	'mh-xemacs-toolbar'.
 
 2003-04-17  Peter S Galbraith  <psg@debian.org>
 
@@ -10928,9 +10933,9 @@
 	$(EMACS_HOME)/src.
 	(dist): Leave release in current directory.
 
- 
-Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-	
+
+Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
 notice and this notice are preserved.
--- a/lisp/mh-e/mh-customize.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/mh-e/mh-customize.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; mh-customize.el --- MH-E customization
 
-;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Bill Wohler <wohler@newt.com>
 ;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -2345,9 +2345,9 @@
 
 (defface mh-speedbar-selected-folder-face
   '((((class color) (background light))
-     (:foreground "red" :underline t))
+     (:foreground "red1" :underline t))
     (((class color) (background dark))
-     (:foreground "red" :underline t))
+     (:foreground "red1" :underline t))
     (t (:underline t)))
   "Face used for the current folder."
   :group 'mh-speed-faces)
--- a/lisp/mouse.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/mouse.el	Mon Apr 11 12:40:15 2005 +0000
@@ -788,8 +788,7 @@
 A clickable link is identified by one of the following methods:
 
 - If the character at POS has a non-nil `follow-link' text or
-overlay property, use the value of that property determines what
-to do.
+overlay property, the value of that property determines what to do.
 
 - If there is a local key-binding or a keybinding at position POS
 for the `follow-link' event, the binding of that event determines
--- a/lisp/pcvs-info.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/pcvs-info.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,7 +1,7 @@
 ;;; pcvs-info.el --- internal representation of a fileinfo entry
 
 ;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;;   2000, 2004  Free Software Foundation, Inc.
+;;   2000, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@cs.yale.edu>
 ;; Keywords: pcl-cvs
@@ -105,7 +105,9 @@
   :group 'pcl-cvs)
 
 (defface cvs-marked-face
-  '((((class color) (background dark))
+  '((((min-colors 88) (class color) (background dark))
+     (:foreground "green1" :weight bold))
+    (((class color) (background dark))
      (:foreground "green" :weight bold))
     (((class color) (background light))
      (:foreground "green3" :weight bold))
--- a/lisp/progmodes/cc-fonts.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/progmodes/cc-fonts.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; cc-fonts.el --- font lock support for CC Mode
 
-;; Copyright (C) 2002, 03 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
 
 ;; Authors:    2003- Alan Mackenzie
 ;;             2002- Martin Stjernholm
@@ -194,7 +194,7 @@
 (unless (c-face-name-p c-invalid-face-name)
   (defconst c-invalid-face 'c-invalid-face) ; Necessary in Emacs 19.
   (defface c-invalid-face
-    '((((class color) (background light)) (:foreground "red"))
+    '((((class color) (background light)) (:foreground "red1"))
       (((class color)) (:foreground "hotpink"))
       (t (:inverse-video t)))
     "Face used to highlight invalid syntax."
--- a/lisp/progmodes/compile.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/progmodes/compile.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,7 +1,7 @@
 ;;; compile.el --- run compiler as inferior of Emacs, parse error messages
 
 ;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;;   2001, 2003, 2004  Free Software Foundation, Inc.
+;;   2001, 2003, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Authors: Roland McGrath <roland@gnu.org>,
 ;;	    Daniel Pfeiffer <occitan@esperanto.org>
@@ -280,7 +280,18 @@
 
     (4bsd
      "\\(?:^\\|::  \\|\\S ( \\)\\(/[^ \n\t()]+\\)(\\([0-9]+\\))\
-\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3)))
+\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3))
+
+    (gcov-file
+     "^ +-:    \\(0\\):Source:\\(.+\\)$" 2 1 nil 0)    
+    (gcov-bb-file
+     "^ +-:    \\(0\\):Object:\\(?:.+\\)$" nil 1 nil 0)    
+    (gcov-never-called-line
+     "^ +\\(#####\\): +\\([0-9]+\\):.+$" nil 2 nil 2 nil 
+     (1 compilation-error-face))
+    (gcov-called-line
+     "^ +[-0-9]+: +\\([1-9]\\|[0-9]\\{2,\\}\\):.*$" nil 1 nil 0)
+)
   "Alist of values for `compilation-error-regexp-alist'.")
 
 (defcustom compilation-error-regexp-alist
@@ -464,6 +475,8 @@
 (defface compilation-info-face
   '((((class color) (min-colors 16) (background light))
      (:foreground "Green3" :weight bold))
+    (((class color) (min-colors 88) (background dark))
+     (:foreground "Green1" :weight bold))
     (((class color) (min-colors 16) (background dark))
      (:foreground "Green" :weight bold))
     (((class color)) (:foreground "green" :weight bold))
@@ -1844,6 +1857,9 @@
 	  ;; don't use a marker.  --Stef
 	  (if (> pos (point-min)) (copy-marker (1- pos)) pos))))
 
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.gcov\\'" . compilation-mode))
+
 (provide 'compile)
 
 ;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c
--- a/lisp/progmodes/ebrowse.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/progmodes/ebrowse.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; ebrowse.el --- Emacs C++ class browser & tags facility
 
-;; Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002
+;; Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2005
 ;;  Free Software Foundation Inc.
 
 ;; Author: Gerd Moellmann <gerd@gnu.org>
@@ -158,13 +158,15 @@
 
 
 (defface ebrowse-tree-mark-face
-  '((t (:foreground "red")))
+  '((((min-colors 88)) (:foreground "red1"))
+    (t (:foreground "red")))
   "*The face used for the mark character in the tree."
   :group 'ebrowse-faces)
 
 
 (defface ebrowse-root-class-face
-  '((t (:weight bold :foreground "blue")))
+  '((((min-colors 88)) (:weight bold :foreground "blue1"))
+    (t (:weight bold :foreground "blue")))
   "*The face used for root classes in the tree."
   :group 'ebrowse-faces)
 
@@ -182,7 +184,8 @@
 
 
 (defface ebrowse-member-attribute-face
-  '((t (:foreground "red")))
+  '((((min-colors 88)) (:foreground "red1"))
+    (t (:foreground "red")))
   "*Face used to display member attributes."
   :group 'ebrowse-faces)
 
@@ -194,7 +197,8 @@
 
 
 (defface ebrowse-progress-face
-  '((t (:background "blue")))
+  '((((min-colors 88)) (:background "blue1"))
+    (t (:background "blue")))
   "*Face for progress indicator."
   :group 'ebrowse-faces)
 
--- a/lisp/progmodes/idlw-help.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/progmodes/idlw-help.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,7 +1,7 @@
 ;;; idlw-help.el --- HTML Help code for IDLWAVE
 ;; Copyright (c) 2000 Carsten Dominik
 ;; Copyright (c) 2001, 2002 J.D. Smith
-;; Copyright (c) 2003,2004 Free Software Foundation
+;; Copyright (c) 2003,2004,2005 Free Software Foundation
 ;;
 ;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
 ;;          Carsten Dominik <dominik@astro.uva.nl>
@@ -183,7 +183,8 @@
   :type 'string)
 
 (defface idlwave-help-link-face
-  '((((class color)) (:foreground "Blue"))
+  '((((min-colors 88) (class color)) (:foreground "Blue1"))
+    (((class color)) (:foreground "Blue"))
     (t (:weight bold)))
   "Face for highlighting links into IDLWAVE online help."
   :group 'idlwave-online-help)
--- a/lisp/progmodes/sh-script.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/progmodes/sh-script.el	Mon Apr 11 12:40:15 2005 +0000
@@ -779,7 +779,10 @@
 ;; Font-Lock support
 
 (defface sh-heredoc-face
-  '((((class color)
+  '((((min-colors 88) (class color)
+      (background dark))
+     (:foreground "yellow1" :weight bold))
+    (((class color)
       (background dark))
      (:foreground "yellow" :weight bold))
     (((class color)
--- a/lisp/progmodes/vhdl-mode.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/progmodes/vhdl-mode.el	Mon Apr 11 12:40:15 2005 +0000
@@ -2039,7 +2039,7 @@
 
 (defun vhdl-run-when-idle (secs repeat function)
   "Wait until idle, then run FUNCTION."
-  (if vhdl-xemacs
+  (if (fboundp 'start-itimer)
       (start-itimer "vhdl-mode" function secs repeat t)
 ;    (run-with-idle-timer secs repeat function)))
     ;; explicitely activate timer (necessary when Emacs is already idle)
@@ -2679,7 +2679,9 @@
   (define-key vhdl-mode-map " "            'vhdl-electric-space)
   (if vhdl-intelligent-tab
       (define-key vhdl-mode-map "\t"       'vhdl-electric-tab)
-    (define-key vhdl-mode-map "\t"         'indent-according-to-mode))
+    ;; The default binding of TAB already calls `indent-according-to-mode'.
+    ;; (define-key vhdl-mode-map "\t"         'indent-according-to-mode)
+    )
   (define-key vhdl-mode-map "\r"           'vhdl-electric-return)
   (define-key vhdl-mode-map "-"            'vhdl-electric-dash)
   (define-key vhdl-mode-map "["            'vhdl-electric-open-bracket)
@@ -2696,12 +2698,14 @@
 
 ;; define special minibuffer keymap for enabling word completion in minibuffer
 ;; (useful in template generator prompts)
-(defvar vhdl-minibuffer-local-map (copy-keymap minibuffer-local-map)
+(defvar vhdl-minibuffer-local-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map minibuffer-local-map)
+    (when vhdl-word-completion-in-minibuffer
+      (define-key map "\t" 'vhdl-minibuffer-tab))
+    map)
   "Keymap for minibuffer used in VHDL Mode.")
 
-(when vhdl-word-completion-in-minibuffer
-  (define-key vhdl-minibuffer-local-map "\t" 'vhdl-minibuffer-tab))
-
 ;; set up electric character functions to work with
 ;; `delete-selection-mode' (Emacs) and `pending-delete-mode' (XEmacs)
 (mapcar
@@ -2792,134 +2796,134 @@
      (when (memq 'vhdl vhdl-electric-keywords)
        ;; VHDL'93 keywords
        '(
-	 ("--"            "" vhdl-template-display-comment-hook 0)
-	 ("abs"           "" vhdl-template-default-hook 0)
-	 ("access"        "" vhdl-template-default-hook 0)
-	 ("after"         "" vhdl-template-default-hook 0)
-	 ("alias"         "" vhdl-template-alias-hook 0)
-	 ("all"           "" vhdl-template-default-hook 0)
-	 ("and"           "" vhdl-template-default-hook 0)
-	 ("arch"          "" vhdl-template-architecture-hook 0)
-	 ("architecture"  "" vhdl-template-architecture-hook 0)
-	 ("array"         "" vhdl-template-default-hook 0)
-	 ("assert"        "" vhdl-template-assert-hook 0)
-	 ("attr"          "" vhdl-template-attribute-hook 0)
-	 ("attribute"     "" vhdl-template-attribute-hook 0)
-	 ("begin"         "" vhdl-template-default-indent-hook 0)
-	 ("block"         "" vhdl-template-block-hook 0)
-	 ("body"          "" vhdl-template-default-hook 0)
-	 ("buffer"        "" vhdl-template-default-hook 0)
-	 ("bus"           "" vhdl-template-default-hook 0)
-	 ("case"          "" vhdl-template-case-hook 0)
-	 ("comp"          "" vhdl-template-component-hook 0)
-	 ("component"     "" vhdl-template-component-hook 0)
-	 ("cond"          "" vhdl-template-conditional-signal-asst-hook 0)
-	 ("conditional"   "" vhdl-template-conditional-signal-asst-hook 0)
-	 ("conf"          "" vhdl-template-configuration-hook 0)
-	 ("configuration" "" vhdl-template-configuration-hook 0)
-	 ("cons"          "" vhdl-template-constant-hook 0)
-	 ("constant"      "" vhdl-template-constant-hook 0)
-	 ("disconnect"    "" vhdl-template-disconnect-hook 0)
-	 ("downto"        "" vhdl-template-default-hook 0)
-	 ("else"          "" vhdl-template-else-hook 0)
-	 ("elseif"        "" vhdl-template-elsif-hook 0)
-	 ("elsif"         "" vhdl-template-elsif-hook 0)
-	 ("end"           "" vhdl-template-default-indent-hook 0)
-	 ("entity"        "" vhdl-template-entity-hook 0)
-	 ("exit"          "" vhdl-template-exit-hook 0)
-	 ("file"          "" vhdl-template-file-hook 0)
-	 ("for"           "" vhdl-template-for-hook 0)
-	 ("func"          "" vhdl-template-function-hook 0)
-	 ("function"      "" vhdl-template-function-hook 0)
-	 ("generic"       "" vhdl-template-generic-hook 0)
-	 ("group"         "" vhdl-template-group-hook 0)
-	 ("guarded"       "" vhdl-template-default-hook 0)
-	 ("if"            "" vhdl-template-if-hook 0)
-	 ("impure"        "" vhdl-template-default-hook 0)
-	 ("in"            "" vhdl-template-default-hook 0)
-	 ("inertial"      "" vhdl-template-default-hook 0)
-	 ("inout"         "" vhdl-template-default-hook 0)
-	 ("inst"          "" vhdl-template-instance-hook 0)
-	 ("instance"      "" vhdl-template-instance-hook 0)
-	 ("is"            "" vhdl-template-default-hook 0)
-	 ("label"         "" vhdl-template-default-hook 0)
-	 ("library"       "" vhdl-template-library-hook 0)
-	 ("linkage"       "" vhdl-template-default-hook 0)
-	 ("literal"       "" vhdl-template-default-hook 0)
-	 ("loop"          "" vhdl-template-bare-loop-hook 0)
-	 ("map"           "" vhdl-template-map-hook 0)
-	 ("mod"           "" vhdl-template-default-hook 0)
-	 ("nand"          "" vhdl-template-default-hook 0)
-	 ("new"           "" vhdl-template-default-hook 0)
-	 ("next"          "" vhdl-template-next-hook 0)
-	 ("nor"           "" vhdl-template-default-hook 0)
-	 ("not"           "" vhdl-template-default-hook 0)
-	 ("null"          "" vhdl-template-default-hook 0)
-	 ("of"            "" vhdl-template-default-hook 0)
-	 ("on"            "" vhdl-template-default-hook 0)
-	 ("open"          "" vhdl-template-default-hook 0)
-	 ("or"            "" vhdl-template-default-hook 0)
-	 ("others"        "" vhdl-template-others-hook 0)
-	 ("out"           "" vhdl-template-default-hook 0)
-	 ("pack"          "" vhdl-template-package-hook 0)
-	 ("package"       "" vhdl-template-package-hook 0)
-	 ("port"          "" vhdl-template-port-hook 0)
-	 ("postponed"     "" vhdl-template-default-hook 0)
-	 ("procedure"     "" vhdl-template-procedure-hook 0)
-	 ("process"       "" vhdl-template-process-hook 0)
-	 ("pure"          "" vhdl-template-default-hook 0)
-	 ("range"         "" vhdl-template-default-hook 0)
-	 ("record"        "" vhdl-template-default-hook 0)
-	 ("register"      "" vhdl-template-default-hook 0)
-	 ("reject"        "" vhdl-template-default-hook 0)
-	 ("rem"           "" vhdl-template-default-hook 0)
-	 ("report"        "" vhdl-template-report-hook 0)
-	 ("return"        "" vhdl-template-return-hook 0)
-	 ("rol"           "" vhdl-template-default-hook 0)
-	 ("ror"           "" vhdl-template-default-hook 0)
-	 ("select"        "" vhdl-template-selected-signal-asst-hook 0)
-	 ("severity"      "" vhdl-template-default-hook 0)
-	 ("shared"        "" vhdl-template-default-hook 0)
-	 ("sig"           "" vhdl-template-signal-hook 0)
-	 ("signal"        "" vhdl-template-signal-hook 0)
-	 ("sla"           "" vhdl-template-default-hook 0)
-	 ("sll"           "" vhdl-template-default-hook 0)
-	 ("sra"           "" vhdl-template-default-hook 0)
-	 ("srl"           "" vhdl-template-default-hook 0)
-	 ("subtype"       "" vhdl-template-subtype-hook 0)
-	 ("then"          "" vhdl-template-default-hook 0)
-	 ("to"            "" vhdl-template-default-hook 0)
-	 ("transport"     "" vhdl-template-default-hook 0)
-	 ("type"          "" vhdl-template-type-hook 0)
-	 ("unaffected"    "" vhdl-template-default-hook 0)
-	 ("units"         "" vhdl-template-default-hook 0)
-	 ("until"         "" vhdl-template-default-hook 0)
-	 ("use"           "" vhdl-template-use-hook 0)
-	 ("var"           "" vhdl-template-variable-hook 0)
-	 ("variable"      "" vhdl-template-variable-hook 0)
-	 ("wait"          "" vhdl-template-wait-hook 0)
-	 ("when"          "" vhdl-template-when-hook 0)
-	 ("while"         "" vhdl-template-while-loop-hook 0)
-	 ("with"          "" vhdl-template-with-hook 0)
-	 ("xnor"          "" vhdl-template-default-hook 0)
-	 ("xor"           "" vhdl-template-default-hook 0)
+	 ("--"            "" vhdl-template-display-comment-hook 0 t)
+	 ("abs"           "" vhdl-template-default-hook 0 t)
+	 ("access"        "" vhdl-template-default-hook 0 t)
+	 ("after"         "" vhdl-template-default-hook 0 t)
+	 ("alias"         "" vhdl-template-alias-hook 0 t)
+	 ("all"           "" vhdl-template-default-hook 0 t)
+	 ("and"           "" vhdl-template-default-hook 0 t)
+	 ("arch"          "" vhdl-template-architecture-hook 0 t)
+	 ("architecture"  "" vhdl-template-architecture-hook 0 t)
+	 ("array"         "" vhdl-template-default-hook 0 t)
+	 ("assert"        "" vhdl-template-assert-hook 0 t)
+	 ("attr"          "" vhdl-template-attribute-hook 0 t)
+	 ("attribute"     "" vhdl-template-attribute-hook 0 t)
+	 ("begin"         "" vhdl-template-default-indent-hook 0 t)
+	 ("block"         "" vhdl-template-block-hook 0 t)
+	 ("body"          "" vhdl-template-default-hook 0 t)
+	 ("buffer"        "" vhdl-template-default-hook 0 t)
+	 ("bus"           "" vhdl-template-default-hook 0 t)
+	 ("case"          "" vhdl-template-case-hook 0 t)
+	 ("comp"          "" vhdl-template-component-hook 0 t)
+	 ("component"     "" vhdl-template-component-hook 0 t)
+	 ("cond"          "" vhdl-template-conditional-signal-asst-hook 0 t)
+	 ("conditional"   "" vhdl-template-conditional-signal-asst-hook 0 t)
+	 ("conf"          "" vhdl-template-configuration-hook 0 t)
+	 ("configuration" "" vhdl-template-configuration-hook 0 t)
+	 ("cons"          "" vhdl-template-constant-hook 0 t)
+	 ("constant"      "" vhdl-template-constant-hook 0 t)
+	 ("disconnect"    "" vhdl-template-disconnect-hook 0 t)
+	 ("downto"        "" vhdl-template-default-hook 0 t)
+	 ("else"          "" vhdl-template-else-hook 0 t)
+	 ("elseif"        "" vhdl-template-elsif-hook 0 t)
+	 ("elsif"         "" vhdl-template-elsif-hook 0 t)
+	 ("end"           "" vhdl-template-default-indent-hook 0 t)
+	 ("entity"        "" vhdl-template-entity-hook 0 t)
+	 ("exit"          "" vhdl-template-exit-hook 0 t)
+	 ("file"          "" vhdl-template-file-hook 0 t)
+	 ("for"           "" vhdl-template-for-hook 0 t)
+	 ("func"          "" vhdl-template-function-hook 0 t)
+	 ("function"      "" vhdl-template-function-hook 0 t)
+	 ("generic"       "" vhdl-template-generic-hook 0 t)
+	 ("group"         "" vhdl-template-group-hook 0 t)
+	 ("guarded"       "" vhdl-template-default-hook 0 t)
+	 ("if"            "" vhdl-template-if-hook 0 t)
+	 ("impure"        "" vhdl-template-default-hook 0 t)
+	 ("in"            "" vhdl-template-default-hook 0 t)
+	 ("inertial"      "" vhdl-template-default-hook 0 t)
+	 ("inout"         "" vhdl-template-default-hook 0 t)
+	 ("inst"          "" vhdl-template-instance-hook 0 t)
+	 ("instance"      "" vhdl-template-instance-hook 0 t)
+	 ("is"            "" vhdl-template-default-hook 0 t)
+	 ("label"         "" vhdl-template-default-hook 0 t)
+	 ("library"       "" vhdl-template-library-hook 0 t)
+	 ("linkage"       "" vhdl-template-default-hook 0 t)
+	 ("literal"       "" vhdl-template-default-hook 0 t)
+	 ("loop"          "" vhdl-template-bare-loop-hook 0 t)
+	 ("map"           "" vhdl-template-map-hook 0 t)
+	 ("mod"           "" vhdl-template-default-hook 0 t)
+	 ("nand"          "" vhdl-template-default-hook 0 t)
+	 ("new"           "" vhdl-template-default-hook 0 t)
+	 ("next"          "" vhdl-template-next-hook 0 t)
+	 ("nor"           "" vhdl-template-default-hook 0 t)
+	 ("not"           "" vhdl-template-default-hook 0 t)
+	 ("null"          "" vhdl-template-default-hook 0 t)
+	 ("of"            "" vhdl-template-default-hook 0 t)
+	 ("on"            "" vhdl-template-default-hook 0 t)
+	 ("open"          "" vhdl-template-default-hook 0 t)
+	 ("or"            "" vhdl-template-default-hook 0 t)
+	 ("others"        "" vhdl-template-others-hook 0 t)
+	 ("out"           "" vhdl-template-default-hook 0 t)
+	 ("pack"          "" vhdl-template-package-hook 0 t)
+	 ("package"       "" vhdl-template-package-hook 0 t)
+	 ("port"          "" vhdl-template-port-hook 0 t)
+	 ("postponed"     "" vhdl-template-default-hook 0 t)
+	 ("procedure"     "" vhdl-template-procedure-hook 0 t)
+	 ("process"       "" vhdl-template-process-hook 0 t)
+	 ("pure"          "" vhdl-template-default-hook 0 t)
+	 ("range"         "" vhdl-template-default-hook 0 t)
+	 ("record"        "" vhdl-template-default-hook 0 t)
+	 ("register"      "" vhdl-template-default-hook 0 t)
+	 ("reject"        "" vhdl-template-default-hook 0 t)
+	 ("rem"           "" vhdl-template-default-hook 0 t)
+	 ("report"        "" vhdl-template-report-hook 0 t)
+	 ("return"        "" vhdl-template-return-hook 0 t)
+	 ("rol"           "" vhdl-template-default-hook 0 t)
+	 ("ror"           "" vhdl-template-default-hook 0 t)
+	 ("select"        "" vhdl-template-selected-signal-asst-hook 0 t)
+	 ("severity"      "" vhdl-template-default-hook 0 t)
+	 ("shared"        "" vhdl-template-default-hook 0 t)
+	 ("sig"           "" vhdl-template-signal-hook 0 t)
+	 ("signal"        "" vhdl-template-signal-hook 0 t)
+	 ("sla"           "" vhdl-template-default-hook 0 t)
+	 ("sll"           "" vhdl-template-default-hook 0 t)
+	 ("sra"           "" vhdl-template-default-hook 0 t)
+	 ("srl"           "" vhdl-template-default-hook 0 t)
+	 ("subtype"       "" vhdl-template-subtype-hook 0 t)
+	 ("then"          "" vhdl-template-default-hook 0 t)
+	 ("to"            "" vhdl-template-default-hook 0 t)
+	 ("transport"     "" vhdl-template-default-hook 0 t)
+	 ("type"          "" vhdl-template-type-hook 0 t)
+	 ("unaffected"    "" vhdl-template-default-hook 0 t)
+	 ("units"         "" vhdl-template-default-hook 0 t)
+	 ("until"         "" vhdl-template-default-hook 0 t)
+	 ("use"           "" vhdl-template-use-hook 0 t)
+	 ("var"           "" vhdl-template-variable-hook 0 t)
+	 ("variable"      "" vhdl-template-variable-hook 0 t)
+	 ("wait"          "" vhdl-template-wait-hook 0 t)
+	 ("when"          "" vhdl-template-when-hook 0 t)
+	 ("while"         "" vhdl-template-while-loop-hook 0 t)
+	 ("with"          "" vhdl-template-with-hook 0 t)
+	 ("xnor"          "" vhdl-template-default-hook 0 t)
+	 ("xor"           "" vhdl-template-default-hook 0 t)
 	 ))
      ;; VHDL-AMS keywords
      (when (and (memq 'vhdl vhdl-electric-keywords) (vhdl-standard-p 'ams))
        '(
-	 ("across"     "" vhdl-template-default-hook 0)
-	 ("break"      "" vhdl-template-break-hook 0)
-	 ("limit"      "" vhdl-template-limit-hook 0)
-	 ("nature"     "" vhdl-template-nature-hook 0)
-	 ("noise"      "" vhdl-template-default-hook 0)
-	 ("procedural" "" vhdl-template-procedural-hook 0)
-	 ("quantity"   "" vhdl-template-quantity-hook 0)
-	 ("reference"  "" vhdl-template-default-hook 0)
-	 ("spectrum"   "" vhdl-template-default-hook 0)
-	 ("subnature"  "" vhdl-template-subnature-hook 0)
-	 ("terminal"   "" vhdl-template-terminal-hook 0)
-	 ("through"    "" vhdl-template-default-hook 0)
-	 ("tolerance"  "" vhdl-template-default-hook 0)
+	 ("across"     "" vhdl-template-default-hook 0 t)
+	 ("break"      "" vhdl-template-break-hook 0 t)
+	 ("limit"      "" vhdl-template-limit-hook 0 t)
+	 ("nature"     "" vhdl-template-nature-hook 0 t)
+	 ("noise"      "" vhdl-template-default-hook 0 t)
+	 ("procedural" "" vhdl-template-procedural-hook 0 t)
+	 ("quantity"   "" vhdl-template-quantity-hook 0 t)
+	 ("reference"  "" vhdl-template-default-hook 0 t)
+	 ("spectrum"   "" vhdl-template-default-hook 0 t)
+	 ("subnature"  "" vhdl-template-subnature-hook 0 t)
+	 ("terminal"   "" vhdl-template-terminal-hook 0 t)
+	 ("through"    "" vhdl-template-default-hook 0 t)
+	 ("tolerance"  "" vhdl-template-default-hook 0 t)
 	 ))
      ;; user model keywords
      (when (memq 'user vhdl-electric-keywords)
@@ -2931,7 +2935,7 @@
 	     (setq abbrev-list
 		   (cons (list keyword ""
 			       (vhdl-function-name
-				"vhdl-model" (nth 0 (car alist)) "hook") 0)
+				"vhdl-model" (nth 0 (car alist)) "hook") 0 t)
 			 abbrev-list)))
 	   (setq alist (cdr alist)))
 	 abbrev-list)))))
@@ -3746,7 +3750,8 @@
      ("Highlight"
       ["Highlighting On/Off..."
        (customize-option
-	(if vhdl-xemacs 'font-lock-auto-fontify 'global-font-lock-mode)) t]
+	(if (fboundp 'global-font-lock-mode)
+	    'global-font-lock-mode 'font-lock-auto-fontify)) t]
       ["Highlight Keywords"
        (progn (customize-set-variable 'vhdl-highlight-keywords
 				      (not vhdl-highlight-keywords))
@@ -7854,7 +7859,7 @@
 ;; correct different behavior of function `unread-command-events' in XEmacs
 (defun vhdl-character-to-event (arg))
 (defalias 'vhdl-character-to-event
-  (if vhdl-xemacs 'character-to-event 'identity))
+  (if (fboundp 'character-to-event) 'character-to-event 'identity))
 
 (defun vhdl-work-library ()
   "Return the working library name of the current project or \"work\" if no
@@ -10399,7 +10404,7 @@
 	  (when (stringp caught) (message caught)))
 	(when (= invoke-char ?-) (setq abbrev-start-location (point)))
 	;; delete CR which is still in event queue
-	(if vhdl-xemacs
+	(if (fboundp 'enqueue-eval-event)
 	    (enqueue-eval-event 'delete-char -1)
 	  (setq unread-command-events	; push back a delete char
 		(list (vhdl-character-to-event ?\177))))))))
@@ -11923,9 +11928,7 @@
   "Return the line number of the line containing point."
   (save-restriction
     (widen)
-    (save-excursion
-      (beginning-of-line)
-      (1+ (count-lines 1 (point))))))
+    (1+ (count-lines (point-min) (line-beginning-position)))))
 
 (defun vhdl-line-kill-entire (&optional arg)
   "Delete entire line."
@@ -12593,7 +12596,9 @@
  'vhdl-highlight-faces 'font-lock-variable-name-face 'custom-face)
 
 (defface vhdl-font-lock-prompt-face
-  '((((class color) (background light)) (:foreground "Red" :bold t))
+  '((((min-colors 88) (class color) (background light)) 
+     (:foreground "Red1" :bold t))
+    (((class color) (background light)) (:foreground "Red" :bold t))
     (((class color) (background dark)) (:foreground "Pink" :bold t))
     (t (:inverse-video t)))
   "Font lock mode face used to highlight prompts."
@@ -12634,6 +12639,8 @@
 
 (defface vhdl-font-lock-reserved-words-face
   '((((class color) (background light)) (:foreground "Orange" :bold t))
+    (((min-colors 88) (class color) (background dark)) 
+     (:foreground "Yellow1" :bold t))
     (((class color) (background dark)) (:foreground "Yellow" :bold t))
     (t ()))
   "Font lock mode face used to highlight additional reserved words."
@@ -14975,7 +14982,8 @@
   :group 'speedbar-faces)
 
 (defface vhdl-speedbar-architecture-face
-  '((((class color) (background light)) (:foreground "Blue"))
+  '((((min-colors 88) (class color) (background light)) (:foreground "Blue1"))
+    (((class color) (background light)) (:foreground "Blue"))
     (((class color) (background dark)) (:foreground "LightSkyBlue")))
   "Face used for displaying architecture names."
   :group 'speedbar-faces)
@@ -15000,6 +15008,7 @@
 
 (defface vhdl-speedbar-instantiation-face
   '((((class color) (background light)) (:foreground "Brown"))
+    (((min-colors 88) (class color) (background dark)) (:foreground "Yellow1"))
     (((class color) (background dark)) (:foreground "Yellow")))
   "Face used for displaying instantiation names."
   :group 'speedbar-faces)
@@ -15017,7 +15026,9 @@
   :group 'speedbar-faces)
 
 (defface vhdl-speedbar-architecture-selected-face
-  '((((class color) (background light)) (:foreground "Blue" :underline t))
+  '((((min-colors 88) (class color) (background light)) (:foreground "Blue1" :underline t))
+    (((min-colors 88) (class color) (background light)) (:foreground "Blue1" :underline t))
+    (((class color) (background light)) (:foreground "Blue" :underline t))
     (((class color) (background dark)) (:foreground "LightSkyBlue" :underline t)))
   "Face used for displaying architecture names."
   :group 'speedbar-faces)
@@ -15036,6 +15047,7 @@
 
 (defface vhdl-speedbar-instantiation-selected-face
   '((((class color) (background light)) (:foreground "Brown" :underline t))
+    (((min-colors 88) (class color) (background dark)) (:foreground "Yellow1" :underline t))
     (((class color) (background dark)) (:foreground "Yellow" :underline t)))
   "Face used for displaying instantiation names."
   :group 'speedbar-faces)
@@ -16550,26 +16562,24 @@
 (defun vhdl-doc-variable (variable)
   "Display VARIABLE's documentation in *Help* buffer."
   (interactive)
-  (with-output-to-temp-buffer "*Help*"
+  (unless vhdl-xemacs
+    (help-setup-xref (list #'vhdl-doc-variable variable) (interactive-p)))
+  (with-output-to-temp-buffer (if (fboundp 'help-buffer) (help-buffer) "*Help*")
     (princ (documentation-property variable 'variable-documentation))
-    (unless vhdl-xemacs
-      (help-setup-xref (list #'vhdl-doc-variable variable) (interactive-p)))
-    (save-excursion
-      (set-buffer standard-output)
+    (with-current-buffer standard-output
       (help-mode))
     (print-help-return-message)))
 
 (defun vhdl-doc-mode ()
   "Display VHDL Mode documentation in *Help* buffer."
   (interactive)
-  (with-output-to-temp-buffer "*Help*"
+  (unless vhdl-xemacs
+    (help-setup-xref (list #'vhdl-doc-mode) (interactive-p)))
+  (with-output-to-temp-buffer (if (fboundp 'help-buffer) (help-buffer) "*Help*")
     (princ mode-name)
     (princ " mode:\n")
     (princ (documentation 'vhdl-mode))
-    (unless vhdl-xemacs
-      (help-setup-xref (list #'vhdl-doc-mode) (interactive-p)))
-    (save-excursion
-      (set-buffer standard-output)
+    (with-current-buffer standard-output
       (help-mode))
     (print-help-return-message)))
 
@@ -16578,5 +16588,5 @@
 
 (provide 'vhdl-mode)
 
-;;; arch-tag: 780d7073-9b5d-4c6c-b0d8-26b28783aba3
+;; arch-tag: 780d7073-9b5d-4c6c-b0d8-26b28783aba3
 ;;; vhdl-mode.el ends here
--- a/lisp/saveplace.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/saveplace.el	Mon Apr 11 12:40:15 2005 +0000
@@ -220,7 +220,9 @@
               ((eq 'nospecial save-place-version-control) version-control)
               (t
                t))))
-        (write-file file)
+	(condition-case nil
+	    (write-file file)
+	  (file-error (message "Can't write %s" file)))
         (kill-buffer (current-buffer))
         (message "Saving places to %s...done" file)))))
 
--- a/lisp/smerge-mode.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/smerge-mode.el	Mon Apr 11 12:40:15 2005 +0000
@@ -76,8 +76,12 @@
   :type 'boolean)
 
 (defface smerge-mine-face
-  '((((background light))
+  '((((min-colors 88) (background light))
+     (:foreground "blue1"))
+    (((background light))
      (:foreground "blue"))
+    (((min-colors 88) (background dark))
+     (:foreground "cyan1"))
     (((background dark))
      (:foreground "cyan")))
   "Face for your code."
@@ -94,7 +98,9 @@
 (defvar smerge-other-face 'smerge-other-face)
 
 (defface smerge-base-face
-  '((((background light))
+  '((((min-colors 88) (background light))
+     (:foreground "red1"))
+    (((background light))
      (:foreground "red"))
     (((background dark))
      (:foreground "orange")))
--- a/lisp/startup.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/startup.el	Mon Apr 11 12:40:15 2005 +0000
@@ -284,6 +284,8 @@
 
 (defvar emacs-quick-startup nil)
 
+(defvar emacs-basic-display nil)
+
 (defvar init-file-debug nil)
 
 (defvar init-file-had-error nil)
@@ -682,11 +684,13 @@
 		(setq argval nil
                       argi orig-argi)))))
 	(cond
-	 ((member argi '("-Q" "-bare-bones"))
+	 ((member argi '("-Q" "-quick"))
 	  (setq init-file-user nil
 		site-run-file nil
-		no-blinking-cursor t
-		emacs-quick-startup t)
+		emacs-quick-startup t))
+	 ((member argi '("-D" "-basic-display"))
+	  (setq no-blinking-cursor t
+		emacs-basic-display t)
 	  (push '(vertical-scroll-bars . nil) initial-frame-alist))
 	 ((member argi '("-q" "-no-init-file"))
 	  (setq init-file-user nil))
@@ -721,14 +725,14 @@
 
   ;; If frame was created with a menu bar, set menu-bar-mode on.
   (unless (or noninteractive
-	      emacs-quick-startup
+	      emacs-basic-display
               (and (memq initial-window-system '(x w32))
                    (<= (frame-parameter nil 'menu-bar-lines) 0)))
     (menu-bar-mode 1))
 
   ;; If frame was created with a tool bar, switch tool-bar-mode on.
   (unless (or noninteractive
-	      emacs-quick-startup
+	      emacs-basic-display
               (not (display-graphic-p))
               (<= (frame-parameter nil 'tool-bar-lines) 0))
     (tool-bar-mode 1))
@@ -739,7 +743,7 @@
   (custom-reevaluate-setting 'normal-erase-is-backspace)
 
   (unless (or noninteractive
-	      emacs-quick-startup
+	      emacs-basic-display
               (not (display-graphic-p))
               (not (fboundp 'x-show-tip)))
     (tooltip-mode 1))
@@ -1045,7 +1049,7 @@
 	   "Useful File menu items:\n"
 	   :face variable-pitch "\
 Exit Emacs\t(Or type Control-x followed by Control-c)
-Recover Session\tRecover files you were editing before a crash
+Recover Crashed Session\tRecover files you were editing before a crash
 
 
 
@@ -1169,7 +1173,7 @@
 			 (emacs-version)
 			 "\n"
 			 :face '(variable-pitch :height 0.5)
-			 "Copyright (C) 2004 Free Software Foundation, Inc.")
+			 "Copyright (C) 2005 Free Software Foundation, Inc.")
     (and auto-save-list-file-prefix
 	 ;; Don't signal an error if the
 	 ;; directory for auto-save-list files
--- a/lisp/term.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/term.el	Mon Apr 11 12:40:15 2005 +0000
@@ -3233,7 +3233,7 @@
    ((eq char ?P)
     (term-delete-chars (max 1 term-terminal-parameter)))
    ;; \E[@ - insert spaces
-   ((eq char ?@)
+   ((eq char ?@) ;; (terminfo: ich)
     (term-insert-spaces (max 1 term-terminal-parameter)))
    ;; \E[?h - DEC Private Mode Set
    ((eq char ?h)
--- a/lisp/term/xterm.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/term/xterm.el	Mon Apr 11 12:40:15 2005 +0000
@@ -125,7 +125,7 @@
 
 (defun xterm-rgb-convert-to-16bit (prim)
   "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value."
-  (min 65535 (round (* (/ prim 255.0) 65535.0))))
+  (logior prim (lsh prim 8)))
 
 (defun xterm-register-default-colors ()
   "Register the default set of colors for xterm or compatible emulator.
@@ -162,9 +162,10 @@
 	    (tty-color-define (format "color-%d" (- 256 ncolors))
 			      (- 256 ncolors)
 			      (mapcar 'xterm-rgb-convert-to-16bit
-				      (list (round (* r 42.5))
-					    (round (* g 42.5))
-					    (round (* b 42.5)))))
+				      (list (if (zerop r) 0 (+ (* r 40) 55))
+					    (if (zerop g) 0 (+ (* g 40) 55))
+					    (if (zerop b) 0 (+ (* b 40) 55)))))
+
 	    (setq b (1+ b))
 	    (if (> b 5)
 		(setq g (1+ g)
@@ -202,7 +203,7 @@
 	;; Now the 8 gray colors
 	(while (> ncolors 0)
 	  (setq color (xterm-rgb-convert-to-16bit
-		       (round
+		       (floor
 			(if (= ncolors 8)
 			    46.36363636
 			  (+ (* (- 8 ncolors) 23.18181818) 69.54545454)))))
--- a/lisp/textmodes/bibtex.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/textmodes/bibtex.el	Mon Apr 11 12:40:15 2005 +0000
@@ -652,7 +652,7 @@
 
 (defcustom bibtex-autokey-titleword-ignore
   '("A" "An" "On" "The" "Eine?" "Der" "Die" "Das"
-    "[^A-Z].*" ".*[^A-Z0-9].*")
+    "[^[:upper:]].*" ".*[^[:upper:]0-9].*")
   "Determines words from the title that are not to be used in the key.
 Each item of the list is a regexp.  If a word of the title matches a
 regexp from that list, it is not included in the title part of the key.
@@ -1078,10 +1078,10 @@
 (defconst bibtex-entry-type (concat "@" bibtex-field-name)
   "Regexp matching the type part of a BibTeX entry.")
 
-(defconst bibtex-reference-key "[][a-zA-Z0-9.:;?!`'/*@+|()<>&_^$-]+"
+(defconst bibtex-reference-key "[][[:alnum:].:;?!`'/*@+|()<>&_^$-]+"
   "Regexp matching the reference key part of a BibTeX entry.")
 
-(defconst bibtex-field-const "[][a-zA-Z0-9.:;?!`'/*@+=|<>&_^$-]+"
+(defconst bibtex-field-const "[][[:alnum:].:;?!`'/*@+=|<>&_^$-]+"
   "Regexp matching a BibTeX field constant.")
 
 (defconst bibtex-entry-head
@@ -2103,7 +2103,7 @@
 (defun bibtex-autokey-demangle-name (fullname)
   "Get the last part from a well-formed FULLNAME and perform abbreviations."
   (let* (case-fold-search
-         (name (cond ((string-match "\\([A-Z][^, ]*\\)[^,]*," fullname)
+         (name (cond ((string-match "\\([[:upper:]][^, ]*\\)[^,]*," fullname)
                       ;; Name is of the form "von Last, First" or
                       ;; "von Last, Jr, First"
                       ;; --> Take the first capital part before the comma
@@ -2112,7 +2112,7 @@
                       ;; Strange name: we have a comma, but nothing capital
                       ;; So we accept even lowercase names
                       (match-string 1 fullname))
-                     ((string-match "\\(\\<[a-z][^ ]* +\\)+\\([A-Z][^ ]*\\)"
+                     ((string-match "\\(\\<[[:lower:]][^ ]* +\\)+\\([[:upper:]][^ ]*\\)"
                                     fullname)
                       ;; name is of the form "First von Last", "von Last",
                       ;; "First von von Last", or "d'Last"
@@ -2796,7 +2796,7 @@
   (set (make-local-variable 'comment-start-skip)
        (concat (regexp-quote bibtex-comment-start) "\\>[ \t]*"))
   (set (make-local-variable 'comment-column) 0)
-  (set (make-local-variable 'defun-prompt-regexp) "^[ \t]*@[a-zA-Z0-9]+[ \t]*")
+  (set (make-local-variable 'defun-prompt-regexp) "^[ \t]*@[[:alnum:]]+[ \t]*")
   (set (make-local-variable 'outline-regexp) "[ \t]*@")
   (set (make-local-variable 'fill-paragraph-function) 'bibtex-fill-field)
   (set (make-local-variable 'fill-prefix) (make-string (+ bibtex-entry-offset
@@ -2825,7 +2825,7 @@
   ;; XEmacs needs easy-menu-add, Emacs does not care
   (easy-menu-add bibtex-edit-menu)
   (easy-menu-add bibtex-entry-menu)
-  (run-hooks 'bibtex-mode-hook))
+  (run-mode-hooks 'bibtex-mode-hook))
 
 (defun bibtex-field-list (entry-type)
   "Return list of allowed fields for entry ENTRY-TYPE.
--- a/lisp/textmodes/flyspell.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/textmodes/flyspell.el	Mon Apr 11 12:40:15 2005 +0000
@@ -221,10 +221,10 @@
 
 (defcustom flyspell-large-region 1000
   "*The threshold that determines if a region is small.
-The `flyspell-region' function is invoked if the region is small, the
-word are checked one after the other using regular flyspell check
-means.  If the region is large, a new Ispell process is spawned to get
-speed."
+If the region is smaller than this number of characters,
+`flyspell-region' checks the words sequentially using regular
+flyspell methods.  Else, if the region is large, a new Ispell process is
+spawned for speed."
   :group 'flyspell
   :version "21.1"
   :type 'number)
--- a/lisp/textmodes/table.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/textmodes/table.el	Mon Apr 11 12:40:15 2005 +0000
@@ -683,7 +683,9 @@
   :group 'table)
 
 (defface table-cell-face
-  '((((class color))
+  '((((min-colors 88) (class color))
+     (:foreground "gray90" :background "blue1"))
+    (((class color))
      (:foreground "gray90" :background "blue"))
     (t (:bold t)))
   "*Face used for table cell contents."
--- a/lisp/url/url-ldap.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/url/url-ldap.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,5 +1,5 @@
 ;;; url-ldap.el --- LDAP Uniform Resource Locator retrieval code
-;; Copyright (c) 1998 - 1999, 2004 Free Software Foundation, Inc.
+;; Copyright (c) 1998, 1999, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Keywords: comm, data, processes
 
@@ -112,10 +112,16 @@
   (format "<img alt='JPEG Photo' src='data:image/jpeg;base64,%s'>"
 	  (url-hexify-string (base64-encode-string data))))
 
-;; FIXME: This needs sorting out for the Emacs LDAP functions, specifically
-;; calls of ldap-open, ldap-close, ldap-search-internal
 ;;;###autoload
 (defun url-ldap (url)
+  "Perform an LDAP search specified by URL.
+The return value is a buffer displaying the search results in HTML.
+URL can be a URL string, or a URL vector of the type returned by
+`url-generic-parse-url'."
+  (if (stringp url)
+      (setq url (url-generic-parse-url (url-unhex-string url)))
+    (if (not (vectorp url))
+        (error "Argument is not a valid URL")))
   (save-excursion
     (set-buffer (generate-new-buffer " *url-ldap*"))
     (setq url-current-object url)
@@ -142,10 +148,7 @@
 	     (scope nil)
 	     (filter nil)
 	     (extensions nil)
-	     (connection nil)
-	     (results nil)
-	     (extract-dn (and (fboundp 'function-max-args)
-			      (= (function-max-args 'ldap-search-internal) 7))))
+	     (results nil))
 
 	;; Get rid of leading /
 	(if (string-match "^/" data)
@@ -163,7 +166,7 @@
 	      scope (intern (url-unhex-string (or scope "base")))
 	      filter (url-unhex-string (or filter "(objectClass=*)")))
 
-	(if (not (memq scope '(base one tree)))
+	(if (not (memq scope '(base one sub)))
 	    (error "Malformed LDAP URL: Unknown scope: %S" scope))
 
 	;; Convert to the internal LDAP support scoping names.
@@ -188,12 +191,14 @@
 				   (assoc "!bindname" extensions))))
     
 	;; Now, let's actually do something with it.
-	(setq connection (ldap-open host (if binddn (list 'binddn binddn)))
-	      results (if extract-dn
-			  (ldap-search-internal connection filter base-object scope attributes nil t)
-			(ldap-search-internal connection filter base-object scope attributes nil)))
-		      
-	(ldap-close connection)
+	(setq results (cdr (ldap-search-internal
+		       (list 'host (concat host ":" (number-to-string port))
+			     'base base-object
+			     'attributes attributes
+			     'scope scope
+			     'filter filter
+			     'binddn binddn))))
+
 	(insert "<html>\n"
 		" <head>\n"
 		"  <title>LDAP Search Results</title>\n"
@@ -205,8 +210,6 @@
 	(mapc (lambda (obj)
 		(insert "  <hr>\n"
 			"  <table border=1>\n")
-		(if extract-dn
-		    (insert "   <tr><th colspan=2>" (car obj) "</th></tr>\n"))
 		(mapc (lambda (attr)
 			(if (= (length (cdr attr)) 1)
 			    ;; single match, easy
@@ -225,7 +228,7 @@
 					     "<br>\n")
 				  "</td>"
 				  "   </tr>\n")))
-		      (if extract-dn (cdr obj) obj))
+                      obj)
 		(insert "  </table>\n"))
 	      results)
 
--- a/lisp/whitespace.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/whitespace.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; whitespace.el --- warn about and clean bogus whitespaces in the file
 
-;; Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2005 Free Software Foundation, Inc.
 
 ;; Author: Rajesh Vaidheeswarran <rv@gnu.org>
 ;; Keywords: convenience
@@ -319,7 +319,7 @@
   :group 'faces)
 
 (defface whitespace-highlight-face '((((class color) (background light))
-				      (:background "green"))
+				      (:background "green1"))
 				     (((class color) (background dark))
 				      (:background "sea green"))
 				     (((class grayscale mono)
@@ -489,16 +489,14 @@
 				  (if whitespace-spacetab "s")
 				  (if whitespace-trailing "t")))))
 	      (whitespace-update-modeline whitespace-this-modeline)
-	      (save-excursion
-		(get-buffer-create whitespace-errbuf)
-		(kill-buffer whitespace-errbuf)
-		(get-buffer-create whitespace-errbuf)
-		(set-buffer whitespace-errbuf)
+	      (if (get-buffer whitespace-errbuf)
+		  (kill-buffer whitespace-errbuf))
+	      (with-current-buffer (get-buffer-create whitespace-errbuf)
 		(if whitespace-errmsg
 		    (progn
 		      (insert whitespace-errmsg)
 		      (if (not (or quiet whitespace-silent))
-			  (display-buffer whitespace-errbuf t))
+			  (display-buffer (current-buffer) t))
 		      (if (not quiet)
 			  (message "Whitespaces: [%s%s] in %s"
 				   whitespace-this-modeline
@@ -511,9 +509,7 @@
 		  (if (and (not quiet) (not (equal whitespace-clean-msg "")))
 		      (message "%s %s" whitespace-filename
 			       whitespace-clean-msg))))))))
-    (if whitespace-error
-	t
-      nil)))
+    whitespace-error))
 
 ;;;###autoload
 (defun whitespace-region (s e)
@@ -736,23 +732,17 @@
 (defun whitespace-highlight-the-space (b e)
   "Highlight the current line, unhighlighting a previously jumped to line."
   (if whitespace-display-spaces-in-color
-      (progn
+      (let ((ol (whitespace-make-overlay b e)))
 	(whitespace-unhighlight-the-space)
-	(add-to-list 'whitespace-highlighted-space
-		     (whitespace-make-overlay b e))
-	(whitespace-overlay-put (whitespace-make-overlay b e) 'face
-				'whitespace-highlight-face))))
+	(push ol whitespace-highlighted-space)
+	(whitespace-overlay-put ol 'face 'whitespace-highlight-face))))
 ;;  (add-hook 'pre-command-hook 'whitespace-unhighlight-the-space))
 
 (defun whitespace-unhighlight-the-space ()
   "Unhighlight the currently highlight line."
   (if (and whitespace-display-spaces-in-color whitespace-highlighted-space)
-      (let ((whitespace-this-space nil))
-	(while whitespace-highlighted-space
-	  (setq whitespace-this-space (car whitespace-highlighted-space))
-	  (setq whitespace-highlighted-space
-		(cdr whitespace-highlighted-space))
-	  (whitespace-delete-overlay whitespace-this-space))
+      (progn
+	(mapc 'whitespace-delete-overlay whitespace-highlighted-space)
 	(setq whitespace-highlighted-space nil))
     (remove-hook 'pre-command-hook 'whitespace-unhighlight-the-space)))
 
@@ -863,5 +853,5 @@
 
 (provide 'whitespace)
 
-;;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c
+;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c
 ;;; whitespace.el ends here
--- a/lisp/wid-edit.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/wid-edit.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; wid-edit.el --- Functions for creating and using widgets -*-byte-compile-dynamic: t;-*-
 ;;
-;; Copyright (C) 1996,97,1999,2000,01,02,2003, 2004  Free Software Foundation, Inc.
+;; Copyright (C) 1996,97,1999,2000,01,02,2003, 2004, 2005  Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Maintainer: FSF
@@ -883,7 +883,9 @@
        (lookup-key widget-global-map (this-command-keys))))))
 
 (defface widget-button-pressed-face
-  '((((class color))
+  '((((min-colors 88) (class color))
+     (:foreground "red1"))
+    (((class color))
      (:foreground "red"))
     (t
      (:weight bold :underline t)))
--- a/lisp/woman.el	Fri Apr 08 16:25:22 2005 +0000
+++ b/lisp/woman.el	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 ;;; woman.el --- browse UN*X manual pages `wo (without) man'
 
-;; Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
 
 ;; Author: Francis J. Wright <F.J.Wright@qmul.ac.uk>
 ;; Maintainer: Francis J. Wright <F.J.Wright@qmul.ac.uk>
@@ -876,13 +876,16 @@
 ;; You should probably select either italic or underline as you prefer, but
 ;; not both, although italic and underline work together perfectly well!
 (defface woman-italic-face
-  `((((background light)) (:slant italic :underline t :foreground "red"))
+  `((((min-colors 88) (background light)) 
+     (:slant italic :underline t :foreground "red1"))
+    (((background light)) (:slant italic :underline t :foreground "red"))
     (((background dark)) (:slant italic :underline t)))
   "Face for italic font in man pages."
   :group 'woman-faces)
 
 (defface woman-bold-face
-  '((((background light)) (:weight bold :foreground "blue"))
+  '((((min-colors 88) (background light)) (:weight bold :foreground "blue1"))
+    (((background light)) (:weight bold :foreground "blue"))
     (((background dark)) (:weight bold :foreground "green2")))
   "Face for bold font in man pages."
   :group 'woman-faces)
@@ -892,6 +895,7 @@
 ;; non-standard fonts seem to do so badly or in idiosyncratic ways!)
 (defface woman-unknown-face
   '((((background light)) (:foreground "brown"))
+    (((min-colors 88) (background dark)) (:foreground "cyan1"))
     (((background dark)) (:foreground "cyan")))
   "Face for all unknown fonts in man pages."
   :group 'woman-faces)
--- a/lispref/ChangeLog	Fri Apr 08 16:25:22 2005 +0000
+++ b/lispref/ChangeLog	Mon Apr 11 12:40:15 2005 +0000
@@ -1,3 +1,8 @@
+2005-04-08  Lute Kamstra  <lute@gnu.org>
+
+	* modes.texi (Search-based Fontification): Fix cross references.
+	Use consistent terminology.  Document anchored highlighting.
+
 2005-04-05  Lute Kamstra  <lute@gnu.org>
 
 	* modes.texi (Defining Minor Modes): Document :group keyword
@@ -2348,7 +2353,7 @@
 
 	* files.texi (Changing Files): copy-file allows dir as NEWNAME.
 	(Magic File Names): Specify precedence order of handlers.
-o
+
 	* commands.texi (Command Overview): Emacs server runs pre-command-hook
 	and post-command-hook.
 	(Waiting): New calling convention for sit-for.
--- a/lispref/modes.texi	Fri Apr 08 16:25:22 2005 +0000
+++ b/lispref/modes.texi	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999,
 @c   2003, 2004, 2005 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @setfilename ../info/modes
@@ -2111,7 +2111,7 @@
 each element, it finds and handles all matches.  Ordinarily, once
 part of the text has been fontified already, this cannot be overridden
 by a subsequent match in the same text; but you can specify different
-behavior using the @var{override} element of a @var{highlighter}.
+behavior using the @var{override} element of a @var{subexp-highlighter}.
 
   Each element of @code{font-lock-keywords} should have one of these
 forms:
@@ -2122,14 +2122,14 @@
 @code{font-lock-keyword-face}.  For example,
 
 @example
-;; @r{Highlight discrete occurrences of @samp{foo}}
+;; @r{Highlight occurrences of the word @samp{foo}}
 ;; @r{using @code{font-lock-keyword-face}.}
 "\\<foo\\>"
 @end example
 
-The function @code{regexp-opt} (@pxref{Syntax of Regexps}) is useful for
-calculating optimal regular expressions to match a number of different
-keywords.
+The function @code{regexp-opt} (@pxref{Regexp Functions}) is useful
+for calculating optimal regular expressions to match a number of
+different keywords.
 
 @item @var{function}
 Find text by calling @var{function}, and highlight the matches
@@ -2146,10 +2146,10 @@
 @var{function} fails.  On failure, @var{function} need not reset point
 in any particular way.
 
-@item (@var{matcher} . @var{match})
+@item (@var{matcher} . @var{subexp})
 In this kind of element, @var{matcher} is either a regular
 expression or a function, as described above.  The @sc{cdr},
-@var{match}, specifies which subexpression of @var{matcher} should be
+@var{subexp}, specifies which subexpression of @var{matcher} should be
 highlighted (instead of the entire text that @var{matcher} matched).
 
 @example
@@ -2159,8 +2159,8 @@
 @end example
 
 If you use @code{regexp-opt} to produce the regular expression
-@var{matcher}, then you can use @code{regexp-opt-depth} (@pxref{Syntax
-of Regexps}) to calculate the value for @var{match}.
+@var{matcher}, then you can use @code{regexp-opt-depth} (@pxref{Regexp
+Functions}) to calculate the value for @var{subexp}.
 
 @item (@var{matcher} . @var{facespec})
 In this kind of element, @var{facespec} is an object which specifies
@@ -2173,37 +2173,39 @@
 ("fubar" . fubar-face)
 @end example
 
-However, @var{facespec} can also be a list of the form
+However, @var{facespec} can also be a list of the form:
 
 @example
 (face @var{face} @var{prop1} @var{val1} @var{prop2} @var{val2}@dots{})
 @end example
 
-to specify various text properties to put on the text that matches.
-If you do this, be sure to add the other text property names that you
-set in this way to the value of @code{font-lock-extra-managed-props}
-so that the properties will also be cleared out when they are no longer
-appropriate.
-
-@item (@var{matcher} . @var{highlighter})
-In this kind of element, @var{highlighter} is a list
+to specify the face @var{face} and various additional text properties
+to put on the text that matches.  If you do this, be sure to add the
+other text property names that you set in this way to the value of
+@code{font-lock-extra-managed-props} so that the properties will also
+be cleared out when they are no longer appropriate.  Alternatively,
+you can set the variable @code{font-lock-unfontify-region-function} to
+a function that clears these properties.
+
+@item (@var{matcher} . @var{subexp-highlighter})
+In this kind of element, @var{subexp-highlighter} is a list
 which specifies how to highlight matches found by @var{matcher}.
-It has the form
+It has the form:
 
 @example
-(@var{subexp} @var{facespec} @var{override} @var{laxmatch})
+(@var{subexp} @var{facespec} [[@var{override} [@var{laxmatch}]])
 @end example
 
 The @sc{car}, @var{subexp}, is an integer specifying which subexpression
 of the match to fontify (0 means the entire matching text).  The second
 subelement, @var{facespec}, specifies the face, as described above.
 
-The last two values in @var{highlighter}, @var{override} and
-@var{laxmatch}, are flags.  If @var{override} is @code{t}, this
-element can override existing fontification made by previous elements
-of @code{font-lock-keywords}.  If it is @code{keep}, then each
-character is fontified if it has not been fontified already by some
-other element.  If it is @code{prepend}, the face specified by
+The last two values in @var{subexp-highlighter}, @var{override} and
+@var{laxmatch}, are optional flags.  If @var{override} is @code{t},
+this element can override existing fontification made by previous
+elements of @code{font-lock-keywords}.  If it is @code{keep}, then
+each character is fontified if it has not been fontified already by
+some other element.  If it is @code{prepend}, the face specified by
 @var{facespec} is added to the beginning of the @code{font-lock-face}
 property.  If it is @code{append}, the face is added to the end of the
 @code{font-lock-face} property.
@@ -2219,8 +2221,8 @@
 Here are some examples of elements of this kind, and what they do:
 
 @smallexample
-;; @r{Highlight occurrences of either @samp{foo} or @samp{bar},}
-;; @r{using @code{foo-bar-face}, even if they have already been highlighted.}
+;; @r{Highlight occurrences of either @samp{foo} or @samp{bar}, using}
+;; @r{@code{foo-bar-face}, even if they have already been highlighted.}
 ;; @r{@code{foo-bar-face} should be a variable whose value is a face.}
 ("foo\\|bar" 0 foo-bar-face t)
 
@@ -2230,64 +2232,71 @@
 (fubar-match 1 fubar-face)
 @end smallexample
 
-@item (@var{matcher} @var{highlighters}@dots{})
-This sort of element specifies several @var{highlighter} lists for a
-single @var{matcher}.  In order for this to be useful, each
-@var{highlighter} should have a different value of @var{subexp}; that is,
-each one should apply to a different subexpression of @var{matcher}.
-
-@ignore
-@item (@var{matcher} . @var{anchored})
-In this kind of element, @var{anchored} acts much like a
-@var{highlighter}, but it is more complex and can specify multiple
-successive searches.
-
-For highlighting single items, typically only @var{highlighter} is
-required.  However, if an item or (typically) items are to be
-highlighted following the instance of another item (the anchor) then
-@var{anchored} may be required.
-
-It has this format:
+@item (@var{matcher} . @var{anchored-highlighter})
+In this kind of element, @var{anchored-highlighter} specifies how to
+highlight text that follows a match found by @var{matcher}.  So a
+match found by @var{matcher} acts as the anchor for further searches
+specified by @var{anchored-highlighter}.  @var{anchored-highlighter}
+is a list of the following form:
 
 @example
-(@var{submatcher} @var{pre-match-form} @var{post-match-form} @var{highlighters}@dots{})
-@end example
-
-@c I can't parse this text -- rms
-where @var{submatcher} is much like @var{matcher}, with one
-exception---see below.  @var{pre-match-form} and @var{post-match-form}
-are evaluated before the first, and after the last, instance
-@var{anchored}'s @var{submatcher} is used.  Therefore they can be used
-to initialize before, and cleanup after, @var{submatcher} is used.
-Typically, @var{pre-match-form} is used to move to some position
-relative to the original @var{submatcher}, before starting with
-@var{anchored}'s @var{submatcher}.  @var{post-match-form} might be used
-to move, before resuming with @var{anchored}'s parent's @var{matcher}.
-
-For example, an element of the form highlights (if not already highlighted):
-
-@example
-("\\<anchor\\>" (0 anchor-face) ("\\<item\\>" nil nil (0 item-face)))
+(@var{anchored-matcher} @var{pre-form} @var{post-form}
+                        @var{subexp-highlighters}@dots{})
 @end example
 
-Discrete occurrences of @samp{anchor} in the value of
-@code{anchor-face}, and subsequent discrete occurrences of @samp{item}
-(on the same line) in the value of @code{item-face}.  (Here
-@var{pre-match-form} and @var{post-match-form} are @code{nil}.
-Therefore @samp{item} is initially searched for starting from the end of
-the match of @samp{anchor}, and searching for subsequent instance of
-@samp{anchor} resumes from where searching for @samp{item} concluded.)
-
-The above-mentioned exception is as follows.  The limit of the
-@var{submatcher} search defaults to the end of the line after
-@var{pre-match-form} is evaluated.  However, if @var{pre-match-form}
-returns a position greater than the position after @var{pre-match-form}
-is evaluated, that position is used as the limit of the search.  It is
-generally a bad idea to return a position greater than the end of the
-line; in other words, the @var{submatcher} search should not span lines.
-
-@item (@var{matcher} @var{highlighters-or-anchoreds} ...)
-@end ignore
+Here, @var{anchored-matcher}, like @var{matcher}, is either a regular
+expression or a function.  After a match of @var{matcher} is found,
+point is at the end of the match.  Now, Font Lock evaluates the form
+@var{pre-form}.  Then it searches for matches of
+@var{anchored-matcher} and uses @var{subexp-highlighters} to highlight
+these.  A @var{subexp-highlighter} is as described above.  Finally,
+Font Lock evaluates @var{post-form}.
+
+The forms @var{pre-form} and @var{post-form} can be used to initialize
+before, and cleanup after, @var{anchored-matcher} is used.  Typically,
+@var{pre-form} is used to move point to some position relative to the
+match of @var{matcher}, before starting with @var{anchored-matcher}.
+@var{post-form} might be used to move back, before resuming with
+@var{matcher}.
+
+After Font Lock evaluates @var{pre-form}, it does not search for
+@var{anchored-matcher} beyond the end of the line.  However, if
+@var{pre-form} returns a buffer position that is greater than the
+position of point after @var{pre-form} is evaluated, then the position
+returned by @var{pre-form} is used as the limit of the search instead.
+It is generally a bad idea to return a position greater than the end
+of the line; in other words, the @var{anchored-matcher} search should
+not span lines.
+
+For example,
+
+@smallexample
+;; @r{Highlight occurrences of the word @samp{item} following}
+;; @r{an occurrence of the word @samp{anchor} (on the same line)}
+;; @r{in the value of @code{item-face}.}
+("\\<anchor\\>" "\\<item\\>" nil nil (0 item-face))
+@end smallexample
+
+Here, @var{pre-form} and @var{post-form} are @code{nil}.  Therefore
+searching for @samp{item} starts at the end of the match of
+@samp{anchor}, and searching for subsequent instances of @samp{anchor}
+resumes from where searching for @samp{item} concluded.
+
+@item (@var{matcher} @var{highlighters}@dots{})
+This sort of element specifies several @var{highlighter} lists for a
+single @var{matcher}.  A @var{highlighter} list can be of the type
+@var{subexp-highlighter} or @var{anchored-highlighter} as described
+above.
+
+For example,
+
+@smallexample
+;; @r{Highlight occurrences of the word @samp{anchor} in the value}
+;; @r{of @code{anchor-face}, and subsequent occurrences of the word}
+;; @r{@samp{item} (on the same line) in the value of @code{item-face}.}
+("\\<anchor\\>" (0 anchor-face)
+                ("\\<item\\>" nil nil (0 item-face)))
+@end smallexample
 
 @item (eval . @var{form})
 Here @var{form} is an expression to be evaluated the first time
@@ -2301,7 +2310,7 @@
 updating when you edit the buffer does not, since it considers text one
 line at a time.  If you have patterns that typically only span one
 line but can occasionally span two or three, such as
-@samp{<title>...</title>}, you can ask font-lock to be more careful by
+@samp{<title>...</title>}, you can ask Font Lock to be more careful by
 setting @code{font-lock-multiline} to @code{t}.  But it still will not
 work in all cases.
 
--- a/lwlib/xlwmenuP.h	Fri Apr 08 16:25:22 2005 +0000
+++ b/lwlib/xlwmenuP.h	Mon Apr 11 12:40:15 2005 +0000
@@ -1,5 +1,5 @@
 /* Internals of a lightweight menubar widget.
-   Copyright (C) 1999, 2000, 2002, 2004  Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2002, 2004, 2005  Free Software Foundation, Inc.
 
 This file is part of the Lucid Widget Library.
 
--- a/man/ChangeLog	Fri Apr 08 16:25:22 2005 +0000
+++ b/man/ChangeLog	Mon Apr 11 12:40:15 2005 +0000
@@ -1,3 +1,32 @@
+2005-04-10  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* cl.texi (Porting Common Lisp): Fix typo.
+
+2005-04-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* rmail.texi (Rmail Basics): Clarify description of `q' and `b'.
+	(Rmail Deletion): `C-d' in RMAIL buffer does not accept a numeric
+	argument.
+	(Rmail Inbox): Give full name of `rmail-primary-inbox-list'.
+	(Rmail Output): Clarify which statements apply to `o', `C-o' and
+	`w', respectively.
+	(Rmail Labels): Mention `l'.
+	(Rmail Attributes): Correct pxref.  Mention `stored' attribute.
+	(Rmail Summary Edit): Describe `j' and RET.
+
+2005-04-10  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* xresources.texi (Lucid Resources): Added fonSet resource.
+
+2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus.texi (RSS): Addition.
+
+2005-04-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* display.texi (Useless Whitespace): `indicate-unused-lines' is
+	now called `indicate-empty-lines'.
+
 2005-04-06  Kim F. Storm  <storm@cua.dk>
 
 	* cmdargs.texi (Initial Options): Add --bare-bones alias for -Q.
--- a/man/cl.texi	Fri Apr 08 16:25:22 2005 +0000
+++ b/man/cl.texi	Mon Apr 11 12:40:15 2005 +0000
@@ -5144,7 +5144,7 @@
 one, some of the features in this package are not fully compliant
 with ANSI or Steele; @pxref{Common Lisp Compatibility}.  But there
 are also quite a few features that this package does not provide
-at all.  Here are some major omissions that you will want watch out
+at all.  Here are some major omissions that you will want to watch out
 for when bringing Common Lisp code into Emacs.
 
 @itemize @bullet
--- a/man/display.texi	Fri Apr 08 16:25:22 2005 +0000
+++ b/man/display.texi	Mon Apr 11 12:40:15 2005 +0000
@@ -679,7 +679,7 @@
 delete-trailing-whitespace @key{RET}}.  (This command does not remove
 the form-feed characters.)
 
-@vindex indicate-unused-lines
+@vindex indicate-empty-lines
 @vindex default-indicate-empty-lines
 @cindex unused lines
 @cindex fringes, and unused line indication
@@ -690,9 +690,9 @@
 this image in the fringe.
 
   To enable this feature, set the buffer-local variable
-@code{indicate-unused-lines} to a non-@code{nil} value.  The default
+@code{indicate-empty-lines} to a non-@code{nil} value.  The default
 value of this variable is controlled by the variable
-@code{default-indicate-unused-lines}; by setting that variable, you
+@code{default-indicate-empty-lines}; by setting that variable, you
 can enable or disable this feature for all new buffers.  (This feature
 currently doesn't work on character terminals.)
 
--- a/man/gnus.texi	Fri Apr 08 16:25:22 2005 +0000
+++ b/man/gnus.texi	Mon Apr 11 12:40:15 2005 +0000
@@ -15873,14 +15873,45 @@
 @acronym{RSS} has a quite regular and nice interface, and it's
 possible to get the information Gnus needs to keep groups updated.
 
+Note: you had better use Emacs which supports the @code{utf-8} coding
+system because @acronym{RSS} uses UTF-8 for encoding non-@acronym{ASCII}
+text by default.  It is also used by default for non-@acronym{ASCII}
+group names.
+
 @kindex G R (Summary)
-Use @kbd{G R} from the summary buffer to subscribe to a feed---you
-will be prompted for the location of the feed.
+Use @kbd{G R} from the summary buffer to subscribe to a feed---you will
+be prompted for the location, the title and the description of the feed.
+The title, which allows any characters, will be used for the group name
+and the name of the group data file.  The description can be omitted.
 
 An easy way to get started with @code{nnrss} is to say something like
 the following in the group buffer: @kbd{B nnrss RET RET y}, then
 subscribe to groups.
 
+The @code{nnrss} back end saves the group data file in
+@code{nnrss-directory} (see below) for each @code{nnrss} group.  File
+names containing non-@acronym{ASCII} characters will be encoded by the
+coding system specified with the @code{nnmail-pathname-coding-system}
+variable.  If it is @code{nil}, in Emacs the coding system defaults to
+the value of @code{default-file-name-coding-system}.  If you are using
+XEmacs and want to use non-@acronym{ASCII} group names, you should set
+the value for the @code{nnmail-pathname-coding-system} variable properly.
+
+@cindex OPML
+You can also use the following commands to import and export your
+subscriptions from a file in @acronym{OPML} format (Outline Processor
+Markup Language).
+
+@defun nnrss-opml-import file
+Prompt for an @acronym{OPML} file, and subscribe to each feed in the
+file.
+@end defun
+
+@defun nnrss-opml-export
+Write your current @acronym{RSS} subscriptions to a buffer in
+@acronym{OPML} format.
+@end defun
+
 The following @code{nnrss} variables can be altered:
 
 @table @code
@@ -15889,6 +15920,13 @@
 The directory where @code{nnrss} stores its files.  The default is
 @file{~/News/rss/}.
 
+@item nnrss-file-coding-system
+@vindex nnrss-file-coding-system
+The coding system used when reading and writing the @code{nnrss} groups
+data files.  The default is the value of
+@code{mm-universal-coding-system} (which defaults to @code{emacs-mule}
+in Emacs or @code{escape-quoted} in XEmacs).
+
 @item nnrss-use-local
 @vindex nnrss-use-local
 @findex nnrss-generate-download-script
--- a/man/rmail.texi	Fri Apr 08 16:25:22 2005 +0000
+++ b/man/rmail.texi	Mon Apr 11 12:40:15 2005 +0000
@@ -84,14 +84,16 @@
 @findex rmail-quit
 @kindex b @r{(Rmail)}
 @findex rmail-bury
-  You can exit Rmail with @kbd{q} (@code{rmail-quit}); this expunges and
-saves the Rmail file and then switches to another buffer.  But there is
-no need to ``exit'' formally.  If you switch from Rmail to editing in
-other buffers, and never happen to switch back, you have exited.  (The
-Rmail command @kbd{b}, @code{rmail-bury}, does this for you.)  Just make
-sure to save the Rmail file eventually (like any other file you have
-changed).  @kbd{C-x s} is a good enough way to do this
-(@pxref{Saving}).
+  You can exit Rmail with @kbd{q} (@code{rmail-quit}); this expunges
+and saves the Rmail file, then buries the Rmail buffer as well as its
+summary buffer, if present (@pxref{Rmail Summary}).  But there is no
+need to ``exit'' formally.  If you switch from Rmail to editing in
+other buffers, and never happen to switch back, you have exited.  Just
+make sure to save the Rmail file eventually (like any other file you
+have changed).  @kbd{C-x s} is a good enough way to do this
+(@pxref{Saving}).  The Rmail command @kbd{b}, @code{rmail-bury},
+buries the Rmail buffer and its summary buffer without expunging and
+saving the Rmail file.
 
 @node Rmail Scrolling
 @section Scrolling Within a Message
@@ -255,8 +257,8 @@
 messages already deleted, while @kbd{C-d} (@code{rmail-delete-backward})
 moves to the previous nondeleted message.  If there is no nondeleted
 message to move to in the specified direction, the message that was just
-deleted remains current.  A numeric argument to either command reverses
-the direction of motion after deletion.
+deleted remains current.  @kbd{d} with a numeric argument is
+equivalent to @kbd{C-d}.
 
 @vindex rmail-delete-message-hook
   Whenever Rmail deletes a message, it runs the hook
@@ -317,7 +319,7 @@
 or @file{/usr/mail/@var{username}}, depending on your operating system.
 
   To see what the default is on your system, use @kbd{C-h v
-rmail-primary-inbox @key{RET}}.  You can specify the inbox file(s) for
+rmail-primary-inbox-list @key{RET}}.  You can specify the inbox file(s) for
 any Rmail file with the command @code{set-rmail-inbox-list}; see
 @ref{Rmail Files}.
 
@@ -508,13 +510,14 @@
 the regular expression).
 
 @vindex rmail-delete-after-output
-  Copying a message gives the original copy of the message the
-@samp{filed} attribute, so that @samp{filed} appears in the mode line
-when such a message is current.  If you like to keep just a single copy
-of every mail message, set the variable @code{rmail-delete-after-output}
-to @code{t}; then the @kbd{o} and @kbd{C-o} commands delete the original
-message after copying it.  (You can undelete the original afterward if
-you wish.)
+  Copying a message with @kbd{o} or @kbd{C-o} gives the original copy
+of the message the @samp{filed} attribute, so that @samp{filed}
+appears in the mode line when such a message is current.  @kbd{w}
+gives it the @samp{stored} attribute.  If you like to keep just a
+single copy of every mail message, set the variable
+@code{rmail-delete-after-output} to @code{t}; then the @kbd{o},
+@kbd{C-o} and @kbd{w} commands delete the original message after
+copying it.  (You can undelete the original afterward if you wish.)
 
   Copying messages into files in system inbox format uses the header
 fields that are displayed in Rmail at the time.  Thus, if you use the
@@ -567,7 +570,8 @@
 @item C-M-p @var{labels} @key{RET}
 Move to the previous message that has one of the labels @var{labels}
 (@code{rmail-previous-labeled-message}).
-@item C-M-l @var{labels} @key{RET}
+@item l @var{labels} @key{RET}
+@itemx C-M-l @var{labels} @key{RET}
 Make a summary of all messages containing any of the labels @var{labels}
 (@code{rmail-summary-by-labels}).
 @end table
@@ -626,7 +630,9 @@
 removed by undeletion commands (@pxref{Rmail Deletion}).
 @item filed
 Means the message has been copied to some other file.  Assigned by the
-file output commands (@pxref{Rmail Files}).
+@kbd{o} and @kbd{C-o} file output commands (@pxref{Rmail Output}).
+@item stored
+Assigned by the @kbd{w} file output command (@pxref{Rmail Output}).
 @item answered
 Means you have mailed an answer to the message.  Assigned by the @kbd{r}
 command (@code{rmail-reply}).  @xref{Rmail Reply}.
@@ -912,6 +918,12 @@
 Move to the last line, and select its message.
 @item <
 Move to the first line, and select its message.
+@item j
+@itemx @key{RET}
+Select the message on the current line (ensuring that the RMAIL buffer
+appears on the screen).  With argument @var{n}, select message number
+@var{n} and move to its line in the summary buffer; this signals an
+error if the message is not listed in the summary buffer.
 @item M-s @var{pattern} @key{RET}
 Search through messages for @var{pattern} starting with the current
 message; select the message found, and move point in the summary buffer
@@ -1263,7 +1275,7 @@
 specify the user password, @var{host-or-file-name} is the name or IP
 address of the remote mail server to connect to; e.g.,
 @code{pop://smith:guessme@@remote.server.net}.
- 
+
 @item imap
 A remote mailbox to be accessed via IMAP4 protocol.  @var{User}
 specifies the remote user name to use, @var{pass} may be used to
@@ -1287,7 +1299,7 @@
 @code{nil}, Rmail searches for @code{movemail} in the directories
 listed in @code{rmail-movemail-search-path} and @code{exec-path}, then
 in @code{exec-directory}.
-  
+
 @node Remote Mailboxes
 @section Retrieving Mail from Remote Mailboxes
 @pindex movemail
@@ -1317,11 +1329,11 @@
 @samp{pop://@var{username}:@var{password}@@@var{hostname}}.  In this
 case, @var{password} takes preference over the one set by
 @code{rmail-remote-password}.  This is especially useful if you have
-several remote mailboxes with different passwords. 
+several remote mailboxes with different passwords.
 
   For backward compatibility Rmail also supports two alternative ways
 of specifying remote POP mailboxes.  Specifying inbox name in the form
-@samp{po:@var{username}:@var{hostname}} is equivalent to 
+@samp{po:@var{username}:@var{hostname}} is equivalent to
 @samp{pop://@var{username}@@@var{hostname}}.  Alternatively, you may set
 a ``file name'' of @samp{po:@var{username}} in the inbox list of an
 Rmail file.  @code{Movemail} will handle such a name by opening a
@@ -1333,7 +1345,7 @@
 supported only by the @code{mailutils movemail}.  To specify an IMAP
 mailbox in the inbox list, use the following mailbox @acronym{URL}:
 @samp{imap://@var{username}[:@var{password}]@@@var{hostname}}.  The
-@var{password} part is optional, as descrbed above.
+@var{password} part is optional, as described above.
 
 @vindex rmail-remote-password
 @vindex rmail-remote-password-required
@@ -1343,10 +1355,10 @@
 following algorithm to retrieve it:
 
 @enumerate
-@item 
+@item
 If the @var{password} is present in mailbox URL (see above), it is
 used.
-@item 
+@item
 If the variable @code{rmail-remote-password} is non-@code{nil}, its
 value is used.
 @item
--- a/man/xresources.texi	Fri Apr 08 16:25:22 2005 +0000
+++ b/man/xresources.texi	Mon Apr 11 12:40:15 2005 +0000
@@ -393,6 +393,19 @@
 @end example
 
 @noindent
+The Lucid menus can display multilingual text in your locale.  For more 
+information about fontsets see the man page for XCreateFontSet.  To enable
+multilingual menu text you specify a fontSet resource instead of the font
+resource.  If both font and fontSet resources are specified, the fontSet
+resource is used.  To specify
+@samp{-*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*} for both the popup and
+menu bar menus, write this:
+
+@example
+Emacs*fontSet:  -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*
+@end example
+
+@noindent
 Experience shows that on some systems you may need to add
 @samp{shell.}@: before the @samp{pane.menubar} or @samp{menu*}.  On
 some other systems, you must not add @samp{shell.}.
@@ -402,6 +415,8 @@
 @table @code
 @item font
 Font for menu item text.
+@item fontSet
+Fontset for menu item text.
 @item foreground
 Color of the foreground.
 @item background
--- a/src/ChangeLog	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/ChangeLog	Mon Apr 11 12:40:15 2005 +0000
@@ -1,3 +1,40 @@
+2005-04-10  Richard M. Stallman  <rms@gnu.org>
+
+	* emacs.c (standard_args): Rename --bare-bones to --quick.
+	Add -D aka --basic-display.
+
+	* buffer.c (Fmake_indirect_buffer): Clear out some local variables.
+
+2005-04-09  Richard M. Stallman  <rms@gnu.org>
+
+	* keymap.c (where_is_internal): Convert a string used as event type
+	into "(any string)".
+
+	* lread.c (Vloads_in_progress): Not static.
+
+	* fns.c (Vloads_in_progress): Add extern.
+	(Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil.
+
+2005-04-09  Thien-Thi Nguyen  <ttn@surf.glug.org>
+
+	* dispnew.c (mirror_line_dance): Avoid crash if W2 is null.
+
+2005-04-09  Lute Kamstra  <lute@gnu.org>
+
+	* print.c (PRINTPREPARE): Check if the marker PRINTCHARFUN is
+	within the accessible part of the buffer.
+
+2005-04-09  Kim F. Storm  <storm@cua.dk>
+
+	* lread.c (readevalloop): Add args START and END as region in
+	current buffer to read.  Callers changed.
+	When specified, narrow to this region only when reading,
+	not during eval.  Track next point to read from during eval.
+	Also restore point to "real" buffer position before eval.
+	(Feval_region): Don't save excursion and restriction here, and
+	don't narrow to region.  Just pass region to readevalloop.
+	Note: Point is now preserved even when PRINTFLAG is nil.
+
 2005-04-08  Kim F. Storm  <storm@cua.dk>
 
 	* xdisp.c (syms_of_xdisp): Init overlay-arrow-string to "=>".
@@ -30,8 +67,8 @@
 
 2005-04-01  Kenichi Handa  <handa@m17n.org>
 
-	* lisp.h (Vascii_upcase_table, Vascii_canon_table,
-	Vascii_eqv_table): Extern them.
+	* lisp.h (Vascii_upcase_table, Vascii_canon_table)
+	(Vascii_eqv_table): Extern them.
 
 	* casetab.c (set_case_table): If standard is nonzero, setup
 	Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table.
--- a/src/ChangeLog.6	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/ChangeLog.6	Mon Apr 11 12:40:15 2005 +0000
@@ -1079,7 +1079,7 @@
 	scroll_bar_up_arrow, scroll_bar_down_arrow.
 	(win32_scroll_bar_click): New enum constant.
 
-1996-05-03  Andrw Innes  <andrewi@harlequin.co.uk>
+1996-05-03  Andrew Innes  <andrewi@harlequin.co.uk>
 
 	* makefile.nt (SUBSYSTEM) [NTGUI]: Remove conditional.
 	(LINK_FLAGS): Explicitly set base address, and stack and heap sizes.
--- a/src/buffer.c	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/buffer.c	Mon Apr 11 12:40:15 2005 +0000
@@ -630,7 +630,21 @@
       XMARKER (b->zv_marker)->insertion_type = 1;
     }
   else
-    clone_per_buffer_values (b->base_buffer, b);
+    {
+      struct buffer *old_b = current_buffer;
+
+      clone_per_buffer_values (b->base_buffer, b);
+      b->filename = Qnil;
+      b->file_truename = Qnil;
+      b->display_count = make_number (0);
+      b->backed_up = Qnil;
+      b->auto_save_file_name = Qnil;
+      set_buffer_internal_1 (b);
+      Fset (intern ("buffer-save-without-query"), Qnil);
+      Fset (intern ("buffer-file-number"), Qnil);
+      Fset (intern ("buffer-stale-function"), Qnil);
+      set_buffer_internal_1 (old_b);
+    }
 
   return buf;
 }
@@ -931,7 +945,7 @@
 }
 
 /* Return an alist of the Lisp-level buffer-local bindings of
-   buffer BUF.  That is, do't include  the variables maintained
+   buffer BUF.  That is, don't include the variables maintained
    in special slots in the buffer object.  */
 
 static Lisp_Object
--- a/src/dispnew.c	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/dispnew.c	Mon Apr 11 12:40:15 2005 +0000
@@ -3154,14 +3154,20 @@
 		  int m2_from;
 
 		  w2 = frame_row_to_window (root, frame_from);
-		  m2 = w2->current_matrix;
-		  m2_from = frame_from - m2->matrix_y;
-		  copy_row_except_pointers (m->rows + window_to,
-					    m2->rows + m2_from);
-
-		  /* If frame line is empty, window line is empty, too.  */
-		  if (!retained_p[copy_from[i]])
-		    m->rows[window_to].enabled_p = 0;
+		  /* ttn@surf.glug.org: when enabling menu bar using `emacs
+		     -nw', FROM_FRAME sometimes has no associated window.
+		     This check avoids a segfault if W2 is null.  */
+		  if (w2)
+		    {
+		      m2 = w2->current_matrix;
+		      m2_from = frame_from - m2->matrix_y;
+		      copy_row_except_pointers (m->rows + window_to,
+						m2->rows + m2_from);
+
+		      /* If frame line is empty, window line is empty, too.  */
+		      if (!retained_p[copy_from[i]])
+			m->rows[window_to].enabled_p = 0;
+		    }
 		  sync_p = 1;
 		}
 	      else if (from_inside_window_p)
--- a/src/emacs.c	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/emacs.c	Mon Apr 11 12:40:15 2005 +0000
@@ -1806,8 +1806,8 @@
   { "-d", "--display", 60, 1 },
   { "-display", 0, 60, 1 },
   /* Now for the options handled in startup.el.  */
-  { "-Q", "--bare-bones", 55, 0 },
-  { "-bare-bones", 0, 55, 0 },
+  { "-Q", "--quick", 55, 0 },
+  { "-quick", 0, 55, 0 },
   { "-q", "--no-init-file", 50, 0 },
   { "-no-init-file", 0, 50, 0 },
   { "-no-site-file", "--no-site-file", 40, 0 },
@@ -1818,6 +1818,8 @@
   { "-i", "--icon-type", 15, 0 },
   { "-itype", 0, 15, 0 },
   { "-iconic", "--iconic", 15, 0 },
+  { "-D", "--basic-display", 12, 0},
+  { "--basic-display", 0, 12, 0},
   { "-bg", "--background-color", 10, 1 },
   { "-background", 0, 10, 1 },
   { "-fg", "--foreground-color", 10, 1 },
--- a/src/fns.c	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/fns.c	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 /* Random utility Lisp functions.
-   Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 98, 99, 2000, 2001, 02, 03, 2004
-   Free Software Foundation, Inc.
+   Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2000,
+     2001, 2002, 2003, 2004, 2005  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -66,6 +66,7 @@
 extern int minibuffer_auto_raise;
 extern Lisp_Object minibuf_window;
 extern Lisp_Object Vlocale_coding_system;
+extern Lisp_Object Vloads_in_progress;
 
 Lisp_Object Qstring_lessp, Qprovide, Qrequire;
 Lisp_Object Qyes_or_no_p_history;
@@ -1147,7 +1148,18 @@
 Otherwise it is a newly created string, with no text properties.
 If STRING is unibyte and contains an individual 8-bit byte (i.e. not
 part of a multibyte form), it is converted to the corresponding
-multibyte character of charset `eight-bit-control' or `eight-bit-graphic'.  */)
+multibyte character of charset `eight-bit-control' or `eight-bit-graphic'.
+Beware, this often doesn't really do what you think it does.
+It is similar to (decode-coding-string STRING 'emacs-mule-unix).
+If you're not sure, whether to use `string-as-multibyte' or
+`string-to-multibyte', use `string-to-multibyte'.  Beware:
+   (aref (string-as-multibyte "\201") 0) -> 129 (aka ?\201)
+   (aref (string-as-multibyte "\300") 0) -> 192 (aka ?\300)
+   (aref (string-as-multibyte "\300\201") 0) -> 192 (aka ?\300)
+   (aref (string-as-multibyte "\300\201") 1) -> 129 (aka ?\201)
+but
+   (aref (string-as-multibyte "\201\300") 0) -> 2240
+   (aref (string-as-multibyte "\201\300") 1) -> <error>  */)
      (string)
      Lisp_Object string;
 {
@@ -1181,7 +1193,8 @@
 Characters 0200 through 0237 are converted to eight-bit-control
 characters of the same character code.  Characters 0240 through 0377
 are converted to eight-bit-graphic characters of the same character
-codes.  */)
+codes.
+This is similar to (decode-coding-string STRING 'binary)  */)
      (string)
      Lisp_Object string;
 {
@@ -3444,9 +3457,15 @@
   CHECK_SYMBOL (feature);
 
   /* Record the presence of `require' in this file
-     even if the feature specified is already loaded.  */
-  LOADHIST_ATTACH (Fcons (Qrequire, feature));
-
+     even if the feature specified is already loaded.
+     But not more than once in any file,
+     and not when we aren't loading a file.  */
+  if (! NILP (Vloads_in_progress))
+    {
+      tem = Fcons (Qrequire, feature);
+      if (NILP (Fmember (tem, Vcurrent_load_list)))
+	LOADHIST_ATTACH (tem);
+    }
   tem = Fmemq (feature, Vfeatures);
 
   if (NILP (tem))
--- a/src/keyboard.c	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/keyboard.c	Mon Apr 11 12:40:15 2005 +0000
@@ -2252,12 +2252,16 @@
   return c;
 }
 
-/* Display help echo in the echo area.
-
-   HELP a string means display that string, HELP nil means clear the
-   help echo.  If HELP is a function, call it with OBJECT and POS as
-   arguments; the function should return a help string or nil for
-   none.  For all other types of HELP evaluate it to obtain a string.
+/* Display the help-echo property of the character after the mouse pointer.
+   Either show it in the echo area, or call show-help-function to display
+   it by other means (maybe in a tooltip).
+
+   If HELP is nil, that means clear the previous help echo.
+
+   If HELP is a string, display that string.  If HELP is a function,
+   call it with OBJECT and POS as arguments; the function should
+   return a help string or nil for none.  For all other types of HELP,
+   evaluate it to obtain a string.
 
    WINDOW is the window in which the help was generated, if any.
    It is nil if not in a window.
--- a/src/keymap.c	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/keymap.c	Mon Apr 11 12:40:15 2005 +0000
@@ -765,7 +765,9 @@
    remove that.  Also remove a menu help string as second element.
 
    If AUTOLOAD is nonzero, load autoloadable keymaps
-   that are referred to with indirection.  */
+   that are referred to with indirection.
+
+   This can GC because menu_item_eval_property calls Feval.  */
 
 Lisp_Object
 get_keyelt (object, autoload)
@@ -2555,6 +2557,19 @@
 		continue;
 
 	    record_sequence:
+	      /* Don't annoy user with strings from a menu such as
+		 Select Paste.  Change them all to "(any string)",
+		 so that there seems to be only one menu item
+		 to report. */
+	      if (! NILP (sequence))
+		{
+		  Lisp_Object tem;
+		  tem = Faref (sequence, make_number (XVECTOR (sequence)->size - 1));
+		  if (STRINGP (tem))
+		    Faset (sequence, make_number (XVECTOR (sequence)->size - 1),
+			   build_string ("(any string)"));
+		}
+
 	      /* It is a true unshadowed match.  Record it, unless it's already
 		 been seen (as could happen when inheriting keymaps).  */
 	      if (NILP (Fmember (sequence, found)))
@@ -2732,7 +2747,7 @@
 }
 
 
-/* This function cannot GC.  */
+/* This function can GC because get_keyelt can.  */
 
 static Lisp_Object
 where_is_internal_1 (binding, key, definition, noindirect, this, last,
--- a/src/lread.c	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/lread.c	Mon Apr 11 12:40:15 2005 +0000
@@ -194,7 +194,7 @@
 /* A list of file names for files being loaded in Fload.  Used to
    check for recursive loads.  */
 
-static Lisp_Object Vloads_in_progress;
+Lisp_Object Vloads_in_progress;
 
 /* Non-zero means load dangerous compiled Lisp files.  */
 
@@ -207,6 +207,7 @@
 static void to_multibyte P_ ((char **, char **, int *));
 static void readevalloop P_ ((Lisp_Object, FILE*, Lisp_Object,
 			      Lisp_Object (*) (), int,
+			      Lisp_Object, Lisp_Object,
 			      Lisp_Object, Lisp_Object));
 static Lisp_Object load_unwind P_ ((Lisp_Object));
 static Lisp_Object load_descriptor_unwind P_ ((Lisp_Object));
@@ -913,7 +914,8 @@
   load_descriptor_list
     = Fcons (make_number (fileno (stream)), load_descriptor_list);
   load_in_progress++;
-  readevalloop (Qget_file_char, stream, file, Feval, 0, Qnil, Qnil);
+  readevalloop (Qget_file_char, stream, file, Feval,
+		0, Qnil, Qnil, Qnil, Qnil);
   unbind_to (count, Qnil);
 
   /* Run any load-hooks for this file.  */
@@ -1291,16 +1293,19 @@
 
 /* UNIBYTE specifies how to set load_convert_to_unibyte
    for this invocation.
-   READFUN, if non-nil, is used instead of `read'.  */
+   READFUN, if non-nil, is used instead of `read'.
+   START, END is region in current buffer (from eval-region).  */
 
 static void
-readevalloop (readcharfun, stream, sourcename, evalfun, printflag, unibyte, readfun)
+readevalloop (readcharfun, stream, sourcename, evalfun,
+	      printflag, unibyte, readfun, start, end)
      Lisp_Object readcharfun;
      FILE *stream;
      Lisp_Object sourcename;
      Lisp_Object (*evalfun) ();
      int printflag;
      Lisp_Object unibyte, readfun;
+     Lisp_Object start, end;
 {
   register int c;
   register Lisp_Object val;
@@ -1328,28 +1333,41 @@
   continue_reading_p = 1;
   while (continue_reading_p)
     {
+      int count1 = SPECPDL_INDEX ();
+
       if (b != 0 && NILP (b->name))
 	error ("Reading from killed buffer");
 
+      if (!NILP (start))
+	{
+	  record_unwind_protect (save_excursion_restore, save_excursion_save ());
+	  record_unwind_protect (save_restriction_restore, save_restriction_save ());
+	  Fgoto_char (start);
+	  Fnarrow_to_region (make_number (BEGV), end);
+	}
+
       instream = stream;
+    read_next:
       c = READCHAR;
       if (c == ';')
 	{
 	  while ((c = READCHAR) != '\n' && c != -1);
-	  continue;
+	  goto read_next;
 	}
-      if (c < 0) break;
+      if (c < 0)
+	{
+	  unbind_to (count1, Qnil);
+	  break;
+	}
 
       /* Ignore whitespace here, so we can detect eof.  */
       if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r')
-	continue;
+	goto read_next;
 
       if (!NILP (Vpurify_flag) && c == '(')
 	{
-	  int count1 = SPECPDL_INDEX ();
 	  record_unwind_protect (unreadpure, Qnil);
 	  val = read_list (-1, readcharfun);
-	  unbind_to (count1, Qnil);
 	}
       else
 	{
@@ -1375,6 +1393,10 @@
 	    val = read_internal_start (readcharfun, Qnil, Qnil);
 	}
 
+      if (!NILP (start) && continue_reading_p)
+	start = Fpoint_marker ();
+      unbind_to (count1, Qnil);
+
       val = (*evalfun) (val);
 
       if (printflag)
@@ -1433,7 +1455,8 @@
   specbind (Qstandard_output, tem);
   record_unwind_protect (save_excursion_restore, save_excursion_save ());
   BUF_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf)));
-  readevalloop (buf, 0, filename, Feval, !NILP (printflag), unibyte, Qnil);
+  readevalloop (buf, 0, filename, Feval,
+		!NILP (printflag), unibyte, Qnil, Qnil, Qnil);
   unbind_to (count, Qnil);
 
   return Qnil;
@@ -1465,15 +1488,10 @@
     tem = printflag;
   specbind (Qstandard_output, tem);
 
-  if (NILP (printflag))
-    record_unwind_protect (save_excursion_restore, save_excursion_save ());
-  record_unwind_protect (save_restriction_restore, save_restriction_save ());
-
-  /* This both uses start and checks its type.  */
-  Fgoto_char (start);
-  Fnarrow_to_region (make_number (BEGV), end);
+  /* readevalloop calls functions which check the type of start and end.  */
   readevalloop (cbuf, 0, XBUFFER (cbuf)->filename, Feval,
-		!NILP (printflag), Qnil, read_function);
+		!NILP (printflag), Qnil, read_function,
+		start, end);
 
   return unbind_to (count, Qnil);
 }
--- a/src/print.c	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/print.c	Mon Apr 11 12:40:15 2005 +0000
@@ -1,6 +1,6 @@
 /* Lisp object printing and output streams.
-   Copyright (C) 1985, 86, 88, 93, 94, 95, 97, 98, 1999, 2000, 01, 03, 2004
-	Free Software Foundation, Inc.
+   Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
+     2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -211,13 +211,17 @@
      }									\
    if (MARKERP (printcharfun))						\
      {									\
-       if (!(XMARKER (original)->buffer))				\
+       EMACS_INT marker_pos;						\
+       if (!(XMARKER (printcharfun)->buffer))				\
          error ("Marker does not point anywhere");			\
-       if (XMARKER (original)->buffer != current_buffer)		\
-         set_buffer_internal (XMARKER (original)->buffer);		\
+       if (XMARKER (printcharfun)->buffer != current_buffer)		\
+         set_buffer_internal (XMARKER (printcharfun)->buffer);		\
+       marker_pos = marker_position (printcharfun);			\
+       if (marker_pos < BEGV || marker_pos > ZV)			\
+	 error ("Marker is outside the accessible part of the buffer"); \
        old_point = PT;							\
        old_point_byte = PT_BYTE;					\
-       SET_PT_BOTH (marker_position (printcharfun),			\
+       SET_PT_BOTH (marker_pos,						\
 		    marker_byte_position (printcharfun));		\
        start_point = PT;						\
        start_point_byte = PT_BYTE;					\
--- a/src/window.c	Fri Apr 08 16:25:22 2005 +0000
+++ b/src/window.c	Mon Apr 11 12:40:15 2005 +0000
@@ -3173,6 +3173,9 @@
   if (EQ (window, selected_window))
     return window;
 
+  /* Store the current buffer's actual point into the
+     old selected window.  It belongs to that window,
+     and when the window is not selected, must be in the window.  */
   if (!NILP (selected_window))
     {
       ow = XWINDOW (selected_window);
@@ -5638,8 +5641,9 @@
 #endif
 #endif
 
-      /* "Swap out" point from the selected window
-	 into its buffer.  We do this now, before
+      /* "Swap out" point from the selected window's buffer
+	 into the window itself.  (Normally the pointm of the selected
+	 window holds garbage.)  We do this now, before
 	 restoring the window contents, and prevent it from
 	 being done later on when we select a new window.  */
       if (! NILP (XWINDOW (selected_window)->buffer))
@@ -5789,10 +5793,11 @@
       FRAME_ROOT_WINDOW (f) = data->root_window;
       /* Prevent "swapping out point" in the old selected window
 	 using the buffer that has been restored into it.
-	 Use the point value from the beginning of this function
-	 since unshow_buffer (called from delete_all_subwindows)
-	 could have altered it.  */
+	 We already swapped out point that from that window's old buffer.  */
       selected_window = Qnil;
+
+      /* Arrange *not* to restore point in the buffer that was
+	 current when the window configuration was saved.  */
       if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer))
 	set_marker_restricted (XWINDOW (data->current_window)->pointm,
 			       make_number (old_point),