Spec-Zone.ru › Elisp

Форма объявления

declare — это специальная макрокоманда, которая может использоваться для добавления метасвойств к функции или макросу: например, для маркировки её как устаревшей или для задания специальной отступы TAB в режиме Emacs Lisp.

Макрокоманда: declare specs…

Эта макрокоманда игнорирует свои аргументы и вычисляется в nil; она не оказывает никакого влияния во время выполнения. Однако, когда форма declare встречается в аргументе declare определения функции defun или defsubst (см. Определение функций) или макроса defmacro (см. Определение макросов), она добавляет свойства, указанные в specs, к функции или макросу. Эта работа выполняется специально defun, defsubst, и defmacro.

Каждый элемент в specs должен иметь вид (property args…), который не должен быть процитирован. Эти элементы имеют следующие эффекты:

(advertised-calling-convention signature when)

Это действует как вызов set-advertised-calling-convention (см. Устаревшие функции); signature указывает правильный список аргументов для вызова функции или макроса, а when должно быть строкой, указывающей, когда старый список аргументов был впервые устаревшим.

(debug edebug-form-spec)

Это справедливо только для макросов. При работе с макросом через Edebug используйте edebug-form-spec. См. Инструментирование вызовов макросов.

(doc-string n)

Используется при определении функции или макроса, который будет сам использоваться для определения таких сущностей, как функции, макросы или переменные. Это указывает на то, что n-ый аргумент, если он есть, должен рассматриваться как строка документации.

(indent indent-spec)

Отступы вызовов этой функции или макроса по indent-spec. Это обычно используется для макросов, хотя работает и для функций. См. Отступы макросов.

(interactive-only value)

Установите свойство функции value. См. Свойство interactive-only.

(obsolete current-name when)

Пометить функцию или макрос как устаревший, аналогично вызову make-obsolete (см. Устаревшие функции). current-name должен быть символом (в этом случае сообщение об ошибке указывает, что использовать его вместо), строкой (указывая сообщение об ошибке) или nil (в этом случае сообщение об ошибке не даёт дополнительных деталей). when должна быть строкой, указывающей, когда функция или макрос были впервые устаревшими.

(compiler-macro expander)

Это может быть использовано только для функций и говорит компилятору использовать expander в качестве функции оптимизации. При встрече вызова функции, имеющей вид (function args…), макрос-расширитель вызовет expander с этой формой, а также с args…, и expander может либо вернуть новое выражение вместо вызова функции, либо вернуть выражение без изменений, чтобы указать, что вызов функции должен остаться как есть. expander может быть символом, или он может быть формой (lambda (arg) body), в этом случае arg будет содержать исходное выражение вызова функции, а (невычисленные) аргументы функции могут быть получены с помощью формальных аргументов функции.

(gv-expander expander)

Объявить expander функцией для обработки вызовов макроса (или функции) как обобщённой переменной, подобно gv-define-expander. expander может быть символом или иметь вид (lambda (arg) body), в этом случае эта функция будет иметь доступ к аргументам макроса (или функции).

(gv-setter setter)

Объявить setter функцией для обработки вызовов макроса (или функции) как обобщённой переменной. setter может быть символом, в этом случае он будет передан в gv-define-simple-setter, или он может быть в виде (lambda (arg) body), в этом случае эта функция будет дополнительно иметь доступ к аргументам макроса (или функции) и будет передана в gv-define-setter.

(completion completion-predicate)

Объявить completion-predicate функцией для определения того, следует ли включать символ в список функций при запросе завершений в M-x. completion-predicate вызывается с двумя параметрами: первым параметром является символ, а вторым — текущий буфер.

(modes modes)

Указать, что данная команда должна применяться только для modes.

(pure val)

Если val не nil, эта функция является чистой (см. Что такое функция). Это то же самое, что и свойство pure символа функции (см. Стандартные свойства).

(side-effect-free val)

Если val не nil, эта функция свободна от побочных эффектов, поэтому байт-компилятор может игнорировать вызовы, значения которых игнорируются. Это то же самое, что и свойство side-effect-free символа функции, см. Стандартные свойства.

(speed n)

Указать значение native-comp-speed, действующее для нативной компиляции этой функции (см. Переменные нативной компиляции). Это позволяет управлять уровнем оптимизации на уровне функции, используемой для нативного кода, выводимого для функции. В частности, если n равно -1, нативная компиляция функции выведет байткод вместо нативного кода для функции.

no-font-lock-keyword

Это справедливо только для макросов. Макросы с этим объявлением выделяются шрифтом (см. Режим подсветки шрифтов) как обычные функции, а не специально как макросы.

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/Declare-Form.html

Spec-Zone.ru

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