Next: , Previous: Maintaining Undo, Up: Text


31.11 詰め込み

詰め込み(fill)とは、指定されている最大幅 (を越えず)にほぼ収まるように(行分け位置を移動して) 行の長さを調整することです。 さらに、行を幅揃え(justify)することもできます。 つまり、左右の両端や片側の余白をきちんと揃えるため 空白を挿入することです。 幅は変数fill-columnで制御します。 読みやすいように、行は70コラム程度に収めるべきです。

テキストを挿入するにつれて自動的にテキストを詰め込むには、 自動詰め込み(auto-fill)モード(see Auto Filling)を使いますが、 既存のテキストを変更しても正しくない詰め込み状態のまま放置されます。 したがって、そのようなテキストは明示的に詰め込む必要があります。

本節のほとんどの関数が返す値には意味はありません。 詰め込みを行うすべての関数は、現在の左端余白、現在の右端余白、 現在の幅揃えスタイルに注意をはらいます(see Margins)。 現在の幅揃えスタイルがnoneであると、 詰め込み関数は実際にはなにもしません。

詰め込み関数には引数justifyを取るものもあります。 それがnil以外であると、幅揃えの種類を指示します。 特定の幅揃えスタイルを指示するものは、 leftrightfullcenterです。 それがtであると、 テキストの当該部分には現在の幅揃えスタイルを用いることを意味します (下記のcurrent-justificationを参照)。 これ以外の値はfullとして扱います。

対話的に詰め込み関数を呼ぶときに前置引数を使うと、 justifyとして値fullを暗に指示します。

— コマンド: fill-paragraph justify

このコマンドは、ポイントがある段落、あるいは、ポイントのあとの段落を詰め込む。 justifynil以外であると、各行の幅揃えも行う。 段落の境界を探すために普通の段落移動コマンドを用いる。 see 段落

— コマンド: fill-region start end &optional justify nosqueeze to-eop

このコマンドは、startからendの領域内の各段落を詰め込む。 justifynil以外であれば、幅揃えも行う。

nosqueezenil以外であると、 行分け以外の白文字にはふれないことを意味する。 to-eopnil以外であると、 段落の末尾まで、あるいは、 use-hard-newlinesがオンならばつぎのハード改行(下記参照)までを 詰め込むことを意味する。

変数paragraph-separateは、段落の区別方法を制御する。 see Standard Regexps

— コマンド: fill-individual-paragraphs start end &optional justify mail-flag

このコマンドは、領域内の各段落を各段落の詰め込み接頭辞に従って詰め込む。 したがって、段落の行が空白で字下げされていると、 詰め込んだあとの段落も同じように字下げされる。

最初の2つの引数startendは、 詰め込むべき範囲の先頭と末尾である。 3番目と4番目の引数、justifymail-flagは省略できる。 justifynil以外であると、 段落の詰め込みに加えて幅揃えも行う。 mail-flagnil以外であると、 メイルメッセージなのでヘッダ行を詰め込まないことを意味する。

通常、fill-individual-paragraphsは、 字下げが変わると新しい段落の開始とみなす。 fill-individual-varying-indentnil以外であると、 区切り行のみが段落を区切るとみなす。 これは段落の先頭行と後続の行で字下げが異なる段落を処理できる。

— User Option: fill-individual-varying-indent

この変数は、上に述べたように fill-individual-paragraphsの動作を変える。

— コマンド: fill-region-as-paragraph start end &optional justify nosqueeze squeeze-after

このコマンドは、テキストの領域を1つの段落とみなして詰め込む。 領域に複数の段落があると、段落のあいだの空行は取りさる。 justifynil以外であると幅揃えも行う。

対話的な呼び出しでは、前置引数で幅揃えを指示する。

nosqueezenil以外であると、 行分け以外の白文字にはふれないことを意味する。 squeeze-afternil以外であると、 それは領域内の位置を表し、 その位置よりまえにある空白を変更しないように指示する。

適応型詰め込み(adaptive-fill)モードでは、 デフォルトの詰め込み接頭辞を選ぶために このコマンドはfill-context-prefixを呼び出す。 see Adaptive Fill

— コマンド: justify-current-line how eop nosqueeze

このコマンドは、現在行の単語のあいだに空白を挿入し、 ちょうどfill-columnコラムで行が終るようにする。 nilを返す。

引数hownil以外であると、 幅揃えスタイルを指定する。 可能な値は、leftrightfullcenter、または、noneである。 tであると、指定されている幅揃えスタイルに従うことを意味する (下記のcurrent-justificationを参照)。 nilは、幅揃えしないことを意味する。

eopnil以外であると、 current-justificationが両端揃えを指定しているときには 左端揃えを行うことを意味する。 これは段落の最後の行に適用される。 段落全体として両端揃えであっても、最後の行はそうすべきではない。

nosqueezenil以外であると、 内側の白文字を変更しないことを意味する。

— User Option: default-justification

この変数の値は、テキスト属性で幅揃えスタイルを指定していない テキストに対して用いる幅揃えスタイルを指定する。 可能な値は、leftrightfullcenternoneである。 デフォルト値はleftである。

— Function: current-justification

この関数は、ポイントの周りのテキストを詰め込むときに使う 正しい幅揃えスタイルを返す。

— User Option: sentence-end-double-space

この変数がnil以外であると、 直後に1つの空白を従えたピリオドを文末とみなさず、 詰め込み関数はそのような箇所で行分けしない。

— Variable: fill-paragraph-function

この変数は、段落の詰め込みに優先する方法をメジャーモードに与える。 値がnil以外であると、 fill-paragraphは詰め込み処理のためにこの関数を呼び出す。 関数がnil以外の値を返すと、 fill-paragraphは処理が完了したとみなして戻り値をただちに返す。

この機能の普通の用途は、 プログラム言語向けのモードでコメントを詰め込むためである。 この関数で普通の方法で詰め込む必要がある場合には、つぎのようにする。

          (let ((fill-paragraph-function nil))
            (fill-paragraph arg))
— Variable: use-hard-newlines

この変数がnil以外であると、 詰め込み関数は、テキスト属性hardを持つ改行を削除しない。 これらの『ハード改行』は段落の区切りとして働く。