アウトライン・マイナーモードは、バッファの一部を非表示にし、見出し行のみを表示させるバッファローカルなマイナーモードです。このマイナーモードは、他のメジャーモードと併用できます(Emacsマニュアルのアウトライン・マイナーモードを参照してください)。
どの行が見出しであるかを定義する方法は、変数 outline-regexp または outline-search-function を用いる2通りあります。
この変数は正規表現です。行頭がこの正規表現に一致する行は、見出し行とみなされます。行内(左端ではなく)から始まる一致はカウントされません。
あるいは、見出し行にマッチする正規表現を作成できない場合は、Outlineマイナーモードが見出し行を検出するのを支援する関数を定義することもできます。
変数 outline-search-function は、bound、move、backward、looking-at
の4つの引数を取る関数を指定します。 この関数は、現在の見出し行に一致させることと、次または前の見出し行を見つけることの2つのタスクを実行します。
引数 looking-at が nil
以外の場合、point がアウトライン見出し行の先頭にあるときは、nil 以外を返す必要があります。
引数 looking-at が nil
の場合、最初の3つの引数が使用されます。 引数 bound は、検索範囲を定めるバッファ位置です。
見つかった一致箇所は、その位置より後で終わってはなりません。 nil という値は、バッファのアクセス可能な部分の末尾まで検索することを意味します。
引数 move が nil
以外の場合、検索に失敗した際は検索範囲の限界まで移動し、nil を返す必要があります。 引数 backward が nil
以外の場合、この関数は前の見出しを後方に向かって検索する必要があります。
この変数は引数を取らず、現在の見出しレベルを返す関数です。outline-regexp と
outline-search-function のどちらを定義する場合でも、両方で必要となります。
Tree-sitterでビルドした場合、メジャーモードが以下の変数のいずれかを設定していれば、Emacsは自動的にアウトライン・マイナーモードを使用できます。
この変数は、アウトライン見出しを含む行をEmacsがどのように検索するかを指定します。見出し行上のノードに一致する述語である必要があります。
この変数を使用すると、メジャーモードで複数の言語のアウトラインを設定できます。その値は、treesit-outline-predicate
の値について前述した通り、言語記号をアウトラインの見出しにマッピングするalistです。
この変数が nil 以外の場合、アウトライン見出しの設定において treesit-outline-predicate を上書きします。