SMIE предназначен для того, чтобы быть единым центром для структурной навигации и
различных других функций, которые зависят от синтаксической структуры кода, в
частности, автоматического отступа. Основная точка входа — это
smie-setup, которая является функцией, обычно вызываемой при
настройке основного режима (major mode).
Настраивает навигацию и отступ 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, и предоставляет некоторые команды, которые вы можете
привязать в карте клавиш основного режима.
Эта команда закрывает самый недавно открытый (и еще не закрытый) блок.
Эта команда похожа на down-list, но она также учитывает
вложенность токенов, отличных от скобок, таких как begin...end.