В чем разница между setq и set-variable в emacs? - PullRequest
30 голосов
/ 29 ноября 2010

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

Ответы [ 3 ]

27 голосов
/ 29 ноября 2010

set-variable - это интерактивная команда, означающая, что вы можете набрать Mx set-variable RET для интерактивного запроса имени и значения переменной.setq не является интерактивной командой, это означает, что она подходит только для написания кода в Emacs Lisp.Лично я никогда не использую set-variable в своем коде на Лиспе, только в интерактивном режиме, когда я хочу присвоить значение переменной, которая оказывает непосредственное влияние на мое редактирование текста, например (например) установка indent-tabs-mode в tили nil.

Другое отличие состоит в том, что setq может устанавливать несколько переменных одновременно.Например, в моем файле .emacs на OS X я имею:

(setq mac-command-modifier 'meta
      mac-option-modifier 'super)

set-variable не может этого сделать.

11 голосов
/ 29 ноября 2010

setq - это специальная форма , а set-variable - интерактивная функция.

С Документы :

Для меня главное использование set-variable команда должна предложить переменные, которые я мог бы хотеть установить в мой .emacs файл. Там сейчас больше 700 таких переменных - слишком многие легко запомнить. К счастью, Вы можете нажать <TAB> после вызова M-x set-variable команда, чтобы увидеть список переменных.

3 голосов
/ 21 августа 2011

Кроме того, что было сказано выше, для set-variable, как указано в строке документа:

    VARIABLE should be a user option variable name, a Lisp variable
    meant to be customized by users.

setq применяется к любой переменной, независимо от того, является ли это пользовательской опцией.

...