From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleh Subject: Drag images from Firefox to org-mode Date: Wed, 16 Oct 2013 12:04:14 +0200 Message-ID: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=bcaec53d5b4bd4ec9c04e8d8d249 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48216) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWNxh-0004Pt-6w for emacs-orgmode@gnu.org; Wed, 16 Oct 2013 06:04:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VWNxf-0003Sx-NJ for emacs-orgmode@gnu.org; Wed, 16 Oct 2013 06:04:17 -0400 Received: from mail-we0-x22f.google.com ([2a00:1450:400c:c03::22f]:51125) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWNxf-0003Sn-Cr for emacs-orgmode@gnu.org; Wed, 16 Oct 2013 06:04:15 -0400 Received: by mail-we0-f175.google.com with SMTP id t61so441999wes.6 for ; Wed, 16 Oct 2013 03:04:14 -0700 (PDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: org mode --bcaec53d5b4bd4ec9c04e8d8d249 Content-Type: text/plain; charset=ISO-8859-1 Hi all, Here's a little hack that I use to make my life easier: (require 'async) (eval-when-compile (require 'cl)) (defun org-store-image (link basedir) (async-start `(lambda() (shell-command ,(format "wget \"%s\" -P \"%s\"" link (expand-file-name basedir)))) (lexical-let ((cur-buf (current-buffer))) (lambda(x) (with-current-buffer cur-buf (org-display-inline-images)))))) (defun org-store-image-clipboard (link) "Save image at address LINK to current directory's subdirectory DIR. DIR is the name of the current level 0 heading." (interactive (list (current-kill 0))) (let ((filename (car (last (split-string link "/")))) (dir (save-excursion (org-up-heading-all (1- (org-current-level))) (substring-no-properties (org-get-heading))))) (if (null (image-type-from-file-name filename)) (message "not an image URL") (unless (file-exists-p (expand-file-name filename dir)) (org-store-image link dir)) (insert (format "[[./%s/%s]]" dir filename)) (org-display-inline-images)))) (setcdr (assoc "^\\(https?\\|ftp\\|file\\|nfs\\)://" dnd-protocol-alist) 'dnd-org-insert) (defun dnd-org-insert (uri action) (org-store-image-clipboard uri)) When it's a plain image, I can just drag it from the browser to org-mode. It will be downloaded in async to a subdirectory of the current directory and the link will be inserted at point. For stubborn images that are links I can right click to copy image location and call `org-store-image-clipboard' interactively. I hope it's useful to someone and that I'm not re-implementing standard functionality. regards, Oleh regards, Oleh --bcaec53d5b4bd4ec9c04e8d8d249 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi all,

Here's a little hack that I= use to make my life easier:

(require 'as= ync)
(eval-when-compile
=A0 (require 'cl))
(defun org-store-image (link basedir)
=A0 (async-start
= =A0 =A0`(lambda() (shell-command
=A0 =A0 =A0 =A0 =A0 ,(format &qu= ot;wget \"%s\" -P \"%s\""
=A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0link
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(expand-file-name basedir))))
=A0 =A0(lexical-let ((cur-buf (current-buffer)))
=A0 =A0= =A0(lambda(x)
=A0 =A0 =A0 =A0(with-current-buffer cur-buf
<= div>=A0 =A0 =A0 =A0 =A0(org-display-inline-images))))))

(defun org-store-image-clipboard (link)
=A0 &= quot;Save image at address LINK to current directory's subdirectory DIR= .
DIR is the name of the current level 0 heading."
=A0 (interactive (list (current-kill 0)))
=A0 (let ((filename (ca= r (last (split-string link "/"))))
=A0 =A0 =A0 =A0 (dir= (save-excursion
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(org-up-heading-a= ll (1- (org-current-level)))
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(substring-no-properties
=A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 (org-get-heading)))))
=A0 =A0 (if (nu= ll (image-type-from-file-name filename))
=A0 =A0 =A0 =A0 (message= "not an image URL")
=A0 =A0 =A0 (unless (file-exists-p (expand-file-name filename dir))
=A0 =A0 =A0 =A0 (org-store-image link dir))
=A0 =A0 =A0 (inser= t (format "[[./%s/%s]]" dir filename))
=A0 =A0 =A0 (org= -display-inline-images))))

(setcdr (assoc "^\\(https?\\|ftp\\|file\\|nfs\\):/= /" dnd-protocol-alist) 'dnd-org-insert)

(= defun dnd-org-insert (uri action)
=A0 (org-store-image-clipboard = uri))

When it's a plain image, I can just drag it f= rom the browser to org-mode.=A0
It will be downloaded in async to= a subdirectory of the current directory and the link will be inserted=A0
at point.=A0
For stubborn images that are links I can right = click to copy image location and call
`org-store-image-clipboard&= #39; interactively.

I hope it's useful to some= one and that I'm not re-implementing standard functionality.

regards,
Oleh

regard= s,
Oleh
--bcaec53d5b4bd4ec9c04e8d8d249--