Spec-Zone.ru › Elisp

Определение команд

Специальная форма interactive превращает функцию Lisp в команду. Форма interactive должна располагаться на верхнем уровне в теле функции, обычно как первый элемент тела; это относится как к выражениям лямбда (см. Выражения лямбда), так и к формам defun (см. Определение функций). Эта форма ничего не делает во время фактического выполнения функции; её присутствие служит флагом, сообщая циклу команд Emacs, что функцию можно вызвать интерактивно. Аргумент формы interactive определяет, как следует читать аргументы для интерактивного вызова.

В качестве альтернативы, форма interactive может быть указана в свойстве символа функции interactive-form. Значение этого свойства, отличное от nil, имеет приоритет над любой формой interactive в теле самой функции. Эта функция используется редко.

Иногда функция предназначена только для интерактивного вызова, а не для прямого вызова из Lisp. В этом случае функции присваивают свойство interactive-only отличное от nil, либо напрямую, либо через declare (см. Форму объявления). Это заставит байт-компилятор выдать предупреждение, если команда вызывается из Lisp. Вывод describe-function будет включать аналогичную информацию. Значение свойства может быть: строкой, которую байт-компилятор будет использовать напрямую в своём предупреждении (она должна заканчиваться точкой и не начинаться с заглавной буквы, например, "use (system-name) instead."); t; любым другим символом, который должен быть альтернативной функцией для использования в коде Lisp.

Общефункции (см. Общефункции) нельзя превратить в команды, добавив форму interactive к ним.

• Использование интерактивного Общие правила для interactive.
• Интерактивные коды Стандартные буквенные коды для чтения аргументов различными способами.
• Интерактивные примеры Примеры того, как читать интерактивные аргументы.
• Режимы команд Указание того, что команды предназначены для определенного режима.
• Общие команды Выбор среди альтернативных команд.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Commands.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API