Page précédente Page suivante Table des matières

Tutorial pour Emacs, pour le programmeur

Copyright (c) 1998 Padioleau Yoann, ypadiole@ens.insa-rennes.fr

v1.9, 5 juin 1998


Ce document décrit la façon d'utiliser Emacs pour développer (programmer) efficacement en utilisant ses fonctions puissantes mais parfois méconnues pour le novice. Il est fait pour être lu tout en ayant un clavier près de soi.

1. Copyright

2. Introduction

3. Fonctionnalités générales

4. Fonctionnalités avancées

5. Pour plus d'informations

6. Conclusion


Page précédente Page suivante Table des matières Tutorial pour Emacs, pour le programmeur: Copyright Page précédente Page suivante Table des matières

1. Copyright

This manual is free ; you may 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, or (at your option) any later version.

This 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. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Page précédente Page suivante Table des matières Tutorial pour Emacs, pour le programmeur: Introduction Page précédente Page suivante Table des matières

2. Introduction

Emacs est le plus puissant éditeur de texte au monde. Il est indispensable à tout programmeur, car ce n'est pas un simple éditeur textuel, mais un superbe environnement de programmation (entre autre). Il vous permet de saisir votre code C (ou autre comme du CAML par exemple), de le compiler, de le corriger, de le débugger, etc... tout en restant sous Emacs.

Emacs veut dire Editor MACroS (ou bien Eight Megabytes And Constantly Swapping pour les Anti-Emacs) et fut créé par Richard Stallman (le dieu vivant) fondateur de la FSF (Free Software Fundation) et du projet GNU (Gnu is Not Unix ou bien Generally Not Used pour les anti-GNU). Ainsi les sources d'Emacs sont librement accessibles et diffusables, et ça c'est cool (c'est pas comme cette pourriture de Mic...ft).

Conventions typographiques:

Les commandes d'Emacs correspondent souvent à une combinaison de touches. Ainsi C-<chr> veut dire laisser presser la touche CONTROL tout en tapant sur la touche <chr>. C-f Veut dire presser en même temps CONTROL et la touche f. M-<chr> veut dire soit taper la touche META (souvent Alt) en même temps que <chr>, soit taper ESC puis (relâcher ESC) la touche <chr>.


Page précédente Page suivante Table des matières Tutorial pour Emacs, pour le programmeur: Fonctionnalités générales Page précédente Page suivante Table des matières

3. Fonctionnalités générales

3.1 Démarrage

Pour lancer Emacs, il suffit de le lancer en ligne de commande sous un shell


      % emacs foo.c # ouvrira foo.c

      % emacs # ou bien plus simplement sans parametre

   
Pour quitter tapez C-x C-c (qui vous demande le cas échéant si vous voulez sauvegarder votre travail, répondre y ou n).

3.2 Opérations sur les fichiers

Pour ouvrir un fichier il suffit de taper C-x C-f (f pour find). Le curseur (ou pointeur) ira alors dans une zone appelée le minibuffer (cf minibuffer) où il vous demandera de composer le nom du fichier.

Pour sauvegarder les modifications apportées à un fichier tapez C-x C-s (save).

3.3 Basculer entre plusieurs fichiers ouverts par Emacs

Sous un éditeur comme textedit (je ne sais pas si le mot 'éditeur' est adapté, mais bon), la démarche est d'exécuter un textedit pour chaque fichier.

Ce qui implique que si vous voulez voir un fichier ouvert, il faut chercher le textedit qui l'a lancé. Sous Emacs les choses sont différentes puisque il y aura UN Emacs qui gérera plusieurs fichiers ouverts (on peut faire comme textedit mais du coup on perd les avantages expliqués ci-dessous). Pour ouvrir plusieurs fichiers il suffit de répéter un certain nombre de fois la commande C-x C-f (cf opérations sur les fichiers).

À chaque fois que l'on ouvre un nouveau fichier, il prend la place de l'ancien à l'écran, mais l'ancien est toujours présent pour Emacs en mémoire. Chacun de ces fichiers représente une unité appelée buffer. Tous ces buffers ont des noms, ainsi pour basculer vers un autre fichier ouvert il suffit de taper C-x b, qui vous demandera alors de taper le nom du fichier.

Pour voir la liste des buffers tapez C-x C-b Un certain nombre de noms de buffers sont précédés d'un astérisque, ils sont réservés par Emacs, souvent afin de ménager des zones de travail temporaires .

3.4 Édition de texte simple

Pour sélectionner une partie du texte, soit vous le faites à la souris (aaarghh quelle perte de temps), soit vous le faites au clavier (la bonne façon). La manière de sélectionner une région est différente sous Emacs par rapport à windobe. Pour sélectionner une région il faut d'abord déposer une marque (généralement au début du texte que l'on veut sélectionner) en tapant C-ESPACE, puis il suffit de se déplacer (on voit que la région sélectionnée a une autre couleur sous X par exemple).

