:type in defcustom 的用法是什么?

RNA*_*RNA 4 emacs customization

我不知道我理解的属性typedefcustom。我可以完美地定义以下变量而不符合type. type在这种情况下的目的是什么?

(defcustom foo 1 "foo" :type 'string)
(defcustom spam "a" "foo" :type 'integer)
Run Code Online (Sandbox Code Playgroud)

Dre*_*rew 5

正如 Elisp 手册(节点Variable Definitions)所说:它指定哪些值是合法的,以及如何显示该值。

正如@amalloy 所说,这会影响“供用户自定义的适当编辑控件”。它还会影响自定义是否将当前值显示为对:type或 类型不匹配有效。

总而言之,它为用户提供类型检查和编辑帮助,并决定了自定义如何显示值(作为 Lisp 值、布尔值等)。