* nndraft.el (nndraft-generate-headers): New function.
[gnus] / lisp / nnkiboze.el
index d961f84..110cc7c 100644 (file)
@@ -1,5 +1,7 @@
 ;;; nnkiboze.el --- select virtual news access for Gnus
 ;;; nnkiboze.el --- select virtual news access for Gnus
-;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002
+;;     Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
       (setq num (string-to-int (match-string 2 xref))
            group (match-string 1 xref))
       (or (with-current-buffer buffer
       (setq num (string-to-int (match-string 2 xref))
            group (match-string 1 xref))
       (or (with-current-buffer buffer
-           (gnus-cache-request-article num group))
+           (or (gnus-cache-request-article num group)
+               (gnus-agent-request-article num group)))
          (gnus-request-article num group buffer)))))
 
 (deffoo nnkiboze-request-scan (&optional group server)
          (gnus-request-article num group buffer)))))
 
 (deffoo nnkiboze-request-scan (&optional group server)
+  (nnkiboze-possibly-change-group group)
   (nnkiboze-generate-group (concat "nnkiboze:" group)))
 
 (deffoo nnkiboze-request-group (group &optional server dont-check)
   (nnkiboze-generate-group (concat "nnkiboze:" group)))
 
 (deffoo nnkiboze-request-group (group &optional server dont-check)
             nnkiboze-remove-read-articles)
     (let ((coding-system-for-write nnkiboze-file-coding-system))
       (with-temp-file (nnkiboze-nov-file-name)
             nnkiboze-remove-read-articles)
     (let ((coding-system-for-write nnkiboze-file-coding-system))
       (with-temp-file (nnkiboze-nov-file-name)
-       (let ((cur (current-buffer)) 
+       (let ((cur (current-buffer))
              (nnheader-file-coding-system nnkiboze-file-coding-system))
          (nnheader-insert-file-contents (nnkiboze-nov-file-name))
          (goto-char (point-min))
              (nnheader-file-coding-system nnkiboze-file-coding-system))
          (nnheader-insert-file-contents (nnkiboze-nov-file-name))
          (goto-char (point-min))
@@ -225,11 +229,11 @@ Finds out what articles are to be part of the nnkiboze groups."
 (defun nnkiboze-generate-group (group &optional inhibit-list-groups)
   (let* ((info (nth 2 (gnus-gethash group gnus-newsrc-hashtb)))
         (newsrc-file (concat nnkiboze-directory
 (defun nnkiboze-generate-group (group &optional inhibit-list-groups)
   (let* ((info (nth 2 (gnus-gethash group gnus-newsrc-hashtb)))
         (newsrc-file (concat nnkiboze-directory
-                              (nnheader-translate-file-chars
-                               (concat group ".newsrc"))))
+                             (nnheader-translate-file-chars
+                              (concat group ".newsrc"))))
         (nov-file (concat nnkiboze-directory
         (nov-file (concat nnkiboze-directory
-                           (nnheader-translate-file-chars
-                            (concat group ".nov"))))
+                          (nnheader-translate-file-chars
+                           (concat group ".nov"))))
         method nnkiboze-newsrc gname newsrc active
         ginfo lowest glevel orig-info nov-buffer
         ;; Bind various things to nil to make group entry faster.
         method nnkiboze-newsrc gname newsrc active
         ginfo lowest glevel orig-info nov-buffer
         ;; Bind various things to nil to make group entry faster.
@@ -240,112 +244,116 @@ Finds out what articles are to be part of the nnkiboze groups."
         (gnus-score-use-all-scores nil)
         (gnus-use-scoring t)
         (gnus-verbose (min gnus-verbose 3))
         (gnus-score-use-all-scores nil)
         (gnus-use-scoring t)
         (gnus-verbose (min gnus-verbose 3))
-        gnus-select-group-hook gnus-summary-prepare-hook
+        gnus-select-group-hook gnus-summary-prepare-hook
         gnus-thread-sort-functions gnus-show-threads
         gnus-visual gnus-suppress-duplicates num-unread)
     (unless info
       (error "No such group: %s" group))
     ;; Load the kiboze newsrc file for this group.
         gnus-thread-sort-functions gnus-show-threads
         gnus-visual gnus-suppress-duplicates num-unread)
     (unless info
       (error "No such group: %s" group))
     ;; Load the kiboze newsrc file for this group.
-    (when (file-exists-p newsrc-file)
-      (load newsrc-file))
-    (let ((coding-system-for-write nnkiboze-file-coding-system))
-      (with-temp-file nov-file
-       (when (file-exists-p nov-file)
-         (insert-file-contents nov-file))
-       (setq nov-buffer (current-buffer))
-       ;; Go through the active hashtb and add new all groups that match the
-       ;; kiboze regexp.
-       (mapatoms
-        (lambda (group)
-          (and (string-match nnkiboze-regexp
-                             (setq gname (symbol-name group))) ; Match
-               (not (assoc gname nnkiboze-newsrc)) ; It isn't registered
-               (numberp (car (symbol-value group))) ; It is active
-               (or (> nnkiboze-level 7)
-                   (and (setq glevel (nth 1 (nth 2 (gnus-gethash
-                                                    gname gnus-newsrc-hashtb))))
-                        (>= nnkiboze-level glevel)))
-               (not (string-match "^nnkiboze:" gname)) ; Exclude kibozes
-               (push (cons gname (1- (car (symbol-value group))))
-                     nnkiboze-newsrc)))
-        gnus-active-hashtb)
-       ;; `newsrc' is set to the list of groups that possibly are
-       ;; component groups to this kiboze group.  This list has elements
-       ;; on the form `(GROUP . NUMBER)', where NUMBER is the highest
-       ;; number that has been kibozed in GROUP in this kiboze group.
-       (setq newsrc nnkiboze-newsrc)
-       (while newsrc
-         (if (not (setq active (gnus-gethash
-                                (caar newsrc) gnus-active-hashtb)))
-             ;; This group isn't active after all, so we remove it from
-             ;; the list of component groups.
-             (setq nnkiboze-newsrc (delq (car newsrc) nnkiboze-newsrc))
-           (setq lowest (cdar news