(define-derived-mode squeeze-mode comint-mode "Squeeze"
"Major mode for interacting with the Squeezebox Server CLI.\\<squeeze-mode-map>"
+ (add-to-list 'completion-at-point-functions 'squeeze-complete-command-at-point)
(add-hook 'comint-preoutput-filter-functions 'url-unhex-string nil t)
(add-hook 'comint-preoutput-filter-functions 'squeeze-update-state nil t))
(defvar squeeze-control-mode-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "SPC") 'squeeze-control-toggle-power)
+ (define-key map (kbd "f") 'squeeze-control-play-favorite)
(define-key map (kbd "g") 'squeeze-control-refresh)
(define-key map (kbd "+") 'squeeze-control-volume-up)
(define-key map (kbd "-") 'squeeze-control-volume-down)
(setq id (get-text-property (point) 'squeeze-playerid)))
(comint-send-string (get-buffer-process "*squeeze*") (format "%s power\n" id)))
+(defun squeeze-control-play-favorite (&optional favorite id)
+ (interactive "nFavourite: ")
+ (unless id
+ (setq id (get-text-property (point) 'squeeze-playerid)))
+ (comint-send-string (get-buffer-process "*squeeze*")
+ (format "%s favorites playlist play item_id:%d\n" id favorite)))
+
(defun squeeze-control-query-power (&optional id)
(interactive)
(unless id
(let ((squeeze-control-inhibit-display t))
(squeeze-control-query-players)
(accept-process-output (get-buffer-process "*squeeze*"))
+ (squeeze-control-query-syncgroups)
+ (accept-process-output (get-buffer-process "*squeeze*"))
(dolist (player squeeze-players)
(squeeze-control-query-power (squeeze-player-playerid player))
(accept-process-output (get-buffer-process "*squeeze*"))