GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Position-Parse.html ・ emacs-doc.conao3.com

36.6.2 位置の構文解析状態の特定

インデントなどの構文解析では、多くの場合、指定されたバッファ位置に対応する構文状態を計算することが有用です。この関数を使えば、それを手軽に行えます。

関数: syntax-ppss &optional pos

この関数は、バッファの可視部分の先頭から位置 pos においてパーサーが到達する状態を返します。パーサーの状態に関する説明については、パーサーの状態を参照してください。

戻り値は、低レベル解析関数 parse-partial-sexp を呼び出してバッファの可視領域の先頭から pos までを解析した場合と同じになります(低レベル解析 を参照)。ただし、syntax-ppss では計算を高速化するためにキャッシュを使用しています。この最適化により、返されるパーサー状態における2番目の値(直前の完全な部分式)と6番目の値(最小括弧深度)は意味を持ちません。

この関数には副作用があります。syntax-ppss-flush-cache(後述)のために、before-change-functions にバッファローカルなエントリを追加します(Change Hooks を参照)。このエントリにより、バッファが変更されてもキャッシュの整合性が保たれます。ただし、before-change-functions が一時的に let-bound されている間に syntax-ppss が呼び出された場合や、inhibit-modification-hooks を使用する場合のようにフックを実行せずにバッファが変更された場合には、キャッシュが更新されないことがあります。そのような場合には、明示的に syntax-ppss-flush-cache を呼び出す必要があります。

関数: syntax-ppss-flush-cache beg &rest ignored-args

この関数は、syntax-ppss で使用されるキャッシュを、位置 beg からフラッシュします。残りの引数 ignored-args は無視されます。この関数がこれらを受け付けるのは、before-change-functions のようなフックで直接使用できるようにするためです(変更フック を参照)。