unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [ihs_4664@yahoo.com: drag-n-drop can't be customized by the target buffer]
@ 2004-08-28 16:48 Richard Stallman
  2004-08-31 12:08 ` Jan D.
  0 siblings, 1 reply; 3+ messages in thread
From: Richard Stallman @ 2004-08-28 16:48 UTC (permalink / raw)


Would the people who work on drag-n-drop please think about this idea?

------- Start of forwarded message -------
To: gnu-emacs-bug@moderators.isc.org
From: Kevin Rodgers <ihs_4664@yahoo.com>
Newsgroups: gnu.emacs.bug
Date: Fri, 27 Aug 2004 11:56:49 -0600
X-Orig-X-Trace: news.uni-berlin.de
	Nh+o2aku0MLBGtYAyGjzpwgNH8hH4wBq+aJybFTCUbIftZpW4=
X-Accept-Language: en-us
Cc: 
Subject: drag-n-drop can't be customized by the target buffer
Sender: bug-gnu-emacs-bounces+rms=gnu.org@gnu.org
X-Spam-Status: No, hits=2.4 required=5.0
	tests=EMAIL_ATTRIBUTION,FORGED_YAHOO_RCVD,FROM_ENDS_IN_NUMS,
	      QUOTED_EMAIL_TEXT,RCVD_IN_ORBS,USER_AGENT_MOZILLA_UA,
	      X_ACCEPT_LANG
	version=2.55
X-Spam-Level: **
X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp)

This is a multi-part message in MIME format.
- --------------040309070504020707020408
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

It would be better if each of the term/foo-win.el files had something
like:

(defvar drag-n-drop-function 'find-file)

(defun foo-drag-n-drop (event)
...
   (mapc drag-n-drop-function (car (cdr (cdr event))))
...
)

so that vm-mail-mode etc. could say:

(set (make-local-variable 'drag-n-drop-function)
      (lambda (file)
        (vm-mime-attach-file file (or (vm-mime-default-type-from-filename file)
                                      "application/octet-stream"))))

instead of hacking foo-drag-n-drop as below.

Thanks,
- -- 
Kevin Rodgers

- --------------040309070504020707020408
Content-Type: message/rfc822;
	name="Re: Drag-and-drop to attach file in vm mail composition buffer"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
	filename="Re: Drag-and-drop to attach file in vm mail composition
	buffer"

Path: uni-berlin.de!fu-berlin.de!peer01.cox.net!cox.net!cyclone1.gnilink.net!spamkiller2.gnilink.net!gnilink.net!trndny03.POSTED!9056c659!not-for-mail
Newsgroups: gnu.emacs.vm,gnu.emacs.vm.info
Subject: Re: Drag-and-drop to attach file in vm mail composition buffer
References: <m2ekluv1xs.fsf@consult.pretender>
From: kosowsky@consult.pretender (Jeffrey J. Kosowsky)
Message-ID: <m28yc1vks9.fsf@consult.pretender>
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Thu, 26 Aug 2004 18:03:50 GMT
NNTP-Posting-Host: 141.154.253.43
X-Complaints-To: abuse@verizon.net
X-Trace: trndny03 1093543430 141.154.253.43 (Thu, 26 Aug 2004 14:03:50 EDT)
NNTP-Posting-Date: Thu, 26 Aug 2004 14:03:50 EDT
Xref: uni-berlin.de gnu.emacs.vm.info:17200

kosowsky@consult.pretender (Jeffrey J. Kosowsky) writes:
> Using gnuserv, I can use drag-and-drop to open a file in emacs.
> 
> I would like to modify the behavior when the buffer that is exposed is
> a mail composition buffer so that the dragged file is attached to the
> mail composition buffer rather than opening the file in a new buffer.
> 
> Notionally, instead of doing something like '(find-file file)', I
> would do something like '(vm-mime-attach-file file)'.
> 
> However, despite reading gnuserv.el, I can't figure out how and where
> to patch this in.
> 
> Any thoughts on how to do this?
> 

OK, I figured it out. Win32 drag-n-drop doesen't use
gnuserv/gnuclientw. The relevant functions are documented in
term/w32-win.el.

I was able to get the desired affect by making some slight
modifications to the function: 

(defun w32-drag-n-drop (event)
  "Edit the files listed in the drag-n-drop EVENT.
Switch to a buffer editing the last file dropped.
JJK: Added logic so that adds mime attachments if dragged over a buffer 
in \"Mail\" mode"
  (interactive "e")
  (save-excursion
    ;; Make sure the drop target has positive co-ords
    ;; before setting the selected frame - otherwise it
    ;; won't work.  <skx@tardis.ed.ac.uk>
    (let* ((window (posn-window (event-start event)))
		   (coords (posn-x-y (event-start event)))
			  (x (car coords))
				 (y (cdr coords)))
      (if (and (> x 0) (> y 0))
		  (set-frame-selected-window nil window))
; JJK addition start
	  (if (string= mode-name "Mail")
		  (mapcar  
		   (lambda (file) 
			 (vm-mime-attach-file file "application/octet-stream"))
		   (car (cdr (cdr event))))
		(mapcar  'find-file (car (cdr (cdr event))))))
; JJK addition end
;	  (mapcar  'find-file (car (cdr (cdr event)))))
  (raise-frame)))

- --------------040309070504020707020408
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Bug-gnu-emacs mailing list
Bug-gnu-emacs@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs

- --------------040309070504020707020408--
------- End of forwarded message -------

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [ihs_4664@yahoo.com: drag-n-drop can't be customized by the target buffer]
  2004-08-28 16:48 [ihs_4664@yahoo.com: drag-n-drop can't be customized by the target buffer] Richard Stallman
@ 2004-08-31 12:08 ` Jan D.
  2004-08-31 12:25   ` Jason Rumney
  0 siblings, 1 reply; 3+ messages in thread
From: Jan D. @ 2004-08-31 12:08 UTC (permalink / raw)
  Cc: gnu-emacs-bug, rms, emacs-devel

Richard Stallman wrote:
> Would the people who work on drag-n-drop please think about this idea?
> 
> ------- Start of forwarded message -------
> To: gnu-emacs-bug@moderators.isc.org
> From: Kevin Rodgers <ihs_4664@yahoo.com>
> Newsgroups: gnu.emacs.bug
> Date: Fri, 27 Aug 2004 11:56:49 -0600
> X-Orig-X-Trace: news.uni-berlin.de
> 	Nh+o2aku0MLBGtYAyGjzpwgNH8hH4wBq+aJybFTCUbIftZpW4=
> X-Accept-Language: en-us
> Cc: 
> Subject: drag-n-drop can't be customized by the target buffer

...


> It would be better if each of the term/foo-win.el files had something
> like:
> 
> (defvar drag-n-drop-function 'find-file)
> 
> (defun foo-drag-n-drop (event)
> ...
>    (mapc drag-n-drop-function (car (cdr (cdr event))))
> ...
> )
> 
> so that vm-mail-mode etc. could say:
> 
> (set (make-local-variable 'drag-n-drop-function)
>       (lambda (file)
>         (vm-mime-attach-file file (or (vm-mime-default-type-from-filename file)
>                                       "application/octet-stream"))))
> 

It is not that simple, since drag and drop may involve text, pictures, URLs and 
not just only files.  But if you just want files that exist, the current CVS 
version of Emacs allows you to do this when using X (i.e. not Windows or Mac OS X):

(set (make-local-variable 'x-dnd-protocol-alist)
      '(("^file:" . my-dnd-fun)))

(defun my-dnd-fun (url action)
   (let ((file (x-dnd-get-local-file-name url t)))
     (vm-mime-attach-file file (or (vm-mime-default-type-from-filename file)
				  "application/octet-stream"))))


	Jan D.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [ihs_4664@yahoo.com: drag-n-drop can't be customized by the target buffer]
  2004-08-31 12:08 ` Jan D.
@ 2004-08-31 12:25   ` Jason Rumney
  0 siblings, 0 replies; 3+ messages in thread
From: Jason Rumney @ 2004-08-31 12:25 UTC (permalink / raw)
  Cc: gnu-emacs-bug, ihs_4664, emacs-devel

Jan D. wrote:

> It is not that simple, since drag and drop may involve text, pictures, 
> URLs and not just only files.  But if you just want files that exist, 
> the current CVS version of Emacs allows you to do this when using X 
> (i.e. not Windows or Mac OS X):
>
> (set (make-local-variable 'x-dnd-protocol-alist)
>      '(("^file:" . my-dnd-fun)))
>
> (defun my-dnd-fun (url action)
>   (let ((file (x-dnd-get-local-file-name url t)))
>     (vm-mime-attach-file file (or (vm-mime-default-type-from-filename 
> file)
>                   "application/octet-stream"))))
>
This works on Windows too, since the DND implementation has been changed 
to call x-dnd-handle-one-url for consistency.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-08-31 12:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-28 16:48 [ihs_4664@yahoo.com: drag-n-drop can't be customized by the target buffer] Richard Stallman
2004-08-31 12:08 ` Jan D.
2004-08-31 12:25   ` Jason Rumney

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).