Emacs 如何让通知在满足条件时不执行该功能?

Emacs 如何让通知在满足条件时不执行该功能?,emacs,elisp,advising-functions,defadvice,Emacs,Elisp,Advising Functions,Defadvice,当通知返回nil时,如何防止建议函数运行 (defadvice beginning-of-line (before test activate) nil) ->根本不运行行首的 编辑:为了消除您的担忧,我不打算在行首使用它您可以在周围使用建议,如下所示: (defadvice foo (around test activate) (if my-test ad-do-it)) 构造ad do it对应于运行原始函数。这不适用于cond。事实上,周围的环境似乎造成了麻烦。在这种

当通知返回nil时,如何防止建议函数运行

(defadvice beginning-of-line (before test activate)
 nil)
->根本不运行行首的


编辑:为了消除您的担忧,我不打算在
行首使用它

您可以在
周围使用
建议,如下所示:

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

构造
ad do it
对应于运行原始函数。

这不适用于
cond
。事实上,周围的环境似乎造成了麻烦。在这种情况下,它运行advice,发现它应该运行函数,但随后它再次执行advice!这听起来不对!你确定你的旧建议也不再有效吗?我绝对肯定:关闭和重新打开的emacs。更详细地说,函数删除了几行,建议中有一个cond(查看“(”)。cond
的最后一个是ad do it。首先,它删除了几行(因为它不是在看“(”),但是在删除这些行之后,它是在看“(”),然后它也删除了“(”)”(“您应该能够从这里运行函数(包括所有):