Mercurial > emacs
annotate lisp/dnd.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | 280c8ae2476d |
children | bec49af30c2f |
rev | line source |
---|---|
109259
e76d2bc9dbbe
* dnd.el, font-setting.el, x-dnd.el: Use utf-8 coding (for author name).
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
1 ;;; dnd.el --- drag and drop support. -*- coding: utf-8 -*- |
61479 | 2 |
109259
e76d2bc9dbbe
* dnd.el, font-setting.el, x-dnd.el: Use utf-8 coding (for author name).
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
3 ;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 |
e76d2bc9dbbe
* dnd.el, font-setting.el, x-dnd.el: Use utf-8 coding (for author name).
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
4 ;; Free Software Foundation, Inc. |
61479 | 5 |
109259
e76d2bc9dbbe
* dnd.el, font-setting.el, x-dnd.el: Use utf-8 coding (for author name).
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
6 ;; Author: Jan Djärv <jan.h.d@swipnet.se> |
61479 | 7 ;; Maintainer: FSF |
8 ;; Keywords: window, drag, drop | |
110015
280c8ae2476d
Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents:
109259
diff
changeset
|
9 ;; Package: emacs |
61479 | 10 |
11 ;; This file is part of GNU Emacs. | |
12 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
13 ;; GNU Emacs is free software: you can redistribute it and/or modify |
61479 | 14 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
15 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
16 ;; (at your option) any later version. |
61479 | 17 |
18 ;; GNU Emacs is distributed in the hope that it will be useful, | |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
22 | |
23 ;; You should have received a copy of the GNU General Public License | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
61479 | 25 |
26 ;;; Commentary: | |
27 | |
28 ;; This file provides the generic handling of the drop part only. | |
29 ;; Different DND backends (X11, W32, etc.) that handle the platform | |
30 ;; specific DND parts call the functions here to do final delivery of | |
31 ;; a drop. | |
32 | |
33 ;;; Code: | |
34 | |
35 ;;; Customizable variables | |
36 | |
37 | |
62311
a8f10a069bde
(dnd-protocol-alist): Add autoload.
Richard M. Stallman <rms@gnu.org>
parents:
62240
diff
changeset
|
38 ;;;###autoload |
61479 | 39 (defcustom dnd-protocol-alist |
105870
26baacb565b0
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100908
diff
changeset
|
40 `((,(purecopy "^file:///") . dnd-open-local-file) ; XDND format. |
26baacb565b0
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100908
diff
changeset
|
41 (,(purecopy "^file://") . dnd-open-file) ; URL with host |
26baacb565b0
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100908
diff
changeset
|
42 (,(purecopy "^file:") . dnd-open-local-file) ; Old KDE, Motif, Sun |
26baacb565b0
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100908
diff
changeset
|
43 (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file) |
72687
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
44 ) |
61479 | 45 |
46 "The functions to call for different protocols when a drop is made. | |
47 This variable is used by `dnd-handle-one-url' and `dnd-handle-file-name'. | |
48 The list contains of (REGEXP . FUNCTION) pairs. | |
49 The functions shall take two arguments, URL, which is the URL dropped and | |
50 ACTION which is the action to be performed for the drop (move, copy, link, | |
51 private or ask). | |
52 If no match is found here, and the value of `browse-url-browser-function' | |
53 is a pair of (REGEXP . FUNCTION), those regexps are tried for a match. | |
54 If no match is found, the URL is inserted as text by calling `dnd-insert-text'. | |
55 The function shall return the action done (move, copy, link or private) | |
56 if some action was made, or nil if the URL is ignored." | |
57 :version "22.1" | |
62240
19d278c4224b
* dnd.el (dnd-protocol-alist): Improve custom type.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
61482
diff
changeset
|
58 :type '(repeat (cons (regexp) (function))) |
61479 | 59 :group 'dnd) |
60 | |
61 | |
72687
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
62 (defcustom dnd-open-remote-file-function |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
63 (if (eq system-type 'windows-nt) |
72912
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
64 'dnd-open-local-file |
72687
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
65 'dnd-open-remote-url) |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
66 "The function to call when opening a file on a remote machine. |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
67 The function will be called with two arguments; URI and ACTION. See |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
68 `dnd-open-file' for details. |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
69 If nil, then dragging remote files into Emacs will result in an error. |
72912
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
70 Predefined functions are `dnd-open-local-file' and `dnd-open-remote-url'. |
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
71 `dnd-open-local-file' attempts to open a remote file using its UNC name and |
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
72 is the default on MS-Windows. `dnd-open-remote-url' uses `url-handler-mode' |
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
73 and is the default except for MS-Windows." |
72687
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
74 :version "22.1" |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
75 :type 'function |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
76 :group 'dnd) |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
77 |
61479 | 78 |
79 (defcustom dnd-open-file-other-window nil | |
80 "If non-nil, always use find-file-other-window to open dropped files." | |
81 :version "22.1" | |
82 :type 'boolean | |
83 :group 'dnd) | |
84 | |
85 | |
86 ;; Functions | |
87 | |
70760
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
88 (defun dnd-handle-one-url (window action url) |
61479 | 89 "Handle one dropped url by calling the appropriate handler. |
90 The handler is first located by looking at `dnd-protocol-alist'. | |
91 If no match is found here, and the value of `browse-url-browser-function' | |
92 is a pair of (REGEXP . FUNCTION), those regexps are tried for a match. | |
93 If no match is found, just call `dnd-insert-text'. | |
73330
400487787181
* dnd.el (dnd-handle-one-url): Fix typo in doc-string.
Jan Djärv <jan.h.d@swipnet.se>
parents:
72912
diff
changeset
|
94 WINDOW is where the drop happened, ACTION is the action for the drop, |
70760
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
95 URL is what has been dropped. |
61479 | 96 Returns ACTION." |
97 (require 'browse-url) | |
70760
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
98 (let (ret) |
61479 | 99 (or |
100 (catch 'done | |
101 (dolist (bf dnd-protocol-alist) | |
70760
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
102 (when (string-match (car bf) url) |
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
103 (setq ret (funcall (cdr bf) url action)) |
61479 | 104 (throw 'done t))) |
105 nil) | |
106 (when (not (functionp browse-url-browser-function)) | |
107 (catch 'done | |
108 (dolist (bf browse-url-browser-function) | |
70760
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
109 (when (string-match (car bf) url) |
61479 | 110 (setq ret 'private) |
70760
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
111 (funcall (cdr bf) url action) |
61479 | 112 (throw 'done t))) |
113 nil)) | |
114 (progn | |
70760
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
115 (dnd-insert-text window action url) |
61479 | 116 (setq ret 'private))) |
117 ret)) | |
118 | |
119 | |
120 (defun dnd-get-local-file-uri (uri) | |
121 "Return an uri converted to file:/// syntax if uri is a local file. | |
122 Return nil if URI is not a local file." | |
123 | |
124 ;; The hostname may be our hostname, in that case, convert to a local | |
125 ;; file. Otherwise return nil. TODO: How about an IP-address as hostname? | |
126 (let ((hostname (when (string-match "^file://\\([^/]*\\)" uri) | |
127 (downcase (match-string 1 uri)))) | |
128 (system-name-no-dot | |
129 (downcase (if (string-match "^[^\\.]+" system-name) | |
130 (match-string 0 system-name) | |
131 system-name)))) | |
132 (when (and hostname | |
133 (or (string-equal "localhost" hostname) | |
134 (string-equal (downcase system-name) hostname) | |
135 (string-equal system-name-no-dot hostname))) | |
136 (concat "file://" (substring uri (+ 7 (length hostname))))))) | |
137 | |
138 (defun dnd-get-local-file-name (uri &optional must-exist) | |
139 "Return file name converted from file:/// or file: syntax. | |
140 URI is the uri for the file. If MUST-EXIST is given and non-nil, | |
141 only return non-nil if the file exists. | |
142 Return nil if URI is not a local file." | |
143 (let ((f (cond ((string-match "^file:///" uri) ; XDND format. | |
144 (substring uri (1- (match-end 0)))) | |
145 ((string-match "^file:" uri) ; Old KDE, Motif, Sun | |
146 (substring uri (match-end 0)))))) | |
147 (when (and f must-exist) | |
70760
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
148 (setq f (replace-regexp-in-string |
77132
4d39a7fbbc3c
(dnd-get-local-file-name): Decode both upper and lower
Jason Rumney <jasonr@gnu.org>
parents:
75347
diff
changeset
|
149 "%[A-Fa-f0-9][A-Fa-f0-9]" |
70760
eca94c558ceb
(dnd-handle-one-url): Change 3rd arg ARG to URL. Don't unescape URL.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
150 (lambda (arg) |
90603
d383ea975152
(dnd-get-local-file-name): Give a unibyte string to
Kenichi Handa <handa@m17n.org>
parents:
72912
diff
changeset
|
151 (let ((str (make-string 1 0))) |
d383ea975152
(dnd-get-local-file-name): Give a unibyte string to
Kenichi Handa <handa@m17n.org>
parents:
72912
diff
changeset
|
152 (aset str 0 (string-to-number (substring arg 1) 16)) |
d383ea975152
(dnd-get-local-file-name): Give a unibyte string to
Kenichi Handa <handa@m17n.org>
parents:
72912
diff
changeset
|
153 str)) |
78061
08057013c059
(dnd-get-local-file-name): Set fixcase to t in call to
Jan Djärv <jan.h.d@swipnet.se>
parents:
77132
diff
changeset
|
154 f t t)) |
61479 | 155 (let* ((decoded-f (decode-coding-string |
156 f | |
157 (or file-name-coding-system | |
158 default-file-name-coding-system))) | |
159 (try-f (if (file-readable-p decoded-f) decoded-f f))) | |
160 (when (file-readable-p try-f) try-f))))) | |
161 | |
162 | |
163 (defun dnd-open-local-file (uri action) | |
164 "Open a local file. | |
165 The file is opened in the current window, or a new window if | |
166 `dnd-open-file-other-window' is set. URI is the url for the file, | |
167 and must have the format file:file-name or file:///file-name. | |
72912
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
168 The last / in file:/// is part of the file name. If the system |
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
169 natively supports unc file names, then remote urls of the form |
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
170 file://server-name/file-name will also be handled by this function. |
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
171 An alternative for systems that do not support unc file names is |
1c4d17d3a136
(dnd-open-remote-file-function): Use dnd-open-local-file on ms-windows.
Jason Rumney <jasonr@gnu.org>
parents:
72689
diff
changeset
|
172 `dnd-open-remote-url'. ACTION is ignored." |
61479 | 173 |
174 (let* ((f (dnd-get-local-file-name uri t))) | |
175 (if (and f (file-readable-p f)) | |
176 (progn | |
177 (if dnd-open-file-other-window | |
178 (find-file-other-window f) | |
179 (find-file f)) | |
180 'private) | |
181 (error "Can not read %s" uri)))) | |
182 | |
72687
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
183 (defun dnd-open-remote-url (uri action) |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
184 "Open a remote file with `find-file' and `url-handler-mode'. |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
185 Turns `url-handler-mode' on if not on before. The file is opened in the |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
186 current window, or a new window if `dnd-open-file-other-window' is set. |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
187 URI is the url for the file. ACTION is ignored." |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
188 (progn |
72689
3ff56e45c67f
* dnd.el: Fix bootstrapping
Jan Djärv <jan.h.d@swipnet.se>
parents:
72687
diff
changeset
|
189 (require 'url-handlers) |
72687
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
190 (or url-handler-mode (url-handler-mode)) |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
191 (if dnd-open-file-other-window |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
192 (find-file-other-window uri) |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
193 (find-file uri)) |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
194 'private)) |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
195 |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
196 |
61479 | 197 (defun dnd-open-file (uri action) |
198 "Open a local or remote file. | |
199 The file is opened in the current window, or a new window if | |
200 `dnd-open-file-other-window' is set. URI is the url for the file, | |
201 and must have the format file://hostname/file-name. ACTION is ignored. | |
202 The last / in file://hostname/ is part of the file name." | |
203 | |
204 ;; The hostname may be our hostname, in that case, convert to a local | |
205 ;; file. Otherwise return nil. | |
206 (let ((local-file (dnd-get-local-file-uri uri))) | |
207 (if local-file (dnd-open-local-file local-file action) | |
72687
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
208 (if dnd-open-remote-file-function |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
209 (funcall dnd-open-remote-file-function uri action) |
eedaad0e9f80
* dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
Jan Djärv <jan.h.d@swipnet.se>
parents:
70760
diff
changeset
|
210 (error "Remote files not supported"))))) |
61479 | 211 |
212 | |
213 (defun dnd-insert-text (window action text) | |
214 "Insert text at point or push to the kill ring if buffer is read only. | |
215 TEXT is the text as a string, WINDOW is the window where the drop happened." | |
216 (if (or buffer-read-only | |
217 (not (windowp window))) | |
218 (progn | |
219 (kill-new text) | |
65582
4d1085b02d64
Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents:
64762
diff
changeset
|
220 (message "%s" |
61479 | 221 (substitute-command-keys |
222 "The dropped text can be accessed with \\[yank]"))) | |
223 (insert text)) | |
224 action) | |
225 | |
226 | |
227 (provide 'dnd) | |
228 | |
61482 | 229 ;; arch-tag: 0472f6a5-2e8f-4304-9e44-1a0877c771b7 |
61479 | 230 ;;; dnd.el ends here |