*** empty log message ***
[gnus] / lisp / nnfolder.el
index 4fec257..60ad428 100644 (file)
@@ -225,7 +225,7 @@ time saver for large mailboxes.")
        (let ((bufs nnfolder-buffer-alist))
         (save-excursion
           (while bufs
-            (if (not (buffer-name (nth 1 (car bufs))))
+            (if (not (buffer-live-p (nth 1 (car bufs))))
                 (setq nnfolder-buffer-alist
                       (delq (car bufs) nnfolder-buffer-alist))
               (set-buffer (nth 1 (car bufs)))
@@ -246,7 +246,8 @@ time saver for large mailboxes.")
            (equal group nnfolder-current-group))
     (let ((inf (assoc group nnfolder-buffer-alist)))
       (when inf
-       (when nnfolder-current-group
+       (when (and nnfolder-current-group
+                  nnfolder-current-buffer)
          (push (list nnfolder-current-group nnfolder-current-buffer)
                nnfolder-buffer-alist))
        (setq nnfolder-buffer-alist
@@ -353,7 +354,8 @@ time saver for large mailboxes.")
         (nnfolder-delete-mail))
        (when last
         (nnfolder-save-buffer)
-        (nnfolder-adjust-min-active group))))
+        (nnfolder-adjust-min-active group)
+        (nnmail-save-active nnfolder-group-alist nnfolder-active-file))))
     result))
 
 (deffoo nnfolder-request-accept-article (group &optional server last)
@@ -373,7 +375,6 @@ time saver for large mailboxes.")
        (forward-line -1)
        (while (re-search-backward (concat "^" nnfolder-article-marker) nil t)
         (delete-region (point) (progn (forward-line 1) (point))))
-       (nnmail-cache-insert (nnmail-fetch-field "message-id"))
        (setq result
             (car (nnfolder-save-mail
                   (if (stringp group)
@@ -383,8 +384,7 @@ time saver for large mailboxes.")
      (when last
        (save-excursion
         (nnfolder-possibly-change-folder (or (caar art-group) group))
-        (nnfolder-save-buffer)
-        (nnmail-cache-close))))
+        (nnfolder-save-buffer))))
     (nnmail-save-active nnfolder-group-alist nnfolder-active-file)
     (unless result
       (nnheader-report 'nnfolder "Couldn't store article"))
@@ -449,14 +449,16 @@ time saver for large mailboxes.")
         (marker (concat "\n" nnfolder-article-marker))
         (number "[0-9]+")
         (activemin (cdr active)))
-    (goto-char (point-min))
-    (while (and (search-forward marker nil t)
-               (re-search-forward number nil t))
-      (setq activemin (min activemin
-                          (string-to-number (buffer-substring
-                                             (match-beginning 0)
-                                             (match-end 0))))))
-    (setcar active activemin)))
+    (save-excursion
+      (set-buffer nnfolder-current-buffer)
+      (goto-char (point-min))
+      (while (and (search-forward marker nil t)
+                 (re-search-forward number nil t))
+       (setq activemin (min activemin
+                            (string-to-number (buffer-substring
+                                               (match-beginning 0)
+                                               (match-end 0))))))
+      (setcar active activemin))))
 
 (defun nnfolder-article-string (article)
   (if (numberp article)
@@ -484,6 +486,9 @@ time saver for large mailboxes.")
   (when (and server
             (not (nnfolder-server-opened server)))
     (nnfolder-open-server server))
+  (unless (gnus-buffer-live-p nnfolder-current-buffer)
+    (setq nnfolder-current-buffer nil
+         nnfolder-current-group nil))
   ;; Change group.
   (when (and group
             (not (equal group nnfolder-current-group)))
@@ -495,7 +500,8 @@ time saver for large mailboxes.")
       (push (list group (cons 1 0)) nnfolder-group-alist)
       (nnmail-save-active nnfolder-group-alist nnfolder-active-file))
 
-    (unless dont-check
+    (if dont-check
+       (setq nnfolder-current-group group)
       (let (inf file)
        ;; If we have to change groups, see if we don't already have the
        ;; folder in memory.  If we do, verify the modtime and destroy