Sync up with Pterodactyl Gnus v0.92. t-gnus-6_10_070-00
authoryamaoka <yamaoka>
Tue, 6 Jul 1999 13:11:12 +0000 (13:11 +0000)
committeryamaoka <yamaoka>
Tue, 6 Jul 1999 13:11:12 +0000 (13:11 +0000)
29 files changed:
ChangeLog
README.T-gnus
lisp/ChangeLog
lisp/Makefile.in
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-group.el
lisp/gnus-mailcap.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-util.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/message.el
lisp/mm-decode.el
lisp/mm-util.el
lisp/mm-view.el
lisp/mml.el
lisp/nndoc.el
lisp/nndraft.el
lisp/nnfolder.el
lisp/nnmail.el
lisp/nntp.el
texi/ChangeLog
texi/emacs-mime.texi
texi/gnus-ja.texi
texi/gnus.texi
texi/message-ja.texi
texi/message.texi

index a94eaf6..3ac14a4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,26 @@
 1999-07-06  Katsumi Yamaoka   <yamaoka@jpl.org>
 
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.070.
+       (gnus-revision-number): Fresh start from 00.
+
+       * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi}:
+       Update for T-gnus 6.10.070.
+
+       * texi/{gnus-ja.texi,emacs-mime.texi,ChangeLog}: Sync up with
+       Pterodactyl Gnus v0.92.
+
+       * lisp/gnus-mlspl.el: New file copied from Pterodactyl Gnus v0.92.
+
+       * lisp/{nntp.el,nnmail.el,nnfolder.el,nndraft.el,nndoc.el,mml.el,
+       mm-view.el,mm-util.el,mm-decode.el,message.el,gnus-xmas.el,
+       gnus-util.el,gnus-sum.el,gnus-start.el,gnus-mailcap.el,
+       gnus-group.el,gnus-art.el,gnus-agent.el,Makefile.in,ChangeLog}:
+       Sync up with Pterodactyl Gnus v0.92.
+
+       * README.T-gnus: Update for T-gnus 6.10.070.
+
+1999-07-06  Katsumi Yamaoka   <yamaoka@jpl.org>
+
        * lisp/gnus.el (gnus-revision-number): Increment to 01.
 
 1999-07-05  Tsukamoto Tetsuo   <czkmt@remus.dti.ne.jp>
index 944dff8..77aa410 100644 (file)
@@ -27,6 +27,6 @@ NEWS:
 
 * T-gnus 6.10 - this is based on Pterodactyl Gnus.
 
-  The latest T-gnus is T-gnus 6.10.069 (Based on pgnus-0.91).
+  The latest T-gnus is T-gnus 6.10.070 (Based on pgnus-0.92).
   It requires SEMI/WEMI-1.12/1.13, the latest FLIM-1.12, and the latest
   APEL (9.13 or later).
index 9ce3a5b..2633f89 100644 (file)
@@ -1,3 +1,77 @@
+Tue Jul  6 10:59:24 1999  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Pterodactyl Gnus v0.92 is released.
+
+1999-07-06 12:30:59  Johannes Weinert  <Johannes.Weinert@Informatik.Uni-Oldenburg.DE>
+
+       * gnus-sum.el (gnus-summary-catchup-and-exit): Doc fix. 
+
+1999-07-06 07:41:07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nntp.el (nntp-retrieve-groups): Don't do anything when not
+       connected. 
+
+       * gnus-start.el (gnus-active-to-gnus-format): Only save active
+       when plugged.
+
+       * mm-view.el (mm-inline-message): Ignore remove-spec.
+
+       * gnus-agent.el (gnus-agent-write-active): Check whether orig sym
+       is bound.
+
+       * gnus-msg.el (gnus-summary-mail-forward): Rename From_ lines. 
+
+       * nndoc.el (nndoc-guess-type): Remove blank lines at the start. 
+
+       * nnfolder.el (nnfolder-read-folder): Remove blank lines at the
+       start. 
+
+       * message.el (message-fill-yanked-message): Remove `t' arg.
+
+       * gnus-group.el (gnus-group-kill-group): Message killing of
+       groups. 
+
+       * mm-util.el (mm-preferred-coding-system): New function.
+       (mm-mime-charset): Use it.
+
+       * mml.el (mml-generate-mime-1): Charset-encode message parts.
+
+1999-07-06 07:03:31  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * gnus-mlsplt.el: New file.
+
+1999-07-06 05:47:57  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mm-decode.el (mm-inline-Media-tests): Changed from forms to
+       functions. 
+       (mm-attachment-override-p): Take a handle instead of a type.
+       (mm-inlined-p): Ditto.
+       (mm-automatic-display-p): Ditto,
+       (mm-inlinable-p): Ditto.
+
+       * nndraft.el (nndraft-request-expire-articles): Delete backup
+       files. 
+
+       * mailcap.el (mailcap-parse-mailcap): Regexp-quote stuff.
+
+       * gnus-sum.el (gnus-summary-limit-to-extra): Typo.
+
+1999-07-06 05:37:46  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+       * nnmail.el (nnmail-split-it): Allow .*.
+
+1999-07-05 05:04:57  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mm-decode.el (mm-inline-large-images-p): Renamed.
+
+       * gnus-art.el (article-date-ut): Always look in the current buffer 
+       for the Date header.
+
+       * mml.el (mml-validate): New command.
+
+       * mailcap.el (mailcap-possible-viewers): Revert to string-match
+       since we are dealing with regexps.
+
 Sun Jul  4 06:31:01 1999  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Pterodactyl Gnus v0.91 is released.
index 11fffaf..dec6b87 100644 (file)
@@ -20,6 +20,8 @@ all total:
 warn:
        rm -f *.elc ; $(EMACS) $(FLAGS) --eval '(dgnushack-compile t)' 2>&1 | egrep -v "variable G|inhibit-point-motion-hooks|coding-system|temp-results|variable gnus|variable nn|scroll-in-place|deactivate-mark|filladapt-mode|byte-code-function-p|print-quoted|ps-right-header|ps-left-header|article-inhibit|print-escape|ssl-program-arguments|message-log-max"
 
+# The "clever" rule is unsafe, since redefined macros are loaded from
+# .elc files, and not the .el file.
 clever some:
        $(EMACS) $(FLAGS) -f dgnushack-compile
 
index 1642fc9..e2a20a3 100644 (file)
@@ -561,7 +561,7 @@ the actual number of articles toggled is returned."
 (defun gnus-agent-write-active (file new)
   (let ((orig (gnus-make-hashtable (count-lines (point-min) (point-max))))
        (file (gnus-agent-lib-file "active"))
-       elem)
+       elem osym)
     (when (file-exists-p file)
       (with-temp-buffer
        (insert-file-contents-as-coding-system gnus-agent-file-coding-system
@@ -570,7 +570,8 @@ the actual number of articles toggled is returned."
       (mapatoms
        (lambda (sym)
         (when (and sym (boundp sym))
-          (if (setq elem (symbol-value (intern (symbol-name sym) orig)))
+          (if (and (boundp (setq osym (intern (symbol-name sym) orig)))
+                   (setq elem (symbol-value osym)))
               (setcdr elem (cdr (symbol-value sym)))
             (set (intern (symbol-name sym) orig) (symbol-value sym)))))
        new))
index 66af131..e9b3827 100644 (file)
@@ -594,9 +594,9 @@ displayed by the first non-nil matching CONTENT face."
     ("\221" "`")
     ("\222" "'")
     ("\223" "``")
-    ("\224" "''")
+    ("\224" "\"")
     ("\225" "*")
-    ("\226" "-")
+    ("\226" "---")
     ("\227" "-")
     ("\231" "(TM)")
     ("\233" ">")
