我在elisp中创建了以下宏。只有当变量未绑定时,它才会将值"val"设置为变量"var"。这样,在.emacs文件中设置的变量就不会在其他地方被忽略。
(defmacro set-ifunbound (var val)
`(if (not (boundp ',var))
(setq ,var ,val)
(identity ,var)))
当然,这必须是一个共同的模式。有没有一种内在的方式来做同样的事情?
defvar
就是这样做的。