*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Mon, 1 Feb 1999 21:18:24 +0000 (21:18 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Mon, 1 Feb 1999 21:18:24 +0000 (21:18 +0000)
27 files changed:
lisp/ChangeLog
lisp/base64.el
lisp/binhex.el
lisp/gnus-art.el
lisp/gnus-cite.el
lisp/gnus-cus.el
lisp/gnus-group.el
lisp/gnus-kill.el
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-vm.el
lisp/gnus.el
lisp/mail-source.el
lisp/message.el
lisp/mm-bodies.el
lisp/mm-decode.el
lisp/mm-encode.el
lisp/mm-util.el
lisp/mm-uu.el
lisp/nnmail.el
lisp/nnml.el
lisp/smiley.el
lisp/uudecode.el
texi/ChangeLog
texi/gnus.texi
texi/message.texi

index ead5bb5..5fb51b3 100644 (file)
@@ -1,3 +1,80 @@
+Mon Feb  1 21:18:00 1999  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Pterodactyl Gnus v0.75 is released.
+
+1999-02-01 21:54:26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (article-display-x-face): Don't narrow to head.
+
+1999-02-01 21:48:39  Michael Cook  <cook@sightpath.com>
+
+       * gnus-cite.el (gnus-cited-lines-visible): Accept a cons.
+
+1999-02-01 20:59:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mail-source.el (mail-source-fetch-directory): Ignore
+       directories.
+
+       * gnus-cus.el (gnus-group-parameters): Addition.
+
+       * gnus-art.el (article-strip-banner): Do symbolic banners.
+       (article-strip-banner): New keystroke.
+
+1999-02-01 20:54:32  Michael Cook  <cook@sightpath.com>
+
+       * gnus-art.el (article-strip-banner): New command.
+
+1999-02-01 20:53:45  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (gnus-treat-strip-banners): New variable.
+
+1999-01-28 05:34:56  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * mail-source.el (mail-source-read-passwd): Use `read-passwd' if it
+       has been exist.
+
+Thu Jan 28 01:38:34 1999  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * message.el (message-draft-coding-system): Check coding-system.
+       * mm-util.el (mm-text-coding-system): Ditto.
+
+1999-01-28 12:11:31  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * mail-source.el (mail-source-fetch-pop): Save excursion.
+
+1999-01-28 08:14:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mail-source.el (mail-source-movemail-args): Not constant.
+       (mail-source-movemail-args): Removed.
+       (mail-source-fetch-with-program): New function.
+       (mail-source-fetch-pop): Use program and function.
+       (mail-source-movemail-program): Removed.
+
+       * gnus-art.el (gnus-treat-date-iso8601): New variable.
+       (gnus-treat-date-user-defined): New variable.
+
+1999-01-28 08:07:12  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * nnmail.el (nnmail-fix-eudora-headers): New function.
+
+1999-01-28 08:05:19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mm-bodies.el (mm-encode-body): Use mail-parse-charset.
+
+1999-01-27 08:06:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * smiley.el (smiley-deformed-regexp-alist): Removed =>.
+       (smiley-nosey-regexp-alist): Ditto.
+
+       * gnus-art.el (gnus-treatment-function-alist): Do
+       gnus-article-add-buttons-to-head later.
+       (gnus-treat-capitalize-sentences): New variable.
+       (article-capitalize-sentences): New command and keystroke.
+
+       * gnus-group.el (gnus-group-catchup-current): Do group.
+
+       * message.el (message-default-charset): Add group.
+
 Wed Jan 27 05:24:53 1999  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Pterodactyl Gnus v0.74 is released.
index 6cf78e0..6766e6f 100644 (file)
@@ -94,9 +94,8 @@ base64-encoder-program.")
                     (setq errstring (buffer-string))
                     (kill-buffer nil)
                     (cons status errstring)))))
-      (condition-case ()
-         (delete-file tempfile)
-       (error nil)))))
+      (ignore-errors
+       (delete-file tempfile)))))
 
 (if (string-match "XEmacs" emacs-version)
     (defalias 'base64-insert-char 'insert-char)
index b2f3bb4..2def26a 100644 (file)
@@ -3,7 +3,7 @@
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
 ;; Create Date: Oct 1, 1998
-;; $Revision: 5.4 $
+;; $Revision: 5.5 $
 ;; Time-stamp: <Tue Oct  6 23:48:38 EDT 1998 zsh>
 ;; Keywords: binhex
 
@@ -299,10 +299,8 @@ If HEADER-ONLY is non-nil only decode header and return filename."
                (insert-file-contents-literally file-name)))
          (error "Can not binhex")))
       (and work-buffer (kill-buffer work-buffer))
-      (condition-case ()
-         (if file-name (delete-file file-name))
-       (error))
-      )))
+      (ignore-errors
+       (if file-name (delete-file file-name))))))
 
 (provide 'binhex)
 
index fc6b49b..164fbed 100644 (file)
@@ -674,6 +674,12 @@ on parts -- for instance, adding Vcard info to a database."
   :group 'gnus-article-treat
   :type gnus-article-treat-custom)
 
+(defcustom gnus-treat-strip-banner t
+  "Strip banners from articles.
+The banner to be stripped is specified in the `banner' group parameter."
+  :group 'gnus-article-treat
+  :type gnus-article-treat-custom)
+
 (defcustom gnus-treat-highlight-headers 'head
   "Highlight the headers."
   :group 'gnus-article-treat
@@ -704,6 +710,17 @@ on parts -- for instance, adding Vcard info to a database."
   :group 'gnus-article-treat
   :type gnus-article-treat-custom)
 
