Previous: , Up: Outlineモード   [Contents][Index]


26.9.6 折り畳み編集

Foldoutパッケージは、OutlineモードおよびOutline minorモードを、フォールディング(folding: 折り畳み)コマンドで拡張します。フォールディングのアイデアは、アウトラインのネストされた部分にたいして、それに関連する部分と、より高いレベルが非表示のときに、それにズームインするというものです。

すべてのテキストと、レベル1より下のレベルが非表示になっているOutlineモードのバッファーを考えてください。それらのヘッダーの下に何が隠れているか見るには、C-c C-e (M-x outline-show-entry)でボディーを可視にするか、C-c C-iでその子ヘッダー(レベル2)を可視にすることができます。

Foldoutでは、C-c C-z (M-x foldout-zoom-subtree)を使います。これはそのヘッダーのボディーと、その子サブヘッダーを可視にして、バッファーをナローイングするので、レベル1にヘッダーとボディー、それにレベル2のヘッダーだけが可視になります。そのうちの1つのレベル2ヘッダーの下を見るには、カーソル位置をそのヘッダーに移動して、もう一度C-c C-zを使用します。これにより、そのレベル2ヘッダーのボディーと、レベル3の子サブヘッダーが可視になり、バッファーが再びナローイングされます。連続して好きなだけサブヘッダーをズームインすることができます。モードラインの文字列には、今どの深さにいるのかが表示されます。

ヘッダーにズームインしているときに、それらの子サブヘッダーを見るにはC-u C-c C-zのように数引数を指定します。何レベル下の子かを指定することもできます(M-x outline-show-childrenに相当します)。たとえばM-2 C-c C-zは2レベルの子サブヘッダーを可視にします。ボディーを指定するにはM-- C-c C-zのように負の引数を指定します。C-c C-s (M-x outline-show-subtree)のようにサブツリー全体を展開するには、M-0 C-c C-zのように引数に0を指定します。

ズームインしている時でも、Outlineモードの表示および非表示の関数は、Foldoutに干渉せずに使用できます。バッファーがナローイングされているので、グローバルな編集操作は、ズームインされたヘッダーのテキストだけに影響します、これは特定のチャプターやセクションに変更を限定するのに便利です。

フォールドのズームを取り消す(抜ける)には、C-c C-x (M-x foldout-exit-fold)を使用します。これは最上位レベルのヘッダーの配下のすべてのテキストと、サブヘッダーを非表示にして、バッファーの以前のビューに戻ります。数引数はフォールドを何レベル抜けるかを指定します。0を指定するとすべてのフォールドを抜けます。

テキストとサブヘッダーを非表示にせずに、フォールドのナローイングを取り消すには、負の引数を指定します。たとえば、M--2 C-c C-xは2つのフォールドを抜け出し、テキストとサブヘッダーは表示されたままにします。

Foldoutモードはフォールドへの出入りと、非表示のテキストを表示するためのマウスコマンドも提供します:

C-M-mouse-1でヘッダーをクリックするとズームインします。
  • シングルクリック: ボディーを可視にします。
  • ダブルクリック: サブヘッダーを可視にします。
  • トリプルクリック: ボディーとサブヘッダーを可視にします。
  • 4連クリック: サブツリー全体を可視にします。
C-M-mouse-2でヘッダーをクリックしたときは可視になります
  • シングルクリック: ボディーを可視にします。
  • ダブルクリック: サブヘッダーを可視にします。
  • トリプルクリック: ボディーとサブヘッダーを可視にします。
  • 4連クリック: サブツリー全体を可視にします。
C-M-mouse-3でヘッダーをクリックすると、ヘッダーの配下のテキストを非表示にするか、フォールドを抜けます
  • シングルクリック: サブツリーを非表示にします。
  • ダブルクリック: フォールドを抜けてテキストを非表示にします。
  • トリプルクリック: テキストを非表示にせずにフォールドを抜けます
  • 4連クリック: すべてのフォールドを抜けてテキストを非表示にします。

foldout-mouse-modifiersをセットすることにより、(Ctrl-Meta-のかわりに)他の修飾キーを指定できます。すでにfoldout.elライブラリーがロードされている場合、これが効果をもつために再ロードしなければなりません。

Foldoutパッケージを使用するには、M-x load-library RET foldout RETとタイプするか、initファイルに以下の行を記述して自動的にこれを行うことができます。

(with-eval-after-load "outline"
  (require 'foldout))