24.8.1.7. Вспомогательные функции для правил отступов

SMIE предоставляет различные функции, специально предназначенные для использования в функции правил отступов (некоторые из этих функций выходят из строя, если используются в другом контексте). Все эти функции начинаются с префикса smie-rule-.

Функция: smie-rule-bolp

Возвращает не-nil, если текущий токен является первым в строке.

Функция: smie-rule-hanging-p

Возвращает не-nil, если текущий токен является подвешенным. Токен считается подвешенным, если он является последним токеном в строке и если перед ним есть другие токены: одиночный токен в строке не является подвешенным.

Функция: smie-rule-next-p &остальные токены

Возвращает не-nil, если следующий токен находится среди токенов.

Функция: smie-rule-prev-p &остальные токены

Возвращает не-nil, если предыдущий токен находится среди токенов.

Функция: smie-rule-parent-p &остальные родительские элементы

Возвращает не-nil, если родитель текущего токена находится среди родителей.

Функция: smie-rule-sibling-p

Возвращает не-nil, если родитель текущего токена на самом деле является соседом. Это происходит, например, когда родитель "," является просто предыдущим ",".

Функция: smie-rule-parent &необязательный смещение

Возвращает соответствующее смещение для выравнивания текущего токена с родителем. Если не-nil, offset должен быть целым числом, дающим дополнительное смещение для применения.

Функция: smie-rule-separator метод

Отступы текущий токен как разделитель.

Под разделителем мы подразумеваем здесь токен, единственная цель которого — разделять различные элементы внутри некоторой оборачивающей синтаксической конструкции, и который сам по себе не имеет никакого семантического значения (то есть, он обычно не существует как узел в абстрактном синтаксическом дереве).

Ожидается, что такой токен будет иметь ассоциативный синтаксис и тесно связан со своим синтаксическим родителем. Типичные примеры — "," в списках аргументов (заключенных в скобки) или ";" в последовательностях инструкций (заключенных в блок {...} или begin...end блок).

method должен быть именем метода, переданным в smie-rules-function.