在Emacs中,当您通过M-x customize设置某些变量时,它们具有特殊的行为,但是如果您通过setq
设置相同的变量,则不会触发这些行为。是否有一种编程方式可以设置这些变量,以便触发类似用户通过customize设置变量时的特殊行为?
此外,是否有一种函数可以编程方式将值保存到用户的自定义文件中?我正在尝试实现一种功能,重新添加默认元素到列表中,而不会删除用户添加的元素。
在Emacs中,当您通过M-x customize设置某些变量时,它们具有特殊的行为,但是如果您通过setq
设置相同的变量,则不会触发这些行为。是否有一种编程方式可以设置这些变量,以便触发类似用户通过customize设置变量时的特殊行为?
此外,是否有一种函数可以编程方式将值保存到用户的自定义文件中?我正在尝试实现一种功能,重新添加默认元素到列表中,而不会删除用户添加的元素。
customize-set-variable
是你想要的,不是custom-set-variables
(这里不需要)。
通常情况下,还可以查看变量(用户选项)的defcustom
,以了解其:set
插槽等功能。虽然不必要,但在尝试编程设置值之前了解这些功能是很有帮助的。
对于一个关于help-gnu-emacs@gnu.org
的问题,下面的回复也可能会有所帮助:
http://lists.gnu.org/archive/html/help-gnu-emacs/2013-08/msg00544.html
更新:
你后来编辑了你的问题,询问如何保存新值。你可以使用customize-save-variable
。它设置并保存新值。
:set
属性来设置变量。 - Ryan C. Thompsoncustom-save-variable
就是您想要的函数;它的签名与custom-set-variable
完全相同,唯一的区别在于将新值作为custom-set-variables
表单写入用户的自定义文件。 - Aaron Millercustom-set-variables
不会在 用户通过自定义设置变量后 执行操作,它既设置又保存值。您可以使用它来回答稍后提出的第二个问题(作为更新)。2. 这里不需要 custom-set-variables
和 custom-save-variables
的通用性。当然您可以使用它们,但没必要。实际上有几个 custom-*
和 customize-*
函数,具体取决于您想要做什么。而且 customize-*
函数也是命令,因此您可以交互地使用它们。 - Drew.emacs
文件中,对吗(这至少是从“选项”菜单中选择“保存选项”时发生的事情)?因此,如果您在.emacs
文件中使用customize-set-variable
,那么该值是否也被实质上保存了呢? - HelloGoodbye使用函数default-value
,然后跟随所提到的custom-set-variable
可能会解决问题。