diff options
-rw-r--r-- | lisp/emms-browser.el | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/lisp/emms-browser.el b/lisp/emms-browser.el index 0c348a9..73e359e 100644 --- a/lisp/emms-browser.el +++ b/lisp/emms-browser.el @@ -1135,13 +1135,28 @@ Stops at the next line at the same level, or EOF." (defun emms-browser-expand-to-level (level) "Expand to a depth specified by LEVEL. After expanding, jump to the currently marked entry." - (goto-char (point-min)) - (while (not (eq (buffer-end 1) (point))) - (if (< (emms-browser-level-at-point) level) - (emms-browser-show-subitems)) - (emms-browser-next-non-track)) - (emms-browser-pop-mark) - (recenter '(4))) + (let ((count 1) + (total 0) + progress-reporter) + (goto-char (point-min)) + (while (not (eq (buffer-end 1) (point))) + (when (= (emms-browser-level-at-point) 1) + (setq total (1+ total))) + (emms-browser-next-non-track)) + (goto-char (point-min)) + (setq progress-reporter + (make-progress-reporter "Expanding EMMS browser entries..." + 0 total)) + (while (not (eq (buffer-end 1) (point))) + (when (= (emms-browser-level-at-point) 1) + (progress-reporter-update progress-reporter count) + (setq count (1+ count))) + (if (< (emms-browser-level-at-point) level) + (emms-browser-show-subitems)) + (emms-browser-next-non-track)) + (progress-reporter-done progress-reporter) + (emms-browser-pop-mark) + (recenter '(4)))) (defun emms-browser-mark-and-collapse () "Save the current top level element, and collapse." |