Synch with Oort Gnus.
authoryamaoka <yamaoka>
Mon, 4 Mar 2002 00:36:08 +0000 (00:36 +0000)
committeryamaoka <yamaoka>
Mon, 4 Mar 2002 00:36:08 +0000 (00:36 +0000)
15 files changed:
ChangeLog
lisp/ChangeLog
lisp/dgnushack.el
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-kill.el
lisp/gnus-start.el
lisp/gnus-util.el
lisp/mail-source.el
lisp/message.el
lisp/mm-view.el
lisp/nnheader.el
texi/ChangeLog
texi/message-ja.texi
texi/message.texi

index d495895..76de73d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-03-04  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * lisp/nnheader.el (mm-7bit-chars): Copied from mm-bodies.el.
+       (mm-multibyte-p): New alias.
+       (mm-char-int): Alias to `char-int'.
+
 2002-02-26  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
 
        * lisp/gnus-art.el (gnus-request-article-this-buffer): Sync up
index 0948d48..cefeaa4 100644 (file)
@@ -1,3 +1,41 @@
+2002-03-02  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-util.el (gnus-multiple-choice): Use message. XEmacs only
+       takes one argument in read-char.
+
+       * message.el (message-fix-before-sending): Forward a char.
+       Check mmu-multibyte-p, add control-1.
+
+2002-03-01  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-start.el (gnus-read-init-file): Ditto.
+
+       * gnus-agent.el (gnus-agent-fetch-session): Ditto.
+
+       * dgnushack.el (dgnushack-make-load): Ditto.
+
+       * mail-source.el (mail-source-fetch): Extract the right error
+       code.
+
+       * message.el (message-fix-before-sending): Check illegible text.
+
+       * gnus-util.el (gnus-multiple-choice): New function.
+
+       * gnus-kill.el (gnus-score-insert-help): Removed, because it is
+       also defined in gnus-score.el.
+
+2002-03-01  Paul Jarc  <prj@po.cwru.edu>
+
+       * message.el (message-get-reply-headers): downcase email addresses
+       for comaparisons for duplicate removal.
+
+2002-03-01  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * mm-view.el (mm-view-pkcs7-verify): New function. A bogus
+       implementation of PKCS#7, which just allows users read the
+       message.
+       (mm-view-pkcs7): Use it.
+
 2002-02-27  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * gnus.el (large-newsgroup-initial): New parameter.
@@ -22,7 +60,7 @@
 
        * html2text.el (html2text-clean-anchor): If there is no HREF,
        insert nothing.
-       
+
        * mml.el (mml-generate-mime-1): Add cdr.
        From: andre@slamdunknetworks.com
 
@@ -40,7 +78,7 @@
        * gnus-sum.el: Add gnus-article-outlook-deuglify-article.
 
        * deuglify.el: Change copy right. Add autoload. Add coding-system.
-       
+
        * deuglify.el: New file. The original file name is
        gnus-outlook-deuglify.el from Raymond Scholz <rscholz@zonix.de>.
 
index 55e67e3..258db72 100644 (file)
@@ -1,5 +1,5 @@
 ;;; dgnushack.el --- a hack to set the load path for byte-compiling
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -465,8 +465,11 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again.
          (unless (or (condition-case code
                          (require 'w3-parse)
                        (error
-                        (message "No w3: %s %s retrying..." code
-                                 (locate-library "w3-parse"))
+                        (message "No w3: %s%s, retrying..."
+                                 (error-message-string code)
+                                 (if (setq code (locate-library "w3-parse"))
+                                     (concat " (" code ")")
+                                   ""))
                         nil))
                      ;; Maybe mis-configured Makefile is used (e.g.
                      ;; configured for FSFmacs but XEmacs is running).
@@ -489,17 +492,29 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again.
          (condition-case code
              (progn (require 'mh-e) nil)
            (error
-            (message "No mh-e: %s %s (ignored)" code (locate-library "mh-e"))
+            (message "No mh-e: %s%s (ignored)"
+                     (error-message-string code)
+                     (if (setq code (locate-library "mh-e"))
+                         (concat " (" code ")")
+                       ""))
             '("gnus-mh.el")))
          (condition-case code
              (progn (require 'xml) nil)
            (error
-            (message "No xml: %s %s (ignored)" code (locate-library "xml"))
+            (message "No xml: %s%s (ignored)"
+                     (error-message-string code)
+                     (if (setq code (locate-library "xml"))
+                         (concat " (" code ")")
+                       ""))
             '("nnrss.el")))
          (condition-case code
              (progn (require 'bbdb) nil)
            (error
-            (message "No bbdb: %s %s (ignored)" code (locate-library "bbdb"))
+            (message "No bbdb: %s%s (ignored)"
+                     (error-message-string code)
+                     (if (setq code (locate-library "bbdb"))
+                         (concat " (" code ")")
+                       ""))
             '("gnus-bbdb.el")))
          (unless (featurep 'xemacs)
            '("gnus-xmas.el" "messagexmas.el" "nnheaderxm.el"))
index 35229ce..d945cac 100644 (file)
@@ -1229,12 +1229,12 @@ the actual number of articles toggled is returned."
                      (gnus-agent-fetch-group-1 group gnus-command-method))))))
          (error
           (unless (funcall gnus-agent-confirmation-function
-                           (format "Error (%s).  Continue? " err))
+                           (format "Error (%s).  Continue? " (cadr err)))
             (error "Cannot fetch articles into the Gnus agent")))
          (quit
           (unless (funcall gnus-agent-confirmation-function
                            (format "Quit fetching session (%s).  Continue? "
-                                   err))
+                                   (cadr err)))
             (signal 'quit "Cannot fetch articles into the Gnus agent"))))
        (pop methods))
       (run-hooks 'gnus-agent-fetch-hook)
index 996b70a..ef90e96 100644 (file)
@@ -2328,7 +2328,7 @@ If READ-CHARSET, ask for a coding system."
        (url-standalone-mode t)
        (url-gateway-unplugged t)
        (w3-honor-stylesheets nil))
-    (condition-case var
+    (condition-case ()
        (w3-region (point-min) (point-max))
       (error))))
 
index b134be9..dd6a774 100644 (file)
@@ -428,16 +428,6 @@ Returns the number of articles marked as read."
        0))))
 
 ;; Parse a Gnus killfile.
-(defun gnus-score-insert-help (string alist idx)
-  (save-excursion
-    (pop-to-buffer "*Score Help*")
-    (buffer-disable-undo)
-    (erase-buffer)
-    (insert string ":\n\n")
-    (while alist
-      (insert (format " %c: %s\n" (caar alist) (nth idx (car alist))))
-      (setq alist (cdr alist)))))
-
 (defun gnus-kill-parse-gnus-kill-file ()
   (goto-char (point-min))
   (gnus-kill-file-mode)
index 9fb8a95..8f9befe 100644 (file)
@@ -457,7 +457,7 @@ Can be used to turn version control on or off."
            (condition-case var
                (load file nil t)
              (error
-              (error "Error in %s: %s" file var)))))))))
+              (error "Error in %s: %s" file (cadr var))))))))))
 
 ;; For subscribing new newsgroup
 
@@ -1945,7 +1945,7 @@ newsgroup."
     (goto-char (point-min))
     (let (group max min)
       (while (not (eobp))
-       (condition-case err
+       (condition-case ()
            (progn
              (narrow-to-region (point) (gnus-point-at-eol))
              ;; group gets set to a symbol interned in the hash table
index e8fbc36..45f6743 100644 (file)
@@ -1341,6 +1341,57 @@ SPEC is a predicate specifier that contains stuff like `or', `and',
          contents)
       (nth 2 value))))
 
