emacs - 广告激活有什么作用?

标签 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文档:

This function is advised.

Around-advice `align-regexp-with-spaces':
Never use tabs for alignment.



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

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

最佳答案

在问这个问题时,我意识到我只是没有得到 advising functions 的想法。 .

我很清楚:

  • align-regexp-with-spaces不是函数也不是变量,而只是一个名称(启用/禁用单个建议)
  • 自从(ad-activate 'align-regexp) , align-regexp只是按照我的“建议”去做:不要使用标签

  • 所以:ad-activate激活通知,有效地改变原始函数的行为。伟大的!

    我不明白为什么这比在 align-regexp 周围定义一个函数“更好”尽管。但话又说回来,我对 Emacs Lisp 了解不多。

    恐怕额外的文档行只会增加困惑......

    关于emacs - 广告激活有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10921225/

    相关文章:

    emacs - Emacs主题定义中,为什么会有(t ( :background "black"))

    Lisp:找到与 fset 等效的 setf 方法

    emacs - 如何更改特定基本模式缓冲区的变量

    Emacs 每个文件自定义

    function - 覆盖 Emacs 库中的单个函数

    Emacs - 跳过空白杀死

    shell - cabal 如何确定它所在的目录并寻找目标?

    emacs - 如何将已经读过的文章提取到 gnus 中的摘要缓冲区中?

    r - 在服务器上运行 R 时,如何从 emacs ess 启动 x 窗口?

    emacs - 保存限制中的 "buffer' s 限制是什么意思?