Ho del codice che usa flet
per cambiare temporaneamente il comportamento delle funzioni.
;; prevent changing the window
(flet ((pop-to-buffer (buffer &rest args)
(switch-to-buffer buffer)))
(compilation-next-error-function n reset))
Tuttavia, il compilatore di byte di Emacs avvisa:
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'.
Tuttavia, cl-flet
funziona in modo diverso e non si adatta ad alcuni casi d'uso, e credo che questo sia uno di questi casi.
Le opzioni che posso vedere sono:
Qual è l'approccio migliore?
my-flet
) E ho rimosso l'avvertimento obsoleto, e lo uso in qualsiasi pacchetto che precedentemente richiedesse flet.