Bagaimana cara me-refresh semua buffer secara otomatis ketika file telah berubah pada disk?

176

Saya memiliki pencarian global non-emacs dan menggantikan fungsi yang menyebabkan file disk saya menjadi lebih terkini daripada buffer emacs saya (secara massal). Apakah ada cara untuk memberitahu emacs untuk menyegarkan semua buffer dari disk dalam satu gerakan, alih-alih harus melakukan masing-masing secara individual dengan memuat ulang file?

Terima kasih! D

Dave
sumber
global-auto-revert-mode melakukan keajaiban ...
Jorge Aguilar

Jawaban:

229

(global-auto-revert-mode t)di .emacs Anda .

Ashwin
sumber
Ini terlihat bagus dalam kasus di mana saya selalu ingin tetap disinkronkan, terima kasih! Saya pikir saya akan berakhir menggunakan revbuffs sehingga saya bisa mengelola konflik sendiri (kalau tidak kadang-kadang saya mungkin kehilangan perubahan yang belum disimpan, cara alur kerja saya saat ini bekerja.)
Dave
2
Terima kasih! Saya menggunakan kombinasi revbuffs dan auto-revert-mode. auto-revert-mode berfungsi dengan baik ketika saya ingin menimpa perubahan.
Natan Yellin
12
@Dave: (global-) auto-reverse-mode tidak akan mengembalikan file jika buffer yang sesuai dimodifikasi, jadi seharusnya tidak ada risiko Anda kehilangan perubahan yang belum disimpan.
Lindydancer
Saya telah mengatur variabel dalam .emacs, tetapi ketika saya mengedit beberapa kode xcode, kemudian membaca file (sudah terbuka) pada baris itu, edit dalam xcode tidak ada, perlu Mx revert-buffer dengan mudah. ​​(Mac + emacs 24.3.1)
ericfang
6
Bekerja dengan baik ketika mengganti cabang dengan git. Terima kasih!
Justin Leitgeb
10

Berikut ini adalah alternatif jika Anda menggunakan Emacs GUI (Mine is GNU Emacs 25.1.1 di Windows 7):

  1. Klik "Opsi" di menubar
  2. Pilih "Kustomisasi Emacs"
  3. Pilih "Opsi Tersimpan"
  4. Kemudian Anda akan melihat kolom pencarian di mana Anda memasukkan "global auto-revert-mode" dan tekan "Cari" tombol
  5. Klik tombol "Toggle" dan pastikan bunyinya "on" di sebelah kanan tombol
  6. Tekan tombol "Terapkan dan Simpan" tepat di bawah bidang pencarian

Jika Anda sudah memiliki beberapa file yang dibuka, Anda akan melihat efek ini diambil secara instan. Semoga berhasil!

benjaminz
sumber
3

Terima kasih kepada @Ashwin karena telah menunjukkan (global-auto-revert-mode t). Saya menemukan bahwa Emacs tidak akan secara otomatis memperbarui buffer yang file-nya telah berubah pada disk dengan perubahan ini saja. Dari https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

Secara default, mode Auto-Revert bekerja menggunakan notifikasi file, di mana perubahan dalam sistem file dilaporkan ke Emacs oleh OS. Anda dapat menonaktifkan penggunaan notifikasi file dengan menyesuaikan variabel auto-revert-use-notify ke nilai nil, lalu Emacs akan memeriksa perubahan file dengan polling setiap lima detik. Anda dapat mengubah interval polling melalui variabel auto-revert-interval.

Setelah saya atur (auto-revert-use-notify nil), Emacs memang menyegarkan semua buffer setiap 5 detik.

jdc
sumber