Spec-Zone.ru › Elisp

Поиск состояния разбора для позиции

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

Функция: 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

Spec-Zone.ru

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