如题,执行下面的代码后:
(defun advice-around-Info-scroll (scroll-command)
(cl-flet ((traced (sym)
(let ((func (symbol-function sym)))
(lambda (&rest args)
(message "%s 调用了" sym)
(prog1 (apply func args)
(message "%s 返回了" sym))))))
(cl-letf (((symbol-function 'scroll-up) (traced 'scroll-up))
((symbol-function 'scroll-down) (traced 'scroll-down)))
(funcall scroll-command))))
(advice-add 'Info-scroll-up :around 'advice-around-Info-scroll)
(advice-add 'Info-scroll-down :around 'advice-around-Info-scroll)
Info 中上翻页会输出 “scroll-up 返回了”,但是下翻页什么都不会输出。不过重新求值 Info-scroll-down 的定义之后:
(progn
(find-function 'Info-scroll-down)
(eval (sexp-at-point)))
就没有这个问题了。