Naprej Nazaj Kazalo

6. Umazane zvijače

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 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.

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 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.

s funkcijo v elispu

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.


Naprej Nazaj Kazalo