emms-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emms-patches] [PATCH] let emms-player-mpd support single track repeat.


From: S . P . Tseng
Subject: [Emms-patches] [PATCH] let emms-player-mpd support single track repeat.
Date: Tue, 01 Sep 2009 21:29:47 +0800
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

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





reply via email to

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