Emacs il le fait !
Benjamin Drieu (bdrieu@april.org)
16 octobre 1999
Comment lire mes mails et en envoyer ? Comment lire les news ? Com-
ment manipuler les répertoires à la Midnight Commander ? Comment com-
piler sans basculer dans un terminal ? Est-ce possible de compiler un
document LaTeX sans douleur ? Comment puis-je accéder à un site FTP ?
Comment naviguer sur le web ? Comment on utilise CVS ? Existe-t-il
un agenda ? Comment imprimer un document texte ? Comment vérifier
l'orthographe de mon texte ? Où trouver un interpréteur Lisp ? Il y
a des jeux ? Comment on lance VI ? Une seule réponse à toutes ces
questions ainsi qu'à bien d'autres : ``Emacs le fait !''
______________________________________________________________________
Table des matières
1. Introduction
1.1 A propos de cette documentation
1.2 Qu'est-ce qu'(SFEmacs)SF ?
1.3 Conventions utilisées
2. Internet
2.1 Comment lire ses mails et en envoyer ?
2.1.1 Introduction
2.1.2 Mails
2.1.3 Listes de mails
2.1.4 Commandes d'envoi de mail
2.1.5 Mode mail
2.1.6 Manipulations sur fichiers (SFRMail)SF
2.1.7 Variables de (SFRMail)SF
2.1.8 RMail et (SFPop3)SF
2.1.9 BBDB
2.1.9.1 Mode BBDB
2.1.9.2 Utilisation de (SFBBDB)SF dans un lecteur
2.1.9.3 Utiliser BBDB pour envoyer des mails
2.2 Comment lire les news ?
2.2.1 Introduction
2.2.2 Utilisation
2.2.2.1 Commandes du buffer *Group*
2.2.2.2 Commandes du buffer *Summary*
2.2.2.3 Commandes de postage d'article
2.3 Comment puis-je accéder à un site FTP ?
2.4 Comment naviguer sur le web ?
3. Développement
3.1 Comment compiler sans basculer dans un terminal ?
3.2 Est-ce possible de compiler un document (SFLaTeX)SF sans douleur ?
3.3 Où trouver un interpréteur Lisp ?
3.3.1 Emacs-Lisp
3.3.2 Autres Lisps
3.4 Comment utiliser le contrôle de version ?
4. Divers
4.1 Mode tar et décompression à la volée
4.2 Et pour écouter des CD audios ?
4.3 Puis-je manipuler les répertoires à la Midnight/Norton commander ?
4.3.1 Appel de (SFdired)SF
4.3.2 Marques
4.3.3 Déplacement
4.3.4 Manipulation des fichiers
4.3.5 Commandes diverses
4.4 Est-ce qu'il existe un agenda ?
4.4.1 Calendar
4.4.1.1 Vacances
4.4.2 Diary
4.5 Comment imprimer un document texte ?
4.6 Il y a des jeux ?
4.6.1 Doctor
4.6.2 Getris
4.6.3 BlackBox
4.7 Dessiner en ASCII
4.7.1 le mode picture
4.7.2 le mode artist
4.8 Comment vérifier l'orthographe d'un texte ?
4.8.1 Ispell
4.8.2 Flyspell
4.9 Comment on lance (SFvi)SF ?
5. Conclusion
5.1 Pointeurs
6. Copyright
______________________________________________________________________
[1m1. Introduction[0m
[1m1.1. A propos de cette documentation[0m
Cette documentation n'a pas pour but d'être exhaustive, ni précise.
Je l'ai conçue comme étant une ouverture sur la face cachée d'Emacs.
Il manque cependant une partie essentielle, qui explique comment se
documenter, et trouver de l'information sur la configuration
(notamment, comment remplir et organiser son fichier .emacs). De
plus, la plupart des sections (si ce n'est toutes) manquent
cruellement d'exemples pratiques, et se limitent parfois à une simple
énumération de commandes.
Pour une utilisation [4mnormale[24m d'Emacs (en tant que traitement de
textes), je vous conseille de vous reporter à une première
documentation, disponible sur le site web d'APRIL (
). Pour une utilisation avancée
d'Emacs (programmation de macros en Lisp), reportez vous à
l'introduction à la programmation [4mEmacs-Lisp[24m disponible sur le site
ftp de Gnu ou un de ses miroirs ( ).
[1m1.2. Qu'est-ce qu'[22mEmacs ?
Emacs est un éditeur de textes interactif plein écran. Emacs signifie
[4mEditor[24m [4mMACroS[24m, et a été développé par Richard Stallman à partir de
1976 au MIT sur un projet de Guy Steele. A l'origine, Emacs était un
ensemble de macros pour l'éditeur TECO ([4mText[24m [4mEditor[24m [4mand[24m [4mCOrrector[24m) sur
un PDP-10.
Une différence majeure par rapport à d'autres éditeurs est qu'Emacs
est en fait un interpréteur [4mLisp[24m. La plupart des commandes sont des
commandes Lisp par dessus un noyau C qui gère l'affichage et
l'interprétation des commandes Lisp.
Emacs est de plus auto-documenté, ce qui facilite l'apprentissage et
permet à l'utilisateur de l'apprendre sans imprimer de manuel.
[1m1.3. Conventions utilisées[0m
· RET: frappe de la touche Enter.
· DEL: frappe de la touche Delete.
· SPC: frappe de la touche Espace.
· ESC: frappe de la touche Esc.
· C-x: frappe de la touche Ctrl et de la touche x simultanément (la
casse n'est pas importante).
· M-x: frappe différée de la touche Esc puis de la touche x, ou sur
certains claviers de la touche Alt et de la touche x simultanément
· M-x toto: même chose que précédemment, puis saisie de la séquence
de caractères toto.
· [4mchaîne[24m: une chaîne de caractères
· [4mregexp[24m: une expression régulière (en anglais, [4mregular[24m [4mexpression[24m)
[1m2. Internet[0m
[1m2.1. Comment lire ses mails et en envoyer ?[0m
Je présenterais ici RMail, mon lecteur de mails préféré. Mais il en
existe au moins deux autres tout aussi puissants si ce n'est plus : MH
et VM. Si quelqu'un est intéressé par l'écriture d'une courte
documentation sur l'un ou l'autre je suis preneur.
[1m2.1.1. Introduction[0m
RMail possède toutes les fonctionnalités d'un lecteur de mails
classique comme [4mpine[24m, [4melm[24m ou même (horreur) [4mnetscape[24m. Mais il offre
toutes les facilités d'Emacs. On invoque RMail par M-x rmail, ce qui
fait apparaître un buffer nommé RMAIL.
[1m2.1.2. Mails[0m
Les mails sont organisés en fichiers au format RMail, dont
l'utilisation est assez semblable aux [4mfolders[24m d'autres lecteurs de
mails. Il existe des commandes pour déplacer les mails d'un fichier à
un autre.
Chaque mail contenu dans un de ces fichiers peut posséder un attribut
nommé [4mlabel[24m :
· [1munseen [22m: ce mail n'a pas encore été lu
· [1mdeleted [22m: ce mail a été marqué en vue d'un effacement
· [1mfiled [22m: ce mail a été copié dans un autre folder ou un fichier
· [1manswered [22m: l'utilisateur a répondu à ce mail
· [1mforwarded [22m: l'utilisateur a envoyé ce mail à une autre personne
· [1medited [22m: ce mail a été édité
· [1mresend [22m: ce mail a déjà été envoyé plusieurs fois à cause d'erreurs
· un label spécifié par l'utilisateur afin de classer ses mails
Le déplacement dans un message se fait grâce aux commandes standards
d'Emacs dans le buffer RMAIL, ou à l'aide des commandes suivantes :
· SPC: descend d'une page (comme C-v)
· DEL: monte d'une page (comme M-v)
· .: va au début du message (comme M-<)
[1m2.1.3. Listes de mails[0m
Les mails peuvent être visualisés dans une liste (buffer RMAIL-
summary). Cette liste permet de voir la date d'un mail, ainsi que son
expéditeur et son sujet. Le déplacement dans cette liste permet
d'activer chacun des mails existants, et de lui appliquer des
commandes :
· d: marque le message comme à détruire
· u: enlève la marque de destruction du message
· x: détruit les messages marqués (purge)
· n: lit le message suivant
· p: lit le message précédent
· >: lit le dernier message
· <: lit le premier message
· M-s [4mregexp[24m: cherche parmi les messages suivants celui contenant
l'expression régulière [4mregexp[0m
[1m2.1.4. Commandes d'envoi de mail[0m
· m: envoi d'un nouveau mail, saisi dans un buffer en mode mail
(*mail*)
· r: réponse au mail sélectionné
· f: [4mforward[24m d'un mail sélectionné
· M-m: tente d'expédier à nouveau un mail dont l'expédition n'a pas
réussi
[1m2.1.5. Mode mail[0m
A faire...
[1m2.1.6. Manipulations sur fichiers[22mRMail
RMail conserve ses mails dans des fichiers au format [4mRMail[24m. Emacs
permet des manipulations sur ces fichiers, comme l'import de fichiers
RMail ou l'export vers un autre fichier.
· i [4mfichier[24m: lance RMail sur ce fichier. Ceci permet de consulter
des folders différents
· o [4mfichier[24m: exporte le fichier au format [4mRMail[0m
· C-o [4mfichier[24m: exporte le fichier au format mail natif du système
· w: extrait le corps du message dans un fichier dont le nom est le
sujet
[1m2.1.7. Variables de[22mRMail
Ces variables sont à fixer dans le fichier d'initialisation d'Emacs
(.emacs) pour être prises en compte à chaque démarrage.
· rmail-delete-after-output: si cette variable est fixée à t, alors
tout mail exporté dans un fichier est marqué automatiquement comme
à effacer
· rmail-file-name: cette variable est le nom du fichier qui contient
les mails reçus lors de la consultation de la boîte aux lettres
· rmail-primary-inbox-list: cette variable permet d'utiliser
plusieurs fichiers comme boîtes aux lettres. Par exemple :
("/var/mail/drieu" "/var/mail/http")
· rmail-output-file-alist: cette variable permet de fixer les
fichiers dans lesquels un mail sera exporté par défaut. C'est une
liste d'éléments ([4ma-list[24m) au format: "([4mregexp[24m . [4mnom[24m)". Par
exemple:
(("^From: celine@" . "~/Mail/Celine") ; Mails de Céline
("^\\(From\\|To\\): .*@risc-tech\\.com" . "~/Mail/Risc") ; Mails professionnels
("^Subject: \\[GTK\\]" . "~/Mail/Gtk")) ; Mailing-list GTK
· rmail-preserve-inbox: si cette variable est fixée à nil, alors les
messages contenus dans le fichier lu par RMail au démarrage
(généralement /var/mail/[4mlogin[24m) sont effacés à chaque fois que RMail
effectue une lecture dessus.
[1m2.1.8. RMail et[22mPop3
Emacs peut encore faire plus fort : il connaît le protocole Pop3 par
le biais de [4mmovemail[24m, et permet ainsi à l'utilisateur d'accéder à son
courrier par un serveur de mails. L'utilisation de Pop3 se fait de
manière transparente. Pour que cela fonctionne correctement, il est
nécessaire de passer par quatre étapes :
1. Le premier pas est de compiler Emacs avec l'option [4mmovemail[24m. Cela
se fait au moment de la configuration du logiciel, en passant
l'argument --with-pop3 au script configure. Par exemple :
___________________________________________________________________
./configure --with-pop3
___________________________________________________________________
2. Emacs fera ensuite appel au programme [4mmovemail[24m pour rapatrier les
mails à partir du serveur Pop3. Il est donc nécessaire de
l'installer (c'est un programme relativement standard, il devrait
déja être installé sur votre station).
3. Ensuite, il est nécessaire de spécifier quel est le serveur de
mails utilisé. Affecter une valeur à la variable d'environnement
MAILHOST suffit à satisfaire ce besoin. Par exemple :
___________________________________________________________________
export MAILHOST=mailhost.cs.univ-paris8.fr
___________________________________________________________________
4. Ensuite, il suffit de préciser à Emacs où télécharger le mail. La
variable rmail-primary-inbox-list le permet. C'est elle qui
spécifie à Emacs où trouver les fichiers contenant les mails
(boîtes aux lettres).
La syntaxe d'une boite aux lettres accessible par Pop3 est
spéciale. Elle est : "po:[4mutilisateur[24m". Lorsque RMail essaiera de
lire ce fichier, il s'authentifiera sur le serveur spécifié par la
variable MAILHOST, avec comme nom d'utilisateur [4mutilisateur[24m.
Le serveur de mail demandera alors un mot de passe, qui est
renseigné par la variable rmail-pop-password. Si vous l'insérez
dans votre fichier d'initialisation et que vous partagez votre
poste de travail avec d'autres utilisateurs, n'oubliez pas de
prendre les mesures de sécurité nécessaires.
Par exemple, si je veux à la fois lire mon mail local, et utiliser
mon compte [4mbenj[24m sur le serveur de mail, j'insère dans mon fichier
.emacs :
___________________________________________________________________
(set-variable 'rmail-primary-inbox-list '("var/mail/drieu"
"po:benj"))
(set-variable 'rmail-pop-password "rêvetoujoursmonami")
___________________________________________________________________
[1m2.1.9. BBDB[0m
BBDB (``Big Brother Database'') est une base de données [4mrolodex[0m
intégrée aux lecteurs de mails et de news d'Emacs. Son but est de
permettre de tenir à jour une liste de personnes (carnet d'adresses).
Des informations peuvent être trouvées sur BBDB à l'URL
, notamment les variables permettant de
personnaliser le mode BBDB afin de répondre aux besoins de
l'utilisateur.
La base de données de BBDB est composée d'un [4menregistrement[24m (ensemble
de variables) par personne. Chaque enregistrement contient par défaut
plusieurs champs:
· name : le nom complet de la personne
· AKA : surnom de la personne
· company : société ou raison sociale
· net : adresse électronique
· adress : adresse physique
· phone : numéro de téléphone
· notes : notes sur la personne
La base de données est enregistrée dans le fichier ~/.bbdb (ce nom
peut être modifié grâce à la variable bbdb-file), et peut être éditée
manuellement (il s'agit de code Lisp).
[1m2.1.9.1. Mode BBDB[0m
Le mode BBDB permet d'éditer la base de données. Il permet d'apporter
des modifications aux champs de la base par le biais du buffer *BBDB*,
qui est normalement créé grâce à la fonction bbdb (appel par M-x
bbdb).
Cette fonction demande une expression régulière qui permet de filtrer
la consultation des enregistrements.
Les commandes du mode BBDB sont :
· n : déplace le point sur l'enregistrement suivant
· p : déplace le point sur l'enregistrement précédent
· e : édite le champ courant (situé sous le point)
· ; : édite les notes d'un enregistrement
· d : retire l'enregistrement de la base (notons que cela n'est pas
définitif tant que la base n'a pas été enregistrée)
· t : bascule entre un affichage mono-ligne et un affichage multi-
ligne de l'enregistrement. Dans le cas où cette fonction est
appelée avec l'argument t (par exemple dans le fichier
d'initialisation), tous les enregistrements sont concernés
· s : enregistre la base de données dans le fichier spécifié par la
variable bbdb-file
· i : affiche le fichier info du mode BBDB (s'il a été installé)
· q : fait disparaître le buffer *BBDB* sans pour autant le détruire
[1m2.1.9.2. Utilisation de[22mBBDB dans un lecteur
BBDB est interfaçable avec les lecteurs de mails les plus courants
d'Emacs (RMail, VM, MH, Gnus). Son utilisation est très simple, et se
fait par le biais de deux raccourcis communs à tous ces lecteurs de
mails :
· : : cette fonction permet de visualiser l'enregistrement
correspondant à l'expéditeur du mail sélectionné. Si aucun
enregistrement ne correspond à l'expéditeur, alors BBDB demande la
création d'un enregistrement
· ; : cette fonction permet de modifier les notes d'un
enregistrement. Si aucun enregistrement ne correspond à
l'expéditeur du mail, alors BBDB demande la création d'un
enregistrement
BBDB est également capable de créer automatiquement des
enregistrements à chaque fois qu'il reçoit un mail d'une personne
inconnue (ce que je déconseille personnellement).
[1m2.1.9.3. Utiliser BBDB pour envoyer des mails[0m
L'interface d'envoi de mails sous Emacs permet également d'utiliser
les possibilités de BBDB, qui sert alors de carnet d'adresses.
L'intérêt est de compléter l'adresse de destination du mail à partir
d'un mot-clef. Ceci est possible en utilisant le raccourci M-TAB
après avoir saisi une chaîne de caractères dans le champ "To:" de la
composition. BBDB consulte alors tous les champs de sa base de
données, et dans le cas où un seul champ complète la chaîne, le champ
net de l'enregistrement concerné remplace la chaîne saisie. En cas
d'ambiguïté, un buffer propose les différentes solutions possibles.
[1m2.2. Comment lire les news ?[0m
Gnus est un lecteur de news écrit en [4mEmacs-lisp[24m. Il est conçu pour
lire les forums d'[4mUsenet[24m, pour y poster et même pour lire son mail.
Gnus s'exécute par M-x gnus, ce qui fait apparaître une splendide
image de Gnu.
[1m2.2.1. Introduction[0m
Pour lire les news, Gnus ouvre plusieurs buffers:
· le buffer *Group*: il permet de naviguer à travers les groupes de
news. Il permet aussi de trier les groupes et de les manipuler:
souscription, ...
· le buffer *Summary*: il contient le sommaire de tous les articles
contenus dans un groupe de news. Il est créé lors de la
consultation d'un groupe de news.
· le buffer *Article*: il affiche un article, et est créé par une
commande effectuée dans le buffer *Summary*.
[1m2.2.2. Utilisation[0m
Gnus lit au démarrage le fichier .newsrc du répertoire racine de
l'utilisateur. Ce fichier permet de savoir à quels groupes il a
souscrit, et lesquels il a décidé de ne pas lire (groupes [4mkilled[24m).
La lecture de news se fait en deux étapes:
· la sélection de groupes dans le buffer *Group*. Elle permet de
consulter les différents groupes disponibles sur le serveur de
news.
· la sélection d'articles dans le buffer *Summary*. Chaque article
est contenu par un groupe d'articles (ou [4mthread[24m), organisé selon
les réponses que l'article a reçu.
[1m2.2.2.1. Commandes du buffer *Group*[0m
· q: quitte le mode [4mgnus[24m, et met à jour le fichier .newsrc
· L: liste tous les groupes, sauf ceux qui ont été marqués comme
étant à ignorer ([4mkilled[24m) par l'utilisateur
· l: liste tous les groupes auxquels a souscrit l'utilisateur et qui
contiennent des articles non encore lus
· u: souscrit ou annule la souscription (selon le cas) du groupe
sélectionné
· SPC: crée un buffer *Summary* qui liste tous les articles du groupe
sélectionné
[1m2.2.2.2. Commandes du buffer *Summary*[0m
Notons que toutes ces commandes peuvent aussi s'exécuter dans le
buffer *Article*.
· q: quitte le buffer *Summary* pour retourner sur le buffer *Group*.
Utiliser q une deuxième fois quitte [4mgnus[0m
· n: déplace la sélection sur le prochain article non lu
· p: déplace la sélection sur l'article non lu précédent
· SPC: fait défiler le buffer *Article* d'une page vers le bas, et
sélectionne l'article suivant si le buffer *Article* est à la fin
· DEL: fait défiler le buffer *Article* d'une page vers le haut, et
sélectionne l'article précédent si le buffer *Article* est déjà au
début
· M-s [4mregexp[24m: recherche dans le buffer *Summary* des articles
contenant l'expression régulière [4mregexp[0m
[1m2.2.2.3. Commandes de postage d'article[0m
· a: poste un nouvel article, par défaut dans le groupe courant
· f: poste un article en réponse à l'article sélectionné
· F: poste un article en réponse à l'article sélectionné, et insère
l'article en question précédé par des ">" (ce signe est réglable
par la variable [4mmail-yank-prefix[24m)
· r: répond par mail à l'auteur de l'article sélectionné
· R: répond par mail à l'article sélectionné, et insère l'article en
question précédé par des "> " (ce signe est réglable par la
variable [4mmail-yank-prefix[24m)
[1m2.3. Comment puis-je accéder à un site FTP ?[0m
FTP est un protocole permettant le transfert de fichiers à travers
Internet entre un [4mclient[24m et un [4mserveur[24m. Il permet par le biais d'un
client et d'un jeu de commandes réduit d'accéder à un disque distant.
Les commandes de base sont ls, cd, chmod, et des commandes
supplémentaires permettent de transférer des fichiers entre le client
et le serveur.
Ange-FTP est un mode d'Emacs qui permet d'utiliser FTP d'une manière
transparente. Sa puissance est de pouvoir être couplé à l'utilisation
de Dired (voir section ``Dired'' pour plus de détails). En fait,
Ange-FTP se contente de se [4mlogger[24m sur un serveur FTP en utilisant le
nom de l'utilisateur, et en effectuant une liste des fichiers
présents, qu'il passe ensuite à dired.
Ange-FTP est invoqué en ouvrant un fichier dont le nom suit une
syntaxe spéciale, de quelque manière que ce soit (ouverture,
enregistrement, ...). Son utilisation est transparente : on peut très
bien éditer les fichiers d'un site web à partir de sa station, ou
utiliser dired en conjonction avec Ange-FTP pour manipuler facilement
une arborescence.
La syntaxe reconnue par Ange-FTP est /[4mlogin[24m@[4msite[24m:[4mchemin[24m. Lorsqu'un
fichier sera ouvert ou sauvegardé sous un nom suivant cette syntaxe,
alors Ange-FTP entrera en action, et rapatriera le fichier désigné ou
mettra à jour le serveur.
Par exemple, pour ouvrir un buffer en mode dired sur le site
ftp.lip6.fr afin de lister le répertoire /pub/emacs/elisp, il suffit
d'ouvrir /ftp@ftp.lip6.fr:/pub/emacs/elisp/.
Notons que le mode Ange-FTP bloque totalement Emacs lors du
téléchargement d'un fichier. Le mode EFS, présenté comme le
successeur de Ange-FTP (A faire...) permettra de corriger cet
inconvénient.
[1m2.4. Comment naviguer sur le web ?[0m
Emacs fournit un navigateur Internet appelé w3-Emacs. Dans sa version
texte, il ressemble quelque peu à Lynx. Dans sa version XEmacs les
images sont incluses et le résultat est quelque peu similaire à celui
de Mosaic. w3-Emacs est certes textuel, mais il reconnaît les tables
et les frames.
W3-emacs est un énorme programme. Sa configuration est déroutante si
on n'est pas habitué à [4mEmacs-Lisp[24m. C'est pourquoi je recommande à
toute personne désirant en savoir plus de visiter le site
.
Une fois que w3-Emacs est installé et configuré correctement, son
utilisation est simple. Son appel se fait par l'intermédiaire de la
commande w3. La navigation d'un lien à un autre se fait par
l'intermédiaire de la touche TAB (lien suivant) ou S-TAB (lien
précédent). Cliquer avec le bouton du milieu de la souris sur un lien
hypertexte permet de le suivre et d'afficher la page HTML liée dans un
nouveau buffer.
Principales commandes de w3 :
· C-o : demande une URL et ouvre la page correspondante dans un
nouveau buffer
· DEL : fait défiler la page d'un écran vers le haut
· SPC : fait défiler la page d'un écran vers le bas
· B : retourne à l'URL précédente dans la navigation
· F : passe à l'URL suivante dans la navigation
· v : affiche l'URL du document dans la zone d'écho
· s : affiche le source du document dans un autre buffer
· r : recharge le document
· d : télécharge ce document
· q : quitte le buffer
Il existe bien d'autres commandes dans le mode w3 (notamment la
gestion des bookmarks, de l'historique, ...). Je conseille à toute
personne intéressée de consulter la documentation en ligne Info
d'Emacs.
[1m3. Développement[0m
[1m3.1. Comment compiler sans basculer dans un terminal ?[0m
La compilation de programmes s'effectue généralement par
l'intermédiaire du programme make (voir
).
Emacs fournit une interface de compilation, qui s'exécute par le biais
de la commande compile (M-x compile). Une fenêtre contenant le buffer
*compilation* apparaît alors, et affiche la sortie standard de la
compilation. Il peut être utile de créer un raccourci pour compile au
moyen de local-set-key ou de global-set-key (j'utilise personnellement
C-c RET).
L'intérêt de cette interface est la gestion des erreurs. Lorsque la
compilation ne réussit pas, une convention est que le compilateur
affiche un message d'erreur du type :
______________________________________________________________________
client.c:33: parse error before `{'
______________________________________________________________________
Emacs analyse cette ligne, et peut en déduire qu'il y a une erreur
dans le fichier client.c à la ligne 33. Les différentes erreurs sont
répertoriées, ce qui autorise alors le mode compilation à proposer une
navigation dans celles-ci ainsi que des liens vers les fichiers
concernés.
Le mode compilation possède les raccourcis suivants :
· ESC { : permet de déplacer le [4mpoint[24m sur le fichier précédent
contenant une erreur
· ESC } : permet de déplacer le [4mpoint[24m sur le prochain fichier
contenant une erreur
· ESC p : permet de déplacer le point sur l'erreur précédente
· ESC n : permet de déplacer le point sur l'erreur suivante
· C-c C-k : arrête la compilation
· C-c C-c ou RET : ouvre le fichier se trouvant sous le point dans
une nouvelle fenêtre, et déplace le point dans cette fenêtre à la
ligne fautive
[1m3.2. Est-ce possible de compiler un document[22mLaTeX sans douleur ?
Emacs fournit bien sûr un mode LaTeX, et une des possibilités de ce
mode est la compilation du fichier édité : Emacs permet de lancer un
processus de compilation sur le buffer courant ou sur une région.
Commandes LaTeX :
· C-c C-b : invoque LaTeX sur le [4mbuffer[24m courant
· C-c TAB : invoque BibTex sur le [4mfichier[24m courant
· C-c C-f : invoque LaTeX sur le [4mfichier[24m courant
· C-c C-k : arrête le processus de compilation LaTeX
· C-c C-v : visualise le fichier de sortie de la dernière commande de
compilation LaTeX (xdvi, spécifié par la variable tex-dvi-view-
command)
· C-c C-p : imprime le fichier de sortie de la dernière commande de
compilation LaTeX (lpr, spécifié par la variable tex-dvi-print-
command)
· C-c C-q : affiche la queue d'impression (lpq)
Afin de faciliter l'édition de documents, le mode LaTeX propose deux
raccourcis pour insérer les commandes LaTeX begin (C-c C-o) et end (C-
c C-e).
[1m3.3. Où trouver un interpréteur Lisp ?[0m
[1m3.3.1. Emacs-Lisp[0m
Emacs est un éditeur de textes basé sur le langage Lisp. Il est donc
normal qu'il fournisse une excellente interface de développement Lisp.
Le langage utilisé est un dialecte de Common-Lisp : l'Emacs-Lisp.
Emacs fournit un mode majeur pour éditer toutes sortes de codes Lisp,
mais il possède également un mode Emacs-Lisp, qui propose de plus
l'évaluation d'expressions ([4msexps[24m).
Il existe plusieurs façons d'utiliser ce mode :
· utiliser M-x ielm (Interactive Emacs Lisp Mode), qui crée un buffer
*ielm*, où l'utilisateur peut entrer interactivement des
instructions Emacs-Lisp qui seront évaluées au fur et à mesure de
leur saisie.
· basculer dans le buffer *scratch*, qui est normalement créé au
démarrage de toute session Emacs, et qui est par défaut en mode
Emacs-Lisp.
· ouvrir ou créer un fichier dont l'extension est .el, ce qui fait
basculer le buffer en mode Emacs-Lisp. Ceci est spécifié par la
variable auto-mode-alist.
Emacs permet d'évaluer des expressions Lisp de plusieurs manières :
· M-x eval-buffer permet d'évaluer le buffer tout entier. C'est un
bon moyen de charger un fichier Emacs-Lisp.
· M-C-x permet d'évaluer l'expression située sur le point ou juste
avant. Avec un argument, cette commande imprime le résultat dans
le buffer courant au niveau du point.
· C-x C-e permet d'évaluer la dernière expression Lisp. Avec un
argument, cette commande imprime le résultat dans le buffer courant
au niveau du point.
[1m3.3.2. Autres Lisps[0m
Emacs offre des interfaces avec d'autres lisps.
A faire...
[1m3.4. Comment utiliser le contrôle de version ?[0m
VC (Version Control) vous permet d'utiliser un système de contrôle de
version directement sous Emacs. VC fournit une interface uniforme
quelque soit le système de contrôle de version qui est utilisé (RCS,
CVS et SCCS). Les commandes de VC sont conceptuellement proches des
commandes RCS, ainsi presque tout ce que vous pouvez faire avec RCS
peut être fait à travers VC.
RCS utilise normalement le [4mlocking[24m, c'est-à-dire qu'une seule personne
peut modifier un fichier. Pour cela, les fichiers de travail sont en
mode lecture seule. Si vous souhaitez apporter des modifications et
les intégrer au [4mmaster[24m (le fichier qui contient l'istorique des
modifications), vous devez demander au système de contrôle de rendre
le fichier de travail accessible en écriture pour vous et le
vérouiller. Un seul et unique utilisateur peut faire cela à un
instant donné. Lorsque vous validerez vos modifications (par un
checkin), le fichier sera dévérouillé, et le fichier de travail de
nouveau en lecture seule.
Une fois que vous avez créé un fichier, vous devez l'enregistrer dans
le système de contrôle de version par la commande M-x vc-register (C-x
v i) qui crééra le fichier master (dont le nom se termine par ,v)
correspondant au fichier édité. Le fichier master représente l'état
actuel du fichier plus tous les historiques de changement, ainsi que
les entrées de journalisation decrivant en quelques mots les
modifications apportées pour chaque version du fichier. Ainsi, si vous
éditez le fichier foo.c, la commande vc-register crééra le fichier
foo.c,v.
Ensuite, chaque fois que vous visiterez un fichier qui est sous le
sytème de contrôle, Emacs l'indiquera par exemple avec RCS-1.2 dans la
fenêtre d'état (signalant ainsi que la version du fichier est la 1.2).
Le caractère entre RCS et le numéro de version indique le status du
fichier. `-' signifie que le fichier n'est pas vérouillé (si le
locking est utilisé) ou n'est pas modifié (si le locking n'est pas
utilisé). `:' indique que le fichier est vérouillé, ou qu'il est
modifié. Si le fichier est vérouillé par un autre utilisateur (par ex,
benj), c'est indiqué comme suit `RCS:benj:1.2'.
Si vous avez créé un fichier, enregistré sous le système de contrôle
et que vous voulez y apporter des modifications, vous ouvrez donc le
fichier (C-x C-f). Le fichier de travail étant en lecture seule, vous
ne pouvez pas le modifier. Vous devez d'abord vérouiller le fichier
(M-x vc-toggle-read-only, C-x C-q). Vous apportez des modifications,
et une fois que vous voulez les intégrer dans le master, vous utilisez
la commande vc-next-action (C-x v v). Celle-ci ouvrira un buffer pour
que vous puissez entrer le message de journalisation ([4mlog[24m) indiquant
en quelques mots les raisons des modifications. Pour valider, tapez
C-c C-c (M-x compile).
En fait, la commande C-x v v peut suffire pour la plupart des
opérations, une fois un fichier enregistré auprès du système de
contrôle. L'action entrainée par cette commande dépendra de l'état du
fichier et du fait que le système de contrôle de version utilise le
locking ou non.
Pour une documentation sur le contrôle de version indépendant d'Emacs,
voir la page du groupe de documentation APRIL (
)
[1m4. Divers[0m
[1m4.1. Mode tar et décompression à la volée[0m
A faire...
[1m4.2. Et pour écouter des CD audios ?[0m
Il est possible d'écouter des CD audios en utilisant le programme
workbone, qui peut-être interfacé avec Emacs par le biais d'un petit
programme Emacs-Lisp disponible sur . Cette interface s'exécute par le
biais de la fonction workbone (M-x workbone).
Les commandes sont :
· C-x w p [4mn[24m : joue la piste numéro [4mn[0m
· C-x w + [4mn[24m : augmente le son (nécessite l'installation du programme
[4mvolume[24m)
· C-x w - [4mn[24m : diminue le son (nécessite l'installation du programme
[4mvolume[24m)
· C-x w 9 : exécute la lecture du CD (effectué automatiquement au
démarrage)
· C-x w 8 : effectue ou arrête une pause dans la lecture
· C-x w 7 : arrête la lecture du CD
· C-x w 6 : joue le morceau suivant
· C-x w 5 : recommence le morceau courant
· C-x w 4 : joue le morceau précédent
· C-x w 3 : avance la lecture du morceau de 15 secondes
· C-x w 2 : éjecte le CD
· C-x w 1 : fait reculer la lecture de 15 secondes
· C-x w 0 : quitte le processus sans arrêter la lecture
[1m4.3. Puis-je manipuler les répertoires à la Midnight/Norton commander[0m
[1m?[0m
Norton commander est un logiciel sous DOS permettant de remplacer à
peu près un [4mshell[24m. Midnight Commander est un équivalent libre sous
Unix de ce logiciel propriétaire. La plupart des opérations offertes
par MC sont des opérations de manipulation de fichiers ou de
répertoires.
Emacs permet d'effectuer ce type d'opérations par le biais du mode
dired. Dired recense tous les fichiers d'un répertoire dans un
buffer, et permet d'appliquer des opérations à chacun d'entre eux. La
plupart des commandes du mode text sont disponibles dans ce buffer,
plus des commandes propres au mode dired.
[1m4.3.1. Appel de[22mdired
Dired est invoqué par :
· C-x d, ou par M-x dired. L'utilisateur doit spécifier un
répertoire à lister.
· l'[4mouverture[24m d'un répertoire, par le biais de C-x C-f (find-file).
Notons qu'Emacs préfère que l'utilisateur oublie le slash ('/')
final. Si l'utilisateur l'inclut dans le nom du répertoire, Emacs
ne créera pas de buffer accueillant le mode dired, mais basculera
vers un buffer contenant un fichier se situant dans le répertoire
s'il en existe un.
[1m4.3.2. Marques[0m
Les opérations sur les fichiers du mode dired se font soit sur le
fichier courant (celui sur lequel est le [4mpoint[24m), soit sur un groupe de
fichiers (ce qui nécessite de pouvoir marquer les fichiers sur
lesquels les commandes vont agir).
Différentes commandes du mode dired permettent d'effectuer ce marquage
:
· * : marque les fichiers exécutables
· / : marque les répertoires
· @ : marque les liens symboliques
· m : marque le fichier courant
· u : retire la marque du fichier courant
· DEL : retire la marque du fichier précédent, et déplace le point
sur ce fichier
· M-DEL : supprime les marques de tous les fichiers du répertoire
· % m [4mregexp[24m : marque tous les fichiers dont le nom [4mmatche[24m une
expression régulière
D'autres marques existent (fichier copié, fichier renommé, ...), et la
plus utile à manipuler est la marque [4mà[24m [4meffacer[24m :
· D : permet de désigner le fichier courant comme fichier à effacer
· # : marque les fichiers de sauvegarde automatique d'Emacs
(commençant par un [4mdièse[24m) comme fichiers à effacer
· ~ : marque les fichiers de backup d'Emacs (finissant par un [4mtilde[24m)
comme fichiers à effacer
· % d : marque comme à effacer tous les fichiers dont le nom [4mmatche[0m
une expression régulière
[1m4.3.3. Déplacement[0m
· n : déplace le point sur le fichier suivant
· p : déplace le point sur le fichier précédent
· M-{ : déplace le point sur le fichier marqué précédent
· M-} : déplace le point sur le fichier marqué suivant
[1m4.3.4. Manipulation des fichiers[0m
L'intérêt du mode dired est d'appliquer des commandes aux fichiers,
dont la plupart peuvent remplacer avantageusement les commandes
rentrées sous un [4mshell[24m. Toutes les commandes suivantes s'appliquent
soit sur le fichier courant (sous le point) si aucun fichier n'est
marqué, soit sur tous les fichiers marqués.
· ! : demande puis exécute une commande [4mshell[24m sur les fichiers
marqués. Cette commande (par exemple "file") est exécutée sur tous
les fichiers marqués, un par un, ou alors une seule fois sur tous
les fichiers dans le cas où le caractère * se trouve dans la ligne
de commande (ex: "display *")
· A : cherche une expression régulière dans le contenu du/des
fichier(s)
· C : effectue une copie de fichier(s)
· D : efface le(s) fichier(s)
· H : effectue un lien [4mhard[24m (dur)
· M : modifie les permissions
· Q : effectue un remplacement d'expressions régulières dans le
contenu
· R : renomme ou déplace
· S : effectue un lien symbolique
· Z : compresse le(s) fichier(s) avec gzip ou les décompresse le cas
échéant
[1m4.3.5. Commandes diverses[0m
· RET : ouvre le fichier courant dans un nouveau buffer
· v : ouvre en lecture seule le fichier courant (avec un mode
rappelant un [4mpager[24m)
· x : efface les fichiers marqués comme à effacer
· + : crée un répertoire
· ^ : exécute dired sur le répertoire parent
· s : bascule entre le tri par date et le tri par nom
· q : fait disparaître le buffer dired
[1m4.4. Est-ce qu'il existe un agenda ?[0m
[1m4.4.1. Calendar[0m
Calendar est une interface permettant de manipuler un calendrier.
Elle permet d'afficher un calendrier de trois mois dans un buffer,
avec le point sur la date courante.
Parmi les actions possibles :
· insertion d'un rendez-vous pour une journée précise (voir section
``Diary'')
· consultation des vacances pour une journée donnée
· impression en LaTeX d'un calendrier
· comptage de jours dans une période donnée
Le [4mpoint[24m désigne un jour, et l'utilisateur peut le déplacer à travers
le temps par le biais de plusieurs commandes :
· avec les flèches : certains déplacements sont spéciaux (par
exemple, se déplacer du dimanche au lundi ne correspond pas à un
déplacement vers la droite, mais à un passage à la ligne)
· M-} : déplace le point d'un mois dans le futur
· M-{ : déplace le point d'un mois dans le passé
· C-x ] : déplace le point d'un an dans le futur
· C-x [ : déplace le point d'un an dans le passé
· . : replace le point sur aujourd'hui
[1m4.4.1.1. Vacances[0m
· h : affiche tout jour férié connu pour cette date
· x : affiche les jours fériés sur le calendrier
· u : désactive l'affichage des jours fériés sur le calendrier
· a : affiche les vacances des trois mois visibles dans un autre
buffer
[1m4.4.2. Diary[0m
Diary est une interface permettant de gérer un agenda sous Emacs. Il
s'utilise de concert avec Calendar qui permet d'insérer des entrées
dans l'agenda pour des jours précis.
Le principe est qu'un fichier (dont le nom est renseigné par la
variable diary-file) contient des entrées dans un format qui lui est
propre (documenté dans le manuel Emacs). Des commandes permettent
d'insérer des entrées dans l'agenda au format Diary à partir du buffer
*Calendar*.
Parmi celles-ci :
· d : affiche toutes les entrées de l'agenda valides pour cette
journée
· s : affiche toutes les entrées de l'agenda
· i d : ajoute une entrée pour la journée sélectionnée (sous le
[4mpoint[24m)
· i w : ajoute une entrée pour le jour de la semaine sélectionné (ex:
tous les mercredis, soirée gothique au [4mpiano[24m [4mvache[24m)
· i m : ajoute une entrée pour le jour du mois sélectionné (ex:
acheter carte orange tous les 1er du mois)
· i y : ajoute une entrée pour le jour de l'année sélectionné (ex:
tous les 1er avril)
· i b : ajoute une entrée pour une période. L'utilisateur marque une
date (C-SPC) puis déplace le curseur sur une autre date. La
période entière sera ajoutée dans l'agenda (ex: du 29 juillet au 14
août, randonnée dans le pays Basque)
· i c : ajoute une entrée cyclique dans l'agenda. L'utilisateur
sélectionne une date, puis insère une entrée cyclique. Diary lui
demande alors une période en jours, et l'entrée sera insérée avec
cette période dans l'agenda (ex: laver la voiture tous les 15
jours)
[1m4.5. Comment imprimer un document texte ?[0m
Sous la plupart des systèmes UNIX, la manière la plus simple
d'imprimer un document est d'utiliser le PostScript. Emacs permet de
formater des documents texte en PostScript, et éventuellement de les
imprimer directement.
L'utilisation de quatre commandes permet d'effectuer cette impression
:
· ps-print-buffer : convertit le buffer en PostScript et l'imprime.
Le résultat sera une page de texte en police [4mcourier[24m par défaut,
avec une barre de titre en haut de chaque page, qui rappelle le nom
du fichier, la date d'impression, etc ...
· ps-print-buffer-with-faces : cette fonction effectue le même
travail que la précédente, mais elle conserve de plus les
différentes polices appliquées à des caractères du buffer. Par
exemple, un nom de fonction affiché en bleu sera imprimé en bleu
sur une imprimante couleur
· ps-print-region : cette fonction imprime la région d'un buffer,
tout comme l'effectue ps-print-buffer sur le buffer tout entier
· ps-print-region-with-faces : cette fonction imprime la région d'un
buffer, tout comme l'effectue ps-print-buffer-with-faces sur le
buffer tout entier
Il est possible de paramétrer la commande utilisée pour imprimer le
fichier PostScript ainsi que les options passées à cette commande par
l'intermédiaire des variables lpr-command (commande exécutée) et lpr-
switches (liste de paramètres passés à cette commande). Par exemple,
(set-variable
[1m4.6. Il y a des jeux ?[0m
[1m4.6.1. Doctor[0m
Doctor (M-x doctor) est un petit programme qui implémente le fameux
robot [4meliza[24m. Il s'agit d'une simulation de personne vivante :
l'utilisateur pose des questions en langue naturelle au programme, et
celui-ci lui répond par des phrases construites. Plus précisément, le
but de Doctor est de simuler une consultation psychothérapique
traditionnelle. Notons que la version actuelle de Doctor a été
censurée par Richard Stallman lui-même en raison du côté "indécent" du
code source (voir
).
[1m4.6.2. Getris[0m
Mais oui, Tetris a été porté sous Emacs !
A faire...
[1m4.6.3. BlackBox[0m
BlackBox (M-x blackbox) est un jeu très simple. Le principe est de
trouver des atomes cachés dans un boite noire en y envoyant des rayons
lasers.
Lorsqu'un rayon touche un atome, il est absorbé par celui-ci.
Lorsqu'il arrive à la diagonale d'un atome, il est dévié de 90 degrés
de manière à s'éloigner de celui-ci. Par exemple :
O
+------->
O |
-------+ ------+
| O
|
v
Lorsque le jeu commence, une grille vide apparaît. Le but du jeu est
de déplacer le curseur autour de la grille avec les flèches, et
d'appuyer sur la barre d'espacement pour lancer un rayon laser. Un
numéro apparaît, qui permet d'identifier le rayon. Si le rayon n'est
pas absorbé, alors il est repéré par le même numéro en sortie. Si le
rayon est absorbé, alors la lettre H ([4mhit[24m) est affichée à la place.
Si par hasard le rayon sort au même endroit d'où il est parti, alors
la lettre R ([4mreflected[24m) est affichée à la place.
Quand le joueur pense avoir deviné où se trouve un atome, alors il
place le curseur sur la grille, et appuie sur la barre d'espacement
pour placer un atome. Quand il a placé tous les atomes, il appuie sur
la touche RET afin de valider, ce qui lui permet de voir la position
réelle des atomes.
[1m4.7. Dessiner en ASCII[0m
Emacs offre deux modes pratiques pour le dessin ASCII.
[1m4.7.1. le mode picture[0m
A faire...
[1m4.7.2. le mode artist[0m
A faire...
[1m4.8. Comment vérifier l'orthographe d'un texte ?[0m
[1m4.8.1. Ispell[0m
Un des correcteurs orthographiques les plus populaires sous UNIX est
ispell. Emacs intègre logiquement une interface permettant de le
manipuler sur un buffer.
Le principe est qu'Emacs lance un processus ispell, et ensuite qu'il
lui envoie des données texte à partir du buffer. A chaque mot
incorrect, Emacs propose un choix parmi plusieurs possibilités par
l'intermédiaire d'un autre buffer. Il est possible de lancer un
processus ispell sur plusieurs parties d'un buffer :
· M-$ : exécute ispell sur le mot se trouvant sous le point
· M-TAB : complète le mot sous le point par le premier mot correct
parmis ceux proposés par le dictionnaire
· M-x ispell-buffer : exécute ispell sur le buffer entier
· M-x ispell-region : exécute ispell sur la région
Pour répondre aux besoins de dictionnaires en plusieurs langues,
ispell peut passer d'un dictionnaire à un autre, par le biais de la
fonction ispell-change-dictionnary. L'utilisateur saisit un
dictionnaire, et ensuite toute correction se fera dans cette langue (à
condition que le dictionnaire soit installé sur le système).
[1m4.8.2. Flyspell[0m
Flyspell est une interface supplémentaire à ispell, qui permet
d'utiliser ispell ``à la volée'' sur un texte, et de mettre en
évidence un mot mal orthographié dès sa saisie.
Flyspell est un mode mineur. Il suffit donc de passer en mode
flyspell (M-x flyspell-mode en considérant que flyspell est
correctement installé) pour l'utiliser.
A chaque mot incorrectement orthographié, l'utilisateur a le choix
entre utiliser les raccourcis d'ispell, et utiliser un menu contextuel
invoqué par un clic avec le bouton du milieu de la souris. Ce menu
propose un ensemble de mots corrects, ou propose à l'utilisateur de
sauvegarder le mot dans le dictionnaire.
Flyspell est disponible sur
, mais est intégré
aux nouvelles versions d'Emacs.
[1m4.9. Comment on lance[22mvi ?
Comme chacun le sait, la rivalité Emacs/vi fait rage.
Des développeurs Emacs on cependant essayé de trancher en proposant un
mode dans lequel les raccourcis clavier sont ceux de vi, mais qui
permet de profiter de toutes les facilités d'Emacs. Ce mode est le
mode viper ([1mV[22miper [1mI[22ms a [1mP[22mackage for [1mE[22mmacs [1mR[22mebels).
Il est exécuté par M-x viper-mode, qui bascule alors en mode viper.
Lorsqu'il est exécuté pour la première fois, ce mode affiche une page
d'aide qui explique entre autres comment quitter ce mode.
L'utilisateur a ensuite le choix entre plusieurs niveaux d'utilisation
(entre [4mbeginner[24m et [4mwizard[24m), qui déterminent jusqu'à quelle profondeur
vi sera émulé. Par exemple, aux niveaux les plus hauts, le raccourci
:wq quittera Emacs et les touches d'Emacs seront remplacées par celles
de vi.
M-x viper-go-away permet heureusement de quitter ce mode, et de
revenir à un Emacs normal à tout moment.
[1m5. Conclusion[0m
Emacs est bien plus qu'un éditeur de textes. On l'a vu, c'est un
environnement de travail complet (même s'il ne fait pas encore le
café). Sa plus grande force (et peut-être aussi sa plus grande
faiblesse) est d'être pratiquement entièrement adaptable pour le
programmeur. En cas de besoin, il est très facile d'implémenter la
fonction de ses rêves (recherche d'occurences particulières,
traitement de mails, ...). Ce qui implique des talents de programmeur
qui peuvent rebuter le novice, qui cherche simplement à adapter le
logiciel à ses besoins.
[1m5.1. Pointeurs[0m
Deux sites proposant des programmes Emacs-Lisp prêts à l'emploi :
· l'Emacs-Lisp archive, sur le site FTP archive.cis.ohio-state.edu,
dans ( );
·
Sur les news :
· fr.comp.applications.emacs : le newsgroup en français dédié à
Emacs. Beaucoup de questions trouvent leur réponse ici
· comp.emacs : le même groupe, mais international
· gnu.emacs.sources : le groupe des développeurs d'Emacs. On y
trouve beaucoup d'annonces pour des nouveaux modes en Emacs-Lisp.
[1m6. Copyright[0m
Copyright (c) 1999 Benjamin Drieu, association APRIL.
This document is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This work is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this work; see the file COPYING. If not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.