Пользовательские переменные не работают с setq в emacs - PullRequest
1 голос
/ 08 марта 2020

Хорошо, я довольно новичок в emacs и даже новее в lisps. Итак, я знаю, что мы можем установить значения переменных следующим образом:

(setq variable value)

Однако, похоже, есть некоторые переменные, которые, кажется, не работают, если установлены с помощью setq. Например: markdown-hide-markup в пакете markdown-mode. Они действительно работают, если их настроить через настроить пользовательский интерфейс или сделать это следующим образом:

(custom-set-variables 
 '(markdown-enable-wiki-links t)
 '(markdown-enable-math t)
 '(markdown-hide-markup t)
 '(markdown-fontify-code-blocks-natively t)
)

Итак, я просто хотел узнать, что я что-то упустил? Или есть лучший способ сделать это или что-то?

1 Ответ

1 голос
/ 08 марта 2020

Пользовательский параметр (т. Е. Переменная, определяемая defcustom) имеет значение по умолчанию, некоторые допустимые значения и способы его инициализации, установки и получения.

Способ установки по умолчанию: по существу, setq-default, что похоже на setq, но если переменная имеет локальные для буфера значения, она задает значение по умолчанию (глобальное).

Но если defcustom определяет специфицирующую функцию установки c, то вам нужно использовать функцию Customize, чтобы установить значение, как вы обнаружили (или использовать пользовательский интерфейс Customize, что всегда является хорошей идеей). Это имеет место, если defcustom имеет (не по умолчанию) спецификацию :set.

Если вы используете custom-set-variables или customize-set-variable вместо setq ( или setq-default), или если вы используете пользовательский интерфейс Customize (например, M-x customize-option), то вы уверены, что любой предполагаемый код инициализации или обновления (настройки), который необходим для значения параметра, будет автоматически запускаться и запускаться по мере необходимости , Если вы используете setq, это не будет сделано.

Смотрите также этот emacs.StackExchange post .

...