changeset 65342:c71b1b2d2d04

Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-530 Merge from gnus--rel--5.10 Patches applied: * gnus--rel--5.10 (patch 106-111) - Merge from emacs--cvs-trunk--0 - Update from CVS 2005-09-05 Reiner Steib <Reiner.Steib@gmx.de> * lisp/gnus/message.el (message-tab-body-function): Fixed mismatched custom type. * lisp/gnus/gnus.el (gnus-group-change-level-function): Ditto. * lisp/gnus/gnus-msg.el (gnus-outgoing-message-group): Ditto. * lisp/gnus/gnus-art.el (gnus-signature-limit) (gnus-article-mime-part-function): Ditto. 2005-09-04 Reiner Steib <Reiner.Steib@gmx.de> * lisp/gnus/nnweb.el (nnweb-type-definition, nnweb-google-wash-article): Make fetching article by MID work again for Google Groups. Added FIXME concerning gnus-group-make-web-group. * lisp/gnus/mml-smime.el (mml-smime-sign-query, mml-smime-get-dns-cert): Don't depend on Gnus by using mail-extract-address-components if gnus-extract-address-components is not bound. * lisp/gnus/gnus.el (gnus-user-agent): Use list of symbols instead of symbols. Display full version number for (S)XEmacs. Optionally display (S)XEmacs codename. * lisp/gnus/gnus-util.el (gnus-emacs-version): Update for new `gnus-user-agent'. * lisp/gnus/gnus-msg.el (gnus-extended-version): Make it possible to omit Gnus version. 2005-09-02 Hrvoje Niksic <hniksic@xemacs.org> * lisp/gnus/mm-encode.el (mm-encode-content-transfer-encoding): Likewise when encoding. * lisp/gnus/mm-bodies.el (mm-decode-content-transfer-encoding): De-canonicalize CRLF for all text content types, not just text/plain. 2005-09-02 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/gnus-sum.el (gnus-thread-hide-subtree): Doc fix. * lisp/gnus/gnus-msg.el (gnus-inews-insert-gcc): Fix the mistake of using list, not listp. 2005-08-29 Romain Francoise <romain@orebokech.com> * lisp/gnus/gnus-fun.el (gnus-convert-image-to-face-command): Fix typo in docstring. (gnus-face-from-file): Likewise. 2005-08-31 Juanma Barranquero <lekktu@gmail.com> * lisp/gnus/gnus-art.el (w3m-minor-mode-map): * lisp/gnus/gnus-spec.el (gnus-newsrc-file-version): * lisp/gnus/gnus-util.el (nnmail-active-file-coding-system) (gnus-original-article-buffer, gnus-user-agent): * lisp/gnus/gnus.el (gnus-ham-process-destinations) (gnus-parameter-ham-marks-alist) (gnus-parameter-spam-marks-alist, gnus-spam-autodetect) (gnus-spam-autodetect-methods, gnus-spam-newsgroup-contents) (gnus-spam-process-destinations, gnus-spam-process-newsgroups): * lisp/gnus/mm-decode.el (gnus-current-window-configuration): * lisp/gnus/mm-extern.el (gnus-article-mime-handles): * lisp/gnus/mm-url.el (url-current-object, url-package-name) (url-package-version): * lisp/gnus/mm-view.el (gnus-article-mime-handles, gnus-newsgroup-charset) (smime-keys, w3m-cid-retrieve-function-alist) (w3m-current-buffer, w3m-display-inline-images) (w3m-minor-mode-map): * lisp/gnus/mml-smime.el (gnus-extract-address-components): * lisp/gnus/mml.el (gnus-article-mime-handles, gnus-mouse-2) (gnus-newsrc-hashtb, message-default-charset) (message-deletable-headers, message-options) (message-posting-charset, message-required-mail-headers) (message-required-news-headers): * lisp/gnus/mml1991.el (mc-pgp-always-sign): * lisp/gnus/mml2015.el (mc-pgp-always-sign): * lisp/gnus/nnheader.el (nnmail-extra-headers): * lisp/gnus/rfc1843.el (gnus-decode-encoded-word-function) (gnus-decode-header-function, gnus-newsgroup-name): * lisp/gnus/spam-stat.el (gnus-original-article-buffer): Add defvars.
author Miles Bader <miles@gnu.org>
date Mon, 05 Sep 2005 23:58:09 +0000
parents 6990826a916f
children d82393ad9b2d a3716f7538f2
files lisp/gnus/ChangeLog lisp/gnus/gnus-art.el lisp/gnus/gnus-fun.el lisp/gnus/gnus-msg.el lisp/gnus/gnus-sum.el lisp/gnus/gnus-util.el lisp/gnus/gnus.el lisp/gnus/message.el lisp/gnus/mm-bodies.el lisp/gnus/mm-encode.el lisp/gnus/mml-smime.el lisp/gnus/nnweb.el man/gnus.texi
diffstat 13 files changed, 218 insertions(+), 101 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/ChangeLog	Mon Sep 05 23:58:09 2005 +0000
@@ -1,3 +1,89 @@
+2005-09-05  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* message.el (message-tab-body-function): Fixed mismatched custom
+	type.
+
+	* gnus.el (gnus-group-change-level-function): Ditto.
+
+	* gnus-msg.el (gnus-outgoing-message-group):  Ditto.
+
+	* gnus-art.el (gnus-signature-limit)
+	(gnus-article-mime-part-function): Ditto.
+
+2005-09-04  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* nnweb.el (nnweb-type-definition, nnweb-google-wash-article):
+	Make fetching article by MID work again for Google Groups.  Added
+	FIXME concerning gnus-group-make-web-group.
+
+	* mml-smime.el (mml-smime-sign-query, mml-smime-get-dns-cert):
+	Don't depend on Gnus by using mail-extract-address-components if
+	gnus-extract-address-components is not bound.
+
+	* gnus.el (gnus-user-agent): Use list of symbols instead of
+	symbols.  Display full version number for (S)XEmacs.  Optionally
+	display (S)XEmacs codename.
+
+	* gnus-util.el (gnus-emacs-version): Update for new
+	`gnus-user-agent'.
+
+	* gnus-msg.el (gnus-extended-version): Make it possible to omit
+	Gnus version.
+
+2005-09-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+	* mm-encode.el (mm-encode-content-transfer-encoding): Likewise
+	when encoding.
+
+	* mm-bodies.el (mm-decode-content-transfer-encoding):
+	De-canonicalize CRLF for all text content types, not just
+	text/plain.
+
+2005-09-02  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus-sum.el (gnus-thread-hide-subtree): Doc fix.
+
+	* gnus-msg.el (gnus-inews-insert-gcc): Fix the mistake of using
+	list, not listp.
+
+2005-08-29  Romain Francoise  <romain@orebokech.com>
+
+	* gnus-fun.el (gnus-convert-image-to-face-command): Fix typo in
+	docstring.
+	(gnus-face-from-file): Likewise.
+
+2005-08-31  Juanma Barranquero  <lekktu@gmail.com>
+
+	* gnus-art.el (w3m-minor-mode-map):
+	* gnus-spec.el (gnus-newsrc-file-version):
+	* gnus-util.el (nnmail-active-file-coding-system)
+	(gnus-original-article-buffer, gnus-user-agent):
+	* gnus.el (gnus-ham-process-destinations)
+	(gnus-parameter-ham-marks-alist)
+	(gnus-parameter-spam-marks-alist, gnus-spam-autodetect)
+	(gnus-spam-autodetect-methods, gnus-spam-newsgroup-contents)
+	(gnus-spam-process-destinations, gnus-spam-process-newsgroups):
+	* mm-decode.el (gnus-current-window-configuration):
+	* mm-extern.el (gnus-article-mime-handles):
+	* mm-url.el (url-current-object, url-package-name)
+	(url-package-version):
+	* mm-view.el (gnus-article-mime-handles, gnus-newsgroup-charset)
+	(smime-keys, w3m-cid-retrieve-function-alist)
+	(w3m-current-buffer, w3m-display-inline-images)
+	(w3m-minor-mode-map):
+	* mml-smime.el (gnus-extract-address-components):
+	* mml.el (gnus-article-mime-handles, gnus-mouse-2)
+	(gnus-newsrc-hashtb, message-default-charset)
+	(message-deletable-headers, message-options)
+	(message-posting-charset, message-required-mail-headers)
+	(message-required-news-headers):
+	* mml1991.el (mc-pgp-always-sign):
+	* mml2015.el (mc-pgp-always-sign):
+	* nnheader.el (nnmail-extra-headers):
+	* rfc1843.el (gnus-decode-encoded-word-function)
+	(gnus-decode-header-function, gnus-newsgroup-name):
+	* spam-stat.el (gnus-original-article-buffer): Add defvars.
+
 2005-08-31  Juanma Barranquero  <lekktu@gmail.com>
 
 	* gnus-art.el (w3m-minor-mode-map):
--- a/lisp/gnus/gnus-art.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/gnus-art.el	Mon Sep 05 23:58:09 2005 +0000
@@ -236,7 +236,8 @@
 will be called without any parameters, and if it returns nil, there is
 no signature in the buffer.  If it is a string, it will be used as a
 regexp.  If it matches, the text in question is not a signature."
-  :type '(choice (integer :value 200)
+  :type '(choice (const nil)
+		 (integer :value 200)
 		 (number :value 4.0)
 		 (function :value fun)
 		 (regexp :value ".*"))
@@ -869,7 +870,8 @@
 This is meant for people who want to do something automatic based
 on parts -- for instance, adding Vcard info to a database."
   :group 'gnus-article-mime
-  :type 'function)
+  :type '(choice (const nil)
+		 function))
 
 (defcustom gnus-mime-multipart-functions nil
   "An alist of MIME types to functions to display them."
--- a/lisp/gnus/gnus-fun.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/gnus-fun.el	Mon Sep 05 23:58:09 2005 +0000
@@ -54,7 +54,7 @@
   :type 'string)
 
 (defcustom gnus-convert-image-to-face-command "djpeg %s | ppmnorm | pnmscale -width 48 -height 48 | ppmquant %d | pnmtopng"
-  "Command for converting an image to an Face.
+  "Command for converting an image to a Face.
 By default it takes a JPEG filename and output the Face header data
 on stdout."
   :version "22.1"
@@ -110,7 +110,7 @@
 
 ;;;###autoload
 (defun gnus-face-from-file (file)
-  "Return an Face header based on an image file."
+  "Return a Face header based on an image file."
   (interactive "fImage file name (by default JPEG): ")
   (when (file-exists-p file)
     (let ((done nil)
--- a/lisp/gnus/gnus-msg.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/gnus-msg.el	Mon Sep 05 23:58:09 2005 +0000
@@ -67,8 +67,10 @@
 current newsgroup name and then returns a suitable group name (or list
 of names)."
   :group 'gnus-message
-  :type '(choice (string :tag "Group")
-		 (function)))
+  :type '(choice (const nil)
+		 (function)
+		 (string :tag "Group")
+		 (repeat :tag "List of groups" (string :tag "Group"))))
 
 (defcustom gnus-mailing-list-groups nil
   "*If non-nil a regexp matching groups that are really mailing lists.
@@ -1031,17 +1033,18 @@
   "Stringified Gnus version and Emacs version.
 See the variable `gnus-user-agent'."
   (interactive)
