Synch to No Gnus 200504221124.
[elisp/gnus.git-] / lisp / nnfolder.el
index 1102078..ddddba6 100644 (file)
@@ -1,5 +1,5 @@
 ;;; nnfolder.el --- mail folder access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Simon Josefsson <simon@josefsson.org> (adding MARKS)
@@ -31,7 +31,6 @@
 ;;; Code:
 
 (eval-when-compile (require 'cl))
-(eval-when-compile (require 'gnus-clfns))
 
 (require 'nnheader)
 (require 'message)
@@ -204,7 +203,7 @@ the group.  Then the marks file will be regenerated properly by Gnus.")
                        (goto-char (match-end 0))
                        (setq num (string-to-int
                                   (buffer-substring
-                                   (point) (gnus-point-at-eol))))
+                                   (point) (point-at-eol))))
                        (goto-char start)
                        (< num article)))
                      ;; Check that we are before an article with a
@@ -214,7 +213,7 @@ the group.  Then the marks file will be regenerated properly by Gnus.")
                      (progn
                        (setq num (string-to-int
                                   (buffer-substring
-                                   (point) (gnus-point-at-eol))))
+                                   (point) (point-at-eol))))
                        (> num article))
                      ;; Discard any article numbers before the one we're
                      ;; now looking at.
@@ -288,7 +287,7 @@ the group.  Then the marks file will be regenerated properly by Gnus.")
                  (if (search-forward (concat "\n" nnfolder-article-marker)
                                      nil t)
                      (string-to-int (buffer-substring
-                                     (point) (gnus-point-at-eol)))
+                                     (point) (point-at-eol)))
                    -1))))))))
 
 (deffoo nnfolder-request-group (group &optional server dont-check)
@@ -372,10 +371,11 @@ the group.  Then the marks file will be regenerated properly by Gnus.")
 (deffoo nnfolder-request-create-group (group &optional server args)
   (nnfolder-possibly-change-group nil server)
   (nnmail-activate 'nnfolder)
-  (when group
-    (unless (assoc group nnfolder-group-alist)
-      (push (list group (cons 1 0)) nnfolder-group-alist)
-      (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
+  (when (and group
+            (not (assoc group nnfolder-group-alist)))
+    (push (list group (cons 1 0)) nnfolder-group-alist)
+    (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
+    (save-current-buffer
       (nnfolder-read-folder group)))
   t)
 
@@ -468,8 +468,8 @@ the group.  Then the marks file will be regenerated properly by Gnus.")
       (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
       (gnus-sorted-difference articles (nreverse deleted-articles)))))
 
-(deffoo nnfolder-request-move-article (article group server
-                                              accept-form &optional last)
+(deffoo nnfolder-request-move-article (article group server accept-form 
+                                              &optional last move-is-internal)
   (save-excursion
     (let ((buf (get-buffer-create " *nnfolder move*"))
          result)
@@ -713,8 +713,7 @@ deleted.  Point is left where the deleted region was."
     (setq nnfolder-current-buffer nil
          nnfolder-current-group nil))
   ;; Change group.
-  (let ((file-name-coding-system nnmail-pathname-coding-system)
-       (pathname-coding-system nnmail-pathname-coding-system))
+  (let ((file-name-coding-system nnmail-pathname-coding-system))
     (when (and group
               (not (equal group nnfolder-current-group))
               (progn
@@ -875,7 +874,7 @@ deleted.  Point is left where the deleted region was."
         (buffer (set-buffer
                  (let ((nnheader-file-coding-system
                         nnfolder-file-coding-system))
-                   (nnheader-find-file-noselect file)))))
+                   (nnheader-find-file-noselect file t)))))
     (set-buffer-multibyte t) ;; Use multibyte buffer for future copying.
     (if (equal (cadr (assoc group nnfolder-scantime-alist))
               (nth 5 (file-attributes file)))
@@ -1030,9 +1029,7 @@ This command does not work if you use short group names."
       (when (not (message-mail-file-mbox-p file))
        (ignore-errors
          (delete-file file)))))
-  (let ((files (directory-files nnfolder-directory))
-       file)
-    (while (setq file (pop files))
+    (dolist (file (directory-files nnfolder-directory))
       (when (and (not (backup-file-name-p file))
                 (message-mail-file-mbox-p
                  (nnheader-concat nnfolder-directory file)))
@@ -1047,7 +1044,7 @@ This command does not work if you use short group names."
          (nnfolder-possibly-change-folder file)
          (nnfolder-possibly-change-group file)
          (nnfolder-close-group file))))
-    (nnheader-message 5 "")))
+    (nnheader-message 5 ""))
 
 (defun nnfolder-group-pathname (group)
   "Make file name for GROUP."
@@ -1072,10 +1069,9 @@ This command does not work if you use short group names."
   (when (buffer-modified-p)
     (run-hooks 'nnfolder-save-buffer-hook)
     (gnus-make-directory (file-name-directory (buffer-file-name)))
-    (let* ((coding-system-for-write
-           (or nnfolder-file-coding-system-for-write
-               nnfolder-file-coding-system))
-          (output-coding-system coding-system-for-write))
+    (let ((coding-system-for-write
+          (or nnfolder-file-coding-system-for-write
+              nnfolder-file-coding-system)))
       (save-buffer)))
   (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
     (nnfolder-save-nov)))
@@ -1178,7 +1174,7 @@ This command does not work if you use short group names."
       (let ((range (nth 0 action))
            (what  (nth 1 action))
            (marks (nth 2 action)))
-       (assert (or (eq what 'add) (eq what 'del)) t
+       (assert (or (eq what 'add) (eq what 'del)) nil
                "Unknown request-set-mark action: %s" what)
        (dolist (mark marks)
          (setq nnfolder-marks (gnus-update-alist-soft
@@ -1199,16 +1195,16 @@ This command does not work if you use short group names."
     (nnheader-message 8 "Updating marks for %s..." group)
     (nnfolder-open-marks group server)
     ;; Update info using `nnfolder-marks'.
-    (mapcar (lambda (pred)
-             (unless (memq (cdr pred) gnus-article-unpropagated-mark-lists)
-               (gnus-info-set-marks
-                info
-                (gnus-update-alist-soft
-                 (cdr pred)
-                 (cdr (assq (cdr pred) nnfolder-marks))
-                 (gnus-info-marks info))
-                t)))
-           gnus-article-mark-lists)
+    (mapc (lambda (pred)
+           (unless (memq (cdr pred) gnus-article-unpropagated-mark-lists)
+             (gnus-info-set-marks
+              info
+              (gnus-update-alist-soft
+               (cdr pred)
+               (cdr (assq (cdr pred) nnfolder-marks))
+               (gnus-info-marks info))
+              t)))
+         gnus-article-mark-lists)
     (let ((seen (cdr (assq 'read nnfolder-marks))))
       (gnus-info-set-read info
                          (if (and (integerp (car seen))
@@ -1244,7 +1240,7 @@ This command does not work if you use short group names."
                        nnfolder-marks-modtime))
       (error (or (gnus-yes-or-no-p
                  (format "Could not write to %s (%s).  Continue? " file err))
-                (error "Cannot write to %s (%s)" err))))))
+                (error "Cannot write to %s (%s)" file err))))))
 
 (defun nnfolder-open-marks (group server)
   (let ((file (nnfolder-group-marks-pathname group)))