[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 4b8e693: Consult browse-url-{default-, }handlers in drag&drop.
From: |
Tassilo Horn |
Subject: |
master 4b8e693: Consult browse-url-{default-, }handlers in drag&drop. |
Date: |
Wed, 6 May 2020 10:54:18 -0400 (EDT) |
branch: master
commit 4b8e6939bf7664fda33a7aaa03d2d8069358ff7b
Author: Tassilo Horn <address@hidden>
Commit: Tassilo Horn <address@hidden>
Consult browse-url-{default-,}handlers in drag&drop.
* lisp/dnd.el (dnd-handle-one-url): Consult `browse-url-handlers' and
`browse-url-default-handlers' for a matching handler. Adapt
docstring.
* doc/lispref/frames.texi (Drag and Drop): Remove the docs for the
deprecated alist choice of `browse-url-browser-function' and mention
`browse-url-handlers' and `browse-url-default-handlers'.
---
doc/lispref/frames.texi | 10 ++++++----
lisp/dnd.el | 34 ++++++++++++++++++++--------------
2 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 905e5c2..6bf5db2 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -3875,13 +3875,15 @@ detailed knowledge of what types other applications use
for drag and
drop.
@vindex dnd-protocol-alist
+@vindex browse-url-handlers
+@vindex browse-url-default-handlers
When an URL is dropped on Emacs it may be a file, but it may also be
another URL type (https, etc.). Emacs first checks
@code{dnd-protocol-alist} to determine what to do with the URL@. If
-there is no match there and if @code{browse-url-browser-function} is
-an alist, Emacs looks for a match there. If no match is found the
-text for the URL is inserted. If you want to alter Emacs behavior,
-you can customize these variables.
+there is no match there, Emacs looks for a match in
+@code{browse-url-handlers} and @code{browse-url-default-handlers}. If
+still no match has been found, the text for the URL is inserted. If
+you want to alter Emacs behavior, you can customize these variables.
@node Color Names
@section Color Names
diff --git a/lisp/dnd.el b/lisp/dnd.el
index 905659e..2f7b16c 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -87,12 +87,11 @@ and is the default except for MS-Windows."
(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 happened, ACTION is the action for the drop,
-URL is what has been dropped.
-Returns ACTION."
+If no match is found here, `browse-url-handlers' and
+`browse-url-default-handlers' are searched for a match.
+If no match is found, just call `dnd-insert-text'. WINDOW is
+where the drop happened, ACTION is the action for the drop, URL
+is what has been dropped. Returns ACTION."
(require 'browse-url)
(let (ret)
(or
@@ -102,14 +101,21 @@ Returns ACTION."
(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) url)
- (setq ret 'private)
- (funcall (cdr bf) url action)
- (throw 'done t)))
- nil))
+ (catch 'done
+ (require 'browse-url) ;; browse-url-handlers is not autoloaded.
+ (dolist (bf (append
+ ;; The alist choice of browse-url-browser-function
+ ;; is deprecated since 28.1, so the (unless ...)
+ ;; can be removed at some point in time.
+ (unless (functionp browse-url-browser-function)
+ browse-url-browser-function)
+ browse-url-handlers
+ browse-url-default-handlers))
+ (when (string-match (car bf) url)
+ (setq ret 'private)
+ (funcall (cdr bf) url action)
+ (throw 'done t)))
+ nil)
(progn
(dnd-insert-text window action url)
(setq ret 'private)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 4b8e693: Consult browse-url-{default-, }handlers in drag&drop.,
Tassilo Horn <=