2006-04-30 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
[gnus] / lisp / nnoo.el
index 7339911..1221830 100644 (file)
@@ -1,7 +1,7 @@
 ;;; nnoo.el --- OO Gnus Backends
 
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
-;;     Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+;;   2004, 2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
 
 (defmacro nnoo-declare (backend &rest parents)
   `(eval-and-compile
-     (push (list ',backend
-                (mapcar (lambda (p) (list p)) ',parents)
-                nil nil)
-          nnoo-definition-alist)
-     (push (list ',backend "*internal-non-initialized-backend*")
-          nnoo-state-alist)))
+     (if (assq ',backend nnoo-definition-alist)
+        (setcar (cdr (assq ',backend nnoo-definition-alist))
+                (mapcar 'list ',parents))
+       (push (list ',backend
+                  (mapcar 'list ',parents)
+                  nil nil)
+            nnoo-definition-alist))
+     (unless (assq ',backend nnoo-state-alist)
+       (push (list ',backend "*internal-non-initialized-backend*")
+            nnoo-state-alist))))
 (put 'nnoo-declare 'lisp-indent-function 1)
 
 (defun nnoo-parents (backend)
        (setcdr bstate (delq defs (cdr bstate)))
        (pop defs)
        (while defs
-         (set (car (pop defs)) nil))))) 
+         (set (car (pop defs)) nil)))))
   t)
 
 (defun nnoo-close (backend)