web-dev-qa-db-fra.com

Comment faire pour qu'Emacs actualise automatiquement tous les tampons lorsque les fichiers ont été modifiés sur le disque?

J'ai une fonction de recherche et de remplacement globale non-emacs qui rend mes fichiers de disque plus à jour que mes tampons emacs (en masse). Existe-t-il un moyen de demander à Emacs d'actualiser tous les tampons du disque en un seul coup, au lieu de devoir effectuer chacun individuellement en rechargeant le fichier?

Merci: D

169
Dave

(global-auto-revert-mode t) dans votre .emacs .

215
Ashwin

Voici une alternative si vous utilisez l'interface graphique d'Emacs (le mien est GNU Emacs 25.1.1 sur Windows 7): 

  1. Cliquez "Options" dans la barre de menu
  2. Sélectionnez "Personnaliser Emacs"
  3. Sélectionnez "Options enregistrées"
  4. Ensuite, vous devriez voir un champ de recherche où vous entrez "global-auto-revert-mode" et appuyez sur le bouton "Rechercher"
  5. Cliquez sur le bouton "Basculer" et assurez-vous qu'il lit "on" à droite du bouton
  6. Appuyez sur le bouton "Appliquer et enregistrer" juste en dessous du champ de recherche

Si vous avez déjà quelques fichiers ouverts, vous devriez voir cela prendre effet instantanément. Bonne chance!

10
benjaminz

Merci à @Ashwin pour avoir signalé (global-auto-revert-mode t). J'ai découvert qu'Emacs ne mettrait pas automatiquement à jour les tampons dont les fichiers ont été modifiés sur le disque avec cette seule modification. De https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

Par défaut, le mode Auto-Revert utilise les notifications de fichiers. Les modifications du système de fichiers sont ensuite signalées à Emacs par le système d'exploitation. Vous pouvez désactiver l'utilisation des notifications de fichier en personnalisant la variable avec une valeur nulle, puis Emacs vérifiera les modifications de fichier en procédant à une interrogation toutes les cinq secondes. Vous pouvez modifier l'intervalle d'interrogation via la variable auto-revert-interval.

Après avoir défini (auto-revert-use-notify nil), Emacs a effectivement actualisé tous les tampons toutes les 5 secondes.

0
jdc