;;; +emms.el -*- lexical-binding: t; -*- (defun +emms-streams (&optional file) "Better interface for `emms-streams'. If FILE is non-nil, use it. Otherwise use `emms-streams-file'. If `emms-streams-file' is nil or this function is called with \\[universal-argument], prompt the user." (interactive (list (cond ((or emms-streams-file (not current-prefix-arg)) emms-streams-file) (:else (read-file-name "Stream file: " emms-source-file-default-directory))))) (when (and (not (file-exists-p emms-streams-file)) (y-or-n-p "Emms' bulit-in streams file hasn't been installed yet. Install it now?")) (emms-streams-install)) (let ((buf (get-buffer emms-streams-buffer-name))) (when (not buf) (with-current-buffer (get-buffer-create emms-streams-buffer-name) (setq buf (current-buffer)) (emms-playlist-mode) (setq emms-playlist-buffer-p t) (emms-playlist-set-playlist-buffer (current-buffer)) (with-current-buffer (find-file-noselect emms-streams-file) (cond ((emms-source-playlist-native-p) (emms-add-native-playlist emms-streams-file)) ((emms-source-playlist-m3u-p) (emms-add-m3u-playlist emms-streams-file)) ((emms-source-playlist-pls-p) (emms-add-pls-playlist emms-streams-file)) (:else (error "Streams file `%s' isn't in a known format." emms-streams-file)))))) (switch-to-buffer buf))) (provide '+emms) ;;; +emms.el ends here