В чем разница между setq и set-variable в emacs lisp. Когда я должен использовать setq и когда должен быть set-variable.
В чем разница между setq и set-variable в emacs?
Ответ 1
set-variable
- интерактивная команда, означающая, что вы можете ввести M-x set-variable RET для интерактивного запроса имени переменной и значения. setq
не является интерактивной командой, что означает, что она подходит только для написания кода Emacs Lisp. Лично я никогда не использую set-variable
в моем Lisp коде, только в интерактивном режиме, когда я хочу дать значение переменной, которая немедленно влияет на мое редактирование текста, например, (например) установка indent-tabs-mode
на t
или nil
.
Другое отличие состоит в том, что setq
может сразу установить несколько переменных. Например, в моем файле .emacs на OS X у меня есть:
(setq mac-command-modifier 'meta
mac-option-modifier 'super)
set-variable
не может этого сделать.
Ответ 2
setq
- это специальная форма, а set-variable
- интерактивная функция.
От документы:
Для меня основное использование Команда
set-variable
должна предлагать переменные, которые я могу захотеть установить в my.emacs
. В настоящее время больше чем 700 таких переменных - тоже многие помнят с готовностью. К счастью, вы можете нажать<TAB>
после вызоваM-x set-variable
, чтобы увидеть список переменных.
Ответ 3
Кроме того, что было сказано выше, для set-variable
, поскольку строка doc говорит:
VARIABLE should be a user option variable name, a Lisp variable meant to be customized by users.
setq
применяется к любой переменной, независимо от того, является ли она пользователем.