【问题标题】:emacs elisp after-change-functions does nothingemacs elisp after-change-functions 什么都不做
【发布时间】: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上。

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    原来有一个变量,叫inhibit-modification-hooks,需要设置为nil,以防万一:

    (setq inhibit-modification-hooks nil)
    

    阅读the manual

    【讨论】:

    • 最大的问题是为什么这个变量有一个非零值开始......目的是让它始终是nil,除非修改钩子本身被执行或像font-lock 这样的一些包想要改变一些不应该触发修改钩子的东西。
    • 我完全同意 Lindydancer。 IMO inhibit-modification-hooks 应该只绑定到 lett。请注意,您问题中的 lisp 代码在暂存缓冲区中对我有用,而无需摆弄inhibit-modification-hooks
    • 使用-Q 命令行开关启动emacs,并在暂存缓冲区中再次尝试您问题中的代码。如果它与-Q 一起使用,则表明您的配置存在问题。
    猜你喜欢
    • 1970-01-01
    • 2019-03-08
    • 2016-12-24
    • 2017-04-18
    • 2011-08-03
    • 2014-05-11
    • 2014-09-10
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多