Emacsフリンジでの実用的なコードの折りたたみ


15

Emacsフリンジを構成して、コードの折りたたみセクションを表示したいと思います。

たとえば、MacのBBEditはJSONファイルを編集するときに次のように表示されます。

BBEditコード折りたたみマーク

マーク自体は実行可能です。マークをクリックすると、対応するコードセクションが展開または縮小されます。ドキュメントにコード折りたたみをサポートするモードがない場合、フリンジは表示されません。

このような方法でEmacsのフリンジ機能を拡張することは可能ですか?

回答:


16

Hideshowvisはクリック可能なアイコンをフリンジに追加しますが、何らかの奇妙な理由でelpaやmelpaに含まれていません。デフォルトでは、-折りたたむことができるコードのフリンジにa を表示してから、コンテンツをで省略します...。また、有効にするhideshowvis-symbolsと、aが追加され、+折り畳まれたコンテンツのヒントが少し大きくなります。

Hideshow自体は、ライン上でのマウスクリックを使用して表示を切り替えるS-mouse-2(または中クリックをシフトする)こともできます。これは組み込みで、で有効にできますhs-minor-mode


1
すてきな、hideshowvis.elは、私が提案しているものに似たハックを使用しますが、ダブルクリック(生のイベントを読み取ること)のugさはありません。ポインターをありがとう。
シグマ14

3
Hideshowvis.elうまくいきます、ありがとう!JSONファイルで動作させるためにいくつかの問題がありましたjs3-mode; これらの問題を回避するには、私は、キュー内のすべてのアクションの後に必ずhideshowvisにのみ有効であることを確認しなければならなかった、例えば:(dolist (hook '(emacs-lisp-mode-hook c++-mode-hook)) (add-hook hook 'hideshowvis-enable)) (defun hideshowvis-enable-immediately () (run-at-time "0 seconds" nil 'hideshowvis-enable)) (add-hook 'js3-mode-hook 'hideshowvis-enable-immediately)
マチュールグラン

今はメルパです。
dshepherd

4

フリンジアイテムが直接クリックを受け取ることはできないと思いますが(間違っているかもしれませんが)、ハッキングの可能性は (kbd "<left-fringe> <double-mouse-1>")

最初のクリックでポイントがフリンジアイコンに対応する行の先頭に移動するため、(point)仮想(展開)関数の値をテストすると、コードのどの部分を(展開)するか、または何もする必要がありません(この行にフリンジアイコンが存在しない場合)

組織モードバッファの例:

(define-key org-mode-map (kbd "<left-fringe> <double-mouse-1>") 'org-cycle)

フリンジをダブルクリックすると、対応するサブツリーが循環します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.