有没有办法挂钩命令 A,以便在 A 执行后始终调用 B?
问问题
277 次
2 回答
10
我认为最直接的方法是通过使用建议来实现这一点。你会做一些类似的事情:
(defadvice command-A (after b-after-a activate)
"Call command-B after command-A"
(command-B))
这种方法的优点是即使重新定义了 command-A 也能正常工作。但是,它不适用于宏或从 C 代码调用的原始函数。但是,在实践中,建议这些功能的想法很少见。
也就是说,仅仅定义一个新命令 ( command-C
) 可能值得研究,它首先调用command-A
然后command-B
.
您还可以玩弄符号函数间接并编写新命令。
这有点取决于您要解决的问题。
于 2013-01-03T16:25:45.630 回答
3
您可以使用 defadvice 为函数提供建议:
;; This is the original function command-A
(defun command-A () (do-it))
;; This call will cause (do-sometihng-after-command-A) to be called
;; every-time (command-A) is called.
(defadvice command-A (after after-command-A)
(do-something-after-command-A))
;; Enable the advice defined above
(ad-activate 'command-A)
有关更多信息和示例,请参阅信息节点 (elisp)Advising Functions。
于 2013-01-03T16:25:58.710 回答