help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: flet is obsolete, but...


From: Sebastien Vauban
Subject: Re: flet is obsolete, but...
Date: Thu, 11 Oct 2012 16:55:22 +0200
User-agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.2 (windows-nt)

Hello all,

Barry Margolin wrote:
> In article <804nm2zekk.fsf@somewhere.org>,
>  "Sebastien Vauban" <wxhgmqzgwmuf@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))

Thanks for your answers. It helped a lot, even if the above is still a bit
cryptic to me.

And, yes, I thought that the replacement was purely a syntaxical exchange of
words...

Best regards,
  Seb

-- 
Sebastien Vauban


reply via email to

[Prev in Thread] Current Thread [Next in Thread]