-  (let* ((float-output-format nil)
-	 (gnus-v
-	  (concat "Gnus/"
-		  (prin1-to-string (gnus-continuum-version gnus-version) t)
-		  " (" gnus-version ")"))
-	 (emacs-v (gnus-emacs-version)))
-    (if (stringp gnus-user-agent)
-	gnus-user-agent
-      (concat gnus-v
-	      (when emacs-v
-		(concat " " emacs-v))))))
+  (if (stringp gnus-user-agent)
+      gnus-user-agent
+    ;; `gnus-user-agent' is a list:
+    (let* ((float-output-format nil)
+	   (gnus-v
+	    (when (memq 'gnus gnus-user-agent)
+	      (concat "Gnus/"
+		      (prin1-to-string (gnus-continuum-version gnus-version) t)
+		      " (" gnus-version ")")))
+	   (emacs-v (gnus-emacs-version)))
+      (concat gnus-v (when (and gnus-v emacs-v) " ")
+	      emacs-v))))
 
 
 ;;;
@@ -1661,7 +1664,7 @@
 	     (gcc (cond
 		   ((functionp group)
 		    (funcall group))
-		   ((or (stringp group) (list group))
+		   ((or (stringp group) (listp group))
 		    group))))
 	(when gcc
 	  (insert "Gcc: "
--- a/lisp/gnus/gnus-sum.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/gnus-sum.el	Mon Sep 05 23:58:09 2005 +0000
@@ -257,8 +257,7 @@
   "*If non-nil, hide all threads initially.
 This can be a predicate specifier which says which threads to hide.
 If threads are hidden, you have to run the command
-`gnus-summary-show-thread' by hand or use `gnus-select-article-hook'
-to expose hidden threads."
+`gnus-summary-show-thread' by hand or select an article."
   :group 'gnus-thread
   :type '(radio (sexp :format "Non-nil\n"
 		      :match (lambda (widget value)
--- a/lisp/gnus/gnus-util.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/gnus-util.el	Mon Sep 05 23:58:09 2005 +0000
@@ -1,7 +1,7 @@
 ;;; gnus-util.el --- utility functions for Gnus
 
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;;   2005 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
@@ -1517,41 +1517,48 @@
       (nconc (nreverse res) list1 list2))))
 
 (eval-when-compile
-  (defvar xemacs-codename))
+  (defvar xemacs-codename)
+  (defvar sxemacs-codename)
+  (defvar emacs-program-version))
 
 (defun gnus-emacs-version ()
   "Stringified Emacs version."
-  (let ((system-v
-	 (cond
-	  ((eq gnus-user-agent 'emacs-gnus-config)
-	   system-configuration)
-	  ((eq gnus-user-agent 'emacs-gnus-type)
-	   (symbol-name system-type))
-	  (t nil))))
+  (let* ((lst (if (listp gnus-user-agent)
+		  gnus-user-agent
+		'(gnus emacs type)))
+	 (system-v (cond ((memq 'config lst)
+			  system-configuration)
+			 ((memq 'type lst)
+			  (symbol-name system-type))
+			 (t nil)))
+	 codename emacsname)
+    (cond ((featurep 'sxemacs)
+	   (setq emacsname "SXEmacs"
+		 codename sxemacs-codename))
+	  ((featurep 'xemacs)
+	   (setq emacsname "XEmacs"
+		 codename xemacs-codename))
+	  (t
+	   (setq emacsname "Emacs")))
     (cond
-     ((eq gnus-user-agent 'gnus)
+     ((not (memq 'emacs lst))
       nil)
      ((string-match "^\\(\\([.0-9]+\\)*\\)\\.[0-9]+$" emacs-version)
+      ;; Emacs:
       (concat "Emacs/" (match-string 1 emacs-version)
 	      (if system-v
 		  (concat " (" system-v ")")
 		"")))
-     ((string-match
-       "\\([A-Z]*[Mm][Aa][Cc][Ss]\\)[^(]*\\(\\((beta.*)\\|'\\)\\)?"
-       emacs-version)
-      (concat
-       (match-string 1 emacs-version)
-       (format "/%d.%d" emacs-major-version emacs-minor-version)
-       (if (match-beginning 3)
-	   (match-string 3 emacs-version)
-	 "")
-       (if (boundp 'xemacs-codename)
-	   (concat
-	    " (" xemacs-codename
-	    (if system-v
-		(concat ", " system-v ")")
+     ((or (featurep 'sxemacs) (featurep 'xemacs))
+      ;; XEmacs or SXEmacs:
+      (concat emacsname "/" emacs-program-version
+	      " ("
+	      (when (and (memq 'codename lst)
+			 codename)
+		(concat codename
+			(when system-v ", ")))
+	      (when system-v system-v)
 	      ")"))
-	 "")))
      (t emacs-version))))
 
 (defun gnus-rename-file (old-path new-path &optional trim)
--- a/lisp/gnus/gnus.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/gnus.el	Mon Sep 05 23:58:09 2005 +0000
@@ -2343,7 +2343,8 @@
   "Function run when a group level is changed.
 It is called with three parameters -- GROUP, LEVEL and OLDLEVEL."
   :group 'gnus-group-levels
-  :type 'function)
+  :type '(choice (const nil)
+		 function))
 
 ;;; Face thingies.
 
@@ -2472,24 +2473,45 @@
 			 (symbol :tag "Parameter")
 			 (sexp :tag "Value")))))
 
-(defcustom gnus-user-agent 'emacs-gnus-type
+(defcustom gnus-user-agent '(emacs gnus type)
   "Which information should be exposed in the User-Agent header.
 
-It can be one of the symbols `gnus' \(show only Gnus version\), `emacs-gnus'
-\(show only Emacs and Gnus versions\), `emacs-gnus-config' \(same as
-`emacs-gnus' plus system configuration\), `emacs-gnus-type' \(same as
-`emacs-gnus' plus system type\) or a custom string.  If you set it to a
-string, be sure to use a valid format, see RFC 2616."
+Can be a list of symbols or a string.  Valid symbols are `gnus'
+\(show Gnus version\) and `emacs' \(show Emacs version\).  In
+addition to the Emacs version, you can add `codename' \(show
+\(S\)XEmacs codename\) or either `config' \(show system
+configuration\) or `type' \(show system type\).  If you set it to
+a string, be sure to use a valid format, see RFC 2616."
+
   :version "22.1"
   :group 'gnus-message
-  :type '(choice
-	  (item :tag "Show Gnus and Emacs versions and system type"
-		emacs-gnus-type)
-	  (item :tag "Show Gnus and Emacs versions and system configuration"
-		emacs-gnus-config)
-	  (item :tag "Show Gnus and Emacs versions" emacs-gnus)
-	  (item :tag "Show only Gnus version" gnus)
-	  (string :tag "Other")))
+  :type '(choice (list (set :inline t
+			    (const gnus  :tag "Gnus version")
+			    (const emacs :tag "Emacs version")
+			    (choice :tag "system"
+				    (const type   :tag "system type")
+				    (const config :tag "system configuration"))
+			    (const codename :tag "Emacs codename")))
+		 (string)))
+
+;; Convert old (No Gnus < 2005-01-10, v5-10 < 2005-09-05) symbol type values:
+(when (symbolp gnus-user-agent)
+  (setq gnus-user-agent
+	(cond ((eq gnus-user-agent 'emacs-gnus-config)
+	       '(emacs gnus config))
+	      ((eq gnus-user-agent 'emacs-gnus-type)
+	       '(emacs gnus type))
+	      ((eq gnus-user-agent 'emacs-gnus)
+	       '(emacs gnus))
+	      ((eq gnus-user-agent 'gnus)
+	       '(gnus))
+	      (t gnus-user-agent)))
+  (gnus-message 1 "Converted `gnus-user-agent' to `%s'." gnus-user-agent)
+  (sit-for 1)
+  (if (get 'gnus-user-agent 'saved-value)
+      (customize-save-variable 'gnus-user-agent gnus-user-agent)
+    (gnus-message 1 "Edit your init file to make this change permanent.")
+    (sit-for 2)))
 
 
 ;;; Internal variables
--- a/lisp/gnus/message.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/message.el	Mon Sep 05 23:58:09 2005 +0000
@@ -6631,7 +6631,8 @@
   :version "22.1"
   :group 'message
   :link '(custom-manual "(message)Various Commands")
-  :type 'function)
+  :type '(choice (const nil)
+		 function))
 
 (defun message-tab ()
   "Complete names according to `message-completion-alist'.
--- a/lisp/gnus/mm-bodies.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/mm-bodies.el	Mon Sep 05 23:58:09 2005 +0000
@@ -228,7 +228,7 @@
 	 nil))
     (when (and
 	   (memq encoding '(base64 x-uuencode x-uue x-binhex x-yenc))
-	   (equal type "text/plain"))
+	   (string-match "\\`text/" type))
       (goto-char (point-min))
       (while (search-forward "\r\n" nil t)
 	(replace-match "\n" t t)))))
--- a/lisp/gnus/mm-encode.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/mm-encode.el	Mon Sep 05 23:58:09 2005 +0000
@@ -118,7 +118,7 @@
     ;; Likewise base64 below.
     (quoted-printable-encode-region (point-min) (point-max) t))
    ((eq encoding 'base64)
-    (when (equal type "text/plain")
+    (when (string-match "\\`text/" type)
       (goto-char (point-min))
       (while (search-forward "\n" nil t)
 	(replace-match "\r\n" t t)))
--- a/lisp/gnus/mml-smime.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/mml-smime.el	Mon Sep 05 23:58:09 2005 +0000
@@ -81,7 +81,10 @@
   (list 'keyfile
 	(if (= (length smime-keys) 1)
 	    (cadar smime-keys)
-	  (or (let ((from (cadr (funcall gnus-extract-address-components
+	  (or (let ((from (cadr (funcall (if (boundp
+					      'gnus-extract-address-components)
+					     gnus-extract-address-components
+					   'mail-extract-address-components)
 					 (or (save-excursion
 					       (save-restriction
 						 (message-narrow-to-headers)
@@ -107,7 +110,10 @@
 	(while (not result)
 	  (setq who (read-from-minibuffer
 		     (format "%sLookup certificate for: " (or bad ""))
-		     (cadr (funcall gnus-extract-address-components
+		     (cadr (funcall (if (boundp
+					 'gnus-extract-address-components)
+					gnus-extract-address-components
+				      'mail-extract-address-components)
 				    (or (save-excursion
 					  (save-restriction
 					    (message-narrow-to-headers)
--- a/lisp/gnus/nnweb.el	Mon Sep 05 19:50:02 2005 +0000
+++ b/lisp/gnus/nnweb.el	Mon Sep 05 23:58:09 2005 +0000
@@ -27,6 +27,12 @@
 
 ;; Note: You need to have `w3' installed for some functions to work.
 
+;; FIXME: Due to changes in the HTML output of Google Groups and Gmane, stuff
+;; related to web groups (gnus-group-make-web-group) doesn't work anymore.
+
+;; Fetching an article by MID (cf. gnus-refer-article-method) over Google
+;; Groups should work.
+
 ;;; Code:
 
 (eval-when-compile (require 'cl))
@@ -54,13 +60,13 @@
 
 (defvar nnweb-type-definition
   '((google
-     (article . ignore)
-     (id . "http://groups.google.de/groups?selm=%s&output=gplain")
+     (id . "http://www.google.com/groups?as_umsgid=%s&hl=en&dmode=source")
+     (article . nnweb-google-wash-article)
      (reference . identity)
      (map . nnweb-google-create-mapping)
      (search . nnweb-google-search)
-     (address . "http://groups.google.de/groups")
-     (base    . "http://groups.google.de")
+     (address . "http://groups.google.com/groups")
+     (base    . "http://groups.google.com")
      (identifier . nnweb-google-identity))
     (dejanews ;; alias of google
      (article . ignore)
@@ -306,35 +312,19 @@
 	      (current-buffer))))))
 
 ;;;
-;;; Deja bought by google.com
+;;; groups.google.com
 ;;;
 
 (defun nnweb-google-wash-article ()
-  (let ((case-fold-search t) url)
-    (goto-char (point-min))
-    (re-search-forward "^<pre>" nil t)
-    (narrow-to-region (point-min) (point))
-    (search-backward "<table " nil t 2)
-    (delete-region (point-min) (point))
-    (if (re-search-forward "Search Result [0-9]+" nil t)
-	(replace-match ""))
-    (if (re-search-forward "View complete thread ([0-9]+ articles?)" nil t)
-	(replace-match ""))
+  ;; We have Google's masked e-mail addresses here.  :-/
+  (let ((case-fold-search t))
     (goto-char (point-min))
-    (while (search-forward "<br>" nil t)
-      (replace-match "\n"))
-    (mm-url-remove-markup)
+    (delete-region (point-min)
+		   (1+ (re-search-forward "^<pre>" nil t)))
     (goto-char (point-min))
-    (while (re-search-forward "^[ \t]*\n" nil t)
-      (replace-match ""))
-    (goto-char (point-max))
-    (insert "\n")
-    (widen)
-    (narrow-to-region (point) (point-max))
-    (search-forward "</pre>" nil t)
-    (delete-region (point) (point-max))
-    (mm-url-remove-markup)
-    (widen)))
+    (delete-region (- (re-search-forward "^</pre>" nil t) (length "</pre>"))
+		   (point-max))
+    (mm-url-decode-entities)))
 
 (defun nnweb-google-parse-1 (&optional Message-ID)
   (let ((i 0)
--- a/man/gnus.texi	Mon Sep 05 19:50:02 2005 +0000
+++ b/man/gnus.texi	Mon Sep 05 23:58:09 2005 +0000
@@ -5090,10 +5090,10 @@
 
 @item gnus-select-article-hook
 @vindex gnus-select-article-hook
-This hook is called whenever an article is selected.  By default it
-exposes any threads hidden under the selected article.  If you would
-like each article to be saved in the Agent as you read it, putting
-@code{gnus-agent-fetch-selected-article} on this hook will do so.
+This hook is called whenever an article is selected.  The default is
+@code{nil}.  If you would like each article to be saved in the Agent as
+you read it, putting @code{gnus-agent-fetch-selected-article} on this
+hook will do so.
 
 @item gnus-mark-article-hook
 @vindex gnus-mark-article-hook
@@ -5103,8 +5103,8 @@
 This hook is called whenever an article is selected.  It is intended to
 be used for marking articles as read.  The default value is
 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
-mark of almost any article you read to @code{gnus-unread-mark}.  The
-only articles not affected by this function are ticked, dormant, and
+mark of almost any article you read to @code{gnus-read-mark}.  The only
+articles not affected by this function are ticked, dormant, and
 expirable articles.  If you'd instead like to just have unread articles
 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
 instead.  It will leave marks like @code{gnus-low-score-mark},
@@ -13833,7 +13833,8 @@
 Prefix for file name for storing incoming mail.  The default is
 @file{Incoming}, in which case files will end up with names like
 @file{Incoming30630D_} or @file{Incoming298602ZD}.  This is really only
-relevant if @code{mail-source-delete-incoming} is @code{nil}.
+relevant if @code{mail-source-delete-incoming} is @code{nil} or a
+number.
 
 @item mail-source-default-file-modes
 @vindex mail-source-default-file-modes