コードの折りたたみや、org-mode が使用するタイプのサイクリングなどを実現する最善の方法は何ですか。この種の動作を作成するための elisp での最適なソリューションは何でしょうか。
編集: 分かりにくくて申し訳ありません。elisp で、コード フォールディングに非常によく似た、または実際には拡張可能な階層を持つ org-mode に最もよく似たものをプログラムしたいと思っています。この効果を実現する最善の方法を考えています。emacs オーバーレイが良い解決策だと聞いたことがあると思いますが、よくわかりません。
折りたたみに関しては、組み込みのset-selective-displayを使用します。
編集番号2:
回答ありがとうございます。しかし、間違った質問をしているように思いますので、私が何をしようとしているのかをもっと明確にしたいと思います。私は次のものを作りたいと思っています。
関数にポイントを置いてこの elisp 関数を呼び出すと、関数定義がどこにあっても (これには find-tag を使用することを考えています)、現在のバッファに展開されます。アイデアとしては、関数定義を読み取るために別のバッファにジャンプする必要がある場合、別のファイルへのコンテキスト スイッチのように感じるということです。したがって、バッファ外部からコードを取得するコード折りたたみのように動作させたいと思います。実際にはコードをバッファに貼り付けることができず、誰かが保存すると取得されたコードが保存されるため、これにはいくつかの問題があります。そのため、バッファの一部ではない領域をバッファ内に作成する方法があるかどうか疑問に思っています。それは理にかなっていると思います。
ベストアンサー1
あなたは非表示-表示モード(hs-minor-mode
)。現在のバッファのみにこのモードを即座に有効にするには、次のように入力します。M-x hs-minor-mode RET
デフォルトのキーバインドがあると仮定します:
C-c @ C-M-h
全部折り畳む(hs-hide-all
)。C-c @ C-h
現在のブロック (hs-hide-block
) を非表示にします。ポイント (カーソル) はブロック内にある必要があります。C-c @ C-s
現在のブロックを表示します (hs-show-block
)。ポイントは、{...}
コードを非表示にするマーカー内にある必要があります。