質問
たとえば、コメントに「マーカー」のような特殊文字を追加することなく、EMACでコード折りたたみを取得する方法については、いくつかの質問があります。誰かが「完璧な解決策はない」と言った。
書かれているプログラムのソースを解析し、括弧やブラケットのマッチングを探すことによって、またはインデントに基づいてそれを行うことによって行うことができるようです。また、さまざまな方法を使用するスクリプトの組み合わせを使用することもできます。
では、なぜEMACでコード折りたたみを得るための「完璧な」や簡単な方法がないことが一般的に受け入れられているのでしょうか? EMACSまたはそのアーキテクチャには、プログラムを難しくしているものはありますか?それが簡単だったら、長年にわたる賢い人がemacsを使用している後、誰かがそれを書いたと思うでしょう。
解決
Hideshowで遊ぶ必要があります(hs-minor-mode
) と組み合わせ fold-dwim.el
. 。それはまさにあなたが提案したことを行います - 一致するブレース/パレンズを探し、インデントに戻るように設定できます。
ほとんどの一般的な言語には堅牢な折りたたみ式ソリューションがあり、折りたたみがない場合、すべての折りたたみパッケージが非常にカスタマイズ可能です。実際、唯一の欠点は、折りたたみ方式の増殖です(fold-dwim
それでかなり役立ちます);私は誰も私に決定的な解決策を私に向けることができなかったので、折りたたみは困難または不可能だったと思っていました。実際、反対は真実です。あなたは自分に最適なものを見るために少し実験する必要があります。
利用した folding.el
(例えば、私のものをグループ化する .emacs
), outline-minor-mode
, 、そして今、ハイデショー。それらのどれもあなたが箱から出してすぐに望むように正確に機能しない可能性があります(たとえば、アウトラインの正規表現を設定したり、折りたたみマークを定義する必要があるかもしれません folding.el
)、しかし、それは簡単であることが判明しました。デフォルトのkeybindingsは多少バロックになる可能性がありますが、これはによって改善されます fold-dwim
および/または hideshow-org
(Hideshowに強くお勧めします、Emacswiki Hideshowページを参照してください。あなたも模倣することができます hideshow-org
いくつかの素早いelispと fold-dwim
)。優先セットアップを把握したら、フックまたはバッファローカル変数を介して自動的にオンにして、コードが折りたたまれているのを見てください:)(以下を参照、クリック可能に注意してください +
マージンにあります)。
Alt Text http://img198.imageshack.us/img198/4029/screenshot1oc.png
他のヒント
セデットを調べる必要があります。コード折りたたみがうまく機能します。また、IDEからEMACSに切り替えている場合、おそらく探している他の多くの派手な機能があります。
具体的には、「グローバルセマンティックタグ折りたたみモード」を探してください
余分なものは必要ありません。折りたたむファイルタイプのアウトラインマイナーモードを有効にします。
しかし、実際、EMACSにはさまざまなソリューションがあります。私はそれらのいくつかをリストしました(私がたまたま出会ったもの) http://en.wikipedia.org/w/index.php?title=code_folding&oldid = 375300945#cite_note-2.
ただし、私が欠けていることがあります。場合によっては、いくつかのメカニズムを組み合わせたいと思います。たとえば、マークダウンでは、アウトラインベースの折り畳み(セクション)とインデントベースの折り畳み(引用、コードブロックなど) - マークダウンの完全なパーサーの実装に煩わされないように。
どうぞ:
エマックのトークンベースの折りたたみ
EMACSのトークンベースの折りたたみは、 折りたたみ マイナーモード.
EMACSのインデントベースの折りたたみ
使用できます set-selective-display
で示唆されているように、インデントレベルに基づいて行を非表示にするEMACSで機能 ユニバーサルコード折りたたみ ノート。
EMACSの構文依存性折りたたみ
EMACSの構文依存の折り畳みは、次のようにサポートされています。
によって ハイデショー 一部のプログラミング言語のマイナーモード。
また、
- によって セマンティックタグの折りたたみ マイナーモードと
senator-fold-tag
のコマンドによってサポートされている構文 セマンティック, - と同様に doc-mode JavadocまたはDoxygenのコメントの場合、
- にTex-Fold-Mode
sgml-fold-element
指図、- nxml-outln 対応する言語固有のモードのライブラリ、および特定の構文のための他のモードのライブラリ。
- によって セマンティックタグの折りたたみ マイナーモードと
いくつかの折り畳みメカニズムが統一されていますfold-dwim インターフェース。
参照してください http://www.emacswiki.org/emacs/categoryhidestuff.
EMACSのユーザー選択領域の折りたたみ
EMACS内のユーザーが選択した領域の折り畳みは、 非表示地域 指図。
私は使用しています 折りたたみモード かなり長い間。 Auto-Insert TemplateとAbrevsを使用すると、コードの素敵なレンガのために非常にうまく機能します。
(印刷/電子メールのために)折り畳まれたバッファーを生成できることは、常に私の欲求でした。私の折りたたみタグの一部は、安全 /パスワードの隠蔽用です。
はい、最後にコード折りたたみがemacsにあります。 melpa.orgパッケージライブラリにyafoldingを試してみてください。