39.3 将缩写保存到文件

保存缩写定义的文件实际上是 Lisp 代码文件。缩写以 Lisp 程序的形式保存,用于定义内容相同的缩写表。因此,你可以使用 load 加载该文件(see 程序的加载方式)。不过,Emacs 提供了 quietly-read-abbrev-file 函数作为更便捷的接口,并会在启动时自动调用该函数。

诸如 save-some-buffers 之类的用户级工具可在本节所述变量的控制下,自动将缩写保存到文件中。

User Option: abbrev-file-name

这是读取和保存缩写的默认文件名。默认情况下,Emacs 会查找 ~/.emacs.d/abbrev_defs,若未找到则查找 ~/.abbrev_defs;如果两个文件都不存在,Emacs 会创建 ~/.emacs.d/abbrev_defs

Function: quietly-read-abbrev-file &optional filename

该函数从名为 filename 的文件中读取缩写定义,该文件此前由 write-abbrev-file 写入。如果 filename 被省略或为 nil,则使用 abbrev-file-name 指定的文件。

顾名思义,该函数不会显示任何消息。

User Option: save-abbrevs

save-abbrevs 为非 nil 值时,表示 Emacs 应在保存文件时提示保存缩写(如果有修改)。如果值为 silently,Emacs 会直接保存缩写而不询问用户。abbrev-file-name 指定保存缩写的文件。默认值为 t

Variable: abbrevs-changed

定义或修改任何缩写(系统缩写除外)时,该变量会被设为非 nil。它作为标志,供 Emacs 各类命令提示保存缩写。

Command: write-abbrev-file &optional filename

abbrev-table-name-list 中列出的所有缩写表的全部缩写定义(系统缩写除外),以 Lisp 程序的形式保存到文件 filename 中,加载该程序可重新定义相同的缩写。无缩写可保存的表会被忽略。如果 filenamenil 或被省略,则使用 abbrev-file-name。该函数返回 nil