GAZETTE N°25: EMACSulation

EMACSulation

Par Éric Marsden, emarsden@mail.dotcom.fr

Adaptation française de l'auteur.


Précédent Suivant Table des matières

3. EMACSulation

Cette rubrique est destinée à favoriser à une bonne utilisation d'Emacs, ce merveilleux éditeur de texte. Dans chaque numéro, je compte présenter une extension d'Emacs qui permettra d'augmenter votre productivité, de faire reculer le chômage et de rendre les filles plus jolies.

3.1 Le paquetage jka-compr

Présentation

jka-compr est un paquetage écrit par Jay K. Adams. Il permet à Emacs de traiter les fichiers compressés de manière transparente. Lorsqu'on ouvre un fichier compressé, Emacs le décompresse automatiquement avant de l'afficher à l'écran. Si l'on modifie ce fichier, et que, par la suite, on sauvegarde celui-ci, il sera compressé par Emacs avant d'être écrit sur le disque. Pour activer jka-compr, il suffit d'ajouter les lignes suivantes à votre fichier de configuration (qui s'appelle normalement ~/.emacs) :

    (require 'jka-compr)
    (toggle-auto-compression 1 t)

jka-compr fonctionne en examinant l'extension du fichier à ouvrir. Il reconnaît, dans sa configuration par défaut, les fichiers .gz (gzip) et .Z (compress). Il sait également traiter les fichiers .tgz, qu'il décompresse avant de passer la main à tar-mode, un mode Emacs permettant d'examiner le contenu d'archives tar. Si vous utilisez d'autres programmes de compression, vous pouvez personnaliser Emacs pour qu'il reconnaisse, par exemple, les fichiers bzip2 de \em/Julian Seward/ (programme de compression plus rapide, et légèrement plus efficace que gzip, sous GPL) vous pourriez ajouter les lignes suivantes à votre .emacs (avant de charger jka-compr) :

    (setq jka-compr-compression-info-list
      '(["\\.Z\\(~\\|\\.~[0-9]+~\\)?\\'"
         "compressing" "compress" ("-c")
         "uncompressing" "uncompress" ("-c")
         nil t]
        ["\\.tgz\\'"
         "zipping" "gzip"("-c" "-q")
         "unzipping" "gzip" ("-c" "-q" "-d")
         t nil]
        ["\\.gz\\(~\\|\\.~[0-9]+~\\)?\\'"
         "zipping"        "gzip"         ("-c" "-q")
         "unzipping"      "gzip"         ("-c" "-q" "-d")
         t t]
         ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'"
          "bzipping"      "bzip2"        ()
          "bunzipping"    "bzip2"        ("-d")
          nil t]))

Comment ça marche ?

Les paquetages comme jka-compr sont écrits en Emacs Lisp, (em/elisp/) : vous pouvez lire le code source dans le répertoire /usr/local/lib/emacs/${VERSION}/lisp/jka-compr.el pour GNU Emacs, ou /usr/local/lib/xemacs-${VERSION}/lisp/packages/jka-compr.el pour les utilisateurs d' XEmacs (si vous utilisez une distribution Red Hat, il vous faudra installer le paquetage emacs-el pour obtenir les fichiers sources). Comment un tel paquetage peut-il modifier le comportement d'Emacs à un niveau aussi bas que la lecture et l'écriture des fichiers ? La réponse vient du concept de hook.

La plupart des fonctions de bas niveau de l'éditeur (qui sont écrites en langage C) ont un hook (crochet) qui leur est associé, auquel des fonctions de plus haut niveau (écrites en Emacs Lisp) peuvent être attachées. Les hooks sont fondamentaux dans la personnalisation d'Emacs, et permettent à l'utilisateur de modifier le comportement par défaut de l'éditeur afin de répondre à des besoins que ses auteurs n'auraient pu imaginer. Les hooks sont expliqués dans les manuels d'Emacs et d'Emacs Lisp,disponibles en ligne depuis l'éditeur en tapant C-h i (ou depuis la barre de menu Help -> Browse Manuals, ou (beurk!) le toolbar de XEmacs).

Le hook after-init-hook, par exemple, est exécuté immédiatement après qu'Emacs ait été lancé et ait lu son fichier d'initialisation. Supposons que nous voulions que Emacs nous affiche un fortune cookie au démarrage. Il suffit alors d'ajouter les lignes suivantes à .emacs :

    
   (add-hook 'after-init-hook
      (function
       (lambda ()
         (pop-to-buffer (get-buffer-create " *Fortune*"))
         (shell-command "fortune -a" t))))

3.2 La prochaine fois ...

Dans le prochain numéro, je traiterai d'ange-ftp, qui permet à Emacs de voir l'Internet comme un gigantesque système de fichiers virtuel. N'hésitez par à me contacter à emarsden@mail.dotcom.fr si vous avez des commentaires, corrections ou suggestions. 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 (et même pour certaines plate-formes qui ne sont pas dignes de ce nom). Cependant, et tant qu'un des logiciels phares du mouvement pour le logiciel libre, l'un des plus puissants, complexes et paramètrables, je sens qu'il a sa place dans la Linux Gazette.


Précédent Suivant Table des matières

Copyright (c) 1998, Eric Marsden. Publié dans le n°25 de la « Linux Gazette », Février 1998.

Adaptation française de l'auteur.