Я хотел бы временно переопределить функцию в куске кода.
Взять, к примеру, следующее:
(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
это внешний пакет, который я хотел бы избежать. (Также делает гораздо больше, чем мне нужно)
advice
let-binding
local-functions
PythonNut
источник
источник
cl-letf*
обаlet
.letf*
форму для обеих привязок.