コード内の関数を一時的にオーバーライドしたいと思います。
たとえば、次のことを考えてください。
(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の使用だけです。