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

33.13 アダプティブフィルモード

適応型フィルモードが有効な場合、Emacsはあらかじめ定められた値を使用するのではなく、フィル対象の各段落のテキストからフィルプレフィックスを自動的に決定します。フィル処理中、このフィルプレフィックスは、フィルおよび自動フィルで説明されている通り、段落の2行目以降の先頭に挿入されます。

ユーザーオプション: adaptive-fill-mode

この変数がnil以外の場合、Adaptive Fillモードが有効になります。デフォルトではtです。

関数: fill-context-prefix from to

この関数はAdaptive Fillモードの中核機能を実装しており、fromとtoの間にあるテキスト(通常は段落の開始位置と終了位置)に基づいて塗りつぶしプレフィックスを選択します。具体的には、以下に説明する変数に基づき、段落の最初の2行を参照してこの処理を行います。

通常、この関数は塗りつぶしプレフィックスを文字列として返します。ただし、その前に、このプレフィックスで始まる行が段落の冒頭のように見えないかという最終チェック(以下では特に言及していません)を行います。もしそのような状況になった場合、関数は代わりに nil を返すことでその異常を通知します。

具体的には、fill-context-prefixは次のように動作します:

  1. 1行目からフィルプレフィックスの候補が選ばれます。まず adaptive-fill-function 内の関数(もしあれば)が試行され、次に正規表現 adaptive-fill-regexp(後述)が試行されます。これらのうち、最初に nil 以外となった結果、あるいは両方が nil であった場合は空文字列が、1行目の候補となります。
  2. 段落にまだ1行しかない場合、この関数は直前に見つかったプレフィックス候補の妥当性を検証します。その後、候補が妥当であればそれを返し、そうでなければスペースの文字列を返します。(後述の adaptive-fill-first-line-regexp の説明を参照してください)。
  3. 段落がすでに2行ある場合、next関数は1行目のときと同様に、2行目で接頭辞の候補を探します。候補が見つからない場合は、nilを返します。
  4. この関数は現在、2つの候補プレフィックスをヒューリスティックに比較します。行2の候補に含まれる非空白文字が行1の候補でも同じ順序で現れる場合、関数は行2の候補を返します。そうでない場合は、両方の候補に共通する最大の先頭部分文字列(空文字列となる場合もあります)を返します。
ユーザーオプション: adaptive-fill-regexp

Adaptive Fillモードでは、行の左マージンの空白(ある場合)以降のテキストに対してこの正規表現を照合し、一致した文字をその行のフィルプレフィックスの候補とします。

デフォルト値では、空白文字と特定の句読点が混在してマッチします。

ユーザーオプション: adaptive-fill-first-line-regexp

1行の段落でのみ使用されるこの正規表現は、利用可能な唯一の候補記入接頭辞の妥当性を確認する追加チェックとして機能します。候補はこの正規表現に一致するか、あるいは comment-start-skip に一致する必要があります。一致しない場合、fill-context-prefix は候補を、それと同じ幅のスペース文字列に置き換えます。

この変数のデフォルト値は "\\`[ \t]*\\'" であり、空白文字のみの文字列に一致します。このデフォルト設定により、1行段落に含まれる埋め草接頭辞は、常に純粋な空白文字となるよう強制されます。

ユーザーオプション: adaptive-fill-function

この変数に関数を設定することで、フィルプレフィックスを自動的に選択するためのより複雑な方法を指定できます。この関数は、行の左マージン(もしあれば)の後の point を引数として呼び出され、point を保持しなければなりません。関数は、その行のフィルプレフィックスか、あるいはプレフィックスの特定に失敗したことを示す nil のいずれかを返す必要があります。