See ChangeLog for the log entries
[gnus] / lisp / gnus-bcklg.el
index 3024481..a47a199 100644 (file)
@@ -1,7 +1,7 @@
 ;;; gnus-bcklg.el --- backlog functions for Gnus
-;; Copyright (C) 1996 Free Software Foundation, Inc.
+;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
 
-;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
 
 ;; This file is part of GNU Emacs.
@@ -25,7 +25,9 @@
 
 ;;; Code:
 
-(require 'gnus-load)
+(eval-when-compile (require 'cl))
+
+(require 'gnus)
 
 ;;;
 ;;; Buffering of read articles.
   "Return the backlog buffer."
   (or (get-buffer gnus-backlog-buffer)
       (save-excursion
-       (set-buffer (get-buffer-create gnus-backlog-buffer))
-       (buffer-disable-undo (current-buffer))
+       (set-buffer (gnus-get-buffer-create gnus-backlog-buffer))
+       (buffer-disable-undo)
        (setq buffer-read-only t)
-       (gnus-add-current-to-buffer-list)
        (get-buffer gnus-backlog-buffer))))
 
 (defun gnus-backlog-setup ()
   "Initialize backlog variables."
   (unless gnus-backlog-hashtb
-    (setq gnus-backlog-hashtb (make-vector 1023 0))))
+    (setq gnus-backlog-hashtb (gnus-make-hashtable 1024))))
 
 (gnus-add-shutdown 'gnus-backlog-shutdown 'gnus)
 
       (and (numberp gnus-keep-backlog)
           (>= (length gnus-backlog-articles) gnus-keep-backlog)
           (gnus-backlog-remove-oldest-article))
-      (setq gnus-backlog-articles (cons ident gnus-backlog-articles))
+      (push ident gnus-backlog-articles)
       ;; Insert the new article.
       (save-excursion
        (set-buffer (gnus-backlog-buffer))
        (let (buffer-read-only)
          (goto-char (point-max))
-         (or (bolp) (insert "\n"))
+         (unless (bolp)
+           (insert "\n"))
          (setq b (point))
          (insert-buffer-substring buffer)
          ;; Tag the beginning of the article with the ident.
-         (gnus-put-text-property b (1+ b) 'gnus-backlog ident))))))
+         (if (> (point-max) b)
+             (gnus-put-text-property b (1+ b) 'gnus-backlog ident)
+           (gnus-error 3 "Article %d is blank" number)))))))
 
 (defun gnus-backlog-remove-oldest-article ()
   (save-excursion
                     (1+ beg) 'gnus-backlog (current-buffer) (point-max)))
              (delete-region beg end)
              ;; Return success.
-             t)))))))
+             t))
+         (setq gnus-backlog-articles (delq ident gnus-backlog-articles)))))))
 
 (defun gnus-backlog-request-article (group number buffer)
   (when (numberp number)