Par Eric Marsden, emarsden@mail.dotcom.fr
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.
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]))
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
écrits en langage C) ont un hook qui leur est associé, auquel des
fonctions de plus haut niveau (écrits en Emacs Lisp) peuvent être
attachés. Les hooks sont fondamentaux dans la personnalisation
d'Emacs, et permettent à l'utilisateur de modifier le comportement par
défaut de l'éditeur dans des sens qui n'auraient pas été imaginés par
ses auteurs. Les hooks sont expliqués dans les manuels de Emacs et de
Emacs Lisp, qui sont 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))))
Dans le prochain numéro, je parlerai de 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.
Cet article est parue pour la première fois dans le numéro 25 du Linux Gazette (en anglais). Traduction effectuée par l'auteur avec l'aide de Eric Jacobini.