Avanti Indietro Indice

6. Trucchetti Sporchi

6.1 Inserire automaticamente un header

Emacs permette di associare delle procedure ad eventi specifici (aprire un file, salvarlo, avviare una nuova modalità etc ).

La libreria autoinsert utilizza questa caratteristica: quando aprite un nuovo file con Emacs, questa libreria inserisce, dipendentemente dal tipo di file, un header standard.

Nel nostro caso, questo header standard può definire il tipo di documento (LinuxDoc), il titolo, l'autore, e la data.

Descriverò adesso due modi per fare questo. Potete creare un template che contenga le informazioni da inserire, oppure potete avviare una routine elisp.

Inserendo un file

Per prima cosa dovete permettere a Emacs di avviare la auto-insert quando un file viene aperto, quindi di leggere la libreria auto-insert che dichiara la auto-insert-alist 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 ~/insert/, ma è possibile definire la variabile auto-insert-directory se volete mettere i vostri file da qualche altra parte.

Aggiungere le seguenti linee al vostro .emacs per il inserire il file ~/emacs/sgml-insert.sgml ogni volta che aprite un nuovo documento 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))
      

A questo punto potete scrivere nel file ~/emacs/sgml-insert.sgml 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.

Avviando una routine

Questo funziona come prima, ma invece di impostare la auto-insert-alist 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 ~/emacs/sgml-header.el (non è il caso di appesantire il vostro .emacs con questo tipo di funzioni, oppure diventerà troppo grande):

      (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))
      

Troverete nella appendice un esempio di una funzione insert-sgml-header.


Avanti Indietro Indice