自动保存有时候生效有时候不生效?

已经设置了自动保存了, atuo-save-default 是t auto-save-timeout设置了5. auto-save-mode不是minor mode么, 我用describe-mode看不到这个呢?

但是很迥异的是, 有时候会在状态栏提示auto saving, 但是更多时候就没有反应. 到底什么时候才算idle, 只要没有输入就算么? 为什么停止编辑5s之后还是没有自动保存呢

1 个赞

看起来像个 Bug,试试 M-x report-emacs-bug

如果好奇为什么有这个 Bug 的话以及想修复它的话,看看 auto-save-modedescribe-mode 实现应该会有帮助。

Auto Save 的时机在 (emacs) Auto Save Control 中有介绍:

  • 输入超过 300 (auto-save-interval) 个字符
  • 停止使用 Emacs 超过 30 (auto-save-timeout) 秒(你可以切换到终端输入 sleep 30,等 30 秒,结束后应该就能看到 Emacs 提示 Auto Save 了)

我这边是正常的,如果你那边有问题并且知道如何重现的话,也应当 M-x report-emacs-bug

1 个赞

你想说的可能是诡异迥异的意思是“完全不同” :beers:

应该是个bug,我今天遇到同样的问题,设置了auto-save-timeout 不会自动保存,不过auto-save-interval 有效果 :expressionless:

解决方法:

(run-with-idle-timer auto-save-timeout t #'do-auto-save)

如果你开启了auto-save-visited-mode 的话,auto-save-visited-interval 应该要大于auto-save-timeout,不然它就会直接保存到文件,之后auto-save-timeout就没有效果了

另外, 不要使用变量auto-save-visited-file-name, 因为这个变量This variable is obsolete since Emacs 26.1;, 而且使用这个变量有时候会导致当前文件保存到auto-save-file-name-transforms目录中,这时候就会出现有时候修改了dotfiles,但却没有效果的现象,原因就是当前buffer被自动保存到auto-save-file-name-transforms 指定的目录去了