EMACSulation
Par Eric Marsden
Adaptation française : Éric Jacoboni
Précédent Suivant Table des Matières
1. EMACSulation
Cette rubrique explique comment tirer le meilleur parti d'Emacs, ce merveilleux éditeur de texte. Dans chaque numéro, je présenterai une extension d'Emacs qui augmentera votre productivité, l'ensoleillement et la belle couleur verte de l'herbe.1.1 ediff : une interface de diff et patch pour Emacs
Ne lisez plus jamais cette sortie de diff !
Appliquez les patchs interactivement !
Fusionnez facilement !
ediff
est un paquetage puissant, écrit par Michael Kifer, qui permet de naviguer à travers les différences entre les fichiers et les répertoires, de fusionner les fichiers qui ont été revus par ceux qui travaillent avec vous et d'appliquer des patchs de façon interactive. Commençons par son utilisation la plus simple : la mise en évidence des différences entre deux versions d'un fichier texte. TapezM-x ediff
, ou choisissezTools -> Compare -> Two Files
à partir du menu d'XEmacs.ediff
vous demandera les noms de deux fichiers à comparer, les ouvrira et « réfléchira » un peu (le temps de lancerdiff
en tâche de fond). Emacs ouvrira alors une petite fenêtre de contrôle et affichera quelque chose comme ça :
Comparaison de deux fichiers
(pour les curieux, le gestionnaire de fenêtre est une version légèrement modifiée du presque minimal
wmx
de Chris Cannam). Les zones différentes -- ou « hunks » dans le jargondiff
-- des deux fichiers sont grisées pour être mises en évidence et vous pouvez les parcourir une à une en tapantn
(next) oup
(previous) dans la fenêtre de contrôle. Le hunk actif est coloré et les mots qui diffèrent sont affichés dans une couleur différente (ce traitement est appelé « raffinage » et est réalisé par Emacs et non pardiff
). Naturellement,ediff
fonctionne mieux sous un système de fenêtrage, mais est utilisable en mode dégradé sur un terminal en mode texte.Vous pouvez utiliser vos affectations de touches dans les deux tampons comparés ; les commandes spécifiques à
ediff
doivent être saisies dans la fenêtre de contrôle. Pour obtenir de l'aide, tapez?
dans cette fenêtre, cela fera apparaitre une rassurante fenêtre d'aide comme celle ci :
Fenêtre d'aide d'
ediff
1.2 Fusion de fichiers
ediff
peut vous aider à fusionner deux fichiers pour en produire un troisième, un peu comme les commandes en lignesdiff
etmerge
. TapezM-x ediff-merge
pour entrer dans le mode fusion et entrez les deux noms de fichiers qui vous sont demandés. Le cadre Emacs sera alors divisé en trois parties : les deux fichiers à fusionner seront côte à côte dans les fenêtres appelées, respectivement,A
etB
et situées au dessus d'un tampon contenant le résultat de leur fusion. Cela devrait ressembler un peu à ça :
Fusion de fichiers.
La largeur normale de votre cadre Emacs peut être un peu juste pour faire tenir deux fichiers côte à côte, vous pouvez alors taper
m
pour élargir ce cadre.Vous pourrez alors choisir, pour chaque hunk, le fichier qui fait autorité (i.e. la version à inclure dans la fusion). Tapez
a
pour choisir la version du tampon nomméA
,b
pour l'autre et+
pour inclure les deux (vous pourrez ensuite éditer le tampon résultant de la fusion). Vous pouvez aussi fusionner des fichiers en fonction d'un ancêtre si, par exemple, deux personnes ont modifié un original commun.1.3 Patching interactif
Venons-en à l'une des utilisations les plus amusantes d'
ediff
 : l'application interactive d'un patch avec le confort apporté par Emacs. Plus de lecture des diffs « à la main », plus de bricolages avec les rejets. TapezM-x ediff-patch-file
pour lancer la fête et il vous sera demandé un nom de fichier patch et un nom de fichier à patcher. Le cadre d'Emacs sera divisé verticalement avec le fichier original au dessus et le fichier patché en dessous. Vous passez de hunk en hunk comme pour un diff et vous pouvez restaurer de façon sélective certaines régions du fichier original (annuler des parties du patch) en tapanta
.
ediff
s'intègre aussi très bien aux interfaces vers les outils de contrôle de version/configuration d'Emacs, ce qui permet de comparer les différentes versions d'un fichier. Ouvrez un fichier sous le contrôle de version (Emacs détecte cela automatiquement) et tapezM-x ediff-revision
 : il vous sera demandé les deux numéros de version à comparer.ediff
vérifiera les deux versions et lanceradiff
sur celles-ci. Cette intégration bien ficelée s'étend aux fichiers distants et compactés : vos patchs peuvent être compactés ou sur une machine distante,ediff
s'occupera de tout. Vous pouvez même (non testé !) appliquer un patch distant compressé sur une ancienne version d'un fichier compressé sur une autre machine.Je n'ai décrit que les utilisations les plus courantes d'
ediff
 : il peut aussi comparer trois fichiers (ediff3
), comparer des tampons, des contenus de répertoires, et appliquer des patchs multi-fichiers. De nombreux aspects peuvent être personnalisés.ediff
dispose d'un enregistrement de ses sessions courantes utile si vous êtes un utilisateur intensif. La documentation en ligne offre tous les renseignements nécessaires.
For they have entertained cause enoughWilliam Shakespeare, Antoine et Cléopatre
To draw their swords. But how the fear of us
May cement their divisions, and bind up
The petty difference we yet not know.
Be't as our gods will have't! It only stands
Our lives upon to use our strongest hands.1.4 Réactions
Quelques personnes m'ont signalé que
ffap
n'est pas inclus avec les deux Emacs, ainsi que je le prétendais dans l'article du mois dernier, mais seulement avec GNU Emacs. Les utilisateurs d'XEmacs peuvent obtenir la dernière version sur le site FTP de Michelangelo Grigni (son auteur). J'ai aussi attribué à tort un message de Christopher B. Smith à un autre utilisateur Linux, Christopher B. Browne ; mes excuses aux deux Christopher.1.5 La prochaine fois...
Le mois prochain, je traiterai d'
emacsclient/gnuserv
, un mécanisme permettant d'envoyer des instructions à un processus Emacs. N'hésitez pas à me contacter et à m'envoyer vos commentaires, corrections ou suggestions (quel est votre paquetage « je-ne-pourrais-vivre-sans » favori pour Emacs ?).C-u 1000 M-x hail-emacs
!PS : Emacs n'est, en aucune manière, limité à Linux, puisqu'il existe des implantations pour un grand nombre d'autres systèmes d'exploitation (certaines fonctionnent assez mal). Cependant, en tant qu'un des logiciels phares du mouvement pour le logiciel libre, l'un des plus puissants, complexes et paramétrables, je pense qu'il a sa place dans la Linux Gazette.
Précédent Suivant Table des Matières
Copyright (c) 1998, Éric Marsden - paru dans le numéro 27 de la Linux-Gazette
Adaptation française : Éric Jacoboni