接 什么情况下必须使用setq-default? - #4,来自 glgl-schemer
如何确定一个variable是否是buffer-local的?
我现在是通过看help……但是help也不一定准确,比如paragraph-start
谢谢
接 什么情况下必须使用setq-default? - #4,来自 glgl-schemer
如何确定一个variable是否是buffer-local的?
我现在是通过看help……但是help也不一定准确,比如paragraph-start
谢谢
C-h f local-variable-p
(info “elisp”)C-x C-e C-s local variable
有buffer local ,file local 连目录都有local
为什么 help 会不准确…
(defvar foo 1)
(make-local-variable 'foo)
(setq foo 123)
describe foo 可以看到
foo’s value is 123
Local in buffer *scratch*; global value is 1
(如果 help 不准确,那 Emacs 就没什么东西准确了 233)
我用词不准确……
我的意思是help无法提供“我是否该用setq-default
设置它”这一信息
有
Automatically becomes buffer-local when set.
的就是可以用setq-default
的?然后用了之后能否生效要看你的配置了,如果没有像spacemacs那样偷偷在mode hook里面又改了一下,那setq-default
肯定是可以依赖的
我很多的问题都来自我的强迫症。包括我当初学编程的理由也是”它是确定的“(请原谅我当时的愚蠢……)
所以再改一遍,我的问题是:
help无法提供“我是否必须使用setq-default
来设置这个变量的初始值”这一信息。
啥……没有“必须”啊,只有可不可以,然后用不用取决于你的决定啊……
如果你需要所有buffer默认都使用某个值,就用setq-default
。
我好像明白你的意思了。如果变量声明的时候用的是defvar-local
,不管用setq
还是setq-local
,变量都只在当前buffer改变。如果用的是普通的defvar
声明,只有setq-local
有buffer local效果。
defvar-local的变量在help里会说“automatically become buffer local,这时候你就要用setq- default
对……感谢
毕竟我是个有强迫症的人,我的意思就是什么情况下必须要使用setq-default
, 因为如果二者效果相同,我会使用更短的setq
, 我就是想问问什么情况下两者的效果才不是等同的。
而我现在除了你提到的之外,我还会在声明为save file local variable的变量上使用setq-default
……因为我感觉他们需要一个“默认值”……这是为了解释清楚