Emacs vam omogoča nastaviti, da se nekatere akcije sprožijo ob določenih dogodkih (npr. odpiranje datoteke, shranjevanje, zagon novega načina itd.).
Knjižnica autoinsert uporablja naslednjo lastnost: ko v Emacsu odprete novo datoteko, vanjo ta knjižnica doda standardno (glede na vrsto datoteke) zaglavje.
V našem primeru bi lahko to standardno zaglavje določilo vrsto dokumenta (LinuxDoc), naslov, avtorja in datum.
Tu bom opisal dva načina za dodajanje takega zaglavja. Vrinete lahko datoteko s predlogo, v kateri so vse naštete informacije, lahko pa poženete rutino v elispu.
Najprej morate povedati Emacsu, naj ob odpiranju datoteke požene
auto-insert, potem naj prebere knjižnico autoinsert, ki
določi seznam auto-insert-alist, tega pa moramo popraviti. Ta seznam
določa zaglavje, ki se bo vrinilo v odvisnosti od vrste datoteke. Privzeto
mora biti datoteka za vrivanje v imeniku ~/insert/, vendar je
mogoče
popraviti vrednost spremenljivke auto-insert-directory,
če želite imeti datoteko kje drugje.
V datoteko .emacs dodajte naslednje vrstice, da se bo datoteka
~/emacs/sgml-insert.sgml vrinila vsakič, ko odprete novo datoteko
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))
Zatem si lahko v datoteko ~/emacs/sgml-insert.sgml napišete ustrezno
zaglavje, znova poženete Emacs in odprete neko datoteko foobar.sgml.
Emacs bi vam moral reči, da potrdite avtomatsko dodajanje zaglavja, in če
odgovorite z 'yes', ga doda.
To deluje podobno kakor prej, le da morate namesto nastavljanja seznama
auto-insert-alist nastaviti funkcijo, ki naj se izvede. Prikazali
bomo ta postopek, pri čemer bomo predpostavili, da želite napisati to funkcijo
v datoteko ~/emacs/sgml-header.el. (Nobene potrebe ni, da datoteko
.emacs nasmetite s takimi funkcijami, ker se lahko zgodi, da bo
predolga):
(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))
V
dodatku boste našli zgled funkcije
insert-sgml-header.