Comment avoir Emacs actualise automatiquement tous les tampons lorsque les fichiers ont changé sur le disque?

176

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

Merci! ré

Dave
la source
global-auto-revert-mode a fait la magie ...
Jorge Aguilar

Réponses:

229

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

Ashwin
la source
Cela a l'air bien dans les cas où je veux toujours rester synchronisé, merci! Je pense que je finirai par utiliser des revbuffs pour pouvoir gérer les conflits moi-même (sinon, parfois, je pourrais perdre des modifications non enregistrées, la façon dont mon flux de travail fonctionne actuellement.)
Dave
2
Je vous remercie! J'utilise une combinaison de revbuffs et de mode de retour automatique. Le mode de retour automatique fonctionne très bien lorsque je veux écraser des modifications.
Natan Yellin
12
@Dave: (global-) auto-reverse-mode ne restaurera pas un fichier si le tampon correspondant est modifié, il ne devrait donc y avoir aucun risque de perdre les modifications non enregistrées.
Lindydancer
J'ai défini la variable dans .emacs, mais lorsque j'édite du code xcode, puis que je lis le fichier (déjà ouvert) sur cette ligne, que j'édite xcode pas là, j'ai besoin de Mx revert-buffer manuellement. (Mac + emacs 24.3.1)
ericfang
6
Fonctionne bien lors du changement de branche avec git. Merci!
Justin Leitgeb
10

Voici une alternative si vous utilisez l'interface utilisateur d'Emacs (la mienne est GNU Emacs 25.1.1 sous Windows 7):

  1. Cliquez sur "Options" dans la barre de menus
  2. Sélectionnez "Personnaliser Emacs"
  3. Sélectionnez "Options enregistrées"
  4. Ensuite, vous devriez voir un champ de recherche dans lequel 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 que cela prend effet instantanément. Bonne chance!

benjaminz
la source
3

Merci à @Ashwin pour l'avoir signalé (global-auto-revert-mode t). J'ai trouvé qu'Emacs ne mettra pas automatiquement à jour les tampons dont les fichiers ont changé sur le disque avec ce seul changement. De https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

Par défaut, le mode Auto-Revert fonctionne à l'aide de notifications de fichiers, dans lesquelles les modifications du système de fichiers sont signalées à Emacs par le système d'exploitation. Vous pouvez désactiver l'utilisation des notifications de fichiers en personnalisant la variable auto-revert-use-notify à une valeur nulle, puis Emacs vérifiera les modifications de fichiers en interrogeant toutes les cinq secondes. Vous pouvez modifier l'intervalle d'interrogation via l'intervalle de retour automatique variable.

Après avoir réglé (auto-revert-use-notify nil), Emacs a en effet actualisé tous les tampons toutes les 5 secondes.

jdc
la source