<HTML> <HEAD> <TITLE>Ispell</TITLE> </HEAD> <BODY> <H1>5. <A NAME="s5"></A>Ispell </H1> <P> <A HREF="LinuxDoc-Emacs-Ispell-HOWTO.html#toc5">Contenu de cette section</A></P> <P>Si vous désirez vérifier l'orthographe de votre document directement depuis Emacs, vous pouvez utiliser la distribution <B>Ispell</B> et son mode associé sous Emacs.</P> <P></P> <H2>5.1 <A NAME="ss5.1"></A> Configuration initiale </H2> <P>Tout d'abord, ajoutez ces lignes à votre <CODE>.emacs</CODE> pour configurer Emacs :</P> <P> <PRE> (autoload 'ispell-word "ispell" "Check the spelling of word in buffer." t) (global-set-key "\e$" 'ispell-word) (autoload 'ispell-region "ispell" "Check the spelling of region." t) (autoload 'ispell-buffer "ispell" "Check the spelling of buffer." t) (autoload 'ispell-complete-word "ispell" "Look up current word in dictionary and try to complete it." t) (autoload 'ispell-change-dictionary "ispell" "Change ispell dictionary." t) (autoload 'ispell-message "ispell" "Check spelling of mail message or news post.") (autoload 'ispell-minor-mode "ispell" "Toggle mode to automatically spell check words as they are typed in.") </PRE> </P> <P></P> <P></P> <P></P> <H2>5.2 <A NAME="ss5.2"></A> Le choix de vos dictionnaires par défaut </H2> <P>Vous pouvez configurer Emacs pour qu'à l'ouverture d'un fichier, celui-ci choisisse automatiquement quels dictionnaires utiliser. Vous pouvez en effet utiliser plusieurs dictionnaires. Le premier et sûrement le plus important est le dictionnaire principal, distribué avec Ispell. Vous avez le choix entre plusieurs langues. Le deuxième est votre dictionnaire personnel, celui où Ispell ajoutera les mots qu'il n'aura pas trouvé dans le premier dictionnaire mais que vous lui aurez indiqué de garder.</P> <P>Voici les lignes à insérer à votre <CODE>.emacs</CODE> si vous désirez utiliser par défaut le dictionnaire français distribué avec Ispell, et placer votre dictionnaire personnel dans un fichier <CODE>.ispell-dico-perso</CODE> dans votre répertoire racine.</P> <P> <PRE> (setq sgml-mode-hook '(lambda () "Defauts pour le mode SGML." (setq ispell-personal-dictionary "~/.ispell-dico-perso") (ispell-change-dictionary "francais") )) </PRE> </P> <P></P> <H2>5.3 <A NAME="ss5.3"></A> Choix des dictionnaires pour un certain fichier </H2> <P>Un petit problème se pose si vous ne vérifiez pas toujours des textes dans la même langue. Et si vous traduisez des documents, il est probable que vous passiez d'une langue à l'autre assez souvent. </P> <P></P> <P>Je ne connais pas de moyen en Lisp de choisir, soit automatiquement, soit en un <EM>click</EM> de souris, les dictionnaires principaux et personnels associés à la langue utilisée dans le fichier en cours. (Si vous en connaissez un, faites-moi signe !)</P> <P></P> <P>Mais il est possible d'indiquer quels dictionnaires vous voulez utiliser pour ce fichier (et seulement celui-là). Il suffit de les rajouter en commentaire, à la fin du fichier, pour qu'Ispell puisse les lire en lançant une vérification :</P> <P> <PRE> <!-- Local IspellDict: english --> <!-- Local IspellPersDict: ~/emacs/.ispell-english --> </PRE> </P> <P>Si vous avez défini dans votre <CODE>.emacs</CODE> que vos dictionnaires par défaut seront français, vous pouvez alors ajouter ces lignes à chaque fin de fichier dont le texte est en anglais.</P> <P></P> <H2>5.4 <A NAME="ss5.4"></A> Vérifier votre document </H2> <P>Pour lancer la vérification de votre document en intégralité, utilisez, depuis n'importe où dans votre document <CODE>Meta-x ispell-buffer</CODE>. Vous pouvez aussi lancer la vérification sur une région seulement du document :</P> <P> <UL> <LI>Indiquez le début de la région avec <CODE>Ctrl-Spc</CODE> (mark-set-command),</LI> <LI> Placez-vous à la fin de la région à vérifier,</LI> <LI> tapez <CODE>Meta-x ispell-region</CODE>.</LI> </UL> </P> <P>Emacs lance alors Ispell. Si ce dernier trouve un mot qu'il ne connait pas, il vous indique ce mot (normalement en surbrillance) et vous demande de presser une touche :</P> <P> <UL> <LI><B>spc </B>accepte ce mot, uniquement pour cette fois,</LI> <LI><B>i </B>accepte ce mot et l'insère dans votre dictionnaire personnel, </LI> <LI><B>a </B>accepte ce mot pour cette session,</LI> <LI><B>A </B>accepte ce mot pour ce fichier, en l'insérant dans le dictionnaire local au fichier,</LI> <LI><B>r </B>permet de corriger le mot mal orthographié,</LI> <LI><B>R </B>permet de corriger toutes les occurrences du mot mal orthographié,</LI> <LI><B>x </B>arrête la vérification, et replace le curseur à sa position initiale,</LI> <LI><B>X </B>arrête la vérification en laissant le curseur sur le mot mal orthographié, vous permettant de modifier votre fichier ; vous pouvez continuer la vérification en tapant <CODE>Meta-x ispell-continue</CODE>,</LI> <LI><B>? </B>affiche une aide en ligne.</LI> </UL> </P> <P>Si Ispell trouve un ou plusieurs mots ressemblant à celui qu'il ne connait pas, il vous les indique dans une petite fenêtre, chacun précédé d'un chiffre. Il suffit de presser un de ces chiffres pour corriger le mot mal orthographié par le mot correspondant.</P> <P></P> <H2>5.5 <A NAME="ss5.5"></A> Dictionnaire personnel contre dictionnaire local au fichier </H2> <P>La touche <B>i</B> permet d'insérer un mot dans le dictionnaire personnel, alors que la touche <B>A</B> permet d'insérer un mot dans le dictionnaire local au fichier.</P> <P></P> <P>Le dictionnaire local au fichier est une suite de mots insérés à la fin du fichier, sous forme de commentaires, et qui est relu par Ispell chaque fois que vous le lancez sur ce fichier. Cela permet d'accepter certains mots, valables dans ce fichier, mais qui ne le seraient pas dans d'autres.</P> <P></P> <P>A mon avis, il est préférable que le dictionnaire personnel soit réservé aux mots que le dictionnaire principal ne connait pas mais qui font vraiment partie de la langue (comme les mots composés), plus certains mots n'appartenant pas à la langue ou noms propres qui reviennent dans un grand nombre de fichiers (comme <I>Linux</I>) et ne ressemblant pas trop à un mot du dictionnaire principal : l'ajout par exemple de certains noms et prénoms de personnes dans le dictionnaire personnel peut être dangereux, car ils ressemblent parfois à un mot de la langue (imaginez qu'il ne trouve pas de fautes dans la phrase : `<I>Ted en est l'effet au phil du temps.'</I> !).</P> <P></P> <H2>5.6 <A NAME="ss5.6"></A> La vérification `à la volée' </H2> <P>Ispell peut aussi vérifier l'orthographe au fur et à mesure que vous tapez votre document. Il faut utiliser pour cela le mode <B>ispell-minor-mode</B>. Lorsque vous désirez lancer ou arrêter ce mode de vérification, tapez <CODE>Meta-x ispell-minor-mode</CODE>. Ispell vous envoie alors un <I>bip</I> chaque fois que vous tapez un mot qu'il ne connait pas. </P> <P></P> <P>Si ces <I>bip</I> à répétition vous ennuient (ou si votre voisin de palier dort !), vous pouvez les remplacer par un flash de l'écran, en tapant <CODE>Meta-x set-variable RET visible-bell RET t RET</CODE>. Ou ajoutez cette ligne à votre <CODE>.emacs</CODE> pour faire taire Emacs à tout jamais :</P> <P> <PRE> (setq visible-bell t) </PRE> </P> <P></P> <H2>5.7 <A NAME="ss5.7"></A> Saut de régions </H2> <P>Il est possible de ne pas vérifier votre document en intégralité, en sautant quelques régions bien spécifiques. En effet, vous voudrez sûrement ne pas vérifier l'orthographe de vos balises SGML. Pour cela, ajoutez la ligne suivante à votre <CODE>.emacs</CODE> :</P> <P> <PRE> (setq ispell-skip-sgml t) </PRE> </P> <P>Une version Beta du 20 Mars 98 du fichier <CODE>ispell.el</CODE> est disponible à l'adresse <A HREF="http://kdstevens.com/~stevens/ispell-page.html">http://kdstevens.com/~stevens/ispell-page.html</A> . Cette version étend les régions SGML à sauter. En effet, la version d'<CODE>ispell.el</CODE> fournie avec Emacs permet seulement de sauter les tags SGML, de la forme <B><tt></B> ou <B></tt></B>.</P> <P></P> <P>Cette version Beta permet de sauter également les régions entre :</P> <P> <UL> <LI><author> et la fin de la ligne,</LI> <LI>< et / (pour les tags SGML de la forme <B><em/.../</B>,</LI> <LI><code> et </code>,</LI> <LI><verb> et </verb>,</LI> <LI><tt> et </tt>.</LI> </UL> </P> <P></P> <HR> <P> Chapitre <A HREF="LinuxDoc-Emacs-Ispell-HOWTO-6.html">suivant</A>, Chapitre <A HREF="LinuxDoc-Emacs-Ispell-HOWTO-4.html">Précédent</A> <P> Table des matières de <A HREF="LinuxDoc-Emacs-Ispell-HOWTO.html#toc5">ce chapitre</A>, <A HREF="LinuxDoc-Emacs-Ispell-HOWTO.html#toc">Table des matières</A> générale</P> <P> <A HREF="LinuxDoc-Emacs-Ispell-HOWTO.html">Début</A> du document, <A HREF="#0"> Début de ce chapitre</A></P> </BODY> </HTML>