From 6d6f2b519e037c3cfd417638f7acbde14d5ccc38 Mon Sep 17 00:00:00 2001 Message-Id: <6d6f2b519e037c3cfd417638f7acbde14d5ccc38.1717817366.git.mdw@distorted.org.uk> From: Mark Wooding Date: Thu, 20 Jul 2017 01:25:37 +0100 Subject: [PATCH] el/dot-emacs.el: Custom playlist add and remove. Organization: Straylight/Edgeware From: Mark Wooding These honour prefix argument or active region. I've been bitten too often by this. There's quite a lot of fiddly stuff to preserve the (invisible but significant) order of tracks in the selection. --- el/dot-emacs.el | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/el/dot-emacs.el b/el/dot-emacs.el index 7f6f3fb..6b19dab 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -3892,6 +3892,25 @@ (defun mdw-mpc-previous-line (arg) (beginning-of-line) (forward-line (- arg))) +(defun mdw-mpc-playlist-add (&optional arg interactivep) + (interactive (list current-prefix-arg t)) + (let ((mpc-select mpc-select)) + (when (or arg (and interactivep (use-region-p))) + (setq mpc-select nil) + (mdw-mpc-hack-lines arg interactivep 'mdw-mpc-select-one)) + (setq mpc-select (reverse mpc-select)) + (mpc-playlist-add))) + +(defun mdw-mpc-playlist-delete (&optional arg interactivep) + (interactive (list current-prefix-arg t)) + (setq mpc-select (nreverse mpc-select)) + (mpc-select-save + (when (or arg (and interactivep (use-region-p))) + (setq mpc-select nil) + (mpc-selection-refresh) + (mdw-mpc-hack-lines arg interactivep 'mdw-mpc-select-one)) + (mpc-playlist-delete))) + (defun mdw-mpc-hack-tagbrowsers () (setq-local mode-line-format '("%e" @@ -3928,8 +3947,8 @@ (define-key mpc-mode-map "/" 'mpc-songs-search) (setq mpc-songs-mode-map (make-sparse-keymap)) (set-keymap-parent mpc-songs-mode-map mpc-mode-map) (define-key mpc-songs-mode-map "l" 'mpc-playlist) - (define-key mpc-songs-mode-map "+" 'mpc-playlist-add) - (define-key mpc-songs-mode-map "-" 'mpc-playlist-delete) + (define-key mpc-songs-mode-map "+" 'mdw-mpc-playlist-add) + (define-key mpc-songs-mode-map "-" 'mdw-mpc-playlist-delete) (define-key mpc-songs-mode-map "\r" 'mpc-songs-jump-to))) ;;;-------------------------------------------------------------------------- -- [mdw]