<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>LinuxDoc+Emacs+Ispell-HOWTO: Trucchetti Sporchi</TITLE> <LINK HREF="LinuxDoc+Emacs+Ispell-HOWTO-7.html" REL=next> <LINK HREF="LinuxDoc+Emacs+Ispell-HOWTO-5.html" REL=previous> <LINK HREF="LinuxDoc+Emacs+Ispell-HOWTO.html#toc6" REL=contents> </HEAD> <BODY> <A HREF="LinuxDoc+Emacs+Ispell-HOWTO-7.html">Avanti</A> <A HREF="LinuxDoc+Emacs+Ispell-HOWTO-5.html">Indietro</A> <A HREF="LinuxDoc+Emacs+Ispell-HOWTO.html#toc6">Indice</A> <HR> <H2><A NAME="s6">6. Trucchetti Sporchi</A> </H2> <H2><A NAME="ss6.1">6.1 Inserire automaticamente un header</A> </H2> <P> Emacs permette di associare delle procedure ad eventi specifici (aprire un file, salvarlo, avviare una nuova modalità etc ). <P> <P> La libreria <B>autoinsert</B> utilizza questa caratteristica: quando aprite un nuovo file con Emacs, questa libreria inserisce, dipendentemente dal tipo di file, un header <EM>standard</EM>. <P> Nel nostro caso, questo header <EM>standard</EM> può definire il tipo di documento (LinuxDoc), il titolo, l'autore, e la data. <P> Descriverò adesso due modi per fare questo. Potete creare un template che contenga le informazioni da inserire, oppure potete avviare una routine <B>elisp</B>. <P> <H3>Inserendo un file </H3> <P> Per prima cosa dovete permettere a Emacs di avviare la <CODE>auto-insert</CODE> quando un file viene aperto, quindi di leggere la libreria <CODE>auto-insert</CODE> che dichiara la <CODE>auto-insert-alist</CODE> che necessita di cambiamenti. Questa lista definisce gli header da inserire per ogni tipo di file. Per default, il file da inserire deve trovarsi nella cartella <CODE>~/insert/</CODE>, ma è possibile definire la variabile <CODE>auto-insert-directory</CODE> se volete mettere i vostri file da qualche altra parte. <P> Aggiungere le seguenti linee al vostro <CODE>.emacs</CODE> per il inserire il file <CODE>~/emacs/sgml-insert.sgml</CODE> ogni volta che aprite un nuovo documento SGML: <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> A questo punto potete scrivere nel file <CODE>~/emacs/sgml-insert.sgml</CODE> il vostro header personalizzato, quindi riavviare Emacs e aprire qualche nuovo file .sgml. Emacs dovrebbe chiedervi la conferma per l'inserimento automatico, e se rispondete 'Yes', inserire il nuovo header. <P> <H3>Avviando una routine </H3> <P> Questo funziona come prima, ma invece di impostare la <CODE>auto-insert-alist</CODE> in un file da inserire, dovete impostare una funzione da eseguire. Questo è il procedimento, assumendo come esempio che volete scrivere una funziona in un file chiamato <CODE>~/emacs/sgml-header.el</CODE> (non è il caso di appesantire il vostro <CODE>.emacs</CODE> con questo tipo di funzioni, oppure diventerà troppo grande): <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> Troverete nella <A HREF="LinuxDoc+Emacs+Ispell-HOWTO-7.html#insert-sgml-header">appendice</A> un esempio di una funzione <CODE>insert-sgml-header</CODE>. <P> <HR> <A HREF="LinuxDoc+Emacs+Ispell-HOWTO-7.html">Avanti</A> <A HREF="LinuxDoc+Emacs+Ispell-HOWTO-5.html">Indietro</A> <A HREF="LinuxDoc+Emacs+Ispell-HOWTO.html#toc6">Indice</A> </BODY> </HTML>