Synch with Gnus.
authoryamaoka <yamaoka>
Wed, 1 Nov 2000 22:38:23 +0000 (22:38 +0000)
committeryamaoka <yamaoka>
Wed, 1 Nov 2000 22:38:23 +0000 (22:38 +0000)
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-sum.el
lisp/mml.el
lisp/mml2015.el
texi/ChangeLog
texi/gnus-ja.texi
texi/gnus.texi

index c8f7cea..0d67469 100644 (file)
@@ -1,3 +1,22 @@
+2000-11-01 10:07:13  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-art.el (gnus-mime-display-part): Add to signed or encrypted.
+       gnus-article-wash-types.
+       * gnus-art.el (gnus-article-wash-status): Use them.
+
+2000-11-01 08:54:11  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * mml.el (mml-read-tag): Remove spaces and LF.
+
+2000-11-01 08:01:03  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * mml2015.el (mml2015-mailcrypt-encrypt): Use from and sign parameters.
+       * mml.el (mml-generate-mime-1): Add sender and recipients attributes.
+
+2000-11-01 07:39:24  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-sum.el (gnus-summary-force-verify-and-decrypt): New function.
+
 2000-10-31 22:06:13  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * gnus-sum.el (gnus-article-charset): New variable.
index 68e0462..158735c 100644 (file)
@@ -3754,6 +3754,14 @@ In no internal viewer is available, use an external viewer."
     ;;;!!!to the first part.
     (gnus-mime-display-part (cadr handle)))
    ;; Other multiparts are handled like multipart/mixed.
