emacs的auto-revert不够及时导致的问题

看了一下该文档,watch文件所在目录可以接受到文件删除通知,里面的示例有这样的演示,这样来说实现不麻烦,不知道为什么不支持

有时间真想尝试一下,可惜太忙抽不出时间

在global-auto-revert-mode的函数定义里看到了这个:

  (progn
    ;; Disable file notification because it could use too many resources.
    ;; See Bug#22814.
    (setq auto-revert-use-notify nil)
    (auto-revert-buffers))

原来被强制禁用了. 看了一下里面提到的bug, 内容大致是由于每个文件一个watcher占用了一个文件句柄, 导致emacs达到了进程文件句柄上限, emacs就工作不正常了.

这样来说, 在linux上也是被禁用的, 怪不得都有延迟.

全局开启会被禁用, 单个buffer开启才不会被禁用.

直接报错就可以了, 干嘛要强制禁用?

没细看,好像是 emacs 外部更改检测机制有问题?

继续看了一下, 26.1好像修复了这个bug, 上面那个强制禁用notify的代码没有了. 26.1会使用真正的notify

昨晚上在linux测试26.1的auto-revert功能正常, 反应很及时.

今天在mac上安装测试了一下26.1, auto-revert还有问题, emacs中只打开一个文件, 外部修改文件后, emacs的notify handler就报错了, 然后自动强制改成了非notify模式. 貌似底层实现有点问题. emacs上没有配置邮件客户端, 没有上报bug, 直接给emacs邮件列表发邮件了

除此之外, 26.1还发现两个问题, 这才刚用了半天啊, 问题挺多.

1 个赞

报告 Bug 就是把发送邮件到 [email protected]M-x report-emacs-bug 里写好后,不能在 Emacs 里发邮件的话,复制粘贴到别的邮件客户端也行(或者按 C-c M-i (report-emacs-bug-insert-to-mailer) 会自动化这一步骤)。

(info “(emacs) Bugs”) 中都有解释。

几个月之前用M-x report-emacs-bug 上报了一个bug, 没一个人回复我

你还能找到哪个 Bug 吗?(搜索下自己的邮箱应该能找到)或许是你的 Bug 报告写的有问题。