Importing pgnus-0.32
authorichikawa <ichikawa>
Thu, 24 Sep 1998 14:23:02 +0000 (14:23 +0000)
committerichikawa <ichikawa>
Thu, 24 Sep 1998 14:23:02 +0000 (14:23 +0000)
35 files changed:
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-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/mailcap.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
make.bat

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.
index 77ed4f6..0fe6d68 100644 (file)
@@ -1073,7 +1073,7 @@ The following commands are available:
   (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))
@@ -1419,12 +1419,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.
-              (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)
index 1538d9c..3fd48a1 100644 (file)
@@ -965,6 +965,7 @@ If PROMPT (the prefix), prompt for a coding system to use."
     (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 ()
@@ -981,6 +982,7 @@ If PROMPT (the prefix), prompt for a coding system to use."
             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"))
@@ -1888,6 +1890,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
 
+  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
@@ -1957,8 +1961,9 @@ commands:
   (make-local-variable 'gnus-button-marker-list)
   (make-local-variable 'gnus-article-current-summary)
   (make-local-variable 'gnus-article-mime-handles)
+  (make-local-variable 'gnus-article-decoded-p)
   (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)
   (mm-enable-multibyte)
@@ -1990,7 +1995,7 @@ commands:
     (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))
@@ -2129,10 +2134,13 @@ If ALL-HEADERS is non-nil, no headers are hidden."
   ;; This hook must be called before being narrowed.
   (let ((gnus-article-buffer (current-buffer))
        buffer-read-only)
+    (unless (eq major-mode 'gnus-article-mode)
+      (gnus-article-mode))
     (gnus-run-hooks 'gnus-tmp-internal-hook)
     (gnus-run-hooks 'gnus-article-prepare-hook)
     (when gnus-display-mime-function
-      (funcall gnus-display-mime-function))
+      (let ((url-standalone-mode (not gnus-plugged)))
+       (funcall gnus-display-mime-function)))
     ;; Perform the article display hooks.
     (gnus-run-hooks 'gnus-article-display-hook)))
 
@@ -2144,7 +2152,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
-%n  The description, if any
+%d  The description, if any
 %l  The length of the encoded part")
 
 (defvar gnus-mime-button-line-format-alist
@@ -2180,7 +2188,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)
-  (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 ()
@@ -2197,28 +2206,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))
+        (url-standalone-mode (not gnus-plugged))
         (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))
-       (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
-      (if gnus-tmp-name
-         (concat " (" gnus-tmp-name ")")
-       ""))
+         (if gnus-tmp-name
+             (concat " (" gnus-tmp-name ")")
+           ""))
     (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
@@ -2227,11 +2238,13 @@ If ALL-HEADERS is non-nil, no headers are hidden."
                 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 b e :action 'gnus-widget-press-button
+                          :button-keymap gnus-widget-button-keymap)))
 
 (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."
@@ -2239,28 +2252,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"))
-       (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))
@@ -2698,7 +2713,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))
-           (buffer-disable-undo (current-buffer))
+           (buffer-disable-undo)
            (setq major-mode 'gnus-original-article-mode)
            (setq buffer-read-only t))
          (let (buffer-read-only)
@@ -2707,7 +2722,9 @@ If given a prefix, show the hidden text instead."
          (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
@@ -3164,7 +3181,8 @@ specified by `gnus-button-alist'."
               (list gnus-mouse-face-prop gnus-article-mouse-face))
          (list 'gnus-callback fun)
          (and data (list 'gnus-data data))))
-  (widget-convert-button 'link from to :action 'gnus-widget-press-button))
+  (widget-convert-button 'link from to :action 'gnus-widget-press-button
+                        :button-keymap gnus-widget-button-keymap))
 
 ;;; Internal functions:
 
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))
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
        (setq buffer-read-only t)
        (get-buffer gnus-backlog-buffer))))
 
index f0e4362..af1f5e8 100644 (file)
@@ -34,6 +34,7 @@
 
 (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))
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)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (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*")
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
        (erase-buffer)
        (setq groups (sort groups 'string<))
        (while groups
index 7ceb8d1..f94c202 100644 (file)
@@ -447,11 +447,12 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
             (cadr gnus-command-method)
             last)))
 
-(defun gnus-request-replace-article (article group buffer)
-  (save-restriction
-    (message-narrow-to-head)
-    (mail-encode-encoded-word-buffer))
-  (message-encode-message-body)
+(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)))
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*")
-    (buffer-disable-undo (current-buffer))
+    (buffer-disable-undo)
     (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*"))
-      (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)))
@@ -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))))))
-       (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.
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
-     '(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 ()
@@ -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)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (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)
-  (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))
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*"))
-    (buffer-disable-undo (current-buffer))
+    (buffer-disable-undo)
     (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*"))
-           (buffer-disable-undo (current-buffer))
+           (buffer-disable-undo)
            (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*"))
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       ;; Go through all score file names and create regexp with them
       ;; as the source.
       (while sfiles
index 71345c9..1c326cd 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))
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
        (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))
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (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)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (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)
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (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)
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (setq truncate-lines t)
   (gnus-set-default-directory)
   (setq buffer-read-only t)
index cfe4f42..5b9d98a 100644 (file)
@@ -785,7 +785,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)
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (bury-buffer (current-buffer))
       (set-buffer-modified-p nil)
       (let ((auto (make-auto-save-file-name))
@@ -1877,7 +1877,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))
-         (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)))
@@ -2274,7 +2274,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))
-         (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)
@@ -2338,7 +2338,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))
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (erase-buffer)
       ;; Write options.
       (when gnus-newsrc-options
index cfba4f4..3823afe 100644 (file)
@@ -767,6 +767,7 @@ which it may alter in any way.")
 ;;; Internal variables
 
 (defvar gnus-article-mime-handles nil)
+(defvar gnus-article-decoded-p nil)
 (defvar gnus-scores-exclude-files nil)
 (defvar gnus-page-broken nil)
 
@@ -1878,7 +1879,7 @@ The following commands are available:
   (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)
@@ -3911,6 +3912,7 @@ If SELECT-ARTICLES, only select those articles from GROUP."
       ;; 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
@@ -5103,9 +5105,10 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
     (setq group-point (point))
     (if temporary
        nil                             ;Nothing to do.
-      (save-excursion
-       (set-buffer gnus-article-buffer)
-       (mapcar 'mm-destroy-part gnus-article-mime-handles))
+      (when (gnus-buffer-live-p gnus-article-buffer)
+       (save-excursion
+         (set-buffer gnus-article-buffer)
+         (mapcar 'mm-destroy-part gnus-article-mime-handles)))
       ;; If we have several article buffers, we kill them at exit.
       (unless gnus-single-article-buffer
        (gnus-kill-buffer gnus-article-buffer)
@@ -5150,9 +5153,10 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
              (gnus-y-or-n-p "Discard changes to this group and exit? "))
       (gnus-async-halt-prefetch)
       (gnus-run-hooks 'gnus-summary-prepare-exit-hook)
-      (save-excursion
-       (set-buffer gnus-article-buffer)
-       (mapcar 'mm-destroy-part gnus-article-mime-handles))
+      (when (gnus-buffer-live-p gnus-article-buffer)
+       (save-excursion
+         (set-buffer gnus-article-buffer)
+         (mapcar 'mm-destroy-part gnus-article-mime-handles)))
       ;; If we have several article buffers, we kill them at exit.
       (unless gnus-single-article-buffer
        (gnus-kill-buffer gnus-article-buffer)
@@ -7330,7 +7334,8 @@ groups."
       (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
@@ -8681,7 +8686,7 @@ save those articles instead."
                                (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))
index 5b1ca77..80496f8 100644 (file)
@@ -639,6 +639,61 @@ with potentially long computations."
 
 ;;; 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))
index 776de0a..9db71ae 100644 (file)
@@ -1025,7 +1025,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))
-    (buffer-disable-undo (current-buffer))
+    (buffer-disable-undo)
     (erase-buffer)
     (insert (regexp-quote string))
 
@@ -1125,7 +1125,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))
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (while string-list
        (erase-buffer)
        (insert (caar string-list))
index 5624d4d..6eb65fe 100644 (file)
@@ -28,6 +28,7 @@
 (require 'text-props)
 (defvar menu-bar-mode (featurep 'menubar))
 (require 'messagexmas)
+(require 'wid-edit)
 
 (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])
+  (setq gnus-widget-button-keymap widget-button-keymap)
 
   (unless (memq 'underline (face-list))
     (and (fboundp 'make-face)
index ef8958b..1322cd0 100644 (file)
@@ -250,7 +250,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "0.31"
+(defconst gnus-version-number "0.32"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number)
@@ -1648,8 +1648,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" 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
index c16939a..1b3af0a 100644 (file)
                     mule-write-region-no-coding-system
                     find-charset-region base64-decode-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
                 mm-copy-tree url-view-url w3-prepare-buffer
                 mule-write-region-no-coding-system char-int
                 annotationp delete-annotation make-image-specifier
-                make-annotation base64-decode-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)
index 0cf68b2..c5249f3 100644 (file)
@@ -271,6 +271,7 @@ not.")
       (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 "~/")))
@@ -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."
-  (interactive)
+  (interactive (list nil t))
   (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)))
-         (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)
@@ -820,16 +821,26 @@ correspond to.")
       (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)
-  "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))
-       file)
+       file dir)
     (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)
 
index 06a8881..a6beb4c 100644 (file)
@@ -2220,7 +2220,7 @@ to find out how to use this."
       (unwind-protect
          (save-excursion
            (set-buffer tembuf)
-           (buffer-disable-undo (current-buffer))
+           (buffer-disable-undo)
            (erase-buffer)
            ;; Avoid copying text props.
            (insert (format
@@ -3964,7 +3964,7 @@ Do a `tab-to-tab-stop' if not in those headers."
          (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)))
@@ -4048,27 +4048,31 @@ regexp varstr."
 (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)
+         (unless (setq old-headers (message-fetch-field "mime-version"))
+           (message-remove-header
+            "^Content-Transfer-Encoding:\\|^Content-Type:\\|^Mime-Version:" t))
          (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)
 
index a2699f5..135b974 100644 (file)
@@ -25,7 +25,7 @@
 ;;; 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)
