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

3. Les modes d'Emacs

Les modes d'Emacs ont des comportements et des particularités que vous pouvez activer ou désactiver (et personnaliser bien sûr) pour une utilisation dans des circonstances particulières. Les modes sont ce qui fait qu'un éditeur (Emacs) est aussi performant pour l'écriture de documentation, la programmation dans une grande variété de langages (C, C++, Perl, Python, Java, et beaucoup d'autres), la création de pages personnelles, l'envoi d'E-Mail, la lecture des News, le suivi de vos rendez-vous, et même les jeux.

Les modes d'Emacs sont simplement des librairies de code Lisp qui étendent, modifient, améliorent Emacs d'une facon ou d'une autre.

3.1 Modes Majeurs et Modes Mineurs

Il existe deux types fondamentaux de modes disponibles : Majeur et Mineur. La distinction n'est pas la chose la plus facile à saisir tant que vous n'avez pas travaillé en activant et désactivant quelques uns d'entre eux, mais essayons d'en dresser une esquisse.

Un seul mode majeur peut être activé à un moment donné. Plusieurs modes mineurs peuvent être actifs en même temps. Les modes majeurs sont plutôt destinés à un langage ou une tâche spécifique, alors que les modes mineurs sont en géneral moins spécifiques et peuvent etre utilisés pour différentes tâches.

Cela peut sembler un peu abstrait, alors prenons un exemple. Il existe un mode que j'utilise souvent lorsque j'écris des fichiers textes. Il est appelé text-mode. Ce mode a été conçu pour réaliser des textes dans un format libre comme par exemple les fichiers README. Il sait comment identifier des mots et paragraphes, et généralement répond correctement au touches de navigation classiques.

Lorsque j'écris un texte destiné à un humain, je souhaite évidemment qu'il soit bien présenté. Les lignes par exemple doivent par exemple être de longueur a peu près égale. Pour automatiser les retours à la ligne, j'active simplement le mode mineur auto-fill. Ce mode fait ``ce qu'il faut'' lorsque j'atteinds la fin de la ligne. Le fait qu'il s'agisse d'un mode mineur signifie qu'il peut être activé avec différents modes majeurs. Ma notion de ``ce qu'il faut'' lorsque j'atteinds la fin de la ligne est différente lorsque je suis en text-mode ou en java-mode par exemple. Je ne veux pas que mon code Java soit mis en forme comme un simple texte en français. Mais je veux que les blocs de commentaires du code Java soient mis en forme, eux ! Le mode auto-fill est assez malin pour s'en rendre compte.

Les auteurs des nombreux modes d'Emacs ont réalisé un excellent travail en s'assurant que les fonctionnalités qui doivent être présentes en mode mineur soient effectivement des modes mineurs.

Si vous vous reportez à mon schéma de l'écran d'Emacs reproduite dans ce document, vous constaterez que la ligne de mode identifie le(s) mode(s) dans lequel Emacs se trouve. Dans notre présentation il s'agissait d'un mode qui s'appele ``Lisp Interaction''. C'est le mode par défaut. Il n'est en fait réellement utile que si vous souhaiter écrire du code Lisp (mais la majeure partie d'Emacs étant écrite en Lisp, pourquoi pas?)

3.2 Les modes de programmation

Emacs est avant tout un outil conçu par un programmeur pour des programmeurs. Il existe des modes de haute qualité pour presque tous les langages de programmation auxquels vous pouvez penser (et même quelques uns auxquels vous ne penserez pas). Je n'en décrirai rapidement que quelques uns ici.

La plupart des modes de programmation partagent des caractéristiques communes. Traditionnellement, il gèrent une ou plusieurs des choses suivantes:

Et en plus, il y a quelques modes qui ne sont pas spécifiques à un langage particulier mais qui sont très pratiques lors de la réalisation de tâches communes à beaucoup de langages. Des choses du genre interfaçage automatique avec votre logiciel de gestion de version, ajout de commentaires automatique au code, création de Makefiles, etc...

Lorsque vous additionnez tous ces modes, et prenez en compte la maturité et la stabilité du code d'Emacs, convenez qu'il supporte aisément la comparaison avec d'autres environnements de développement commerciaux destinés à des langages tels que C++ et Java. Et, bien sûr, il est gratuit.

C/C++/Java

Du fait de la similitude de la syntaxe des langages C, C++, et Java, un seul mode d'Emacs gère ces trois langages (tout comme Objective-C et IDL). C'est un paquetage mature et très complet inclus dans la distribution d'Emacs. Ce mode est appelé indifféremment cc-mode ou CC Mode.

Pour de plus amples détails ou pour télécharger une version récente, visitez http://www.python.org/emacs/.

Perl

En fait, il existe deux modes destinés à l'édition de code Perl dans Emacs. Le premier est appelé perl-mode (comme on pouvait s'y attendre) et le second cperl-mode. Je ne sais que peu de chose de leur histoire, et notamment pas pourquoi ces deux modes existent (la documentation ne le précise pas), mais il semblerait que le perl- mode ait été le mode original pour l'édition de code Perl sous Emacs. Il semble disposer de moins de fonctionnalités que le mode cperl-mode et reconnaît plus ou moins bien quelques particularités de construction du langage Perl.

Personnellement, j'utilise et recommande le cperl-mode qui semble être activement maintenu et dispose de plus de fonctionnalités que je n'en aurai jamais besoin. Vous trouverez la dernière version ici : ftp://ftp.math.ohio- state.edu/pub/users/ilya/emacs.

