diff lisp/gnus/nnml.el @ 110468:8ceac426a2d7

merge trunk
author Kenichi Handa <handa@m17n.org>
date Tue, 21 Sep 2010 20:45:10 +0900
parents cd99c4421df9
children b7b7e970d807
line wrap: on
line diff
--- a/lisp/gnus/nnml.el	Fri Sep 17 14:07:47 2010 +0900
+++ b/lisp/gnus/nnml.el	Tue Sep 21 20:45:10 2010 +0900
@@ -160,8 +160,7 @@
 
 (deffoo nnml-retrieve-headers (sequence &optional group server fetch-old)
   (when (nnml-possibly-change-directory group server)
-    (save-excursion
-      (set-buffer nntp-server-buffer)
+    (with-current-buffer nntp-server-buffer
       (erase-buffer)
       (let* ((file nil)
 	     (number (length sequence))
@@ -255,7 +254,7 @@
       (cons (if group-num (car group-num) group)
 	    (string-to-number (file-name-nondirectory path)))))))
 
-(deffoo nnml-request-group (group &optional server dont-check)
+(deffoo nnml-request-group (group &optional server dont-check info)
   (let ((file-name-coding-system nnmail-pathname-coding-system)
 	(decoded (nnml-decoded-group-name group server)))
     (cond
@@ -405,8 +404,7 @@
      (let (nnml-current-directory
 	   nnml-current-group
 	   nnml-article-file-alist)
-       (save-excursion
-	 (set-buffer buf)
+       (with-current-buffer buf
 	 (insert-buffer-substring nntp-server-buffer)
 	 (setq result (eval accept-form))
 	 (kill-buffer (current-buffer))
@@ -462,8 +460,7 @@
 
 (deffoo nnml-request-replace-article (article group buffer)
   (nnml-possibly-change-directory group)
-  (save-excursion
-    (set-buffer buffer)
+  (with-current-buffer buffer
     (nnml-possibly-create-directory group)
     (let ((chars (nnmail-insert-lines))
 	  (art (concat (int-to-string article) "\t"))
@@ -478,8 +475,7 @@
 	      t)
 	(setq headers (nnml-parse-head chars article))
 	;; Replace the NOV line in the NOV file.
-	(save-excursion
-	  (set-buffer (nnml-open-nov group))
+	(with-current-buffer (nnml-open-nov group)
 	  (goto-char (point-min))
 	  (if (or (looking-at art)
 		  (search-forward (concat "\n" art) nil t))
@@ -614,8 +610,7 @@
 
 ;; Find an article number in the current group given the Message-ID.
 (defun nnml-find-group-number (id server)
-  (save-excursion
-    (set-buffer (get-buffer-create " *nnml id*"))
+  (with-current-buffer (get-buffer-create " *nnml id*")
     (let ((alist nnml-group-alist)
 	  number)
       ;; We want to look through all .overview files, but we want to
@@ -657,8 +652,7 @@
       nil
     (let ((nov (expand-file-name nnml-nov-file-name nnml-current-directory)))
       (when (file-exists-p nov)
-	(save-excursion
-	  (set-buffer nntp-server-buffer)
+	(with-current-buffer nntp-server-buffer
 	  (erase-buffer)
 	  (nnheader-insert-file-contents nov)
 	  (if (and fetch-old
@@ -804,16 +798,14 @@
 
 (defun nnml-add-incremental-nov (group article headers)
   "Add a nov line for the GROUP nov headers, incrementally."
-  (save-excursion
-    (set-buffer (nnml-open-incremental-nov group))
+  (with-current-buffer (nnml-open-incremental-nov group)
     (goto-char (point-max))
     (mail-header-set-number headers article)
     (nnheader-insert-nov headers)))
 
 (defun nnml-add-nov (group article headers)
   "Add a nov line for the GROUP base."
-  (save-excursion
-    (set-buffer (nnml-open-nov group))
+  (with-current-buffer (nnml-open-nov group)
     (goto-char (point-max))
     (mail-header-set-number headers article)
     (nnheader-insert-nov headers)))
@@ -844,8 +836,7 @@
 					      "")
 					    decoded)))
 	 (file-name-coding-system nnmail-pathname-coding-system))
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (set (make-local-variable 'nnml-nov-buffer-file-name)
 	   (nnmail-group-pathname decoded nnml-directory nnml-nov-file-name))
       (erase-buffer)
@@ -887,6 +878,7 @@
   ;; Save the active file.
   (nnmail-save-active nnml-group-alist nnml-active-file))
 
+(defvar nnml-files)
 (defun nnml-generate-nov-databases-directory (dir &optional seen no-active)
   "Regenerate the NOV database in DIR.
 
@@ -906,9 +898,9 @@
 		   (file-directory-p dir))
 	  (nnml-generate-nov-databases-directory dir seen)))
       ;; Do this directory.
-      (let ((files (sort (nnheader-article-to-file-alist dir)
+      (let ((nnml-files (sort (nnheader-article-to-file-alist dir)
 			 'car-less-than-car)))
-	(if (not files)
+	(if (not nnml-files)
 	    (let* ((group (nnheader-file-to-group
 			   (directory-file-name dir) nnml-directory))
 		   (info (cadr (assoc group nnml-group-alist))))
@@ -916,11 +908,10 @@
 		(setcar info (1+ (cdr info)))))
 	  (funcall nnml-generate-active-function dir)
 	  ;; Generate the nov file.
-	  (nnml-generate-nov-file dir files)
+	  (nnml-generate-nov-file dir nnml-files)
 	  (unless no-active
 	    (nnmail-save-active nnml-group-alist nnml-active-file)))))))
 
-(defvar files)
 (defun nnml-generate-active-info (dir)
   ;; Update the active info for this group.
   (let ((group (directory-file-name dir))
@@ -931,9 +922,9 @@
 	  last (or (caadr entry) 0)
 	  nnml-group-alist (delq entry nnml-group-alist))
     (push (list group
-		(cons (or (caar files) (1+ last))
+		(cons (or (caar nnml-files) (1+ last))
 		      (max last
-			   (or (caar (last files))
+			   (or (caar (last nnml-files))
 			       0))))
 	  nnml-group-alist)))
 
@@ -942,17 +933,16 @@
 	 (nov (concat dir nnml-nov-file-name))
 	 (nov-buffer (get-buffer-create " *nov*"))
 	 chars file headers)
-    (save-excursion
+    (with-current-buffer nov-buffer
       ;; Init the nov buffer.
-      (set-buffer nov-buffer)
       (buffer-disable-undo)
       (erase-buffer)
       (set-buffer nntp-server-buffer)
       ;; Delete the old NOV file.
       (when (file-exists-p nov)
 	(funcall nnmail-delete-file-function nov))
-      (while files
-	(unless (file-directory-p (setq file (concat dir (cdar files))))
+      (dolist (file files)
+	(unless (file-directory-p (setq file (concat dir (cdr file))))
 	  (erase-buffer)
 	  (nnheader-insert-file-contents file)
 	  (narrow-to-region
@@ -963,21 +953,17 @@
 	     (max (point-min) (1- (point)))))
 	  (unless (zerop (buffer-size))
 	    (goto-char (point-min))
-	    (setq headers (nnml-parse-head chars (caar files)))
-	    (save-excursion
-	      (set-buffer nov-buffer)
+	    (setq headers (nnml-parse-head chars (car file)))
+	    (with-current-buffer nov-buffer
 	      (goto-char (point-max))
 	      (nnheader-insert-nov headers)))
-	  (widen))
-	(setq files (cdr files)))
-      (save-excursion
-	(set-buffer nov-buffer)
+	  (widen)))
+      (with-current-buffer nov-buffer
 	(nnmail-write-region (point-min) (point-max) nov nil 'nomesg)
 	(kill-buffer (current-buffer))))))
 
 (defun nnml-nov-delete-article (group article)
-  (save-excursion
-    (set-buffer (nnml-open-nov group))
+  (with-current-buffer (nnml-open-nov group)
     (when (nnheader-find-nov-line article)
       (delete-region (point) (progn (forward-line 1) (point)))
       (when (bobp)
@@ -1008,11 +994,9 @@
     ;; build list from .overview if available
     ;; We would use nnml-open-nov, except that nnml-nov-buffer-alist is
     ;; defvoo'd, and we might get called when it hasn't been swapped in.
-    (save-excursion
+    (with-current-buffer (nnml-get-nov-buffer nnml-current-group)
       (let ((list nil)
-	    art
-	    (buffer (nnml-get-nov-buffer nnml-current-group)))
-	(set-buffer buffer)
+	    art)
 	(goto-char (point-min))
 	(while (not (eobp))
 	  (setq art (read (current-buffer)))
@@ -1031,11 +1015,9 @@
 				  nnml-current-directory))))
       (nnheader-article-to-file-alist nnml-current-directory)
     ;; build list from .overview if available
-    (save-excursion
+    (with-current-buffer (nnml-get-nov-buffer nnml-current-group)
       (let ((alist nil)
-	    (buffer (nnml-get-nov-buffer nnml-current-group))
 	    art)
-	(set-buffer buffer)
 	(goto-char (point-min))
 	(while (not (eobp))
 	  (setq art (read (current-buffer)))
@@ -1260,8 +1242,7 @@
 		  (gnus-info-set-marks info newmarks))
 		;; 3/ Update the NOV entry for this article:
 		(unless nnml-nov-is-evil
-		  (save-excursion
-		    (set-buffer (nnml-open-nov group))
+		  (with-current-buffer (nnml-open-nov group)
 		    (when (nnheader-find-nov-line old-number)
 		      ;; Replace the article number:
 		      (looking-at old-number-string)