branch: externals/mpdired
commit 6df5870a7d18f9d87ee23d7f205836cbde17cfc5
Author: Manuel Giraud <man...@ledu-giraud.fr>
Commit: Manuel Giraud <man...@ledu-giraud.fr>

    try to go to a correct place upon deletion
---
 mpdired.el | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/mpdired.el b/mpdired.el
index 3a4dcddf0e..3996c5b005 100644
--- a/mpdired.el
+++ b/mpdired.el
@@ -681,19 +681,34 @@
 
 (defun mpdired-deleteid-at-point ()
   (let ((id (get-text-property (mpdired--bol) 'id)))
-    (when id (mpdired-deleteid-internal id))))
+    (when id
+      (save-excursion
+       (forward-line)
+       (setq mpdired--songid-point
+             (get-text-property (mpdired--bol) 'id)))
+      (mpdired-deleteid-internal id))))
 
 (defun mpdired-delete ()
   (interactive)
   (cond ((eq mpdired--view 'queue)
         (mpdired-deleteid-at-point))))
 
+(defun mpdired--find-next-unmarked-id ()
+  (save-excursion
+    (let ((max (point-max)))
+      (while (and (< (point) max)
+                 (get-text-property (mpdired--bol) 'mark))
+       (forward-line))
+      (get-text-property (mpdired--bol) 'id))))
+
 (defun mpdired-flagged-delete ()
   (interactive)
   (when (eq mpdired--view 'queue)
     (let* ((flagged (mpdired--collect-marked ?d))
           (ids (mapcar 'car flagged)))
-      (when flagged (mpdired-deleteid-internal ids)))))
+      (when flagged
+       (setf mpdired--songid-point (mpdired--find-next-unmarked-id))
+       (mpdired-deleteid-internal ids)))))
 
 (defun mpdired-update ()
   (interactive)

Reply via email to