¿Cómo hacer que Emacs actualice automáticamente todos los búferes cuando los archivos han cambiado en el disco?

176

Tengo una función de búsqueda y reemplazo global que no es emacs que hace que mis archivos de disco estén más actualizados que mis búferes emacs (en masa). ¿Hay alguna manera de decirle a emacs que actualice todos los búferes del disco de una sola vez, en lugar de tener que hacer cada uno individualmente volviendo a cargar el archivo?

¡Gracias! re

Dave
fuente
global-auto-revert-mode hizo la magia ...
Jorge Aguilar

Respuestas:

229

(global-auto-revert-mode t)en tus .emacs .

Ashwin
fuente
Esto se ve bien en los casos en que siempre quiero estar sincronizado, ¡gracias! Creo que voy a terminar usando revbuffs para que pueda gestionar los conflictos a mí mismo (de lo contrario podría perder a veces los cambios no guardados, la forma en que mi flujo de trabajo funciona actualmente.)
David
2
¡Gracias! Estoy usando una combinación de revbuffs y auto-revert-mode. el modo de reversión automática funciona muy bien cuando quiero sobrescribir los cambios.
Natan Yellin
12
@Dave: (global-) auto-reverse-mode no revertirá un archivo si se modifica el búfer correspondiente, por lo que no debería haber riesgo de que pierda los cambios no guardados.
Lindydancer
He configurado la variable en .emacs, pero cuando edito un código xcode, luego leo el archivo (ya abierto) en esa línea, edito en xcode que no está allí, necesito Mx revert-buffer a mano. (Mac + emacs 24.3.1)
ericfang
66
Funciona bien cuando se cambian ramas con git. ¡Gracias!
Justin Leitgeb
10

Aquí hay una alternativa si está utilizando Emacs GUI (el mío es GNU Emacs 25.1.1 en Windows 7):

  1. Haga clic en "Opciones" en la barra de menú
  2. Seleccione "Personalizar Emacs"
  3. Seleccione "Opciones guardadas"
  4. Entonces debería ver un campo de búsqueda donde ingresa "global-auto-revert-mode" y presiona el botón "Buscar"
  5. Haga clic en el botón "Alternar" y asegúrese de que se lee "encendido" a la derecha del botón
  6. Presione el botón "Aplicar y Guardar" justo debajo del campo de búsqueda

Si ya tiene algunos archivos abiertos, debería ver que esto surta efecto instantáneamente. ¡Buena suerte!

benjaminz
fuente
3

Gracias a @Ashwin por señalarlo (global-auto-revert-mode t). Descubrí que Emacs no actualizará automáticamente los búferes cuyos archivos han cambiado en el disco solo con este cambio. Desde https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

De manera predeterminada, el modo de reversión automática funciona mediante notificaciones de archivos, mediante las cuales el sistema operativo informa a Emacs los cambios en el sistema de archivos. Puede deshabilitar el uso de notificaciones de archivos personalizando la variable auto-revert-use-notify a un valor nulo, luego Emacs verificará los cambios de archivo mediante sondeo cada cinco segundos. Puede cambiar el intervalo de sondeo a través de la variable intervalo de reversión automática.

Después de configurar (auto-revert-use-notify nil), Emacs actualizó todos los búferes cada 5 segundos.

jdc
fuente