Sync up with pgnus-0.34
authorichikawa <ichikawa>
Sun, 11 Oct 1998 14:24:06 +0000 (14:24 +0000)
committerichikawa <ichikawa>
Sun, 11 Oct 1998 14:24:06 +0000 (14:24 +0000)
35 files changed:
ChangeLog
GNUS-NEWS
Makefile.in
README.ichikawa
lisp/ChangeLog
lisp/Makefile.in
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-async.el
lisp/gnus-cache.el
lisp/gnus-mailcap.el
lisp/gnus-offline.el
lisp/gnus-score.el
lisp/gnus-soup.el
lisp/gnus-sum.el
lisp/gnus-uu.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/message.el
lisp/mm-bodies.el
lisp/mm-decode.el
lisp/mm-util.el
lisp/mm-view.el
lisp/nnbabyl.el
lisp/nndraft.el
lisp/nnmail.el
lisp/nnmbox.el
lisp/nnml.el
lisp/nnvirtual.el
lisp/parse-time.el
texi/ChangeLog
texi/Makefile.in
texi/emacs-mime.texi
texi/gnus.texi
texi/message.texi

index bfae2b5..556ba9f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+1998-10-11  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
+
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.023.
+       Add version information for SEMI-1.9/FLIM-1.10.
+
+       * Sync up with Pterodactyl Gnus 0.34.
+
 1998-10-10  Katsumi Yamaoka   <yamaoka@jpl.org>
 
        * lisp/gnus-msg.el (gnus-message-make-user-agent): Fix typo in doc
index 75306e1..a2ca24f 100644 (file)
--- a/GNUS-NEWS
+++ b/GNUS-NEWS
@@ -1,2 +1,5 @@
 ** Gnus changes.
 
+*** gnus-auto-select-first can now be a function to be
+called to position point.
+
index 874e729..be6a403 100644 (file)
@@ -44,7 +44,7 @@ distclean:
        make clean
        rm -rf *~
        for i in lisp texi; do (cd $$i; make distclean); done
-       rm -f config.log config.status Makefile
+       rm -f config.log config.status config.cache Makefile
 
 osome:
        make EMACS=xemacs21 some
index 61b2919..3b793b1 100644 (file)
@@ -21,9 +21,14 @@ NEWS:
   Enable to get Multiple Pop server in POP and APOP using pop3-fma.el
   (pop3 For Multi Account).
 
+  And added many other features by "ELIPS"
+
 * TODO
 
+  See TODO.ja
+
 * T-gnus 6.8.17 is the last version Gnus 5.6 base.
-  After this , T-gnus 6.9 - this is based on pgnus.
+  After this , T-gnus 6.10 - this is based on pgnus.
+
+  Latest T-gnus is T-gnus 6.10.023 (Based on pgnus-0.34).
 
-     T-gnus 6.9.0 - Based on pgnus-0.6
index 0555050..7667891 100644 (file)
@@ -1,3 +1,130 @@
+Sun Oct 11 02:28:40 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Pterodactyl Gnus v0.34 is released.
+
+1998-10-11 02:15:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mm-decode.el (mm-inline-media-tests): delivery-status.
+
+       * mm-view.el (mm-inline-text): Provide default.
+
+1998-10-11 01:01:37  Lloyd Zusman  <ljz@asfast.com>
+
+       * mailcap.el (mailcap-possible-viewers): Fix nils.
+
+1998-10-11 00:03:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (gnus-article-edit-exit): Don't do updates.
+       (article-update-date-lapsed): Record the buffer.
+       (article-update-date-lapsed): Do all windows that display article
+       buffers. 
+
+       * nnml.el (nnml-generate-nov-databases-1): Ditto.
+
+       * gnus-score.el (gnus-score-score-files-1): Ignore dotted files. 
+
+       * gnus-art.el (gnus-insert-mime-button): Mark buttons as
+       annoations. 
+
+       * gnus-msg.el (gnus-summary-mail-forward): Decode properly.
+
+1998-10-10 22:07:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-agent.el (gnus-category-add): Change default category to
+       'false. 
+
+       * nnvirtual.el (nnvirtual-update-read-and-marked): Don't nix out
+       scores. 
+
+       * gnus-draft.el (gnus-draft-send): Check server more.
+
+       * gnus-art.el (gnus-article-view-part): New command and keystroke.
+       (gnus-article-goto-part): New function.
+
+       * mm-view.el (mm-inline-text): Insert richtext properly.
+
+       * gnus-art.el (gnus-insert-mime-button): Store handle in alist. 
+
+1998-10-03 15:04:27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * parse-time.el (parse-time-rules): Accept dates far into the past
+       and the future, and parse single-digit numbers as years.
+
+1998-10-02 04:46:46  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mm-decode.el (mm-display-external): Chop off directories.
+
+1998-10-01 07:33:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * uudecode.el (uu-decode-region-external): Use
+       insert-file-contents-literally. 
+
+       * gnus-cache.el (gnus-cache-generate-active): Translate _ to :.
+
+1998-10-01 07:02:11  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * uudecode.el: New file.
+
+       * mm-bodies.el (mm-decode-content-transfer-encoding): Do
+       x-uuencode. 
+
+1998-10-01 05:19:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (gnus-mime-display-alternative): Set faces.
+
+       * message.el (message-fetch-field): Unfold properly.
+
+       * mm-bodies.el (mm-decode-content-transfer-encoding): Replace CRLF
+       in text/plain.
+
+1998-09-30 05:47:49  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-sum.el (gnus-summary-first-unread-subject): New command.
+       (gnus-auto-select-first): Removed.
+       (gnus-auto-select-first): Extended.
+       (gnus-summary-read-group-1): Use new value.
+
+1998-09-29 13:21:06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * message.el (message-fix-before-sending): Space.
+
+       * nnmail.el (nnmail-find-file): Don't erase.
+
+Wed Sep 30 23:49:03 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-agent.el (gnus-agent-fetch-headers): Do not decode headers.
+
+Wed Sep 30 23:46:29 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-soup.el (gnus-soup-add-article): Do not decode headers.
+
+Wed Sep 30 23:44:08 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-soup.el (gnus-soup-pack-packet): Pack only if necesary.
+
+Sat Sep 26 03:04:18 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * mm-util.el (mm-with-unibyte-buffer): Make it work in XEmacs
+       20.4.
+
+1998-09-29 11:35:09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (gnus-mime-view-all-parts): New command and
+       keystroke. 
+
+       * mm-decode.el (mm-display-external): Translate slashes.
+
+       * nnmail.el (nnmail-find-file): Restrict auto-mode-alist.
+
+       * nndraft.el (nndraft-retrieve-headers): Don't copy so much. 
+
+       * mm-decode.el (mm-quote-arg): Quote spaces.
+       (mm-display-external): Quote args.
+
+1998-09-24 22:27:55  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mm-decode.el (mm-inlinable-part-p): New function.
+
 Thu Sep 24 20:28:31 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Pterodactyl Gnus v0.33 is released.