+(defcustom gnus-treat-date-iso8601 nil
+  "Display the date in the ISO8601 format."
+  :group 'gnus-article-treat
+  :type gnus-article-treat-custom)
+
+(defcustom gnus-treat-date-user-defined nil
+  "Display the date in a user-defined format.
+The format is defined by the `gnus-article-time-format' variable."
+  :group 'gnus-article-treat
+  :type gnus-article-treat-custom)
+
 (defcustom gnus-treat-strip-trailing-blank-lines nil
   "Strip trailing blank lines."
   :group 'gnus-article-treat
@@ -747,16 +764,27 @@ on parts -- for instance, adding Vcard info to a database."
   :group 'gnus-article-treat
   :type gnus-article-treat-custom)
 
+(defcustom gnus-treat-capitalize-sentences nil
+  "Capitalize sentence-starting words."
+  :group 'gnus-article-treat
+  :type gnus-article-treat-custom)
+
+(defcustom gnus-treat-fill-long-lines nil
+  "Fill long lines."
+  :group 'gnus-article-treat
+  :type gnus-article-treat-custom)
+
 ;;; Internal variables
 
 (defvar article-goto-body-goes-to-point-min-p nil)
 
 (defvar gnus-article-mime-handle-alist-1 nil)
 (defvar gnus-treatment-function-alist
-  '((gnus-treat-highlight-signature gnus-article-highlight-signature)
+  '((gnus-treat-strip-banner gnus-article-strip-banner)
+    (gnus-treat-highlight-signature gnus-article-highlight-signature)
     (gnus-treat-buttonize gnus-article-add-buttons)
-    (gnus-treat-buttonize-head gnus-article-add-buttons-to-head)
     (gnus-treat-fill-article gnus-article-fill-cited-article)
+    (gnus-treat-fill-long-lines gnus-article-fill-long-lines)
     (gnus-treat-strip-cr gnus-article-remove-cr)
     (gnus-treat-hide-headers gnus-article-hide-headers)
     (gnus-treat-hide-boring-headers gnus-article-hide-boring-headers)
@@ -772,6 +800,8 @@ on parts -- for instance, adding Vcard info to a database."
     (gnus-treat-date-local gnus-article-date-local)
     (gnus-treat-date-lapsed gnus-article-date-lapsed)
     (gnus-treat-date-original gnus-article-date-original)
+    (gnus-treat-date-user-defined gnus-article-date-user)
+    (gnus-treat-date-iso8601 gnus-article-date-iso8601)
     (gnus-treat-strip-trailing-blank-lines
      gnus-article-remove-trailing-blank-lines)
     (gnus-treat-strip-leading-blank-lines
@@ -780,6 +810,7 @@ on parts -- for instance, adding Vcard info to a database."
      gnus-article-strip-multiple-blank-lines)
     (gnus-treat-strip-blank-lines gnus-article-strip-blank-lines)
     (gnus-treat-overstrike gnus-article-treat-overstrike)
+    (gnus-treat-buttonize-head gnus-article-add-buttons-to-head)
     (gnus-treat-display-xface gnus-article-display-x-face)
     (gnus-treat-display-smileys gnus-smiley-display)
     (gnus-treat-display-picons gnus-article-display-picons)))
@@ -1181,6 +1212,17 @@ MAP is an alist where the elements are on the form (\"from\" \"to\")."
              (widen))
            (forward-line 1)))))))
 
+(defun article-capitalize-sentences ()
+  "Capitalize the first word in each sentence."
+  (interactive)
+  (save-excursion
+    (let ((buffer-read-only nil)
+         (paragraph-start "^[\n\^L]"))
+      (article-goto-body)
+      (while (not (eobp))
+       (capitalize-word 1)
+       (forward-sentence)))))
+
 (defun article-remove-cr ()
   "Translate CRLF pairs into LF, and then CR into LF.."
   (interactive)
@@ -1221,7 +1263,7 @@ MAP is an alist where the elements are on the form (\"from\" \"to\")."
          (case-fold-search t)
          from last)
       (save-restriction
-       (nnheader-narrow-to-headers)
+       (goto-char (point-min))
        (setq from (message-fetch-field "from"))
        (goto-char (point-min))
        (while (and gnus-article-x-face-command
@@ -1281,9 +1323,8 @@ If PROMPT (the prefix), prompt for a coding system to use."
             (case-fold-search t)
             (ct (message-fetch-field "Content-Type" t))
             (cte (message-fetch-field "Content-Transfer-Encoding" t))
-            (ctl (and ct (condition-case ()
-                             (mail-header-parse-content-type ct)
-                           (error nil))))
+            (ctl (and ct (ignore-errors
+                           (mail-header-parse-content-type ct))))
             (charset (cond
                       (prompt
                        (mm-read-coding-system "Charset to decode: "))
@@ -1396,6 +1437,27 @@ always hide."
             (gnus-article-hide-text-type
              (match-beginning 0) (match-end 0) 'pem))))))
 
+(defun article-strip-banner ()
+  "Strip the banner specified by the `banner' group parameter."
+  (interactive)
+  (save-excursion
+    (save-restriction
+    (let ((inhibit-point-motion-hooks t)
+         (banner (gnus-group-get-parameter gnus-newsgroup-name 'banner))
+         (gnus-signature-limit nil)
+         buffer-read-only beg end)
+      (when banner
+       (article-goto-body)
+       (cond
+        ((eq banner 'signature)
+         (when (gnus-article-narrow-to-signature)
+           (widen)
+           (forward-line -1)
+           (delete-region (point) (point-max))))
+        ((stringp banner)
+         (while (re-search-forward banner nil t)
+           (delete-region (match-beginning 0) (match-end 0))))))))))
+
 (defun article-hide-signature (&optional arg)
   "Hide the signature in the current article.
 If given a negative prefix, always show; if given a positive prefix,
@@ -1424,6 +1486,8 @@ always hide."
   "Place point at the start of the body."
   (goto-char (point-min))
   (cond
+   ;; This variable is only bound when dealing with separate
+   ;; MIME body parts.
    (article-goto-body-goes-to-point-min-p
     t)
    ((search-forward "\n\n" nil t)
@@ -2167,11 +2231,13 @@ If variable `gnus-use-long-file-name' is non-nil, it is
      article-hide-boring-headers
      article-treat-overstrike
      article-fill-long-lines
+     article-capitalize-sentences
      article-remove-cr
      article-display-x-face
      article-de-quoted-unreadable
      article-mime-decode-quoted-printable
      article-hide-pgp
+     article-strip-banner
      article-hide-pem
      article-hide-signature
      article-remove-trailing-blank-lines
index 8845d19..7916ce2 100644 (file)
@@ -58,10 +58,13 @@ article has citations."
   :type 'string)
 
 (defcustom gnus-cited-lines-visible nil
-  "The number of lines of hidden cited text to remain visible."
+  "The number of lines of hidden cited text to remain visible.
+Or a pair (cons) of numbers which are the number of lines at the top
+and bottom of the text, respectively, to remain visible."
   :group 'gnus-cite
   :type '(choice (const :tag "none" nil)
-                integer))
+                integer
+                (cons :tag "Top and Bottom" integer integer)))
 
 (defcustom gnus-cite-parse-max-size 25000
   "Maximum article size (in bytes) where parsing citations is allowed.
@@ -486,10 +489,18 @@ always hide."
          ;; Skip past lines we want to leave visible.
          (when (and beg end gnus-cited-lines-visible)
            (goto-char beg)
-           (forward-line gnus-cited-lines-visible)
+           (forward-line (if (consp gnus-cited-lines-visible)
+                             (car gnus-cited-lines-visible)
+                           gnus-cited-lines-visible))
            (if (>= (point) end)
                (setq beg nil)
-             (setq beg (point-marker))))
+             (setq beg (point-marker))
+             (when (consp gnus-cited-lines-visible)
+               (goto-char end)
+               (forward-line (- (cdr gnus-cited-lines-visible)))
+               (if (<= (point) beg)
+                   (setq beg nil)
+                 (setq end (point-marker))))))
          (when (and beg end)
            ;; We use markers for the end-points to facilitate later
            ;; wrapping and mangling of text.
index 4a63495..a560e2a 100644 (file)
@@ -104,6 +104,11 @@ is present and a string, this string will be inserted literally as a
 `gcc' header (this symbol takes precedence over any default `Gcc'
 rules as described later).")
 
+    (banner (choice :tag "Banner"
+                   (const signature)
+                   string ) "\
+Banner to be removed from articles.")
+a
     (auto-expire (const :tag "Automatic Expire" t) "\
 All articles that are read will be marked as expirable.")
 
index 2c9bb99..0af00bd 100644 (file)
@@ -2461,7 +2461,7 @@ up is returned."
                   (car groups)
                 (format "these %d groups" (length groups)))))))
        n
