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.