Emacs. Установка значения переменной

2025-04-11 · 3 мин. для прочтения

Emacs. Установка значения переменной.

Содержание

1 Общая информация

  • Основные функции для присваивания значения:
    • set, setq
    • set-default
    • defcustom
    • custom-set-value
    • custom-set-variables
    • customize-set-value
    • customize-set-variable
    • setopt

2 Функции установки значения переменной

  • В Emacs существует несколько способов работы с переменными.

2.1 setq

  • Базовая функция для установки значения переменной
  • Просто присваивает новое значение без дополнительной логики
  • Работает с любыми переменными, не только с пользовательскими опциями
  • Не вызывает пользовательские функции установки (set functions)
    (setq my-variable "значение")
    

2.2 setopt

  • Введено в Emacs 29 как более безопасная альтернатива setq
  • Вызывает все связанные функции установки
  • Выполняет проверку типа значения
  • Рекомендуется использовать для пользовательских опций
    (setopt my-custom-variable "значение")
    

2.3 custom-set-variable

  • Часть системы пользовательских настроек Emacs
  • Создаёт запись в файле настроек
  • Обеспечивает совместимость с интерфейсом настроек Emacs
  • Вызывает функции установки и валидации
  • Сохраняет значение в памяти и в файле настроек
  • Разработчик пакета может перехватить присваивание значения переменной, объявленной с помощью defcustom, и выполнить какой-то дополнительный код.
    (custom-set-variable 'my-custom-variable "значение")
    

3 Различия

3.1 Назначение

  • setq - для простой установки значений
  • setopt - для безопасной установки пользовательских опций
  • custom-set-variable - для установки значений с сохранением в файл настроек

3.2 Функциональность

  • setq просто присваивает значение
  • setopt выполняет проверку и вызывает функции установки
  • custom-set-variable делает то же, что и setopt, плюс сохраняет в файл

3.3 Использование

  • set : основная функция для установки значения переменной
  • setq : версия, которая автоматически квотирует свой первый аргумент.
    • (setq foo bar) есть сокращение от (set (quote foo) bar)
    • Это полезно, поскольку цитирование первого аргумента — это то, что вы хотите сделать почти всегда.
    • setq используется для любых переменных в коде
  • setq-default : (set-default foo bar) означает «если только не существует более четкого определения foo, в текущем буфере использовать строку значений».
    • Применяется ко всем буферам.
    • Некоторые переменные не могут быть установлены глобально.
    • Всякий раз, когда вы устанавливаете переменную, она устанавливается только для текущего буфера.
    • Если вы хотите имитировать установку этой переменной глобально, вы используете set-default или setq-default .
  • setopt : рекомендуется для пользовательских опций
  • custom-set-variable : применяется при работе с пользовательскими настройками
  • defvar : позволяет писателю пакета определить переменную и предоставить некоторую документацию
  • defcustom базируется на defvar.
    • Позволяет указать место в иерархии параметров, а также информацию о типе данных.
    • Сообщает emacs, что это переменная, и позволяет разработчику создать custom интерфейс для установки значения.
    • Можно задать ограничения на значения переменной.

3.4 Рекомендации по использованию

  • Используйте setq или setq-default для:
    • установки значений обычных переменных
    • временных переменных в функциях
    • переменных, не требующих специальной обработки
  • Используйте setopt для:

    • установки значений пользовательских опций
    • переменных, определенных через defcustom
    • когда важна проверка типа и вызов функций установки
  • Используйте custom-set-variable для:

    • установки пользовательских настроек через интерфейс настроек
    • когда нужно сохранить значение в файл настроек
    • при работе с пользовательским интерфейсом настроек

3.5 Пример использования

;; Простая установка переменной
(setq my-temp-variable "временное значение")

;; Безопасная установка пользовательской опции
(setopt my-custom-variable "безопасное значение")

;; Установка через пользовательский интерфейс
(custom-set-variable 'my-custom-variable "сохраненное значение")
  • custom-set-variable обычно используется автоматически при настройке через интерфейс настроек Emacs
  • setopt является рекомендуемым способом установки пользовательских опций наямная с Emacs 29
  • setq остается базовым способом установки значений без дополнительной логики
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.