24.3.1 Соглашения для написания режимов

Существуют соглашения для написания режимов, как и для основных режимов (см. Основные режимы). Эти соглашения описаны ниже. Самый простой способ следовать им — использовать макрос define-minor-mode. См. Определение режимов.

Кроме того, к режимам также применяются несколько соглашений основных режимов (см. Соглашения основных режимов): касающиеся имен глобальных символов, использования хука в конце функции инициализации и использования сопоставлений клавиш и других таблиц.

Режим должен, по возможности, поддерживать включение и отключение через Custom (см. Настройки кастомизации). Для этого переменная режима должна быть определена с помощью defcustom, обычно с :type 'boolean. Если простое присвоение переменной недостаточно для включения режима, вы также должны указать метод :set, который включает режим, вызывая команду режима. Обратите внимание в строке документации переменной, что установка переменной не через Custom может не сработать. Также отметьте определение файлом автозагрузки (см. autoload cookie) и укажите :require, чтобы кастомизация переменной загружала библиотеку, определяющую режим. Например:

;;;###autoload
(defcustom msb-mode nil
  "Переключить msb-mode.
Установка этой переменной напрямую не имеет эффекта;
используйте либо \\[customize] либо функцию `msb-mode'."
  :set 'custom-set-minor-mode
  :initialize 'custom-initialize-default
  :version "20.4"
  :type    'boolean
  :group   'msb
  :require 'msb)