Emacs tillater tilkobling av noen aksjoner til hver begivenhet (som åpning av fil, lagring, kjøring av nye modi, osv.).
autoinsert-biblioteket bruker dette valget. Når du åpner en ny fil under emacs, så blir biblioteket lagt til i samsvar med filtypen. Dokumentet kan få ett standardhode.
I vårt tilfelle så kan standardhodet være en del av ett uttrykk for dokumenttypen (LinuxDoc), tittelen, forfatteren, og dato.
Her beskrives to måter å legge til et hode. En kan sette inn en malfil som innholder informasjonen som skal på plass, eller en kan kjøre en kort elisp-rutine.
Først må emacs fortelles om å kjøre auto-insert ved
åpning av filer, for så å lese autoinsert-biblioteket
som igjen deklarerer auto-insert-alist-liste. Denne må
endres. Denne lista definerer hodet vi skal legge til for hver
fil. På forhånd må vi bestemme oss for å plassere fila i f.eks.
~/insert/-katalogen. Det er mulig å redefinere
variabelen auto-insert-directory hvis filene skal
plasseres et annet sted.
Legg til følgende linjer i .emacs-fila om
~/emacs/sgml-insert.sgml skal settes inn hver gang det
åpnes en ny SGML-fil:
(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))
Skrive inn ditt tilpassede hode i
~/emacs/sgml-insert.sgml, og restarte emacs. Så kan du
prøvekjøre det hele ved å åpne noen
foobar.sgml-testfiler. Emacs vil spørre om bekreftelse
for å tillate automatisk tilkobling. Svarer du positivt til dette
blir hodet lastet inn.
Dette virker som før, men istedenfor å forhåndskoble
auto-insert-alist til en fil som skal legges inn, så må
den settes til en funksjon som skal kjøres. Framgangsmåten er,
tatt for gitt at du skriver funksjonen i en egen fil
~/emacs/sgml-header.el (det er ikke nødvendig å belaste
.emacs-filen slike funksjoner fordi funksjonen kan
bli lang):
(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))
I
appendix vil du finne et
eksempel på en settinn-sgml-hode-funksjon.