summaryrefslogtreecommitdiff
path: root/lisp/gnus/nnoo.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2021-01-30 18:56:37 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2021-01-30 18:56:37 -0500
commit12189ae415f88984dd26712bdf4e4f9a50e10c8f (patch)
tree2d9bb8acc5c400a015c32fb480d2149c621922e3 /lisp/gnus/nnoo.el
parentdaa4e0120dc32a8c3eeafdf8914a0e29e5c149e9 (diff)
downloademacs-scratch/lexical-gnus-rc.tar.gz
* lisp/gnus: Use closures now that we activated `lexical-binding`scratch/lexical-gnus-rc
* lisp/gnus/nnml.el (nnml-request-accept-article): * lisp/gnus/nnmairix.el (nnmairix-request-marks): * lisp/gnus/nnmail.el (nnmail-get-new-mail-1): * lisp/gnus/mm-view.el (mm-inline-image) (mm-inline-text-html-render-with-w3m, mm-inline-text) (mm-insert-inline, mm-inline-message): * lisp/gnus/mm-partial.el (mm-inline-partial): * lisp/gnus/mm-archive.el (mm-archive-dissect-and-inline): * lisp/gnus/gnus-util.el (gnus-create-info-command): * lisp/gnus/gnus-topic.el (gnus-topic-edit-parameters) (gnus-topic-sort-topics-1): * lisp/gnus/gnus-sum.el (gnus-summary-edit-article): * lisp/gnus/gnus-srvr.el (gnus-server-edit-server): * lisp/gnus/gnus-msg.el (gnus-inews-make-draft) (gnus-inews-add-send-actions, gnus-summary-cancel-article) (gnus-summary-supersede-article, gnus-summary-resend-message) (gnus-configure-posting-styles): * lisp/gnus/gnus-kill.el (gnus-execute): * lisp/gnus/gnus-html.el (gnus-html-wash-images): * lisp/gnus/gnus-group.el (gnus-group-edit-group) (gnus-group-nnimap-edit-acl): * lisp/gnus/gnus-draft.el (gnus-draft-edit-message, gnus-draft-setup): * lisp/gnus/gnus-art.el (gnus-article-edit-part) (gnus-mm-display-part, gnus-article-edit): * lisp/gnus/gnus-agent.el (gnus-category-edit-predicate) (gnus-category-edit-score, gnus-category-edit-groups): Use closures instead of `(lambda ...). * lisp/gnus/nnoo.el (noo--defalias): New function. (nnoo-import-1, nnoo-define-skeleton-1): Use it to avoid `eval`.
Diffstat (limited to 'lisp/gnus/nnoo.el')
-rw-r--r--lisp/gnus/nnoo.el17
1 files changed, 9 insertions, 8 deletions
diff --git a/lisp/gnus/nnoo.el b/lisp/gnus/nnoo.el
index 2260fd694e4..7759951662a 100644
--- a/lisp/gnus/nnoo.el
+++ b/lisp/gnus/nnoo.el
@@ -49,6 +49,9 @@
(defun ,func ,args ,@forms)
(nnoo-register-function ',func)))
+(defun noo--defalias (fun val)
+ (prog1 (defalias fun val) (nnoo-register-function fun)))
+
(defun nnoo-register-function (func)
(let ((funcs (nthcdr 3 (assoc (nnoo-backend func)
nnoo-definition-alist))))
@@ -90,9 +93,9 @@
(dolist (fun (or (cdr imp) (nnoo-functions (car imp))))
(let ((function (nnoo-symbol backend (nnoo-rest-symbol fun))))
(unless (fboundp function)
- ;; FIXME: Use `defalias' and closures to avoid `eval'.
- (eval `(deffoo ,function (&rest args)
- (,call-function ',backend ',fun args)))))))))
+ (noo--defalias function
+ (lambda (&rest args)
+ (funcall call-function backend fun args)))))))))
(defun nnoo-parent-function (backend function args)
(let ((pbackend (nnoo-backend function))
@@ -301,11 +304,9 @@ All functions will return nil and report an error."
request-list request-post request-list-newsgroups))
(let ((fun (nnoo-symbol backend op)))
(unless (fboundp fun)
- ;; FIXME: Use `defalias' and closures to avoid `eval'.
- (eval `(deffoo ,fun
- (&rest _args)
- (nnheader-report ',backend ,(format "%s-%s not implemented"
- backend op))))))))
+ (let ((msg (format "%s-%s not implemented" backend op)))
+ (noo--defalias fun
+ (lambda (&rest _args) (nnheader-report backend msg))))))))
(defun nnoo-set (server &rest args)
(let ((parents (nnoo-parents (car server)))