]> code.delx.au - gnu-emacs/blobdiff - lisp/x-dnd.el
Merged in changes from CVS trunk.
[gnu-emacs] / lisp / x-dnd.el
index 41e9e3e78b2a886eb4d255ccf9a70aac2d7069c0..df902e78c9fd8f6b5c8412140e8d26ed69b6e4d2 100644 (file)
@@ -58,8 +58,8 @@ The default value for this variable is `x-dnd-default-test-function'."
     )
 
   "The functions to call for different protocols when a drop is made.
     )
 
   "The functions to call for different protocols when a drop is made.
-This variable is used by `x-dnd-handle-uri-list' and `x-dnd-handle-moz-url'.
-The list contains of (REGEXP . FUNCTION) pairs.
+This variable is used by `x-dnd-handle-uri-list', `x-dnd-handle-file-name'
+and `x-dnd-handle-moz-url'.  The list contains of (REGEXP . FUNCTION) pairs.
 The functions shall take two arguments, URL, which is the URL dropped and
 ACTION which is the action to be performed for the drop (move, copy, link,
 private or ask).
 The functions shall take two arguments, URL, which is the URL dropped and
 ACTION which is the action to be performed for the drop (move, copy, link,
 private or ask).
@@ -104,9 +104,7 @@ is successful, nil if not."
   :type 'boolean
   :group 'x)
 
   :type 'boolean
   :group 'x)
 
-;; Internal variables
-
-(defvar x-dnd-known-types
+(defcustom x-dnd-known-types
   '("text/uri-list"
     "text/x-moz-url"
     "_NETSCAPE_URL"
   '("text/uri-list"
     "text/x-moz-url"
     "_NETSCAPE_URL"
@@ -121,7 +119,12 @@ is successful, nil if not."
     "TEXT"
     )
   "The types accepted by default for dropped data.
     "TEXT"
     )
   "The types accepted by default for dropped data.
-The types are chosen in the order they appear in the list.")
+The types are chosen in the order they appear in the list."
+  :type '(repeat string)
+  :group 'x
+)
+
+;; Internal variables
 
 (defvar x-dnd-current-state nil
   "The current state for a drop.
 
 (defvar x-dnd-current-state nil
   "The current state for a drop.
@@ -309,14 +312,13 @@ and must have the format file:file-name or file:///file-name.
 The last / in file:/// is part of the file name.  ACTION is ignored."
 
   (let* ((f (x-dnd-get-local-file-name uri t)))
 The last / in file:/// is part of the file name.  ACTION is ignored."
 
   (let* ((f (x-dnd-get-local-file-name uri t)))
-    (when f
-      (if (file-readable-p f)
-         (progn
-           (if x-dnd-open-file-other-window
-               (find-file-other-window f)
-             (find-file f))
-           'private)
-       (error "Can not read %s (%s)" f uri)))))
+    (if (and f (file-readable-p f))
+       (progn
+         (if x-dnd-open-file-other-window
+             (find-file-other-window f)
+           (find-file f))
+         'private)
+      (error "Can not read %s" uri))))
 
 (defun x-dnd-open-file (uri action)
   "Open a local or remote file.
 
 (defun x-dnd-open-file (uri action)
   "Open a local or remote file.
@@ -328,7 +330,8 @@ The last / in file://hostname/ is part of the file name."
   ;; The hostname may be our hostname, in that case, convert to a local
   ;; file.  Otherwise return nil.
   (let ((local-file (x-dnd-get-local-file-uri uri)))
   ;; The hostname may be our hostname, in that case, convert to a local
   ;; file.  Otherwise return nil.
   (let ((local-file (x-dnd-get-local-file-uri uri)))
-    (when local-file (x-dnd-open-local-file local-file action))))
+    (if local-file (x-dnd-open-local-file local-file action)
+      (error "Remote files not supported"))))
 
 
 (defun x-dnd-handle-moz-url (window action data)
 
 
 (defun x-dnd-handle-moz-url (window action data)
@@ -866,7 +869,7 @@ FORMAT is 32 (not used).  MESSAGE is the data part of an XClientMessageEvent."
              timestamp)
             (x-dnd-forget-drop frame)))
 
              timestamp)
             (x-dnd-forget-drop frame)))
 
-         (t (error "Unknown Motif DND message %s %s" message data)))))
+         (t (error "Unknown Motif DND message %s %s" message-atom data)))))
                                           
 
 ;;;
                                           
 
 ;;;