origami はコードの折り畳み機能を提供するやつ。メジャーな言語は大体サポートしている感じ。大きいファイルを見る時に便利。
el-get 公式にはレシピがないので自前でレシピを用意している。
(:name origami
:website "https://github.com/elp-revive/origami.el"
:description "A text folding minor mode for Emacs."
:type github
:pkgname "elp-revive/origami.el"
:depends (s dash))
そしてそれを使ってインストール
(el-get-bundle origami)
origami-mode-map では以下のように動くように設定している。
Key | 効果 |
---|---|
<backtab> | 再帰的に折り畳んだり開いたりするやつ。org-mode の fold と似た感じ |
M-<backtab> | そのノードだけ表示する |
(with-eval-after-load 'origami
(define-key origami-mode-map (kbd "<backtab>") 'origami-recursively-toggle-node)
(define-key origami-mode-map (kbd "M-<backtab>") 'origami-show-only-node))
ただこれだけだと多分足りないので Hydra で色々定義している。
(with-eval-after-load 'pretty-hydra
(pretty-hydra-define origami-hydra
(:separator "-" :quit-key "q" :title "Origami")
("Node"
(("o" origami-open-node "Open")
("c" origami-close-node "Close")
("s" origami-show-node "Show")
("t" origami-toggle-node "Toggle")
("S" origami-forward-toggle-node "Foward toggle")
("r" origami-recursively-toggle-node "Recursive toggle"))
"All"
(("O" origami-open-all-nodes "Open")
("C" origami-close-all-nodes "Close")
("T" origami-toggle-all-nodes "Toggle"))
"Move"
(("n" origami-next-fold "Next")
("p" origami-previous-fold "Previous"))
"Undo/Redo"
(("/" origami-undo "Undo")
("?" origami-redo "Redo")
("X" origami-reset "Reset")))))
この設定は jk で起動する Hydra から呼び出せるようにしている