org-agenda 有没有hook?

我想在org-agenda加载的时候,去处理org-agenda-files 因为我配置文件给它设置的是一个 directory, 但是它处理不了sub-directory,递归不了。 子文件夹下面的org文件就没有添加进来

但是在配置文件中递归处理的话,就动态不了,如果新增了子文件夹,还要去执行一遍函数,所以想着有没有hook,放在hook里面去处理

没有 hook 也可以用 advice 处理

在 Emacs 里 M-x apropos<RET>org-agenda<RET> 搜索一下,应该会有结果。

advice是什么

advice-add 是 Emacs Lisp 中用于添加函数建议(advice)的函数。函数建议是一种机制,允许你在调用函数之前、之后或代替调用时执行额外的代码。

函数的语法如下:

(advice-add FUNCTION WHERE ADVICE &optional PROPS)
  • FUNCTION 是要建议的函数的符号或函数对象。
  • WHERE 指定建议添加的位置,可以是 'before'after'around'instead,分别表示在函数执行之前、之后、代替执行、或者在任何地方。
  • ADVICE 是一个函数,它将被添加为建议。根据 WHERE 参数的不同,ADVICE 可以是一个在被建议的函数之前、之后或代替它时调用的函数。
  • PROPS 是一个可选的关联列表,包含额外的属性,如 :filter-args:depth 等。

以下是一个简单的例子,演示如何在一个函数调用之前和之后添加建议:

(defun my-function ()
  (message "Original function"))

(advice-add 'my-function
            :before
            (lambda () (message "Before calling my-function")))

(advice-add 'my-function
            :after
            (lambda () (message "After calling my-function")))

(my-function)

在这个例子中,我们定义了一个简单的函数 my-function。然后,我们使用 advice-add 在调用该函数之前和之后分别添加了两个建议。当我们调用 my-function 时,将会看到建议的消息输出。

2 个赞

所有defun函数声明的都支持吗?

是的,甚至C语言定义的函数也支持()只要能在 C-h f 里面找到的都行