gpt4 book ai didi

emacs - 如何在 Emacs 中 Hook "buffer has shrunk a lot"

转载 作者:行者123 更新时间:2023-12-02 03:54:32 25 4
gpt4 key购买 nike

Emacs 说,

Buffer foo.txt has shrunk a lot; auto save disabled in that buffer until next real save

当它检测到大量文本在自动保存时消失,并禁用自动保存,除非 auto-save-include-big-deletions 为非零。

如何 Hook Emacs 检测到缓冲区已缩小很多的事件?我想加入这一点,因为每当缓冲区缩小很多时我想设置一个缓冲区本地标志,这样当我保存一些缓冲区时,它的建议之一会检测到该标志并说对我来说“嘿,这个缓冲区已经缩小了很多。不要忘记查看 diff 以确保您没有错误地删除一些大块”。除了备份之外,这也很好。简单地比较保存前的缓冲区大小和保存的文件大小,无法检测到误添加批处理然后删除批处理再保存的情况。

最佳答案

auto-save-hook 在生成该消息的检查之前运行,因此您可以复制 C 代码中的逻辑来执行您想要的操作。因此您可以向该 Hook 添加一个函数。

这是(据我所知)C 代码中使用的逻辑。

(when (and auto-save-include-big-deletions
buffer-file-name
(> (* 10 (nth 7 (file-attributes buffer-file-name)))
(* 13 (buffer-size)))
(> (nth 7 (file-attributes buffer-file-name)) 5000))
;; do something
)

注意:即使自动保存被禁用,钩子(Hook)也会运行。

关于emacs - 如何在 Emacs 中 Hook "buffer has shrunk a lot",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com