-      (while (setq groups (pop groups))
+      (while (setq group (pop groups))
        ;; Virtual groups have to be given special treatment.
        (let ((method (gnus-find-method-for-group group)))
          (when (eq 'nnvirtual (car method))
index d0cbe27..6121552 100644 (file)
@@ -702,9 +702,8 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score"
                 (and (car entry)
                      (or (eq (car entry) t)
                          (not (zerop (car entry))))))
-       (condition-case ()
-           (gnus-summary-read-group group nil t nil t)
-         (error nil))
+       (ignore-errors
+         (gnus-summary-read-group group nil t nil t))
        (when (eq (current-buffer) (get-buffer gnus-summary-buffer))
          (gnus-summary-exit))))
     ;; Exit Emacs.
index 34c8e98..4c65009 100644 (file)
@@ -592,11 +592,10 @@ The following commands are available:
          (while (re-search-forward
                  "\\(^[^ \t]+\\)[ \t]+[0-9]+[ \t]+[0-9]+" nil t)
            (goto-char (match-end 1))
-           (condition-case ()
-               (push (cons (match-string 1)
-                           (max 0 (- (1+ (read cur)) (read cur))))
-                     groups)
-             (error nil)))))
+           (ignore-errors
+             (push (cons (match-string 1)
+                         (max 0 (- (1+ (read cur)) (read cur))))
+                   groups)))))
       (setq groups (sort groups
                         (lambda (l1 l2)
                           (string< (car l1) (car l2)))))
index b46aac0..bcd0148 100644 (file)
@@ -47,11 +47,10 @@ If a file with the `.el' or `.elc' suffixes exists, it will be read instead."
   :type 'file)
 
 (defcustom gnus-site-init-file
-  (condition-case nil
-      (concat (file-name-directory
-              (directory-file-name installation-directory))
-             "site-lisp/gnus-init")
-    (error nil))
+  (ignore-errors
+    (concat (file-name-directory
+            (directory-file-name installation-directory))
+           "site-lisp/gnus-init"))
   "*The site-wide Gnus Emacs-Lisp startup file name, or nil if none.
 If a file with the `.el' or `.elc' suffixes exists, it will be read instead."
   :group 'gnus-start
index 82d9d65..8a33d84 100644 (file)
@@ -1445,6 +1445,7 @@ increase the score of each group you read."
     "e" gnus-article-emphasize
     "w" gnus-article-fill-cited-article
     "Q" gnus-article-fill-long-lines
+    "C" gnus-article-capitalize-sentences
     "c" gnus-article-remove-cr
     "q" gnus-article-de-quoted-unreadable
     "f" gnus-article-display-x-face
@@ -1463,6 +1464,7 @@ increase the score of each group you read."
     "c" gnus-article-hide-citation
     "C" gnus-article-hide-citation-in-followups
     "p" gnus-article-hide-pgp
+    "B" gnus-article-strip-banner
     "P" gnus-article-hide-pem
     "\C-c" gnus-article-hide-citation-maybe)
 
@@ -1582,6 +1584,7 @@ increase the score of each group you read."
               ["Signature" gnus-article-hide-signature t]
               ["Citation" gnus-article-hide-citation t]
               ["PGP" gnus-article-hide-pgp t]
