aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/dnd.el26
1 files changed, 13 insertions, 13 deletions
diff --git a/lisp/dnd.el b/lisp/dnd.el
index dec57481570..85881b3261f 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -69,39 +69,34 @@ if some action was made, or nil if the URL is ignored."
69 69
70;; Functions 70;; Functions
71 71
72(defun dnd-handle-one-url (window action arg) 72(defun dnd-handle-one-url (window action url)
73 "Handle one dropped url by calling the appropriate handler. 73 "Handle one dropped url by calling the appropriate handler.
74The handler is first located by looking at `dnd-protocol-alist'. 74The handler is first located by looking at `dnd-protocol-alist'.
75If no match is found here, and the value of `browse-url-browser-function' 75If no match is found here, and the value of `browse-url-browser-function'
76is a pair of (REGEXP . FUNCTION), those regexps are tried for a match. 76is a pair of (REGEXP . FUNCTION), those regexps are tried for a match.
77If no match is found, just call `dnd-insert-text'. 77If no match is found, just call `dnd-insert-text'.
78WINDOW is where the drop happend, ACTION is the action for the drop, 78WINDOW is where the drop happend, ACTION is the action for the drop,
79ARG is the URL that has been dropped. 79URL is what has been dropped.
80Returns ACTION." 80Returns ACTION."
81 (require 'browse-url) 81 (require 'browse-url)
82 (let* ((uri (replace-regexp-in-string 82 (let (ret)
83 "%[A-Z0-9][A-Z0-9]"
84 (lambda (arg)
85 (format "%c" (string-to-number (substring arg 1) 16)))
86 arg))
87 ret)
88 (or 83 (or
89 (catch 'done 84 (catch 'done
90 (dolist (bf dnd-protocol-alist) 85 (dolist (bf dnd-protocol-alist)
91 (when (string-match (car bf) uri) 86 (when (string-match (car bf) url)
92 (setq ret (funcall (cdr bf) uri action)) 87 (setq ret (funcall (cdr bf) url action))
93 (throw 'done t))) 88 (throw 'done t)))
94 nil) 89 nil)
95 (when (not (functionp browse-url-browser-function)) 90 (when (not (functionp browse-url-browser-function))
96 (catch 'done 91 (catch 'done
97 (dolist (bf browse-url-browser-function) 92 (dolist (bf browse-url-browser-function)
98 (when (string-match (car bf) uri) 93 (when (string-match (car bf) url)
99 (setq ret 'private) 94 (setq ret 'private)
100 (funcall (cdr bf) uri action) 95 (funcall (cdr bf) url action)
101 (throw 'done t))) 96 (throw 'done t)))
102 nil)) 97 nil))
103 (progn 98 (progn
104 (dnd-insert-text window action uri) 99 (dnd-insert-text window action url)
105 (setq ret 'private))) 100 (setq ret 'private)))
106 ret)) 101 ret))
107 102
@@ -134,6 +129,11 @@ Return nil if URI is not a local file."
134 ((string-match "^file:" uri) ; Old KDE, Motif, Sun 129 ((string-match "^file:" uri) ; Old KDE, Motif, Sun
135 (substring uri (match-end 0)))))) 130 (substring uri (match-end 0))))))
136 (when (and f must-exist) 131 (when (and f must-exist)
132 (setq f (replace-regexp-in-string
133 "%[A-Z0-9][A-Z0-9]"
134 (lambda (arg)
135 (format "%c" (string-to-number (substring arg 1) 16)))
136 f nil t))
137 (let* ((decoded-f (decode-coding-string 137 (let* ((decoded-f (decode-coding-string
138 f 138 f
139 (or file-name-coding-system 139 (or file-name-coding-system