Подтвердить что ты не робот

В чем разница между setq и set-variable в emacs?

В чем разница между setq и set-variable в emacs lisp. Когда я должен использовать setq и когда должен быть set-variable.

4b9b3361

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