@@ -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
-                  ;;(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)
index 027a46a..487b63e 100644 (file)
     (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)))
-      (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
-             (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))))))
 
              (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)
@@ -305,6 +329,8 @@ This overrides entries in the mailcap file."
     (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))
@@ -316,7 +342,9 @@ This overrides entries in the mailcap file."
     (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))
index c8e21b3..fecab8e 100644 (file)
@@ -84,6 +84,7 @@
      (device-type . ignore)
      (coding-system-equal . equal)
      (annotationp . ignore)
+     (set-buffer-file-coding-system . ignore)
      (make-char
       . (lambda (charset int)
          (int-to-char int)))
@@ -96,8 +97,7 @@
 
 (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))
@@ -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)
+   ;; ascii
+   ((eq charset 'us-ascii)
+    'ascii)
    ;; 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))
 
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
        (widen)
        (setq buffer-read-only nil)
        (fundamental-mode)
index 99aacd1..0fe68e4 100644 (file)
@@ -290,6 +290,7 @@ from the document.")
       (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)
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)
-    (buffer-disable-undo (current-buffer))
+    (buffer-disable-undo)
     (erase-buffer)
     (cond
      ((not (file-exists-p file))
index 3c58529..5d0d80f 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)
-         (buffer-disable-undo (current-buffer))
+         (buffer-disable-undo)
          (setq maxid (cdr active))
          (goto-char (point-min))
 
index b8f739e..41c064e 100644 (file)
@@ -494,7 +494,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))
-  (buffer-disable-undo (current-buffer))
+  (buffer-disable-undo)
   (unless noerase
     (erase-buffer))
   (current-buffer))
