【发布时间】:2014-02-20 18:57:46
【问题描述】:
在emacs中,我们可以定义自定义的用户选项变量。
defcustom - 在 Emacs Lisp 中编程http://www.gnu.org/software/emacs/manual/html_node/eintr/defcustom.html
我们可以使变量具有缓冲区本地绑定。
创建本地缓冲区 - GNU Emacs Lisp 参考手册http://www.gnu.org/software/emacs/manual/html_node/elisp/Creating-Buffer_002dLocal.html#Creating-Buffer_002dLocal
如果我想制作不可自定义的变量,我可以使用make-local-variable 或setq-local。
但我找不到任何方法如何使可自定义的变量具有缓冲区本地绑定。
即使我为 defcustom 定义的变量调用 make-local-variable,custom-set-variables 设置为 global-value。
如果我调用setq-local,值将设置为本地变量。这个比较好。但我认为这不是最佳做法。
是否有任何有效的方法可以为 defcustom 定义的变量设置缓冲区局部值?
【问题讨论】:
-
要(在代码中)为 any 变量设置缓冲区局部变量,请使用
setq-local(或 Emacs 24.3 之前的make-local-variable)。这是最佳实践。您的问题实际上是“我如何指定 withindefcustom声明变量应该始终是缓冲区本地的?” ?或者也许“如何使用自定义用户界面为变量设置缓冲区本地值?” ? -
@phils 对不起我的语言能力。我想问的是“有没有像复合
setq-local和custom-set-variables这样的功能?”。但是@Drew 发布了全面的答案。谢谢。