24.8.1.1. Настройка и возможности SMIE

SMIE предназначен для того, чтобы быть единым центром для структурной навигации и различных других функций, которые зависят от синтаксической структуры кода, в частности, автоматического отступа. Основная точка входа — это smie-setup, которая является функцией, обычно вызываемой при настройке основного режима (major mode).

Функция: smie-setup grammar rules-function &rest keywords

Настраивает навигацию и отступ SMIE. grammar — это таблица грамматики, сгенерированная функцией smie-prec2->grammar. rules-function — это набор правил отступа для использования в smie-rules-function. keywords — это дополнительные аргументы, которые могут включать следующие ключевые слова:

  • :forward-token fun: Указывает прямой лексер для использования.
  • :backward-token fun: Указывает обратный лексер для использования.

Вызов этой функции достаточен, чтобы команды, такие как forward-sexp, backward-sexp и transpose-sexps, могли корректно обрабатывать структурные элементы, помимо парных скобок, которые уже обрабатываются таблицами синтаксиса. Например, если предоставленная грамматика достаточно точна, transpose-sexps может корректно транспонировать два аргумента оператора +, учитывая правила прецедента языка.

Вызов smie-setup также достаточен, чтобы сделать работу отступа TAB ожидаемой, расширяет blink-matching-paren для применения к таким элементам, как begin...end, и предоставляет некоторые команды, которые вы можете привязать в карте клавиш основного режима.

Команда: smie-close-block

Эта команда закрывает самый недавно открытый (и еще не закрытый) блок.

Команда: smie-down-list &опциональный аргумент

Эта команда похожа на down-list, но она также учитывает вложенность токенов, отличных от скобок, таких как begin...end.