changeset 70760:eca94c558ceb

(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL. (dnd-get-local-file-name): Unescape URL on conversion to file name. Specify LITERAL in replace-regexp-in-string.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Sat, 20 May 2006 04:28:48 +0000
parents 0ede170bfc73
children b1742b0066f2
files lisp/dnd.el
diffstat 1 files changed, 13 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/dnd.el	Sat May 20 02:28:50 2006 +0000
+++ b/lisp/dnd.el	Sat May 20 04:28:48 2006 +0000
@@ -69,39 +69,34 @@
 
 ;; Functions
 
-(defun dnd-handle-one-url (window action arg)
+(defun dnd-handle-one-url (window action url)
   "Handle one dropped url by calling the appropriate handler.
 The handler is first located by looking at `dnd-protocol-alist'.
 If no match is found here, and the value of `browse-url-browser-function'
 is a pair of (REGEXP . FUNCTION), those regexps are tried for a match.
 If no match is found, just call `dnd-insert-text'.
 WINDOW is where the drop happend, ACTION is the action for the drop,
-ARG is the URL that has been dropped.
+URL is what has been dropped.
 Returns ACTION."
   (require 'browse-url)
-  (let* ((uri (replace-regexp-in-string
-	       "%[A-Z0-9][A-Z0-9]"
-	       (lambda (arg)
-		 (format "%c" (string-to-number (substring arg 1) 16)))
-	       arg))
-	 ret)
+  (let (ret)
     (or
      (catch 'done
        (dolist (bf dnd-protocol-alist)
-	 (when (string-match (car bf) uri)
-	   (setq ret (funcall (cdr bf) uri action))
+	 (when (string-match (car bf) url)
+	   (setq ret (funcall (cdr bf) url action))
 	   (throw 'done t)))
        nil)
      (when (not (functionp browse-url-browser-function))
        (catch 'done
 	 (dolist (bf browse-url-browser-function)
-	   (when (string-match (car bf) uri)
+	   (when (string-match (car bf) url)
 	     (setq ret 'private)
-	     (funcall (cdr bf) uri action)
+	     (funcall (cdr bf) url action)
 	     (throw 'done t)))
 	 nil))
      (progn
-       (dnd-insert-text window action uri)
+       (dnd-insert-text window action url)
        (setq ret 'private)))
     ret))
 
@@ -134,6 +129,11 @@
 		 ((string-match "^file:" uri)		; Old KDE, Motif, Sun
 		  (substring uri (match-end 0))))))
     (when (and f must-exist)
+      (setq f (replace-regexp-in-string
+	       "%[A-Z0-9][A-Z0-9]"
+	       (lambda (arg)
+		 (format "%c" (string-to-number (substring arg 1) 16)))
+	       f nil t))
       (let* ((decoded-f (decode-coding-string
 			 f
 			 (or file-name-coding-system