Sync up with pgnus-0.32
authorichikawa <ichikawa>
Thu, 24 Sep 1998 14:23:44 +0000 (14:23 +0000)
committerichikawa <ichikawa>
Thu, 24 Sep 1998 14:23:44 +0000 (14:23 +0000)
37 files changed:
ChangeLog
lisp/ChangeLog
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-bcklg.el
lisp/gnus-ems.el
lisp/gnus-group.el
lisp/gnus-int.el
lisp/gnus-kill.el
lisp/gnus-mailcap.el
lisp/gnus-salt.el
lisp/gnus-score.el
lisp/gnus-soup.el
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-util.el
lisp/gnus-uu.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/lpath.el
lisp/message.el
lisp/mm-bodies.el
lisp/mm-decode.el
lisp/mm-util.el
lisp/nnbabyl.el
lisp/nndoc.el
lisp/nneething.el
lisp/nnfolder.el
lisp/nnheader.el
lisp/nnmail.el
lisp/nnmbox.el
lisp/nnml.el
lisp/nnsoup.el
lisp/rfc2047.el
texi/gnus.texi
texi/message.texi

index 2b76db3..f6e31b3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+1998-09-24  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
+
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.021.
+
+       * Sync up with Pterodactyl Gnus 0.31.
+
 1998-09-23  Katsumi Yamaoka   <yamaoka@jpl.org>
 
        * lisp/message.el (message-make-user-agent): Add extended version
 1998-09-23  Katsumi Yamaoka   <yamaoka@jpl.org>
 
        * lisp/message.el (message-make-user-agent): Add extended version
