2014-09-01 59 views
1

我不知道什麼原因是爲什麼after-change-functions不起作用;我會評估:emacs elisp after-change-functions什麼都不做

(defun test-hook (change-beg change-end prev-len) 
    (message "changed!")) 

(add-hook 'after-change-functions 'test-hook) 

然後一個變化什麼也沒做。

我正要問,但後來我明白了。仍然想到在stackoverflow上留下答案。

回答

3

原來有一個變量,名爲inhibit-modification-hooks,需要被設置爲nil,如果它是不是:

(setq inhibit-modification-hooks nil) 

瞭解the manual

+3

最大的問題是爲什麼這個變量有一個非零的值,以......開頭......其目的是爲了在任何時候都是'nil',除非修改鉤子自己被執行或者一些包如'font -lock'想要改變那些不應該觸發修改鉤子的東西。 – Lindydancer 2014-09-02 06:30:24

+0

我完全同意Lindydancer。國際海事組織的'''''''''''''''''''禁止修改鉤子只應該'let'-bound to't'請注意,您的問題中的lisp代碼在scratch-buffer中適用於我,而不用繞過「inhibit-modification-hooks」。 – Tobias 2014-09-02 10:56:05

+0

用'-Q'命令行開關啓動emacs並在scratch-buffer中再次嘗試代碼。如果它與'-Q'一起使用,則表示配置中存在問題。 – Tobias 2014-09-02 11:12:02