我已使用此代码
向after-change-functions
列表添加了一个函数
(defun test-func ()
(message "foo"))
(add-hook 'after-change-functions 'test-func nil t)
现在每当我手动更改缓冲区时,test-func
就会被调用。但是当我使用insert
以编程方式修改缓冲区时,缓冲区的内容会更新,但test-func
没有被调用。
有关如何激活test-func
每次缓冲区的任何指针都会更新吗?
更新
我正在尝试转换markdown to html并在浏览器上提供该功能,以便每当用户键入一些降价时,html将自动更新。
以下是test-func
(defun impatient-markup-update (&rest args)
"Update html buffer if markup buffer updates."
(save-buffer impatient-markup-buffer)
(with-current-buffer (get-buffer impatient-markup-html-buffer)
(erase-buffer)
(insert (shell-command-to-string
(format "%s %s" impatient-markup-pandoc impatient-markup-buffer)))))
答案 0 :(得分:2)
在调用sleep-for
之后使用message
作为测试,看看您是否看到了该消息。
after-change-functions
不一定在你期望的缓冲区中运行你的钩子。正如医生所说:
*执行
after-change-functions
时所做的缓冲区更改不会调用任何更改前或更改后的函数。这是因为inhibit-modification-hooks
暂时设置为非零。
检查该挂钩上的其他内容等等。等一下,做一点调试。