广告激活有什么作用?

时间:2012-06-06 19:55:07

标签: emacs elisp advising-functions defadvice

answer中,我注意到了:

;; Align with spaces only
(defadvice align-regexp (around align-regexp-with-spaces)
  "Never use tabs for alignment."
  (let ((indent-tabs-mode nil))
    ad-do-it))
(ad-activate 'align-regexp)

sounds有希望,但......它做了什么?!

我在代码块上尝试了eval-region。但对我来说,它所做的就是在align-regexp文档中添加以下内容:

  

建议使用此功能。

     

围绕建议`align-regexp-with-spaces':
  切勿使用标签进行对齐。

我似乎无法真正使用align-regexp-with-spaces,如果这应该是什么效果......我错过了什么?

我使用的是GNU Emacs版本24.0.96.1(i386-mingw-nt6.1.7601)。

1 个答案:

答案 0 :(得分:3)

在问这个问题时,我意识到我只是没有理解advising functions

我清楚地知道:

  • align-regexp-with-spaces不是函数,也不是变量,只是名称(启用/禁用单个建议)
  • (ad-activate 'align-regexp)以来,align-regexp只做了我建议的事情:不使用标签

所以:ad-activate激活建议,有效地改变了原始函数的行为。太好了!

我不明白为什么这比定义align-regexp周围的函数“更好”。但是我再一次对Emacs Lisp了解不多。

我担心额外的文档只会增加混乱......