Next Previous Contents

6. 一些投機的技巧

6.1 自動插入頁首 (header)

在 Emacs 下,您可以將任何事件外掛 (hook) 任何的動作(像是打開一個檔案,儲存,或執行一個新的模式,等等)。

您也可以利用 autoinsert 程式庫來執行一些特別的動作:當您在 Emacs 下開新檔案時,這個程式庫就會根據檔案的屬性來插入相符的標準頁首。

就我們的情形,這標準頁首就是我們說明文件型態 (LinuxDoc),標題,作者,及日期的地方。

接下來我會描述兩個如何插入這種頁首的方法。您可以插入一個含有相關資訊的模板 (template) 檔案,或者您也可以跑一跑 elisp 程式。

藉由插入一個檔案

當您開啟一份檔案時,首先您必須告訴 Emacs 執行自動插入,然後再讀取 autoinsert 程式庫的資料來宣告我們要改變的 auto-insert-alist 表單。這表單定義了不同檔案型態所要插入的頁首。它的預設值是要插入的檔案必須在 ~/insert/ 目錄下,但如果您要重新定義其 auto-insert-directory 也是可行的。

每一次您開啟一份新的 SGML 檔案時,只要在 .emacs 檔案內加入下列指示,您就可以插入 ~/emacs/sgml-insert.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))
     

那您就可以在 ~/emacs/sgml-insert.sgml 檔寫入您自訂的頁首,然後再重新執行 Emacs 來開啟某一 foobar.sgml 檔案,之後 Emacs 會詢問您確認這自動插入的指令來插入您要的頁首。

藉由執行一個程式

這方法跟上述大同小異,但不同的是您必須設定 auto-insert-alist 表單,告訴它要插入的是一個執行程式,而非一個檔案。只要在 .emacs 檔案內加入下列指示,就可以自動執行,不過當然您得先把這程式寫在一個叫做 ~/emacs/sgml-header.el 的檔案裡才可以。(鑒於這函式可能會過長,您不需要將它放在 .emacs 檔案裡):

      (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))
     

您可以參考 附錄裡有關 Insert-sgml-header 程式的例子。


Next Previous Contents