如何在Emacs Lisp中以编程方式设置自定义变量?

Rya*_*son 7 emacs customization elisp

在Emacs中,一些变量在通过Mx自定义设置时具有特殊行为,当您通过设置相同的变量时不会触发setq.是否有一种编程方式来设置这样的变量,以便触发特殊行为,就像用户通过自定义设置变量一样?

此外,是否有一个函数以编程方式将值保存到用户的自定义文件?我正在尝试实现一个功能,将默认元素重新添加到列表中,而不删除用户添加的元素.

Dre*_*rew 6

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.它设置并保存新值.

  • 注意后人:如果你想以编程方式设置一个自定义变量并为将来的会话保存新值,`custom-save-variable`就是你想要的功能; 它的签名与`custom-set-variable`的签名相同,其行为的唯一区别在于将新值写为用户自定义文件中的`custom-set-variables`表单. (2认同)