Jak ustawić automatyczne odświeżanie wszystkich buforów Emacsa, gdy pliki na dysku uległy zmianie?

176

Mam globalną funkcję wyszukiwania i zamiany innej niż emacs, która powoduje, że moje pliki na dysku są bardziej aktualne niż moje bufory emacsa (masowo). Czy jest jakiś sposób, aby nakazać emacsowi odświeżyć wszystkie bufory z dysku za jednym zamachem, zamiast robić każdy z nich indywidualnie, przeładowując plik?

Dzięki! re

Dave
źródło
global-auto-revert-mode zrobił magię ...
Jorge Aguilar

Odpowiedzi:

229

(global-auto-revert-mode t)w twoim .emacs .

Ashwin
źródło
To wygląda dobrze w przypadkach, gdy zawsze chcę być zsynchronizowany, dziękuję! Myślę, że w końcu użyję revbuffs, aby móc samodzielnie zarządzać konfliktami (w przeciwnym razie czasami mogę stracić niezapisane zmiany, tak jak obecnie działa mój przepływ pracy).
Dave
2
Dziękuję Ci! Używam kombinacji revbuffs i auto-revert-mode. tryb auto-revert działa świetnie, gdy chcę nadpisać zmiany.
Natan Yellin
12
@Dave: (global-) auto-reverse-mode nie przywróci pliku, jeśli odpowiedni bufor zostanie zmodyfikowany, więc nie powinno być ryzyka utraty niezapisanych zmian.
Lindydancer
Ustawiłem zmienną w .emacs, ale kiedy edytuję kod xcode, a następnie czytam plik (już otwarty) w tej linii, edytuję w xcode nie tam, potrzebuję ręcznie Mx revert-buffer. (Mac + emacs 24.3.1)
ericfang
6
Działa ładnie podczas przełączania gałęzi za pomocą git. Dzięki!
Justin Leitgeb
10

Oto alternatywa, jeśli używasz graficznego interfejsu użytkownika Emacsa (mój to GNU Emacs 25.1.1 w systemie Windows 7):

  1. Kliknij „Opcje” na pasku menu
  2. Wybierz „Dostosuj Emacsa”
  3. Wybierz „Zapisane opcje”
  4. Następnie należy udać się do pola wyszukiwania, wpisać „global-auto-Przywróć-mode” i nacisnąć przycisk „Znajdź”, przycisk
  5. Kliknij „Włącz” przycisk i upewnij się, że czyta „on” na prawo od przycisku
  6. Naciśnij przycisk „Zastosuj i zapisz” tuż pod polem wyszukiwania

Jeśli masz już otwartych kilka plików, powinieneś natychmiast zobaczyć ten efekt. Powodzenia!

benjaminz
źródło
3

Dzięki @Ashwin za wskazanie (global-auto-revert-mode t). Odkryłem, że Emacs nie aktualizuje automatycznie buforów, których pliki na dysku uległy zmianie tylko przy tej zmianie. Z https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

Domyślnie tryb Auto-Revert działa przy użyciu powiadomień o plikach, przy czym zmiany w systemie plików są zgłaszane do Emacsa przez system operacyjny. Możesz wyłączyć korzystanie z powiadomień o plikach, dostosowując zmienną auto-revert-use-notification do wartości zerowej, a następnie Emacs będzie sprawdzał zmiany plików przez odpytywanie co pięć sekund. Możesz zmienić interwał odpytywania za pomocą zmiennej interwał automatycznego przywracania.

Po ustawieniu (auto-revert-use-notify nil)Emacs rzeczywiście odświeżał wszystkie bufory co 5 sekund.

jdc
źródło