Mercurial > hg > xemacs-beta
comparison lisp/gnus/nnoo.el @ 108:360340f9fd5f r20-1b6
Import from CVS: tag r20-1b6
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:18:39 +0200 |
parents | 0d2f883870bc |
children | fe104dbd9147 |
comparison
equal
deleted
inserted
replaced
107:523141596bda | 108:360340f9fd5f |
---|---|
56 (error "%s belongs to a backend that hasn't been declared" func)) | 56 (error "%s belongs to a backend that hasn't been declared" func)) |
57 (setcar funcs (cons func (car funcs))))) | 57 (setcar funcs (cons func (car funcs))))) |
58 | 58 |
59 (defmacro nnoo-declare (backend &rest parents) | 59 (defmacro nnoo-declare (backend &rest parents) |
60 `(eval-and-compile | 60 `(eval-and-compile |
61 (push (list ',backend | 61 (push (list ',backend |
62 (mapcar (lambda (p) (list p)) ',parents) | 62 (mapcar (lambda (p) (list p)) ',parents) |
63 nil nil) | 63 nil nil) |
64 nnoo-definition-alist) | 64 nnoo-definition-alist) |
65 (push (list ',backend "*internal-non-initialized-backend*") | 65 (push (list ',backend "*internal-non-initialized-backend*") |
66 nnoo-state-alist))) | 66 nnoo-state-alist))) |
124 (incf i)) | 124 (incf i)) |
125 (eval `(deffoo ,(nnoo-symbol backend (nnoo-rest-symbol (car m))) | 125 (eval `(deffoo ,(nnoo-symbol backend (nnoo-rest-symbol (car m))) |
126 (&rest args) | 126 (&rest args) |
127 (nnoo-parent-function ',backend ',(car m) | 127 (nnoo-parent-function ',backend ',(car m) |
128 ,(cons 'list (nreverse margs)))))))) | 128 ,(cons 'list (nreverse margs)))))))) |
129 | 129 |
130 (defun nnoo-backend (symbol) | 130 (defun nnoo-backend (symbol) |
131 (string-match "^[^-]+-" (symbol-name symbol)) | 131 (string-match "^[^-]+-" (symbol-name symbol)) |
132 (intern (substring (symbol-name symbol) 0 (1- (match-end 0))))) | 132 (intern (substring (symbol-name symbol) 0 (1- (match-end 0))))) |
133 | 133 |
134 (defun nnoo-rest-symbol (symbol) | 134 (defun nnoo-rest-symbol (symbol) |
178 (nconc bvariables | 178 (nconc bvariables |
179 (list (cons (car def) (and (boundp (car def)) | 179 (list (cons (car def) (and (boundp (car def)) |
180 (symbol-value (car def))))))) | 180 (symbol-value (car def))))))) |
181 (set (car def) (cadr def)))) | 181 (set (car def) (cadr def)))) |
182 (while parents | 182 (while parents |
183 (nnoo-change-server | 183 (nnoo-change-server |
184 (caar parents) server | 184 (caar parents) server |
185 (mapcar (lambda (def) (list (car def) (symbol-value (cadr def)))) | 185 (mapcar (lambda (def) (list (car def) (symbol-value (cadr def)))) |
186 (cdar parents))) | 186 (cdar parents))) |
187 (pop parents)))) | 187 (pop parents)))) |
188 t) | 188 t) |
189 | 189 |
190 (defun nnoo-push-server (backend current) | 190 (defun nnoo-push-server (backend current) |
191 (let ((bstate (assq backend nnoo-state-alist)) | 191 (let ((bstate (assq backend nnoo-state-alist)) |
192 (defs (nnoo-variables backend))) | 192 (defs (nnoo-variables backend))) |
193 ;; Remove the old definition. | 193 ;; Remove the old definition. |
194 (setcdr (cdr bstate) (delq (assoc current (cddr bstate)) (cddr bstate))) | 194 (setcdr (cdr bstate) (delq (assoc current (cddr bstate)) (cddr bstate))) |
195 ;; If this is the first time we push the server (i. e., this is | 195 ;; If this is the first time we push the server (i. e., this is |
196 ;; the nil server), then we update the default values of | 196 ;; the nil server), then we update the default values of |
197 ;; all the variables to reflect the current values. | 197 ;; all the variables to reflect the current values. |
198 (when (equal current "*internal-non-initialized-backend*") | 198 (when (equal current "*internal-non-initialized-backend*") |
199 (let ((defaults (nnoo-variables backend)) | 199 (let ((defaults (nnoo-variables backend)) |
200 def) | 200 def) |