+             ["Banner" gnus-article-strip-banner t]
               ["Boring headers" gnus-article-hide-boring-headers t])
              ("Highlight"
               ["All" gnus-article-highlight t]
@@ -1614,6 +1617,7 @@ increase the score of each group you read."
               ["Emphasis" gnus-article-emphasize t]
               ["Word wrap" gnus-article-fill-cited-article t]
              ["Fill long lines" gnus-article-fill-long-lines t]
+             ["Capitalize sentences" gnus-article-capitalize-sentences t]
               ["CR" gnus-article-remove-cr t]
               ["Show X-Face" gnus-article-display-x-face t]
               ["Quoted-Printable" gnus-article-de-quoted-unreadable t]
@@ -1992,9 +1996,8 @@ The following commands are available:
 
 (defun gnus-summary-make-local-variables ()
   "Make all the local summary buffer variables."
-  (let ((locals gnus-summary-local-variables)
-       global local)
-    (while (setq local (pop locals))
+  (let (global)
+    (dolist (local gnus-summary-local-variables)
       (if (consp local)
          (progn
            (if (eq (cdr local) 'global)
@@ -2002,11 +2005,9 @@ The following commands are available:
                (setq global (symbol-value (car local)))
              ;; Use the value from the list.
              (setq global (eval (cdr local))))
-           (make-local-variable (car local))
-           (set (car local) global))
+           (set (make-local-variable (car local)) global))
        ;; Simple nil-valued local variable.
-       (make-local-variable local)
-       (set local nil)))))
+       (set (make-local-variable local) nil)))))
 
 (defun gnus-summary-clear-local-variables ()
   (let ((locals gnus-summary-local-variables))
@@ -6946,7 +6947,7 @@ article.  If BACKWARD (the prefix) is non-nil, search backward instead."
 If N is negative, print the N previous articles.  If N is nil and articles
 have been marked with the process mark, print these instead.
 
-If the optional second argument FILENAME is nil, send the image to the
+If the optional first argument FILENAME is nil, send the image to the
 printer.  If FILENAME is a string, save the PostScript image in a file with
 that name.  If FILENAME is a number, prompt the user for the name of the file
 to save in."
@@ -8643,10 +8644,9 @@ The variable `gnus-default-article-saver' specifies the saver function."
         (save-buffer (save-excursion
                        (nnheader-set-temp-buffer " *Gnus Save*")))
         (num (length articles))
-        header article file)
-    (while articles
-      (setq header (gnus-summary-article-header
-                   (setq article (pop articles))))
+        header file)
+    (dolist (article articles)
+      (setq header (gnus-summary-article-header article))
       (if (not (vectorp header))
          ;; This is a pseudo-article.
          (if (assq 'name header)
index 6fe4b26..c611582 100644 (file)
@@ -36,6 +36,7 @@
 (require 'gnus-msg)
 
 (eval-when-compile
+  (require 'cl)
   (autoload 'vm-mode "vm")
   (autoload 'vm-save-message "vm")
   (autoload 'vm-forward-message "vm")
   "Inhibit loading `win-vm' if using a window-system.
 Has to be set before gnus-vm is loaded.")
 
-(or gnus-vm-inhibit-window-system
-    (condition-case nil
-       (when window-system
-         (require 'win-vm))
-      (error nil)))
+(unless gnus-vm-inhibit-window-system
+  (ignore-errors
+    (when window-system
+      (require 'win-vm))))
 
 (when (not (featurep 'vm))
   (load "vm"))
index d008715..395cba4 100644 (file)
@@ -259,7 +259,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "0.74"
+(defconst gnus-version-number "0.75"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number)
@@ -865,11 +865,10 @@ used to 899, you would say something along these lines:
                 (kill-buffer (current-buffer))))))))
 
 (defcustom gnus-select-method
-  (condition-case nil
+  (ignore-errors
     (nconc
-     (list 'nntp (or (condition-case nil
-                        (gnus-getenv-nntpserver)
-                      (error nil))
+     (list 'nntp (or (ignore-errors
+                      (gnus-getenv-nntpserver))
                     (when (and gnus-default-nntp-server
                                (not (string= gnus-default-nntp-server "")))
                       gnus-default-nntp-server)
@@ -877,8 +876,7 @@ used to 899, you would say something along these lines:
      (if (or (null gnus-nntp-service)
             (equal gnus-nntp-service "nntp"))
         nil
-       (list gnus-nntp-service)))
-    (error nil))
+       (list gnus-nntp-service))))
   "*Default method for selecting a newsgroup.
 This variable should be a list, where the first element is how the
 news is to be fetched, the second is the address.
index 7c39528..ed23bab 100644 (file)
   "The mail-fetching library."
   :group 'gnus)
 
-(defcustom mail-source-movemail-program "movemail"
-  "*A command to be executed to move mail from the inbox.
-The default is \"movemail\".
-
-This can also be a function.  In that case, the function will be
-called with two parameters -- the name of the INBOX file, and the file
-to be moved to."
-  :group 'mail-source
-  :type '(choice string
-                function))
-
-(defcustom mail-source-movemail-args nil
-  "*Extra arguments to give to `mail-source-movemail-program'  to move mail from the inbox.
-The default is nil."
-  :group 'mail-source
-  :type '(choice string
-                (constant nil)))
-
 (defcustom mail-source-crash-box "~/.emacs-mail-crash-box"
   "File where mail will be stored while processing it."
   :group 'mail-source
@@ -88,6 +70,9 @@ The default is nil."
        (:server (getenv "MAILHOST"))
        (:port "pop3")
        (:user (or (user-login-name) (getenv "LOGNAME") (getenv "USER")))
+       (:program)
+       (:args)
+       (:function)
        (:password))
       (maildir
        (:path)))