+   ((equal (car handle) "multipart/signed")
+    (or (memq 'signed gnus-article-wash-types)
+       (push 'signed gnus-article-wash-types))
+    (gnus-mime-display-mixed (cdr handle)))
+   ((equal (car handle) "multipart/encrypted")
+    (or (memq 'encrypted gnus-article-wash-types)
+       (push 'encrypted gnus-article-wash-types))
+    (gnus-mime-display-mixed (cdr handle)))
    (t
     (gnus-mime-display-mixed (cdr handle)))))
 
@@ -3945,13 +3953,15 @@ In no internal viewer is available, use an external viewer."
          (boring (memq 'boring-headers gnus-article-wash-types))
          (pgp (memq 'pgp gnus-article-wash-types))
          (pem (memq 'pem gnus-article-wash-types))
+         (signed (memq 'signed gnus-article-wash-types))
+         (encrypted (memq 'encrypted gnus-article-wash-types))
          (signature (memq 'signature gnus-article-wash-types))
          (overstrike (memq 'overstrike gnus-article-wash-types))
          (emphasis (memq 'emphasis gnus-article-wash-types)))
       (format "%c%c%c%c%c%c%c"
              (if cite ?c ? )
              (if (or headers boring) ?h ? )
-             (if (or pgp pem) ?p ? )
+             (if (or pgp pem signed encrypted) ?p ? )
              (if signature ?s ? )
              (if overstrike ?o ? )
              (if gnus-show-mime ?m ? )
index 3aae533..f1b7119 100644 (file)
@@ -5953,6 +5953,12 @@ be displayed."
          (gnus-article-show-all-headers))
        'old))))
 
+(defun gnus-summary-force-verify-and-decrypt ()
+  (interactive)
+  (let ((mm-verify-option 'known)
+       (mm-decrypt-option 'known))
+    (gnus-summary-select-article nil 'force)))
+
 (defun gnus-summary-set-current-mark (&optional current-mark)
   "Obsolete function."
   nil)
index 1218523..64ba761 100644 (file)
@@ -219,7 +219,7 @@ one charsets.")
     (setq name (buffer-substring-no-properties
                (point) (progn (forward-sexp 1) (point))))
     (skip-chars-forward " \t\n")
-    (while (not (looking-at ">"))
+    (while (not (looking-at ">[ \t]*\n?"))
       (setq elem (buffer-substring-no-properties
                  (point) (progn (forward-sexp 1) (point))))
       (skip-chars-forward "= \t\n")
@@ -229,7 +229,7 @@ one charsets.")
        (setq val (match-string 1 val)))
       (push (cons (intern elem) val) contents)
       (skip-chars-forward " \t\n"))
-    (forward-char 1)
+    (goto-char (match-end 0))
     ;; Don't skip the leading space.
     ;;(skip-chars-forward " \t\n")
     (cons (intern name) (nreverse contents))))
@@ -396,11 +396,21 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
              (insert "\n--" mml-boundary "--\n")))))
        (t
        (error "Invalid element: %S" cont)))
-      (let ((item (assoc (cdr (assq 'sign cont)) mml-sign-alist)))
+      (let ((item (assoc (cdr (assq 'sign cont)) mml-sign-alist))
+           sender recipients)
        (when item
+         (if (setq sender (cdr (assq 'sender cont)))
+             (message-options-set 'message-sender sender))
+         (if (setq recipients (cdr (assq 'recipients cont)))
+             (message-options-set 'message-sender recipients))
          (funcall (nth 1 item) cont)))
-      (let ((item (assoc (cdr (assq 'encrypt cont)) mml-encrypt-alist)))
+      (let ((item (assoc (cdr (assq 'encrypt cont)) mml-encrypt-alist))
+           sender recipients)
        (when item
+         (if (setq sender (cdr (assq 'sender cont)))
+             (message-options-set 'message-sender sender))
+         (if (setq recipients (cdr (assq 'recipients cont)))
+             (message-options-set 'message-sender recipients))
          (funcall (nth 1 item) cont))))))
 
 (defun mml-compute-boundary (cont)
index 6ef9dde..6d37aba 100644 (file)
@@ -59,6 +59,7 @@
 (eval-and-compile
   (autoload 'mailcrypt-decrypt "mailcrypt")
   (autoload 'mailcrypt-verify "mailcrypt")
+  (autoload 'mc-pgp-always-sign "mailcrypt")
   (autoload 'mc-encrypt-generic "mc-toplev")
   (autoload 'mc-cleanup-recipient-headers "mc-toplev")
   (autoload 'mc-sign-generic "mc-toplev"))
    (or (message-options-get 'message-recipients)
        (message-options-set 'message-recipients
                            (mc-cleanup-recipient-headers 
-                            (read-string "Recipients: ")))))
+                            (read-string "Recipients: "))))
+   nil nil nil
+   (message-options-get 'message-sender)
+   (or mc-pgp-always-sign
+       (eq t
+          (or (message-options-get 'message-sign-encrypt)
+              (message-options-set 'message-sign-encrypt
+                                   (or (y-or-n-p "Sign the message? ")
+                                       'not))))))
   (let ((boundary 
         (funcall mml-boundary-function (incf mml-multipart-number))))
     (goto-char (point-min))
index 48c64cd..a2205a8 100644 (file)
@@ -1,3 +1,12 @@
+2000-11-01  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * gnus.texi (Fancy Mail Splitting): Explain
+       `nnmail-split-fancy-with-parent'.
+
+2000-11-01 09:12:24  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi (Finding the News): @env is not supported in texinfo 3.12.
+
 2000-10-31  Jorge Godoy <godoy@conectiva.com>
 
        * gnus.texi: gnus-gpg document.
index 1f978cb..01f53bf 100644 (file)
@@ -1021,7 +1021,7 @@ Emacs for Heathens
 @vindex gnus-nntpserver-file
 @cindex NNTPSERVER
 @cindex @sc{nntp} server
-\e$B$b$7$3$NJQ?t$,@_Dj$5$l$F$$$J$1$l$P!"\e(Bgnus \e$B$O\e(B @env{NNTPSERVER} \e$B4D6-JQ?t$r\e(B
+\e$B$b$7$3$NJQ?t$,@_Dj$5$l$F$$$J$1$l$P!"\e(Bgnus \e$B$O\e(B @code{NNTPSERVER} \e$B4D6-JQ?t$r\e(B
 \e$BFI$_$K$$$-$^$9!#$b$7$=$NJQ?t$,@_Dj$5$l$F$$$J$1$l$P!"\e(B
 gnus \e$B$O\e(B @code{gnus-nntpserver-file} (\e$B@_Dj$5$l$F$$$J$$>l9g\e(B
 \e$B$O\e(B @file{/etc/nntpserver}) \e$B$,$3$N7o$K4X$7$F2?$+$r8@$C$F$$$J$$$+$rD4$Y$^\e(B
index b9000c2..7bbbb71 100644 (file)
@@ -943,7 +943,7 @@ certainly be much faster.
 @cindex NNTPSERVER
 @cindex @sc{nntp} server
 If this variable is not set, gnus will take a look at the
-@env{NNTPSERVER} environment variable.  If that variable isn't set,
+@code{NNTPSERVER} environment variable.  If that variable isn't set,
 gnus will see whether @code{gnus-nntpserver-file}
 (@file{/etc/nntpserver} by default) has any opinions on the matter.  If
 that fails as well, gnus will try to use the machine running Emacs as an @sc{nntp} server.  That's a long shot, though.
@@ -11779,6 +11779,40 @@ matched string will be substituted.  Similarly, the elements @samp{\\1}
 up to @samp{\\9} will be substituted with the text matched by the
 groupings 1 through 9.
 
+@findex nnmail-split-fancy-with-parent
+@code{nnmail-split-fancy-with-parent} is a function which allows you to
+split followups into the same groups their parents are in.  Sometimes
+you can't make splitting rules for all your mail.  For example, your
+boss might send you personal mail regarding different projects you are
+working on, and as you can't tell your boss to put a distinguishing
+string into the subject line, you have to resort to manually moving the
+messages into the right group.  With this function, you only have to do
+it once per thread.
+
+To use this feature, you have to set @code{nnmail-treat-duplicates} to a
+non-nil value.  And then you can include
+@code{nnmail-split-fancy-with-parent} using the colon feature, like so:
+@lisp
+(setq nnmail-split-fancy
+      '(| (: nnmail-split-fancy-with-parent)
+          ;; other splits go here
+        ))
+@end lisp
+
+This feature works as follows: when @code{nnmail-treat-duplicates} is
+non-nil, Gnus records the message id of every message it sees in the
+file specified by the variable @code{nnmail-message-id-cache-file},
+together with the group it is in (the group is omitted for non-mail
+messages).  When mail splitting is invoked, the function
+@code{nnmail-split-fancy-with-parent} then looks at the References (and
+In-Reply-To) header of each message to split and searches the file
+specified by @code{nnmail-message-id-cache-file} for the message ids.
+When it has found a parent, it returns the corresponding group name.  It
+is recommended that you set @code{nnmail-message-id-cache-length} to a
+somewhat higher number than the default so that the message ids are
+still in the cache.  (A value of 5000 appears to create a file some
+300 kBytes in size.)
+
 
 @node Group Mail Splitting
 @subsection Group Mail Splitting