Hideshowモードは、プログラムの一部(ブロックと呼ばれます)を選択的に表示できるバッファローカルなマイナーモードです。M-x hs-minor-modeと入力すると、このマイナーモードを切り替えられます(マイナーモードを参照してください)。
Hideshowモードを使用してブロックを非表示にすると、そのブロックは画面から消え、代わりに省略記号(3つのピリオドが連続したもの)が表示されます。何をもってブロックとするかは、メジャーモードによって異なります。Cモードおよび関連モードではブロックは中括弧で区切られ、Lispモードでは括弧で区切られます。複数行のコメントもブロックとして扱われます。
さらに、Hideshowモードではオプションでインデントに基づく非表示/表示が可能です。デフォルトでは無効になっており、有効にするにはバッファローカルマイナーモード
hs-indentation-mode をオンにしてください。hs-indentation-mode を有効にしても、hs-minor-mode があらかじめ有効である必要はありません。
Hideshowモードでは、以下のコマンドが利用可能です(hs-prefix-mapで定義されています):
現在のブロック (hs-hide-block) を非表示にする。
現在のブロック(hs-show-block)を表示します。
現在のブロック (hs-toggle-hiding) を非表示または表示します。
すべてのトップレベルブロック (hs-hide-all) を非表示にする。
バッファ内のすべてのブロックを表示します (hs-show-all)。
このブロックより下のすべてのブロック n レベル (hs-hide-level) を非表示にする。
現在のブロック(hs-cycle)の表示状態をサイクルさせる。
現在のバッファ内のすべてのブロックを非表示または表示します。(hs-toggle-all)。
これらの変数を使用して、Hideshowモードをカスタマイズできます:
hs-hide-comments-when-hiding-allnil、hs-hide-all、hs-cycle、hs-hide-level
以外もコメントを非表示にする場合。
hs-hide-block-behaviorこの変数は、hs-hide-block、hs-cycle、hs-hide-level、およびhs-toggle-hidingがブロックをどのように非表示にするかを制御します。指定可能な値は、現在の行が属する最内側のブロックを非表示にする’after-bol’、またはカーソル位置以降のブロックを非表示にする’after-cursor’です。
hs-display-lines-hiddennil 以外の場合、省略記号の横に非表示行数を表示する。
hs-show-indicatorsこの変数は、Hideshowモードにおいて非表示・表示ブロックのインジケーターを表示するかどうかを制御します。また、これらのインジケーターを使用して、各ブロックの非表示/表示状態を切り替えることも可能です。値がnil以外の場合、インジケーターが有効になります。デフォルトはnilで、インジケーターは無効になります。
hs-indicator-typeこの変数は、インジケーターが有効な場合に表示位置を制御します。表示位置は、フリンジ(ウィンドウのフリンジを参照)またはウィンドウのマージンのいずれかに指定できます。デフォルトでは、フリンジが利用可能な場合はそこを、そうでない場合はマージンを使用します。
hs-indicator-maximum-buffer-sizeこの変数は、hideshowインジケーターの表示対象を、大きすぎないバッファに制限します。(バッファが大きすぎると、再表示パフォーマンスに悪影響を及ぼす可能性があります。)デフォルトでは、2MBを超えるバッファではインジケーターが無効になります。nil を指定すると、バッファサイズに関わらずインジケーターが有効になります。
hs-cycle-filterこの変数は、非表示可能なブロックがある行において、TAB
キーを押した際にブロックの表示・非表示が切り替わる位置を制御します。nil
以外の値に応じて、TAB はそのような行の異なる箇所で有効になります。行のそれ以外の場所では、TAB のデフォルトのキーバインドが適用されます。nil
という値は、見出し行のどの場所においても TAB
でブロックの表示・非表示を切り替えられないことを意味します。
hs-isearch-openこの変数は、ブロック内に一致するテキストが存在する場合に、インクリメンタル検索で非表示のブロックを再表示させる条件を指定します。値は、code(コードブロックのみ再表示)、comment(コメントのみ再表示)、t(コードブロックとコメントの両方を再表示)、またはnil(コードブロックもコメントも再表示しない)のいずれかとします。デフォルト値はcodeです。
hs-indentation-respect-end-blockこの変数は、ブロックの末尾を非表示領域とともに非表示にするかどうかを制御します。これは hs-indentation-mode が有効な場合にのみ影響します。