Поиск состояния разбора для позиции
Для синтаксического анализа, например, при определении отступов, часто полезно вычислить синтаксическое состояние, соответствующее заданной позиции буфера. Эта функция это удобно делает.
- Функция: syntax-ppss &optional pos
-
Эта функция возвращает состояние парсера, которого парсер достигнет в позиции pos, начиная с начала видимой части буфера. См. Состояние парсера для описания состояния парсера.
Возвращаемое значение такое же, как если бы вы вызвали функцию низкоуровневого разбора
parse-partial-sexpдля разбора от начала видимой части буфера до pos (см. Низкоуровневый разбор). Однако,syntax-ppssиспользует кэши для ускорения вычислений. Из-за этой оптимизации второе значение (предыдущее полное подвыражение) и шестое значение (минимальная глубина скобок) в возвращаемом состоянии парсера не имеют смысла.Эта функция имеет побочный эффект: она добавляет буферно-локальную запись в
before-change-functions(см. Обработчики изменений) дляsyntax-ppss-flush-cache(см. ниже). Эта запись поддерживает согласованность кэша при изменении буфера. Однако, кэш может не обновляться, еслиsyntax-ppssвызывается, покаbefore-change-functionsвременно связан с let, или если буфер изменяется без запуска обработчика, например, при использованииinhibit-modification-hooks. В этих случаях необходимо явно вызватьsyntax-ppss-flush-cache.
- Функция: syntax-ppss-flush-cache beg &rest ignored-args
Эта функция очищает кэш, используемый функцией
syntax-ppss, начиная с позиции beg. Остальные аргументы, ignored-args, игнорируются; эта функция принимает их, чтобы ее можно было напрямую использовать в обработчиках, таких какbefore-change-functions(см. Обработчики изменений).
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/Position-Parse.html