defvar
初始化变量copy-region-as-kill
函数是用Emacs Lisp编写的。其中的两个函数,kill-append
和 kill-new
,复制缓冲区中的一段区域并将其保存在一个名为 kill-ring
的变量中。本节描述了如何使用 defvar
特殊形式创建和初始化 kill-ring
变量。
(再次注意,术语 kill-ring
是不准确的。从缓冲区中剪切出来的文本可以被还原;它不是一个尸体环,而是一个可以复活的文本环。)
在Emacs Lisp中,诸如 kill-ring
这样的变量是通过使用 defvar
特殊形式创建并赋予初始值的。其名称来自于“定义变量”。
defvar
特殊形式类似于 setq
,因为它设置变量的值。但与 setq
不同的有两点:首先,它仅在变量尚未具有值时设置变量的值。如果变量已经有值,defvar
就不会覆盖现有值。其次,defvar
具有文档字符串。
(有一个相关的宏,defcustom
,用于用户自定义的变量。它比 defvar
更强大。
(See 使用 defcustom
设置变量.)