+(defun gnus-multiple-choice (prompt choice &optional idx)
+  "Ask user a multiple choice question.
+CHOICE is a list of the choice char and help message at IDX."
+  (let (tchar buf)
+    (save-window-excursion
+      (save-excursion
+       (while (not tchar)
+         (message "%s (%s?): "
+                  prompt
+                  (mapconcat (lambda (s) (char-to-string (car s)))
+                             choice ""))
+         (setq tchar (read-char))
+         (when (not (assq tchar choice))
+           (setq tchar nil)
+           (setq buf (get-buffer-create "*Gnus Help*"))
+           (pop-to-buffer buf)
+           (fundamental-mode)          ; for Emacs 20.4+
+           (buffer-disable-undo)
+           (erase-buffer)
+           (insert prompt ":\n\n")
+           (let ((max -1)
+                 (list choice)
+                 (alist choice)
+                 (idx (or idx 1))
+                 (i 0)
+                 n width pad format)
+             ;; find the longest string to display
+             (while list
+               (setq n (length (nth idx (car list))))
+               (unless (> max n)
+                 (setq max n))
+               (setq list (cdr list)))
+             (setq max (+ max 4))      ; %c, `:', SPACE, a SPACE at end
+             (setq n (/ (1- (window-width)) max)) ; items per line
+             (setq width (/ (1- (window-width)) n)) ; width of each item
+             ;; insert `n' items, each in a field of width `width'
+             (while alist
+               (if (< i n)
+                   ()
+                 (setq i 0)
+                 (delete-char -1)              ; the `\n' takes a char
+                 (insert "\n"))
+               (setq pad (- width 3))
+               (setq format (concat "%c: %-" (int-to-string pad) "s"))
+               (insert (format format (caar alist) (nth idx (car alist))))
+               (setq alist (cdr alist))
+               (setq i (1+ i))))))))
+    (if (buffer-live-p buf)
+       (kill-buffer buf))
+    tchar))
+
 (provide 'gnus-util)
 
 ;;; gnus-util.el ends here
index 3409021..bc2314d 100644 (file)
@@ -466,7 +466,8 @@ Return the number of files that were found."
                     (funcall function source callback)
                   (error
                    (unless (yes-or-no-p
-                            (format "Mail source error (%s).  Continue? " err))
+                            (format "Mail source error (%s).  Continue? "
+                                    (cadr err)))
                      (error "Cannot get new mail"))
                    0)))))))))
 
index f62c295..124620d 100644 (file)
@@ -3181,7 +3181,45 @@ used to distinguish whether the invisible text is a MIME part or not."
        (set-window-start (selected-window) (gnus-point-at-bol))
        (unless (yes-or-no-p
                 "Invisible text found and made visible; continue posting? ")
-         (error "Invisible text found and made visible"))))))
+         (error "Invisible text found and made visible")))))
+  (message-check 'illegible-text
+    (let (found choice)
+      (message-goto-body)
+      (skip-chars-forward mm-7bit-chars)
+      (while (not (eobp))
+       (when (let ((char (char-after)))
+               (or (< (mm-char-int char) 128)
+                   (and (mm-multibyte-p)
+                        (memq (char-charset char)
+                              '(eight-bit-control eight-bit-graphic
+                                                  control-1)))))
+         (add-text-properties (point) (1+ (point)) '(highlight t))
+         (setq found t))
+       (forward-char)
+       (skip-chars-forward mm-7bit-chars))
+      (when found
+       (setq choice
+             (gnus-multiple-choice
+              "Illegible text found. Continue posting? "
+              '((?d "Remove and continue posting")
+                (?r "Replace with dots and continue posting")
+                (?e "Continue editing"))))
+       (if (eq choice ?e)
+         (error "Illegible text found"))
+       (message-goto-body)
+       (skip-chars-forward mm-7bit-chars)
+       (while (not (eobp))
+         (when (let ((char (char-after)))
+                 (or (< (mm-char-int char) 128)
+                     (and (mm-multibyte-p)
+                          (memq (char-charset char)
+                                '(eight-bit-control eight-bit-graphic
+                                                    control-1)))))
+           (delete-char 1)
+           (if (eq choice ?r)
+               (insert ".")))
+         (forward-char)
+         (skip-chars-forward mm-7bit-chars))))))
 
 (defun message-add-action (action &rest types)
   "Add ACTION to be performed when doing an exit of type TYPES."
@@ -5244,11 +5282,11 @@ responses here are directed to other addresses.")))
       ;; Perhaps "Mail-Copies-To: never" removed the only address?
       (if (string-equal recipients "")
          (setq recipients author))
-      ;; Convert string to a list of (("foo@bar" . "Name <foo@bar>") ...).
+      ;; Convert string to a list of (("foo@bar" . "Name <Foo@BAR>") ...).
       (setq recipients
            (mapcar
             (lambda (addr)
-              (cons (mail-strip-quoted-names addr) addr))
+              (cons (downcase (mail-strip-quoted-names addr)) addr))
             (message-tokenize-header recipients)))
       ;; Remove first duplicates.  (Why not all duplicates?  Is this a bug?)
       (let ((s recipients))
index f021ec6..cc90410 100644 (file)
                  ;; Don't let w3 set the global version of
                  ;; this variable.
                  (fill-column fill-column))
-             (condition-case var
+             (condition-case ()
                  (w3-region (point-min) (point-max))
                (error
                 (delete-region (point-min) (point-max))
@@ -572,8 +572,25 @@ will not be substituted.")
 (defun mm-view-pkcs7 (handle)
   (case (mm-view-pkcs7-get-type handle)
     (enveloped (mm-view-pkcs7-decrypt handle))
+    (signed (mm-view-pkcs7-verify handle))
     (otherwise (error "Unknown or unimplemented PKCS#7 type"))))
 
+(defun mm-view-pkcs7-verify (handle)
+  ;; A bogus implementation of PKCS#7. FIXME::
+  (mm-insert-part handle)
+  (goto-char (point-min))
+  (if (search-forward "Content-Type: " nil t)
+      (delete-region (point-min) (match-beginning 0)))
+  (goto-char (point-max))
+  (if (re-search-backward "--\r?\n?" nil t)
+      (delete-region (match-end 0) (point-max)))
+  (goto-char (point-min))
+  (while (search-forward "\r\n" nil t)
+    (replace-match "\n"))
+  (message "Verify signed PKCS#7 message is unimplemented.")
+  (sit-for 1)
+  t)
+
 (defun mm-view-pkcs7-decrypt (handle)
   (insert-buffer (mm-handle-buffer handle))
   (goto-char (point-min))
index f759abe..23bee21 100644 (file)
@@ -104,7 +104,7 @@ This variable is a substitute for `mm-text-coding-system-for-write'.")
   (autoload 'gnus-point-at-eol "gnus-util")
   (autoload 'gnus-buffer-live-p "gnus-util"))
 
-;; mm- stuff.
+;; mm-util stuff.
 (unless (featurep 'mm-util)
   ;; Should keep track of `mm-image-load-path' in mm-util.el.
   (defun nnheader-image-load-path (&optional package)
@@ -226,7 +226,20 @@ Equivalent to `progn' in XEmacs"
         (charsets-to-mime-charset (list item))))
      (t
       'iso-8859-1))))
-  (defalias 'mm-guess-mime-charset 'nnheader-guess-mime-charset))
+  (defalias 'mm-guess-mime-charset 'nnheader-guess-mime-charset)
+
+  (defalias 'mm-char-int 'char-int)
+
+  ;; Should keep track of the same alias in mm-util.el.
+  (defalias 'mm-multibyte-p
+    (static-cond ((and (featurep 'xemacs) (featurep 'mule))
+                 (lambda nil t))
+                ((featurep 'xemacs)
+                 (lambda nil nil))
+                ((boundp 'MULE)
+                 (lambda nil mc-flag))
+                (t
+                 (lambda nil enable-multibyte-characters)))))
 
 ;; mail-parse stuff.
 (unless (featurep 'mail-parse)
@@ -407,6 +420,12 @@ given, the return value will not contain the last newline."
 
   (defalias 'mail-header-field-value 'std11-field-value))
 
+;; Should keep track of the same variable in mm-bodies.el.
+;; Don't use `defvar-maybe', it won't create a byte-code!!!
+;; 8bit treatment gets any char except: 0x32 - 0x7f, CR, LF, TAB, BEL,
+;; BS, vertical TAB, form feed, and ^_
+(defvar mm-7bit-chars "\x20-\x7f\r\n\t\x7\x8\xb\xc\x1f")
+
 ;;; Header access macros.
 
 ;; These macros may look very much like the ones in GNUS 4.1.  They
index 977d0a0..289ad9e 100644 (file)
@@ -1,3 +1,10 @@
+2002-03-01  Paul Jarc  <prj@po.cwru.edu>
+
+       * message.texi (Mailing Lists): 'use is the default for
+       message-use-mail-followup-to, not nil; 'use is also not t.
+       Mention why an unsubscribed list poster might use MFT, and how to
+       disable MFT for a single message.
+
 2002-02-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * gnus.texi (Splitting Mail): Addition.
@@ -13,9 +20,9 @@
 
 2002-02-20  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
-       * gnus.texi (Slave Gnusae): Addition. 
-       From  David S. Goldberg <david.goldberg6@verizon.net> 
-       
+       * gnus.texi (Slave Gnusae): Addition.
+       From  David S. Goldberg <david.goldberg6@verizon.net>
+
 2002-02-18  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * emacs-mime.texi (mailcap): Addition.
index f9052c4..5620d36 100644 (file)
@@ -354,6 +354,11 @@ non @sc{mime}-savvy versions of gnus would do.
 \e$B$O!"Ej9F<T$,$9$G$K$=$N%a!<%j%s%0%j%9%H$r9XFI$7$F$$$k>l9g$,3:Ev$7$^$9!#\e(B
 
 @item
+\e$B%a!<%j%s%0%j%9%H$KEj9F$9$k?M$O!"JV;v$r%a!<%j%s%0%j%9%H$HEj9F<T$K$bAw?.$9\e(B
+\e$B$Y$-$G$"$k$3$H$r!"\e(BMFT \e$B$r;H$C$FI=8=$9$k$3$H$,$G$-$^$9!#$3$l$O!"Ej9F<T$,$=\e(B
+\e$B$N%a!<%j%s%0%j%9%H$r9XFI$7$F$$$J$$>l9g$,3:Ev$7$^$9!#\e(B
+
+@item
 \e$B%a%C%;!<%8$,$$$/$D$+$N%a!<%j%s%0%j%9%H$KEj9F$5$l$F$$$k>l9g$K!"$=$l0J9_$N\e(B
 \e$B5DO@$r0l$D$N%a!<%j%s%0%j%9%H$@$1$G9T$J$&$3$H$r;XDj$9$k$?$a$K$b\e(B MFT \e$B$O;H\e(B
 \e$B$o$l$^$9!#5DO@$,$$$/$D$+$N%a!<%j%s%0%j%9%H$G9T$J$o$l$F$7$^$&$H$P$i$P$i$K\e(B
@@ -428,19 +433,25 @@ gnus \e$B$K$O$3$NJQ?t$N9%E,$J8uJd$G$"$k$H$3$m$N!"$"$i$+$8$aDj5A$5$l$F$$$k4X\e(B
 
 \e$B$5$"MQ0U$,$G$-$^$7$?!#$$$D$b$N$h$&$K%a%C%;!<%8$N:n@.$r;O$a$^$7$g$&!#$=$7\e(B
 \e$B$F$$$D$bDL$j$KAw?.$7$^$7$g$&!#%a%C%;!<%8$,Aw=P$5$l$kD>A0\e(B
-\e$B$K\e(B gnus \e$B$N\e(B MFT \e$B$r:n$k;E3]$1$,F0:n$7$F!"%a%C%;!<%8$,$9$G$K\e(B MFT \e$B%X%C%@!<$r\e(B
-\e$B;}$C$F$$$k$+$I$&$+$rD4$Y$^$9!#$b$7$=$l$,0l$D$J$i!"$=$l$OJ|$C$F$*$+$l$^$9!#\e(B
-\e$BL5$+$C$?>l9g$O<u<h?M$N%"%I%l%9$N%j%9%H\e(B (To: \e$B$H\e(B Cc: \e$B%X%C%@!<$K$"$k\e(B) \e$B$r!"\e(B
-\e$B$=$l$i$N0l$D$,9XFI$7$F$$$k%a!<%j%s%0%j%9%H$N%"%I%l%9$+$I$&$+$rD4$Y$^$9!#\e(B
-\e$B$=$l$i$N$I$l$b$,%a!<%j%s%0%j%9%H$N%"%I%l%9$G$J$+$C$?$i!"\e(BMFT \e$B$O:n$i$l$^$;\e(B
-\e$B$s!#$=$l0J30$N>l9g$K$O\e(B MFT \e$B$,$=$NB>$N%X%C%@!<$KIU$12C$($i$l!"$=$NCM\e(B
-\e$B$O\e(B To: \e$B$H\e(B Cc: \e$B$K$"$k$9$Y$F$N%"%I%l%9$K@_Dj$5$l$^$9!#\e(B
+\e$B$K\e(B gnus \e$B$N\e(B MFT \e$B$r:n$k;E3]$1$,F0:n$7$F!"%a%C%;!<%8$,$9$G$K\e(B MFT \e$B%U%#!<%k%I\e(B
+\e$B$r;}$C$F$$$k$+$I$&$+$rD4$Y$^$9!#$b$7$=$l$,0l$D$J$i!"$=$l$OJ|$C$F$*$+$l$^\e(B
+\e$B$9\e(B (\e$B$?$@$7$=$N>l9g$K$=$l$,6u$C$]$@$C$?$i!"$=$N%U%#!<%k%I$O:o=|$5$l<+F0@8\e(B
+\e$B@.$5$l$?$b$N$GCV$-49$($i$l$k$3$H$b$"$j$^$;$s!#$3$l$O8D!9$N%a%C%;!<%8$K$D\e(B
+\e$B$$$F\e(B MFT \e$B$N@8@.$r6X;_$5$;$k4pK\$G$9\e(B)\e$B!#L5$+$C$?>l9g$O<u<h?M$N%"%I%l%9$N%j\e(B
+\e$B%9%H\e(B (To: \e$B$H\e(B Cc: \e$B%X%C%@!<$K$"$k\e(B) \e$B$r!"$=$l$i$N0l$D$,9XFI$7$F$$$k%a!<%j%s\e(B
+\e$B%0%j%9%H$N%"%I%l%9$+$I$&$+$rD4$Y$^$9!#$=$l$i$N$I$l$b$,%a!<%j%s%0%j%9%H$N\e(B
+\e$B%"%I%l%9$G$J$+$C$?$i!"\e(BMFT \e$B$O:n$i$l$^$;$s!#$=$l0J30$N>l9g$K$O\e(B MFT \e$B$,$=$N\e(B
+\e$BB>$N%X%C%@!<$KIU$12C$($i$l!"$=$NCM$O\e(B To: \e$B$H\e(B Cc: \e$B$K$"$k$9$Y$F$N%"%I%l%9$K\e(B
+\e$B@_Dj$5$l$^$9!#\e(B
 
 \e$B$&!<$`!#$=$&$9$k$H$"$J$?$O!V9XFI$7$F$$$J$$%a!<%j%s%0%j%9%H$K%a!<%k$rAw?.\e(B
-\e$B$9$k$H$-$O$I$&$J$k$N\e(B?\e$B!W$H?R$M$^$9$M!#$(!<$H!"?F@Z$J\e(B Gnus \e$B%?%o!<$N?M$?$A\e(B
-\e$B$,!"$3$NL\E*$G;H$($k$9$Y$F$N4{CN$N%a!<%j%s%0%j%9%H$N%"%I%l%9$N%G!<%?%Y!<\e(B
-\e$B%9$N:n@.$K$$$=$7$s$G$$$^$9!#$=$l$^$G$O!"\e(B@kbd{C-c C-f C-m} \e$B$r;H$C$F<jF0\e(B
-\e$B$G\e(B MFT \e$B%X%C%@!<$rA^F~$9$k$J$I$7$F2<$5$$\e(B!!
+\e$B$9$k$H$-$O$I$&$J$k$N\e(B?  \e$B;d$OM>J,$N%3%T!<$,M_$7$$$3$H$r\e(B MFT \e$B$G8@$$$?$$!W$H\e(B
+\e$B?R$M$^$9$M\e(B (\e$B$?$V$sB>$N?M$O\e(B MFT \e$B$,L5$+$C$?>l9g$HF1MM$K=hM}$7$F$7$^$&$@$m\e(B
+\e$B$&$1$l$I!"C/$+$N\e(B to-address \e$B%0%k!<%W%Q%i%a!<%?$r>e=q$-$9$k$?$a$K!"L@<(E*\e(B
+\e$B$J\e(B MFT \e$B$r;H$&$3$H$,$G$-$k$N$G$9\e(B)\e$B!#$(!<$H!"?F@Z$J\e(B Gnus \e$B%?%o!<$N?M$?$A$,!"\e(B
+\e$B$3$NL\E*$G;H$($k$9$Y$F$N4{CN$N%a!<%j%s%0%j%9%H$N%"%I%l%9$N%G!<%?%Y!<%9$N\e(B
+\e$B:n@.$K$$$=$7$s$G$$$^$9!#$=$l$^$G$O!"\e(B@kbd{C-c C-f C-m} \e$B$r;H$C$F<jF0$G\e(B MFT
+\e$B%X%C%@!<$rA^F~$9$k$J$I$7$F2<$5$$\e(B!!
 
 @c @node Honoring an MFT post
 @subsection MFT \e$BEj9F$NB:=E\e(B
@@ -452,15 +463,15 @@ gnus \e$B$K$O$3$NJQ?t$N9%E,$J8uJd$G$"$k$H$3$m$N!"$"$i$+$8$aDj5A$5$l$F$$$k4X\e(B
 \e$B0J2<$N$I$l$+$K$J$j$^$9\e(B:
 
 @table @code
-@item t
+@item use
 \e$B>o$K\e(B MFT \e$B$rB:=E$7$^$9!#%U%)%m!<%"%C%W5-;v$N\e(B To: \e$B$H\e(B Cc: \e$B%X%C%@!<$O!"85$N\e(B
-\e$B5-;v$N\e(B MFT \e$B%X%C%@!<$+$i0z$-=P$7$^$9!#\e(B
+\e$B5-;v$N\e(B MFT \e$B%X%C%@!<$+$i0z$-=P$7$^$9!#$3$l$,%G%#%U%)%k%H$G$9!#\e(B
 
 @item nil
 \e$B>o$K\e(B MFT \e$B$rB:=E$7$^$;$s\e(B (\e$B40`z$KL5;k\e(B)\e$B!#\e(B
 
 @item ask
-\e$B$I$&$9$k$+?R$M$^$9!#$3$l$,%G%#%U%)%k%H$G$9!#\e(B
+\e$B$I$&$9$k$+?R$M$^$9!#\e(B
 @end table
 
 MFT \e$B$rB:=E$9$k$3$H$ONI$$%M%A%1%C%H\e(B (nettiquette) \e$B$G$"$k$H9M$($i$l$F$$$^\e(B
index 211229b..c17e36b 100644 (file)
@@ -333,6 +333,11 @@ sent to just the list, and not the poster as well.  This will happen
 if the poster is already subscribed to the list.
 
 @item
+A mailing list poster can use MFT to express that responses should be
+sent to the list and the poster as well.  This will happen if the poster
+is not subscribed to the list.
+
+@item
 If a message is posted to several mailing lists, MFT may also be used
 to direct the following discussion to one list only, because
 discussions that are spread over several lists tend to be fragmented
@@ -405,21 +410,26 @@ set this variable to the name of the file and life would be good.
 You can use one or more of the above variables.  All their values are
 ``added'' in some way that works :-)
 
-Now you are all set.  Just start composing a message as you normally
-do.  And just send it; as always.  Just before the message is sent
-out, Gnus' MFT generation thingy kicks in and checks if the message
-already has a MFT header.  If there is one, the header is left alone.
-If not then the list of recipient addresses (in the To: and Cc:
-headers) is checked to see if one of them is a list address you are
-subscribed to.  If none of them is a list address, then no MFT is
-generated; otherwise, a MFT is added to the other headers and set to
-the value of all addresses in To: and Cc:
+Now you are all set.  Just start composing a message as you normally do.
+And just send it; as always.  Just before the message is sent out, Gnus'
+MFT generation thingy kicks in and checks if the message already has a
+MFT field.  If there is one, it is left alone.  (Except if it's empty -
+in that case, the field is removed and is not replaced with an
+automatically generated one.  This lets you disable MFT generation on a
+per-message basis.)  If there is none, then the list of recipient
+addresses (in the To: and Cc: headers) is checked to see if one of them
+is a list address you are subscribed to.  If none of them is a list
+address, then no MFT is generated; otherwise, a MFT is added to the
+other headers and set to the value of all addresses in To: and Cc:
 
 Hm. ``So'', you ask, ``what if I send an email to a list I am not
-subscribed to?''  Well, the kind folks at Gnus Towers are working on a
-database of all known mailing list addresses that can be used for this
-purpose.  Till then, you could, like, insert a MFT header manually,
-with the help of @kbd{C-c C-f C-m} !!
+subscribed to?  I want my MFT to say that I want an extra copy.''  (This
+is supposed to be interpreted by others the same way as if there were no
+MFT, but you can use an explicit MFT to override someone else's
+to-address group parameter.)  Well, the kind folks at Gnus Towers are
+working on a database of all known mailing list addresses that can be
+used for this purpose.  Till then, you could, like, insert a MFT header
+manually, with the help of @kbd{C-c C-f C-m} !!
 
 @c @node Honoring an MFT post
 @subsection Honoring an MFT post
@@ -430,15 +440,15 @@ header, Gnus' action will depend on the value of the variable
 @code{message-use-mail-followup-to}.  This variable can be one of:
 
 @table @code
-@item t
+@item use
  Always honor MFTs.  The To: and Cc: headers in your followup will be
- derived from the MFT header of the original post.
+ derived from the MFT header of the original post.  This is the default.
 
 @item nil
  Always dishonor MFTs (just ignore the darned thing)
 
 @item ask
-Gnus will prompt you for an action.  This is the default.
+Gnus will prompt you for an action.
 
 @end table