mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-27 10:54:40 +00:00
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
(dnd-open-remote-url): New function. (dnd-open-remote-file-function): Set to dnd-open-remote-url if not windows-nt. 2006-09-07 Jason Rumney <jasonr@gnu.org> * dnd.el (dnd-open-remote-file-function): New variable. (dnd-open-unc-file): New function. (dnd-open-file): Call dnd-open-remote-file-function if set.
This commit is contained in:
parent
31a7c2ff1f
commit
c79b0f8ffd
@ -1,3 +1,16 @@
|
||||
2006-09-07 Jan Dj,Ad(Brv <Jan.Djarv@operax.com>
|
||||
|
||||
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
|
||||
(dnd-open-remote-url): New function.
|
||||
(dnd-open-remote-file-function): Set to dnd-open-remote-url if
|
||||
not windows-nt.
|
||||
|
||||
2006-09-07 Jason Rumney <jasonr@gnu.org>
|
||||
|
||||
* dnd.el (dnd-open-remote-file-function): New variable.
|
||||
(dnd-open-unc-file): New function.
|
||||
(dnd-open-file): Call dnd-open-remote-file-function if set.
|
||||
|
||||
2006-09-06 Daiki Ueno <ueno@unixuser.org>
|
||||
|
||||
* pgg-gpg.el (pgg-gpg-process-region): Encode passphrase with
|
||||
|
61
lisp/dnd.el
61
lisp/dnd.el
@ -34,14 +34,16 @@
|
||||
|
||||
;;; Customizable variables
|
||||
|
||||
(eval-when-compile
|
||||
(require 'url-handlers))
|
||||
|
||||
;;;###autoload
|
||||
(defcustom dnd-protocol-alist
|
||||
'(
|
||||
("^file:///" . dnd-open-local-file) ; XDND format.
|
||||
("^file://" . dnd-open-file) ; URL with host
|
||||
("^file:" . dnd-open-local-file) ; Old KDE, Motif, Sun
|
||||
)
|
||||
'(("^file:///" . dnd-open-local-file) ; XDND format.
|
||||
("^file://" . dnd-open-file) ; URL with host
|
||||
("^file:" . dnd-open-local-file) ; Old KDE, Motif, Sun
|
||||
("^\\(https?\\|ftp\\|file\\|nfs\\)://" . dnd-open-file)
|
||||
)
|
||||
|
||||
"The functions to call for different protocols when a drop is made.
|
||||
This variable is used by `dnd-handle-one-url' and `dnd-handle-file-name'.
|
||||
@ -59,6 +61,22 @@ if some action was made, or nil if the URL is ignored."
|
||||
:group 'dnd)
|
||||
|
||||
|
||||
(defcustom dnd-open-remote-file-function
|
||||
(if (eq system-type 'windows-nt)
|
||||
'dnd-open-unc-file
|
||||
'dnd-open-remote-url)
|
||||
"The function to call when opening a file on a remote machine.
|
||||
The function will be called with two arguments; URI and ACTION. See
|
||||
`dnd-open-file' for details.
|
||||
If nil, then dragging remote files into Emacs will result in an error.
|
||||
Predefined functions are `dnd-open-unc-file' and `dnd-open-remote-url'.
|
||||
`dnd-open-unc-file' attempts to open the file using its UNC name and is the
|
||||
default on MS-Windows. `dnd-open-remote-url' uses `url-handler-mode' and
|
||||
is the default except for MS-Windows."
|
||||
:version "22.1"
|
||||
:type 'function
|
||||
:group 'dnd)
|
||||
|
||||
|
||||
(defcustom dnd-open-file-other-window nil
|
||||
"If non-nil, always use find-file-other-window to open dropped files."
|
||||
@ -158,6 +176,35 @@ The last / in file:/// is part of the file name. ACTION is ignored."
|
||||
'private)
|
||||
(error "Can not read %s" uri))))
|
||||
|
||||
(defun dnd-open-unc-file (uri action)
|
||||
"Open a remote file using its unc path.
|
||||
The file is opened in the current window, or a new window if
|
||||
`dnd-open-file-other-window' is set. URI is the url for the file,
|
||||
and must have the format file://hostname/file-name. ACTION is ignored.
|
||||
//hostname/file-name is the unc path."
|
||||
(let ((unc-file (if (string-match "^file:" uri)
|
||||
(substring uri 5))))
|
||||
(if (and unc-file (file-readable-p unc-file))
|
||||
(progn
|
||||
(if dnd-open-file-other-window
|
||||
(find-file-other-window unc-file)
|
||||
(find-file unc-file))
|
||||
'private)
|
||||
(error "Invalid file url"))))
|
||||
|
||||
(defun dnd-open-remote-url (uri action)
|
||||
"Open a remote file with `find-file' and `url-handler-mode'.
|
||||
Turns `url-handler-mode' on if not on before. The file is opened in the
|
||||
current window, or a new window if `dnd-open-file-other-window' is set.
|
||||
URI is the url for the file. ACTION is ignored."
|
||||
(progn
|
||||
(or url-handler-mode (url-handler-mode))
|
||||
(if dnd-open-file-other-window
|
||||
(find-file-other-window uri)
|
||||
(find-file uri))
|
||||
'private))
|
||||
|
||||
|
||||
(defun dnd-open-file (uri action)
|
||||
"Open a local or remote file.
|
||||
The file is opened in the current window, or a new window if
|
||||
@ -169,7 +216,9 @@ The last / in file://hostname/ is part of the file name."
|
||||
;; file. Otherwise return nil.
|
||||
(let ((local-file (dnd-get-local-file-uri uri)))
|
||||
(if local-file (dnd-open-local-file local-file action)
|
||||
(error "Remote files not supported"))))
|
||||
(if dnd-open-remote-file-function
|
||||
(funcall dnd-open-remote-file-function uri action)
|
||||
(error "Remote files not supported")))))
|
||||
|
||||
|
||||
(defun dnd-insert-text (window action text)
|
||||
|
Loading…
Reference in New Issue
Block a user