Emacs 输入defcustom的用法是什么?
我不确定我是否理解Emacs 输入defcustom的用法是什么?,emacs,customization,Emacs,Customization,我不确定我是否理解defcustom中的属性type。我可以完美地定义以下变量,而不必遵循类型。在这种情况下,类型的目的是什么 (defcustom foo 1 "foo" :type 'string) (defcustom spam "a" "foo" :type 'integer) 设置:键入会导致自定义变量为用户提供适当的编辑控件进行自定义。正如Elisp手册(节点变量定义)所述:它指定哪些值是合法的,以及如何显示值。” 正如@amalloy所说,这会影响“为用户自定义的适当编辑控件”。
defcustom
中的属性type
。我可以完美地定义以下变量,而不必遵循类型
。在这种情况下,类型
的目的是什么
(defcustom foo 1 "foo" :type 'string)
(defcustom spam "a" "foo" :type 'integer)
设置
:键入会导致自定义变量为用户提供适当的编辑控件进行自定义。正如Elisp手册(节点变量定义)所述:它指定哪些值是合法的,以及如何显示值。”
正如@amalloy所说,这会影响“为用户自定义的适当编辑控件”。它还会影响“自定义”是否将当前值显示为对:type
有效或类型不匹配
总之,它为用户提供类型检查和编辑帮助,并确定Customize如何显示值(作为Lisp值、布尔值等)。首先,integer的类型是integer
,而不是int
,因此您的特定示例无法使用Customize
:type
确定使用的编辑控件,并在保存自定义项时提供完成和类型检查:
编辑控件
M-x自定义变量
选择最适合为预期类型输入值的编辑控件。例如,boolean
类型成为切换按钮,简单类型为integer
或string
获取行编辑,选项
成为值菜单,设置
复选框列表,例如tc
完成
在某些编辑控件中,自定义提供完成。例如,当您在函数
类型的行编辑中按M-Tab
时(用于钩子变量),自定义自动完成函数名。如果有多个匹配名称,您将看到一个包含所有完成候选项的弹出缓冲区。同样,color
小部件为您提供所有已知颜色名的完成
类型检查
对于所有编辑控件,“自定义”会在保存前检查当前值的类型,并拒绝应用任何不匹配类型的自定义
例如,如果您在integer
小部件中输入非数字,并尝试应用或保存自定义,Customize将拒绝这样做,并发出信号“此字段应包含整数”错误。似乎无论使用什么类型
,自定义变量
@RNA都没有什么不同,请尝试使用更复杂的值(例如选择
与重复
)。此外,自定义变量
在向整型
字段中输入字符串时应拒绝保存。它是'integer
,而不是'int
。有关更多详细信息,请参阅Emacs Lisp手册的一节。有关更多详细信息,请参阅Emacs Lisp手册的一节。@chwarr:当然。感谢添加该链接.