Tengo un código que usa fletpara cambiar temporalmente el comportamiento de las funciones.
;; prevent changing the window
(flet ((pop-to-buffer (buffer &rest args)
(switch-to-buffer buffer)))
(compilation-next-error-function n reset))
Sin embargo, el compilador de bytes de Emacs da una advertencia:
In ag/next-error-function:
ag.el:103:7:Warning: `flet' is an obsolete macro (as of 24.3); use either
`cl-flet' or `cl-letf'.
Sin embargo, cl-fletfunciona de manera diferente y no se adapta a algunos casos de uso, y creo que este es uno de esos casos.
Las opciones que puedo ver son:
¿Cuál es el mejor enfoque?

my-flet) y eliminé la advertencia obsoleta, y la utilicé en cualquier paquete que previamente requería flet.Respuestas:
Para obtener el mismo comportamiento al que está acostumbrado
flet, usecl-letfpara cambiar el valor de una función de símbolos.Si
flettuviera que rodar el suyo , la forma más fácil sería macro que se expande a uncl-letfformulario.Editar: rodado
fuente
cl-letfno es una alternativa adecuada (IIRC, no funciona parafletforing símbolos que aún no sonfboundp). es por eso que una versión compatible con versiones anterioresfletes un poco ... complicada ".Artur Malabarba escribió esto recientemente, en Comprender letf y cómo reemplaza a flet .
letfes un aliascl-letfy, aunque es muy probable que sea lo que quieres, hay una advertencia menor que Artur señala:(El
nofletpaquete de Nic proporciona una funcionalidad extendida en este sentido).fuente