From d4a75dda9316dfe8ec9dfe7368b226121ad5e898 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Sat, 9 Dec 2017 16:00:36 +0100 Subject: Add progress reporter to EMMS browser expansion The thumbnail display makes expansion even slower because of cache building and querying. --- lisp/emms-browser.el | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'lisp') 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." -- cgit v1.2.3