22.14 Отключение команд

Отключение команды помечает команду как требующую подтверждения пользователя перед её выполнением. Отключение используется для команд, которые могут сбить с толку начинающих пользователей, чтобы предотвратить случайное использование этих команд.

Низкоуровневый механизм отключения команды заключается в размещении не nil свойства disabled на символе Lisp для команды. Эти свойства обычно устанавливаются в файле инициализации пользователя (см. Файл инициализации) с помощью выражений Lisp, таких как:

(put 'upcase-region 'disabled t)

Для нескольких команд эти свойства присутствуют по умолчанию (вы можете удалить их в своём файле инициализации, если захотите).

Если значением свойства disabled является строка, сообщение о том, что команда отключена, включает эту строку. Например:

(put 'delete-region 'disabled
     "Удалённый таким образом текст нельзя вставить обратно!\n")

См. Отключение в Руководстве GNU Emacs для подробностей о том, что происходит при интерактивном вызове отключённой команды. Отключение команды не влияет на её вызов как функции из программ на Lisp.

Значением свойства disabled также может быть список, где первый элемент — это символ query. В этом случае пользователю будет задан вопрос о выполнении команды. Второй элемент в списке должен быть nil или не nil, чтобы указать, использовать ли y-or-n-p или yes-or-no-p соответственно, а третий элемент — это задаваемый вопрос. Для включения запроса для команды следует использовать вспомогательную функцию command-query.

Команда: enable-command command

Разрешить выполнение command (символа) без специального подтверждения отныне и изменить файл инициализации пользователя (см. Файл инициализации), чтобы это применялось в будущих сеансах.

Команда: disable-command command

Требовать специального подтверждения для выполнения command отныне и изменить файл инициализации пользователя, чтобы это применялось в будущих сеансах.

Переменная: disabled-command-function

Значение этой переменной должно быть функцией. Когда пользователь интерактивно вызывает отключённую команду, вместо неё вызывается эта функция. Она может использовать this-command-keys, чтобы определить, что набрал пользователь для запуска команды, и таким образом найти саму команду.

Значение также может быть nil. Тогда все команды работают нормально, даже отключённые.

По умолчанию значением является функция, которая спрашивает пользователя, следует ли продолжить.