Emacs staat je toe om een aantal acties aan een event te koppelen (openen van een bestand, opslaan, opstarten van een nieuwe mode, enz).
De autoinsert library maakt van deze faciliteit gebruik: als je een nieuw bestand onder Emacs opent, voegt deze library, overeenkomstig het type bestand, een standaard header in.
In ons geval, zou deze standaard header evengoed het deel kunnen zijn dat het documenttype (LinuxDoc), de titel, de auteur, en de datum declareert.
Ik zal hier twee manieren beschrijven om een dergelijke header in te voegen. Je zou een sjabloon-bestand met informatie in kunnen voegen, of je zou een elisp-routine op kunnen starten.
Je moet Emacs eerst laten weten dat het de
auto-insert
opstart als het een bestand opent, dan
de autoinsert library in te lezen, die de
auto-insert-alist
lijst declareert die we moeten wijzigen. Deze
lijst definieert de header voor ieder bestandstype die moet worden ingevoegd.
Standaard moet het bestand dat moet worden ingevoegd in de
~/insert/
directory staan, maar het is mogelijk om de
auto-insert-directory
variabele te herdefiniëren,
als je het ergens anders wilt plaatsen.
Voeg de volgende regels toe aan je .emacs
bestand om het
bestand ~/emacs/sgml-insert.sgml
iedere keer dat je een
nieuw SGML-bestand opent, in te voegen:
(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))
Vervolgens kun je in het bestand ~/emacs/sgml-insert.sgml
je aangepaste header wegschrijven en dan Emacs opnieuw opstarten en
één of ander bestand
foobar.sgml
openen. Emacs zou je moeten vragen om de automatische
invoeging te bevestigen en als je `yes' antwoordt, je header invoegen.
Dit werkt net als voorheen, maar in plaats van de
auto-insert-alist
in te stellen op een bestand dat moet worden
ingevoegd, zul je het in moeten stellen
op een functie die moet worden uitgevoerd.
Zo kunt je verdergaan, ervan uitgaande dat je deze functie wilt wegschrijven
in een bestand met de naam ~/emacs/sgml-header.el
.
(het is niet nodig je .emacs
bestand met een dergelijke functie
te belasten, aangezien het nogal lang kan worden):
(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))
In de
appendix zul je een
voorbeeld aantreffen van de insert-sgml-header
functie.