2013-07-04 111 views
8

如果我调出emacs的自定义界面,编辑一个变量,然后设置并保存它,它的新值将存储在我的i​​nit文件的(custom-set-variables ...)列表中。用elisp保存“自定义设置变量”

现在,假设我修改了elisp中的变量值(使用(setq ...)或其他)。

如何使用elisp而不是交互式界面将此新值保存到(custom-set-variables ...)列表

+0

我知道我canb只是写'(setq'命令到我的init文件,但那不是我要找的,我需要一个自动的方法来保存变量 – Malabarba

+0

默认行为是不列出变量定义当用用户界面保存自定义设置变量时,使用'setq'设置变量;并且,通常不会通过用户界面覆盖这些'setq'变量对于手动设置的用户界面保存的变量,实际上需要在你的elisp代码中使用相同的格式 - 也就是你在用户界面保存后看到的相同格式。长话短说,如果你使用'setq' - 你不能从这里到达 - 除非你使用一个新的' setq'在之前的'setq'之后加载,有效地重新定义它。 – lawlist

+0

魔法与'.../lisp/cus-edit.el'和'.../lisp/custom.el'发生在一起 – lawlist

回答

7

看起来你正在寻找customize-save-variable

0

`自定义文件的价值”说,在您的自定义存储。这是一个普通的Emacs Lisp,e.i.文本文件。您可以从任何程序更改值,创建elisp命令或通过sed,perl,python,emacs-batch模式等从外部更改它。

+0

确实如此,但必须比手动解析自定义文件更容易(且风险更低)。 – Malabarba