Page suivante Page précédente Table des matières
6. Pour aller plus loin
6.1 Insertion automatique d'une entête
Sous Emacs, il est possible d'accrocher des actions à chaque événement (ouverture d'un fichier, sauvegarde, lancement d'un mode, etc).
La bibliothèque autoinsert 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 standard.
Dans notre cas, cette entête standard pourrait bien être la partie qui déclare le type de document (LinuxDoc), le titre, l'auteur et la date.
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 elisp.
par l'insertion d'un fichier
Il faut tout d'abord préciser à Emacs d'exécuter la commande
auto-insertà l'ouverture d'un fichier, puis lire la bibliothèque autoinsert qui déclare la listeauto-insert-alistqu'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~/insert/, mais il est possible de redéfinir la variableauto-insert-directorysi l'on veut le placer ailleurs.
Voici les lignes à rajouter à votre
.emacspour insérer le fichier~/emacs/sgml-insert.sgmlà l'ouverture d'un nouveau fichier SGML :
(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))Vous pouvez alors écrire dans le fichier
~/emacs/sgml-insert.sgmlvotre entête personnalisée, puis relancer Emacs et ouvrir un fichiertoto.sgml. Emacs devrait alors vous demander de confirmer l'insertion automatique, et dans l'affirmative insérer votre entête.
par l'exécution d'une routine
Cela fonctionne un peu comme précédemment, mais au lieu de préciser dans la variable
auto-insert-alistun 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~/emacs/sgml-header.el(inutile d'encombrer votre.emacsavec cette fonction qui peut se révéler assez longue) :
(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))Vous pourrez trouver en appendice un exemple de cette fonction
insert-sgml-header.
Page suivante Page précédente Table des matières