Naprej Nazaj Kazalo

6. Umazani triki

6.1 Avtomatsko dodajanje zaglavja...

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 tip datoteke) zaglavje.

V našem primeru bi lahko to standardno zaglavje določilo tip dokumenta (LinuxDoc), naslov, avtorja in datum.

Tukaj bom opisal dva načina za dodajanje takšnega zaglavja. Vrinete lahko datoteko s predlogo, ki vsebuje vse naštete informacije, lahko pa poženete rutino v elispu.

z vrivanjem datoteke

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 glede na tip 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 vašo 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.

s funkcijo v elispu

To deluje podobno kot prej, le da morate namesto nastavljanja seznama auto-insert-alist nastaviti funkcijo, ki naj se izvrši. Prikazali bomo ta postopek, pri čemer bomo predpostavili, da želite naisati to funkcijo v datoteko ~/emacs/sgml-header.el. (Nobene potrebe ni, da datoteko .emacs zasmetite s takšniimi 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 primer funkcije insert-sgml-header.


Naprej Nazaj Kazalo