From d56d7053a08beab4c4cf047628f6c417bfccb2f2 Mon Sep 17 00:00:00 2001 From: Yoni Rabkin Date: Thu, 29 Apr 2021 13:07:43 -0400 Subject: emms-(playing-time|mode-line).el: Use `define-minor-mode` * emms-mode-line.el (emms-mode-line-active-p): Rename to `emms-mode-line-mode`. (emms-mode-line-mode): New minor mode, extracted from `emms-mode-line`. (emms-mode-line): Use it and mark as obsolete. (emms-mode-line-enable, emms-mode-line-toggle): Adjust accordingly and mark as obsolete as well. (emms-mode-line-disable): Adjust accordingly. * emms-playing-time.el (emms-playing-time-display-p): Rename to `emms-playing-time-display-mode`. (emms-playing-time-display-mode): New minor mode. (emms-playing-time-p): Rename to `emms-playing-time-mode`. (emms-playing-time-mode): New minor mode, extracted from `emms-playing-time`. (emms-playing-time): Use it and mark as obsolete. (emms-playing-time-display-mode, emms-playing-time-display-mode): Adjust and mark as obsolete. * emms-setup.el (emms-all): Avoid the now obsolete functions. patch by Stefan Monnier --- emms-mode-line.el | 27 ++++++++++++++------------- emms-playing-time.el | 43 +++++++++++++++++++++++++++++++------------ emms-setup.el | 4 ++-- 3 files changed, 47 insertions(+), 27 deletions(-) diff --git a/emms-mode-line.el b/emms-mode-line.el index f35750d..dc28bf2 100644 --- a/emms-mode-line.el +++ b/emms-mode-line.el @@ -56,19 +56,23 @@ (format emms-mode-line-format (emms-track-description (emms-playlist-current-selected-track)))) -(defvar emms-mode-line-active-p nil - "If non-nil, emms mode line is active.") +(define-obsolete-variable-alias 'emms-mode-line-active-p + 'emms-mode-line-mode "Apr 2021") (defvar emms-mode-line-string "") (defvar emms-mode-line-initial-titlebar frame-title-format) (defun emms-mode-line (arg) + (declare (obsolete emms-mode-line-mode "Apr 2021")) + (emms-mode-line-mode (if (and arg (> arg 0)) 1 -1))) + +;;;###autoload +(define-minor-mode emms-mode-line-mode "Turn on `emms-mode-line' if ARG is positive, off otherwise." - (interactive "p") + :global t (or global-mode-string (setq global-mode-string '(""))) - (if (and arg (> arg 0)) + (if emms-mode-line-mode (progn - (setq emms-mode-line-active-p t) (add-hook 'emms-track-updated-functions #'emms-mode-line-alter) (add-hook 'emms-player-finished-hook #'emms-mode-line-blank) (add-hook 'emms-player-stopped-hook #'emms-mode-line-blank) @@ -79,7 +83,6 @@ (append global-mode-string '(emms-mode-line-string)))) (when emms-player-playing-p (emms-mode-line-alter))) - (setq emms-mode-line-active-p nil) (remove-hook 'emms-track-updated-functions #'emms-mode-line-alter) (remove-hook 'emms-player-finished-hook #'emms-mode-line-blank) (remove-hook 'emms-player-stopped-hook #'emms-mode-line-blank) @@ -91,23 +94,21 @@ (defun emms-mode-line-enable () "Turn on `emms-mode-line'." (interactive) - (emms-mode-line 1) - (message "emms mode line enabled")) + (declare (obsolete emms-mode-line-mode "Apr 2021")) + (emms-mode-line-mode 1)) ;;;###autoload (defun emms-mode-line-disable () "Turn off `emms-mode-line'." (interactive) - (emms-mode-line -1) - (message "emms mode line disabled")) + (emms-mode-line-mode -1)) ;;;###autoload (defun emms-mode-line-toggle () "Toggle `emms-mode-line'." (interactive) - (if emms-mode-line-active-p - (emms-mode-line-disable) - (emms-mode-line-enable))) + (declare (obsolete emms-mode-line-mode "Apr 2021")) + (emms-mode-line-mode 'toggle)) (defun emms-mode-line-alter (&optional track) "Alter mode-line/titlebar. diff --git a/emms-playing-time.el b/emms-playing-time.el index e99dc64..c52d13a 100644 --- a/emms-playing-time.el +++ b/emms-playing-time.el @@ -68,8 +68,9 @@ and `downtime' (e.g. -03:58)." ;;; Emms Playing Time -(defvar emms-playing-time-display-p nil - "Whether to display playing time on mode line or not") +(define-obsolete-variable-alias 'emms-playing-time-display-p + 'emms-playing-time-display-mode "Apr 2021") +(defvar emms-playing-time-display-mode) (defvar emms-playing-time 0 "Time elapsed in current track.") @@ -78,8 +79,8 @@ and `downtime' (e.g. -03:58)." (defvar emms-playing-time-display-timer nil) -(defvar emms-playing-time-p nil - "Whether emms-playing-time module is enabled or not") +(define-obsolete-variable-alias 'emms-playing-time-p + 'emms-playing-time-mode "Apr 2021") (defun emms-playing-time-start () "Get ready for display playing time." @@ -119,6 +120,11 @@ and `downtime' (e.g. -03:58)." (setq emms-playing-time 0))) (defun emms-playing-time (arg) + (declare (obsolete emms-playing-time-mode "Apr 2021")) + (emms-playing-time-mode (if (and arg (> arg 0)) 1 -1))) + + +(define-minor-mode emms-playing-time-mode "Turn on emms playing time if ARG is positive, off otherwise. Note: `(emms-playing-time -1)' will disable emms-playing-time @@ -128,10 +134,13 @@ modules may rely on it, such as `emms-lastfm.el') Instead, to toggle displaying playing time on mode line, one could call `emms-playing-time-enable-display' and `emms-playing-time-disable-display'." - (if (and arg (> arg 0)) + :global t + (if emms-playing-time-mode (progn - (setq emms-playing-time-p t - emms-playing-time-display-p t) + ;; FIXME: Maybe we shouldn't set this here, and instead the users + ;; should call `emms-playing-time-display-mode' if that's what + ;; they want. + (setq emms-playing-time-display-mode t) (emms-playing-time-mode-line) (add-hook 'emms-player-started-hook #'emms-playing-time-start) (add-hook 'emms-player-stopped-hook #'emms-playing-time-stop) @@ -139,8 +148,7 @@ could call `emms-playing-time-enable-display' and (add-hook 'emms-player-paused-hook #'emms-playing-time-pause) (add-hook 'emms-player-seeked-functions #'emms-playing-time-seek) (add-hook 'emms-player-time-set-functions #'emms-playing-time-set)) - (setq emms-playing-time-p nil - emms-playing-time-display-p nil) + (setq emms-playing-time-display-mode nil) (emms-playing-time-stop) (emms-playing-time-restore-mode-line) (remove-hook 'emms-player-started-hook #'emms-playing-time-start) @@ -150,23 +158,34 @@ could call `emms-playing-time-enable-display' and (remove-hook 'emms-player-seeked-functions #'emms-playing-time-seek) (remove-hook 'emms-player-time-set-functions #'emms-playing-time-set))) +;;;###autoload +(define-minor-mode emms-playing-time-display-mode + "Minor mode to display playing time on mode line." + :global t + ;; When disabling the mode, don't disable `emms-playing-time-display-mode' + ;; since that may be used by other packages. + (if emms-playing-time-display-mode + (emms-playing-time-display-mode 1))) + ;;;###autoload (defun emms-playing-time-enable-display () "Display playing time on mode line." + (declare (obsolete emms-playing-time-display-mode "Apr 2021")) (interactive) - (setq emms-playing-time-display-p t)) + (setq emms-playing-time-display-mode t)) ;;;###autoload (defun emms-playing-time-disable-display () "Remove playing time from mode line." + (declare (obsolete emms-playing-time-display-mode "Apr 2021")) (interactive) - (setq emms-playing-time-display-p nil)) + (setq emms-playing-time-display-mode nil)) (defun emms-playing-time-display () "Display playing time on the mode line." (setq emms-playing-time (round (1+ emms-playing-time))) (setq emms-playing-time-string - (if (null emms-playing-time-display-p) + (if (null emms-playing-time-display-mode) "" (let* ((min (/ emms-playing-time 60)) (sec (% emms-playing-time 60)) diff --git a/emms-setup.el b/emms-setup.el index 67d0aa0..d086878 100644 --- a/emms-setup.el +++ b/emms-setup.el @@ -118,10 +118,10 @@ the stable features which come with the Emms distribution." (setq emms-track-description-function #'emms-info-track-description) (when (fboundp 'emms-cache) ; work around compiler warning (emms-cache 1)) - (emms-mode-line 1) + (emms-mode-line-mode 1) (emms-mode-line-blank) (emms-lyrics 1) - (emms-playing-time 1) + (emms-playing-time-mode 1) (add-hook 'emms-player-started-hook #'emms-last-played-update-current) (emms-score 1)) -- cgit v1.2.3