1

有时defvar/defcustom变量会被其他 elisp 脚本中的另一个表达式更改setq,或者它们被目录/文件本地设置更改。事实上,我可以用describe-variable它来查看它的原始值,然后手动设置它;但是它仍然有点冗长。

在 Vim 中,总有一种方法可以通过使用!. 而且我相信 Emacs 也有办法实现这个目标。

那么有没有更简单和互动的方式呢?谢谢。

更新:使用set-default将不起作用。例如, 的原始goto-address-mail-faceitalicgoto-addr.el 中,假设 I(setq goto-address-mail-face 'link)~/emacs.d/init.el. 但是,当我(setq goto-address-mail-face (default-value 'goto-address-mail-face))在 minibuffer 中时,结果仍然是link.

4

1 回答 1

1

对于defcustom变量,您可以使用M-x customize-variable接口。

对于defvar,我不认为该INITVALUE参数被记住(而且我认为它甚至不会在变量已经绑定的情况下被评估)。

变量可以具有“默认”值,但这指的是全局值(与缓冲区本地绑定相反),当然可以修改。

您可以使用交互方式将缓冲区局部变量设置为其默认值M-: (setq SYMBOL (default-value 'SYMBOL))

C-hig (elisp) Default Value RET

于 2013-05-08T02:58:42.793 回答