詰めとは、行の長さを(改行位置を移動させることで)指定された最大幅とほぼ等しく(ただし最大幅を超えないように)調整することを指します。また、行を両端揃えにすることもでき、これはスペースを挿入して左右の余白を正確に揃えることを意味します。幅は変数fill-columnによって制御されます。読みやすさの観点から、行の長さは70列程度以内に抑えるべきです。
自動入力モード(自動入力を参照)を使用すると、テキストの挿入に合わせて自動的に入力できますが、既存のテキストに変更が加えられた場合、正しく入力されないことがあります。その場合は、手動でテキストを入力する必要があります。
本セクションのコマンドの多くは、意味のない値を返します。塗りつぶしを行うすべての関数は、現在の左マージン、現在の右マージン、および現在の配置スタイルを認識します(塗りつぶし用のマージンを参照)。現在の配置スタイルが none の場合、塗りつぶし関数は実際には何も行いません。
いくつかの充填関数には引数 justify があります。これが nil 以外の場合、何らかの正当化が求められます。特定の形式の正当化を求めるには、left、right、full、または center を指定できます。t の場合は、このテキスト部分に対して現在の正当化スタイルを使用することを意味します(後述の current-justification を参照)。それ以外の値はすべて full として扱われます。
フィリング関数を対話的に呼び出す際、接頭辞引数を指定すると、justify に値 full が代入されます。
このコマンドは、ポイント以降の段落を埋めます。justify が nil
以外の場合、各行も均等揃えされます。段落の境界の検出には、通常の段落移動コマンドが使用されます。The GNU
Emacs Manual の Paragraphs
を参照してください。
region が nil
でない場合、一時マークモードが有効でマークがアクティブであれば、このコマンドは現在の段落のみを埋めるのではなく、領域内のすべての段落を埋めるために
fill-region を呼び出します。このコマンドを対話的に呼び出した場合、region は t となります。
このコマンドは直前のコマンドの逆の動作を行い、現在の段落の行を結合します。数値の接頭辞引数 arg
を指定すると、その数だけ段落に対してこの操作が適用されます。接頭辞引数がなく、かつアクティブリージョンがある場合は、そのリージョン内の各段落の空白を削除します。Lispから
arg nil および beg と end が nil でない状態で呼び出された場合は、beg と end で区切られたリージョン内の段落の空白を削除します。
このコマンドは、startからendまでの範囲にある各段落を均等割り付けします。また、justifyがnilでない場合は、両端揃えも行います。
nosqueeze が nil
以外の場合、改行以外の空白はそのままにすることを意味します。to-eop が nil 以外の場合、段落の末尾まで――あるいは use-hard-newlines が有効であれば次のハード改行まで――埋め続けることを意味します(後述)。
変数 paragraph-separate は、段落の区切り方を制御します。編集で使用される標準正規表現を参照してください。
ほとんどのEmacsバッファでは等幅フォントが使用されているため、すべての塗りつぶし関数(fill-regionなど)は文字数とchar-widthに基づいて動作します。しかし、Emacsでは画像を含むテキストやプロポーショナルフォントなど、他の種類の表示も可能であり、pixel-fill-regionはそうしたケースに対応するために用意されています。これはstartとendの間のテキスト領域をピクセル単位で塗りつぶすため、可変ピッチフォントや複数の異なるフォントを使用したテキストであっても、文字サイズに関わらず塗りつぶされたように見えます。引数pixel-widthは、塗りつぶし後の1行の最大ピクセル幅を指定するもので、fill-regionにおけるfill-columnに相当するピクセル解像度の値です。例えば、このLispスニペットはプロポーショナルフォントを使用してテキストを挿入し、それを300ピクセル以下の幅で塗りつぶします:
(insert (propertize "This is a sentence that's ends here." 'face 'variable-pitch)) (pixel-fill-region (point) (point-max) 300)
start が行頭にない場合、ピクセル単位に変換された start の水平位置が、後続の行のインデント接頭辞として使用されます。
pixel-fill-width
ヘルパー関数を使用すると、使用するピクセル幅を算出できます。引数を指定しない場合は、現在のウィンドウ幅よりわずかに小さい値が返されます。1つ目のオプション値
columns は、標準的な等幅フォントを使用する際の列数を指定します(例:fill-column)。2つ目のオプション値は、使用するウィンドウです。通常は次のように使用します:
(pixel-fill-region start end (pixel-fill-width fill-column))
このコマンドは、リージョン内の各段落を、それぞれのフィルプレフィックスに従って塗りつぶします。したがって、段落の行がスペースでインデントされている場合、塗りつぶされた段落も同様にインデントされたままになります。
最初の2つの引数 start と end
は、塗りつぶし対象領域の開始位置と終了位置です。3番目と4番目の引数 justify と citation-regexp は省略可能です。justify が
nil 以外の場合、段落は塗りつぶしに加えて両端揃えされます。citation-regexp が nil
以外の場合、この関数はメールメッセージを処理しているため、ヘッダー行を塗りつぶすべきではないことを意味します。citation-regexp
が文字列の場合、それは正規表現として使用され、行の先頭に一致した場合、その行は引用マーカーとして扱われます。
通常、fill-individual-paragraphs
はインデントの変更をそれぞれ新しい段落の開始とみなします。fill-individual-varying-indent が nil
でない場合、段落間は区切り線のみで区切られます。このモードでは、1行目に追加のインデントがあるインデント付き段落を扱うことができます。
この変数は、上述の通りfill-individual-paragraphsの動作を変更します。
このコマンドは、テキストの領域を一つの段落とみなして塗りつぶします。このコマンドの動作は変数 fill-region-as-paragraph-function によって制御され、デフォルトの実装は
fill-region-as-paragraph-default
となっており、これについては以下で詳しく説明します。
リージョンが多数の段落で構成されている場合、段落間の空行は削除されます。この関数は、justify が
nil でない場合に、正当化と塗りつぶしの両方を行います。
nosqueeze が nil
以外の場合、改行以外の空白はそのままにすることを意味します。squeeze-after が nil 以外の場合、領域内の位置を指定し、その位置より前の改行以外の空白はそのままにすることを意味します。
Adaptive Fillモードでは、このコマンドはデフォルトで塗りつぶしプレフィックスを選択するためにfill-context-prefixを呼び出します。Adaptive Fillモードを参照してください。
このコマンドは、現在の行の単語間にスペースを挿入し、行がちょうど fill-column
で終わるようにします。nil を返します。
引数 how が nil
以外の場合、正当化スタイルを明示的に指定します。値は left、right、full、center、または none
のいずれかとなります。t の場合は、指定された正当化スタイルに従うことを意味します(後述の
current-justification を参照)。nil は、完全な正当化を行うことを意味します。
eop が nil でない場合、current-justification
で完全均等割り付けが指定されているときのみ、左揃えを行うことを意味します。これは段落の最終行に使用され、段落全体が完全均等割り付けであっても、最終行は均等割り付けにすべきではありません。
nosqueeze が nil
でない場合、内部の空白文字を変更しないことを意味します。
この変数の値は、テキストプロパティでスタイルが指定されていないテキストに使用する均等割り付けのスタイルを指定します。指定可能な値は left、right、full、center、または none です。デフォルト値は left です。
この関数は、point周辺のテキストを埋める際に使用すべき適切な配置スタイルを返します。
これは、ポイントにおける justification
テキストプロパティの値、またはそのようなテキストプロパティが存在しない場合は変数 default-justification を返します。ただし、「右揃えしない」という意味で、none ではなく nil を返します。
この変数が nil
以外の場合、ピリオドの後にスペースが1つだけ続く箇所は文末とはみなされず、フィル機能はこのような箇所で改行しないようにします。
この変数が nil
以外の場合、文はピリオドなしで終了できます。これは、文末に2つのスペースを置くがピリオドは付けないタイ語などの言語で使用されます。
この変数が nil 以外の場合、後続のスペースなしで文を完結できる文字列である必要があります。
この変数が nil
以外の場合、行末にある単語と次行頭にある単語を連結して埋める際、種類の異なる2つの単語(例:英語とCJK)はスペースで区切られます。
この変数は、段落の塗りつぶしを上書きするための手段を提供します。その値がnil以外の場合、fill-paragraphはこの関数を呼び出して処理を行います。関数がnil以外の値を返した場合、fill-paragraphは処理が完了したと判断し、直ちにその値を返します。
この機能の一般的な用途は、プログラミング言語モードにおいてコメントを補完することです。関数が通常の方法で段落を補完する必要がある場合は、次のように記述できます。
(let ((fill-paragraph-function nil)) (fill-paragraph arg))
この変数を使用すると、fill-region や fill-paragraph
といったフィル機能が次の段落へどのように進むかを上書きできます。その値は関数である必要があり、移動させる段落数である単一の引数 n を受け取って呼び出され、n
と実際の移動段落数との差分を返す必要があります。この変数のデフォルト値は forward-paragraph です。The GNU Emacs
Manual の Paragraphs
を参照してください。
この変数を使用すると、fill-paragraph や fill-region
といった関数によるテキストの塗りつぶし方法を上書きできます。その値は関数である必要があり、fill-region-as-paragraph
で定義された引数を受け取り、塗りつぶしに使用されるプレフィックスを返す必要があります。この変数のデフォルト値は fill-region-as-paragraph-default です。
この変数が nil 以外の場合、フィル関数は hard テキストプロパティを持つ改行を削除しません。これらのハード改行は段落区切りとして機能します。The GNU Emacs Manual の ハード改行とソフト改行
を参照してください。