Importing Pterodactyl Gnus v0.87.
[elisp/gnus.git-] / lisp / nnvirtual.el
index a6e92f5..19fa59f 100644 (file)
@@ -1,5 +1,5 @@
 ;;; nnvirtual.el --- virtual newsgroups access for Gnus
-;; Copyright (C) 1994,95,96,97,98 Free Software Foundation, Inc.
+;; Copyright (C) 1994,95,96,97,98,99 Free Software Foundation, Inc.
 
 ;; Author: David Moore <dmoore@ucsd.edu>
 ;;     Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -219,7 +219,9 @@ to virtual article number.")
          (if buffer
              (save-excursion
                (set-buffer buffer)
-               (gnus-request-article-this-buffer (cdr amap) cgroup))
+               ;; We bind this here to avoid double decoding.
+               (let ((gnus-article-decode-hook nil))
+                 (gnus-request-article-this-buffer (cdr amap) cgroup)))
            (gnus-request-article (cdr amap) cgroup))))))))
 
 
@@ -287,6 +289,7 @@ to virtual article number.")
         ;; The component group might be a virtual group.
         (nmark (gnus-request-update-mark cgroup (cdr nart) mark)))
     (when (and nart
+              (memq mark gnus-auto-expirable-marks)
               (= mark nmark)
               (gnus-group-auto-expirable-p cgroup))
       (setq mark gnus-expirable-mark)))
@@ -359,6 +362,15 @@ to virtual article number.")
                       (cdr gnus-message-group-art)))))
       (gnus-request-post (gnus-find-method-for-group group)))))
 
+
+(deffoo nnvirtual-request-expire-articles (articles group 
+                                                   &optional server force)
+  (nnvirtual-possibly-change-server server)
+  (setq nnvirtual-component-groups
+       (delete (nnvirtual-current-group) nnvirtual-component-groups))
+  (dolist (group nnvirtual-component-groups)
+    (gnus-group-expire-articles-1 group)))
+
 \f
 ;;; Internal functions.
 
@@ -385,7 +397,7 @@ to virtual article number.")
     (insert "\t"))
 
   ;; Remove any spaces at the beginning of the Xref field.
-  (while (= (char-after (1- (point))) ? )
+  (while (eq (char-after (1- (point))) ? )
     (forward-char -1)
     (delete-char 1))
 
@@ -417,7 +429,7 @@ to virtual article number.")
 
   ;; Ensure a trailing \t.
   (end-of-line)
-  (or (= (char-after (1- (point))) ?\t)
+  (or (eq (char-after (1- (point))) ?\t)
       (insert ?\t)))
 
 
@@ -452,7 +464,8 @@ If UPDATE-P is not nil, call gnus-group-update-group on the components."
       ;; hits C-g, you won't leave the component groups in a half-way state.
       (progn
        ;; move (un)read
-       (let ((gnus-newsgroup-active nil)) ;workaround guns-update-read-articles
+       ;; bind for workaround guns-update-read-articles
+       (let ((gnus-newsgroup-active nil))
          (while (setq entry (pop unreads))
            (gnus-update-read-articles (car entry) (cdr entry))))