Enfin pour copier cette région tapez M-w, ou pour la couper C-W. Le texte coupé est placé dans une sorte de tampon le kill ring . Pour le coller tapez C-y. Certains râleront en disant : c'est pas logique, c'est pas comme sous windows, sous windows c'est simple, suffit de taper C-x ou C-c et C-v. Il faut savoir que c'est pas plus con de taper C-w que C-x.

Il faut noter qu'il y a un historique des "copier" et "couper". Ainsi, une fois que vous avez tapé C-y pour coller un texte, vous pouvez taper M-y et le "copier" ou "coller" précédent dans l'historique est collé.

On peut tronquer une ligne à partir de la position du curseur sans avoir à sélectionner une région avec C-k

3.5 Fenêtres multiples

Comme vous l'avez vu, Emacs permet de garder en mémoire un certain nombre de fichiers. Le problème c'est que vous ne pouvez en voir qu'un à la fois et du coup les multiples textedit paraissent mieux. Mais c'est sans compter les fenêtres multiples sous Emacs.

Pour scinder votre écran Emacs en deux parties tapez C-x 2 Ainsi on voit toujours le même fichier, mais l'écran est coupé en deux fenêtres Emacs appelle fenêtre ce que nous appelons frame (frame au sens HTML) . Pour basculer entre les fenêtres (window) tapez C-x o. Ainsi vous pouvez voir deux régions différentes du même fichier, mais vous pouvez aussi facilement voir deux fichiers différents (réfléchissez un peu). Il suffit dans l'une des windows de taper C-x b (cf buffer multiple) qui bascule entre buffer (ce qui revient à basculer entre les fichiers ouverts) et de choisir un buffer différent.

Vous pouvez répéter ce processus un certain nombre de fois et avoir ainsi 5 à 6 windows visibles en même temps.

3.6 Chercher dans un fichier

Quand on programme ou que l'on tape du texte on a souvent besoin de se déplacer rapidement. Emacs offre une fonction puissante pour chercher du texte : incremental search (la recherche incrémentale).

Je m'explique : admettons que vous voulez rechercher le mot padioleau et que vous savez que votre mot est plus bas dans le fichier. Tapez C-s. Vous êtes alors invité à taper votre requête. Tapez alors la lettre p et déjà Emacs trouve la première occurrence de "p" dans le fichier, puis tapez a pour affiner jusqu'à ce qu'il trouve. L'intérêt est que vous n'avez pas à taper tout le texte. Il se peut qu'il lui suffise d'une ou deux lettres seulement.

Si votre recherche échoue (beep sonore), c'est peut être que votre mot est situé au dessus. Tapez alors C-r (increment search backward = recherche en arrière).

