From: Mark Wooding Date: Thu, 20 Jul 2017 00:25:37 +0000 (+0100) Subject: el/dot-emacs.el: Custom playlist add and remove. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/profile/commitdiff_plain/6d6f2b519e037c3cfd417638f7acbde14d5ccc38?ds=inline el/dot-emacs.el: Custom playlist add and remove. 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. --- 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))) ;;;--------------------------------------------------------------------------