Я хотів би тимчасово змінити функцію в фрагменті коду.
Візьмемо, наприклад, таке:
(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)
Що не працює:
- Це. Було б набагато чіткіше, якби я міг уникнути вручну ввімкнення та відключення порад і довіритися однопоточному характеру Emacs, щоб піклуватися про речі.
cl-letf
не дозволить мені посилатися на оригінальну функцію, тому я не можу реалізувати речі, які:filter-args
зазвичай роблять.cl-flet
не може змінювати функції інших функцій.noflet
це зовнішній пакет, який я хотів би уникнути. (Також робить набагато більше, ніж мені потрібно)
cl-letf*
для обохlet
s.