Spec-Zone.ru › Elisp

Отступы в макросах

Внутри определения макроса вы можете использовать форму declare (см. Определение макросов), чтобы указать, как TAB должен отступы вызовов макроса. Спецификация отступа записывается так:

(declare (indent indent-spec))

Это приводит к тому, что свойство lisp-indent-function устанавливается для имени макроса.

Вот возможные варианты для indent-spec:

nil

Это то же самое, что и отсутствие свойства — используется стандартный шаблон отступа.

defun

Обрабатывайте эту функцию как конструкцию «def»: считайте вторую строку началом тела.

целое число, number

Первые number аргументов функции являются различительными аргументами; остальные считаются телом выражения. Строка в выражении отступается в зависимости от того, является ли первый аргумент в ней различительным или нет. Если аргумент является частью тела, строка отступается на lisp-body-indent дополнительных столбцов по сравнению с открывающей скобкой, начинающей содержащее выражение. Если аргумент является различительным и является либо первым, либо вторым аргументом, он отступается на удвоенное число дополнительных столбцов. Если аргумент является различительным и не является первым или вторым аргументом, строка использует стандартный шаблон.

символ, symbol

symbol должен быть именем функции; эта функция вызывается для вычисления отступа строки в этом выражении. Функция получает два аргумента:

pos

Позиция, с которой начинается отступаемая строка.

state

Значение, возвращаемое parse-partial-sexp (лисповой примитив для вычисления отступа и вложенности), когда он анализирует до начала этой строки.

Она должна вернуть либо число, которое является числом столбцов отступа для этой строки, либо список, чьим первым элементом является такое число. Разница между возвратом числа и возвратом списка заключается в том, что число говорит, что все последующие строки на том же уровне вложенности должны отступаться так же, как и эта; список говорит, что последующие строки могут потребовать разных отступов. Это имеет значение, когда отступ вычисляется с помощью C-M-q; если значение является числом, C-M-q не нужно повторно вычислять отступ для последующих строк до конца списка.

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/Indenting-Macros.html

Spec-Zone.ru

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