Le contexte
Quand emacs détecte qu'un fichier a été modifié en dehors d'un tampon d'édition.
Observé
emacs demandera:
un nom de fichier a changé sur le disque; vraiment éditer le tampon? (y, n, r ou Ch)
(Par ailleurs, cela arrive parfois même en l'absence de changement réel, par exemple un fichier distant sur un serveur avec une horloge dérivée, mais la question est intéressante dans tous les cas.)
Souhaité
emacs demanderait:
un nom de fichier a changé sur le disque; vraiment éditer le tampon? (y, n, r, d ou Ch)
En appuyant sur d
, vous verrez la différence entre les versions, par exemple, ediff-current-file
ce qui permet de parcourir les différences de manière interactive.
Information additionnelle
Ce serait similaire à ce que fait la gestion des paquets Debian lorsqu'elle détecte qu'un fichier de configuration localement personnalisé est mis à jour par une version plus récente de son paquet propriétaire. Pour un exemple, voir Une nouvelle version du fichier de configuration / etc / default / grub est disponible, mais la version installée actuellement a été modifiée localement - Unix & Linux Stack Exchange
Recherchez avant de demander
Je trouve généralement mon chemin vers des solutions (par exemple, emacsclient - À partir d'un script externe, ouvrez un fichier et exécutez une expression simple, que emacs soit déjà en cours d'exécution ou non - Emacs Stack Exchange ) mais après avoir recherché cela, je n'ai trouvé aucune solution préexistante.
J'envisagerais de régler cela moi-même, mais je ne suis pas assez compétent dans les internes emacs-lisp et emacs.
Esquisse de solution
- Appuyer
C-g
ensuite sur «Mx ediff-current-file» fait l'affaire, au prix de quelques frappes. - Le but ici serait d'exécuter
ediff-current-file
sur une touche à l'invite ci-dessus.
la source
Réponses:
en cherchant "vraiment éditer le tampon" dans la source emacs j'ai trouvé la fonction
ask-user-about-supersession-threat
dans le fichieruserlock.el
.Il semble simple d'ajouter un
d
choix pour appelerediff-current-file
. Cependant, je n'ai pas testé cela de manière approfondie (modifications marquées de;;-
commentaires).la source