Як Emacs автоматично оновлює всі буфери, коли файли змінилися на диску?


176

У мене є функція глобального пошуку та заміни non-emacs, яка призводить до того, що мої дискові файли стають більш сучасними, ніж мої буфери emacs (масово). Чи є спосіб сказати Emacs оновити всі буфери з диска одним махом, замість того, щоб робити кожен окремо, перезавантажуючи файл?

Дякую! D


режим глобального автоматичного повернення зробив магію ...
Хорхе Агілар

Відповіді:


229

(global-auto-revert-mode t)у ваших .emacs .


Це добре виглядає у випадках, коли я завжди хочу залишатися синхронізованим, дякую! Я думаю, що я в кінцевому підсумку використовую ревбуфи, щоб я міг сам керувати конфліктами (інакше іноді я можу втратити незбережені зміни, як працює мій робочий процес в даний час.)
Дейв,

2
Дякую! Я використовую комбінацію ревбуфів та режиму автоматичного повернення. режим автоматичного повернення працює чудово, коли я хочу перезаписати зміни.
Натан Єллін

12
@Dave: (глобальний) автоматичний режим реверсу не поверне файл, якщо відповідний буфер буде змінено, тому не повинно бути ризику втрати незбережених змін.
Lindydancer

Я встановив змінну в .emacs, але коли я редагую деякий код xcode, то читаю файл (уже відкритий) у цьому рядку, редагувати в xcode не там, мені потрібно вручну повернути Mx-буфер. (Mac + emacs 24.3.1)
ericfang

6
Чудово працює при перемиканні гілок з git. Дякую!
Джастін Лейтгеб

10

Ось альтернатива, якщо ви використовуєте графічний інтерфейс Emacs (у мене є GNU Emacs 25.1.1 для Windows 7):

  1. Натисніть "Параметри" в меню
  2. Виберіть "Налаштувати Emacs"
  3. Виберіть "Збережені параметри"
  4. Тоді ви повинні побачити поле пошуку , де ви вводите «глобальні автоматичний REVERT-режим» і натисніть кнопку «Пошук» кнопка
  5. Клацніть кнопку "Переключити" і переконайтесь, що на ній написано "увімкнено" праворуч від кнопки
  6. Натисніть кнопку "Застосувати та зберегти" прямо під полем пошуку

Якщо у вас вже відкрито кілька файлів, ви побачите, що це набрало чинності миттєво. Удачі!


3

Дякуємо @Ashwin за вказівку (global-auto-revert-mode t). Я виявив, що Emacs не оновлюватиме автоматично буфери, файли яких змінилися на диску тільки з цією зміною. З https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

За замовчуванням режим автоматичного повернення працює, використовуючи сповіщення про файли, внаслідок чого ОС у системі Emacs повідомляє про зміни файлової системи. Ви можете відключити використання сповіщень про файли, налаштувавши змінну автоматичного повернення-використання-сповіщення до нульового значення, тоді Emacs перевірятиме зміни файлів, опитуючи кожні п’ять секунд. Ви можете змінити інтервал опитування через змінний інтервал автоматичного повернення.

Після того як я встановив (auto-revert-use-notify nil), Emacs дійсно оновлював усі буфери кожні 5 секунд.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.