適応型フィルモードが有効な場合、Emacsはあらかじめ定められた値を使用するのではなく、フィル対象の各段落のテキストからフィルプレフィックスを自動的に決定します。フィル処理中、このフィルプレフィックスは、フィルおよび自動フィルで説明されている通り、段落の2行目以降の先頭に挿入されます。
この変数がnil以外の場合、Adaptive
Fillモードが有効になります。デフォルトではtです。
この関数はAdaptive Fillモードの中核機能を実装しており、fromとtoの間にあるテキスト(通常は段落の開始位置と終了位置)に基づいて塗りつぶしプレフィックスを選択します。具体的には、以下に説明する変数に基づき、段落の最初の2行を参照してこの処理を行います。
通常、この関数は塗りつぶしプレフィックスを文字列として返します。ただし、その前に、このプレフィックスで始まる行が段落の冒頭のように見えないかという最終チェック(以下では特に言及していません)を行います。もしそのような状況になった場合、関数は代わりに
nil を返すことでその異常を通知します。
具体的には、fill-context-prefixは次のように動作します:
adaptive-fill-function
内の関数(もしあれば)が試行され、次に正規表現 adaptive-fill-regexp(後述)が試行されます。これらのうち、最初に nil 以外となった結果、あるいは両方が nil
であった場合は空文字列が、1行目の候補となります。
adaptive-fill-first-line-regexp の説明を参照してください)。
nilを返します。
Adaptive Fillモードでは、行の左マージンの空白(ある場合)以降のテキストに対してこの正規表現を照合し、一致した文字をその行のフィルプレフィックスの候補とします。
デフォルト値では、空白文字と特定の句読点が混在してマッチします。
1行の段落でのみ使用されるこの正規表現は、利用可能な唯一の候補記入接頭辞の妥当性を確認する追加チェックとして機能します。候補はこの正規表現に一致するか、あるいは
comment-start-skip に一致する必要があります。一致しない場合、fill-context-prefix は候補を、それと同じ幅のスペース文字列に置き換えます。
この変数のデフォルト値は "\\`[ \t]*\\'"
であり、空白文字のみの文字列に一致します。このデフォルト設定により、1行段落に含まれる埋め草接頭辞は、常に純粋な空白文字となるよう強制されます。
この変数に関数を設定することで、フィルプレフィックスを自動的に選択するためのより複雑な方法を指定できます。この関数は、行の左マージン(もしあれば)の後の
point を引数として呼び出され、point
を保持しなければなりません。関数は、その行のフィルプレフィックスか、あるいはプレフィックスの特定に失敗したことを示す nil のいずれかを返す必要があります。