Mais ne me croyez pas sur parole. Essayez les deux et choisissez celui qui vous semble le meilleur en fonction de vos besoins.

Python

Python (un autre langage de script très populaire) dispose également de son mode dans Emacs. Pour ce que j'en sais, il n'est pas distribué avec Emacs GNU mais il l'est avec XEmacs. Il s'exécute néanmoins dans les deux éditeurs.

Vous pouvez récupérer le python-mode sur le site web officiel de Python http://www.python.org/emacs/python-mode/.

Les autres

Il existe de nombreux autres modes destinés à faciliter la tâche des programmeurs. Ils vous faciliteront la vie pour de nombreux travaux :

Et plus encore. Reportez-vous à la dernière section de ce document pour de plus amples informations sur la manière de trouver ces autres modes.

3.3 Rédactionnel

Les modes d'Emacs ne se limitent pas à l'écriture de code. Les personnes écrivant de la documentation (de n'importe quelle sorte) peuvent également bénéficier d'une large sélection de modes.

Vérification orthographique (mode ispell)

Les auteurs de nombreux types de documents ont besoin de vérifier l'orthographe de temps en temps. Si vous disposez d'ispell GNU vous pouvez taper M-x ispell et la vérification se lance sur le buffer courant. Si ispell rencontre des mots qu'il ne connaît pas, il vous présente une liste des remplacements possibles et vous laisse sélectionner l'un d'entre eux (ou aucun). Il s'agit d'une fonctionnalité équivalente à celles des vérificateurs orthographiques de nombreux logiciels commerciaux. Il est possible d'utiliser ispell-change-dictionary afin de changer de langue (il faut installer le dictionnaire adéquat !).

HTML (mode html-helper)

S'il vous arrive d'écrire de temps en temps des fichiers HTML (même fréquemment), essayez le mode html-helper-mode. Il est disponible depuis http://www.santafe.edu/~nelson/tools/ avec sa documentation.

Comme le suggère son nom, , le mode html-helper- mode facilite la tâche de personnes devant écrire en HTML manuellement (la bonne vieille école).

TeX (tex-mode)

Lorsque vous écrivez des documents en TeX, il est souvent agréable de bénéficier de la mise en valeur des caractères particuliers. tex-mode s'en occupe pour vous.

Même si je n'écris guère plus directement en TeX, ce mode m'a été d'un grand secours pour rendre mes sources TeX un peu plus lisibles.

SGML (sgml-mode)

Le document que vous lisez actuellement a été écrit en SGML (et probablement converti au format que vous êtes en train d'utiliser). sgml-mode gère toutes les bases des documents SGML: validation, surlignement, forward-tag, backward-tag, et bien d'autres. C'est un des modes standards d'Emacs.

3.4 Autres Modes

Bien sûr, il y a beaucoup d'autres modes destinés à vous rendre la vie plus facile. Voici juste un bref aperçu des plus courants:

Version Control (mode vc)

Le mode vc s'interface avec la majorité des back-ends de contrôle de version (RCS, SCCS, CVS) pour faciliter la recherche et l'archivage de fichiers, le suivi des mises à jour, etc... C'est un mode standard d'Emacs et sa documentation est intégrée à celle d'Emacs.

Mode Shell

Pourquoi passer sur une autre fenêtre ou console virtuelle pour lancer quelques commandes shell? Faites- le depuis Emacs, pas la peine de vous fatiguer :-)

M-x shell lancera un shell dans un buffer d'Emacs. Vous pouvez réaliser dans ce buffer la plupart des choses que vous pourriez faire sous un prompt traditionnel (excepté le lancement de programmes plein écran comme vi ou pine).

C'est également un mode standard d'Emacs, et sa documentation est intégrée à celle d'Emacs.

Telnet et FTP

Pourquoi passer dans une autre fenêtre ou console virtuelle pour lancer telnet ou FTP ? Faites-le depuis Emacs, inutile de vous fatiguer (Vous commencez à comprendre l'idée ?)

Tout comme on lance un shell depuis Emacs, faites de même avec telnet et ftp. Essayez M-x telnet ou M-x ftp pour le tester vous- même. Reportez-vous à la documentation pour plus d'informations.

Man

Pourquoi passer dans une autre fenêtre ou console virtuelle pour simplement consulter une page man ? Faites-le depuis Emacs et ne vous fatiguez pas (Promis, j'arrête).

Tout comme vous pouvez lancer un shell depuis Emacs, vous pouvez lire les pages man. Essayez M-x man pour le tester vous-même. Reportez-vous à la documentation pour de plus amples détails.

Ange-FTP

Extrait de la documentation de ange-ftp :

Ce paquetage essaie de rendre l'accès aux fichiers et répertoires via FTP depuis Emacs aussi simple et transparent que possible.

Ce qui signifie que vous pouvez traiter les fichiers d'une machine distante comme s'ils étaient en local. Si vous avez besoin d'éditer le fichier d'un ordinateur distant, demandez simplement son ouverture (par l'utilisation d'une syntaxe pour son chemin d'accès légèrement différente) et il prendra soin de tous les détails liés à la connexion et au rapatriement du fichier. Puis, lorsque vous enregistrerez le fichier par C-x C-s, ange-ftp interceptera l'enregistrement et écrira le fichier sur la machine distante.

Il s'agit, encore une fois, d'un module standard de la distribution d'Emacs, et sa documentation est donc intégrée à celle d'Emacs.


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