*** empty log message ***
[gnus] / lisp / nnml.el
index da19d91..f116fab 100644 (file)
 (defvoo nnml-nov-is-evil nil
   "If non-nil, Gnus will never generate and use nov databases for mail groups.
 Using nov databases will speed up header fetching considerably.
-This variable shouldn't be flipped much. If you have, for some reason,
+This variable shouldn't be flipped much.  If you have, for some reason,
 set this to t, and want to set it to nil again, you should always run
-the `nnml-generate-nov-databases' command. The function will go
+the `nnml-generate-nov-databases' command.  The function will go
 through all nnml directories and generate nov databases for them
-all. This may very well take some time.")
+all.  This may very well take some time.")
 
 (defvoo nnml-prepare-save-mail-hook nil
   "Hook run narrowed to an article before saving.")
@@ -112,19 +112,18 @@ all. This may very well take some time.")
                  (concat nnml-current-directory 
                          (or (cdr (assq article nnml-article-file-alist))
                              "")))
-           (if (and (file-exists-p file)
-                    (not (file-directory-p file)))
-               (progn
-                 (insert (format "221 %d Article retrieved.\n" article))
-                 (setq beg (point))
-                 (nnheader-insert-head file)
-                 (goto-char beg)
-                 (if (search-forward "\n\n" nil t)
-                     (forward-char -1)
-                   (goto-char (point-max))
-                   (insert "\n\n"))
-                 (insert ".\n")
-                 (delete-region (point) (point-max))))
+           (when (and (file-exists-p file)
+                      (not (file-directory-p file)))
+             (insert (format "221 %d Article retrieved.\n" article))
+             (setq beg (point))
+             (nnheader-insert-head file)
+             (goto-char beg)
+             (if (search-forward "\n\n" nil t)
+                 (forward-char -1)
+               (goto-char (point-max))
+               (insert "\n\n"))
+             (insert ".\n")
+             (delete-region (point) (point-max)))
            (setq sequence (cdr sequence))
            (setq count (1+ count))
            (and (numberp nnmail-large-newsgroup)
@@ -145,7 +144,7 @@ all. This may very well take some time.")
   (when (not (file-exists-p nnml-directory))
     (condition-case ()
        (make-directory nnml-directory t)
-      (error t)))
+      (error)))
   (cond 
    ((not (file-exists-p nnml-directory))
     (nnml-close-server)
@@ -164,13 +163,13 @@ all. This may very well take some time.")
         path gpath group-num)
     (if (stringp id)
        (when (and (setq group-num (nnml-find-group-number id))
-                  (setq file (cdr
-                              (assq (cdr group-num) 
-                                    (nnheader-article-to-file-alist
-                                     (setq gpath
-                                           (nnmail-group-pathname
-                                            (car group-num) 
-                                            nnml-directory)))))))
+                  (cdr
+                   (assq (cdr group-num)
+                         (nnheader-article-to-file-alist
+                          (setq gpath
+                                (nnmail-group-pathname
+                                 (car group-num)
+                                 nnml-directory))))))
          (setq path (concat gpath (int-to-string (cdr group-num)))))
       (setq path (nnml-article-to-file id)))
     (cond 
@@ -200,6 +199,7 @@ all. This may very well take some time.")
     (nnheader-report 'nnml "Group %s selected" group)
     t)
    (t
+    (nnheader-re-read-dir nnml-current-directory)
     (nnmail-activate 'nnml)
     (let ((active (nth 1 (assoc group nnml-group-alist))))
       (if (not active)
@@ -217,27 +217,26 @@ all. This may very well take some time.")
   (setq nnml-article-file-alist nil)
   t)
 
-(deffoo nnml-request-create-group (group &optional server
+(deffoo nnml-request-create-group (group &optional server args)
   (nnmail-activate 'nnml)
-  (or (assoc group nnml-group-alist)
-      (let (active)
-       (setq nnml-group-alist (cons (list group (setq active (cons 1 0)))
-                                    nnml-group-alist))
-       (nnml-possibly-create-directory group)
-       (nnml-possibly-change-directory group server)
-       (let ((articles 
-              (nnheader-directory-articles nnml-current-directory )))
-         (and articles
-              (progn
-                (setcar active (apply 'min articles))
-                (setcdr active (apply 'max articles)))))
-       (nnmail-save-active nnml-group-alist nnml-active-file)))
+  (unless (assoc group nnml-group-alist)
+    (let (active)
+      (push (list group (setq active (cons 1 0)))
+           nnml-group-alist)
+      (nnml-possibly-create-directory group)
+      (nnml-possibly-change-directory group server)
+      (let ((articles (nnheader-directory-articles nnml-current-directory)))
+       (when articles
+         (setcar active (apply 'min articles))
+         (setcdr active (apply 'max articles))))
+      (nnmail-save-active nnml-group-alist nnml-active-file)))
   t)
 
 (deffoo nnml-request-list (&optional server)
   (save-excursion
     (nnmail-find-file nnml-active-file)
-    (setq nnml-group-alist (nnmail-get-active))))
+    (setq nnml-group-alist (nnmail-get-active))
+    t))
 
 (deffoo nnml-request-newgroups (date &optional server)
   (nnml-request-list server))
@@ -348,8 +347,8 @@ all. This may very well take some time.")
                (progn
                  (nnmail-write-region 
                   (point-min) (point-max)
-                  (setq file (concat nnml-current-directory
-                                     (int-to-string article)))
+                  (concat nnml-current-directory
+                          (int-to-string article))
                   nil (if (nnheader-be-verbose 5) nil 'nomesg))
                  t)
              (error nil))
@@ -364,7 +363,7 @@ all. This may very well take some time.")
              (delete-region (progn (beginning-of-line) (point))
                             (progn (forward-line 1) (point)))
            ;; The line isn't here, so we have to find out where
-           ;; we should insert it. (This situation should never
+           ;; we should insert it.  (This situation should never
            ;; occur, but one likes to make sure...)
            (while (and (looking-at "[0-9]+\t")
                        (< (string-to-int 
@@ -433,7 +432,8 @@ all. This may very well take some time.")
          (error nil)))
       ;; That went ok, so we change the internal structures.
       (let ((entry (assoc group nnml-group-alist)))
-       (and entry (setcar entry new-name))
+       (when entry
+         (setcar entry new-name))
        (setq nnml-current-directory nil
              nnml-current-group nil)
        ;; Save the new group alist.
@@ -468,10 +468,10 @@ all. This may very well take some time.")
   (let (file path)
     (when (setq file (cdr (assq article nnml-article-file-alist)))
       (setq path (concat nnml-current-directory file))
-      (and (file-writable-p path)
-          (or (not nnmail-keep-last-article)
-              (not (eq (cdr (nth 1 (assoc group nnml-group-alist))) 
-                       article)))))))
+      (when (file-writable-p path)
+       (or (not nnmail-keep-last-article)
+           (not (eq (cdr (nth 1 (assoc group nnml-group-alist)))
+                    article)))))))
 
 ;; Find an article number in the current group given the Message-ID. 
 (defun nnml-find-group-number (id)
@@ -502,19 +502,18 @@ all. This may very well take some time.")
        number found)
     (when (file-exists-p nov)
       (insert-file-contents nov)
-      (while (and (not found) 
+      (while (and (not found)
                  (search-forward id nil t)) ; We find the ID.
        ;; And the id is in the fourth field.
-       (if (search-backward 
-            "\t" (save-excursion (beginning-of-line) (point)) t 4)
-           (progn
-             (beginning-of-line)
-             (setq found t)
-             ;; We return the article number.
-             (setq number
-                   (condition-case ()
-                       (read (current-buffer))
-                     (error nil))))))
+       (when (search-backward 
+              "\t" (save-excursion (beginning-of-line) (point)) t 4)
+         (beginning-of-line)
+         (setq found t)
+         ;; We return the article number.
+         (setq number
+               (condition-case ()
+                   (read (current-buffer))
+                 (error nil)))))
       number)))
 
 (defun nnml-retrieve-headers-with-nov (articles &optional fetch-old)
@@ -532,17 +531,19 @@ all. This may very well take some time.")
          (if (and fetch-old
                   (not (numberp fetch-old)))
              t                         ; Don't remove anything.
-           (if fetch-old
-               (setq first (max 1 (- first fetch-old))))
+           (when fetch-old
+             (setq first (max 1 (- first fetch-old))))
            (goto-char (point-min))
            (while (and (not (eobp)) (> first (read (current-buffer))))
              (forward-line 1))
            (beginning-of-line)
-           (if (not (eobp)) (delete-region 1 (point)))
+           (when (not (eobp))
+             (delete-region 1 (point)))
            (while (and (not (eobp)) (>= last (read (current-buffer))))
              (forward-line 1))
            (beginning-of-line)
-           (if (not (eobp)) (delete-region (point) (point-max)))
+           (when (not (eobp))
+             (delete-region (point) (point-max)))
            t))))))
 
 (defun nnml-possibly-change-directory (group &optional server)
@@ -561,7 +562,7 @@ all. This may very well take some time.")
   (let (dir dirs)
     (setq dir (nnmail-group-pathname group nnml-directory))
     (while (not (file-directory-p dir))
-      (setq dirs (cons dir dirs))
+      (push dir dirs)
       (setq dir (file-name-directory (directory-file-name dir))))
     (while dirs
       (make-directory (directory-file-name (car dirs)))
@@ -595,7 +596,7 @@ all. This may very well take some time.")
                                 (if (nnheader-be-verbose 5) nil 'nomesg))
            (setq first file)))
        (setq ga (cdr ga))))
-    ;; Generate a nov line for this article. We generate the nov
+    ;; Generate a nov line for this article.  We generate the nov
     ;; line after saving, because nov generation destroys the
     ;; header. 
     (setq headers (nnml-parse-head chars))
@@ -626,7 +627,7 @@ all. This may very well take some time.")
                (cons (caar nnml-article-file-alist)
                      (caar (last nnml-article-file-alist)))
              (cons 1 0)))
-      (setq nnml-group-alist (cons (list group active) nnml-group-alist)))
+      (push (list group active) nnml-group-alist))
     (setcdr active (1+ (cdr active)))
     (while (file-exists-p
            (concat (nnmail-group-pathname group nnml-directory)
@@ -672,8 +673,7 @@ all. This may very well take some time.")
        (save-excursion
          (set-buffer buffer)
          (buffer-disable-undo (current-buffer)))
-       (setq nnml-nov-buffer-alist 
-             (cons (cons group buffer) nnml-nov-buffer-alist))
+       (push (cons group buffer) nnml-nov-buffer-alist)
        buffer)))
 
 (defun nnml-save-nov ()
@@ -780,8 +780,8 @@ all. This may very well take some time.")
   (save-excursion
     (set-buffer (nnml-open-nov group))
     (goto-char (point-min))
-    (if (re-search-forward (concat "^" (int-to-string article) "\t") nil t)
-       (delete-region (match-beginning 0) (progn (forward-line 1) (point))))
+    (when (re-search-forward (concat "^" (int-to-string article) "\t") nil t)
+      (delete-region (match-beginning 0) (progn (forward-line 1) (point))))
     t))
 
 (provide 'nnml)