Tôi muốn tạm thời ghi đè một chức năng trong một đoạn mã.
Lấy ví dụ như sau:
(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)
Những gì không hoạt động:
- Điều này. Sẽ sạch sẽ hơn nhiều nếu tôi có thể tránh việc kích hoạt và vô hiệu hóa lời khuyên và tin tưởng vào bản chất đơn luồng của Emacs để lo mọi việc.
cl-letf
sẽ không để tôi tham khảo chức năng ban đầu, vì vậy tôi không thể thực hiện những việc:filter-args
thường làm.cl-flet
không thể ghi đè các chức năng trong các chức năng khác.noflet
là một gói bên ngoài, mà tôi muốn tránh. (Cũng làm nhiều hơn tôi cần)
cl-letf*
cho cả hailet
.