@@ -3114,7 +3114,7 @@ Type any key: "
     (mm-pipe-part data)))
 
 (defun gnus-mime-view-part ()
-  "Interactively choose a view method for the MIME part under point."
+  "Interactively choose a viewing method for the MIME part under point."
   (interactive)
   (gnus-article-check-buffer)
   (let ((data (get-text-property (point) 'gnus-data)))
@@ -3164,7 +3164,7 @@ Type any key: "
   (gnus-article-check-buffer)
   (let* ((handle (or handle (get-text-property (point) 'gnus-data)))
         (mm-user-display-methods nil)
-        (mm-all-images-fit t)
+        (mm-inline-large-images nil)
         (mail-parse-charset gnus-newsgroup-charset)
         (mail-parse-ignored-charsets 
          (save-excursion (set-buffer gnus-summary-buffer)
@@ -3179,7 +3179,7 @@ Type any key: "
   (gnus-article-check-buffer)
   (let* ((handle (or handle (get-text-property (point) 'gnus-data)))
         (mm-user-display-methods '((".*" . inline)))
-        (mm-all-images-fit t)
+        (mm-inline-large-images t)
         (mail-parse-charset gnus-newsgroup-charset)
         (mail-parse-ignored-charsets 
          (save-excursion (set-buffer gnus-summary-buffer)
@@ -3445,9 +3445,9 @@ Type any key: "
                       (or (not (mm-handle-disposition handle))
                           (equal (car (mm-handle-disposition handle))
                                  "inline")
-                          (mm-attachment-override-p type)))
-                (mm-automatic-display-p type)
-                (or (mm-inlined-p type)
+                          (mm-attachment-override-p handle)))
+                (mm-automatic-display-p handle)
+                (or (mm-inlined-p handle)
                     (mm-automatic-external-display-p type)))
            (setq display t)
          (when (equal (car (split-string type "/"))
index d9a7bb5..4e8f15f 100644 (file)
@@ -2736,7 +2736,8 @@ of groups killed."
            (push (cons (car entry) (nth 2 entry))
                  gnus-list-of-killed-groups))
          (gnus-group-change-level
-          (if entry entry group) gnus-level-killed (if entry nil level)))
+          (if entry entry group) gnus-level-killed (if entry nil level))
+         (message "Killed group %s" group))
       ;; If there are lots and lots of groups to be killed, we use
       ;; this thing instead.
       (let (entry)
index b206be7..4c1fab9 100644 (file)
@@ -376,7 +376,7 @@ If FORCE, re-parse even if already parsed."
              (cond
               ((eq ?* (or (char-after save-pos) 0)) ".*")
               ((= (point) save-pos) ".*")
-              (t (buffer-substring save-pos (point)))))
+              (t (regexp-quote (buffer-substring save-pos (point))))))
        (skip-chars-forward "; \t\n")
        ;;; Got the major/minor chunks, now for the viewers/etc
        ;;; The first item _must_ be a viewer, according to the
@@ -486,7 +486,7 @@ If FORCE, re-parse even if already parsed."
       (cond
        ((equal (car (car major)) minor)
        (setq exact (cons (cdr (car major)) exact)))
-       ((and minor (string= (car (car major)) minor))
+       ((and minor (string-match (car (car major)) minor))
        (setq wildcard (cons (cdr (car major)) wildcard))))
       (setq major (cdr major)))
     (nconc (nreverse exact) (nreverse wildcard))))
index d39f41f..8eadd99 100644 (file)
@@ -1761,7 +1761,7 @@ newsgroup."
       (insert ?\\))
 
     ;; Let the Gnus agent save the active file.
-    (when (and gnus-agent real-active)
+    (when (and gnus-agent real-active gnus-plugged)
       (gnus-agent-save-active method))
 
     ;; If these are groups from a foreign select method, we insert the
index cc31531..a190b3b 100644 (file)
@@ -1469,7 +1469,6 @@ increase the score of each group you read."
     "t" gnus-article-toggle-headers
     "v" gnus-summary-verbose-headers
     "m" gnus-summary-toggle-mime
-    "h" gnus-article-treat-html
     "H" gnus-article-strip-headers-in-body
     "d" gnus-article-treat-dumbquotes)
 
@@ -1628,7 +1627,6 @@ increase the score of each group you read."
              ["Capitalize sentences" gnus-article-capitalize-sentences t]
               ["CR" gnus-article-remove-cr t]
               ["Show X-Face" gnus-article-display-x-face t]
-              ["UnHTMLize" gnus-article-treat-html t]
               ["Rot 13" gnus-summary-caesar-message t]
               ["Unix pipe" gnus-summary-pipe-message t]
               ["Add buttons" gnus-article-add-buttons t]
@@ -6171,7 +6169,7 @@ articles that are younger than AGE days."
          (intern
           (gnus-completing-read
            (symbol-name (car gnus-extra-headers))      
-           "Score extra header:"       
+           "Limit extra header:"       
            (mapcar (lambda (x) 
                      (cons (symbol-name x) x))
                    gnus-extra-headers)
@@ -6724,7 +6722,7 @@ to guess what the document format is."
         (goto-char (point-min))
         (or (search-forward "\n\n" nil t) (point)))
        (goto-char (point-min))
-       (delete-matching-lines "^\\(Path\\):\\|^From ")
+       (delete-matching-lines "^Path:\\|^From ")
        (widen))
       (unwind-protect
           (if (let ((gnus-newsgroup-ephemeral-charset gnus-newsgroup-charset)
@@ -8323,7 +8321,7 @@ If ALL is non-nil, also mark ticked and dormant articles as read."
   (gnus-summary-catchup t quietly))
 
 (defun gnus-summary-catchup-and-exit (&optional all quietly)
-  "Mark all articles not marked as unread in this newsgroup as read, then exit.
+  "Mark all unread articles in this group as read, then exit.
 If prefix argument ALL is non-nil, all articles are marked as read."
   (interactive "P")
   (when (gnus-summary-catchup all quietly nil 'fast)
index d9db8f4..0c14dde 100644 (file)
@@ -963,7 +963,9 @@ ARG is passed to the first function."
     (with-temp-file file
       (mapatoms
        (lambda (sym)
-        (when (and sym (boundp sym))
+        (when (and sym
+                   (boundp sym)
+                   (symbol-value sym))
           (insert (format "%s %d %d y\n"
                           (symbol-name sym) (cdr (symbol-value sym))
                           (car (symbol-value sym))))))
index 5e9a7ad..1446289 100644 (file)
@@ -702,8 +702,7 @@ If it is non-nil, it must be a toolbar.  The five valid values are
     [gnus-group-unsubscribe gnus-group-unsubscribe t "Unsubscribe group"]
     [gnus-group-subscribe gnus-group-subscribe t "Subscribe group"]
     [gnus-group-kill-group gnus-group-kill-group t "Kill group"]
-    [gnus-group-exit gnus-group-exit t "Exit Gnus"]
-    )
+    [gnus-group-exit gnus-group-exit t "Exit Gnus"])
   "The group buffer toolbar.")
 
 (defvar gnus-summary-toolbar
index 14a3ab5..9875a85 100644 (file)
@@ -264,13 +264,13 @@ is restarted, and sometimes reloaded."
 (defconst gnus-product-name "T-gnus"
   "Product name of this version of gnus.")
 
-(defconst gnus-version-number "6.10.069"
+(defconst gnus-version-number "6.10.070"
   "Version number for this version of gnus.")
 
-(defconst gnus-revision-number "01"
+(defconst gnus-revision-number "00"
   "Revision number for this version of gnus.")
 
-(defconst gnus-original-version-number "0.91"
+(defconst gnus-original-version-number "0.92"
     "Version number for this version of Gnus.")
 
 (provide 'running-pterodactyl-gnus-0_73-or-later)
index 6dbcc71..99e645d 100644 (file)
@@ -202,7 +202,8 @@ Don't touch this variable unless you really know what you're doing.
 Checks include subject-cmsg multiple-headers sendsys message-id from
 long-lines control-chars size new-text redirected-followup signature
 approved sender empty empty-headers message-id from subject
-shorten-followup-to existing-newsgroups buffer-file-name unchanged."
+shorten-followup-to existing-newsgroups buffer-file-name unchanged
+newsgroups."
   :group 'message-news)
 
 (defcustom message-required-news-headers
@@ -1986,7 +1987,7 @@ Numeric argument means justify as well."
     (goto-char (point-min))
     (search-forward (concat "\n" mail-header-separator "\n") nil t)
     (let ((fill-prefix message-yank-prefix))
-      (fill-individual-paragraphs (point) (point-max) justifyp t))))
+      (fill-individual-paragraphs (point) (point-max) justifyp))))
 
 (defun message-indent-citation ()
   "Modify text just inserted from a message to be cited.
@@ -2360,6 +2361,8 @@ the user from the mailer."
                                    (car elem))))
                              (setq success (funcall (caddr elem) arg)))))
            (setq sent t))))
+      (unless sent
+       (error "No methods specified to send by"))
       (prog1
          (when (and success sent)
            (message-do-fcc)
@@ -2803,6 +2806,15 @@ This sub function is for exclusive use of `message-send-news'."
 
 (defun message-check-news-header-syntax ()
   (and
+   ;; Check Newsgroups header.
+   (message-check 'newsgroyps
+     (let ((group (message-fetch-field "newsgroups")))
+       (or
+       (and group
+            (not (string-match "\\`[ \t]*\\'" group)))
+       (ignore
+        (message
+         "The newsgroups field is empty or missing.  Posting is denied.")))))
    ;; Check the Subject header.
    (message-check 'subject
      (let* ((case-fold-search t)
index 2c44713..3edcf57 100644 (file)
         ,disposition ,description ,cache ,id))
 
 (defvar mm-inline-media-tests
-  '(("image/jpeg" mm-inline-image (mm-valid-and-fit-image-p 'jpeg handle))
-    ("image/png" mm-inline-image (mm-valid-and-fit-image-p 'png handle))
-    ("image/gif" mm-inline-image (mm-valid-and-fit-image-p 'gif handle))
-    ("image/tiff" mm-inline-image (mm-valid-and-fit-image-p 'tiff handle)) 
-    ("image/xbm" mm-inline-image (mm-valid-and-fit-image-p 'xbm handle))
-    ("image/x-xbitmap" mm-inline-image (mm-valid-and-fit-image-p 'xbm handle))
-    ("image/xpm" mm-inline-image (mm-valid-and-fit-image-p 'xpm handle))
-    ("image/x-pixmap" mm-inline-image (mm-valid-and-fit-image-p 'xpm handle))
-    ("image/bmp" mm-inline-image (mm-valid-and-fit-image-p 'bmp handle))
-    ("text/plain" mm-inline-text t)
-    ("text/enriched" mm-inline-text t)
-    ("text/richtext" mm-inline-text t)
-    ("text/html" mm-inline-text (locate-library "w3"))
-    ("text/x-vcard" mm-inline-text (locate-library "vcard"))
-    ("message/delivery-status" mm-inline-text t)
-    ("message/rfc822" mm-inline-message t)
-    ("text/.*" mm-inline-text t)
+  '(("image/jpeg"
+     mm-inline-image
+     (lambda (handle)
+       (mm-valid-and-fit-image-p 'jpeg handle)))
+    ("image/png"
+     mm-inline-image
+     (lambda (handle)
+       (mm-valid-and-fit-image-p 'png handle)))
+    ("image/gif"
+     mm-inline-image
+     (lambda (handle)
+       (mm-valid-and-fit-image-p 'gif handle)))
+    ("image/tiff"
+     mm-inline-image
+     (lambda (handle)
+       (mm-valid-and-fit-image-p 'tiff handle)) )
+    ("image/xbm"
+     mm-inline-image
+     (lambda (handle)
+       (mm-valid-and-fit-image-p 'xbm handle)))
+    ("image/x-xbitmap"
+     mm-inline-image
+     (lambda (handle)
+       (mm-valid-and-fit-image-p 'xbm handle)))
+    ("image/xpm"
+     mm-inline-image
+     (lambda (handle)
+       (mm-valid-and-fit-image-p 'xpm handle)))
+    ("image/x-pixmap"
+     mm-inline-image
+     (lambda (handle)
+       (mm-valid-and-fit-image-p 'xpm handle)))
+    ("image/bmp"
+     mm-inline-image
+     (lambda (handle)
+       (mm-valid-and-fit-image-p 'bmp handle)))
+    ("text/plain" mm-inline-text identity)
+    ("text/enriched" mm-inline-text identity)
+    ("text/richtext" mm-inline-text identity)
+    ("text/html"
+     mm-inline-text
+     (lambda (handle)
+       (locate-library "w3")))
+    ("text/x-vcard"
+     mm-inline-text
+     (lambda (handle)
+       (locate-library "vcard")))
+    ("message/delivery-status" mm-inline-text identity)
+    ("message/rfc822" mm-inline-message identity)
+    ("text/.*" mm-inline-text identity)
     ("audio/wav" mm-inline-audio
-     (and (or (featurep 'nas-sound) (featurep 'native-sound))
-         (device-sound-enabled-p)))
-    ("audio/au" mm-inline-audio
-     (and (or (featurep 'nas-sound) (featurep 'native-sound))
-         (device-sound-enabled-p)))
-    ("multipart/alternative" ignore t)
-    ("multipart/mixed" ignore t)
-    ("multipart/related" ignore t))
+     (lambda (handle)
+       (and (or (featurep 'nas-sound) (featurep 'native-sound))
+           (device-sound-enabled-p))))
+    ("audio/au"
+     mm-inline-audio
+     (lambda (handle)
+       (and (or (featurep 'nas-sound) (featurep 'native-sound))
+           (device-sound-enabled-p))))
+    ("multipart/alternative" ignore identity)
+    ("multipart/mixed" ignore identity)
+    ("multipart/related" ignore identity))
   "Alist of media types/test that say whether the media types can be displayed inline.")
 
 (defvar mm-inlined-types
@@ -119,7 +155,7 @@ to:
        ("/tmp/"))
   "Where mm will store its temporary files.")
 
-(defvar mm-all-images-fit nil
+(defvar mm-inline-large-images nil
   "If non-nil, then all images fit in the buffer.")
 
 ;;; Internal variables.
@@ -235,7 +271,7 @@ external if displayed external."
        (mm-remove-part handle)
       (let* ((type (car (mm-handle-type handle)))
             (method (mailcap-mime-info type)))
-       (if (mm-inlined-p type)
+       (if (mm-inlined-p handle)
            (progn
              (forward-line 1)
              (mm-display-inline handle)
@@ -376,48 +412,52 @@ external if displayed external."
     (funcall function handle)
     (goto-char (point-min))))
 
-(defun mm-inlinable-p (type)
-  "Say whether TYPE can be displayed inline."
+(defun mm-inlinable-p (handle)
+  "Say whether HANDLE can be displayed inline."
   (let ((alist mm-inline-media-tests)
+       (type (car (mm-handle-type handle)))
        test)
     (while alist
       (when (equal type (caar alist))
        (setq test (caddar alist)
              alist nil)
-       (setq test (eval test)))
+       (setq test (funcall test handle)))
       (pop alist))
     test))
 
-(defun mm-automatic-display-p (type)
-  "Say whether the user wants TYPE to be displayed automatically."
+(defun mm-automatic-display-p (handle)
+  "Say whether the user wants HANDLE to be displayed automatically."
   (let ((methods mm-automatic-display)
+       (type (car (mm-handle-type handle)))
        method result)
     (while (setq method (pop methods))
       (when (and (string-match method type)
-                (mm-inlinable-p type))
+                (mm-inlinable-p handle))
        (setq result t
              methods nil)))
     result))
 
-(defun mm-inlined-p (type)
-  "Say whether the user wants TYPE to be displayed automatically."
+(defun mm-inlined-p (handle)
+  "Say whether the user wants HANDLE to be displayed automatically."
   (let ((methods mm-inlined-types)
+       (type (car (mm-handle-type handle)))
        method result)
     (while (setq method (pop methods))
       (when (and (string-match method type)
-                (mm-inlinable-p type))
+                (mm-inlinable-p handle))
        (setq result t
              methods nil)))
     result))
 
-(defun mm-attachment-override-p (type)
-  "Say whether TYPE should have attachment behavior overridden."
+(defun mm-attachment-override-p (handle)
+  "Say whether HANDLE should have attachment behavior overridden."
   (let ((types mm-attachment-override-types)
+       (type (car (mm-handle-type handle)))
        ty)
     (catch 'found
       (while (setq ty (pop types))
        (when (and (string-match ty type)
-                  (mm-inlinable-p type))
+                  (mm-inlinable-p handle))
          (throw 'found t))))))
 
 (defun mm-automatic-external-display-p (type)
@@ -548,7 +588,7 @@ external if displayed external."
                (car (mm-handle-type (car h)))))
        (setq handle (car h))
        (when (and (equal p type)
-                  (mm-automatic-display-p type)
+                  (mm-automatic-display-p (car h))
                   (or (stringp (caar h))
                       (not (mm-handle-disposition (car h)))
                       (equal (car (mm-handle-disposition (car h)))
@@ -615,7 +655,7 @@ external if displayed external."
 (defun mm-image-fit-p (handle)
   "Say whether the image in HANDLE will fit the current window."
   (let ((image (mm-get-image handle)))
-    (or mm-all-images-fit
+    (or mm-inline-large-images
        (and (< (glyph-width image) (window-pixel-width))
             (< (glyph-height image) (window-pixel-height))))))
 
index 774e3b0..161d2ca 100644 (file)
@@ -182,18 +182,22 @@ used as the line break code type of the coding system."
   (when (fboundp 'set-buffer-multibyte)
     (set-buffer-multibyte nil)))
 
+(defun mm-preferred-coding-system (charset)
+  ;; A typo in some Emacs versions.
+  (or (get-charset-property charset 'prefered-coding-system)
+      (get-charset-property charset 'preffered-coding-system)))
+
 (defun mm-mime-charset (charset)
   "Return the MIME charset corresponding to the MULE CHARSET."
   (if (fboundp 'coding-system-get)
       ;; This exists in Emacs 20.
       (or
-       (and (get-charset-property charset 'prefered-coding-system)
+       (and (mm-preferred-coding-system charset)
            (coding-system-get
-            (get-charset-property charset 'prefered-coding-system)
-            'mime-charset))
+            (mm-preferred-coding-system charset) 'mime-charset))
        (and (eq charset 'ascii)
            'us-ascii)
-       (get-charset-property charset 'prefered-coding-system)
+       (mm-preferred-coding-system charset)
        (mm-mule-charset-to-mime-charset charset))
     ;; This is for XEmacs.
     (mm-mule-charset-to-mime-charset charset)))
index 5c7a56e..9f3d0e9 100644 (file)
@@ -98,7 +98,6 @@
                  (condition-case var
                      (w3-region (point-min) (point-max))
                    (error)))))
-;;;        (narrow-to-region (1+ (point-min)) (point-max))
            (mm-handle-set-undisplayer
             handle
             `(lambda ()
   (goto-char (point-min)))
 
 (defun mm-inline-message (handle)
-  (let ((b (point)) gnus-displaying-mime handles)
+  (let ((b (point))
+       gnus-displaying-mime handles)
     (save-excursion
       (save-restriction
        (narrow-to-region b b)
          (run-hooks 'gnus-article-decode-hook)
          (gnus-article-prepare-display)
          (setq handles gnus-article-mime-handles))
-       (if handles
-           (setq gnus-article-mime-handles
-                 (append gnus-article-mime-handles handles)))
+       (when handles
+         (setq gnus-article-mime-handles
+               (append gnus-article-mime-handles handles)))
        (mm-handle-set-undisplayer
         handle
         `(lambda ()
            (let (buffer-read-only)
-             (mapc (lambda (prop)
-                     (remove-specifier
-                      (face-property 'default prop) (current-buffer)))
-                   '(background background-pixmap foreground))
+             (ignore-errors
+               ;; This is only valid on XEmacs.
+               (mapc (lambda (prop)
+                       (remove-specifier
+                        (face-property 'default prop) (current-buffer)))
+                     '(background background-pixmap foreground)))
              (delete-region ,(point-min-marker) ,(point-max-marker)))))))))
 
 (provide 'mm-view)
index a77c615..f70efc6 100644 (file)
    ((eq (car cont) 'part)
     (let (coded encoding charset filename type)
       (setq type (or (cdr (assq 'type cont)) "text/plain"))
-      (if (equal (car (split-string type "/")) "text")
+      (if (member (car (split-string type "/")) '("text" "message"))
          (with-temp-buffer
            (cond
             ((cdr (assq 'buffer cont))
     ["Multipart" mml-insert-multipart t]
     ["Part" mml-insert-part t])
    ["Quote" mml-quote-region t]
-   ["Validate" mml-validate t]))
+   ["Validate" mml-validate t]
+   ["Preview" mml-preview t]))
 
 (defvar mml-mode nil
   "Minor mode for editing MML.")
@@ -689,7 +690,12 @@ If RAW, don't highlight the article."
    (fundamental-mode)
    (setq buffer-read-only t)
    (goto-char (point-min))))
+
+(defun mml-validate ()
+  "Validate the current MML document."
+  (interactive)
+  (mml-parse))
+
 (provide 'mml)
 
 ;;; mml.el ends here
index df172a6..8cd81b1 100644 (file)
@@ -339,6 +339,9 @@ from the document.")
                (setq entry (pop alist)))
       (when (memq subtype (or (cdr (assq 'subtype entry)) '(guess)))
        (goto-char (point-min))
+       ;; Remove blank lines.
+       (while (eq (following-char) ?\n)
+         (delete-char 1))
        (when (numberp (setq result (funcall (intern
                                              (format "nndoc-%s-type-p"
                                                      (car entry))))))
@@ -579,6 +582,9 @@ from the document.")
     (save-excursion
       (set-buffer nndoc-current-buffer)
       (goto-char (point-min))
+      ;; Remove blank lines.
+      (while (eq (following-char) ?\n)
+       (delete-char 1))
       ;; Find the beginning of the file.
       (when nndoc-file-begin
        (nndoc-search nndoc-file-begin))
index 33e0a66..2866da5 100644 (file)
        (let ((auto (nndraft-auto-save-file-name
                     (nndraft-article-filename article))))
          (when (file-exists-p auto)
-           (funcall nnmail-delete-file-function auto)))))
+           (funcall nnmail-delete-file-function auto)))
+       (dolist (backup
+                (let ((kept-new-versions 1)
+                      (kept-old-versions 0))
+                  (cdr (find-backup-file-name
+                        (nndraft-article-filename article)))))
+         (when (file-exists-p backup)
+           (funcall nnmail-delete-file-function backup)))))
     res))
 
 (deffoo nndraft-request-accept-article (group &optional server last noinsert)
index 1a5bcf8..c4f2416 100644 (file)
@@ -712,6 +712,10 @@ deleted.  Point is left where the deleted region was."
          (save-buffer))
       ;; Parse the damn thing.
       (save-excursion
+       (goto-char (point-min))
+       ;; Remove any blank lines at the start.
+       (while (eq (following-char) ?\n)
+         (delete-char 1))
        (nnmail-activate 'nnfolder)
        ;; Read in the file.
        (let ((delim "^From ")
index f17ff58..8c02960 100644 (file)
@@ -292,8 +292,12 @@ the following:
 
 GROUP: Mail will be stored in GROUP (a string).
 
-\(FIELD VALUE SPLIT): If the message field FIELD (a regexp) contains
-  VALUE (a regexp), store the messages as specified by SPLIT.
+\(FIELD VALUE [- RESTRICT [- RESTRICT [...]]] SPLIT): If the message
+  field FIELD (a regexp) contains VALUE (a regexp), store the messages 
+  as specified by SPLIT.  If RESTRICT (a regexp) matches some string
+  after FIELD and before the end of the matched VALUE, return NIL,
+  otherwise process SPLIT.  Multiple RESTRICTs add up, further
+  restricting the possibility of processing SPLIT.
 
 \(| SPLIT...): Process each SPLIT expression until one of them matches.
   A SPLIT expression is said to match if it will cause the mail
@@ -305,6 +309,10 @@ GROUP: Mail will be stored in GROUP (a string).
   the buffer containing the message headers.  The return value FUNCTION
   should be a split, which is then recursively processed.
 
+\(! FUNCTION SPLIT): Call FUNCTION with the result of SPLIT.  The
+  return value FUNCTION should be a split, which is then recursively
+  processed.
+
 FIELD must match a complete field name.  VALUE must match a complete
 word according to the `nnmail-split-fancy-syntax-table' syntax table.
 You can use \".*\" in the regexps to match partial field names or words.
@@ -332,6 +340,13 @@ Example:
             ;; Other mailing lists...
             (any \"procmail@informatik\\\\.rwth-aachen\\\\.de\" \"procmail.list\")
             (any \"SmartList@informatik\\\\.rwth-aachen\\\\.de\" \"SmartList.list\")
+             ;; Both lists below have the same suffix, so prevent
+             ;; cross-posting to mkpkg.list of messages posted only to 
+             ;; the bugs- list, but allow cross-posting when the
+             ;; message was really cross-posted.
+             (any \"bugs-mypackage@somewhere\" \"mypkg.bugs\")
+             (any \"mypackage@somewhere\" - \"bugs-mypackage\" \"mypkg.list\")
+             ;; 
             ;; People...
             (any \"larsi@ifi\\\\.uio\\\\.no\" \"people.Lars Magne Ingebrigtsen\"))
          ;; Unmatched mail goes to the catch all group.
@@ -1104,47 +1119,71 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
 
      ;; Check the cache for the regexp for this split.
      ((setq cached-pair (assq split nnmail-split-cache))
-      (goto-char (point-max))
-      ;; FIX FIX FIX problem with re-search-backward is that if you have
-      ;; a split: (from "foo-\\(bar\\|baz\\)@gnus.org "mail.foo.\\1")
-      ;; and someone mails a message with 'To: foo-bar@gnus.org' and
-      ;; 'CC: foo-baz@gnus.org', we'll pick 'mail.foo.baz' as the group
-      ;; if the cc line is a later header, even though the other choice
-      ;; is probably better.  Also, this routine won't do a crosspost
-      ;; when there are two different matches.
-      ;; I guess you could just make this more determined, and it could
-      ;; look for still more matches prior to this one, and recurse
-      ;; on each of the multiple matches hit.  Of course, then you'd
-      ;; want to make sure that nnmail-article-group or nnmail-split-fancy
-      ;; removed duplicates, since there might be more of those.
-      ;; I guess we could also remove duplicates in the & split case, since
-      ;; that's the only thing that can introduce them.
-      (when (re-search-backward (cdr cached-pair) nil t)
+      (let (split-result
+           (end-point (point-max))
+           (value (nth 1 split)))
+       (if (symbolp value)
+           (setq value (cdr (assq value nnmail-split-abbrev-alist))))
+       (while (and (goto-char end-point)
+                   (re-search-backward (cdr cached-pair) nil t))
        (when nnmail-split-tracing
          (push (cdr cached-pair) nnmail-split-trace))
-       ;; Someone might want to do a \N sub on this match, so get the
-       ;; correct match positions.
-       (goto-char (match-end 0))
-       (let ((value (nth 1 split)))
-         (re-search-backward (if (symbolp value)
-                                 (cdr (assq value nnmail-split-abbrev-alist))
-                               value)
-                             (match-end 1)))
-       (nnmail-split-it (nth 2 split))))
+       (let ((split-rest (cddr split))
+             (end (match-end 0))
+             ;; The searched regexp is \(\(FIELD\).*\)\(VALUE\).  So,
+             ;; start-of-value is the the point just before the
+             ;; beginning of the value, whereas after-header-name is
+             ;; the point just after the field name.
+             (start-of-value (match-end 1))
+             (after-header-name (match-end 2)))
+           ;; Start the next search just before the beginning of the
+           ;; VALUE match.
+           (setq end-point (1- start-of-value))
+         ;; Handle - RESTRICTs
+         (while (eq (car split-rest) '-)
+           ;; RESTRICT must start after-header-name and
+           ;; end after start-of-value, so that, for
+           ;; (any "foo" - "x-foo" "foo.list")
+           ;; we do not exclude foo.list just because
+           ;; the header is: ``To: x-foo, foo''
+           (goto-char end)
+           (if (and (re-search-backward (cadr split-rest)
+                                        after-header-name t)
+                    (> (match-end 0) start-of-value))
+               (setq split-rest nil)
+             (setq split-rest (cddr split-rest))))
+         (when split-rest
+           (goto-char end)
+           (let ((value (nth 1 split)))
+             (if (symbolp value)
+                 (setq value (cdr (assq value nnmail-split-abbrev-alist))))
+             ;; Someone might want to do a \N sub on this match, so get the
+             ;; correct match positions.
+             (re-search-backward value start-of-value))
+             (dolist (sp (nnmail-split-it (car split-rest)))
+               (unless (memq sp split-result)
+                 (push sp split-result))))))
+       split-result))
 
      ;; Not in cache, compute a regexp for the field/value pair.
      (t
       (let* ((field (nth 0 split))
             (value (nth 1 split))
-            (regexp (concat "^\\(\\("
+            partial regexp)
+       (if (symbolp value)
+           (setq value (cdr (assq value nnmail-split-abbrev-alist))))
+       (if (string= ".*" (substring value 0 2))
+           (setq value (substring value 2)
+                 partial ""))
+       (setq regexp (concat "^\\(\\("
                             (if (symbolp field)
                                 (cdr (assq field nnmail-split-abbrev-alist))
                               field)
-                            "\\):.*\\)\\<\\("
-                            (if (symbolp value)
-                                (cdr (assq value nnmail-split-abbrev-alist))
-                              value)
-                            "\\)\\>")))
+                            "\\):.*\\)"
+                            (or partial "\\<")
+                            "\\("
+                            value
+                            "\\)\\>"))
        (push (cons split regexp) nnmail-split-cache)
        ;; Now that it's in the cache, just call nnmail-split-it again
        ;; on the same split, which will find it immediately in the cache.
index e60dd86..f2bc3d9 100644 (file)
@@ -480,64 +480,65 @@ noticing asynchronous data.")
 (deffoo nntp-retrieve-groups (groups &optional server)
   "Retrieve group info on GROUPS."
   (nntp-possibly-change-group nil server)
-  (save-excursion
-    (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
-    ;; The first time this is run, this variable is `try'.  So we
-    ;; try.
-    (when (eq nntp-server-list-active-group 'try)
-      (nntp-try-list-active (car groups)))
-    (erase-buffer)
-    (let ((count 0)
-         (received 0)
-         (last-point (point-min))
-         (nntp-inhibit-erase t)
-         (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP")))
-      (while groups
-       ;; Send the command to the server.
-       (nntp-send-command nil command (pop groups))
-       (incf count)
-       ;; Every 400 requests we have to read the stream in
-       ;; order to avoid deadlocks.
-       (when (or (null groups)         ;All requests have been sent.
-                 (zerop (% count nntp-maximum-request)))
-         (nntp-accept-response)
-         (while (progn
-                  (goto-char last-point)
-                  ;; Count replies.
-                  (while (re-search-forward "^[0-9]" nil t)
-                    (incf received))
-                  (setq last-point (point))
-                  (< received count))
-           (nntp-accept-response))))
+  (when (nntp-find-connection-buffer nntp-server-buffer)
+    (save-excursion
+      (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
+      ;; The first time this is run, this variable is `try'.  So we
+      ;; try.
+      (when (eq nntp-server-list-active-group 'try)
+       (nntp-try-list-active (car groups)))
+      (erase-buffer)
+      (let ((count 0)
+           (received 0)
+           (last-point (point-min))
+           (nntp-inhibit-erase t)
+           (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP")))
+       (while groups
+         ;; Send the command to the server.
+         (nntp-send-command nil command (pop groups))
+         (incf count)
+         ;; Every 400 requests we have to read the stream in
+         ;; order to avoid deadlocks.
+         (when (or (null groups)       ;All requests have been sent.
+                   (zerop (% count nntp-maximum-request)))
+           (nntp-accept-response)
+           (while (progn
+                    (goto-char last-point)
+                    ;; Count replies.
+                    (while (re-search-forward "^[0-9]" nil t)
+                      (incf received))
+                    (setq last-point (point))
+                    (< received count))
+             (nntp-accept-response))))
 
-      ;; Wait for the reply from the final command.
-      (goto-char (point-max))
-      (re-search-backward "^[0-9]" nil t)
-      (when (looking-at "^[23]")
-       (while (progn
-                (goto-char (point-max))
-                (if (not nntp-server-list-active-group)
-                    (not (re-search-backward "\r?\n" (- (point) 3) t))
-                  (not (re-search-backward "^\\.\r?\n" (- (point) 4) t))))
-         (nntp-accept-response)))
-
-      ;; Now all replies are received.  We remove CRs.
-      (goto-char (point-min))
-      (while (search-forward "\r" nil t)
-       (replace-match "" t t))
+       ;; Wait for the reply from the final command.
+       (goto-char (point-max))
+       (re-search-backward "^[0-9]" nil t)
+       (when (looking-at "^[23]")
+         (while (progn
+                  (goto-char (point-max))
+                  (if (not nntp-server-list-active-group)
+                      (not (re-search-backward "\r?\n" (- (point) 3) t))
+                    (not (re-search-backward "^\\.\r?\n" (- (point) 4) t))))
+           (nntp-accept-response)))
 
-      (if (not nntp-server-list-active-group)
-         (progn
-           (copy-to-buffer nntp-server-buffer (point-min) (point-max))
-           'group)
-       ;; We have read active entries, so we just delete the
-       ;; superfluous gunk.
+       ;; Now all replies are received.  We remove CRs.
        (goto-char (point-min))
-       (while (re-search-forward "^[.2-5]" nil t)
-         (delete-region (match-beginning 0)
-                        (progn (forward-line 1) (point))))
-       (copy-to-buffer nntp-server-buffer (point-min) (point-max))
-       'active))))
+       (while (search-forward "\r" nil t)
+         (replace-match "" t t))
+
+       (if (not nntp-server-list-active-group)
+           (progn
+             (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+             'group)
+         ;; We have read active entries, so we just delete the
+         ;; superfluous gunk.
+         (goto-char (point-min))
+         (while (re-search-forward "^[.2-5]" nil t)
+           (delete-region (match-beginning 0)
+                          (progn (forward-line 1) (point))))
+         (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+         'active)))))
 
 (deffoo nntp-retrieve-articles (articles &optional group server)
   (nntp-possibly-change-group group server)
index 83731fa..82e9ed7 100644 (file)
@@ -1,3 +1,12 @@
+1999-07-06 11:41:59  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Mail Source Specifiers): Fix.
+       (Mail Source Customization): Deleted obsolete vars.
+
+1999-07-05 05:16:55  Laura Conrad  <lconrad@world.std.com>
+
+       * gnus.texi (Mail in a Newsreader): Rewrite.
+
 1999-07-04 04:33:50  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * gnus.texi (Posting Styles): Fix.
index 5e805fa..93e1d6e 100644 (file)
@@ -859,21 +859,21 @@ This variable specifies whether a part @emph{can} be displayed inline,
 and, if so, how to do it.  It does not say whether parts are
 @emph{actually} displayed inline.
 
-@item mm-inlines-types
+@item mm-inlined-types
 This, on the other hand, says what types are to be displayed inline, if
 they satisfy the conditions set by the variable above.  It's a list of
 @sc{mime} media types.
 
 @item mm-automatic-display
 This is a list of types that are to be displayed ``automatically'', but
-only if the above variable allows it.  That is, only inlinable parts are 
-usually displayed automatically, but in the end, this is up to the
-display agent that's using the @sc{mime} library.
+only if the above variable allows it.  That is, only inlinable parts can
+be displayed automatically.
 
 @item mm-attachment-override-types
 Some @sc{mime} agents create parts that have a content-disposition of
 @samp{attachment}.  This variable allows overriding that disposition and 
-displaying the part inline.
+displaying the part inline.  (Note that the disposition is only
+overridden if we are able to, and want to, display the part inline.)
 
 @item mm-discouraged-alternatives
 List of @sc{mime} types that are discouraged when viewing
@@ -888,9 +888,16 @@ then the value of this variable should be set to:
 ("text/html" "text/richtext")
 @end lisp
 
-@item mm-all-images-fit
-If non-@code{nil}, all images will be deemed to fit into the buffer,
-even when they don't.
+@item mm-inline-large-images-p
+When displaying inline images that are larger than the window, XEmacs
+does not enable scrolling, which means that you cannot see the whole
+image.  To prevent this, the library tries to determine the image size
+before displaying it inline, and if it doesn't fit the window, the
+library will display it externally (e.g. with @samp{ImageMagick} or
+@samp{xv}).  Setting this variable to @code{t} disables this check and
+makes the library display all inline images as inline, regardless of
+their size.
+
 
 @end table
 
index 0dbdbe5..e276d99 100644 (file)
@@ -1,7 +1,7 @@
 @c \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus-ja
-@settitle Semi-gnus 6.10.069 Manual
+@settitle Semi-gnus 6.10.070 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -345,7 +345,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Semi-gnus 6.10.069 Manual
+@title Semi-gnus 6.10.070 Manual
 
 @author by Lars Magne Ingebrigtsen
 @author by members of Semi-gnus mailing-list
@@ -399,7 +399,7 @@ Semi-gnus \e$B$O!"Bg$-$J3($,F~$C$F$$$?$j$5$^$6$^$J7A<0$rMQ$$$?$j$7$F$$$k$A$g$C\e(B
 \e$B$J8@8l7w$r:9JL$7$^$;$s!#$"$"!"%/%j%s%4%s$NJ}$O\e(B Unicode Next Generation\e$B$r\e(B
 \e$B$*BT$A$/$@$5$$!#\e(B
 
-\e$B$3$N@bL@=q$O\e(B Semi-gnus 6.10.069 \e$B$KBP1~$7$^$9!#\e(B
+\e$B$3$N@bL@=q$O\e(B Semi-gnus 6.10.070 \e$B$KBP1~$7$^$9!#\e(B
 
 @end ifinfo
 
@@ -9264,17 +9264,26 @@ gnus \e$B$O$U$D$&F1$8<jK!$G$9$Y$F$N%0%k!<%W$r07$$$^$9!#$"$J$?$O$"$k%0%k!<\e(B
 \e$B$F\e(B expire \e$B$N=hM}$,@)8f$5$l!"%a!<%k$N\e(B expire \e$B$N=hM}$O$"$J$?$,@)8f$7$^$9!#\e(B
 \e$B%a!<%k$N\e(B expire \e$B$K$D$$$F$O\e(B @pxref{Expiring Mail} \e$B$r;2>H$7$F2<$5$$!#\e(B
 
-\e$B$7$P$i$/%a!<%k$H%K%e!<%9$NN>J}$r;H$C$F$_$l$P!"G[Aw$N;EAH$_$N0c$$$,=EMW\e(B
-\e$B$G$O$J$$$3$H$K5$$,IU$-$^$9!#Bg;v$J$N$O5-;v$r<u$1<h$k4Q=0$N?t$J$N$G$9!#\e(B
+\e$B$7$P$i$/%a!<%k$H%K%e!<%9$NN>J}$r;H$C$F$_$l$P!"5-;v$N<h$j07$$$K$D$$$FG[\e(B
+\e$BAw$N5!9=$,9T$J$&$3$H$O$o$:$+$G$"$k$3$H$K5$$,IU$-$^$9!#\e(B
 
 \e$BB?$/$N?M$?$A$OJ#?t$N%a!<%j%s%0%j%9%H$r9VFI$7$F$$$^$9!#$=$l$i$O\e(B SMTP \e$B$G\e(B
-\e$BG[Aw$5$l$k!"%a!<%k!"$G$9!#$"$k?M$?$A$O>.?M?t$KMxMQ$5$l$F$$$k%m!<%+%k\e(B
-\e$B%K%e!<%9%0%k!<%W$r9VFI$7$F$$$^$9!#$=$l$i$O\e(B NNTP \e$B$GG[Aw$5$l$k!"%K%e!<%9!"\e(B
-\e$B$G$9!#\e(B
+\e$BG[Aw$5$l$k!"%a!<%k!"$G$9!#$=$l$i$N5-;v$r$H$F$bCm0U?<$/FI$s$G$$$k$K$b$+\e(B
+\e$B$+$o$i$:!"2?=54V$bJV;v$,L5$$$3$H$,$"$k$G$7$g$&!#;d$?$A$O$=$&$$$&5-;v$r\e(B
+\e$B%;!<%V$9$kI,MW$O$"$j$^$;$s!#$J$<$J$i$P!"$b$&0lEYFI$`I,MW$,@8$8$F$b!"$=\e(B
+\e$B$l$i$O$I$3$+$KJ]B8$5$l$F$$$k$+$i$G$9!#\e(B
+
+\e$B$"$k?M$?$A$O>.?M?t$KMxMQ$5$l$F$$$k%m!<%+%k%K%e!<%9%0%k!<%W$r9VFI$7$F$$\e(B
+\e$B$^$9!#$=$l$i$O\e(B NNTP \e$B$GG[Aw$5$l$k!"%K%e!<%9!"$G$9!#;d$?$A$O<+J,$N;E;v$K\e(B
+\e$BLrN)$F$k$?$a$K!"$=$l$i$NKDBg$J5-;v$NCGJR$rFI$s$@$jJV;v$r$7$J$1$l$P$J$j\e(B
+\e$B$^$;$s!#$=$7$F$=$l$i$OJ]B8$5$l$F$$$J$$$+$b$7$l$^$;$s$+$i!"6=L#$N$"$k5-\e(B
+\e$B;v$r8D?M%a!<%k$HF1$8$h$&$KJ]B8$7$J$1$l$P$J$i$J$$$G$7$g$&!#\e(B
+
+\e$BG[Aw$N;EAH$_$N0c$$$O$I$&$G$b$h$$$3$H$G!"Bg;v$J$N$O$$$+$K<gBj$K6=L#$r;}$C\e(B
+\e$B$F$$$k$+$H!"$b$&0lEYFI$_$?$$$H$-$K$$$+$K4JC1$K8F$S=P$;$k$+$J$N$G$9!#\e(B
 
-\e$BG[Aw$N;EAH$_$N0c$$$O$I$&$G$b$h$$$3$H$G!"Bg;v$J$N$O5-;v$,\e(B @dfn{personal}
\e$B$J$b$N$+\e(B @dfn{public} \e$B$J$b$N$+$H$$$&$3$H$G$9!#$3$l$iFs$D$N<oN`$K1~$8\e(B
-\e$B$F!"B?$/$N%f!<%6$O\e(B gnus \e$B$NF0:n$rHyL/$K@Z$jBX$($^$9!#\e(B
+gnus \e$B$O%a!<%k$r%K%e!<%9%0%k!<%W$N$h$&$K\e(B ``\e$B%0%k!<%W\e(B'' \e$B$KJB$YJQ$($F!"3F!9\e(B
+\e$B$N%0%k!<%W\e(B (\e$B%a!<%k$+%K%e!<%9\e(B) \e$B$rJL8D$K07$&$?$a$NK-IY$J5!G=$rDs6!$7$^$9!#\e(B
 
 \e$B$"$k?M$?$A$O\e(B gnus (\e$B$($C$X$s\e(B) \e$B$N$d$j$+$?$KK~B-$G$-$J$/$F!"\e(Bgnus \e$B$,%a!<%k\e(B
 \e$B%j!<%@$K$J$k$3$H$rM_$7$^$9!#\e(Bgnus \e$B$r$b$C$H%a!<%k%j!<%@E*$J$b$N$K$9$k$?\e(B
@@ -9588,6 +9597,12 @@ gnus \e$B$,<+J,<+?H$G\e(B POP \e$B%a!<%kJ8;zNs$rH/8+$7$h$&$H$7$^$9!#$I$N$h$&$J>l9g$
       ;; \e$BB>$N%a!<%j%s%0%j%9%H\e(B...
       (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list")
       (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list")
+      ;; Both lists below have the same suffix, so prevent
+      ;; cross-posting to mkpkg.list of messages posted only to 
+      ;; the bugs- list, but allow cross-posting when the
+      ;; message was really cross-posted.
+      (any "bugs-mypackage@@somewhere" "mypkg.bugs")
+      (any "mypackage@@somewhere\" - "bugs-mypackage" "mypkg.list")
       ;; \e$B?M!9\e(B...
       (any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen"))
    ;; \e$B9gCW$7$J$+$C$?%a!<%k$OA4$F$rJa$^$($k%0%k!<%W$X9T$-$^$9!#\e(B
@@ -15842,12 +15857,15 @@ Russ Allbery,
 Peter Arius,
 Matt Armstrong,
 Marc Auslander,
+Miles Bader,
+Alexei V. Barantsev,
 Frank Bennett,
 Robert Bihlmeyer,
 Chris Bone,
 Mark Borges,
 Mark Boyns,
 Lance A. Brown,
+Rob Browning,
 Kees de Bruin,
 Martin Buchholz,
 Joe Buehler,
@@ -15860,8 +15878,13 @@ Castor,
 David Charlap,
 Dan Christensen,
 Kevin Christian,
+Jae-you Chung, @c ?
+James H. Cloos, Jr.,
+Laura Conrad,
 Michael R. Cook,
 Glenn Coombs,
+Andrew J. Cosgriff,
+Neil Crellin,
 Frank D. Cringle,
 Geoffrey T. Dairiki,
 Andre Deparade,
@@ -15872,12 +15895,16 @@ Joev Dubach,
 Michael Welsh Duggan,
 Dave Edmondson,
 Paul Eggert,
+Mark W. Eichin,
+Karl Eichwalder,
 Enami Tsugutomo, @c Enami
 Michael Ernst,
 Luc Van Eycken,
 Sam Falkner,
 Nelson Jose dos Santos Ferreira,
 Sigbjorn Finne,
+Sven Fischer,
+Paul Fisher,
 Decklin Foster,
 Gary D. Foster,
 Paul Franklin,
@@ -15885,6 +15912,7 @@ Guy Geens,
 Arne Georg Gleditsch,
 David S. Goldberg,
 Michelangelo Grigni,
+Dale Hagglund,
 D. Hall,
 Magnus Hammerin,
 Kenichi Handa, @c Handa
@@ -15892,29 +15920,36 @@ Raja R. Harinath,
 Yoshiki Hayashi, @c ?
 P. E. Jareth Hein,
 Hisashige Kenji, @c Hisashige
+Scott Hofmann,
 Marc Horowitz,
 Gunnar Horrigmo,
 Richard Hoskins,
 Brad Howes,
+Miguel de Icaza,
 Fran\e,Ag\e(Bois Felix Ingrand,
+Tatsuya Ichikawa, @c ?
 Ishikawa Ichiro, @c Ishikawa
 Lee Iverson,
 Iwamuro Motonori, @c Iwamuro
 Rajappa Iyer,
 Andreas Jaeger,
+Adam P. Jenkins,
 Randell Jesup,
 Fred Johansen,
 Gareth Jones,
 Simon Josefsson,
 Greg Klanderman,
 Karl Kleinpaste,
+Michael Klingbeil,
 Peter Skov Knudsen,
 Shuhei Kobayashi, @c Kobayashi
+Petr Konecny,
 Koseki Yoshinori, @c Koseki
 Thor Kristoffersen,
 Jens Lautenbacher,
 Martin Larose,
 Seokchan Lee, @c Lee
+Joerg Lenneis,
 Carsten Leonhardt,
 James LewisMoss,
 Christian Limpach,
@@ -15941,11 +15976,13 @@ Alexandre Oliva,
 Ken Olstad,
 Masaharu Onishi, @c Onishi
 Hideki Ono, @c Ono
+Ettore Perazzoli,
 William Perry,
 Stephen Peters,
 Jens-Ulrik Holger Petersen,
 Ulrich Pfeifer,
 Matt Pharr,
+Andy Piper,
 John McClary Prevost,
 Bill Pringlemeir,
 Mike Pullen,
@@ -15958,10 +15995,12 @@ Renaud Rioboo,
 Roland B. Roberts,
 Bart Robinson,
 Christian von Roques,
+Markus Rost,
 Jason Rumney,
 Wolfgang Rupprecht,
 Jay Sachs,
 Dewey M. Sasser,
+Conrad Sauerwald,
 Loren Schall,
 Dan Schmidt,
 Ralph Schleicher,
@@ -15979,26 +16018,33 @@ Darren Stalder,
 Richard Stallman,
 Greg Stark,
 Sam Steingold,
+Paul Stevenson,
+Jonas Steverud,
 Paul Stodghill,
+Kiyokazu Suto, @c Suto
 Kurt Swanson,
 Samuel Tardieu,
 Teddy,
 Chuck Thompson,
+Tozawa Akihiko, @c Tozawa
 Philippe Troin,
 James Troup,
 Trung Tran-Duc,
+Jack Twilley,
 Aaron M. Ucko,
 Aki Vehtari,
 Didier Verna,
+Vladimir Volovich,
 Jan Vroonhof,
 Stefan Waldherr,
 Pete Ware,
 Barry A. Warsaw,
 Christoph Wedler,
 Joe Wells,
-Katsumi Yamaoka, @c Yamaoka
+Lee Willis,
+Katsumi Yamaoka @c Yamaoka
 and
-Shenghuo Zhu. @c Zhu
+Lloyd Zusman.
 
 \e$B$=$l$>$l$N?M!9$,9T$C$?;v$N40A4$J354Q$rF@$k$?$a$K!"\e(BChangeLog \e$B$,\e(B Gnus \e$B$N%"\e(B
 \e$B%k%U%!G[I[$K$O4^$^$l$F$$$F!"K-IY$JFI$_J*$rM?$($k$G$7$g$&!#\e(B(550KB \e$B$H$$$/\e(B
index cf239a8..3178898 100644 (file)
@@ -1,7 +1,7 @@
 @c \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Semi-gnus 6.10.069 Manual
+@settitle Semi-gnus 6.10.070 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -319,7 +319,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Semi-gnus 6.10.069 Manual
+@title Semi-gnus 6.10.070 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -362,7 +362,7 @@ internationalization/localization and multiscript features based on MULE
 API.  So Semi-gnus does not discriminate various language communities.
 Oh, if you are a Klingon, please wait Unicode Next Generation.
 
-This manual corresponds to Semi-gnus 6.10.069.
+This manual corresponds to Semi-gnus 6.10.070.
 
 @end ifinfo
 
@@ -9923,7 +9923,7 @@ of a culture shock.
 Gnus does not behave like traditional mail readers.  If you want to make 
 it behave that way, you can, but it's an uphill battle.
 
-Gnus, by default, handles all its group using the same approach.  This
+Gnus, by default, handles all its groups using the same approach.  This
 approach is very newsreaderly---you enter a group, see the new/unread
 messages, and when you read the messages, they get marked as read, and
 you don't see them any more.  (Unless you explicitly ask for them.)
@@ -9940,18 +9940,28 @@ you.  The expire process for mail is covered in depth in @pxref{Expiring
 Mail}.
 
 What many Gnus users find, after using it a while for both news and
-mail, is that the transport becomes more and more irrelevant.  What
-becomes important is the size of the receiving audience.
+mail, is that the transport mechanism has very little to do with how
+they want to treat a message.
 
 Many people subscribe to several mailing lists.  These are transported
-via SMTP, and are therefore mail.  Some people have local news groups
-which have only a handful of readers.  These are transported via NNTP,
-and are therefore news.
+via SMTP, and are therefore mail.  But we might go for weeks without
+answering, or even reading these messages very carefully. We may not
+need to save them because if we should need to read one again, they are
+archived somewhere else.
+
+Some people have local news groups which have only a handful of readers.
+These are transported via NNTP, and are therefore news.  But we may need
+to read and answer a large fraction of the messages very carefully in
+order to do our work.  And there may not be an archive, so we may need
+to save the interesting messages the same way we would personal mail.
 
 The important distinction turns out to be not the transport mechanism,
-but whether the messages are @dfn{personal} or @dfn{public}.  Many users
-then subtly alter the behavior of Gnus according to these two
-categories.
+but other factors such as how interested we are in the subject matter,
+or how easy it is to retrieve the message if we need to read it again.
+
+Gnus provides many options for sorting mail into ``groups'' which behave
+like newsgroups, and for treating each group (whether mail or news)
+differently.
 
 Some users never get comfortable using the Gnus (ahem) paradigm and wish
 that Gnus should grow up and be a male, er, mail reader.  It is possible
@@ -10111,8 +10121,8 @@ POP mail server, or from a procmail directory, for instance.
 @cindex mail spool
 @cindex mail source
 
-You tell Gnus how to fetch mail by creating a @dfn{mail source
-specifier}.
+You tell Gnus how to fetch mail by setting @code{mail-sources}
+(@pxref{Fetching Mail}) to a @dfn{mail source specifier}.
 
 Here's an example:
 
@@ -10315,19 +10325,6 @@ fetched.  You would normally not need to set or change any of these
 variables.
 
 @table @code
-@item mail-source-movemail-program
-@vindex mail-source-movemail-program
-A command to be executed to move mail from the inbox.  The default is
-@samp{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.
-
-@item mail-source-movemail-args
-@vindex mail-source-movemail-args
-Extra arguments to give to the command described above.
-
 @item mail-source-crash-box
 @vindex mail-source-crash-box
 File where mail will be stored while processing it.  The default is
@@ -10489,6 +10486,12 @@ Let's look at an example value of this variable first:
       ;; Other mailing lists...
       (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list")
       (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list")
+      ;; Both lists below have the same suffix, so prevent
+      ;; cross-posting to mkpkg.list of messages posted only to 
+      ;; the bugs- list, but allow cross-posting when the
+      ;; message was really cross-posted.
+      (any "bugs-mypackage@@somewhere" "mypkg.bugs")
+      (any "mypackage@@somewhere\" - "bugs-mypackage" "mypkg.list")
       ;; People...
       (any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen"))
    ;; Unmatched mail goes to the catch all group.
@@ -10507,9 +10510,12 @@ name.  Normal regexp match expansion will be done.  See below for
 examples.
 
 @item
-@var{(FIELD VALUE SPLIT)}: If the split is a list, the first element of
-which is a string, then store the message as specified by SPLIT, if
-header FIELD (a regexp) contains VALUE (also a regexp).
+@var{(FIELD VALUE [- RESTRICT [- RESTRICT [...]]] SPLIT)}: If the split
+is a list, the first element of which is a string, then store the
+message as specified by SPLIT, if header FIELD (a regexp) contains VALUE
+(also a regexp).  If RESTRICT (yet another regexp) matches some string
+after FIELD and before the end of the matched VALUE, the SPLIT is
+ignored.  If none of the RESTRICT clauses match, SPLIT is processed.
 
 @item
 @var{(| SPLIT...)}: If the split is a list, and the first element is
@@ -16972,12 +16978,14 @@ Peter Arius,
 Matt Armstrong,
 Marc Auslander,
 Miles Bader,
+Alexei V. Barantsev,
 Frank Bennett,
 Robert Bihlmeyer,
 Chris Bone,
 Mark Borges,
 Mark Boyns,
 Lance A. Brown,
+Rob Browning,
 Kees de Bruin,
 Martin Buchholz,
 Joe Buehler,
@@ -16990,8 +16998,13 @@ Castor,
 David Charlap,
 Dan Christensen,
 Kevin Christian,
+Jae-you Chung, @c ?
+James H. Cloos, Jr.,
+Laura Conrad,
 Michael R. Cook,
 Glenn Coombs,
+Andrew J. Cosgriff,
+Neil Crellin,
 Frank D. Cringle,
 Geoffrey T. Dairiki,
 Andre Deparade,
@@ -17002,6 +17015,7 @@ Joev Dubach,
 Michael Welsh Duggan,
 Dave Edmondson,
 Paul Eggert,
+Mark W. Eichin,
 Karl Eichwalder,
 Enami Tsugutomo, @c Enami
 Michael Ernst,
@@ -17009,6 +17023,7 @@ Luc Van Eycken,
 Sam Falkner,
 Nelson Jose dos Santos Ferreira,
 Sigbjorn Finne,
+Sven Fischer,
 Paul Fisher,
 Decklin Foster,
 Gary D. Foster,
@@ -17025,24 +17040,30 @@ Raja R. Harinath,
 Yoshiki Hayashi, @c ?
 P. E. Jareth Hein,
 Hisashige Kenji, @c Hisashige
+Scott Hofmann,
 Marc Horowitz,
 Gunnar Horrigmo,
 Richard Hoskins,
 Brad Howes,
+Miguel de Icaza,
 François Felix Ingrand,
+Tatsuya Ichikawa, @c ?
 Ishikawa Ichiro, @c Ishikawa
 Lee Iverson,
 Iwamuro Motonori, @c Iwamuro
 Rajappa Iyer,
 Andreas Jaeger,
+Adam P. Jenkins,
 Randell Jesup,
 Fred Johansen,
 Gareth Jones,
 Simon Josefsson,
 Greg Klanderman,
 Karl Kleinpaste,
+Michael Klingbeil,
 Peter Skov Knudsen,
 Shuhei Kobayashi, @c Kobayashi
+Petr Konecny,
 Koseki Yoshinori, @c Koseki
 Thor Kristoffersen,
 Jens Lautenbacher,
@@ -17075,6 +17096,7 @@ Alexandre Oliva,
 Ken Olstad,
 Masaharu Onishi, @c Onishi
 Hideki Ono, @c Ono
+Ettore Perazzoli,
 William Perry,
 Stephen Peters,
 Jens-Ulrik Holger Petersen,
@@ -17116,18 +17138,23 @@ Darren Stalder,
 Richard Stallman,
 Greg Stark,
 Sam Steingold,
+Paul Stevenson,
 Jonas Steverud,
 Paul Stodghill,
+Kiyokazu Suto, @c Suto
 Kurt Swanson,
 Samuel Tardieu,
 Teddy,
 Chuck Thompson,
+Tozawa Akihiko, @c Tozawa
 Philippe Troin,
 James Troup,
 Trung Tran-Duc,
+Jack Twilley,
 Aaron M. Ucko,
 Aki Vehtari,
 Didier Verna,
+Vladimir Volovich,
 Jan Vroonhof,
 Stefan Waldherr,
 Pete Ware,
@@ -19063,6 +19090,16 @@ Under the subject "foo1", you wrote on 01.01.1999:
 Allow "orphan" scores in the Agent scoring.
 
 @item
+@example
+    - Edit article's summary line. 
+    - End edit
+    - Sort lines in buffer by subject
+
+    --> the old subject line appears in Summary buffer, not the one that was
+    just changed to.
+@end example
+
+@item
 Solve the halting problem.
 
 @c TODO
index 0e7f7a5..5430ed5 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message-ja
-@settitle Message 6.10.069 Manual
+@settitle Message 6.10.070 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -60,7 +60,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Message 6.10.069 Manual
+@title Message 6.10.070 Manual
 
 @author by Lars Magne Ingebrigtsen
 @translated by members of Semi-gnus mailing-list
@@ -112,7 +112,7 @@ Gnus \e$B$NA4$F$N%a%C%;!<%8$N:n@.\e(B (\e$B%a!<%k$H%K%e!<%9$NN>J}\e(B) \e$B$O%a%C%;!<
 * Key Index::         \e$B%a%C%;!<%8%b!<%I%-!<$N0lMw!#\e(B
 @end menu
 
-\e$B$3$N%^%K%e%"%k$O\e(B Message 6.10.069 \e$B$KBP1~$7$^$9!#\e(BMessage \e$B$O$3$N%^%K%e%"%k$H\e(B
+\e$B$3$N%^%K%e%"%k$O\e(B Message 6.10.070 \e$B$KBP1~$7$^$9!#\e(BMessage \e$B$O$3$N%^%K%e%"%k$H\e(B
 \e$BF1$8HGHV9f$N\e(B Gnus \e$B$NG[I[$H6&$KG[I[$5$l$^$9!#\e(B
 
 
index 5cf8e22..c140ce3 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message 6.10.069 Manual
+@settitle Message 6.10.070 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 Message 6.10.069 Manual
+@title Message 6.10.070 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 Message 6.10.069.  Message is
+This manual corresponds to Message 6.10.070.  Message is
 distributed with the Gnus distribution bearing the same version number
 as this manual.