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

    put uri into a text property
    
    Now the representation can be independent.
---
 mpdired.el | 36 ++++++++++++++++++++----------------
 1 file changed, 20 insertions(+), 16 deletions(-)

diff --git a/mpdired.el b/mpdired.el
index b10689d109..9484fef26b 100644
--- a/mpdired.el
+++ b/mpdired.el
@@ -152,14 +152,21 @@
   (let ((bol (line-beginning-position)))
     (cond ((stringp entry)
           (insert entry)
-          (put-text-property bol (line-end-position) 'type 'file))
+          (put-text-property bol (line-end-position) 'type 'file)
+          (put-text-property bol (line-end-position) 'uri entry))
          ((consp entry)
           (insert (propertize (car entry) 'face 'dired-directory))
-          (put-text-property bol (line-end-position) 'type 'directory)))))
+          (put-text-property bol (line-end-position) 'type 'directory)
+          (put-text-property bol (line-end-position) 'uri (car entry))))))
 
 (defun mpdired--insert-song (song)
-  (insert (propertize (cadr song) 'face 'dired-ignored))
-  (put-text-property (line-beginning-position) (line-end-position) 'id (car 
song)))
+  (let ((id (car song))
+       (uri (cadr song)))
+    (insert (propertize uri 'face 'dired-ignored))
+    (let ((bol (line-beginning-position))
+         (eol (line-end-position)))
+      (put-text-property bol eol 'id id)
+      (put-text-property bol eol 'uri uri))))
 
 (defun mpdired--present-listall (proc)
   ;; Called by filter of the communication buffer.
@@ -383,12 +390,12 @@
     (setf mpdired--queue-point (point))))
 
 (defun mpdired-listall-at-point ()
-  (goto-char (line-beginning-position))
-  (save-excursion
-    (re-search-forward "^\\(.*\\)$" (line-end-position) t))
-  (if (eq (get-text-property (line-beginning-position) 'type) 'directory)
-      (mpdired-listall-internal (match-string 1))
-    (message "Cannot browse a file.")))
+  (let* ((bol (line-beginning-position))
+        (type (get-text-property bol 'type))
+        (uri (get-text-property bol 'uri)))
+    (if (eq type 'directory)
+       (mpdired-listall-internal uri)
+      (message "Cannot browse a file."))))
 
 (defun mpdired-playid-at-point ()
   (let ((id (get-text-property (line-beginning-position) 'id)))
@@ -443,12 +450,9 @@
 
 (defun mpdired-add-at-point ()
   (interactive)
-  (goto-char (line-beginning-position))
-  (save-excursion
-    (re-search-forward "^\\(.*\\)$" (line-end-position) t))
-  (let ((uri (match-string 1)))
-    (when uri
-      (mpdired-add-internal uri))))
+  (let* ((bol (line-beginning-position))
+        (uri (get-text-property bol 'uri)))
+    (when uri (mpdired-add-internal uri))))
 
 (defun mpdired-deleteid-at-point ()
   (let ((id (get-text-property (line-beginning-position) 'id)))

Reply via email to