自定义变量不适用于 emacs 中的 setq
Custom variables do not work with setq in emacs
好的,所以我是 emacs 的新手,甚至是 lisp 的新手。所以我知道我们可以通过这个设置变量值:
(setq variable value)
但是,似乎有些变量在使用 setq 设置时似乎不起作用。例如:markdown-mode包中的markdown-hide-markup。如果通过 customize UI 或通过以下方式设置它们,它们就会起作用:
(custom-set-variables
'(markdown-enable-wiki-links t)
'(markdown-enable-math t)
'(markdown-hide-markup t)
'(markdown-fontify-code-blocks-natively t)
)
好吧,我只是想知道我是否遗漏了什么?或者有更好的方法吗?
用户选项(即由 defcustom
定义的变量)具有默认值、一些允许值以及初始化、设置和获取它的方法。
设置它的默认方式本质上是 setq-default
,类似于 setq
,但如果变量具有缓冲区本地值,它会设置默认(全局)值。
但是如果 defcustom
定义了一个特定的 setter 函数,那么您需要使用自定义函数来设置值,正如您发现的那样(或使用自定义 UI,它总是一个好主意)。如果 defcustom
具有 :set
.
的(非默认)规范,就会出现这种情况
如果您使用 custom-set-variables
或 customize-set-variable
而不是 setq
(或 setq-default
),或者如果您使用自定义用户界面(例如 M-x customize-option
),那么您确定选项值所需的任何预期初始化或更新(设置)代码将自动触发,并根据需要 运行 。如果你用setq
,这个就不行了
另请参阅此 emacs.StackExchange post。
好的,所以我是 emacs 的新手,甚至是 lisp 的新手。所以我知道我们可以通过这个设置变量值:
(setq variable value)
但是,似乎有些变量在使用 setq 设置时似乎不起作用。例如:markdown-mode包中的markdown-hide-markup。如果通过 customize UI 或通过以下方式设置它们,它们就会起作用:
(custom-set-variables
'(markdown-enable-wiki-links t)
'(markdown-enable-math t)
'(markdown-hide-markup t)
'(markdown-fontify-code-blocks-natively t)
)
好吧,我只是想知道我是否遗漏了什么?或者有更好的方法吗?
用户选项(即由 defcustom
定义的变量)具有默认值、一些允许值以及初始化、设置和获取它的方法。
设置它的默认方式本质上是 setq-default
,类似于 setq
,但如果变量具有缓冲区本地值,它会设置默认(全局)值。
但是如果 defcustom
定义了一个特定的 setter 函数,那么您需要使用自定义函数来设置值,正如您发现的那样(或使用自定义 UI,它总是一个好主意)。如果 defcustom
具有 :set
.
如果您使用 custom-set-variables
或 customize-set-variable
而不是 setq
(或 setq-default
),或者如果您使用自定义用户界面(例如 M-x customize-option
),那么您确定选项值所需的任何预期初始化或更新(设置)代码将自动触发,并根据需要 运行 。如果你用setq
,这个就不行了
另请参阅此 emacs.StackExchange post。