@@ -168,16 +153,17 @@ of the `let' form."
 CALLBACK will be called with the name of the file where (some of)
 the mail from SOURCE is put.
 Return the number of files that were found."
-  (let ((function (cadr (assq (car source) mail-source-fetcher-alist)))
-       (found 0))
-    (unless function
-      (error "%S is an invalid mail source specification" source))
-    ;; If there's anything in the crash box, we do it first.
-    (when (file-exists-p mail-source-crash-box)
-      (message "Processing mail from %s..." mail-source-crash-box)
-      (setq found (mail-source-callback
-                  callback mail-source-crash-box)))
-    (+ found (funcall function source callback))))
+  (save-excursion
+    (let ((function (cadr (assq (car source) mail-source-fetcher-alist)))
+         (found 0))
+      (unless function
+       (error "%S is an invalid mail source specification" source))
+      ;; If there's anything in the crash box, we do it first.
+      (when (file-exists-p mail-source-crash-box)
+       (message "Processing mail from %s..." mail-source-crash-box)
+       (setq found (mail-source-callback
+                    callback mail-source-crash-box)))
+      (+ found (funcall function source callback)))))
 
 (defun mail-source-make-complex-temp-name (prefix)
   (let ((newname (make-temp-name prefix))
@@ -197,16 +183,17 @@ Pass INFO on to CALLBACK."
          (delete-file mail-source-crash-box))
        0)
     (funcall callback mail-source-crash-box info)
-    (if mail-source-delete-incoming
-       (when (file-exists-p mail-source-crash-box)
-         (delete-file mail-source-crash-box))
-      (let ((incoming
-            (mail-source-make-complex-temp-name
-             (expand-file-name
-              "Incoming" mail-source-directory))))
-       (unless (file-exists-p (file-name-directory incoming))
-         (make-directory (file-name-directory incoming) t))
-       (rename-file mail-source-crash-box incoming t)))
+    (when (file-exists-p mail-source-crash-box)
+      ;; Delete or move the incoming mail out of the way.
+      (if mail-source-delete-incoming
+         (delete-file mail-source-crash-box)
+       (let ((incoming
+              (mail-source-make-complex-temp-name
+               (expand-file-name
+                "Incoming" mail-source-directory))))
+         (unless (file-exists-p (file-name-directory incoming))
+           (make-directory (file-name-directory incoming) t))
+         (rename-file mail-source-crash-box incoming t))))
     1))
 
 (defun mail-source-movemail (from to)
@@ -236,28 +223,14 @@ Pass INFO on to CALLBACK."
        (unwind-protect
            (save-excursion
              (setq errors (generate-new-buffer " *mail source loss*"))
-             (buffer-disable-undo errors)
-             (if (functionp mail-source-movemail-program)
-                 (condition-case err
-                     (progn
-                       (funcall mail-source-movemail-program from to)
-                       (setq result 0))
-                   (error
-                    (save-excursion
-                      (set-buffer errors)
-                      (insert (prin1-to-string err))
-                      (setq result 255))))
-               (let ((default-directory "/"))
-                 (setq result
-                       (apply
-                        'call-process
-                        (append
-                         (list
-                          (expand-file-name
-                           mail-source-movemail-program exec-directory)
-                          nil errors nil from to)
-                         (when mail-source-movemail-args
-                           mail-source-movemail-args))))))
+             (let ((default-directory "/"))
+               (setq result
+                     (apply
+                      'call-process
+                      (append
+                       (list
+                        (expand-file-name "movemail" exec-directory)
+                        nil errors nil from to)))))
              (when (file-exists-p to)
                (set-file-modes to mail-source-default-file-modes))
              (if (and (not (buffer-modified-p errors))
@@ -298,13 +271,21 @@ If ARGS, PROMPT is used as an argument to `format'."
             (apply 'format prompt args)
           prompt)))
     (unless mail-source-read-passwd
-      (if (load "passwd" t)
+      (if (or (fboundp 'read-passwd) (load "passwd" t))
          (setq mail-source-read-passwd 'read-passwd)
        (unless (fboundp 'ange-ftp-read-passwd)
          (autoload 'ange-ftp-read-passwd "ange-ftp"))
        (setq mail-source-read-passwd 'ange-ftp-read-passwd)))
     (funcall mail-source-read-passwd prompt)))
 
+(defun mail-source-fetch-with-program (program args to)
+  (zerop (apply 'call-process program nil nil nil
+               (append (split-string args) (list to)))))
+
+;;;
+;;; Different fetchers
+;;;
+
 (defun mail-source-fetch-file (source callback)
   "Fetcher for single-file sources."
   (mail-source-bind (file source)
@@ -316,14 +297,12 @@ If ARGS, PROMPT is used as an argument to `format'."
 (defun mail-source-fetch-directory (source callback)
   "Fetcher for directory sources."
   (mail-source-bind (directory source)
-    (let ((files (directory-files
-                 path t
-                 (concat (regexp-quote suffix) "$")))
-         (found 0)
-         (mail-source-string (format "directory:%s" path))
-         file)
-      (while (setq file (pop files))
-       (when (mail-source-movemail file mail-source-crash-box)
+    (let ((found 0)
+         (mail-source-string (format "directory:%s" path)))
+      (dolist (file (directory-files
+                    path t (concat (regexp-quote suffix) "$")))
+       (when (and (file-regular-p file)
+                  (mail-source-movemail file mail-source-crash-box))
          (incf found (mail-source-callback callback file))))
       found)))
 
@@ -339,17 +318,29 @@ If ARGS, PROMPT is used as an argument to `format'."
                 (format "Password for %s at %s: " user server))))
       (unless (assoc from mail-source-password-cache)
        (push (cons from password) mail-source-password-cache))
-      (let ((pop3-password password)
-           (pop3-maildrop user)
-           (pop3-mailhost server))
-       (if (pop3-movemail mail-source-crash-box)
-           (mail-source-callback callback server)
-         ;; We nix out the password in case the error
-         ;; was because of a wrong password being given.
-         (setq mail-source-password-cache
-               (delq (assoc from mail-source-password-cache)
-                     mail-source-password-cache))
-         0)))))
+      (when server
+       (setenv "MAILHOST" server))
+      (if (cond
+          (program
+           (when (listp args)
+             (setq args (eval args)))
+           (mail-source-fetch-with-program
+            program args mail-source-crash-box))
+          (function
+             (funcall function mail-source-crash-box))
+          ;; The default is to use pop3.el.
+          (t
+           (let ((pop3-password password)
+                 (pop3-maildrop user)
+                 (pop3-mailhost server))
+             (save-excursion (pop3-movemail mail-source-crash-box)))))
+         (mail-source-callback callback server)
+       ;; We nix out the password in case the error
+       ;; was because of a wrong password being given.
+       (setq mail-source-password-cache
+             (delq (assoc from mail-source-password-cache)
+                   mail-source-password-cache))
+       0))))
 
 (provide 'mail-source)
 
index 517a0e2..5a84b91 100644 (file)
@@ -624,11 +624,10 @@ actually occur."
 ;; Ignore errors in case this is used in Emacs 19.
 ;; Don't use ignore-errors because this is copied into loaddefs.el.
 ;;;###autoload
-(condition-case nil
-    (define-mail-user-agent 'message-user-agent
-      'message-mail 'message-send-and-exit
-      'message-kill-buffer 'message-send-hook)
-  (error nil))
+(ignore-errors
+  (define-mail-user-agent 'message-user-agent
+    'message-mail 'message-send-and-exit
+    'message-kill-buffer 'message-send-hook))
 
 (defvar message-mh-deletable-headers '(Message-ID Date Lines Sender)
   "If non-nil, delete the deletable headers before feeding to mh.")
@@ -667,7 +666,9 @@ Valid valued are `unique' and `unsent'."
                 (const :tag "unsent" unsent)))
 
 (defcustom message-default-charset nil
-  "Default charset used in non-MULE XEmacsen.")
+  "Default charset used in non-MULE XEmacsen."
+  :group 'message
+  :type 'symbol)
 
 ;;; Internal variables.
 ;;; Well, not really internal.
