当条件满足时,如何建议不执行该功能?

问题描述:

如何在建议返回nil时阻止建议的函数运行?当条件满足时,如何建议不执行该功能?

(defadvice beginning-of-line (before test activate) 
nil) 

- >根本没有运行beginning-of-line

编辑:只是为了带走你的后顾之忧,我不打算在beginning-of-line上使用它。

您可以使用around建议,如:

(defadvice foo (around test activate) 
    (if my-test 
     ad-do-it)) 

将构建ad-do-it相当于运行原来的功能。

+0

这对'cond'不起作用。事实上,周围似乎造成了麻烦。在这种情况下,它运行建议,找出它应该运行的功能,但它然后再次建议! – PascalVKooten 2013-02-19 12:17:42

+0

这听起来不对!你确定你的旧建议还没有活动吗? – Lindydancer 2013-02-19 12:19:28

+0

我绝对确定:关闭并重新打开emacs。 – PascalVKooten 2013-02-19 12:20:03