Next: Motion and Syntax, Previous: Syntax Table Functions, Up: Syntax Tables [Contents][Index]
ある言語の構文を指定するのに構文テーブルが十分に柔軟でないときは、
バッファー内に出現する特定の文字にたいしてテキストプロパティsyntax-table
を適用することにより構文テーブルをオーバーライドできます。テキストプロパティを適用する方法についてはText Propertiesを参照してください。
以下はテキストプロパティsyntax-table
の有効な値です:
プロパティの値が構文テーブルなら、根底となるテキスト文字の構文を決定するカレントバッファーの構文テーブルのかわりにそのテーブルが使用される。
(syntax-code . matching-char)
この形式のコンスセルは根底となるテキスト文字の構文クラスを直接指定するraw構文テーブル(Syntax Table Internalsを参照)。
nil
このプロパティがnil
なら、その文字の構文はカレント構文テーブルにより通常の方法で決定される。
これが非nil
ならforward-sexp
のような構文をスキャンする関数は、syntax-tableテキストプロパティに注意を払い、それ以外ならカレント構文テーブルだけを使用する。
この変数が非nil
なら特定のテキスト範囲にたいしてsyntax-table
プロパティを適用する関数を格納すること。これはモードに適した方法でsyntax-table
プロパティを適用する関数をインストールするようにメジャーモードで使用されることを意図している。
この関数はsyntax-ppss
(Position Parseを参照)、および構文フォント表示化(Syntactic Font Lockを参照)の間にFont
Lockモードにより呼び出される。これは作用すべきテキスト部分の開始startと終了endという2つの引数で呼び出される。これはendの前の任意の位置でsyntax-ppss
を呼び出すことが許されている。しかしsyntax-ppss-flush-cache
を呼び出すべきではなく、そのためある位置でsyntax-ppss
を呼び出して後からバッファー内の前の位置を変更することは許されていない。
このアブノーマルフックはsyntax-propertize-function
呼び出しに先立ち構文解析コードにより実行される。これはsyntax-propertize-function
に渡すために安全なバッファーの開始と終了の位置を見つける助けをする役割をもつ。たとえばメジャーモードは複数行の構文構成を識別して、境界が複数行の中間にならないようにこのフックに関数を追加できる。
このフック内の各関数は引数startとendを受け取ること。これは2つのバッファー位置を調整するコンスセル(new-start
.
new-end)
、調整が必要なければnil
をリターンするべきである。フック関数はそれらすべてがnil
をリターンするまで順番に繰り返し実行される。