Next: Overlay Arrow, Previous: Invisible Text, Up: Display
選択表示とは、 スクリーン上の特定の行を隠すための関連する機能対を指します。
最初の変種は、明示的な選択表示で、 Lispプログラムで使用するために設計されています。 テキストを変更することでどの行を隠すかを制御します。 テキストを不可視にする機能(see Invisible Text)は、 この機能で部分的に置き換えてあります。
2番目の変種は、字下げに基づいて自動的に隠す行を選択します。 この変種は、ユーザーレベルの機能であるように設計されています。
明示的な選択表示を制御するには、 改行(コントロールJ)を復帰(コントロールM)に置き換えます。 置換前の改行に続いていたそれまでの行は見えなくなります。 厳密にいえば、改行だけが行を区切るため、 一時的にはもう行ではなくなっているのです。 つまり、先行する行の一部になっているのです。
選択表示は、編集コマンドに直接には影響しません。
たとえば、C-f(forward-char
)は
躊躇なく不可視なテキストの中へポイントを移動します。
しかし、改行文字を復帰文字に置換すると
影響を受ける編集コマンドもあります。
たとえば、next-line
は、
改行だけを探すため不可視な行を飛び越してしまいます。
選択表示を使用するモードでは、
改行を考慮するようにコマンドを定義したり、
テキストの一部を可視/不可視にするコマンドを定義できます。
選択表示しているバッファをファイルに書き出すときには、 すべてのコントロールM(復帰)は改行として出力されます。 つまり、つぎにファイルを読み込むと不可視なものはなく、 普通に見えるのです。 選択表示の効果は、Emacsの内側だけで見えるのです。
このバッファローカルな変数は、選択表示をオンにする。 つまり、行や行の一部を不可視にできる。
selective-display
の値がt
であると、 行内のコントロールM(復帰)以降の部分を表示しない。 これは明示的な選択表示である。selective-display
の値が正整数であると、 字下げのコラム幅がその数より大きな行を表示しない。バッファのある部分が不可視であると、 垂直方向に移動するコマンドは、 その部分が存在しないがごとく動作し、 1つのコマンド
next-line
で任意個数の不可視行を飛び越えられる。 しかし、(forward-char
などの) 文字単位の移動コマンドは不可視な部分を無視せず、 不可視な部分へのテキストの挿入/削除は可能である。つぎの例では、
selective-display
の値を変えて バッファfoo
の見た目を示す。 バッファの内容に変更はない。(setq selective-display nil) nil ---------- Buffer: foo ---------- 1 on this column 2on this column 3n this column 3n this column 2on this column 1 on this column ---------- Buffer: foo ---------- (setq selective-display 2) 2 ---------- Buffer: foo ---------- 1 on this column 2on this column 2on this column 1 on this column ---------- Buffer: foo ----------
このバッファローカルな変数が
nil
以外であると、 不可視なテキストが続く行末に‘...’を表示する。 つぎの例は、上の例の続きである。(setq selective-display-ellipses t) t ---------- Buffer: foo ---------- 1 on this column 2on this column ... 2on this column 1 on this column ---------- Buffer: foo ----------表示テーブルを使って‘...’にかわる別のテキストを指定できる。 see Display Tables。