Synch with Oort Gnus.
authoryamaoka <yamaoka>
Sun, 15 Jul 2001 23:23:01 +0000 (23:23 +0000)
committeryamaoka <yamaoka>
Sun, 15 Jul 2001 23:23:01 +0000 (23:23 +0000)
42 files changed:
contrib/canlock.el
contrib/gpg-ring.el
contrib/gpg.el
contrib/md5.el
contrib/ssl.el
contrib/xml.el
lisp/ChangeLog
lisp/binhex.el
lisp/flow-fill.el
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-cus.el
lisp/gnus-draft.el
lisp/gnus-mlspl.el
lisp/gnus-msg.el
lisp/gnus-setup.el
lisp/gnus-sum.el
lisp/gnus-uu.el
lisp/gnus.el
lisp/mail-source.el
lisp/message.el
lisp/mm-bodies.el
lisp/mm-extern.el
lisp/mm-partial.el
lisp/mm-util.el
lisp/mm-uu.el
lisp/mm-view.el
lisp/mml-sec.el
lisp/mml2015.el
lisp/nndb.el
lisp/nnheader.el
lisp/nnimap.el
lisp/nnrss.el
lisp/pop3.el
lisp/rfc2047.el
lisp/rfc2104.el
lisp/smiley.el
lisp/smime.el
texi/ChangeLog
texi/gnus-ja.texi
texi/gnus.texi
todo

