From 7e878a22517f761a40ceab760ee18928ecdbe0c9 Mon Sep 17 00:00:00 2001 From: Greg Sexton Date: Sun, 16 Nov 2014 18:09:19 +0000 Subject: [PATCH] Add origami-toggle-all-nodes --- README.md | 5 +++++ origami.el | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/README.md b/README.md index bd058af..f5752fe 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,11 @@ The following commands are supplied to manipulate folds in the buffer: Close every fold in the buffer. + + origami-toggle-all-nodes + Toggle open/closed every fold node in the buffer. + + origami-show-only-node Close everything but the folds necessary to see the point. Very useful for concentrating on an area of code. diff --git a/origami.el b/origami.el index 1722ae8..3072c8d 100644 --- a/origami.el +++ b/origami.el @@ -525,6 +525,16 @@ familiar. It's easiest to grasp this just by giving it a go." (origami-fold-open-set node nil)) tree))))) +(defun origami-toggle-all-nodes (buffer) + "Toggle all fold nodes in the buffer recursively open or +recursively closed." + (interactive (list (current-buffer))) + (-when-let (tree (origami-get-fold-tree buffer)) + ;; use the first child as root is always open + (if (-> tree origami-fold-children car origami-fold-open?) + (origami-close-all-nodes buffer) + (origami-open-all-nodes buffer)))) + (defun origami-show-only-node (buffer point) "Close all fold nodes in BUFFER except for those necessary to make POINT visible. Very useful for quickly collapsing everything