How to have Emacs auto-refresh all buffers when fi

2019-01-29 18:47发布

I have a non-emacs global search and replace function that causes my disk files to become more up-to-date than my emacs buffers (en masse). Is there any way to tell emacs to refresh all the buffers from disk in one fell swoop, instead of having to do each one individually by reloading the file?

Thanks! D

3条回答
可以哭但决不认输i
2楼-- · 2019-01-29 19:32

(global-auto-revert-mode t) in your .emacs.

查看更多
爷的心禁止访问
3楼-- · 2019-01-29 19:33

Here is an alternative if you are using Emacs GUI (Mine is GNU Emacs 25.1.1 on Windows 7):

  1. Click "Options" in menubar
  2. Select "Customize Emacs"
  3. Select "Saved Options"
  4. Then you should see a search field where you enter "global-auto-revert-mode" and press "Search" button
  5. Click "Toggle" button and make sure it reads "on" to the right of the button
  6. Press "Apply and Save" button right below the search field

If you already have a few files opened, you should see this taken effect instantly. Good luck!

查看更多
Luminary・发光体
4楼-- · 2019-01-29 19:33

Thanks to @Ashwin for pointing out (global-auto-revert-mode t). I found that Emacs won't automatically update buffers whose files have changed on disk with this change alone. From https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html:

By default, Auto-Revert mode works using file notifications, whereby changes in the filesystem are reported to Emacs by the OS. You can disable use of file notifications by customizing the variable auto-revert-use-notify to a nil value, then Emacs will check for file changes by polling every five seconds. You can change the polling interval through the variable auto-revert-interval.

After I set (auto-revert-use-notify nil), Emacs did indeed refresh all buffers every 5 seconds.

查看更多
登录 后发表回答