코드에서 함수를 일시적으로 재정의하고 싶습니다.
예를 들어 다음을 보자.
(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
origional 함수를 참조 할 수 없으므로:filter-args
정상적으로 수행 할 수있는 작업을 수행 할 수 없습니다 .cl-flet
다른 기능의 기능을 무시할 수 없습니다.noflet
외부 패키지이며 피하고 싶습니다. (또한 필요 이상으로 많은 일을합니다)
cl-letf*
두 가지 용도 입니다let
.