Hi, Here's a piece of elisp that allows you to drag URLs from a webbrowser (or other apps) to an org buffer. If the current line looks like + this is an existing item Then releasing a drag to the left of "+" will insert the URL before: + http://www.dragged.url + this is an existing item Releasing on the text "+ this is an existing item" will insert the URL after: + this is an existing item + http://www.dragged.url Releasing to the right of the text will produce: + this is an existing item: http://www.dragged.url Any suggestions welcome. The functionality is now part of org-mouse (I think it requires Emacs 22): http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el Alternatively, here's the elisp code (defadvice dnd-insert-text (around org-mouse-dnd-insert-text activate) (if (eq major-mode 'org-mode) (progn (cond ;; if this is the end of the line then just insert text here ((eolp) (skip-chars-backward " \t") (kill-region (point) (point-at-eol)) (unless (looking-back ":") (insert ":")) (insert " ")) ;; if this is the beginning of the line then insert before ((and (looking-at " \\|\t") (save-excursion (skip-chars-backward " \t") (bolp))) (beginning-of-line) (looking-at "[ \t]*") (open-line 1) (indent-to (- (match-end 0) (match-beginning 0))) (insert "+ ")) ;; if this is a middle of the line, then insert after (t (end-of-line) (newline t) (indent-relative) (insert "+ "))) (insert text) (beginning-of-line)) ad-do-it)) Piotr
On Oct 3, 2006, at 19:27, Piotr Zielinski wrote: > Hi, > > Here's a piece of elisp that allows you to drag URLs from a webbrowser > (or other apps) to an org buffer. Great. > Any suggestions welcome. The functionality is now part of org-mouse > (I think it requires Emacs 22): > > http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el I like the functionality, but I do find it too specialized to make this behavior the default. So I would weaken it, or enclose turning it on into a customization variable. The reasons why I find it too intrusive the way it is now are: - You enforce a colon for adding to the end of the line - you enforce a particular type of bullet. - when inserting in a empty line, the color switches to fixed-width quotation - people might want to use drag-and-drop to insert something into the text that happens to be a bullet item. Proposals: - Don't enforce the colon when inserting at the end of the line. - In the middle of a line, just insert there. - If the current line is a bullet or a headline, *and* if you drop *on* either the bullet or the headline stars, then make a new headline/bullet for the dragged text. Always make the bullet after the current line. (well, when inserting in front of a bullet, you could insert before the current...) - Respect the type of bullet: numbered, -, +, *. - Carsten
On 04/10/06, Carsten Dominik <dominik@science.uva.nl> wrote: > On Oct 3, 2006, at 19:27, Piotr Zielinski wrote: > > Here's a piece of elisp that allows you to drag URLs from a webbrowser > > (or other apps) to an org buffer. > > I like the functionality, but I do find it too specialized to make this > behavior the default. So I would weaken it, or enclose turning it on > into a customization variable. Yes, I completely agree with you, this was a hack that worked for me rather than something everybody could use. But I thought sharing it with others might be a good idea, even if only for useful feedback like yours. The only thing which I have a different opinion about is what to do when you drop a URL in the middle of the line. I believe this function should be assigned to normal "paste" (middle button). My goal was to make drag-and-drop useful for managing org-mode lists _without_ using a keyboard. For me this means: (i) an easy (keyboard-less) way of insterting a new list element before or after the current element, and (ii) inserting the URL into the current line, without the need of manual adjustment (adding spaces around, adding the colon, etc.). So while I agree that the behaviour must be customizable, I'd like a solution that satisfies these two criteria. Anyway, I'll do some modifications, and send the next version. > The reasons why I find it too intrusive > the way it is now are: > > - You enforce a colon for adding to the end of the line > - you enforce a particular type of bullet. > - when inserting in a empty line, the color switches to fixed-width > quotation > - people might want to use drag-and-drop to insert something into the > text that happens to be a bullet item. > > Proposals: > > - Don't enforce the colon when inserting at the end of the line. > - In the middle of a line, just insert there. > - If the current line is a bullet or a headline, *and* if you drop *on* > either the bullet or the headline stars, then make a new > headline/bullet for the dragged text. Always make the bullet after the > current line. (well, when inserting in front of a bullet, you could > insert before the current...) > - Respect the type of bullet: numbered, -, +, *. Piotr
On Oct 4, 2006, at 17:30, Piotr Zielinski wrote: > The only thing which I have a different opinion about is what to do > when you drop a URL in the middle of the line. I believe this > function should be assigned to normal "paste" (middle button). Yes, I forgot that I can use mouse-2 for this. Right. > My > goal was to make drag-and-drop useful for managing org-mode lists > _without_ using a keyboard. For me this means: (i) an easy > (keyboard-less) way of insterting a new list element before or after > the current element, and (ii) inserting the URL into the current line, > without the need of manual adjustment (adding spaces around, adding > the colon, etc.). So while I agree that the behaviour must be > customizable, I'd like a solution that satisfies these two criteria. > Anyway, I'll do some modifications, and send the next version. OK, looking forward to it. - Carsten -- Carsten Dominik Sterrenkundig Instituut "Anton Pannekoek" Universiteit van Amsterdam Kruislaan 403 NL-1098SJ Amsterdam phone: +31 20 525 7477