Importing pgnus-0.55
[elisp/gnus.git-] / lisp / nneething.el
index 7da5466..61e8276 100644 (file)
   "Regexp saying what files to exclude from the group.
 If this variable is nil, no files will be excluded.")
 
+(defvoo nneething-include-files nil
+  "Regexp saying what files to include in the group.
+If this variable is non-nil, only files matching this regexp will be
+included.")
+
 \f
 
 ;;; Internal variables.
@@ -68,8 +73,6 @@ If this variable is nil, no files will be excluded.")
 
 \f
 
-(autoload 'gnus-encode-coding-string "gnus-ems")
-
 ;;; Interface functions.
 
 (nnoo-define-basics nneething)
@@ -213,6 +216,16 @@ If this variable is nil, no files will be excluded.")
                  (setq files (cdr files)))
              (setq prev f))
            (setq f (cdr f)))))
+      ;; Remove files not matching the inclusion regexp.
+      (when nneething-include-files
+       (let ((f files)
+             prev)
+         (while f
+           (if (not (string-match nneething-include-files (car f)))
+               (if prev (setcdr prev (cdr f))
+                 (setq files (cdr files)))
+             (setq prev f))
+           (setq f (cdr f)))))
       ;; Remove deleted files from the map.
       (let ((map nneething-map)
            prev)
@@ -243,7 +256,7 @@ If this variable is nil, no files will be excluded.")
        (setq files (cdr files)))
       (when (and touched
                 (not nneething-read-only))
-       (nnheader-temp-write map-file
+       (with-temp-file map-file
          (insert "(setq nneething-map '")
          (gnus-prin1 nneething-map)
          (insert ")\n(setq nneething-active '")
@@ -316,7 +329,7 @@ If this variable is nil, no files will be excluded.")
   (save-excursion
     (set-buffer (get-buffer-create nneething-work-buffer))
     (setq case-fold-search nil)
-    (buffer-disable-undo (current-buffer))
+    (buffer-disable-undo)
     (erase-buffer)
     (cond
      ((not (file-exists-p file))
@@ -344,10 +357,13 @@ If this variable is nil, no files will be excluded.")
 
 (defun nneething-file-name (article)
   "Return the file name of ARTICLE."
-  (concat (file-name-as-directory nneething-address)
-         (if (numberp article)
-             (cadr (assq article nneething-map))
-           article)))
+  (let ((dir (file-name-as-directory nneething-address))
+        fname)
+    (if (numberp article)
+       (if (setq fname (cadr (assq article nneething-map)))
+           (concat dir fname)
+         (make-temp-name (concat dir "nneething")))
+      (concat dir article))))
 
 (provide 'nneething)