index 474b834..3cce006 100644 (file)
@@ -430,7 +430,7 @@ is not specified, it runs in place."
            (insert header)
            (canlock-verify))))
     (or canlock-ignore-errors
-       (error "Folder buffer has been killed."))))
+       (error "Folder buffer has been killed"))))
 
 ;;;###autoload
 (defun cmail-summary-canlock-verify ()
index eafa4dc..d402886 100644 (file)
@@ -7,7 +7,7 @@
 ;; Keywords: crypto
 ;; Created: 2000-04-28
 
-;; $Id: gpg-ring.el,v 1.1.4.1 2000-12-21 11:16:03 yamaoka Exp $
+;; $Id: gpg-ring.el,v 1.1.4.2 2001-07-15 23:22:50 yamaoka Exp $
 
 ;; This file is NOT (yet?) part of GNU Emacs.
 
 
 
 \f
-;;;; Code:
+;;; Code:
 
 (require 'gpg)
-(eval-when-compile 
-  (require 'cl))
+(eval-when-compile (require 'cl))
 
 ;;;; Customization:
 
@@ -481,4 +480,4 @@ used."
 
 (provide 'gpg-ring)
 
-;;; gpg-ring.el ends here
\ No newline at end of file
+;;; gpg-ring.el ends here
index a5c48d5..66fa01a 100644 (file)
 ;; function (bound to `C-h l' by default).
 
 \f
-;;;; Code:
+;;; Code:
 
 (require 'timer)
-(eval-when-compile 
-  (require 'cl))
+(eval-when-compile (require 'cl))
 
 (eval-and-compile 
   (defalias 'gpg-point-at-eol
@@ -630,7 +629,7 @@ adjust according to `gpg-command-passphrase-env'."
       ;; temporary file resides in a world-writable directory.
       (unless (or (memq system-type '(windows-nt cygwin32 win32 w32 mswindows))
                  (eq (file-modes gpg-temp-directory) 448)) ; mode 0700
-       (error "Directory for temporary files (%s) must have mode 0700." gpg-temp-directory))
+       (error "Directory for temporary files (%s) must have mode 0700" gpg-temp-directory))
       (setq name (make-temp-name name))
       (let ((mode (default-file-modes)))
        (unwind-protect
@@ -762,7 +761,7 @@ Never set this variable directly, use `gpg-show-result' instead.")
       (save-window-excursion
        (display-buffer (current-buffer))
        (unless (y-or-n-p "Continue? ")
-         (error "GnuPG operation aborted."))))))
+         (error "GnuPG operation aborted"))))))
 
 (defmacro gpg-show-result (always-show &rest body)
   "Show GnuPG result to user for confirmation.
index 5720346..a036819 100644 (file)
@@ -89,7 +89,7 @@
 ;; These notices must be retained in any copies of any part of this
 ;; documentation and/or software.
 
-;;; Code: ---------------------------------------------------------------------
+;;; Code:
 
 (defvar md5-program "md5sum"
   "*Program that reads a message on its standard input and writes an
index bdf0736..fcb2509 100644 (file)
@@ -1,7 +1,7 @@
 ;;; ssl.el,v --- ssl functions for emacsen without them builtin
-;; Author: $Author: yamaoka $
-;; Created: $Date: 2001-03-16 00:14:21 $
-;; Version: $Revision: 1.1.2.1 $
+;; Author: #Author: zsh #
+;; Created: #Date: 2001/07/13 19:31:09 #
+;; Version: #Revision: 1.2 #
 ;; Keywords: comm
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -26,7 +26,7 @@
 ;;; Boston, MA 02111-1307, USA.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(require 'cl)
+(eval-when-compile (require 'cl))
 (require 'base64)
 
 (eval-and-compile
index a07f449..d128b83 100644 (file)
@@ -1,4 +1,4 @@
-;; @(#) xml.el --- XML parser
+;;; xml.el --- XML parser
 
 ;; Copyright (C) 2000, 2001 Free Software Foundation, Inc.
 
index 3f17a18..07b3517 100644 (file)
@@ -1,3 +1,56 @@
+2001-07-15  Pavel Jan\e,Bm\e(Bk <Pavel@Janik.cz>
+
+       * gnus-art.el,...: Error convention changes.
+
+2001-07-13 20:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-sum.el (gnus-rebuild-thread): Count hidden lines too.
+
+2001-07-13 20:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnrss.el (nnrss-read-group-data): Nuke emacs-lisp-mode-hook.
+       (nnrss-read-server-data): Ditto.
+
+2001-07-13 12:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+       
+       * gnus-setup.el (gnus-use-installed-gnus): Typo.
+       * Cleanup files.
+       From Pavel@Janik.cz (Pavel Jan\e,Bm\e(Bk).
+
+2001-07-13 08:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.el (gnus-summary-line-format): Add %o.
+
+       * gnus-sum.el (gnus-summary-pipe-output): Don't configure as pipe
+       unless shell outputs something.
+
+2001-07-13 07:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-art.el (gnus-boring-article-headers): Better doc. 
+       (article-hide-headers): Better regexp.
+       Suggested by Matt Swift <swift@alum.mit.edu>.
+
+       * nnheader.el (nnheader-max-head-length): Better doc.
+       (nnheader-header-value): Skip spaces.
+       (nnheader-parse-head): Remove space.
+       Suggested by Matt Swift <swift@alum.mit.edu>.
+
+       * gnus-sum.el (gnus-summary-show-raw-article): New function.
+       (gnus-get-newsgroup-headers): Remove space.
+
+2001-07-12 23:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-msg.el (gnus-msg-treat-broken-reply-to): Add force.
+       (gnus-summary-reply): Use it.
+       (gnus-summary-reply-broken-reply-to): New.
+       (gnus-msg-force-broken-reply-to): New.
+
+       * mm-view.el (mm-inline-text): Showing as text/plain when error.
+
+2001-07-12 21:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-draft.el (gnus-draft-setup): Restore gnus-newsgroup-name.
+
 2001-07-12 15:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * mm-decode.el (mm-external-terminal-program): New variable.
index 0147921..6d8d434 100644 (file)
@@ -1,4 +1,4 @@
-;;; binhex.el -- elisp native binhex decode
+;;; binhex.el --- elisp native binhex decode
 ;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc.
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
index 6150d51..49105b5 100644 (file)
@@ -38,7 +38,7 @@
 ;; Todo: encoding, implement basic `fill-region' (Emacs and XEmacs
 ;;       implementations differ..)
 
-;; History:
+;;; History:
 
 ;; 2000-02-17  posted on ding mailing list
 ;; 2000-02-19  use `point-at-{b,e}ol' in XEmacs
index c8b7792..d4d00ae 100644 (file)
@@ -1122,12 +1122,12 @@ the actual number of articles toggled is returned."
          (error
           (unless (funcall gnus-agent-confirmation-function
                            (format "Error (%s).  Continue? " err))
-            (error "Cannot fetch articles into the Gnus agent.")))
+            (error "Cannot fetch articles into the Gnus agent")))
          (quit
           (unless (funcall gnus-agent-confirmation-function
                            (format "Quit fetching session (%s).  Continue? "
                                    err))
-            (signal 'quit "Cannot fetch articles into the Gnus agent."))))
+            (signal 'quit "Cannot fetch articles into the Gnus agent"))))
        (pop methods))
       (gnus-message 6 "Finished fetching articles into the Gnus agent"))))
 
index 545f055..8c9f150 100644 (file)
@@ -178,15 +178,23 @@ this list."
 
 (defcustom gnus-boring-article-headers '(empty followup-to reply-to)
   "Headers that are only to be displayed if they have interesting data.
-Possible values in this list are `empty', `newsgroups', `followup-to',
-`to-address', `reply-to', `date', `long-to', and `many-to'."
+Possible values in this list are:
+
+  'empty       Headers with no content.
+  'newsgroups  Newsgroup identical to Gnus group.
+  'to-address  To identical to To-address.
+  'followup-to Followup-to identical to Newsgroups.
+  'reply-to    Reply-to identical to From.
+  'date        Date less than four days old.
+  'long-to     To and/or Cc longer than 1024 characters.
+  'many-to     Multiple To and/or Cc."
   :type '(set (const :tag "Headers with no content." empty)
-             (const :tag "Newsgroups with only one group." newsgroups)
-             (const :tag "To identical to to-address." to-address)
-             (const :tag "Followup-to identical to newsgroups." followup-to)
-             (const :tag "Reply-to identical to from." reply-to)
+             (const :tag "Newsgroups identical to Gnus group." newsgroups)
+             (const :tag "To identical to To-address." to-address)
+             (const :tag "Followup-to identical to Newsgroups." followup-to)
+             (const :tag "Reply-to identical to From." reply-to)
              (const :tag "Date less than four days old." date)
-             (const :tag "Very long To and/or Cc header." long-to)
+             (const :tag "To and/or Cc longer than 1024 characters." long-to)
              (const :tag "Multiple To and/or Cc headers." many-to))
   :group 'gnus-article-hiding)
 
@@ -1336,7 +1344,7 @@ Initialized from `text-mode-syntax-table.")
          ;; `gnus-ignored-headers' and `gnus-visible-headers' to
          ;; select which header lines is to remain visible in the
          ;; article buffer.
-         (while (re-search-forward "^[^ \t]*:" nil t)
+         (while (re-search-forward "^[^ \t:]*:" nil t)
            (beginning-of-line)
            ;; Mark the rank of the header.
            (put-text-property
@@ -2905,7 +2913,7 @@ The directory to save in defaults to `gnus-article-save-directory'."
   (when (string-equal command "")
     (if gnus-last-shell-command
        (setq command gnus-last-shell-command)
-      (error "A command is required.")))
+      (error "A command is required")))
   (gnus-eval-in-buffer-window gnus-article-buffer
     (save-restriction
       (widen)
@@ -3690,7 +3698,7 @@ value of the variable `gnus-show-mime' is non-nil."
   (let* ((data (get-text-property (point) 'gnus-data))
         file param)
     (if (mm-multiple-handles gnus-article-mime-handles)
-       (error "This function is not implemented."))
+       (error "This function is not implemented"))
     (setq file (and data (mm-save-part data)))
     (when file
       (with-current-buffer (mm-handle-buffer data)
@@ -5960,9 +5968,9 @@ For example:
     (unless func
       (error (format "Can't find the encrypt protocol %s" protocol)))
     (if (equal gnus-newsgroup-name "nndraft:drafts")
-       (error "Can't encrypt the article in group nndraft:drafts."))
+       (error "Can't encrypt the article in group nndraft:drafts"))
     (if (equal gnus-newsgroup-name "nndraft:queue")
-       (error "Don't encrypt the article in group nndraft:queue."))
+       (error "Don't encrypt the article in group nndraft:queue"))
     (gnus-summary-iterate n
       (save-excursion
        (set-buffer gnus-summary-buffer)
index c1ac599..b3b4246 100644 (file)
@@ -642,7 +642,7 @@ When called interactively, FILE defaults to the current score file.
 This can be changed using the `\\[gnus-score-change-score-file]' command."
   (interactive (list gnus-current-score-file))
   (unless file
-    (error (format "No score file for %s." 
+    (error (format "No score file for %s" 
                   (gnus-group-decoded-name gnus-newsgroup-name))))
   (let ((scores (gnus-score-load file))
        (types (mapcar (lambda (entry)
index 4b015c1..dd93227 100644 (file)
 (defun gnus-draft-edit-message ()
   "Enter a mail/post buffer to edit and send the draft."
   (interactive)
-  (let ((article (gnus-summary-article-number)))
+  (let ((article (gnus-summary-article-number))
+       (group gnus-newsgroup-name))
     (gnus-summary-mark-as-read article gnus-canceled-mark)
-    (gnus-draft-setup-for-editing article gnus-newsgroup-name)
+    (gnus-draft-setup-for-editing article group)
     (set-buffer-modified-p t)
     (save-excursion
       (save-restriction
        (message-remove-header "date")))
     (message-save-drafts)
     (let ((gnus-verbose-backends nil))
-      (gnus-request-expire-articles (list article) gnus-newsgroup-name t))
+      (gnus-request-expire-articles (list article) group t))
     (push
      `((lambda ()
         (when (gnus-buffer-exists-p ,gnus-summary-buffer)
     (gnus-backlog-remove-article group narticle)
     (when (and ga
               (ignore-errors (setq ga (car (read-from-string ga)))))
+      (setq gnus-newsgroup-name
+           (if (equal (car ga) "") nil (car ga)))
       (setq message-post-method
            `(lambda (arg)
               (gnus-post-method arg ,(car ga))))
index 126c7d2..3dbc82d 100644 (file)
 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
+;;; Commentary:
+
+;;; Code:
+
 (eval-when-compile (require 'cl))
 (require 'gnus)
 (require 'gnus-sum)
@@ -220,3 +224,5 @@ Calling (gnus-group-split-fancy nil nil \"mail.misc\") returns:
     split))
 
 (provide 'gnus-mlspl)
+
+;;; gnus-mlspl.el ends here
index 0e38631..a348dde 100644 (file)
@@ -152,6 +152,8 @@ use this option with care."
 (defvar gnus-last-posting-server nil)
 (defvar gnus-message-group-art nil)
 
+(defvar gnus-msg-force-broken-reply-to nil)
+
 (defconst gnus-bug-message
   (format "Sending a bug report to the Gnus Towers.
 ========================================
@@ -213,6 +215,8 @@ Thank you for your help in stamping out bugs.
   "m" gnus-summary-mail-other-window
   "u" gnus-uu-post-news
   "\M-c" gnus-summary-mail-crosspost-complaint
+  "Br" gnus-summary-reply-broken-reply-to
+  "BR" gnus-summary-reply-broken-reply-to-with-original
   "om" gnus-summary-mail-forward
   "op" gnus-summary-post-forward
   "Om" gnus-summary-digest-mail-forward
@@ -651,10 +655,11 @@ header line with the old Message-ID."
        (when yank
          (gnus-inews-yank-articles yank))))))
 
-(defun gnus-msg-treat-broken-reply-to ()
+(defun gnus-msg-treat-broken-reply-to (&optional force)
   "Remove the Reply-to header iff broken-reply-to."
-  (when (gnus-group-find-parameter
-        gnus-newsgroup-name 'broken-reply-to)
+  (when (or force 
+            (gnus-group-find-parameter
+             gnus-newsgroup-name 'broken-reply-to))
     (save-restriction
       (message-narrow-to-head)
       (message-remove-header "reply-to"))))
@@ -808,7 +813,7 @@ If VERY-WIDE, make a very wide reply."
              (message-narrow-to-head)
              (setq headers (concat headers (buffer-string)))))))
       (set-buffer (gnus-copy-article-buffer))
-      (gnus-msg-treat-broken-reply-to)
+      (gnus-msg-treat-broken-reply-to gnus-msg-force-broken-reply-to)
       (save-restriction
        (message-narrow-to-head)
        (when very-wide
@@ -825,6 +830,24 @@ The original article will be yanked."
   (interactive "P")
   (gnus-summary-reply (gnus-summary-work-articles n) wide))
 
+(defun gnus-summary-reply-broken-reply-to (&optional yank wide very-wide)
+  "Like `gnus-summary-reply' except removing reply-to field.
+If prefix argument YANK is non-nil, the original article is yanked
+automatically.
+If WIDE, make a wide reply.
+If VERY-WIDE, make a very wide reply."
+  (interactive
+   (list (and current-prefix-arg
+             (gnus-summary-work-articles 1))))
+  (let ((gnus-msg-force-broken-reply-to t))
+    (gnus-summary-reply yank wide very-wide)))
+
+(defun gnus-summary-reply-broken-reply-to-with-original (n &optional wide)
+  "Like `gnus-summary-reply-with-original' except removing reply-to field.
+The original article will be yanked."
+  (interactive "P")
+  (gnus-summary-reply-broken-reply-to (gnus-summary-work-articles n) wide))
+
 (defun gnus-summary-wide-reply (&optional yank)
   "Start composing a wide reply mail to the current message.
 If prefix argument YANK is non-nil, the original article is yanked
index 307aaaf..4f7634d 100644 (file)
@@ -35,7 +35,7 @@
 (eval-when-compile (require 'cl))
 
 (defvar gnus-use-installed-gnus t
-  "*If non-nil Use installed version of Gnus.")
+  "*If non-nil use installed version of Gnus.")
 
 (defvar gnus-use-installed-mailcrypt (featurep 'xemacs)
   "*If non-nil use installed version of mailcrypt.")
index a4f426d..40388c5 100644 (file)
@@ -1926,7 +1926,8 @@ increase the score of each group you read."
              ["Fetch current thread" gnus-summary-refer-thread t]
              ["Fetch article with id..." gnus-summary-refer-article t]
              ["Setup Mailing List Params" gnus-mailing-list-insinuate t]
-             ["Redisplay" gnus-summary-show-article t])))
+             ["Redisplay" gnus-summary-show-article t]
+             ["Raw article" gnus-summary-show-raw-article t])))
       (easy-menu-define
        gnus-summary-article-menu gnus-summary-mode-map ""
        (cons "Article" innards))
@@ -3740,7 +3741,7 @@ If LINE, insert the rebuilt thread starting on line LINE."
       (setq thread (gnus-remove-thread id)))
     (setq old-pos (gnus-point-at-bol))
     (setq current (save-excursion
-                   (and (zerop (forward-line -1))
+                   (and (re-search-backward "[\r\n]" nil t)
                         (gnus-summary-article-number))))
     ;; If this is a gathered thread, we have to go some re-gathering.
     (when (stringp (car thread))
@@ -5041,22 +5042,20 @@ The resulting hash table is returned, or nil if no Xrefs were found."
            ;; Subject.
            (progn
              (goto-char p)
-             (if (search-forward "\nsubject: " nil t)
+             (if (search-forward "\nsubject:" nil t)
                  (nnheader-header-value)
                "(none)"))
            ;; From.
            (progn
              (goto-char p)
-             (if (or (search-forward "\nfrom: " nil t)
-                     (search-forward "\nfrom:" nil t))
+             (if (search-forward "\nfrom:" nil t)
                  (nnheader-header-value)
                "(nobody)"))
            ;; Date.
            (progn
              (goto-char p)
-             (if (search-forward "\ndate: " nil t)
-                 (nnheader-header-value)
-               ""))
+             (if (search-forward "\ndate:" nil t)
+                 (nnheader-header-value) ""))
            ;; Message-ID.
            (progn
              (goto-char p)
@@ -5072,7 +5071,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
            ;; References.
            (progn
              (goto-char p)
-             (if (search-forward "\nreferences: " nil t)
+             (if (search-forward "\nreferences:" nil t)
                  (progn
                    (setq end (point))
                    (prog1
@@ -5089,7 +5088,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
                ;; Get the references from the in-reply-to header if there
                ;; were no references and the in-reply-to header looks
                ;; promising.
-               (if (and (search-forward "\nin-reply-to: " nil t)
+               (if (and (search-forward "\nin-reply-to:" nil t)
                         (setq in-reply-to (nnheader-header-value))
                         (string-match "<[^>]+>" in-reply-to))
                    (let (ref2)
@@ -5119,7 +5118,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
            ;; Xref.
            (progn
              (goto-char p)
-             (and (search-forward "\nxref: " nil t)
+             (and (search-forward "\nxref:" nil t)
                   (nnheader-header-value)))
            ;; Extra.
            (when gnus-extra-headers
@@ -5128,7 +5127,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
                (while extra
                  (goto-char p)
                  (when (search-forward
-                        (concat "\n" (symbol-name (car extra)) ": ") nil t)
+                        (concat "\n" (symbol-name (car extra)) ":") nil t)
                    (push (cons (car extra) (nnheader-header-value)) out))
                  (pop extra))
                out))))
@@ -7800,6 +7799,11 @@ without any article massaging functions being run."
   (gnus-summary-goto-subject gnus-current-article)
   (gnus-summary-position-point))
 
+(defun gnus-summary-show-raw-article ()
+  "Show the raw article without any article massaging functions being run."
+  (interactive)
+  (gnus-summary-show-article t))
+
 (defun gnus-summary-verbose-headers (&optional arg)
   "Toggle permanent full header display.
 If ARG is a positive number, turn header display on.
@@ -9685,7 +9689,10 @@ pipe those articles instead."
   (require 'gnus-art)
   (let ((gnus-default-article-saver 'gnus-summary-save-in-pipe))
     (gnus-summary-save-article arg t))
-  (gnus-configure-windows 'pipe))
+  (let ((buffer (get-buffer "*Shell Command Output*")))
+    (if (and buffer 
+             (with-current-buffer buffer (> (point-max) (point-min))))
+        (gnus-configure-windows 'pipe))))
 
 (defun gnus-summary-save-article-mail (&optional arg)
   "Append the current article to an mail file.
index 6470494..12c3651 100644 (file)
@@ -2148,4 +2148,4 @@ If no file has been included, the user will be asked for a file."
 
 (provide 'gnus-uu)
 
-;; gnus-uu.el ends here
+;;; gnus-uu.el ends here
index 461232f..e69771d 100644 (file)
@@ -2156,6 +2156,7 @@ with some simple extensions.
 %x   Contents of the Xref: header (string)
 %D   Date of the article (string)
 %d   Date of the article (string) in DD-MMM format
+%o   Date of the article (string) in YYYYMMDD`T'HHMMSS format
 %M   Message-id of the article (string)
 %r   References of the article (string)
 %c   Number of characters in the article (integer)
index 22aec7a..e157802 100644 (file)
@@ -451,7 +451,7 @@ Return the number of files that were found."
                 (error
                  (unless (yes-or-no-p
                           (format "Mail source error (%s).  Continue? " err))
-                   (error "Cannot get new mail."))
+                   (error "Cannot get new mail"))
                  0))))))))
 
 (defun mail-source-make-complex-temp-name (prefix)
@@ -785,7 +785,7 @@ If ARGS, PROMPT is used as an argument to `format'."
 This only works when `display-time' is enabled."
   (interactive "P")
   (if (not mail-source-primary-source)
-      (error "Need to set `mail-source-primary-source' to check for new mail."))
+      (error "Need to set `mail-source-primary-source' to check for new mail"))
   (let ((on (if (null arg)
                (not mail-source-report-new-mail)
              (> (prefix-numeric-value arg) 0))))
index 651303b..8e7d58a 100644 (file)
@@ -2773,7 +2773,7 @@ It should typically alter the sending method in some way or other."
                                (format
                                 "Already sent message via %s; resend? "
                                 (car elem)))
-                            (error "Denied posting -- multiple copies.")))
+                            (error "Denied posting -- multiple copies")))
                       (setq success (funcall (caddr elem) arg)))
              (setq sent t)))))
       (unless (or sent (not success))
index 28d202e..6ea90c3 100644 (file)
@@ -283,4 +283,4 @@ The characters in CHARSET should then be decoded."
 
 (provide 'mm-bodies)
 
-;; mm-bodies.el ends here
+;;; mm-bodies.el ends here
index ec5c9b1..4579a55 100644 (file)
@@ -25,8 +25,7 @@
 
 ;;; Code:
 
-(eval-when-compile
-  (require 'cl))
+(eval-when-compile (require 'cl))
 
 (require 'mm-util)
 (require 'mm-decode)
   (let ((name (cdr (assq 'name (cdr (mm-handle-type handle)))))
        (coding-system-for-read mm-binary-coding-system))
     (unless name
-      (error "The filename is not specified."))
+      (error "The filename is not specified"))
     (mm-disable-multibyte-mule4)
     (if (file-exists-p name)
        (mm-insert-file-contents name nil nil nil nil t)
-      (error (format "File %s is gone." name)))))
+      (error (format "File %s is gone" name)))))
 
 (defun mm-extern-url (handle)
   (erase-buffer)
@@ -61,7 +60,7 @@
        (name buffer-file-name)
        (coding-system-for-read mm-binary-coding-system))
     (unless url
-      (error "URL is not specified."))
+      (error "URL is not specified"))
     (mm-with-unibyte-current-buffer-mule4
       (url-insert-file-contents url))
     (mm-disable-multibyte-mule4)
@@ -79,7 +78,7 @@
                       "@" site ":" directory "/" name))
         (coding-system-for-read mm-binary-coding-system))
     (unless name
-      (error "The filename is not specified."))
+      (error "The filename is not specified"))
     (mm-disable-multibyte-mule4)
     (mm-insert-file-contents path nil nil nil nil t)))
 
@@ -119,13 +118,13 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
         (func (cdr (assq (intern
                           (downcase
                            (or access-type
-                               (error "Couldn't find access type."))))
+                               (error "Couldn't find access type"))))
                          mm-extern-function-alist)))
         gnus-displaying-mime buf
         handles)
     (unless (mm-handle-cache handle)
       (unless func
-       (error (format "Access type (%s) is not supported." access-type)))
+       (error (format "Access type (%s) is not supported" access-type)))
       (with-temp-buffer
        (mm-insert-part handle)
        (goto-char (point-max))
@@ -133,7 +132,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
        (setq handles (mm-dissect-buffer t)))
       (unless (bufferp (car handles))
        (mm-destroy-parts handles)
-       (error "Multipart external body is not supported."))
+       (error "Multipart external body is not supported"))
       (save-excursion ;; single part
        (set-buffer (setq buf (mm-handle-buffer handles)))
        (let (good)
@@ -164,4 +163,4 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
                  (error nil))
                (delete-region ,(point-min-marker) ,(point-max-marker))))))))))
 
-;; mm-extern.el ends here
+;;; mm-extern.el ends here
index d05283c..706f52e 100644 (file)
@@ -25,8 +25,7 @@
 
 ;;; Code:
 
-(eval-when-compile
-  (require 'cl))
+(eval-when-compile (require 'cl))
 
 (require 'gnus-sum)
 (require 'mm-util)
@@ -66,7 +65,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
        gnus-displaying-mime handles buffer)
     (unless (mm-handle-cache handle)
       (unless id
-       (error "Can not find message/partial id."))
+       (error "Can not find message/partial id"))
       (setq phandles
            (sort (cons handle
                        (mm-partial-find-parts
@@ -96,7 +95,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
          (if ntotal
              (if total
                  (unless (eq total ntotal)
-                 (error "The numbers of total are different."))
+                 (error "The numbers of total are different"))
                (setq total ntotal)))
          (unless (< nn n)
            (unless (eq nn n)
@@ -149,4 +148,4 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
                  (error nil))
                (delete-region ,(point-min-marker) ,(point-max-marker))))))))))
 
-;; mm-partial.el ends here
+;;; mm-partial.el ends here
index 1f124e7..78e3628 100644 (file)
@@ -315,7 +315,7 @@ If the charset is `composition', return the actual one."
 (defun mm-mime-charset (charset)
   "Return the MIME charset corresponding to the MULE CHARSET."
   (if (eq charset 'unknown)
-      (error "The message contains non-printable characters, please use attachment."))
+      (error "The message contains non-printable characters, please use attachment"))
   (if (and (fboundp 'coding-system-get) (fboundp 'get-charset-property))
       ;; This exists in Emacs 20.
       (or
index 5893298..bf1bb70 100644 (file)
@@ -1,4 +1,4 @@
-;;; mm-uu.el -- Return uu stuff as mm handles
+;;; mm-uu.el --- Return uu stuff as mm handles
 ;; Copyright (c) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
@@ -23,7 +23,6 @@
 
 ;;; Commentary:
 
-
 ;;; Code:
 
 (eval-when-compile (require 'cl))
index 2adeb8f..c5516c1 100644 (file)
                  (condition-case var
                      (w3-region (point-min) (point-max))
                    (error
+                     (delete-region (point-min) (point-max))
+                     (let ((b (point))
+                           (charset (mail-content-type-get
+                                     (mm-handle-type handle) 'charset)))
+                       (if (or (eq charset 'gnus-decoded)
+                               (eq mail-parse-charset 'gnus-decoded))
+                           (save-restriction
+                             (narrow-to-region (point) (point))
+                             (mm-insert-part handle)
+                             (goto-char (point-max)))
+                         (insert (mm-decode-string (mm-get-part handle) 
+                                                   charset))))
                     (message
                      "Error while rendering html; showing as text/plain"))))))
            (mm-handle-set-undisplayer
 
 (provide 'mm-view)
 
-;; mm-view.el ends here
+;;; mm-view.el ends here
index cc54995..9d64d57 100644 (file)
@@ -85,7 +85,7 @@
             (goto-char (match-end 0))
             (apply 'mml-insert-tag 'part (cons (if sign 'sign 'encrypt)
                                                (cons method tags))))
-           (t (error "The message is corrupted. No mail header separator."))))))
+           (t (error "The message is corrupted. No mail header separator"))))))
 
 (defun mml-secure-sign-pgpmime ()
   "Add MML tags to PGP/MIME sign this MML part."
index 3048c9a..57350b2 100644 (file)
        hash point)
     (goto-char (point-min))
     (unless (re-search-forward "^-----BEGIN PGP SIGNED MESSAGE-----\r?$" nil t)
-      (error "Cannot find signed begin line." ))
+      (error "Cannot find signed begin line"))
     (goto-char (match-beginning 0))
     (forward-line 1)
     (unless (looking-at "Hash:[ \t]*\\([a-zA-Z0-9]+\\)")
-      (error "Cannot not find PGP hash." ))
+      (error "Cannot not find PGP hash"))
     (setq hash (match-string 1))
     (unless (re-search-forward "^$" nil t)
-      (error "Cannot not find PGP message." ))
+      (error "Cannot not find PGP message"))
     (forward-line 1)
     (delete-region (point-min) (point))
     (insert (format "Content-Type: multipart/signed; boundary=\"%s\";\n"
     (setq point (point))
     (goto-char (point-max))
     (unless (re-search-backward "^-----END PGP SIGNATURE-----\r?$" nil t)
-      (error "Cannot find signature part." ))
+      (error "Cannot find signature part"))
     (replace-match "-----END PGP MESSAGE-----" t t)
     (goto-char (match-beginning 0))
     (unless (re-search-backward "^-----BEGIN PGP SIGNATURE-----\r?$"
                                nil t)
-      (error "Cannot find signature part." ))
+      (error "Cannot find signature part"))
     (replace-match "-----BEGIN PGP MESSAGE-----" t t)
     (goto-char (match-beginning 0))
     (save-restriction
        (message-options-get 'message-sender))))
   (goto-char (point-min))
   (unless (looking-at "-----BEGIN PGP MESSAGE-----")
-    (error "Fail to encrypt the message."))
+    (error "Fail to encrypt the message"))
   (let ((boundary
         (funcall mml-boundary-function (incf mml-multipart-number))))
     (insert (format "Content-Type: multipart/encrypted; boundary=\"%s\";\n"
                                 t t) ; armor & textmode
        (unless (> (point-max) (point-min))
          (pop-to-buffer mml2015-result-buffer)
-         (error "Sign error.")))
+         (error "Sign error")))
       (goto-char (point-min))
       (while (re-search-forward "\r+$" nil t)
        (replace-match "" t t))
                 t t) ; armor & textmode
          (unless (> (point-max) (point-min))
            (pop-to-buffer mml2015-result-buffer)
-           (error "Encrypt error.")))
+           (error "Encrypt error")))
        (goto-char (point-min))
        (while (re-search-forward "\r+$" nil t)
          (replace-match "" t t))
   (let ((func (nth 2 (assq mml2015-use mml2015-function-alist))))
     (if func
        (funcall func cont)
-      (error "Cannot find encrypt function."))))
+      (error "Cannot find encrypt function"))))
 
 ;;;###autoload
 (defun mml2015-sign (cont)
   (let ((func (nth 1 (assq mml2015-use mml2015-function-alist))))
     (if func
        (funcall func cont)
-      (error "Cannot find sign function."))))
+      (error "Cannot find sign function"))))
 
 ;;;###autoload
 (defun mml2015-self-encrypt ()
index 30eb2e2..9fffaa0 100644 (file)
@@ -320,3 +320,5 @@ Optional LAST is ignored."
   (nntp))
 
 (provide 'nndb)
+
+;;; nndb.el ends here
index f8b84f5..791b6cb 100644 (file)
   (autoload 'gnus-sorted-complement "gnus-range"))
 
 (defvar nnheader-max-head-length 4096
-  "*Max length of the head of articles.")
+  "*Max length of the head of articles.
+
+Value is an integer, nil, or t.  Nil means read in chunks of a file
+indefinitely until a complete head is found\; t means always read the
+entire file immediately, disregarding `nnheader-head-chop-length'.
+
+Integer values will in effect be rounded up to the nearest multiple of
+`nnheader-head-chop-length'.")
 
 (defvar nnheader-head-chop-length 2048
   "*Length of each read operation when trying to fetch HEAD headers.")
@@ -204,7 +211,8 @@ This variable is a substitute for `mm-text-coding-system-for-write'.")
 
 (defsubst nnheader-header-value ()
   (let ((pt (point)))
-    (prog1
+    (prog2
+       (skip-chars-forward " \t")
        (buffer-substring (match-end 0) (std11-field-end))
       (goto-char pt))))
 
@@ -243,18 +251,17 @@ This variable is a substitute for `mm-text-coding-system-for-write'.")
           ;; Subject.
           (progn
             (goto-char p)
-            (if (search-forward "\nsubject: " nil t)
+            (if (search-forward "\nsubject:" nil t)
                 (nnheader-header-value) "(none)"))
           ;; From.
           (progn
             (goto-char p)
-            (if (or (search-forward "\nfrom: " nil t)
-                    (search-forward "\nfrom:" nil t))
+            (if (search-forward "\nfrom:" nil t)
                 (nnheader-header-value) "(nobody)"))
           ;; Date.
           (progn
             (goto-char p)
-            (if (search-forward "\ndate: " nil t)
+            (if (search-forward "\ndate:" nil t)
                 (nnheader-header-value) ""))
           ;; Message-ID.
           (progn
@@ -270,12 +277,12 @@ This variable is a substitute for `mm-text-coding-system-for-write'.")
           ;; References.
           (progn
             (goto-char p)
-            (if (search-forward "\nreferences: " nil t)
+            (if (search-forward "\nreferences:" nil t)
                 (nnheader-header-value)
               ;; Get the references from the in-reply-to header if there
               ;; were no references and the in-reply-to header looks
               ;; promising.
-              (if (and (search-forward "\nin-reply-to: " nil t)
+              (if (and (search-forward "\nin-reply-to:" nil t)
                        (setq in-reply-to (nnheader-header-value))
                        (string-match "<[^\n>]+>" in-reply-to))
                   (let (ref2)
@@ -301,7 +308,7 @@ This variable is a substitute for `mm-text-coding-system-for-write'.")
           ;; Xref.
           (progn
             (goto-char p)
-            (and (search-forward "\nxref: " nil t)
+            (and (search-forward "\nxref:" nil t)
                  (nnheader-header-value)))
 
           ;; Extra.
@@ -311,7 +318,7 @@ This variable is a substitute for `mm-text-coding-system-for-write'.")
               (while extra
                 (goto-char p)
                 (when (search-forward
-                       (concat "\n" (symbol-name (car extra)) ": ") nil t)
+                       (concat "\n" (symbol-name (car extra)) ":") nil t)
                   (push (cons (car extra) (nnheader-header-value))
                         out))
                 (pop extra))
index 4511d6a..a52cfaf 100644 (file)
@@ -403,7 +403,7 @@ If EXAMINE is non-nil the group is selected read-only."
                      "nnimap: Group %s is not uidvalid.  Continue? " group)))
                imap-current-mailbox
              (imap-mailbox-unselect)
-             (error "nnimap: Group %s is not uid-valid." group))
+             (error "nnimap: Group %s is not uid-valid" group))
          (nnheader-report 'nnimap (imap-error-text)))))))
 
 (defun nnimap-replace-whitespace (string)
index bc4bf58..636c2f1 100644 (file)
@@ -370,11 +370,12 @@ To use the description in headers, put this name into `nnmail-extra-headers'.")
               nnrss-directory)))
     (when (file-exists-p file)
       (with-temp-buffer
-       (let ((coding-system-for-read 'binary))
-         (insert-file-contents file))
-       (emacs-lisp-mode)
-       (goto-char (point-min))
-       (eval-buffer)))))
+       (let ((coding-system-for-read 'binary)
+              emacs-lisp-mode-hook)
+         (insert-file-contents file)
+          (emacs-lisp-mode)
+          (goto-char (point-min))
+          (eval-buffer))))))
 
 (defun nnrss-save-server-data (server)
   (gnus-make-directory nnrss-directory)
@@ -407,11 +408,12 @@ To use the description in headers, put this name into `nnmail-extra-headers'.")
               nnrss-directory)))
     (when (file-exists-p file)
       (with-temp-buffer
-       (let ((coding-system-for-read 'binary))
-         (insert-file-contents file))
-       (emacs-lisp-mode)
-       (goto-char (point-min))
-       (eval-buffer))
+       (let ((coding-system-for-read 'binary)
+              emacs-lisp-mode-hook)
+         (insert-file-contents file)
+          (emacs-lisp-mode)
+          (goto-char (point-min))
+          (eval-buffer)))
       (dolist (e nnrss-group-data)
        (gnus-sethash (nth 2 e) e nnrss-group-hashtb)
        (if (and (car e) (> nnrss-group-min (car e)))
index 238b116..f628b2e 100644 (file)
@@ -179,7 +179,7 @@ Nil means no, t means yes, not-nil-or-t means yet to be determined.")
          ((equal 'pass pop3-authentication-scheme)
           (pop3-user process pop3-maildrop)
           (pop3-pass process))
-         (t (error "Invalid POP3 authentication scheme.")))
+         (t (error "Invalid POP3 authentication scheme")))
     (setq message-count (car (pop3-stat process)))
     (pop3-quit process)
     message-count))
@@ -492,7 +492,7 @@ If NOW, use that time instead."
   (pop3-send-command process (format "USER %s" user))
   (let ((response (pop3-read-response process t)))
     (if (not (and response (string-match "+OK" response)))
-       (error (format "USER %s not valid." user)))))
+       (error (format "USER %s not valid" user)))))
 
 (defun pop3-pass (process)
   "Send authentication information to the server."
index b6edfdf..4b8cff9 100644 (file)
@@ -176,7 +176,7 @@ Should be called narrowed to the head of the message."
                            (y-or-n-p
                             "Some texts are not encoded. Encode anyway?")))
                       (rfc2047-encode-region (point-min) (point-max))
-                    (error "Cannot send unencoded text."))))
+                    (error "Cannot send unencoded text"))))
             ((mm-coding-system-p method)
              (if (and (featurep 'mule)
                       (if (boundp 'default-enable-multibyte-characters)
index 3d45982..64dbe53 100644 (file)
@@ -51,6 +51,8 @@
 ;;; 1999-10-23  included in pgnus
 ;;; 2000-08-15  `rfc2104-hexstring-to-bitstring'
 ;;; 2000-05-12  added sha-1 example, added test case reference
+
+;;; Code:
  
 (eval-when-compile (require 'cl))
 
index f070c71..7352452 100644 (file)
@@ -36,6 +36,8 @@
 
 ;; The smilies were drawn by Joe Reiss <jreiss@vt.edu>.
 
+;;; Code:
+
 (eval-when-compile (require 'cl))
 (require 'custom)
 
@@ -227,8 +229,7 @@ above them."
   "Toggle smiley at given point.
 Note -- this function hasn't been implemented yet."
   (interactive "e")
-  (error "This function hasn't been implemented yet.")
-)
+  (error "This function hasn't been implemented yet"))
 
 (defun smiley-toggle-extents (e)
   (interactive "e")
@@ -249,8 +250,7 @@ Note -- this function hasn't been implemented yet."
 ;; FIXME::
 (defun smiley-toggle-extents-ems (e)
   (interactive "e")
-  (error "This function hasn't been implemented yet.")
-)
+  (error "This function hasn't been implemented yet"))
 
 ;;;###autoload
 (defun smiley-buffer (&optional buffer st nd)
index 3bb9d9d..9b88f6c 100644 (file)
@@ -313,7 +313,7 @@ nil."
                     (if smime-CA-directory
                         (list "-CApath"
                               (expand-file-name smime-CA-directory))))))
-    (unless CAs (error "No CA configured."))
+    (unless CAs (error "No CA configured"))
     (with-current-buffer buffer
       (erase-buffer))
     (if (apply 'smime-call-openssl-region b e buffer "smime" "-verify"
index 368ab13..47fd574 100644 (file)
@@ -1,3 +1,16 @@
+2001-07-13 12:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi (RSS): Add.
+       From Christoph Conrad <cc@cli.de>.
+
+2001-07-13 08:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi (Incorporating Old Mail): Add index.
+
+2001-07-13 00:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi (Group Parameters): Add.
+
 2001-07-04  Simon Josefsson  <jas@extundo.com>
 
        * gnus.texi (IMAP): Add.
index 7283156..11c9d8e 100644 (file)
@@ -2785,6 +2785,23 @@ form \e$B$N\e(B @code{nil} \e$B$O$=$3$GI>2A$5$l$^$9!#\e(B
 \e$B%9$rDs6!$7$^$9\e(B)\e$B!#%H%T%C%/%Q%i%a!<%?$K$D$$$FFI$s$G$_$k$3$H$bLLGr$$$G$7$g\e(B
 \e$B$&\e(B (@pxref{Topic Parameters})\e$B!#\e(B
 
+\e$B%0%k!<%W%Q%i%a!<%?$O\e(B @code{gnus-parameters} \e$B$K@_Dj$9$k$3$H$b$G$-$^$9!#$G\e(B
+\e$B$b$$$/$D$+$N%Q%i%a!<%?!"Nc$($P\e(B @code{visible} \e$B$O8zNO$rH/4x$7$^$;$s!#Nc$G\e(B
+\e$B$9!#\e(B
+
+@example
+(setq gnus-parameters
+  '(("mail\\..*"  (gnus-show-threads nil)
+                  (gnus-use-scoring nil)
+                  (gnus-summary-line-format
+                        "%U%R%z%I%(%[%d:%ub%-20,20f%]%) %s\n")
+                  (gcc-self . t)
+                  (display . all))
+     ("mail\\.me" (gnus-use-scoring  t))
+     ("list\\..*" (total-expire . t)
+                  (broken-reply-to . t)))
+@end example
+
 @node Listing Groups
 @section \e$B%0%k!<%W$N0lMwI=<(\e(B
 @cindex group listing
@@ -6292,7 +6309,9 @@ Gnus \e$B$O$?$/$5$s$NJ}K!$G5-;v$rJ]B8$9$k;v$,$G$-$^$9!#0J2<$N$b$N$OHs>o$KN(\e(B
 \e$B$9\e(B (@code{gnus-summary-save-article-vm})\e$B!#\e(B
 
 @item O p
+@itemx |
 @kindex O p (\e$B35N,\e(B)
+@kindex | (\e$B35N,\e(B)
 @findex gnus-summary-pipe-output
 \e$B8=:_$N5-;v$r%Q%$%W$KJ]B8$7$^$9!#$&!<$s$H!"$"$N$)!";d$,8@$*$&$H$7$F$$$k;v\e(B
 \e$B$O!=!=8=:_$N5-;v$r%W%m%;%9$K%Q%$%W$9$k$H$$$&$3$H$G\e(B
@@ -11636,6 +11655,8 @@ nnml:mail.others:
 
 @node Incorporating Old Mail
 @subsection \e$B8E$$%a!<%k$r<h$j9~$`\e(B
+@cindex incorporating old mail
+@cindex import old mail
 
 \e$B$?$$$F$$$N?M$O?'!9$J%U%!%$%k%U%)!<%^%C%H$GC_@Q$5$l$?$?$/$5$s$N8E$$%a!<%k\e(B
 \e$B$,$"$k$G$7$g$&!#$b$7\e(B gnus \e$B$K?h$J\e(B gnus \e$B%a!<%k%P%C%/%(%s%I$N0l$D$r;H$&$h$&\e(B
@@ -12923,6 +12944,28 @@ Web Newspaper \e$B$K4X$9$k0J2<$N\e(B @code{nnshimbun} \e$BJQ?t$rJQ$($k$3$H$,2DG=$G$
     (if descr (concat "\n\t" (cdr descr)) "")))
 @end lisp
 
+\e$B0J2<$N%3!<%I$O!"35N,%P%C%U%!$+$iD>@\\e(B nnrss \e$B$N\e(B url \e$B$r%*!<%W%s$9$k$N$KJXMx\e(B
+\e$B$+$b$7$l$^$;$s!#\e(B
+@lisp
+(require 'browse-url)
+
+(defun browse-nnrss-url( arg )
+  (interactive "p")
+  (let ((url (assq nnrss-url-field
+                   (mail-header-extra
+                    (gnus-data-header
+                     (assq (gnus-summary-article-number)
+                           gnus-newsgroup-data))))))
+    (if url
+        (browse-url (cdr url))
+      (gnus-summary-scroll-up arg))))
+
+(eval-after-load "gnus"
+  #'(define-key gnus-summary-mode-map
+      (kbd "<RET>") 'browse-nnrss-url))
+(add-to-list 'nnmail-extra-headers nnrss-url-field)
+@end lisp
+
 @node Customizing w3
 @subsection w3 \e$B$N%+%9%?%^%$%:\e(B
 @cindex w3
index 420f8f3..6dc1cb1 100644 (file)
@@ -2771,6 +2771,21 @@ presents you with a Customize-like interface.  The latter helps avoid
 silly Lisp errors.)  You might also be interested in reading about topic
 parameters (@pxref{Topic Parameters}).
 
+Group parameters can be set in @code{gnus-parameters} too.  But some
+variables, such as @code{visible}, have no effect.  For example,
+
+@example
+(setq gnus-parameters
+  '(("mail\\..*"  (gnus-show-threads nil)
+                  (gnus-use-scoring nil)
+                  (gnus-summary-line-format
+                        "%U%R%z%I%(%[%d:%ub%-20,20f%]%) %s\n")
+                  (gcc-self . t)
+                  (display . all))
+     ("mail\\.me" (gnus-use-scoring  t))
+     ("list\\..*" (total-expire . t)
+                  (broken-reply-to . t)))
+@end example
 
 @node Listing Groups
 @section Listing Groups
@@ -6463,7 +6478,9 @@ Save the current article in a VM folder
 (@code{gnus-summary-save-article-vm}).
 
 @item O p
+@itemx |
 @kindex O p (Summary)
+@kindex | (Summary)
 @findex gnus-summary-pipe-output
 Save the current article in a pipe.  Uhm, like, what I mean is---Pipe
 the current article to a process (@code{gnus-summary-pipe-output}).
@@ -12298,6 +12315,8 @@ by @code{gnus-group-split-update}, this function will run
 
 @node Incorporating Old Mail
 @subsection Incorporating Old Mail
+@cindex incorporating old mail
+@cindex import old mail
 
 Most people have lots of old mail stored in various file formats.  If
 you have set up Gnus to read mail using one of the spiffy Gnus mail
@@ -13399,6 +13418,28 @@ the summary buffer.
     (if descr (concat "\n\t" (cdr descr)) "")))
 @end lisp
 
+The following code may be useful to open an nnrss url directly from the
+summary buffer.
+@lisp
+(require 'browse-url)
+
+(defun browse-nnrss-url( arg )
+  (interactive "p")
+  (let ((url (assq nnrss-url-field
+                   (mail-header-extra
+                    (gnus-data-header
+                     (assq (gnus-summary-article-number)
+                           gnus-newsgroup-data))))))
+    (if url
+        (browse-url (cdr url))
+      (gnus-summary-scroll-up arg))))
+
+(eval-after-load "gnus"
+  #'(define-key gnus-summary-mode-map
+      (kbd "<RET>") 'browse-nnrss-url))
+(add-to-list 'nnmail-extra-headers nnrss-url-field)
+@end lisp
+
 @node Customizing w3
 @subsection Customizing w3
 @cindex w3
diff --git a/todo b/todo
index e7ccdb9..daa6f67 100644 (file)
--- a/todo
+++ b/todo
@@ -1,6 +1,21 @@
 ;; Also know as the "wish list".  Some are done. For the others, no
 ;; promise when to be implemented.
 
+* Multiple charsets for topic names.
+
+* Allow specification of server in Newsgroups header
+  
+  [Kai wrote]
+
+  WIBNI I could put `Newsgroups: nntp+quimby:bla' into a message and
+  Gnus would know to post this message on my server `nntp:quimby' into
+  the group bla?  I think this would be way cool.
+
+  But Gnus would have to rewrite the Newsgroups header before actually
+  sending the posting.
+
+  Thanks for Micha Wiedenmann for this suggestion.
+
 * Understand mail-user-agent. Maybe gnus-mail-user-agent.
   
   [Done]