¿Puedo configurar un archivo en particular para que acepte cambios de forma automática y silenciosa?

9

Es decir, ¿puedo especificar para un archivo en particular que no quiero que Emacs me notifique que el archivo ha cambiado en el disco y me pregunte si deseo aceptar cambios o no? No quiero hacer esto globalmente, solo para los archivos que sé que con frecuencia se cambiarán fuera de Emacs (en particular, los archivos Org relacionados con el calendario).

emacsomancer
fuente

Respuestas:

8

Puede hacer esto para un búfer específico con M-x auto-revert-mode( manual ). Para los búferes de archivos, esto verificará cada auto-revert-intervalsegundo (el valor predeterminado es 5) en busca de cambios y actualizará automáticamente el búfer del disco.

Su título dice "un archivo en particular" mientras que el cuerpo de su pregunta menciona un tipo de archivo (archivos de organización). Dependiendo de sus circunstancias, aquí hay algunas maneras en que puede configurar este modo para obtener el efecto deseado de manera persistente. Los métodos anteriores son posiblemente más limpios y más eficientes si se aplican a su caso de uso particular.

Si sabe que desea esto para cada archivo de cierto tipo, considere agregar un enlace de modo a su configuración de inicio.

(add-hook 'org-mode-hook (lambda () (auto-revert-mode 1)))

Si sabe que lo desea para todo en un determinado directorio, considere configurarlo en .dir-locals.el en la ubicación correspondiente, asegurándose de ignorar VCS el archivo de configuración local si corresponde. Este ejemplo se aplicará a todos los búferes de modo org para archivos en el mismo directorio (y subdirecciones). También puede ejecutar M-x add-dir-local-variablepara que Emacs genere y guarde esto automáticamente.

(
  (org-mode . ((auto-revert-mode . 1)))
 )

Si ninguno de los dos enfoques anteriores funciona bien para usted, considere un conjunto de variables locales de archivo en cada archivo. La forma más breve y general de establecer uno de estos es incluir lo siguiente en la primera línea del archivo de destino:

-*- eval: (auto-revert-mode 1); -*-

En los archivos de origen, el texto puede seguir un delimitador de comentarios (//, #, etc.). Puede ejecutar M-x add-file-local-variable-proplinepara que Emacs lo genere automáticamente o M-x add-file-local-variablepara un formato que use la parte inferior de su archivo en lugar de la parte superior.

Use este método solo si no está compartiendo el archivo con nadie más. Del manual de GNU :

A menudo es un error especificar modos menores de esta manera. Los modos menores representan las preferencias individuales del usuario, y puede ser inapropiado imponer sus preferencias a otro usuario que pueda editar el archivo. Si desea habilitar o deshabilitar automáticamente un modo menor de forma dependiente de la situación, a menudo es mejor hacerlo en un enlace de modo mayor.

Mian
fuente
2
¿No es (auto-revert-mode 1)una forma canónica de activar un modo menor en lugar de setq?
mbork
1
Sí tienes razón. Limpiando ese ejemplo en un segundo. Gracias.
Mian
1
De nada. (Dicho esto, AFAIU, las variables locales de archivo son las más adecuadas para el caso de uso de OP.)
mbork
1
Puede que tengas razón. En mi opinión, depende de los detalles de su organización de archivos. Si los archivos que conocen se cambiarán con frecuencia fuera de emacs son todos archivos de organización, o todos están en el mismo lugar (por ejemplo, un directorio de Dropbox), un enfoque basado en modo o directorio podría ser más limpio y fácil, y evitará abarrotando sus archivos como un bono.
Mian
2
Para interactuar con ambos métodos, hay add-file-local-variabley add-dir-local-variable.
Sean Allred
3

Si. Pon esto al final de tu archivo.

* COMMENT Config
Local Variables:
eval: (auto-revert-mode 1)
End:

Esto supone el modo Org, para otros modos, utilice los comentarios en el idioma utilizado como se explica en el enlace que figura a continuación.

Nota: consulte Variables locales en archivos en el manual para obtener información general, información de seguridad y una advertencia de que esto no siempre es una buena idea. Además, la sección sobre reversión dice, por ejemplo, cómo cambiar el intervalo predeterminado de 5 segundos para la reversión automática.

mbork
fuente
¿Esto tiene que ser absolutamente al final? Tengo un script que está generando .org archivos y tuve que ponerlo en cerca del comienzo - que no parece que el trabajo ....
emacsomancer
1
Sí, mira el enlace. Y vea otras respuestas para una solución de primera línea.
mbork