From 1c91e517299d989f7f52889ceb6371bc0ebd0768 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Wed, 27 Mar 2019 11:40:16 +0100 Subject: [PATCH] EMMS: Match playlist format with browser->playlist format --- .emacs.d/lisp/init-emms.el | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/.emacs.d/lisp/init-emms.el b/.emacs.d/lisp/init-emms.el index 52ef8717..6662b0b1 100644 --- a/.emacs.d/lisp/init-emms.el +++ b/.emacs.d/lisp/init-emms.el @@ -105,4 +105,42 @@ is currently playing." "%n")) (setq emms-browser-info-title-format 'ambrevar/emms-browser-track-artist-and-title-format) +(defun ambrevar/emms-time-for-display (track) + "Inspired by `emms-playing-time-display'." + (let* ((total-playing-time + (or (emms-track-get + track + 'info-playing-time) + 0)) + (total-min-only (/ total-playing-time 60)) + (total-sec-only (% total-playing-time 60))) + (format "%02d:%02d" total-min-only total-sec-only))) + +(defun ambrevar/emms-track-description-with-album (track) + "Simple function to give a user-readable description of a track. +If it's a file track, just return the file name. Otherwise, +return the type and the name with a colon in between. +Hex-encoded characters in URLs are replaced by the decoded +character." + (let ((type (emms-track-type track))) + (cond ((eq 'file type) + (cl-flet ((fmt (string &optional suffix prefix) + (if string + (concat prefix string suffix) + ""))) + (concat + (fmt (emms-track-get track 'info-artist) " - ") + (fmt (emms-track-get track 'info-album) " - ") + (fmt (emms-track-get track 'info-discnumber) "/") + (if (emms-track-get track 'info-tracknumber) + (format "%02d. " (string-to-number (emms-track-get track 'info-tracknumber))) + "") + (emms-track-get track 'info-title) + (fmt (ambrevar/emms-time-for-display track) "]" " [")))) + ((eq 'url type) + (emms-format-url-track-name (emms-track-name track))) + (t (concat (symbol-name type) + ": " (emms-track-name track)))))) +(setq emms-track-description-function 'ambrevar/emms-track-description-with-album) + (provide 'init-emms)