【发布时间】:2014-09-02 06:45:15
【问题描述】:
我不知道更改后功能不起作用的原因是什么;我会评估:
(defun test-hook (change-beg change-end prev-len)
(message "changed!"))
(add-hook 'after-change-functions 'test-hook)
然后改变什么也没做。
我正要问,但后来我想通了。还是想把答案留在stackoverflow上。
【问题讨论】:
我不知道更改后功能不起作用的原因是什么;我会评估:
(defun test-hook (change-beg change-end prev-len)
(message "changed!"))
(add-hook 'after-change-functions 'test-hook)
然后改变什么也没做。
我正要问,但后来我想通了。还是想把答案留在stackoverflow上。
【问题讨论】:
原来有一个变量,叫inhibit-modification-hooks,需要设置为nil,以防万一:
(setq inhibit-modification-hooks nil)
阅读the manual。
【讨论】:
nil,除非修改钩子本身被执行或像font-lock 这样的一些包想要改变一些不应该触发修改钩子的东西。
inhibit-modification-hooks 应该只绑定到 let 到 t。请注意,您问题中的 lisp 代码在暂存缓冲区中对我有用,而无需摆弄inhibit-modification-hooks。
-Q 命令行开关启动emacs,并在暂存缓冲区中再次尝试您问题中的代码。如果它与-Q 一起使用,则表明您的配置存在问题。