Spec-Zone.ru › Elisp

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

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

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

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

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

  • Использование interactive
  • Символы кода для interactive
  • Примеры использования interactive
  • Указание режимов для команд
  • Выбор одной из альтернативных команд

Copyright © 1990-1996, 1998-2026 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