Vorrei sostituire temporaneamente una funzione in un pezzo di codice.
Prendi ad esempio quanto segue:
(defun nadvice/load-quiet (args)
(cl-destructuring-bind
(file &optional noerror nomessage nosuffix must-suffix)
args
(list file noerror t nosuffix must-suffix)))
(defun nadvice/idle-require-quiet (old-fun &rest args)
(advice-add 'load :filter-args #'nadvice/load-quiet)
(apply old-fun args)
(advice-remove #'load #'nadvice/load-quiet))
(advice-add 'idle-require-load-next :around #'nadvice/idle-require-quiet)
Cosa non funziona:
- Questo. Sarebbe molto più pulito se potessi evitare di abilitare e disabilitare manualmente i consigli e fidarmi della natura a thread singolo di Emacs per occuparsi delle cose.
cl-letf
non mi permette di fare riferimento alla funzione originale, quindi non posso implementare cose che:filter-args
normalmente farebbero.cl-flet
impossibile ignorare le funzioni in altre funzioni.noflet
è un pacchetto esterno, che vorrei evitare. (Fa anche molto più del necessario)
cl-letf*
per entrambilet
.