2013-08-30 39 views
6

在Emacs中,当通过M-x自定义设置时,某些变量具有特殊行为,当您通过setq设置相同变量时不会触发。有没有一种编程方式来设置这样的变量,使得特殊行为将被触发,就好像用户通过自定义来设置变量一样?如何在Emacs Lisp中以编程方式设置自定义变量?

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

+1

你会寻找'自定义设置variables'?这正是您通常在'.emacs'文件中所具有的。 – nickie

回答

6

customize-set-variable是你想要的,而不是custom-set-variables(这里没有必要)。

一般来说,也可以看一下defcustom的变量(用户选项),看看它的:set插槽的功能是什么等。不需要,但很好知道你尝试设置值以编程方式。

这回答一个问题[email protected]也可能有帮助: http://lists.gnu.org/archive/html/help-gnu-emacs/2013-08/msg00544.html

+0

是的,这就是我想要的,正是因为它使用':set'属性来设置变量。 –

+2

注意后人:如果您想以编程方式设置自定义变量并为将来的会话保存新值,则“custom-save-variable”是您想要的功能;它的签名和'custom-set-variable'的签名是一样的,它的行为唯一的区别是在用户自定义文件中将新的值作为'custom-set-variables'形式写入。 –

0

使用功能default-value后面提到的custom-set-variable可能会这样做。

相关问题