有没有办法 Hook 命令 A,以便在 A 执行后始终调用 B?
最佳答案
我认为最直接的方法是通过使用 advice .
你会做一些类似的事情:
(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
.你也可以玩symbol function indirection并编写一个新命令。
这有点取决于您要解决的问题。
关于Emacs:在命令上定义自定义钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142173/