[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/emms 7d56cdf822: * emms-setup.el: player discovery
From: |
ELPA Syncer |
Subject: |
[elpa] externals/emms 7d56cdf822: * emms-setup.el: player discovery |
Date: |
Thu, 8 Sep 2022 08:57:38 -0400 (EDT) |
branch: externals/emms
commit 7d56cdf822c4d88baddb570e1228d901d6ca0ed4
Author: Yoni Rabkin <yoni@rabkins.net>
Commit: Yoni Rabkin <yoni@rabkins.net>
* emms-setup.el: player discovery
---
emms-setup.el | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/emms-setup.el b/emms-setup.el
index 5fd3267b68..b7a9f4e267 100644
--- a/emms-setup.el
+++ b/emms-setup.el
@@ -57,6 +57,14 @@
"Default list of players for emms-setup."
:type 'list)
+(defvar emms-setup-discover-player-alist
+ '((emms-player-mpg321 . "mpg123")
+ (emms-player-ogg123 . "ogg123")
+ (emms-player-mplayer . "mplayer")
+ (emms-player-mpv . "mpv")
+ (emms-player-vlc . "vlc"))
+ "Association list of players and their binaries.")
+
;;;###autoload
(defun emms-minimalistic ()
"An Emms setup script.
@@ -148,5 +156,44 @@ the stable features which come with the Emms distribution."
(make-obsolete 'emms-standard 'emms-all "4.1")
+;;; ------------------------------------------------------------------
+;;; Player discovery
+;;; ------------------------------------------------------------------
+(defun emms-setup-discover-player-binary (bin-str)
+ "Find if BIN-STR can be executed in the current environment."
+ (when (not (eq system-type 'gnu/linux))
+ (error "Player discovery only supported on GNU/Linux."))
+ (let ((result (call-process "which" nil nil nil bin-str)))
+ (cond ((eq 0 result) t)
+ ((eq 1 result) nil)
+ ((eq 2 result) (error "invalid arguments to `which'.")))))
+
+(defun emms-setup-discover-player-has-binary-p (player)
+ "Find if PLAYER has an excecutable in the current environment."
+ (let ((bin-str (alist-get player emms-setup-discover-player-alist)))
+ (if bin-str
+ (emms-setup-discover-player-binary bin-str)
+ nil)))
+
+(defun emms-setup-discover-players ()
+ "Interactively add players to `emms-player-list'."
+ (interactive)
+ (when (and emms-player-list
+ (y-or-n-p (format "emms-player-list is already set to %s, do you
want to empty it first?"
+ emms-player-list)))
+ (setq emms-player-list nil))
+ (let ((players (copy-tree emms-setup-default-player-list)))
+ (while players
+ (let ((player (car players)))
+ (when (emms-setup-discover-player-has-binary-p player)
+ (when (y-or-n-p
+ (format "Player %s is installed on your system, add it to the
Emms player list?"
+ player))
+ (add-to-list 'emms-player-list player))))
+ (setq players (cdr players))))
+ (message "emms-player-list is now set to: %s" emms-player-list))
+
+
+
(provide 'emms-setup)
;;; emms-setup.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/emms 7d56cdf822: * emms-setup.el: player discovery,
ELPA Syncer <=