Mercurial > emacs
comparison lisp/gnus/nnoo.el @ 89971:cce1c0ee76ee
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-36
Merge from emacs--cvs-trunk--0, emacs--gnus--5.10, gnus--rel--5.10
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Merge from emacs--gnus--5.10, gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-524
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-534
Update from CVS
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--base-0
tag of miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-464
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--patch-1
Import from CVS branch gnus-5_10-branch
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--patch-2
Merge from lorentey@elte.hu--2004/emacs--multi-tty--0, emacs--cvs-trunk--0
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--patch-3
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--patch-4
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-18
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-19
Remove autoconf-generated files from archive
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-20
Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Thu, 09 Sep 2004 09:36:36 +0000 |
parents | 561b856c5b1f 55fd4f77387a |
children | f9a65d7ebd29 |
comparison
equal
deleted
inserted
replaced
89970:a849e5779b8c | 89971:cce1c0ee76ee |
---|---|
1 ;;; nnoo.el --- OO Gnus Backends | 1 ;;; nnoo.el --- OO Gnus Backends |
2 | 2 |
3 ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 | 3 ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 |
4 ;; Free Software Foundation, Inc. | 4 ;; Free Software Foundation, Inc. |
5 | 5 |
6 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> | 6 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> |
7 ;; Keywords: news | 7 ;; Keywords: news |
8 | 8 |
36 | 36 |
37 (defmacro defvoo (var init &optional doc &rest map) | 37 (defmacro defvoo (var init &optional doc &rest map) |
38 "The same as `defvar', only takes list of variables to MAP to." | 38 "The same as `defvar', only takes list of variables to MAP to." |
39 `(prog1 | 39 `(prog1 |
40 ,(if doc | 40 ,(if doc |
41 `(defvar ,var ,init ,doc) | 41 `(defvar ,var ,init ,(concat doc "\n\nThis is a Gnus server variable. See Info node `(gnus)Select Methods'.")) |
42 `(defvar ,var ,init)) | 42 `(defvar ,var ,init)) |
43 (nnoo-define ',var ',map))) | 43 (nnoo-define ',var ',map))) |
44 (put 'defvoo 'lisp-indent-function 2) | 44 (put 'defvoo 'lisp-indent-function 2) |
45 (put 'defvoo 'edebug-form-spec '(var init &optional doc &rest map)) | 45 (put 'defvoo 'edebug-form-spec '(var init &optional doc &rest map)) |
46 | 46 |
199 (setcar bstate server) | 199 (setcar bstate server) |
200 (unless (cdr (assoc server (cddr bstate))) | 200 (unless (cdr (assoc server (cddr bstate))) |
201 (while (setq def (pop defs)) | 201 (while (setq def (pop defs)) |
202 (unless (assq (car def) bvariables) | 202 (unless (assq (car def) bvariables) |
203 (nconc bvariables | 203 (nconc bvariables |
204 (list (cons (car def) (and (boundp (car def)) | 204 (list (cons (car def) (and (boundp (car def)) |
205 (symbol-value (car def))))))) | 205 (symbol-value (car def))))))) |
206 (if (equal server "*internal-non-initialized-backend*") | 206 (if (equal server "*internal-non-initialized-backend*") |
207 (set (car def) (symbol-value (cadr def))) | 207 (set (car def) (symbol-value (cadr def))) |
208 (set (car def) (cadr def))))) | 208 (set (car def) (cadr def))))) |
209 (while parents | 209 (while parents |
210 (nnoo-change-server | 210 (nnoo-change-server |
252 (when bstate | 252 (when bstate |
253 (setcar bstate nil) | 253 (setcar bstate nil) |
254 (setcdr bstate (delq defs (cdr bstate))) | 254 (setcdr bstate (delq defs (cdr bstate))) |
255 (pop defs) | 255 (pop defs) |
256 (while defs | 256 (while defs |
257 (set (car (pop defs)) nil))))) | 257 (set (car (pop defs)) nil))))) |
258 t) | 258 t) |
259 | 259 |
260 (defun nnoo-close (backend) | 260 (defun nnoo-close (backend) |
261 (setq nnoo-state-alist | 261 (setq nnoo-state-alist |
262 (delq (assq backend nnoo-state-alist) | 262 (delq (assq backend nnoo-state-alist) |
302 (when (not (fboundp (setq fun (nnoo-symbol backend function)))) | 302 (when (not (fboundp (setq fun (nnoo-symbol backend function)))) |
303 (eval `(deffoo ,fun | 303 (eval `(deffoo ,fun |
304 (&rest args) | 304 (&rest args) |
305 (nnheader-report ',backend ,(format "%s-%s not implemented" | 305 (nnheader-report ',backend ,(format "%s-%s not implemented" |
306 backend function)))))))) | 306 backend function)))))))) |
307 | |
308 (defun nnoo-set (server &rest args) | |
309 (let ((parents (nnoo-parents (car server))) | |
310 (nnoo-parent-backend (car server))) | |
311 (while parents | |
312 (nnoo-change-server (caar parents) | |
313 (cadr server) | |
314 (cdar parents)) | |
315 (pop parents))) | |
316 (nnoo-change-server (car server) | |
317 (cadr server) (cddr server)) | |
318 (while args | |
319 (set (pop args) (pop args)))) | |
320 | |
307 (provide 'nnoo) | 321 (provide 'nnoo) |
308 | 322 |
309 ;;; arch-tag: 0196b5ed-6f34-4778-a455-73a971f837e7 | 323 ;;; arch-tag: 0196b5ed-6f34-4778-a455-73a971f837e7 |
310 ;;; nnoo.el ends here | 324 ;;; nnoo.el ends here |