index d143e8f..108c6fa 100644 (file)
@@ -12,22 +12,17 @@ INSTALL_DATA = @INSTALL_DATA@
 SHELL = /bin/sh
 VPATH = @srcdir@
 
-total:
-       rm -f *.elc ; $(EMACS) $(FLAGS) -f dgnushack-compile
-
-all:
+all total:
        rm -f *.elc ; $(EMACS) $(FLAGS) -f dgnushack-compile
 
 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"
 
-clever:
-       $(EMACS) $(FLAGS) -f dgnushack-compile
-
-some:
+clever some:
        $(EMACS) $(FLAGS) -f dgnushack-compile
 
 install: clever
+       rm -f dgnushack.elc
        $(SHELL) $(top_srcdir)/mkinstalldirs $(lispdir)
        for p in *.elc; do \
          echo " $(INSTALL_DATA) $$p $(lispdir)/$$p"; \
index cb1493d..022cab6 100644 (file)
@@ -768,7 +768,8 @@ the actual number of articles toggled is returned."
                       (gnus-uncompress-range
                        (cons (1+ (caar (last gnus-agent-article-alist)))
                              (cdr (gnus-active group)))))
-                   (gnus-list-of-unread-articles group))))
+                   (gnus-list-of-unread-articles group)))
+       (gnus-decode-encoded-word-function 'identity)) 
     ;; Fetch them.
     (when articles
       (gnus-message 7 "Fetching headers for %s..." group)
@@ -931,9 +932,10 @@ the actual number of articles toggled is returned."
                                     (gnus-agent-false nil))))))
        ;; No, we need to decide what we want.
        (setq score-param
-             (let ((score-method (or 
-                                  (gnus-group-get-parameter group 'agent-score t)
-                                  (caddr category))))
+             (let ((score-method
+                    (or 
+                     (gnus-group-get-parameter group 'agent-score t)
+                     (caddr category))))
                (when score-method
                  (require 'gnus-score)
                  (if (eq score-method 'file)
@@ -1197,7 +1199,7 @@ The following commands are available:
   (interactive "SCategory name: ")
   (when (assq category gnus-category-alist)
     (error "Category %s already exists" category))
-  (push (list category 'true nil nil)
+  (push (list category 'false nil nil)
        gnus-category-alist)
   (gnus-category-write)
   (gnus-category-list))
index 4c78cee..668f7b9 100644 (file)
@@ -566,6 +566,7 @@ displayed by the first non-nil matching CONTENT face."
 
 ;;; Internal variables
 
+(defvar gnus-article-mime-handle-alist nil)
 (defvar article-lapsed-timer nil)
 (defvar gnus-article-current-summary nil)
 
@@ -1465,12 +1466,13 @@ function and want to see what the date was before converting."
   (let (deactivate-mark)
     (save-excursion
       (ignore-errors
-        (when (and (gnus-buffer-live-p gnus-article-buffer)
-                  (get-buffer-window gnus-article-buffer))
-          (set-buffer gnus-article-buffer)
-          (goto-char (point-min))
-          (when (re-search-forward "^X-Sent:" nil t)
-            (article-date-lapsed t)))))))
+       (walk-windows
+        (lambda (w)
+          (set-buffer (window-buffer w))
+          (when (eq major-mode 'gnus-article-mode)
+            (goto-char (point-min))
+            (when (re-search-forward "^X-Sent:" nil t)
+              (article-date-lapsed t)))))))))
 
 (defun gnus-start-date-timer (&optional n)
   "Start a timer to update the X-Sent header in the article buffers.
@@ -1895,8 +1897,6 @@ If variable `gnus-use-long-file-name' is non-nil, it is
   "\C-c\C-i" gnus-info-find-node
   "\C-c\C-b" gnus-bug
 
-  gnus-mouse-2 'widget-button-click
-  
   "\C-d" gnus-article-read-summary-keys
   "\M-*" gnus-article-read-summary-keys
   "\M-#" gnus-article-read-summary-keys
@@ -1982,6 +1982,7 @@ commands:
                         (substring name (match-end 0))))))
     (setq gnus-article-buffer name)
     (setq gnus-original-article-buffer original)
+    (setq gnus-article-mime-handle-alist nil)
     ;; This might be a variable local to the summary buffer.
     (unless gnus-single-article-buffer
       (save-excursion
@@ -2190,17 +2191,19 @@ If ALL-HEADERS is non-nil, no headers are hidden."
 ;;; Gnus MIME viewing functions
 ;;;
 
-(defvar gnus-mime-button-line-format "%{%([%t%d%n]%)%}\n"
+(defvar gnus-mime-button-line-format "%{%([%p. %t%d%n]%)%}\n"
   "The following specs can be used:
 %t  The MIME type
 %n  The `name' parameter
 %d  The description, if any
-%l  The length of the encoded part")
+%l  The length of the encoded part
+%p  The part identifier")
 
 (defvar gnus-mime-button-line-format-alist
   '((?t gnus-tmp-type ?s)
     (?n gnus-tmp-name ?s)
     (?d gnus-tmp-description ?s)
+    (?p gnus-tmp-id ?s)
     (?l gnus-tmp-length ?d)))
 
 (defvar gnus-mime-button-map nil)
@@ -2215,6 +2218,13 @@ If ALL-HEADERS is non-nil, no headers are hidden."
   (define-key gnus-mime-button-map "i" 'gnus-mime-inline-part)
   (define-key gnus-mime-button-map "|" 'gnus-mime-pipe-part))
 
+(defun gnus-mime-view-all-parts ()
+  "View all the MIME parts."
+  (interactive)
+  (let ((handles gnus-article-mime-handles))
+    (while handles
+      (mm-display-part (pop handles)))))
+
 (defun gnus-mime-save-part ()
   "Save the MIME part under point."
   (interactive)
@@ -2257,6 +2267,21 @@ If ALL-HEADERS is non-nil, no headers are hidden."
       (mm-insert-inline data contents)
       (goto-char b))))
 
+(defun gnus-article-view-part (n)
+  "View MIME part N, which is the numerical prefix."
+  (interactive "p")
+  (save-current-buffer
+    (set-buffer gnus-article-buffer)
+    (when (> n (length gnus-article-mime-handle-alist))
+      (error "No such part"))
+    (let ((handle (cdr (assq n gnus-article-mime-handle-alist))))
+      (gnus-article-goto-part n)
+      (mm-display-part handle))))
+
+(defun gnus-article-goto-part (n)
+  "Go to MIME part N."
+  (goto-char (text-property-any (point-min) (point-max) 'gnus-part n)))
+
 (defun gnus-insert-mime-button (handle)
   (let ((gnus-tmp-name (mail-content-type-get (mm-handle-type handle) 'name))
        (gnus-tmp-type (car (mm-handle-type handle)))
@@ -2264,7 +2289,9 @@ If ALL-HEADERS is non-nil, no headers are hidden."
        (gnus-tmp-length (save-excursion
                           (set-buffer (mm-handle-buffer handle))
                           (buffer-size)))
+       (gnus-tmp-id (1+ (length gnus-article-mime-handle-alist)))
        b e)
+    (push (cons gnus-tmp-id handle) gnus-article-mime-handle-alist)
     (setq gnus-tmp-name
          (if gnus-tmp-name
              (concat " (" gnus-tmp-name ")")
@@ -2279,6 +2306,8 @@ If ALL-HEADERS is non-nil, no headers are hidden."
      `(local-map ,gnus-mime-button-map
                 keymap ,gnus-mime-button-map
                 gnus-callback mm-display-part
+                gnus-part ,gnus-tmp-id
+                gnus-type annotation
                 gnus-data ,handle))
     (setq e (point))
     (widget-convert-button 'link from to :action 'gnus-widget-press-button
@@ -2300,7 +2329,8 @@ If ALL-HEADERS is non-nil, no headers are hidden."
     (let* ((handles (mm-dissect-buffer))
           handle name type b e)
       (mapcar 'mm-destroy-part gnus-article-mime-handles)
-      (setq gnus-article-mime-handles handles)
+      (setq gnus-article-mime-handles handles
+           gnus-article-mime-handle-alist nil)
       (when handles
        (goto-char (point-min))
        (search-forward "\n\n" nil t)
@@ -2311,6 +2341,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
              (insert "\n\n")
              (when (and (mm-automatic-display-p
                          (car (mm-handle-type handle)))
+                        (mm-inlinable-part-p (car (mm-handle-type handle)))
                         (or (not (mm-handle-disposition handle))
                             (equal (car (mm-handle-disposition handle))
                                    "inline")))
@@ -2338,6 +2369,8 @@ If ALL-HEADERS is non-nil, no headers are hidden."
                         (car (mm-handle-type handle))))
         (point))
        `(local-map ,gnus-mime-button-map
+                  ,gnus-mouse-face-prop ,gnus-article-mouse-face
+                  face ,gnus-article-button-face
                   keymap ,gnus-mime-button-map
                   gnus-callback
                   (lambda (handles)
@@ -2905,11 +2938,10 @@ groups."
          (setq gnus-original-article nil)))
       (set-window-configuration winconf)
       ;; Tippy-toe some to make sure that point remains where it was.
-      (let ((buf (current-buffer)))
+      (save-current-buffer
        (set-buffer curbuf)
        (set-window-start (get-buffer-window (current-buffer)) window-start)
-       (goto-char p)
-       (set-buffer buf)))))
+       (goto-char p)))))
 
 (defun gnus-article-edit-full-stops ()
   "Interactively repair spacing at end of sentences."
index 8da43cc..870192f 100644 (file)
@@ -213,11 +213,13 @@ It should return non-nil if the article is to be prefetched."
        (when arg
         (gnus-async-set-buffer)
         (gnus-async-with-semaphore
-         (push (list ',(intern (format "%s-%d" group article)
-                               gnus-asynch-obarray)
-                     ,mark (set-marker (make-marker) (point-max))
-                     ,group ,article)
-               gnus-async-article-alist)))
+         (setq
+          gnus-async-article-alist
+          (cons (list ',(intern (format "%s-%d" group article)
+                                gnus-asynch-obarray)
+                      ,mark (set-marker (make-marker) (point-max))
+                      ,group ,article)
+                gnus-async-article-alist))))
        (if (not (gnus-buffer-live-p ,summary))
           (gnus-async-with-semaphore
            (setq gnus-async-fetch-list nil))
index 70d51f2..33aad1f 100644 (file)
@@ -647,6 +647,8 @@ If LOW, update the lower bound instead."
     (when top
       (gnus-message 5 "Generating the cache active file...")
       (setq gnus-cache-active-hashtb (gnus-make-hashtable 123)))
+    (when (string-match "^\\(nn[^_]+\\)_" group)
+      (setq group (replace-match "\\1:" t t group)))
     ;; Separate articles from all other files and directories.
     (while files
       (if (string-match "^[0-9]+$" (file-name-nondirectory (car files)))
index c5249f3..7caa74f 100644 (file)
@@ -469,7 +469,7 @@ If FORCE, re-parse even if already parsed."
       (cond
        ((equal (car (car major)) minor)
        (setq exact (cons (cdr (car major)) exact)))
-       ((string-match (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 be74f65..cbc3b0b 100644 (file)
@@ -177,6 +177,7 @@ If nil , use auto-dialup if required to connect the Internet."
   "*Hook to be run after the gnus-offline package has been loaded."
   :group 'gnus-offline
   :type 'hook)
+
 (defcustom gnus-offline-before-online-hook nil
   "*Hook to be run before all online jobs."
   :group 'gnus-offline
index 0ab923b..f5505be 100644 (file)
@@ -2473,8 +2473,8 @@ SCORE is the score to add."
        seen out file)
     (while (setq file (pop files))
       (cond
-       ;; Ignore "." and "..".
-       ((member (file-name-nondirectory file) '("." ".."))
+       ;; Ignore files that start with a dot.
+       ((string-match "^\\." (file-name-nondirectory file))
        nil)
        ;; Add subtrees of directory to also be searched.
        ((and (file-directory-p file)
index 7b7b50e..eaec7cd 100644 (file)
@@ -140,21 +140,19 @@ move those articles instead."
     (buffer-disable-undo tmp-buf)
     (save-excursion
       (while articles
-       ;; Find the header of the article.
-       (set-buffer gnus-summary-buffer)
-       (when (setq headers (gnus-summary-article-header (car articles)))
          ;; Put the article in a buffer.
-         (set-buffer tmp-buf)
-         (when (gnus-request-article-this-buffer
-                (car articles) gnus-newsgroup-name)
-           (save-restriction
-             (message-narrow-to-head)
-             (message-remove-header gnus-soup-ignored-headers t))
-           (gnus-soup-store gnus-soup-directory prefix headers
-                            gnus-soup-encoding-type
-                            gnus-soup-index-type)
-           (gnus-soup-area-set-number
-            area (1+ (or (gnus-soup-area-number area) 0)))))
+       (set-buffer tmp-buf)
+       (when (gnus-request-article-this-buffer
+              (car articles) gnus-newsgroup-name)
+         (setq headers (nnheader-parse-head t))
+         (save-restriction
+           (message-narrow-to-head)
+           (message-remove-header gnus-soup-ignored-headers t))
+         (gnus-soup-store gnus-soup-directory prefix headers
+                          gnus-soup-encoding-type
+                          gnus-soup-index-type)
+         (gnus-soup-area-set-number
+          area (1+ (or (gnus-soup-area-number area) 0))))
        ;; Mark article as read.
        (set-buffer gnus-summary-buffer)
        (gnus-summary-remove-process-mark (car articles))
@@ -168,11 +166,11 @@ move those articles instead."
   "Make a SOUP packet from the SOUP areas."
   (interactive)
   (gnus-soup-read-areas)
-  (unless (file-exists-p gnus-soup-directory)
-    (message "No such directory: %s" gnus-soup-directory))
-  (when (null (directory-files gnus-soup-directory nil "\\.MSG$"))
-    (message "No files to pack."))
-  (gnus-soup-pack gnus-soup-directory gnus-soup-packer))
+  (if (file-exists-p gnus-soup-directory)
+      (if (directory-files gnus-soup-directory nil "\\.MSG$")
+         (gnus-soup-pack gnus-soup-directory gnus-soup-packer)
+       (message "No files to pack."))
+    (message "No such directory: %s" gnus-soup-directory)))
 
 (defun gnus-group-brew-soup (n)
   "Make a soup packet from the current group.
index 7425ad2..cf346a1 100644 (file)
@@ -256,8 +256,12 @@ equal will be included."
 (defcustom gnus-auto-select-first t
   "*If nil, don't select the first unread article when entering a group.
 If this variable is `best', select the highest-scored unread article
-in the group.  If neither nil nor `best', select the first unread
-article.
+in the group.  If t, select the first unread article.
+
+This variable can also be a function to place point on a likely
+subject line.  Useful values include `gnus-summary-first-unread-subject', 
+`gnus-summary-first-unread-article' and 
+`gnus-summary-best-unread-article'.
 
 If you want to prevent automatic selection of the first unread article
 in some newsgroups, set the variable to nil in
@@ -265,7 +269,10 @@ in some newsgroups, set the variable to nil in
   :group 'gnus-group-select
   :type '(choice (const :tag "none" nil)
                 (const best)
-                (sexp :menu-tag "first" t)))
+                (sexp :menu-tag "first" t)
+                (function-item gnus-summary-first-unread-subject)
+                (function-item gnus-summary-first-unread-article)
+                (function-item gnus-summary-best-unread-article)))
 
 (defcustom gnus-auto-select-next t
   "*If non-nil, offer to go to the next group from the end of the previous.
@@ -1267,7 +1274,8 @@ increase the score of each group you read."
     "L" gnus-summary-lower-score
     "\M-i" gnus-symbolic-argument
     "h" gnus-summary-select-article-buffer
-
+    "b" gnus-article-view-part
+    
     "V" gnus-summary-score-map
     "X" gnus-uu-extract-map
     "S" gnus-summary-send-map)
@@ -2701,10 +2709,15 @@ If NO-DISPLAY, don't generate a summary buffer."
                 (not no-display)
                 gnus-newsgroup-unreads
                 gnus-auto-select-first)
-           (unless (if (eq gnus-auto-select-first 'best)
-                       (gnus-summary-best-unread-article)
-                     (gnus-summary-first-unread-article))
-             (gnus-configure-windows 'summary))
+           (progn
+             (gnus-configure-windows 'summary)
+             (cond
+              ((eq gnus-auto-select-first 'best)
+               (gnus-summary-best-unread-article))
+              ((eq gnus-auto-select-first t)
+               (gnus-summary-first-unread-article))
+              ((gnus-functionp gnus-auto-select-first)
+               (funcall gnus-auto-select-first))))
          ;; Don't select any articles, just move point to the first
          ;; article in the group.
          (goto-char (point-min))
@@ -5868,6 +5881,16 @@ Return nil if there are no unread articles."
        (gnus-summary-display-article (gnus-summary-article-number)))
     (gnus-summary-position-point)))
 
+(defun gnus-summary-first-unread-subject ()
+  "Place the point on the subject line of the first unread article.
+Return nil if there are no unread articles."
+  (interactive)
+  (prog1
+      (when (gnus-summary-first-subject t)
+       (gnus-summary-show-thread)
+       (gnus-summary-first-subject t))
+    (gnus-summary-position-point)))
+
 (defun gnus-summary-first-article ()
   "Select the first article.
 Return nil if there are no articles."
index 0cc00a6..ded0563 100644 (file)
@@ -833,8 +833,9 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
              (eq in-state 'first-and-last))
          (progn
            (setq state (list 'begin))
-           (save-excursion (set-buffer (gnus-get-buffer-create "*gnus-uu-body*"))
-                           (erase-buffer))
+           (save-excursion
+             (set-buffer (gnus-get-buffer-create "*gnus-uu-body*"))
+             (erase-buffer))
            (save-excursion
              (set-buffer (gnus-get-buffer-create "*gnus-uu-pre*"))
              (erase-buffer)
index 8ff098e..9658878 100644 (file)
@@ -258,21 +258,6 @@ call it with the value of the `gnus-data' text property."
                 (delete-extent extent)
                 nil)))
 
-;; Fixed by Christopher Davis <ckd@loiosh.kei.com>.
-(defun gnus-xmas-article-add-button (from to fun &optional data)
-  "Create a button between FROM and TO with callback FUN and data DATA."
-  (when gnus-article-button-face
-    (gnus-overlay-put (gnus-make-overlay from to)
-                     'face gnus-article-button-face))
-  (gnus-add-text-properties
-   from to
-   (nconc
-    (and gnus-article-mouse-face
-        (list 'mouse-face gnus-article-mouse-face))
-    (list 'gnus-callback fun)
-    (and data (list 'gnus-data data))
-    (list 'highlight t))))
-
 (defun gnus-xmas-window-top-edge (&optional window)
   (nth 1 (window-pixel-edges window)))
 
@@ -465,7 +450,6 @@ call it with the value of the `gnus-data' text property."
   (fset 'gnus-summary-recenter 'gnus-xmas-summary-recenter)
   (fset 'gnus-extent-start-open 'gnus-xmas-extent-start-open)
   (fset 'gnus-article-push-button 'gnus-xmas-article-push-button)
-  (fset 'gnus-article-add-button 'gnus-xmas-article-add-button)
   (fset 'gnus-window-top-edge 'gnus-xmas-window-top-edge)
   (fset 'gnus-read-event-char 'gnus-xmas-read-event-char)
   (fset 'gnus-group-startup-message 'gnus-xmas-group-startup-message)
index 954a30b..948f33f 100644 (file)
@@ -253,17 +253,17 @@ is restarted, and sometimes reloaded."
 (defconst gnus-product-name "T-gnus"
   "Product name of this version of gnus.")
 
-(defconst gnus-version-number "6.10.022"
+(defconst gnus-version-number "6.10.023"
   "Version number for this version of gnus.")
 
-(defconst gnus-original-version-number "0.33"
+(defconst gnus-original-version-number "0.34"
     "Version number for this version of Gnus.")
 
 (defconst gnus-original-product-name "Pterodactyl Gnus"
     "Version number for this version of Gnus.")
 
 (defconst gnus-version
-  (format "%s %s (based on %s %s ; for SEMI 1.8, FLIM 1.8/1.9)"
+  (format "%s %s (based on %s %s ; for SEMI 1.8/1.9, FLIM 1.8/1.9/1.10)"
           gnus-product-name gnus-version-number
          gnus-original-product-name gnus-original-version-number)
   "Version string for this version of gnus.")
index 81e5052..ad81728 100644 (file)
@@ -1145,7 +1145,9 @@ The cdr of ech entry is a function for applying the face to a region.")
   (let* ((inhibit-point-motion-hooks t)
         (value (mail-fetch-field header nil (not not-all))))
     (when value
-      (nnheader-replace-chars-in-string value ?\n ? ))))
+      (while (string-match "\n[\t ]+" value)
+       (setq value (replace-match " " t t value)))
+      value)))
 
 (defun message-narrow-to-field ()
   "Narrow the buffer to the header on the current line."
@@ -2209,7 +2211,7 @@ the user from the mailer."
   (message-check 'invisible-text
     (when (text-property-any (point-min) (point-max) 'invisible t)
       (put-text-property (point-min) (point-max) 'invisible nil)
-      (unless (yes-or-no-p "Invisible text found and made visible; continue posting?")
+      (unless (yes-or-no-p "Invisible text found and made visible; continue posting? ")
        (error "Invisible text found and made visible")))))
 
 (defun message-add-action (action &rest types)
index 135b974..044f52c 100644 (file)
@@ -30,6 +30,7 @@
 (require 'mm-util)
 (require 'rfc2047)
 (require 'qp)
+(require 'uudecode)
 
 (defun mm-encode-body ()
   "Encode a body.
@@ -93,18 +94,27 @@ If no encoding was done, nil is returned."
 ;;; Functions for decoding
 ;;;
 
-(defun mm-decode-content-transfer-encoding (encoding)
+(defun mm-decode-content-transfer-encoding (encoding &optional type)
   (cond
    ((eq encoding 'quoted-printable)
     (quoted-printable-decode-region (point-min) (point-max)))
    ((eq encoding 'base64)
-    (condition-case ()
-       (base64-decode-region (point-min) (point-max))
-      (error nil)))
+    (prog1
+       (condition-case ()
+           (base64-decode-region (point-min) (point-max))
+         (error nil))
+      (when (equal type "text/plain")
+       (goto-char (point-min))
+       (while (search-forward "\r\n" nil t)
+         (replace-match "\n" t t)))))
    ((memq encoding '(7bit 8bit binary))
     )
    ((null encoding)
     )
+   ((eq encoding 'x-uuencode)
+    (condition-case ()
+       (uu-decode-region (point-min) (point-max))
+      (error nil)))
    (t
     (error "Can't decode encoding %s" encoding))))
 
index 7090855..617d331 100644 (file)
@@ -40,6 +40,7 @@
     ("text/enriched" mm-inline-text t)
     ("text/richtext" mm-inline-text t)
     ("text/html" mm-inline-text (featurep 'w3))
+    ("message/delivery-status" mm-inline-text t)
     ("audio/wav" mm-inline-audio
      (and (or (featurep 'nas-sound) (featurep 'native-sound))
          (device-sound-enabled-p)))
       (insert-buffer-substring obuf beg)
       (current-buffer))))
 
+(defun mm-inlinable-part-p (type)
+  "Say whether TYPE can be displayed inline."
+  (eq (mm-user-method type) 'inline))
+
 (defun mm-display-part (handle &optional no-default)
   "Display the MIME part represented by HANDLE."
   (save-excursion
   "Display HANDLE using METHOD."
   (mm-with-unibyte-buffer
     (insert-buffer-substring (mm-handle-buffer handle))
-    (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
+    (mm-decode-content-transfer-encoding
+     (mm-handle-encoding handle) (car (mm-handle-type handle)))
     (if (functionp method)
        (let ((cur (current-buffer)))
          (switch-to-buffer (generate-new-buffer "*mm*"))
        (make-directory dir)
        (set-file-modes dir 448)
        (if filename
-           (setq file (expand-file-name (or filename "mm.") dir))
+           (setq file (expand-file-name (file-name-nondirectory filename)
+                                        dir))
          (setq file (make-temp-name (expand-file-name "mm." dir))))
        (write-region (point-min) (point-max)
                      file nil 'nomesg nil 'no-conversion)
              (if needsterm
                  (start-process "*display*" nil
                                 "xterm"
-                                "-e" (format method file))
+                                "-e" shell-file-name "-c"
+                                (format method
+                                        (mm-quote-arg file)))
                (start-process "*display*" (generate-new-buffer "*mm*")
                               shell-file-name
-                              "-c" (format method file))))
+                              "-c" (format method
+                                           (mm-quote-arg file)))))
        (mm-handle-set-undisplayer handle (cons file process))
        (message "Displaying %s..." (format method file))))))
 
@@ -318,7 +328,7 @@ This overrides entries in the mailcap file."
   "Return a version of ARG that is safe to evaluate in a shell."
   (let ((pos 0) new-pos accum)
     ;; *** bug: we don't handle newline characters properly
-    (while (setq new-pos (string-match "[!`\"$\\& \t{}]" arg pos))
+    (while (setq new-pos (string-match "[!`\"$\\& \t{} ]" arg pos))
       (push (substring arg pos new-pos) accum)
       (push "\\" accum)
       (push (list (aref arg new-pos)) accum)
@@ -335,7 +345,9 @@ This overrides entries in the mailcap file."
   "Return the contents of HANDLE as a string."
   (mm-with-unibyte-buffer
     (insert-buffer-substring (mm-handle-buffer handle))
-    (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
+    (mm-decode-content-transfer-encoding
+     (mm-handle-encoding handle)
+     (car (mm-handle-type handle)))
     (buffer-string)))
 
 (defvar mm-default-directory nil)
@@ -356,7 +368,9 @@ This overrides entries in the mailcap file."
     (setq mm-default-directory (file-name-directory file))
     (mm-with-unibyte-buffer
       (insert-buffer-substring (mm-handle-buffer handle))
-      (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
+      (mm-decode-content-transfer-encoding
+       (mm-handle-encoding handle)
+       (car (mm-handle-type handle)))
       (when (or (not (file-exists-p file))
                (yes-or-no-p (format "File %s already exists; overwrite? "
                                     file)))
@@ -369,7 +383,9 @@ This overrides entries in the mailcap file."
          (read-string "Shell command on MIME part: " mm-last-shell-command)))
     (mm-with-unibyte-buffer
       (insert-buffer-substring (mm-handle-buffer handle))
-      (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
+      (mm-decode-content-transfer-encoding
+       (mm-handle-encoding handle)
+       (car (mm-handle-type handle)))
       (shell-command-on-region (point-min) (point-max) command nil))))
 
 (defun mm-interactively-view-part (handle)
index 1db5d60..a24d3a8 100644 (file)
@@ -206,7 +206,8 @@ See also `with-temp-file' and `with-output-to-string'."
               (get-buffer-create (generate-new-buffer-name " *temp*")))
         (unwind-protect
             (with-current-buffer ,temp-buffer
-              ,@forms)
+              (let (buffer-file-coding-system)
+                ,@forms))
           (and (buffer-name ,temp-buffer)
                (kill-buffer ,temp-buffer))
           (setq-default enable-multibyte-characters ,multibyte))))))
index 10ab086..14ec63b 100644 (file)
@@ -36,7 +36,9 @@
        buffer-read-only image)
     (mm-with-unibyte-buffer
       (insert-buffer-substring (mm-handle-buffer handle))
-      (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
+      (mm-decode-content-transfer-encoding
+       (mm-handle-encoding handle)
+       (car (mm-handle-type handle)))
       (setq image (make-image-specifier
                   (vector (intern type) :data (buffer-string)))))
     (let ((annot (make-annotation image nil 'text)))
@@ -52,7 +54,9 @@
      ((equal type "plain")
       (with-temp-buffer
        (insert-buffer-substring (mm-handle-buffer handle))
-       (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
+       (mm-decode-content-transfer-encoding
+        (mm-handle-encoding handle)
+        (car (mm-handle-type handle)))
        (setq text (buffer-string)))
       (let ((b (point)))
        (insert text)
@@ -74,7 +78,9 @@
        (w3-do-setup)
        (mm-with-unibyte-buffer
          (insert-buffer-substring (mm-handle-buffer handle))
-         (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
+         (mm-decode-content-transfer-encoding
+          (mm-handle-encoding handle)
+          (car (mm-handle-type handle)))
          (require 'url)
          (save-window-excursion
            (w3-region (point-min) (point-max))
       (save-excursion
        (mm-with-unibyte-buffer
          (insert-buffer-substring (mm-handle-buffer handle))
-         (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
+         (mm-decode-content-transfer-encoding
+          (mm-handle-encoding handle)
+          (car (mm-handle-type handle)))
          (save-window-excursion
            (enriched-decode (point-min) (point-max))
-           (setq text (buffer-string))))
-       (mm-insert-inline handle text)))
-     )))
+           (setq text (buffer-string)))))
+      (mm-insert-inline handle text))
+     (t
+      (save-excursion
+       (mm-with-unibyte-buffer
+         (insert-buffer-substring (mm-handle-buffer handle))
+         (mm-decode-content-transfer-encoding
+          (mm-handle-encoding handle)
+          (car (mm-handle-type handle)))
+         (setq text (buffer-string))))
+      (mm-insert-inline handle text)))))
 
 (defun mm-insert-inline (handle text)
   "Insert TEXT inline from HANDLE."
index 5615341..8bdae37 100644 (file)
            start end number)
        (set-buffer (setq nnbabyl-mbox-buffer
                          (nnheader-find-file-noselect
-                          nnbabyl-mbox-file nil 'raw)))
+                          nnbabyl-mbox-file nil t)))
        ;; Save previous buffer mode.
        (setq nnbabyl-previous-buffer-mode
              (cons (cons (point-min) (point-max))
index c2736a7..52e2a01 100644 (file)
   (save-excursion
     (set-buffer nntp-server-buffer)
     (erase-buffer)
-    (let* ((buf (get-buffer-create " *draft headers*"))
-          article)
-      (set-buffer buf)
-      (erase-buffer)
+    (let* (article)
       ;; We don't support fetching by Message-ID.
       (if (stringp (car articles))
          'headers
        (while articles
-         (set-buffer buf)
+         (narrow-to-region (point) (point))
          (when (nndraft-request-article
                 (setq article (pop articles)) group server (current-buffer))
            (goto-char (point-min))
                (forward-line -1)
              (goto-char (point-max)))
            (delete-region (point) (point-max))
-           (set-buffer nntp-server-buffer)
-           (goto-char (point-max))
+           (goto-char (point-min))
            (insert (format "221 %d Article retrieved.\n" article))
-           (insert-buffer-substring buf)
+           (widen)
+           (goto-char (point-max))
            (insert ".\n")))
 
        (nnheader-fold-continuation-lines)
index d72b638..e93bcb7 100644 (file)
@@ -487,11 +487,12 @@ parameter.  It should return nil, `warn' or `delete'."
 (defun nnmail-find-file (file)
   "Insert FILE in server buffer safely."
   (set-buffer nntp-server-buffer)
-  (erase-buffer)
+  (delete-region (point-min) (point-max))
   (let ((format-alist nil)
         (after-insert-file-functions nil))
     (condition-case ()
        (let ((coding-system-for-read nnmail-file-coding-system)
+             (auto-mode-alist (nnheader-auto-mode-alist))
              (pathname-coding-system nnmail-file-coding-system))
          (insert-file-contents file)
          t)
@@ -1094,8 +1095,7 @@ FUNC will be called with the group name to determine the article number."
                       ;; group twice.
                       (not (assoc (car method) group-art)))
                  (push (cons (if regrepp
-                                 (replace-match
-                                  (car method) nil nil (car method))
+                                 (nnmail-expand-newtext (car method))
                                (car method))
                              (funcall func (car method)))
                        group-art))
index 0f181fe..09d0daa 100644 (file)
     (save-excursion
       (set-buffer (setq nnmbox-mbox-buffer
                        (nnheader-find-file-noselect
-                        nnmbox-mbox-file nil 'raw)))
+                        nnmbox-mbox-file nil t)))
       (buffer-disable-undo)))
   (when (not nnmbox-group-alist)
     (nnmail-activate 'nnmbox))
            start end number)
        (set-buffer (setq nnmbox-mbox-buffer
                          (nnheader-find-file-noselect
-                          nnmbox-mbox-file nil 'raw)))
+                          nnmbox-mbox-file nil t)))
        (buffer-disable-undo)
 
        ;; Go through the group alist and compare against
index dd1c312..4f92163 100644 (file)
@@ -731,7 +731,7 @@ all.  This may very well take some time.")
     (let ((dirs (directory-files dir t nil t))
          dir)
       (while (setq dir (pop dirs))
-       (when (and (not (member (file-name-nondirectory dir) '("." "..")))
+       (when (and (not (string-match "^\\." (file-name-nondirectory dir)))
                   (file-directory-p dir))
          (nnml-generate-nov-databases-1 dir seen))))
     ;; Do this directory.
index 4829341..a6e92f5 100644 (file)
@@ -436,17 +436,21 @@ If UPDATE-P is not nil, call gnus-group-update-group on the components."
                        (nnvirtual-partition-sequence
                         (gnus-list-of-unread-articles
                          (nnvirtual-current-group)))))
-         (type-marks (mapcar (lambda (ml)
-                               (cons (car ml)
-                                     (nnvirtual-partition-sequence (cdr ml))))
-                             (gnus-info-marks (gnus-get-info
-                                               (nnvirtual-current-group)))))
+         (type-marks
+          (delq nil
+                (mapcar (lambda (ml)
+                          (if (eq (car ml) 'score)
+                              nil
+                            (cons (car ml)
+                                  (nnvirtual-partition-sequence (cdr ml)))))
+                        (gnus-info-marks (gnus-get-info
+                                          (nnvirtual-current-group))))))
          mark type groups carticles info entry)
 
       ;; Ok, atomically move all of the (un)read info, clear any old
       ;; marks, and move all of the current marks.  This way if someone
       ;; hits C-g, you won't leave the component groups in a half-way state.
-      (gnus-atomic-progn
+      (progn
        ;; move (un)read
        (let ((gnus-newsgroup-active nil)) ;workaround guns-update-read-articles
          (while (setq entry (pop unreads))
@@ -457,7 +461,11 @@ If UPDATE-P is not nil, call gnus-group-update-group on the components."
        (while groups
          (when (and (setq info (gnus-get-info (pop groups)))
                     (gnus-info-marks info))
-           (gnus-info-set-marks info nil)))
+           (gnus-info-set-marks
+            info
+            (if (assq 'score (gnus-info-marks info))
+                (list (assq 'score (gnus-info-marks info)))
+              nil))))
 
        ;; Ok, currently type-marks is an assq list with keys of a mark type,
        ;; with data of an assq list with keys of component group names
index 038541c..f076aea 100644 (file)
   `(((6) parse-time-weekdays)
     ((3) (1 31))
     ((4) parse-time-months)
-    ((5) (1970 2038))
+    ((5) (100 4038))
     ((2 1 0)
      ,#'(lambda () (and (stringp elt)
                        (= (length elt) 8)
                        (= (length elt) 7)
                        (= (aref elt 1) ?:)))
      [0 1] [2 4] [5 7])
-    ((5) (70 99) ,#'(lambda () (+ 1900 elt))))
+    ((5) (50 99) ,#'(lambda () (+ 1900 elt)))
+    ((5) (0 49) ,#'(lambda () (+ 2000 elt))))
   "(slots predicate extractor...)")
 
 (defun parse-time-string (string)
index 2ff934b..3ae2982 100644 (file)
@@ -1,3 +1,12 @@
+1998-10-01 07:55:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Splitting Mail): Fix.
+       (Washing Mail): Fix.
+
+1998-09-30 05:54:45  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Selecting a Group): Addition.
+
 1998-09-13 08:58:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * dir (File): Updated.
index 1ebe198..f4ac36f 100644 (file)
@@ -114,6 +114,7 @@ distclean:
        make clean
        rm -f *.orig *.rej *.elc *~ gnus gnus-[0-9] gnus-[0-9][0-9] Makefile
        rm -f message message-[0-9]
+       rm -f emacs-mime
 
 install:
        $(SHELL) $(top_srcdir)/mkinstalldirs $(infodir)
index f333fa5..8a09c30 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo                  @c -*-texinfo-*-
 
-@setfilename message
+@setfilename emacs-mime
 @settitle Emacs MIME Manual
 @synindex fn cp
 @synindex vr cp
@@ -639,7 +639,7 @@ higher level.
 
 The main idea is to first analyze a @sc{mime} article, and then allow
 other programs to do things based on the list of @dfn{handles} that are
-returned as a result of this analyzation.
+returned as a result of this analysis.
 
 @menu
 * Dissection::  Analyzing a @sc{mime} message.
index a8b1801..8d40135 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Semi-gnus 6.10.022 Manual
+@settitle Semi-gnus 6.10.023 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -318,7 +318,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Semi-gnus 6.10.022 Manual
+@title Semi-gnus 6.10.023 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -361,7 +361,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.022.
+This manual corresponds to Semi-gnus 6.10.023.
 
 @end ifinfo
 
@@ -1505,8 +1505,26 @@ Select the first unread article when entering the group.
 @item best
 Select the highest scored article in the group when entering the
 group.
+
+@end table
+
+This variable can also be a function.  In that case, that function will
+be called to place point on a subject line, and/or select some article.
+Useful functions include:
+
+@table @code
+@item gnus-summary-first-unread-subject
+Place point on the subject line of the first unread article, but
+don't select the article.
+
+@item gnus-summary-first-unread-article
+Select the first unread article.
+
+@item gnus-summary-best-unread-article
+Select the highest-scored unread article.
 @end table
 
+
 If you want to prevent automatic selection in some group (say, in a
 binary group with Huge articles) you can set this variable to @code{nil}
 in @code{gnus-select-group-hook}, which is called when a group is
@@ -3257,8 +3275,13 @@ fast, and too simplistic solution;
 slower; and @code{std11-extract-address-components}, which works very
 nicely, but is slower.  The default function will return the wrong
 answer in 5% of the cases.  If this is unacceptable to you, use the
-other function instead.
-
+other function instead:
+@lisp
+(setq gnus-extract-address-components
+      'mail-extract-address-components)
+@end lisp
+  
 @vindex gnus-summary-same-subject
 @code{gnus-summary-same-subject} is a string indicating that the current
 article has the same subject as the previous.  This string will be used
@@ -4197,7 +4220,7 @@ answered) will be marked with an @samp{A} in the second column
 @item
 @vindex gnus-cached-mark
 Articles stored in the article cache will be marked with an @samp{*} in
-the second column (@code{gnus-cached-mark}).  @xref{Article Caching}
+the second column (@code{gnus-cached-mark}).  @xref{Article Caching}.
 
 @item
 @vindex gnus-saved-mark
@@ -4254,7 +4277,7 @@ article as unread.
 @kindex M t (Summary)
 @findex gnus-summary-tick-article-forward
 Tick the current article (@code{gnus-summary-tick-article-forward}).
-@xref{Article Caching}
+@xref{Article Caching}.
 
 @item M ?
 @itemx ?
@@ -4262,7 +4285,7 @@ Tick the current article (@code{gnus-summary-tick-article-forward}).
 @kindex M ? (Summary)
 @findex gnus-summary-mark-as-dormant
 Mark the current article as dormant
-(@code{gnus-summary-mark-as-dormant}).  @xref{Article Caching}
+(@code{gnus-summary-mark-as-dormant}).  @xref{Article Caching}.
 
 @item M d
 @itemx d
@@ -6518,7 +6541,7 @@ last.
 @kindex W b (Summary)
 @findex gnus-article-add-buttons
 Add clickable buttons to the article (@code{gnus-article-add-buttons}).
-@xref{Article Buttons}
+@xref{Article Buttons}.
 
 @item W B
 @kindex W B (Summary)
@@ -6808,6 +6831,11 @@ groups where people post using some common encoding (but do not include
 MIME headers), you can set the @code{charset} group/topic parameter to
 the required charset (@pxref{Group Parameters}).
 
+@item W M v
+@kindex W M v (Summary)
+View all the @sc{mime} parts in the current article
+(@code{gnus-mime-view-all-parts}). 
+
 @end table
 
 
@@ -9508,7 +9536,7 @@ contain @samp{\\1} forms, like the ones used by @code{replace-match} to
 insert sub-expressions from the matched text.  For instance:
 
 @lisp
-("list.\\1" "From:.*\\(.*\\)-list@@majordomo.com")
+("list.\\1" "From:.* \\(.*\\)-list@@majordomo.com")
 @end lisp
 
 The second element can also be a function.  In that case, it will be
@@ -9627,11 +9655,6 @@ file, which is @file{~/.gnus-crash-box} by default.  If this file
 already exists, it will always be read (and incorporated) before any
 other spool files.
 
-@vindex nnmail-prepare-incoming-hook
-@item nnmail-prepare-incoming-hook
-This is run in a buffer that holds all the new incoming mail, and can be
-used for, well, anything, really.
-
 @vindex nnmail-split-hook
 @item nnmail-split-hook
 @findex article-decode-encoded-words
@@ -10116,7 +10139,8 @@ various functions that can be put in these hooks.
 @item nnmail-prepare-incoming-hook
 @vindex nnmail-prepare-incoming-hook
 This hook is called before doing anything with the mail and is meant for
-grand, sweeping gestures.  Functions to be used include:
+grand, sweeping gestures.  It is called in a buffer that contains all
+the new, incoming mail.  Functions to be used include:
 
 @table @code
 @item nnheader-ms-strip-cr
@@ -11472,6 +11496,7 @@ Of course, to use it as such, you have to learn a few new commands.
 * Agent Variables::        Customizing is fun.
 * Example Setup::          An example @file{.gnus.el} file for offline people.
 * Batching Agents::        How to fetch news from a @code{cron} job.
+* Agent Caveats::          What you think it'll do and what it does.
 @end menu
 
 
@@ -11534,7 +11559,7 @@ Agent (@pxref{Server Agent Commands}).  This will typically be only the
 primary select method, which is listed on the bottom in the buffer.
 
 @item
-Decide on download policy.  @xref{Agent Categories}
+Decide on download policy.  @xref{Agent Categories}.
 
 @item
 Uhm... that's it.
@@ -11740,7 +11765,6 @@ if it's to be specific to that group.
 In both of these places the @code{download score rule} can take one of
 three forms:
 
-@table @code
 @enumerate
 @item 
 Score rule
@@ -11836,7 +11860,6 @@ Group Parameter specification
 @end lisp
 @end itemize
 @end enumerate
-@end table
  
 @node The Category Buffer
 @subsubsection The Category Buffer
@@ -11988,7 +12011,7 @@ Fetch all eligible articles in all groups
 @kindex J S (Agent Group)
 @findex gnus-group-send-drafts
 Send all sendable messages in the draft group
-(@code{gnus-agent-fetch-session}).  @xref{Drafts}
+(@code{gnus-agent-fetch-session}).  @xref{Drafts}.
 
 @item J a
 @kindex J a (Agent Group)
@@ -12170,6 +12193,29 @@ emacs -batch -l ~/.emacs -f gnus-agent-batch >/dev/null
 @end example
 
 
+@node Agent Caveats
+@subsection Agent Caveats
+
+The Gnus Agent doesn't seem to work like most other offline
+newsreaders.  Here are some common questions that some imaginary people
+may ask:
+
+@table @dfn
+@item If I read an article while plugged, do they get entered into the
+Agent?
+
+@strong{No.}
+
+@item If I read an article while plugged, and the article already exists
+in the Agent, will it get downloaded once more?
+
+@strong{Yes.}
+
+@end table
+
+In short, when Gnus is unplugged, it only looks into the locally stored
+articles; when it's plugged, it only talks to your ISP.
+
 
 @node Scoring
 @chapter Scoring
@@ -18137,6 +18183,10 @@ like.
 Bouncing articles should do MIME.
 
 @item
+Crossposted articles should "inherit" the % or @ mark from the other
+groups it has been crossposted to, or something.  (Agent.)
+
+@item
 Solve the halting problem.
 
 @c TODO
index 314bba7..bf39591 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Pterodactyl Message 0.33 Manual
+@settitle Pterodactyl Message 0.34 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Pterodactyl Message 0.33 Manual
+@title Pterodactyl Message 0.34 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -83,7 +83,7 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Pterodactyl Message 0.33.  Message is
+This manual corresponds to Pterodactyl Message 0.34.  Message is
 distributed with the Gnus distribution bearing the same version number
 as this manual.