-;;; dnd.el --- drag and drop support.
+;;; dnd.el --- drag and drop support. -*- coding: utf-8 -*-
-;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
-;; Author: Jan Dj\e,Ad\e(Brv <jan.h.d@swipnet.se>
+;; Author: Jan Djรคrv <jan.h.d@swipnet.se>
;; Maintainer: FSF
;; Keywords: window, drag, drop
+;; Package: emacs
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;;###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
- ("^\\(https?\\|ftp\\|file\\|nfs\\)://" . dnd-open-file)
+ `((,(purecopy "^file:///") . dnd-open-local-file) ; XDND format.
+ (,(purecopy "^file://") . dnd-open-file) ; URL with host
+ (,(purecopy "^file:") . dnd-open-local-file) ; Old KDE, Motif, Sun
+ (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)
)
"The functions to call for different protocols when a drop is made.
(setq f (replace-regexp-in-string
"%[A-Fa-f0-9][A-Fa-f0-9]"
(lambda (arg)
- (format "%c" (string-to-number (substring arg 1) 16)))
+ (let ((str (make-string 1 0)))
+ (aset str 0 (string-to-number (substring arg 1) 16))
+ str))
f t t))
(let* ((decoded-f (decode-coding-string
f
(or file-name-coding-system
- default-file-name-coding-system)))
- (try-f (if (file-readable-p decoded-f) decoded-f f)))
- (when (file-readable-p try-f) try-f)))))
-
+ default-file-name-coding-system))))
+ (setq f (cond ((file-readable-p decoded-f) decoded-f)
+ ((file-readable-p f) f)
+ (t nil)))))
+ f))
(defun dnd-open-local-file (uri action)
"Open a local file.