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
.