Next Previous Contents

6. Sleipe triks

6.1 Automatisk bruk av hoder

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.

ved innsetting av fil

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.

å kjøre en rutine

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.


Next Previous Contents