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


global-auto-revert-mode zrobił magię ...
Jorge Aguilar

Odpowiedzi:


229

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


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!


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.