下一页 上一页 目录

6. 实用技巧

6.1 自动插入页眉

Emacs 允许你将一些操作挂钩到任何事件上(例如打开文件、保存、运行新模式等等)。

autoinsert 库使用了这个特性:当你在 Emacs 中打开一个新文件时,这个库会根据文件类型插入一个标准页眉。

在我们的例子中,这个标准页眉可以很好地是声明文档类型 (LinuxDoc)、标题、作者和日期的部分。

我将在这里描述两种插入这种页眉的方法。你可以插入一个包含要插入信息的模板文件,或者你可以运行一个 elisp 例程。

通过插入文件

你必须首先告诉 Emacs 在打开文件时运行 auto-insert,然后读取 autoinsert 库,该库声明了我们需要修改的 auto-insert-alist 列表。此列表定义了每种文件类型要插入的页眉。默认情况下,要插入的文件必须在 ~/insert/ 目录中,但是如果你想把它放在其他地方,可以重新定义 auto-insert-directory 变量。

将以下行添加到你的 .emacs 文件中,以便每次打开新的 SGML 文件时都插入 ~/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/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 函数的示例。


下一页 上一页 目录