From 4b7b660acaae68ea1b2945e7a14971bcb37ed0eb Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Mon, 9 Apr 2018 18:11:32 +0530 Subject: * lisp/emms-browser.el: Add 'emms-browser-toggle-subitems-recursively It enables Org-style browsing. --- lisp/emms-browser.el | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'lisp') diff --git a/lisp/emms-browser.el b/lisp/emms-browser.el index 6c0f4ca..b65caf2 100644 --- a/lisp/emms-browser.el +++ b/lisp/emms-browser.el @@ -1098,6 +1098,23 @@ If DIRECTION is 1, move forward, otherwise move backwards." (cl-assert (emms-browser-move-up-level)) (emms-browser-kill-subitems)))) +(defun emms-browser-toggle-subitems-recursively () + "Recursively toggle all subitems under the current line. +If there is no more subitems to expand, collapse the current node." + (interactive) + (let ((current-level (emms-browser-level-at-point)) + first-expandable-level) + (save-excursion + (while (or (and (emms-browser-subitems-exist) + (not (emms-browser-subitems-visible)) + (or (and (not first-expandable-level) + (setq first-expandable-level (emms-browser-level-at-point))) + (= first-expandable-level (emms-browser-level-at-point))) + (emms-browser-show-subitems)) + (emms-browser-find-entry-more-than-level current-level)))) + (unless first-expandable-level + (emms-browser-kill-subitems)))) + (defun emms-browser-show-subitems () "Show subitems under the current line." (unless (emms-browser-subitems-visible) -- cgit v1.2.3