@@ -884,7 +885,7 @@ The cdr of ech entry is a function for applying the face to a region.")
   (cond
    ((not (fboundp 'coding-system-p)) nil)
    ((coding-system-p 'emacs-mule) 'emacs-mule)
-   ((coding-system-p 'escape-quoted) 'escape-quoted)
+   ((memq 'escape-quoted (mm-get-coding-system-list)) 'escape-quoted)
    ((coding-system-p 'no-conversion) 'no-conversion)
    (t nil))
   "Coding system to compose mail.")
index b41d5de..c9b24b5 100644 (file)
@@ -51,7 +51,8 @@ If no encoding was done, nil is returned."
       (save-excursion
        (goto-char (point-min))
        (if (re-search-forward "[^\x0-\x7f]" nil t)
-           (mm-read-charset "Charset used in the article: ")
+           (or mail-parse-charset
+               (mm-read-charset "Charset used in the article: "))
          ;; The logic in `mml-generate-mime-1' confirms that it's OK
          ;; to return nil here.
          nil))
index 7ff1433..79fcadb 100644 (file)
        (when (or no-strict-mime
                  (mail-fetch-field "mime-version"))
          (setq ct (mail-fetch-field "content-type")
-               ctl (condition-case () (mail-header-parse-content-type ct)
-                     (error nil))
+               ctl (ignore-errors (mail-header-parse-content-type ct))
                cte (mail-fetch-field "content-transfer-encoding")
                cd (mail-fetch-field "content-disposition")
                description (mail-fetch-field "content-description")
              (not (string-match "/" (car ctl))))
          (mm-dissect-singlepart
           '("text/plain") nil no-strict-mime
-          (and cd (condition-case ()
-                      (mail-header-parse-content-disposition cd)
-                    (error nil)))
+          (and cd (ignore-errors (mail-header-parse-content-disposition cd)))
           description)
        (setq type (split-string (car ctl) "/"))
        (setq subtype (cadr type)
                                        (mail-header-remove-comments
                                         cte)))))
            no-strict-mime
-           (and cd (condition-case ()
-                       (mail-header-parse-content-disposition cd)
-                     (error nil)))
+           (and cd (ignore-errors (mail-header-parse-content-disposition cd)))
            description id))))
        (when id
          (when (string-match " *<\\(.*\\)> *" id)
@@ -368,30 +363,23 @@ external if displayed external."
   "Remove the displayed MIME part represented by HANDLE."
   (when (listp handle)
     (let ((object (mm-handle-undisplayer handle)))
-      (condition-case ()
-         (cond
-          ;; Internally displayed part.
-          ((mm-annotationp object)
-           (delete-annotation object))
-          ((or (functionp object)
-               (and (listp object)
-                    (eq (car object) 'lambda)))
-           (funcall object))
-          ;; Externally displayed part.
-          ((consp object)
-           (condition-case ()
-               (delete-file (car object))
-             (error nil))
-           (condition-case ()
-               (delete-directory (file-name-directory (car object)))
-             (error nil))
-           (condition-case ()
-               (kill-buffer (cdr object))
-             (error nil)))
-          ((bufferp object)
-           (when (buffer-live-p object)
-             (kill-buffer object))))
-       (error nil))
+      (ignore-errors
+       (cond
+        ;; Internally displayed part.
+        ((mm-annotationp object)
+         (delete-annotation object))
+        ((or (functionp object)
+             (and (listp object)
+                  (eq (car object) 'lambda)))
+         (funcall object))
+        ;; Externally displayed part.
+        ((consp object)
+         (ignore-errors (delete-file (car object)))
+         (ignore-errors (delete-directory (file-name-directory (car object))))
+         (ignore-errors (kill-buffer (cdr object))))
+        ((bufferp object)
+         (when (buffer-live-p object)
+           (kill-buffer object)))))
       (mm-handle-set-undisplayer handle nil))))
 
 (defun mm-display-inline (handle)
index b5a4b3b..0846d92 100644 (file)
     )
    ((null encoding)
     )
-   ;;((eq encoding 'x-uuencode)
-   ;; (condition-case ()
-   ;;  (uudecode-encode-region (point-min) (point-max))
-   ;;   (error nil)))
    ((functionp encoding)
-    (condition-case ()
-       (funcall encoding (point-min) (point-max))
-      (error nil)))
+    (ignore-errors (funcall encoding (point-min) (point-max))))
    (t
     (message "Unknown encoding %s; defaulting to 8bit" encoding))))
 
index 80f1989..6c597db 100644 (file)
@@ -39,7 +39,7 @@
   (cond
    ((not (fboundp 'coding-system-p)) nil)
    (mm-running-xemacs  ;; XEmacs
-    (and (coding-system-p 'no-conversion) 'no-conversion))
+    'no-conversion)
    (mm-running-ntemacs ;; NTEmacs
     (and (coding-system-p 'raw-text-dos) 'raw-text-dos))
    ((coding-system-p 'raw-text) 'raw-text) ;; Emacs
index 0fd8b1f..59f809b 100644 (file)
@@ -2,7 +2,7 @@
 ;; Copyright (c) 1998 by Shenghuo Zhu <zsh@cs.rochester.edu>
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
-;; $Revision: 5.8 $
+;; $Revision: 5.9 $
 ;; Keywords: news postscript uudecode binhex shar
 
 ;; This file is not part of GNU Emacs, but the same permissions
@@ -84,8 +84,7 @@ This can be either \"inline\" or \"attachment\".")
        (when (and (mail-fetch-field "mime-version")
                   (setq ct (mail-fetch-field "content-type")))
          (setq cte (message-fetch-field "content-transfer-encoding" t)
-               ctl (condition-case () (mail-header-parse-content-type ct)
-                     (error nil))
+               ctl (ignore-errors (mail-header-parse-content-type ct))
                charset (and ctl (mail-content-type-get ctl 'charset)))
          (if (stringp cte)
              (setq cte (intern (downcase (mail-header-remove-whitespace
@@ -117,9 +116,8 @@ This can be either \"inline\" or \"attachment\".")
          (setq end-char (point))
          (when (or (not (eq type 'binhex))
                    (setq file-name
-                         (condition-case nil
-                             (binhex-decode-region start-char end-char t)
-                           (error nil))))
+                         (ignore-errors
+                           (binhex-decode-region start-char end-char t))))
            (if (> start-char text-start)
                (push
                 (mm-make-handle (mm-uu-copy-to-buffer text-start start-char)
index c7e37c2..fa88651 100644 (file)
@@ -1000,6 +1000,15 @@ Return the number of characters in the body."
   "Translate TAB characters into SPACE characters."
   (subst-char-in-region (point-min) (point-max) ?\t ?  t))
 
+(defun nnmail-fix-eudora-headers ()
+  "Eudora has a broken References line, but an OK In-Reply-To."
+  (goto-char (point-min))
+  (when (re-search-forward "^X-Mailer:.*Eudora" nil t)
+    (goto-char (point-min))
+    (when (re-search-forward "^References:" nil t)
+      (beginning-of-line)
+      (insert "X-Gnus-Broken-Eudora-"))))
+
 ;;; Utility functions
 
 (defun nnmail-split-fancy ()
@@ -1359,9 +1368,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
            ((numberp days)
             (setq days (days-to-time days))
             ;; Compare the time with the current time.
-            (condition-case ()
-                (time-less-p days (time-since time))
-              (error nil)))))))
+            (ignore-errors (time-less-p days (time-since time))))))))
 
 (defun nnmail-check-syntax ()
   "Check (and modify) the syntax of the message in the current buffer."
index 5304865..ed3e365 100644 (file)
@@ -142,9 +142,7 @@ all.  This may very well take some time.")
 (deffoo nnml-open-server (server &optional defs)
   (nnoo-change-server 'nnml server defs)
   (when (not (file-exists-p nnml-directory))
-    (condition-case ()
-       (make-directory nnml-directory t)
-      (error)))
+    (ignore-errors (make-directory nnml-directory t)))
   (cond
    ((not (file-exists-p nnml-directory))
     (nnml-close-server)
@@ -368,16 +366,14 @@ all.  This may very well take some time.")
     (let ((chars (nnmail-insert-lines))
          (art (concat (int-to-string article) "\t"))
          headers)
-      (when (condition-case ()
-               (progn
-                 (nnmail-write-region
-                  (point-min) (point-max)
-                  (or (nnml-article-to-file article)
-                      (concat nnml-current-directory
-                              (int-to-string article)))
-                  nil (if (nnheader-be-verbose 5) nil 'nomesg))
-                 t)
-             (error nil))
+      (when (ignore-errors
+             (nnmail-write-region
+              (point-min) (point-max)
+              (or (nnml-article-to-file article)
+                  (concat nnml-current-directory
+                          (int-to-string article)))
+              nil (if (nnheader-be-verbose 5) nil 'nomesg))
+             t)
        (setq headers (nnml-parse-head chars article))
        ;; Replace the NOV line in the NOV file.
        (save-excursion
@@ -418,9 +414,7 @@ all.  This may very well take some time.")
          (nnheader-message 5 "Deleting article %s in %s..." article group)
          (funcall nnmail-delete-file-function article))))
     ;; Try to delete the directory itself.
-    (condition-case ()
-       (delete-directory nnml-current-directory)
-      (error nil)))
+    (ignore-errors (delete-directory nnml-current-directory)))
   ;; Remove the group from all structures.
   (setq nnml-group-alist
        (delq (assoc group nnml-group-alist) nnml-group-alist)
@@ -434,11 +428,9 @@ all.  This may very well take some time.")
   (nnml-possibly-change-directory group server)
   (let ((new-dir (nnmail-group-pathname new-name nnml-directory))
        (old-dir (nnmail-group-pathname group nnml-directory)))
-    (when (condition-case ()
-             (progn
-               (make-directory new-dir t)
-               t)
-           (error nil))
+    (when (ignore-errors
+           (make-directory new-dir t)
+           t)
       ;; We move the articles file by file instead of renaming
       ;; the directory -- there may be subgroups in this group.
       ;; One might be more clever, I guess.
@@ -453,9 +445,7 @@ all.  This may very well take some time.")
        (when (file-exists-p overview)
          (rename-file overview (concat new-dir nnml-nov-file-name))))
       (when (<= (length (directory-files old-dir)) 2)
-       (condition-case ()
-           (delete-directory old-dir)
-         (error nil)))
+       (ignore-errors (delete-directory old-dir)))
       ;; That went ok, so we change the internal structures.
       (let ((entry (assoc group nnml-group-alist)))
        (when entry
@@ -541,9 +531,7 @@ all.  This may very well take some time.")
          (setq found t)
          ;; We return the article number.
          (setq number
-               (condition-case ()
-                   (read (current-buffer))
-                 (error nil)))))
+               (ignore-errors (read (current-buffer))))))
       number)))
 
 (defun nnml-retrieve-headers-with-nov (articles &optional fetch-old)
index cabebf0..d227e26 100644 (file)
@@ -63,7 +63,7 @@
     ("\\(:-+\\]+\\)\\W" 1 "FaceGoofy.xpm")
     ("\\(:-*D\\)\\W" 1 "FaceGrinning.xpm")
     ("\\(:-*[)>}»]+\\)\\W" 1 "FaceHappy.xpm")
-    ("\\(=[)>»]+\\)\\W" 1 "FaceHappy.xpm")
+    ("\\(=[)»]+\\)\\W" 1 "FaceHappy.xpm")
     ("\\(:-*[/\\\"]\\)[^/]\\W" 1 "FaceIronic.xpm")
     ("\\([8|]-*[|Oo%]\\)\\W" 1 "FaceKOed.xpm")
     ("\\([:|]-*#+\\)\\W" 1 "FaceNyah.xpm")
@@ -88,7 +88,7 @@
     ("\\(:-+D\\)\\W" 1 "FaceGrinning.xpm")
     ("\\(:-+[}»]+\\)\\W" 1 "FaceHappy.xpm")
     ("\\(:-*)+\\)\\W" 1 "FaceHappy.xpm")
-    ("\\(=[)>]+\\)\\W" 1 "FaceHappy.xpm")
+    ("\\(=[)]+\\)\\W" 1 "FaceHappy.xpm")
     ("\\(:-+[/\\\"]+\\)\\W" 1 "FaceIronic.xpm")
     ("\\([8|]-+[|Oo%]\\)\\W" 1 "FaceKOed.xpm")
     ("\\([:|]-+#+\\)\\W" 1 "FaceNyah.xpm")
index 06252d0..ea58b84 100644 (file)
@@ -2,7 +2,7 @@
 ;; Copyright (c) 1998 by Shenghuo Zhu <zsh@cs.rochester.edu>
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
-;; $Revision: 5.4 $
+;; $Revision: 5.5 $
 ;; Keywords: uudecode
 
 ;; This file is not part of GNU Emacs, but the same permissions
@@ -104,10 +104,7 @@ If FILE-NAME is non-nil, save the result to FILE-NAME."
                (insert-file-contents-literally tempfile)))
          (message "Can not uudecode")))
       (and work-buffer (kill-buffer work-buffer))
-      (condition-case ()
-         (or file-name (delete-file tempfile))
-       (error))
-      )))
+      (ignore-errors (or file-name (delete-file tempfile))))))
 
 (if (string-match "XEmacs" emacs-version)
     (defalias 'uudecode-insert-char 'insert-char)
index 9b5937d..eb96ea0 100644 (file)
@@ -1,3 +1,15 @@
+1999-02-01 21:05:18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Article Hiding): Addition.
+
+1999-01-28 08:08:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Washing Mail): Addition.
+
+1999-01-27 14:30:39  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Article Washing): Addition.
+
 1999-01-25 04:24:01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * message.texi (MIME): New.
index b5a4c3b..38c5bbb 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Pterodactyl Gnus 0.74 Manual
+@settitle Pterodactyl Gnus 0.75 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -318,7 +318,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Pterodactyl Gnus 0.74 Manual
+@title Pterodactyl Gnus 0.75 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -354,7 +354,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Pterodactyl Gnus 0.74.
+This manual corresponds to Pterodactyl Gnus 0.75.
 
 @end ifinfo
 
@@ -6460,6 +6460,19 @@ articles that have signatures in them do:
 Hide @sc{pem} (privacy enhanced messages) cruft
 (@code{gnus-article-hide-pem}).
 
+@item W W B
+@kindex W W B (Summary)
+@findex gnus-article-strip-banner
+Strip the banner specified by the @code{banner} group parameter
+(@code{gnus-article-strip-banner}).  This is mainly used to hide those
+annoying banners and/or signatures that some mailing lists and moderated
+groups adds to all the messages.  The way to use this function is to add
+the @code{banner} group parameter (@pxref{Group Parameters}) to the
+group you want banners stripped from.  The parameter either be a string,
+which will be interpreted as a regulax expression matching text to be
+removed, or the symbol @code{signature}, meaning that the (last)
+signature should be removed.
+
 @item W W c
 @kindex W W c (Summary)
 @findex gnus-article-hide-citation
@@ -6612,6 +6625,12 @@ when filling.
 @findex gnus-article-fill-long-lines
 Fill long lines (@code{gnus-article-fill-long-lines}).
 
+@item W C
+@kindex W C (Summary)
+@findex gnus-article-capitalize-sentencse
+Capitalize the first word in each sentence
+(@code{gnus-article-capitalize-sentences}).
+
 @item W c
 @kindex W c (Summary)
 @findex gnus-article-remove-cr
@@ -9972,8 +9991,45 @@ name.
 @item :password
 The password to give to the POP server.  If not specified, the user is
 prompted.
+
+@item :program
+The program to use to fetch mail from the POP server.
+
+@item :args
+The arguments to give to the program.  If this is a string, it is used
+as such.  If this is a list, it is @code{eval}ed first, and the result
+is used.
+
+@item :function
+The function to use to fetch mail from the POP server.  The function is
+called with one parameter---the name of the file where the mail should
+be moved to.
 @end table
 
+If the @code{:program} and @code{:function} keywords aren't specified,
+@code{pop3-movemail} will be used.
+
+Here are some examples.  Fetch from the default POP server, using the
+default user name, and default fetcher:
+
+@lisp
+(pop)
+@end lisp
+
+Fetch from a named server with a named user and password:
+
+@lisp
+(pop :server "my.pop.server"
+     :user "user-name" :password "secret")
+@end lisp
+
+Use @samp{movemail} to move the mail:
+
+@lisp
+(pop :program "movemail"
+     :args (format "po:%s %s %s" user mail-source-crash-box password))
+@end lisp
+
 @end table
 
 
@@ -10483,6 +10539,13 @@ For instance, if you want to remove the @samp{(idm)} and the
 @findex nnmail-remove-tabs
 Translate all @samp{TAB} characters into @samp{SPACE} characters.
 
+@item nnmail-fix-eudora-headers
+@findex nnmail-fix-eudora-headers
+@cindex Eudora
+Eudora produces broken @code{References} headers, but OK
+@code{In-Reply-To} headers.  This function will get rid of the
+@code{References} headers.
+
 @end table
 
 @item nnmail-prepare-incoming-message-hook
@@ -16287,11 +16350,12 @@ We do have some breaches to this one.
 @table @emph
 
 @item X-Newsreader
-This is considered to be a ``vanity header'', while I consider it to be
-consumer information.  After seeing so many badly formatted articles
-coming from @code{tin} and @code{Netscape} I know not to use either of
-those for posting articles.  I would not have known that if it wasn't
-for the @code{X-Newsreader} header.
+@itemx User-Agent
+These are considered to be ``vanity headers'', while I consider them
+to be consumer information.  After seeing so many badly formatted
+articles coming from @code{tin} and @code{Netscape} I know not to use
+either of those for posting articles.  I would not have known that if
+it wasn't for the @code{X-Newsreader} header.
 @end table
 
 @item USEFOR
index 87d633c..4006158 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Pterodactyl Message 0.74 Manual
+@settitle Pterodactyl Message 0.75 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Pterodactyl Message 0.74 Manual
+@title Pterodactyl Message 0.75 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -83,7 +83,7 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Pterodactyl Message 0.74.  Message is
+This manual corresponds to Pterodactyl Message 0.75.  Message is
 distributed with the Gnus distribution bearing the same version number
 as this manual.