all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Jason Rumney <jasonr@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Patch for remote files in dnd.el
Date: Thu, 27 Jul 2006 23:22:28 +0100	[thread overview]
Message-ID: <ubqrag02j.fsf@jasonrumney.net> (raw)


The following patch to dnd.el adds support for remote files via a new
variable dnd-open-remote-file-function.

On Windows, this defaults to the new function dnd-open-unc-file, on
other platforms it is nil, giving the old behavior. If other platforms
can receive remote files by drag and drop, then appropriate methods
for accessing them can be added (perhaps via tramp).


Any objections to installing this now?


*** dnd.el	05 Jun 2006 22:10:29 +0100	1.9
--- dnd.el	27 Jul 2006 23:14:05 +0100	
***************
*** 59,64 ****
--- 59,78 ----
    :group 'dnd)
  
  
+ (defcustom dnd-open-remote-file-function
+   (if (eq system-type 'windows-nt)
+       'dnd-open-unc-file
+     nil)
+   "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', which attempts to open
+ the file using its UNC name and is the default on 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,163 ****
--- 172,195 ----
  	  '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-file (uri action)
    "Open a local or remote file.
  The file is opened in the current window, or a new window if
***************
*** 169,175 ****
    ;; 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"))))
  
  
  (defun dnd-insert-text (window action text)
--- 201,209 ----
    ;; file.  Otherwise return nil.
    (let ((local-file (dnd-get-local-file-uri uri)))
      (if local-file (dnd-open-local-file local-file action)
!       (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)

             reply	other threads:[~2006-07-27 22:22 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-27 22:22 Jason Rumney [this message]
2006-07-28  7:25 ` Patch for remote files in dnd.el Mathias Dahl
2006-07-28 12:37   ` Jason Rumney
2006-08-01 12:10     ` Mathias Dahl
2006-07-28 10:44 ` Jan Djärv
2006-07-28 11:32   ` Jason Rumney
2006-07-28 13:34 ` Richard Stallman
2006-07-28 19:04   ` Jason Rumney
2006-07-28 22:20     ` Jason Rumney
2006-07-29 17:10       ` Stefan Monnier
2006-08-01  4:58         ` Jan Djärv
2006-08-08  9:38         ` Jan Djärv
2006-07-29  2:59     ` Richard Stallman
2006-09-06 11:15 ` Jan Djärv
2006-09-06 11:31   ` David Kastrup
2006-09-06 11:48     ` Jason Rumney
2006-09-06 11:59       ` David Kastrup
2006-09-06 12:06     ` Jan Djärv
2006-09-06 13:03       ` Reiner Steib
2006-09-06 14:25         ` Michael Albinus
2006-09-07  6:54           ` Richard Stallman
2006-09-07  7:40             ` Michael Albinus
2006-09-06 14:13       ` Michael Albinus
2006-09-07  6:54   ` Richard Stallman
2006-09-07  7:31 ` YAMAMOTO Mitsuharu
2006-09-07  8:12   ` Jason Rumney
2006-09-07  8:25     ` YAMAMOTO Mitsuharu
2006-09-07  8:56       ` Jan Djärv
2006-09-07 15:50       ` Stuart D. Herring
2006-09-08  0:56         ` YAMAMOTO Mitsuharu
2006-09-07  8:25     ` Jan Djärv
     [not found]       ` <f7ccd24b0609070236r224ce34fobb9ceb0856a3ec39@mail.gmail.com>
     [not found]         ` <44FFED66.2060806@swipnet.se>
2006-09-07 10:01           ` Jan Djärv
2006-09-07 14:13       ` Stefan Monnier
2006-09-07  8:32     ` David Kastrup
2006-09-07  8:49       ` Jason Rumney
2006-09-08 11:55         ` Richard Stallman
2006-09-08 12:43           ` Jason Rumney
2006-09-08 13:01           ` Jan Djärv
2006-09-08 16:45             ` Richard Stallman
2006-09-09  6:25               ` Jan Djärv
2006-09-08 11:55     ` Richard Stallman
2006-09-08 11:55   ` Richard Stallman
2006-09-07 23:47 ` KOBAYASHI Yasuhiro
2006-09-08  8:25   ` Jason Rumney
2006-09-08  9:09     ` YAMAMOTO Mitsuharu
2006-09-15  7:11   ` Jan Djärv
2006-09-15  9:22     ` Jason Rumney
2006-09-15  9:29       ` Jan Djärv
2006-09-15 11:01         ` Jason Rumney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ubqrag02j.fsf@jasonrumney.net \
    --to=jasonr@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.