フィルコマンドは、特定のケースにおいて、段落に適したフィルプレフィックスを自動的に推論できます。具体的には、行頭の空白や特定の句読点文字が、段落内のすべての行に伝播されます。
段落が2行以上ある場合、フィルプレフィックスは段落の2行目から取得されますが、これは1行目にも含まれている場合に限ります。
段落が1行のみの場合、fillコマンドはその行をプレフィックスとして受け取ることがあります。このようなケースでは妥当な処理が3通りあるため、判断が複雑になります。
これら3つの書式スタイルはいずれも一般的に使用されています。そのため、フィルコマンドは、表示されるプレフィックスとメジャーモードに基づいて、ユーザーが何を意図しているかを判断しようとします。その仕組みは以下の通りです。
1行目で見つかったプレフィックスが adaptive-fill-first-line-regexp
と一致するか、あるいはコメント開始シーケンスであると思われる場合(これはメジャーモードによって異なります)、そのプレフィックスは、後続の行で段落の開始記号として機能しない限り、段落の埋め合わせに使用されます。
それ以外の場合、見つかった接頭辞は同等の数のスペースに変換され、それらのスペースは、後続の行で段落の開始文字として機能しない限り、残りの行の埋め草頭辞として使用されます。
テキストモードや、空行とページ区切りのみで段落が区切られるその他のモードでは、適応型フィルが選択する接頭辞が段落の開始記号として機能することはないため、常にフィルに使用できます。
変数 adaptive-fill-regexp
は、どのような種類の行頭がフィルプレフィックスとして機能できるかを決定します。行頭にある文字のうち、この正規表現に一致するものがすべて使用されます。変数
adaptive-fill-mode を nil
に設定すると、フィルプレフィックスが自動的に選択されることはなくなります。
変数 adaptive-fill-function
に関数を設定することで、フィルプレフィックスを自動的に選択するためのより複雑な方法を指定できます。この関数は、行の左マージン以降のポイントを引数として呼び出され、その行に基づいて適切なフィルプレフィックスを返す必要があります。もし
nil が返された場合、adaptive-fill-regexp がプレフィックスを探す機会を得ます。