Emms: Fix ambrevar/emms-tracks-duration for playlist-mode.

master
Pierre Neidhardt 2020-12-09 13:12:06 +01:00
parent 16bcca9973
commit 831af6f20a
1 changed files with 23 additions and 19 deletions

View File

@ -144,24 +144,28 @@ character."
(defun ambrevar/emms-tracks-duration (begin end) (defun ambrevar/emms-tracks-duration (begin end)
"Display play time of tracks in region." "Display play time of tracks in region."
(interactive "r") (interactive "r")
(if (not (use-region-p)) (cl-flet ((track-at-point ()
(message "%s" (emms-browser-track-duration (if (eq major-mode 'emms-playlist-mode)
(car (emms-browser-tracks-at-point)))) (emms-playlist-track-at)
(let* ((total-time) (car (emms-browser-tracks-at-point)))))
(first-line (line-number-at-pos begin)) (if (not (use-region-p))
(last-line (line-number-at-pos end)) (message "%s" (emms-browser-track-duration
(count 0)) (track-at-point)))
(setq total-time (let* ((total-time)
(save-mark-and-excursion (first-line (line-number-at-pos begin))
(cl-loop for line from first-line to last-line (last-line (line-number-at-pos end))
do (goto-line line) (count 0))
for time = (emms-track-get (car (emms-browser-tracks-at-point)) (setq total-time
'info-playing-time) (save-mark-and-excursion
when time (cl-loop for line from first-line to last-line
do (cl-incf count) do (goto-line line)
when time for time = (emms-track-get (track-at-point)
sum time))) 'info-playing-time)
(message "%02d:%02d for %d tracks" (/ total-time 60) (% total-time 60) when time
count)))) do (cl-incf count)
when time
sum time)))
(message "%02d:%02d for %d tracks" (/ total-time 60) (% total-time 60)
count)))))
(provide 'init-emms) (provide 'init-emms)