X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fnnoo.el;h=384599bce775e41cd7996c3493180aaa9b6672dd;hb=f702159a4d7cb8471a17884108880aa8d7961728;hp=28f9f98b8c95ac7a952814ae4b2bf999f293cd49;hpb=ca7b9508754fa00b3be36074d8a1fb791374acec;p=elisp%2Fgnus.git- diff --git a/lisp/nnoo.el b/lisp/nnoo.el index 28f9f98..384599b 100644 --- a/lisp/nnoo.el +++ b/lisp/nnoo.el @@ -1,7 +1,9 @@ ;;; nnoo.el --- OO Gnus Backends -;; Copyright (C) 1996,97 Free Software Foundation, Inc. -;; Author: Lars Magne Ingebrigtsen +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +;; Free Software Foundation, Inc. + +;; Author: Lars Magne Ingebrigtsen ;; Keywords: news ;; This file is part of GNU Emacs. @@ -25,8 +27,8 @@ ;;; Code: -(require 'nnheader) (eval-when-compile (require 'cl)) +(require 'nnheader) (defvar nnoo-definition-alist nil) (defvar nnoo-state-alist nil) @@ -36,7 +38,7 @@ "The same as `defvar', only takes list of variables to MAP to." `(prog1 ,(if doc - `(defvar ,var ,init ,doc) + `(defvar ,var ,init ,(concat doc "\n\nThis is a Gnus server variable. See Info node `(gnus)Select Methods'.")) `(defvar ,var ,init)) (nnoo-define ',var ',map))) (put 'defvoo 'lisp-indent-function 2) @@ -105,11 +107,11 @@ (cdr (assq pbackend (nnoo-parents backend)))) (prog1 (apply function args) - ;; Copy the changed variables back into the child. - (let ((vars (cdr (assq pbackend (nnoo-parents backend))))) - (while vars - (set (cadar vars) (symbol-value (caar vars))) - (setq vars (cdr vars))))))) + ;; Copy the changed variables back into the child. + (let ((vars (cdr (assq pbackend (nnoo-parents backend))))) + (while vars + (set (cadar vars) (symbol-value (caar vars))) + (setq vars (cdr vars))))))) (defun nnoo-execute (backend function &rest args) "Execute FUNCTION on behalf of BACKEND." @@ -199,8 +201,8 @@ (while (setq def (pop defs)) (unless (assq (car def) bvariables) (nconc bvariables - (list (cons (car def) (and (boundp (car def)) - (symbol-value (car def))))))) + (list (cons (car def) (and (boundp (car def)) + (symbol-value (car def))))))) (if (equal server "*internal-non-initialized-backend*") (set (car def) (symbol-value (cadr def))) (set (car def) (cadr def))))) @@ -252,7 +254,7 @@ (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) @@ -302,6 +304,20 @@ All functions will return nil and report an error." (&rest args) (nnheader-report ',backend ,(format "%s-%s not implemented" backend function)))))))) + +(defun nnoo-set (server &rest args) + (let ((parents (nnoo-parents (car server))) + (nnoo-parent-backend (car server))) + (while parents + (nnoo-change-server (caar parents) + (cadr server) + (cdar parents)) + (pop parents))) + (nnoo-change-server (car server) + (cadr server) (cddr server)) + (while args + (set (pop args) (pop args)))) + (provide 'nnoo) -;;; nnoo.el ends here. +;;; nnoo.el ends here