如题. 可能还有其它易混淆的赋值方式没列举出来.
设定 user option 应该用 setq, setopt, custom-set-default, customize-set-value, 还是 customize-set-variable?
1 个赞
我在 :config 里用 setq,速度最快
但是存在一些情况 setq 无法正确设置值(比如这个变量在加载包的 defvar 的时候被另一个变量引用了)我会设置成在 :init 里面使用 setq
(手机打字,某些函数名可能不太对)
setq 是最直接的,它跳过了 option 的变量类型检查和设置函数
setopt 会使用 option 的设置函数,内部貌似是调用 custom-set-variable
customize-set 之类的函数应该是最“正规”的方法?emacs会在你使用那个设置界面时使用它设定option
就我来看的话,在 emacs 29 中,如果你想要把某些 option 设定写死在配置文件中,就使用 setopt吧,我一般把它放到 use-package 里面的 init,其他通过 customize 界面配置的 option 放在自动生成的代码里就行
但是也并不一定,我遇到过 option 类型与正确值冲突的问题,这时候 setopt 可能不太好用,这时候用setq就行
- 包加载之前用defvar
- 包加载之后,如果是plain variable用setq,如果是有set函数的variable,用setopt
- 或者全无脑在init阶段用setopt
别的api语法有点复杂,我个人基本不用