<HTML> <HEAD> <TITLE>Pour aller plus loin</TITLE> </HEAD> <BODY> <H1>6. <A NAME="s6"></A>Pour aller plus loin </H1> <P> <A HREF="LinuxDoc-Emacs-Ispell-HOWTO.html#toc6">Contenu de cette section</A></P> <H2>6.1 <A NAME="ss6.1"></A> Insertion automatique d'une entête </H2> <P>Sous Emacs, il est possible d'<EM>accrocher</EM> des actions à chaque événement (ouverture d'un fichier, sauvegarde, lancement d'un mode, etc).</P> <P></P> <P>La bibliothèque <B>autoinsert</B> utilise cette fonctionnalité : lorsque vous ouvrez un nouveau fichier sous Emacs, cette bibliothèque insère, selon le type de ce fichier, une entête <EM>standard</EM>.</P> <P></P> <P>Dans notre cas, cette entête <EM>standard</EM> pourrait bien être la partie qui déclare le type de document (LinuxDoc), le titre, l'auteur et la date.</P> <P></P> <P>Je vais décrire ici deux façons d'insérer une telle entête. Soit en insérant un fichier que vous aurez préalablement écrit, soit en lançant une routine écrite en <B>elisp</B>.</P> <P></P> <H3>par l'insertion d'un fichier </H3> <P>Il faut tout d'abord préciser à Emacs d'exécuter la commande <CODE>auto-insert</CODE> à l'ouverture d'un fichier, puis lire la bibliothèque <B>autoinsert</B> qui déclare la liste <CODE>auto-insert-alist</CODE> qu'il nous faut modifier, cette dernière définissant pour chaque type de fichier l'entête à insérer. Le fichier à insérer doit par défaut se trouver dans le répertoire <CODE>~/insert/</CODE>, mais il est possible de redéfinir la variable <CODE>auto-insert-directory</CODE> si l'on veut le placer ailleurs. </P> <P></P> <P>Voici les lignes à rajouter à votre <CODE>.emacs</CODE> pour insérer le fichier <CODE>~/emacs/sgml-insert.sgml</CODE> à l'ouverture d'un nouveau fichier SGML : </P> <P> <PRE> (add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (setq auto-insert-directory "~/emacs/") (setq auto-insert-alist (append '((sgml-mode . "sgml-insert.sgml")) auto-insert-alist)) </PRE> </P> <P>Vous pouvez alors écrire dans le fichier <CODE>~/emacs/sgml-insert.sgml</CODE> votre entête personnalisée, puis relancer Emacs et ouvrir un fichier <CODE>toto.sgml</CODE>. Emacs devrait alors vous demander de confirmer l'insertion automatique, et dans l'affirmative insérer votre entête.</P> <P></P> <H3>par l'exécution d'une routine </H3> <P>Cela fonctionne un peu comme précédemment, mais au lieu de préciser dans la variable <CODE>auto-insert-alist</CODE> un fichier à insérer, il faut préciser une fonction à exécuter. Voici comment procéder, en supposant que l'on écrive cette fonction dans un fichier <CODE>~/emacs/sgml-header.el</CODE> (inutile d'encombrer votre <CODE>.emacs</CODE> avec cette fonction qui peut se révéler assez longue) :</P> <P> <PRE> (add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (add-to-list 'load-path "~/emacs") (load-library "sgml-header") (setq auto-insert-alist (append '(((sgml-mode . "SGML Mode") . insert-sgml-header)) auto-insert-alist)) </PRE> </P> <P>Vous pourrez trouver en <A HREF="LinuxDoc-Emacs-Ispell-HOWTO-7.html#insert-sgml-header">appendice</A> un exemple de cette fonction <CODE>insert-sgml-header</CODE>.</P> <P></P> <P></P> <HR> <P> Chapitre <A HREF="LinuxDoc-Emacs-Ispell-HOWTO-7.html">suivant</A>, Chapitre <A HREF="LinuxDoc-Emacs-Ispell-HOWTO-5.html">Précédent</A> <P> Table des matières de <A HREF="LinuxDoc-Emacs-Ispell-HOWTO.html#toc6">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>