index 7a63038..0b45042 100644 (file)
@@ -1,3 +1,121 @@
+Thu Sep 24 02:29:57 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Pterodactyl Gnus v0.32 is released.
+
+1998-09-24 00:27:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-kill.el (gnus-batch-score): Protect against errors.
+
+       * gnus-art.el: Protect against broken headers.
+
+       * mm-decode.el (mm-display-external): Respect needsterm.
+       (mm-display-external): Create buffer for external commands. 
+
+1998-09-23 22:04:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mailcap.el (mailcap-mime-info): Return the proper viewer.
+
+       * mm-decode.el (mm-display-external): Use file name.
+
+1998-09-22  Markus Rost  <markus.rost@mathematik.uni-regensburg.de>
+
+       * gnus-util.el (gnus-output-to-rmail):  adjust to
+          `rmail-output-to-rmail-file'
+
+1998-09-23 20:07:00  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-util.el (gnus-output-to-rmail): Reinstated function.
+
+       * gnus-sum.el (gnus-select-newsgroup): Set global variables before
+       headers. 
+
+       * gnus-art.el (article-decode-charset): Fold case.
+
+1998-09-17 15:49:10  Simon Josefsson  <jas@pdc.kth.se>
+
+        * mailcap.el (mailcap-save-binary-file): Goto point-min.
+
+1998-09-23 19:48:52  Aaron M. Ucko  <amu@mit.edu>
+
+       * nnmail.el (nnmail-check-duplication): Enter into duplicate list
+       after being stored.
+
+Tue Sep 15 16:15:16 1998  Kurt Swanson  <ksw@dna.lth.se>
+
+       * gnus-salt.el (gnus-pick-setup-message): Return from whence ye
+       come.
+
+1998-09-23 19:42:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-xmas.el (wid-edit): Required.
+
+       * gnus-ems.el (gnus-widget-button-keymap): New variable.
+
+Sun Sep 20 00:27:55 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>
+
+       * gnus-art.el (gnus-mime-inline-part): remove part if necessary
+
+1998-09-23 19:30:52  Matt Armstrong  <matta@geoworks.com>
+
+       * gnus-art.el (article-decode-charset): Narrow to the correct
+       region. 
+
+       * mm-bodies.el: Fix autoload.
+
+1998-09-22 18:35:12  Lee Willis  <lee@gbdirect.co.uk>
+
+       * gnus-art.el (gnus-mime-button-line-format): Doc fix.
+
+1998-09-22 14:53:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * rfc2047.el (rfc2047-decode): Use rfc2047-default-charset. 
+
+1998-09-19 13:58:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (gnus-insert-mime-button): Specify keymap.
+       (gnus-article-add-button): Ditto.
+
+       * gnus-sum.el (gnus-summary-insert-pseudos): Use mm.
+
+       * gnus-art.el (gnus-article-prepare-display): Make article mode. 
+       (gnus-article-prepare-display): Bind url-standalone-mode.
+
+       * mm-decode.el (mm-remove-part): Also delete directory.
+       (mm-display-external): Create a private sub-dir.
+
+       * mailcap.el (mailcap-binary-suffixes): New variable.
+       (mailcap-command-p): Use it.
+
+1998-09-16 10:38:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnmbox.el (nnmbox-request-group): Change server.
+       (nnmbox-possibly-change-newsgroup): Enable multibyte.
+
+       * message.el (message-encode-message-body): Don't stomp MIME
+       headers. 
+
+       * gnus-sum.el (gnus-summary-edit-article-done): Don't encode
+       unless useful.
+       (gnus-summary-exit): Check for a live article buffer.
+       (gnus-summary-exit-no-update): Ditto.
+
+       * gnus-int.el (gnus-request-replace-article): Accept no-encode
+       param.
+
+       * gnus-sum.el (gnus-article-decoded-p): New variable.
+
+       * mm-decode.el (mm-display-external): Use no-conv.
+
+       * rfc2047.el (rfc2047-q-encode-region): Bound properly. 
+       (rfc2047-charset-encoding-alist): Use B encoding for koi8-r.
+
+       * gnus-art.el (gnus-article-mode-map): Bind button2 to
+       mouse-click. 
+
+1998-09-15 14:38:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-agent.el (gnus-agent-expire): Protect against nil infos.
+
 Mon Sep 14 18:55:38 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Pterodactyl Gnus v0.31 is released.
 Mon Sep 14 18:55:38 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Pterodactyl Gnus v0.31 is released.
index 4a7ca17..e9ef2a0 100644 (file)
@@ -1085,7 +1085,7 @@ The following commands are available:
   (gnus-set-default-directory)
   (setq mode-line-process nil)
   (use-local-map gnus-category-mode-map)
   (gnus-set-default-directory)
   (setq mode-line-process nil)
   (use-local-map gnus-category-mode-map)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (setq truncate-lines t)
   (setq buffer-read-only t)
   (gnus-run-hooks 'gnus-category-mode-hook))
   (setq truncate-lines t)
   (setq buffer-read-only t)
   (gnus-run-hooks 'gnus-category-mode-hook))
@@ -1433,13 +1433,15 @@ The following commands are available:
               ;; Maybe everything has been expired from `gnus-article-alist'
               ;; and so the above marking as read could not be conducted,
               ;; or there are expired article within the range of the alist.
               ;; Maybe everything has been expired from `gnus-article-alist'
               ;; and so the above marking as read could not be conducted,
               ;; or there are expired article within the range of the alist.
-              (if expired
-                  (when (or (not (caar gnus-agent-article-alist))
-                            (> (car expired) (caar gnus-agent-article-alist)))  
-                    (setcar (nthcdr 2 info)
-                            (gnus-add-to-range
-                             (nth 2 info)
-                             (nreverse expired)))))
+              (when (and info
+                         expired
+                         (or (not (caar gnus-agent-article-alist))
+                             (> (car expired)
+                                (caar gnus-agent-article-alist))))
+                (setcar (nthcdr 2 info)
+                        (gnus-add-to-range
+                         (nth 2 info)
+                         (nreverse expired))))
               (gnus-dribble-enter
                (concat "(gnus-group-set-info '"
                        (gnus-prin1-to-string info)
               (gnus-dribble-enter
                (concat "(gnus-group-set-info '"
                        (gnus-prin1-to-string info)
index 521cd03..78ce1cf 100644 (file)
@@ -983,6 +983,7 @@ If PROMPT (the prefix), prompt for a coding system to use."
     (save-restriction
       (message-narrow-to-head)
       (let* ((inhibit-point-motion-hooks t)
     (save-restriction
       (message-narrow-to-head)
       (let* ((inhibit-point-motion-hooks t)
+            (case-fold-search t)
             (ct (message-fetch-field "Content-Type" t))
             (cte (message-fetch-field "Content-Transfer-Encoding" t))
             (ctl (and ct (condition-case ()
             (ct (message-fetch-field "Content-Type" t))
             (cte (message-fetch-field "Content-Transfer-Encoding" t))
             (ctl (and ct (condition-case ()
@@ -999,6 +1000,7 @@ If PROMPT (the prefix), prompt for a coding system to use."
             buffer-read-only)
        (goto-char (point-max))
        (widen)
             buffer-read-only)
        (goto-char (point-max))
        (widen)
+       (forward-line 1)
        (narrow-to-region (point) (point-max))
        (when (or (not ct)
                  (equal (car ctl) "text/plain"))
        (narrow-to-region (point) (point-max))
        (when (or (not ct)
                  (equal (car ctl) "text/plain"))
@@ -1893,6 +1895,8 @@ 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
 
   "\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
   "\C-d" gnus-article-read-summary-keys
   "\M-*" gnus-article-read-summary-keys
   "\M-#" gnus-article-read-summary-keys
@@ -1963,7 +1967,7 @@ commands:
   (make-local-variable 'gnus-button-marker-list)
   (make-local-variable 'gnus-article-current-summary)
   (gnus-set-default-directory)
   (make-local-variable 'gnus-button-marker-list)
   (make-local-variable 'gnus-article-current-summary)
   (gnus-set-default-directory)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (setq buffer-read-only t)
   (set-syntax-table gnus-article-mode-syntax-table)
   (gnus-run-hooks 'gnus-article-mode-hook))
   (setq buffer-read-only t)
   (set-syntax-table gnus-article-mode-syntax-table)
   (gnus-run-hooks 'gnus-article-mode-hook))
@@ -1993,7 +1997,7 @@ commands:
     (if (get-buffer name)
        (save-excursion
          (set-buffer name)
     (if (get-buffer name)
        (save-excursion
          (set-buffer name)
-         (buffer-disable-undo (current-buffer))
+         (buffer-disable-undo)
          (setq buffer-read-only t)
          (unless (eq major-mode 'gnus-article-mode)
            (gnus-article-mode))
          (setq buffer-read-only t)
          (unless (eq major-mode 'gnus-article-mode)
            (gnus-article-mode))
@@ -2190,7 +2194,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
   "The following specs can be used:
 %t  The MIME type
 %n  The `name' parameter
   "The following specs can be used:
 %t  The MIME type
 %n  The `name' parameter
-%n  The description, if any
+%d  The description, if any
 %l  The length of the encoded part")
 
 (defvar gnus-mime-button-line-format-alist
 %l  The length of the encoded part")
 
 (defvar gnus-mime-button-line-format-alist
@@ -2226,7 +2230,8 @@ If ALL-HEADERS is non-nil, no headers are hidden."
 (defun gnus-mime-view-part ()
   "Interactively choose a view method for the MIME part under point."
   (interactive)
 (defun gnus-mime-view-part ()
   "Interactively choose a view method for the MIME part under point."
   (interactive)
-  (let ((data (get-text-property (point) 'gnus-data)))
+  (let ((data (get-text-property (point) 'gnus-data))
+       (url-standalone-mode (not gnus-plugged)))
     (mm-interactively-view-part data)))
 
 (defun gnus-mime-copy-part ()
     (mm-interactively-view-part data)))
 
 (defun gnus-mime-copy-part ()
@@ -2243,28 +2248,30 @@ If ALL-HEADERS is non-nil, no headers are hidden."
   (interactive)
   (let* ((data (get-text-property (point) 'gnus-data))
         (contents (mm-get-part data))
   (interactive)
   (let* ((data (get-text-property (point) 'gnus-data))
         (contents (mm-get-part data))
+        (url-standalone-mode (not gnus-plugged))
         (b (point))
         buffer-read-only)
         (b (point))
         buffer-read-only)
-    (forward-line 2)
-    (mm-insert-inline data contents)
-    (goto-char b)))
+    (if (mm-handle-undisplayer data)
+       (mm-remove-part data)
+      (forward-line 2)
+      (mm-insert-inline data contents)
+      (goto-char b))))
 
 (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)))
        (gnus-tmp-description (mm-handle-description handle))
 
 (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)))
        (gnus-tmp-description (mm-handle-description handle))
-       (gnus-tmp-length (save-excursion
-                          (set-buffer (mm-handle-buffer handle))
-                          (buffer-size)))
+       (gnus-tmp-length (with-temp-buffer (mm-handle-buffer handle)
+                                          (buffer-size)))
        b e)
     (setq gnus-tmp-name
        b e)
     (setq gnus-tmp-name
-      (if gnus-tmp-name
-         (concat " (" gnus-tmp-name ")")
-       ""))
+         (if gnus-tmp-name
+             (concat " (" gnus-tmp-name ")")
+           ""))
     (setq gnus-tmp-description
     (setq gnus-tmp-description
-      (if gnus-tmp-description
-         (concat " (" gnus-tmp-description ")")
-       ""))
+         (if gnus-tmp-description
+             (concat " (" gnus-tmp-description ")")
+           ""))
     (setq b (point))
     (gnus-eval-format
      gnus-mime-button-line-format gnus-mime-button-line-format-alist
     (setq b (point))
     (gnus-eval-format
      gnus-mime-button-line-format gnus-mime-button-line-format-alist
@@ -2273,11 +2280,13 @@ If ALL-HEADERS is non-nil, no headers are hidden."
                 gnus-callback mm-display-part
                 gnus-data ,handle))
     (setq e (point))
                 gnus-callback mm-display-part
                 gnus-data ,handle))
     (setq e (point))
-    (widget-convert-button 'link b e :action 'gnus-widget-press-button)))
+    (widget-convert-button 'link from to :action 'gnus-widget-press-button
+                          :button-keymap gnus-widget-button-keymap)))
 
 (defun gnus-widget-press-button (elems el)
   (goto-char (widget-get elems :from))
 
 (defun gnus-widget-press-button (elems el)
   (goto-char (widget-get elems :from))
-  (gnus-article-press-button))
+  (let ((url-standalone-mode (not gnus-plugged)))
+    (gnus-article-press-button)))
 
 (defun gnus-display-mime ()
   "Insert MIME buttons in the buffer."
 
 (defun gnus-display-mime ()
   "Insert MIME buttons in the buffer."
@@ -2285,28 +2294,30 @@ If ALL-HEADERS is non-nil, no headers are hidden."
     (save-restriction
       (mail-narrow-to-head)
       (when (setq ct (mail-fetch-field "content-type"))
     (save-restriction
       (mail-narrow-to-head)
       (when (setq ct (mail-fetch-field "content-type"))
-       (setq ctl (mail-header-parse-content-type ct))))
-    (let* ((handles (mm-dissect-buffer))
-          handle name type b e)
-      (mapcar 'mm-destroy-part gnus-article-mime-handles)
-      (setq gnus-article-mime-handles handles)
-      (when handles
-       (goto-char (point-min))
-       (search-forward "\n\n" nil t)
-       (delete-region (point) (point-max))
-       (if (not (equal (car ctl) "multipart/alternative"))
-           (while (setq handle (pop handles))
-             (gnus-insert-mime-button handle)
-             (insert "\n\n")
-             (when (and (mm-automatic-display-p (car (mm-handle-type handle)))
-                        (or (not (mm-handle-disposition handle))
-                            (equal (car (mm-handle-disposition handle))
-                                   "inline")))
-               (forward-line -2)
-               (mm-display-part handle t)
-               (goto-char (point-max))))
-         ;; Here we have multipart/alternative
-         (gnus-mime-display-alternative handles))))))
+       (setq ctl (condition-case ()
+                     (mail-header-parse-content-type ct) (error nil)))
+       (let* ((handles (mm-dissect-buffer))
+              handle name type b e)
+         (mapcar 'mm-destroy-part gnus-article-mime-handles)
+         (setq gnus-article-mime-handles handles)
+         (when handles
+           (goto-char (point-min))
+           (search-forward "\n\n" nil t)
+           (delete-region (point) (point-max))
+           (if (not (equal (car ctl) "multipart/alternative"))
+               (while (setq handle (pop handles))
+                 (gnus-insert-mime-button handle)
+                 (insert "\n\n")
+                 (when (and (mm-automatic-display-p
+                             (car (mm-handle-type handle)))
+                            (or (not (mm-handle-disposition handle))
+                                (equal (car (mm-handle-disposition handle))
+                                       "inline")))
+                   (forward-line -2)
+                   (mm-display-part handle t)
+                   (goto-char (point-max))))
+             ;; Here we have multipart/alternative
+             (gnus-mime-display-alternative handles))))))))
 
 (defun gnus-mime-display-alternative (handles &optional preferred)
   (let* ((preferred (mm-preferred-alternative handles preferred))
 
 (defun gnus-mime-display-alternative (handles &optional preferred)
   (let* ((preferred (mm-preferred-alternative handles preferred))
@@ -2737,7 +2748,7 @@ If given a prefix, show the hidden text instead."
          (if (get-buffer gnus-original-article-buffer)
              (set-buffer gnus-original-article-buffer)
            (set-buffer (gnus-get-buffer-create gnus-original-article-buffer))
          (if (get-buffer gnus-original-article-buffer)
              (set-buffer gnus-original-article-buffer)
            (set-buffer (gnus-get-buffer-create gnus-original-article-buffer))
-           (buffer-disable-undo (current-buffer))
+           (buffer-disable-undo)
            (setq major-mode 'gnus-original-article-mode)
            (setq buffer-read-only t))
          (let (buffer-read-only)
            (setq major-mode 'gnus-original-article-mode)
            (setq buffer-read-only t))
          (let (buffer-read-only)
@@ -2746,7 +2757,9 @@ If given a prefix, show the hidden text instead."
          (setq gnus-original-article (cons group article)))
 
        ;; Decode charsets.
          (setq gnus-original-article (cons group article)))
 
        ;; Decode charsets.
-       (run-hooks 'gnus-article-decode-hook))
+       (run-hooks 'gnus-article-decode-hook)
+       ;; Mark article as decoded or not.
+       (setq gnus-article-decoded-p gnus-article-decode-hook))
 
       ;; Update sparse articles.
       (when (and do-update-line
 
       ;; Update sparse articles.
       (when (and do-update-line
index d370673..51c6e7f 100644 (file)
@@ -42,7 +42,7 @@
   (or (get-buffer gnus-backlog-buffer)
       (save-excursion
        (set-buffer (gnus-get-buffer-create gnus-backlog-buffer))
   (or (get-buffer gnus-backlog-buffer)
       (save-excursion
        (set-buffer (gnus-get-buffer-create gnus-backlog-buffer))
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
        (setq buffer-read-only t)
        (get-buffer gnus-backlog-buffer))))
 
        (setq buffer-read-only t)
        (get-buffer gnus-backlog-buffer))))
 
index 5970c3b..68c4716 100644 (file)
@@ -35,6 +35,7 @@
 
 (defvar gnus-mouse-2 [mouse-2])
 (defvar gnus-down-mouse-2 [down-mouse-2])
 
 (defvar gnus-mouse-2 [mouse-2])
 (defvar gnus-down-mouse-2 [down-mouse-2])
+(defvar gnus-widget-button-keymap nil)
 (defvar gnus-mode-line-modified
   (if (or gnus-xemacs
          (< emacs-major-version 20))
 (defvar gnus-mode-line-modified
   (if (or gnus-xemacs
          (< emacs-major-version 20))
index 51ca68c..1ec6d40 100644 (file)
@@ -764,7 +764,7 @@ The following commands are available:
   (gnus-group-set-mode-line)
   (setq mode-line-process nil)
   (use-local-map gnus-group-mode-map)
   (gnus-group-set-mode-line)
   (setq mode-line-process nil)
   (use-local-map gnus-group-mode-map)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (setq truncate-lines t)
   (setq buffer-read-only t)
   (gnus-set-default-directory)
   (setq truncate-lines t)
   (setq buffer-read-only t)
   (gnus-set-default-directory)
@@ -3064,7 +3064,7 @@ to use."
       ;; Print out all the groups.
       (save-excursion
        (pop-to-buffer "*Gnus Help*")
       ;; Print out all the groups.
       (save-excursion
        (pop-to-buffer "*Gnus Help*")
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
        (erase-buffer)
        (setq groups (sort groups 'string<))
        (while groups
        (erase-buffer)
        (setq groups (sort groups 'string<))
        (while groups
index 5cf432a..48ea531 100644 (file)
@@ -442,7 +442,12 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
             (cadr gnus-command-method)
             last)))
 
             (cadr gnus-command-method)
             last)))
 
-(defun gnus-request-replace-article (article group buffer)
+(defun gnus-request-replace-article (article group buffer &optional no-encode)
+  (unless no-encode
+    (save-restriction
+      (message-narrow-to-head)
+      (mail-encode-encoded-word-buffer))
+    (message-encode-message-body))
   (let ((func (car (gnus-group-name-to-method group))))
     (funcall (intern (format "%s-request-replace-article" func))
             article (gnus-group-real-name group) buffer)))
   (let ((func (car (gnus-group-name-to-method group))))
     (funcall (intern (format "%s-request-replace-article" func))
             article (gnus-group-real-name group) buffer)))
index 02ee66e..2e3b064 100644 (file)
@@ -429,7 +429,7 @@ Returns the number of articles marked as read."
 (defun gnus-score-insert-help (string alist idx)
   (save-excursion
     (pop-to-buffer "*Score Help*")
 (defun gnus-score-insert-help (string alist idx)
   (save-excursion
     (pop-to-buffer "*Score Help*")
-    (buffer-disable-undo (current-buffer))
+    (buffer-disable-undo)
     (erase-buffer)
     (insert string ":\n\n")
     (while alist
     (erase-buffer)
     (insert string ":\n\n")
     (while alist
@@ -566,7 +566,7 @@ COMMAND must be a lisp expression or a string representing a key sequence."
       (concat "\n" (gnus-prin1-to-string object))
     (save-excursion
       (set-buffer (gnus-get-buffer-create "*Gnus PP*"))
       (concat "\n" (gnus-prin1-to-string object))
     (save-excursion
       (set-buffer (gnus-get-buffer-create "*Gnus PP*"))
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (erase-buffer)
       (insert (format "\n(%S %S\n  '(" (nth 0 object) (nth 1 object)))
       (let ((klist (cadr (nth 2 object)))
       (erase-buffer)
       (insert (format "\n(%S %S\n  '(" (nth 0 object) (nth 1 object)))
       (let ((klist (cadr (nth 2 object)))
@@ -702,7 +702,9 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score"
                 (and (car entry)
                      (or (eq (car entry) t)
                          (not (zerop (car entry))))))
                 (and (car entry)
                      (or (eq (car entry) t)
                          (not (zerop (car entry))))))
-       (gnus-summary-read-group group nil t nil t)
+       (condition-case ()
+           (gnus-summary-read-group group nil t nil t)
+         (error nil))
        (when (eq (current-buffer) (get-buffer gnus-summary-buffer))
          (gnus-summary-exit))))
     ;; Exit Emacs.
        (when (eq (current-buffer) (get-buffer gnus-summary-buffer))
          (gnus-summary-exit))))
     ;; Exit Emacs.
index 0cf68b2..c5249f3 100644 (file)
@@ -271,6 +271,7 @@ not.")
       (expand-file-name fname mailcap-temporary-directory))))
 
 (defun mailcap-save-binary-file ()
       (expand-file-name fname mailcap-temporary-directory))))
 
 (defun mailcap-save-binary-file ()
+  (goto-char (point-min))
   (let ((file (read-file-name
               "Filename to save as: "
               (or mailcap-download-directory "~/")))
   (let ((file (read-file-name
               "Filename to save as: "
               (or mailcap-download-directory "~/")))
@@ -299,7 +300,7 @@ not.")
 (defun mailcap-parse-mailcaps (&optional path force)
   "Parse out all the mailcaps specified in a unix-style path string PATH.
 If FORCE, re-parse even if already parsed."
 (defun mailcap-parse-mailcaps (&optional path force)
   "Parse out all the mailcaps specified in a unix-style path string PATH.
 If FORCE, re-parse even if already parsed."
-  (interactive)
+  (interactive (list nil t))
   (when (or (not mailcap-parsed-p)
            force)
     (cond
   (when (or (not mailcap-parsed-p)
            force)
     (cond
@@ -631,7 +632,7 @@ this type is returned."
            (if (mailcap-viewer-passes-test (car viewers) info)
                (setq passed (cons (car viewers) passed)))
            (setq viewers (cdr viewers)))
            (if (mailcap-viewer-passes-test (car viewers) info)
                (setq passed (cons (car viewers) passed)))
            (setq viewers (cdr viewers)))
-         (setq passed (sort (nreverse passed) 'mailcap-viewer-lessp))
+         (setq passed (sort passed 'mailcap-viewer-lessp))
          (setq viewer (car passed))))
       (when (and (stringp (cdr (assq 'viewer viewer)))
                 passed)
          (setq viewer (car passed))))
       (when (and (stringp (cdr (assq 'viewer viewer)))
                 passed)
@@ -820,16 +821,26 @@ correspond to.")
       (setq extn (concat "." extn)))
   (cdr (assoc (downcase extn) mailcap-mime-extensions)))
 
       (setq extn (concat "." extn)))
   (cdr (assoc (downcase extn) mailcap-mime-extensions)))
 
+(defvar mailcap-binary-suffixes
+  (if (memq system-type '(ms-dos windows-nt))
+      '(".exe" ".com" ".bat" ".cmd" ".btm" "")
+    '("")))
+
 (defun mailcap-command-p (command)
 (defun mailcap-command-p (command)
-  "Say whether COMMAND is in the exec path."
+  "Say whether COMMAND is in the exec path.
+The path of COMMAND will be returned iff COMMAND is a command."
   (let ((path (if (file-name-absolute-p command) '(nil) exec-path))
   (let ((path (if (file-name-absolute-p command) '(nil) exec-path))
-       file)
+       file dir)
     (catch 'found
     (catch 'found
-      (while path
-       (when (and (file-executable-p
-                   (setq file (expand-file-name command (pop path))))
-                  (not (file-directory-p file)))
-         (throw 'found file))))))
+      (while (setq dir (pop path))
+       (let ((suffixes mailcap-binary-suffixes))
+         (while suffixes
+           (when (and (file-executable-p
+                       (setq file (expand-file-name
+                                   (concat command (pop suffixes))
+                                   dir)))
+                      (not (file-directory-p file)))
+             (throw 'found file))))))))
 
 (provide 'mailcap)
 
 
 (provide 'mailcap)
 
index 9a73698..68d0f3c 100644 (file)
@@ -131,7 +131,8 @@ It accepts the same format specs that `gnus-summary-line-format' does."
               (set-buffer gnus-summary-buffer)
               gnus-pick-mode))
     (message-add-action
               (set-buffer gnus-summary-buffer)
               gnus-pick-mode))
     (message-add-action
-     '(gnus-configure-windows 'pick t) 'send 'exit 'postpone 'kill)))
+     '(gnus-configure-windows ,gnus-current-window-configuration t)
+     'send 'exit 'postpone 'kill)))
 
 (defvar gnus-pick-line-number 1)
 (defun gnus-pick-line-number ()
 
 (defvar gnus-pick-line-number 1)
 (defun gnus-pick-line-number ()
@@ -468,7 +469,7 @@ Two predefined functions are available:
   (setq mode-name "Tree")
   (setq major-mode 'gnus-tree-mode)
   (use-local-map gnus-tree-mode-map)
   (setq mode-name "Tree")
   (setq major-mode 'gnus-tree-mode)
   (use-local-map gnus-tree-mode-map)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (setq buffer-read-only t)
   (setq truncate-lines t)
   (save-excursion
   (setq buffer-read-only t)
   (setq truncate-lines t)
   (save-excursion
@@ -969,7 +970,7 @@ The following commands are available:
   (setq mode-name "Gnus Carpal")
   (setq mode-line-process nil)
   (use-local-map gnus-carpal-mode-map)
   (setq mode-name "Gnus Carpal")
   (setq mode-line-process nil)
   (use-local-map gnus-carpal-mode-map)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (setq buffer-read-only t)
   (make-local-variable 'gnus-carpal-attached-buffer)
   (gnus-run-hooks 'gnus-carpal-mode-hook))
   (setq buffer-read-only t)
   (make-local-variable 'gnus-carpal-attached-buffer)
   (gnus-run-hooks 'gnus-carpal-mode-hook))
index 23c041c..0ab923b 100644 (file)
@@ -672,7 +672,7 @@ used as score."
   (setq gnus-score-help-winconf (current-window-configuration))
   (save-excursion
     (set-buffer (gnus-get-buffer-create "*Score Help*"))
   (setq gnus-score-help-winconf (current-window-configuration))
   (save-excursion
     (set-buffer (gnus-get-buffer-create "*Score Help*"))
-    (buffer-disable-undo (current-buffer))
+    (buffer-disable-undo)
     (delete-windows-on (current-buffer))
     (erase-buffer)
     (insert string ":\n\n")
     (delete-windows-on (current-buffer))
     (erase-buffer)
     (insert string ":\n\n")
@@ -1406,7 +1406,7 @@ SCORE is the score to add."
 
          (save-excursion
            (set-buffer (gnus-get-buffer-create "*Headers*"))
 
          (save-excursion
            (set-buffer (gnus-get-buffer-create "*Headers*"))
-           (buffer-disable-undo (current-buffer))
+           (buffer-disable-undo)
            (when (gnus-buffer-live-p gnus-summary-buffer)
              (message-clone-locals gnus-summary-buffer))
 
            (when (gnus-buffer-live-p gnus-summary-buffer)
              (message-clone-locals gnus-summary-buffer))
 
@@ -2507,7 +2507,7 @@ GROUP using BNews sys file syntax."
         ofiles not-match regexp)
     (save-excursion
       (set-buffer (gnus-get-buffer-create "*gnus score files*"))
         ofiles not-match regexp)
     (save-excursion
       (set-buffer (gnus-get-buffer-create "*gnus score files*"))
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       ;; Go through all score file names and create regexp with them
       ;; as the source.
       (while sfiles
       ;; Go through all score file names and create regexp with them
       ;; as the source.
       (while sfiles
index 39236e5..7b7b50e 100644 (file)
@@ -374,7 +374,7 @@ though the two last may be nil if they are missing."
     (when (file-exists-p file)
       (save-excursion
        (set-buffer (nnheader-find-file-noselect file 'force))
     (when (file-exists-p file)
       (save-excursion
        (set-buffer (nnheader-find-file-noselect file 'force))
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
        (goto-char (point-min))
        (while (not (eobp))
          (push (vector (gnus-soup-field)
        (goto-char (point-min))
        (while (not (eobp))
          (push (vector (gnus-soup-field)
@@ -397,7 +397,7 @@ file.  The vector contain three strings, [prefix name encoding]."
   (let (replies)
     (save-excursion
       (set-buffer (nnheader-find-file-noselect file))
   (let (replies)
     (save-excursion
       (set-buffer (nnheader-find-file-noselect file))
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (goto-char (point-min))
       (while (not (eobp))
        (push (vector (gnus-soup-field) (gnus-soup-field)
       (goto-char (point-min))
       (while (not (eobp))
        (push (vector (gnus-soup-field) (gnus-soup-field)
index 21abf17..849a2da 100644 (file)
@@ -161,7 +161,7 @@ The following commands are available:
   (gnus-set-default-directory)
   (setq mode-line-process nil)
   (use-local-map gnus-server-mode-map)
   (gnus-set-default-directory)
   (setq mode-line-process nil)
   (use-local-map gnus-server-mode-map)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (setq truncate-lines t)
   (setq buffer-read-only t)
   (gnus-run-hooks 'gnus-server-mode-hook))
   (setq truncate-lines t)
   (setq buffer-read-only t)
   (gnus-run-hooks 'gnus-server-mode-hook))
@@ -575,7 +575,7 @@ The following commands are available:
       (when gnus-carpal
        (gnus-carpal-setup-buffer 'browse))
       (gnus-configure-windows 'browse)
       (when gnus-carpal
        (gnus-carpal-setup-buffer 'browse))
       (gnus-configure-windows 'browse)
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (let ((buffer-read-only nil))
        (erase-buffer))
       (gnus-browse-mode)
       (let ((buffer-read-only nil))
        (erase-buffer))
       (gnus-browse-mode)
@@ -636,7 +636,7 @@ buffer.
   (setq mode-name "Browse Server")
   (setq mode-line-process nil)
   (use-local-map gnus-browse-mode-map)
   (setq mode-name "Browse Server")
   (setq mode-line-process nil)
   (use-local-map gnus-browse-mode-map)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (setq truncate-lines t)
   (gnus-set-default-directory)
   (setq buffer-read-only t)
   (setq truncate-lines t)
   (gnus-set-default-directory)
   (setq buffer-read-only t)
index 3d21773..da6ea7f 100644 (file)
@@ -783,7 +783,7 @@ prompt the user for the name of an NNTP server to use."
       (erase-buffer)
       (setq buffer-file-name dribble-file)
       (auto-save-mode t)
       (erase-buffer)
       (setq buffer-file-name dribble-file)
       (auto-save-mode t)
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (bury-buffer (current-buffer))
       (set-buffer-modified-p nil)
       (let ((auto (make-auto-save-file-name))
       (bury-buffer (current-buffer))
       (set-buffer-modified-p nil)
       (let ((auto (make-auto-save-file-name))
@@ -1875,7 +1875,7 @@ If FORCE is non-nil, the .newsrc file is read."
        (save-excursion
          (gnus-message 5 "Reading %s..." newsrc-file)
          (set-buffer (nnheader-find-file-noselect newsrc-file))
        (save-excursion
          (gnus-message 5 "Reading %s..." newsrc-file)
          (set-buffer (nnheader-find-file-noselect newsrc-file))
-         (buffer-disable-undo (current-buffer))
+         (buffer-disable-undo)
          (gnus-newsrc-to-gnus-format)
          (kill-buffer (current-buffer))
          (gnus-message 5 "Reading %s...done" newsrc-file)))
          (gnus-newsrc-to-gnus-format)
          (kill-buffer (current-buffer))
          (gnus-message 5 "Reading %s...done" newsrc-file)))
@@ -2272,7 +2272,7 @@ If FORCE is non-nil, the .newsrc file is read."
          (setq buffer-file-name
                (concat gnus-current-startup-file ".eld"))
          (setq default-directory (file-name-directory buffer-file-name))
          (setq buffer-file-name
                (concat gnus-current-startup-file ".eld"))
          (setq default-directory (file-name-directory buffer-file-name))
-         (buffer-disable-undo (current-buffer))
+         (buffer-disable-undo)
          (erase-buffer)
          (gnus-message 5 "Saving %s.eld..." gnus-current-startup-file)
          (gnus-gnus-to-quick-newsrc-format)
          (erase-buffer)
          (gnus-message 5 "Saving %s.eld..." gnus-current-startup-file)
          (gnus-gnus-to-quick-newsrc-format)
@@ -2336,7 +2336,7 @@ If FORCE is non-nil, the .newsrc file is read."
          info ranges range method)
       (setq buffer-file-name gnus-current-startup-file)
       (setq default-directory (file-name-directory buffer-file-name))
          info ranges range method)
       (setq buffer-file-name gnus-current-startup-file)
       (setq default-directory (file-name-directory buffer-file-name))
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (erase-buffer)
       ;; Write options.
       (when gnus-newsrc-options
       (erase-buffer)
       ;; Write options.
       (when gnus-newsrc-options
index 28e87da..041782e 100644 (file)
@@ -1896,7 +1896,7 @@ The following commands are available:
   (setq mode-name "Summary")
   (make-local-variable 'minor-mode-alist)
   (use-local-map gnus-summary-mode-map)
   (setq mode-name "Summary")
   (make-local-variable 'minor-mode-alist)
   (use-local-map gnus-summary-mode-map)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (setq buffer-read-only t)            ;Disable modification
   (setq truncate-lines t)
   (setq selective-display t)
   (setq buffer-read-only t)            ;Disable modification
   (setq truncate-lines t)
   (setq selective-display t)
@@ -3940,6 +3940,7 @@ If SELECT-ARTICLES, only select those articles from GROUP."
       ;; Init the dependencies hash table.
       (setq gnus-newsgroup-dependencies
            (gnus-make-hashtable (length articles)))
       ;; Init the dependencies hash table.
       (setq gnus-newsgroup-dependencies
            (gnus-make-hashtable (length articles)))
+      (gnus-set-global-variables)
       ;; Retrieve the headers and read them in.
       (gnus-message 5 "Fetching headers for %s..." gnus-newsgroup-name)
       (setq gnus-newsgroup-headers
       ;; Retrieve the headers and read them in.
       (gnus-message 5 "Fetching headers for %s..." gnus-newsgroup-name)
       (setq gnus-newsgroup-headers
@@ -7386,7 +7387,8 @@ groups."
       (if (and (not read-only)
               (not (gnus-request-replace-article
                     (cdr gnus-article-current) (car gnus-article-current)
       (if (and (not read-only)
               (not (gnus-request-replace-article
                     (cdr gnus-article-current) (car gnus-article-current)
-                    (current-buffer))))
+                    (current-buffer)
+                    (not gnus-article-decoded-p))))
          (error "Couldn't replace article")
        ;; Update the summary buffer.
        (if (and references
          (error "Couldn't replace article")
        ;; Update the summary buffer.
        (if (and references
@@ -8737,7 +8739,7 @@ save those articles instead."
                                (lambda (f)
                                  (if (equal f " ")
                                      f
                                (lambda (f)
                                  (if (equal f " ")
                                      f
-                                   (gnus-quote-arg-for-sh-or-csh f)))
+                                   (mm-quote-arg f)))
                                files " ")))))
          (setq ps (cdr ps)))))
     (if (and gnus-view-pseudos (not not-view))
                                files " ")))))
          (setq ps (cdr ps)))))
     (if (and gnus-view-pseudos (not not-view))
index 2b54057..3e80289 100644 (file)
@@ -644,6 +644,61 @@ with potentially long computations."
 
 ;;; Functions for saving to babyl/mail files.
 
 
 ;;; Functions for saving to babyl/mail files.
 
+(defvar rmail-default-rmail-file)
+(defun gnus-output-to-rmail (filename &optional ask)
+  "Append the current article to an Rmail file named FILENAME."
+  (require 'rmail)
+  ;; Most of these codes are borrowed from rmailout.el.
+  (setq filename (expand-file-name filename))
+  (setq rmail-default-rmail-file filename)
+  (let ((artbuf (current-buffer))
+       (tmpbuf (gnus-get-buffer-create " *Gnus-output*")))
+    (save-excursion
+      (or (get-file-buffer filename)
+         (file-exists-p filename)
+         (if (or (not ask)
+                 (gnus-yes-or-no-p
+                  (concat "\"" filename "\" does not exist, create it? ")))
+             (let ((file-buffer (create-file-buffer filename)))
+               (save-excursion
+                 (set-buffer file-buffer)
+                 (rmail-insert-rmail-file-header)
+                 (let ((require-final-newline nil))
+                   (gnus-write-buffer filename)))
+               (kill-buffer file-buffer))
+           (error "Output file does not exist")))
+      (set-buffer tmpbuf)
+      (erase-buffer)
+      (insert-buffer-substring artbuf)
+      (gnus-convert-article-to-rmail)
+      ;; Decide whether to append to a file or to an Emacs buffer.
+      (let ((outbuf (get-file-buffer filename)))
+       (if (not outbuf)
+           (append-to-file (point-min) (point-max) filename)
+         ;; File has been visited, in buffer OUTBUF.
+         (set-buffer outbuf)
+         (let ((buffer-read-only nil)
+               (msg (and (boundp 'rmail-current-message)
+                         (symbol-value 'rmail-current-message))))
+           ;; If MSG is non-nil, buffer is in RMAIL mode.
+           (when msg
+             (widen)
+             (narrow-to-region (point-max) (point-max)))
+           (insert-buffer-substring tmpbuf)
+           (when msg
+             (goto-char (point-min))
+             (widen)
+             (search-backward "\n\^_")
+             (narrow-to-region (point) (point-max))
+             (rmail-count-new-messages t)
+             (when (rmail-summary-exists)
+               (rmail-select-summary
+                (rmail-update-summary)))
+             (rmail-count-new-messages t)
+             (rmail-show-message msg))
+           (save-buffer)))))
+    (kill-buffer tmpbuf)))
+
 (defun gnus-output-to-mail (filename &optional ask)
   "Append the current article to a mail file named FILENAME."
   (setq filename (expand-file-name filename))
 (defun gnus-output-to-mail (filename &optional ask)
   "Append the current article to a mail file named FILENAME."
   (setq filename (expand-file-name filename))
index 19929f3..0cc00a6 100644 (file)
@@ -1024,7 +1024,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
   ;; finally just replaces the next to last number with "[0-9]+".
   (save-excursion
     (set-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name))
   ;; finally just replaces the next to last number with "[0-9]+".
   (save-excursion
     (set-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name))
-    (buffer-disable-undo (current-buffer))
+    (buffer-disable-undo)
     (erase-buffer)
     (insert (regexp-quote string))
 
     (erase-buffer)
     (insert (regexp-quote string))
 
@@ -1124,7 +1124,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
        string)
     (save-excursion
       (set-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name))
        string)
     (save-excursion
       (set-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name))
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (while string-list
        (erase-buffer)
        (insert (caar string-list))
       (while string-list
        (erase-buffer)
        (insert (caar string-list))
index ac5c95d..8ff098e 100644 (file)
@@ -28,6 +28,7 @@
 (require 'text-props)
 (defvar menu-bar-mode (featurep 'menubar))
 (require 'messagexmas)
 (require 'text-props)
 (defvar menu-bar-mode (featurep 'menubar))
 (require 'messagexmas)
+(require 'wid-edit)
 
 (defgroup gnus-xmas nil
   "XEmacsoid support for Gnus"
 
 (defgroup gnus-xmas nil
   "XEmacsoid support for Gnus"
@@ -400,6 +401,7 @@ call it with the value of the `gnus-data' text property."
 
 (defun gnus-xmas-define ()
   (setq gnus-mouse-2 [button2])
 
 (defun gnus-xmas-define ()
   (setq gnus-mouse-2 [button2])
+  (setq gnus-widget-button-keymap widget-button-keymap)
 
   (unless (memq 'underline (face-list))
     (and (fboundp 'make-face)
 
   (unless (memq 'underline (face-list))
     (and (fboundp 'make-face)
index 2e3c1b3..e021f52 100644 (file)
@@ -253,10 +253,10 @@ is restarted, and sometimes reloaded."
 (defconst gnus-product-name "T-gnus"
   "Product name of this version of gnus.")
 
 (defconst gnus-product-name "T-gnus"
   "Product name of this version of gnus.")
 
-(defconst gnus-version-number "6.10.020"
+(defconst gnus-version-number "6.10.021"
   "Version number for this version of gnus.")
 
   "Version number for this version of gnus.")
 
-(defconst gnus-original-version-number "0.31"
+(defconst gnus-original-version-number "0.32"
     "Version number for this version of Gnus.")
 
 (defconst gnus-original-product-name "Pterodactyl Gnus"
     "Version number for this version of Gnus.")
 
 (defconst gnus-original-product-name "Pterodactyl Gnus"
@@ -1664,8 +1664,7 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.")
       gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view
       gnus-uu-decode-binhex-view gnus-uu-unmark-thread
       gnus-uu-mark-over)
       gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view
       gnus-uu-decode-binhex-view gnus-uu-unmark-thread
       gnus-uu-mark-over)
-     ("gnus-uu" gnus-uu-delete-work-dir gnus-quote-arg-for-sh-or-csh
-      gnus-uu-unmark-thread)
+     ("gnus-uu" gnus-uu-delete-work-dir gnus-uu-unmark-thread)
      ("gnus-msg" (gnus-summary-send-map keymap)
       gnus-article-mail gnus-copy-article-buffer gnus-extended-version)
      ("gnus-msg" :interactive t
      ("gnus-msg" (gnus-summary-send-map keymap)
       gnus-article-mail gnus-copy-article-buffer gnus-extended-version)
      ("gnus-msg" :interactive t
index ca8dc7a..8fa9e28 100644 (file)
                     find-charset-region base64-decode-string
                     base64-encode-string
                     find-coding-systems-region get-charset-property
                     find-charset-region base64-decode-string
                     base64-encode-string
                     find-coding-systems-region get-charset-property
-                    coding-system-get w3-region))
+                    coding-system-get w3-region
+                    rmail-summary-exists rmail-select-summary
+                    rmail-update-summary
+                    ))
       (maybe-bind '(global-face-data
                    mark-active transient-mark-mode mouse-selection-click-count
                    mouse-selection-click-count-buffer buffer-display-table
       (maybe-bind '(global-face-data
                    mark-active transient-mark-mode mouse-selection-click-count
                    mouse-selection-click-count-buffer buffer-display-table
                 url-view-url w3-prepare-buffer
                 char-int
                 annotationp delete-annotation make-image-specifier
                 url-view-url w3-prepare-buffer
                 char-int
                 annotationp delete-annotation make-image-specifier
-                make-annotation base64-decode-string base64-encode-string
-                w3-do-setup w3-region)))
-
+                make-annotation base64-decode-string base64-encode-region
+                w3-do-setup w3-region
+                rmail-summary-exists rmail-select-summary rmail-update-summary
+                )))
 (setq load-path (cons "." load-path))
 (require 'custom)
 
 (setq load-path (cons "." load-path))
 (require 'custom)
 
index 24fbac0..f414d1f 100644 (file)
@@ -2419,7 +2419,7 @@ to find out how to use this."
       (unwind-protect
          (save-excursion
            (set-buffer tembuf)
       (unwind-protect
          (save-excursion
            (set-buffer tembuf)
-           (buffer-disable-undo (current-buffer))
+           (buffer-disable-undo)
            (erase-buffer)
            (insert-buffer message-encoding-buffer)
            ;; Remove some headers.
            (erase-buffer)
            (insert-buffer message-encoding-buffer)
            ;; Remove some headers.
@@ -4426,7 +4426,7 @@ Do a `tab-to-tab-stop' if not in those headers."
          (message "No matching groups")
        (save-selected-window
          (pop-to-buffer "*Completions*")
          (message "No matching groups")
        (save-selected-window
          (pop-to-buffer "*Completions*")
-         (buffer-disable-undo (current-buffer))
+         (buffer-disable-undo)
          (let ((buffer-read-only nil))
            (erase-buffer)
            (let ((standard-output (current-buffer)))
          (let ((buffer-read-only nil))
            (erase-buffer)
            (let ((standard-output (current-buffer)))
@@ -4552,27 +4552,31 @@ regexp varstr."
 (defun message-encode-message-body ()
   "Examine the message body, encode it, and add the requisite headers."
   (when (featurep 'mule)
 (defun message-encode-message-body ()
   "Examine the message body, encode it, and add the requisite headers."
   (when (featurep 'mule)
-    (save-excursion
-      (save-restriction
-       (message-narrow-to-headers-or-head)
-       (message-remove-header
-        "^Content-Transfer-Encoding:\\|^Content-Type:\\|^Mime-Version:" t)
-       (goto-char (point-max))
-       (widen)
-       (narrow-to-region (point) (point-max))
-       (let* ((charset (mm-encode-body))
-              (encoding (mm-body-encoding)))
-         (when (consp charset)
-           (error "Can't encode messages with multiple charsets (yet)"))
-         (widen)
+    (let (old-headers)
+      (save-excursion
+       (save-restriction
          (message-narrow-to-headers-or-head)
          (message-narrow-to-headers-or-head)
+         (unless (setq old-headers (message-fetch-field "mime-version"))
+           (message-remove-header
+            "^Content-Transfer-Encoding:\\|^Content-Type:\\|^Mime-Version:" t))
          (goto-char (point-max))
          (goto-char (point-max))
-         (setq charset (or charset (mm-mule-charset-to-mime-charset 'ascii)))
-         ;; We don't insert MIME headers if they only say the default.
-         (unless (and (eq charset 'us-ascii)
-                      (eq encoding '7bit))
-           (mm-insert-rfc822-headers charset encoding))
-         (mm-encode-body))))))
+         (widen)
+         (narrow-to-region (point) (point-max))
+         (let* ((charset (mm-encode-body))
+                (encoding (mm-body-encoding)))
+           (when (consp charset)
+             (error "Can't encode messages with multiple charsets (yet)"))
+           (widen)
+           (message-narrow-to-headers-or-head)
+           (goto-char (point-max))
+           (setq charset (or charset
+                             (mm-mule-charset-to-mime-charset 'ascii)))
+           ;; We don't insert MIME headers if they only say the default.
+           (when (and (not old-headers)
+                      (not (and (eq charset 'us-ascii)
+                                (eq encoding '7bit))))
+             (mm-insert-rfc822-headers charset encoding))
+           (mm-encode-body)))))))
 
 (run-hooks 'message-load-hook)
 
 
 (run-hooks 'message-load-hook)
 
index a2699f5..135b974 100644 (file)
@@ -25,7 +25,7 @@
 ;;; Code:
 
 (eval-and-compile
 ;;; Code:
 
 (eval-and-compile
-  (or (fboundp  'base64-encode-region)
+  (or (fboundp  'base64-decode-region)
       (autoload 'base64-decode-region "base64" nil t)))
 (require 'mm-util)
 (require 'rfc2047)
       (autoload 'base64-decode-region "base64" nil t)))
 (require 'mm-util)
 (require 'rfc2047)
@@ -120,9 +120,8 @@ The characters in CHARSET should then be decoded."
        (when (and charset
                   (setq mule-charset (mm-charset-to-coding-system charset))
                   buffer-file-coding-system
        (when (and charset
                   (setq mule-charset (mm-charset-to-coding-system charset))
                   buffer-file-coding-system
-                  ;;(not (mm-coding-system-equal
-                  ;;    buffer-file-coding-system mule-charset))
-                  )
+                  (or (not (eq mule-charset 'ascii))
+                      (setq mule-charset rfc2047-default-charset)))
          (mm-decode-coding-region (point-min) (point-max) mule-charset))))))
 
 (provide 'mm-bodies)
          (mm-decode-coding-region (point-min) (point-max) mule-charset))))))
 
 (provide 'mm-bodies)
index 027a46a..487b63e 100644 (file)
     (if (functionp method)
        (let ((cur (current-buffer)))
          (switch-to-buffer (generate-new-buffer "*mm*"))
     (if (functionp method)
        (let ((cur (current-buffer)))
          (switch-to-buffer (generate-new-buffer "*mm*"))
+         (buffer-disable-undo)
+         (mm-set-buffer-file-coding-system 'no-conversion)
          (insert-buffer-substring cur)
          (funcall method)
          (mm-handle-set-undisplayer handle (current-buffer)))
          (insert-buffer-substring cur)
          (funcall method)
          (mm-handle-set-undisplayer handle (current-buffer)))
-      (let* ((file (make-temp-name (expand-file-name "emm." mm-tmp-directory)))
-            process)
+      (let* ((dir (make-temp-name (expand-file-name "emm." mm-tmp-directory)))
+            (filename (mail-content-type-get
+                       (mm-handle-disposition handle) 'filename))
+            (needsterm (assoc "needsterm"
+                              (mailcap-mime-info
+                               (car (mm-handle-type handle)) t)))
+            process file)
+       ;; We create a private sub-directory where we store our files.
+       (make-directory dir)
+       (set-file-modes dir 448)
+       (if filename
+           (setq file (expand-file-name (or filename "mm.") dir))
+         (setq file (make-temp-name (expand-file-name "mm." dir))))
        (write-region (point-min) (point-max)
                      file nil 'nomesg nil 'no-conversion)
        (setq process
        (write-region (point-min) (point-max)
                      file nil 'nomesg nil 'no-conversion)
        (setq process
-             (start-process "*display*" nil shell-file-name
-                            "-c" (format method file)))
+             (if needsterm
+                 (start-process "*display*" nil
+                                "xterm"
+                                "-e" (format method file))
+               (switch-to-buffer (generate-new-buffer "*mm*"))
+               (buffer-disable-undo)
+               (mm-set-buffer-file-coding-system 'no-conversion)
+               (start-process "*display*" (current-buffer)
+                              shell-file-name
+                              "-c" (format method file))))
        (mm-handle-set-undisplayer handle (cons file process))
        (message "Displaying %s..." (format method file))))))
 
        (mm-handle-set-undisplayer handle (cons file process))
        (message "Displaying %s..." (format method file))))))
 
              (delete-file (car object))
            (error nil))
          (condition-case ()
              (delete-file (car object))
            (error nil))
          (condition-case ()
+             (delete-directory (file-name-directory (car object)))
+           (error nil))
+         (condition-case ()
              (kill-process (cdr object))
            (error nil)))
         ((bufferp object)
              (kill-process (cdr object))
            (error nil)))
         ((bufferp object)
@@ -305,6 +329,8 @@ This overrides entries in the mailcap file."
     (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
     (buffer-string)))
 
     (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
     (buffer-string)))
 
+(defvar mm-default-directory nil)
+
 (defun mm-save-part (handle)
   "Write HANDLE to a file."
   (let* ((name (mail-content-type-get (mm-handle-type handle) 'name))
 (defun mm-save-part (handle)
   "Write HANDLE to a file."
   (let* ((name (mail-content-type-get (mm-handle-type handle) 'name))
@@ -316,7 +342,9 @@ This overrides entries in the mailcap file."
     (setq file
          (read-file-name "Save MIME part to: "
                          (expand-file-name
     (setq file
          (read-file-name "Save MIME part to: "
                          (expand-file-name
-                          (or filename name "") default-directory)))
+                          (or filename name "")
+                          (or mm-default-directory default-directory))))
+    (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-with-unibyte-buffer
       (insert-buffer-substring (mm-handle-buffer handle))
       (mm-decode-content-transfer-encoding (mm-handle-encoding handle))
index c8e21b3..fecab8e 100644 (file)
@@ -84,6 +84,7 @@
      (device-type . ignore)
      (coding-system-equal . equal)
      (annotationp . ignore)
      (device-type . ignore)
      (coding-system-equal . equal)
      (annotationp . ignore)
+     (set-buffer-file-coding-system . ignore)
      (make-char
       . (lambda (charset int)
          (int-to-char int)))
      (make-char
       . (lambda (charset int)
          (int-to-char int)))
@@ -96,8 +97,7 @@
 
 (defvar mm-charset-coding-system-alist
   (let ((rest
 
 (defvar mm-charset-coding-system-alist
   (let ((rest
-        '((us-ascii . iso-8859-1)
-          (gb2312 . cn-gb-2312)
+        '((gb2312 . cn-gb-2312)
           (iso-2022-jp-2 . iso-2022-7bit-ss2)
           (x-ctext . ctext)))
        (systems (mm-coding-system-list))
           (iso-2022-jp-2 . iso-2022-7bit-ss2)
           (x-ctext . ctext)))
        (systems (mm-coding-system-list))
@@ -139,6 +139,9 @@ used as the line break code type of the coding system."
    ((and (null (mm-coding-system-list))
         (memq charset mm-known-charsets))
     charset)
    ((and (null (mm-coding-system-list))
         (memq charset mm-known-charsets))
     charset)
+   ;; ascii
+   ((eq charset 'us-ascii)
+    'ascii)
    ;; Check to see whether we can handle this charset.
    ((memq charset (mm-coding-system-list))
     charset)
    ;; Check to see whether we can handle this charset.
    ((memq charset (mm-coding-system-list))
     charset)
index def1e0c..5615341 100644 (file)
              (cons (cons (point-min) (point-max))
                    major-mode))
 
              (cons (cons (point-min) (point-max))
                    major-mode))
 
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
        (widen)
        (setq buffer-read-only nil)
        (fundamental-mode)
        (widen)
        (setq buffer-read-only nil)
        (fundamental-mode)
index f417484..221b77c 100644 (file)
@@ -290,6 +290,7 @@ from the document.")
       (setq nndoc-dissection-alist nil)
       (save-excursion
        (set-buffer nndoc-current-buffer)
       (setq nndoc-dissection-alist nil)
       (save-excursion
        (set-buffer nndoc-current-buffer)
+       (mm-enable-multibyte)
        (erase-buffer)
        (if (stringp nndoc-address)
            (nnheader-insert-file-contents nndoc-address)
        (erase-buffer)
        (if (stringp nndoc-address)
            (nnheader-insert-file-contents nndoc-address)
index 6aaa529..700dad8 100644 (file)
@@ -314,7 +314,7 @@ If this variable is nil, no files will be excluded.")
   (save-excursion
     (set-buffer (get-buffer-create nneething-work-buffer))
     (setq case-fold-search nil)
   (save-excursion
     (set-buffer (get-buffer-create nneething-work-buffer))
     (setq case-fold-search nil)
-    (buffer-disable-undo (current-buffer))
+    (buffer-disable-undo)
     (erase-buffer)
     (cond
      ((not (file-exists-p file))
     (erase-buffer)
     (cond
      ((not (file-exists-p file))
index 6613193..587a378 100644 (file)
@@ -704,7 +704,7 @@ deleted.  Point is left where the deleted region was."
              (minid (lsh -1 -1))
              maxid start end newscantime
              buffer-read-only)
              (minid (lsh -1 -1))
              maxid start end newscantime
              buffer-read-only)
-         (buffer-disable-undo (current-buffer))
+         (buffer-disable-undo)
          (setq maxid (cdr active))
          (goto-char (point-min))
 
          (setq maxid (cdr active))
          (goto-char (point-min))
 
index 978893f..222f090 100644 (file)
@@ -492,7 +492,7 @@ the line could be found."
 (defun nnheader-set-temp-buffer (name &optional noerase)
   "Set-buffer to an empty (possibly new) buffer called NAME with undo disabled."
   (set-buffer (get-buffer-create name))
 (defun nnheader-set-temp-buffer (name &optional noerase)
   "Set-buffer to an empty (possibly new) buffer called NAME with undo disabled."
   (set-buffer (get-buffer-create name))
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (unless noerase
     (erase-buffer))
   (current-buffer))
   (unless noerase
     (erase-buffer))
   (current-buffer))
index a75cd3d..d72b638 100644 (file)
@@ -1507,9 +1507,9 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
     ;; Let the backend save the article (or not).
     (cond
      ((not duplication)
     ;; Let the backend save the article (or not).
     (cond
      ((not duplication)
-      (nnmail-cache-insert message-id)
       (funcall func (setq group-art
       (funcall func (setq group-art
-                         (nreverse (nnmail-article-group artnum-func)))))
+                         (nreverse (nnmail-article-group artnum-func))))
+      (nnmail-cache-insert message-id))
      ((eq action 'delete)
       (setq group-art nil))
      ((eq action 'warn)
      ((eq action 'delete)
       (setq group-art nil))
      ((eq action 'warn)
index b0f3c21..c38193a 100644 (file)
            (nnmbox-article-group-number)))))))
 
 (deffoo nnmbox-request-group (group &optional server dont-check)
            (nnmbox-article-group-number)))))))
 
 (deffoo nnmbox-request-group (group &optional server dont-check)
+  (nnmbox-possibly-change-newsgroup nil server)
   (let ((active (cadr (assoc group nnmbox-group-alist))))
     (cond
      ((or (null active)
   (let ((active (cadr (assoc group nnmbox-group-alist))))
     (cond
      ((or (null active)
       (set-buffer (setq nnmbox-mbox-buffer
                        (nnheader-find-file-noselect
                         nnmbox-mbox-file nil 'raw)))
       (set-buffer (setq nnmbox-mbox-buffer
                        (nnheader-find-file-noselect
                         nnmbox-mbox-file nil 'raw)))
-      (buffer-disable-undo (current-buffer))))
+      (mm-enable-multibyte)
+      (buffer-disable-undo)))
   (when (not nnmbox-group-alist)
     (nnmail-activate 'nnmbox))
   (if newsgroup
   (when (not nnmbox-group-alist)
     (nnmail-activate 'nnmbox))
   (if newsgroup
        (set-buffer (setq nnmbox-mbox-buffer
                          (nnheader-find-file-noselect
                           nnmbox-mbox-file nil 'raw)))
        (set-buffer (setq nnmbox-mbox-buffer
                          (nnheader-find-file-noselect
                           nnmbox-mbox-file nil 'raw)))
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
 
        ;; Go through the group alist and compare against
        ;; the mbox file.
 
        ;; Go through the group alist and compare against
        ;; the mbox file.
index a8f1e48..dd1c312 100644 (file)
@@ -771,7 +771,7 @@ all.  This may very well take some time.")
     (save-excursion
       ;; Init the nov buffer.
       (set-buffer nov-buffer)
     (save-excursion
       ;; Init the nov buffer.
       (set-buffer nov-buffer)
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (erase-buffer)
       (set-buffer nntp-server-buffer)
       ;; Delete the old NOV file.
       (erase-buffer)
       (set-buffer nntp-server-buffer)
       ;; Delete the old NOV file.
index 253557e..4931808 100644 (file)
@@ -530,7 +530,7 @@ backend for the messages.")
        (when (file-exists-p (concat nnsoup-directory file))
          (save-excursion               ; Load the file.
            (set-buffer (get-buffer-create buffer-name))
        (when (file-exists-p (concat nnsoup-directory file))
          (save-excursion               ; Load the file.
            (set-buffer (get-buffer-create buffer-name))
-           (buffer-disable-undo (current-buffer))
+           (buffer-disable-undo)
            (push (cons nnsoup-current-group (current-buffer)) nnsoup-buffers)
            (nnheader-insert-file-contents (concat nnsoup-directory file))
            (current-buffer))))))
            (push (cons nnsoup-current-group (current-buffer)) nnsoup-buffers)
            (nnheader-insert-file-contents (concat nnsoup-directory file))
            (current-buffer))))))
index 8878a78..ea36d60 100644 (file)
@@ -59,7 +59,7 @@ The values can be:
     (iso-8859-3 . Q)
     (iso-8859-4 . Q)
     (iso-8859-5 . B)
     (iso-8859-3 . Q)
     (iso-8859-4 . Q)
     (iso-8859-5 . B)
-    (koi8-r . Q)
+    (koi8-r . B)
     (iso-8859-7 . Q)
     (iso-8859-8 . Q)
     (iso-8859-9 . Q)
     (iso-8859-7 . Q)
     (iso-8859-8 . Q)
     (iso-8859-9 . Q)
@@ -232,7 +232,7 @@ Should be called narrowed to the head of the message."
        (goto-char (point-min))
        (while (not (eobp))
          (goto-char (min (point-max) (+ 64 (point))))
        (goto-char (point-min))
        (while (not (eobp))
          (goto-char (min (point-max) (+ 64 (point))))
-         (search-backward "=" nil (- (point) 2))
+         (search-backward "=" (- (point) 2) t)
          (unless (eobp)
            (insert "\n")))))))
 
          (unless (eobp)
            (insert "\n")))))))
 
@@ -304,6 +304,8 @@ Valid ENCODINGs are \"B\" and \"Q\".
 If your Emacs implementation can't decode CHARSET, it returns nil."
   (let ((cs (mm-charset-to-coding-system charset)))
     (when cs
 If your Emacs implementation can't decode CHARSET, it returns nil."
   (let ((cs (mm-charset-to-coding-system charset)))
     (when cs
+      (when (eq cs 'ascii)
+       (setq cs rfc2047-default-charset))
       (mm-decode-coding-string
        (cond
        ((equal "B" encoding)
       (mm-decode-coding-string
        (cond
        ((equal "B" encoding)
index abc4dbd..abb72ac 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Semi-gnus 6.10.020 Manual
+@settitle Semi-gnus 6.10.021 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
 @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
 @tex
 
 @titlepage
-@title Semi-gnus 6.10.020 Manual
+@title Semi-gnus 6.10.021 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @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.
 
 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.020.
+This manual corresponds to Semi-gnus 6.10.021.
 
 @end ifinfo
 
 
 @end ifinfo
 
@@ -13087,6 +13087,12 @@ If @code{gnus-adaptive-word-minimum} is set to a number, the adaptive
 word scoring process will never bring down the score of an article to
 below this number.  The default is @code{nil}.
 
 word scoring process will never bring down the score of an article to
 below this number.  The default is @code{nil}.
 
+@vindex gnus-adative-word-no-group-words
+If @code{gnus-adative-word-no-group-words} is set to t, gnus won't
+adaptively word score any of the words in the group name.  Useful for
+groups like comp.editors.emacs, where most of the subject lines contain
+the word "emacs".
+
 After using this scheme for a while, it might be nice to write a
 @code{gnus-psychoanalyze-user} command to go through the rules and see
 what words you like and what words you don't like.  Or perhaps not.
 After using this scheme for a while, it might be nice to write a
 @code{gnus-psychoanalyze-user} command to go through the rules and see
 what words you like and what words you don't like.  Or perhaps not.
@@ -16112,6 +16118,7 @@ Luc Van Eycken,
 Sam Falkner,
 Nelson Jose dos Santos Ferreira,
 Sigbjorn Finne,
 Sam Falkner,
 Nelson Jose dos Santos Ferreira,
 Sigbjorn Finne,
+Paul Fisher,
 Decklin Foster,
 Gary D. Foster,
 Paul Franklin,
 Decklin Foster,
 Gary D. Foster,
 Paul Franklin,
@@ -16196,6 +16203,7 @@ Jason Rumney,
 Wolfgang Rupprecht,
 Jay Sachs,
 Dewey M. Sasser,
 Wolfgang Rupprecht,
 Jay Sachs,
 Dewey M. Sasser,
+Conrad Sauerwald,
 Loren Schall,
 Dan Schmidt,
 Ralph Schleicher,
 Loren Schall,
 Dan Schmidt,
 Ralph Schleicher,
@@ -18122,6 +18130,13 @@ exits the group.
 The jingle is only played on the second invocation of Gnus.
 
 @item
 The jingle is only played on the second invocation of Gnus.
 
 @item
+gnus-ignored-mime-types to avoid seeing buttons for Vcards and the
+like.
+
+@item
+Boucing articles should do MIME.
+
+@item
 Solve the halting problem.
 
 @c TODO
 Solve the halting problem.
 
 @c TODO
index a048867..ec14254 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Pterodactyl Message 0.31 Manual
+@settitle Pterodactyl Message 0.32 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
 @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
 @tex
 
 @titlepage
-@title Pterodactyl Message 0.31 Manual
+@title Pterodactyl Message 0.32 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -83,7 +83,7 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Pterodactyl Message 0.31.  Message is
+This manual corresponds to Pterodactyl Message 0.32.  Message is
 distributed with the Gnus distribution bearing the same version number
 as this manual.
 
 distributed with the Gnus distribution bearing the same version number
 as this manual.