Notez que vous pouvez enlever des lettres (où en rajouter) tout au long de ces opérations, ce qui généralise la recherche (respectivement l'affine).

Retapez C-s (ou C-r) et vous irez à la prochaine occurrence (respectivement la précédente).

Pour quitter le mode recherche, tapez RET ou tapez sur une des flèches. Si vous voulez refaire la même recherche, tapez C-s C-s. Pour rechercher le texte placé sous le curseur, tapez C-s C-w.

On peut aussi vouloir aller à une certaine ligne, et dans ce cas tapez M-g puis votre numéro de ligne si cela ne fonctionne pas essayez M-x goto-line RET .

3.7 Déplacement rapide

La façon la plus simple de se déplacer est d'utiliser les flèches Si celles-ci sont mal configurées, alors voir configurer emacs

L'ultime méthode pour se déplacer est d'utiliser la recherche incrémentale (cf chercher dans un fichier)

3.8 Structure de l'écran

Décomposons la fenêtre de haut en bas:

3.9 Fonctions diverses très utiles


Page précédente Page suivante Table des matières Tutorial pour Emacs, pour le programmeur: Fonctionnalités avancées Page précédente Page suivante Table des matières

4. Fonctionnalités avancées

4.1 La mise en page, l'indentation

Quand vous êtes en C-mode (traduit par le fait de voir C en major mode (cf structure de l'écran) dans la région modeline), Emacs peut indenter automatiquement votre code (comme le programme indent).

Il suffit de taper TAB (qui ne réalise par de tabulation du coup) et la ligne s'indente automatiquement.

Là encore vous pouvez configurer les valeurs des indentations (en nombre d'espaces) cf doc d'Emacs.

Vous pouvez aussi ne pas avoir à taper sur TAB en réglant une valeur (cf configurer emacs), et du coup à chaque fin de ligne quand vous tapez sur RET il se place directement là où il faut.

Vous pouvez indenter toute une région en la sélectionnant (comme quand on veut la couper, cf édition basique), puis tapez M-x (cf fonctions utiles) suivit d'indent-region.

Ainsi, si on vous donne du code mal indenté, tapez : C-x h ce qui sélectionne tout le contenu du buffer, puis M-x indent-region cela peut parfois prendre du temps, alors prenez patience .

Notez que parfois vous avez l'impression que Emacs indente mal. C'est que vous avez un problème dans votre code (accolade ou parenthèse fermante manquante etc...). Ainsi ça permet de voir les problèmes de syntaxe de votre programme sans lancer le compilateur (qu'il est fort cet Emacs !).

4.2 Remplacer un mot par un autre

Tapez M-%, puis votre premier mot mot1 RET puis le second mot2 RET. Emacs placera le curseur sur la première occurrence de mot1. Tapez alors y ou n, puis il ira sur l'occurrence suivante. Tapez alors y ou n et ainsi de suite.

Pour ne pas avoir à dire y à chaque fois, tapez ! au lieu de y.

Il est possible de remplacer des regexps (regular expression ou expression régulière) par un mot (très puissant). Par exemple remplacer tous les MOTS dede par menfout : tapez M-x replace-regexp puis \<dede\> RET puis menfout RET (\< veut dire début de mot et \> fin de mot).

Puissant, non ? Et ce n'est pas fini, le meilleur est à venir.

Les expressions régulières sont un concept UNIX très important et très puissant. Pour plus d'informations voir dans le manuel hypertexte d'Emacs (cf doc d'Emacs) le noeud searching and replacement.

4.3 Completion bis, le retour

Nous avons déjà vu qu'Emacs aidait l'utilisateur à compléter les mots dans le minibuffer. Il peut le faire aussi dans les fichiers. Il suffit de taper les premières lettres d'un mot, par exemple pad puis M-/ et alors il complétera par padioleau (si le mot est présent dans le buffer courant ou dans les autres).

Fantastique. Ainsi, imaginez que vous faites du C++ (y a des masos partout), et que vous voulez appeler une fonction déclarée plus haut (ou plus bas) dans le fichier ou dans un autre fichier (ouvert par Emacs). Vous savez que la fonction commence par fo. Tapez fo puis M-/ et avec un peu de chance il complétera par foobar. Si ce n'est pas le cas, retapez sur M-/ jusqu'à ce qu'il trouve, si il ne trouve pas c'est que cette fonction n'est dans aucun des buffers.

4.4 Les couleurs sous Emacs

Emacs peut rendre votre code plus lisible pour vous, en y ajoutant des couleurs. Il embellit la présentation à l'écran de votre code. Les couleurs sont accessibles uniquement sous X (XEmacs gère aussi la couleur en mode console).

Ainsi les commentaires seront en rouge, les mots clés en jaune, etc...

Pour rendre votre code beau tapez M-x font-lock-mode RET. Ceci fera rentrer le minor mode Font dans modeline(cf structure de l'écran). Si votre code n'est toujours pas beau, essayez M-x font-lock-fontify-buffer.

Le problème c'est que vous devrez taper pour chaque buffer M-x font-lock-mode. Mais ceci est paramétrable dans le fichier .emacs (cf configurer emacs).

En plus des couleurs, XEmacs gère des fontes différentes pour telle ou telle entité (commentaires, mots clés, etc...). Le choix des couleurs est bien sûr lui aussi paramétrable (c'est pas compliqué, sous Emacs tout est paramétrable).

Pour voir la liste des faces une face représente l'entité. par exemple la face-comment est la face qui gère les attributs des commentaires et leurs attributs tapez M-x list-faces-display.

4.5 Rectangles

Le problème est le suivant : imaginez que vous avez ceci

   

   essai a la con c est cool

   essai d la cin c est cool

   essao a la cun c est cool

   essaa i la con c est cool

   
et que vous voulez remplacer les 3 premières colonnes par dede. La région concernée est un rectangle. Une solution est de faire une macro (cf macro), mais il y a plus simple : les rectangles.

C'est pas facile à faire avec les fonctions standards comme couper, copier, coller (cf édition basique). La démarche c'est de se placer en haut à gauche du rectangle (sur le "e" de essai de la première ligne ), de taper C-ESPACE (classique, on dépose une marque comme en édition basique), puis de se déplacer en bas à droite du rectangle et de taper C-x r k qui va couper le rectangle (que l'on peut réinsérer à un autre endroit par C-x r y).

On obtient


   con c est cool

   cin c est cool

   cun c est cool

   con c est cool

   
Puis on refait un rectangle (avec C-ESPACE) du premier "c" au "c" de la dernière ligne, et on tape C-x r t cette fonction est très pratique pour mettre en commentaire un ensemble de lignes qui se suivent (en mode bash par exemple avec comme commentaire "#") puis dede RET, et Ooooh magique ça marche.

   dedecon c est cool

   dedecin c est cool

   dedecun c est cool

   dedecon c est cool

   

Il n'existe pas de fonction pour copier un rectangle (on ne peut que les couper). Ainsi la méthode est de couper le rectangle comme d'habitude, puis de faire un undo avec C-/ (cf undo).

4.6 Macro

Il arrive que vous ayez à répéter plusieurs fois une séquence de touches. Pour gagner du temps Emacs met à notre disposition les macros. Tapez C-x ( puis votre séquence de touches puis C-x ), et votre macro est enregistrée. Pour l'appeler tapez simplement C-x e.

4.7 Les TAGS : très important

Le but est de trouver l'endroit où est définie une fonction rapidement. Comment ? Réponse : les TAGS. Démonstration : imaginons que vous avez un projet avec 4 fichiers contenant du C : foo1.c foo2.c bar1.c foobar.c et des fichiers .h.

Si vous voulez revenir dans votre précédent buffer, tapez C-x b (cf multiple buffer) puis foo.c (ou RET si la valeur default est bonne).

En tapant C-x 4 . à la place de M-. Emacs ouvre le fichier foobar.c dans une autre fenêtre (cf fenêtre multiple).

Le programme etags reconnaît un certain nombre de langage, dont le C, C++, Java, Pascal, LaTeX, Scheme, Prolog, assembleur etc ...

4.8 Les sexps

Il arrive en mode C, lorsque le curseur est situé sur une accolade ouvrante, de vouloir aller directement sur l'accolade fermante correspondante. Pour cela tapez M-DROITE (ou C-M-f). Quand vous êtes sur l'accolade fermante tapez M-GAUCHE (ou C-M-b) pour revenir à l'accolade ouvrante.

Un 'bloc' C (tout comme la plus simple 'expression' C) est considéré par Emacs comme une sexp vient de s-expression, qui représente une expression LISP (au sens large) . Ainsi M-DROITE veut dire aller à la prochaine sexp, ce qui revient en C, lorsque l'on est sur une accolade ouvrante, à aller au prochain 'bloc' C (soit juste après l'accolade fermante). Une expression parenthesée est aussi une sexp, ainsi pour aller directement à la parenthèse fermante utilisez la même méthode.

On peut donc facilement indenter un 'bloc' C en tapant M-x indent-sexp ou couper une sexp avec C-M-k.

Chaque mode (comme le major mode C) définit ce qu'est une sexp, ce qui implique que l'objet sexp ne représente pas toujours la meme chose dans chacun de ces modes.

4.9 Compiler sous Emacs

Sous les environnements de développement intégrés proposés par Borland, quand vous compilez votre projet et que le code souffre d'erreurs de syntaxe (ou de type) l'éditeur Borland place le curseur directement sur l'erreur. Sous Emacs c'est pareil (mais en mieux).

Pour compiler tapez M-x compile RET.

Il vous demande alors la commande de compilation (souvent make mais peut être aussi gcc foo.c etc..), rentrez la commande puis RET (ou RET tout court si vous voulez faire un make), et là vous voyez dans une fenêtre le déroulement de la compilation (et souvent les erreurs).

Pour aller à la première erreur, soit vous repérez à quelle ligne s'est produite l'erreur, et vous y allez à la main (approche textedit), soit vous tapez C-x `. Emacs place alors votre curseur à la ligne où s'est produite l'erreur. Corrigez, puis pour aller à la prochaine erreur retapez encore C-x ` et ainsi de suite.

4.10 Débugger sous Emacs

On peut très facilement débugger sous Emacs (un peu comme sous Borland). Compilez votre programme avec -g pour que le binaire contienne des infos de débuggage et au lieu d'utiliser gdb tout seul (sans Emacs), tapez sous Emacs M-x gdb RET. Vous voilà alors comme si vous étiez sous gdb classique. Tapez b main RET (break-point sur main), puis r RET (run), et là magie, vous voyez deux fenêtres, une sous gdb et l'autre contenant le fichier.c qui contient la fonction main, ainsi qu'une petite flèche vous indiquant où vous êtes dans votre programme (magique).

Vous pouvez alors taper les commandes classiques de gdb (b break-point, c pour continue (va au prochain break-point), n pour prochaine instruction (next), s pour rentrer dans une fonction, f pour finish pour sortir de la fonction, etc... cf doc de gdb) et votre petite flèche bougera en même temps que vous tracez votre programme.

4.11 Shell

Vous n'êtes pas obligé de quitter Emacs pour lancer des commandes shell.

Tapez M-x shell RET et vous voilà avec un buffer de nom *shell* où vous pouvez taper vos commandes.

Ce buffer est un buffer comme un autre (les copier couper et touti quanti sont disponibles, la completion aussi). De plus vous avez l'historique des commandes en tapant M-p (ou C-HAUT et M-n (C-BAS;) (Previous et Next). Ceci est très utile avec camllight par exemple qui lui ne possède pas d'historique dans son interface. Ainsi tapez M-x shell RET, puis camllight RET et vous entrez sous camllight. Vous pouvez alors faire des copier coller de votre source CAML dans ce buffer, le faire interpréter par CAML, puis tapez M-p pour avoir la dernière commande.

4.12 RCS, le gestionnaire de versions

Emacs offre un environnement de travail avec rcs très facile. Après avoir créé un répertoire RCS dans le répertoire de votre projet, tapez simplement C-x v v. Vous voyez à présent dans modeline (cf structure de l'écran) RCS:1.1.

Pour archiver une nouvelle version, retapez C-x v v. Il vous demande alors de décrire les changements apportés. Après avoir fini de taper vos commentaires tapez C-c C-c. Vous voyez ainsi dans modeline que le numéro de version a changé, et que le fichier est en lecture seule car on voit %% dans modeline ( Voir structure de l'écran). Retapez encore C-x v v et c'est impeccable.

Pour revoir une version antérieure, tapez C-x v ~ puis un numéro de version.

RCS est un outil permettant de gérer un projet plus efficacement, mais il nécessite des connaissances qui sortent du cadre de ce tutorial. Pour plus d'informations voir la page man de RCS, et la documentation d'Emacs (cf doc d'Emacs) dans le noeud Version Control.

4.13 Vérificateur orthographique

Comme sous certains logiciels Micr...t, il est possible sous Emacs d'effectuer une vérification orthographique. Il suffit de disposer du programme ispell non fournie avec Emacs et du dictionnaire orthographique de la langue. Pour lancer la vérification sur un fichier tapez M-x ispell-buffer. Emacs vous demandera dès qu'il trouve une erreur de donner une réponse. L'écran se scinde en deux, et dans la fenêtre du haut on peut voir un certain nombre de choix et des couples mot-nombre. Si l'un des choix proposés vous va, tapez alors le nombre correspondant au mot. Si aucun choix n'est donné alors tapez sur R si vous voulez corriger le mot. Si le mot est selon vous bien écrit tapez sur ESPACE. L'ennui c'est que selon lui ce mot est mal écrit, et donc si il le rencontre encore, il vous requestionnera. La solution est de taper sur a au lieu de ESPACE. Si vous voulez insérer le mot dans votre propre dictionnaire (ispell ne connaît pas tous les mots) tapez sur i. On peut aussi:

Si vous voulez qu'Emacs prenne le dictionnaire français, tapez M-x ispell-change-dictionary puis francais. Voir aussi configurer emacs.

4.14 Configurer Emacs avec le .emacs

Pour configurer Emacs, il suffit d'écrire en LISP certaines commandes dans le fichier .emacs. Comme la plupart des autres outils UNIX, le comportement d'Emacs dépend d'un fichier .qqchose dans le répertoire de l'utilisateur.

Ainsi créez un fichier .emacs dans votre répertoire HOME, et écrivez vos fonctions dedans.

prenons comme exemple une partie de mon fichier .emacs :


   (global-font-lock-mode t) ;pour avoir les couleurs sans avoir a taper font-lock-mode

   (setq font-lock-maximum-decoration t) ;maximum de couleurs

   (setq font-lock-maximum-size nil)

   (transient-mark-mode t) ;pour que la region selectionnee soit mise en surbrillance

   (setq compilation-window-height 10) ;pour que la fenetre de compilation ne soit pas trop grande

   (standard-display-european 1)   ;pour avoir les accents

   (setq ispell-dictionary "francais") ;dictionnaire francais par defaut

   (defun padcomment()

     "pad comment"

       (interactive)

       (newline)

       (insert "/***********************************************")

       (newline)

       (insert "** **")

       (newline)

       (insert "***********************************************/")

       (previous-line 1)

       (forward-char 2)  

  )

  (setq c-mode-hook ;fonction appelee des que l'on ouvre un fichier .c

      '(lambda ()

   (setq c-auto-newline t) ; pour que l'on n'ait pas a taper sur TAB pour indenter

   (message "modifie par pad")

   (define-key c-mode-map "\C-c\C-i" 'padcomment) ;bind a la touche C-c C-i la fonction pad-comment

   ))

   

Vous me direz c'est pas évident de savoir que c'est telle variable qui fait telle chose. Comment faire pour réussir ?


Page précédente Page suivante Table des matières Tutorial pour Emacs, pour le programmeur: Pour plus d'informations Page précédente Page suivante Table des matières

5. Pour plus d'informations

5.1 Documentation d'Emacs

Emacs dispose aussi d'une refcard (carte de référence où figurent tous les raccourcis claviers classiques) disponible dans le répertoire où est installé Emacs (par exemple : /usr/share/emacs/19.34/etc/refcard.ps).

Le mode info d'Emacs présente une documentation d'Emacs hypertexte. Il est possible d'en avoir une version dans un autre format (comme le PostScript ou l'HTML ou l'ASCII) en ramenenant les sources d'Emacs et en compilant les .texi avec texi2html par exemple, ou un autre utilitaire du package texinfo disponible sur le site de GNU (un bon miroir français est ftp://ftp.lip6.fr/pub/gnu name="ftp://ftp.lip6.fr/pub/gnu/">).

5.2 Les bouquins gratuits qui parlent un peu d'Emacs

5.3 Bouquins payants


Page précédente Page suivante Table des matières Tutorial pour Emacs, pour le programmeur: Conclusion Page précédente Page suivante Table des matières

6. Conclusion

Vous voilà maintenant paré pour utiliser Emacs. Il faut savoir que ce tutorial ne montre que quelques possibilités de cet éditeur. N'hésitez pas à regarder la doc pour plus d'informations, et pour parfaire votre connaissance d'Emacs afin de devenir un gourou d'Emacs.

je tiens à remercier Pascal Rigaux, Nat makarévitch pour leurs corrections et remarques . Si vous en avez aussi, envoyez moi un mail à ypadiole@ens.insa-rennes.fr.

Ce document réalisé en SGML (avec le linuxdoc-sgml package) est disponible en plusieurs formats : PostScript, dvi, ASCII (à lire de préférence avec less ou more afin de voir les couleurs et accents), LaTeX, HTML à ftp://ftp.linux-france.com/pub/article/emacs/emacs-tut/.


Page précédente Page suivante Table des matières