[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Emms-patches] [PATCH] let emms-player-mpd support single track repe
From: |
Plato Wu |
Subject: |
Re: [Emms-patches] [PATCH] let emms-player-mpd support single track repeat. |
Date: |
Thu, 25 Jul 2013 22:31:32 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
S.P.Tseng <address@hidden> writes:
> A new path replace previous one.
>
> NOTE:
> mpd version should >=0.15.1. Sine 0.15.1 mpd add single mode.
>
> However, sine 0.15.1 it seems the output of listallinfo have some
> change.
> emms-cache-set-from-mpd-all can not set it correctly.
>
> -----------------------------------------------------------------------
>
> From 98e810cfdcba464bd16d5607330fde39b2069ef6 Mon Sep 17 00:00:00 2001
> From: S.P.Tseng <address@hidden>
> Date: Tue, 1 Sep 2009 21:21:19 +0800
> Subject: [PATCH] emms-player-mpd: support mpd single mode.
>
> ---
> lisp/emms-player-mpd.el | 16 +++++++++++++---
> lisp/emms.el | 6 ++++++
> 2 files changed, 19 insertions(+), 3 deletions(-)
>
> diff --git a/lisp/emms-player-mpd.el b/lisp/emms-player-mpd.el
> index fa8f911..2db211c 100644
> --- a/lisp/emms-player-mpd.el
> +++ b/lisp/emms-player-mpd.el
> @@ -692,9 +692,10 @@ main EMMS playlist buffer."
> nil)
> ((string= state "play")
> (setq emms-player-mpd-last-state "play")
> - (unless (or (null song)
> - (and (stringp emms-player-mpd-current-song)
> - (string= song emms-player-mpd-current-song)))
> + (unless (and (or (null song)
> + (and (stringp emms-player-mpd-current-song)
> + (string= song emms-player-mpd-current-song)))
> + (if emms-repeat-track (not (= time 0)) t))
> (let ((emms-player-stopped-p t))
> (emms-player-stopped))
> (emms-player-mpd-select-song
> emms-player-mpd-current-song song)
> @@ -1017,6 +1018,15 @@ from other functions."
> (interactive)
> (emms-player-mpd-send "previous" nil #'ignore))
>
> +(defun emms-player-mpd-toggle-single ()
> + (when (eq (emms-player-for
> + (emms-playlist-current-selected-track)) 'emms-player-mpd)
> + (emms-player-mpd-send
> + (concat "single " (if emms-repeat-track "1" "0"))
> + nil #'ignore)))
> +
> +(add-hook 'emms-toggle-repeat-track-hooks
> emms-player-mpd-toggle-single)
> +
> ;;; Volume
>
> (defun emms-volume-mpd-change (amount)
> diff --git a/lisp/emms.el b/lisp/emms.el
> index 3c5402d..b693a73 100644
> --- a/lisp/emms.el
> +++ b/lisp/emms.el
> @@ -238,6 +238,11 @@ Use `emms-player-paused-p' to find the current
> state."
> :group 'emms
> :type 'hook)
>
> +(defcustom emms-toggle-repeat-track-hooks nil
> + "*Hook run when repeat track toggle."
> + :group 'emms
> + :type 'hook)
> +
> (defcustom emms-seek-seconds 10
> "The number of seconds to seek forward or backward when seeking.
> This is a number in seconds."
> @@ -501,6 +506,7 @@ See `emms-repeat-playlist'."
> See `emms-repeat-track'."
> (interactive)
> (setq emms-repeat-track (not emms-repeat-track))
> + (run-hooks 'emms-toggle-repeat-track-hooks)
> (if emms-repeat-track
> (message "Will repeat the current track.")
> (message "Will advance to the next track after this one.")))
Now for emms(0.15 above) support single mode and repeate mode, I think
this function is OK for repeat one track in the playlist.
(defun emms-mpd-toggle-repeat-track ()
"Toggle whether emms repeats the current track.
See `emms-repeat-track'."
(interactive)
(setq emms-repeat-track (not emms-repeat-track))
(if emms-repeat-track
(progn
(message "Will repeat the current track.")
(emms-player-mpd-send "repeat 1" nil #'ignore)
(emms-player-mpd-send "single 1" nil #'ignore)
)
(emms-player-mpd-send "repeat 0" nil #'ignore)
(emms-player-mpd-send "single 0" nil #'ignore)
(message "Will advance to the next track after this one.")))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Emms-patches] [PATCH] let emms-player-mpd support single track repeat.,
Plato Wu <=