index 1c109c2..7bc8c23 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)
-      (nnmail-cache-insert message-id)
       (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)
index 9416cdc..8617d9b 100644 (file)
            (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)
       (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
                          (nnheader-find-file-noselect
                           nnmbox-mbox-file nil 'raw)))
        (mm-enable-multibyte)
-       (buffer-disable-undo (current-buffer))
+       (buffer-disable-undo)
 
        ;; 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)
-      (buffer-disable-undo (current-buffer))
+      (buffer-disable-undo)
       (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))
-           (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))))))
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)
-    (koi8-r . Q)
+    (koi8-r . B)
     (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))))
-         (search-backward "=" nil (- (point) 2))
+         (search-backward "=" (- (point) 2) t)
          (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
+      (when (eq cs 'ascii)
+       (setq cs rfc2047-default-charset))
       (mm-decode-coding-string
        (cond
        ((equal "B" encoding)
index 4a6b8a0..d183af9 100755 (executable)
--- a/make.bat
+++ b/make.bat
@@ -1,57 +1,57 @@
-@echo off\r
-\r
-rem Written by David Charlap <shamino@writeme.com>\r
-\r
-rem There are two catches, however.  The emacs.bat batch file may not exist\r
-rem in all distributions.  It is part of the Voelker build of Emacs 19.34\r
-rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html).  If the user\r
-rem installs Gnus with some other build, he may have to replace calls to\r
-rem %1\emacs.bat with something else.\r
-rem \r
-rem Also, the emacs.bat file that Voelker ships does not accept more than 9\r
-rem parameters, so the attempts to compile the .texi files will fail.  To\r
-rem fix that (at least on NT.  I don't know about Win95), the following\r
-rem change should be made to emacs.bat:\r
-rem \r
-rem     %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9\r
-rem \r
-rem should become\r
-rem \r
-rem     %emacs_dir%\bin\emacs.exe %*\r
-rem \r
-rem which will allow the batch file to accept an unlimited number of\r
-rem parameters.\r
-\r
-if "%1" == "" goto usage\r
-\r
-cd lisp\r
-call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
-if not "%2" == "copy" goto info\r
-copy *.el* %1\lisp\r
-\r
-:info\r
-cd ..\texi\r
-call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
-call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
-if not "%2" == "copy" goto done\r
-copy gnus %1\info\r
-copy gnus-?? %1\info\r
-copy message %1\info\r
-\r
-:etc\r
-cd ..\etc\r
-copy gnus-tut.txt %1\etc\r
-\r
-:done\r
-cd ..\r
-goto end\r
-\r
-:usage\r
-echo Usage: make ^<emacs-dir^> [copy]\r
-echo.\r
-echo where: ^<emacs-dir^> is the directory you installed emacs in\r
-echo                    eg. d:\emacs\19.34\r
-echo        copy indicates that the compiled files should be copied to your\r
-echo             emacs lisp, info, and etc directories\r
-\r
-:end\r
+@echo off
+
+rem Written by David Charlap <shamino@writeme.com>
+
+rem There are two catches, however.  The emacs.bat batch file may not exist
+rem in all distributions.  It is part of the Voelker build of Emacs 19.34
+rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html).  If the user
+rem installs Gnus with some other build, he may have to replace calls to
+rem %1\emacs.bat with something else.
+rem 
+rem Also, the emacs.bat file that Voelker ships does not accept more than 9
+rem parameters, so the attempts to compile the .texi files will fail.  To
+rem fix that (at least on NT.  I don't know about Win95), the following
+rem change should be made to emacs.bat:
+rem 
+rem     %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
+rem 
+rem should become
+rem 
+rem     %emacs_dir%\bin\emacs.exe %*
+rem 
+rem which will allow the batch file to accept an unlimited number of
+rem parameters.
+
+if "%1" == "" goto usage
+
+cd lisp
+call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile
+if not "%2" == "copy" goto info
+copy *.el* %1\lisp
+
+:info
+cd ..\texi
+call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
+call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
+if not "%2" == "copy" goto done
+copy gnus %1\info
+copy gnus-?? %1\info
+copy message %1\info
+
+:etc
+cd ..\etc
+copy gnus-tut.txt %1\etc
+
+:done
+cd ..
+goto end
+
+:usage
+echo Usage: make ^<emacs-dir^> [copy]
+echo.
+echo where: ^<emacs-dir^> is the directory you installed emacs in
+echo                    eg. d:\emacs\19.34
+echo        copy indicates that the compiled files should be copied to your
+echo             emacs lisp, info, and etc directories
+
+:end