comparison lisp/gnus/nnfolder.el @ 114:8619ce7e4c50 r20-1b9

Import from CVS: tag r20-1b9
author cvs
date Mon, 13 Aug 2007 09:21:54 +0200
parents 48d667d6f17f
children 9f59509498e1
comparison
equal deleted inserted replaced
113:2ec2fe4a4c89 114:8619ce7e4c50
223 'nnfolder 223 'nnfolder
224 (lambda () 224 (lambda ()
225 (let ((bufs nnfolder-buffer-alist)) 225 (let ((bufs nnfolder-buffer-alist))
226 (save-excursion 226 (save-excursion
227 (while bufs 227 (while bufs
228 (if (not (buffer-name (nth 1 (car bufs)))) 228 (if (not (buffer-live-p (nth 1 (car bufs))))
229 (setq nnfolder-buffer-alist 229 (setq nnfolder-buffer-alist
230 (delq (car bufs) nnfolder-buffer-alist)) 230 (delq (car bufs) nnfolder-buffer-alist))
231 (set-buffer (nth 1 (car bufs))) 231 (set-buffer (nth 1 (car bufs)))
232 (nnfolder-save-buffer) 232 (nnfolder-save-buffer)
233 (kill-buffer (current-buffer))) 233 (kill-buffer (current-buffer)))
244 ;; Make sure we _had_ the group open. 244 ;; Make sure we _had_ the group open.
245 (when (or (assoc group nnfolder-buffer-alist) 245 (when (or (assoc group nnfolder-buffer-alist)
246 (equal group nnfolder-current-group)) 246 (equal group nnfolder-current-group))
247 (let ((inf (assoc group nnfolder-buffer-alist))) 247 (let ((inf (assoc group nnfolder-buffer-alist)))
248 (when inf 248 (when inf
249 (when nnfolder-current-group 249 (when (and nnfolder-current-group
250 nnfolder-current-buffer)
250 (push (list nnfolder-current-group nnfolder-current-buffer) 251 (push (list nnfolder-current-group nnfolder-current-buffer)
251 nnfolder-buffer-alist)) 252 nnfolder-buffer-alist))
252 (setq nnfolder-buffer-alist 253 (setq nnfolder-buffer-alist
253 (delq inf nnfolder-buffer-alist)) 254 (delq inf nnfolder-buffer-alist))
254 (setq nnfolder-current-buffer (cadr inf) 255 (setq nnfolder-current-buffer (cadr inf)
372 (goto-char (point-min)) 373 (goto-char (point-min))
373 (search-forward "\n\n" nil t) 374 (search-forward "\n\n" nil t)
374 (forward-line -1) 375 (forward-line -1)
375 (while (re-search-backward (concat "^" nnfolder-article-marker) nil t) 376 (while (re-search-backward (concat "^" nnfolder-article-marker) nil t)
376 (delete-region (point) (progn (forward-line 1) (point)))) 377 (delete-region (point) (progn (forward-line 1) (point))))
377 (nnmail-cache-insert (nnmail-fetch-field "message-id")) 378 (when nnmail-cache-accepted-message-ids
379 (nnmail-cache-insert (nnmail-fetch-field "message-id")))
378 (setq result 380 (setq result
379 (car (nnfolder-save-mail 381 (car (nnfolder-save-mail
380 (if (stringp group) 382 (if (stringp group)
381 (list (cons group (nnfolder-active-number group))) 383 (list (cons group (nnfolder-active-number group)))
382 (setq art-group 384 (setq art-group
383 (nnmail-article-group 'nnfolder-active-number))))))) 385 (nnmail-article-group 'nnfolder-active-number)))))))
384 (when last 386 (when last
385 (save-excursion 387 (save-excursion
386 (nnfolder-possibly-change-folder (or (caar art-group) group)) 388 (nnfolder-possibly-change-folder (or (caar art-group) group))
387 (nnfolder-save-buffer) 389 (nnfolder-save-buffer)
388 (nnmail-cache-close)))) 390 (when nnmail-cache-accepted-message-ids
391 (nnmail-cache-close)))))
389 (nnmail-save-active nnfolder-group-alist nnfolder-active-file) 392 (nnmail-save-active nnfolder-group-alist nnfolder-active-file)
390 (unless result 393 (unless result
391 (nnheader-report 'nnfolder "Couldn't store article")) 394 (nnheader-report 'nnfolder "Couldn't store article"))
392 result)) 395 result))
393 396
642 (nnmail-activate 'nnfolder) 645 (nnmail-activate 'nnfolder)
643 ;; Read in the file. 646 ;; Read in the file.
644 (let ((delim (concat "^" message-unix-mail-delimiter)) 647 (let ((delim (concat "^" message-unix-mail-delimiter))
645 (marker (concat "\n" nnfolder-article-marker)) 648 (marker (concat "\n" nnfolder-article-marker))
646 (number "[0-9]+") 649 (number "[0-9]+")
647 (active (cadr (assoc group nnfolder-group-alist))) 650 (active (or (cadr (assoc group nnfolder-group-alist))
651 (cons 1 0)))
648 (scantime (assoc group nnfolder-scantime-alist)) 652 (scantime (assoc group nnfolder-scantime-alist))
649 (minid (lsh -1 -1)) 653 (minid (lsh -1 -1))
650 maxid start end newscantime 654 maxid start end newscantime
651 buffer-read-only) 655 buffer-read-only)
652 (buffer-disable-undo (current-buffer)) 656 (buffer-disable-undo (current-buffer))
675 ;; marker. Find the start of that message, and begin to search for 679 ;; marker. Find the start of that message, and begin to search for
676 ;; unmarked messages from there. 680 ;; unmarked messages from there.
677 (when (not (or nnfolder-distrust-mbox 681 (when (not (or nnfolder-distrust-mbox
678 (< maxid 2))) 682 (< maxid 2)))
679 (goto-char (point-max)) 683 (goto-char (point-max))
680 (if (not (re-search-backward marker nil t)) 684 (unless (re-search-backward marker nil t)
681 (goto-char (point-min)) 685 (goto-char (point-min))))
682 (when (not (nnmail-search-unix-mail-delim))
683 (goto-char (point-min)))))
684 686
685 ;; Keep track of the active number on our own, and insert it back 687 ;; Keep track of the active number on our own, and insert it back
686 ;; into the active list when we're done. Also, prime the pump to 688 ;; into the active list when we're done. Also, prime the pump to
687 ;; cut down on the number of searches we do. 689 ;; cut down on the number of searches we do.
688 (unless (nnmail-search-unix-mail-delim) 690 (unless (nnmail-search-unix-mail-delim)