|
From: | Emanuel Berg |
Subject: | bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue |
Date: | Wed, 10 Nov 2021 02:50:47 +0100 |
User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
Michael Heerdegen wrote: > Since one seems to need to make use of the global > environment at some point, I suggest to use a named function > as workaround, like in > > #+begin_src emacs-lisp > (let* ((data-item 1) > (more-data 2)) > (defalias 'echo-data--interactive > (lambda () > (list (read-number "number: " (or data-item more-data))))) > (declare-function echo-data--interactive test) ;defun was not top-level > (defun echo-data (&optional data) > (interactive (echo-data--interactive)) > (message "data: %s" (or data data-item)) )) > #+end_src Thanks, I wrote this to illustrate the situation but interesting nonetheless, I don't think I've seen `defalias' to a `lambda' before and also didn't think of putting `declare-function' within the `let' body ... practical. -- underground experts united https://dataswamp.org/~incal
[Prev in Thread] | Current Thread | [Next in Thread] |