有时defvar
/ defcustom
变量会被其他带有setq
等的elisp脚本中的另一个表达式更改,或者它们会被目录/文件本地设置更改。实际上,我可以使用describe-variable
查看其原始值,然后手动设置它;但它仍然有点冗长。
在Vim中,总有一种方法可以使用!
恢复某些变量的默认值。我相信Emacs也有办法实现这一目标。
那么有没有更简单和互动的方式呢?感谢。
更新:使用set-default
无法正常工作。例如,goto-address-mail-face
的原始值在goto-addr.el中为italic
,并假设(setq goto-address-mail-face 'link)
中有~/emacs.d/init.el
。但是,当我在迷你缓冲区中(setq goto-address-mail-face (default-value 'goto-address-mail-face))
时,结果仍为link
。
答案 0 :(得分:1)
对于defcustom
变量,您可以使用M-x customize-variable
界面。
对于defvar
,我认为INITVALUE
参数不会被记住(我认为它甚至不会在变量已经绑定的情况下进行评估)。
变量可以有“默认”值,但这是指全局值(与缓冲区本地绑定相对),当然可以修改。
您可以使用M-: (setq SYMBOL (default-value 'SYMBOL))
参见 C-h i g (elisp) Default Value
RET