In article <
804nm2z...@somewhere.org>,
"Sebastien Vauban" <
wxhgmq...@spammotel.com> wrote:
> Hello,
>
> `flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'.
>
> But doing so in the following code:
>
> --8<---------------cut here---------------start------------->8---
> (defun my/revert-buffer ()
> "Unconditionally revert current buffer."
> (interactive)
> (flet ((yes-or-no-p (msg) t))
> (revert-buffer)))
> --8<---------------cut here---------------end--------------->8---
>
> does not lead to the right things:
>
> - use cl-flet, and the code doesn't behave as it should (i.e., it does ask for
> a confirmation, before reverting)'
cl-flet does lexical binding, not dynamic.
>
> - use cl-letf, and you've got an error:
> cl-letf: `let' bindings can have only one value-form: yes-or-no-p, (msg), t
>
> What should I do?
Sounds like you didn't write your cl-letf correctly. Did you read its
documentation? It's not a drop-in replacement for flet, since it's more
general than this (it's used to temporarily assign to any place that can
be set with setf).
(letf (((symbol-function 'yes-or-no-p)
#'(lambda (msg) t)))
(revert-buffer))
--
Barry Margolin,
bar...@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***