如何仅在没有插入子目录的Dired缓冲区中启用“dired-auto-revert-buffer”?

4

启用 global-auto-revert-mode 是与另一个工具开发/调试的绝佳方式。对磁盘上文件所做的更改将反映在相应的emacs缓冲区中。

dired-auto-revert-buffer 使dired缓冲区也能实现同样的功能,但如果启用了回滚dired缓冲区,则无法使用递归目录, 因为重新加载需要太长时间.

如何启用dired-auto-revert-buffer用于未运行插入 (dired-maybe-insert-subdir) 或特别是递归插入的dired缓冲区?

2个回答

3
很好的问题。也许其他人会有更好的想法,但据我所知,您需要将 dired-auto-revert-buffer 设置为一个函数(而不是 t),该函数仅在没有插入子目录时返回非空值。
这样应该就可以了:
(setq dired-auto-revert-buffer  (lambda (_dir) (null (cdr dired-subdir-alist))))

请注意,dired-auto-revert-buffer 只在您“重新访问”现有的 Dired 缓冲区时才起作用。仅仅重新选择其窗口或使其缓冲区成为当前缓冲区是不够的。如果使用 C-x d 重新访问它,则只有在没有插入子目录的情况下才会自动恢复。


1
你可以将dired-auto-revert-buffer绑定到一个函数上,该函数带有一个参数(目录名称)。如果该函数返回非空值,则会还原dired缓冲区。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接