emms-patches
[Top][All Lists]
Advanced

[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.")))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]