emacs 中 hook的原理是怎样的?

我在学习hook

#+BEGIN_SRC elisp
  ;; 定义一个自定义 hook 变量
  (defvar my-custom-hook nil
    "Custom hook for demonstration purposes.")

  ;; 定义一个函数,将其添加到 my-custom-hook
  (defun my-custom-function1 ()
    "Function 1 to run when the custom hook is triggered."
    (message "Custom function 1 is triggered!"))


  ;; 将函数添加到 my-custom-hook
  (add-hook 'my-custom-hook 'my-custom-function1)


  (defun some-useful-function ()
    (run-hooks 'my-custom-hook)
    (message "do something else"))

  (some-useful-function)

#+END_SRC

#+RESULTS:
: do something else

上面的代码是不是hook的原理? 但是为什么没有打印出 Custom function 1 is triggered!呢?

因为 RESULTS 只有函数返回值,不会包括 message 的输出

好的,明白了 顺便问一下,大佬

为什么我在org.el里面搜这个org-after-todo-statistics-hook搜不到

我应该看到一个地方 (run-hooks 'org-after-todo-statistics-hook)的调用地方吧

你查的文档应该过期了,新版本把这个 hook 删除了

大佬,怎么debug elisp代码? 比如上面这个org-after-todo-statistics-hook,好像还是可以运行的, 我怎么打断点,怎么单步调试?

你没从文件开始处搜索缘故,C-s 只会从当前位置向后搜索。实际这个钩子在最新版本还是在的。