Как заставить Emacs автоматически обновлять все буферы при изменении файлов на диске?

У меня есть функция глобального поиска и замены non-emacs, которая заставляет мои файлы дисков обновляться, чем мои буферы emacs (в массовом порядке). Есть ли способ сказать emacs для обновления всех буферов с диска одним махом, вместо того, чтобы делать каждый отдельно, перезагружая файл?

Спасибо! D

Ответ 1

(global-auto-revert-mode t) в .emacs.

Ответ 2

Вот альтернатива, если вы используете Emacs GUI (Mine - это GNU Emacs 25.1.1 в Windows 7):

  • Нажмите "Параметры" в меню
  • Выберите "Настроить Emacs"
  • Выберите "Сохраненные параметры"
  • Затем вы должны увидеть поле поиска, в которое вы введете "global-auto-revert-mode" и нажмите кнопку "Поиск"
  • Нажмите кнопку "Переключить" и убедитесь, что она читает "on" справа от кнопки
  • Нажмите кнопку "Применить и сохранить" прямо под полем поиска

Если у вас уже открыто несколько файлов, вы должны немедленно увидеть, как это произошло. Удачи!

Ответ 3

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

По умолчанию режим Auto-Revert работает с использованием уведомлений о файлах, в результате чего об изменениях в файловой системе сообщает Emacs ОС. Вы можете отключить использование файловых уведомлений, настроив переменную auto-revert-use-notify в значение nil, после чего Emacs будет проверять изменения файлов, опрашивая каждые пять секунд. Вы можете изменить интервал опроса через переменную auto-revert-interval.

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