global-auto-revert-mode sepertinya tidak berfungsi?

7

File init saya termasuk

(setq global-auto-revert-mode t)

dan saya dapat mengonfirmasi itu benar dengan Ch v. Tapi saya masih harus secara manual mengembalikan semua file saya dengan revert-buffer setiap kali saya mengubah cabang git. Saya bahkan mencoba menyimpan dan mendapatkan prompt "file diubah pada disk". Ada saran untuk cara men-debug ini?

Djechlin
sumber
Coba letakkan ini di init Anda sebagai gantinya:(global-auto-revert-mode 1)
Kaushal Modi
@kaushalmodi tidak beruntung (saya akan benar-benar terkejut)
djechlin
Mungkinkah itu masalah auto-revert-interval? Saya menggunakannya dan berfungsi untuk saya, kecuali file di atas gelandangan.
Swarnendu Biswas
Sepertinya ada bug yang merayap masuk dalam 24.5 dan 25.0. @SwarnenduBisakah Anda di emacs 24.4?
Kaushal Modi
@djechlin Saya memverifikasi menggunakan sesi emacs -Q bahwa mode auto revert tidak berfungsi pada emacs 24.5 dan 25.0 tetapi berfungsi dengan baik pada 24.4. Kamu versi apa?
Kaushal Modi

Jawaban:

15

Mode minor tidak diaktifkan / dinonaktifkan dengan mengatur variabel. Variabel mode minor harus digunakan untuk memeriksa status "mode diaktifkan", bukan untuk mengatur status mode. Jika nilainya t, mode minor menyala, jika tidak maka mode tidak aktif.


Lihat cuplikan di bawah ini untuk melihat cara mengontrol mode minor apa pun. Ganti MINOR-MODE-NAMEdengan nama mode minor aktual yang Anda hadapi ( global-auto-revert-nameseperti halnya dalam pertanyaan).


Mengaktifkan mode minor

Menggunakan elisp

Langsung

(MINOR-MODE-NAME)
;; or
(MINOR-MODE-NAME 1)

Berdasarkan aktivasi hook

(add-hook 'SOME-HOOK #'MINOR-MODE-NAME)

Menonaktifkan mode minor

Menggunakan elisp

Langsung

(MINOR-MODE-NAME 0)
;; or
(MINOR-MODE-NAME -1)

Berdasarkan aktivasi hook

(add-hook 'SOME-HOOK (lambda () (MINOR-MODE-NAME -1)))

Mengalihkan mode minor

Secara interaktif

M-x MINOR-MODE-NAME

Menggunakan kunci yang mengikat

(global-set-key (kbd "<KEY>") #'MINOR-MODE-NAME)

Menggunakan elisp (non-interaktif)

(MINOR-MODE-NAME 'toggle)

Sumber

Kaushal Modi
sumber
Saya telah mengalami beberapa mode di mana Anda harus melewati t atau nihil alih-alih angka.
Joseph Garvin
@JosephGarvin Mungkin bermanfaat untuk mengetahui mode-mode itu .. dan mungkin mengajukan laporan bug untuk memperbaiki ketidakkonsistenan itu jika sebenarnya mereka didefinisikan sebagai mode minor?
Kaushal Modi
Jawabannya sangat abstrak. Saya tidak tahu bagaimana menggunakannya.
ctrl-alt-delor
@ ctrl-alt-delor Apa mode minor yang Anda coba kontrol yang mengarahkan Anda ke jawaban ini?
Kaushal Modi
Yang ada di pertanyaan. ( global-auto-revert-mode)
ctrl-alt-delor
3

Anda tidak mengatur variabel menggunakan setq, Anda memanggil fungsi:

(global-auto-revert-mode)
Djechlin
sumber
Saya bertanya-tanya bagaimana bedanya (global-auto-revert-mode 1). Juga jika Anda menambahkan ini ke init Anda, Anda bahkan tidak perlu argumen itu. Hanya (global-auto-revert-mode)harus cukup. Lihat posting blog Xah untuk info lebih lanjut.
Kaushal Modi
Seperti mode apa pun yang ditentukan menggunakan define-global-minor-mode, satu-satunya nilai yang valid adalah angka nil,, dan toggle. Fakta yang tberhasil hanya karena fakta yang prefix-numeric-valuetidak tersedak dan memperlakukannya seperti 1.
Lindydancer
@ Listydancer Ya, saya ingin djechlin mengklarifikasi mengapa lewat 1sebagai argumen tidak berhasil .
Kaushal Modi
@kaushalmodi Saya masih setq-ing - Saya pikir Anda baru saja mengubah t menjadi 1, saya mengabaikan perubahan dari setq ke memanggil fungsi.
djechlin
@djechlin Terima kasih telah menjelaskan. Tetapi demi klarifikasi dan konsistensi, disarankan untuk memberikan argumen 1atau tidak sama sekali jika Anda ingin mengaktifkan mode minor dari elisp di init Anda.
Kaushal Modi
1

auto-revert hanya berfungsi untuk buffer yang tidak dimodifikasi. Jadi setidaknya untuk "mencoba menyimpan dan mengubah file di disk prompt" perilaku yang Anda gambarkan adalah normal.

Stefan
sumber
Saya membuka file yang sama secara bersamaan dalam instance emacs 25.0 dan instance emacs 24.4 (keduanya dengan -Qopsi) dan melakukannya M-x global-auto-revert-modepada keduanya. Dari terminal ketika saya menggema beberapa string ( echo 1234 >> somefile.txt) ke file itu, hanya buffer emacs 24.4 yang dipulihkan secara otomatis.
Kaushal Modi
Kalau begitu tolong M-x report-emacs-bug.
Stefan
Selesai! bug # 20441
Kaushal Modi
"Bug" diselesaikan dengan sendirinya .. mungkin masalah dengan glib pada sistem saya.
Kaushal Modi