В чем разница между 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 применяется к любой переменной, независимо от того, является ли она пользователем.