chiark / gitweb /
el/dot-emacs.el: Custom playlist add and remove.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 20 Jul 2017 00:25:37 +0000 (01:25 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 20 Jul 2017 00:25:37 +0000 (01:25 +0100)
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

index 7f6f3fb89278d523d99d58c78b8de9f21e694998..6b19dab1164ac08a93e1bd25f0143d6dac3dd5d7 100644 (file)
@@ -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)))
 
 ;;;--------------------------------------------------------------------------